[
  {
    "path": ".all-contributorsrc",
    "content": "{\n  \"files\": [\n    \"README.md\"\n  ],\n  \"imageSize\": 100,\n  \"commit\": false,\n  \"contributors\": [\n    {\n      \"login\": \"johnpapa\",\n      \"name\": \"John Papa\",\n      \"avatar_url\": \"https://avatars2.githubusercontent.com/u/1202528?v=4\",\n      \"profile\": \"http://johnpapa.net\",\n      \"contributions\": [\n        \"code\"\n      ]\n    },\n    {\n      \"login\": \"laurieontech\",\n      \"name\": \"LB\",\n      \"avatar_url\": \"https://avatars3.githubusercontent.com/u/15000607?v=4\",\n      \"profile\": \"https://github.com/laurieontech\",\n      \"contributions\": [\n        \"code\"\n      ]\n    },\n    {\n      \"login\": \"simeon4real\",\n      \"name\": \"Simeon Udoh\",\n      \"avatar_url\": \"https://avatars1.githubusercontent.com/u/25581792?v=4\",\n      \"profile\": \"https://simicode.me\",\n      \"contributions\": [\n        \"code\"\n      ]\n    },\n    {\n      \"login\": \"ksivamuthu\",\n      \"name\": \"Sivamuthu Kumar\",\n      \"avatar_url\": \"https://avatars0.githubusercontent.com/u/4029525?v=4\",\n      \"profile\": \"https://twitter.com/ksivamuthu\",\n      \"contributions\": [\n        \"code\"\n      ]\n    },\n    {\n      \"login\": \"matiaskm\",\n      \"name\": \"Matias Kohan\",\n      \"avatar_url\": \"https://avatars3.githubusercontent.com/u/18614906?v=4\",\n      \"profile\": \"https://github.com/matiaskm\",\n      \"contributions\": [\n        \"code\"\n      ]\n    },\n    {\n      \"login\": \"Duraimurugan\",\n      \"name\": \"Duraimurugan\",\n      \"avatar_url\": \"https://avatars3.githubusercontent.com/u/7348388?v=4\",\n      \"profile\": \"https://github.com/Duraimurugan\",\n      \"contributions\": [\n        \"code\"\n      ]\n    },\n    {\n      \"login\": \"sinedied\",\n      \"name\": \"Yohan Lasorsa\",\n      \"avatar_url\": \"https://avatars0.githubusercontent.com/u/593151?v=4\",\n      \"profile\": \"https://twitter.com/sinedied\",\n      \"contributions\": [\n        \"code\"\n      ]\n    },\n    {\n      \"login\": \"manekinekko\",\n      \"name\": \"Wassim Chegham\",\n      \"avatar_url\": \"https://avatars2.githubusercontent.com/u/1699357?v=4\",\n      \"profile\": \"https://wassim.dev\",\n      \"contributions\": [\n        \"code\"\n      ]\n    },\n    {\n      \"login\": \"sandydoo\",\n      \"name\": \"Sander Melnikov\",\n      \"avatar_url\": \"https://avatars3.githubusercontent.com/u/7572407?v=4\",\n      \"profile\": \"https://github.com/sandydoo\",\n      \"contributions\": [\n        \"code\"\n      ]\n    },\n    {\n      \"login\": \"askudhay\",\n      \"name\": \"Udhayakumar Govindarajan\",\n      \"avatar_url\": \"https://avatars0.githubusercontent.com/u/29446574?v=4\",\n      \"profile\": \"https://angularhive.com\",\n      \"contributions\": [\n        \"doc\"\n      ]\n    },\n    {\n      \"login\": \"afifalfiano\",\n      \"name\": \"Afif Alfiano\",\n      \"avatar_url\": \"https://avatars1.githubusercontent.com/u/47497276?v=4\",\n      \"profile\": \"https://behance.net/afifalfiano\",\n      \"contributions\": [\n        \"code\"\n      ]\n    },\n    {\n      \"login\": \"gilcreque\",\n      \"name\": \"Gil Creque\",\n      \"avatar_url\": \"https://avatars2.githubusercontent.com/u/243234?v=4\",\n      \"profile\": \"http://gilcreque.com\",\n      \"contributions\": [\n        \"code\"\n      ]\n    },\n    {\n      \"login\": \"afflexux\",\n      \"name\": \"afflexux\",\n      \"avatar_url\": \"https://avatars0.githubusercontent.com/u/35804265?v=4\",\n      \"profile\": \"https://github.com/afflexux\",\n      \"contributions\": [\n        \"code\"\n      ]\n    },\n    {\n      \"login\": \"allcontributors[bot]\",\n      \"name\": \"allcontributors[bot]\",\n      \"avatar_url\": \"https://avatars0.githubusercontent.com/in/23186?v=4\",\n      \"profile\": \"https://github.com/apps/allcontributors\",\n      \"contributions\": [\n        \"doc\"\n      ]\n    },\n    {\n      \"login\": \"btchoum\",\n      \"name\": \"Bertrand Tchoumkeu\",\n      \"avatar_url\": \"https://avatars0.githubusercontent.com/u/9422996?v=4\",\n      \"profile\": \"https://github.com/btchoum\",\n      \"contributions\": [\n        \"code\"\n      ]\n    },\n    {\n      \"login\": \"webmaxru\",\n      \"name\": \"Maxim Salnikov\",\n      \"avatar_url\": \"https://avatars1.githubusercontent.com/u/1560278?v=4\",\n      \"profile\": \"https://medium.com/@webmaxru\",\n      \"contributions\": [\n        \"code\"\n      ]\n    },\n    {\n      \"login\": \"rgolea\",\n      \"name\": \"Rares Golea\",\n      \"avatar_url\": \"https://avatars0.githubusercontent.com/u/8843202?v=4\",\n      \"profile\": \"https://github.com/rgolea\",\n      \"contributions\": [\n        \"code\"\n      ]\n    },\n    {\n      \"login\": \"bswank\",\n      \"name\": \"Brian Swank\",\n      \"avatar_url\": \"https://avatars0.githubusercontent.com/u/18602728?v=4\",\n      \"profile\": \"https://swank.dev/\",\n      \"contributions\": [\n        \"code\"\n      ]\n    },\n    {\n      \"login\": \"hugodf\",\n      \"name\": \"Hugo\",\n      \"avatar_url\": \"https://avatars1.githubusercontent.com/u/6459679?v=4\",\n      \"profile\": \"https://codewithhugo.com\",\n      \"contributions\": [\n        \"code\"\n      ]\n    },\n    {\n      \"login\": \"noelmace\",\n      \"name\": \"Noël Macé\",\n      \"avatar_url\": \"https://avatars3.githubusercontent.com/u/7578400?v=4\",\n      \"profile\": \"https://noelmace.com\",\n      \"contributions\": [\n        \"code\"\n      ]\n    },\n    {\n      \"login\": \"wolfhoundjesse\",\n      \"name\": \"Jesse M. Holmes\",\n      \"avatar_url\": \"https://avatars1.githubusercontent.com/u/13468509?v=4\",\n      \"profile\": \"https://github.com/wolfhoundjesse\",\n      \"contributions\": [\n        \"code\"\n      ]\n    },\n    {\n      \"login\": \"carlosroec\",\n      \"name\": \"Carlos G. Rodriguez\",\n      \"avatar_url\": \"https://avatars0.githubusercontent.com/u/1981518?v=4\",\n      \"profile\": \"https://github.com/carlosroec\",\n      \"contributions\": [\n        \"code\"\n      ]\n    },\n    {\n      \"login\": \"zaceno\",\n      \"name\": \"Zacharias Enochsson\",\n      \"avatar_url\": \"https://avatars3.githubusercontent.com/u/2061445?v=4\",\n      \"profile\": \"http://zaceno.github.io\",\n      \"contributions\": [\n        \"code\"\n      ]\n    },\n    {\n      \"login\": \"moemoe89\",\n      \"name\": \"Bismo Baruno\",\n      \"avatar_url\": \"https://avatars0.githubusercontent.com/u/7221739?v=4\",\n      \"profile\": \"https://moemoe89.github.io\",\n      \"contributions\": [\n        \"code\"\n      ]\n    },\n    {\n      \"login\": \"Filini\",\n      \"name\": \"Filippo Gualandi\",\n      \"avatar_url\": \"https://avatars1.githubusercontent.com/u/10072578?v=4\",\n      \"profile\": \"https://github.com/Filini\",\n      \"contributions\": [\n        \"code\"\n      ]\n    },\n    {\n      \"login\": \"mhartington\",\n      \"name\": \"Mike Hartington\",\n      \"avatar_url\": \"https://avatars3.githubusercontent.com/u/2835826?v=4\",\n      \"profile\": \"https://twitter.com/mhartington\",\n      \"contributions\": [\n        \"code\"\n      ]\n    },\n    {\n      \"login\": \"aelgasser\",\n      \"name\": \"aelgasser\",\n      \"avatar_url\": \"https://avatars2.githubusercontent.com/u/3692722?v=4\",\n      \"profile\": \"https://github.com/aelgasser\",\n      \"contributions\": [\n        \"code\"\n      ]\n    },\n    {\n      \"login\": \"sarbull\",\n      \"name\": \"Cezar Sîrbu\",\n      \"avatar_url\": \"https://avatars.githubusercontent.com/u/1864112?v=4\",\n      \"profile\": \"http://www.sarbull.ro\",\n      \"contributions\": [\n        \"code\"\n      ]\n    },\n    {\n      \"login\": \"Nicoss54\",\n      \"name\": \"Nicoss54\",\n      \"avatar_url\": \"https://avatars.githubusercontent.com/u/24563545?v=4\",\n      \"profile\": \"https://github.com/Nicoss54\",\n      \"contributions\": [\n        \"code\"\n      ]\n    },\n        {\n      \"login\": \"Yonet\",\n      \"name\": \"Ayşegül Yönet\",\n      \"avatar_url\": \"https://avatars.githubusercontent.com/u/3523671?v=4\",\n      \"profile\": \"https://github.com/Yonet\",\n      \"contributions\": [\n        \"code\"\n      ]\n    }\n  ],\n  \"contributorsPerLine\": 7,\n  \"projectName\": \"hello-worlds\",\n  \"projectOwner\": \"johnpapa\",\n  \"repoType\": \"github\",\n  \"repoHost\": \"https://github.com\",\n  \"skipCi\": true,\n  \"commitConvention\": \"none\",\n  \"badgeTemplate\": \"[![All Contributors](https://img.shields.io/badge/all_contributors-<%= contributors.length %>-blue.svg?style=flat-square)](#contributors)\"\n}\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug-report.md",
    "content": "---\nname: Bug Report\nabout: Report a bug in one of the hello world projects\ntitle: \"[Bug] \"\nlabels: bug\nassignees: \"\"\n---\n\n## Which project?\n\n<!-- Name of the framework folder (e.g., react, angular, vue) -->\n\n## Describe the bug\n\n<!-- A clear and concise description of what the bug is -->\n\n## Steps to reproduce\n\n1. `cd <project-folder>`\n2. `npm install`\n3. `npm start`\n4. See error...\n\n## Expected behavior\n\n<!-- What you expected to happen -->\n\n## Environment\n\n- **OS:** <!-- e.g., macOS 14, Ubuntu 22.04, Windows 11 -->\n- **Node.js version:** <!-- e.g., 20.11.0 -->\n- **npm version:** <!-- e.g., 10.2.4 -->\n- **Browser:** <!-- e.g., Chrome 122 -->\n\n## Additional context\n\n<!-- Add any other context, screenshots, or error logs -->\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/new-hello-world-project.md",
    "content": "---\nname: New Hello World Project\nabout: Suggest an idea for this project\ntitle: ''\nlabels: ''\nassignees: ''\n---\n\nBy making a PR you are agreeing to that contributing a hello world project allows the repo/project owner to use the hello world app in examples for their own use.\n\n- [ ] only the most simple basic hello world app\n- [ ] remove all tests and commands for tests and dependencies for tests\n- [ ] must say \"Hello World\" on the main component\n- [ ] only include the minimal components (1 ideally)\n- [ ] no routing, not extras whatsoever\n- [ ] no styling\n- [ ] nothing else !\n- [ ] must work by running `npm install` and `npm start` (or equivalent)\n- [ ] must be in the folder named `<tech-name>`\n- [ ] add build steps and which folder to serve in the README.md in the root folder\n- [ ] verify that the app once built can be served from whatever folder the built assets are placed in\n- [ ] verify that running `npx http-server <your-folder-to-serve>` works\n- [ ] verify that a Pull Request doesnt already exist. If it does, feel free to contribue to it.\n"
  },
  {
    "path": ".github/PULL_REQUEST_TEMPLATE.md",
    "content": "By making a PR you are agreeing to that contributing a hello world project allows the repo/project owner to use the hello world app in examples for their own use.\n\n- [ ] only the most simple basic hello world app\n- [ ] remove all tests and commands for tests and dependencies for tests\n- [ ] must say \"Hello World\" on the main component\n- [ ] only include the minimal components (1 ideally)\n- [ ] no routing, not extras whatsoever\n- [ ] no styling\n- [ ] nothing else !\n- [ ] must work by running `npm install` and `npm start` (or equivalent)\n- [ ] must be in the folder named `<tech-name>`\n- [ ] add build steps and which folder to serve in the README.md in the root folder\n- [ ] verify that the app once built can be served from whatever folder the built assets are placed in\n- [ ] verify that running `npx http-server <your-folder-to-serve>` works\n- [ ] verify that a Pull Request doesnt already exist. If it does, feel free to contribue to it.\n"
  },
  {
    "path": ".github/copilot-instructions.md",
    "content": "# Copilot Instructions — hello-worlds\n\n## Project Type\n\nThis is a **multi-app collection** of 41+ minimal \"Hello World\" demos across JavaScript/TypeScript frameworks. Each subfolder is an independent project.\n\n**There is no centralized build, test, or lint system.** Each project stands alone.\n\n## Writing Conventions\n\n### General\n\n- Each demo must display \"Hello World\" on the main component\n- Keep demos minimal — no routing, no styling, no extras\n- Remove all tests, test dependencies, and test scripts\n- Each project must work with `npm install && npm start` (or documented equivalent)\n\n### Folder Structure\n\n- One folder per framework, named in lowercase with hyphens (e.g., `lit-element`, `ionic-react`)\n- Each folder contains its own `package.json`, source files, and any framework-specific config\n\n### JavaScript / TypeScript\n\n- Use the framework's default/recommended coding style\n- Prefer the simplest possible component structure\n- No unnecessary dependencies beyond the framework itself\n\n### HTML\n\n- Use semantic HTML5 elements\n- Include a proper `<!DOCTYPE html>` declaration\n- Reference CDN scripts where applicable (jQuery, Hyperapp, etc.)\n\n## Project-Specific Build Commands\n\nEach project may have different build steps. Always check the project's `package.json` for available scripts. Common patterns:\n\n| Framework Type | Start Command | Build Command |\n|---|---|---|\n| CLI-based (Angular, React, Vue, etc.) | `npm start` | `npm run build` |\n| Static (HTML, jQuery, Alpine, etc.) | `npx http-server .` | N/A |\n| Blazor | `dotnet run` | `dotnet build` |\n| Flutter | `flutter run` | `flutter build web` |\n\n## Maintenance Matrix\n\n| When this changes... | Also update... |\n|---|---|\n| New project folder added | `README.md` (build matrix table), `AGENTS.md` (structure section) |\n| Project removed | `README.md` (build matrix table), `AGENTS.md` (structure section) |\n| Build steps for a project change | `README.md` (build matrix table) |\n| `README.md` table format changes | Verify all projects are still listed |\n| Contributing guidelines change | `CONTRIBUTING.md`, `.github/PULL_REQUEST_TEMPLATE.md` |\n| New issue template added | `.github/ISSUE_TEMPLATE/` directory |\n| CI workflow modified | `.github/workflows/ci.yml`, `AGENTS.md` (if build steps affected) |\n| `AGENTS.md` structure section | Verify consistency with actual directory listing |\n\n## Do NOT\n\n- Add centralized build/test tooling at the root level\n- Modify multiple projects in a single PR (unless it's a cross-cutting concern like LICENSE)\n- Add complex features, routing, state management, or styling to demos\n- Use `latest` for dependency versions — pin specific versions\n"
  },
  {
    "path": ".github/dependabot.yml",
    "content": "# Dependabot configuration\n# Keep GitHub Actions up to date\nversion: 2\nupdates:\n  - package-ecosystem: \"github-actions\"\n    directory: \"/\"\n    schedule:\n      interval: \"weekly\"\n"
  },
  {
    "path": ".github/workflows/ci.yml",
    "content": "name: CI\n\non:\n  pull_request:\n    branches: [main]\n  push:\n    branches: [main]\n\npermissions:\n  contents: read\n\njobs:\n  validate:\n    name: Validate Repository Structure\n    runs-on: ubuntu-latest\n    steps:\n      - name: Checkout\n        uses: actions/checkout@v4\n\n      - name: Check all project folders are in README\n        run: |\n          echo \"Checking that all project folders are referenced in README.md...\"\n          errors=0\n          for dir in */; do\n            dir_name=\"${dir%/}\"\n            # Skip hidden dirs and common non-project files\n            case \"$dir_name\" in\n              .*|node_modules|docs) continue ;;\n            esac\n            if ! grep -q \"$dir_name\" README.md; then\n              echo \"::warning::Project folder '$dir_name' is not listed in README.md\"\n              errors=$((errors + 1))\n            fi\n          done\n          if [ $errors -gt 0 ]; then\n            echo \"::warning::$errors project folder(s) not found in README.md\"\n          fi\n          echo \"Validation complete.\"\n\n      - name: Verify package.json files are valid JSON\n        run: |\n          echo \"Validating package.json files...\"\n          errors=0\n          for pkg in */package.json; do\n            if ! python3 -c \"import json; json.load(open('$pkg'))\" 2>/dev/null; then\n              echo \"::error::Invalid JSON in $pkg\"\n              errors=$((errors + 1))\n            fi\n          done\n          if [ $errors -gt 0 ]; then\n            echo \"::error::$errors invalid package.json file(s) found\"\n            exit 1\n          fi\n          echo \"All package.json files are valid.\"\n"
  },
  {
    "path": ".github/workflows/copilot-setup-steps.yml",
    "content": "# Copilot Cloud Agent — Setup Steps\n# Configures the environment for the Copilot coding agent.\n# This is a multi-app collection with no centralized build system.\n# Each subfolder is independent — the agent should cd into the relevant project.\n\nname: \"Copilot Setup Steps\"\n\non: workflow_dispatch\n\njobs:\n  copilot-setup:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Checkout repository\n        uses: actions/checkout@v4\n\n      - name: Setup Node.js\n        uses: actions/setup-node@v4\n        with:\n          node-version: \"20\"\n\n      # No root-level install — each project has its own dependencies.\n      # The agent should run `npm install` in the specific project folder it's working on.\n"
  },
  {
    "path": ".gitignore",
    "content": ".DS_Store\nnode_modules\n**/dist\n\n# local env files\n.env.local\n.env.*.local\n\n# Log files\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\n\n# Editor directories and files\n.idea\n# .vscode\n*.suo\n*.ntvs*\n*.njsproj\n*.sln\n*.sw?\n"
  },
  {
    "path": ".prettier.js",
    "content": "module.exports = {\n  semi: true,\n  trailingComma: 'all',\n  singleQuote: true,\n  printWidth: 100,\n  tabWidth: 2,\n  arrowParens: 'avoid',\n};\n"
  },
  {
    "path": ".vscode/settings.json",
    "content": "{\n  \"workbench.colorCustomizations\": {\n    \"activityBar.background\": \"#6b25d7\",\n    \"activityBar.activeBackground\": \"#6b25d7\",\n    \"activityBar.activeBorder\": \"#da6c25\",\n    \"activityBar.foreground\": \"#e7e7e7\",\n    \"activityBar.inactiveForeground\": \"#e7e7e799\",\n    \"activityBarBadge.background\": \"#da6c25\",\n    \"activityBarBadge.foreground\": \"#15202b\",\n    \"titleBar.activeBackground\": \"#6b25d7\",\n    \"titleBar.inactiveBackground\": \"#6b25d799\",\n    \"titleBar.activeForeground\": \"#e7e7e7\",\n    \"titleBar.inactiveForeground\": \"#e7e7e799\",\n    \"statusBar.background\": \"#6b25d7\",\n    \"statusBarItem.hoverBackground\": \"#884ee1\",\n    \"statusBar.foreground\": \"#e7e7e7\",\n    \"statusBar.debuggingBackground\": \"#91d725\",\n    \"statusBar.debuggingForeground\": \"#15202b\"\n  },\n  \"peacock.color\": \"#6b25d7\"\n}"
  },
  {
    "path": "AGENTS.md",
    "content": "# AI-Ready Repo — Agent Guide\n\nThis is a **multi-app collection** of 41 minimal \"Hello World\" demos across JavaScript/TypeScript frameworks and libraries. Each subfolder is an independent project with its own `package.json` (or equivalent).\n\n## Repository Structure\n\n```\nhello-worlds/\n├── .github/\n│   ├── copilot-instructions.md          # AI coding conventions for this repo\n│   ├── dependabot.yml                   # GitHub Actions dependency updates\n│   ├── workflows/\n│   │   ├── ci.yml                       # PR validation (checks new projects build)\n│   │   └── copilot-setup-steps.yml      # Cloud agent setup\n│   ├── ISSUE_TEMPLATE/\n│   │   ├── new-hello-world-project.md   # Template for proposing new frameworks\n│   │   └── bug-report.md               # Bug report template\n│   └── PULL_REQUEST_TEMPLATE.md         # PR checklist\n├── alpine/                              # Alpine.js hello world\n├── angular/                             # Angular hello world\n├── angular-universal/                   # Angular Universal hello world\n├── angularjs/                           # AngularJS hello world\n├── aurelia/                             # Aurelia hello world\n├── babylonjs/                           # Babylon.js hello world\n├── backbone/                            # Backbone.js hello world\n├── blazor/                              # Blazor hello world (.NET)\n├── eleventy/                            # Eleventy hello world\n├── elm/                                 # Elm hello world\n├── ember/                               # Ember.js hello world\n├── flutter/                             # Flutter hello world (Dart)\n├── gatsby/                              # Gatsby hello world\n├── glimmer/                             # Glimmer.js hello world\n├── gridsome/                            # Gridsome hello world\n├── html/                                # Plain HTML hello world\n├── hugo/                                # Hugo hello world (Go)\n├── hyperapp/                            # Hyperapp hello world\n├── ionic-angular/                       # Ionic Angular hello world\n├── ionic-react/                         # Ionic React hello world\n├── javascript/                          # Plain JavaScript hello world\n├── jquery/                              # jQuery hello world\n├── knockoutjs/                          # Knockout.js hello world\n├── lit-element/                         # LitElement hello world\n├── marko/                               # Marko hello world\n├── meteor/                              # Meteor hello world\n├── mithril/                             # Mithril hello world\n├── nextjs/                              # Next.js hello world\n├── nuxtjs/                              # Nuxt.js hello world\n├── polymer/                             # Polymer hello world\n├── preact/                              # Preact hello world\n├── react/                               # React hello world\n├── riot/                                # Riot.js hello world\n├── scully/                              # Scully hello world\n├── stencil/                             # Stencil hello world\n├── svelte/                              # Svelte hello world\n├── threejs/                             # Three.js hello world\n├── typescript/                          # TypeScript hello world\n├── vue/                                 # Vue.js hello world\n├── vuepress/                            # VuePress hello world\n├── web-component/                       # Web Component hello world\n├── AGENTS.md                            # This file\n├── CHANGELOG.md                         # Version history\n├── CODE_OF_CONDUCT.md                   # Community guidelines\n├── CONTRIBUTING.md                      # Contribution guide\n├── LICENSE                              # MIT\n└── README.md                            # Project overview with build matrix\n```\n\n## Tech Stack\n\n- **Languages:** JavaScript, TypeScript, HTML, CSS\n- **Non-JS projects:** Blazor (.NET/C#), Flutter (Dart), Hugo (Go), Elm\n- **Build tools:** Varies per project — webpack, rollup, Angular CLI, Create React App, Gatsby CLI, etc.\n- **Package manager:** npm (each project has its own `package.json`)\n- **No centralized build or test system** — each subfolder is independent\n\n## Build & Run\n\nThere is no root-level build. Each project builds independently:\n\n```bash\ncd <project-folder>\nnpm install\nnpm start        # or npm run dev\n```\n\nTo build for production:\n\n```bash\ncd <project-folder>\nnpm run build    # output folder varies per framework\n```\n\nRefer to the build matrix in `README.md` for each project's build command and output folder.\n\n### Exceptions\n\n- **Blazor**: Requires .NET SDK → `dotnet build`\n- **Flutter**: Requires Flutter SDK → `flutter build web`\n- **Hugo**: Requires Hugo binary (installed via npm)\n- **Static projects** (alpine, angularjs, babylonjs, backbone, html, hyperapp, javascript, jquery, threejs, web-component): No build step — serve directly\n\n## Testing\n\nThere is no centralized test suite. Individual projects may have tests, but the repo convention is to **remove all tests** and keep demos minimal.\n\nTo verify a project works:\n\n```bash\ncd <project-folder>\nnpm install\nnpm run build           # if applicable\nnpx http-server <serve-folder>\n```\n\n## Key Patterns and Conventions\n\n1. **One folder per framework** — folder name matches the framework/library name in lowercase\n2. **Minimal demos only** — each project must display \"Hello World\" with minimal code, no routing, no styling, no extras\n3. **Must work with `npm install && npm start`** (or documented equivalent)\n4. **Built assets must be servable** via `npx http-server <folder>`\n5. **README.md build matrix** — every project must be listed in the root `README.md` table with build steps and serve folder\n\n## Adding a New Hello World Project\n\n1. Create a folder named `<framework-name>` (lowercase, hyphenated)\n2. Initialize the minimal project with `npm init` or framework CLI\n3. Ensure it displays \"Hello World\" on the main component\n4. Remove all tests, test dependencies, and test scripts\n5. Verify `npm install && npm start` works\n6. Verify `npm run build` produces servable output\n7. Add a row to the build matrix table in `README.md`\n8. Submit a PR using the PR template checklist\n\n## Common Pitfalls\n\n- **Don't add tests** — this repo intentionally excludes tests to keep demos minimal\n- **Don't add styling or routing** — keep it bare-bones\n- **Don't forget the README table** — every project must be listed in the root README.md\n- **Check for existing PRs** — someone may already be working on the same framework\n- **Version pinning** — use specific versions, not `latest`, for reproducibility\n"
  },
  {
    "path": "CHANGELOG.md",
    "content": "# Changelog\n\nAll notable changes to this project will be documented in this file.\n\n## [Unreleased]\n\n### Added\n\n- `AGENTS.md` — AI agent guide for contributing to this repo\n- `.github/copilot-instructions.md` — Copilot coding conventions with maintenance matrix\n- `.github/workflows/copilot-setup-steps.yml` — Cloud agent environment setup\n- `.github/workflows/ci.yml` — PR validation workflow (structure checks, JSON validation)\n- `.github/ISSUE_TEMPLATE/bug-report.md` — Bug report issue template\n- `.github/dependabot.yml` — GitHub Actions dependency updates\n- `CHANGELOG.md` — This changelog\n- AI-Ready badge in `README.md`\n"
  },
  {
    "path": "CODE_OF_CONDUCT.md",
    "content": "---\ntitle: Code of Conduct\n# We can even add meta tags to the page! This sets the keywords meta tag.\n# <meta name=\"keywords\" content=\"my SEO keywords\"/>\ndescription: Code of Conduct guide\nmeta:\n  - name: keywords\n  - content: Code of Conduct\n---\n\n# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nIn the interest of fostering an open and welcoming environment, we as\ncontributors and maintainers pledge to making participation in our project and\nour community a harassment-free experience for everyone, regardless of age, body\nsize, disability, ethnicity, sex characteristics, gender identity and expression,\nlevel of experience, education, socio-economic status, nationality, personal\nappearance, race, religion, or sexual identity and orientation.\n\n## Our Standards\n\nExamples of behavior that contributes to creating a positive environment\ninclude:\n\n- Using welcoming and inclusive language\n- Being respectful of differing viewpoints and experiences\n- Gracefully accepting constructive criticism\n- Focusing on what is best for the community\n- Showing empathy towards other community members\n\nExamples of unacceptable behavior by participants include:\n\n- The use of sexualized language or imagery and unwelcome sexual attention or\n  advances\n- Trolling, insulting/derogatory comments, and personal or political attacks\n- Public or private harassment\n- Publishing others' private information, such as a physical or electronic\n  address, without explicit permission\n- Other conduct which could reasonably be considered inappropriate in a\n  professional setting\n\n## Our Responsibilities\n\nProject maintainers are responsible for clarifying the standards of acceptable\nbehavior and are expected to take appropriate and fair corrective action in\nresponse to any instances of unacceptable behavior.\n\nProject maintainers have the right and responsibility to remove, edit, or\nreject comments, commits, code, wiki edits, issues, and other contributions\nthat are not aligned to this Code of Conduct, or to ban temporarily or\npermanently any contributor for other behaviors that they deem inappropriate,\nthreatening, offensive, or harmful.\n\n## Scope\n\nThis Code of Conduct applies both within project spaces and in public spaces\nwhen an individual is representing the project or its community. Examples of\nrepresenting a project or community include using an official project e-mail\naddress, posting via an official social media account, or acting as an appointed\nrepresentative at an online or offline event. Representation of a project may be\nfurther defined and clarified by project maintainers.\n\n## Enforcement\n\nInstances of abusive, harassing, or otherwise unacceptable behavior may be\nreported by contacting the project team at john+github@johnpapa.net. All\ncomplaints will be reviewed and investigated and will result in a response that\nis deemed necessary and appropriate to the circumstances. The project team is\nobligated to maintain confidentiality with regard to the reporter of an incident.\nFurther details of specific enforcement policies may be posted separately.\n\nProject maintainers who do not follow or enforce the Code of Conduct in good\nfaith may face temporary or permanent repercussions as determined by other\nmembers of the project's leadership.\n\n## Attribution\n\nThis Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,\navailable at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html\n\n[homepage]: https://www.contributor-covenant.org\n\nFor answers to common questions about this code of conduct, see\nhttps://www.contributor-covenant.org/faq\n"
  },
  {
    "path": "CONTRIBUTING.md",
    "content": "---\ntitle: Contributing\n# We can even add meta tags to the page! This sets the keywords meta tag.\n# <meta name=\"keywords\" content=\"my SEO keywords\"/>\ndescription: Conributions guide\nmeta:\n  - name: keywords\n  - content: contributions\n---\n\n# Contributing\n\nWe would love for you to contribute and help make it even better\nthan it is today! As a contributor, here are the guidelines we would like you\nto follow:\n\n-[Code of Conduct](#coc)\n\n- [Issues and Bugs](#issue)\n- [Feature Requests](#feature)\n- [Submission Guidelines](#submit)\n\n## <a name=\"coc\" > </a> Code of Conduct\n\nHelp us keep this project open and inclusive.Please read and follow our [Code of Conduct](./code_of_conduct).\n\n## <a name=\"issue\" > </a> Found an Issue?\n\nIf you find a bug in the source code or a mistake in the documentation, you can help us by\n[submitting an issue](#submit-issue) to our [GitHub Repository](https://github.com/johnpapa/hello-worlds). Even better, you can\n[submit a Pull Request](#submit-pr) with a fix.\n\n## <a name=\"feature\" > </a> Want a Feature?\n\nYou can _request_ a new feature by [submitting an issue](#submit-issue) to our [GitHub Repository](https://github.com/johnpapa/hello-worlds).If you would like to _implement_ a new feature, please submit an issue with\na proposal for your work first, to be sure that we can use it.\n\n- **Small Features** can be crafted and directly [submitted as a Pull Request](#submit-pr).\n\n## <a name=\"submit\" > </a> Submission Guidelines\n\n### <a name=\"submit-issue\" > </a> Submitting an Issue\n\nBefore you submit an issue, search the archive, maybe your question was already answered.\n\nIf your issue appears to be a bug, and hasn't been reported, open a new issue.\nHelp us to maximize the effort we can spend fixing issues and adding new\nfeatures, by not reporting duplicate issues.Providing the following information will increase the\nchances of your issue being dealt with quickly:\n\n- **Overview of the Issue** - if an error is being thrown a non- minified stack trace helps\n  - **Version** - what version is affected (e.g. 0.1.2)\n    - **Motivation for or Use Case** - explain what are you trying to do and why the current behavior is a bug for you\n      - **Browsers and Operating System** - is this a problem with all browsers?\n- **Reproduce the Error** - provide a live example or a unambiguous set of steps\n  - **Related Issues** - has a similar issue been reported before?\n- **Suggest a Fix** - if you can't fix the bug yourself, perhaps you can point to what might be\n  causing the problem (line of code or commit)\n\nYou can file new issues by providing the above information [here](https://github.com/johnpapa/hello-worlds/issues/new).\n\n### <a name=\"submit-pr\" > </a> Submitting a Pull Request (PR)\n\nBefore you submit your Pull Request (PR) consider the following guidelines:\n\n- Search [GitHub](https://github.com/johnpapa/hello-worlds/pulls) for an open or closed PR\n  that relates to your submission.You don't want to duplicate effort.\n\n  - Make your changes in a new git fork:\n\n- Commit your changes using a descriptive commit message\n  - Push your fork to GitHub:\n- In GitHub, send a pull request\n\n  - If we suggest changes then:\n  - Make the required updates.\n  - Rebase your fork and force push to your GitHub repository (this will update your Pull Request):\n\n    ```shell\n    git rebase master -i\n    git push -f\n    ```\n\nThat's it! Thank you for your contribution!\n"
  },
  {
    "path": "LICENSE",
    "content": "    MIT License\r\n\r\n    Copyright (c) John Papa.\r\n\r\n    Permission is hereby granted, free of charge, to any person obtaining a copy\r\n    of this software and associated documentation files (the \"Software\"), to deal\r\n    in the Software without restriction, including without limitation the rights\r\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n    copies of the Software, and to permit persons to whom the Software is\r\n    furnished to do so, subject to the following conditions:\r\n\r\n    The above copyright notice and this permission notice shall be included in all\r\n    copies or substantial portions of the Software.\r\n\r\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\r\n    SOFTWARE\r\n"
  },
  {
    "path": "README.md",
    "content": "# hello-worlds\n\n[![AI-Ready](https://img.shields.io/badge/AI--Ready-✓-brightgreen?style=flat-square)](./AGENTS.md)\n\n\n<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->\n[![All Contributors](https://img.shields.io/badge/all_contributors-29-blue.svg?style=flat-square)](#contributors)\n<!-- ALL-CONTRIBUTORS-BADGE:END -->\n\nHello World apps for JavaScript/HTML/CSS libraries/frameworks!\n\nAssumptions:\n\n- [ ] only the most simple basic hello world app\n- [ ] remove all tests and commands for tests and dependencies for tests\n- [ ] must say \"Hello World\" on the main component\n- [ ] only include the minimal components (1 ideally)\n- [ ] no routing, not extras whatsoever\n- [ ] no styling\n- [ ] nothing else !\n- [ ] must work by running `npm install` and `npm start` (or equivalent)\n- [ ] must be in the folder named `<tech-name>`\n- [ ] add yourself using the all-contributors bot `@allcontributors please add @<your-github-account> for code`\n- [ ] add build steps and which folder to serve in the README.md\n- [ ] verify that the app once built can be served from whatever folder the built assets are placed in\n- [ ] verify that running `npx http-server <your-folder-to-serve>` works\n- [ ] verify that a Pull Request doesnt already exist. If it does, feel free to contribue to it.\n\nSee existing samples for the idea ...\n\n[![Deploy to Azure button](https://aka.ms/deploytoazurebutton)](https://portal.azure.com/?feature.customportal=false&WT.mc_id=javascript-0000-jopapa#create/Microsoft.StaticApp)\n\nProjects are listed alphabetically.\n\n| Project                                                            | Build steps                                   | Serve this folder    | Folder            |\n| ------------------------------------------------------------------ | --------------------------------------------- | -------------------- | ----------------- |\n| [Alpine.js](https://github.com/alpinejs/alpine/)                   |                                               | `/`                  | alpine            |\n| [Angular.js](https://angularjs.org/)                               |                                               | `/`                  | angularjs         |\n| [Angular](https://angular.io/)                                     | `npm run build -- --prod`                     | `dist/hello`         | angular           |\n| [Angular Universal](https://angular.io/guide/universal)            | `npm run prerender`                           | `dist/hello/browser` | angular-universal |\n| [Aurelia](https://aurelia.io/)                                     | `npm run build`                               | `dist`               | aurelia           |\n| [Babylon.js](https://www.babylonjs.com/)                           |                                               | `/`                  | babylonjs         |\n| [Backbone.js](https://backbonejs.org/)                             |                                               | `/`                  | backbone          |\n| [Blazor](https://blazor.net/)                                      | Install .NET SDK then `dotnet build`          | `/`                  | blazor            |\n| [Elm](https://elm-lang.org/)                                       | `npm run build`                               | `public`             | elm               |\n| [Ember](https://emberjs.com/)                                      | `npm run build`                               | `dist`               | ember             |\n| [Flutter](https://flutter.dev/)                                    | Install Flutter SDK then `flutter build web`  | `build/web`          | flutter           |\n| [Gatsby](https://www.gatsbyjs.org/)                                | `npm run build`                               | `public`             | gatsby            |\n| [Glimmer](https://glimmerjs.com/)                                  | `npm run build`                               | `dist`               | glimmer           |\n| [Gridsome](https://gridsome.org/)                                  | `npm run build`                               | `dist`               | gridsome          |\n| [HTML](https://developer.mozilla.org/docs/Web/HTML)                |                                               | `/`                  | html              |\n| [Hugo](https://gohugo.io/)                                         | `npm run build`                               | `public`             | hugo              |\n| [Hyperapp](https://hyperapp.dev/)                                  | (uses CDN)                                    | `/`                  | hyperapp          |\n| [Ionic Angular](https://ionicframework.com/docs/angular/overview)  | `npm run build -- --prod`                     | `www`                | ionic-angular     |\n| [Ionic React](https://ionicframework.com/docs/react)               | `npm run build`                               | `build`              | ionic-react       |\n| [JavaScript](https://developer.mozilla.org/docs/Web/javascript)    |                                               | `/`                  | javascript        |\n| [jQuery](https://jquery.com/)                                      | (uses CDN)                                    | `/`                  | jquery            |\n| [KnockoutJS](https://knockoutjs.com/)                              | `npm run build`                               | `dist`               | knockoutjs        |\n| [LitElement](https://lit-element.polymer-project.org/)             | `npm run build`                               | `dist`               | lit-element       |\n| [Marko](https://markojs.com/)                                      | `npm run build`                               | `public`             | marko             |\n| [Meteor](https://www.meteor.com/)                                  | `npm run build`                               | `bundle`             | meteor            |\n| [Mithril](https://mithril.js.org/)                                 | `npm run build`                               | `dist`               | mithril           |\n| [Next.js](https://nextjs.org/)                                     | `npm run build`                               | `out`                | nextjs            |\n| [Nuxt.js](https://nuxtjs.org/)                                     | `npm run generate`                            | `dist`               | nuxtjs            |\n| [Polymer](https://www.polymer-project.org/)                        | `npm run build`                               | `build/default`      | polymer           |\n| [Preact](https://preactjs.com/)                                    | `npm run build`                               | `build`              | preact            |\n| [React](https://reactjs.org/)                                      | `npm run build`                               | `build`              | react             |\n| [Riot](https://riot.js.org/)                                       | `npm run build`                               | `dist`               | riot              |\n| [Scully](https://github.com/scullyio/scully)                       | `npm run build -- --prod`                     | `dist/hello`         | scully            |\n| [Stencil](https://stenciljs.com/)                                  | `npm run build`                               | `www`                | stencil           |\n| [Svelte](https://svelte.dev/)                                      | `npm run build`                               | `public`             | svelte            |\n| [Three.js](https://threejs.org/)                                   |                                               | `/`                  | threejs           |\n| [TypeScript](https://www.typescriptlang.org/)                      | `npm run build`                               | `dist`               | typescript        |\n| [Vue](http://vuejs.com/)                                           | `npm run build`                               | `dist`               | vue               |\n| [VuePress](https://vuepress.vuejs.org/)                            | `npm run build`                               | `dist`               | vuepress          |\n\n## Resources\n\n- [Azure Free Trial](https://azure.microsoft.com/free/?WT.mc_id=javascript-0000-jopapa)\n- [VS Code](https://code.visualstudio.com/?WT.mc_id=javascript-0000-jopapa)\n\n### Azure Static Web Apps\n\n- Learn how to [Publish an Angular, React, Svelte, or Vue JavaScript app and API with Azure Static Web Apps](https://docs.microsoft.com/learn/modules/publish-app-service-static-web-app-api?WT.mc_id=javascript-0000-jopapa)\n- [API support in Azure Static Web Apps](https://docs.microsoft.com/azure/static-web-apps/apis?WT.mc_id=javascript-0000-jopapa)\n- [Add an API to Azure Static Web Apps](https://docs.microsoft.com/azure/static-web-apps/add-api?WT.mc_id=javascript-0000-jopapa)\n- [Authentication and authorization](https://docs.microsoft.com/azure/static-web-apps/authentication-authorization?WT.mc_id=javascript-0000-jopapa)\n- [Routes](https://docs.microsoft.com/azure/static-web-apps/routes?WT.mc_id=javascript-0000-jopapa)\n- [Review pre-production environments](https://docs.microsoft.com/azure/static-web-apps/review-publish-pull-requests?WT.mc_id=javascript-0000-jopapa)\n\n## Contributors ✨\n\nThanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):\n\n<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->\n<!-- prettier-ignore-start -->\n<!-- markdownlint-disable -->\n<table>\n  <tr>\n    <td align=\"center\"><a href=\"http://johnpapa.net\"><img src=\"https://avatars2.githubusercontent.com/u/1202528?v=4?s=100\" width=\"100px;\" alt=\"\"/><br /><sub><b>John Papa</b></sub></a><br /><a href=\"https://github.com/johnpapa/hello-worlds/commits?author=johnpapa\" title=\"Code\">💻</a></td>\n    <td align=\"center\"><a href=\"https://github.com/laurieontech\"><img src=\"https://avatars3.githubusercontent.com/u/15000607?v=4?s=100\" width=\"100px;\" alt=\"\"/><br /><sub><b>LB</b></sub></a><br /><a href=\"https://github.com/johnpapa/hello-worlds/commits?author=laurieontech\" title=\"Code\">💻</a></td>\n    <td align=\"center\"><a href=\"https://simicode.me\"><img src=\"https://avatars1.githubusercontent.com/u/25581792?v=4?s=100\" width=\"100px;\" alt=\"\"/><br /><sub><b>Simeon Udoh</b></sub></a><br /><a href=\"https://github.com/johnpapa/hello-worlds/commits?author=simeon4real\" title=\"Code\">💻</a></td>\n    <td align=\"center\"><a href=\"https://twitter.com/ksivamuthu\"><img src=\"https://avatars0.githubusercontent.com/u/4029525?v=4?s=100\" width=\"100px;\" alt=\"\"/><br /><sub><b>Sivamuthu Kumar</b></sub></a><br /><a href=\"https://github.com/johnpapa/hello-worlds/commits?author=ksivamuthu\" title=\"Code\">💻</a></td>\n    <td align=\"center\"><a href=\"https://github.com/matiaskm\"><img src=\"https://avatars3.githubusercontent.com/u/18614906?v=4?s=100\" width=\"100px;\" alt=\"\"/><br /><sub><b>Matias Kohan</b></sub></a><br /><a href=\"https://github.com/johnpapa/hello-worlds/commits?author=matiaskm\" title=\"Code\">💻</a></td>\n    <td align=\"center\"><a href=\"https://github.com/Duraimurugan\"><img src=\"https://avatars3.githubusercontent.com/u/7348388?v=4?s=100\" width=\"100px;\" alt=\"\"/><br /><sub><b>Duraimurugan</b></sub></a><br /><a href=\"https://github.com/johnpapa/hello-worlds/commits?author=Duraimurugan\" title=\"Code\">💻</a></td>\n    <td align=\"center\"><a href=\"https://twitter.com/sinedied\"><img src=\"https://avatars0.githubusercontent.com/u/593151?v=4?s=100\" width=\"100px;\" alt=\"\"/><br /><sub><b>Yohan Lasorsa</b></sub></a><br /><a href=\"https://github.com/johnpapa/hello-worlds/commits?author=sinedied\" title=\"Code\">💻</a></td>\n  </tr>\n  <tr>\n    <td align=\"center\"><a href=\"https://wassim.dev\"><img src=\"https://avatars2.githubusercontent.com/u/1699357?v=4?s=100\" width=\"100px;\" alt=\"\"/><br /><sub><b>Wassim Chegham</b></sub></a><br /><a href=\"https://github.com/johnpapa/hello-worlds/commits?author=manekinekko\" title=\"Code\">💻</a></td>\n    <td align=\"center\"><a href=\"https://github.com/sandydoo\"><img src=\"https://avatars3.githubusercontent.com/u/7572407?v=4?s=100\" width=\"100px;\" alt=\"\"/><br /><sub><b>Sander Melnikov</b></sub></a><br /><a href=\"https://github.com/johnpapa/hello-worlds/commits?author=sandydoo\" title=\"Code\">💻</a></td>\n    <td align=\"center\"><a href=\"https://angularhive.com\"><img src=\"https://avatars0.githubusercontent.com/u/29446574?v=4?s=100\" width=\"100px;\" alt=\"\"/><br /><sub><b>Udhayakumar Govindarajan</b></sub></a><br /><a href=\"https://github.com/johnpapa/hello-worlds/commits?author=askudhay\" title=\"Documentation\">📖</a></td>\n    <td align=\"center\"><a href=\"https://behance.net/afifalfiano\"><img src=\"https://avatars1.githubusercontent.com/u/47497276?v=4?s=100\" width=\"100px;\" alt=\"\"/><br /><sub><b>Afif Alfiano</b></sub></a><br /><a href=\"https://github.com/johnpapa/hello-worlds/commits?author=afifalfiano\" title=\"Code\">💻</a></td>\n    <td align=\"center\"><a href=\"http://gilcreque.com\"><img src=\"https://avatars2.githubusercontent.com/u/243234?v=4?s=100\" width=\"100px;\" alt=\"\"/><br /><sub><b>Gil Creque</b></sub></a><br /><a href=\"https://github.com/johnpapa/hello-worlds/commits?author=gilcreque\" title=\"Code\">💻</a></td>\n    <td align=\"center\"><a href=\"https://github.com/afflexux\"><img src=\"https://avatars0.githubusercontent.com/u/35804265?v=4?s=100\" width=\"100px;\" alt=\"\"/><br /><sub><b>afflexux</b></sub></a><br /><a href=\"https://github.com/johnpapa/hello-worlds/commits?author=afflexux\" title=\"Code\">💻</a></td>\n    <td align=\"center\"><a href=\"https://github.com/apps/allcontributors\"><img src=\"https://avatars0.githubusercontent.com/in/23186?v=4?s=100\" width=\"100px;\" alt=\"\"/><br /><sub><b>allcontributors[bot]</b></sub></a><br /><a href=\"https://github.com/johnpapa/hello-worlds/commits?author=allcontributors[bot]\" title=\"Documentation\">📖</a></td>\n  </tr>\n  <tr>\n    <td align=\"center\"><a href=\"https://github.com/btchoum\"><img src=\"https://avatars0.githubusercontent.com/u/9422996?v=4?s=100\" width=\"100px;\" alt=\"\"/><br /><sub><b>Bertrand Tchoumkeu</b></sub></a><br /><a href=\"https://github.com/johnpapa/hello-worlds/commits?author=btchoum\" title=\"Code\">💻</a></td>\n    <td align=\"center\"><a href=\"https://medium.com/@webmaxru\"><img src=\"https://avatars1.githubusercontent.com/u/1560278?v=4?s=100\" width=\"100px;\" alt=\"\"/><br /><sub><b>Maxim Salnikov</b></sub></a><br /><a href=\"https://github.com/johnpapa/hello-worlds/commits?author=webmaxru\" title=\"Code\">💻</a></td>\n    <td align=\"center\"><a href=\"https://github.com/rgolea\"><img src=\"https://avatars0.githubusercontent.com/u/8843202?v=4?s=100\" width=\"100px;\" alt=\"\"/><br /><sub><b>Rares Golea</b></sub></a><br /><a href=\"https://github.com/johnpapa/hello-worlds/commits?author=rgolea\" title=\"Code\">💻</a></td>\n    <td align=\"center\"><a href=\"https://swank.dev/\"><img src=\"https://avatars0.githubusercontent.com/u/18602728?v=4?s=100\" width=\"100px;\" alt=\"\"/><br /><sub><b>Brian Swank</b></sub></a><br /><a href=\"https://github.com/johnpapa/hello-worlds/commits?author=bswank\" title=\"Code\">💻</a></td>\n    <td align=\"center\"><a href=\"https://codewithhugo.com\"><img src=\"https://avatars1.githubusercontent.com/u/6459679?v=4?s=100\" width=\"100px;\" alt=\"\"/><br /><sub><b>Hugo</b></sub></a><br /><a href=\"https://github.com/johnpapa/hello-worlds/commits?author=hugodf\" title=\"Code\">💻</a></td>\n    <td align=\"center\"><a href=\"https://noelmace.com\"><img src=\"https://avatars3.githubusercontent.com/u/7578400?v=4?s=100\" width=\"100px;\" alt=\"\"/><br /><sub><b>Noël Macé</b></sub></a><br /><a href=\"https://github.com/johnpapa/hello-worlds/commits?author=noelmace\" title=\"Code\">💻</a></td>\n    <td align=\"center\"><a href=\"https://github.com/wolfhoundjesse\"><img src=\"https://avatars1.githubusercontent.com/u/13468509?v=4?s=100\" width=\"100px;\" alt=\"\"/><br /><sub><b>Jesse M. Holmes</b></sub></a><br /><a href=\"https://github.com/johnpapa/hello-worlds/commits?author=wolfhoundjesse\" title=\"Code\">💻</a></td>\n  </tr>\n  <tr>\n    <td align=\"center\"><a href=\"https://github.com/carlosroec\"><img src=\"https://avatars0.githubusercontent.com/u/1981518?v=4?s=100\" width=\"100px;\" alt=\"\"/><br /><sub><b>Carlos G. Rodriguez</b></sub></a><br /><a href=\"https://github.com/johnpapa/hello-worlds/commits?author=carlosroec\" title=\"Code\">💻</a></td>\n    <td align=\"center\"><a href=\"http://zaceno.github.io\"><img src=\"https://avatars3.githubusercontent.com/u/2061445?v=4?s=100\" width=\"100px;\" alt=\"\"/><br /><sub><b>Zacharias Enochsson</b></sub></a><br /><a href=\"https://github.com/johnpapa/hello-worlds/commits?author=zaceno\" title=\"Code\">💻</a></td>\n    <td align=\"center\"><a href=\"https://moemoe89.github.io\"><img src=\"https://avatars0.githubusercontent.com/u/7221739?v=4?s=100\" width=\"100px;\" alt=\"\"/><br /><sub><b>Bismo Baruno</b></sub></a><br /><a href=\"https://github.com/johnpapa/hello-worlds/commits?author=moemoe89\" title=\"Code\">💻</a></td>\n    <td align=\"center\"><a href=\"https://github.com/Filini\"><img src=\"https://avatars1.githubusercontent.com/u/10072578?v=4?s=100\" width=\"100px;\" alt=\"\"/><br /><sub><b>Filippo Gualandi</b></sub></a><br /><a href=\"https://github.com/johnpapa/hello-worlds/commits?author=Filini\" title=\"Code\">💻</a></td>\n    <td align=\"center\"><a href=\"https://twitter.com/mhartington\"><img src=\"https://avatars3.githubusercontent.com/u/2835826?v=4?s=100\" width=\"100px;\" alt=\"\"/><br /><sub><b>Mike Hartington</b></sub></a><br /><a href=\"https://github.com/johnpapa/hello-worlds/commits?author=mhartington\" title=\"Code\">💻</a></td>\n    <td align=\"center\"><a href=\"https://github.com/aelgasser\"><img src=\"https://avatars2.githubusercontent.com/u/3692722?v=4?s=100\" width=\"100px;\" alt=\"\"/><br /><sub><b>aelgasser</b></sub></a><br /><a href=\"https://github.com/johnpapa/hello-worlds/commits?author=aelgasser\" title=\"Code\">💻</a></td>\n    <td align=\"center\"><a href=\"http://www.sarbull.ro\"><img src=\"https://avatars.githubusercontent.com/u/1864112?v=4?s=100\" width=\"100px;\" alt=\"\"/><br /><sub><b>Cezar Sîrbu</b></sub></a><br /><a href=\"https://github.com/johnpapa/hello-worlds/commits?author=sarbull\" title=\"Code\">💻</a></td>\n  </tr>\n  <tr>\n    <td align=\"center\"><a href=\"https://github.com/Nicoss54\"><img src=\"https://avatars.githubusercontent.com/u/24563545?v=4?s=100\" width=\"100px;\" alt=\"\"/><br /><sub><b>Nicoss54</b></sub></a><br /><a href=\"https://github.com/johnpapa/hello-worlds/commits?author=Nicoss54\" title=\"Code\">💻</a></td>\n    <td align=\"center\"><a href=\"https://github.com/Yonet\"><img src=\"https://avatars.githubusercontent.com/u/3523671?v=4\" width=\"100px;\" alt=\"\"/><br /><sub><b>Yonet</b></sub></a><br /><a href=\"https://github.com/johnpapa/hello-worlds/commits?author=Yonet\" title=\"Code\">💻</a></td>\n  </tr>\n</table>\n\n<!-- markdownlint-restore -->\n<!-- prettier-ignore-end -->\n\n<!-- ALL-CONTRIBUTORS-LIST:END -->\n\nThis project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!\n"
  },
  {
    "path": "alpine/index.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"UTF-8\" />\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n    <title>Hello World</title>\n    <script type=\"module\" src=\"https://cdn.jsdelivr.net/gh/alpinejs/alpine@v2.x.x/dist/alpine.min.js\"></script>\n    <!-- for IE11 support -->\n    <script nomodule src=\"https://cdn.jsdelivr.net/gh/alpinejs/alpine@v2.x.x/dist/alpine-ie11.min.js\" defer></script>\n  </head>\n  <body>\n    <div x-data=\"{ value: 'World' }\">\n      <h1>Hello <span x-text=\"value\"></span></h1>\n    </div>\n  </body>\n</html>\n"
  },
  {
    "path": "angular/.editorconfig",
    "content": "# Editor configuration, see https://editorconfig.org\nroot = true\n\n[*]\ncharset = utf-8\nindent_style = space\nindent_size = 2\ninsert_final_newline = true\ntrim_trailing_whitespace = true\n\n[*.md]\nmax_line_length = off\ntrim_trailing_whitespace = false\n"
  },
  {
    "path": "angular/.gitignore",
    "content": "# See http://help.github.com/ignore-files/ for more about ignoring files.\n\n# compiled output\n/dist\n/tmp\n/out-tsc\n# Only exists if Bazel was run\n/bazel-out\n\n# dependencies\n/node_modules\n\n# profiling files\nchrome-profiler-events*.json\nspeed-measure-plugin*.json\n\n# IDEs and editors\n/.idea\n.project\n.classpath\n.c9/\n*.launch\n.settings/\n*.sublime-workspace\n\n# IDE - VSCode\n.vscode/*\n!.vscode/settings.json\n!.vscode/tasks.json\n!.vscode/launch.json\n!.vscode/extensions.json\n.history/*\n\n# misc\n/.sass-cache\n/connect.lock\n/coverage\n/libpeerconnection.log\nnpm-debug.log\nyarn-error.log\ntestem.log\n/typings\n\n# System Files\n.DS_Store\nThumbs.db\n.angular/\n"
  },
  {
    "path": "angular/README.md",
    "content": "# Hello\n\nThis project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 9.0.1.\n\n## Development server\n\nRun `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files.\n\n## Code scaffolding\n\nRun `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`.\n\n## Build\n\nRun `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. Use the `--prod` flag for a production build.\n\n## Running unit tests\n\nRun `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io).\n\n## Running end-to-end tests\n\nRun `ng e2e` to execute the end-to-end tests via [Protractor](http://www.protractortest.org/).\n\n## Further help\n\nTo get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md).\n"
  },
  {
    "path": "angular/angular.json",
    "content": "{\n  \"$schema\": \"./node_modules/@angular/cli/lib/config/schema.json\",\n  \"version\": 1,\n  \"cli\": {\n    \"packageManager\": \"npm\",\n    \"analytics\": false\n  },\n  \"newProjectRoot\": \"projects\",\n  \"projects\": {\n    \"hello-angular\": {\n      \"projectType\": \"application\",\n      \"root\": \"\",\n      \"sourceRoot\": \"src\",\n      \"prefix\": \"app\",\n      \"architect\": {\n        \"build\": {\n          \"builder\": \"@angular/build:application\",\n          \"options\": {\n            \"browser\": \"src/main.ts\",\n            \"tsConfig\": \"tsconfig.app.json\",\n            \"assets\": [\n              {\n                \"glob\": \"**/*\",\n                \"input\": \"public\"\n              }\n            ],\n            \"styles\": [\n              \"src/styles.css\"\n            ]\n          },\n          \"configurations\": {\n            \"production\": {\n              \"budgets\": [\n                {\n                  \"type\": \"initial\",\n                  \"maximumWarning\": \"500kB\",\n                  \"maximumError\": \"1MB\"\n                }\n              ],\n              \"outputHashing\": \"all\"\n            },\n            \"development\": {\n              \"optimization\": false,\n              \"extractLicenses\": false,\n              \"sourceMap\": true\n            }\n          },\n          \"defaultConfiguration\": \"production\"\n        },\n        \"serve\": {\n          \"builder\": \"@angular/build:dev-server\",\n          \"configurations\": {\n            \"production\": {\n              \"buildTarget\": \"hello-angular:build:production\"\n            },\n            \"development\": {\n              \"buildTarget\": \"hello-angular:build:development\"\n            }\n          },\n          \"defaultConfiguration\": \"development\"\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "angular/package.json",
    "content": "{\n  \"name\": \"hello-angular\",\n  \"version\": \"0.0.0\",\n  \"scripts\": {\n    \"ng\": \"ng\",\n    \"start\": \"ng serve\",\n    \"build\": \"ng build\",\n    \"watch\": \"ng build --watch --configuration development\"\n  },\n  \"private\": true,\n  \"dependencies\": {\n    \"@angular/common\": \"^21.2.0\",\n    \"@angular/compiler\": \"^21.2.0\",\n    \"@angular/core\": \"^21.2.0\",\n    \"@angular/platform-browser\": \"^21.2.0\",\n    \"rxjs\": \"~7.8.0\",\n    \"tslib\": \"^2.3.0\"\n  },\n  \"devDependencies\": {\n    \"@angular/build\": \"^21.2.9\",\n    \"@angular/cli\": \"^21.2.9\",\n    \"@angular/compiler-cli\": \"^21.2.0\",\n    \"typescript\": \"~5.9.2\"\n  }\n}\n"
  },
  {
    "path": "angular/src/app/app.ts",
    "content": "import { Component } from '@angular/core';\n\n@Component({\n  selector: 'app-root',\n  template: `<div>Hello {{ value }}</div>`,\n})\nexport class App {\n  value = 'World';\n}\n"
  },
  {
    "path": "angular/src/assets/.gitkeep",
    "content": ""
  },
  {
    "path": "angular/src/index.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"utf-8\">\n  <title>Hello</title>\n  <base href=\"/\">\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n  <link rel=\"icon\" type=\"image/x-icon\" href=\"favicon.ico\">\n</head>\n<body>\n  <app-root></app-root>\n</body>\n</html>\n"
  },
  {
    "path": "angular/src/main.ts",
    "content": "import { bootstrapApplication } from '@angular/platform-browser';\nimport { App } from './app/app';\n\nbootstrapApplication(App)\n  .catch((err) => console.error(err));\n"
  },
  {
    "path": "angular/src/styles.css",
    "content": "/* Global styles */\n"
  },
  {
    "path": "angular/tsconfig.app.json",
    "content": "{\n  \"extends\": \"./tsconfig.json\",\n  \"compilerOptions\": {\n    \"outDir\": \"./out-tsc/app\",\n    \"types\": []\n  },\n  \"include\": [\n    \"src/**/*.ts\"\n  ]\n}\n"
  },
  {
    "path": "angular/tsconfig.json",
    "content": "{\n  \"compileOnSave\": false,\n  \"compilerOptions\": {\n    \"strict\": true,\n    \"noImplicitOverride\": true,\n    \"noImplicitReturns\": true,\n    \"noFallthroughCasesInSwitch\": true,\n    \"skipLibCheck\": true,\n    \"isolatedModules\": true,\n    \"experimentalDecorators\": true,\n    \"importHelpers\": true,\n    \"target\": \"ES2022\",\n    \"module\": \"preserve\"\n  },\n  \"angularCompilerOptions\": {\n    \"enableI18nLegacyMessageIdFormat\": false,\n    \"strictInjectionParameters\": true,\n    \"strictInputAccessModifiers\": true,\n    \"strictTemplates\": true\n  },\n  \"files\": [],\n  \"references\": [\n    {\n      \"path\": \"./tsconfig.app.json\"\n    }\n  ]\n}\n"
  },
  {
    "path": "angular-universal/.browserslistrc",
    "content": "# This file is used by the build system to adjust CSS and JS output to support the specified browsers below.\n# For additional information regarding the format and rule options, please see:\n# https://github.com/browserslist/browserslist#queries\n\n# For the full list of supported browsers by the Angular framework, please see:\n# https://angular.io/guide/browser-support\n\n# You can see what browsers were selected by your queries by running:\n#   npx browserslist\n\nlast 1 Chrome version\nlast 1 Firefox version\nlast 2 Edge major versions\nlast 2 Safari major version\nlast 2 iOS major versions\nFirefox ESR\nnot IE 9-11 # For IE 9-11 support, remove 'not'.\n"
  },
  {
    "path": "angular-universal/.gitignore",
    "content": "# See http://help.github.com/ignore-files/ for more about ignoring files.\n\n# compiled output\n/dist\n/tmp\n/out-tsc\n# Only exists if Bazel was run\n/bazel-out\n\n# dependencies\n/node_modules\n\n# profiling files\nchrome-profiler-events*.json\nspeed-measure-plugin*.json\n\n# IDEs and editors\n/.idea\n.project\n.classpath\n.c9/\n*.launch\n.settings/\n*.sublime-workspace\n\n# IDE - VSCode\n.vscode/*\n!.vscode/settings.json\n!.vscode/tasks.json\n!.vscode/launch.json\n!.vscode/extensions.json\n.history/*\n\n# misc\n/.sass-cache\n/connect.lock\n/coverage\n/libpeerconnection.log\nnpm-debug.log\nyarn-error.log\ntestem.log\n/typings\n\n# System Files\n.DS_Store\nThumbs.db\n"
  },
  {
    "path": "angular-universal/README.md",
    "content": "# Hello\n\nThis project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 10.0.0-rc.0.\n\n## Development server\n\nRun `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files.\n\n## Code scaffolding\n\nRun `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`.\n\n## Build\n\nRun `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. Use the `--prod` flag for a production build.\n\n## Running unit tests\n\nRun `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io).\n\n## Running end-to-end tests\n\nRun `ng e2e` to execute the end-to-end tests via [Protractor](http://www.protractortest.org/).\n\n## Further help\n\nTo get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md).\n"
  },
  {
    "path": "angular-universal/angular.json",
    "content": "{\n  \"$schema\": \"./node_modules/@angular/cli/lib/config/schema.json\",\n  \"version\": 1,\n  \"newProjectRoot\": \"projects\",\n  \"projects\": {\n    \"hello\": {\n      \"projectType\": \"application\",\n      \"schematics\": {\n        \"@schematics/angular:component\": {\n          \"inlineTemplate\": true,\n          \"inlineStyle\": true,\n          \"skipTests\": true\n        },\n        \"@schematics/angular:class\": {\n          \"skipTests\": true\n        },\n        \"@schematics/angular:directive\": {\n          \"skipTests\": true\n        },\n        \"@schematics/angular:guard\": {\n          \"skipTests\": true\n        },\n        \"@schematics/angular:interceptor\": {\n          \"skipTests\": true\n        },\n        \"@schematics/angular:module\": {\n          \"skipTests\": true\n        },\n        \"@schematics/angular:pipe\": {\n          \"skipTests\": true\n        },\n        \"@schematics/angular:service\": {\n          \"skipTests\": true\n        }\n      },\n      \"root\": \"\",\n      \"sourceRoot\": \"src\",\n      \"prefix\": \"app\",\n      \"architect\": {\n        \"build\": {\n          \"builder\": \"@angular-devkit/build-angular:browser\",\n          \"options\": {\n            \"outputPath\": \"dist/hello/browser\",\n            \"index\": \"src/index.html\",\n            \"main\": \"src/main.ts\",\n            \"polyfills\": \"src/polyfills.ts\",\n            \"tsConfig\": \"tsconfig.app.json\",\n            \"aot\": true,\n            \"assets\": [\n              \"src/favicon.ico\",\n              \"src/assets\"\n            ],\n            \"styles\": [\n              \"src/styles.css\"\n            ],\n            \"scripts\": []\n          },\n          \"configurations\": {\n            \"production\": {\n              \"fileReplacements\": [\n                {\n                  \"replace\": \"src/environments/environment.ts\",\n                  \"with\": \"src/environments/environment.prod.ts\"\n                }\n              ],\n              \"optimization\": true,\n              \"outputHashing\": \"all\",\n              \"sourceMap\": false,\n              \"extractCss\": true,\n              \"namedChunks\": false,\n              \"extractLicenses\": true,\n              \"vendorChunk\": false,\n              \"buildOptimizer\": true,\n              \"budgets\": [\n                {\n                  \"type\": \"initial\",\n                  \"maximumWarning\": \"2mb\",\n                  \"maximumError\": \"5mb\"\n                },\n                {\n                  \"type\": \"anyComponentStyle\",\n                  \"maximumWarning\": \"6kb\",\n                  \"maximumError\": \"10kb\"\n                }\n              ]\n            }\n          }\n        },\n        \"serve\": {\n          \"builder\": \"@angular-devkit/build-angular:dev-server\",\n          \"options\": {\n            \"browserTarget\": \"hello:build\"\n          },\n          \"configurations\": {\n            \"production\": {\n              \"browserTarget\": \"hello:build:production\"\n            }\n          }\n        },\n        \"extract-i18n\": {\n          \"builder\": \"@angular-devkit/build-angular:extract-i18n\",\n          \"options\": {\n            \"browserTarget\": \"hello:build\"\n          }\n        },\n        \"server\": {\n          \"builder\": \"@angular-devkit/build-angular:server\",\n          \"options\": {\n            \"outputPath\": \"dist/hello/server\",\n            \"main\": \"server.ts\",\n            \"tsConfig\": \"tsconfig.server.json\"\n          },\n          \"configurations\": {\n            \"production\": {\n              \"outputHashing\": \"media\",\n              \"fileReplacements\": [\n                {\n                  \"replace\": \"src/environments/environment.ts\",\n                  \"with\": \"src/environments/environment.prod.ts\"\n                }\n              ],\n              \"sourceMap\": false,\n              \"optimization\": true\n            }\n          }\n        },\n        \"serve-ssr\": {\n          \"builder\": \"@nguniversal/builders:ssr-dev-server\",\n          \"options\": {\n            \"browserTarget\": \"hello:build\",\n            \"serverTarget\": \"hello:server\"\n          },\n          \"configurations\": {\n            \"production\": {\n              \"browserTarget\": \"hello:build:production\",\n              \"serverTarget\": \"hello:server:production\"\n            }\n          }\n        },\n        \"prerender\": {\n          \"builder\": \"@nguniversal/builders:prerender\",\n          \"options\": {\n            \"browserTarget\": \"hello:build:production\",\n            \"serverTarget\": \"hello:server:production\",\n            \"routes\": [\n              \"/\"\n            ]\n          },\n          \"configurations\": {\n            \"production\": {}\n          }\n        }\n      }\n    }},\n  \"defaultProject\": \"hello\"\n}\n"
  },
  {
    "path": "angular-universal/package.json",
    "content": "{\n  \"name\": \"hello\",\n  \"version\": \"0.0.0\",\n  \"scripts\": {\n    \"ng\": \"ng\",\n    \"start\": \"ng serve\",\n    \"build\": \"ng build\",\n    \"test\": \"ng test\",\n    \"lint\": \"ng lint\",\n    \"e2e\": \"ng e2e\",\n    \"dev:ssr\": \"ng run hello:serve-ssr\",\n    \"serve:ssr\": \"node dist/hello/server/main.js\",\n    \"build:ssr\": \"ng build --prod && ng run hello:server:production\",\n    \"prerender\": \"ng run hello:prerender\"\n  },\n  \"private\": true,\n  \"dependencies\": {\n    \"@angular/animations\": \"~10.0.0-rc.0\",\n    \"@angular/common\": \"~10.0.0-rc.0\",\n    \"@angular/compiler\": \"~10.0.0-rc.0\",\n    \"@angular/core\": \"~10.0.0-rc.0\",\n    \"@angular/forms\": \"~10.0.0-rc.0\",\n    \"@angular/platform-browser\": \"~10.0.0-rc.0\",\n    \"@angular/platform-browser-dynamic\": \"~10.0.0-rc.0\",\n    \"@angular/platform-server\": \"~10.0.0-rc.0\",\n    \"@angular/router\": \"~10.0.0-rc.0\",\n    \"@nguniversal/express-engine\": \"^10.0.0-next.0\",\n    \"express\": \"^4.15.2\",\n    \"rxjs\": \"~6.5.4\",\n    \"tslib\": \"^2.0.0\",\n    \"zone.js\": \"~0.10.2\"\n  },\n  \"devDependencies\": {\n    \"@angular-devkit/build-angular\": \"~0.1000.0-rc.0\",\n    \"@angular/cli\": \"~10.0.0-rc.0\",\n    \"@angular/compiler-cli\": \"~10.0.0-rc.0\",\n    \"@nguniversal/builders\": \"^10.0.0-next.0\",\n    \"@types/express\": \"^4.17.0\",\n    \"@types/node\": \"^12.11.1\",\n    \"ts-node\": \"~8.3.0\",\n    \"tslint\": \"~6.1.0\",\n    \"typescript\": \"~3.9.2\"\n  }\n}\n"
  },
  {
    "path": "angular-universal/server.ts",
    "content": "import 'zone.js/dist/zone-node';\n\nimport { ngExpressEngine } from '@nguniversal/express-engine';\nimport * as express from 'express';\nimport { join } from 'path';\n\nimport { AppServerModule } from './src/main.server';\nimport { APP_BASE_HREF } from '@angular/common';\nimport { existsSync } from 'fs';\n\n// The Express app is exported so that it can be used by serverless Functions.\nexport function app() {\n  const server = express();\n  const distFolder = join(process.cwd(), 'dist/hello/browser');\n  const indexHtml = existsSync(join(distFolder, 'index.original.html')) ? 'index.original.html' : 'index';\n\n  // Our Universal express-engine (found @ https://github.com/angular/universal/tree/master/modules/express-engine)\n  server.engine('html', ngExpressEngine({\n    bootstrap: AppServerModule,\n  }));\n\n  server.set('view engine', 'html');\n  server.set('views', distFolder);\n\n  // Example Express Rest API endpoints\n  // server.get('/api/**', (req, res) => { });\n  // Serve static files from /browser\n  server.get('*.*', express.static(distFolder, {\n    maxAge: '1y'\n  }));\n\n  // All regular routes use the Universal engine\n  server.get('*', (req, res) => {\n    res.render(indexHtml, { req, providers: [{ provide: APP_BASE_HREF, useValue: req.baseUrl }] });\n  });\n\n  return server;\n}\n\nfunction run() {\n  const port = process.env.PORT || 4000;\n\n  // Start up the Node server\n  const server = app();\n  server.listen(port, () => {\n    console.log(`Node Express server listening on http://localhost:${port}`);\n  });\n}\n\n// Webpack will replace 'require' with '__webpack_require__'\n// '__non_webpack_require__' is a proxy to Node 'require'\n// The below code is to ensure that the server is run only when not requiring the bundle.\ndeclare const __non_webpack_require__: NodeRequire;\nconst mainModule = __non_webpack_require__.main;\nconst moduleFilename = mainModule && mainModule.filename || '';\nif (moduleFilename === __filename || moduleFilename.includes('iisnode')) {\n  run();\n}\n\nexport * from './src/main.server';\n"
  },
  {
    "path": "angular-universal/src/app/app.component.ts",
    "content": "import { Component } from '@angular/core';\n\n@Component({\n  selector: 'app-root',\n  template: `<div>Hello {{value}}</div>`,\n})\nexport class AppComponent {\n  value = 'World';\n}\n"
  },
  {
    "path": "angular-universal/src/app/app.module.ts",
    "content": "import { BrowserModule } from '@angular/platform-browser';\nimport { NgModule } from '@angular/core';\n\nimport { AppComponent } from './app.component';\n\n@NgModule({\n  declarations: [\n    AppComponent\n  ],\n  imports: [\n    BrowserModule.withServerTransition({ appId: 'serverApp' })\n  ],\n  providers: [],\n  bootstrap: [AppComponent]\n})\nexport class AppModule { }\n"
  },
  {
    "path": "angular-universal/src/app/app.server.module.ts",
    "content": "import { NgModule } from '@angular/core';\nimport { ServerModule } from '@angular/platform-server';\n\nimport { AppModule } from './app.module';\nimport { AppComponent } from './app.component';\n\n@NgModule({\n  imports: [\n    AppModule,\n    ServerModule,\n  ],\n  bootstrap: [AppComponent],\n})\nexport class AppServerModule {}\n"
  },
  {
    "path": "angular-universal/src/app/package.json",
    "content": "{\n  \"name\": \"hello\",\n  \"private\": true,\n  \"description\": \"This is a special package.json file that is not used by package managers. It is however used to tell the tools and bundlers whether the code under this directory is free of code with non-local side-effect. Any code that does have non-local side-effects can't be well optimized (tree-shaken) and will result in unnecessary increased payload size. It should be safe to set this option to 'false' for new applications, but existing code bases could be broken when built with the production config if the application code does contain non-local side-effects that the application depends on.\",\n  \"sideEffects\": true\n}\n"
  },
  {
    "path": "angular-universal/src/assets/.gitkeep",
    "content": ""
  },
  {
    "path": "angular-universal/src/environments/environment.prod.ts",
    "content": "export const environment = {\n  production: true\n};\n"
  },
  {
    "path": "angular-universal/src/environments/environment.ts",
    "content": "// This file can be replaced during build by using the `fileReplacements` array.\n// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.\n// The list of file replacements can be found in `angular.json`.\n\nexport const environment = {\n  production: false\n};\n\n/*\n * For easier debugging in development mode, you can import the following file\n * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.\n *\n * This import should be commented out in production mode because it will have a negative impact\n * on performance if an error is thrown.\n */\n// import 'zone.js/dist/zone-error';  // Included with Angular CLI.\n"
  },
  {
    "path": "angular-universal/src/index.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"utf-8\">\n  <title>Hello</title>\n  <base href=\"/\">\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n  <link rel=\"icon\" type=\"image/x-icon\" href=\"favicon.ico\">\n</head>\n<body>\n  <app-root></app-root>\n</body>\n</html>\n"
  },
  {
    "path": "angular-universal/src/main.server.ts",
    "content": "import { enableProdMode } from '@angular/core';\n\nimport { environment } from './environments/environment';\n\nif (environment.production) {\n  enableProdMode();\n}\n\nexport { AppServerModule } from './app/app.server.module';\nexport { renderModule, renderModuleFactory } from '@angular/platform-server';\n"
  },
  {
    "path": "angular-universal/src/main.ts",
    "content": "import { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app/app.module';\nimport { environment } from './environments/environment';\n\nif (environment.production) {\n  enableProdMode();\n}\n\ndocument.addEventListener('DOMContentLoaded', () => {\n  platformBrowserDynamic().bootstrapModule(AppModule)\n  .catch(err => console.error(err));\n});\n"
  },
  {
    "path": "angular-universal/src/polyfills.ts",
    "content": "/**\n * This file includes polyfills needed by Angular and is loaded before the app.\n * You can add your own extra polyfills to this file.\n *\n * This file is divided into 2 sections:\n *   1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers.\n *   2. Application imports. Files imported after ZoneJS that should be loaded before your main\n *      file.\n *\n * The current setup is for so-called \"evergreen\" browsers; the last versions of browsers that\n * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera),\n * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile.\n *\n * Learn more in https://angular.io/guide/browser-support\n */\n\n/***************************************************************************************************\n * BROWSER POLYFILLS\n */\n\n/** IE10 and IE11 requires the following for NgClass support on SVG elements */\n// import 'classlist.js';  // Run `npm install --save classlist.js`.\n\n/**\n * Web Animations `@angular/platform-browser/animations`\n * Only required if AnimationBuilder is used within the application and using IE/Edge or Safari.\n * Standard animation support in Angular DOES NOT require any polyfills (as of Angular 6.0).\n */\n// import 'web-animations-js';  // Run `npm install --save web-animations-js`.\n\n/**\n * By default, zone.js will patch all possible macroTask and DomEvents\n * user can disable parts of macroTask/DomEvents patch by setting following flags\n * because those flags need to be set before `zone.js` being loaded, and webpack\n * will put import in the top of bundle, so user need to create a separate file\n * in this directory (for example: zone-flags.ts), and put the following flags\n * into that file, and then add the following code before importing zone.js.\n * import './zone-flags';\n *\n * The flags allowed in zone-flags.ts are listed here.\n *\n * The following flags will work for all browsers.\n *\n * (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame\n * (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick\n * (window as any).__zone_symbol__UNPATCHED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames\n *\n *  in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js\n *  with the following flag, it will bypass `zone.js` patch for IE/Edge\n *\n *  (window as any).__Zone_enable_cross_context_check = true;\n *\n */\n\n/***************************************************************************************************\n * Zone JS is required by default for Angular itself.\n */\nimport 'zone.js/dist/zone';  // Included with Angular CLI.\n\n\n/***************************************************************************************************\n * APPLICATION IMPORTS\n */\n"
  },
  {
    "path": "angular-universal/src/styles.css",
    "content": "/* You can add global styles to this file, and also import other style files */\n"
  },
  {
    "path": "angular-universal/tsconfig.app.json",
    "content": "{\n  \"extends\": \"./tsconfig.base.json\",\n  \"compilerOptions\": {\n    \"outDir\": \"./out-tsc/app\",\n    \"types\": []\n  },\n  \"files\": [\n    \"src/main.ts\",\n    \"src/polyfills.ts\"\n  ],\n  \"include\": [\n    \"src/**/*.d.ts\"\n  ]\n}\n"
  },
  {
    "path": "angular-universal/tsconfig.base.json",
    "content": "{\n  \"compileOnSave\": false,\n  \"compilerOptions\": {\n    \"baseUrl\": \"./\",\n    \"outDir\": \"./dist/out-tsc\",\n    \"sourceMap\": true,\n    \"declaration\": false,\n    \"downlevelIteration\": true,\n    \"experimentalDecorators\": true,\n    \"moduleResolution\": \"node\",\n    \"importHelpers\": true,\n    \"target\": \"es2015\",\n    \"module\": \"es2020\",\n    \"lib\": [\n      \"es2018\",\n      \"dom\"\n    ]\n  }\n}\n"
  },
  {
    "path": "angular-universal/tsconfig.json",
    "content": "// This is a \"Solution Style\" tsconfig.json file, and is used by editors and TypeScript’s language server to improve development experience.\n// It is not intended to be used to perform a compilation.\n{\n  \"files\": [],\n  \"references\": [\n    {\n      \"path\": \"./tsconfig.app.json\"\n    },\n    {\n      \"path\": \"./tsconfig.spec.json\"\n    },\n    {\n      \"path\": \"./tsconfig.server.json\"\n    }\n]\n}\n"
  },
  {
    "path": "angular-universal/tsconfig.server.json",
    "content": "{\n  \"extends\": \"./tsconfig.app.json\",\n  \"compilerOptions\": {\n    \"outDir\": \"./out-tsc/server\",\n    \"types\": [\n      \"node\"\n    ]\n  },\n  \"files\": [\n    \"src/main.server.ts\",\n    \"server.ts\"\n  ],\n  \"angularCompilerOptions\": {\n    \"entryModule\": \"./src/app/app.server.module#AppServerModule\"\n  }\n}\n"
  },
  {
    "path": "angularjs/index.html",
    "content": "<!DOCTYPE html>\n<html>\n\t<head>\n\t\t<title>Hello World | angular.js</title>\n\t\t<script src=\"angular.min.js\"></script>\n\t</head>\n\t<body ng-app=\"helloWorldApp\" ng-controller=\"helloWorldCtrl\">\n\t  <h1>{{::helloWorld}}</h1>\n\t</body>\n\t<script>\n\tvar app = angular.module('helloWorldApp', []);\n\tapp.controller('helloWorldCtrl', function($scope) {\n\t\t$scope.helloWorld= \"Hello World\";\n\t});\n\t</script>\n</html>"
  },
  {
    "path": "aurelia/.editorconfig",
    "content": "# EditorConfig is awesome: http://EditorConfig.org\n\n# top-most EditorConfig file\nroot = true\n\n# Unix-style newlines with a newline ending every file\n[*]\nend_of_line = lf\ninsert_final_newline = true\n# 2 space indentation\nindent_style = space\nindent_size = 2\n"
  },
  {
    "path": "aurelia/.gitignore",
    "content": "\n# You may want to customise this file depending on your Operating System\n# and the editor that you use.\n#\n# We recommend that you use a Global Gitignore for files that are not related\n# to the project. (https://help.github.com/articles/ignoring-files/#create-a-global-gitignore)\n\n# OS\n#\n# Ref: https://github.com/github/gitignore/blob/master/Global/macOS.gitignore\n# Ref: https://github.com/github/gitignore/blob/master/Global/Windows.gitignore\n# Ref: https://github.com/github/gitignore/blob/master/Global/Linux.gitignore\n.DS_STORE\nThumbs.db\n\n# Editors\n#\n# Ref: https://github.com/github/gitignore/blob/master/Global\n# Ref: https://github.com/github/gitignore/blob/master/Global/JetBrains.gitignore\n# Ref: https://github.com/github/gitignore/blob/master/Global/VisualStudioCode.gitignore\n.idea\n.vscode/*\n!.vscode/settings.json\n!.vscode/tasks.json\n!.vscode/launch.json\n!.vscode/extensions.json\n\n# Dependencies\nnode_modules\n\n# Compiled files\n/scripts\n/src/environment.js\n/src/environment.ts\n/dist\n/test/coverage-jest\n/test/coverage-karma\n"
  },
  {
    "path": "aurelia/README.md",
    "content": "# `aurelia`\n\nThis project is bootstrapped by [aurelia-cli](https://github.com/aurelia/cli).\n\nFor more information, go to https://aurelia.io/docs/cli/webpack\n\n## Run dev app\n\nRun `npm start`, then open `http://localhost:8080`\n\nYou can change the standard webpack configurations from CLI easily with something like this: `npm start -- --open --port 8888`. However, it is better to change the respective npm scripts or `webpack.config.js` with these options, as per your need.\n\nTo enable Webpack Bundle Analyzer, do `npm run analyze` (production build).\n\nTo enable hot module reload, do `npm start -- --hmr`.\n\nTo change dev server port, do `npm start -- --port 8888`.\n\nTo change dev server host, do `npm start -- --host 127.0.0.1`\n\n**PS:** You could mix all the flags as well, `npm start -- --host 127.0.0.1 --port 7070 --open --hmr`\n\nFor long time aurelia-cli user, you can still use `au run` with those arguments like `au run --env prod --open --hmr`. But `au run` now simply executes `npm start` command.\n\n## Build for production\n\nRun `npm run build`, or the old way `au build --env prod`.\n\n## Unit tests\n\nRun `au test` (or `au jest`).\n\nTo run in watch mode, `au test --watch` or `au jest --watch`.\n"
  },
  {
    "path": "aurelia/aurelia_project/aurelia.json",
    "content": "{\n  \"name\": \"aurelia\",\n  \"type\": \"project:application\",\n  \"paths\": {\n    \"root\": \"src\",\n    \"resources\": \"resources\",\n    \"elements\": \"resources/elements\",\n    \"attributes\": \"resources/attributes\",\n    \"valueConverters\": \"resources/value-converters\",\n    \"bindingBehaviors\": \"resources/binding-behaviors\"\n  },\n  \"transpiler\": {\n    \"id\": \"typescript\",\n    \"fileExtension\": \".ts\"\n  },\n  \"build\": {\n    \"options\": {\n      \"server\": \"dev\",\n      \"extractCss\": \"prod\",\n      \"coverage\": false\n    }\n  },\n  \"platform\": {\n    \"hmr\": false,\n    \"open\": false,\n    \"port\": 8080,\n    \"host\": \"localhost\",\n    \"output\": \"dist\"\n  },\n  \"packageManager\": \"npm\"\n}"
  },
  {
    "path": "aurelia/aurelia_project/generators/attribute.json",
    "content": "{\n  \"name\": \"attribute\",\n  \"description\": \"Creates a custom attribute class and places it in the project resources.\"\n}"
  },
  {
    "path": "aurelia/aurelia_project/generators/attribute.ts",
    "content": "import {inject} from 'aurelia-dependency-injection';\nimport {Project, ProjectItem, CLIOptions, UI} from 'aurelia-cli';\n\n@inject(Project, CLIOptions, UI)\nexport default class AttributeGenerator {\n  constructor(private project: Project, private options: CLIOptions, private ui: UI) { }\n\n  async execute() {\n    const name = await this.ui.ensureAnswer(\n      this.options.args[0],\n      'What would you like to call the custom attribute?'\n    );\n\n    let fileName = this.project.makeFileName(name);\n    let className = this.project.makeClassName(name);\n\n    this.project.attributes.add(\n      ProjectItem.text(`${fileName}.ts`, this.generateSource(className))\n    );\n\n    await this.project.commitChanges();\n    await this.ui.log(`Created ${fileName}.`);\n  }\n\n  generateSource(className) {\n    return `import {autoinject} from 'aurelia-framework';\n\n@autoinject()\nexport class ${className}CustomAttribute {\n  constructor(private element: Element) { }\n\n  valueChanged(newValue, oldValue) {\n    //\n  }\n}\n`;\n  }\n}\n"
  },
  {
    "path": "aurelia/aurelia_project/generators/binding-behavior.json",
    "content": "{\n  \"name\": \"binding-behavior\",\n  \"description\": \"Creates a binding behavior class and places it in the project resources.\"\n}"
  },
  {
    "path": "aurelia/aurelia_project/generators/binding-behavior.ts",
    "content": "import {inject} from 'aurelia-dependency-injection';\nimport {Project, ProjectItem, CLIOptions, UI} from 'aurelia-cli';\n\n@inject(Project, CLIOptions, UI)\nexport default class BindingBehaviorGenerator {\n  constructor(private project: Project, private options: CLIOptions, private ui: UI) { }\n\n  async execute() {\n    const name = await this.ui.ensureAnswer(\n      this.options.args[0],\n      'What would you like to call the binding behavior?'\n    );\n\n    let fileName = this.project.makeFileName(name);\n    let className = this.project.makeClassName(name);\n\n    this.project.bindingBehaviors.add(\n      ProjectItem.text(`${fileName}.ts`, this.generateSource(className))\n    );\n\n    await this.project.commitChanges();\n    await this.ui.log(`Created ${fileName}.`);\n  }\n\n  generateSource(className) {\n    return `export class ${className}BindingBehavior {\n  bind(binding, source) {\n    //\n  }\n\n  unbind(binding, source) {\n    //\n  }\n}\n`\n  }\n}\n"
  },
  {
    "path": "aurelia/aurelia_project/generators/component.json",
    "content": "{\n  \"name\": \"component\",\n  \"description\": \"Creates a custom component class and template (view model and view), placing them in the project source folder (or optionally in sub folders).\"\n}"
  },
  {
    "path": "aurelia/aurelia_project/generators/component.ts",
    "content": "import { inject } from 'aurelia-dependency-injection';\nimport { Project, ProjectItem, CLIOptions, UI } from 'aurelia-cli';\nimport * as path from 'path';\n\n@inject(Project, CLIOptions, UI)\nexport default class ElementGenerator {\n  constructor(private project: Project, private options: CLIOptions, private ui: UI) { }\n\n  async execute() {\n    const name = await this.ui.ensureAnswer(\n      this.options.args[0],\n      'What would you like to call the component?'\n    );\n\n    const subFolders = await this.ui.ensureAnswer(\n      this.options.args[1],\n      'What sub-folder would you like to add it to?\\nIf it doesn\\'t exist it will be created for you.\\n\\nDefault folder is the source folder (src).', \".\"\n    );\n\n    let fileName = this.project.makeFileName(name);\n    let className = this.project.makeClassName(name);\n\n    this.project.root.add(\n      ProjectItem.text(path.join(subFolders, fileName + '.ts'), this.generateJSSource(className)),\n      ProjectItem.text(path.join(subFolders, fileName + '.html'), this.generateHTMLSource(className))\n    );\n\n    await this.project.commitChanges();\n    await this.ui.log(`Created ${name} in the '${path.join(this.project.root.name, subFolders)}' folder`);\n  }\n\n  generateJSSource(className) {\n    return `export class ${className} {\n  message: string;\n\n  constructor() {\n    this.message = 'Hello world';\n  }\n}\n`\n  }\n\n  generateHTMLSource(className) {\n    return `<template>\n  <h1>\\${message}</h1>\n</template>\n`\n  }\n}\n"
  },
  {
    "path": "aurelia/aurelia_project/generators/element.json",
    "content": "{\n  \"name\": \"element\",\n  \"description\": \"Creates a custom element class and template, placing them in the project resources.\"\n}"
  },
  {
    "path": "aurelia/aurelia_project/generators/element.ts",
    "content": "import {inject} from 'aurelia-dependency-injection';\nimport {Project, ProjectItem, CLIOptions, UI} from 'aurelia-cli';\n\n@inject(Project, CLIOptions, UI)\nexport default class ElementGenerator {\n  constructor(private project: Project, private options: CLIOptions, private ui: UI) { }\n\n  async execute() {\n    const name = await this.ui.ensureAnswer(\n      this.options.args[0],\n      'What would you like to call the custom element?'\n    );\n\n    let fileName = this.project.makeFileName(name);\n    let className = this.project.makeClassName(name);\n\n    this.project.elements.add(\n      ProjectItem.text(`${fileName}.ts`, this.generateJSSource(className)),\n      ProjectItem.text(`${fileName}.html`, this.generateHTMLSource(className))\n    );\n\n    await this.project.commitChanges();\n    await this.ui.log(`Created ${fileName}.`);\n  }\n\n  generateJSSource(className) {\n    return `import {bindable} from 'aurelia-framework';\n\nexport class ${className} {\n  @bindable value;\n\n  valueChanged(newValue, oldValue) {\n    //\n  }\n}\n`;\n  }\n\n  generateHTMLSource(className) {\n    return `<template>\n  <h1>\\${value}</h1>\n</template>\n`;\n  }\n}\n"
  },
  {
    "path": "aurelia/aurelia_project/generators/generator.json",
    "content": "{\n  \"name\": \"generator\",\n  \"description\": \"Creates a generator class and places it in the project generators folder.\"\n}"
  },
  {
    "path": "aurelia/aurelia_project/generators/generator.ts",
    "content": "import {inject} from 'aurelia-dependency-injection';\nimport {Project, ProjectItem, CLIOptions, UI} from 'aurelia-cli';\n\n@inject(Project, CLIOptions, UI)\nexport default class GeneratorGenerator {\n  constructor(private project: Project, private options: CLIOptions, private ui: UI) { }\n\n  async execute() {\n    const name = await this.ui.ensureAnswer(\n      this.options.args[0],\n      'What would you like to call the generator?'\n    );\n\n    let fileName = this.project.makeFileName(name);\n    let className = this.project.makeClassName(name);\n\n    this.project.generators.add(\n      ProjectItem.text(`${fileName}.ts`, this.generateSource(className))\n    );\n\n    await this.project.commitChanges()\n    await this.ui.log(`Created ${fileName}.`);\n  }\n\n  generateSource(className) {\n    return `import {inject} from 'aurelia-dependency-injection';\nimport {Project, ProjectItem, CLIOptions, UI} from 'aurelia-cli';\n\n@inject(Project, CLIOptions, UI)\nexport default class ${className}Generator {\n  constructor(project, options, ui) {\n    this.project = project;\n    this.options = options;\n    this.ui = ui;\n  }\n\n  execute() {\n    return this.ui\n      .ensureAnswer(this.options.args[0], 'What would you like to call the new item?')\n      .then(name => {\n        let fileName = this.project.makeFileName(name);\n        let className = this.project.makeClassName(name);\n\n        this.project.elements.add(\n          ProjectItem.text(\\`\\${fileName}.ts\\`, this.generateSource(className))\n        );\n\n        return this.project.commitChanges()\n          .then(() => this.ui.log(\\`Created \\${fileName}.\\`));\n      });\n  }\n\n  generateSource(className) {\nreturn \\`import {bindable} from 'aurelia-framework';\n\nexport class \\${className} {\n  @bindable value;\n\n  valueChanged(newValue, oldValue) {\n    //\n  }\n}\n\\`\n  }\n}\n`;\n  }\n}\n"
  },
  {
    "path": "aurelia/aurelia_project/generators/task.json",
    "content": "{\n  \"name\": \"task\",\n  \"description\": \"Creates a task and places it in the project tasks folder.\"\n}"
  },
  {
    "path": "aurelia/aurelia_project/generators/task.ts",
    "content": "import {inject} from 'aurelia-dependency-injection';\nimport {Project, ProjectItem, CLIOptions, UI} from 'aurelia-cli';\n\n@inject(Project, CLIOptions, UI)\nexport default class TaskGenerator {\n  constructor(private project: Project, private options: CLIOptions, private ui: UI) { }\n\n  async execute() {\n    const name = await this.ui.ensureAnswer(\n      this.options.args[0],\n      'What would you like to call the task?'\n    );\n\n    let fileName = this.project.makeFileName(name);\n    let functionName = this.project.makeFunctionName(name);\n\n    this.project.tasks.add(\n      ProjectItem.text(`${fileName}.ts`, this.generateSource(functionName))\n    );\n\n    await this.project.commitChanges();\n    await this.ui.log(`Created ${fileName}.`);\n  }\n\n  generateSource(functionName) {\n    return `import * as gulp from 'gulp';\nimport * as project from '../aurelia.json';\n\nexport default function ${functionName}() {\n  return gulp.src(project.paths.???)\n    .pipe(gulp.dest(project.paths.output));\n}\n`;\n\n  }\n}\n"
  },
  {
    "path": "aurelia/aurelia_project/generators/value-converter.json",
    "content": "{\n  \"name\": \"value-converter\",\n  \"description\": \"Creates a value converter class and places it in the project resources.\"\n}"
  },
  {
    "path": "aurelia/aurelia_project/generators/value-converter.ts",
    "content": "import {inject} from 'aurelia-dependency-injection';\nimport {Project, ProjectItem, CLIOptions, UI} from 'aurelia-cli';\n\n@inject(Project, CLIOptions, UI)\nexport default class ValueConverterGenerator {\n  constructor(private project: Project, private options: CLIOptions, private ui: UI) { }\n\n  async execute() {\n    const name = await this.ui.ensureAnswer(\n      this.options.args[0],\n      'What would you like to call the value converter?'\n    );\n\n    let fileName = this.project.makeFileName(name);\n    let className = this.project.makeClassName(name);\n\n    this.project.valueConverters.add(\n      ProjectItem.text(`${fileName}.ts`, this.generateSource(className))\n    );\n\n    await this.project.commitChanges();\n    await this.ui.log(`Created ${fileName}.`);\n  }\n\n  generateSource(className) {\n    return `export class ${className}ValueConverter {\n  toView(value) {\n    //\n  }\n\n  fromView(value) {\n    //\n  }\n}\n`;\n  }\n}\n"
  },
  {
    "path": "aurelia/aurelia_project/tasks/build.json",
    "content": "{\n  \"name\": \"build\",\n  \"description\": \"Builds and processes all application assets. It is an alias of the `npm run build:dev`, you may use either of those; see README for more details.\",\n  \"flags\": [\n    {\n      \"name\": \"analyze\",\n      \"description\": \"Enable Webpack Bundle Analyzer. Typically paired with --env prod\",\n      \"type\": \"boolean\"\n    },\n    {\n      \"name\": \"env\",\n      \"description\": \"Sets the build environment.\",\n      \"type\": \"string\"\n    },\n    {\n      \"name\": \"watch\",\n      \"description\": \"Watches source files for changes and refreshes the bundles automatically.\",\n      \"type\": \"boolean\"\n    }\n  ]\n}"
  },
  {
    "path": "aurelia/aurelia_project/tasks/build.ts",
    "content": "import { NPM } from 'aurelia-cli';\n\nexport default function() {\n  console.log('`au build` is an alias of the `npm run build:dev`, you may use either of those; see README for more details.');\n  const args = process.argv.slice(3);\n  return (new NPM()).run('run', ['build:dev', '--', ... cleanArgs(args)]);\n}\n\n// Cleanup --env prod to --env.production\n// for backwards compatibility\nfunction cleanArgs(args) {\n  const cleaned = [];\n  for (let i = 0, ii = args.length; i < ii; i++) {\n    if (args[i] === '--env' && i < ii - 1) {\n      const env = args[++i].toLowerCase();\n      if (env.startsWith('prod')) {\n        cleaned.push('--env.production');\n      } else if (env.startsWith('test')) {\n        cleaned.push('--tests');\n      }\n    } else {\n      cleaned.push(args[i]);\n    }\n  }\n  return cleaned;\n}\n"
  },
  {
    "path": "aurelia/aurelia_project/tasks/jest.json",
    "content": "{\n  \"name\": \"jest\",\n  \"description\": \"Runs Jest and reports the results.\",\n  \"flags\": [\n    {\n      \"name\": \"watch\",\n      \"description\": \"Watches test files for changes and re-runs the tests automatically.\",\n      \"type\": \"boolean\"\n    }\n  ]\n}"
  },
  {
    "path": "aurelia/aurelia_project/tasks/jest.ts",
    "content": "export {default} from './test';\n"
  },
  {
    "path": "aurelia/aurelia_project/tasks/run.json",
    "content": "{\n  \"name\": \"run\",\n  \"description\": \"Builds the application and serves up the assets via a local web server, watching files for changes as you work. It is an alias of the `npm start`, you may use either of those; see README for more details.\",\n  \"flags\": [\n    {\n      \"name\": \"analyze\",\n      \"description\": \"Enable Webpack Bundle Analyzer. Typically paired with --env prod\",\n      \"type\": \"boolean\"\n    },\n    {\n      \"name\": \"env\",\n      \"description\": \"Sets the build environment.\",\n      \"type\": \"string\"\n    },\n    {\n      \"name\": \"hmr\",\n      \"description\": \"Enable Hot Module Reload\",\n      \"type\": \"boolean\"\n    },\n    {\n      \"name\": \"port\",\n      \"description\": \"Set port number of the dev server\",\n      \"type\": \"string\"\n    },\n    {\n      \"name\": \"host\",\n      \"description\": \"Set host address of the dev server, the accessible URL\",\n      \"type\": \"string\"\n    },\n    {\n      \"name\": \"open\",\n      \"description\": \"Open the default browser at the application location.\",\n      \"type\": \"boolean\"\n    }\n  ]\n}"
  },
  {
    "path": "aurelia/aurelia_project/tasks/run.ts",
    "content": "import { NPM } from 'aurelia-cli';\nimport * as kill from 'tree-kill';\nimport { platform } from '../aurelia.json';\n\nconst npm =  new NPM();\n\nfunction run() {\n  console.log('`au run` is an alias of the `npm start`, you may use either of those; see README for more details.');\n  const args = process.argv.slice(3);\n  return npm.run('start', ['--', ... cleanArgs(args)]);\n}\n\n// Cleanup --env prod to --env.production\n// for backwards compatibility\nfunction cleanArgs(args) {\n  let host;\n  const cleaned = [];\n\n  for (let i = 0, ii = args.length; i < ii; i++) {\n    if (args[i] === '--env' && i < ii - 1) {\n      const env = args[++i].toLowerCase();\n      if (env.startsWith('prod')) {\n        cleaned.push('--env.production');\n      } else if (env.startsWith('test')) {\n        cleaned.push('--tests');\n      }\n    } else if (args[i] === '--host' && i < ii -1) {\n      host = args[++i];\n    } else {\n      cleaned.push(args[i]);\n    }\n  }\n\n  // Deal with --host before webpack-dev-server calls webpack config.\n  // Because of https://discourse.aurelia.io/t/changing-platform-host-in-aurelia-json-doesnt-change-the-host-ip/3043/10?u=huochunpeng\n  if (!host) host = platform.host;\n  if (host) cleaned.push('--host', host);\n  return cleaned;\n}\n\nconst shutdownAppServer = () => {\n  if (npm && npm.proc) {\n    kill(npm.proc.pid);\n  }\n};\n\nexport { run as default, shutdownAppServer };\n"
  },
  {
    "path": "aurelia/aurelia_project/tasks/test.json",
    "content": "{\n  \"name\": \"test\",\n  \"description\": \"Runs Jest and reports the results.\",\n  \"flags\": [\n    {\n      \"name\": \"watch\",\n      \"description\": \"Watches test files for changes and re-runs the tests automatically.\",\n      \"type\": \"boolean\"\n    }\n  ]\n}"
  },
  {
    "path": "aurelia/aurelia_project/tasks/test.ts",
    "content": "import { runCLI } from '@jest/core';\nimport * as path from 'path';\nimport * as packageJson from '../../package.json';\n\nimport { CLIOptions } from 'aurelia-cli';\n\nexport default (cb) => {\n  let options = packageJson.jest;\n\n  if (CLIOptions.hasFlag('watch')) {\n    Object.assign(options, { watchAll: true});\n  }\n\n\n  runCLI(options, [path.resolve(__dirname, '../../')]).then(({ results }) => {\n    if (results.numFailedTests || results.numFailedTestSuites) {\n      cb('Tests Failed');\n    } else {\n      cb();\n    }\n  });\n};\n"
  },
  {
    "path": "aurelia/config/environment.json",
    "content": "{\n  \"debug\": true,\n  \"testing\": true\n}"
  },
  {
    "path": "aurelia/config/environment.production.json",
    "content": "{\n  \"debug\": false,\n  \"testing\": false\n}"
  },
  {
    "path": "aurelia/index.ejs",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <meta charset=\"utf-8\">\n    <title><%- htmlWebpackPlugin.options.metadata.title %></title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n    <base href=\"<%- htmlWebpackPlugin.options.metadata.baseUrl %>\">\n    <!-- imported CSS are concatenated and added automatically -->\n  </head>\n  <body aurelia-app=\"main\">\n  </body>\n</html>\n"
  },
  {
    "path": "aurelia/package.json",
    "content": "{\n  \"name\": \"aurelia\",\n  \"description\": \"An Aurelia client application.\",\n  \"version\": \"0.1.0\",\n  \"repository\": {\n    \"type\": \"???\",\n    \"url\": \"???\"\n  },\n  \"license\": \"MIT\",\n  \"dependencies\": {\n    \"aurelia-bootstrapper\": \"^2.3.3\",\n    \"aurelia-animator-css\": \"^1.0.4\"\n  },\n  \"devDependencies\": {\n    \"aurelia-cli\": \"^1.3.1\",\n    \"gulp\": \"^4.0.0\",\n    \"minimatch\": \"^3.0.4\",\n    \"through2\": \"^3.0.1\",\n    \"vinyl-fs\": \"^3.0.3\",\n    \"promise-polyfill\": \"^8.1.3\",\n    \"ts-loader\": \"^6.2.1\",\n    \"ts-node\": \"^8.6.2\",\n    \"@types/node\": \"^13.7.6\",\n    \"@types/lodash\": \"^4.14.149\",\n    \"@types/webpack\": \"^4.41.6\",\n    \"typescript\": \"^3.8.2\",\n    \"html-webpack-plugin\": \"^3.2.0\",\n    \"copy-webpack-plugin\": \"^5.1.1\",\n    \"mini-css-extract-plugin\": \"^0.9.0\",\n    \"aurelia-webpack-plugin\": \"^4.0.0\",\n    \"duplicate-package-checker-webpack-plugin\": \"^3.0.0\",\n    \"clean-webpack-plugin\": \"^3.0.0\",\n    \"webpack\": \"^4.41.6\",\n    \"webpack-cli\": \"^3.3.11\",\n    \"webpack-dev-server\": \"^3.10.3\",\n    \"expose-loader\": \"^0.7.5\",\n    \"style-loader\": \"^1.1.3\",\n    \"url-loader\": \"^3.0.0\",\n    \"css-loader\": \"^3.4.2\",\n    \"file-loader\": \"^5.1.0\",\n    \"app-settings-loader\": \"^1.0.3\",\n    \"json-loader\": \"^0.5.7\",\n    \"html-loader\": \"^0.5.5\",\n    \"webpack-bundle-analyzer\": \"^3.6.0\",\n    \"tree-kill\": \"^1.2.1\",\n    \"aurelia-loader-nodejs\": \"^1.1.0\",\n    \"aurelia-pal-nodejs\": \"^2.0.0\"\n  },\n  \"scripts\": {\n    \"build\": \"webpack --env.production --extractCss\",\n    \"start\": \"webpack-dev-server --extractCss\",\n    \"build:dev\": \"webpack --extractCss\",\n    \"analyze\": \"webpack --env.production --analyze\"\n  },\n  \"engines\": {\n    \"node\": \">=8.9.0\"\n  }\n}\n"
  },
  {
    "path": "aurelia/src/app.html",
    "content": "<template>\n  <h1>${message}</h1>\n</template>\n"
  },
  {
    "path": "aurelia/src/app.ts",
    "content": "export class App {\n  public message: string = 'Hello World!';\n}\n"
  },
  {
    "path": "aurelia/src/main.ts",
    "content": "import {Aurelia} from 'aurelia-framework';\nimport * as environment from '../config/environment.json';\nimport {PLATFORM} from 'aurelia-pal';\n\nexport function configure(aurelia: Aurelia) {\n  aurelia.use\n    .standardConfiguration()\n    .feature(PLATFORM.moduleName('resources/index'));\n\n  aurelia.use.developmentLogging(environment.debug ? 'debug' : 'warn');\n\n  aurelia.start().then(() => aurelia.setRoot(PLATFORM.moduleName('app')));\n}\n"
  },
  {
    "path": "aurelia/src/resources/index.ts",
    "content": "import {FrameworkConfiguration} from 'aurelia-framework';\n\nexport function configure(config: FrameworkConfiguration) {\n  //config.globalResources([]);\n}\n"
  },
  {
    "path": "aurelia/tsconfig.json",
    "content": "{\n  \"compileOnSave\": false,\n  \"compilerOptions\": {\n    \"module\": \"esnext\",\n    \"skipLibCheck\": true,\n    \"typeRoots\": [\n      \"./node_modules/@types\"\n    ],\n    \"removeComments\": true,\n    \"emitDecoratorMetadata\": true,\n    \"experimentalDecorators\": true,\n    \"sourceMap\": true,\n    \"target\": \"es5\",\n    \"lib\": [\n      \"es2015\",\n      \"dom\"\n    ],\n    \"moduleResolution\": \"node\",\n    \"baseUrl\": \"src\",\n    \"resolveJsonModule\": true,\n    \"allowJs\": true\n  },\n  \"include\": [\n    \"./src/**/*.ts\",\n    \"./test/**/*.ts\",\n    \"./types/**/*.d.ts\"\n  ],\n  \"atom\": {\n    \"rewriteTsconfig\": false\n  }\n}"
  },
  {
    "path": "aurelia/tslint.json",
    "content": "{\n  \"rules\": {\n    \"no-empty\": true\n  }\n}"
  },
  {
    "path": "aurelia/types/fetch.d.ts",
    "content": "declare module \"isomorphic-fetch\" {\n  export = fetch;\n}\n"
  },
  {
    "path": "aurelia/types/system.d.ts",
    "content": "declare module 'system' {\n  import fetch = require('isomorphic-fetch');\n  import * as Aurelia from 'aurelia-framework';\n\n  /*\n   * List your dynamically imported modules to get typing support\n   */\n  interface System {\n    import(name: string): Promise<any>;\n    import(name: 'aurelia-framework'): Promise<typeof Aurelia>;\n    import(name: 'isomorphic-fetch'): Promise<typeof fetch>;\n  }\n\n  global {\n    var System: System;\n  }\n}\n"
  },
  {
    "path": "aurelia/webpack.config.js",
    "content": "const path = require('path');\nconst HtmlWebpackPlugin = require('html-webpack-plugin');\nconst CopyWebpackPlugin = require('copy-webpack-plugin');\nconst MiniCssExtractPlugin = require('mini-css-extract-plugin');\nconst DuplicatePackageCheckerPlugin = require('duplicate-package-checker-webpack-plugin');\nconst project = require('./aurelia_project/aurelia.json');\nconst { AureliaPlugin, ModuleDependenciesPlugin } = require('aurelia-webpack-plugin');\nconst { BundleAnalyzerPlugin } = require('webpack-bundle-analyzer');\nconst { CleanWebpackPlugin } = require('clean-webpack-plugin');\n\n// config helpers:\nconst ensureArray = (config) => config && (Array.isArray(config) ? config : [config]) || [];\nconst when = (condition, config, negativeConfig) =>\n  condition ? ensureArray(config) : ensureArray(negativeConfig);\n\n// primary config:\nconst title = 'Aurelia Navigation Skeleton';\nconst outDir = path.resolve(__dirname, project.platform.output);\nconst srcDir = path.resolve(__dirname, 'src');\nconst nodeModulesDir = path.resolve(__dirname, 'node_modules');\nconst baseUrl = '/';\n\nconst cssRules = [\n  { loader: 'css-loader' },\n];\n\n\nmodule.exports = ({ production } = {}, {extractCss, analyze, tests, hmr, port, host } = {}) => ({\n  resolve: {\n    extensions: ['.ts', '.js'],\n    modules: [srcDir, 'node_modules'],\n\n    alias: {\n      // https://github.com/aurelia/dialog/issues/387\n      // Uncomment next line if you had trouble to run aurelia-dialog on IE11\n      // 'aurelia-dialog': path.resolve(__dirname, 'node_modules/aurelia-dialog/dist/umd/aurelia-dialog.js'),\n\n      // https://github.com/aurelia/binding/issues/702\n      // Enforce single aurelia-binding, to avoid v1/v2 duplication due to\n      // out-of-date dependencies on 3rd party aurelia plugins\n      'aurelia-binding': path.resolve(__dirname, 'node_modules/aurelia-binding')\n    }\n  },\n  entry: {\n    app: [\n      // Uncomment next line if you need to support IE11\n      // 'promise-polyfill/src/polyfill',\n      'aurelia-bootstrapper'\n    ]\n  },\n  mode: production ? 'production' : 'development',\n  output: {\n    path: outDir,\n    publicPath: baseUrl,\n    filename: production ? '[name].[chunkhash].bundle.js' : '[name].[hash].bundle.js',\n    sourceMapFilename: production ? '[name].[chunkhash].bundle.map' : '[name].[hash].bundle.map',\n    chunkFilename: production ? '[name].[chunkhash].chunk.js' : '[name].[hash].chunk.js'\n  },\n  optimization: {\n    runtimeChunk: true,  // separates the runtime chunk, required for long term cacheability\n    // moduleIds is the replacement for HashedModuleIdsPlugin and NamedModulesPlugin deprecated in https://github.com/webpack/webpack/releases/tag/v4.16.0\n    // changes module id's to use hashes be based on the relative path of the module, required for long term cacheability\n    moduleIds: 'hashed',\n    // Use splitChunks to breakdown the App/Aurelia bundle down into smaller chunks\n    // https://webpack.js.org/plugins/split-chunks-plugin/\n    splitChunks: {\n      hidePathInfo: true, // prevents the path from being used in the filename when using maxSize\n      chunks: \"initial\",\n      // sizes are compared against source before minification\n      maxSize: 200000, // splits chunks if bigger than 200k, adjust as required (maxSize added in webpack v4.15)\n      cacheGroups: {\n        default: false, // Disable the built-in groups default & vendors (vendors is redefined below)\n        // You can insert additional cacheGroup entries here if you want to split out specific modules\n        // This is required in order to split out vendor css from the app css when using --extractCss\n        // For example to separate font-awesome and bootstrap:\n        // fontawesome: { // separates font-awesome css from the app css (font-awesome is only css/fonts)\n        //   name: 'vendor.font-awesome',\n        //   test:  /[\\\\/]node_modules[\\\\/]font-awesome[\\\\/]/,\n        //   priority: 100,\n        //   enforce: true\n        // },\n        // bootstrap: { // separates bootstrap js from vendors and also bootstrap css from app css\n        //   name: 'vendor.font-awesome',\n        //   test:  /[\\\\/]node_modules[\\\\/]bootstrap[\\\\/]/,\n        //   priority: 90,\n        //   enforce: true\n        // },\n\n        // This is the HTTP/1.1 optimised cacheGroup configuration\n        vendors: { // picks up everything from node_modules as long as the sum of node modules is larger than minSize\n          test: /[\\\\/]node_modules[\\\\/]/,\n          name: 'vendors',\n          priority: 19,\n          enforce: true, // causes maxInitialRequests to be ignored, minSize still respected if specified in cacheGroup\n          minSize: 30000 // use the default minSize\n        },\n        vendorsAsync: { // vendors async chunk, remaining asynchronously used node modules as single chunk file\n          test: /[\\\\/]node_modules[\\\\/]/,\n          name: 'vendors.async',\n          chunks: 'async',\n          priority: 9,\n          reuseExistingChunk: true,\n          minSize: 10000  // use smaller minSize to avoid too much potential bundle bloat due to module duplication.\n        },\n        commonsAsync: { // commons async chunk, remaining asynchronously used modules as single chunk file\n          name: 'commons.async',\n          minChunks: 2, // Minimum number of chunks that must share a module before splitting\n          chunks: 'async',\n          priority: 0,\n          reuseExistingChunk: true,\n          minSize: 10000  // use smaller minSize to avoid too much potential bundle bloat due to module duplication.\n        }\n      }\n    }\n  },\n  performance: { hints: false },\n  devServer: {\n    contentBase: outDir,\n    // serve index.html for all 404 (required for push-state)\n    historyApiFallback: true,\n    hot: hmr || project.platform.hmr,\n    port: port || project.platform.port,\n    host: host\n  },\n  devtool: production ? 'nosources-source-map' : 'cheap-module-eval-source-map',\n  module: {\n    rules: [\n      // CSS required in JS/TS files should use the style-loader that auto-injects it into the website\n      // only when the issuer is a .js/.ts file, so the loaders are not applied inside html templates\n      {\n        test: /\\.css$/i,\n        issuer: [{ not: [{ test: /\\.html$/i }] }],\n        use: extractCss ? [{\n          loader: MiniCssExtractPlugin.loader\n        }, ...cssRules\n        ] : ['style-loader', ...cssRules]\n      },\n      {\n        test: /\\.css$/i,\n        issuer: [{ test: /\\.html$/i }],\n        // CSS required in templates cannot be extracted safely\n        // because Aurelia would try to require it again in runtime\n        use: cssRules\n      },\n      { test: /\\.html$/i, loader: 'html-loader' },\n      { test: /\\.ts$/, loader: \"ts-loader\" },\n      // embed small images and fonts as Data Urls and larger ones as files:\n      { test: /\\.(png|gif|jpg|cur)$/i, loader: 'url-loader', options: { limit: 8192 } },\n      { test: /\\.woff2(\\?v=[0-9]\\.[0-9]\\.[0-9])?$/i, loader: 'url-loader', options: { limit: 10000, mimetype: 'application/font-woff2' } },\n      { test: /\\.woff(\\?v=[0-9]\\.[0-9]\\.[0-9])?$/i, loader: 'url-loader', options: { limit: 10000, mimetype: 'application/font-woff' } },\n      // load these fonts normally, as files:\n      { test: /\\.(ttf|eot|svg|otf)(\\?v=[0-9]\\.[0-9]\\.[0-9])?$/i, loader: 'file-loader' },\n      { test: /environment\\.json$/i, use: [\n        {loader: \"app-settings-loader\", options: {env: production ? 'production' : 'development' }},\n      ]},\n      ...when(tests, {\n        test: /\\.[jt]s$/i, loader: 'istanbul-instrumenter-loader',\n        include: srcDir, exclude: [/\\.(spec|test)\\.[jt]s$/i],\n        enforce: 'post', options: { esModules: true },\n      })\n    ]\n  },\n  plugins: [\n    ...when(!tests, new DuplicatePackageCheckerPlugin()),\n    new AureliaPlugin(),\n    new ModuleDependenciesPlugin({\n    }),\n    new HtmlWebpackPlugin({\n      template: 'index.ejs',\n      metadata: {\n        // available in index.ejs //\n        title, baseUrl\n      }\n    }),\n    // ref: https://webpack.js.org/plugins/mini-css-extract-plugin/\n    ...when(extractCss, new MiniCssExtractPlugin({ // updated to match the naming conventions for the js files\n      filename: production ? 'css/[name].[contenthash].bundle.css' : 'css/[name].[hash].bundle.css',\n      chunkFilename: production ? 'css/[name].[contenthash].chunk.css' : 'css/[name].[hash].chunk.css'\n    })),\n    ...when(!tests, new CopyWebpackPlugin([\n      { from: 'static', to: outDir, ignore: ['.*'] }])), // ignore dot (hidden) files\n    ...when(analyze, new BundleAnalyzerPlugin()),\n    /**\n     * Note that the usage of following plugin cleans the webpack output directory before build.\n     * In case you want to generate any file in the output path as a part of pre-build step, this plugin will likely\n     * remove those before the webpack build. In that case consider disabling the plugin, and instead use something like\n     * `del` (https://www.npmjs.com/package/del), or `rimraf` (https://www.npmjs.com/package/rimraf).\n     */\n    new CleanWebpackPlugin()\n  ]\n});\n"
  },
  {
    "path": "babylonjs/index.html",
    "content": "<html>\n\n    <head>\n        <script src=\"https://cdn.babylonjs.com/babylon.js\"></script>\n        <meta charset=\"UTF-8\" />\n        <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n        <title>Hello Babylon.js</title>\n        <meta name=\"author\" content=\"Ayşegül Yönet\">\n        <style>\n            body,\n            #renderCanvas {\n                width: 100%;\n                height: 100%;\n                margin: 0;\n            }\n        </style>\n    </head>\n\n    <body>\n        <canvas id=\"renderCanvas\"></canvas>\n        <script>\n            const canvas = document.getElementById( \"renderCanvas\" );\n            const engine = new BABYLON.Engine( canvas, true );\n\n            const createScene = function () {\n                const scene = new BABYLON.Scene( engine );\n\n                const camera = new BABYLON.ArcRotateCamera( \"camera\", -Math.PI / 2, Math.PI / 2.5, 3, new BABYLON\n                    .Vector3( 0, 0, 0 ) );\n\n                camera.attachControl( canvas, true );\n\n                const light = new BABYLON.HemisphericLight( \"light\", new BABYLON.Vector3( 0, 1, 0 ) );\n\n                const box = BABYLON.MeshBuilder.CreateBox( \"box\", {} );\n\n                return scene;\n            };\n\n            const sceneToRender = createScene();\n            engine.runRenderLoop( function () {\n                sceneToRender.render();\n            } );\n        </script>\n    </body>\n\n</html>"
  },
  {
    "path": "backbone/README.md",
    "content": "# Project\n\nHello World app for Backbone.js\n\n## Getting Started\n\nOpen the index.html to see Hello World in action\n"
  },
  {
    "path": "backbone/index.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>Backbone.js - Hello World</title>\n</head>\n<body>\n    <div id=\"app\"></div>\n\n    <script src=\"libs/jquery-3.5.1.min.js\"></script>\n    <script src=\"libs/underscore-min.js\"></script>\n    <script src=\"libs/backbone-min.js\"></script>\n    <script src=\"index.js\"></script>\n</body>\n</html>"
  },
  {
    "path": "backbone/index.js",
    "content": "(function ($) {\n    var WorldModel = Backbone.Model.extend({\n        defaults: {\n            name: '',\n        }\n    });\n    var world = new WorldModel({\n        name: 'World.'\n    });\n\n    var Hello = Backbone.View.extend({\n        el: '#app',\n\n        render: function () {\n            $(this.el).html(`Hello ${this.model.get('name')}`);\n        }\n    });\n\n    var view = new Hello({model: world});\n    view.render();\n})(jQuery);\n"
  },
  {
    "path": "backbone/libs/backbone-min.js",
    "content": "(function(t){var e=typeof self==\"object\"&&self.self===self&&self||typeof global==\"object\"&&global.global===global&&global;if(typeof define===\"function\"&&define.amd){define([\"underscore\",\"jquery\",\"exports\"],function(i,n,r){e.Backbone=t(e,r,i,n)})}else if(typeof exports!==\"undefined\"){var i=require(\"underscore\"),n;try{n=require(\"jquery\")}catch(r){}t(e,exports,i,n)}else{e.Backbone=t(e,{},e._,e.jQuery||e.Zepto||e.ender||e.$)}})(function(t,e,i,n){var r=t.Backbone;var s=Array.prototype.slice;e.VERSION=\"1.4.0\";e.$=n;e.noConflict=function(){t.Backbone=r;return this};e.emulateHTTP=false;e.emulateJSON=false;var a=e.Events={};var o=/\\s+/;var h;var u=function(t,e,n,r,s){var a=0,h;if(n&&typeof n===\"object\"){if(r!==void 0&&\"context\"in s&&s.context===void 0)s.context=r;for(h=i.keys(n);a<h.length;a++){e=u(t,e,h[a],n[h[a]],s)}}else if(n&&o.test(n)){for(h=n.split(o);a<h.length;a++){e=t(e,h[a],r,s)}}else{e=t(e,n,r,s)}return e};a.on=function(t,e,i){this._events=u(l,this._events||{},t,e,{context:i,ctx:this,listening:h});if(h){var n=this._listeners||(this._listeners={});n[h.id]=h;h.interop=false}return this};a.listenTo=function(t,e,n){if(!t)return this;var r=t._listenId||(t._listenId=i.uniqueId(\"l\"));var s=this._listeningTo||(this._listeningTo={});var a=h=s[r];if(!a){this._listenId||(this._listenId=i.uniqueId(\"l\"));a=h=s[r]=new g(this,t)}var o=c(t,e,n,this);h=void 0;if(o)throw o;if(a.interop)a.on(e,n);return this};var l=function(t,e,i,n){if(i){var r=t[e]||(t[e]=[]);var s=n.context,a=n.ctx,o=n.listening;if(o)o.count++;r.push({callback:i,context:s,ctx:s||a,listening:o})}return t};var c=function(t,e,i,n){try{t.on(e,i,n)}catch(r){return r}};a.off=function(t,e,i){if(!this._events)return this;this._events=u(f,this._events,t,e,{context:i,listeners:this._listeners});return this};a.stopListening=function(t,e,n){var r=this._listeningTo;if(!r)return this;var s=t?[t._listenId]:i.keys(r);for(var a=0;a<s.length;a++){var o=r[s[a]];if(!o)break;o.obj.off(e,n,this);if(o.interop)o.off(e,n)}if(i.isEmpty(r))this._listeningTo=void 0;return this};var f=function(t,e,n,r){if(!t)return;var s=r.context,a=r.listeners;var o=0,h;if(!e&&!s&&!n){for(h=i.keys(a);o<h.length;o++){a[h[o]].cleanup()}return}h=e?[e]:i.keys(t);for(;o<h.length;o++){e=h[o];var u=t[e];if(!u)break;var l=[];for(var c=0;c<u.length;c++){var f=u[c];if(n&&n!==f.callback&&n!==f.callback._callback||s&&s!==f.context){l.push(f)}else{var d=f.listening;if(d)d.off(e,n)}}if(l.length){t[e]=l}else{delete t[e]}}return t};a.once=function(t,e,i){var n=u(d,{},t,e,this.off.bind(this));if(typeof t===\"string\"&&i==null)e=void 0;return this.on(n,e,i)};a.listenToOnce=function(t,e,i){var n=u(d,{},e,i,this.stopListening.bind(this,t));return this.listenTo(t,n)};var d=function(t,e,n,r){if(n){var s=t[e]=i.once(function(){r(e,s);n.apply(this,arguments)});s._callback=n}return t};a.trigger=function(t){if(!this._events)return this;var e=Math.max(0,arguments.length-1);var i=Array(e);for(var n=0;n<e;n++)i[n]=arguments[n+1];u(v,this._events,t,void 0,i);return this};var v=function(t,e,i,n){if(t){var r=t[e];var s=t.all;if(r&&s)s=s.slice();if(r)p(r,n);if(s)p(s,[e].concat(n))}return t};var p=function(t,e){var i,n=-1,r=t.length,s=e[0],a=e[1],o=e[2];switch(e.length){case 0:while(++n<r)(i=t[n]).callback.call(i.ctx);return;case 1:while(++n<r)(i=t[n]).callback.call(i.ctx,s);return;case 2:while(++n<r)(i=t[n]).callback.call(i.ctx,s,a);return;case 3:while(++n<r)(i=t[n]).callback.call(i.ctx,s,a,o);return;default:while(++n<r)(i=t[n]).callback.apply(i.ctx,e);return}};var g=function(t,e){this.id=t._listenId;this.listener=t;this.obj=e;this.interop=true;this.count=0;this._events=void 0};g.prototype.on=a.on;g.prototype.off=function(t,e){var i;if(this.interop){this._events=u(f,this._events,t,e,{context:void 0,listeners:void 0});i=!this._events}else{this.count--;i=this.count===0}if(i)this.cleanup()};g.prototype.cleanup=function(){delete this.listener._listeningTo[this.obj._listenId];if(!this.interop)delete this.obj._listeners[this.id]};a.bind=a.on;a.unbind=a.off;i.extend(e,a);var m=e.Model=function(t,e){var n=t||{};e||(e={});this.preinitialize.apply(this,arguments);this.cid=i.uniqueId(this.cidPrefix);this.attributes={};if(e.collection)this.collection=e.collection;if(e.parse)n=this.parse(n,e)||{};var r=i.result(this,\"defaults\");n=i.defaults(i.extend({},r,n),r);this.set(n,e);this.changed={};this.initialize.apply(this,arguments)};i.extend(m.prototype,a,{changed:null,validationError:null,idAttribute:\"id\",cidPrefix:\"c\",preinitialize:function(){},initialize:function(){},toJSON:function(t){return i.clone(this.attributes)},sync:function(){return e.sync.apply(this,arguments)},get:function(t){return this.attributes[t]},escape:function(t){return i.escape(this.get(t))},has:function(t){return this.get(t)!=null},matches:function(t){return!!i.iteratee(t,this)(this.attributes)},set:function(t,e,n){if(t==null)return this;var r;if(typeof t===\"object\"){r=t;n=e}else{(r={})[t]=e}n||(n={});if(!this._validate(r,n))return false;var s=n.unset;var a=n.silent;var o=[];var h=this._changing;this._changing=true;if(!h){this._previousAttributes=i.clone(this.attributes);this.changed={}}var u=this.attributes;var l=this.changed;var c=this._previousAttributes;for(var f in r){e=r[f];if(!i.isEqual(u[f],e))o.push(f);if(!i.isEqual(c[f],e)){l[f]=e}else{delete l[f]}s?delete u[f]:u[f]=e}if(this.idAttribute in r)this.id=this.get(this.idAttribute);if(!a){if(o.length)this._pending=n;for(var d=0;d<o.length;d++){this.trigger(\"change:\"+o[d],this,u[o[d]],n)}}if(h)return this;if(!a){while(this._pending){n=this._pending;this._pending=false;this.trigger(\"change\",this,n)}}this._pending=false;this._changing=false;return this},unset:function(t,e){return this.set(t,void 0,i.extend({},e,{unset:true}))},clear:function(t){var e={};for(var n in this.attributes)e[n]=void 0;return this.set(e,i.extend({},t,{unset:true}))},hasChanged:function(t){if(t==null)return!i.isEmpty(this.changed);return i.has(this.changed,t)},changedAttributes:function(t){if(!t)return this.hasChanged()?i.clone(this.changed):false;var e=this._changing?this._previousAttributes:this.attributes;var n={};var r;for(var s in t){var a=t[s];if(i.isEqual(e[s],a))continue;n[s]=a;r=true}return r?n:false},previous:function(t){if(t==null||!this._previousAttributes)return null;return this._previousAttributes[t]},previousAttributes:function(){return i.clone(this._previousAttributes)},fetch:function(t){t=i.extend({parse:true},t);var e=this;var n=t.success;t.success=function(i){var r=t.parse?e.parse(i,t):i;if(!e.set(r,t))return false;if(n)n.call(t.context,e,i,t);e.trigger(\"sync\",e,i,t)};G(this,t);return this.sync(\"read\",this,t)},save:function(t,e,n){var r;if(t==null||typeof t===\"object\"){r=t;n=e}else{(r={})[t]=e}n=i.extend({validate:true,parse:true},n);var s=n.wait;if(r&&!s){if(!this.set(r,n))return false}else if(!this._validate(r,n)){return false}var a=this;var o=n.success;var h=this.attributes;n.success=function(t){a.attributes=h;var e=n.parse?a.parse(t,n):t;if(s)e=i.extend({},r,e);if(e&&!a.set(e,n))return false;if(o)o.call(n.context,a,t,n);a.trigger(\"sync\",a,t,n)};G(this,n);if(r&&s)this.attributes=i.extend({},h,r);var u=this.isNew()?\"create\":n.patch?\"patch\":\"update\";if(u===\"patch\"&&!n.attrs)n.attrs=r;var l=this.sync(u,this,n);this.attributes=h;return l},destroy:function(t){t=t?i.clone(t):{};var e=this;var n=t.success;var r=t.wait;var s=function(){e.stopListening();e.trigger(\"destroy\",e,e.collection,t)};t.success=function(i){if(r)s();if(n)n.call(t.context,e,i,t);if(!e.isNew())e.trigger(\"sync\",e,i,t)};var a=false;if(this.isNew()){i.defer(t.success)}else{G(this,t);a=this.sync(\"delete\",this,t)}if(!r)s();return a},url:function(){var t=i.result(this,\"urlRoot\")||i.result(this.collection,\"url\")||V();if(this.isNew())return t;var e=this.get(this.idAttribute);return t.replace(/[^\\/]$/,\"$&/\")+encodeURIComponent(e)},parse:function(t,e){return t},clone:function(){return new this.constructor(this.attributes)},isNew:function(){return!this.has(this.idAttribute)},isValid:function(t){return this._validate({},i.extend({},t,{validate:true}))},_validate:function(t,e){if(!e.validate||!this.validate)return true;t=i.extend({},this.attributes,t);var n=this.validationError=this.validate(t,e)||null;if(!n)return true;this.trigger(\"invalid\",this,n,i.extend(e,{validationError:n}));return false}});var _=e.Collection=function(t,e){e||(e={});this.preinitialize.apply(this,arguments);if(e.model)this.model=e.model;if(e.comparator!==void 0)this.comparator=e.comparator;this._reset();this.initialize.apply(this,arguments);if(t)this.reset(t,i.extend({silent:true},e))};var y={add:true,remove:true,merge:true};var b={add:true,remove:false};var x=function(t,e,i){i=Math.min(Math.max(i,0),t.length);var n=Array(t.length-i);var r=e.length;var s;for(s=0;s<n.length;s++)n[s]=t[s+i];for(s=0;s<r;s++)t[s+i]=e[s];for(s=0;s<n.length;s++)t[s+r+i]=n[s]};i.extend(_.prototype,a,{model:m,preinitialize:function(){},initialize:function(){},toJSON:function(t){return this.map(function(e){return e.toJSON(t)})},sync:function(){return e.sync.apply(this,arguments)},add:function(t,e){return this.set(t,i.extend({merge:false},e,b))},remove:function(t,e){e=i.extend({},e);var n=!i.isArray(t);t=n?[t]:t.slice();var r=this._removeModels(t,e);if(!e.silent&&r.length){e.changes={added:[],merged:[],removed:r};this.trigger(\"update\",this,e)}return n?r[0]:r},set:function(t,e){if(t==null)return;e=i.extend({},y,e);if(e.parse&&!this._isModel(t)){t=this.parse(t,e)||[]}var n=!i.isArray(t);t=n?[t]:t.slice();var r=e.at;if(r!=null)r=+r;if(r>this.length)r=this.length;if(r<0)r+=this.length+1;var s=[];var a=[];var o=[];var h=[];var u={};var l=e.add;var c=e.merge;var f=e.remove;var d=false;var v=this.comparator&&r==null&&e.sort!==false;var p=i.isString(this.comparator)?this.comparator:null;var g,m;for(m=0;m<t.length;m++){g=t[m];var _=this.get(g);if(_){if(c&&g!==_){var b=this._isModel(g)?g.attributes:g;if(e.parse)b=_.parse(b,e);_.set(b,e);o.push(_);if(v&&!d)d=_.hasChanged(p)}if(!u[_.cid]){u[_.cid]=true;s.push(_)}t[m]=_}else if(l){g=t[m]=this._prepareModel(g,e);if(g){a.push(g);this._addReference(g,e);u[g.cid]=true;s.push(g)}}}if(f){for(m=0;m<this.length;m++){g=this.models[m];if(!u[g.cid])h.push(g)}if(h.length)this._removeModels(h,e)}var w=false;var E=!v&&l&&f;if(s.length&&E){w=this.length!==s.length||i.some(this.models,function(t,e){return t!==s[e]});this.models.length=0;x(this.models,s,0);this.length=this.models.length}else if(a.length){if(v)d=true;x(this.models,a,r==null?this.length:r);this.length=this.models.length}if(d)this.sort({silent:true});if(!e.silent){for(m=0;m<a.length;m++){if(r!=null)e.index=r+m;g=a[m];g.trigger(\"add\",g,this,e)}if(d||w)this.trigger(\"sort\",this,e);if(a.length||h.length||o.length){e.changes={added:a,removed:h,merged:o};this.trigger(\"update\",this,e)}}return n?t[0]:t},reset:function(t,e){e=e?i.clone(e):{};for(var n=0;n<this.models.length;n++){this._removeReference(this.models[n],e)}e.previousModels=this.models;this._reset();t=this.add(t,i.extend({silent:true},e));if(!e.silent)this.trigger(\"reset\",this,e);return t},push:function(t,e){return this.add(t,i.extend({at:this.length},e))},pop:function(t){var e=this.at(this.length-1);return this.remove(e,t)},unshift:function(t,e){return this.add(t,i.extend({at:0},e))},shift:function(t){var e=this.at(0);return this.remove(e,t)},slice:function(){return s.apply(this.models,arguments)},get:function(t){if(t==null)return void 0;return this._byId[t]||this._byId[this.modelId(this._isModel(t)?t.attributes:t)]||t.cid&&this._byId[t.cid]},has:function(t){return this.get(t)!=null},at:function(t){if(t<0)t+=this.length;return this.models[t]},where:function(t,e){return this[e?\"find\":\"filter\"](t)},findWhere:function(t){return this.where(t,true)},sort:function(t){var e=this.comparator;if(!e)throw new Error(\"Cannot sort a set without a comparator\");t||(t={});var n=e.length;if(i.isFunction(e))e=e.bind(this);if(n===1||i.isString(e)){this.models=this.sortBy(e)}else{this.models.sort(e)}if(!t.silent)this.trigger(\"sort\",this,t);return this},pluck:function(t){return this.map(t+\"\")},fetch:function(t){t=i.extend({parse:true},t);var e=t.success;var n=this;t.success=function(i){var r=t.reset?\"reset\":\"set\";n[r](i,t);if(e)e.call(t.context,n,i,t);n.trigger(\"sync\",n,i,t)};G(this,t);return this.sync(\"read\",this,t)},create:function(t,e){e=e?i.clone(e):{};var n=e.wait;t=this._prepareModel(t,e);if(!t)return false;if(!n)this.add(t,e);var r=this;var s=e.success;e.success=function(t,e,i){if(n)r.add(t,i);if(s)s.call(i.context,t,e,i)};t.save(null,e);return t},parse:function(t,e){return t},clone:function(){return new this.constructor(this.models,{model:this.model,comparator:this.comparator})},modelId:function(t){return t[this.model.prototype.idAttribute||\"id\"]},values:function(){return new E(this,k)},keys:function(){return new E(this,I)},entries:function(){return new E(this,S)},_reset:function(){this.length=0;this.models=[];this._byId={}},_prepareModel:function(t,e){if(this._isModel(t)){if(!t.collection)t.collection=this;return t}e=e?i.clone(e):{};e.collection=this;var n=new this.model(t,e);if(!n.validationError)return n;this.trigger(\"invalid\",this,n.validationError,e);return false},_removeModels:function(t,e){var i=[];for(var n=0;n<t.length;n++){var r=this.get(t[n]);if(!r)continue;var s=this.indexOf(r);this.models.splice(s,1);this.length--;delete this._byId[r.cid];var a=this.modelId(r.attributes);if(a!=null)delete this._byId[a];if(!e.silent){e.index=s;r.trigger(\"remove\",r,this,e)}i.push(r);this._removeReference(r,e)}return i},_isModel:function(t){return t instanceof m},_addReference:function(t,e){this._byId[t.cid]=t;var i=this.modelId(t.attributes);if(i!=null)this._byId[i]=t;t.on(\"all\",this._onModelEvent,this)},_removeReference:function(t,e){delete this._byId[t.cid];var i=this.modelId(t.attributes);if(i!=null)delete this._byId[i];if(this===t.collection)delete t.collection;t.off(\"all\",this._onModelEvent,this)},_onModelEvent:function(t,e,i,n){if(e){if((t===\"add\"||t===\"remove\")&&i!==this)return;if(t===\"destroy\")this.remove(e,n);if(t===\"change\"){var r=this.modelId(e.previousAttributes());var s=this.modelId(e.attributes);if(r!==s){if(r!=null)delete this._byId[r];if(s!=null)this._byId[s]=e}}}this.trigger.apply(this,arguments)}});var w=typeof Symbol===\"function\"&&Symbol.iterator;if(w){_.prototype[w]=_.prototype.values}var E=function(t,e){this._collection=t;this._kind=e;this._index=0};var k=1;var I=2;var S=3;if(w){E.prototype[w]=function(){return this}}E.prototype.next=function(){if(this._collection){if(this._index<this._collection.length){var t=this._collection.at(this._index);this._index++;var e;if(this._kind===k){e=t}else{var i=this._collection.modelId(t.attributes);if(this._kind===I){e=i}else{e=[i,t]}}return{value:e,done:false}}this._collection=void 0}return{value:void 0,done:true}};var T=e.View=function(t){this.cid=i.uniqueId(\"view\");this.preinitialize.apply(this,arguments);i.extend(this,i.pick(t,H));this._ensureElement();this.initialize.apply(this,arguments)};var P=/^(\\S+)\\s*(.*)$/;var H=[\"model\",\"collection\",\"el\",\"id\",\"attributes\",\"className\",\"tagName\",\"events\"];i.extend(T.prototype,a,{tagName:\"div\",$:function(t){return this.$el.find(t)},preinitialize:function(){},initialize:function(){},render:function(){return this},remove:function(){this._removeElement();this.stopListening();return this},_removeElement:function(){this.$el.remove()},setElement:function(t){this.undelegateEvents();this._setElement(t);this.delegateEvents();return this},_setElement:function(t){this.$el=t instanceof e.$?t:e.$(t);this.el=this.$el[0]},delegateEvents:function(t){t||(t=i.result(this,\"events\"));if(!t)return this;this.undelegateEvents();for(var e in t){var n=t[e];if(!i.isFunction(n))n=this[n];if(!n)continue;var r=e.match(P);this.delegate(r[1],r[2],n.bind(this))}return this},delegate:function(t,e,i){this.$el.on(t+\".delegateEvents\"+this.cid,e,i);return this},undelegateEvents:function(){if(this.$el)this.$el.off(\".delegateEvents\"+this.cid);return this},undelegate:function(t,e,i){this.$el.off(t+\".delegateEvents\"+this.cid,e,i);return this},_createElement:function(t){return document.createElement(t)},_ensureElement:function(){if(!this.el){var t=i.extend({},i.result(this,\"attributes\"));if(this.id)t.id=i.result(this,\"id\");if(this.className)t[\"class\"]=i.result(this,\"className\");this.setElement(this._createElement(i.result(this,\"tagName\")));this._setAttributes(t)}else{this.setElement(i.result(this,\"el\"))}},_setAttributes:function(t){this.$el.attr(t)}});var $=function(t,e,i,n){switch(e){case 1:return function(){return t[i](this[n])};case 2:return function(e){return t[i](this[n],e)};case 3:return function(e,r){return t[i](this[n],C(e,this),r)};case 4:return function(e,r,s){return t[i](this[n],C(e,this),r,s)};default:return function(){var e=s.call(arguments);e.unshift(this[n]);return t[i].apply(t,e)}}};var A=function(t,e,n,r){i.each(n,function(i,n){if(e[n])t.prototype[n]=$(e,i,n,r)})};var C=function(t,e){if(i.isFunction(t))return t;if(i.isObject(t)&&!e._isModel(t))return R(t);if(i.isString(t))return function(e){return e.get(t)};return t};var R=function(t){var e=i.matches(t);return function(t){return e(t.attributes)}};var M={forEach:3,each:3,map:3,collect:3,reduce:0,foldl:0,inject:0,reduceRight:0,foldr:0,find:3,detect:3,filter:3,select:3,reject:3,every:3,all:3,some:3,any:3,include:3,includes:3,contains:3,invoke:0,max:3,min:3,toArray:1,size:1,first:3,head:3,take:3,initial:3,rest:3,tail:3,drop:3,last:3,without:0,difference:0,indexOf:3,shuffle:1,lastIndexOf:3,isEmpty:1,chain:1,sample:3,partition:3,groupBy:3,countBy:3,sortBy:3,indexBy:3,findIndex:3,findLastIndex:3};var N={keys:1,values:1,pairs:1,invert:1,pick:0,omit:0,chain:1,isEmpty:1};i.each([[_,M,\"models\"],[m,N,\"attributes\"]],function(t){var e=t[0],n=t[1],r=t[2];e.mixin=function(t){var n=i.reduce(i.functions(t),function(t,e){t[e]=0;return t},{});A(e,t,n,r)};A(e,i,n,r)});e.sync=function(t,n,r){var s=j[t];i.defaults(r||(r={}),{emulateHTTP:e.emulateHTTP,emulateJSON:e.emulateJSON});var a={type:s,dataType:\"json\"};if(!r.url){a.url=i.result(n,\"url\")||V()}if(r.data==null&&n&&(t===\"create\"||t===\"update\"||t===\"patch\")){a.contentType=\"application/json\";a.data=JSON.stringify(r.attrs||n.toJSON(r))}if(r.emulateJSON){a.contentType=\"application/x-www-form-urlencoded\";a.data=a.data?{model:a.data}:{}}if(r.emulateHTTP&&(s===\"PUT\"||s===\"DELETE\"||s===\"PATCH\")){a.type=\"POST\";if(r.emulateJSON)a.data._method=s;var o=r.beforeSend;r.beforeSend=function(t){t.setRequestHeader(\"X-HTTP-Method-Override\",s);if(o)return o.apply(this,arguments)}}if(a.type!==\"GET\"&&!r.emulateJSON){a.processData=false}var h=r.error;r.error=function(t,e,i){r.textStatus=e;r.errorThrown=i;if(h)h.call(r.context,t,e,i)};var u=r.xhr=e.ajax(i.extend(a,r));n.trigger(\"request\",n,u,r);return u};var j={create:\"POST\",update:\"PUT\",patch:\"PATCH\",\"delete\":\"DELETE\",read:\"GET\"};e.ajax=function(){return e.$.ajax.apply(e.$,arguments)};var O=e.Router=function(t){t||(t={});this.preinitialize.apply(this,arguments);if(t.routes)this.routes=t.routes;this._bindRoutes();this.initialize.apply(this,arguments)};var U=/\\((.*?)\\)/g;var z=/(\\(\\?)?:\\w+/g;var q=/\\*\\w+/g;var F=/[\\-{}\\[\\]+?.,\\\\\\^$|#\\s]/g;i.extend(O.prototype,a,{preinitialize:function(){},initialize:function(){},route:function(t,n,r){if(!i.isRegExp(t))t=this._routeToRegExp(t);if(i.isFunction(n)){r=n;n=\"\"}if(!r)r=this[n];var s=this;e.history.route(t,function(i){var a=s._extractParameters(t,i);if(s.execute(r,a,n)!==false){s.trigger.apply(s,[\"route:\"+n].concat(a));s.trigger(\"route\",n,a);e.history.trigger(\"route\",s,n,a)}});return this},execute:function(t,e,i){if(t)t.apply(this,e)},navigate:function(t,i){e.history.navigate(t,i);return this},_bindRoutes:function(){if(!this.routes)return;this.routes=i.result(this,\"routes\");var t,e=i.keys(this.routes);while((t=e.pop())!=null){this.route(t,this.routes[t])}},_routeToRegExp:function(t){t=t.replace(F,\"\\\\$&\").replace(U,\"(?:$1)?\").replace(z,function(t,e){return e?t:\"([^/?]+)\"}).replace(q,\"([^?]*?)\");return new RegExp(\"^\"+t+\"(?:\\\\?([\\\\s\\\\S]*))?$\")},_extractParameters:function(t,e){var n=t.exec(e).slice(1);return i.map(n,function(t,e){if(e===n.length-1)return t||null;return t?decodeURIComponent(t):null})}});var B=e.History=function(){this.handlers=[];this.checkUrl=this.checkUrl.bind(this);if(typeof window!==\"undefined\"){this.location=window.location;this.history=window.history}};var J=/^[#\\/]|\\s+$/g;var L=/^\\/+|\\/+$/g;var W=/#.*$/;B.started=false;i.extend(B.prototype,a,{interval:50,atRoot:function(){var t=this.location.pathname.replace(/[^\\/]$/,\"$&/\");return t===this.root&&!this.getSearch()},matchRoot:function(){var t=this.decodeFragment(this.location.pathname);var e=t.slice(0,this.root.length-1)+\"/\";return e===this.root},decodeFragment:function(t){return decodeURI(t.replace(/%25/g,\"%2525\"))},getSearch:function(){var t=this.location.href.replace(/#.*/,\"\").match(/\\?.+/);return t?t[0]:\"\"},getHash:function(t){var e=(t||this).location.href.match(/#(.*)$/);return e?e[1]:\"\"},getPath:function(){var t=this.decodeFragment(this.location.pathname+this.getSearch()).slice(this.root.length-1);return t.charAt(0)===\"/\"?t.slice(1):t},getFragment:function(t){if(t==null){if(this._usePushState||!this._wantsHashChange){t=this.getPath()}else{t=this.getHash()}}return t.replace(J,\"\")},start:function(t){if(B.started)throw new Error(\"Backbone.history has already been started\");B.started=true;this.options=i.extend({root:\"/\"},this.options,t);this.root=this.options.root;this._wantsHashChange=this.options.hashChange!==false;this._hasHashChange=\"onhashchange\"in window&&(document.documentMode===void 0||document.documentMode>7);this._useHashChange=this._wantsHashChange&&this._hasHashChange;this._wantsPushState=!!this.options.pushState;this._hasPushState=!!(this.history&&this.history.pushState);this._usePushState=this._wantsPushState&&this._hasPushState;this.fragment=this.getFragment();this.root=(\"/\"+this.root+\"/\").replace(L,\"/\");if(this._wantsHashChange&&this._wantsPushState){if(!this._hasPushState&&!this.atRoot()){var e=this.root.slice(0,-1)||\"/\";this.location.replace(e+\"#\"+this.getPath());return true}else if(this._hasPushState&&this.atRoot()){this.navigate(this.getHash(),{replace:true})}}if(!this._hasHashChange&&this._wantsHashChange&&!this._usePushState){this.iframe=document.createElement(\"iframe\");this.iframe.src=\"javascript:0\";this.iframe.style.display=\"none\";this.iframe.tabIndex=-1;var n=document.body;var r=n.insertBefore(this.iframe,n.firstChild).contentWindow;r.document.open();r.document.close();r.location.hash=\"#\"+this.fragment}var s=window.addEventListener||function(t,e){return attachEvent(\"on\"+t,e)};if(this._usePushState){s(\"popstate\",this.checkUrl,false)}else if(this._useHashChange&&!this.iframe){s(\"hashchange\",this.checkUrl,false)}else if(this._wantsHashChange){this._checkUrlInterval=setInterval(this.checkUrl,this.interval)}if(!this.options.silent)return this.loadUrl()},stop:function(){var t=window.removeEventListener||function(t,e){return detachEvent(\"on\"+t,e)};if(this._usePushState){t(\"popstate\",this.checkUrl,false)}else if(this._useHashChange&&!this.iframe){t(\"hashchange\",this.checkUrl,false)}if(this.iframe){document.body.removeChild(this.iframe);this.iframe=null}if(this._checkUrlInterval)clearInterval(this._checkUrlInterval);B.started=false},route:function(t,e){this.handlers.unshift({route:t,callback:e})},checkUrl:function(t){var e=this.getFragment();if(e===this.fragment&&this.iframe){e=this.getHash(this.iframe.contentWindow)}if(e===this.fragment)return false;if(this.iframe)this.navigate(e);this.loadUrl()},loadUrl:function(t){if(!this.matchRoot())return false;t=this.fragment=this.getFragment(t);return i.some(this.handlers,function(e){if(e.route.test(t)){e.callback(t);return true}})},navigate:function(t,e){if(!B.started)return false;if(!e||e===true)e={trigger:!!e};t=this.getFragment(t||\"\");var i=this.root;if(t===\"\"||t.charAt(0)===\"?\"){i=i.slice(0,-1)||\"/\"}var n=i+t;t=t.replace(W,\"\");var r=this.decodeFragment(t);if(this.fragment===r)return;this.fragment=r;if(this._usePushState){this.history[e.replace?\"replaceState\":\"pushState\"]({},document.title,n)}else if(this._wantsHashChange){this._updateHash(this.location,t,e.replace);if(this.iframe&&t!==this.getHash(this.iframe.contentWindow)){var s=this.iframe.contentWindow;if(!e.replace){s.document.open();s.document.close()}this._updateHash(s.location,t,e.replace)}}else{return this.location.assign(n)}if(e.trigger)return this.loadUrl(t)},_updateHash:function(t,e,i){if(i){var n=t.href.replace(/(javascript:|#).*$/,\"\");t.replace(n+\"#\"+e)}else{t.hash=\"#\"+e}}});e.history=new B;var D=function(t,e){var n=this;var r;if(t&&i.has(t,\"constructor\")){r=t.constructor}else{r=function(){return n.apply(this,arguments)}}i.extend(r,n,e);r.prototype=i.create(n.prototype,t);r.prototype.constructor=r;r.__super__=n.prototype;return r};m.extend=_.extend=O.extend=T.extend=B.extend=D;var V=function(){throw new Error('A \"url\" property or function must be specified')};var G=function(t,e){var i=e.error;e.error=function(n){if(i)i.call(e.context,t,n,e);t.trigger(\"error\",t,n,e)}};return e});\n//# sourceMappingURL=backbone-min.map"
  },
  {
    "path": "backbone/libs/underscore-min.js",
    "content": "!function(n,r){var t,e;\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=r():\"function\"==typeof define&&define.amd?define(\"underscore\",r):(t=n._,e=r(),(n._=e).noConflict=function(){return n._=t,e})}(this,function(){\n//     Underscore.js 1.10.2\n//     https://underscorejs.org\n//     (c) 2009-2020 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n//     Underscore may be freely distributed under the MIT license.\nvar n=\"object\"==typeof self&&self.self===self&&self||\"object\"==typeof global&&global.global===global&&global||Function(\"return this\")()||{},e=Array.prototype,i=Object.prototype,p=\"undefined\"!=typeof Symbol?Symbol.prototype:null,u=e.push,f=e.slice,s=i.toString,o=i.hasOwnProperty,r=Array.isArray,a=Object.keys,t=Object.create,c=n.isNaN,l=n.isFinite,v=function(){};function h(n){return n instanceof h?n:this instanceof h?void(this._wrapped=n):new h(n)}var g=h.VERSION=\"1.10.2\";function y(u,o,n){if(void 0===o)return u;switch(null==n?3:n){case 1:return function(n){return u.call(o,n)};case 3:return function(n,r,t){return u.call(o,n,r,t)};case 4:return function(n,r,t,e){return u.call(o,n,r,t,e)}}return function(){return u.apply(o,arguments)}}function d(n,r,t){return null==n?ur:Cn(n)?y(n,r,t):Ln(n)&&!Kn(n)?ir(n):or(n)}function m(n,r){return d(n,r,1/0)}function b(n,r,t){return h.iteratee!==m?h.iteratee(n,r):d(n,r,t)}function j(u,o){return o=null==o?u.length-1:+o,function(){for(var n=Math.max(arguments.length-o,0),r=Array(n),t=0;t<n;t++)r[t]=arguments[t+o];switch(o){case 0:return u.call(this,r);case 1:return u.call(this,arguments[0],r);case 2:return u.call(this,arguments[0],arguments[1],r)}var e=Array(o+1);for(t=0;t<o;t++)e[t]=arguments[t];return e[o]=r,u.apply(this,e)}}function _(n){if(!Ln(n))return{};if(t)return t(n);v.prototype=n;var r=new v;return v.prototype=null,r}function w(r){return function(n){return null==n?void 0:n[r]}}function x(n,r){return null!=n&&o.call(n,r)}function S(n,r){for(var t=r.length,e=0;e<t;e++){if(null==n)return;n=n[r[e]]}return t?n:void 0}h.iteratee=m;var A=Math.pow(2,53)-1,O=w(\"length\");function M(n){var r=O(n);return\"number\"==typeof r&&0<=r&&r<=A}function E(n,r,t){var e,u;if(r=y(r,t),M(n))for(e=0,u=n.length;e<u;e++)r(n[e],e,n);else{var o=Sn(n);for(e=0,u=o.length;e<u;e++)r(n[o[e]],o[e],n)}return n}function N(n,r,t){r=b(r,t);for(var e=!M(n)&&Sn(n),u=(e||n).length,o=Array(u),i=0;i<u;i++){var a=e?e[i]:i;o[i]=r(n[a],a,n)}return o}function k(f){return function(n,r,t,e){var u=3<=arguments.length;return function(n,r,t,e){var u=!M(n)&&Sn(n),o=(u||n).length,i=0<f?0:o-1;for(e||(t=n[u?u[i]:i],i+=f);0<=i&&i<o;i+=f){var a=u?u[i]:i;t=r(t,n[a],a,n)}return t}(n,y(r,e,4),t,u)}}var I=k(1),T=k(-1);function B(n,r,t){var e=(M(n)?on:Tn)(n,r,t);if(void 0!==e&&-1!==e)return n[e]}function R(n,e,r){var u=[];return e=b(e,r),E(n,function(n,r,t){e(n,r,t)&&u.push(n)}),u}function F(n,r,t){r=b(r,t);for(var e=!M(n)&&Sn(n),u=(e||n).length,o=0;o<u;o++){var i=e?e[o]:o;if(!r(n[i],i,n))return!1}return!0}function q(n,r,t){r=b(r,t);for(var e=!M(n)&&Sn(n),u=(e||n).length,o=0;o<u;o++){var i=e?e[o]:o;if(r(n[i],i,n))return!0}return!1}function D(n,r,t,e){return M(n)||(n=On(n)),(\"number\"!=typeof t||e)&&(t=0),0<=ln(n,r,t)}var W=j(function(n,t,e){var u,o;return Cn(t)?o=t:Kn(t)&&(u=t.slice(0,-1),t=t[t.length-1]),N(n,function(n){var r=o;if(!r){if(u&&u.length&&(n=S(n,u)),null==n)return;r=n[t]}return null==r?r:r.apply(n,e)})});function z(n,r){return N(n,or(r))}function P(n,e,r){var t,u,o=-1/0,i=-1/0;if(null==e||\"number\"==typeof e&&\"object\"!=typeof n[0]&&null!=n)for(var a=0,f=(n=M(n)?n:On(n)).length;a<f;a++)null!=(t=n[a])&&o<t&&(o=t);else e=b(e,r),E(n,function(n,r,t){u=e(n,r,t),(i<u||u===-1/0&&o===-1/0)&&(o=n,i=u)});return o}function K(n,r,t){if(null==r||t)return M(n)||(n=On(n)),n[ar(n.length-1)];var e=M(n)?Dn(n):On(n),u=O(e);r=Math.max(Math.min(r,u),0);for(var o=u-1,i=0;i<r;i++){var a=ar(i,o),f=e[i];e[i]=e[a],e[a]=f}return e.slice(0,r)}function L(i,r){return function(e,u,n){var o=r?[[],[]]:{};return u=b(u,n),E(e,function(n,r){var t=u(n,r,e);i(o,n,t)}),o}}var V=L(function(n,r,t){x(n,t)?n[t].push(r):n[t]=[r]}),C=L(function(n,r,t){n[t]=r}),J=L(function(n,r,t){x(n,t)?n[t]++:n[t]=1}),U=/[^\\ud800-\\udfff]|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff]/g;var $=L(function(n,r,t){n[t?0:1].push(r)},!0);function G(n,r,t){return null==n||n.length<1?null==r?void 0:[]:null==r||t?n[0]:H(n,n.length-r)}function H(n,r,t){return f.call(n,0,Math.max(0,n.length-(null==r||t?1:r)))}function Q(n,r,t){return f.call(n,null==r||t?1:r)}function X(n,r,t,e){for(var u=(e=e||[]).length,o=0,i=O(n);o<i;o++){var a=n[o];if(M(a)&&(Kn(a)||Vn(a)))if(r)for(var f=0,c=a.length;f<c;)e[u++]=a[f++];else X(a,r,t,e),u=e.length;else t||(e[u++]=a)}return e}var Y=j(function(n,r){return rn(n,r)});function Z(n,r,t,e){er(r)||(e=t,t=r,r=!1),null!=t&&(t=b(t,e));for(var u=[],o=[],i=0,a=O(n);i<a;i++){var f=n[i],c=t?t(f,i,n):f;r&&!t?(i&&o===c||u.push(f),o=c):t?D(o,c)||(o.push(c),u.push(f)):D(u,f)||u.push(f)}return u}var nn=j(function(n){return Z(X(n,!0,!0))});var rn=j(function(n,r){return r=X(r,!0,!0),R(n,function(n){return!D(r,n)})});function tn(n){for(var r=n&&P(n,O).length||0,t=Array(r),e=0;e<r;e++)t[e]=z(n,e);return t}var en=j(tn);function un(o){return function(n,r,t){r=b(r,t);for(var e=O(n),u=0<o?0:e-1;0<=u&&u<e;u+=o)if(r(n[u],u,n))return u;return-1}}var on=un(1),an=un(-1);function fn(n,r,t,e){for(var u=(t=b(t,e,1))(r),o=0,i=O(n);o<i;){var a=Math.floor((o+i)/2);t(n[a])<u?o=a+1:i=a}return o}function cn(o,i,a){return function(n,r,t){var e=0,u=O(n);if(\"number\"==typeof t)0<o?e=0<=t?t:Math.max(t+u,e):u=0<=t?Math.min(t+1,u):t+u+1;else if(a&&t&&u)return n[t=a(n,r)]===r?t:-1;if(r!=r)return 0<=(t=i(f.call(n,e,u),tr))?t+e:-1;for(t=0<o?e:u-1;0<=t&&t<u;t+=o)if(n[t]===r)return t;return-1}}var ln=cn(1,on,fn),pn=cn(-1,an);function sn(n,r,t,e,u){if(!(e instanceof r))return n.apply(t,u);var o=_(n.prototype),i=n.apply(o,u);return Ln(i)?i:o}var vn=j(function(r,t,e){if(!Cn(r))throw new TypeError(\"Bind must be called on a function\");var u=j(function(n){return sn(r,u,t,this,e.concat(n))});return u}),hn=j(function(u,o){var i=hn.placeholder,a=function(){for(var n=0,r=o.length,t=Array(r),e=0;e<r;e++)t[e]=o[e]===i?arguments[n++]:o[e];for(;n<arguments.length;)t.push(arguments[n++]);return sn(u,a,this,this,t)};return a});hn.placeholder=h;var gn=j(function(n,r){var t=(r=X(r,!1,!1)).length;if(t<1)throw new Error(\"bindAll must be passed function names\");for(;t--;){var e=r[t];n[e]=vn(n[e],n)}});var yn=j(function(n,r,t){return setTimeout(function(){return n.apply(null,t)},r)}),dn=hn(yn,h,1);function mn(n){return function(){return!n.apply(this,arguments)}}function bn(n,r){var t;return function(){return 0<--n&&(t=r.apply(this,arguments)),n<=1&&(r=null),t}}var jn=hn(bn,2),_n=!{toString:null}.propertyIsEnumerable(\"toString\"),wn=[\"valueOf\",\"isPrototypeOf\",\"toString\",\"propertyIsEnumerable\",\"hasOwnProperty\",\"toLocaleString\"];function xn(n,r){var t=wn.length,e=n.constructor,u=Cn(e)&&e.prototype||i,o=\"constructor\";for(x(n,o)&&!D(r,o)&&r.push(o);t--;)(o=wn[t])in n&&n[o]!==u[o]&&!D(r,o)&&r.push(o)}function Sn(n){if(!Ln(n))return[];if(a)return a(n);var r=[];for(var t in n)x(n,t)&&r.push(t);return _n&&xn(n,r),r}function An(n){if(!Ln(n))return[];var r=[];for(var t in n)r.push(t);return _n&&xn(n,r),r}function On(n){for(var r=Sn(n),t=r.length,e=Array(t),u=0;u<t;u++)e[u]=n[r[u]];return e}function Mn(n){for(var r={},t=Sn(n),e=0,u=t.length;e<u;e++)r[n[t[e]]]=t[e];return r}function En(n){var r=[];for(var t in n)Cn(n[t])&&r.push(t);return r.sort()}function Nn(f,c){return function(n){var r=arguments.length;if(c&&(n=Object(n)),r<2||null==n)return n;for(var t=1;t<r;t++)for(var e=arguments[t],u=f(e),o=u.length,i=0;i<o;i++){var a=u[i];c&&void 0!==n[a]||(n[a]=e[a])}return n}}var kn=Nn(An),In=Nn(Sn);function Tn(n,r,t){r=b(r,t);for(var e,u=Sn(n),o=0,i=u.length;o<i;o++)if(r(n[e=u[o]],e,n))return e}function Bn(n,r,t){return r in t}var Rn=j(function(n,r){var t={},e=r[0];if(null==n)return t;Cn(e)?(1<r.length&&(e=y(e,r[1])),r=An(n)):(e=Bn,r=X(r,!1,!1),n=Object(n));for(var u=0,o=r.length;u<o;u++){var i=r[u],a=n[i];e(a,i,n)&&(t[i]=a)}return t}),Fn=j(function(n,t){var r,e=t[0];return Cn(e)?(e=mn(e),1<t.length&&(r=t[1])):(t=N(X(t,!1,!1),String),e=function(n,r){return!D(t,r)}),Rn(n,e,r)}),qn=Nn(An,!0);function Dn(n){return Ln(n)?Kn(n)?n.slice():kn({},n):n}function Wn(n,r){var t=Sn(r),e=t.length;if(null==n)return!e;for(var u=Object(n),o=0;o<e;o++){var i=t[o];if(r[i]!==u[i]||!(i in u))return!1}return!0}function zn(n,r,t,e){if(n===r)return 0!==n||1/n==1/r;if(null==n||null==r)return!1;if(n!=n)return r!=r;var u=typeof n;return(\"function\"===u||\"object\"===u||\"object\"==typeof r)&&function(n,r,t,e){n instanceof h&&(n=n._wrapped);r instanceof h&&(r=r._wrapped);var u=s.call(n);if(u!==s.call(r))return!1;switch(u){case\"[object RegExp]\":case\"[object String]\":return\"\"+n==\"\"+r;case\"[object Number]\":return+n!=+n?+r!=+r:0==+n?1/+n==1/r:+n==+r;case\"[object Date]\":case\"[object Boolean]\":return+n==+r;case\"[object Symbol]\":return p.valueOf.call(n)===p.valueOf.call(r)}var o=\"[object Array]\"===u;if(!o){if(\"object\"!=typeof n||\"object\"!=typeof r)return!1;var i=n.constructor,a=r.constructor;if(i!==a&&!(Cn(i)&&i instanceof i&&Cn(a)&&a instanceof a)&&\"constructor\"in n&&\"constructor\"in r)return!1}e=e||[];var f=(t=t||[]).length;for(;f--;)if(t[f]===n)return e[f]===r;if(t.push(n),e.push(r),o){if((f=n.length)!==r.length)return!1;for(;f--;)if(!zn(n[f],r[f],t,e))return!1}else{var c,l=Sn(n);if(f=l.length,Sn(r).length!==f)return!1;for(;f--;)if(c=l[f],!x(r,c)||!zn(n[c],r[c],t,e))return!1}return t.pop(),e.pop(),!0}(n,r,t,e)}function Pn(r){return function(n){return s.call(n)===\"[object \"+r+\"]\"}}var Kn=r||Pn(\"Array\");function Ln(n){var r=typeof n;return\"function\"===r||\"object\"===r&&!!n}var Vn=Pn(\"Arguments\"),Cn=Pn(\"Function\"),Jn=Pn(\"String\"),Un=Pn(\"Number\"),$n=Pn(\"Date\"),Gn=Pn(\"RegExp\"),Hn=Pn(\"Error\"),Qn=Pn(\"Symbol\"),Xn=Pn(\"Map\"),Yn=Pn(\"WeakMap\"),Zn=Pn(\"Set\"),nr=Pn(\"WeakSet\");!function(){Vn(arguments)||(Vn=function(n){return x(n,\"callee\")})}();var rr=n.document&&n.document.childNodes;function tr(n){return Un(n)&&c(n)}function er(n){return!0===n||!1===n||\"[object Boolean]\"===s.call(n)}function ur(n){return n}function or(r){return Kn(r)?function(n){return S(n,r)}:w(r)}function ir(r){return r=In({},r),function(n){return Wn(n,r)}}function ar(n,r){return null==r&&(r=n,n=0),n+Math.floor(Math.random()*(r-n+1))}\"function\"!=typeof/./&&\"object\"!=typeof Int8Array&&\"function\"!=typeof rr&&(Cn=function(n){return\"function\"==typeof n||!1});var fr=Date.now||function(){return(new Date).getTime()},cr={\"&\":\"&amp;\",\"<\":\"&lt;\",\">\":\"&gt;\",'\"':\"&quot;\",\"'\":\"&#x27;\",\"`\":\"&#x60;\"},lr=Mn(cr);function pr(r){var t=function(n){return r[n]},n=\"(?:\"+Sn(r).join(\"|\")+\")\",e=RegExp(n),u=RegExp(n,\"g\");return function(n){return n=null==n?\"\":\"\"+n,e.test(n)?n.replace(u,t):n}}var sr=pr(cr),vr=pr(lr);var hr=0;var gr=h.templateSettings={evaluate:/<%([\\s\\S]+?)%>/g,interpolate:/<%=([\\s\\S]+?)%>/g,escape:/<%-([\\s\\S]+?)%>/g},yr=/(.)^/,dr={\"'\":\"'\",\"\\\\\":\"\\\\\",\"\\r\":\"r\",\"\\n\":\"n\",\"\\u2028\":\"u2028\",\"\\u2029\":\"u2029\"},mr=/\\\\|'|\\r|\\n|\\u2028|\\u2029/g,br=function(n){return\"\\\\\"+dr[n]};function jr(n,r){return n._chain?h(r).chain():r}function _r(t){return E(En(t),function(n){var r=h[n]=t[n];h.prototype[n]=function(){var n=[this._wrapped];return u.apply(n,arguments),jr(this,r.apply(h,n))}}),h}E([\"pop\",\"push\",\"reverse\",\"shift\",\"sort\",\"splice\",\"unshift\"],function(r){var t=e[r];h.prototype[r]=function(){var n=this._wrapped;return t.apply(n,arguments),\"shift\"!==r&&\"splice\"!==r||0!==n.length||delete n[0],jr(this,n)}}),E([\"concat\",\"join\",\"slice\"],function(n){var r=e[n];h.prototype[n]=function(){return jr(this,r.apply(this._wrapped,arguments))}}),h.prototype.valueOf=h.prototype.toJSON=h.prototype.value=function(){return this._wrapped},h.prototype.toString=function(){return String(this._wrapped)};var wr=_r({default:h,VERSION:g,iteratee:m,restArguments:j,each:E,forEach:E,map:N,collect:N,reduce:I,foldl:I,inject:I,reduceRight:T,foldr:T,find:B,detect:B,filter:R,select:R,reject:function(n,r,t){return R(n,mn(b(r)),t)},every:F,all:F,some:q,any:q,contains:D,includes:D,include:D,invoke:W,pluck:z,where:function(n,r){return R(n,ir(r))},findWhere:function(n,r){return B(n,ir(r))},max:P,min:function(n,e,r){var t,u,o=1/0,i=1/0;if(null==e||\"number\"==typeof e&&\"object\"!=typeof n[0]&&null!=n)for(var a=0,f=(n=M(n)?n:On(n)).length;a<f;a++)null!=(t=n[a])&&t<o&&(o=t);else e=b(e,r),E(n,function(n,r,t){((u=e(n,r,t))<i||u===1/0&&o===1/0)&&(o=n,i=u)});return o},shuffle:function(n){return K(n,1/0)},sample:K,sortBy:function(n,e,r){var u=0;return e=b(e,r),z(N(n,function(n,r,t){return{value:n,index:u++,criteria:e(n,r,t)}}).sort(function(n,r){var t=n.criteria,e=r.criteria;if(t!==e){if(e<t||void 0===t)return 1;if(t<e||void 0===e)return-1}return n.index-r.index}),\"value\")},groupBy:V,indexBy:C,countBy:J,toArray:function(n){return n?Kn(n)?f.call(n):Jn(n)?n.match(U):M(n)?N(n,ur):On(n):[]},size:function(n){return null==n?0:M(n)?n.length:Sn(n).length},partition:$,first:G,head:G,take:G,initial:H,last:function(n,r,t){return null==n||n.length<1?null==r?void 0:[]:null==r||t?n[n.length-1]:Q(n,Math.max(0,n.length-r))},rest:Q,tail:Q,drop:Q,compact:function(n){return R(n,Boolean)},flatten:function(n,r){return X(n,r,!1)},without:Y,uniq:Z,unique:Z,union:nn,intersection:function(n){for(var r=[],t=arguments.length,e=0,u=O(n);e<u;e++){var o=n[e];if(!D(r,o)){var i;for(i=1;i<t&&D(arguments[i],o);i++);i===t&&r.push(o)}}return r},difference:rn,unzip:tn,zip:en,object:function(n,r){for(var t={},e=0,u=O(n);e<u;e++)r?t[n[e]]=r[e]:t[n[e][0]]=n[e][1];return t},findIndex:on,findLastIndex:an,sortedIndex:fn,indexOf:ln,lastIndexOf:pn,range:function(n,r,t){null==r&&(r=n||0,n=0),t||(t=r<n?-1:1);for(var e=Math.max(Math.ceil((r-n)/t),0),u=Array(e),o=0;o<e;o++,n+=t)u[o]=n;return u},chunk:function(n,r){if(null==r||r<1)return[];for(var t=[],e=0,u=n.length;e<u;)t.push(f.call(n,e,e+=r));return t},bind:vn,partial:hn,bindAll:gn,memoize:function(e,u){var o=function(n){var r=o.cache,t=\"\"+(u?u.apply(this,arguments):n);return x(r,t)||(r[t]=e.apply(this,arguments)),r[t]};return o.cache={},o},delay:yn,defer:dn,throttle:function(t,e,u){var o,i,a,f,c=0;u||(u={});var l=function(){c=!1===u.leading?0:fr(),o=null,f=t.apply(i,a),o||(i=a=null)},n=function(){var n=fr();c||!1!==u.leading||(c=n);var r=e-(n-c);return i=this,a=arguments,r<=0||e<r?(o&&(clearTimeout(o),o=null),c=n,f=t.apply(i,a),o||(i=a=null)):o||!1===u.trailing||(o=setTimeout(l,r)),f};return n.cancel=function(){clearTimeout(o),c=0,o=i=a=null},n},debounce:function(t,e,u){var o,i,a=function(n,r){o=null,r&&(i=t.apply(n,r))},n=j(function(n){if(o&&clearTimeout(o),u){var r=!o;o=setTimeout(a,e),r&&(i=t.apply(this,n))}else o=yn(a,e,this,n);return i});return n.cancel=function(){clearTimeout(o),o=null},n},wrap:function(n,r){return hn(r,n)},negate:mn,compose:function(){var t=arguments,e=t.length-1;return function(){for(var n=e,r=t[e].apply(this,arguments);n--;)r=t[n].call(this,r);return r}},after:function(n,r){return function(){if(--n<1)return r.apply(this,arguments)}},before:bn,once:jn,keys:Sn,allKeys:An,values:On,mapObject:function(n,r,t){r=b(r,t);for(var e=Sn(n),u=e.length,o={},i=0;i<u;i++){var a=e[i];o[a]=r(n[a],a,n)}return o},pairs:function(n){for(var r=Sn(n),t=r.length,e=Array(t),u=0;u<t;u++)e[u]=[r[u],n[r[u]]];return e},invert:Mn,functions:En,methods:En,extend:kn,extendOwn:In,assign:In,findKey:Tn,pick:Rn,omit:Fn,defaults:qn,create:function(n,r){var t=_(n);return r&&In(t,r),t},clone:Dn,tap:function(n,r){return r(n),n},isMatch:Wn,isEqual:function(n,r){return zn(n,r)},isEmpty:function(n){return null==n||(M(n)&&(Kn(n)||Jn(n)||Vn(n))?0===n.length:0===Sn(n).length)},isElement:function(n){return!(!n||1!==n.nodeType)},isArray:Kn,isObject:Ln,isArguments:Vn,isFunction:Cn,isString:Jn,isNumber:Un,isDate:$n,isRegExp:Gn,isError:Hn,isSymbol:Qn,isMap:Xn,isWeakMap:Yn,isSet:Zn,isWeakSet:nr,isFinite:function(n){return!Qn(n)&&l(n)&&!c(parseFloat(n))},isNaN:tr,isBoolean:er,isNull:function(n){return null===n},isUndefined:function(n){return void 0===n},has:function(n,r){if(!Kn(r))return x(n,r);for(var t=r.length,e=0;e<t;e++){var u=r[e];if(null==n||!o.call(n,u))return!1;n=n[u]}return!!t},identity:ur,constant:function(n){return function(){return n}},noop:function(){},property:or,propertyOf:function(r){return null==r?function(){}:function(n){return Kn(n)?S(r,n):r[n]}},matcher:ir,matches:ir,times:function(n,r,t){var e=Array(Math.max(0,n));r=y(r,t,1);for(var u=0;u<n;u++)e[u]=r(u);return e},random:ar,now:fr,escape:sr,unescape:vr,result:function(n,r,t){Kn(r)||(r=[r]);var e=r.length;if(!e)return Cn(t)?t.call(n):t;for(var u=0;u<e;u++){var o=null==n?void 0:n[r[u]];void 0===o&&(o=t,u=e),n=Cn(o)?o.call(n):o}return n},uniqueId:function(n){var r=++hr+\"\";return n?n+r:r},templateSettings:gr,template:function(o,n,r){!n&&r&&(n=r),n=qn({},n,h.templateSettings);var t,e=RegExp([(n.escape||yr).source,(n.interpolate||yr).source,(n.evaluate||yr).source].join(\"|\")+\"|$\",\"g\"),i=0,a=\"__p+='\";o.replace(e,function(n,r,t,e,u){return a+=o.slice(i,u).replace(mr,br),i=u+n.length,r?a+=\"'+\\n((__t=(\"+r+\"))==null?'':_.escape(__t))+\\n'\":t?a+=\"'+\\n((__t=(\"+t+\"))==null?'':__t)+\\n'\":e&&(a+=\"';\\n\"+e+\"\\n__p+='\"),n}),a+=\"';\\n\",n.variable||(a=\"with(obj||{}){\\n\"+a+\"}\\n\"),a=\"var __t,__p='',__j=Array.prototype.join,\"+\"print=function(){__p+=__j.call(arguments,'');};\\n\"+a+\"return __p;\\n\";try{t=new Function(n.variable||\"obj\",\"_\",a)}catch(n){throw n.source=a,n}var u=function(n){return t.call(this,n,h)},f=n.variable||\"obj\";return u.source=\"function(\"+f+\"){\\n\"+a+\"}\",u},chain:function(n){var r=h(n);return r._chain=!0,r},mixin:_r});return wr._=wr});"
  },
  {
    "path": "blazor/.gitignore",
    "content": ".vscode/\n.vs\n[Bb]in\n[Oo]bj"
  },
  {
    "path": "blazor/App.razor",
    "content": "<div>Hello World!</div>"
  },
  {
    "path": "blazor/HelloWorld.csproj",
    "content": "<Project Sdk=\"Microsoft.NET.Sdk.Web\">\n  <PropertyGroup>\n    <TargetFramework>netstandard2.1</TargetFramework>\n    <RazorLangVersion>3.0</RazorLangVersion>\n  </PropertyGroup>\n  <ItemGroup>\n    <PackageReference Include=\"Microsoft.AspNetCore.Components.WebAssembly\" Version=\"3.2.1\" />\n    <PackageReference Include=\"Microsoft.AspNetCore.Components.WebAssembly.Build\" Version=\"3.2.1\" PrivateAssets=\"all\" />\n    <PackageReference Include=\"Microsoft.AspNetCore.Components.WebAssembly.DevServer\" Version=\"3.2.1\" PrivateAssets=\"all\" />\n  </ItemGroup>\n</Project>"
  },
  {
    "path": "blazor/Program.cs",
    "content": "using System.Threading.Tasks;\nusing Microsoft.AspNetCore.Components.WebAssembly.Hosting;\n\nnamespace HelloWorld\n{\n    public class Program\n    {\n        public static async Task Main(string[] args)\n        {\n            var builder = WebAssemblyHostBuilder.CreateDefault(args);\n            builder.RootComponents.Add<App>(\"app\");\n            await builder.Build().RunAsync();\n        }\n    }\n}"
  },
  {
    "path": "blazor/Properties/launchSettings.json",
    "content": "{\n    \"profiles\": {\n        \"Web\": {\n            \"commandName\": \"Project\",\n            \"launchBrowser\": true,\n            \"inspectUri\": \"{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}\",\n            \"applicationUrl\": \"http://localhost:5001\"\n        }\n    }\n}"
  },
  {
    "path": "blazor/README.md",
    "content": "# A Blazor Web Assembly Hello World project\n\n## Getting Started\n\nYou need to have the .NET SDK installed on your computer in order to build and run this project.\n\nFollow the steps:\n\n- [.NET SDK installation](https://dotnet.microsoft.com/download?WT.mc_id=helloworlds-github-shboyer).\n- For Deployment and other docs on Blazor\n  - [Client Apps in C#](https://dotnet.microsoft.com/apps/aspnet/web-apps/blazor?WT.mc_id=helloworld-github-shboyer)\n  - [Official Docs on Blazor](https://docs.microsoft.com/aspnet/core/blazor/?view=aspnetcore-3.1&WT.mc_id=helloworld-github-shboyer)\n\n```bash\n dotnet restore\n dotnet run\n```\n\nView your web app using the URL configured in Properties/launchSettings.json. For this example, http://localhost:5001.\n\n```javascript\n{\n    \"profiles\": {\n        \"Web\": {\n            ...\n            \"applicationUrl\": \"http://localhost:5001\"\n        }\n    }\n}\n```\n"
  },
  {
    "path": "blazor/wwwroot/index.html",
    "content": "<!DOCTYPE html>\n<html>\n    <head>\n        <meta charset=\"utf-8\" />\n        <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\" />\n        <title>\n           Hello World Blazor\n        </title>\n        <base href=\"/\" />\n    </head>\n    <body>\n        <app>\n            <span class=\"sr-only\">Loading...</span>\n        </app>\n        <script src=\"_framework/blazor.webassembly.js\"></script>\n    </body>\n</html>"
  },
  {
    "path": "eleventy/.gitignore",
    "content": "# /.gitignore\n\n_site\nnode_modules\n"
  },
  {
    "path": "eleventy/index.md",
    "content": "# Hello world!"
  },
  {
    "path": "eleventy/package.json",
    "content": "{\n  \"name\": \"hello-eleventy\",\n  \"private\": true,\n  \"description\": \"Eleventy hello world\",\n  \"version\": \"1.0.0\",\n  \"license\": \"MIT\",\n  \"scripts\": {\n    \"watch\": \"eleventy --watch\",\n    \"serve\": \"eleventy --serve\",\n    \"build\": \"eleventy\"\n  },\n  \"devDependencies\": {\n    \"@11ty/eleventy\": \"^0.11.0\"\n  }\n}\n"
  },
  {
    "path": "elm/.gitignore",
    "content": "elm-stuff\npublic/elm.js"
  },
  {
    "path": "elm/README.md",
    "content": "# Intro\r\n\r\nBare minimum hello world in Elm in a [sandboxed](https://package.elm-lang.org/packages/elm/browser/latest/Browser#sandbox) program\r\n\r\n## Build\r\n\r\nRun `npm install` to install the Elm compiler  \r\nRun `npm run build`\r\n\r\nIt should deploy an elm.js file to the public folder  \r\n\r\n## Run\r\n\r\nRun `npm run start`\r\n\r\nIt should build and start `http-server` pointing to the public folder.\r\n"
  },
  {
    "path": "elm/elm.json",
    "content": "{\n    \"type\": \"application\",\n    \"source-directories\": [\n        \"src\"\n    ],\n    \"elm-version\": \"0.19.1\",\n    \"dependencies\": {\n        \"direct\": {\n            \"elm/browser\": \"1.0.2\",\n            \"elm/core\": \"1.0.5\",\n            \"elm/html\": \"1.0.0\"\n        },\n        \"indirect\": {\n            \"elm/json\": \"1.1.3\",\n            \"elm/time\": \"1.0.0\",\n            \"elm/url\": \"1.0.0\",\n            \"elm/virtual-dom\": \"1.0.2\"\n        }\n    },\n    \"test-dependencies\": {\n        \"direct\": {},\n        \"indirect\": {}\n    }\n}\n"
  },
  {
    "path": "elm/package.json",
    "content": "{\n  \"name\": \"elm-helloworld\",\n  \"version\": \"1.0.0\",\n  \"description\": \"Hello World in Elm\",\n  \"main\": \"index.html\",\n  \"scripts\": {\n    \"build\": \"elm make src/Main.elm --optimize --output public/elm.js && npm run uglify\",\n    \"uglify\": \"uglifyjs public/elm.js --compress \\\"pure_funcs=[F2,F3,F4,F5,F6,F7,F8,F9,A2,A3,A4,A5,A6,A7,A8,A9],pure_getters,keep_fargs=false,unsafe_comps,unsafe\\\" | uglifyjs --mangle -o public/elm.min.js\",\n    \"start\": \"npm run build && npx http-server -c-1 -o /\"\n  },\n  \"keywords\": [\n    \"hello-world\",\n    \"elm\"\n  ],\n  \"author\": \"Abderraouf El Gasser\",\n  \"license\": \"MIT\",\n  \"devDependencies\": {\n    \"elm\": \"^0.19.1-3\",\n    \"elm-format\": \"^0.8.3\",\n    \"uglify-js\": \"3.10.0\"\n  }\n}"
  },
  {
    "path": "elm/public/index.html",
    "content": "<!DOCTYPE html>\r\n<html lang=\"en\">\r\n<head>\r\n    <meta charset=\"UTF-8\">\r\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\r\n    <title>Hello World From Elm</title>\r\n</head>\r\n<body>\r\n    <div id=\"elm-root\"></div>\r\n\r\n    <script src=\"elm.min.js\"></script>\r\n    <script>\r\n        var app = Elm.Main.init({\r\n            node: document.getElementById(\"elm-root\")\r\n        });\r\n    </script>\r\n</body>\r\n</html>"
  },
  {
    "path": "elm/src/Main.elm",
    "content": "module Main exposing (..)\r\n\r\nimport Browser\r\nimport Html exposing (Html, div, text)\r\nimport Platform.Cmd exposing (none)\r\n\r\n\r\n\r\n-- MAIN\r\n\r\n\r\nmain =\r\n    Browser.sandbox { init = init, update = update, view = view }\r\n\r\n\r\n\r\n-- MODEL\r\n\r\n\r\ntype alias Model =\r\n    Int\r\n\r\n\r\ninit : Model\r\ninit =\r\n    0\r\n\r\n\r\n\r\n-- UPDATE\r\n\r\n\r\ntype Msg\r\n    = NoOp\r\n\r\n\r\nupdate : Msg -> Model -> Model\r\nupdate msg model =\r\n    case msg of\r\n        NoOp ->\r\n            model\r\n\r\n\r\n\r\n-- VIEW\r\n\r\n\r\nview : Model -> Html Msg\r\nview model =\r\n    div [] [ text \"Hello World\" ]\r\n"
  },
  {
    "path": "ember/.editorconfig",
    "content": "# EditorConfig helps developers define and maintain consistent\n# coding styles between different editors and IDEs\n# editorconfig.org\n\nroot = true\n\n[*]\nend_of_line = lf\ncharset = utf-8\ntrim_trailing_whitespace = true\ninsert_final_newline = true\nindent_style = space\nindent_size = 2\n\n[*.hbs]\ninsert_final_newline = false\n\n[*.{diff,md}]\ntrim_trailing_whitespace = false\n"
  },
  {
    "path": "ember/.ember-cli",
    "content": "{\n  /**\n    Ember CLI sends analytics information by default. The data is completely\n    anonymous, but there are times when you might want to disable this behavior.\n\n    Setting `disableAnalytics` to true will prevent any data from being sent.\n  */\n  \"disableAnalytics\": false\n}\n"
  },
  {
    "path": "ember/.eslintignore",
    "content": "# unconventional js\n/blueprints/*/files/\n/vendor/\n\n# compiled output\n/dist/\n/tmp/\n\n# dependencies\n/bower_components/\n/node_modules/\n\n# misc\n/coverage/\n!.*\n\n# ember-try\n/.node_modules.ember-try/\n/bower.json.ember-try\n/package.json.ember-try\n"
  },
  {
    "path": "ember/.eslintrc.js",
    "content": "'use strict';\n\nmodule.exports = {\n  root: true,\n  parser: 'babel-eslint',\n  parserOptions: {\n    ecmaVersion: 2018,\n    sourceType: 'module',\n    ecmaFeatures: {\n      legacyDecorators: true\n    }\n  },\n  plugins: [\n    'ember'\n  ],\n  extends: [\n    'eslint:recommended',\n    'plugin:ember/recommended'\n  ],\n  env: {\n    browser: true\n  },\n  rules: {\n    'ember/no-jquery': 'error'\n  },\n  overrides: [\n    // node files\n    {\n      files: [\n        '.eslintrc.js',\n        '.template-lintrc.js',\n        'ember-cli-build.js',\n        'testem.js',\n        'blueprints/*/index.js',\n        'config/**/*.js',\n        'lib/*/index.js',\n        'server/**/*.js'\n      ],\n      parserOptions: {\n        sourceType: 'script'\n      },\n      env: {\n        browser: false,\n        node: true\n      },\n      plugins: ['node'],\n      rules: Object.assign({}, require('eslint-plugin-node').configs.recommended.rules, {\n        // add your custom rules and overrides for node files here\n\n        // this can be removed once the following is fixed\n        // https://github.com/mysticatea/eslint-plugin-node/issues/77\n        'node/no-unpublished-require': 'off'\n      })\n    }\n  ]\n};\n"
  },
  {
    "path": "ember/.gitignore",
    "content": "# See https://help.github.com/ignore-files/ for more about ignoring files.\n\n# compiled output\n/dist/\n/tmp/\n\n# dependencies\n/bower_components/\n/node_modules/\n\n# misc\n/.env*\n/.pnp*\n/.sass-cache\n/connect.lock\n/coverage/\n/libpeerconnection.log\n/npm-debug.log*\n/testem.log\n/yarn-error.log\n\n# ember-try\n/.node_modules.ember-try/\n/bower.json.ember-try\n/package.json.ember-try\n"
  },
  {
    "path": "ember/.template-lintrc.js",
    "content": "'use strict';\n\nmodule.exports = {\n  extends: 'octane'\n};\n"
  },
  {
    "path": "ember/.watchmanconfig",
    "content": "{\n  \"ignore_dirs\": [\"tmp\", \"dist\"]\n}\n"
  },
  {
    "path": "ember/README.md",
    "content": "# hello-ember\n\nA minimal hello world example in Ember.\n\n## Prerequisites\n\nYou will need the following things properly installed on your computer.\n\n* [Git](https://git-scm.com/)\n* [Node.js](https://nodejs.org/) (with npm)\n* [Ember CLI](https://ember-cli.com/)\n* [Google Chrome](https://google.com/chrome/)\n\n## Installation\n\n* `git clone https://github.com/johnpapa/hello-worlds` this repository\n* `cd hello-worlds/ember`\n* `npm install`\n\n## Running / Development\n\n* `ember serve` or `npm run start`\n* Visit your app at [http://localhost:4200](http://localhost:4200).\n\n### Code Generators\n\nMake use of the many generators for code, try `ember help generate` for more details\n\n### Linting\n\n* `npm run lint:hbs`\n* `npm run lint:js`\n* `npm run lint:js -- --fix`\n\n### Building\n\n* `ember build` (development)\n* `ember build --environment production` (production) or `npm run build`\n\n## Further Reading / Useful Links\n\n* [ember.js](https://emberjs.com/)\n* [ember-cli](https://ember-cli.com/)\n* Development Browser Extensions\n  * [ember inspector for chrome](https://chrome.google.com/webstore/detail/ember-inspector/bmdblncegkenkacieihfhpjfppoconhi)\n  * [ember inspector for firefox](https://addons.mozilla.org/en-US/firefox/addon/ember-inspector/)\n"
  },
  {
    "path": "ember/app/app.js",
    "content": "import Application from '@ember/application';\nimport Resolver from 'ember-resolver';\nimport loadInitializers from 'ember-load-initializers';\nimport config from './config/environment';\n\nexport default class App extends Application {\n  modulePrefix = config.modulePrefix;\n  podModulePrefix = config.podModulePrefix;\n  Resolver = Resolver;\n}\n\nloadInitializers(App, config.modulePrefix);\n"
  },
  {
    "path": "ember/app/index.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <meta charset=\"utf-8\">\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n    <title>HelloEmber</title>\n    <meta name=\"description\" content=\"\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n\n    {{content-for \"head\"}}\n\n    <link integrity=\"\" rel=\"stylesheet\" href=\"{{rootURL}}assets/vendor.css\">\n    <link integrity=\"\" rel=\"stylesheet\" href=\"{{rootURL}}assets/hello-ember.css\">\n\n    {{content-for \"head-footer\"}}\n  </head>\n  <body>\n    {{content-for \"body\"}}\n\n    <script src=\"{{rootURL}}assets/vendor.js\"></script>\n    <script src=\"{{rootURL}}assets/hello-ember.js\"></script>\n\n    {{content-for \"body-footer\"}}\n  </body>\n</html>\n"
  },
  {
    "path": "ember/app/styles/app.css",
    "content": ""
  },
  {
    "path": "ember/app/templates/application.hbs",
    "content": "Hello world!"
  },
  {
    "path": "ember/config/environment.js",
    "content": "'use strict';\n\nmodule.exports = function(environment) {\n  let ENV = {\n    modulePrefix: 'hello-ember',\n    environment,\n    rootURL: '/',\n    locationType: 'none',\n    EmberENV: {\n      FEATURES: {\n        // Here you can enable experimental features on an ember canary build\n        // e.g. EMBER_NATIVE_DECORATOR_SUPPORT: true\n      },\n      EXTEND_PROTOTYPES: {\n        // Prevent Ember Data from overriding Date.parse.\n        Date: false\n      }\n    },\n\n    APP: {\n      // Here you can pass flags/options to your application instance\n      // when it is created\n    }\n  };\n\n  return ENV;\n};\n"
  },
  {
    "path": "ember/config/optional-features.json",
    "content": "{\n  \"application-template-wrapper\": false,\n  \"default-async-observers\": true,\n  \"jquery-integration\": false,\n  \"template-only-glimmer-components\": true\n}\n"
  },
  {
    "path": "ember/config/targets.js",
    "content": "'use strict';\n\nconst browsers = [\n  'last 1 Chrome versions',\n  'last 1 Firefox versions',\n  'last 1 Safari versions'\n];\n\nconst isCI = !!process.env.CI;\nconst isProduction = process.env.EMBER_ENV === 'production';\n\nif (isCI || isProduction) {\n  browsers.push('ie 11');\n}\n\nmodule.exports = {\n  browsers\n};\n"
  },
  {
    "path": "ember/ember-cli-build.js",
    "content": "'use strict';\n\nconst EmberApp = require('ember-cli/lib/broccoli/ember-app');\n\nmodule.exports = function(defaults) {\n  let app = new EmberApp(defaults, {\n    // Add options here\n  });\n\n  // Use `app.import` to add additional libraries to the generated\n  // output files.\n  //\n  // If you need to use different assets in different\n  // environments, specify an object as the first parameter. That\n  // object's keys should be the environment name and the values\n  // should be the asset to use in that environment.\n  //\n  // If the library that you are including contains AMD or ES6\n  // modules that you would like to import into your application\n  // please specify an object with the list of modules as keys\n  // along with the exports of each module as its value.\n\n  return app.toTree();\n};\n"
  },
  {
    "path": "ember/package.json",
    "content": "{\n  \"name\": \"hello-ember\",\n  \"version\": \"0.0.0\",\n  \"private\": true,\n  \"description\": \"A minimal hello world example in Ember\",\n  \"license\": \"MIT\",\n  \"scripts\": {\n    \"build\": \"ember build --environment=production\",\n    \"lint\": \"npm-run-all --aggregate-output --continue-on-error --parallel lint:*\",\n    \"lint:hbs\": \"ember-template-lint .\",\n    \"lint:js\": \"eslint .\",\n    \"start\": \"ember serve\"\n  },\n  \"devDependencies\": {\n    \"@ember/optional-features\": \"^1.3.0\",\n    \"@glimmer/component\": \"^1.0.0\",\n    \"@glimmer/tracking\": \"^1.0.0\",\n    \"babel-eslint\": \"^10.1.0\",\n    \"broccoli-asset-rev\": \"^3.0.0\",\n    \"ember-auto-import\": \"^1.5.3\",\n    \"ember-cli\": \"~3.18.0\",\n    \"ember-cli-app-version\": \"^3.2.0\",\n    \"ember-cli-babel\": \"^7.19.0\",\n    \"ember-cli-dependency-checker\": \"^3.2.0\",\n    \"ember-cli-htmlbars\": \"^4.3.1\",\n    \"ember-cli-inject-live-reload\": \"^2.0.2\",\n    \"ember-cli-sri\": \"^2.1.1\",\n    \"ember-cli-uglify\": \"^3.0.0\",\n    \"ember-export-application-global\": \"^2.0.1\",\n    \"ember-fetch\": \"^8.0.1\",\n    \"ember-load-initializers\": \"^2.1.1\",\n    \"ember-maybe-import-regenerator\": \"^0.1.6\",\n    \"ember-resolver\": \"^8.0.0\",\n    \"ember-source\": \"~3.18.0\",\n    \"ember-template-lint\": \"^2.6.0\",\n    \"eslint\": \"^6.8.0\",\n    \"eslint-plugin-ember\": \"^8.4.0\",\n    \"eslint-plugin-node\": \"^11.1.0\",\n    \"loader.js\": \"^4.7.0\",\n    \"npm-run-all\": \"^4.1.5\"\n  },\n  \"engines\": {\n    \"node\": \"10.* || >= 12\"\n  },\n  \"ember\": {\n    \"edition\": \"octane\"\n  }\n}\n"
  },
  {
    "path": "ember/public/robots.txt",
    "content": "# http://www.robotstxt.org\nUser-agent: *\nDisallow:\n"
  },
  {
    "path": "flutter/.gitignore",
    "content": "# Miscellaneous\n*.class\n*.log\n*.pyc\n*.swp\n.DS_Store\n.atom/\n.buildlog/\n.history\n.svn/\n\n# IntelliJ related\n*.iml\n*.ipr\n*.iws\n.idea/\n\n# The .vscode folder contains launch configuration and tasks you configure in\n# VS Code which you may wish to be included in version control, so this line\n# is commented out by default.\n#.vscode/\n\n# Flutter/Dart/Pub related\n**/doc/api/\n**/ios/Flutter/.last_build_id\n.dart_tool/\n.flutter-plugins\n.flutter-plugins-dependencies\n.packages\n.pub-cache/\n.pub/\n/build/\n\n# Web related\nlib/generated_plugin_registrant.dart\n\n# Symbolication related\napp.*.symbols\n\n# Obfuscation related\napp.*.map.json\n\n# Exceptions to above rules.\n!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages\n"
  },
  {
    "path": "flutter/.metadata",
    "content": "# This file tracks properties of this Flutter project.\n# Used by Flutter tool to assess capabilities and perform upgrades etc.\n#\n# This file should be version controlled and should not be manually edited.\n\nversion:\n  revision: 2738a1148ba6c9a6114df62358109407c3ef2553\n  channel: beta\n\nproject_type: app\n"
  },
  {
    "path": "flutter/README.md",
    "content": "# A Hello World Flutter project\n\n## Getting Started\n\nYou need to have Flutter SDK installed on your computer in order to build and run this project.\n\nFollow the steps:\n\n- [Flutter SDK installation](https://flutter.dev/docs/get-started/install). There is no need to install Android Studio if you only plan to build a web app.\n\nThen, to enable [Flutter for web](https://flutter.dev/docs/get-started/web) run:\n\n```\n flutter channel beta\n flutter upgrade\n flutter config --enable-web\n```\n\nRun your web app\n\n```\nflutter run -d chrome\n```\n\nBuild your wed app to build/web folder:\n\n```\n flutter build web\n```\n\nTo deploy Flutter Web app to [Azure Static Web Apps](https://docs.microsoft.com/learn/modules/publish-app-service-static-web-app-api) service use this [GitHub Action](https://github.com/webmaxru/hello-flutter/blob/master/.github/workflows/azure-static-web-apps-gentle-sky-0b647711e.yml)\n"
  },
  {
    "path": "flutter/android/.gitignore",
    "content": "gradle-wrapper.jar\n/.gradle\n/captures/\n/gradlew\n/gradlew.bat\n/local.properties\nGeneratedPluginRegistrant.java\n"
  },
  {
    "path": "flutter/android/app/build.gradle",
    "content": "def localProperties = new Properties()\ndef localPropertiesFile = rootProject.file('local.properties')\nif (localPropertiesFile.exists()) {\n    localPropertiesFile.withReader('UTF-8') { reader ->\n        localProperties.load(reader)\n    }\n}\n\ndef flutterRoot = localProperties.getProperty('flutter.sdk')\nif (flutterRoot == null) {\n    throw new GradleException(\"Flutter SDK not found. Define location with flutter.sdk in the local.properties file.\")\n}\n\ndef flutterVersionCode = localProperties.getProperty('flutter.versionCode')\nif (flutterVersionCode == null) {\n    flutterVersionCode = '1'\n}\n\ndef flutterVersionName = localProperties.getProperty('flutter.versionName')\nif (flutterVersionName == null) {\n    flutterVersionName = '1.0'\n}\n\napply plugin: 'com.android.application'\napply plugin: 'kotlin-android'\napply from: \"$flutterRoot/packages/flutter_tools/gradle/flutter.gradle\"\n\nandroid {\n    compileSdkVersion 28\n\n    sourceSets {\n        main.java.srcDirs += 'src/main/kotlin'\n    }\n\n    lintOptions {\n        disable 'InvalidPackage'\n    }\n\n    defaultConfig {\n        // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).\n        applicationId \"com.example.hello_flutter\"\n        minSdkVersion 16\n        targetSdkVersion 28\n        versionCode flutterVersionCode.toInteger()\n        versionName flutterVersionName\n    }\n\n    buildTypes {\n        release {\n            // TODO: Add your own signing config for the release build.\n            // Signing with the debug keys for now, so `flutter run --release` works.\n            signingConfig signingConfigs.debug\n        }\n    }\n}\n\nflutter {\n    source '../..'\n}\n\ndependencies {\n    implementation \"org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version\"\n}\n"
  },
  {
    "path": "flutter/android/app/src/debug/AndroidManifest.xml",
    "content": "<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    package=\"com.example.hello_flutter\">\n    <!-- Flutter needs it to communicate with the running application\n         to allow setting breakpoints, to provide hot reload, etc.\n    -->\n    <uses-permission android:name=\"android.permission.INTERNET\"/>\n</manifest>\n"
  },
  {
    "path": "flutter/android/app/src/main/AndroidManifest.xml",
    "content": "<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    package=\"com.example.hello_flutter\">\n    <!-- io.flutter.app.FlutterApplication is an android.app.Application that\n         calls FlutterMain.startInitialization(this); in its onCreate method.\n         In most cases you can leave this as-is, but you if you want to provide\n         additional functionality it is fine to subclass or reimplement\n         FlutterApplication and put your custom class here. -->\n    <application\n        android:name=\"io.flutter.app.FlutterApplication\"\n        android:label=\"hello_flutter\"\n        android:icon=\"@mipmap/ic_launcher\">\n        <activity\n            android:name=\".MainActivity\"\n            android:launchMode=\"singleTop\"\n            android:theme=\"@style/LaunchTheme\"\n            android:configChanges=\"orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode\"\n            android:hardwareAccelerated=\"true\"\n            android:windowSoftInputMode=\"adjustResize\">\n            <!-- Specifies an Android theme to apply to this Activity as soon as\n                 the Android process has started. This theme is visible to the user\n                 while the Flutter UI initializes. After that, this theme continues\n                 to determine the Window background behind the Flutter UI. -->\n            <meta-data\n              android:name=\"io.flutter.embedding.android.NormalTheme\"\n              android:resource=\"@style/NormalTheme\"\n              />\n            <!-- Displays an Android View that continues showing the launch screen\n                 Drawable until Flutter paints its first frame, then this splash\n                 screen fades out. A splash screen is useful to avoid any visual\n                 gap between the end of Android's launch screen and the painting of\n                 Flutter's first frame. -->\n            <meta-data\n              android:name=\"io.flutter.embedding.android.SplashScreenDrawable\"\n              android:resource=\"@drawable/launch_background\"\n              />\n            <intent-filter>\n                <action android:name=\"android.intent.action.MAIN\"/>\n                <category android:name=\"android.intent.category.LAUNCHER\"/>\n            </intent-filter>\n        </activity>\n        <!-- Don't delete the meta-data below.\n             This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->\n        <meta-data\n            android:name=\"flutterEmbedding\"\n            android:value=\"2\" />\n    </application>\n</manifest>\n"
  },
  {
    "path": "flutter/android/app/src/main/kotlin/com/example/hello_flutter/MainActivity.kt",
    "content": "package com.example.hello_flutter\n\nimport io.flutter.embedding.android.FlutterActivity\n\nclass MainActivity: FlutterActivity() {\n}\n"
  },
  {
    "path": "flutter/android/app/src/main/res/drawable/launch_background.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!-- Modify this file to customize your launch splash screen -->\n<layer-list xmlns:android=\"http://schemas.android.com/apk/res/android\">\n    <item android:drawable=\"@android:color/white\" />\n\n    <!-- You can insert your own image assets here -->\n    <!-- <item>\n        <bitmap\n            android:gravity=\"center\"\n            android:src=\"@mipmap/launch_image\" />\n    </item> -->\n</layer-list>\n"
  },
  {
    "path": "flutter/android/app/src/main/res/values/styles.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n    <!-- Theme applied to the Android Window while the process is starting -->\n    <style name=\"LaunchTheme\" parent=\"@android:style/Theme.Black.NoTitleBar\">\n        <!-- Show a splash screen on the activity. Automatically removed when\n             Flutter draws its first frame -->\n        <item name=\"android:windowBackground\">@drawable/launch_background</item>\n    </style>\n    <!-- Theme applied to the Android Window as soon as the process has started.\n         This theme determines the color of the Android Window while your\n         Flutter UI initializes, as well as behind your Flutter UI while its\n         running.\n         \n         This Theme is only used starting with V2 of Flutter's Android embedding. -->\n    <style name=\"NormalTheme\" parent=\"@android:style/Theme.Black.NoTitleBar\">\n        <item name=\"android:windowBackground\">@android:color/white</item>\n    </style>\n</resources>\n"
  },
  {
    "path": "flutter/android/app/src/profile/AndroidManifest.xml",
    "content": "<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    package=\"com.example.hello_flutter\">\n    <!-- Flutter needs it to communicate with the running application\n         to allow setting breakpoints, to provide hot reload, etc.\n    -->\n    <uses-permission android:name=\"android.permission.INTERNET\"/>\n</manifest>\n"
  },
  {
    "path": "flutter/android/build.gradle",
    "content": "buildscript {\n    ext.kotlin_version = '1.3.50'\n    repositories {\n        google()\n        jcenter()\n    }\n\n    dependencies {\n        classpath 'com.android.tools.build:gradle:3.5.0'\n        classpath \"org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version\"\n    }\n}\n\nallprojects {\n    repositories {\n        google()\n        jcenter()\n    }\n}\n\nrootProject.buildDir = '../build'\nsubprojects {\n    project.buildDir = \"${rootProject.buildDir}/${project.name}\"\n}\nsubprojects {\n    project.evaluationDependsOn(':app')\n}\n\ntask clean(type: Delete) {\n    delete rootProject.buildDir\n}\n"
  },
  {
    "path": "flutter/android/gradle/wrapper/gradle-wrapper.properties",
    "content": "#Fri Jun 23 08:50:38 CEST 2017\ndistributionBase=GRADLE_USER_HOME\ndistributionPath=wrapper/dists\nzipStoreBase=GRADLE_USER_HOME\nzipStorePath=wrapper/dists\ndistributionUrl=https\\://services.gradle.org/distributions/gradle-5.6.2-all.zip\n"
  },
  {
    "path": "flutter/android/gradle.properties",
    "content": "org.gradle.jvmargs=-Xmx1536M\nandroid.enableR8=true\nandroid.useAndroidX=true\nandroid.enableJetifier=true\n"
  },
  {
    "path": "flutter/android/settings.gradle",
    "content": "// Copyright 2014 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style license that can be\n// found in the LICENSE file.\n\ninclude ':app'\n\ndef localPropertiesFile = new File(rootProject.projectDir, \"local.properties\")\ndef properties = new Properties()\n\nassert localPropertiesFile.exists()\nlocalPropertiesFile.withReader(\"UTF-8\") { reader -> properties.load(reader) }\n\ndef flutterSdkPath = properties.getProperty(\"flutter.sdk\")\nassert flutterSdkPath != null, \"flutter.sdk not set in local.properties\"\napply from: \"$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle\"\n"
  },
  {
    "path": "flutter/ios/.gitignore",
    "content": "*.mode1v3\n*.mode2v3\n*.moved-aside\n*.pbxuser\n*.perspectivev3\n**/*sync/\n.sconsign.dblite\n.tags*\n**/.vagrant/\n**/DerivedData/\nIcon?\n**/Pods/\n**/.symlinks/\nprofile\nxcuserdata\n**/.generated/\nFlutter/App.framework\nFlutter/Flutter.framework\nFlutter/Flutter.podspec\nFlutter/Generated.xcconfig\nFlutter/app.flx\nFlutter/app.zip\nFlutter/flutter_assets/\nFlutter/flutter_export_environment.sh\nServiceDefinitions.json\nRunner/GeneratedPluginRegistrant.*\n\n# Exceptions to above rules.\n!default.mode1v3\n!default.mode2v3\n!default.pbxuser\n!default.perspectivev3\n"
  },
  {
    "path": "flutter/ios/Flutter/AppFrameworkInfo.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n  <key>CFBundleDevelopmentRegion</key>\n  <string>$(DEVELOPMENT_LANGUAGE)</string>\n  <key>CFBundleExecutable</key>\n  <string>App</string>\n  <key>CFBundleIdentifier</key>\n  <string>io.flutter.flutter.app</string>\n  <key>CFBundleInfoDictionaryVersion</key>\n  <string>6.0</string>\n  <key>CFBundleName</key>\n  <string>App</string>\n  <key>CFBundlePackageType</key>\n  <string>FMWK</string>\n  <key>CFBundleShortVersionString</key>\n  <string>1.0</string>\n  <key>CFBundleSignature</key>\n  <string>????</string>\n  <key>CFBundleVersion</key>\n  <string>1.0</string>\n  <key>MinimumOSVersion</key>\n  <string>8.0</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "flutter/ios/Flutter/Debug.xcconfig",
    "content": "#include \"Generated.xcconfig\"\n"
  },
  {
    "path": "flutter/ios/Flutter/Release.xcconfig",
    "content": "#include \"Generated.xcconfig\"\n"
  },
  {
    "path": "flutter/ios/Runner/AppDelegate.swift",
    "content": "import UIKit\nimport Flutter\n\n@UIApplicationMain\n@objc class AppDelegate: FlutterAppDelegate {\n  override func application(\n    _ application: UIApplication,\n    didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?\n  ) -> Bool {\n    GeneratedPluginRegistrant.register(with: self)\n    return super.application(application, didFinishLaunchingWithOptions: launchOptions)\n  }\n}\n"
  },
  {
    "path": "flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"size\" : \"20x20\",\n      \"idiom\" : \"iphone\",\n      \"filename\" : \"Icon-App-20x20@2x.png\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"size\" : \"20x20\",\n      \"idiom\" : \"iphone\",\n      \"filename\" : \"Icon-App-20x20@3x.png\",\n      \"scale\" : \"3x\"\n    },\n    {\n      \"size\" : \"29x29\",\n      \"idiom\" : \"iphone\",\n      \"filename\" : \"Icon-App-29x29@1x.png\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"size\" : \"29x29\",\n      \"idiom\" : \"iphone\",\n      \"filename\" : \"Icon-App-29x29@2x.png\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"size\" : \"29x29\",\n      \"idiom\" : \"iphone\",\n      \"filename\" : \"Icon-App-29x29@3x.png\",\n      \"scale\" : \"3x\"\n    },\n    {\n      \"size\" : \"40x40\",\n      \"idiom\" : \"iphone\",\n      \"filename\" : \"Icon-App-40x40@2x.png\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"size\" : \"40x40\",\n      \"idiom\" : \"iphone\",\n      \"filename\" : \"Icon-App-40x40@3x.png\",\n      \"scale\" : \"3x\"\n    },\n    {\n      \"size\" : \"60x60\",\n      \"idiom\" : \"iphone\",\n      \"filename\" : \"Icon-App-60x60@2x.png\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"size\" : \"60x60\",\n      \"idiom\" : \"iphone\",\n      \"filename\" : \"Icon-App-60x60@3x.png\",\n      \"scale\" : \"3x\"\n    },\n    {\n      \"size\" : \"20x20\",\n      \"idiom\" : \"ipad\",\n      \"filename\" : \"Icon-App-20x20@1x.png\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"size\" : \"20x20\",\n      \"idiom\" : \"ipad\",\n      \"filename\" : \"Icon-App-20x20@2x.png\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"size\" : \"29x29\",\n      \"idiom\" : \"ipad\",\n      \"filename\" : \"Icon-App-29x29@1x.png\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"size\" : \"29x29\",\n      \"idiom\" : \"ipad\",\n      \"filename\" : \"Icon-App-29x29@2x.png\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"size\" : \"40x40\",\n      \"idiom\" : \"ipad\",\n      \"filename\" : \"Icon-App-40x40@1x.png\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"size\" : \"40x40\",\n      \"idiom\" : \"ipad\",\n      \"filename\" : \"Icon-App-40x40@2x.png\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"size\" : \"76x76\",\n      \"idiom\" : \"ipad\",\n      \"filename\" : \"Icon-App-76x76@1x.png\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"size\" : \"76x76\",\n      \"idiom\" : \"ipad\",\n      \"filename\" : \"Icon-App-76x76@2x.png\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"size\" : \"83.5x83.5\",\n      \"idiom\" : \"ipad\",\n      \"filename\" : \"Icon-App-83.5x83.5@2x.png\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"size\" : \"1024x1024\",\n      \"idiom\" : \"ios-marketing\",\n      \"filename\" : \"Icon-App-1024x1024@1x.png\",\n      \"scale\" : \"1x\"\n    }\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}\n"
  },
  {
    "path": "flutter/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"filename\" : \"LaunchImage.png\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"filename\" : \"LaunchImage@2x.png\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"filename\" : \"LaunchImage@3x.png\",\n      \"scale\" : \"3x\"\n    }\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}\n"
  },
  {
    "path": "flutter/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md",
    "content": "# Launch Screen Assets\n\nYou can customize the launch screen with your own desired assets by replacing the image files in this directory.\n\nYou can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images."
  },
  {
    "path": "flutter/ios/Runner/Base.lproj/LaunchScreen.storyboard",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"12121\" systemVersion=\"16G29\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" launchScreen=\"YES\" colorMatched=\"YES\" initialViewController=\"01J-lp-oVM\">\n    <dependencies>\n        <deployment identifier=\"iOS\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"12089\"/>\n    </dependencies>\n    <scenes>\n        <!--View Controller-->\n        <scene sceneID=\"EHf-IW-A2E\">\n            <objects>\n                <viewController id=\"01J-lp-oVM\" sceneMemberID=\"viewController\">\n                    <layoutGuides>\n                        <viewControllerLayoutGuide type=\"top\" id=\"Ydg-fD-yQy\"/>\n                        <viewControllerLayoutGuide type=\"bottom\" id=\"xbc-2k-c8Z\"/>\n                    </layoutGuides>\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"Ze5-6b-2t3\">\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <subviews>\n                            <imageView opaque=\"NO\" clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"center\" image=\"LaunchImage\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"YRO-k0-Ey4\">\n                            </imageView>\n                        </subviews>\n                        <color key=\"backgroundColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                        <constraints>\n                            <constraint firstItem=\"YRO-k0-Ey4\" firstAttribute=\"centerX\" secondItem=\"Ze5-6b-2t3\" secondAttribute=\"centerX\" id=\"1a2-6s-vTC\"/>\n                            <constraint firstItem=\"YRO-k0-Ey4\" firstAttribute=\"centerY\" secondItem=\"Ze5-6b-2t3\" secondAttribute=\"centerY\" id=\"4X2-HB-R7a\"/>\n                        </constraints>\n                    </view>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"iYj-Kq-Ea1\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"53\" y=\"375\"/>\n        </scene>\n    </scenes>\n    <resources>\n        <image name=\"LaunchImage\" width=\"168\" height=\"185\"/>\n    </resources>\n</document>\n"
  },
  {
    "path": "flutter/ios/Runner/Base.lproj/Main.storyboard",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"10117\" systemVersion=\"15F34\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" useTraitCollections=\"YES\" initialViewController=\"BYZ-38-t0r\">\n    <dependencies>\n        <deployment identifier=\"iOS\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"10085\"/>\n    </dependencies>\n    <scenes>\n        <!--Flutter View Controller-->\n        <scene sceneID=\"tne-QT-ifu\">\n            <objects>\n                <viewController id=\"BYZ-38-t0r\" customClass=\"FlutterViewController\" sceneMemberID=\"viewController\">\n                    <layoutGuides>\n                        <viewControllerLayoutGuide type=\"top\" id=\"y3c-jy-aDJ\"/>\n                        <viewControllerLayoutGuide type=\"bottom\" id=\"wfy-db-euE\"/>\n                    </layoutGuides>\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"8bC-Xf-vdC\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"600\" height=\"600\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <color key=\"backgroundColor\" white=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"calibratedWhite\"/>\n                    </view>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"dkx-z0-nzr\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n        </scene>\n    </scenes>\n</document>\n"
  },
  {
    "path": "flutter/ios/Runner/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>$(DEVELOPMENT_LANGUAGE)</string>\n\t<key>CFBundleExecutable</key>\n\t<string>$(EXECUTABLE_NAME)</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>hello_flutter</string>\n\t<key>CFBundlePackageType</key>\n\t<string>APPL</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>$(FLUTTER_BUILD_NAME)</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleVersion</key>\n\t<string>$(FLUTTER_BUILD_NUMBER)</string>\n\t<key>LSRequiresIPhoneOS</key>\n\t<true/>\n\t<key>UILaunchStoryboardName</key>\n\t<string>LaunchScreen</string>\n\t<key>UIMainStoryboardFile</key>\n\t<string>Main</string>\n\t<key>UISupportedInterfaceOrientations</key>\n\t<array>\n\t\t<string>UIInterfaceOrientationPortrait</string>\n\t\t<string>UIInterfaceOrientationLandscapeLeft</string>\n\t\t<string>UIInterfaceOrientationLandscapeRight</string>\n\t</array>\n\t<key>UISupportedInterfaceOrientations~ipad</key>\n\t<array>\n\t\t<string>UIInterfaceOrientationPortrait</string>\n\t\t<string>UIInterfaceOrientationPortraitUpsideDown</string>\n\t\t<string>UIInterfaceOrientationLandscapeLeft</string>\n\t\t<string>UIInterfaceOrientationLandscapeRight</string>\n\t</array>\n\t<key>UIViewControllerBasedStatusBarAppearance</key>\n\t<false/>\n</dict>\n</plist>\n"
  },
  {
    "path": "flutter/ios/Runner/Runner-Bridging-Header.h",
    "content": "#import \"GeneratedPluginRegistrant.h\"\n"
  },
  {
    "path": "flutter/ios/Runner.xcodeproj/project.pbxproj",
    "content": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 46;\n\tobjects = {\n\n/* Begin PBXBuildFile section */\n\t\t1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };\n\t\t3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };\n\t\t74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };\n\t\t97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };\n\t\t97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };\n\t\t97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };\n/* End PBXBuildFile section */\n\n/* Begin PBXCopyFilesBuildPhase section */\n\t\t9705A1C41CF9048500538489 /* Embed Frameworks */ = {\n\t\t\tisa = PBXCopyFilesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tdstPath = \"\";\n\t\t\tdstSubfolderSpec = 10;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\tname = \"Embed Frameworks\";\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXCopyFilesBuildPhase section */\n\n/* Begin PBXFileReference section */\n\t\t1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = \"<group>\"; };\n\t\t1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = \"<group>\"; };\n\t\t3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = \"<group>\"; };\n\t\t74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = \"Runner-Bridging-Header.h\"; sourceTree = \"<group>\"; };\n\t\t74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = \"<group>\"; };\n\t\t7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = \"<group>\"; };\n\t\t9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = \"<group>\"; };\n\t\t9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = \"<group>\"; };\n\t\t97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = \"<group>\"; };\n\t\t97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = \"<group>\"; };\n\t\t97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = \"<group>\"; };\n\t\t97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = \"<group>\"; };\n/* End PBXFileReference section */\n\n/* Begin PBXFrameworksBuildPhase section */\n\t\t97C146EB1CF9000F007C117D /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXFrameworksBuildPhase section */\n\n/* Begin PBXGroup section */\n\t\t9740EEB11CF90186004384FC /* Flutter */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */,\n\t\t\t\t9740EEB21CF90195004384FC /* Debug.xcconfig */,\n\t\t\t\t7AFA3C8E1D35360C0083082E /* Release.xcconfig */,\n\t\t\t\t9740EEB31CF90195004384FC /* Generated.xcconfig */,\n\t\t\t);\n\t\t\tname = Flutter;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t97C146E51CF9000F007C117D = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t9740EEB11CF90186004384FC /* Flutter */,\n\t\t\t\t97C146F01CF9000F007C117D /* Runner */,\n\t\t\t\t97C146EF1CF9000F007C117D /* Products */,\n\t\t\t);\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t97C146EF1CF9000F007C117D /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t97C146EE1CF9000F007C117D /* Runner.app */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t97C146F01CF9000F007C117D /* Runner */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t97C146FA1CF9000F007C117D /* Main.storyboard */,\n\t\t\t\t97C146FD1CF9000F007C117D /* Assets.xcassets */,\n\t\t\t\t97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */,\n\t\t\t\t97C147021CF9000F007C117D /* Info.plist */,\n\t\t\t\t97C146F11CF9000F007C117D /* Supporting Files */,\n\t\t\t\t1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */,\n\t\t\t\t1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */,\n\t\t\t\t74858FAE1ED2DC5600515810 /* AppDelegate.swift */,\n\t\t\t\t74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */,\n\t\t\t);\n\t\t\tpath = Runner;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t97C146F11CF9000F007C117D /* Supporting Files */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t);\n\t\t\tname = \"Supporting Files\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXGroup section */\n\n/* Begin PBXNativeTarget section */\n\t\t97C146ED1CF9000F007C117D /* Runner */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget \"Runner\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t9740EEB61CF901F6004384FC /* Run Script */,\n\t\t\t\t97C146EA1CF9000F007C117D /* Sources */,\n\t\t\t\t97C146EB1CF9000F007C117D /* Frameworks */,\n\t\t\t\t97C146EC1CF9000F007C117D /* Resources */,\n\t\t\t\t9705A1C41CF9048500538489 /* Embed Frameworks */,\n\t\t\t\t3B06AD1E1E4923F5004D2608 /* Thin Binary */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = Runner;\n\t\t\tproductName = Runner;\n\t\t\tproductReference = 97C146EE1CF9000F007C117D /* Runner.app */;\n\t\t\tproductType = \"com.apple.product-type.application\";\n\t\t};\n/* End PBXNativeTarget section */\n\n/* Begin PBXProject section */\n\t\t97C146E61CF9000F007C117D /* Project object */ = {\n\t\t\tisa = PBXProject;\n\t\t\tattributes = {\n\t\t\t\tLastUpgradeCheck = 1020;\n\t\t\t\tORGANIZATIONNAME = \"\";\n\t\t\t\tTargetAttributes = {\n\t\t\t\t\t97C146ED1CF9000F007C117D = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 7.3.1;\n\t\t\t\t\t\tLastSwiftMigration = 1100;\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t};\n\t\t\tbuildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject \"Runner\" */;\n\t\t\tcompatibilityVersion = \"Xcode 9.3\";\n\t\t\tdevelopmentRegion = en;\n\t\t\thasScannedForEncodings = 0;\n\t\t\tknownRegions = (\n\t\t\t\ten,\n\t\t\t\tBase,\n\t\t\t);\n\t\t\tmainGroup = 97C146E51CF9000F007C117D;\n\t\t\tproductRefGroup = 97C146EF1CF9000F007C117D /* Products */;\n\t\t\tprojectDirPath = \"\";\n\t\t\tprojectRoot = \"\";\n\t\t\ttargets = (\n\t\t\t\t97C146ED1CF9000F007C117D /* Runner */,\n\t\t\t);\n\t\t};\n/* End PBXProject section */\n\n/* Begin PBXResourcesBuildPhase section */\n\t\t97C146EC1CF9000F007C117D /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */,\n\t\t\t\t3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */,\n\t\t\t\t97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */,\n\t\t\t\t97C146FC1CF9000F007C117D /* Main.storyboard in Resources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXResourcesBuildPhase section */\n\n/* Begin PBXShellScriptBuildPhase section */\n\t\t3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {\n\t\t\tisa = PBXShellScriptBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\tinputPaths = (\n\t\t\t);\n\t\t\tname = \"Thin Binary\";\n\t\t\toutputPaths = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t\tshellPath = /bin/sh;\n\t\t\tshellScript = \"/bin/sh \\\"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\\\" embed_and_thin\";\n\t\t};\n\t\t9740EEB61CF901F6004384FC /* Run Script */ = {\n\t\t\tisa = PBXShellScriptBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\tinputPaths = (\n\t\t\t);\n\t\t\tname = \"Run Script\";\n\t\t\toutputPaths = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t\tshellPath = /bin/sh;\n\t\t\tshellScript = \"/bin/sh \\\"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\\\" build\";\n\t\t};\n/* End PBXShellScriptBuildPhase section */\n\n/* Begin PBXSourcesBuildPhase section */\n\t\t97C146EA1CF9000F007C117D /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */,\n\t\t\t\t1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXSourcesBuildPhase section */\n\n/* Begin PBXVariantGroup section */\n\t\t97C146FA1CF9000F007C117D /* Main.storyboard */ = {\n\t\t\tisa = PBXVariantGroup;\n\t\t\tchildren = (\n\t\t\t\t97C146FB1CF9000F007C117D /* Base */,\n\t\t\t);\n\t\t\tname = Main.storyboard;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = {\n\t\t\tisa = PBXVariantGroup;\n\t\t\tchildren = (\n\t\t\t\t97C147001CF9000F007C117D /* Base */,\n\t\t\t);\n\t\t\tname = LaunchScreen.storyboard;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXVariantGroup section */\n\n/* Begin XCBuildConfiguration section */\n\t\t249021D3217E4FDB00AE95B9 /* Profile */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=iphoneos*]\" = \"iPhone Developer\";\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tENABLE_NS_ASSERTIONS = NO;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 8.0;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSUPPORTED_PLATFORMS = iphoneos;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t\tVALIDATE_PRODUCT = YES;\n\t\t\t};\n\t\t\tname = Profile;\n\t\t};\n\t\t249021D4217E4FDB00AE95B9 /* Profile */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCURRENT_PROJECT_VERSION = \"$(FLUTTER_BUILD_NUMBER)\";\n\t\t\t\tENABLE_BITCODE = NO;\n\t\t\t\tFRAMEWORK_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"$(PROJECT_DIR)/Flutter\",\n\t\t\t\t);\n\t\t\t\tINFOPLIST_FILE = Runner/Info.plist;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks\";\n\t\t\t\tLIBRARY_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"$(PROJECT_DIR)/Flutter\",\n\t\t\t\t);\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = com.example.helloFlutter;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSWIFT_OBJC_BRIDGING_HEADER = \"Runner/Runner-Bridging-Header.h\";\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tVERSIONING_SYSTEM = \"apple-generic\";\n\t\t\t};\n\t\t\tname = Profile;\n\t\t};\n\t\t97C147031CF9000F007C117D /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=iphoneos*]\" = \"iPhone Developer\";\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = dwarf;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_TESTABILITY = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 8.0;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = YES;\n\t\t\t\tONLY_ACTIVE_ARCH = YES;\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t97C147041CF9000F007C117D /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=iphoneos*]\" = \"iPhone Developer\";\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tENABLE_NS_ASSERTIONS = NO;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 8.0;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSUPPORTED_PLATFORMS = iphoneos;\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Owholemodule\";\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t\tVALIDATE_PRODUCT = YES;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t97C147061CF9000F007C117D /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCURRENT_PROJECT_VERSION = \"$(FLUTTER_BUILD_NUMBER)\";\n\t\t\t\tENABLE_BITCODE = NO;\n\t\t\t\tFRAMEWORK_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"$(PROJECT_DIR)/Flutter\",\n\t\t\t\t);\n\t\t\t\tINFOPLIST_FILE = Runner/Info.plist;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks\";\n\t\t\t\tLIBRARY_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"$(PROJECT_DIR)/Flutter\",\n\t\t\t\t);\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = com.example.helloFlutter;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSWIFT_OBJC_BRIDGING_HEADER = \"Runner/Runner-Bridging-Header.h\";\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Onone\";\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tVERSIONING_SYSTEM = \"apple-generic\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t97C147071CF9000F007C117D /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCURRENT_PROJECT_VERSION = \"$(FLUTTER_BUILD_NUMBER)\";\n\t\t\t\tENABLE_BITCODE = NO;\n\t\t\t\tFRAMEWORK_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"$(PROJECT_DIR)/Flutter\",\n\t\t\t\t);\n\t\t\t\tINFOPLIST_FILE = Runner/Info.plist;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks\";\n\t\t\t\tLIBRARY_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"$(PROJECT_DIR)/Flutter\",\n\t\t\t\t);\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = com.example.helloFlutter;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSWIFT_OBJC_BRIDGING_HEADER = \"Runner/Runner-Bridging-Header.h\";\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tVERSIONING_SYSTEM = \"apple-generic\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n/* End XCBuildConfiguration section */\n\n/* Begin XCConfigurationList section */\n\t\t97C146E91CF9000F007C117D /* Build configuration list for PBXProject \"Runner\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t97C147031CF9000F007C117D /* Debug */,\n\t\t\t\t97C147041CF9000F007C117D /* Release */,\n\t\t\t\t249021D3217E4FDB00AE95B9 /* Profile */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget \"Runner\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t97C147061CF9000F007C117D /* Debug */,\n\t\t\t\t97C147071CF9000F007C117D /* Release */,\n\t\t\t\t249021D4217E4FDB00AE95B9 /* Profile */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n/* End XCConfigurationList section */\n\t};\n\trootObject = 97C146E61CF9000F007C117D /* Project object */;\n}\n"
  },
  {
    "path": "flutter/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"group:Runner.xcodeproj\">\n   </FileRef>\n</Workspace>\n"
  },
  {
    "path": "flutter/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>IDEDidComputeMac32BitWarning</key>\n\t<true/>\n</dict>\n</plist>\n"
  },
  {
    "path": "flutter/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>PreviewsEnabled</key>\n\t<false/>\n</dict>\n</plist>\n"
  },
  {
    "path": "flutter/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"1020\"\n   version = \"1.3\">\n   <BuildAction\n      parallelizeBuildables = \"YES\"\n      buildImplicitDependencies = \"YES\">\n      <BuildActionEntries>\n         <BuildActionEntry\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"YES\"\n            buildForArchiving = \"YES\"\n            buildForAnalyzing = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"97C146ED1CF9000F007C117D\"\n               BuildableName = \"Runner.app\"\n               BlueprintName = \"Runner\"\n               ReferencedContainer = \"container:Runner.xcodeproj\">\n            </BuildableReference>\n         </BuildActionEntry>\n      </BuildActionEntries>\n   </BuildAction>\n   <TestAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\">\n      <Testables>\n      </Testables>\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"97C146ED1CF9000F007C117D\"\n            BuildableName = \"Runner.app\"\n            BlueprintName = \"Runner\"\n            ReferencedContainer = \"container:Runner.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </TestAction>\n   <LaunchAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      launchStyle = \"0\"\n      useCustomWorkingDirectory = \"NO\"\n      ignoresPersistentStateOnLaunch = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      debugServiceExtension = \"internal\"\n      allowLocationSimulation = \"YES\">\n      <BuildableProductRunnable\n         runnableDebuggingMode = \"0\">\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"97C146ED1CF9000F007C117D\"\n            BuildableName = \"Runner.app\"\n            BlueprintName = \"Runner\"\n            ReferencedContainer = \"container:Runner.xcodeproj\">\n         </BuildableReference>\n      </BuildableProductRunnable>\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </LaunchAction>\n   <ProfileAction\n      buildConfiguration = \"Profile\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      savedToolIdentifier = \"\"\n      useCustomWorkingDirectory = \"NO\"\n      debugDocumentVersioning = \"YES\">\n      <BuildableProductRunnable\n         runnableDebuggingMode = \"0\">\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"97C146ED1CF9000F007C117D\"\n            BuildableName = \"Runner.app\"\n            BlueprintName = \"Runner\"\n            ReferencedContainer = \"container:Runner.xcodeproj\">\n         </BuildableReference>\n      </BuildableProductRunnable>\n   </ProfileAction>\n   <AnalyzeAction\n      buildConfiguration = \"Debug\">\n   </AnalyzeAction>\n   <ArchiveAction\n      buildConfiguration = \"Release\"\n      revealArchiveInOrganizer = \"YES\">\n   </ArchiveAction>\n</Scheme>\n"
  },
  {
    "path": "flutter/ios/Runner.xcworkspace/contents.xcworkspacedata",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"group:Runner.xcodeproj\">\n   </FileRef>\n</Workspace>\n"
  },
  {
    "path": "flutter/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>IDEDidComputeMac32BitWarning</key>\n\t<true/>\n</dict>\n</plist>\n"
  },
  {
    "path": "flutter/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>PreviewsEnabled</key>\n\t<false/>\n</dict>\n</plist>\n"
  },
  {
    "path": "flutter/lib/main.dart",
    "content": "import 'package:flutter/material.dart';\n\nvoid main() => runApp(MyApp());\n\nclass MyApp extends StatelessWidget {\n  @override\n  Widget build(BuildContext context) {\n    return MaterialApp(\n      title: 'Hello World',\n      home: Scaffold(\n        appBar: AppBar(\n          title: Text('Hello World'),\n        ),\n        body: Center(\n          child: Text('Hello World'),\n        ),\n      ),\n    );\n  }\n}"
  },
  {
    "path": "flutter/pubspec.yaml",
    "content": "name: hello_flutter\ndescription: A new Flutter project.\n\n# The following line prevents the package from being accidentally published to\n# pub.dev using `pub publish`. This is preferred for private packages.\npublish_to: 'none' # Remove this line if you wish to publish to pub.dev\n\n# The following defines the version and build number for your application.\n# A version number is three numbers separated by dots, like 1.2.43\n# followed by an optional build number separated by a +.\n# Both the version and the builder number may be overridden in flutter\n# build by specifying --build-name and --build-number, respectively.\n# In Android, build-name is used as versionName while build-number used as versionCode.\n# Read more about Android versioning at https://developer.android.com/studio/publish/versioning\n# In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion.\n# Read more about iOS versioning at\n# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html\nversion: 1.0.0+1\n\nenvironment:\n  sdk: \">=2.7.0 <3.0.0\"\n\ndependencies:\n  flutter:\n    sdk: flutter\n\n\n  # The following adds the Cupertino Icons font to your application.\n  # Use with the CupertinoIcons class for iOS style icons.\n  cupertino_icons: ^0.1.3\n\ndev_dependencies:\n  flutter_test:\n    sdk: flutter\n\n# For information on the generic Dart part of this file, see the\n# following page: https://dart.dev/tools/pub/pubspec\n\n# The following section is specific to Flutter.\nflutter:\n\n  # The following line ensures that the Material Icons font is\n  # included with your application, so that you can use the icons in\n  # the material Icons class.\n  uses-material-design: true\n\n  # To add assets to your application, add an assets section, like this:\n  # assets:\n  #   - images/a_dot_burr.jpeg\n  #   - images/a_dot_ham.jpeg\n\n  # An image asset can refer to one or more resolution-specific \"variants\", see\n  # https://flutter.dev/assets-and-images/#resolution-aware.\n\n  # For details regarding adding assets from package dependencies, see\n  # https://flutter.dev/assets-and-images/#from-packages\n\n  # To add custom fonts to your application, add a fonts section here,\n  # in this \"flutter\" section. Each entry in this list should have a\n  # \"family\" key with the font family name, and a \"fonts\" key with a\n  # list giving the asset and other descriptors for the font. For\n  # example:\n  # fonts:\n  #   - family: Schyler\n  #     fonts:\n  #       - asset: fonts/Schyler-Regular.ttf\n  #       - asset: fonts/Schyler-Italic.ttf\n  #         style: italic\n  #   - family: Trajan Pro\n  #     fonts:\n  #       - asset: fonts/TrajanPro.ttf\n  #       - asset: fonts/TrajanPro_Bold.ttf\n  #         weight: 700\n  #\n  # For details regarding fonts from package dependencies,\n  # see https://flutter.dev/custom-fonts/#from-packages\n"
  },
  {
    "path": "flutter/test/widget_test.dart",
    "content": "// This is a basic Flutter widget test.\n//\n// To perform an interaction with a widget in your test, use the WidgetTester\n// utility that Flutter provides. For example, you can send tap and scroll\n// gestures. You can also use WidgetTester to find child widgets in the widget\n// tree, read text, and verify that the values of widget properties are correct.\n\nimport 'package:flutter/material.dart';\nimport 'package:flutter_test/flutter_test.dart';\n\nimport 'package:hello_flutter/main.dart';\n\nvoid main() {\n  testWidgets('Counter increments smoke test', (WidgetTester tester) async {\n    // Build our app and trigger a frame.\n    await tester.pumpWidget(MyApp());\n\n    // Verify that our counter starts at 0.\n    expect(find.text('0'), findsOneWidget);\n    expect(find.text('1'), findsNothing);\n\n    // Tap the '+' icon and trigger a frame.\n    await tester.tap(find.byIcon(Icons.add));\n    await tester.pump();\n\n    // Verify that our counter has incremented.\n    expect(find.text('0'), findsNothing);\n    expect(find.text('1'), findsOneWidget);\n  });\n}\n"
  },
  {
    "path": "flutter/web/index.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n  <meta charset=\"UTF-8\">\n  <meta content=\"IE=Edge\" http-equiv=\"X-UA-Compatible\">\n  <meta name=\"description\" content=\"A new Flutter project.\">\n\n  <!-- iOS meta tags & icons -->\n  <meta name=\"apple-mobile-web-app-capable\" content=\"yes\">\n  <meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black\">\n  <meta name=\"apple-mobile-web-app-title\" content=\"hello_flutter\">\n  <link rel=\"apple-touch-icon\" href=\"icons/Icon-192.png\">\n\n  <!-- Favicon -->\n  <link rel=\"shortcut icon\" type=\"image/png\" href=\"favicon.png\"/>\n\n  <title>hello_flutter</title>\n  <link rel=\"manifest\" href=\"manifest.json\">\n</head>\n<body>\n  <!-- This script installs service_worker.js to provide PWA functionality to\n       application. For more information, see:\n       https://developers.google.com/web/fundamentals/primers/service-workers -->\n  <script>\n    if ('serviceWorker' in navigator) {\n      window.addEventListener('load', function () {\n        navigator.serviceWorker.register('flutter_service_worker.js');\n      });\n    }\n  </script>\n  <script src=\"main.dart.js\" type=\"application/javascript\"></script>\n</body>\n</html>\n"
  },
  {
    "path": "flutter/web/manifest.json",
    "content": "{\n    \"name\": \"hello_flutter\",\n    \"short_name\": \"hello_flutter\",\n    \"start_url\": \".\",\n    \"display\": \"standalone\",\n    \"background_color\": \"#0175C2\",\n    \"theme_color\": \"#0175C2\",\n    \"description\": \"A new Flutter project.\",\n    \"orientation\": \"portrait-primary\",\n    \"prefer_related_applications\": false,\n    \"icons\": [\n        {\n            \"src\": \"icons/Icon-192.png\",\n            \"sizes\": \"192x192\",\n            \"type\": \"image/png\"\n        },\n        {\n            \"src\": \"icons/Icon-512.png\",\n            \"sizes\": \"512x512\",\n            \"type\": \"image/png\"\n        }\n    ]\n}\n"
  },
  {
    "path": "gatsby/.gitignore",
    "content": "# Logs\nlogs\n*.log\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\n\n# Runtime data\npids\n*.pid\n*.seed\n*.pid.lock\n\n# Directory for instrumented libs generated by jscoverage/JSCover\nlib-cov\n\n# Coverage directory used by tools like istanbul\ncoverage\n\n# nyc test coverage\n.nyc_output\n\n# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)\n.grunt\n\n# Bower dependency directory (https://bower.io/)\nbower_components\n\n# node-waf configuration\n.lock-wscript\n\n# Compiled binary addons (http://nodejs.org/api/addons.html)\nbuild/Release\n\n# Dependency directories\nnode_modules/\njspm_packages/\n\n# Typescript v1 declaration files\ntypings/\n\n# Optional npm cache directory\n.npm\n\n# Optional eslint cache\n.eslintcache\n\n# Optional REPL history\n.node_repl_history\n\n# Output of 'npm pack'\n*.tgz\n\n# dotenv environment variable files\n.env*\n\n# gatsby files\n.cache/\npublic\n\n# Mac files\n.DS_Store\n\n# Yarn\nyarn-error.log\n.pnp/\n.pnp.js\n# Yarn Integrity file\n.yarn-integrity\n"
  },
  {
    "path": "gatsby/LICENSE",
    "content": "MIT License\n\nCopyright (c) 2018 gatsbyjs\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "gatsby/README.md",
    "content": "<!-- AUTO-GENERATED-CONTENT:START (STARTER) -->\n<p align=\"center\">\n  <a href=\"https://www.gatsbyjs.org\">\n    <img alt=\"Gatsby\" src=\"https://www.gatsbyjs.org/monogram.svg\" width=\"60\" />\n  </a>\n</p>\n<h1 align=\"center\">\n  Gatsby's hello-world starter\n</h1>\n\nKick off your project with this hello-world boilerplate. This starter ships with the main Gatsby configuration files you might need to get up and running blazing fast with the blazing fast app generator for React.\n\n_Have another more specific idea? You may want to check out our vibrant collection of [official and community-created starters](https://www.gatsbyjs.org/docs/gatsby-starters/)._\n\n## 🚀 Quick start\n\n1.  **Create a Gatsby site.**\n\n    Use the Gatsby CLI to create a new site, specifying the hello-world starter.\n\n    ```shell\n    # create a new Gatsby site using the hello-world starter\n    gatsby new my-hello-world-starter https://github.com/gatsbyjs/gatsby-starter-hello-world\n    ```\n\n1.  **Start developing.**\n\n    Navigate into your new site’s directory and start it up.\n\n    ```shell\n    cd my-hello-world-starter/\n    gatsby develop\n    ```\n\n1.  **Open the source code and start editing!**\n\n    Your site is now running at `http://localhost:8000`!\n\n    _Note: You'll also see a second link: _`http://localhost:8000/___graphql`_. This is a tool you can use to experiment with querying your data. Learn more about using this tool in the [Gatsby tutorial](https://www.gatsbyjs.org/tutorial/part-five/#introducing-graphiql)._\n\n    Open the `my-hello-world-starter` directory in your code editor of choice and edit `src/pages/index.js`. Save your changes and the browser will update in real time!\n\n## 🧐 What's inside?\n\nA quick look at the top-level files and directories you'll see in a Gatsby project.\n\n    .\n    ├── node_modules\n    ├── src\n    ├── .gitignore\n    ├── .prettierrc\n    ├── gatsby-browser.js\n    ├── gatsby-config.js\n    ├── gatsby-node.js\n    ├── gatsby-ssr.js\n    ├── LICENSE\n    ├── package-lock.json\n    ├── package.json\n    └── README.md\n\n1.  **`/node_modules`**: This directory contains all of the modules of code that your project depends on (npm packages) are automatically installed.\n\n2.  **`/src`**: This directory will contain all of the code related to what you will see on the front-end of your site (what you see in the browser) such as your site header or a page template. `src` is a convention for “source code”.\n\n3.  **`.gitignore`**: This file tells git which files it should not track / not maintain a version history for.\n\n4.  **`.prettierrc`**: This is a configuration file for [Prettier](https://prettier.io/). Prettier is a tool to help keep the formatting of your code consistent.\n\n5.  **`gatsby-browser.js`**: This file is where Gatsby expects to find any usage of the [Gatsby browser APIs](https://www.gatsbyjs.org/docs/browser-apis/) (if any). These allow customization/extension of default Gatsby settings affecting the browser.\n\n6.  **`gatsby-config.js`**: This is the main configuration file for a Gatsby site. This is where you can specify information about your site (metadata) like the site title and description, which Gatsby plugins you’d like to include, etc. (Check out the [config docs](https://www.gatsbyjs.org/docs/gatsby-config/) for more detail).\n\n7.  **`gatsby-node.js`**: This file is where Gatsby expects to find any usage of the [Gatsby Node APIs](https://www.gatsbyjs.org/docs/node-apis/) (if any). These allow customization/extension of default Gatsby settings affecting pieces of the site build process.\n\n8.  **`gatsby-ssr.js`**: This file is where Gatsby expects to find any usage of the [Gatsby server-side rendering APIs](https://www.gatsbyjs.org/docs/ssr-apis/) (if any). These allow customization of default Gatsby settings affecting server-side rendering.\n\n9.  **`LICENSE`**: Gatsby is licensed under the MIT license.\n\n10. **`package-lock.json`** (See `package.json` below, first). This is an automatically generated file based on the exact versions of your npm dependencies that were installed for your project. **(You won’t change this file directly).**\n\n11. **`package.json`**: A manifest file for Node.js projects, which includes things like metadata (the project’s name, author, etc). This manifest is how npm knows which packages to install for your project.\n\n12. **`README.md`**: A text file containing useful reference information about your project.\n\n## 🎓 Learning Gatsby\n\nLooking for more guidance? Full documentation for Gatsby lives [on the website](https://www.gatsbyjs.org/). Here are some places to start:\n\n- **For most developers, we recommend starting with our [in-depth tutorial for creating a site with Gatsby](https://www.gatsbyjs.org/tutorial/).** It starts with zero assumptions about your level of ability and walks through every step of the process.\n\n- **To dive straight into code samples, head [to our documentation](https://www.gatsbyjs.org/docs/).** In particular, check out the _Guides_, _API Reference_, and _Advanced Tutorials_ sections in the sidebar.\n\n## 💫 Deploy\n\n[![Deploy to Netlify](https://www.netlify.com/img/deploy/button.svg)](https://app.netlify.com/start/deploy?repository=https://github.com/gatsbyjs/gatsby-starter-hello-world)\n\n[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/import/project?template=https://github.com/gatsbyjs/gatsby-starter-hello-world)\n\n<!-- AUTO-GENERATED-CONTENT:END -->\n"
  },
  {
    "path": "gatsby/gatsby-config.js",
    "content": "/**\n * Configure your Gatsby site with this file.\n *\n * See: https://www.gatsbyjs.org/docs/gatsby-config/\n */\n\nmodule.exports = {\n  /* Your site config here */\n  plugins: [],\n}\n"
  },
  {
    "path": "gatsby/package.json",
    "content": "{\n  \"name\": \"hello-gatsby\",\n  \"private\": true,\n  \"description\": \"A simplified bare-bones starter for Gatsby\",\n  \"version\": \"0.1.0\",\n  \"license\": \"MIT\",\n  \"scripts\": {\n    \"build\": \"gatsby build\",\n    \"develop\": \"gatsby develop\",\n    \"format\": \"prettier --write \\\"**/*.{js,jsx,json,md}\\\"\",\n    \"start\": \"npm run develop\",\n    \"serve\": \"gatsby serve\",\n    \"clean\": \"gatsby clean\",\n    \"test\": \"echo \\\"Write tests! -> https://gatsby.dev/unit-testing\\\" && exit 1\"\n  },\n  \"dependencies\": {\n    \"gatsby\": \"^2.21.37\",\n    \"react\": \"^16.12.0\",\n    \"react-dom\": \"^16.12.0\"\n  },\n  \"devDependencies\": {\n    \"prettier\": \"2.0.5\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/gatsbyjs/gatsby-starter-hello-world\"\n  },\n  \"bugs\": {\n    \"url\": \"https://github.com/gatsbyjs/gatsby/issues\"\n  }\n}\n"
  },
  {
    "path": "gatsby/src/pages/index.js",
    "content": "import React from \"react\"\n\nexport default () => <div>Hello world!</div>\n"
  },
  {
    "path": "glimmer/.babelrc.js",
    "content": "module.exports = function (api) {\n  return {\n    plugins: [\n      ['@glimmer/babel-plugin-glimmer-env', { DEBUG: !api.env('production') }],\n      '@glimmer/babel-plugin-strict-template-precompile',\n      ['@babel/plugin-proposal-decorators', { legacy: true }],\n      '@babel/plugin-proposal-class-properties',\n    ],\n    presets: ['@babel/preset-env', '@babel/preset-typescript'],\n  };\n};\n"
  },
  {
    "path": "glimmer/.editorconfig",
    "content": "# EditorConfig helps developers define and maintain consistent\n# coding styles between different editors and IDEs\n# editorconfig.org\n\nroot = true\n\n[*]\nend_of_line = lf\ncharset = utf-8\ntrim_trailing_whitespace = true\ninsert_final_newline = true\nindent_style = space\nindent_size = 2\nmax_line_length = 100\n\n[*.hbs]\ninsert_final_newline = false\n\n[*.{diff,md}]\ntrim_trailing_whitespace = false\n"
  },
  {
    "path": "glimmer/.gitignore",
    "content": "node_modules\ntmp/*\ndist\n\nyarn-error.log\n/npm-debug.log*\n.eslintcache\n"
  },
  {
    "path": "glimmer/README.md",
    "content": "# hello-glimmer\n\nA minimal hello world example in Glimmer.\n\n## Prerequisites\n\nYou will need the following things properly installed on your computer.\n\n* [Git](https://git-scm.com/)\n* [Node.js](https://nodejs.org/) (with NPM)\n\n## Installation\n\n* `git clone https://github.com/johnpapa/hello-worlds.git` this repository\n* `cd glimmer`\n* `npm install`\n\n## Running / Development\n\n* `npm run start`\n* Visit your app at [http://localhost:8080](http://localhost:8080).\n\n### Building\n\n* `npm run build`\n\n## Further Reading / Useful Links\n\n* [glimmerjs](http://github.com/glimmerjs/glimmer.js/)\n* [webpack](https://webpack.js.org/)\n* [babel](https://babeljs.io/docs/en/configuration)\n"
  },
  {
    "path": "glimmer/index.html",
    "content": "<!doctype html>\n<html>\n  <head>\n    <title>hello-glimmer</title>\n\n    <link rel=\"icon\" href=\"./public/favicon.png\" />\n    <link rel=\"apple-touch-icon\" href=\"./public/logo192.png\" />\n    <!--\n      manifest.json provides metadata used when your web app is installed on a\n      user's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/\n    -->\n    <link rel=\"manifest\" href=\"./public/manifest.json\" />\n  </head>\n  <body>\n    <div id=\"app\"></div>\n  </body>\n</html>\n"
  },
  {
    "path": "glimmer/package.json",
    "content": "{\n  \"name\": \"hello-glimmer\",\n  \"version\": \"0.0.0\",\n  \"description\": \"A minimal hello world example in Glimmer.\",\n  \"directories\": {\n    \"doc\": \"doc\"\n  },\n  \"scripts\": {\n    \"build\": \"NODE_ENV=production webpack\",\n    \"lint\": \"eslint . --ext=js,ts --cache\",\n    \"start\": \"webpack-dev-server\"\n  },\n  \"devDependencies\": {\n    \"@babel/core\": \"^7.9.0\",\n    \"@babel/plugin-proposal-class-properties\": \"^7.8.3\",\n    \"@babel/plugin-proposal-decorators\": \"^7.8.3\",\n    \"@babel/preset-env\": \"^7.9.0\",\n    \"@babel/preset-typescript\": \"^7.9.0\",\n    \"@glimmer/babel-plugin-glimmer-env\": \"~2.0.0-beta.7\",\n    \"@glimmer/babel-plugin-strict-template-precompile\": \"~2.0.0-beta.7\",\n    \"@glimmer/blueprint\": \"~2.0.0-beta.7\",\n    \"@glimmer/component\": \"~2.0.0-beta.7\",\n    \"@glimmer/core\": \"~2.0.0-beta.7\",\n    \"@glimmer/env\": \"^0.1.7\",\n    \"@glimmer/helper\": \"~2.0.0-beta.7\",\n    \"@glimmer/modifier\": \"~2.0.0-beta.7\",\n    \"@typescript-eslint/eslint-plugin\": \"^2.26.0\",\n    \"@typescript-eslint/parser\": \"^2.26.0\",\n    \"babel-loader\": \"^8.1.0\",\n    \"clean-webpack-plugin\": \"^3.0.0\",\n    \"copy-webpack-plugin\": \"^5.1.1\",\n    \"css-loader\": \"^3.4.2\",\n    \"eslint\": \"^6.8.0\",\n    \"eslint-config-prettier\": \"^6.10.1\",\n    \"eslint-plugin-prettier\": \"^3.1.2\",\n    \"file-loader\": \"^6.0.0\",\n    \"html-webpack-plugin\": \"^4.0.4\",\n    \"prettier\": \"^2.0.2\",\n    \"style-loader\": \"^1.1.3\",\n    \"typescript\": \"~3.8.3\",\n    \"webpack\": \"^4.42.1\",\n    \"webpack-cli\": \"^3.3.11\",\n    \"webpack-dev-server\": \"^3.10.3\"\n  },\n  \"eslintConfig\": {\n    \"parser\": \"@typescript-eslint/parser\",\n    \"parserOptions\": {\n      \"ecmaVersion\": 2019,\n      \"sourceType\": \"module\"\n    },\n    \"env\": {\n      \"browser\": true\n    },\n    \"plugins\": [\n      \"@typescript-eslint\",\n      \"prettier\"\n    ],\n    \"extends\": [\n      \"eslint:recommended\",\n      \"plugin:prettier/recommended\"\n    ],\n    \"ignorePatterns\": [\n      \"dist/\",\n      \"node_modules/\",\n      \"!.*\"\n    ],\n    \"overrides\": [\n      {\n        \"files\": [\n          \"**/*.ts\"\n        ],\n        \"extends\": [\n          \"plugin:@typescript-eslint/eslint-recommended\",\n          \"plugin:@typescript-eslint/recommended\",\n          \"prettier/@typescript-eslint\"\n        ]\n      },\n      {\n        \"files\": [\n          \".babelrc.js\",\n          \"testem.js\",\n          \"webpack.config.js\"\n        ],\n        \"env\": {\n          \"node\": true\n        }\n      }\n    ]\n  },\n  \"prettier\": {\n    \"singleQuote\": true,\n    \"trailingComma\": \"es5\"\n  },\n  \"browserslist\": {\n    \"production\": [\n      \"last 2 Edge versions\",\n      \"last 2 Chrome versions\",\n      \"last 2 Firefox versions\",\n      \"last 2 Safari versions\"\n    ],\n    \"development\": [\n      \"last 1 Chrome version\",\n      \"last 1 Firefox version\",\n      \"last 1 Safari version\"\n    ]\n  },\n  \"engines\": {\n    \"node\": \">= 12.0\"\n  },\n  \"private\": true\n}\n"
  },
  {
    "path": "glimmer/public/manifest.json",
    "content": "{\n  \"short_name\": \"hello-glimmer\",\n  \"name\": \"A minimal hello world example in Glimmer.\",\n  \"icons\": [\n    {\n      \"src\": \"favicon.png\",\n      \"sizes\": \"64x64 32x32 24x24 16x16\",\n      \"type\": \"image/x-icon\"\n    },\n    {\n      \"src\": \"logo192.png\",\n      \"type\": \"image/png\",\n      \"sizes\": \"192x192\"\n    },\n    {\n      \"src\": \"logo512.png\",\n      \"type\": \"image/png\",\n      \"sizes\": \"512x512\"\n    }\n  ],\n  \"start_url\": \".\",\n  \"display\": \"standalone\",\n  \"theme_color\": \"#000000\",\n  \"background_color\": \"#ffffff\"\n}\n"
  },
  {
    "path": "glimmer/src/App.js",
    "content": "import Component from '@glimmer/component';\nimport { setComponentTemplate, createTemplate } from '@glimmer/core';\n\nexport default class App extends Component {\n  world = 'World';\n}\n\nsetComponentTemplate(\n  createTemplate(`\n    Hello {{this.world}}!\n  `),\n  App\n);\n"
  },
  {
    "path": "glimmer/src/index.js",
    "content": "import { renderComponent } from '@glimmer/core';\nimport App from './App';\n\nconst containerElement = document.getElementById('app');\n\nrenderComponent(App, containerElement);\n"
  },
  {
    "path": "glimmer/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"es6\",\n    \"module\": \"es2015\",\n    \"inlineSourceMap\": true,\n    \"inlineSources\": true,\n    \"moduleResolution\": \"node\",\n    \"experimentalDecorators\": true\n  },\n  \"exclude\": [\n    \"node_modules\",\n    \"tmp\",\n    \"dist\"\n  ]\n}\n"
  },
  {
    "path": "glimmer/webpack.config.js",
    "content": "const path = require('path');\nconst HtmlWebpackPlugin = require('html-webpack-plugin');\nconst CopyPlugin = require('copy-webpack-plugin');\nconst { CleanWebpackPlugin } = require('clean-webpack-plugin');\n\nmodule.exports = () => {\n  const IS_PRODUCTION = process.env.NODE_ENV === 'production';\n\n  const entry = {\n    app: './src/index.js',\n  };\n\n  const plugins = [\n    new CleanWebpackPlugin(),\n    new HtmlWebpackPlugin({\n      template: './index.html'\n    }),\n    new CopyPlugin([{ from: 'public', to: 'public' }]),\n  ];\n\n  return {\n    mode: IS_PRODUCTION ? 'production' : 'development',\n    entry,\n    plugins,\n    module: {\n      rules: [\n        {\n          test: /\\.(js|mjs|ts)$/,\n          use: 'babel-loader',\n        },\n        {\n          test: /\\.css$/,\n          use: ['style-loader', 'css-loader'],\n        },\n        {\n          test: /\\.(png|svg|jpg|gif)$/,\n          loader: 'file-loader',\n          options: {\n            outputPath: 'images',\n          },\n        },\n      ],\n    },\n    resolve: {\n      extensions: ['.ts', '.js', '.json'],\n    },\n    output: {\n      filename: '[name].bundle.js',\n      path: path.resolve(__dirname, 'dist'),\n      publicPath: '/',\n    },\n    devServer: {\n      contentBase: path.resolve(__dirname, 'dist'),\n    },\n  };\n};\n"
  },
  {
    "path": "gridsome/.gitignore",
    "content": "*.log\n.cache\n.DS_Store\nsrc/.temp\nnode_modules\ndist\n.env\n.env.*\n"
  },
  {
    "path": "gridsome/README.md",
    "content": "# Default starter for Gridsome\n\nThis is the project you get when you run `gridsome create new-project`.\n\n### 1. Install Gridsome CLI tool if you don't have\n\n`npm install --global @gridsome/cli`\n\n### 2. Create a Gridsome project\n\n1. `gridsome create my-gridsome-site` to install default starter\n2. `cd my-gridsome-site` to open the folder\n3. `gridsome develop` to start a local dev server at `http://localhost:8080`\n4. Happy coding 🎉🙌\n"
  },
  {
    "path": "gridsome/gridsome.config.js",
    "content": "// This is where project configuration and plugin options are located.\n// Learn more: https://gridsome.org/docs/config\n\n// Changes here require a server restart.\n// To restart press CTRL + C in terminal and run `gridsome develop`\n\nmodule.exports = {\n  siteName: 'Gridsome',\n  plugins: [],\n};\n"
  },
  {
    "path": "gridsome/package.json",
    "content": "{\n  \"name\": \"Gridsome\",\n  \"private\": true,\n  \"scripts\": {\n    \"build\": \"gridsome build\",\n    \"develop\": \"gridsome develop\",\n    \"explore\": \"gridsome explore\"\n  },\n  \"dependencies\": {\n    \"gridsome\": \"^0.7.0\"\n  }\n}\n"
  },
  {
    "path": "gridsome/src/layouts/Default.vue",
    "content": "<template>\n  <div class=\"layout\">\n    <slot />\n  </div>\n</template>\n"
  },
  {
    "path": "gridsome/src/main.js",
    "content": "// This is the main.js file. Import global CSS and scripts here.\n// The Client API can be used here. Learn more: gridsome.org/docs/client-api\n\nimport DefaultLayout from '~/layouts/Default.vue';\n\nexport default function (Vue, { router, head, isClient }) {\n  // Set default layout as a global component\n  Vue.component('Layout', DefaultLayout);\n}\n"
  },
  {
    "path": "gridsome/src/pages/Index.vue",
    "content": "<template>\n  <Layout>\n    <div>Hello {{ value }}</div>\n  </Layout>\n</template>\n\n<script>\nexport default {\n  metaInfo: {\n    title: 'Hello, world!',\n  },\n  data() {\n    return {\n      value: 'World',\n    };\n  },\n};\n</script>\n"
  },
  {
    "path": "html/index.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>Hello World</title>\n</head>\n<body>\n    <h1>Hello World!</h1>\n</body>\n</html>"
  },
  {
    "path": "hugo/.gitignore",
    "content": "public/\nnode_modules/\n/resources/"
  },
  {
    "path": "hugo/archetypes/default.md",
    "content": "---\ntitle: \"{{ replace .Name \"-\" \" \" | title }}\"\ndate: {{ .Date }}\ndraft: true\n---\n\n"
  },
  {
    "path": "hugo/config.toml",
    "content": "baseURL = \"/\"\nlanguageCode = \"en-us\"\ntitle = \"Hello World\"\n\ntheme = \"hello-world\""
  },
  {
    "path": "hugo/content/_index.md",
    "content": "Hello World!"
  },
  {
    "path": "hugo/package.json",
    "content": "{\n  \"name\": \"hello-hugo\",\n  \"version\": \"1.0.0\",\n  \"description\": \"\",\n  \"main\": \"index.js\",\n  \"scripts\": {\n    \"build\": \"npx hugo-cli\",\n    \"serve\": \"npx hugo-cli server\"\n  },\n  \"author\": \"\",\n  \"license\": \"ISC\",\n  \"devDependencies\": {\n    \"hugo-cli\": \"^0.11.0\"\n  }\n}\n"
  },
  {
    "path": "hugo/themes/hello-world/LICENSE",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2020 YOUR_NAME_HERE\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\nthe Software, and to permit persons to whom the Software is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"
  },
  {
    "path": "hugo/themes/hello-world/archetypes/default.md",
    "content": "+++\n+++\n"
  },
  {
    "path": "hugo/themes/hello-world/layouts/404.html",
    "content": ""
  },
  {
    "path": "hugo/themes/hello-world/layouts/_default/baseof.html",
    "content": "<!DOCTYPE html>\n<html>\n    {{- partial \"head.html\" . -}}\n    <body>\n        {{- partial \"header.html\" . -}}\n        <div id=\"content\">\n        {{- block \"main\" . }}{{- end }}\n        </div>\n        {{- partial \"footer.html\" . -}}\n    </body>\n</html>\n"
  },
  {
    "path": "hugo/themes/hello-world/layouts/_default/list.html",
    "content": ""
  },
  {
    "path": "hugo/themes/hello-world/layouts/_default/single.html",
    "content": ""
  },
  {
    "path": "hugo/themes/hello-world/layouts/index.html",
    "content": "<!DOCTYPE html>\n<html>\n  <body>\n    {{ .Content }}\n  </body>\n</html>\n"
  },
  {
    "path": "hugo/themes/hello-world/layouts/partials/footer.html",
    "content": ""
  },
  {
    "path": "hugo/themes/hello-world/layouts/partials/head.html",
    "content": ""
  },
  {
    "path": "hugo/themes/hello-world/layouts/partials/header.html",
    "content": ""
  },
  {
    "path": "hugo/themes/hello-world/theme.toml",
    "content": "# theme.toml template for a Hugo theme\n# See https://github.com/gohugoio/hugoThemes#themetoml for an example\n\nname = \"Hello World\"\nlicense = \"MIT\"\nlicenselink = \"https://github.com/yourname/yourtheme/blob/master/LICENSE\"\ndescription = \"\"\nhomepage = \"http://example.com/\"\ntags = []\nfeatures = []\nmin_version = \"0.41.0\"\n\n[author]\n  name = \"\"\n  homepage = \"\"\n\n# If porting an existing theme\n[original]\n  name = \"\"\n  homepage = \"\"\n  repo = \"\"\n"
  },
  {
    "path": "hyperapp/hello-world.js",
    "content": "import {app} from 'https://unpkg.com/hyperapp@2.0.4'\n\napp({\n    view: () => 'hello world',\n    node: document.getElementById('app')\n})"
  },
  {
    "path": "hyperapp/index.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <meta charset=\"UTF-8\">\n    <title>Hyperapp – Hello World</title>\n    <script src=\"./hello-world.js\" type=\"module\" ></script>\n</head>\n<body>\n    <x id=\"app\"></x>\n</body>\n</html>"
  },
  {
    "path": "ionic-angular/.gitignore",
    "content": "# Specifies intentionally untracked files to ignore when using Git\n# http://git-scm.com/docs/gitignore\n\n*~\n*.sw[mnpcod]\n.tmp\n*.tmp\n*.tmp.*\n*.sublime-project\n*.sublime-workspace\n.DS_Store\nThumbs.db\nUserInterfaceState.xcuserstate\n$RECYCLE.BIN/\n\n*.log\nlog.txt\nnpm-debug.log*\n\n/.idea\n/.ionic\n/.sass-cache\n/.sourcemaps\n/.versions\n/.vscode\n/coverage\n/dist\n/node_modules\n/platforms\n/plugins\n/www\n"
  },
  {
    "path": "ionic-angular/angular.json",
    "content": "{\n  \"$schema\": \"./node_modules/@angular/cli/lib/config/schema.json\",\n  \"version\": 1,\n  \"defaultProject\": \"app\",\n  \"newProjectRoot\": \"projects\",\n  \"projects\": {\n    \"app\": {\n      \"root\": \"\",\n      \"sourceRoot\": \"src\",\n      \"projectType\": \"application\",\n      \"prefix\": \"app\",\n      \"schematics\": {},\n      \"architect\": {\n        \"build\": {\n          \"builder\": \"@angular-devkit/build-angular:browser\",\n          \"options\": {\n            \"outputPath\": \"www\",\n            \"index\": \"src/index.html\",\n            \"main\": \"src/main.ts\",\n            \"polyfills\": \"src/polyfills.ts\",\n            \"tsConfig\": \"tsconfig.app.json\",\n            \"assets\": [\n              {\n                \"glob\": \"**/*\",\n                \"input\": \"src/assets\",\n                \"output\": \"assets\"\n              },\n              {\n                \"glob\": \"**/*.svg\",\n                \"input\": \"node_modules/ionicons/dist/ionicons/svg\",\n                \"output\": \"./svg\"\n              }\n            ],\n            \"styles\": [\n              {\n                \"input\": \"src/theme/variables.scss\"\n              },\n              {\n                \"input\": \"src/global.scss\"\n              }\n            ],\n            \"scripts\": []\n          },\n          \"configurations\": {\n            \"production\": {\n              \"fileReplacements\": [\n                {\n                  \"replace\": \"src/environments/environment.ts\",\n                  \"with\": \"src/environments/environment.prod.ts\"\n                }\n              ],\n              \"optimization\": true,\n              \"outputHashing\": \"all\",\n              \"sourceMap\": false,\n              \"extractCss\": true,\n              \"namedChunks\": false,\n              \"aot\": true,\n              \"extractLicenses\": true,\n              \"vendorChunk\": false,\n              \"buildOptimizer\": true,\n              \"budgets\": [\n                {\n                  \"type\": \"initial\",\n                  \"maximumWarning\": \"2mb\",\n                  \"maximumError\": \"5mb\"\n                }\n              ]\n            },\n            \"ci\": {\n              \"progress\": false\n            }\n          }\n        },\n        \"serve\": {\n          \"builder\": \"@angular-devkit/build-angular:dev-server\",\n          \"options\": {\n            \"browserTarget\": \"app:build\"\n          },\n          \"configurations\": {\n            \"production\": {\n              \"browserTarget\": \"app:build:production\"\n            },\n            \"ci\": {\n              \"progress\": false\n            }\n          }\n        },\n        \"extract-i18n\": {\n          \"builder\": \"@angular-devkit/build-angular:extract-i18n\",\n          \"options\": {\n            \"browserTarget\": \"app:build\"\n          }\n        },\n        \"lint\": {\n          \"builder\": \"@angular-devkit/build-angular:tslint\",\n          \"options\": {\n            \"tsConfig\": [\n              \"tsconfig.app.json\",\n              \"tsconfig.spec.json\",\n              \"e2e/tsconfig.json\"\n            ],\n            \"exclude\": [\"**/node_modules/**\"]\n          }\n        }\n      }\n    }\n  },\n  \"cli\": {\n    \"defaultCollection\": \"@ionic/angular-toolkit\"\n  },\n  \"schematics\": {\n    \"@ionic/angular-toolkit:component\": {\n      \"styleext\": \"scss\"\n    },\n    \"@ionic/angular-toolkit:page\": {\n      \"styleext\": \"scss\"\n    }\n  }\n}\n"
  },
  {
    "path": "ionic-angular/browserslist",
    "content": "# This file is used by the build system to adjust CSS and JS output to support the specified browsers below.\n# For additional information regarding the format and rule options, please see:\n# https://github.com/browserslist/browserslist#queries\n\n# You can see what browsers were selected by your queries by running:\n#   npx browserslist\n\n> 0.5%\nlast 2 versions\nFirefox ESR\nnot dead\nnot IE 9-11 # For IE 9-11 support, remove 'not'.\n"
  },
  {
    "path": "ionic-angular/ionic.config.json",
    "content": "{\n  \"name\": \"tmp-ng\",\n  \"integrations\": {},\n  \"type\": \"angular\"\n}\n"
  },
  {
    "path": "ionic-angular/karma.conf.js",
    "content": "// Karma configuration file, see link for more information\n// https://karma-runner.github.io/1.0/config/configuration-file.html\n\nmodule.exports = function (config) {\n  config.set({\n    basePath: '',\n    frameworks: ['jasmine', '@angular-devkit/build-angular'],\n    plugins: [\n      require('karma-jasmine'),\n      require('karma-chrome-launcher'),\n      require('karma-jasmine-html-reporter'),\n      require('karma-coverage-istanbul-reporter'),\n      require('@angular-devkit/build-angular/plugins/karma')\n    ],\n    client: {\n      clearContext: false // leave Jasmine Spec Runner output visible in browser\n    },\n    coverageIstanbulReporter: {\n      dir: require('path').join(__dirname, '../coverage'),\n      reports: ['html', 'lcovonly', 'text-summary'],\n      fixWebpackSourcePaths: true\n    },\n    reporters: ['progress', 'kjhtml'],\n    port: 9876,\n    colors: true,\n    logLevel: config.LOG_INFO,\n    autoWatch: true,\n    browsers: ['Chrome'],\n    singleRun: false\n  });\n};\n"
  },
  {
    "path": "ionic-angular/package.json",
    "content": "{\n  \"name\": \"hello-ionic-angular\",\n  \"version\": \"0.0.1\",\n  \"author\": \"Ionic Framework\",\n  \"homepage\": \"https://ionicframework.com/\",\n  \"scripts\": {\n    \"ng\": \"ng\",\n    \"start\": \"ng serve\",\n    \"build\": \"ng build\",\n    \"lint\": \"ng lint\"\n  },\n  \"private\": true,\n  \"dependencies\": {\n    \"@angular/common\": \"~9.1.6\",\n    \"@angular/core\": \"~9.1.6\",\n    \"@angular/forms\": \"~9.1.6\",\n    \"@angular/platform-browser\": \"~9.1.6\",\n    \"@angular/platform-browser-dynamic\": \"~9.1.6\",\n    \"@angular/router\": \"~9.1.6\",\n    \"@ionic/angular\": \"^5.0.0\",\n    \"rxjs\": \"~6.5.1\",\n    \"tslib\": \"^1.10.0\",\n    \"zone.js\": \"~0.10.2\"\n  },\n  \"devDependencies\": {\n    \"@angular-devkit/build-angular\": \"~0.901.5\",\n    \"@angular/cli\": \"~9.1.5\",\n    \"@angular/compiler\": \"~9.1.6\",\n    \"@angular/compiler-cli\": \"~9.1.6\",\n    \"@angular/language-service\": \"~9.1.6\",\n    \"@ionic/angular-toolkit\": \"^2.1.1\",\n    \"@types/node\": \"^12.11.1\",\n    \"codelyzer\": \"^5.1.2\",\n    \"ts-node\": \"~8.3.0\",\n    \"tslint\": \"~6.1.0\",\n    \"typescript\": \"~3.8.3\"\n  },\n  \"description\": \"An Ionic project\"\n}\n"
  },
  {
    "path": "ionic-angular/src/app/app.component.html",
    "content": "<ion-app>\n  <div class=\"ion-page\">\n    <ion-content class=\"ion-padding\">\n      Hello World\n    </ion-content>\n  </div>\n</ion-app>\n"
  },
  {
    "path": "ionic-angular/src/app/app.component.ts",
    "content": "import { Component } from '@angular/core';\n\n@Component({\n  selector: 'app-root',\n  templateUrl: 'app.component.html',\n})\nexport class AppComponent {}\n"
  },
  {
    "path": "ionic-angular/src/app/app.module.ts",
    "content": "import { NgModule } from '@angular/core';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { IonicModule } from '@ionic/angular';\nimport { AppComponent } from './app.component';\n\n@NgModule({\n  declarations: [AppComponent],\n  imports: [BrowserModule, IonicModule.forRoot()],\n  bootstrap: [AppComponent],\n})\nexport class AppModule {}\n"
  },
  {
    "path": "ionic-angular/src/environments/environment.prod.ts",
    "content": "export const environment = {\n  production: true\n};\n"
  },
  {
    "path": "ionic-angular/src/environments/environment.ts",
    "content": "// This file can be replaced during build by using the `fileReplacements` array.\n// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.\n// The list of file replacements can be found in `angular.json`.\n\nexport const environment = {\n  production: false\n};\n\n/*\n * For easier debugging in development mode, you can import the following file\n * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.\n *\n * This import should be commented out in production mode because it will have a negative impact\n * on performance if an error is thrown.\n */\n// import 'zone.js/dist/zone-error';  // Included with Angular CLI.\n"
  },
  {
    "path": "ionic-angular/src/global.scss",
    "content": "@import \"~@ionic/angular/css/ionic.bundle.css\";\n"
  },
  {
    "path": "ionic-angular/src/index.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n  <meta charset=\"utf-8\" />\n  <title>Ionic App</title>\n\n  <base href=\"/\" />\n\n  <meta name=\"color-scheme\" content=\"light dark\" />\n  <meta name=\"viewport\" content=\"viewport-fit=cover, width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no\" />\n  <meta name=\"format-detection\" content=\"telephone=no\" />\n  <meta name=\"msapplication-tap-highlight\" content=\"no\" />\n\n  <link rel=\"icon\" type=\"image/png\" href=\"assets/icon/favicon.png\" />\n\n  <!-- add to homescreen for ios -->\n  <meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n  <meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black\" />\n</head>\n\n<body>\n  <app-root></app-root>\n</body>\n\n</html>\n"
  },
  {
    "path": "ionic-angular/src/main.ts",
    "content": "import { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app/app.module';\nimport { environment } from './environments/environment';\n\nif (environment.production) {\n  enableProdMode();\n}\n\nplatformBrowserDynamic().bootstrapModule(AppModule)\n  .catch(err => console.log(err));\n"
  },
  {
    "path": "ionic-angular/src/polyfills.ts",
    "content": "/**\n * This file includes polyfills needed by Angular and is loaded before the app.\n * You can add your own extra polyfills to this file.\n *\n * This file is divided into 2 sections:\n *   1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers.\n *   2. Application imports. Files imported after ZoneJS that should be loaded before your main\n *      file.\n *\n * The current setup is for so-called \"evergreen\" browsers; the last versions of browsers that\n * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera),\n * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile.\n *\n * Learn more in https://angular.io/guide/browser-support\n */\n\n/***************************************************************************************************\n * BROWSER POLYFILLS\n */\n\n/** IE10 and IE11 requires the following for NgClass support on SVG elements */\n// import 'classlist.js';  // Run `npm install --save classlist.js`.\n\n/**\n * Web Animations `@angular/platform-browser/animations`\n * Only required if AnimationBuilder is used within the application and using IE/Edge or Safari.\n * Standard animation support in Angular DOES NOT require any polyfills (as of Angular 6.0).\n */\n// import 'web-animations-js';  // Run `npm install --save web-animations-js`.\n\n/**\n * By default, zone.js will patch all possible macroTask and DomEvents\n * user can disable parts of macroTask/DomEvents patch by setting following flags\n * because those flags need to be set before `zone.js` being loaded, and webpack\n * will put import in the top of bundle, so user need to create a separate file\n * in this directory (for example: zone-flags.ts), and put the following flags\n * into that file, and then add the following code before importing zone.js.\n * import './zone-flags.ts';\n *\n * The flags allowed in zone-flags.ts are listed here.\n *\n * The following flags will work for all browsers.\n *\n * (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame\n * (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick\n * (window as any).__zone_symbol__BLACK_LISTED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames\n *\n *  in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js\n *  with the following flag, it will bypass `zone.js` patch for IE/Edge\n *\n *  (window as any).__Zone_enable_cross_context_check = true;\n *\n */\n\nimport './zone-flags';\n\n/***************************************************************************************************\n * Zone JS is required by default for Angular itself.\n */\n\nimport 'zone.js/dist/zone';  // Included with Angular CLI.\n\n\n/***************************************************************************************************\n * APPLICATION IMPORTS\n */\n"
  },
  {
    "path": "ionic-angular/src/theme/variables.scss",
    "content": "// Ionic Variables and Theming. For more info, please see:\n// http://ionicframework.com/docs/theming/\n\n/** Ionic CSS Variables **/\n:root {\n  /** primary **/\n  --ion-color-primary: #3880ff;\n  --ion-color-primary-rgb: 56, 128, 255;\n  --ion-color-primary-contrast: #ffffff;\n  --ion-color-primary-contrast-rgb: 255, 255, 255;\n  --ion-color-primary-shade: #3171e0;\n  --ion-color-primary-tint: #4c8dff;\n\n  /** secondary **/\n  --ion-color-secondary: #3dc2ff;\n  --ion-color-secondary-rgb: 61, 194, 255;\n  --ion-color-secondary-contrast: #ffffff;\n  --ion-color-secondary-contrast-rgb: 255, 255, 255;\n  --ion-color-secondary-shade: #36abe0;\n  --ion-color-secondary-tint: #50c8ff;\n\n  /** tertiary **/\n  --ion-color-tertiary: #5260ff;\n  --ion-color-tertiary-rgb: 82, 96, 255;\n  --ion-color-tertiary-contrast: #ffffff;\n  --ion-color-tertiary-contrast-rgb: 255, 255, 255;\n  --ion-color-tertiary-shade: #4854e0;\n  --ion-color-tertiary-tint: #6370ff;\n\n  /** success **/\n  --ion-color-success: #2dd36f;\n  --ion-color-success-rgb: 45, 211, 111;\n  --ion-color-success-contrast: #ffffff;\n  --ion-color-success-contrast-rgb: 255, 255, 255;\n  --ion-color-success-shade: #28ba62;\n  --ion-color-success-tint: #42d77d;\n\n  /** warning **/\n  --ion-color-warning: #ffc409;\n  --ion-color-warning-rgb: 255, 196, 9;\n  --ion-color-warning-contrast: #000000;\n  --ion-color-warning-contrast-rgb: 0, 0, 0;\n  --ion-color-warning-shade: #e0ac08;\n  --ion-color-warning-tint: #ffca22;\n\n  /** danger **/\n  --ion-color-danger: #eb445a;\n  --ion-color-danger-rgb: 235, 68, 90;\n  --ion-color-danger-contrast: #ffffff;\n  --ion-color-danger-contrast-rgb: 255, 255, 255;\n  --ion-color-danger-shade: #cf3c4f;\n  --ion-color-danger-tint: #ed576b;\n\n  /** dark **/\n  --ion-color-dark: #222428;\n  --ion-color-dark-rgb: 34, 36, 40;\n  --ion-color-dark-contrast: #ffffff;\n  --ion-color-dark-contrast-rgb: 255, 255, 255;\n  --ion-color-dark-shade: #1e2023;\n  --ion-color-dark-tint: #383a3e;\n\n  /** medium **/\n  --ion-color-medium: #92949c;\n  --ion-color-medium-rgb: 146, 148, 156;\n  --ion-color-medium-contrast: #ffffff;\n  --ion-color-medium-contrast-rgb: 255, 255, 255;\n  --ion-color-medium-shade: #808289;\n  --ion-color-medium-tint: #9d9fa6;\n\n  /** light **/\n  --ion-color-light: #f4f5f8;\n  --ion-color-light-rgb: 244, 245, 248;\n  --ion-color-light-contrast: #000000;\n  --ion-color-light-contrast-rgb: 0, 0, 0;\n  --ion-color-light-shade: #d7d8da;\n  --ion-color-light-tint: #f5f6f9;\n}\n\n@media (prefers-color-scheme: dark) {\n  /*\n   * Dark Colors\n   * -------------------------------------------\n   */\n\n  body {\n    --ion-color-primary: #428cff;\n    --ion-color-primary-rgb: 66,140,255;\n    --ion-color-primary-contrast: #ffffff;\n    --ion-color-primary-contrast-rgb: 255,255,255;\n    --ion-color-primary-shade: #3a7be0;\n    --ion-color-primary-tint: #5598ff;\n\n    --ion-color-secondary: #50c8ff;\n    --ion-color-secondary-rgb: 80,200,255;\n    --ion-color-secondary-contrast: #ffffff;\n    --ion-color-secondary-contrast-rgb: 255,255,255;\n    --ion-color-secondary-shade: #46b0e0;\n    --ion-color-secondary-tint: #62ceff;\n\n    --ion-color-tertiary: #6a64ff;\n    --ion-color-tertiary-rgb: 106,100,255;\n    --ion-color-tertiary-contrast: #ffffff;\n    --ion-color-tertiary-contrast-rgb: 255,255,255;\n    --ion-color-tertiary-shade: #5d58e0;\n    --ion-color-tertiary-tint: #7974ff;\n\n    --ion-color-success: #2fdf75;\n    --ion-color-success-rgb: 47,223,117;\n    --ion-color-success-contrast: #000000;\n    --ion-color-success-contrast-rgb: 0,0,0;\n    --ion-color-success-shade: #29c467;\n    --ion-color-success-tint: #44e283;\n\n    --ion-color-warning: #ffd534;\n    --ion-color-warning-rgb: 255,213,52;\n    --ion-color-warning-contrast: #000000;\n    --ion-color-warning-contrast-rgb: 0,0,0;\n    --ion-color-warning-shade: #e0bb2e;\n    --ion-color-warning-tint: #ffd948;\n\n    --ion-color-danger: #ff4961;\n    --ion-color-danger-rgb: 255,73,97;\n    --ion-color-danger-contrast: #ffffff;\n    --ion-color-danger-contrast-rgb: 255,255,255;\n    --ion-color-danger-shade: #e04055;\n    --ion-color-danger-tint: #ff5b71;\n\n    --ion-color-dark: #f4f5f8;\n    --ion-color-dark-rgb: 244,245,248;\n    --ion-color-dark-contrast: #000000;\n    --ion-color-dark-contrast-rgb: 0,0,0;\n    --ion-color-dark-shade: #d7d8da;\n    --ion-color-dark-tint: #f5f6f9;\n\n    --ion-color-medium: #989aa2;\n    --ion-color-medium-rgb: 152,154,162;\n    --ion-color-medium-contrast: #000000;\n    --ion-color-medium-contrast-rgb: 0,0,0;\n    --ion-color-medium-shade: #86888f;\n    --ion-color-medium-tint: #a2a4ab;\n\n    --ion-color-light: #222428;\n    --ion-color-light-rgb: 34,36,40;\n    --ion-color-light-contrast: #ffffff;\n    --ion-color-light-contrast-rgb: 255,255,255;\n    --ion-color-light-shade: #1e2023;\n    --ion-color-light-tint: #383a3e;\n  }\n\n  /*\n   * iOS Dark Theme\n   * -------------------------------------------\n   */\n\n  .ios body {\n    --ion-background-color: #000000;\n    --ion-background-color-rgb: 0,0,0;\n\n    --ion-text-color: #ffffff;\n    --ion-text-color-rgb: 255,255,255;\n\n    --ion-color-step-50: #0d0d0d;\n    --ion-color-step-100: #1a1a1a;\n    --ion-color-step-150: #262626;\n    --ion-color-step-200: #333333;\n    --ion-color-step-250: #404040;\n    --ion-color-step-300: #4d4d4d;\n    --ion-color-step-350: #595959;\n    --ion-color-step-400: #666666;\n    --ion-color-step-450: #737373;\n    --ion-color-step-500: #808080;\n    --ion-color-step-550: #8c8c8c;\n    --ion-color-step-600: #999999;\n    --ion-color-step-650: #a6a6a6;\n    --ion-color-step-700: #b3b3b3;\n    --ion-color-step-750: #bfbfbf;\n    --ion-color-step-800: #cccccc;\n    --ion-color-step-850: #d9d9d9;\n    --ion-color-step-900: #e6e6e6;\n    --ion-color-step-950: #f2f2f2;\n\n    --ion-toolbar-background: #0d0d0d;\n\n    --ion-item-background: #000000;\n  }\n\n\n  /*\n   * Material Design Dark Theme\n   * -------------------------------------------\n   */\n\n  .md body {\n    --ion-background-color: #121212;\n    --ion-background-color-rgb: 18,18,18;\n\n    --ion-text-color: #ffffff;\n    --ion-text-color-rgb: 255,255,255;\n\n    --ion-border-color: #222222;\n\n    --ion-color-step-50: #1e1e1e;\n    --ion-color-step-100: #2a2a2a;\n    --ion-color-step-150: #363636;\n    --ion-color-step-200: #414141;\n    --ion-color-step-250: #4d4d4d;\n    --ion-color-step-300: #595959;\n    --ion-color-step-350: #656565;\n    --ion-color-step-400: #717171;\n    --ion-color-step-450: #7d7d7d;\n    --ion-color-step-500: #898989;\n    --ion-color-step-550: #949494;\n    --ion-color-step-600: #a0a0a0;\n    --ion-color-step-650: #acacac;\n    --ion-color-step-700: #b8b8b8;\n    --ion-color-step-750: #c4c4c4;\n    --ion-color-step-800: #d0d0d0;\n    --ion-color-step-850: #dbdbdb;\n    --ion-color-step-900: #e7e7e7;\n    --ion-color-step-950: #f3f3f3;\n\n    --ion-item-background: #1e1e1e;\n\n    --ion-toolbar-background: #1f1f1f;\n\n    --ion-tab-bar-background: #1f1f1f;\n  }\n}"
  },
  {
    "path": "ionic-angular/src/zone-flags.ts",
    "content": "/**\n * Prevents Angular change detection from\n * running with certain Web Component callbacks\n */\n(window as any).__Zone_disable_customElements = true;\n"
  },
  {
    "path": "ionic-angular/tsconfig.app.json",
    "content": "{\n  \"extends\": \"./tsconfig.json\",\n  \"compilerOptions\": {\n    \"outDir\": \"./out-tsc/app\",\n    \"types\": []\n  },\n  \"files\": [\n    \"src/main.ts\",\n    \"src/polyfills.ts\"\n  ],\n  \"include\": [\n    \"src/**/*.ts\",\n    \"src/**/*.d.ts\"\n  ],\n  \"exclude\": [\n    \"src/**/*.spec.ts\"\n  ]\n}\n"
  },
  {
    "path": "ionic-angular/tsconfig.json",
    "content": "{\n  \"compileOnSave\": false,\n  \"compilerOptions\": {\n    \"baseUrl\": \"./\",\n    \"outDir\": \"./dist/out-tsc\",\n    \"sourceMap\": true,\n    \"declaration\": false,\n    \"downlevelIteration\": true,\n    \"experimentalDecorators\": true,\n    \"module\": \"esnext\",\n    \"moduleResolution\": \"node\",\n    \"importHelpers\": true,\n    \"target\": \"es2015\",\n    \"lib\": [\n      \"es2018\",\n      \"dom\"\n    ]\n  },\n  \"angularCompilerOptions\": {\n    \"fullTemplateTypeCheck\": true,\n    \"strictInjectionParameters\": true\n  }\n}"
  },
  {
    "path": "ionic-angular/tslint.json",
    "content": "{\n  \"extends\": \"tslint:recommended\",\n  \"rules\": {\n    \"align\": {\n      \"options\": [\n        \"parameters\",\n        \"statements\"\n      ]\n    },\n    \"array-type\": false,\n    \"arrow-return-shorthand\": true,\n    \"curly\": true,\n    \"deprecation\": {\n      \"severity\": \"warning\"\n    },\n    \"component-class-suffix\": [true, \"Page\", \"Component\"],\n    \"contextual-lifecycle\": true,\n    \"directive-class-suffix\": true,\n    \"directive-selector\": [\n      true,\n      \"attribute\",\n      \"app\",\n      \"camelCase\"\n    ],\n    \"component-selector\": [\n      true,\n      \"element\",\n      \"app\",\n      \"kebab-case\"\n    ],\n    \"eofline\": true,\n    \"import-blacklist\": [\n      true,\n      \"rxjs/Rx\"\n    ],\n    \"import-spacing\": true,\n    \"indent\": {\n      \"options\": [\n        \"spaces\"\n      ]\n    },\n    \"max-classes-per-file\": false,\n    \"max-line-length\": [\n      true,\n      140\n    ],\n    \"member-ordering\": [\n      true,\n      {\n        \"order\": [\n          \"static-field\",\n          \"instance-field\",\n          \"static-method\",\n          \"instance-method\"\n        ]\n      }\n    ],\n    \"no-console\": [\n      true,\n      \"debug\",\n      \"info\",\n      \"time\",\n      \"timeEnd\",\n      \"trace\"\n    ],\n    \"no-empty\": false,\n    \"no-inferrable-types\": [\n      true,\n      \"ignore-params\"\n    ],\n    \"no-non-null-assertion\": true,\n    \"no-redundant-jsdoc\": true,\n    \"no-switch-case-fall-through\": true,\n    \"no-var-requires\": false,\n    \"object-literal-key-quotes\": [\n      true,\n      \"as-needed\"\n    ],\n    \"quotemark\": [\n      true,\n      \"single\"\n    ],\n    \"semicolon\": {\n      \"options\": [\n        \"always\"\n      ]\n    },\n    \"space-before-function-paren\": {\n      \"options\": {\n        \"anonymous\": \"never\",\n        \"asyncArrow\": \"always\",\n        \"constructor\": \"never\",\n        \"method\": \"never\",\n        \"named\": \"never\"\n      }\n    },\n    \"typedef-whitespace\": {\n      \"options\": [\n        {\n          \"call-signature\": \"nospace\",\n          \"index-signature\": \"nospace\",\n          \"parameter\": \"nospace\",\n          \"property-declaration\": \"nospace\",\n          \"variable-declaration\": \"nospace\"\n        },\n        {\n          \"call-signature\": \"onespace\",\n          \"index-signature\": \"onespace\",\n          \"parameter\": \"onespace\",\n          \"property-declaration\": \"onespace\",\n          \"variable-declaration\": \"onespace\"\n        }\n      ]\n    },\n    \"variable-name\": {\n      \"options\": [\n        \"ban-keywords\",\n        \"check-format\",\n        \"allow-pascal-case\"\n      ]\n    },\n    \"whitespace\": {\n      \"options\": [\n        \"check-branch\",\n        \"check-decl\",\n        \"check-operator\",\n        \"check-separator\",\n        \"check-type\",\n        \"check-typecast\"\n      ]\n    },\n    \"no-conflicting-lifecycle\": true,\n    \"no-host-metadata-property\": true,\n    \"no-input-rename\": true,\n    \"no-inputs-metadata-property\": true,\n    \"no-output-native\": true,\n    \"no-output-on-prefix\": true,\n    \"no-output-rename\": true,\n    \"no-outputs-metadata-property\": true,\n    \"template-banana-in-box\": true,\n    \"template-no-negated-async\": true,\n    \"use-lifecycle-interface\": true,\n    \"use-pipe-transform-interface\": true,\n    \"object-literal-sort-keys\": false\n  },\n  \"rulesDirectory\": [\n    \"codelyzer\"\n  ]\n}"
  },
  {
    "path": "ionic-react/.gitignore",
    "content": "# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.\n\n# dependencies\n/node_modules\n/.pnp\n.pnp.js\n\n# testing\n/coverage\n\n# production\n/build\n\n# misc\n.DS_Store\n.env.local\n.env.development.local\n.env.test.local\n.env.production.local\n.vscode\n\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\n"
  },
  {
    "path": "ionic-react/capacitor.config.json",
    "content": "{\n  \"appId\": \"io.ionic.starter\",\n  \"appName\": \"tmp-react\",\n  \"bundledWebRuntime\": false,\n  \"npmClient\": \"npm\",\n  \"webDir\": \"build\",\n  \"plugins\": {\n    \"SplashScreen\": {\n      \"launchShowDuration\": 0\n    }\n  },\n  \"cordova\": {}\n}\n"
  },
  {
    "path": "ionic-react/ionic.config.json",
    "content": "{\n  \"name\": \"ionic-react\",\n  \"integrations\": { },\n  \"type\": \"react\"\n}\n"
  },
  {
    "path": "ionic-react/package.json",
    "content": "{\n  \"name\": \"hello-ionic-react\",\n  \"version\": \"0.0.1\",\n  \"private\": true,\n  \"dependencies\": {\n    \"@ionic/react\": \"^5.0.7\",\n    \"@types/node\": \"^12.12.24\",\n    \"@types/react\": \"^16.9.17\",\n    \"@types/react-dom\": \"^16.9.4\",\n    \"ionicons\": \"^5.0.0\",\n    \"react\": \"^16.13.0\",\n    \"react-dom\": \"^16.13.0\",\n    \"react-scripts\": \"3.4.1\",\n    \"typescript\": \"3.8.3\"\n  },\n  \"scripts\": {\n    \"start\": \"react-scripts start\",\n    \"build\": \"react-scripts build\",\n    \"eject\": \"react-scripts eject\"\n  },\n  \"eslintConfig\": {\n    \"extends\": \"react-app\"\n  },\n  \"browserslist\": {\n    \"production\": [\n      \">0.2%\",\n      \"not dead\",\n      \"not op_mini all\"\n    ],\n    \"development\": [\n      \"last 1 chrome version\",\n      \"last 1 firefox version\",\n      \"last 1 safari version\"\n    ]\n  },\n  \"devDependencies\": {},\n  \"description\": \"An Ionic project\"\n}\n"
  },
  {
    "path": "ionic-react/public/index.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"utf-8\" />\n    <title>Ionic App</title>\n\n    <base href=\"/\" />\n\n    <meta name=\"color-scheme\" content=\"light dark\" />\n    <meta\n      name=\"viewport\"\n      content=\"viewport-fit=cover, width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no\"\n    />\n    <meta name=\"format-detection\" content=\"telephone=no\" />\n    <meta name=\"msapplication-tap-highlight\" content=\"no\" />\n\n    <link rel=\"manifest\" href=\"%PUBLIC_URL%/manifest.json\" />\n\n    <link rel=\"shortcut icon\" type=\"image/png\" href=\"%PUBLIC_URL%/assets/icon/favicon.png\" />\n\n    <!-- add to homescreen for ios -->\n    <meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n    <meta name=\"apple-mobile-web-app-title\" content=\"Ionic App\" />\n    <meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black\" />\n  </head>\n\n  <body>\n    <div id=\"root\"></div>\n  </body>\n\n</html>\n"
  },
  {
    "path": "ionic-react/public/manifest.json",
    "content": "{\n  \"short_name\": \"Ionic App\",\n  \"name\": \"My Ionic App\",\n  \"icons\": [\n    {\n      \"src\": \"assets/icon/favicon.png\",\n      \"sizes\": \"64x64 32x32 24x24 16x16\",\n      \"type\": \"image/x-icon\"\n    },\n    {\n      \"src\": \"assets/icon/icon.png\",\n      \"type\": \"image/png\",\n      \"sizes\": \"512x512\",\n      \"purpose\": \"maskable\"\n    }\n  ],\n  \"start_url\": \".\",\n  \"display\": \"standalone\",\n  \"theme_color\": \"#ffffff\",\n  \"background_color\": \"#ffffff\"\n}\n"
  },
  {
    "path": "ionic-react/src/App.tsx",
    "content": "import React from 'react';\nimport { IonApp, IonContent, IonPage } from '@ionic/react';\nimport '@ionic/react/css/ionic.bundle.css';\nimport './theme/variables.css';\n\nconst App: React.FC = () => (\n  <IonApp>\n    <IonPage>\n      <IonContent className=\"ion-padding\">Hello World</IonContent>\n    </IonPage>\n  </IonApp>\n);\n\nexport default App;\n"
  },
  {
    "path": "ionic-react/src/index.tsx",
    "content": "import React from 'react';\nimport ReactDOM from 'react-dom';\nimport App from './App';\nimport * as serviceWorker from './serviceWorker';\n\nReactDOM.render(<App />, document.getElementById('root'));\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n"
  },
  {
    "path": "ionic-react/src/react-app-env.d.ts",
    "content": "/// <reference types=\"react-scripts\" />\n"
  },
  {
    "path": "ionic-react/src/serviceWorker.ts",
    "content": "// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n  window.location.hostname === 'localhost' ||\n    // [::1] is the IPv6 localhost address.\n    window.location.hostname === '[::1]' ||\n    // 127.0.0.0/8 are considered localhost for IPv4.\n    window.location.hostname.match(\n      /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n    )\n);\n\ntype Config = {\n  onSuccess?: (registration: ServiceWorkerRegistration) => void;\n  onUpdate?: (registration: ServiceWorkerRegistration) => void;\n};\n\nexport function register(config?: Config) {\n  if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n    // The URL constructor is available in all browsers that support SW.\n    const publicUrl = new URL(\n      process.env.PUBLIC_URL,\n      window.location.href\n    );\n    if (publicUrl.origin !== window.location.origin) {\n      // Our service worker won't work if PUBLIC_URL is on a different origin\n      // from what our page is served on. This might happen if a CDN is used to\n      // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n      return;\n    }\n\n    window.addEventListener('load', () => {\n      const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n      if (isLocalhost) {\n        // This is running on localhost. Let's check if a service worker still exists or not.\n        checkValidServiceWorker(swUrl, config);\n\n        // Add some additional logging to localhost, pointing developers to the\n        // service worker/PWA documentation.\n        navigator.serviceWorker.ready.then(() => {\n          console.log(\n            'This web app is being served cache-first by a service ' +\n              'worker. To learn more, visit https://bit.ly/CRA-PWA'\n          );\n        });\n      } else {\n        // Is not localhost. Just register service worker\n        registerValidSW(swUrl, config);\n      }\n    });\n  }\n}\n\nfunction registerValidSW(swUrl: string, config?: Config) {\n  navigator.serviceWorker\n    .register(swUrl)\n    .then(registration => {\n      registration.onupdatefound = () => {\n        const installingWorker = registration.installing;\n        if (installingWorker == null) {\n          return;\n        }\n        installingWorker.onstatechange = () => {\n          if (installingWorker.state === 'installed') {\n            if (navigator.serviceWorker.controller) {\n              // At this point, the updated precached content has been fetched,\n              // but the previous service worker will still serve the older\n              // content until all client tabs are closed.\n              console.log(\n                'New content is available and will be used when all ' +\n                  'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n              );\n\n              // Execute callback\n              if (config && config.onUpdate) {\n                config.onUpdate(registration);\n              }\n            } else {\n              // At this point, everything has been precached.\n              // It's the perfect time to display a\n              // \"Content is cached for offline use.\" message.\n              console.log('Content is cached for offline use.');\n\n              // Execute callback\n              if (config && config.onSuccess) {\n                config.onSuccess(registration);\n              }\n            }\n          }\n        };\n      };\n    })\n    .catch(error => {\n      console.error('Error during service worker registration:', error);\n    });\n}\n\nfunction checkValidServiceWorker(swUrl: string, config?: Config) {\n  // Check if the service worker can be found. If it can't reload the page.\n  fetch(swUrl, {\n    headers: { 'Service-Worker': 'script' }\n  })\n    .then(response => {\n      // Ensure service worker exists, and that we really are getting a JS file.\n      const contentType = response.headers.get('content-type');\n      if (\n        response.status === 404 ||\n        (contentType != null && contentType.indexOf('javascript') === -1)\n      ) {\n        // No service worker found. Probably a different app. Reload the page.\n        navigator.serviceWorker.ready.then(registration => {\n          registration.unregister().then(() => {\n            window.location.reload();\n          });\n        });\n      } else {\n        // Service worker found. Proceed as normal.\n        registerValidSW(swUrl, config);\n      }\n    })\n    .catch(() => {\n      console.log(\n        'No internet connection found. App is running in offline mode.'\n      );\n    });\n}\n\nexport function unregister() {\n  if ('serviceWorker' in navigator) {\n    navigator.serviceWorker.ready.then(registration => {\n      registration.unregister();\n    });\n  }\n}\n"
  },
  {
    "path": "ionic-react/src/theme/variables.css",
    "content": ":root {\n  /** primary **/\n  --ion-color-primary: #3880ff;\n  --ion-color-primary-rgb: 56, 128, 255;\n  --ion-color-primary-contrast: #ffffff;\n  --ion-color-primary-contrast-rgb: 255, 255, 255;\n  --ion-color-primary-shade: #3171e0;\n  --ion-color-primary-tint: #4c8dff;\n\n  /** secondary **/\n  --ion-color-secondary: #3dc2ff;\n  --ion-color-secondary-rgb: 61, 194, 255;\n  --ion-color-secondary-contrast: #ffffff;\n  --ion-color-secondary-contrast-rgb: 255, 255, 255;\n  --ion-color-secondary-shade: #36abe0;\n  --ion-color-secondary-tint: #50c8ff;\n\n  /** tertiary **/\n  --ion-color-tertiary: #5260ff;\n  --ion-color-tertiary-rgb: 82, 96, 255;\n  --ion-color-tertiary-contrast: #ffffff;\n  --ion-color-tertiary-contrast-rgb: 255, 255, 255;\n  --ion-color-tertiary-shade: #4854e0;\n  --ion-color-tertiary-tint: #6370ff;\n\n  /** success **/\n  --ion-color-success: #2dd36f;\n  --ion-color-success-rgb: 45, 211, 111;\n  --ion-color-success-contrast: #ffffff;\n  --ion-color-success-contrast-rgb: 255, 255, 255;\n  --ion-color-success-shade: #28ba62;\n  --ion-color-success-tint: #42d77d;\n\n  /** warning **/\n  --ion-color-warning: #ffc409;\n  --ion-color-warning-rgb: 255, 196, 9;\n  --ion-color-warning-contrast: #000000;\n  --ion-color-warning-contrast-rgb: 0, 0, 0;\n  --ion-color-warning-shade: #e0ac08;\n  --ion-color-warning-tint: #ffca22;\n\n  /** danger **/\n  --ion-color-danger: #eb445a;\n  --ion-color-danger-rgb: 235, 68, 90;\n  --ion-color-danger-contrast: #ffffff;\n  --ion-color-danger-contrast-rgb: 255, 255, 255;\n  --ion-color-danger-shade: #cf3c4f;\n  --ion-color-danger-tint: #ed576b;\n\n  /** dark **/\n  --ion-color-dark: #222428;\n  --ion-color-dark-rgb: 34, 36, 40;\n  --ion-color-dark-contrast: #ffffff;\n  --ion-color-dark-contrast-rgb: 255, 255, 255;\n  --ion-color-dark-shade: #1e2023;\n  --ion-color-dark-tint: #383a3e;\n\n  /** medium **/\n  --ion-color-medium: #92949c;\n  --ion-color-medium-rgb: 146, 148, 156;\n  --ion-color-medium-contrast: #ffffff;\n  --ion-color-medium-contrast-rgb: 255, 255, 255;\n  --ion-color-medium-shade: #808289;\n  --ion-color-medium-tint: #9d9fa6;\n\n  /** light **/\n  --ion-color-light: #f4f5f8;\n  --ion-color-light-rgb: 244, 245, 248;\n  --ion-color-light-contrast: #000000;\n  --ion-color-light-contrast-rgb: 0, 0, 0;\n  --ion-color-light-shade: #d7d8da;\n  --ion-color-light-tint: #f5f6f9;\n}\n\n@media (prefers-color-scheme: dark) {\n  /*\n   * Dark Colors\n   * -------------------------------------------\n   */\n\n  body {\n    --ion-color-primary: #428cff;\n    --ion-color-primary-rgb: 66,140,255;\n    --ion-color-primary-contrast: #ffffff;\n    --ion-color-primary-contrast-rgb: 255,255,255;\n    --ion-color-primary-shade: #3a7be0;\n    --ion-color-primary-tint: #5598ff;\n\n    --ion-color-secondary: #50c8ff;\n    --ion-color-secondary-rgb: 80,200,255;\n    --ion-color-secondary-contrast: #ffffff;\n    --ion-color-secondary-contrast-rgb: 255,255,255;\n    --ion-color-secondary-shade: #46b0e0;\n    --ion-color-secondary-tint: #62ceff;\n\n    --ion-color-tertiary: #6a64ff;\n    --ion-color-tertiary-rgb: 106,100,255;\n    --ion-color-tertiary-contrast: #ffffff;\n    --ion-color-tertiary-contrast-rgb: 255,255,255;\n    --ion-color-tertiary-shade: #5d58e0;\n    --ion-color-tertiary-tint: #7974ff;\n\n    --ion-color-success: #2fdf75;\n    --ion-color-success-rgb: 47,223,117;\n    --ion-color-success-contrast: #000000;\n    --ion-color-success-contrast-rgb: 0,0,0;\n    --ion-color-success-shade: #29c467;\n    --ion-color-success-tint: #44e283;\n\n    --ion-color-warning: #ffd534;\n    --ion-color-warning-rgb: 255,213,52;\n    --ion-color-warning-contrast: #000000;\n    --ion-color-warning-contrast-rgb: 0,0,0;\n    --ion-color-warning-shade: #e0bb2e;\n    --ion-color-warning-tint: #ffd948;\n\n    --ion-color-danger: #ff4961;\n    --ion-color-danger-rgb: 255,73,97;\n    --ion-color-danger-contrast: #ffffff;\n    --ion-color-danger-contrast-rgb: 255,255,255;\n    --ion-color-danger-shade: #e04055;\n    --ion-color-danger-tint: #ff5b71;\n\n    --ion-color-dark: #f4f5f8;\n    --ion-color-dark-rgb: 244,245,248;\n    --ion-color-dark-contrast: #000000;\n    --ion-color-dark-contrast-rgb: 0,0,0;\n    --ion-color-dark-shade: #d7d8da;\n    --ion-color-dark-tint: #f5f6f9;\n\n    --ion-color-medium: #989aa2;\n    --ion-color-medium-rgb: 152,154,162;\n    --ion-color-medium-contrast: #000000;\n    --ion-color-medium-contrast-rgb: 0,0,0;\n    --ion-color-medium-shade: #86888f;\n    --ion-color-medium-tint: #a2a4ab;\n\n    --ion-color-light: #222428;\n    --ion-color-light-rgb: 34,36,40;\n    --ion-color-light-contrast: #ffffff;\n    --ion-color-light-contrast-rgb: 255,255,255;\n    --ion-color-light-shade: #1e2023;\n    --ion-color-light-tint: #383a3e;\n  }\n\n  /*\n   * iOS Dark Theme\n   * -------------------------------------------\n   */\n\n  .ios body {\n    --ion-background-color: #000000;\n    --ion-background-color-rgb: 0,0,0;\n\n    --ion-text-color: #ffffff;\n    --ion-text-color-rgb: 255,255,255;\n\n    --ion-color-step-50: #0d0d0d;\n    --ion-color-step-100: #1a1a1a;\n    --ion-color-step-150: #262626;\n    --ion-color-step-200: #333333;\n    --ion-color-step-250: #404040;\n    --ion-color-step-300: #4d4d4d;\n    --ion-color-step-350: #595959;\n    --ion-color-step-400: #666666;\n    --ion-color-step-450: #737373;\n    --ion-color-step-500: #808080;\n    --ion-color-step-550: #8c8c8c;\n    --ion-color-step-600: #999999;\n    --ion-color-step-650: #a6a6a6;\n    --ion-color-step-700: #b3b3b3;\n    --ion-color-step-750: #bfbfbf;\n    --ion-color-step-800: #cccccc;\n    --ion-color-step-850: #d9d9d9;\n    --ion-color-step-900: #e6e6e6;\n    --ion-color-step-950: #f2f2f2;\n\n    --ion-toolbar-background: #0d0d0d;\n\n    --ion-item-background: #000000;\n  }\n\n\n  /*\n   * Material Design Dark Theme\n   * -------------------------------------------\n   */\n\n  .md body {\n    --ion-background-color: #121212;\n    --ion-background-color-rgb: 18,18,18;\n\n    --ion-text-color: #ffffff;\n    --ion-text-color-rgb: 255,255,255;\n\n    --ion-border-color: #222222;\n\n    --ion-color-step-50: #1e1e1e;\n    --ion-color-step-100: #2a2a2a;\n    --ion-color-step-150: #363636;\n    --ion-color-step-200: #414141;\n    --ion-color-step-250: #4d4d4d;\n    --ion-color-step-300: #595959;\n    --ion-color-step-350: #656565;\n    --ion-color-step-400: #717171;\n    --ion-color-step-450: #7d7d7d;\n    --ion-color-step-500: #898989;\n    --ion-color-step-550: #949494;\n    --ion-color-step-600: #a0a0a0;\n    --ion-color-step-650: #acacac;\n    --ion-color-step-700: #b8b8b8;\n    --ion-color-step-750: #c4c4c4;\n    --ion-color-step-800: #d0d0d0;\n    --ion-color-step-850: #dbdbdb;\n    --ion-color-step-900: #e7e7e7;\n    --ion-color-step-950: #f3f3f3;\n\n    --ion-item-background: #1e1e1e;\n\n    --ion-toolbar-background: #1f1f1f;\n\n    --ion-tab-bar-background: #1f1f1f;\n  }\n}\n"
  },
  {
    "path": "ionic-react/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"es5\",\n    \"lib\": [\n      \"dom\",\n      \"dom.iterable\",\n      \"esnext\"\n    ],\n    \"allowJs\": true,\n    \"skipLibCheck\": true,\n    \"esModuleInterop\": true,\n    \"allowSyntheticDefaultImports\": true,\n    \"strict\": true,\n    \"forceConsistentCasingInFileNames\": true,\n    \"module\": \"esnext\",\n    \"moduleResolution\": \"node\",\n    \"resolveJsonModule\": true,\n    \"isolatedModules\": true,\n    \"noEmit\": true,\n    \"jsx\": \"react\"\n  },\n  \"include\": [\n    \"src\"\n  ]\n}\n"
  },
  {
    "path": "javascript/README.md",
    "content": "# Project Title\n\nHello World app for JavaScript/HTML\n\n\n## Getting Started\n\nOpen the index.html to see Hello World in action\n\n\n### Prerequisites\n\nAny browser like Google Chrome, IE, Edge, Safari, Firefox, etc\n\n\n## Authors\n\n* **Duraimurugan Rajendran** - *Initial work* - (https://github.com/Duraimurugan/)\n\n\n## Acknowledgments\n\n* John Papa\n"
  },
  {
    "path": "javascript/hello-world.js",
    "content": "class HelloWorldComponent extends HTMLElement {\n  connectedCallback() {\n    /* called when the element is connected to the page */\n    this.innerHTML = 'Hello World';\n  }\n}\ncustomElements.define('hello-world-component', HelloWorldComponent);\n"
  },
  {
    "path": "javascript/index.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n    <script src='hello-world.js'></script>\n</head>\n<body>\n    <hello-world-component></hello-world-component>\n</body>\n</html>"
  },
  {
    "path": "jquery/index.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"UTF-8\" />\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n    <title>Hello</title>\n  </head>\n  <body>\n    <div id=\"hello\">Hello</div>\n    <script\n      src=\"https://code.jquery.com/jquery-3.5.1.slim.min.js\"\n      integrity=\"sha256-4+XzXVhsDmqanXGHaHvgh1gMQKX40OUvDEBTu8JcmNs=\"\n      crossorigin=\"anonymous\"\n    ></script>\n    <script>\n      var helloEl$ = $('#hello');\n      var existingText = helloEl$.text();\n      helloEl$.text(existingText + ' world!');\n    </script>\n  </body>\n</html>\n"
  },
  {
    "path": "knockoutjs/.gitignore",
    "content": "dist/\n"
  },
  {
    "path": "knockoutjs/index.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"UTF-8\" />\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n    <title>Hello Knockout JS</title>\n  </head>\n  <body>\n    <hello-world></hello-world>\n  </body>\n</html>\n"
  },
  {
    "path": "knockoutjs/package.json",
    "content": "{\n  \"name\": \"knockoutjs\",\n  \"version\": \"1.0.0\",\n  \"description\": \"\",\n  \"main\": \"index.js\",\n  \"scripts\": {\n    \"start\": \"webpack-dev-server --watch\",\n    \"build\": \"webpack\"\n  },\n  \"keywords\": [],\n  \"license\": \"MIT\",\n  \"devDependencies\": {\n    \"clean-webpack-plugin\": \"^3.0.0\",\n    \"html-webpack-plugin\": \"^4.3.0\",\n    \"webpack\": \"^4.43.0\",\n    \"webpack-cli\": \"^3.3.11\",\n    \"webpack-dev-server\": \"^3.11.0\"\n  },\n  \"dependencies\": {\n    \"knockout\": \"^3.5.1\"\n  }\n}\n"
  },
  {
    "path": "knockoutjs/src/app.js",
    "content": "import ko from \"knockout\";\n\nclass HelloWorldViewModel {\n  constructor() {\n    this.message = \"Hello World\";\n  }\n}\n\nko.components.register(\"hello-world\", {\n  viewModel: HelloWorldViewModel,\n  template: `<div data-bind=\"text: message\"></div>`\n});\n\nko.applyBindings();\n"
  },
  {
    "path": "knockoutjs/webpack.config.js",
    "content": "\"use strict\";\n\nconst path = require(\"path\");\nconst HtmlWebpackPlugin = require(\"html-webpack-plugin\");\nconst { CleanWebpackPlugin } = require(\"clean-webpack-plugin\");\nmodule.exports = {\n  entry: \"./src/app.js\",\n  output: {\n    filename: \"bundle.[hash].js\",\n    path: path.resolve(__dirname, \"dist\")\n  },\n  plugins: [\n    new CleanWebpackPlugin(),\n    new HtmlWebpackPlugin({\n      title: \"Hello Angular\",\n      template: \"index.html\"\n    })\n  ]\n};\n"
  },
  {
    "path": "lit-element/.editorconfig",
    "content": "# EditorConfig helps developers define and maintain consistent\n# coding styles between different editors and IDEs\n# editorconfig.org\n\nroot = true\n\n\n[*]\n\n# Change these settings to your own preference\nindent_style = space\nindent_size = 2\n\n# We recommend you to keep these unchanged\nend_of_line = lf\ncharset = utf-8\ntrim_trailing_whitespace = true\ninsert_final_newline = true\n\n[*.md]\ntrim_trailing_whitespace = false\n\n[*.json]\nindent_size = 2\n\n[*.{html,js,md}]\nblock_comment_start = /**\nblock_comment = *\nblock_comment_end = */\n"
  },
  {
    "path": "lit-element/.gitignore",
    "content": "## editors\n/.idea\n/.vscode\n\n## system files\n.DS_Store\n\n## npm\n/node_modules/\n/npm-debug.log\n\n## testing\n/coverage/\n\n## temp folders\n/.tmp/\n\n# build\n/_site/\n/dist/\n/out-tsc/"
  },
  {
    "path": "lit-element/README.md",
    "content": "<p align=\"center\">\n  <img width=\"200\" src=\"https://open-wc.org/hero.png\"></img>\n</p>\n\n## Lit-element Hello World App\n\n[![Built with open-wc recommendations](https://img.shields.io/badge/built%20with-open--wc-blue.svg)](https://github.com/open-wc)\n\n## Quickstart\n\nTo get started:\n\n```bash\nnpm init @open-wc\n# requires node 10 & npm 6 or higher\n```\n\n## Scripts\n\n- `start` runs your app for development, reloading on file changes\n- `start:build` runs your app after it has been built using the build command\n- `build` builds your app and outputs it in your `dist` directory\n\n## Tooling configs\n\nFor most of the tools, the configuration is in the `package.json` to reduce the amount of files in your project.\n\nIf you customize the configuration a lot, you can consider moving them to individual files.\n"
  },
  {
    "path": "lit-element/custom-elements.json",
    "content": "{\n  \"version\": 2,\n  \"tags\": [\n    {\n      \"name\": \"hello-world\",\n      \"description\": \"An Hello-World application using lit-element and open-wc\",\n      \"properties\": [\n        {\n          \"name\": \"value\",\n          \"type\": \"String\",\n          \"description\": \"who to say hello to\",\n          \"default\": \"World\"\n        }\n      ],\n      \"events\": [],\n      \"slots\": [],\n      \"cssProperties\": []\n    }\n  ]\n}\n"
  },
  {
    "path": "lit-element/index.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta\n      name=\"viewport\"\n      content=\"width=device-width, initial-scale=1.0, viewport-fit=cover\"\n    />\n    <meta\n      name=\"Description\"\n      content=\"Webcomponent hello-world following open-wc recommendations.\"\n    />\n    <base href=\"/\" />\n    <title>hello-world</title>\n  </head>\n\n  <body>\n    <hello-world></hello-world>\n\n    <script type=\"module\" src=\"./src/hello-world.js\"></script>\n  </body>\n</html>\n"
  },
  {
    "path": "lit-element/package.json",
    "content": "{\n  \"scripts\": {\n    \"build\": \"rimraf dist && rollup -c rollup.config.js\",\n    \"start:build\": \"npm run build && es-dev-server --root-dir dist --app-index index.html --open --compatibility none\",\n    \"start\": \"es-dev-server --app-index index.html --node-resolve --open --watch\"\n  },\n  \"devDependencies\": {\n    \"@open-wc/building-rollup\": \"^1.0.0\",\n    \"rimraf\": \"^2.6.3\",\n    \"rollup\": \"^2.3.4\",\n    \"es-dev-server\": \"^1.5.0\"\n  },\n  \"name\": \"hello-world\",\n  \"version\": \"0.0.0\",\n  \"description\": \"Webcomponent hello-world following open-wc recommendations\",\n  \"dependencies\": {\n    \"lit-html\": \"^1.0.0\",\n    \"lit-element\": \"^2.0.1\"\n  }\n}\n"
  },
  {
    "path": "lit-element/rollup.config.js",
    "content": "import merge from \"deepmerge\";\n// use createSpaConfig for bundling a Single Page App\nimport { createSpaConfig } from \"@open-wc/building-rollup\";\n\n// use createBasicConfig to do regular JS to JS bundling\n// import { createBasicConfig } from '@open-wc/building-rollup';\n\nconst baseConfig = createSpaConfig({\n  // use the outputdir option to modify where files are output\n  // outputDir: 'dist',\n\n  // if you need to support older browsers, such as IE11, set the legacyBuild\n  // option to generate an additional build just for this browser\n  // legacyBuild: true,\n\n  // development mode creates a non-minified build for debugging or development\n  developmentMode: process.env.ROLLUP_WATCH === \"true\",\n\n  // set to true to inject the service worker registration into your index.html\n  injectServiceWorker: false,\n});\n\nexport default merge(baseConfig, {\n  // if you use createSpaConfig, you can use your index.html as entrypoint,\n  // any <script type=\"module\"> inside will be bundled by rollup\n  input: \"./index.html\",\n\n  // alternatively, you can use your JS as entrypoint for rollup and\n  // optionally set a HTML template manually\n  // input: './app.js',\n});\n"
  },
  {
    "path": "lit-element/src/HelloWorld.js",
    "content": "import { LitElement, html } from \"lit-element\";\n\nexport class HelloWorld extends LitElement {\n  static get properties() {\n    return {\n      value: { type: String },\n    };\n  }\n\n  constructor() {\n    super();\n\n    this.value = \"World\";\n  }\n\n  render() {\n    return html` <div>Hello ${this.value}</div> `;\n  }\n}\n"
  },
  {
    "path": "lit-element/src/hello-world.js",
    "content": "import { HelloWorld } from \"./HelloWorld.js\";\n\ncustomElements.define(\"hello-world\", HelloWorld);\n"
  },
  {
    "path": "marko/.gitignore",
    "content": "# dependencies\n/node_modules\n\n# testing\n/coverage\n\n# production\n/public/static\n\n# misc\n.DS_Store\n.env.local\n.env.development.local\n.env.test.local\n.env.production.local\n\n# Log files\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\n\n# Editor directories and files\n.idea\n.vscode\n*.suo\n*.ntvs*\n*.njsproj\n*.sln\n*.sw?\n"
  },
  {
    "path": "marko/README.md",
    "content": "# `Marko`\n\nA minimal hello world example in Marko.\n\n## Requirement\n\nYou will need the following things properly installed on your computer.\n\n* [Git](https://git-scm.com/)\n* [Node.js](https://nodejs.org/)\n* [NPM](https://docs.npmjs.com/)\n* [Google Chrome](https://google.com/chrome/)\n\n## Available Commands\n\nIn the project directory, you can run:\n\n### `npm install`\n\nTo install all dependencies\n\n### `npm run build`\n\nTo build a production-ready on build directory\n\n### `npm start`\n\nTo run the production server. Open [http://localhost:8080](http://localhost:8080) to view it in the browser.\n\n## Learn More\n\nLearn more about Marko in the [Marko docs](https://markojs.com/docs/getting-started/).\n\n"
  },
  {
    "path": "marko/package.json",
    "content": "{\n  \"name\": \"hello-marko\",\n  \"version\": \"1.0.0\",\n  \"description\": \"hello word marko app\",\n  \"scripts\": {\n    \"build\": \"NODE_ENV=production webpack --progress\",\n    \"start\": \"webpack-dev-server --content-base public/\"\n  },\n  \"private\": true,\n  \"dependencies\": {\n    \"marko\": \"^4.21.8\",\n    \"webpack-dev-server\": \"^3.11.0\"\n  },\n  \"devDependencies\": {\n    \"@marko/webpack\": \"^6.0.0\",\n    \"webpack\": \"^4.43.0\",\n    \"webpack-cli\": \"^3.3.11\"\n  }\n}\n"
  },
  {
    "path": "marko/public/index.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n  \t<title>Marko Hello World</title>\n  </head>\n  <body>\n    <script src=\"static/bundle.js\"></script> \n  </body>\n</html>"
  },
  {
    "path": "marko/src/app.js",
    "content": "import AppTemplate from \"./app.marko\";\n \nAppTemplate.renderSync({ value: \"World\" }).appendTo(document.body);"
  },
  {
    "path": "marko/src/app.marko",
    "content": "<div>Hello ${input.value}</div>"
  },
  {
    "path": "marko/webpack.config.js",
    "content": "module.exports = {\n  entry: \"./src/app.js\",\n  output: {\n    path: __dirname,\n    filename: \"public/static/bundle.js\"\n  },\n  resolve: {\n    extensions: [\".js\", \".marko\"]\n  },\n  module: {\n    rules: [\n      {\n        test: /\\.marko$/,\n        loader: \"@marko/webpack/loader\"\n      }\n    ]\n  }\n};"
  },
  {
    "path": "meteor/.gitignore",
    "content": "node_modules/\n"
  },
  {
    "path": "meteor/.meteor/.finished-upgraders",
    "content": "# This file contains information which helps Meteor properly upgrade your\n# app when you run 'meteor update'. You should check it into version control\n# with your project.\n\nnotices-for-0.9.0\nnotices-for-0.9.1\n0.9.4-platform-file\nnotices-for-facebook-graph-api-2\n1.2.0-standard-minifiers-package\n1.2.0-meteor-platform-split\n1.2.0-cordova-changes\n1.2.0-breaking-changes\n1.3.0-split-minifiers-package\n1.4.0-remove-old-dev-bundle-link\n1.4.1-add-shell-server-package\n1.4.3-split-account-service-packages\n1.5-add-dynamic-import-package\n1.7-split-underscore-from-meteor-base\n1.8.3-split-jquery-from-blaze\n"
  },
  {
    "path": "meteor/.meteor/.gitignore",
    "content": "local\n"
  },
  {
    "path": "meteor/.meteor/.id",
    "content": "# This file contains a token that is unique to your project.\n# Check it into your repository along with the rest of this directory.\n# It can be used for purposes such as:\n#   - ensuring you don't accidentally deploy one app on top of another\n#   - providing package authors with aggregated statistics\n\nik62hvyntwuq.kh35ipb4tls\n"
  },
  {
    "path": "meteor/.meteor/packages",
    "content": "# Meteor packages used by this project, one per line.\n# Check this file (and the other files in this directory) into your repository.\n#\n# 'meteor add' and 'meteor remove' will edit this file for you,\n# but you can also edit it by hand.\n\nmeteor-base@1.4.0             # Packages every Meteor app needs to have\nmobile-experience@1.1.0       # Packages for a great mobile UX\nmongo@1.10.0                   # The database Meteor supports right now\nblaze-html-templates    # Compile .html files into Meteor Blaze views\njquery                  # Wrapper package for npm-installed jquery\nreactive-var@1.0.11            # Reactive variable for tracker\ntracker@1.2.0                 # Meteor's client-side reactive programming library\n\nstandard-minifier-css@1.6.0   # CSS minifier run for production mode\nstandard-minifier-js@2.6.0    # JS minifier run for production mode\nes5-shim@4.8.0                # ECMAScript 5 compatibility for older browsers\necmascript@0.14.3              # Enable ECMAScript2015+ syntax in app code\ntypescript@3.7.6              # Enable TypeScript syntax in .ts and .tsx modules\nshell-server@0.5.0            # Server-side component of the `meteor shell` command\n\nautopublish@1.0.7             # Publish all data to the clients (for prototyping)\ninsecure@1.0.7                # Allow all DB writes from clients (for prototyping)\n"
  },
  {
    "path": "meteor/.meteor/platforms",
    "content": "server\nbrowser\n"
  },
  {
    "path": "meteor/.meteor/release",
    "content": "METEOR@1.10.2\n"
  },
  {
    "path": "meteor/.meteor/versions",
    "content": "allow-deny@1.1.0\nautopublish@1.0.7\nautoupdate@1.6.0\nbabel-compiler@7.5.3\nbabel-runtime@1.5.0\nbase64@1.0.12\nbinary-heap@1.0.11\nblaze@2.3.4\nblaze-html-templates@1.1.2\nblaze-tools@1.0.10\nboilerplate-generator@1.7.0\ncaching-compiler@1.2.2\ncaching-html-compiler@1.1.3\ncallback-hook@1.3.0\ncheck@1.3.1\nddp@1.4.0\nddp-client@2.3.3\nddp-common@1.4.0\nddp-server@2.3.1\ndeps@1.0.12\ndiff-sequence@1.1.1\ndynamic-import@0.5.2\necmascript@0.14.3\necmascript-runtime@0.7.0\necmascript-runtime-client@0.10.0\necmascript-runtime-server@0.9.0\nejson@1.1.1\nes5-shim@4.8.0\nfetch@0.1.1\ngeojson-utils@1.0.10\nhot-code-push@1.0.4\nhtml-tools@1.0.11\nhtmljs@1.0.11\nid-map@1.1.0\ninsecure@1.0.7\ninter-process-messaging@0.1.1\njquery@3.0.0\nlaunch-screen@1.2.0\nlivedata@1.0.18\nlogging@1.1.20\nmeteor@1.9.3\nmeteor-base@1.4.0\nminifier-css@1.5.0\nminifier-js@2.6.0\nminimongo@1.6.0\nmobile-experience@1.1.0\nmobile-status-bar@1.1.0\nmodern-browsers@0.1.5\nmodules@0.15.0\nmodules-runtime@0.12.0\nmongo@1.10.0\nmongo-decimal@0.1.1\nmongo-dev-server@1.1.0\nmongo-id@1.0.7\nnpm-mongo@3.7.0\nobserve-sequence@1.0.16\nordered-dict@1.1.0\npromise@0.11.2\nrandom@1.2.0\nreactive-var@1.0.11\nreload@1.3.0\nretry@1.1.0\nroutepolicy@1.1.0\nshell-server@0.5.0\nsocket-stream-client@0.3.0\nspacebars@1.0.15\nspacebars-compiler@1.1.3\nstandard-minifier-css@1.6.0\nstandard-minifier-js@2.6.0\ntemplating@1.3.2\ntemplating-compiler@1.3.3\ntemplating-runtime@1.3.2\ntemplating-tools@1.1.2\ntracker@1.2.0\ntypescript@3.7.6\nui@1.0.13\nunderscore@1.0.10\nwebapp@1.9.1\nwebapp-hashing@1.0.9\n"
  },
  {
    "path": "meteor/README.md",
    "content": "# Install Meteor \n\n## Windows\nchoco install meteor\n\n## OSX/Linux\ncurl https://install.meteor.com/ | sh\n\n## Create meteor project\nmeteor create projectname\n\n## User windows\nIf you get some error like 'Errors prevented isopacket load:' While loading isopacket `combined`:, \n\nI think for to solve this problem this source is the best way solution\n\nhttps://stackoverflow.com/questions/60333092/meteor-update-isopacket-giving-combined-error-sourcemapconsumer-destroy-is-n\n\n\n## Run\nIf you want to run meteor project run the simply command *npm run start* or *meteor run*\n\n## Build\nTo bundle this project you can use run *meteor build --directory <yourpath>*\n\nWARNING: The output directory is under your source tree. Your generated files may get interpreted as source code! Consider building into a different directory instead. meteor build ../output -> This is suggestion from meteor\n\nor if you want show visualization after build just run *npm run visualize*\n"
  },
  {
    "path": "meteor/client/main.css",
    "content": "body {\n  padding: 10px;\n  font-family: sans-serif;\n}\n"
  },
  {
    "path": "meteor/client/main.html",
    "content": "<head>\n  <title>hello</title>\n</head>\n\n<body>\n  <h1>Hello {{> myWord}}</h1>\n</body>\n<template name=\"myWord\">\n  {{text}}\n</template>\n"
  },
  {
    "path": "meteor/client/main.js",
    "content": "import { Template } from 'meteor/templating';\n\nimport './main.html';\n\nif (Meteor.isClient) {\n  Template.myWord.helpers({\n    text: 'World',\n  });\n}\n"
  },
  {
    "path": "meteor/package.json",
    "content": "{\n  \"name\": \"hello\",\n  \"private\": true,\n  \"scripts\": {\n    \"start\": \"meteor run\",\n    \"visualize\": \"meteor --production --extra-packages bundle-visualizer\",\n    \"build\": \"meteor build --directory ./\"\n  },\n  \"dependencies\": {\n    \"@babel/runtime\": \"^7.8.3\",\n    \"jquery\": \"^3.4.1\",\n    \"meteor-node-stubs\": \"^1.0.0\"\n  },\n  \"meteor\": {\n    \"mainModule\": {\n      \"client\": \"client/main.js\",\n      \"server\": \"server/main.js\"\n    },\n    \"testModule\": \"tests/main.js\"\n  }\n}\n"
  },
  {
    "path": "meteor/server/main.js",
    "content": "import { Meteor } from 'meteor/meteor';\n\nMeteor.startup(() => {\n  // code to run on server at startup\n});\n"
  },
  {
    "path": "mithril/package.json",
    "content": "{\n  \"name\": \"hello-mithril\",\n  \"version\": \"0.0.0\",\n  \"private\": true,\n  \"main\": \"index.js\",\n  \"scripts\": {\n    \"start\": \"parcel src/index.html\",\n    \"build\": \"parcel build src/index.js\",\n    \"postbuild\": \"ncp src/index.html dist/index.html\"\n  },\n  \"dependencies\": {\n    \"mithril\": \"^2.0.4\"\n  },\n  \"devDependencies\": {\n    \"ncp\": \"^2.0.0\",\n    \"parcel-bundler\": \"^1.12.4\"\n  }\n}\n"
  },
  {
    "path": "mithril/src/README.md",
    "content": "# Hello, Mitrhil!\nA minimal hello world example in [mithril](https://mithril.js.org/).\n\n## Installation\n```\ngit clone https://github.com/johnpapa/hello-worlds\ncd hello-worlds/mithril\nnpm install\n```\n## Running / Development\n```\nnpm start\n```\nVisit your app at http://localhost:1234.\n\n## Building for production\nCreate an optimized version of the app to be served from a `dist` folder.\n```\nnpm run build\n```\n"
  },
  {
    "path": "mithril/src/index.html",
    "content": "<!DOCTYPE html>\n<body>\n  <script src=\"./index.js\"></script>\n</body>"
  },
  {
    "path": "mithril/src/index.js",
    "content": "import m from 'mithril'\nm.render(document.body, 'Hello, World!')"
  },
  {
    "path": "nextjs/.gitignore",
    "content": "# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.\n\n# dependencies\n/node_modules\n/.pnp\n.pnp.js\n\n# testing\n/coverage\n\n# next.js\n/.next/\n/out/\n\n# production\n/build\n\n# misc\n.DS_Store\n\n# debug\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\n\n# local env files\n.env.local\n.env.development.local\n.env.test.local\n.env.production.local\n"
  },
  {
    "path": "nextjs/README.md",
    "content": "This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/zeit/next.js/tree/canary/packages/create-next-app).\n\n## Getting Started\n\nFirst, run the development server:\n\n```bash\nnpm run dev\n# or\nyarn dev\n```\n\nOpen [http://localhost:3000](http://localhost:3000) with your browser to see the result.\n\nYou can start editing the page by modifying `pages/index.js`. The page auto-updates as you edit the file.\n\n## Learn More\n\nTo learn more about Next.js, take a look at the following resources:\n\n- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.\n- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.\n\nYou can check out [the Next.js GitHub repository](https://github.com/zeit/next.js/) - your feedback and contributions are welcome!\n\n## Deploy on Vercel\n\nThe easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/import?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.\n\nCheck out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details.\n"
  },
  {
    "path": "nextjs/package.json",
    "content": "{\n  \"name\": \"nextjs\",\n  \"version\": \"0.1.0\",\n  \"private\": true,\n  \"scripts\": {\n    \"dev\": \"next dev\",\n    \"build\": \"next build && next export\",\n    \"start\": \"next start\"\n  },\n  \"dependencies\": {\n    \"next\": \"9.4.2\",\n    \"react\": \"16.13.1\",\n    \"react-dom\": \"16.13.1\"\n  }\n}\n"
  },
  {
    "path": "nextjs/pages/index.js",
    "content": "import Head from 'next/head'\n\nexport default function Home() {\n  return (\n    <div className=\"container\">\n      <Head>\n        <title>Next Hello World</title>\n        <link rel=\"icon\" href=\"/favicon.ico\" />\n      </Head>\n\n      <main>\n        <h1 className=\"title\">\n          Hello World!\n        </h1>\n      </main>\n\n      <style jsx>{`\n        .container {\n          min-height: 100vh;\n          padding: 0 0.5rem;\n          display: flex;\n          flex-direction: column;\n          justify-content: center;\n          align-items: center;\n        }\n\n        main {\n          padding: 5rem 0;\n          flex: 1;\n          display: flex;\n          flex-direction: column;\n          justify-content: center;\n          align-items: center;\n        }\n\n        .title {\n          margin: 0;\n          line-height: 1.15;\n          font-size: 4rem;\n        }\n      `}</style>\n\n      <style jsx global>{`\n        html,\n        body {\n          padding: 0;\n          margin: 0;\n          font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto,\n            Oxygen, Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue,\n            sans-serif;\n        }\n\n        * {\n          box-sizing: border-box;\n        }\n      `}</style>\n    </div>\n  )\n}\n"
  },
  {
    "path": "nuxtjs/.gitignore",
    "content": "# Logs\nlogs\n*.log\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\n\n# Dependency directories\nnode_modules/\n\n# dotenv environment variables file\n.env\n\n# nuxt.js build output\n.nuxt\n\n# Nuxt generate\ndist\n\n# General\n.DS_Store\n"
  },
  {
    "path": "nuxtjs/README.md",
    "content": "# hello-nuxt\n\n> Hello World NuxtJS barebones example\n\n## Build Setup\n\n```bash\n# install dependencies\n$ npm install\n\n# serve with hot reload at localhost:3000\n$ npm run dev\n\n# build for production and launch server\n$ npm run build\n$ npm run start\n\n# generate static project\n$ npm run generate\n```\n\nFor detailed explanation on how things work, check out [Nuxt.js docs](https://nuxtjs.org).\n"
  },
  {
    "path": "nuxtjs/layouts/default.vue",
    "content": "<template>\n  <div>\n    <nuxt />\n  </div>\n</template>\n"
  },
  {
    "path": "nuxtjs/nuxt.config.js",
    "content": "\nexport default {\n  mode: 'universal',\n  /*\n  ** Headers of the page\n  */\n  head: {\n    title: process.env.npm_package_name || '',\n    meta: [\n      { charset: 'utf-8' },\n      { name: 'viewport', content: 'width=device-width, initial-scale=1' },\n      { hid: 'description', name: 'description', content: process.env.npm_package_description || '' }\n    ],\n    link: [\n      { rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' }\n    ]\n  },\n  /*\n  ** Customize the progress-bar color\n  */\n  loading: { color: '#fff' },\n  /*\n  ** Global CSS\n  */\n  css: [\n  ],\n  /*\n  ** Plugins to load before mounting the App\n  */\n  plugins: [\n  ],\n  /*\n  ** Nuxt.js dev-modules\n  */\n  buildModules: [\n  ],\n  /*\n  ** Nuxt.js modules\n  */\n  modules: [\n  ],\n  /*\n  ** Build configuration\n  */\n  build: {\n    /*\n    ** You can extend webpack config here\n    */\n    extend (config, ctx) {\n    }\n  }\n}\n"
  },
  {
    "path": "nuxtjs/package.json",
    "content": "{\n  \"name\": \"hello-nuxt\",\n  \"version\": \"1.0.0\",\n  \"description\": \"Hello World NuxtJS barebones example\",\n  \"scripts\": {\n    \"dev\": \"nuxt\",\n    \"build\": \"nuxt build\",\n    \"start\": \"nuxt start\",\n    \"generate\": \"nuxt generate\"\n  },\n  \"dependencies\": {\n    \"nuxt\": \"^2.0.0\"\n  },\n  \"devDependencies\": {}\n}\n"
  },
  {
    "path": "nuxtjs/pages/index.vue",
    "content": "<template>\n  <div>Hello {{ value }}</div>\n</template>\n\n<script>\nexport default {\n  name: \"HelloWorld\",\n  data() {\n    return {\n      value: \"World\"\n    };\n  }\n};\n</script>\n"
  },
  {
    "path": "polymer/.gitignore",
    "content": "/node_modules\nbuild"
  },
  {
    "path": "polymer/README.md",
    "content": "# Polymer Hello World\n\nPolymer App Hello World\n\n## Install the Polymer-CLI\n\nFirst, make sure you have the [Polymer CLI](https://www.npmjs.com/package/polymer-cli) installed. Then run `polymer serve` to serve your application locally.\n\n## Viewing Your Application\n\n```\n$ polymer serve\n```\n\n## Building Your Application\n\n```\n$ polymer build\n```\n\nThis will create builds of your application in the `build/` directory, optimized to be served in production. You can then serve the built versions by giving `polymer serve` a folder to serve from:\n\n```\n$ polymer serve build/default\n```\n\n## Running Tests\n\n```\n$ polymer test\n```\n\nYour application is already set up to be tested via [web-component-tester](https://github.com/Polymer/web-component-tester). Run `polymer test` to run your application's test suite locally. [Java SE Development Kit 8](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html) is required. Note that if you do not have the `javac` command installed, you will be promted to install Java 10. To uninstall Java, see the direction [here](https://www.java.com/en/download/help/mac_uninstall_java.xml). See [issue #405 for the status of Java 10 support](https://github.com/Polymer/tools/issues/405).\n"
  },
  {
    "path": "polymer/index.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"utf-8\">\n    <meta name=\"viewport\" content=\"width=device-width, minimum-scale=1, initial-scale=1, user-scalable=yes\">\n\n    <title>polymer-app</title>\n    <meta name=\"description\" content=\"Polymer App Hello World\">\n\n    <!-- See https://goo.gl/OOhYW5 -->\n    <link rel=\"manifest\" href=\"/manifest.json\">\n\n    <script src=\"/node_modules/@webcomponents/webcomponentsjs/webcomponents-loader.js\"></script>\n\n    <script type=\"module\" src=\"/src/hello-world/hello-world.js\" crossorigin></script>\n  </head>\n  <body>\n    <hello-world></hello-world>\n  </body>\n</html>\n"
  },
  {
    "path": "polymer/manifest.json",
    "content": "{\n  \"name\": \"polymer-app\",\n  \"short_name\": \"polymer-app\",\n  \"description\": \"Polymer App Hello World\",\n  \"start_url\": \"/\",\n  \"display\": \"standalone\"\n}\n"
  },
  {
    "path": "polymer/package.json",
    "content": "{\n  \"name\": \"polymer-app\",\n  \"description\": \"Polymer App Hello World\",\n  \"scripts\": {\n    \"build\": \"polymer build\"\n  },\n  \"dependencies\": {\n    \"@polymer/polymer\": \"^3.0.0\"\n  },\n  \"devDependencies\": {\n    \"@polymer/test-fixture\": \"^4.0.2\",\n    \"@webcomponents/webcomponentsjs\": \"^2.0.0\",\n    \"chai\": \"^4.2.0\",\n    \"mocha\": \"^6.1.4\",\n    \"polymer-cli\": \"^1.9.11\",\n    \"wct-mocha\": \"^1.0.1\"\n  }\n}\n"
  },
  {
    "path": "polymer/polymer.json",
    "content": "{\n  \"npm\": true,\n  \"lint\": {\n    \"rules\": [\n      \"polymer-3\"\n    ]\n  },\n  \"builds\": [{\n    \"bundle\": true,\n    \"js\": {\"minify\": true, \"compile\": \"es2015\"},\n    \"css\": {\"minify\": true},\n    \"html\": {\"minify\": true}\n  }]\n}\n"
  },
  {
    "path": "polymer/src/_element/_element.js",
    "content": "import {html, PolymerElement} from '@polymer/polymer/polymer-element.js';\n\n/**\n * @customElement\n * @polymer\n */\nclass HelloWorld extends PolymerElement {\n  static get template() {\n    return html`\n      <style>\n        :host {\n          display: block;\n        }\n      </style>\n      <h2>Hello [[prop1]]!</h2>\n    `;\n  }\n  static get properties() {\n    return {\n      prop1: {\n        type: String,\n        value: 'hello-world'\n      }\n    };\n  }\n}\n\nwindow.customElements.define('hello-world', HelloWorld);\n"
  },
  {
    "path": "polymer/src/hello-world/hello-world.js",
    "content": "import { html, PolymerElement } from '@polymer/polymer/polymer-element.js';\n\n/**\n * @customElement\n * @polymer\n */\nclass HelloWorld extends PolymerElement {\n  static get template() {\n    return html`\n      <style>\n        :host {\n          display: block;\n        }\n      </style>\n      <h2>Hello [[prop1]]!</h2>\n    `;\n  }\n  static get properties() {\n    return {\n      prop1: {\n        type: String,\n        value: 'World'\n      }\n    };\n  }\n}\n\nwindow.customElements.define('hello-world', HelloWorld);\n"
  },
  {
    "path": "preact/index.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>Hello Preact</title>\n</head>\n<body>\n</body>\n</html>\n"
  },
  {
    "path": "preact/package.json",
    "content": "{\n  \"name\": \"preact-app\",\n  \"version\": \"1.0.0\",\n  \"description\": \"\",\n  \"main\": \"index.js\",\n  \"scripts\": {\n    \"start\": \"webpack-dev-server --watch\",\n    \"build\": \"webpack\"\n  },\n  \"author\": \"Bertrand Tchoumkeu\",\n  \"license\": \"MIT\",\n  \"devDependencies\": {\n    \"clean-webpack-plugin\": \"^3.0.0\",\n    \"html-webpack-plugin\": \"^4.3.0\",\n    \"webpack\": \"^4.43.0\",\n    \"webpack-cli\": \"^3.3.11\",\n    \"webpack-dev-server\": \"^3.11.0\"\n  },\n  \"dependencies\": {\n    \"preact\": \"^10.4.4\"\n  }\n}\n"
  },
  {
    "path": "preact/src/app.js",
    "content": "import { h, render } from 'preact';\n\nconst app = h('div', null, 'Hello World');\n\nrender(app, document.body);\n"
  },
  {
    "path": "preact/webpack.config.js",
    "content": "\"use strict\";\n\nconst path = require(\"path\");\nconst HtmlWebpackPlugin = require(\"html-webpack-plugin\");\nconst { CleanWebpackPlugin } = require(\"clean-webpack-plugin\");\nmodule.exports = {\n  entry: \"./src/app.js\",\n  output: {\n    filename: \"bundle.[hash].js\",\n    path: path.resolve(__dirname, \"dist\")\n  },\n  plugins: [\n    new CleanWebpackPlugin(),\n    new HtmlWebpackPlugin({\n      template: \"index.html\"\n    })\n  ]\n};\n"
  },
  {
    "path": "react/.gitignore",
    "content": "# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.\n\n# dependencies\n/node_modules\n/.pnp\n.pnp.js\n\n# testing\n/coverage\n\n# production\n/build\n\n# misc\n.DS_Store\n.env.local\n.env.development.local\n.env.test.local\n.env.production.local\n\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\n"
  },
  {
    "path": "react/README.md",
    "content": "This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).\n\n## Available Scripts\n\nIn the project directory, you can run:\n\n### `yarn start`\n\nRuns the app in the development mode.<br />\nOpen [http://localhost:3000](http://localhost:3000) to view it in the browser.\n\nThe page will reload if you make edits.<br />\nYou will also see any lint errors in the console.\n\n### `yarn test`\n\nLaunches the test runner in the interactive watch mode.<br />\nSee the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information.\n\n### `yarn build`\n\nBuilds the app for production to the `build` folder.<br />\nIt correctly bundles React in production mode and optimizes the build for the best performance.\n\nThe build is minified and the filenames include the hashes.<br />\nYour app is ready to be deployed!\n\nSee the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information.\n\n### `yarn eject`\n\n**Note: this is a one-way operation. Once you `eject`, you can’t go back!**\n\nIf you aren’t satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project.\n\nInstead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you’re on your own.\n\nYou don’t have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn’t feel obligated to use this feature. However we understand that this tool wouldn’t be useful if you couldn’t customize it when you are ready for it.\n\n## Learn More\n\nYou can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started).\n\nTo learn React, check out the [React documentation](https://reactjs.org/).\n\n### Code Splitting\n\nThis section has moved here: https://facebook.github.io/create-react-app/docs/code-splitting\n\n### Analyzing the Bundle Size\n\nThis section has moved here: https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size\n\n### Making a Progressive Web App\n\nThis section has moved here: https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app\n\n### Advanced Configuration\n\nThis section has moved here: https://facebook.github.io/create-react-app/docs/advanced-configuration\n\n### Deployment\n\nThis section has moved here: https://facebook.github.io/create-react-app/docs/deployment\n\n### `yarn build` fails to minify\n\nThis section has moved here: https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify\n"
  },
  {
    "path": "react/index.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"utf-8\" />\n    <link rel=\"icon\" href=\"/favicon.ico\" />\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n    <title>Hello React</title>\n  </head>\n  <body>\n    <div id=\"root\"></div>\n    <script type=\"module\" src=\"/src/index.jsx\"></script>\n  </body>\n</html>\n"
  },
  {
    "path": "react/package.json",
    "content": "{\n  \"name\": \"hello-react\",\n  \"version\": \"0.1.0\",\n  \"private\": true,\n  \"type\": \"module\",\n  \"scripts\": {\n    \"dev\": \"vite\",\n    \"build\": \"vite build\",\n    \"preview\": \"vite preview\"\n  },\n  \"dependencies\": {\n    \"react\": \"^19.1.0\",\n    \"react-dom\": \"^19.1.0\"\n  },\n  \"devDependencies\": {\n    \"@vitejs/plugin-react\": \"^4.5.2\",\n    \"vite\": \"^6.3.5\"\n  }\n}\n"
  },
  {
    "path": "react/public/index.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"utf-8\" />\n    <link rel=\"icon\" href=\"%PUBLIC_URL%/favicon.ico\" />\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n    <meta name=\"theme-color\" content=\"#000000\" />\n    <meta\n      name=\"description\"\n      content=\"Web site created using create-react-app\"\n    />\n    <link rel=\"apple-touch-icon\" href=\"%PUBLIC_URL%/logo192.png\" />\n    <!--\n      manifest.json provides metadata used when your web app is installed on a\n      user's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/\n    -->\n    <link rel=\"manifest\" href=\"%PUBLIC_URL%/manifest.json\" />\n    <!--\n      Notice the use of %PUBLIC_URL% in the tags above.\n      It will be replaced with the URL of the `public` folder during the build.\n      Only files inside the `public` folder can be referenced from the HTML.\n\n      Unlike \"/favicon.ico\" or \"favicon.ico\", \"%PUBLIC_URL%/favicon.ico\" will\n      work correctly both with client-side routing and a non-root public URL.\n      Learn how to configure a non-root public URL by running `npm run build`.\n    -->\n    <title>React App</title>\n  </head>\n  <body>\n    <noscript>You need to enable JavaScript to run this app.</noscript>\n    <div id=\"root\"></div>\n    <!--\n      This HTML file is a template.\n      If you open it directly in the browser, you will see an empty page.\n\n      You can add webfonts, meta tags, or analytics to this file.\n      The build step will place the bundled scripts into the <body> tag.\n\n      To begin the development, run `npm start` or `yarn start`.\n      To create a production bundle, use `npm run build` or `yarn build`.\n    -->\n  </body>\n</html>\n"
  },
  {
    "path": "react/public/robots.txt",
    "content": "# https://www.robotstxt.org/robotstxt.html\nUser-agent: *\nDisallow:\n"
  },
  {
    "path": "react/src/App.jsx",
    "content": "function App() {\n  const value = 'World';\n  return <div>Hello {value}</div>;\n}\n\nexport default App;\n"
  },
  {
    "path": "react/src/index.css",
    "content": ""
  },
  {
    "path": "react/src/index.jsx",
    "content": "import { createRoot } from 'react-dom/client';\nimport './index.css';\nimport App from './App';\n\ncreateRoot(document.getElementById('root')).render(<App />);\n"
  },
  {
    "path": "react/vite.config.js",
    "content": "import { defineConfig } from 'vite';\nimport react from '@vitejs/plugin-react';\n\nexport default defineConfig({\n  plugins: [react()],\n});\n"
  },
  {
    "path": "riot/index.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n  <title>Riot Hello World App</title>\n</head>\n<body>\n  <div id=\"root\"></div>\n</body>\n</html>"
  },
  {
    "path": "riot/package.json",
    "content": "{\n  \"name\": \"riot-hello-world\",\n  \"version\": \"1.0.0\",\n  \"description\": \"hello world application using riot library\",\n  \"main\": \"index.js\",\n  \"scripts\": {\n    \"build\": \"webpack -c --mode production\",\n    \"start\": \"webpack-dev-server --inline --watch --hot --colors -d --port 3000\"\n  },\n  \"keywords\": [\n    \"riot\",\n    \"hello-world\"\n  ],\n  \"author\": \"Nicolas Frizzarin\",\n  \"license\": \"ISC\",\n  \"devDependencies\": {\n    \"@riotjs/compiler\": \"^4.9.2\",\n    \"@riotjs/ssr\": \"^4.2.1\",\n    \"@riotjs/webpack-loader\": \"^4.0.3\",\n    \"esm\": \"^3.2.25\",\n    \"html-webpack-plugin\": \"^4.4.1\",\n    \"jsdom\": \"^16.2.2\",\n    \"jsdom-global\": \"^3.0.2\",\n    \"webpack\": \"^4.43.0\",\n    \"webpack-cli\": \"^3.3.12\",\n    \"webpack-dev-server\": \"^3.11.0\"\n  },\n  \"dependencies\": {\n    \"@riotjs/hot-reload\": \"^4.0.1\",\n    \"riot\": \"^4.13.2\"\n  }\n}\n"
  },
  {
    "path": "riot/readme.md",
    "content": "# riot-hello-world\n\nhello world application using riot library\n\n## Start\n\n```\nnpm start\n```\n\n\n## Build\n\n```\nnpm run build\n```"
  },
  {
    "path": "riot/src/app.riot",
    "content": "<app>\n  <p>Hello World</p>\n</app>"
  },
  {
    "path": "riot/src/index.js",
    "content": "import '@riotjs/hot-reload'\nimport { component } from 'riot'\nimport App from './app.riot'\n\n// mount the root tag\ncomponent(App)(document.getElementById('root'))"
  },
  {
    "path": "riot/webpack.config.js",
    "content": "\nconst path = require('path');\nconst webpack = require('webpack');\nconst HtmlWebpackPlugin = require('html-webpack-plugin');\n\n\nmodule.exports = {\n  entry: {\n    app: './src/index.js',\n  },\n  output: {\n    path: path.resolve(__dirname, 'dist'),\n    filename: 'bundle.js',\n    chunkFilename: 'chunks/[name]/index.[chunkhash].js',\n    devtoolModuleFilenameTemplate: 'source-webpack:///[resourcePath]',\n    devtoolFallbackModuleFilenameTemplate: 'source-webpack:///[resourcePath]?[hash]'\n  },\n  devtool: '#source-map',\n  devServer: {\n    open: true,\n    contentBase: path.join(__dirname, 'dist'),\n  },\n  optimization: {\n    splitChunks: {\n      chunks: 'async',\n      minSize: 30000,\n      maxSize: 0,\n      minChunks: 1,\n      maxAsyncRequests: 6,\n      maxInitialRequests: 4,\n      automaticNameDelimiter: '~',\n      cacheGroups: {\n        defaultVendors: {\n          test: /[\\\\/]node_modules[\\\\/]/,\n          priority: -10\n        },\n        default: {\n          minChunks: 2,\n          priority: -20,\n          reuseExistingChunk: true\n        }\n      }\n    }\n  },\n  plugins: [\n    new HtmlWebpackPlugin({ template: 'index.html'})\n  ],\n  module: {\n    rules: [\n      {\n        test: /\\.riot$/,\n        exclude: /node_modules/,\n        use: [{\n          loader: '@riotjs/webpack-loader',\n          options: {\n            hot: true\n          }\n        }]\n      }\n    ]\n  }\n}"
  },
  {
    "path": "scully/.editorconfig",
    "content": "# Editor configuration, see https://editorconfig.org\nroot = true\n\n[*]\ncharset = utf-8\nindent_style = space\nindent_size = 2\ninsert_final_newline = true\ntrim_trailing_whitespace = true\n\n[*.md]\nmax_line_length = off\ntrim_trailing_whitespace = false\n"
  },
  {
    "path": "scully/.gitignore",
    "content": "# See http://help.github.com/ignore-files/ for more about ignoring files.\n\n# compiled output\n/dist\n/tmp\n/out-tsc\n# Only exists if Bazel was run\n/bazel-out\n\n# dependencies\n/node_modules\n\n# profiling files\nchrome-profiler-events*.json\nspeed-measure-plugin*.json\n\n# IDEs and editors\n/.idea\n.project\n.classpath\n.c9/\n*.launch\n.settings/\n*.sublime-workspace\n\n# IDE - VSCode\n.vscode/*\n!.vscode/settings.json\n!.vscode/tasks.json\n!.vscode/launch.json\n!.vscode/extensions.json\n.history/*\n\n# misc\n/.sass-cache\n/connect.lock\n/coverage\n/libpeerconnection.log\nnpm-debug.log\nyarn-error.log\ntestem.log\n/typings\n\n# System Files\n.DS_Store\nThumbs.db\n"
  },
  {
    "path": "scully/.prettierrc",
    "content": "{\n  \"tabWidth\": 2,\n  \"useTabs\": false,\n  \"singleQuote\": true\n}\n"
  },
  {
    "path": "scully/README.md",
    "content": "# Hello\n\nThis project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 9.0.1.\n\n## Development server\n\nRun `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files.\n\n## Code scaffolding\n\nRun `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`.\n\n## Build\n\nRun `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. Use the `--prod` flag for a production build.\n\nRun `npm run scully` to build the static site. The build artifacts will be stored in the `dist/static` directory.\n\n## Running unit tests\n\nRun `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io).\n\n## Running end-to-end tests\n\nRun `ng e2e` to execute the end-to-end tests via [Protractor](http://www.protractortest.org/).\n\n## Further help\n\nTo get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md).\n"
  },
  {
    "path": "scully/angular.json",
    "content": "{\n  \"$schema\": \"./node_modules/@angular/cli/lib/config/schema.json\",\n  \"version\": 1, \n  \"newProjectRoot\": \"projects\",\n  \"projects\": {\n    \"hello\": {\n      \"projectType\": \"application\",\n      \"schematics\": {},\n      \"root\": \"\",\n      \"sourceRoot\": \"src\",\n      \"prefix\": \"app\",\n      \"architect\": {\n        \"build\": {\n          \"builder\": \"@angular-devkit/build-angular:browser\",\n          \"options\": {\n            \"outputPath\": \"dist/hello\",\n            \"index\": \"src/index.html\",\n            \"main\": \"src/main.ts\",\n            \"polyfills\": \"src/polyfills.ts\",\n            \"tsConfig\": \"tsconfig.app.json\",\n            \"aot\": true,\n            \"assets\": [\n              \"src/favicon.ico\",\n              \"src/assets\"\n            ],\n            \"styles\": [\n              \"src/styles.css\"\n            ],\n            \"scripts\": []\n          },\n          \"configurations\": {\n            \"production\": {\n              \"fileReplacements\": [\n                {\n                  \"replace\": \"src/environments/environment.ts\",\n                  \"with\": \"src/environments/environment.prod.ts\"\n                }\n              ],\n              \"optimization\": true,\n              \"outputHashing\": \"all\",\n              \"sourceMap\": false,\n              \"extractCss\": true,\n              \"namedChunks\": false,\n              \"extractLicenses\": true,\n              \"vendorChunk\": false,\n              \"buildOptimizer\": true,\n              \"budgets\": [\n                {\n                  \"type\": \"initial\",\n                  \"maximumWarning\": \"2mb\",\n                  \"maximumError\": \"5mb\"\n                },\n                {\n                  \"type\": \"anyComponentStyle\",\n                  \"maximumWarning\": \"6kb\",\n                  \"maximumError\": \"10kb\"\n                }\n              ]\n            }\n          }\n        },\n        \"serve\": {\n          \"builder\": \"@angular-devkit/build-angular:dev-server\",\n          \"options\": {\n            \"browserTarget\": \"hello:build\"\n          },\n          \"configurations\": {\n            \"production\": {\n              \"browserTarget\": \"hello:build:production\"\n            }\n          }\n        },\n        \"extract-i18n\": {\n          \"builder\": \"@angular-devkit/build-angular:extract-i18n\",\n          \"options\": {\n            \"browserTarget\": \"hello:build\"\n          }\n        },\n        \"test\": {\n          \"builder\": \"@angular-devkit/build-angular:karma\",\n          \"options\": {\n            \"main\": \"src/test.ts\",\n            \"polyfills\": \"src/polyfills.ts\",\n            \"tsConfig\": \"tsconfig.spec.json\",\n            \"karmaConfig\": \"karma.conf.js\",\n            \"assets\": [\n              \"src/favicon.ico\",\n              \"src/assets\"\n            ],\n            \"styles\": [\n              \"src/styles.css\"\n            ],\n            \"scripts\": []\n          }\n        },\n        \"lint\": {\n          \"builder\": \"@angular-devkit/build-angular:tslint\",\n          \"options\": {\n            \"tsConfig\": [\n              \"tsconfig.app.json\",\n              \"tsconfig.spec.json\",\n              \"e2e/tsconfig.json\"\n            ],\n            \"exclude\": [\n              \"**/node_modules/**\"\n            ]\n          }\n        },\n        \"e2e\": {\n          \"builder\": \"@angular-devkit/build-angular:protractor\",\n          \"options\": {\n            \"protractorConfig\": \"e2e/protractor.conf.js\",\n            \"devServerTarget\": \"hello:serve\"\n          },\n          \"configurations\": {\n            \"production\": {\n              \"devServerTarget\": \"hello:serve:production\"\n            }\n          }\n        }\n      }\n    }},\n  \"defaultProject\": \"hello\"\n}\n"
  },
  {
    "path": "scully/browserslist",
    "content": "# This file is used by the build system to adjust CSS and JS output to support the specified browsers below.\n# For additional information regarding the format and rule options, please see:\n# https://github.com/browserslist/browserslist#queries\n\n# You can see what browsers were selected by your queries by running:\n#   npx browserslist\n\n> 0.5%\nlast 2 versions\nFirefox ESR\nnot dead\nnot IE 9-11 # For IE 9-11 support, remove 'not'."
  },
  {
    "path": "scully/karma.conf.js",
    "content": "// Karma configuration file, see link for more information\n// https://karma-runner.github.io/1.0/config/configuration-file.html\n\nmodule.exports = function (config) {\n  config.set({\n    basePath: '',\n    frameworks: ['jasmine', '@angular-devkit/build-angular'],\n    plugins: [\n      require('karma-jasmine'),\n      require('karma-chrome-launcher'),\n      require('karma-jasmine-html-reporter'),\n      require('karma-coverage-istanbul-reporter'),\n      require('@angular-devkit/build-angular/plugins/karma')\n    ],\n    client: {\n      clearContext: false // leave Jasmine Spec Runner output visible in browser\n    },\n    coverageIstanbulReporter: {\n      dir: require('path').join(__dirname, './coverage/hello'),\n      reports: ['html', 'lcovonly', 'text-summary'],\n      fixWebpackSourcePaths: true\n    },\n    reporters: ['progress', 'kjhtml'],\n    port: 9876,\n    colors: true,\n    logLevel: config.LOG_INFO,\n    autoWatch: true,\n    browsers: ['Chrome'],\n    singleRun: false,\n    restartOnFileChange: true\n  });\n};\n"
  },
  {
    "path": "scully/package.json",
    "content": "{\n  \"name\": \"hello-angular\",\n  \"version\": \"0.0.0\",\n  \"scripts\": {\n    \"ng\": \"ng\",\n    \"start\": \"ng serve\",\n    \"build\": \"ng build\",\n    \"test\": \"ng test\",\n    \"lint\": \"ng lint\",\n    \"scully\": \"scully\",\n    \"scully:serve\": \"scully serve\"\n  },\n  \"private\": true,\n  \"dependencies\": {\n    \"@angular/animations\": \"~9.0.0\",\n    \"@angular/common\": \"~9.0.0\",\n    \"@angular/compiler\": \"~9.0.0\",\n    \"@angular/core\": \"~9.0.0\",\n    \"@angular/forms\": \"~9.0.0\",\n    \"@angular/platform-browser\": \"~9.0.0\",\n    \"@angular/platform-browser-dynamic\": \"~9.0.0\",\n    \"@angular/router\": \"~9.0.0\",\n    \"@scullyio/init\": \"0.0.28\",\n    \"@scullyio/ng-lib\": \"latest\",\n    \"@scullyio/scully\": \"latest\",\n    \"rxjs\": \"~6.5.4\",\n    \"tslib\": \"^1.10.0\",\n    \"zone.js\": \"~0.10.2\"\n  },\n  \"devDependencies\": {\n    \"@angular-devkit/build-angular\": \"~0.900.1\",\n    \"@angular/cli\": \"~9.0.1\",\n    \"@angular/compiler-cli\": \"~9.0.0\",\n    \"@angular/language-service\": \"~9.0.0\",\n    \"@types/node\": \"^12.11.1\",\n    \"@types/jasmine\": \"~3.5.0\",\n    \"@types/jasminewd2\": \"~2.0.3\",\n    \"codelyzer\": \"^5.1.2\",\n    \"jasmine-core\": \"~3.5.0\",\n    \"jasmine-spec-reporter\": \"~4.2.1\",\n    \"karma\": \"~4.3.0\",\n    \"karma-chrome-launcher\": \"~3.1.0\",\n    \"karma-coverage-istanbul-reporter\": \"~2.1.0\",\n    \"karma-jasmine\": \"~2.0.1\",\n    \"karma-jasmine-html-reporter\": \"^1.4.2\",\n    \"ts-node\": \"~8.3.0\",\n    \"tslint\": \"~5.18.0\",\n    \"typescript\": \"~3.7.5\"\n  }\n}\n"
  },
  {
    "path": "scully/scully.hello.config.js",
    "content": "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.config = {\n    projectRoot: \"./src\",\n    projectName: \"hello\",\n    outDir: './dist/static',\n    routes: {}\n};\n"
  },
  {
    "path": "scully/scully.hello.config.ts",
    "content": "import { ScullyConfig } from '@scullyio/scully';\nexport const config: ScullyConfig = {\n  projectRoot: \"./src\",\n  projectName: \"hello\",\n  outDir: './dist/static',\n  routes: {\n  }\n};"
  },
  {
    "path": "scully/src/app/app-routing.module.ts",
    "content": "import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\n\nconst routes: Routes = [\n  {\n    path: '',\n    loadChildren: () => import('./app.module').then((m) => m.AppModule),\n  },\n];\n\n@NgModule({\n  imports: [RouterModule.forRoot(routes)],\n  exports: [RouterModule],\n})\nexport class AppRoutingModule {}\n"
  },
  {
    "path": "scully/src/app/app.component.ts",
    "content": "import { Component } from '@angular/core';\n\n@Component({\n  selector: 'app-root',\n  template: `<div>Hello {{ value }}</div>`,\n})\nexport class AppComponent {\n  value = 'World';\n}\n"
  },
  {
    "path": "scully/src/app/app.module.ts",
    "content": "import { NgModule } from '@angular/core';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { ScullyLibModule } from '@scullyio/ng-lib';\nimport { AppRoutingModule } from './app-routing.module';\nimport { AppComponent } from './app.component';\n\n@NgModule({\n  declarations: [AppComponent],\n  imports: [AppRoutingModule, BrowserModule, ScullyLibModule],\n  bootstrap: [AppComponent],\n})\nexport class AppModule {}\n"
  },
  {
    "path": "scully/src/assets/.gitkeep",
    "content": ""
  },
  {
    "path": "scully/src/assets/scully-routes.json",
    "content": "[{\"route\":\"/\"}]"
  },
  {
    "path": "scully/src/environments/environment.prod.ts",
    "content": "export const environment = {\n  production: true\n};\n"
  },
  {
    "path": "scully/src/environments/environment.ts",
    "content": "// This file can be replaced during build by using the `fileReplacements` array.\n// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.\n// The list of file replacements can be found in `angular.json`.\n\nexport const environment = {\n  production: false\n};\n\n/*\n * For easier debugging in development mode, you can import the following file\n * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.\n *\n * This import should be commented out in production mode because it will have a negative impact\n * on performance if an error is thrown.\n */\n// import 'zone.js/dist/zone-error';  // Included with Angular CLI.\n"
  },
  {
    "path": "scully/src/index.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"utf-8\">\n  <title>Hello</title>\n  <base href=\"/\">\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n  <link rel=\"icon\" type=\"image/x-icon\" href=\"favicon.ico\">\n</head>\n<body>\n  <app-root></app-root>\n</body>\n</html>\n"
  },
  {
    "path": "scully/src/main.ts",
    "content": "import { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app/app.module';\nimport { environment } from './environments/environment';\n\nif (environment.production) {\n  enableProdMode();\n}\n\nplatformBrowserDynamic().bootstrapModule(AppModule)\n  .catch(err => console.error(err));\n"
  },
  {
    "path": "scully/src/polyfills.ts",
    "content": "/**\n * This file includes polyfills needed by Angular and is loaded before the app.\n * You can add your own extra polyfills to this file.\n *\n * This file is divided into 2 sections:\n *   1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers.\n *   2. Application imports. Files imported after ZoneJS that should be loaded before your main\n *      file.\n *\n * The current setup is for so-called \"evergreen\" browsers; the last versions of browsers that\n * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera),\n * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile.\n *\n * Learn more in https://angular.io/guide/browser-support\n */\n\n/***************************************************************************************************\n * BROWSER POLYFILLS\n */\n\n/** IE10 and IE11 requires the following for NgClass support on SVG elements */\n// import 'classlist.js';  // Run `npm install --save classlist.js`.\n\n/**\n * Web Animations `@angular/platform-browser/animations`\n * Only required if AnimationBuilder is used within the application and using IE/Edge or Safari.\n * Standard animation support in Angular DOES NOT require any polyfills (as of Angular 6.0).\n */\n// import 'web-animations-js';  // Run `npm install --save web-animations-js`.\n\n/**\n * By default, zone.js will patch all possible macroTask and DomEvents\n * user can disable parts of macroTask/DomEvents patch by setting following flags\n * because those flags need to be set before `zone.js` being loaded, and webpack\n * will put import in the top of bundle, so user need to create a separate file\n * in this directory (for example: zone-flags.ts), and put the following flags\n * into that file, and then add the following code before importing zone.js.\n * import './zone-flags.ts';\n *\n * The flags allowed in zone-flags.ts are listed here.\n *\n * The following flags will work for all browsers.\n *\n * (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame\n * (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick\n * (window as any).__zone_symbol__UNPATCHED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames\n *\n *  in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js\n *  with the following flag, it will bypass `zone.js` patch for IE/Edge\n *\n *  (window as any).__Zone_enable_cross_context_check = true;\n *\n */\n\n/***************************************************************************************************\n * Zone JS is required by default for Angular itself.\n */\nimport 'zone.js/dist/zone';  // Included with Angular CLI.\n\n\n/***************************************************************************************************\n * APPLICATION IMPORTS\n */\n\n/***************************************************************************************************\n* SCULLY IMPORTS\n*/\n// tslint:disable-next-line: align\nimport 'zone.js/dist/task-tracking';"
  },
  {
    "path": "scully/src/styles.css",
    "content": ""
  },
  {
    "path": "scully/src/test.ts",
    "content": "// This file is required by karma.conf.js and loads recursively all the .spec and framework files\n\nimport 'zone.js/dist/zone-testing';\nimport { getTestBed } from '@angular/core/testing';\nimport {\n  BrowserDynamicTestingModule,\n  platformBrowserDynamicTesting\n} from '@angular/platform-browser-dynamic/testing';\n\ndeclare const require: {\n  context(path: string, deep?: boolean, filter?: RegExp): {\n    keys(): string[];\n    <T>(id: string): T;\n  };\n};\n\n// First, initialize the Angular testing environment.\ngetTestBed().initTestEnvironment(\n  BrowserDynamicTestingModule,\n  platformBrowserDynamicTesting()\n);\n// Then we find all the tests.\nconst context = require.context('./', true, /\\.spec\\.ts$/);\n// And load the modules.\ncontext.keys().map(context);\n"
  },
  {
    "path": "scully/tsconfig.app.json",
    "content": "{\n  \"extends\": \"./tsconfig.json\",\n  \"compilerOptions\": {\n    \"outDir\": \"./out-tsc/app\",\n    \"types\": []\n  },\n  \"files\": [\n    \"src/main.ts\",\n    \"src/polyfills.ts\"\n  ],\n  \"include\": [\n    \"src/**/*.d.ts\"\n  ]\n}\n"
  },
  {
    "path": "scully/tsconfig.json",
    "content": "{\n  \"compileOnSave\": false,\n  \"compilerOptions\": {\n    \"baseUrl\": \"./\",\n    \"outDir\": \"./dist/out-tsc\",\n    \"sourceMap\": true,\n    \"declaration\": false,\n    \"downlevelIteration\": true,\n    \"experimentalDecorators\": true,\n    \"module\": \"esnext\",\n    \"moduleResolution\": \"node\",\n    \"importHelpers\": true,\n    \"target\": \"es2015\",\n    \"typeRoots\": [\n      \"node_modules/@types\"\n    ],\n    \"lib\": [\n      \"es2018\",\n      \"dom\"\n    ]\n  },\n  \"angularCompilerOptions\": {\n    \"fullTemplateTypeCheck\": true,\n    \"strictInjectionParameters\": true\n  }\n}\n"
  },
  {
    "path": "scully/tsconfig.spec.json",
    "content": "{\n  \"extends\": \"./tsconfig.json\",\n  \"compilerOptions\": {\n    \"outDir\": \"./out-tsc/spec\",\n    \"types\": [\n      \"jasmine\",\n      \"node\"\n    ]\n  },\n  \"files\": [\n    \"src/test.ts\",\n    \"src/polyfills.ts\"\n  ],\n  \"include\": [\n    \"src/**/*.spec.ts\",\n    \"src/**/*.d.ts\"\n  ]\n}\n"
  },
  {
    "path": "scully/tslint.json",
    "content": "{\n  \"extends\": \"tslint:recommended\",\n  \"rules\": {\n    \"array-type\": false,\n    \"arrow-parens\": false,\n    \"deprecation\": {\n      \"severity\": \"warning\"\n    },\n    \"component-class-suffix\": true,\n    \"contextual-lifecycle\": true,\n    \"directive-class-suffix\": true,\n    \"directive-selector\": [\n      true,\n      \"attribute\",\n      \"app\",\n      \"camelCase\"\n    ],\n    \"component-selector\": [\n      true,\n      \"element\",\n      \"app\",\n      \"kebab-case\"\n    ],\n    \"import-blacklist\": [\n      true,\n      \"rxjs/Rx\"\n    ],\n    \"interface-name\": false,\n    \"max-classes-per-file\": false,\n    \"max-line-length\": [\n      true,\n      140\n    ],\n    \"member-access\": false,\n    \"member-ordering\": [\n      true,\n      {\n        \"order\": [\n          \"static-field\",\n          \"instance-field\",\n          \"static-method\",\n          \"instance-method\"\n        ]\n      }\n    ],\n    \"no-consecutive-blank-lines\": false,\n    \"no-console\": [\n      true,\n      \"debug\",\n      \"info\",\n      \"time\",\n      \"timeEnd\",\n      \"trace\"\n    ],\n    \"no-empty\": false,\n    \"no-inferrable-types\": [\n      true,\n      \"ignore-params\"\n    ],\n    \"no-non-null-assertion\": true,\n    \"no-redundant-jsdoc\": true,\n    \"no-switch-case-fall-through\": true,\n    \"no-var-requires\": false,\n    \"object-literal-key-quotes\": [\n      true,\n      \"as-needed\"\n    ],\n    \"object-literal-sort-keys\": false,\n    \"ordered-imports\": false,\n    \"quotemark\": [\n      true,\n      \"single\"\n    ],\n    \"trailing-comma\": false,\n    \"no-conflicting-lifecycle\": true,\n    \"no-host-metadata-property\": true,\n    \"no-input-rename\": true,\n    \"no-inputs-metadata-property\": true,\n    \"no-output-native\": true,\n    \"no-output-on-prefix\": true,\n    \"no-output-rename\": true,\n    \"no-outputs-metadata-property\": true,\n    \"template-banana-in-box\": true,\n    \"template-no-negated-async\": true,\n    \"use-lifecycle-interface\": true,\n    \"use-pipe-transform-interface\": true\n  },\n  \"rulesDirectory\": [\n    \"codelyzer\"\n  ]\n}"
  },
  {
    "path": "stencil/.editorconfig",
    "content": "# http://editorconfig.org\n\nroot = true\n\n[*]\ncharset = utf-8\nindent_style = space\nindent_size = 2\nend_of_line = lf\ninsert_final_newline = true\ntrim_trailing_whitespace = true\n\n[*.md]\ninsert_final_newline = false\ntrim_trailing_whitespace = false\n"
  },
  {
    "path": "stencil/.gitignore",
    "content": "dist/\n!www/favicon.ico\nwww/\n\n*~\n*.sw[mnpcod]\n*.log\n*.lock\n*.tmp\n*.tmp.*\nlog.txt\n*.sublime-project\n*.sublime-workspace\n\n.stencil/\n.idea/\n.vscode/\n.sass-cache/\n.versions/\nnode_modules/\n$RECYCLE.BIN/\n\n.DS_Store\nThumbs.db\nUserInterfaceState.xcuserstate\n.env\n"
  },
  {
    "path": "stencil/LICENSE",
    "content": "MIT License\n\nCopyright (c) 2019\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE."
  },
  {
    "path": "stencil/package.json",
    "content": "{\n  \"name\": \"hello-stencil\",\n  \"private\": true,\n  \"version\": \"0.0.1\",\n  \"description\": \"Stencil App Starter\",\n  \"scripts\": {\n    \"build\": \"stencil build\",\n    \"start\": \"stencil build --dev --watch --serve\",\n    \"generate\": \"stencil generate\"\n  },\n  \"devDependencies\": {\n    \"@stencil/core\": \"^1.12.2\",\n    \"@stencil/router\": \"^1.0.1\"\n  },\n  \"license\": \"MIT\"\n}\n"
  },
  {
    "path": "stencil/readme.md",
    "content": "# Stencil App Starter\n\nStencil is a compiler for building fast web apps using Web Components.\n\nStencil combines the best concepts of the most popular frontend frameworks into a compile-time rather than run-time tool.  Stencil takes TypeScript, JSX, a tiny virtual DOM layer, efficient one-way data binding, an asynchronous rendering pipeline (similar to React Fiber), and lazy-loading out of the box, and generates 100% standards-based Web Components that run in any browser supporting the Custom Elements v1 spec.\n\nStencil components are just Web Components, so they work in any major framework or with no framework at all. In many cases, Stencil can be used as a drop in replacement for traditional frontend frameworks given the capabilities now available in the browser, though using it as such is certainly not required.\n\nStencil also enables a number of key capabilities on top of Web Components, in particular Server Side Rendering (SSR) without the need to run a headless browser, pre-rendering, and objects-as-properties (instead of just strings).\n\n## Getting Started\n\nTo start a new project using Stencil, clone this repo to a new directory:\n\n```bash\nnpm init stencil app\n```\n\nand run:\n\n```bash\nnpm start\n```\n\nTo build the app for production, run:\n\n```bash\nnpm run build\n```\n\nTo run the unit tests once, run:\n\n```\nnpm test\n```\n\nTo run the unit tests and watch for file changes during development, run:\n\n```\nnpm run test.watch\n```\n"
  },
  {
    "path": "stencil/src/components/app-root/app-root.css",
    "content": ""
  },
  {
    "path": "stencil/src/components/app-root/app-root.tsx",
    "content": "import { Component, h } from \"@stencil/core\";\n\n@Component({\n  tag: \"app-root\",\n  shadow: true,\n})\nexport class AppRoot {\n  name = \"World\";\n\n  render() {\n    return <div>Hello {this.name}</div>;\n  }\n}\n"
  },
  {
    "path": "stencil/src/components.d.ts",
    "content": "/* eslint-disable */\n/* tslint:disable */\n/**\n * This is an autogenerated file created by the Stencil compiler.\n * It contains typing information for all components that exist in this project.\n */\nimport { HTMLStencilElement, JSXBase } from \"@stencil/core/internal\";\nexport namespace Components {\n    interface AppRoot {\n    }\n}\ndeclare global {\n    interface HTMLAppRootElement extends Components.AppRoot, HTMLStencilElement {\n    }\n    var HTMLAppRootElement: {\n        prototype: HTMLAppRootElement;\n        new (): HTMLAppRootElement;\n    };\n    interface HTMLElementTagNameMap {\n        \"app-root\": HTMLAppRootElement;\n    }\n}\ndeclare namespace LocalJSX {\n    interface AppRoot {\n    }\n    interface IntrinsicElements {\n        \"app-root\": AppRoot;\n    }\n}\nexport { LocalJSX as JSX };\ndeclare module \"@stencil/core\" {\n    export namespace JSX {\n        interface IntrinsicElements {\n            \"app-root\": LocalJSX.AppRoot & JSXBase.HTMLAttributes<HTMLAppRootElement>;\n        }\n    }\n}\n"
  },
  {
    "path": "stencil/src/index.html",
    "content": "<!DOCTYPE html>\n<html dir=\"ltr\" lang=\"en\">\n  <head>\n    <meta charset=\"utf-8\" />\n    <title>Stencil Starter App</title>\n    <meta\n      name=\"Description\"\n      content=\"Welcome to the Stencil App Starter. You can use this starter to build entire apps all with web components using Stencil!\"\n    />\n    <meta\n      name=\"viewport\"\n      content=\"width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=5.0\"\n    />\n    <meta name=\"theme-color\" content=\"#16161d\" />\n    <meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n    <meta http-equiv=\"x-ua-compatible\" content=\"IE=Edge\" />\n\n    <script type=\"module\" src=\"/build/app.esm.js\"></script>\n    <script nomodule src=\"/build/app.js\"></script>\n    <!-- <link href=\"/build/app.css\" rel=\"stylesheet\" /> -->\n\n    <link rel=\"apple-touch-icon\" href=\"/assets/icon/icon.png\" />\n    <link rel=\"icon\" type=\"image/x-icon\" href=\"/assets/icon/favicon.ico\" />\n    <link rel=\"manifest\" href=\"/manifest.json\" />\n  </head>\n  <body>\n    <app-root></app-root>\n  </body>\n</html>\n"
  },
  {
    "path": "stencil/src/index.ts",
    "content": "export * from \"./components\";\nimport \"@stencil/router\";\n"
  },
  {
    "path": "stencil/src/manifest.json",
    "content": "{\n  \"name\": \"Stencil Starter\",\n  \"short_name\": \"Stencil\",\n  \"start_url\": \"/\",\n  \"display\": \"standalone\",\n  \"icons\": [{\n    \"src\": \"assets/icon/icon.png\",\n    \"sizes\": \"512x512\",\n    \"type\": \"image/png\"\n  }],\n  \"background_color\": \"#16161d\",\n  \"theme_color\": \"#16161d\"\n}"
  },
  {
    "path": "stencil/stencil.config.ts",
    "content": "import { Config } from '@stencil/core';\n\n// https://stenciljs.com/docs/config\n\nexport const config: Config = {\n  taskQueue: 'async',\n  outputTargets: [\n    {\n      type: 'www',\n      // comment the following line to disable service workers in production\n      serviceWorker: null,\n      baseUrl: 'https://myapp.local/'\n    }\n  ]\n};\n"
  },
  {
    "path": "stencil/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"allowSyntheticDefaultImports\": true,\n    \"allowUnreachableCode\": false,\n    \"declaration\": false,\n    \"experimentalDecorators\": true,\n    \"lib\": [\n      \"dom\",\n      \"es2015\"\n    ],\n    \"moduleResolution\": \"node\",\n    \"module\": \"esnext\",\n    \"target\": \"es2017\",\n    \"noUnusedLocals\": true,\n    \"noUnusedParameters\": true,\n    \"jsx\": \"react\",\n    \"jsxFactory\": \"h\"\n  },\n  \"include\": [\n    \"src\"\n  ],\n  \"exclude\": [\n    \"node_modules\"\n  ]\n}\n"
  },
  {
    "path": "svelte/.gitignore",
    "content": "/node_modules/\n/public/build/\n\n.DS_Store\n"
  },
  {
    "path": "svelte/README.md",
    "content": "*Looking for a shareable component template? Go here --> [sveltejs/component-template](https://github.com/sveltejs/component-template)*\n\n---\n\n# svelte app\n\nThis is a project template for [Svelte](https://svelte.dev) apps. It lives at https://github.com/sveltejs/template.\n\nTo create a new project based on this template using [degit](https://github.com/Rich-Harris/degit):\n\n```bash\nnpx degit sveltejs/template svelte-app\ncd svelte-app\n```\n\n*Note that you will need to have [Node.js](https://nodejs.org) installed.*\n\n\n## Get started\n\nInstall the dependencies...\n\n```bash\ncd svelte-app\nnpm install\n```\n\n...then start [Rollup](https://rollupjs.org):\n\n```bash\nnpm run dev\n```\n\nNavigate to [localhost:5000](http://localhost:5000). You should see your app running. Edit a component file in `src`, save it, and reload the page to see your changes.\n\nBy default, the server will only respond to requests from localhost. To allow connections from other computers, edit the `sirv` commands in package.json to include the option `--host 0.0.0.0`.\n\n\n## Building and running in production mode\n\nTo create an optimised version of the app:\n\n```bash\nnpm run build\n```\n\nYou can run the newly built app with `npm run start`. This uses [sirv](https://github.com/lukeed/sirv), which is included in your package.json's `dependencies` so that the app will work when you deploy to platforms like [Heroku](https://heroku.com).\n\n\n## Single-page app mode\n\nBy default, sirv will only respond to requests that match files in `public`. This is to maximise compatibility with static fileservers, allowing you to deploy your app anywhere.\n\nIf you're building a single-page app (SPA) with multiple routes, sirv needs to be able to respond to requests for *any* path. You can make it so by editing the `\"start\"` command in package.json:\n\n```js\n\"start\": \"sirv public --single\"\n```\n\n\n## Deploying to the web\n\n### With [now](https://zeit.co/now)\n\nInstall `now` if you haven't already:\n\n```bash\nnpm install -g now\n```\n\nThen, from within your project folder:\n\n```bash\ncd public\nnow deploy --name my-project\n```\n\nAs an alternative, use the [Now desktop client](https://zeit.co/download) and simply drag the unzipped project folder to the taskbar icon.\n\n### With [surge](https://surge.sh/)\n\nInstall `surge` if you haven't already:\n\n```bash\nnpm install -g surge\n```\n\nThen, from within your project folder:\n\n```bash\nnpm run build\nsurge public my-project.surge.sh\n```\n"
  },
  {
    "path": "svelte/index.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n    <title>Hello Svelte</title>\n  </head>\n  <body>\n    <div id=\"app\"></div>\n    <script type=\"module\" src=\"/src/main.js\"></script>\n  </body>\n</html>\n"
  },
  {
    "path": "svelte/package.json",
    "content": "{\n  \"name\": \"hello-svelte\",\n  \"version\": \"1.0.0\",\n  \"private\": true,\n  \"type\": \"module\",\n  \"scripts\": {\n    \"dev\": \"vite dev\",\n    \"build\": \"vite build\",\n    \"preview\": \"vite preview\"\n  },\n  \"devDependencies\": {\n    \"@sveltejs/vite-plugin-svelte\": \"^5.0.3\",\n    \"svelte\": \"^5.33.0\",\n    \"vite\": \"^6.3.5\"\n  }\n}\n"
  },
  {
    "path": "svelte/src/App.svelte",
    "content": "<script>\nlet value = $state('World');\n</script>\n\n<div>Hello {value}</div>\n"
  },
  {
    "path": "svelte/src/main.js",
    "content": "import App from './App.svelte';\nimport { mount } from 'svelte';\n\nconst app = mount(App, {\n  target: document.getElementById('app'),\n});\n\nexport default app;\n"
  },
  {
    "path": "svelte/svelte.config.js",
    "content": "import { vitePreprocess } from '@sveltejs/vite-plugin-svelte';\n\nexport default {\n  preprocess: vitePreprocess(),\n};\n"
  },
  {
    "path": "svelte/vite.config.js",
    "content": "import { defineConfig } from 'vite';\nimport { svelte } from '@sveltejs/vite-plugin-svelte';\n\nexport default defineConfig({\n  plugins: [svelte()],\n});\n"
  },
  {
    "path": "threejs/index.html",
    "content": "<style>\n    body { margin: 0; }\n    canvas { width: 100%; height: 100% }\n</style>\n<script src=\"https://threejs.org/build/three.js\"></script>\n<script>\n    var scene = new THREE.Scene();\n    var camera = new THREE.PerspectiveCamera( 75, window.innerWidth/window.innerHeight, 0.1, 1000 );\n\n    var renderer = new THREE.WebGLRenderer();\n    renderer.setSize( window.innerWidth, window.innerHeight );\n    document.body.appendChild( renderer.domElement );\n\n    var geometry = new THREE.BoxGeometry( 1, 1, 1 );\n    var material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } );\n    var cube = new THREE.Mesh( geometry, material );\n    scene.add( cube );\n\n    camera.position.z = 5;\n\n    var animate = function () {\n        requestAnimationFrame( animate );\n        cube.rotation.x += 0.01;\n        cube.rotation.y += 0.01;\n        renderer.render( scene, camera );\n    };\n    animate();\n</script>"
  },
  {
    "path": "typescript/copy-index.js",
    "content": "const fs = require('fs');\n\nfs.createReadStream(\"./index.html\").pipe(fs.createWriteStream(\"./dist/index.html\"));\n"
  },
  {
    "path": "typescript/index.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"UTF-8\" />\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n    <title>Hello Typescript</title>\n  </head>\n  <body>\n    <div id=\"hello\"></div>\n    <script src=\"app.js\"></script>\n  </body>\n</html>\n"
  },
  {
    "path": "typescript/package.json",
    "content": "{\n  \"name\": \"hello-typescript\",\n  \"version\": \"1.0.0\",\n  \"description\": \"Hello World app in TypeScript\",\n  \"main\": \"index.js\",\n  \"scripts\": {\n    \"build\": \"tsc && node ./copy-index.js\",\n    \"start\": \"tsc --watch\"\n  },\n  \"keywords\": [],\n  \"author\": \"Bertrand Tchoumkeu\",\n  \"license\": \"MIT\",\n  \"devDependencies\": {\n    \"typescript\": \"^3.9.3\"\n  }\n}\n"
  },
  {
    "path": "typescript/src/app.ts",
    "content": "const hello$ = document.querySelector(\"#hello\");\nif (hello$) {\n  hello$.textContent = \"Hello World\";\n}\n"
  },
  {
    "path": "typescript/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"es5\",\n    \"outDir\": \"./dist\",\n    \"strict\": true\n  },\n  \"include\": [\"src/**/*\"]\n}\n"
  },
  {
    "path": "vue/.gitignore",
    "content": ".DS_Store\nnode_modules\n/dist\n\n# local env files\n.env.local\n.env.*.local\n\n# Log files\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\n\n# Editor directories and files\n.idea\n.vscode\n*.suo\n*.ntvs*\n*.njsproj\n*.sln\n*.sw?\n"
  },
  {
    "path": "vue/README.md",
    "content": "# hello\n\n## Project setup\n```\nnpm install\n```\n\n### Compiles and hot-reloads for development\n```\nnpm run serve\n```\n\n### Compiles and minifies for production\n```\nnpm run build\n```\n\n### Lints and fixes files\n```\nnpm run lint\n```\n\n### Customize configuration\nSee [Configuration Reference](https://cli.vuejs.org/config/).\n"
  },
  {
    "path": "vue/index.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"utf-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>Hello Vue</title>\n  </head>\n  <body>\n    <div id=\"app\"></div>\n    <script type=\"module\" src=\"/src/main.js\"></script>\n  </body>\n</html>\n"
  },
  {
    "path": "vue/package.json",
    "content": "{\n  \"name\": \"hello-vue\",\n  \"version\": \"0.1.0\",\n  \"private\": true,\n  \"type\": \"module\",\n  \"scripts\": {\n    \"dev\": \"vite\",\n    \"build\": \"vite build\",\n    \"preview\": \"vite preview\"\n  },\n  \"dependencies\": {\n    \"vue\": \"^3.5.13\"\n  },\n  \"devDependencies\": {\n    \"@vitejs/plugin-vue\": \"^5.2.4\",\n    \"vite\": \"^6.3.5\"\n  }\n}\n"
  },
  {
    "path": "vue/src/App.vue",
    "content": "<template>\n  <div>Hello {{ value }}</div>\n</template>\n\n<script setup>\nimport { ref } from 'vue';\n\nconst value = ref('World');\n</script>\n"
  },
  {
    "path": "vue/src/main.js",
    "content": "import { createApp } from 'vue';\nimport App from './App.vue';\n\ncreateApp(App).mount('#app');\n"
  },
  {
    "path": "vue/vite.config.js",
    "content": "import { defineConfig } from 'vite';\nimport vue from '@vitejs/plugin-vue';\n\nexport default defineConfig({\n  plugins: [vue()],\n});\n"
  },
  {
    "path": "vuepress/.gitignore",
    "content": "/node_modules\n/dist\n"
  },
  {
    "path": "vuepress/docs/README.md",
    "content": "# Hello World\n"
  },
  {
    "path": "vuepress/package.json",
    "content": "{\n  \"name\": \"hello-vuepress\",\n  \"version\": \"0.0.0\",\n  \"scripts\": {\n    \"start\": \"vuepress dev docs\",\n    \"build\": \"vuepress build docs -d dist\"\n  },\n  \"devDependencies\": {\n    \"vuepress\": \"^1.5.0\"\n  }\n}\n"
  },
  {
    "path": "web-component/index.html",
    "content": "<!doctype html>\n<html>\n  <head>\n    <title>Web Component - Hello World</title>\n\n    <style>\n      :root {\n        --red: #FF0000;\n        --blue: #0000FF;\n        --my-green: #00a500;\n      }\n    </style>\n  </head>\n\n  <body>\n    <hello-world id=\"my-component\"></hello-world>\n\n    <script src=\"script.js\"></script>\n\n    <script>\n      setInterval(() => {\n        let helloWorld = document.getElementById('my-component');\n\n        if (helloWorld.getAttribute('name') === 'sarbull') {\n          helloWorld.setAttribute('name', 'World');\n        } else {\n          helloWorld.setAttribute('name', 'sarbull');\n        }\n      }, 3000);\n    </script>\n  </body>\n</html>"
  },
  {
    "path": "web-component/script.js",
    "content": "class HelloWorld extends HTMLElement {\n  constructor() {\n    super();\n\n    console.log('constructor()');\n\n    const shadowRoot = this.attachShadow({ mode: 'open' }).appendChild(this.render());\n  }\n\n  static is() {\n    return 'hello-world';\n  }\n\n  static get observedAttributes() {\n    return [\n      'name'\n    ];\n  }\n\n  style() {\n    let style = document.createElement('style');\n\n    style.innerHTML = `\n        div {\n          border: 2px solid var(--red);\n          padding: 5px;\n        }\n\n        p {\n            color: var(--red);\n        }\n\n        span.my-green {\n          color: var(--my-green);\n        }\n    `;\n\n    return style;\n  }\n\n  render() {\n    let name = this.attributes.name ? this.attributes.name.value : 'World';\n\n    let template = document.createElement('div');\n\n    let content = document.createElement('p');\n\n    content.innerHTML = `Hello <span class=\"my-green\">${name}</span>`;\n\n    template.appendChild(this.style());\n\n    template.appendChild(content);\n\n    this.shadowRoot.innerHTML = '';\n\n    return template;\n  }\n\n  attributeChangedCallback(name, oldValue, newValue) {\n    console.log(arguments);\n\n    if (name === 'name') {\n      this.shadowRoot.appendChild(this.render());\n    }\n  }\n\n  connectedCallback() {\n    console.log('connectedCallback()');\n  }\n\n  disconnectedCallback() {\n    console.log('disconnectedCallback()');\n  }\n}\n\nwindow.customElements.define(HelloWorld.is(), HelloWorld);"
  }
]