[
  {
    "path": ".ci/build-platform.yml",
    "content": "parameters:\n  platform: \"macOS\"\n  vmImage: \"macOS-latest\"\n\njobs:\n  - job: ${{ parameters.platform }}\n    pool:\n      vmImage: ${{ parameters.vmImage }}\n      demands: node.js\n    timeoutInMinutes: 120 # This is mostly for Windows\n    steps: \n      - powershell: $Env:Path\n        continueOnError: true\n        condition: and(eq(variables['AGENT.OS'], 'Windows_NT'), and(eq(variables['Build.Reason'], 'PullRequest'), and(succeeded(), ne(variables['Build.SourceBranch'], variables['System.PullRequest.TargetBranch']))))\n        displayName: \"Print env in powershell\"\n      # Needed so that the mingw tar doesn't shadow the system tar. See\n      # pipelines.yaml. We need windows bsdtar from system32, not the mingw\n      # one. Note powershell doesn't need escaping of backslashes.\n      - powershell: Write-Host \"##vso[task.setvariable variable=PATH;]C:\\Program Files\\Git\\bin;C:\\Windows\\system32;${env:PATH}\"\n        continueOnError: true\n        condition: eq(variables['AGENT.OS'], 'Windows_NT')\n        displayName: \"Make sure C:/Program Files/Git/bin and windows/system32 is at front of path if windows\"\n      - powershell: $Env:Path\n        continueOnError: true\n        condition: and(eq(variables['AGENT.OS'], 'Windows_NT'), and(eq(variables['Build.Reason'], 'PullRequest'), and(succeeded(), ne(variables['Build.SourceBranch'], variables['System.PullRequest.TargetBranch']))))\n        displayName: \"Print env in powershell\"\n      - powershell: get-command tar\n        continueOnError: true\n        condition: and(eq(variables['AGENT.OS'], 'Windows_NT'), and(eq(variables['Build.Reason'], 'PullRequest'), and(succeeded(), ne(variables['Build.SourceBranch'], variables['System.PullRequest.TargetBranch']))))\n        displayName: \"Print where tar is located\"\n      - powershell: tar --help\n        continueOnError: true\n        condition: and(eq(variables['AGENT.OS'], 'Windows_NT'), and(eq(variables['Build.Reason'], 'PullRequest'), and(succeeded(), ne(variables['Build.SourceBranch'], variables['System.PullRequest.TargetBranch']))))\n        displayName: \"Print tar help\"\n      - powershell: Write-Host \"##vso[task.setvariable variable=HOME;]D:\\\"\n        continueOnError: true\n        condition: eq(variables['AGENT.OS'], 'Windows_NT')\n        displayName: \"Make sure $HOME is same is Agent.BuildDirectory\"  \n      - bash: |\n          # COMPUTE THE ESY INSTALL CACHE LOCATION AHEAD OF TIME\n          DESIRED_LEN=\"86\"\n          # Note: This will need to change when upgrading esy version\n          # that reenables long paths on windows.\n          # if [ \"$AGENT_OS\" == \"Windows_NT\" ]; then\n          #   DESIRED_LEN=\"33\"\n          # fi\n          HOME_ESY3=\"$HOME/.esy/3\"\n          HOME_ESY3_LEN=${#HOME_ESY3}\n          NUM_UNDERS=$(echo \"$(($DESIRED_LEN-$HOME_ESY3_LEN))\")\n          UNDERS=$(printf \"%-${NUM_UNDERS}s\" \"_\")\n          UNDERS=\"${UNDERS// /_}\"\n          THE_ESY__CACHE_INSTALL_PATH=${HOME_ESY3}${UNDERS}/i\n          if [ \"$AGENT_OS\" == \"Windows_NT\" ]; then\n            THE_ESY__CACHE_INSTALL_PATH=$( cygpath --mixed --absolute \"$THE_ESY__CACHE_INSTALL_PATH\")\n          fi\n          echo \"THE_ESY__CACHE_INSTALL_PATH: $THE_ESY__CACHE_INSTALL_PATH\"\n          # This will be exposed as an env var ESY__CACHE_INSTALL_PATH, or an\n          # Azure var esy__cache_install_path\n          echo \"##vso[task.setvariable variable=esy__cache_install_path]$THE_ESY__CACHE_INSTALL_PATH\"\n      # - bash: |\n      #     which esy\n      #     echo \"$( which esy )\"\n      #     echo \"##vso[task.setvariable variable=esy_bin_location]$(which esy)\"\n      #   displayName: \"Find esy binary\"\n      # - bash: echo ${ESY_BIN_LOCATION}\n      # displayName: \"Print esy bin location\"\n      - bash: env\n        displayName: \"Print environment\"\n      - template: esy-build-steps.yml\n      # - task: PublishBuildArtifacts@1\n      #   displayName: \"Publish Artifact: ${{ parameters.platform }}\"\n      #   inputs:\n      #     PathtoPublish: \"_release\"\n      #     ArtifactName: ${{ parameters.platform }}\n"
  },
  {
    "path": ".ci/checksum.js",
    "content": "let crypto = require(\"crypto\"),\n  path = require(\"path\"),\n  fs = require(\"fs\");\n\nlet algorithm = \"sha1\",\n  shasum = crypto.createHash(algorithm);\n\nlet cwd = process.cwd();\nlet pkg = require(path.join(cwd, \"package.json\")),\n  s = fs.ReadStream(\n    path.join(\n      cwd,\n      \"_release\",\n      `${pkg.name.replace(\"@\", \"\").replace(\"/\", \"-\")}-${pkg.version}.tgz`\n    )\n  );\n\ns.on(\"data\", function(data) {\n  shasum.update(data);\n});\n\ns.on(\"end\", function() {\n  var hash = shasum.digest(\"hex\");\n  console.log(`SHA1: ${hash}`);\n});\n"
  },
  {
    "path": ".ci/cross-release.yml",
    "content": "steps:\n  - script: echo \"No release steps. They are disabled\"\n    displayName: \"[Disabled] Release steps\"\n  # - template: utils/use-node.yml\n\n  # - script: \"mkdir _release\"\n  #   displayName: \"Create _release dir\"\n\n  # - template: release-platform-setup.yml\n  #   parameters:\n  #     platform: \"Linux\"\n  #     folder: \"platform-linux\"\n\n  # - template: release-platform-setup.yml\n  #   parameters:\n  #     platform: \"macOS\"\n  #     folder: \"platform-darwin\"\n\n  # - template: release-platform-setup.yml\n  #   parameters:\n  #     platform: \"Windows\"\n  #     folder: \"platform-windows-x64\"\n\n  # - script: \"node .ci/pipelines-release.js\"\n  #   displayName: \"node .ci/pipelines-release.js\"\n  #   continueOnError: true\n\n  # - script: \"npm pack .\"\n  #   displayName: \"npm pack\"\n  #   workingDirectory: \"_release\"\n\n  # - bash: \"node .ci/checksum.js _release/pesy-0.1.0-dev.21.tgz\"\n  #   displayName: \"Calculating sha1\"\n\n  # - task: PublishBuildArtifacts@1\n  #   displayName: \"Publish Artifact: Release\"\n  #   inputs:\n  #     PathtoPublish: \"_release\"\n  #     ArtifactName: Release\n"
  },
  {
    "path": ".ci/esy-build-steps.yml",
    "content": "# Cross-platform set of build steps for building esy projects\n\nsteps:\n  - template: utils/use-node.yml\n  - template: utils/use-cache-yarn.yml\n  - template: utils/use-esy.yml\n  - template: utils/use-cache-esy.yml\n  - script: \"esy install\"\n    displayName: \"esy install\"\n  - template: utils/restore-build-cache.yml # Run this to make sure cached prebuilts work. \n  - script: \"esy b dune build --only-packages pesy--esy-pesy,PesyE2E\"\n    displayName: \"esy build\"\n  - bash: \"ls -lR _build\"\n    displayName: \"Contents of _build\"\n  - template: utils/create-docs.yml\n  - script: mkdir $(System.DefaultWorkingDirectory)\\..\\tests-tmp-dir\n    displayName: 'Creating temporary workspace for tests'\n    condition: eq(variables['Agent.OS'], 'Windows_NT')\n  - script: .\\_build\\default\\e2e-tests\\Runner.exe\n    displayName: 'Running e2e tests'\n    condition: eq(variables['Agent.OS'], 'Windows_NT')\n    env:\n      OCAMLRUNPARAM: 'b'\n      PESY_CLONE_PATH: $(Build.SourcesDirectory)\n      TEMP: $(System.DefaultWorkingDirectory)\\..\\tests-tmp-dir\n  - script: ./_build/default/e2e-tests/Runner.exe\n    displayName: 'Running e2e tests'\n    condition: ne(variables['Agent.OS'], 'Windows_NT')\n    env:\n      PESY_CLONE_PATH: $(Build.SourcesDirectory)\n      OCAMLRUNPARAM: 'b'\n  - task: PublishBuildArtifacts@1\n    displayName: 'Upload sources'\n    condition: eq(variables['Agent.OS'], 'Linux')\n    inputs:\n        pathToPublish: './npm-cli/pesy-0.5.0-dev.23.tgz'\n        artifactName: 'pesy-npm-cli-source'\n        parallel: true\n        parallelCount: 8\n  # - script: \"esy release\"\n  #   displayName: \"esy release\"\n  - script: \"esy test\"\n    displayName: \"Test command\"\n  - bash: rm -rf ~/.esy/3/b\n    displayName: 'Emptying ~/.esy/3/b to clear up space'\n  - template: utils/publish-build-cache.yml\n\n  # Run tests or any additional steps here\n  # - script: esy b dune runtest\n"
  },
  {
    "path": ".ci/opam-build-steps.yml",
    "content": "# Shared steps for building OPAM projects\n\nsteps:\n  - task: NodeTool@0\n    inputs:\n      versionSpec: '8.9'\n  - script: brew install gpatch\n    displayName: 'brew install gpatch'\n  - script: brew install opam\n    displayName: 'brew install opam'\n  - script: opam --version\n    displayName: 'Check opam version'\n  - script: opam init --auto-setup --dot-profile=~/.bash_profile\n    displayName: 'opam init'\n  - script: opam remote add ocamlorg https://opam.ocaml.org || true\n    displayName: 'opam remote add ocamlorg'\n  - script: opam remove default || true\n    displayName: 'opam remove default'\n  - script: opam update\n    displayName: 'opam update'\n  - script: opam switch create $(OCAML_VERSION)\n    displayName: 'Use OCaml version: $(OCAML_VERSION)'\n  - script: opam install -y dune\n    displayName: 'opam install -y dune'\n  - script: opam install -y menhir\n    displayName: 'opam install -y menhir'\n  - script: opam install -y utop\n    displayName: 'opam install -y utop'\n  - script: make clean-for-ci\n    displayName: 'make clean-for-ci'\n  - script: opam pin add -y reason .\n    displayName: \"opam pin add -y reason .\"\n  - script: opam pin add -y rtop .\n    displayName: \"opam pin add -y rtop .\"\n  - script: eval $(opam env); make test-ci\n    displayName: \"make test-ci\"\n  - script: git diff --exit-code\n    displayName: \"Check git is clean\"\n"
  },
  {
    "path": ".ci/pipelines-release.js",
    "content": "const fs = require(\"fs\");\nconst path = require(\"path\");\n\nconsole.log(\"Creating package.json\");\n\n// From the project root pwd\nconst mainPackageJsonPath =\n  fs.existsSync('esy.json') ?\n  'esy.json' : 'package.json';\n\nconst exists = fs.existsSync(mainPackageJsonPath);\nif (!exists) {\n  console.error(\"No package.json or esy.json at \" + mainPackageJsonPath);\n  process.exit(1);\n}\n// Now require from this script's location.\nconst mainPackageJson = require(path.join('..', mainPackageJsonPath));\nconst bins =\n  Array.isArray(mainPackageJson.esy.release.bin) ?\n  mainPackageJson.esy.release.bin.reduce(\n    (acc, curr) => Object.assign({ [curr]: \"bin/\" + curr }, acc),\n    {}\n  ) :\n  Object.keys(mainPackageJson.esy.release.bin).reduce(\n    (acc, currKey) => Object.assign({ [currKey]: \"bin/\" + mainPackageJson.esy.release.bin[currKey] }, acc),\n    {}\n  );\n\nconst rewritePrefix =\n  mainPackageJson.esy &&\n  mainPackageJson.esy.release &&\n  mainPackageJson.esy.release.rewritePrefix;\n\nconst packageJson = JSON.stringify(\n  {\n    name: mainPackageJson.name,\n    version: mainPackageJson.version,\n    license: mainPackageJson.license,\n    description: mainPackageJson.description,\n    repository: mainPackageJson.repository,\n    scripts: {\n      postinstall:\n        rewritePrefix ?\n        \"ESY_RELEASE_REWRITE_PREFIX=true node ./postinstall.js\" :\n        \"node ./postinstall.js\"\n    },\n    bin: bins,\n    files: [\n      \"_export/\",\n      \"bin/\",\n      \"postinstall.js\",\n      \"esyInstallRelease.js\",\n      \"platform-linux/\",\n      \"platform-darwin/\",\n      \"platform-windows-x64/\"\n    ]\n  },\n  null,\n  2\n);\n\nfs.writeFileSync(\n  path.join(__dirname, \"..\", \"_release\", \"package.json\"),\n  packageJson,\n  {\n    encoding: \"utf8\"\n  }\n);\n\ntry {\n  console.log(\"Copying LICENSE\");\n  fs.copyFileSync(\n    path.join(__dirname, \"..\", \"LICENSE\"),\n    path.join(__dirname, \"..\", \"_release\", \"LICENSE\")\n  );\n} catch (e) {\n  console.warn(\"No LICENSE found\");\n}\n\nconsole.log(\"Copying README.md\");\nfs.copyFileSync(\n  path.join(__dirname, \"..\", \"README.md\"),\n  path.join(__dirname, \"..\", \"_release\", \"README.md\")\n);\n\nconsole.log(\"Copying postinstall.js\");\nfs.copyFileSync(\n  path.join(__dirname, \"release-postinstall.js\"),\n  path.join(__dirname, \"..\", \"_release\", \"postinstall.js\")\n);\n\nconsole.log(\"Creating placeholder files\");\nconst placeholderFile = `:; echo \"You need to have postinstall enabled\"; exit $?\n@ECHO OFF\nECHO You need to have postinstall enabled`;\nfs.mkdirSync(path.join(__dirname, \"..\", \"_release\", \"bin\"));\n\nObject.keys(bins).forEach(\n  name => {\n    if(bins[name]) {\n      const binPath = path.join(\n        __dirname,\n        \"..\",\n        \"_release\",\n        bins[name]\n      );\n      fs.writeFileSync(binPath, placeholderFile);\n      fs.chmodSync(binPath, 0777);\n    } else {\n      console.log(\"bins[name] name=\" + name + \" was empty. Weird.\");\n      console.log(bins);\n    }\n  }\n);\n"
  },
  {
    "path": ".ci/release-platform-setup.yml",
    "content": "parameters:\n  platform: \"macOS\"\n  folder: \"platform-darwin\"\n\nsteps:\n  - task: DownloadBuildArtifacts@0\n    displayName: \"Download ${{ parameters.platform }} Artifacts\"\n    inputs:\n      artifactName: ${{ parameters.platform }}\n      downloadPath: $(Build.StagingDirectory)\n\n  - script: \"mkdir _release/${{ parameters.folder }}\"\n    displayName: \"Create _release/${{ parameters.folder }}\"\n\n  - script: \"cp -r $(Build.StagingDirectory)/${{ parameters.platform }}/ _release/${{ parameters.folder }}\"\n    displayName: \"cp ${{ parameters.platform }}\"\n"
  },
  {
    "path": ".ci/release-postinstall.js",
    "content": "/**\n * release-postinstall.js\n *\n * XXX: We want to keep this script installable at least with node 4.x.\n *\n * This script is bundled with the `npm` package and executed on release.\n * Since we have a 'fat' NPM package (with all platform binaries bundled),\n * this postinstall script extracts them and puts the current platform's\n * bits in the right place.\n */\n\nvar path = require(\"path\");\nvar cp = require(\"child_process\");\nvar fs = require(\"fs\");\nvar os = require(\"os\");\nvar platform = process.platform;\n\nvar packageJson = require(\"./package.json\");\nvar binariesToCopy = Object.keys(packageJson.bin)\n  .map(function(name) {\n    return packageJson.bin[name];\n  })\n  .concat([\"esyInstallRelease.js\"]);\nvar foldersToCopy = [\"bin\", \"_export\"];\n\nfunction copyRecursive(srcDir, dstDir) {\n  var results = [];\n  var list = fs.readdirSync(srcDir);\n  var src, dst;\n  list.forEach(function(file) {\n    src = path.join(srcDir, file);\n    dst = path.join(dstDir, file);\n\n    var stat = fs.statSync(src);\n    if (stat && stat.isDirectory()) {\n      try {\n        fs.mkdirSync(dst);\n      } catch (e) {\n        console.log(\"directory already exists: \" + dst);\n        console.error(e);\n      }\n      results = results.concat(copyRecursive(src, dst));\n    } else {\n      try {\n        fs.writeFileSync(dst, fs.readFileSync(src));\n      } catch (e) {\n        console.log(\"could't copy file: \" + dst);\n        console.error(e);\n      }\n      results.push(src);\n    }\n  });\n  return results;\n}\n\n/**\n * Since os.arch returns node binary's target arch, not\n * the system arch.\n * Credits: https://github.com/feross/arch/blob/af080ff61346315559451715c5393d8e86a6d33c/index.js#L10-L58\n */\n\nfunction arch() {\n  /**\n   * The running binary is 64-bit, so the OS is clearly 64-bit.\n   */\n  if (process.arch === \"x64\") {\n    return \"x64\";\n  }\n\n  /**\n   * All recent versions of Mac OS are 64-bit.\n   */\n  if (process.platform === \"darwin\") {\n    return \"x64\";\n  }\n\n  /**\n   * On Windows, the most reliable way to detect a 64-bit OS from within a 32-bit\n   * app is based on the presence of a WOW64 file: %SystemRoot%\\SysNative.\n   * See: https://twitter.com/feross/status/776949077208510464\n   */\n  if (process.platform === \"win32\") {\n    var useEnv = false;\n    try {\n      useEnv = !!(\n        process.env.SYSTEMROOT && fs.statSync(process.env.SYSTEMROOT)\n      );\n    } catch (err) {}\n\n    var sysRoot = useEnv ? process.env.SYSTEMROOT : \"C:\\\\Windows\";\n\n    // If %SystemRoot%\\SysNative exists, we are in a WOW64 FS Redirected application.\n    var isWOW64 = false;\n    try {\n      isWOW64 = !!fs.statSync(path.join(sysRoot, \"sysnative\"));\n    } catch (err) {}\n\n    return isWOW64 ? \"x64\" : \"x86\";\n  }\n\n  /**\n   * On Linux, use the `getconf` command to get the architecture.\n   */\n  if (process.platform === \"linux\") {\n    var output = cp.execSync(\"getconf LONG_BIT\", { encoding: \"utf8\" });\n    return output === \"64\\n\" ? \"x64\" : \"x86\";\n  }\n\n  /**\n   * If none of the above, assume the architecture is 32-bit.\n   */\n  return \"x86\";\n}\n\n// implementing it b/c we don't want to depend on fs.copyFileSync which appears\n// only in node@8.x\nfunction copyFileSync(sourcePath, destPath) {\n  var data;\n  try {\n    data = fs.readFileSync(sourcePath);\n  } catch (e) {\n    console.log(\"Couldn't find \" + sourcePath + \" trying with .exe\");\n    data = fs.readFileSync(sourcePath + \".exe\");\n    sourcePath = sourcePath + \".exe\";\n  }\n  var stat = fs.statSync(sourcePath);\n  fs.writeFileSync(destPath, data);\n  fs.chmodSync(destPath, stat.mode);\n}\n\nvar copyPlatformBinaries = platformPath => {\n  var platformBuildPath = path.join(__dirname, \"platform-\" + platformPath);\n\n  foldersToCopy.forEach(folderPath => {\n    var sourcePath = path.join(platformBuildPath, folderPath);\n    var destPath = path.join(__dirname, folderPath);\n\n    copyRecursive(sourcePath, destPath);\n  });\n\n  binariesToCopy.forEach(binaryPath => {\n    var sourcePath = path.join(platformBuildPath, binaryPath);\n    var destPath = path.join(__dirname, binaryPath);\n    if (fs.existsSync(destPath)) {\n      fs.unlinkSync(destPath);\n    }\n    copyFileSync(sourcePath, destPath);\n    fs.chmodSync(destPath, 0777);\n  });\n};\n\ntry {\n  fs.mkdirSync(\"_export\");\n} catch (e) {\n  console.log(\"Could not create _export folder\");\n}\n\nswitch (platform) {\n  case \"win32\":\n    if (arch() !== \"x64\") {\n      console.warn(\"error: x86 is currently not supported on Windows\");\n      process.exit(1);\n    }\n\n    copyPlatformBinaries(\"windows-x64\");\n    break;\n  case \"linux\":\n  case \"darwin\":\n    copyPlatformBinaries(platform);\n    break;\n  default:\n    console.warn(\"error: no release built for the \" + platform + \" platform\");\n    process.exit(1);\n}\n\nrequire(\"./esyInstallRelease\");\n"
  },
  {
    "path": ".ci/utils/create-docs.yml",
    "content": "# These steps are only run on Linux\nsteps:\n  - script: \"esy doc\"\n    displayName: \"Build docs\"\n    condition: and(succeeded(), eq(variables['Agent.OS'], 'Linux'))\n\n  - script: echo '##vso[task.setvariable variable=docsPath]'$(esy echo '_build/default/_doc/_html')\n    displayName: \"Save docsPath in variable\"\n    condition: and(succeeded(), eq(variables['Agent.OS'], 'Linux'))\n\n  - task: PublishBuildArtifacts@1\n    displayName: \"Publish Artifact: Docs\"\n    condition: and(succeeded(), eq(variables['Agent.OS'], 'Linux'))\n    inputs:\n      PathtoPublish: $(docsPath)\n      ArtifactName: Docs\n"
  },
  {
    "path": ".ci/utils/publish-build-cache.yml",
    "content": "# Steps for publishing project cache\n\nsteps:\n  - bash: 'mkdir -p $(Build.StagingDirectory)'\n    condition: and(succeeded(), eq(variables['Build.Reason'], 'IndividualCI'))\n    displayName: '[Cache][Publish] Create cache directory'\n\n  # continueOnError because on windows it has a permission denied error but the\n  # export succeeds.\n  - script: \"esy export-dependencies\"\n    continueOnError: true\n    condition: and(succeeded(), eq(variables['Build.Reason'], 'IndividualCI'))\n    displayName: \"esy export-dependencies\"\n\n  - bash: pwd && ls _export/* && mv _export '$(Build.StagingDirectory)' && ls '$(Build.StagingDirectory)/_export/'\n    condition: and(succeeded(), eq(variables['Build.Reason'], 'IndividualCI'))\n    displayName: '[Cache][Publish] move export to staging dir'\n\n  # - bash: cd $ESY__CACHE_INSTALL_PATH && tar -czf $(Build.StagingDirectory)/esy-cache.tar .\n  #   workingDirectory: ''\n  #   condition: and(succeeded(), eq(variables['Build.Reason'], 'IndividualCI'))\n  #   displayName: '[Cache][Publish] Tar esy cache directory'\n\n  # - bash: 'cd $(ESY__NPM_ROOT) && tar -czf $(Build.StagingDirectory)/npm-cache.tar .'\n  #   condition: and(succeeded(), eq(variables['Build.SourceBranch'], variables['System.PullRequest.TargetBranch']))\n  #   displayName: '[Cache][Publish] Tar npm cache directory'\n\n  - task: PublishBuildArtifacts@1\n    displayName: '[Cache][Publish] Upload tarball'\n    condition: and(succeeded(), eq(variables['Build.Reason'], 'IndividualCI'))\n    # TODO: The CI Build caches are pulled down by the last successful buildID\n    # for the target branch.\n    inputs:\n        pathToPublish: '$(Build.StagingDirectory)'\n        artifactName: 'cache-$(Agent.OS)-install-$(esy__ci_cache_version)'\n        parallel: true\n        parallelCount: 8\n"
  },
  {
    "path": ".ci/utils/restore-build-cache.yml",
    "content": "# Steps for restoring project cache\n\nsteps:\n  - bash: 'mkdir -p $(Build.StagingDirectory)'\n    condition: and(eq(variables['Build.Reason'], 'PullRequest'), and(succeeded(), ne(variables['Build.SourceBranch'], variables['System.PullRequest.TargetBranch'])))\n    displayName: '[Cache][Publish] Create cache directory'\n\n  # TODO: This can be done in parallel with installing node, and esy\n  # (which would save a bunch of time on windows)\n  - task: Bash@3\n    condition: and(eq(variables['Build.Reason'], 'PullRequest'), and(succeeded(), ne(variables['Build.SourceBranch'], variables['System.PullRequest.TargetBranch'])))\n    displayName: '[Cache][Restore] Restoring build cache using REST API'\n    continueOnError: true\n    inputs:\n      targetType: 'inline' # Optional. Options: filePath, inline\n      script: |\n        # If org name is reasonml then REST_BASE will be: https://dev.azure.com/reasonml/\n        REST_BASE=\"${SYSTEM_TEAMFOUNDATIONCOLLECTIONURI}\"\n        PROJ=\"$SYSTEM_TEAMPROJECT\"\n        ART_NAME=\"cache-${AGENT_OS}-install-${ESY__CI_CACHE_VERSION}\"\n        fetchLatestBuild() {\n          PREFIX=\"branchName=refs%2Fheads%2F\"\n          BRANCH=${PREFIX}${SYSTEM_PULLREQUEST_TARGETBRANCH}\n          FILTER='deletedFilter=excludeDeleted&statusFilter=completed&resultFilter=succeeded'\n          LATEST='queryOrder=finishTimeDescending&$top=1'\n          REST_BUILDS=\"$REST_BASE/$PROJ/_apis/build/builds?${FILTER}&${BRANCH}&${LATEST}&api-version=4.1\"\n          echo \"Rest call for builds: $REST_BUILDS\"\n          REST_BUILDS_RESP=$(curl \"$REST_BUILDS\")\n          if [[ $REST_BUILDS_RESP =~ (\\\"web\\\":\\{\\\"href\\\":\\\")([^\\\"]*) ]]; then LATEST_BUILD_PAGE=\"${BASH_REMATCH[2]}\"; else LATEST_BUILD_PAGE=\"\"; fi\n          if [[ $REST_BUILDS_RESP =~ (\\\"badge\\\":\\{\\\"href\\\":\\\")([^\\\"]*) ]]; then LATEST_BUILD_BADGE=\"${BASH_REMATCH[2]}\"; else LATEST_BUILD_BADGE=\"\"; fi\n          if [[ $REST_BUILDS_RESP =~ (\\\"id\\\":)([^,]*) ]]; then LATEST_BUILD_ID=\"${BASH_REMATCH[2]}\"; else LATEST_BUILD_ID=\"\"; fi\n        }\n        fetchLatestBuild\n        fetchArtifactURL() {\n          REST_ART=\"$REST_BASE/$PROJ/_apis/build/builds/$LATEST_BUILD_ID/artifacts?artifactName=$ART_NAME&api-version=4.1\"\n          echo \"Rest call for artifacts: $REST_ART\"\n          if [[ $(curl $REST_ART) =~ (downloadUrl\\\":\\\")([^\\\"]*) ]]; then LATEST_ART_URL=\"${BASH_REMATCH[2]}\"; else LATEST_ART_URL=\"\"; fi\n        }\n        downloadArtifactAndContinue() {\n          if [ -z \"$LATEST_ART_URL\" ]\n          then\n            echo \"No latest artifact for merge-target branch found at URL $REST_ART\"\n          else\n            curl \"$LATEST_ART_URL\" > \"${BUILD_STAGINGDIRECTORY}/$ART_NAME.zip\"\n            PROJECT_DIR=$PWD\n            cd $BUILD_STAGINGDIRECTORY\n            unzip \"$ART_NAME.zip\"\n            echo \"Using Dependency cache for buildID: $LATEST_BUILD_ID\"\n            echo \"Build log for build that produced the cache: $LATEST_BUILD_PAGE\"\n            echo \"Build badge for build that produced the cache: $LATEST_BUILD_BADGE\"\n            echo \"Build artifact from build that produced the cache: $LATEST_ART_URL\"\n            echo \"Restoring build cache into:\"\n            mkdir -p $ESY__CACHE_INSTALL_PATH\n            echo $ESY__CACHE_INSTALL_PATH\n            echo \"##vso[task.setvariable variable=esy_export_dir_to_import]${BUILD_STAGINGDIRECTORY}/${ART_NAME}/_export\"\n            if [[ -d ${ART_NAME}/_export ]]; then\n              mv ${ART_NAME}/_export ${PROJECT_DIR}/_import\n              cd $PROJECT_DIR\n              echo \"Cached builds to import\"\n              ls ./_import\n              # import-build allows importing before esy install runs.\n              # unlike import-dependencies\n              echo \"Going to import builds from ${PROJECT_DIR}/_import in the next build step\"\n              if [ \"$AGENT_OS\" == \"Windows_NT\" ]; then\n                 echo \"Trying the cmd\"\n                 # Have to import the builds one by one in windows because\n                 # there is some file locking issue in esy on windows only when\n                 # importing many in parallel.\n                 cd ./_import\n                 FILES=*\n                 for f in $FILES\n                 do\n                   echo \"Trying to import $f\"\n                   esy.cmd import-build \"$f\"\n                 done\n                 cd $PROJECT_DIR\n              else\n                esy import-dependencies \"_import\"\n              fi\n            else\n              echo \"No _export directory to import from build cache\"\n              echo \"Here's the contents of build cache:\"\n              find ${BUILD_STAGINGDIRECTORY}\n            fi\n          fi\n        }\n        fetchArtifactURL\n        downloadArtifactAndContinue\n      \n  - bash: 'rm -rf _import'\n    continueOnError: true\n    condition: and(eq(variables['Build.Reason'], 'PullRequest'), and(succeeded(), ne(variables['Build.SourceBranch'], variables['System.PullRequest.TargetBranch'])))\n    displayName: 'Remove import directory'\n\n  - bash: 'rm -rf *'\n    continueOnError: true\n    workingDirectory: '$(Build.StagingDirectory)'\n    condition: and(eq(variables['Build.Reason'], 'PullRequest'), and(succeeded(), ne(variables['Build.SourceBranch'], variables['System.PullRequest.TargetBranch'])))\n    displayName: '[Cache][Restore] Clean up staging dir'\n"
  },
  {
    "path": ".ci/utils/use-cache-esy.yml",
    "content": "steps:\n  - task: Cache@2\n    condition: and(eq(variables['Build.Reason'], 'PullRequest'), ne(variables['Build.SourceBranch'], variables['System.PullRequest.TargetBranch']))\n    inputs:\n      key: 'v1 | esy-install-cache | \"$(Agent.OS)\" | \"$(Build.SourcesDirectory)/esy.lock/index.json\"' # vPrimary, here, is just a way to bust cache during debugging. Inspired from https://docs.microsoft.com/en-us/azure/devops/pipelines/caching/?view=azure-devops#can-i-clear-a-cache\" \n      path: $(ESY__CACHE_INSTALL_PATH)\n      cacheHitVar: ESY_INSTALL_CACHE_RESTORED\n    displayName:  \"Caching $(ESY__CACHE_INSTALL_PATH)\"\n  - task: Cache@2\n    condition: and(eq(variables['Build.Reason'], 'PullRequest'), ne(variables['Build.SourceBranch'], variables['System.PullRequest.TargetBranch']))\n    inputs:\n      key: 'v1 | esy-sources | \"$(Agent.OS)\" | \"$(Build.SourcesDirectory)/esy.lock/index.json\"' # vPrimary, here, is just a way to bust cache during debugging. Inspired from https://docs.microsoft.com/en-us/azure/devops/pipelines/caching/?view=azure-devops#can-i-clear-a-cache\" \n      path: \"$(ESY__CACHE_INSTALL_PATH)/../../source\"\n      cacheHitVar: ESY_SOURCE_CACHE_RESTORED\n    displayName:  \"Caching $(ESY__CACHE_INSTALL_PATH)/../../source\"\n"
  },
  {
    "path": ".ci/utils/use-cache-npm.yml",
    "content": "steps:\n- task: Cache@2\n  inputs:\n    key: 'npm | \"$(Agent.OS)\" | \"$(Build.SourcesDirectory)/npm-cli/package-lock.json\"'\n    restoreKeys: |\n       npm | \"$(Agent.OS)\"\n       npm\n    path: $(HOME)/.npm\n  displayName: Cache npm\n  condition: ne(variables['AGENT.OS'], 'Windows_NT')\n- task: Cache@2\n  inputs:\n    key: 'npm | \"$(Agent.OS)\" | \"$(Build.SourcesDirectory)/npm-cli/package-lock.json\"'\n    restoreKeys: |\n       npm | \"$(Agent.OS)\"\n       npm\n    path: $(AppData)/npm-cache\n  displayName: Cache npm\n  condition: eq(variables['AGENT.OS'], 'Windows_NT')\n"
  },
  {
    "path": ".ci/utils/use-cache-yarn.yml",
    "content": "steps:\n- bash: |\n    YARN_CACHE_DIR=$(yarn cache dir)\n    echo \"##vso[task.setvariable variable=YARN_CACHE_DIR]$YARN_CACHE_DIR\"\n- task: Cache@2\n  inputs:\n    key: 'yarn | \"$(Agent.OS)\" | \"$(Build.SourcesDirectory)/npm-cli/yarn.lock\"'\n    restoreKeys: |\n       yarn | \"$(Agent.OS)\"\n       yarn\n    path: $(YARN_CACHE_DIR)\n  displayName: Cache yarn\n"
  },
  {
    "path": ".ci/utils/use-esy.yml",
    "content": "# steps to install @esy-nightly/esy globally\n\nsteps:\n  - script: \"sudo npm install --prefix /usr/local --unsafe-perm -g @esy-nightly/esy\"\n    displayName: \"install @esy-nightly/esy\"\n    condition: ne(variables['Agent.OS'], 'Windows_NT')\n  - script: \"npm install -g @esy-nightly/esy\"\n    displayName: \"install @esy-nightly/esy\"\n    condition: eq(variables['Agent.OS'], 'Windows_NT')\n"
  },
  {
    "path": ".ci/utils/use-node.yml",
    "content": "# steps to use node on agent\n\nsteps:\n  - task: NodeTool@0\n    displayName: \"Use Node 10.x\"\n    inputs:\n      versionSpec: 10.x\n"
  },
  {
    "path": ".gitignore",
    "content": ".DS_Store\nnpm-debug.log\n.merlin\nyarn-error.log\nnode_modules/\n_build\n_esy\n_release\npesy.install\n.DS_Store\n*.install\n*~\nscripts/storage\nvendor\ncoverage/\n*.bs.js\nsite/index.html\nsite/index.rendered.html"
  },
  {
    "path": ".npmignore",
    "content": ".DS_Store\nnpm-debug.log\n.merlin\nyarn-error.log\nnode_modules/\n_build\n_esy\n_release\npesy.install\n.DS_Store\n*.install\n*~\nscripts/storage\nvendor\ncoverage/\n*.bs.js\nnpm-cli/\nesy.lock/\nsite/\nimages/\nazure-pipelines.yml\n.ci/\nscripts/"
  },
  {
    "path": "CODE_OF_CONDUCT.md",
    "content": "# 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 prometheansacrifice@gmail.com. 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": "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.\n"
  },
  {
    "path": "ORIGIN.md",
    "content": "\n- Includes vendored copy of [JSON.sh](https://github.com/dominictarr/JSON.sh)\n  (under MIT LICENSE)  which has been renamed to `pesy-JSON.sh` to avoid name\n  collisions.\n"
  },
  {
    "path": "PesyE2E.opam",
    "content": ""
  },
  {
    "path": "README.html",
    "content": "[ vim: set filetype=Markdown: ]: # (<script src=\"site/Reload.js\"> </script>)\n\n\n# pesy\n\n`pesy` is a command line tool to assist with your native Reason/OCaml\nworkflow using the package.json itself.\n\n1. Quickly bootstrap a new Reason project\n2. Configure your builds\n\n## Installation\n\n`npm install -g pesy@next`\n\n## Why pesy?\n`esy` is driven by a package.json to bring the familiar NPM workflow\nto the native world of Reason/OCaml. `pesy` takes this further by\nadopting NPM conventions to configure the build.`esy`'s package.json\nfirst approach in creating developer sandboxes brings interesting\npossibilities to the table. `pesy` leverages on those features to make\nnative development both convenient and familiar. \n\n`pesy` provides \n\n1. A bootstrapper script to quickly create a project template\n2. An alternative JSON syntax around Dune that is NPM like\n3. Built in tasks that take full advantages of esy's capabilities\n\n## Getting started\n### Creating a new project\n\n`pesy` can quickly bootstrap a basic native Reason/OCaml project.\n\n```sh\ncd my-new-project/\npesy\n```\n\n### Adding project dependencies\n\nSay, we need `@opam/yojson` and `@reason-native/console` in `App.re`.\n\nPlace `App.re` in a folder (say, `bin/`?) and add the following to you\npackage.json. \n\n```json\n\"buildDirs\": {\n  \"bin\": {\n    \"imports\": [\n\t  \"Json = require('@opam/yojson')\",\n\t  \"Console = require('@reason-native/console/lib')\"\n\t]\n  }\n}\n```\n<continueRight/>\n\nRun `esy pesy` (once). Run `esy` after that to create builds.\n\n`pesy` abstracts library identifiers (in this case `yojson` and\n`console.lib`) in file paths conceptually. Use native dependencies\nfrom OCaml like you did with NPM!\n\n### Where pesy shines\nHowever, `pesy`'s is truly useful for frameworks that need\na lot dependencies and configuration. Ex: Morph and Revery \n\n```sh\npesy --template pesy/template-revery --directory my-new-project\n```\n\nIf you are authoring a framework, create a template like\n[`pesy/template-revery`](https://github.com/pesy/template-revery) and\nrun the project on the CI with a setup that `pesy` creates for you.\n\nYou users get cached CI artifacts that will let can hydrate their\nlocal `esy` cache avoid long wait times! See [Templates](#pesy-templates-experimental-creating-your-own-template) to see how\nto create such templates.\n\n### Looking for a tutorial?\nCheckout [A simple native Reason project with\npesy](#pesy-simple-native-example) to get an idea of what developing\nwith `pesy` feels like. \n\n\n## Relation to Dune\n\nPesy as accepts package.json as input and producing dune files as output.\n\n```\n                  +--------+\npackage.json ---> |  pesy  | +--->  dune files\n                  +--------+\n```\n\n<continueRight/>\n\nNote that not all of Dune's features are supported in pesy (PRs\nwelcome). `pesy` doesn't intend to duplicate Dune's efforts - it's\nmeant to compliment it. For simple use cases, `pesy` wants to provide\na NPM friendly interface to Dune so that newcomers can quickly get\nstarted, without confusing themselves with the library vs packages\nnuances.\n\n## Namespacing\n\nEvery library, as we know, exposes a namespace/module under which it's APIs are\navailable. However, as package authors, it can hard to make sure one\nis not using a namespace already taken by another package (Otherwise\nit could lead to collisions). Pesy works around this by assigning the library\nthe upper camelcase of the root package name and directory the\nlibrary/sub-package resides in. \n\nExample: if a package.json looks like this \n\n```json\n{\n  \"name\": \"@myscope/foo\",\n  \"buildDirs\": {\n    \"library\": { ... }\n  }\n}\n```\n\nThen, subpackage `library` takes a namespace of\n`MyScopeFooLibrary`. As a user, however, you shouldn't have to worry\nmuch about yourself, since you can specify how you'd like to import\nsubpackages (and packages). In the above example, another subpackage\nwould consume it as follows\n\n```json\n{\n  \"name\": \"@myscope/foo\",\n  \"buildDirs\": {\n    \"library\": { ... },\n    \"anotherLibrary\": {\n      \"imports\": [\n        \"ThatOtherLibrary = require('@myscope/foo/library')\"\n      ]\n    }\n  }\n}\n```\n\nAnd if you were consuming this package (after having published to\nnpm), you can import it as follows:\n\n```json\n{\n  \"name\": \"bar\",\n  \"buildDirs\": {\n    \"library\": {\n      \"imports\": [\n        \"ThatFooLibrary = require('@myscope/foo/library')\"\n      ]\n    }\n  }\n```\n\n<continueRight/>\n\nWith the new NPM like conventions, pesy automatically handles the\nnamespace for you so that we don't have to worry about the nuances of\na package and a library during development. \n\n\n## Dune files\n\n`pesy` generates dune files on fly behind the scenes. And to be able to so,\nit needs a static dune file that looks like the following\n\n```sexp\n(* -*- tuareg -*- *)\n\nopen Jbuild_plugin.V1\n\nlet () =\n  run_and_read_lines (\"pesy dune-file \" ^ Sys.getcwd ())\n  |> String.concat \"\\n\"\n  |> send\n```\n\nThese have to created only once - after that they never change (unless you decide\nto eject). Every bootstrapped project has them already and you dont have to create\nthem. In case, you need to re-generate them, run `esy pesy` (or `esy\n@mysandbox pesy` if you are using `esy` sandboxes). A common need for running `esy pesy`\nis when you add a new folder to your project.\n\n#### Ejecting:\n\nIt is always possible to eject out of pesy config by running `esy pesy\neject ./subpackage-path`\n\n## CI & local cache Warming up\n\nCompilation artifacts built on the CI can be downloaded by `pesy warmup`.  At\nthe moment, we only support Azure Pipelines can be configured as follows.\n\n```json\n{\n  \"pesy\": {\n    \"azure-project\":\n      \"<azure-project>/<azure-pipeline-name>\",\n    \"github\":\n      \"<github-org>/<github-repo>\"\n  }\n}\n```\n<continueRight/>\n\nThis will fetch appropriate artifacts compiled for the current\nmachine. Note however, the best way to get this feature to work is to\nuse cache publish and restore mechanism provided bootstrapped\nfiles. `pesy` assumes that the artifact zip file names and/or paths\nhaven't changed.\n\n\n#### How it works\nCompilation artifacts created by `esy` are relocatable - since `esy`\nsandboxes isolated, all the dependencies are accounted for and each\ndependency is loaded from a path with a fixed-length prefix. Such\nartifacts can be built on one machine and used on other provided the\nprefixes are rewritten to reflect the updated path on the new\nmachine. And `esy` provides all the low level command to do this out of\nthe box. `pesy` simply provides a convenient wrapper that drives them.\n\nWhen the project is bootstrapped for the first time, it is identical to a copy\nthat is run on the server. This is where the first set of cached builds come from,\nwhich is why the `azure-project` in the pesy config is set to `esy-dev/esy` and\n`github` to `esy/pesy-reason-template`.\n\nOnce the project sees changes, you most probably would add more dependencies \n(or remove some) which could change the build sandbox state. It is recommended that\nyou run the provided CI setup to cache builds on your own Azure Pipelines instance \nand update `github` and `azure-project` accordingly.\n\n## Publishing and Consuming from NPM\n#### Publishing libraries\n\nEasiest way to get started with distributing you library is to publish\nthe source to NPM. \n\nLet's take a look at an example.\n\nConsider a base package `foo` that you created and distributed on NPM. And let's assume, `bar` is the package that consumes `foo`.\n\n```sh\n$ pesy --directory foo-lib\n```\n\nThis would have bootstrapped a project with the default template with\n`Util.re` in the `library/` folder.\n\nLet's publish it\n\n```sh\n$ npm publish\n```\n\n#### Consuming `foo-lib`\n\nLet quickly create a new project, `bar` and add `foo`.\n\n```sh\n$ pesy --directory bar\n$ esy add foo-lib\n```\n\nWe can now require `foo`\n\n```diff\n  \"buildDirs\": {\n    \"library\": {\n      \"imports\": [\n+        \"FooLib = require('foo-lib/library')\"\n      ]\n    }\n  }\n```\n\nAnd then edit Utils.re\n\n```reason\nlet foo = () => {\n  FooLib.Util.foo();\n  print_endline(\"This is from bar\");\n};\n```\n\n```sh\n$ esy\n$ esy start\nHello from foo!\nThis is from bar\n```\n\n## Templates [experimental]\n\n#### Usage\n\nTo use a custom template run `pesy --template=github:your-name/your-pesy-template`\n  \n#### Creating your own template\n\n*This is a experimental feature that could see a lot of churn. We\nrequest you to watch the issue tracker for updates.*\n\nIt works by downloading a git repo and then replacing special strings\nin filenames and files inside the repo. The special strings are\ncurrently these: \n\n###### In file names:\n\n| In filename                      |  Replaced with                |\n| -------------------------------- |  ---------------------------- |\n| `__PACKAGE_NAME__`               |  `package_name`               |\n| `__PACKAGE_NAME_FULL__`          |  `package_name`               |\n| `__PACKAGE_NAME_UPPER_CAMEL__`   |  `PackageName`                |\n\n\n###### In file content:\n\n| In contents                  | Replaced with                |\n| ---------------------------- | ---------------------------- |\n| `<PACKAGE_NAME>`             | `package_name`               |\n| `<PACKAGE_NAME_FULL>`        | `package_name`               |\n| `<PACKAGE_NAME_UPPER_CAMEL>` | `PackageName`                |\n| `<VERSION>`                  | `version`                    |\n| `<PUBLIC_LIB_NAME>`          | `package_name/library`       |\n| `<TEST_LIB_NAME>`            | `package_name/test`          |\n\nBest way to get started creating a new template is to download\nhttps://github.com/esy/pesy-reason-template and work on it. Any\nchanges can be tested with `pesy test-template`.\n\n## Supported Dune Config\nThis is reference guide explaining the config `pesy` supports.\n\n### Binaries\n\nConfiguration that applies to subpackages that create binary\nexecutables. Note that these executables can be ocaml bytecode or\nnative binaries (ELF/Mach/PE) \n\n#### bin : `string`\nA subpackage produces binary when it contains a `bin` property. \n\n```json\n{\n  \"buildDirs\": {\n    \"src\": {\n      \"bin\": \"Main.re\"\n    }\n  }\n}\n```\n\n<continueRight/>\n\nHere is a [complete, working example](https://github.com/prometheansacrifice/pesy-samples/blob/master/simple-bin/package.json)\n\n#### modes : `array(string)`\nAn array of [advanced linking\nmodes](https://dune.readthedocs.io/en/latest/dune-files.html?highlight=modules_without_implementation#linking-modes). Each\nstring should be of the form \"`compilation-mode` `binary-kind`\" where\n`compilation-mode` is one byte, native or best and `binary-kind` is\none of c, exe, object, shared_object. \n\n```json\n{\n  \"buildDirs\": {\n    \"src\": {\n\t  \"bin\": \"Foo.re\",\n\t  \"modes\": [ \"native\", \"exe\"] \n\t}\n  }\n}\n```\n\n<continueRight/>\n\nHere is a [complete, working example](https://github.com/prometheansacrifice/pesy-samples/blob/master/bin-modes/package.json)\n\n#### name (override) : `string`\nA string that maps to Dune's `public_name`. Usually unnecessary (as\n`bin` property takes care of it) and must only be used to override. \n\n#### main (override) : `string`\nA string that maps to Dune's `name`. Usually unnecessary (as `bin`\nproperty takes care of it) and must only be used to override the entry\npoint. \n\n### Libraries\n\n#### modes : `array(string)`\n\n`modes` can be used to configure the compilation target - [native](https://caml.inria.fr/pub/docs/manual-ocaml/native.html) or\n[bytecode](https://caml.inria.fr/pub/docs/manual-ocaml/comp.html) An\narray of string, any of `byte`, `native`, `best` \n\n##### `\"byte\"` \nThis mode generates byte code output\n\n##### `\"native\"`\nThis mode generates native output\n\n##### `\"best\"`\nSometimes it may not be obvious if native compilation is supported on a\nmachine. In such circumstances, use `\"best\"` and `\"native\"` will be picked for\nyou if it's available. Else, it'll be `\"byte\"`\n\n#### cNames : `array(string)`\nWhen writing C stubs to FFI into a library, simply mention the file\nname (without the `.c` extension) in the `cNames` field.\n\n```json\n{\n  \"buildDirs\": {\n    \"src\": {\n      \"cNames\": [\"my-stub1\", \"my-stub-2\"]\n\t}\n  }\n}\n```\n\n#### foreignStubs : `list(ForeignStub)`\nFrom dune version 2.0 onwards the cNames field was removed and foreignStubs field\nwas introduced to provide the FFI functionality, foreignStubs is a list of objects, \nwhere each foreignStub object should specify `language`, `names` & `flags`.\nIncase `names` & `flags` is not specified or empty, their default value will be considered\n[Refer this for default values for names & flags](https://dune.readthedocs.io/en/stable/concepts.html#foreign-stubs)\n\n```json\n{\n  \"buildDirs\": {\n    \"src\": {\n      \"foreignStubs\": [\n        {\n          \"language\": \"c\",\n          \"names\": [\"my-stub1\", \"my-stub-2\"],\n          \"flags\": [\"-verbose\"]\n        } \n      ]\n\t}\n  }\n}\n```\n\n\n<continueRight/>\n\nHere is a [complete, working example](https://github.com/prometheansacrifice/pesy-samples/blob/master/cNames/package.json)\n\n### Config supported by both libraries and binaries\n\n#### imports : `array(string)`\n\n`imports` can be used to import a library (from a subpackage or an\nexternal npm/opam package) and utilise the namespace of the imported\nlibrary.\n\n```json\n{\n  \"buildDirs\": {\n    \"src\": {\n\t  \"imports\": [\n\t    \"Console = require('console')\"\n\t  ]\n\t}\n  }\n}\n```\n\nThe above config makes a namespace `Console` available inside the\nsubpackage `src`. Now any `.re` file inside `src` can use the\n`console` library.\n\n```reason\n// src/SomeFile.re\nlet foo = () => Console.log(\"Hello, world\")\n```\n\nWe can also import a package/subpackage under a different namespace\n\n```json\n{\n  \"buildDirs\": {\n    \"src\": {\n\t  \"imports\": [\n\t    \"NotConsole = require('console')\"\n\t  ]\n\t}\n  }\n}\n```\n\nAnd we can import (oddly confusing) `NotConsole` from in `src`\n\n```reason\n// src/SomeFile.re\nlet foo = () => NotConsole.log(\"Hello, world\");\n```\n\nWe can also import other subpackages in the project.\n\n```json\n{\n  \"buildDirs\": {\n    \"src\": {\n      \"bin\": \"Main.re\",\n      \"imports\": [\n        \"FooConsole = require('console/lib')\",\n        \"MyOwnLibrary = require('../my-own-lib')\"\n      ]\n    },\n    \"my-own-lib\": {}\n  }\n}\n```\n\n<continueRight/>\n\nHere is a [complete, working example](https://github.com/prometheansacrifice/pesy-samples/blob/master/imports/package.json)\n\n#### Compiler flags\n###### All of type *list(string)*\n\n- `flags` - These flags will be passed to both the bytecode compiler and native compiler\n- `ocamlcFlags` - These will be passed to `ocamlc` - the bytecode compiler\n- `ocamloptFlags` - These will be passed to `ocamlopt` - the native compiler\n- `jsooFlags` - These will be passed to `jsoo` compiler - the [javascript compiler](http://ocsigen.org/js_of_ocaml/3.5.1/manual/overview). *Note: This is unrelated to [Bucklescript](https://bucklescript.github.io/)*\n\n\n\n#### Preprocessor flags : `list(string)`\n\n`preprocess` accepts options needed to pass the source files via a\npreprocessor first. When using custom syntax not natively supported in\nthe compiler, we pass the sources in a subpackage via a preprocessor\nfirst.\n\nFor example, suppose we'd like to use `let%lwt` syntax for our `Lwt` promises\n\n```reason\n\nlet%lwt foo = Lwt.return(\"foo\");\nprint_endline(foo);\n\n// instead of \nLwt.return >>=\n  (foo => print_endline(foo); Lwt.return())\n```\n\nWe specify `lwt_ppx` in `pps preprocess`\n\n```json\n{\n  \"buildDirs\": {\n    \"src\": {\n\t  \"bin\": \"Main.re\",\n\t  \"preprocess\": [\"pps\", \"lwt_ppx\"]\n\t}\n  }\n}\n```\n\n<continueRight/>\n\nHere is a [complete, working example](https://github.com/prometheansacrifice/pesy-samples/blob/master/preprocess/package.json)\n\n#### includeSubdirs : `string = \"no\"|\"unqualified\"`\n\nDefault is \"no\", and changing to \"unqualified\" will compile modules at\ndeeper directories.\n\n#### Escape hatches for unsupported Dune config\n\nIt's always possible that there are features Dune offers are needed and\nthe options above are not enough. Use `rawBuildConfig` to add\noptions in a given library or binary. Use `rawBuildConfigFooter` to\nadd config to the footer.\n\n##### rawBuildConfig : `list(string)`\n\nExample\n\n```json\n{\n  \"src\": {\n    \"rawBuildConfig\": [ \"(libraries unix)\" ],\n    \"bin\": \"Main.re\"\n  }\n}\n```\n##### rawBuildConfigFooter : `list(string)`\n\nExample\n\n```json\n{\n  \"src\": {\n    \"rawBuildConfigFooter\": [\n      \"(install (section share_root) (files (plaintext.txt as asset.txt)))\"\n    ]\n  }\n}\n```\n\n<continueRight/>\n\nHere is a [complete, working example](https://github.com/prometheansacrifice/pesy-samples/blob/master/raw/package.json)\n  \n## Tutorials\n  \n#### Simple native example\n#### CLI Apps\n#### Web Development with Morph\n  \n## Development\n\nClone the repo and run `esy` on it.\n\n#### e2e tests\n\n`./_build/install/default/bin` would contain (after running `esy`) `Runner.exe`. `Runner.exe` looks for `PESY_CLONE_PATH` variable in the environment to find `pesy` source. Set it to the path where the project was cloned.\n\nTo test if simple workflows work as expected. They assume both `esy` and `pesy` are installed\nglobally (as on user's machines).\n\n## Changelog\n**version 0.4.0 (12/21/2018)**\n\n- Allow `buildDirs` to contain deeper directories such as `\"path/to/my-lib\": {...}\"`.\n- Added support for `wrapped` property on libraries.\n- Added support for `virtualModules` and `implements` - properties for Dune\n  virtual libraries. (This will only be supported if you mark your project as\n  Dune 1.7 - not yet released).\n- Stopped using `ignore_subdirs` in new projects, instead using\n  `(dirs (:standard \\ _esy))` which only works in Dune `1.6.0+`, so made new\n  projects have a lower bound of Dune `1.6.0`.\n- Support new properties `rawBuildConfig` which will be inserted at the bottom\n  of the _target_ being configured (library/executable).\n  - It expects an array of strings, each string being a separate line in the\n    generated config.\n- Support new properties `rawBuildConfigFooter` which will be inserted at the\n  bottom of the entire Dune file for the _target_ being configured.\n  - It expects an array of strings, each string being a separate line in the\n    generated config.\n- Support new properties `modes` for binaries and libraries `list(string)`.\n"
  },
  {
    "path": "azure-pipelines.yml",
    "content": "name: Build npm release\n\nvariables:\n  esy__ci_cache_version: v1\n\ntrigger:\n  branches:\n    include:\n    - master\n    - releases/*\n  paths:\n    exclude:\n    - README.html\n    - notes/*\n    - \"*.md\"\n    - LICENSE\n\njobs:\n  - template: .ci/build-platform.yml\n    parameters:\n      platform: Linux\n      vmImage: ubuntu-latest\n\n  - template: .ci/build-platform.yml\n    parameters:\n      platform: macOS\n      vmImage: macOS-latest\n\n  # Need windows-2019 to do esy import/export-dependencies\n  # which assumes you have bsdtar (tar.exe) in your system\n  # otherwise it will end up using the esy-bash tar which doesn't\n  # understand drives like D:/ (thinks it's an scp path).\n  - template: .ci/build-platform.yml\n    parameters:\n      platform: Windows\n      vmImage: windows-2019\n\n  # This job is kept here as we want to have the platform names in the same file\n  - job: Release\n    displayName: Release\n    dependsOn:\n      - Linux\n      - macOS\n      - Windows\n    pool:\n      vmImage: macOS-latest\n      demands: node.js\n    steps:\n      - template: .ci/cross-release.yml\n"
  },
  {
    "path": "bin/Pesy.re",
    "content": "module Lib = PesyEsyPesyLib.Lib;\nmodule Utils = PesyEsyPesyUtils.Utils;\nopen Lib;\nopen Utils;\nopen Printf;\nopen Cmdliner;\nopen PesyEsyPesyErrors.Errors;\n\nexception BootstrappingError(unit);\nexception LsLibsError(string);\n\nmodule EnvVars = {\n  let rootPackageConfigPath = Sys.getenv_opt(\"ESY__ROOT_PACKAGE_CONFIG_PATH\");\n};\n\nlet getManifestFile = projectRoot => {\n  switch (EnvVars.rootPackageConfigPath) {\n  | Some(x) => x\n  | None => Path.(projectRoot / \"package.json\")\n  };\n};\n\nlet reconcile = projectRoot => {\n  /* use readFileOpt to read previously computed directory path */\n\n  let operations = projectRoot |> getManifestFile |> Lib.gen(projectRoot);\n\n  switch (operations) {\n  | [] => ()\n  | _ as operations => Lib.log(operations)\n  };\n\n  print_endline(\n    Pastel.(\n      <Pastel> \"Ready for \" <Pastel color=Green> \"esy\" </Pastel> </Pastel>\n    ),\n  );\n};\n\nlet main = () => {\n  Findlib.init();\n  ignore(\n    switch (Sys.getenv_opt(\"cur__root\")) {\n    | Some(curRoot) =>\n      /**\n     * This means the user ran pesy in an esy environment.\n     * as esy pesy\n     * TODO: when run as esy b pesy, it must exit early with an error\n     */\n      reconcile(curRoot)\n    | None =>\n      /**\n     * This mean pesy is being run naked on the shell.\n     * TODO: use readFileOpt to read previously computed directory path\n     */\n      print_endline(\"Prebuilt Pesy must not be run globally.\")\n    },\n  );\n};\n\nlet main = () =>\n  try(main()) {\n  | BootstrappingError () =>\n    let message =\n      Pastel.(\n        <Pastel>\n          <Pastel> \"You have \" </Pastel>\n          <Pastel color=Red> \"not installed\" </Pastel>\n          <Pastel> \" esy\\n\" </Pastel>\n          <Pastel>\n            \"pesy works together with esy to simplify your workflow. Please install esy.\\n\"\n          </Pastel>\n          <Pastel> \"You could try\\n\\n\" </Pastel>\n          <Pastel bold=true> \"    npm install -g esy\\n\" </Pastel>\n        </Pastel>\n      );\n    fprintf(stderr, \"%s\\n\", message);\n    exit(-1);\n  | InvalidBinProperty(pkgName) =>\n    let mStr =\n      sprintf(\"Invalid value in subpackage %s's bin property\\n\", pkgName);\n    let message =\n      Pastel.(\n        <Pastel>\n          <Pastel color=Red> mStr </Pastel>\n          <Pastel>\n            \"'bin' property is usually of the form { \\\"target.exe\\\": \\\"sourceFilename.re\\\" } \"\n          </Pastel>\n        </Pastel>\n      );\n    fprintf(stderr, \"%s\\n\", message);\n    exit(-1);\n  | ShouldNotBeNull(e) =>\n    let message =\n      Pastel.(\n        <Pastel>\n          <Pastel color=Red> \"Found null value for \" </Pastel>\n          <Pastel bold=true> e </Pastel>\n          \"\\nExpected a non null value.\"\n        </Pastel>\n      );\n    fprintf(stderr, \"%s\\n\", message);\n    exit(-1);\n  | FatalError(e) =>\n    let message =\n      Pastel.(\n        <Pastel> <Pastel color=Red> \"Fatal Error \" </Pastel> e </Pastel>\n      );\n    fprintf(stderr, \"%s\\n\", message);\n    exit(-1);\n  | InvalidRootName(e) =>\n    let message =\n      Pastel.(\n        <Pastel>\n          <Pastel color=Red> \"Invalid root name!\\n\" </Pastel>\n          <Pastel> \"Expected package name of the form \" </Pastel>\n          <Pastel bold=true> \"@myscope/foo-bar\" </Pastel>\n          <Pastel> \" or \" </Pastel>\n          <Pastel bold=true> \"foo-bar\\n\" </Pastel>\n          <Pastel> \"Instead found \" </Pastel>\n          <Pastel bold=true> e </Pastel>\n        </Pastel>\n      );\n    fprintf(stderr, \"%s\\n\", message);\n    exit(-1);\n  | GenericException(e) =>\n    let message =\n      Pastel.(\n        <Pastel>\n          <Pastel color=Red> \"Error: \" </Pastel>\n          <Pastel> e </Pastel>\n        </Pastel>\n      );\n    fprintf(stderr, \"%s\\n\", message);\n    exit(-1);\n  | ImportsParserFailure(_e) =>\n    /* TODO: Be more specific about which imports */\n    let message =\n      Pastel.(\n        <Pastel>\n          <Pastel color=Red> \"Could not understand the imports\\n\" </Pastel>\n          <Pastel>\n            \"There seems to be a syntax error in one of the imports\"\n          </Pastel>\n        </Pastel>\n      );\n    fprintf(stderr, \"%s\\n\", message);\n    exit(-1);\n  | ResolveRelativePathFailure(e) =>\n    let message =\n      Pastel.(\n        <Pastel>\n          <Pastel color=Red> \"Could not find the library\\n\" </Pastel>\n          <Pastel> e </Pastel>\n        </Pastel>\n      );\n    fprintf(stderr, \"%s\\n\", message);\n    exit(-1);\n  | LocalLibraryPathNotFound(e) =>\n    let message =\n      <Pastel>\n        <Pastel>\n          <Pastel color=Red> \"Error: \" </Pastel>\n          \"Could not find the library \"\n        </Pastel>\n        <Pastel bold=true> e </Pastel>\n        <Pastel>\n          \"\\ncheck the require() in import of your package.json\"\n        </Pastel>\n      </Pastel>;\n\n    fprintf(stderr, \"%s\\n\", message);\n    exit(-1);\n  | x =>\n    /* let message = Pastel.(<Pastel color=Red> \"Failed\" </Pastel>); */\n    /* fprintf(stderr, \"%s\", message); */\n    /* exit(-1); */\n    raise(x)\n  };\n\nlet pesy_dune_file = dir => {\n  switch (Sys.getenv_opt(\"cur__root\")) {\n  | None =>\n    let message =\n      Pastel.(\n        <Pastel>\n          <Pastel color=Red>\n            \"'pesy dune-file' must be run the build environment only\\n\"\n          </Pastel>\n        </Pastel>\n      );\n    fprintf(stderr, \"%s\\n\", message);\n    exit(-1);\n  | Some(curRoot) =>\n    try(duneFile(curRoot, getManifestFile(curRoot), dir)) {\n    | LocalLibraryPathNotFound(e) =>\n      let message =\n        <Pastel>\n          <Pastel>\n            <Pastel color=Red> \"Error: \" </Pastel>\n            \"Could not find the library \"\n          </Pastel>\n          <Pastel bold=true> e </Pastel>\n          <Pastel>\n            \"\\ncheck the require() in import of your package.json\"\n          </Pastel>\n        </Pastel>;\n\n      fprintf(stderr, \"%s\\n\", message);\n      exit(-1);\n    }\n  };\n};\n\nlet pesy_build = () =>\n  ignore(\n    switch (Sys.getenv_opt(\"cur__root\")) {\n    | Some(curRoot) =>\n      let manifestFile = curRoot |> getManifestFile;\n\n      try(validateManifestFile(curRoot, manifestFile)) {\n      | LocalLibraryPathNotFound(e) =>\n        let message =\n          <Pastel>\n            <Pastel>\n              <Pastel color=Red> \"Error: \" </Pastel>\n              \"Could not find the library \"\n            </Pastel>\n            <Pastel bold=true> e </Pastel>\n            <Pastel>\n              \"\\ncheck the require() in import of your package.json\"\n            </Pastel>\n          </Pastel>;\n\n        fprintf(stderr, \"%s\\n\", message);\n        exit(-1);\n      | ForeignStubsIncorrectlyUsed =>\n        let message =\n          Pastel.(\n            <Pastel>\n              <Pastel color=Red> \"Error: \" </Pastel>\n              <Pastel>\n                <Pastel bold=true> \"foreignStubs \" </Pastel>\n                \"is introduced since dune version\"\n                <Pastel bold=true> \" 2.0\\n\" </Pastel>\n              </Pastel>\n              <Pastel>\n                \"Use \"\n                <Pastel bold=true> \"cNames\" </Pastel>\n                \" to specify stubs\"\n              </Pastel>\n            </Pastel>\n          );\n        fprintf(stderr, \"%s\\n\", message);\n        exit(-1);\n      | CNamesIncorrectlyUsed =>\n        let message =\n          Pastel.(\n            <Pastel>\n              <Pastel color=Red> \"Error: \" </Pastel>\n              <Pastel>\n                <Pastel bold=true> \"cNames \" </Pastel>\n                \"is deprecated in dune version 2.x\\n\"\n              </Pastel>\n              <Pastel>\n                \"Use \"\n                <Pastel bold=true> \"foreignStubs\" </Pastel>\n                \" to specify stubs\"\n              </Pastel>\n            </Pastel>\n          );\n        fprintf(stderr, \"%s\\n\", message);\n        exit(-1);\n      | InvalidDuneVersion(version) =>\n        let message =\n          Pastel.(\n            <Pastel>\n              <Pastel color=Red> \"Error: \" </Pastel>\n              <Pastel>\n                \"Invalid Dune version\" <Pastel bold=true> {version} </Pastel>\n              </Pastel>\n            </Pastel>\n          );\n        fprintf(stderr, \"%s\\n\", message);\n        exit(-1);\n      };\n\n      let buildTarget = build(manifestFile);\n      Unix.(\n        switch (\n          create_process(\n            \"dune\",\n            [|\"dune\", \"build\", \"-p\", buildTarget|],\n            Unix.stdin,\n            Unix.stdout,\n            Unix.stderr,\n          )\n          |> waitpid([])\n        ) {\n        | (_, WEXITED(c)) => c\n        | (_, WSIGNALED(c)) => c\n        | (_, WSTOPPED(c)) => c\n        }\n      );\n\n    | None =>\n      let message =\n        Pastel.(\n          <Pastel>\n            <Pastel color=Red>\n              \"'pesy build' must be run the build environment only\\n\"\n            </Pastel>\n            <Pastel> \"Try esy b pesy build\" </Pastel>\n          </Pastel>\n        );\n      fprintf(stderr, \"%s\\n\", message);\n      exit(-1);\n    },\n  );\n\nlet pesyLsLibs = () => {\n  let scopedIfDoubleKebabified = str =>\n    switch (Str.split(Str.regexp(\"\\\\-\\\\-\"), str)) {\n    | [pkgName] => pkgName\n    | [scope, pkgName] => \"@\" ++ scope ++ \"/\" ++ pkgName\n    | _ =>\n      raise(\n        LsLibsError(\"findlib name of the library was had more than one --\"),\n      )\n    };\n\n  Findlib.init();\n  let pkgs = Findlib.list_packages'();\n  List.iteri(\n    (i, x) => {\n      x\n      |> Str.global_replace(Str.regexp(\"\\\\.\"), \"/\")\n      |> scopedIfDoubleKebabified\n      |> sprintf(\n           \"\\x1b[2m%s──\\x1b[0m require('\\x1b[1m%s\\x1b[0m')\",\n           i < List.length(pkgs) - 1 ? \"├\" : \"└\",\n         )\n      |> print_endline\n    },\n    pkgs,\n  );\n};\nlet version = \"0.1.0-alpha.14\";\n\n\nlet build = () => {\n  let cmd = \"build\";\n  let envs: list(Cmd.Env.info) = [];\n  let exits: list(Cmd.Exit.info) = [];\n  let doc = \"build - builds your pesy managed project\";\n  let build_t = Term.(const(pesy_build) $ const());\n  let info = Cmd.info(cmd, ~envs, ~exits, ~doc, ~version);\n  Cmd.v(info, build_t);\n};\n\nlet subpkgTerm =\n  Cmdliner.Arg.(\n    required\n    & pos(0, some(string), None)\n    & info(\n        [],\n        ~doc=\"Subpackage which needs the Dune file generated\",\n        ~docv=\"SUBPACKAGE\",\n      )\n  );\n\nlet pesy_dune_file = () => {\n  let cmd = \"dune-file\";\n  let envs: list(Cmd.Env.info) = [];\n  let exits: list(Cmd.Exit.info) = [];\n  let doc = \"dune-file - prints dune file for a given dir/subpackage\";\n  let build_t = Term.(const(pesy_dune_file) $ subpkgTerm);\n  let info = Cmd.info(cmd, ~envs, ~exits, ~doc, ~version);\n  Cmd.v(info, build_t);\n};\n\nlet pesy_eject = dir => {\n  switch (Sys.getenv_opt(\"cur__root\")) {\n  | None =>\n    let message =\n      Pastel.(\n        <Pastel>\n          <Pastel color=Red>\n            \"'pesy eject' must be run the build environment only\\n\"\n          </Pastel>\n        </Pastel>\n      );\n    fprintf(stderr, \"%s\\n\", message);\n    exit(-1);\n  | Some(curRoot) => duneEject(curRoot, getManifestFile(curRoot), dir)\n  };\n};\n\nlet eject = () => {\n  let subpkgTerm =\n    Arg.(\n      required\n      & pos(0, some(string), None)\n      & info(\n          [],\n          ~doc=\"Subpackage which needs to get ejected\",\n          ~docv=\"SUBPACKAGE\",\n        )\n    );\n\n  let cmd = \"eject\";\n  let envs: list(Cmd.Env.info) = [];\n  let exits: list(Cmd.Exit.info) = [];\n  let doc = \"eject - eject dune file for a given dir/subpackage\";\n  let build_t = Term.(const(pesy_eject) $ subpkgTerm);\n  let info = Cmd.info(cmd, ~envs, ~exits, ~doc, ~version);\n  Cmd.v(info, build_t); \n};\n\nlet lsLibs = () => {\n  let cmd = \"ls-libs\";\n  let envs: list(Cmd.Env.info) = [];\n  let exits: list(Cmd.Exit.info) = [];\n  let doc = \"ls-libs - lists installed packages\";\n  let build_t = Term.(const(pesyLsLibs) $ const());\n  let info = Cmd.info(cmd, ~envs, ~exits, ~doc, ~version);\n  Cmd.v(info, build_t);\n};\n\n  let cmd = \"esy-pesy\";\n  let envs: list(Cmd.Env.info) = [];\n  let exits: list(Cmd.Exit.info) = [];\n  let doc = \"Esy Pesy - Your Esy Assistant.\";\n  let cmd_t = Term.(const(main) $ const());\nlet cmd_info = Cmd.info(cmd, ~envs, ~exits, ~doc, ~version);\n\nexit @@ Cmd.eval @@ Cmd.group(~default=cmd_t, cmd_info, [build(), pesy_dune_file(), lsLibs(), eject()]);\n"
  },
  {
    "path": "bin/dune",
    "content": "(executable\n (package pesy--esy-pesy)\n (name Pesy)\n (modules (:standard))\n (public_name pesy)\n (libraries pesy--esy-pesy.errors pesy--esy-pesy.lib pesy--esy-pesy.utils\n            cmdliner str findlib))\n"
  },
  {
    "path": "dune",
    "content": "(dirs :standard \\ node_modules tmp npm-cli)\n(vendored_dirs vendor)\n"
  },
  {
    "path": "dune-project",
    "content": "(lang dune 1.11)\n(name pesy)\n"
  },
  {
    "path": "e2e-tests/.gitignore",
    "content": "esy.lock\nnode_modules\n_esy\nlibrary/dune\nexecutable/dune\ntest/dune"
  },
  {
    "path": "e2e-tests/Rimraf.re",
    "content": "type result =\n  | Ok\n  | Failure;\n\nlet is_directory = p => {\n  let stats = Unix.lstat(p);\n  switch (stats.st_kind) {\n  | S_DIR => true\n  | S_LNK\n  | S_SOCK\n  | S_REG\n  | S_CHR\n  | S_BLK\n  | S_FIFO => false\n  };\n};\n\nlet rec del_file = p =>\n  try(\n    {\n      Unix.unlink(p);\n      Ok;\n    }\n  ) {\n  | Unix.Unix_error(Unix.ENOENT, _, _) => Ok\n  | Unix.Unix_error(Unix.EISDIR | Unix.EPERM, _, _) => Ok\n  | Unix.Unix_error(Unix.EACCES, _, _) when Sys.win32 => Ok\n  | Unix.Unix_error(Unix.EINTR, _, _) => del_file(p)\n  | Unix.Unix_error(_e, _, _) => Failure\n  };\n\nlet rec del_dir = p => {\n  let rec del_members = (dHandle, p) => {\n    switch (\n      try(Some(Unix.readdir(dHandle))) {\n      | End_of_file => None\n      }\n    ) {\n    | None => Ok\n    | Some(\"..\" | \".\") => del_members(dHandle, p)\n    | Some(f) =>\n      switch (run(Filename.concat(p, f))) {\n      | _ => del_members(dHandle, p)\n      }\n    };\n  };\n  let dh = Unix.opendir(p);\n  switch (del_members(dh, p)) {\n  | Ok =>\n    Unix.closedir(dh);\n    if (is_directory(p)) {\n      Unix.rmdir(p);\n    } else {\n      Unix.unlink(p);\n    };\n    Ok;\n  | Failure => Failure\n  };\n}\n\nand run: string => result =\n  p =>\n    try(is_directory(p) ? del_dir(p) : del_file(p)) {\n    | Unix.Unix_error(e, _, _) =>\n      switch (e) {\n      | Unix.ENOENT => Ok\n      | _ => Failure\n      }\n    | _ => Failure\n    };\n"
  },
  {
    "path": "e2e-tests/Runner.re",
    "content": "open Yojson.Basic;\nopen Unix;\nopen Utils;\nopen Bos;\nopen Printf;\n\n/** TODO: Cleanup **/\nlet () = {\n  let run = (~env=?, c, args) => {\n    let env_vars =\n      switch (env) {\n      | Some(v) => v\n      | None => Unix.environment()\n      };\n    let pid =\n      create_process_env(\n        c,\n        Array.append([|c|], args),\n        env_vars,\n        stdin,\n        stdout,\n        stderr,\n      );\n    switch (Unix.waitpid([], pid)) {\n    | (_, WEXITED(c)) => c\n    | (_, WSIGNALED(c)) => c\n    | (_, WSTOPPED(c)) => c\n    };\n  };\n  let run = (cmd, args) => {\n    let exitCode = run(cmd, args);\n    if (exitCode != 0) {\n      printf(\n        \"%s failed. Exit code relayed to the shell\\n Exiting with (%d)...\\n\",\n        cmd,\n        exitCode,\n      );\n      exit(exitCode);\n    };\n  };\n  let cwd = Sys.getcwd();\n  printf(\"Running bootstrapper test\");\n  print_newline();\n  chdir(Path.(cwd / \"npm-cli\"));\n  printf(\"Installing pesy globally...\");\n  print_newline();\n  run(makeCommand(\"yarn\"), [||]);\n  run(makeCommand(\"yarn\"), [|\"run\", \"package\"|]);\n  run(makeCommand(\"npm\"), [|\"pack\"|]);\n  run(\n    makeCommand(\"npm\"),\n    [|\"i\", \"-g\", Path.(cwd / \"npm-cli\" / \"pesy-0.5.0-dev.23.tgz\")|],\n  );\n  chdir(cwd);\n};\n\nopen Rresult.R.Infix;\nmodule Log = {\n  open Printf;\n  let log = OS.File.(writef(dash));\n  let warn = printf;\n  let error = printf;\n  let withLog = (name, f) => {\n    log(\"Running '%s'\", name)\n    >>= (\n      () => {\n        print_newline();\n        f();\n      }\n    )\n    >>= (() => log(\"Finished '%s'\", name))\n    >>= (\n      () => {\n        print_newline();\n        Ok();\n      }\n    );\n  };\n};\n\nmodule L = Log;\n\nlet withCurrentWorkingDirectory =\n    (path, f: string => result(unit, [> Rresult.R.msg] as 'a)) => {\n  let fpath = Fpath.v(path);\n  OS.Dir.current()\n  >>= (\n    cwd => {\n      L.log(\"Entering %s\\n\", path)\n      >>= (\n        () =>\n          L.withLog(\n            Printf.sprintf(\"rimraf(%s)\", path),\n            () => {\n              rimraf(path);\n              Ok();\n            },\n          )\n      )\n      >>= (() => OS.Dir.create(~path=true, fpath))\n      >>= (_ => OS.Dir.set_current(fpath))\n      >>= (() => f(path))\n      >>= (() => L.log(\"Leaving %s\\n\", path))\n      >>= (_ => OS.Dir.set_current(cwd));\n    }\n  );\n};\n\nmodule Path = {\n  let (/) = Filename.concat;\n};\nlet createTestWorkspace = workspaceFolderName => {\n  let tmpDir = Filename.get_temp_dir_name();\n  Path.(tmpDir / workspaceFolderName);\n};\n\nlet pesyBinPath = makeCommand(\"pesy\");\nlet esyBinPath = makeCommand(\"esy\");\n\nlet failIfNotZeroExit = taskName =>\n  fun\n  | `Exited(code) =>\n    if (code == 0) {\n      Ok();\n    } else {\n      Error(`Msg(sprintf(\"'%s' failed: non exit (%d)\", taskName, code)));\n    }\n  | `Signaled(code) =>\n    Error(`Msg(sprintf(\"'%s' failed: signaled (%d)\", taskName, code)));\n\nmodule Config: {\n  type a;\n  let ofString: string => result(a, [ | `Msg(string)]);\n  let ofFile: Fpath.t => result(a, [ | `Msg(string)]);\n  /** Basically a toString but results a string in a result **/\n  let serialize:\n    result(a, [ | `Msg(string)]) => result(string, [ | `Msg(string)]);\n  let createError: string => result('a, [ | `Msg(string)]);\n} = {\n  type a =\n    | FilePath(Fpath.t)\n    | Contents(string);\n\n  let ofString = x => Ok(Contents(x));\n  let ofFile = x => Ok(FilePath(x));\n  let createError = msg => Error(`Msg(msg));\n  let serialize:\n    result(a, [ | `Msg(string)]) => result(string, [ | `Msg(string)]) =\n    fun\n    | Ok(t) =>\n      switch (t) {\n      | FilePath(p) => OS.File.read(p)\n      | Contents(s) => Ok(s)\n      }\n    | Error(`Msg(msg)) => createError(msg);\n};\n\nlet mergeJsons = (j1, j2) => {\n  switch (j1, j2) {\n  | (`Assoc(kvs1), `Assoc(kvs2)) => Ok(`Assoc(kvs1 @ kvs2))\n  | _ =>\n    Error(\n      `Msg(\n        sprintf(\"Merging %s and %s failed\", to_string(j1), to_string(j2)),\n      ),\n    )\n  };\n};\n\nlet addToManifest = (jsonString, manifest) => {\n  OS.File.read(Fpath.v(manifest))\n  >>= (\n    manifestJsonString => {\n      let manifestJson =\n        try(Ok(from_string(manifestJsonString))) {\n        | _ =>\n          Error(\n            `Msg(\n              sprintf(\"Input manifest was not a valid json: %s\", jsonString),\n            ),\n          )\n        };\n      let editJson =\n        try(Ok(from_string(jsonString))) {\n        | _ =>\n          Error(\n            `Msg(\n              sprintf(\n                \"Input pesy config was not a valid json: %s\",\n                jsonString,\n              ),\n            ),\n          )\n        };\n\n      editJson\n      >>= (edit => manifestJson >>= (manifest => mergeJsons(manifest, edit)))\n      >>= (\n        mergedJson =>\n          mergedJson |> to_string |> OS.File.write(Fpath.v(manifest))\n      );\n    }\n  );\n};\n\nmodule PesyConfig = {\n  let edit = (config, manifest) => {\n    Config.serialize(config)\n    >>= (\n      jsonString => {\n        OS.File.read(Fpath.v(manifest))\n        >>= (\n          manifestJsonString =>\n            try(\n              switch (from_string(manifestJsonString)) {\n              | `Assoc(jsonKVPairs) =>\n                let pesyConfigJson =\n                  try(Ok(from_string(jsonString))) {\n                  | _ =>\n                    Error(\n                      `Msg(\n                        sprintf(\n                          \"Input pesy config was not a valid json: %s\",\n                          jsonString,\n                        ),\n                      ),\n                    )\n                  };\n                List.map(\n                  ((k, v)) =>\n                    if (k == \"buildDirs\") {\n                      pesyConfigJson >>= (json => Ok((k, json)));\n                    } else {\n                      Ok((k, v));\n                    },\n                  jsonKVPairs,\n                )\n                |> List.fold_left(\n                     (acc, v) =>\n                       switch (acc, v) {\n                       | (Ok(l), Ok(e)) => Ok([e, ...l])\n                       | (_, Error(_) as e) => e\n                       | (Error(_) as e, _) => e\n                       },\n                     Ok([]),\n                   )\n                >>= (\n                  kvs =>\n                    `Assoc(kvs)\n                    |> to_string\n                    |> OS.File.write(Fpath.v(manifest))\n                );\n              | _ => Error(`Msg(\"Manifest file was invalid json\"))\n              }\n            ) {\n            | _ => Error(`Msg(\"Manifest file could not be parsed\"))\n            }\n        );\n      }\n    );\n  };\n\n  let add = (jsonString, manifest) => {\n    OS.File.read(Fpath.v(manifest))\n    >>= (\n      manifestJsonString =>\n        try(\n          switch (from_string(manifestJsonString)) {\n          | `Assoc(jsonKVPairs) =>\n            let pesyConfigJson =\n              try(Ok(from_string(jsonString))) {\n              | _ =>\n                Error(\n                  `Msg(\n                    sprintf(\n                      \"Input pesy config was not a valid json: %s\",\n                      jsonString,\n                    ),\n                  ),\n                )\n              };\n            List.map(\n              ((k, v)) =>\n                if (k == \"buildDirs\") {\n                  pesyConfigJson\n                  >>= (json => mergeJsons(v, json))\n                  >>= (mergedConfig => Ok((k, mergedConfig)));\n                } else {\n                  Ok((k, v));\n                },\n              jsonKVPairs,\n            )\n            |> List.fold_left(\n                 (acc, v) =>\n                   switch (acc, v) {\n                   | (Ok(l), Ok(e)) => Ok([e, ...l])\n                   | (_, Error(_) as e) => e\n                   | (Error(_) as e, _) => e\n                   },\n                 Ok([]),\n               )\n            >>= (\n              kvs =>\n                `Assoc(kvs) |> to_string |> OS.File.write(Fpath.v(manifest))\n            );\n          | _ => Error(`Msg(\"Manifest file was invalid json\"))\n          }\n        ) {\n        | _ => Error(`Msg(\"Manifest file could not be parsed\"))\n        }\n    );\n  };\n};\n\nlet checkProject = (msg, ()) =>\n  L.withLog(Printf.sprintf(\"esy start (%s)\", msg), () =>\n    OS.Cmd.run_status(Cmd.(v(esyBinPath) % \"start\"))\n    >>= failIfNotZeroExit(\"esy start: \" ++ msg)\n  );\n\nlet checkPesyConfig = (msg, editPesyConfig, ()) =>\n  L.withLog(\"Editing pesy config: \" ++ msg, () => editPesyConfig())\n  >>= (\n    () =>\n      L.withLog(\"esy pesy: \" ++ msg, () =>\n        OS.Cmd.run_status(Cmd.(v(esyBinPath) % \"pesy\"))\n        >>= failIfNotZeroExit(\"esy pesy\")\n      )\n  )\n  >>= (\n    () =>\n      L.withLog(Printf.sprintf(\"esy build\"), () =>\n        OS.Cmd.run_status(Cmd.(v(esyBinPath) % \"build\"))\n        >>= failIfNotZeroExit(\"esy build\")\n      )\n  )\n  >>= checkProject(msg);\n\nlet checkBootstrapper = cwd => {\n  OS.Cmd.(run_status(Cmd.(v(pesyBinPath) % \"--fetch-cache=false\")))\n  >>= failIfNotZeroExit(\"pesy --force-cache-fetch\")\n  >>= checkProject(\"checking if bootstrapper works\")\n  >>= (\n    () =>\n      addToManifest(\n        Str.global_replace(\n          Str.regexp(\"<RESOLUTION_LINK>\"),\n          \"link:\"\n          ++ (\n            (\n              switch (Sys.getenv_opt(\"PESY_CLONE_PATH\")) {\n              | Some(path) => path\n              | None => Sys.getcwd()\n              }\n            )\n            |> Str.(global_replace(regexp(\"\\\\\"), \"/\"))\n          ),\n          {|\n{\n  \"resolutions\": {\n    \"@pesy/esy-pesy\": \"<RESOLUTION_LINK>\"\n  }\n}\n|},\n        ),\n        Path.(cwd / \"package.json\"),\n      )\n      >>= (\n        () =>\n          L.withLog(Printf.sprintf(\"esy\"), () =>\n            OS.Cmd.run_status(\n              Cmd.(v(esyBinPath) % \"--skip-repository-update\"),\n            )\n            >>= failIfNotZeroExit(\"esy\")\n          )\n      )\n  )\n  >>= checkPesyConfig(\"try old (4.x) pesy syntax\", () =>\n        PesyConfig.edit(\n          Config.ofString(\n            {|\n{\n    \"library\": {\n      \"require\": [\n        \"console.lib\",\n        \"pastel.lib\"\n      ]\n    },\n    \"bin\": {\n      \"imports\": [\n        \"Library = require('test-project/library')\"\n      ],\n      \"bin\": {\n        \"TestProjectApp\": \"TestProjectApp.re\"\n      }\n    }\n}\n       |},\n          ),\n          Path.(cwd / \"package.json\"),\n        )\n      )\n  >>= (\n    () =>\n      L.withLog(\"Editing source: Add file stubs.c\", () =>\n        OS.File.write(\n          Fpath.(v(cwd) / \"library\" / \"stubs.c\"),\n          {|\n#include <caml/mlvalues.h>\n#include <stdio.h>\n\nCAMLprim value\ncaml_foo(value a) {\n    int c_a = Int_val(a);\n    printf(\"foo received: %d\", c_a);\n    return Val_unit;\n}\n         |},\n        )\n      )\n      >>= (() => OS.File.read(Fpath.(v(cwd) / \"library\" / \"Util.re\")))\n      >>= (\n        utilRe =>\n          OS.File.write(\n            Fpath.(v(cwd) / \"library\" / \"Util.re\"),\n            utilRe ++ \"\\n\" ++ \"external foo: int => unit = \\\"caml_foo\\\";\",\n          )\n      )\n  )\n  >>= checkPesyConfig(\"add foreignStubs for stubs\", () =>\n        PesyConfig.edit(\n          Config.ofString(\n            {|\n{\n    \"library\": {\n      \"require\": [\n        \"console.lib\",\n        \"pastel.lib\"\n      ],\n      \"foreignStubs\": [{\n        \"language\": \"c\",\n        \"names\": [\"stubs\"]\n      }]\n    },\n    \"bin\": {\n      \"imports\": [\n        \"Library = require('test-project/library')\"\n      ],\n      \"bin\": {\n        \"TestProjectApp\": \"TestProjectApp.re\"\n      }\n    }\n}\n           |},\n          ),\n          Path.(cwd / \"package.json\"),\n        )\n      )\n  >>= checkPesyConfig(\"add byte mode compilation\", () =>\n        PesyConfig.edit(\n          Config.ofString(\n            {|\n{\n    \"library\": {\n      \"public\": true,\n      \"require\": [\n        \"console.lib\",\n        \"pastel.lib\"\n      ],\n      \"modes\": [\n        \"byte\",\n        \"native\"\n      ],\n      \"foreignStubs\": [{\n        \"language\": \"c\",\n        \"names\": [\"stubs\"]\n      }]\n    },\n    \"bin\": {\n      \"modes\": [\n        \"byte\",\n        \"exe\"\n      ],\n      \"imports\": [\n        \"Library = require('test-project/library')\"\n      ],\n      \"bin\": {\n        \"TestProjectApp\": \"TestProjectApp.re\"\n      }\n    }\n}\n           |},\n          ),\n          Path.(cwd / \"package.json\"),\n        )\n      )\n  >>= (\n    _ =>\n      L.withLog(\n        \"Editing source: Add file library-with-relative-imports/Index.re\", () =>\n        OS.Dir.create(\n          ~path=true,\n          Fpath.(v(cwd) / \"library-with-relative-imports\"),\n        )\n        >>= (\n          _ =>\n            OS.File.write(\n              Fpath.(v(cwd) / \"library-with-relative-imports\" / \"Index.re\"),\n              {|\nopen Foo\nlet foo = () => {\n  print_endline(\"relatively imported\" ++ Foo.Util.hello());\n};\n                                    |},\n            )\n        )\n      )\n      >>= (\n        _ =>\n          L.withLog(\n            \"Editing source: Add file executable-with-relative-imports/Main.re\",\n            () =>\n            OS.Dir.create(\n              ~path=true,\n              Fpath.(v(cwd) / \"executable-with-relative-imports\"),\n            )\n            >>= (\n              _ =>\n                OS.File.write(\n                  Fpath.(\n                    v(cwd) / \"executable-with-relative-imports\" / \"Main.re\"\n                  ),\n                  {|\nopen Foo\nFoo.foo();\n                                    |},\n                )\n            )\n          )\n      )\n  )\n  >>= checkPesyConfig(\"add relatively imported modules\", () =>\n        PesyConfig.add(\n          {|\n                           {\n                               \"library-with-relative-imports\": {\n                                 \"imports\": [\n                                   \"Foo = require('../library')\"\n                                 ]\n                               },\n                               \"executable-with-relative-imports\": {\n                                 \"imports\": [\n                                   \"Foo = require('../library-with-relative-imports')\"\n                                 ],\n                                 \"bin\": { \"TestRelativelyImportedLib\": \"Main.re\" }\n                               }\n                           }\n                       |},\n          Path.(cwd / \"package.json\"),\n        )\n      )\n  >>= (\n    () =>\n      L.withLog(Printf.sprintf(\"esy add @opam/lwt @opam/lwt_ppx\"), () =>\n        OS.Cmd.run_status(\n          Cmd.(v(esyBinPath) % \"add\" % \"@opam/lwt\" % \"@opam/lwt_ppx\"),\n        )\n        >>= failIfNotZeroExit(\"esy add @opam/lwt @opam/lwt_ppx\")\n      )\n  )\n  >>= (\n    () =>\n      L.withLog(Printf.sprintf(\"esy build\"), () =>\n        OS.Cmd.run_status(Cmd.(v(esyBinPath) % \"build\"))\n        >>= failIfNotZeroExit(\"esy build\")\n      )\n  )\n  >>= (\n    _ =>\n      L.withLog(\n        \"Editing source: Add file executable-with-lwt-preprocess/Main.re\", () =>\n        OS.Dir.create(\n          ~path=true,\n          Fpath.(v(cwd) / \"executable-with-lwt-preprocess\"),\n        )\n        >>= (\n          _ =>\n            OS.File.write(\n              Fpath.(v(cwd) / \"executable-with-lwt-preprocess\" / \"Main.re\"),\n              {|\nopen Lwt;\nConsole.log(\"Testing..\");\nlet foo = {\n  let%lwt foo = Lwt.return(\"hello world from lwt\");\n  Lwt.return(foo ++ \" blah\");\n};\nprint_endline(Lwt_main.run(foo));\n                                    |},\n            )\n        )\n      )\n  )\n  >>= checkPesyConfig(\"add preprocessor\", () =>\n        PesyConfig.add(\n          {|\n                           {\n                               \"executable-with-lwt-preprocess\": {\n                                 \"imports\": [\n                                   \"Console = require('@reason-native/console/lib')\",\n                                   \"Lwt = require('lwt')\",\n                                   \"LwtUnix = require('lwt/unix')\"\n                                 ],\n                                \"preprocess\": [\n                                    \"pps\",\n                                    \"lwt_ppx\"\n                                ],\n                                \"bin\": { \"TestLwtPreprocessor\": \"Main.re\" }\n                               }\n                           }\n                       |},\n          Path.(cwd / \"package.json\"),\n        )\n      )\n  >>= (\n    _ =>\n      L.withLog(\n        \"Editing source: Add file executable-with-raw-config/Main.re\", () =>\n        OS.Dir.create(\n          ~path=true,\n          Fpath.(v(cwd) / \"executable-with-raw-config\"),\n        )\n        >>= (\n          _ =>\n            OS.File.write(\n              Fpath.(v(cwd) / \"executable-with-raw-config\" / \"Main.re\"),\n              {|\nprint_endline(Unix.getenv(\"PATH\"));\n             |},\n            )\n        )\n      )\n  )\n  >>= checkPesyConfig(\"add raw build config\", () =>\n        PesyConfig.add(\n          {|\n                           {\n                               \"executable-with-raw-config\": {\n                                \"rawBuildConfig\": [ \"(libraries unix)\" ],\n                                \"bin\": { \"TestRawBuildConfig\": \"Main.re\" }\n                               }\n                           }\n                       |},\n          Path.(cwd / \"package.json\"),\n        )\n      )\n  >>= (\n    _ =>\n      L.withLog(\n        \"Editing source: Add file raw-footer-config-assets/plaintext.txt\", () =>\n        OS.Dir.create(\n          ~path=true,\n          Fpath.(v(cwd) / \"raw-footer-config-assets\"),\n        )\n        >>= (\n          _ =>\n            OS.File.write(\n              Fpath.(v(cwd) / \"raw-footer-config-assets\" / \"plaintext.txt\"),\n              {|\nSome random text here.\n             |},\n            )\n        )\n      )\n  )\n  >>= checkPesyConfig(\"add raw build config footer\", () =>\n        PesyConfig.add(\n          {|\n                           {\n                              \"raw-footer-config-assets\" : {\n                                \"namespace\": \"RawAssets\",\n                                \"name\": \"test-project.assets\",\n                                \"rawBuildConfigFooter\": [ \"(install (section share_root) (files (plaintext.txt as asset.txt)))\" ]\n                               }\n                           }\n                       |},\n          Path.(cwd / \"package.json\"),\n        )\n      );\n};\n\nswitch (\n  withCurrentWorkingDirectory(\n    createTestWorkspace(\"test-project\"),\n    checkBootstrapper,\n  )\n) {\n| Ok () => ()\n| Error(`Msg(msg)) =>\n  print_endline(\"Runner failed with: \" ++ msg);\n  exit(-1);\n};\n"
  },
  {
    "path": "e2e-tests/Utils.re",
    "content": "open Printf;\n\nmodule Path = {\n  let (/) = Filename.concat;\n};\n\nlet makeCommand = cmd =>\n  Sys.unix\n    ? cmd\n    : {\n      let pathVars =\n        Array.to_list(Unix.environment())\n        |> List.map(e =>\n             switch (Str.split(Str.regexp(\"=\"), e)) {\n             | [k, v, ..._rest] => Some((k, v))\n             | _ => None\n             }\n           )\n        |> List.filter(\n             fun\n             | None => false\n             | _ => true,\n           )\n        |> List.filter(e =>\n             switch (e) {\n             | Some((k, _)) => String.lowercase_ascii(k) == \"path\"\n             | _ => false\n             }\n           )\n        |> List.map(\n             fun\n             | Some(x) => x\n             | None => (\"\", \"\") /* Why not filter_map? */\n           );\n\n      let v =\n        List.fold_right(\n          (e, acc) => {\n            let (_, v) = e;\n            acc ++ (Sys.unix ? \":\" : \";\") ++ v;\n          },\n          pathVars,\n          \"\",\n        );\n\n      let paths = Str.split(Str.regexp(Sys.unix ? \":\" : \";\"), v);\n      let npmPaths =\n        List.filter(\n          path =>\n            Sys.file_exists(Filename.concat(path, sprintf(\"%s.cmd\", cmd))),\n          paths,\n        );\n      switch (npmPaths) {\n      | [] =>\n        fprintf(stderr, \"No %s bin path found\", cmd);\n        exit(-1);\n      | [h, ..._] => Filename.concat(h, sprintf(\"%s.cmd\", cmd))\n      };\n    };\n\nlet rimraf = p => ignore(Rimraf.run(p));\nlet esyCommand = makeCommand(\"esy\");\n\nlet buffer_size = 8192;\nlet buffer = Bytes.create(buffer_size);\n\nlet runCommandWithEnv = (command, args) => {\n  let attach =\n    Unix.create_process_env(\n      command,\n      Array.append([|command|], args),\n      Unix.environment(),\n    );\n  let pid = attach(Unix.stdin, Unix.stdout, Unix.stderr);\n  switch (Unix.waitpid([], pid)) {\n  | (_, WEXITED(c)) => c\n  | (_, WSIGNALED(c)) => c\n  | (_, WSTOPPED(c)) => c\n  };\n};\n\nlet mkdir = (~perms=?, p) =>\n  switch (perms) {\n  | Some(x) => Unix.mkdir(p, x)\n  | None => Unix.mkdir(p, 0o755)\n  };\n\nlet file_copy = (input_name, output_name) => {\n  open Unix;\n  let fd_in = openfile(input_name, [O_RDONLY], 0);\n  let fd_out = openfile(output_name, [O_WRONLY, O_CREAT, O_TRUNC], 438);\n  let rec copy_loop = () =>\n    switch (read(fd_in, buffer, 0, buffer_size)) {\n    | 0 => ()\n    | r =>\n      ignore(write(fd_out, buffer, 0, r));\n      copy_loop();\n    };\n\n  copy_loop();\n  close(fd_in);\n  close(fd_out);\n};\n\nmodule IO = {\n  let write = (file, str) => {\n    let oc = open_out(file);\n    fprintf(oc, \"%s\", str);\n    close_out(oc);\n  };\n\n  let read = file => {\n    let buf = ref(\"\");\n    let breakOut = ref(false);\n    let ic = open_in(file);\n    while (! breakOut^) {\n      let line =\n        try(input_line(ic)) {\n        | End_of_file =>\n          breakOut := true;\n          \"\";\n        };\n      buf := buf^ ++ \"\\n\" ++ line;\n    };\n    buf^;\n  };\n};\n\nlet contains = (s1, s2) => {\n  let re = Str.regexp_string(s2);\n  try(Str.search_forward(re, s1, 0)) {\n  | Not_found => (-1)\n  };\n};\n\nlet rec fetch_files = (f, p) => {\n  let rec walk = (dh, acc) => {\n    let read_dir = dh =>\n      try(Some(Unix.readdir(dh))) {\n      | End_of_file => None\n      };\n\n    switch (read_dir(dh)) {\n    | Some(\"..\")\n    | Some(\".\") => walk(dh, acc)\n    | Some(entry) =>\n      walk(dh, [Path.(p / entry), ...acc])\n      @ fetch_files(f, Path.(p / entry))\n    | None =>\n      Unix.closedir(dh);\n      acc;\n    };\n  };\n\n  if (try(Sys.is_directory(p)) {\n      | _ => false\n      }) {\n    let dh = Unix.opendir(p);\n    List.filter(f, walk(dh, []));\n  } else {\n    [];\n  };\n};\n"
  },
  {
    "path": "e2e-tests/dune",
    "content": "(executable\n (name Runner)\n (package PesyE2E)\n (public_name Runner.exe)\n (libraries unix bos yojson str))\n\n"
  },
  {
    "path": "e2e-tests/pending-tests.re",
    "content": "/*         OS.Dir.create(~path=true, Fpath.(v(cwd) / \"virtual-foo\")) */ /*         >>= ( */ /*       L.withLog(\"Editing source: Add file virtual-foo/VirtualFoo.rei\", () => */ /*     () => */ /*   >>= ( */\n                                                                    /*           _ => */\n                                                                    /*             OS.File.write( */\n                                                                    /*               Fpath.(v(cwd) / \"virtual-foo\" / \"VirtualFoo.rei\"), */\n                                                                    /*               {| */\n                                                                                     /* let thisWillBeImplementedLater: unit => unit; */\n                                                                                     /* |}, */\n                                                                    /*             ) */\n                                                                    /*         ) */\n                                                                    /*       ) */\n                                                                    /*       >>= ( */\n                                                                    /*         () => */\n                                                                    /*           L.withLog( */\n                                                                    /*             \"Editing source: Add file implementation-bar/VirtualFoo.re\", () => */\n                                                                    /*             OS.Dir.create(~path=true, Fpath.(v(cwd) / \"implementation-bar\")) */\n                                                                    /*             >>= ( */\n                                                                    /*               _ => */\n                                                                    /*                 OS.File.write( */\n                                                                    /*                   Fpath.(v(cwd) / \"implementation-bar\" / \"VirtualFoo.re\"), */\n                                                                    /*                   {| */\n                                                                                         /* let thisWillBeImplementedLater = () => { */\n                                                                                         /*   print_endline(\"From implementation bar...\"); */\n                                                                                         /* }; */\n                                                                                         /* |}, */\n                                                                    /*                 ) */\n                                                                    /*             ) */\n                                                                    /*           ) */\n                                                                    /*           >>= ( */\n                                                                    /*             _ => */\n                                                                    /*               L.withLog( */\n                                                                    /*                 \"Editing source: Add file implementation-baz/VirtualFoo.re\", () => */\n                                                                    /*                 OS.Dir.create( */\n                                                                    /*                   ~path=true, */\n                                                                    /*                   Fpath.(v(cwd) / \"implementation-baz\"), */\n                                                                    /*                 ) */\n                                                                    /*                 >>= ( */\n                                                                    /*                   _ => */\n                                                                    /*                     OS.File.write( */\n                                                                    /*                       Fpath.(v(cwd) / \"implementation-baz\" / \"VirtualFoo.re\"), */\n                                                                    /*                       {| */\n                                                                                             /* let thisWillBeImplementedLater = () => { */\n                                                                                             /*   print_endline(\"From implementation baz...\"); */\n                                                                                             /* }; */\n                                                                                             /* |}, */\n                                                                    /*                     ) */\n                                                                    /*                 ) */\n                                                                    /*               ) */\n                                                                    /*               >>= ( */\n                                                                    /*                 _ => */\n                                                                    /*                   L.withLog( */\n                                                                    /*                     \"Editing source: Add file executable-virutal-bar/PesyVirtualApp.re\", */\n                                                                    /*                     () => */\n                                                                    /*                     OS.Dir.create( */\n                                                                    /*                       ~path=true, */\n                                                                    /*                       Fpath.(v(cwd) / \"executable-virtual-bar\"), */\n                                                                    /*                     ) */\n                                                                    /*                     >>= ( */\n                                                                    /*                       _ => */\n                                                                    /*                         OS.File.write( */\n                                                                    /*                           Fpath.( */\n                                                                    /*                             v(cwd) */\n                                                                    /*                             / \"executable-virtual-bar\" */\n                                                                    /*                             / \"PesyVirtualApp.re\" */\n                                                                    /*                           ), */\n                                                                    /*                           {| */\n                                                                                                 /* Bar.thisWillBeImplementedLater(); */\n                                                                                                 /* |}, */\n                                                                    /*                         ) */\n                                                                    /*                     ) */\n                                                                    /*                   ) */\n                                                                    /*               ) */\n                                                                    /*               >>= ( */\n                                                                    /*                 _ => */\n                                                                    /*                   L.withLog( */\n                                                                    /*                     \"Editing source: Add file executable-virtual-baz/PesyVirtualApp.re\", */\n                                                                    /*                     () => */\n                                                                    /*                     OS.Dir.create( */\n                                                                    /*                       ~path=true, */\n                                                                    /*                       Fpath.(v(cwd) / \"executable-virtual-baz\"), */\n                                                                    /*                     ) */\n                                                                    /*                     >>= ( */\n                                                                    /*                       _ => */\n                                                                    /*                         OS.File.write( */\n                                                                    /*                           Fpath.( */\n                                                                    /*                             v(cwd) */\n                                                                    /*                             / \"executable-virtual-baz\" */\n                                                                    /*                             / \"PesyVirtualApp.re\" */\n                                                                    /*                           ), */\n                                                                    /*                           {| */\n                                                                                                 /* Baz.thisWillBeImplementedLater(); */\n                                                                                                 /* |}, */\n                                                                    /*                         ) */\n                                                                    /*                     ) */\n                                                                    /*                   ) */\n                                                                    /*               ) */\n                                                                    /*               >>= checkPesyConfig(\"add virtual modules\", () => */\n                                                                    /*                     PesyConfig.add( */\n                                                                    /*                       {| */\n                                                                                             /* { */\n                                                                                             /*     \"virtual-foo\": { */\n                                                                                             /*       \"virtualModules\": [ */\n                                                                                             /*         \"VirtualFoo\" */\n                                                                                             /*       ] */\n                                                                                             /*     }, */\n                                                                                             /*     \"implementation-bar\": { */\n                                                                                             /*       \"implements\": [ */\n                                                                                             /*         \"test-project/virtual-foo\" */\n                                                                                             /*       ] */\n                                                                                             /*     }, */\n                                                                                             /*     \"implementation-baz\": { */\n                                                                                             /*       \"implements\": [ */\n                                                                                             /*         \"test-project/virtual-foo\" */\n                                                                                             /*       ] */\n                                                                                             /*     }, */\n                                                                                             /*     \"executable-virtual-bar\": { */\n                                                                                             /*       \"imports\": [ */\n                                                                                             /*         \"Bar = require('test-project/implementation-bar')\" */\n                                                                                             /*       ], */\n                                                                                             /*       \"bin\": { */\n                                                                                             /*         \"PesyVirtualAppBar.exe\": \"PesyVirtualApp.re\" */\n                                                                                             /*       } */\n                                                                                             /*     }, */\n                                                                                             /*     \"executable-virtual-baz\": { */\n                                                                                             /*       \"imports\": [ */\n                                                                                             /*         \"Baz = require('test-project/implementation-baz')\" */\n                                                                                             /*       ], */\n                                                                                             /*       \"bin\": { */\n                                                                                             /*         \"PesyVirtualAppBaz.exe\": \"PesyVirtualApp.re\" */\n                                                                                             /*       } */\n                                                                                             /*     } */\n                                                                                             /* } */\n                                                                                             /* |}, */\n                                                                    /*                       Path.(cwd / \"package.json\"), */\n                                                                    /*                     ) */\n                                                                    /*                   ) */\n                                                                    /*           ) */\n                                                                    /*       ) */\n                                                                    /*   ); */\n"
  },
  {
    "path": "errors/Errors.re",
    "content": "type validationError =\n  | StaleDuneFile(string)\n  | StaleOpamFile((string, string));\n\nexception ShouldNotBeNull(string);\nexception FatalError(string);\nexception ShouldNotBeHere(unit);\nexception InvalidRootName(string);\nexception GenericException(string);\nexception ResolveRelativePathFailure(string);\nexception InvalidBinProperty(string);\nexception BuildValidationFailures(list(validationError));\nexception ImportsParserFailure(unit);\nexception LocalLibraryPathNotFound(string);\nexception ForeignStubsIncorrectlyUsed;\nexception CNamesIncorrectlyUsed;\nexception InvalidDuneVersion(string);\n"
  },
  {
    "path": "errors/dune",
    "content": "(library (name PesyEsyPesyErrors) (public_name pesy--esy-pesy.errors)\n    (modules (:standard)))\n"
  },
  {
    "path": "lib/Common.re",
    "content": "exception InvalidSubDirs(string);\ntype include_subdirs =\n  | No\n  | Unqualified;\n\ntype t = {\n  path: string,\n  require: list(string),\n  flags: option(list(string)), /* TODO: Use a variant instead since flags only accept a set of values and not any list of strings */\n  ocamlcFlags: option(list(string)),\n  ocamloptFlags: option(list(string)),\n  jsooFlags: option(list(string)),\n  preprocess: option(list(string)),\n  includeSubdirs: option(include_subdirs),\n  rawBuildConfig: option(list(string)),\n  rawBuildConfigFooter: option(list(string)),\n  pesyModules: PesyModule.t,\n};\nlet create =\n    (\n      path,\n      require,\n      flags,\n      ocamlcFlags,\n      ocamloptFlags,\n      jsooFlags,\n      preprocess,\n      includeSubdirs,\n      rawBuildConfig,\n      rawBuildConfigFooter,\n      pesyModules,\n    ) => {\n  let includeSubDirsSafe =\n    switch (includeSubdirs) {\n    | Some(x) =>\n      switch (x) {\n      | \"no\" => Some(No)\n      | \"unqualified\" => Some(Unqualified)\n      | _ => raise(InvalidSubDirs(x))\n      }\n    | None => None\n    };\n  {\n    path,\n    require,\n    flags,\n    ocamlcFlags,\n    ocamloptFlags,\n    jsooFlags,\n    preprocess,\n    includeSubdirs: includeSubDirsSafe,\n    rawBuildConfig,\n    rawBuildConfigFooter,\n    pesyModules,\n  };\n};\nlet toDuneStanzas = c => {\n  let {\n    require,\n    flags,\n    ocamlcFlags,\n    ocamloptFlags,\n    jsooFlags,\n    preprocess,\n    includeSubdirs,\n    rawBuildConfig,\n    rawBuildConfigFooter,\n    pesyModules,\n    _,\n  } = c;\n\n  (\n    /* libraries: */\n    switch (require) {\n    | [] =>\n      switch (pesyModules) {\n      | Some(x) =>\n        Some(\n          Stanza.createExpression([\n            Stanza.createAtom(\"libraries\"),\n            Stanza.createAtom(PesyModule.getNamespace(x)),\n          ]),\n        )\n      | None => None\n      }\n    | libs =>\n      Some(\n        Stanza.createExpression([\n          Stanza.createAtom(\"libraries\"),\n          ...List.map(\n               r => Stanza.createAtom(r),\n               libs\n               @ (\n                 switch (pesyModules) {\n                 | Some(x) => [PesyModule.getNamespace(x)]\n                 | None => []\n                 }\n               ),\n             ),\n        ]),\n      )\n    },\n    /* flags: */\n    switch (flags) {\n    | None =>\n      switch (pesyModules) {\n      | Some(x) =>\n        Some(\n          Stanza.createExpression([\n            Stanza.createAtom(\"flags\"),\n            Stanza.createAtom(\"-open\"),\n            Stanza.createAtom(PesyModule.getNamespace(x)),\n          ]),\n        )\n      | None => None\n      }\n    | Some(l) =>\n      Some(\n        Stanza.createExpression([\n          Stanza.createAtom(\"flags\"),\n          ...List.map(\n               f => Stanza.createAtom(f),\n               l\n               @ (\n                 switch (pesyModules) {\n                 | Some(x) => [\"-open\", PesyModule.getNamespace(x)]\n                 | None => []\n                 }\n               ),\n             ),\n        ]),\n      )\n    },\n    /* ocamlcFlags */\n    switch (ocamlcFlags) {\n    | None => None\n    | Some(l) =>\n      Some(\n        Stanza.createExpression([\n          Stanza.createAtom(\"ocamlc_flags\"),\n          ...List.map(f => Stanza.createAtom(f), l),\n        ]),\n      )\n    },\n    /* ocamloptFlags */\n    switch (ocamloptFlags) {\n    | None => None\n    | Some(l) =>\n      Some(\n        Stanza.createExpression([\n          Stanza.createAtom(\"ocamlopt_flags\"),\n          ...List.map(f => Stanza.createAtom(f), l),\n        ]),\n      )\n    },\n    /* jsooFlags */\n    switch (jsooFlags) {\n    | None => None\n    | Some(l) =>\n      Some(\n        Stanza.createExpression([\n          Stanza.createAtom(\"js_of_ocaml\"),\n          ...List.map(f => Stanza.createAtom(f), l),\n        ]),\n      )\n    },\n    /* preprocess */\n    switch (preprocess) {\n    | None => None\n    | Some(l) =>\n      Some(\n        Stanza.createExpression([\n          Stanza.createAtom(\"preprocess\"),\n          Stanza.createExpression(List.map(f => Stanza.createAtom(f), l)),\n        ]),\n      )\n    },\n    /* includeSubdirs */\n    switch (includeSubdirs) {\n    | None => None\n    | Some(v) =>\n      Some(\n        Stanza.createExpression([\n          Stanza.createAtom(\"include_subdirs\"),\n          Stanza.createAtom(\n            switch (v) {\n            | No => \"no\"\n            | Unqualified => \"unqualified\"\n            },\n          ),\n        ]),\n      )\n    },\n    /* rawBuildConfig */\n    switch (rawBuildConfig) {\n    | None => None\n    | Some(l) => Some(l |> List.map(Stanza.ofString))\n    },\n    /* rawBuildConfig */\n    switch (rawBuildConfigFooter) {\n    | None => None\n    | Some(l) => Some(l |> List.map(Stanza.ofString))\n    },\n    /* pesy modules */\n    PesyModule.generateLibraryStanza(preprocess, pesyModules),\n    PesyModule.generateAliasModuleStanza(pesyModules),\n  );\n};\n\nlet getPath = c => c.path;\nlet getPesyModules = c => c.pesyModules;\n"
  },
  {
    "path": "lib/Common.rei",
    "content": "type include_subdirs;\ntype t;\nlet toDuneStanzas:\n  t =>\n  (\n    option(Stanza.t),\n    option(Stanza.t),\n    option(Stanza.t),\n    option(Stanza.t),\n    option(Stanza.t),\n    option(Stanza.t),\n    option(Stanza.t),\n    option(list(Stanza.t)),\n    option(list(Stanza.t)),\n    option(Stanza.t),\n    option(Stanza.t),\n  );\nlet getPath: t => string;\nlet getPesyModules: t => PesyModule.t;\nlet create:\n  (\n    /* path */ string,\n    /* require */ list(string),\n    /* flags */ option(list(string)),\n    /* Ocamlc flags */ option(list(string)),\n    /* Ocamlopt flags */ option(list(string)),\n    /* jsoo flags */ option(list(string)),\n    /* preprocess */ option(list(string)),\n    /* include subdirs */ option(string),\n    /* raw config */ option(list(string)),\n    /* raw config footer */ option(list(string)),\n    /* pesy modules */ PesyModule.t\n  ) =>\n  t;\n"
  },
  {
    "path": "lib/DuneFile.re",
    "content": "module Utils = PesyEsyPesyUtils.Utils;\nopen Sexplib.Sexp;\nopen Printf;\nexception InvalidDuneFile(unit);\nlet toString = (stanzas: list(Stanza.t)) =>\n  List.fold_right(\n    (s, acc) =>\n      Str.global_replace(\n        Str.regexp(\"\\\"\\\\\\\\\\\\\\\\\\\"\"),\n        \"\\\\\\\\\",\n        to_string_hum(~indent=4, Stanza.toSexp(s)),\n      )\n      ++ \"\\n\"\n      ++ acc,\n    stanzas,\n    \"\",\n  );\n\nlet ofFile = n => {\n  open Sexplib;\n  let contentStr =\n    try (Utils.readFile(n)) {\n    | _ => \"\"\n    };\n  Sexp.(\n    switch (Sexp.of_string(sprintf(\"(%s)\", contentStr))) {\n    | List(l) => List.map(Stanza.ofSexp, l)\n    | _ => raise(InvalidDuneFile())\n    }\n  );\n};\n"
  },
  {
    "path": "lib/DuneFile.rei",
    "content": "let toString: list(Stanza.t) => string;\nlet ofFile: string => list(Stanza.t);\n"
  },
  {
    "path": "lib/DuneProject.re",
    "content": "open Sexplib.Sexp;\n\nexception InvalidDuneProjectFile;\nlet findLangVersion =\n  fun\n  | [x, ..._] =>\n    switch (Stanza.toSexp(x)) {\n    | List([Atom(\"lang\"), Atom(\"dune\"), Atom(version)]) => version\n    | _ => raise(InvalidDuneProjectFile)\n    }\n  | _ => raise(InvalidDuneProjectFile);"
  },
  {
    "path": "lib/DuneProject.rei",
    "content": "let findLangVersion: list(Stanza.t) => string;"
  },
  {
    "path": "lib/EsyCommand.re",
    "content": "open Printf;\n\nlet esy_command = \"esy\";\n\n/*  @esy-ocaml/foo-package -> foo-package */\nlet resolveEsyCommand = () =>\n  Sys.unix\n    ? try(\n        Sys.command(sprintf(\"%s --version &>/dev/null\", esy_command)) == 0\n          ? Some(esy_command) : None\n      ) {\n      | _ => None\n      }\n    : {\n      let pathVars =\n        Array.to_list(Unix.environment())\n        |> List.map(e =>\n             switch (Str.split(Str.regexp(\"=\"), e)) {\n             | [k, v, ..._rest] => Some((k, v))\n             | _ => None\n             }\n           )\n        |> List.filter(\n             fun\n             | None => false\n             | _ => true,\n           )\n        |> List.filter(e =>\n             switch (e) {\n             | Some((k, _)) => String.lowercase_ascii(k) == \"path\"\n             | _ => false\n             }\n           )\n        |> List.map(\n             fun\n             | Some(x) => x\n             | None => (\"\", \"\") /* Why not filter_map? */\n           );\n\n      let paths =\n        Str.split(\n          Str.regexp(Sys.unix ? \": \" : \";\"),\n          String.concat(\n            Sys.unix ? \": \" : \";\",\n            List.map(\n              e => {\n                let (_, v) = e;\n                v;\n              },\n              pathVars,\n            ),\n          ),\n        );\n\n      /* Unix.putenv(\"PATH\", v); /\\* This didn't work! *\\/ */\n\n      let npmPaths =\n        List.filter(\n          path => Sys.file_exists(Filename.concat(path, \"esy.cmd\")),\n          paths,\n        );\n      switch (npmPaths) {\n      | [] => None\n      | [h, ..._] => Some(Filename.concat(h, \"esy.cmd\"))\n      };\n    };\n"
  },
  {
    "path": "lib/Executable.re",
    "content": "module Utils = PesyEsyPesyUtils.Utils;\nopen Utils;\n\nmodule Mode = {\n  exception InvalidCompilationMode(unit);\n  exception InvalidBinaryKind(unit);\n  module Compilation: {\n    type t;\n    let toString: t => string;\n    let ofString: string => t;\n  } = {\n    type t =\n      | Byte\n      | Native\n      | Best;\n\n    let toString =\n      fun\n      | Byte => \"byte\"\n      | Native => \"native\"\n      | Best => \"best\";\n\n    let ofString =\n      fun\n      | \"byte\" => Byte\n      | \"native\" => Native\n      | \"best\" => Best\n      | _ => raise(InvalidCompilationMode());\n  };\n\n  module BinaryKind: {\n    type t =\n      | C\n      | Exe\n      | Object\n      | Shared_object\n      | JS\n      | Plugin;\n    let toString: t => string;\n    let ofString: string => t;\n  } = {\n    type t =\n      | C\n      | Exe\n      | Object\n      | Shared_object\n      | JS\n      | Plugin;\n\n    let toString =\n      fun\n      | C => \"c\"\n      | Exe => \"exe\"\n      | Object => \"object\"\n      | Shared_object => \"shared_object\"\n      | JS => \"js\"\n      | Plugin => \"plugin\";\n\n    let ofString =\n      fun\n      | \"c\" => C\n      | \"exe\" => Exe\n      | \"object\" => Object\n      | \"shared_object\" => Shared_object\n      | \"js\" => JS\n      | \"plugin\" => Plugin\n      | _ => raise(InvalidBinaryKind());\n  };\n\n  type t =\n    | Atom(BinaryKind.t)\n    | Tuple(Compilation.t, BinaryKind.t)\n    | Array(list(t));\n  exception InvalidExecutableMode(string);\n  let rec ofFieldTypes = parts =>\n    switch (parts) {\n    | FieldTypes.String(bs) => {\n        let parts = bs\n        |> Str.split(Str.regexp(\"[ \\n\\r\\x0c\\t]+\"))\n        if (List.length(parts) > 1) {\n          Array(parts |> List.map(b => Atom(BinaryKind.ofString(b))))\n        } else {\n          Atom(BinaryKind.ofString(List.hd(parts)))\n        }\n      }\n    | FieldTypes.List([FieldTypes.String(c), FieldTypes.String(b)]) =>\n      try(Tuple(Compilation.ofString(c), BinaryKind.ofString(b))) {\n      | InvalidCompilationMode () =>\n        Array([\n          Atom(BinaryKind.ofString(c)),\n          Atom(BinaryKind.ofString(b)),\n        ])\n      | _ =>\n        raise(\n          InvalidExecutableMode(\n            \"Invalid executable mode: expected of the form [(<compilation mode>, <binary_kind>)'s | <binary_kind>'s] or <binary_kind>'s\",\n          ),\n        )\n      }\n    | FieldTypes.List(xs) => Array(List.map(ofFieldTypes, xs))\n    | _ =>\n      raise(\n        InvalidExecutableMode(\n          \"Invalid executable mode: expected of the form [(<compilation mode>, <binary_kind>)'s | <binary_kind>'s] or <binary_kind>'s\",\n        ),\n      )\n    };\n  let rec toStanzas = m =>\n    switch (m) {\n    | Array(x) => List.fold_left((acc, s) => acc @ toStanzas(s), [], x)\n    | Tuple(c, b) => [\n        Stanza.createExpression([\n          Stanza.createAtom(Compilation.toString(c)),\n          Stanza.createAtom(BinaryKind.toString(b)),\n        ]),\n      ]\n    | Atom(b) => [Stanza.createAtom(BinaryKind.toString(b))]\n    };\n};\ntype t = {\n  binKVs: list((string, string)),\n  modes: option(Mode.t),\n};\nlet create = (binKVs, modes) => {binKVs, modes};\nlet toDuneStanza = (common: Common.t, e) => {\n  /* let {name: pkgName, require, path} = common; */\n  let {binKVs, modes: modesP} = e;\n  let (\n    libraries,\n    flags,\n    ocamlcFlags,\n    ocamloptFlags,\n    jsooFlags,\n    preprocess,\n    includeSubdirs,\n    rawBuildConfig,\n    rawBuildConfigFooter,\n    pesyModulesLibrary,\n    pesyModulesAliasModuleGen,\n  ) =\n    Common.toDuneStanzas(common);\n  let path = Common.getPath(common);\n  let (mains, publicNames) = List.fold_right((tuple, acc) => {\n    let (main, publicName) = tuple;\n    let (mains, publicNames) = acc;\n    (mains @ [main], publicNames @ [publicName]);\n    }, binKVs,([], []));\n  let name = Stanza.createExpression([Stanza.createAtom(\"names\"), ...(mains |> List.map(x => x|> moduleNameOf |> Stanza.createAtom))])\n  let public_name = Stanza.createExpression([Stanza.createAtom(\"public_names\"), ...(publicNames  |> List.map(Stanza.createAtom))]);\n\n  let modules =\n    Stanza.createExpression([\n      Stanza.createAtom(\"modules\"),\n      Stanza.createExpression(\n        [Stanza.createAtom(\":standard\")]\n        @ (\n          switch (Common.getPesyModules(common)) {\n          | Some(x) => [\n              Stanza.createAtom(\"\\\\\"),\n              Stanza.createAtom(PesyModule.getNamespace(x)),\n            ]\n          | None => []\n          }\n        ),\n      ),\n    ]);\n  /* let public_name = */\n  /*   Stanza.create(\"public_name\", Stanza.createAtom(pkgName)); */\n\n  /* let libraries = */\n  /*   switch (require) { */\n  /*   | [] => None */\n  /*   | libs => */\n  /*     Some( */\n  /*       Stanza.createExpression([ */\n  /*         Stanza.createAtom(\"libraries\"), */\n  /*         ...List.map(r => Stanza.createAtom(r), libs), */\n  /*       ]), */\n  /*     ) */\n  /*   }; */\n\n  let modesD =\n    switch (modesP) {\n    | None => None\n    | Some(m) =>\n      Some(\n        Stanza.createExpression([\n          Stanza.createAtom(\"modes\"),\n          ...Mode.toStanzas(m),\n        ]),\n      )\n    };\n\n  let mandatoryExpressions = switch(modesP) {\n    | Some(Mode.Atom(Mode.BinaryKind.JS)) => [name, modules]\n    | _ => [name, modules, public_name]\n  }\n\n  let optionalExpressions = [\n    libraries,\n    modesD,\n    flags,\n    ocamlcFlags,\n    ocamloptFlags,\n    jsooFlags,\n    preprocess,\n  ];\n\n  let rawBuildConfig =\n    switch (rawBuildConfig) {\n    | Some(l) => l\n    | None => []\n    };\n\n  let rawBuildConfigFooter =\n    switch (rawBuildConfigFooter) {\n    | Some(l) => l\n    | None => []\n    };\n\n  let optionalRootStanzas =\n    rawBuildConfigFooter\n    @ (\n      switch (pesyModulesLibrary) {\n      | Some(s) => [s]\n      | None => []\n      }\n    )\n    @ (\n      switch (pesyModulesAliasModuleGen) {\n      | Some(s) => [s]\n      | None => []\n      }\n    )\n    @ (\n      switch (includeSubdirs) {\n      | Some(s) => [s]\n      | None => []\n      }\n    );\n\n  let executable =\n    Stanza.createExpression([\n      Stanza.createAtom(\"executables\"),\n      ...mandatoryExpressions\n         @ filterNone(optionalExpressions)\n         @ rawBuildConfig,\n    ]);\n\n  (path, [executable, ...optionalRootStanzas]);\n};\n"
  },
  {
    "path": "lib/Executable.rei",
    "content": "module Utils = PesyEsyPesyUtils.Utils;\nopen Utils;\n\ntype t;\nmodule Mode: {\n  type t;\n  let ofFieldTypes: FieldTypes.t => t;\n  let toStanzas: t => list(Stanza.t);\n};\nlet create: (list((string, string)), option(Mode.t)) => t;\nlet toDuneStanza: (Common.t, t) => (string, list(Stanza.t));\n"
  },
  {
    "path": "lib/ImportsParser.re",
    "content": "let parse = str => {\n  let lexbuf = Lexing.from_string(str);\n  Parser.main(Lexer.read, lexbuf);\n};\n"
  },
  {
    "path": "lib/Lexer.mll",
    "content": "(* File lexer.mll *)\n{\n  open Parser        (* The type token is defined in parser.mli *)\n}\nrule read = parse\n[' ' '\\t']   { read lexbuf }     (* skip blanks *)\n| ['(']      { LPAREN }\n| [')']      { RPAREN }\n| [';']      { SEMICOLON }\n| ['=']      { ASSN }\n| \"require\"  { REQUIRE }\n| ['\\'']      { SQUOTE }\n| ['A' - 'Z' ] [ 'A' - 'Z' 'a' - 'z' '_' '\\'' '0'-'9'] * as lxm { MODULE_NAME(lxm)  }\n| ['@'] ? ['A'-'Z' 'a'-'z' '.' '/' '-' '0'-'9' '_'] + as lxm { MODULE_PATH(lxm)  }\n| ['\\n']     {EOL}\n| eof      {EOF}\n"
  },
  {
    "path": "lib/Lib.re",
    "content": "module Mode = Mode;\nmodule EsyCommand = EsyCommand;\n\nmodule Utils = PesyEsyPesyUtils.Utils;\nopen Utils;\nopen NoLwt;\n\ntype fileOperation =\n  | UPDATE(string)\n  | CREATE(string);\n\nlet gen = (projectPath, pkgPath) => {\n  let conf = PesyConf.get(pkgPath);\n  let pkgs = PesyConf.pkgs(conf);\n  let rootName = PesyConf.rootName(conf);\n\n  let rootNameOpamFile = rootName ++ \".opam\";\n\n  let operations = ref([]);\n  pkgs\n  |> List.iter(((subpackage, _)) => {\n       mkdirp(Path.(projectPath / subpackage));\n       let duneFilePath = Path.(projectPath / subpackage / \"dune\");\n       write(\n         duneFilePath,\n         {|(* -*- tuareg -*- *)\n\nopen Jbuild_plugin.V1\n\nlet () =\n  run_and_read_lines (\"pesy dune-file \" ^ Sys.getcwd ())\n  |> String.concat \"\\n\"\n  |> send\n|},\n       );\n       operations :=\n         [\n           CREATE(\n             Str.global_replace(\n               Str.regexp(Path.(projectPath / \"\")),\n               \"\",\n               duneFilePath,\n             ),\n           ),\n           ...operations^,\n         ];\n     });\n\n  let foundAnOpamFile = ref(false);\n  let dirForEachEntry = (f, dirname) => {\n    let d = Unix.opendir(dirname);\n    try(\n      while (true) {\n        f(Unix.readdir(d));\n      }\n    ) {\n    | End_of_file => Unix.closedir(d)\n    };\n  };\n  let contains = (n, s) =>\n    try(Str.search_forward(Str.regexp(s), n, 0) != (-1)) {\n    | Not_found => false\n    };\n\n  dirForEachEntry(\n    n =>\n      if (contains(n, \".opam\") && ! foundAnOpamFile^) {\n        foundAnOpamFile := true;\n        if (n != rootNameOpamFile) {\n          copyFile(\n            Path.(projectPath / n),\n            Path.(projectPath / rootNameOpamFile),\n          );\n          Unix.unlink(Path.(projectPath / n));\n          operations := [CREATE(rootNameOpamFile), ...operations^];\n        };\n      },\n    projectPath,\n  );\n  operations^;\n};\n\nlet log = operations => {\n  print_newline();\n  List.iter(\n    o => {\n      switch (o) {\n      | CREATE(x) =>\n        print_endline(\n          <Pastel> \"    Created \" <Pastel bold=true> x </Pastel> </Pastel>,\n        )\n      | UPDATE(x) =>\n        print_endline(\n          <Pastel> \"    Updated \" <Pastel bold=true> x </Pastel> </Pastel>,\n        )\n      };\n      ();\n    },\n    operations,\n  );\n  print_newline();\n};\n\nlet generateBuildFiles = projectRoot => {\n  let packageJSONPath = Path.(projectRoot / \"package.json\");\n  gen(projectRoot, packageJSONPath);\n};\n\nlet build = manifestFile => PesyConf.get(manifestFile) |> PesyConf.rootName;\n\nlet normalize = x =>\n  x\n  |> Str.global_replace(Str.regexp(\"\\\\\"), \"/\")\n  |> Str.global_replace(Str.regexp(\"[/|\\\\]$\"), \"\")\n  |> (x => Sys.unix ? x : String.lowercase_ascii(x));\n\nexception InvalidPackagePath(string);\nlet duneFile = (projectPath, manifestFile, subpackagePath) => {\n  let normalizedSubpackagePath = normalize(subpackagePath);\n  let conf = PesyConf.get(manifestFile);\n  let pkgs = PesyConf.pkgs(conf);\n\n  let duneProjectPath = Path.(projectPath / \"dune-project\");\n  let duneVersion =\n    DuneFile.ofFile(duneProjectPath) |> DuneProject.findLangVersion;\n\n  let rootName = PesyConf.rootName(conf);\n  let pesyPackages =\n    try(\n      pkgs\n      |> List.map(PesyConf.toPesyConf(projectPath, rootName, ~duneVersion))\n    ) {\n    | x => raise(x)\n    };\n  /** TODO: Why compute for every subpackage? */\n  PesyConf.(\n    switch (\n      pesyPackages\n      |> List.find_opt(pesyPackage =>\n           normalize(pesyPackage.pkg_path) == normalizedSubpackagePath\n         )\n    ) {\n    | None =>\n      raise(\n        InvalidPackagePath(\n          \"No package found with path: \" ++ normalizedSubpackagePath,\n        ),\n      )\n    | Some(pesyPackage) =>\n      let (_, duneFile) =\n        PesyConf.toDunePackages(projectPath, rootName, pesyPackage);\n      DuneFile.toString(duneFile) |> print_endline;\n    }\n  );\n};\n\nlet duneEject = (projectPath, manifestFile, subpackageNameOrPath) => {\n  let normalizedSubpackageNameOrPath = normalize(subpackageNameOrPath);\n  let conf = PesyConf.get(manifestFile);\n  let pkgs = PesyConf.pkgs(conf);\n\n  let duneProjectPath = Path.(projectPath / \"dune-project\");\n  let duneVersion =\n    DuneFile.ofFile(duneProjectPath) |> DuneProject.findLangVersion;\n\n  let rootName = PesyConf.rootName(conf);\n  let pesyPackages =\n    pkgs\n    |> List.map(((pkgName, _) as pkg) =>\n         (\n           pkgName,\n           PesyConf.toPesyConf(projectPath, rootName, pkg, ~duneVersion),\n         )\n       );\n\n  switch (\n    pesyPackages\n    |> List.find_opt(((pkgName, pesyPackage)) => {\n         PesyConf.(\n           normalize(pesyPackage.pkg_path) == normalizedSubpackageNameOrPath\n           || pkgName == normalizedSubpackageNameOrPath\n         )\n       })\n  ) {\n  | None =>\n    raise(\n      InvalidPackagePath(\n        \"No package found with path or name: \"\n        ++ normalizedSubpackageNameOrPath,\n      ),\n    )\n  | Some((pkgNameToEject, pesyPackage)) =>\n    let (_, duneFile) =\n      PesyConf.toDunePackages(projectPath, rootName, pesyPackage);\n    let newPkgs =\n      pkgs |> List.filter(((pkgName, _)) => pkgName != pkgNameToEject);\n    let newConf =\n      switch (conf) {\n      | `Assoc(newJson) =>\n        `Assoc(\n          newJson\n          |> List.map(((fieldName, _) as field) =>\n               fieldName != \"buildDirs\"\n                 ? field : (fieldName, `Assoc(newPkgs))\n             ),\n        )\n      | _ => conf\n      };\n\n    write(\n      Path.(projectPath / \"package.json\"),\n      JSON.pretty_to_string(newConf),\n    );\n    write(Path.(pesyPackage.pkg_path / \"dune\"), DuneFile.toString(duneFile));\n  };\n};\n\nlet validateManifestFile = (projectPath, manifestFile) => {\n  let conf = PesyConf.get(manifestFile);\n  let pkgs = PesyConf.pkgs(conf);\n  let duneProjectPath = Path.(projectPath / \"dune-project\");\n  let duneVersion =\n    DuneFile.ofFile(duneProjectPath) |> DuneProject.findLangVersion;\n  let rootName = PesyConf.rootName(conf);\n  ignore(\n    pkgs\n    |> List.map(PesyConf.toPesyConf(projectPath, rootName, ~duneVersion)),\n  );\n};\n"
  },
  {
    "path": "lib/Library.re",
    "content": "module Utils = PesyEsyPesyUtils.Utils;\nopen Utils;\n\nmodule Mode = {\n  exception InvalidLibraryMode(string);\n  type t =\n    | Native\n    | Byte\n    | Best;\n  let ofString =\n    fun\n    | \"best\" => Best\n    | \"native\" => Native\n    | \"byte\" => Byte\n    | x => raise(InvalidLibraryMode(x));\n  let toString =\n    fun\n    | Best => \"best\"\n    | Native => \"native\"\n    | Byte => \"byte\";\n};\ntype t = {\n  name: string,\n  public: bool,\n  namespace: string,\n  modes: option(list(Mode.t)),\n  ffi: option(Stubs.t),\n  virtualModules: option(list(string)),\n  implements: option(list(string)),\n  wrapped: option(bool),\n};\nlet create =\n    (name, public, namespace, modes, ffi, virtualModules, implements, wrapped) => {\n  name,\n  public,\n  namespace,\n  modes,\n  ffi,\n  virtualModules,\n  implements,\n  wrapped,\n};\nlet toDuneStanza = (common, lib) => {\n  /* let {name: pkgName, require, path} = common */\n  let {\n    name,\n    public,\n    namespace,\n    modes: modesP,\n    ffi: stubsP,\n    virtualModules: virtualModulesP,\n    implements: implementsP,\n    wrapped: wrappedP,\n  } = lib;\n  let (\n    libraries,\n    flags,\n    ocamlcFlags,\n    ocamloptFlags,\n    jsooFlags,\n    preprocess,\n    includeSubdirs,\n    rawBuildConfig,\n    rawBuildConfigFooter,\n    pesyModulesLibrary,\n    pesyModulesAliasModuleGen,\n  ) =\n    Common.toDuneStanzas(common);\n  let path = Common.getPath(common);\n  let public_name = if (public) { Stanza.createAtom(name) |> Stanza.create(\"public_name\") |> Option.some } else { None }; // pesy's name is Dune's public_name\n  let name = Stanza.create(\"name\", Stanza.createAtom(namespace));\n  let modules =\n    Stanza.createExpression([\n      Stanza.createAtom(\"modules\"),\n      Stanza.createExpression(\n        [Stanza.createAtom(\":standard\")]\n        @ (\n          switch (Common.getPesyModules(common)) {\n          | Some(x) => [\n              Stanza.createAtom(\"\\\\\"),\n              Stanza.createAtom(PesyModule.getNamespace(x)),\n            ]\n          | None => []\n          }\n        ),\n      ),\n    ]);\n\n  let modesD =\n    switch (modesP) {\n    | None => None\n    | Some(l) =>\n      Some(\n        Stanza.createExpression([\n          Stanza.createAtom(\"modes\"),\n          ...List.map(m => m |> Mode.toString |> Stanza.createAtom, l),\n        ]),\n      )\n    };\n\n  let stubsD = Stubs.toDuneStanza(stubsP);\n\n  let virtualModulesD =\n    switch (virtualModulesP) {\n    | None => None\n    | Some(l) =>\n      Some(\n        Stanza.createExpression([\n          Stanza.createAtom(\"virtual_modules\"),\n          ...List.map(Stanza.createAtom, l),\n        ]),\n      )\n    };\n\n  let implementsD =\n    switch (implementsP) {\n    | None => None\n    | Some(l) =>\n      Some(\n        Stanza.createExpression([\n          Stanza.createAtom(\"implements\"),\n          ...List.map(Stanza.createAtom, l),\n        ]),\n      )\n    };\n\n  let wrappedD =\n    switch (wrappedP) {\n    | None => None\n    | Some(w) =>\n      Some(\n        Stanza.createExpression([\n          Stanza.createAtom(\"wrapped\"),\n          Stanza.createAtom(string_of_bool(w)),\n        ]),\n      )\n    };\n\n  let mandatoryExpressions = [name, modules];\n  let optionalExpressions = [\n    public_name,\n    libraries,\n    modesD,\n    virtualModulesD,\n    implementsD,\n    wrappedD,\n    flags,\n    ocamlcFlags,\n    ocamloptFlags,\n    jsooFlags,\n    preprocess,\n    ...stubsD,\n  ];\n\n  let rawBuildConfig =\n    switch (rawBuildConfig) {\n    | Some(l) => l\n    | None => []\n    };\n\n  let rawBuildConfigFooter =\n    switch (rawBuildConfigFooter) {\n    | Some(l) => l\n    | None => []\n    };\n\n  let optionalRootStanzas =\n    rawBuildConfigFooter\n    @ (\n      switch (pesyModulesLibrary) {\n      | Some(s) => [s]\n      | None => []\n      }\n    )\n    @ (\n      switch (pesyModulesAliasModuleGen) {\n      | Some(s) => [s]\n      | None => []\n      }\n    )\n    @ (\n      switch (includeSubdirs) {\n      | Some(s) => [s]\n      | None => []\n      }\n    );\n\n  let library =\n    Stanza.createExpression([\n      Stanza.createAtom(\"library\"),\n      ...mandatoryExpressions\n         @ filterNone(optionalExpressions)\n         @ rawBuildConfig,\n    ]);\n\n  (path, [library, ...optionalRootStanzas]);\n};\n"
  },
  {
    "path": "lib/Library.rei",
    "content": "module Mode: {\n  exception InvalidLibraryMode(string);\n  type t;\n  let ofString: string => t;\n  let toString: t => string;\n};\ntype t;\nlet create:\n  (\n    string,\n    bool,\n    string,\n    option(list(Mode.t)),\n    option(Stubs.t),\n    option(list(string)),\n    option(list(string)),\n    option(bool)\n  ) =>\n  t;\nlet toDuneStanza: (Common.t, t) => (string, list(Stanza.t));\n"
  },
  {
    "path": "lib/Mode.re",
    "content": "module EsyEnv = {\n  type t' =\n    | UPDATE;\n  /* | BUILD; */\n};\n"
  },
  {
    "path": "lib/Parser.mly",
    "content": "%token LPAREN RPAREN SEMICOLON\n%token EOL ASSN SQUOTE EOF REQUIRE\n%token <string> MODULE_NAME\n%token <string> MODULE_PATH \n%start main             /* the entry point */\n%type <string * string> main\n%%\nmain:\n  MODULE_NAME ASSN REQUIRE LPAREN SQUOTE MODULE_PATH SQUOTE RPAREN EOF                { ($1, $6) }\n    | MODULE_NAME ASSN REQUIRE LPAREN SQUOTE MODULE_PATH SQUOTE RPAREN SEMICOLON EOF                { ($1, $6) }\n;\n"
  },
  {
    "path": "lib/PesyConf.re",
    "content": "open Printf;\nmodule Utils = PesyEsyPesyUtils.Utils;\nopen Utils;\nopen PesyEsyPesyErrors.Errors;\n\n/*****\n    localName ~~> dunePublicName\n    pesy_modules_namespace ~~> namespace\n    modules ~~> aliases\n ***/\n\ntype pkgType =\n  | ExecutablePackage(Executable.t)\n  | LibraryPackage(Library.t)\n  | TestPackage(Test.t);\n\ntype package = {\n  pkg_path: string,\n  common: Common.t,\n  pkgType,\n};\n\nmodule Version = {\n  type t =\n    | V1(int)\n    | V2(int)\n    | V3(int);\n  let ofString = version => {\n    let vs = String.split_on_char('.', version) |> List.map(int_of_string);\n    switch (vs) {\n    | [1, minorVersion] => V1(minorVersion)\n    | [2, minorVersion] => V2(minorVersion)\n    | [3, minorVersion] => V3(minorVersion)\n    | _ => raise(InvalidDuneVersion(version))\n    };\n  };\n};\n\n/* private */\nexception ShouldHaveRaised(unit);\n\nlet findIndex = (s1, s2) => {\n  let re = Str.regexp_string(s2);\n  try(Str.search_forward(re, s1, 0)) {\n  | Not_found => (-1)\n  };\n};\n\nlet resolveRelativePath = path => {\n  let separator = \"/\";\n  let revParts = List.rev(Str.split(Str.regexp(separator), path));\n\n  let rec resolve = (parts, skipCount, acc) => {\n    switch (parts) {\n    | [\"..\", ...r] => resolve(r, skipCount + 1, acc)\n    | [\".\", ...r] => resolve(r, skipCount, acc)\n    | [h, ...r] =>\n      resolve(\n        r,\n        skipCount > 0 ? skipCount - 1 : 0,\n        skipCount == 0 ? [h, ...acc] : acc,\n      )\n    | [] =>\n      if (skipCount == 0) {\n        acc;\n      } else {\n        raise(\n          ResolveRelativePathFailure(\n            sprintf(\"Failed resolving: %s Too many `../`\", path),\n          ),\n        );\n      }\n    };\n  };\n\n  let dirSepChar = Filename.dir_sep.[0];\n  (path.[0] == dirSepChar ? Filename.dir_sep : \"\")\n  ++ String.concat(separator, resolve(revParts, 0, []));\n};\n\nlet specialCaseOpamRequires = package =>\n  Str.global_replace(Str.regexp(\"^@opam/\"), \"\", package);\n\nmodule Result = {\n  let bind = (o, f) =>\n    switch (o) {\n    | Ok(x) => f(x)\n    | Error(e) => Error(e)\n    };\n  let ( let* ) = (x, f) => bind(x, f);\n};\n\nlet isValidScopeName = n => {\n  n.[0] == '@';\n};\n\nlet resolveDepNameToFindlib = depName => {\n  let skipEnvVar = envVar =>\n    Array.fold_left(\n      (acc, e) =>\n        if (Str.string_match(\n              Str.regexp(Printf.sprintf(\"%s=.*\", envVar)),\n              e,\n              0,\n            )) {\n          acc;\n        } else {\n          [e, ...acc];\n        },\n      [],\n    );\n  let list_diff = (l1, l2) => {\n    l1 |> List.filter(e => !List.mem(e, l2));\n  };\n\n  /**\nThe above parses {|\nfoo (version: n/a)\nfoo.lib (version: n/a)\nfoo.bar.lib (version: n/a)\n|}\nto\n[[\"foo\"], [\"foo\", \"lib\"], [\"foo\", \"bar\", \"lib\"]]\n              */\n  let parseRelevantFindlibOutput = relevantFindlibOutputLines =>\n    relevantFindlibOutputLines\n    |> List.map(x =>\n         Str.split(Str.regexp(\" \"), x)\n         |> List.hd\n         |> Str.split(Str.regexp(\"\\\\.\"))\n       );\n  let safeSeg = name => {\n    /* Taken from esy's source */\n    let replaceAt = Str.regexp(\"@\");\n    let replaceUnderscore = Str.regexp(\"_+\");\n    let replaceSlash = Str.regexp(\"\\\\/\");\n    let replaceDash = Str.regexp(\"\\\\-\");\n    let replaceColon = Str.regexp(\":\");\n    name\n    |> String.lowercase_ascii\n    |> Str.global_replace(replaceAt, \"\")\n    |> Str.global_replace(replaceUnderscore, \"__\")\n    |> Str.global_replace(replaceSlash, \"__s__\")\n    |> Str.global_replace(replaceColon, \"__c__\")\n    |> Str.global_replace(replaceDash, \"_\");\n  };\n  let fullDepNameParts = Str.split(Str.regexp(\"/\"), depName);\n  let (depName, remainingParts) =\n    switch (fullDepNameParts) {\n    | [] => failwith(\"How can this be empty?\")\n    | [x] => (x, [])\n    | [x, y, ...rest] =>\n      if (isValidScopeName(x)) {\n        (x ++ \"/\" ++ y, rest);\n      } else {\n        (x, [y, ...rest]);\n      }\n    };\n  let process_env =\n    Unix.environment() |> skipEnvVar(\"ESY__ROOT_PACKAGE_CONFIG_PATH\");\n  let esyfiedDepName = safeSeg(depName);\n  open Result;\n  let* ocamlpath =\n    switch (Sys.getenv_opt(\"OCAMLPATH\")) {\n    | Some(v) => Ok(v)\n    | None => Error(\"OCAMLPATH not found in env\")\n    };\n  let candidates =\n    Str.split(Str.regexp(Sys.unix ? \":\" : \";\"), ocamlpath)\n    |> List.filter_map(v =>\n         if (Str.string_match(\n               Str.regexp(\".*\" ++ esyfiedDepName ++ \"-.*\"),\n               v,\n               0,\n             )) {\n           let (_exitCode, emptyOutput) =\n             run(\n               ~env=\n                 Array.of_list([\n                   \"OCAMLPATH=\",\n                   ...process_env |> List.filter(x => x != \"OCAMLPATH\"),\n                 ]),\n               \"ocamlfind\",\n               [|\"list\"|],\n             );\n           let (_exitCode, depOutput) =\n             run(\n               ~env=\n                 Array.of_list([\n                   Printf.sprintf(\"OCAMLPATH=%s\", v),\n                   ...process_env |> List.filter(x => x != \"OCAMLPATH\"),\n                 ]),\n               \"ocamlfind\",\n               [|\"list\"|],\n             );\n           let relevantFindlibOutputLines = list_diff(depOutput, emptyOutput);\n           let listOfLibraryNameAsList =\n             parseRelevantFindlibOutput(relevantFindlibOutputLines);\n           /** Since the library base name (say foo) need not match the\n              npm package name, we are only going to compare the rest ([\"lib\"], [\"bar\", \"lib\"] etc) */\n           let listOfCandidateLibraryNameAsList =\n             listOfLibraryNameAsList\n             |> List.filter_map(\n                  fun\n                  | [] => None\n                  | [_, ...rest] as libraryNameAsList =>\n                    if (rest == remainingParts) {\n                      Some(libraryNameAsList);\n                    } else {\n                      None;\n                    },\n                );\n           switch (listOfCandidateLibraryNameAsList) {\n           | [] => None\n           | candidateLibraryNameAsList =>\n             switch (candidateLibraryNameAsList) {\n             | [] => None\n             | x => Some(x |> List.map(String.concat(\"/\")))\n             }\n           };\n         } else {\n           None;\n         }\n       )\n    |> List.flatten;\n\n  switch (candidates) {\n  | [] =>\n    Error(\n      Printf.sprintf(\n        \"Library %s not found\",\n        String.concat(\"/\", [depName, ...remainingParts]),\n      ),\n    )\n  | [candidate] => Ok(candidate)\n  | multipleCandidates =>\n    Error(\n      Printf.sprintf(\n        {|Multiple candidates found for %s\n         %s|},\n        depName,\n        multipleCandidates |> String.concat(\"\\n\"),\n      ),\n    )\n  };\n};\n\nlet isValidBinaryFileName = fileName =>\n  Str.string_match(Str.regexp(\"^.+\\\\.exe$\"), fileName, 0);\n\nlet isValidSourceFile = fileName =>\n  Str.string_match(Str.regexp(\"^.+\\\\.\\\\(re\\\\|ml\\\\)$\"), fileName, 0);\n\n/* Turns \"Foo.re as Foo.exe\" => (\"Foo.re\", \"Foo.exe\") */\n\n/* Turns \"foo/bar/baz\" => \"foo.bar.baz\" */\nlet pathToOCamlLibName = p => Str.global_replace(Str.regexp(\"/\"), \".\", p);\n\nlet stripAtTheRate = s => String.sub(s, 1, String.length(s) - 1);\n\n/* doubleKebabifyIfScoped turns @myscope/pkgName => myscope--pkgName */\nlet doubleKebabifyIfScoped = n => {\n  switch (Str.split(Str.regexp(\"/\"), n)) {\n  | [pkgName] => pkgName\n  | [scope, pkgName, ...rest] =>\n    isValidScopeName(scope)\n      ? String.concat(\n          \"/\",\n          [stripAtTheRate(scope) ++ \"--\" ++ pkgName, ...rest],\n        )\n      : String.concat(\"/\", [scope, pkgName, ...rest])\n  | _ => raise(InvalidRootName(n))\n  };\n};\n\ntype t = (string, list(package));\nlet toPesyConf = (projectPath, rootName, pkg, ~duneVersion) => {\n  let (dir, conf) = pkg;\n\n  let binJSON = JSON.member(conf, \"bin\");\n  let bin =\n    try(\n      Some(\n        {\n          JSON.toKeyValuePairs(binJSON)\n          |> List.map(kv => {\n               let (k, v) = kv;\n               (\n                 /* Value is the source .re file */\n                 v |> JSON.toValue |> FieldTypes.toString,\n                 /* Key is the target executable name */\n                 k,\n               );\n             });\n        },\n      )\n    ) {\n    | JSON.NullJSONValue(_) => None\n    /* If its a string and not a JSON */\n    | JSON.InvalidJSONValue(_) =>\n      let binaryMainFile =\n        try(binJSON |> JSON.toValue |> FieldTypes.toString) {\n        | _ => raise(InvalidBinProperty(dir))\n        };\n      if (!isValidSourceFile(binaryMainFile)) {\n        raise(InvalidBinProperty(dir));\n      };\n      Some([(binaryMainFile, moduleNameOf(binaryMainFile) ++ \".exe\")]);\n    | e => raise(e)\n    };\n\n  /* Pesy'name is Dune's public_name */\n  /* If name is provided and binary's public_name is also provided in the bin property, name takes precedence */\n  let name =\n    try(JSON.member(conf, \"name\") |> JSON.toValue |> FieldTypes.toString) {\n    | JSON.NullJSONValue(_) =>\n      switch (bin) {\n      | Some(names) =>\n        names\n        |> List.map(((_mainFileName, installedBinaryName)) =>\n             installedBinaryName\n           )\n        |> List.hd\n      | None => rootName ++ \".\" ++ pathToOCamlLibName(dir)\n      }\n    | e => raise(e)\n    };\n\n  let public =\n    try(JSON.member(conf, \"public\") |> JSON.toValue |> FieldTypes.toBool) {\n    | JSON.NullJSONValue(_) => false\n    | e => raise(e)\n    };\n\n  let (<|>) = (f, g, x) => g(f(x));\n  /* \"my-package/lib/here\" => \"my-package.lib.here\" */\n  let require =\n    try(\n      JSON.member(conf, \"require\")\n      |> JSON.toValue\n      |> FieldTypes.toList\n      |> List.map(\n           FieldTypes.toString\n           <|> (\n             x => x.[0] == '.' ? sprintf(\"%s/%s/%s\", rootName, dir, x) : x\n           )\n           <|> resolveRelativePath\n           <|> (\n             x =>\n               x.[0] == '@'\n                 ? if (findIndex(doubleKebabifyIfScoped(x), rootName) != 0) {\n                     switch (x |> resolveDepNameToFindlib) {\n                     | Ok(x) => x\n                     | Error(msg) => raise(Failure(msg))\n                     };\n                   } else {\n                     x |> doubleKebabifyIfScoped;\n                   }\n                 : x\n           )\n           <|> pathToOCamlLibName,\n         )\n    ) {\n    | JSON.NullJSONValue(_) => []\n    | e => raise(e)\n    };\n\n  let imports =\n    try(\n      JSON.member(conf, \"imports\")\n      |> JSON.toValue\n      |> FieldTypes.toList\n      |> List.map(FieldTypes.toString <|> ImportsParser.parse)\n    ) {\n    | JSON.NullJSONValue(_) => []\n    | _e => raise(ImportsParserFailure())\n    };\n\n  let modesAsFieldTypes =\n    try(Some(JSON.member(conf, \"modes\") |> JSON.toValue)) {\n    | JSON.NullJSONValue () => None\n    | e => raise(e)\n    };\n\n  let modes =\n    switch (modesAsFieldTypes) {\n    | Some(modesAsFieldTypes) =>\n      try(Some(Executable.Mode.ofFieldTypes(modesAsFieldTypes))) {\n      | _ => None\n      }\n    | None => None\n    };\n\n  let pesyModuleNamespace =\n    [rootName]\n    @ String.split_on_char('/', dir)\n    @ [\"PesyModules\"]\n    |> List.map(upperCamelCasify)\n    |> List.fold_left((++), \"\");\n\n  let isLocalLibrary = path => findIndex(path, rootName) == 0;\n  let aliases =\n    imports\n    |> List.map(import => {\n         let (exportedNamespace, lib) = import;\n         let libraryAsPath =\n           lib\n           |> (\n             x => {\n               x.[0] == '.' ? sprintf(\"%s/%s/%s\", rootName, dir, x) : x;\n             }\n           )\n           |> resolveRelativePath\n           |> (\n             x =>\n               x.[0] == '@'\n                 ? if (findIndex(doubleKebabifyIfScoped(x), rootName) != 0) {\n                     switch (x |> resolveDepNameToFindlib) {\n                     | Ok(x) => x\n                     | Error(msg) => raise(Failure(msg))\n                     };\n                   } else {\n                     x |> doubleKebabifyIfScoped;\n                   }\n                 : x\n           );\n         let stripRootName =\n           Str.global_replace(Str.regexp(rootName ++ \"/\"), \"\");\n         let basePathToRequirePkg =\n           libraryAsPath\n           |> stripRootName\n           |> (x => Path.(projectPath / x))\n           |> resolveRelativePath;\n\n         if (isLocalLibrary(libraryAsPath)) {\n           if (!Sys.file_exists(basePathToRequirePkg)) {\n             raise(PesyEsyPesyErrors.Errors.LocalLibraryPathNotFound(lib));\n           };\n         };\n\n         let originalNamespace =\n           if (isLocalLibrary(libraryAsPath)) {\n             libraryAsPath\n             |> String.split_on_char('/')\n             |> List.map(upperCamelCasify)\n             |> List.fold_left((++), \"\");\n           } else {\n             /** ie. external library. We use findlib and figure out namespace **/\n             let findlibQueryModes =\n               switch (modesAsFieldTypes) {\n               | Some(modes) =>\n                 modes |> FieldTypes.toList |> List.map(FieldTypes.toString)\n               | None => [\"native\"]\n               };\n             Str.global_replace(\n               Str.regexp(\"\\\\.cm.*\"),\n               \"\",\n               Findlib.package_property(\n                 findlibQueryModes,\n                 pathToOCamlLibName(libraryAsPath),\n                 \"archive\",\n               ),\n             )\n             |> String.mapi((i, c) => i == 0 ? Char.uppercase_ascii(c) : c);\n           };\n\n         PesyModule.Alias.create(\n           ~alias={\n             switch (\n               List.fold_left(\n                 (accExt, ext) =>\n                   List.fold_left(\n                     (accEntry, entry) => {\n                       switch (accEntry) {\n                       | Some(x) => Some(x)\n                       | None =>\n                         if (findIndex(libraryAsPath, rootName) != 0) {\n                           Some(\n                             sprintf(\n                               \"module %s = %s;\",\n                               exportedNamespace,\n                               originalNamespace,\n                             ),\n                           );\n                         } else if (Sys.file_exists(\n                                      Path.(basePathToRequirePkg / entry)\n                                      ++ ext,\n                                    )\n                                    || Sys.file_exists(\n                                         Path.(\n                                           basePathToRequirePkg\n                                           / String.lowercase_ascii(entry)\n                                         )\n                                         ++ ext,\n                                       )) {\n                           Some(\n                             sprintf(\n                               \"module %s = %s.%s;\",\n                               exportedNamespace,\n                               originalNamespace,\n                               entry,\n                             ),\n                           );\n                         } else {\n                           None;\n                         }\n                       }\n                     },\n                     accExt,\n                     [\"Index\", exportedNamespace] /* If it finds, Index.re, it doesn't look for Bar.re */\n                   ),\n                 None,\n                 [\".re\", \".ml\"],\n               )\n             ) {\n             | Some(x) => x\n             | None =>\n               sprintf(\n                 \"module %s = %s;\",\n                 exportedNamespace,\n                 originalNamespace,\n               )\n             };\n           },\n           ~internal=isLocalLibrary(libraryAsPath),\n           ~library=pathToOCamlLibName(libraryAsPath),\n           ~originalNamespace,\n           ~exportedNamespace,\n         );\n       });\n\n  let aliasesWithDifferentNamespace =\n    PesyModule.Alias.(\n      aliases\n      |> List.filter(alias =>\n           alias.originalNamespace != alias.exportedNamespace\n         )\n    );\n\n  /*\n    Ex: Pastel = require('pastel/lib'). In this case,\n    we should skip aliasing. See: https://github.com/esy/pesy/issues/171\n   */\n  let aliasesWithSameNamespace =\n    PesyModule.Alias.(\n      aliases\n      |> List.filter(alias =>\n           alias.originalNamespace == alias.exportedNamespace\n         )\n    );\n\n  let pesyModules =\n    PesyModule.create(\n      ~namespace=pesyModuleNamespace,\n      ~dunePublicName=\n        sprintf(\n          \"%s.pesy-modules\",\n          pathToOCamlLibName(rootName ++ \"/\" ++ dir),\n        ),\n      ~aliases=aliasesWithDifferentNamespace,\n    );\n\n  let fromListOrString = ls =>\n    try(FieldTypes.toList(ls)) {\n    | FieldTypes.ConversionException(\"Expected list. Actual string\") =>\n      FieldTypes.toString(ls)\n      |> Str.split(Str.regexp(\"[ \\n\\r\\x0c\\t]+\"))\n      |> List.map(s => FieldTypes.String(s))\n    | e => raise(e)\n    };\n\n  let flags =\n    try(\n      Some(\n        JSON.member(conf, \"flags\")\n        |> JSON.toValue\n        |> fromListOrString\n        |> List.map(FieldTypes.toString),\n      )\n    ) {\n    | _ => None\n    };\n\n  let ocamlcFlags =\n    try(\n      Some(\n        JSON.member(conf, \"ocamlcFlags\")\n        |> JSON.toValue\n        |> fromListOrString\n        |> List.map(FieldTypes.toString),\n      )\n    ) {\n    | _ => None\n    };\n\n  let ocamloptFlags =\n    try(\n      Some(\n        JSON.member(conf, \"ocamloptFlags\")\n        |> JSON.toValue\n        |> fromListOrString\n        |> List.map(FieldTypes.toString),\n      )\n    ) {\n    | _ => None\n    };\n\n  let jsooFlags =\n    try(\n      Some(\n        JSON.member(conf, \"jsooFlags\")\n        |> JSON.toValue\n        |> fromListOrString\n        |> List.map(FieldTypes.toString),\n      )\n    ) {\n    | _ => None\n    };\n\n  let preprocess =\n    try(\n      Some(\n        JSON.member(conf, \"preprocess\")\n        |> JSON.toValue\n        |> FieldTypes.toList\n        |> List.map(FieldTypes.toString),\n      )\n    ) {\n    | _ => None\n    };\n\n  let includeSubdirs =\n    try(\n      Some(\n        JSON.member(conf, \"includeSubdirs\")\n        |> JSON.toValue\n        |> FieldTypes.toString,\n      )\n    ) {\n    | JSON.NullJSONValue(_) => None\n    | e => raise(e)\n    };\n\n  let rawBuildConfig =\n    try(\n      Some(\n        JSON.member(conf, \"rawBuildConfig\")\n        |> JSON.toValue\n        |> FieldTypes.toList\n        |> List.map(FieldTypes.toString),\n      )\n    ) {\n    | _ => None\n    };\n\n  let rawBuildConfigFooter =\n    try(\n      Some(\n        JSON.member(conf, \"rawBuildConfigFooter\")\n        |> JSON.toValue\n        |> FieldTypes.toList\n        |> List.map(FieldTypes.toString),\n      )\n    ) {\n    | _ => None\n    };\n\n  let pkg_path = Path.(projectPath / dir);\n  let common =\n    Common.create(\n      Path.(projectPath / dir),\n      List.append(\n        require,\n        PesyModule.Alias.(\n          aliasesWithSameNamespace\n          |> List.map(pesyModule => pesyModule.library)\n        ),\n      ),\n      flags,\n      ocamlcFlags,\n      ocamloptFlags,\n      jsooFlags,\n      preprocess,\n      includeSubdirs,\n      rawBuildConfig,\n      rawBuildConfigFooter,\n      pesyModules,\n    );\n\n  /* Prioritising `bin` over `name` */\n  switch (bin) {\n  | Some(binKVs) =>\n    //bins |> List.map(((mainFileName, _installedBinaryName)) => moduleNameOf(mainFileName))\n    {\n      pkg_path,\n      common,\n      pkgType: ExecutablePackage(Executable.create(binKVs, modes)),\n    }\n  | None =>\n    let namespace =\n      try(\n        JSON.member(conf, \"namespace\") |> JSON.toValue |> FieldTypes.toString\n      ) {\n      | JSON.NullJSONValue () =>\n        sprintf(\"%s/%s\", rootName, dir)\n        |> String.split_on_char('/')\n        |> List.map(upperCamelCasify)\n        |> List.fold_left((++), \"\")\n      | e => raise(e)\n      };\n    let libraryModes =\n      try(\n        Some(\n          JSON.member(conf, \"modes\")\n          |> JSON.toValue\n          |> FieldTypes.toList\n          |> List.map(FieldTypes.toString)\n          |> List.map(Library.Mode.ofString),\n        )\n      ) {\n      | JSON.NullJSONValue () => None\n      | e => raise(e)\n      };\n\n    let cStubs = cns =>\n      try(\n        JSON.toValue(cns)\n        |> FieldTypes.toList\n        |> List.map(FieldTypes.toString)\n      ) {\n      | e => raise(e)\n      };\n\n    let foreignStubs = fss =>\n      try(\n        JSON.toListKVPairs(fss)\n        |> List.map(kvs =>\n             List.map(\n               kv => {\n                 let (k, v) = kv;\n                 (k, v |> JSON.toValue);\n               },\n               kvs,\n             )\n           )\n      ) {\n      | e => raise(e)\n      };\n\n    let (cnJSON, fsJSON) = (\n      JSON.member(conf, \"cNames\"),\n      JSON.member(conf, \"foreignStubs\"),\n    );\n\n    let ffi =\n      switch (\n        Version.ofString(duneVersion),\n        JSON.toOption(cnJSON),\n        JSON.toOption(fsJSON),\n      ) {\n      | (V1(_), None, None) => None\n      | (V1(_), Some(cn), None)\n      | (V1(_), Some(cn), Some(_)) => Some(Stubs.ofCNames(cStubs(cn)))\n      | (V1(_), None, Some(_)) => raise(ForeignStubsIncorrectlyUsed)\n      /* foreign stubs is supported in version > 1.0 */\n      | (_, None, None) => None\n      | (_, Some(_), None) => raise(CNamesIncorrectlyUsed)\n      | (_, None, Some(fs))\n      | (_, Some(_), Some(fs)) =>\n        Some(Stubs.ofForeignStubs(foreignStubs(fs)))\n      };\n\n    let virtualModules =\n      try(\n        Some(\n          JSON.member(conf, \"virtualModules\")\n          |> JSON.toValue\n          |> FieldTypes.toList\n          |> List.map(FieldTypes.toString),\n        )\n      ) {\n      | JSON.NullJSONValue () => None\n      | e => raise(e)\n      };\n    let implements =\n      try(\n        Some(\n          JSON.member(conf, \"implements\")\n          |> JSON.toValue\n          |> FieldTypes.toList\n          |> List.map(\n               FieldTypes.toString\n               <|> (\n                 x => x.[0] == '.' ? sprintf(\"%s/%s/%s\", rootName, dir, x) : x\n               )\n               <|> (\n                 x =>\n                   x.[0] == '@'\n                     ? if (findIndex(doubleKebabifyIfScoped(x), rootName)\n                           != 0) {\n                         switch (x |> resolveDepNameToFindlib) {\n                         | Ok(x) => x\n                         | Error(msg) => raise(Failure(msg))\n                         };\n                       } else {\n                         x |> doubleKebabifyIfScoped;\n                       }\n                     : x\n               )\n               <|> resolveRelativePath\n               <|> pathToOCamlLibName,\n             ),\n        )\n      ) {\n      | JSON.NullJSONValue () => None\n      | e => raise(e)\n      };\n    let wrapped =\n      try(\n        Some(\n          JSON.member(conf, \"wrapped\") |> JSON.toValue |> FieldTypes.toBool,\n        )\n      ) {\n      | JSON.NullJSONValue () => None\n      | e => raise(e)\n      };\n    {\n      pkg_path,\n      common,\n      pkgType:\n        LibraryPackage(\n          Library.create(\n            name,\n            public,\n            namespace,\n            libraryModes,\n            ffi,\n            virtualModules,\n            implements,\n            wrapped,\n          ),\n        ),\n    };\n  };\n};\n\nlet toDunePackages = (_prjPath, _rootName, pkg) => {\n  switch (pkg.pkgType) {\n  | LibraryPackage(l) => Library.toDuneStanza(pkg.common, l)\n  | ExecutablePackage(e) => Executable.toDuneStanza(pkg.common, e)\n  | TestPackage(e) => Test.toDuneStanza(pkg.common, e)\n  };\n};\n\n/* TODO: Figure better test setup */\n/** DEPRECATED: Pesy is not supposed to be run in build env https://github.com/jchavarri/rebez/issues/4 **/;\n/* let validateDuneFiles = (projectPath, pkgPath) => { */\n/*   let json = JSON.fromFile(pkgPath); */\n/*   let (rootName, pesyPackages) = toPesyConf(projectPath, json); */\n/*   let rootNameOpamFile = rootName ++ \".opam\"; */\n/*   let dunePackages = toDunePackages(projectPath, rootName, pesyPackages); */\n/*   let staleDuneFiles = */\n/*     dunePackages */\n/*     |> List.map(dpkg => { */\n/*          let (path, updatedDuneFile) = dpkg; */\n/*          let currentDuneFilePath = Path.(path / \"dune\"); */\n/*          (updatedDuneFile, currentDuneFilePath); */\n/*        }) */\n/*     |> List.filter(dpkg => { */\n/*          let (updatedDuneFile, currentDuneFilePath) = dpkg; */\n/*          updatedDuneFile != DuneFile.ofFile(currentDuneFilePath); */\n/*        }) */\n/*     |> List.map(t => { */\n/*          let (_updatedDuneFile, currentDuneFilePath) = t; */\n/*          currentDuneFilePath; */\n/*        }); */\n\n/*   let foundAnOpamFile = ref(false); */\n/*   let dirForEachEntry = (f, dirname) => { */\n/*     let d = Unix.opendir(dirname); */\n/*     try( */\n/*       while (true) { */\n/*         f(Unix.readdir(d)); */\n/*       } */\n/*     ) { */\n/*     | End_of_file => Unix.closedir(d) */\n/*     }; */\n/*   }; */\n/*   let contains = (n, s) => */\n/*     try(Str.search_forward(Str.regexp(s), n, 0) != (-1)) { */\n/*     | Not_found => false */\n/*     }; */\n\n/*   let staleOpamFile = ref(None); */\n/*   dirForEachEntry( */\n/*     n => */\n/*       if (contains(n, \".opam\") && ! foundAnOpamFile^) { */\n/*         foundAnOpamFile := true; */\n/*         if (n != rootNameOpamFile) { */\n/*           staleOpamFile := Some((n, rootNameOpamFile)); */\n/*         }; */\n/*       }, */\n/*     projectPath, */\n/*   ); */\n\n/*   let errors = */\n/*     List.map(x => StaleDuneFile(x), staleDuneFiles) */\n/*     @ ( */\n/*       switch (staleOpamFile^) { */\n/*       | Some(x) => [StaleOpamFile(x)] */\n/*       | None => [] */\n/*       } */\n/*     ); */\n\n/*   if (List.length(errors) != 0) { */\n/*     raise(BuildValidationFailures(errors)); */\n/*   }; */\n\n/*   Str.global_replace(Str.regexp(\".opam\"), \"\", rootNameOpamFile); */\n/* }; */\n\n/* \"name\" in root package.json */\nlet rootName = json =>\n  try(\n    doubleKebabifyIfScoped(\n      JSON.member(json, \"name\") |> JSON.toValue |> FieldTypes.toString,\n    )\n  ) {\n  | JSON.NullJSONValue () => raise(ShouldNotBeNull(\"name\"))\n  | x => raise(x)\n  };\n\nlet get = manifestFile => {\n  JSON.fromFile(manifestFile);\n};\n\nlet pkgs = json => JSON.toKeyValuePairs(JSON.member(json, \"buildDirs\"));\n"
  },
  {
    "path": "lib/PesyModule.re",
    "content": "module Alias = {\n  type t = {\n    alias: string,\n    library: string,\n    internal: bool, // if an alias is for a local sub-library\n    originalNamespace: string,\n    exportedNamespace: string,\n  };\n  let create = (~alias, ~internal, ~library, ~originalNamespace, ~exportedNamespace) => {\n    {alias, library, internal, originalNamespace, exportedNamespace};\n  };\n  let isInternal = x => x.internal;\n  let getOriginalNamespace = x => x.originalNamespace;\n  let getLibrary = x => x.library;\n  let transform = (~f, x) => f(x);\n  let toReStatement = a => a.alias;\n};\n\ntype t' = {\n  namespace: string,\n  dunePublicName: string,\n  aliases: list(Alias.t),\n};\n\ntype t = option(t');\n\nlet getNamespace = pm => pm.namespace;\nlet getDunePublicName = pm => pm.dunePublicName;\nlet create:\n  (~namespace: string, ~dunePublicName: string, ~aliases: list(Alias.t)) => t =\n  (~namespace, ~dunePublicName, ~aliases) => {\n    List.length(aliases) == 0\n      ? None : Some({namespace, dunePublicName, aliases});\n  };\n\nlet generateAliasModuleStanza = pesyModules =>\n  switch (pesyModules) {\n  | Some(x) =>\n    let pesyModulesReFile =\n      x.aliases |> List.map(Alias.toReStatement) |> String.concat(\"\\n\");\n    Some(\n      Stanza.createExpression([\n        Stanza.createAtom(\"rule\"),\n        Stanza.createExpression([\n          Stanza.createAtom(\"with-stdout-to\"),\n          Stanza.createAtom(Printf.sprintf(\"%s.re\", x.namespace)),\n          Stanza.createExpression([\n            Stanza.createAtom(\"run\"),\n            Stanza.createAtom(\"echo\"),\n            Stanza.createAtom(Printf.sprintf(\"%s\", pesyModulesReFile)),\n          ]),\n        ]),\n      ]),\n    );\n  | None => None\n  };\n\nlet generateLibraryStanza = (preprocess, pesyModules) => {\n  let preprocessStanza =\n    switch (preprocess) {\n    | None => []\n    | Some(l) => [\n        Stanza.createExpression([\n          Stanza.createAtom(\"preprocess\"),\n          Stanza.createExpression(List.map(f => Stanza.createAtom(f), l)),\n        ]),\n      ]\n    };\n\n  switch (pesyModules) {\n  | Some(x) =>\n    Some(\n      Stanza.createExpression([\n        Stanza.createAtom(\"library\"),\n        Stanza.createExpression([\n          Stanza.createAtom(\"name\"),\n          Stanza.createAtom(x.namespace),\n        ]),\n        Stanza.createExpression([\n          Stanza.createAtom(\"modules\"),\n          Stanza.createAtom(x.namespace),\n        ]),\n        Stanza.createExpression([\n          Stanza.createAtom(\"libraries\"),\n          ...{\n               module SS = Set.Make(String);\n               x.aliases\n               |> List.map(alias => Alias.isInternal(alias) ? Alias.getOriginalNamespace(alias): Alias.getLibrary(alias))\n               |> SS.of_list\n               |> SS.elements\n               |> List.map(Alias.transform(~f=Stanza.createAtom));\n             },\n        ]),\n        ...preprocessStanza,\n      ]),\n    )\n  | None => None\n  };\n};\n"
  },
  {
    "path": "lib/Stanza.re",
    "content": "open Sexplib.Sexp;\ntype t = Sexplib.Sexp.t;\nlet createAtom = a => Atom(a);\nlet create = (stanza: string, expression) =>\n  List([Atom(stanza), expression]);\nlet createExpression = atoms => List(atoms);\nlet ofString = s =>\n  Sexplib.Parser.sexp(Sexplib.Lexer.main, Lexing.from_string(s));\nlet toSexp = x => x;\nlet ofSexp = x => x;\n"
  },
  {
    "path": "lib/Stanza.rei",
    "content": "type t;\nlet create: (string, t) => t;\nlet createAtom: string => t;\nlet createExpression: list(t) => t;\nlet toSexp: t => Sexplib.Sexp.t;\nlet ofSexp: Sexplib.Sexp.t => t;\nlet ofString: string => t;\n"
  },
  {
    "path": "lib/Stubs.re",
    "content": "module Utils = PesyEsyPesyUtils.Utils;\nopen Utils;\n\ntype t =\n  | CNames(list(string))\n  | ForeignStubs(list(list((string, FieldTypes.t))));\n\nlet ofCNames = cns => CNames(cns);\n\nlet ofForeignStubs = fss => ForeignStubs(fss);\n\nmodule ForeignStub = {\n  exception LanguageNotSupported(string);\n  module Language = {\n    type t =\n      | C\n      | CXX;\n    let ofString =\n      fun\n      | \"c\" => C\n      | \"cxx\" => CXX\n      | x => raise(LanguageNotSupported(x));\n    let toString =\n      fun\n      | C => \"c\"\n      | CXX => \"cxx\";\n  };\n  type t = {\n    language: Language.t,\n    names: option(list(string)),\n    flags: option(list(string)),\n  };\n  let ofFieldTypes = tfts => {\n    /* Note: here language is set C as default value it will be replaced by the\n       correct value in the below pattern match */\n    let fs = ref({language: Language.C, names: None, flags: None});\n    List.iter(\n      tft => {\n        switch (tft) {\n        | (\"names\", ft) =>\n          fs :=\n            {\n              ...fs^,\n              names:\n                switch (FieldTypes.toList(ft)) {\n                | [] => None\n                | l => Some(List.map(FieldTypes.toString, l))\n                },\n            }\n        | (\"flags\", ft) =>\n          fs :=\n            {\n              ...fs^,\n              flags:\n                switch (FieldTypes.toList(ft)) {\n                | [] => None\n                | l => Some(List.map(FieldTypes.toString, l))\n                },\n            }\n        | (\"language\", ft) =>\n          fs :=\n            {...fs^, language: Language.ofString(FieldTypes.toString(ft))}\n        | _ => ()\n        }\n      },\n      tfts,\n    );\n    fs^;\n  };\n  let toDuneStanza = fs => {\n    let stanzas = [];\n    stanzas\n    @ [\n      Stanza.createExpression([\n        Stanza.createAtom(\"language\"),\n        Stanza.createAtom(Language.toString(fs.language)),\n      ]),\n    ]\n    @ (\n      switch (fs.names) {\n      | None\n      | Some([]) => [\n          Stanza.createExpression([\n            Stanza.createAtom(\"names\"),\n            Stanza.createAtom(\":standard\"),\n          ]),\n        ]\n      | Some(xs) => [\n          Stanza.createExpression([\n            Stanza.createAtom(\"names\"),\n            ...List.map(Stanza.createAtom, xs),\n          ]),\n        ]\n      }\n    )\n    @ (\n      switch (fs.flags) {\n      | None\n      | Some([]) => [\n          Stanza.createExpression([\n            Stanza.createAtom(\"flags\"),\n            Stanza.createAtom(\":standard\"),\n          ]),\n        ]\n      | Some(xs) => [\n          Stanza.createExpression([\n            Stanza.createAtom(\"flags\"),\n            ...List.map(Stanza.createAtom, xs),\n          ]),\n        ]\n      }\n    );\n  };\n};\n\nlet cNamesD = cNamesP => [\n  Some(\n    Stanza.createExpression([\n      Stanza.createAtom(\"c_names\"),\n      ...List.map(Stanza.createAtom, cNamesP),\n    ]),\n  ),\n];\nlet foreignStubsD = foreignStubsP =>\n  List.map(ForeignStub.ofFieldTypes, foreignStubsP)\n  |> List.map(fs =>\n       Some(\n         Stanza.createExpression([\n           Stanza.createAtom(\"foreign_stubs\"),\n           ...ForeignStub.toDuneStanza(fs),\n         ]),\n       )\n     );\n\nlet toDuneStanza = stubsP =>\n  switch (stubsP) {\n  | Some(s) =>\n    switch (s) {\n    | CNames(cNamesP) => cNamesD(cNamesP)\n    | ForeignStubs(foreignStubsP) => foreignStubsD(foreignStubsP)\n    }\n  | None => [None]\n  };"
  },
  {
    "path": "lib/Stubs.rei",
    "content": "module Utils = PesyEsyPesyUtils.Utils;\nopen Utils;\n\ntype t;\n\nlet ofCNames: list(string) => t;\n\nlet ofForeignStubs: list(list((string, FieldTypes.t))) => t;\n\nlet toDuneStanza: option(t) => list(option(Stanza.t));"
  },
  {
    "path": "lib/Test.re",
    "content": "open Printf;\nmodule Utils = PesyEsyPesyUtils.Utils;\nopen Utils;\n\nmodule Mode = {\n  exception InvalidCompilationMode(unit);\n  exception InvalidBinaryKind(unit);\n  module Compilation: {\n    type t;\n    let toString: t => string;\n    let ofString: string => t;\n  } = {\n    type t =\n      | Byte\n      | Native\n      | Best;\n\n    let toString =\n      fun\n      | Byte => \"byte\"\n      | Native => \"native\"\n      | Best => \"best\";\n\n    let ofString =\n      fun\n      | \"byte\" => Byte\n      | \"native\" => Native\n      | \"best\" => Best\n      | _ => raise(InvalidCompilationMode());\n  };\n\n  module BinaryKind: {\n    type t;\n    let toString: t => string;\n    let ofString: string => t;\n  } = {\n    type t =\n      | C\n      | Exe\n      | Object\n      | Shared_object;\n\n    let toString =\n      fun\n      | C => \"c\"\n      | Exe => \"exe\"\n      | Object => \"object\"\n      | Shared_object => \"shared_object\";\n\n    let ofString =\n      fun\n      | \"c\" => C\n      | \"exe\" => Exe\n      | \"object\" => Object\n      | \"shared_object\" => Shared_object\n      | _ => raise(InvalidBinaryKind());\n  };\n\n  type t = (Compilation.t, BinaryKind.t);\n  exception InvalidExecutableMode(string);\n  let ofList = parts =>\n    switch (parts) {\n    | [c, b] => (Compilation.ofString(c), BinaryKind.ofString(b))\n    | _ =>\n      raise(\n        InvalidExecutableMode(\n          sprintf(\n            \"Invalid executable mode: expected of the form (<compilation mode>, <binary_kind>). Got %s\",\n            List.fold_left((a, e) => sprintf(\"%s %s\", a, e), \"\", parts),\n          ),\n        ),\n      )\n    };\n  let toList = m => {\n    let (c, b) = m;\n    [Compilation.toString(c), BinaryKind.toString(b)];\n  };\n};\ntype t = {\n  main: string,\n  modes: option(Mode.t),\n};\nlet create = (main, modes) => {main, modes};\nlet toDuneStanza = (common: Common.t, e) => {\n  /* let {name: pkgName, require, path} = common; */\n  let {main, modes: modesP} = e;\n  let (\n    libraries,\n    flags,\n    ocamlcFlags,\n    ocamloptFlags,\n    jsooFlags,\n    preprocess,\n    includeSubdirs,\n    rawBuildConfig,\n    rawBuildConfigFooter,\n    pesyModulesLibrary,\n    pesyModulesAliasModuleGen,\n  ) =\n    Common.toDuneStanzas(common);\n  let path = Common.getPath(common);\n  /* Pesy's main is Dune's name */\n  let name = Stanza.create(\"name\", Stanza.createAtom(main));\n  let modules =\n    Stanza.createExpression([\n      Stanza.createAtom(\"modules\"),\n      Stanza.createExpression(\n        [Stanza.createAtom(\":standard\")]\n        @ (\n          switch (Common.getPesyModules(common)) {\n          | Some(x) => [\n              Stanza.createAtom(\"\\\\\"),\n              Stanza.createAtom(PesyModule.getNamespace(x)),\n            ]\n          | None => []\n          }\n        ),\n      ),\n    ]);\n  /* let public_name = */\n  /*   Stanza.create(\"public_name\", Stanza.createAtom(pkgName)); */\n\n  /* let libraries = */\n  /*   switch (require) { */\n  /*   | [] => None */\n  /*   | libs => */\n  /*     Some( */\n  /*       Stanza.createExpression([ */\n  /*         Stanza.createAtom(\"libraries\"), */\n  /*         ...List.map(r => Stanza.createAtom(r), libs), */\n  /*       ]), */\n  /*     ) */\n  /*   }; */\n\n  let modesD =\n    switch (modesP) {\n    | None => None\n    | Some(m) =>\n      Some(\n        Stanza.createExpression([\n          Stanza.createAtom(\"modes\"),\n          Stanza.createExpression(\n            m |> Mode.toList |> List.map(Stanza.createAtom),\n          ),\n        ]),\n      )\n    };\n\n  let mandatoryExpressions = [name, modules];\n  let optionalExpressions = [\n    libraries,\n    modesD,\n    flags,\n    ocamlcFlags,\n    ocamloptFlags,\n    jsooFlags,\n    preprocess,\n    pesyModulesLibrary,\n  ];\n\n  let rawBuildConfig =\n    switch (rawBuildConfig) {\n    | Some(l) => l\n    | None => []\n    };\n\n  let rawBuildConfigFooter =\n    switch (rawBuildConfigFooter) {\n    | Some(l) => l\n    | None => []\n    };\n\n  let optionalRootStanzas =\n    rawBuildConfigFooter\n    @ (\n      switch (pesyModulesLibrary) {\n      | Some(s) => [s]\n      | None => []\n      }\n    )\n    @ (\n      switch (pesyModulesAliasModuleGen) {\n      | Some(s) => [s]\n      | None => []\n      }\n    )\n    @ (\n      switch (includeSubdirs) {\n      | Some(s) => [s]\n      | None => []\n      }\n    );\n\n  let executable =\n    Stanza.createExpression([\n      Stanza.createAtom(\"test\"),\n      ...mandatoryExpressions\n         @ filterNone(optionalExpressions)\n         @ rawBuildConfig,\n    ]);\n\n  (path, [executable, ...optionalRootStanzas]);\n};\n"
  },
  {
    "path": "lib/Test.rei",
    "content": "type t;\nmodule Mode: {\n  type t;\n  let ofList: list(string) => t;\n  let toList: t => list(string);\n};\nlet create: (string, option(Mode.t)) => t;\nlet toDuneStanza: (Common.t, t) => (string, list(Stanza.t));\n"
  },
  {
    "path": "lib/dune",
    "content": "(library\n (name PesyEsyPesyLib)\n (public_name pesy--esy-pesy.lib)\n (modules (:standard))\n (libraries str sexplib findlib pesy--esy-pesy.utils\n            pesy--esy-pesy.errors))\n\n(rule\n (targets Lexer.ml)\n (deps Lexer.mll)\n (action (run %{bin:ocamllex} -q -o %{targets} %{deps})))\n\n(rule\n (targets Parser.ml Parser.mli)\n (deps Parser.mly)\n (action (run %{bin:ocamlyacc} %{deps})))\n"
  },
  {
    "path": "notes/benchmarking.md",
    "content": "The results of benchmarking a sample \"generateEverything.sh\" script:\n\n\nDELTAms 5\nDELTAms 11  - detect shell\nDELTAms 6  - setup variables\nDELTAms 10  - define functions\nDELTAms 11  - define build variables\nDELTAms 8  - print directories\nDELTAms 9  - check lib dir\nDELTAms 30  - create lib build file\nDELTAms 12  - verify lib build existing contents\nDELTAms 12  - setup bin vars\nDELTAms 8  - check bin main mod name\nDELTAms 10  - check bin main module exists\nDELTAms 28  - read existing dune bin contents\nDELTAms 23  - create bin dune contents\nDELTAms 5  - check bin against required bin\nDELTAms 8  - check root dune exists\nDELTAms 4  - check opam file exists\nDELTAms -989  - check root dune-project file exists\nDELTAms 82  - perform actual build\n\n  Build Succeeded! To test a binary:\n\n      esy x ChalkConsole.exe\n\n\nDELTAms 5  - check build failure\nDELTAms 8  - end\nDELTAms 5  - end\n\n\n\nFor the following manually instrumented profiling of that script file (requires\ngdate be installed). I've since improved the detect shell step (avoided using\ngrep subprocess).\n\nAll that really matters is the time it takes to run the genEverything script.\nIt doesn't matter how long it takes to generate the genEverything script.  The\nbiggest impacts for optimization of running genEverything would be:\n1. Omitting fields in the generated dune files that aren't present in the\n   package.json config.\n\nNote that each measurement has an additional 5ms overhead apparently (so\nsubtract about 5ms for each measurement to get the real time).\n\nSome smaller improvements:\n- md5 takes about 7ms to execute which blocks running of genEverything.sh, but\n  just checking for if md5 program exists is time consuming.\n  If we have a previous build hash, we don't need to check \n\nRun it in a project by doing `esy b ./_build/genEverything.sh`\n\n\n```sh\n\n#!/bin/bash\n\nset -e\nset -u\n\nBOLD=`tput bold`  || BOLD=''   # Select bold mode\nBLACK=`tput setaf 0` || BLACK=''\nRED=`tput setaf 1` || RED=''\nGREEN=`tput setaf 2` || GREEN=''\nYELLOW=`tput setaf 3` || YELLOW=''\nRESET=`tput sgr0` || RESET=''\n\nPREV_TIME=\"1$(/opt/homebrew/bin/gdate +%N)\"\n\n\n\n\n# Some operation:\nNOW=\"1$(/opt/homebrew/bin/gdate +%N)\"\nDELTA_MS=$(( $(($NOW-$PREV_TIME)) / 1000000))\necho \"DELTAms ${DELTA_MS}\"\nPREV_TIME=\"1$(/opt/homebrew/bin/gdate +%N)\"\nMODE=\"update\"\n[[ $SHELL =~ \"noprofile\" ]] && MODE=\"build\"\n\n# Some operation:\nNOW=\"1$(/opt/homebrew/bin/gdate +%N)\"\nDELTA_MS=$(( $(($NOW-$PREV_TIME)) / 1000000))\necho \"DELTAms ${DELTA_MS}  - detect shell\"\nPREV_TIME=\"1$(/opt/homebrew/bin/gdate +%N)\"\n\n\nLAST_EXE_NAME=\"\"\nNOTIFIED_USER=\"false\"\nBUILD_STALE_PROBLEM=\"false\"\n\nDEFAULT_MAIN_MODULE_NAME=\"Index\"\n\nNOW=\"1$(/opt/homebrew/bin/gdate +%N)\"\nDELTA_MS=$(( $(($NOW-$PREV_TIME)) / 1000000))\necho \"DELTAms ${DELTA_MS}  - setup variables\"\nPREV_TIME=\"1$(/opt/homebrew/bin/gdate +%N)\"\n\n\n\nfunction notifyUser() {\n  if [ \"${NOTIFIED_USER}\" == \"false\" ]; then\n    echo \"\"\n    if [ \"${MODE}\" == \"build\" ]; then\n      printf \"  %sAlmost there!%s %sWe just need to prepare a couple of files:%s\\\\n\\\\n\" \"${YELLOW}${BOLD}\" \"${RESET}\" \"${BOLD}\" \"${RESET}\"\n    else\n      printf \"  %sPreparing for build:%s\\\\n\\\\n\" \"${YELLOW}${BOLD}\" \"${RESET}\"\n    fi\n    NOTIFIED_USER=\"true\"\n  else\n    # do nothing\n    true\n  fi\n}\n\n\nfunction printDirectory() {\n  if [ \"${MODE}\" != \"build\" ]; then\n    DIR=$1\n    NAME=$2\n    NAMESPACE=$3\n    REQUIRE=$4\n    IS_LAST=$5\n    printf \"│\\\\n\"\n    PREFIX=\"\"\n    if [[ \"$IS_LAST\" == \"last\" ]]; then\n      printf \"└─%s/\\\\n\" \"$DIR\"\n      PREFIX=\"    \"\n    else\n      printf \"├─%s/\\\\n\" \"$DIR\"\n      PREFIX=\"│   \"\n    fi\n    printf \"%s%s\\\\n\" \"$PREFIX\" \"$NAME\"\n    printf \"%s%s\\\\n\" \"$PREFIX\" \"$NAMESPACE\"\n    if [ -z \"$REQUIRE\" ]; then\n      true\n    else\n      if [ \"$REQUIRE\" != \" \" ]; then\n        printf   \"%s%s\\\\n\" \"$PREFIX\" \"$REQUIRE\"\n      fi\n    fi\n  fi\n}\n\n\nNOW=\"1$(/opt/homebrew/bin/gdate +%N)\"\nDELTA_MS=$(( $(($NOW-$PREV_TIME)) / 1000000))\necho \"DELTAms ${DELTA_MS}  - define functions\"\nPREV_TIME=\"1$(/opt/homebrew/bin/gdate +%N)\"\n\n\n\nPACKAGE_NAME=\"chalk-console\"\nPACKAGE_NAME_UPPER_CAMEL=\"ChalkConsole\"\nNAMESPACE=\"ChalkConsole\"\nPUBLIC_LIB_NAME=\"chalk-console.lib\"\n#Default Namespace\nlib_NAMESPACE=\"ChalkConsole\"\n#Default Requires\nlib_REQUIRE=\"\"\n#Default Flags\nlib_FLAGS=\"\"\nlib_OCAMLC_FLAGS=\"\"\nlib_OCAMLOPT_FLAGS=\"\"\nlib_PREPROCESS=\"\"\nlib_C_NAMES=\"\"\n#Default Requires\nbin_REQUIRE=\"\"\n#Default Flags\nbin_FLAGS=\"\"\nbin_OCAMLC_FLAGS=\"\"\nbin_OCAMLOPT_FLAGS=\"\"\nbin_PREPROCESS=\"\"\nbin_C_NAMES=\"\"\nlib_NAMESPACE=\"\"ChalkConsole\"\"\nbin_MAIN_MODULE=\"\"TestChalkConsole\"\"\nlib_REQUIRE=\" console.lib chalk.lib \"\nbin_REQUIRE=\" console.lib chalk.lib chalk-console.lib \"\n\n\nNOW=\"1$(/opt/homebrew/bin/gdate +%N)\"\nDELTA_MS=$(( $(($NOW-$PREV_TIME)) / 1000000))\necho \"DELTAms ${DELTA_MS}  - define build variables\"\nPREV_TIME=\"1$(/opt/homebrew/bin/gdate +%N)\"\n\nprintDirectory \"lib\" \"library name: chalk-console.lib\" \"namespace:    $lib_NAMESPACE\" \"require:     $lib_REQUIRE\" not-last\nprintDirectory \"bin\" \"name:    ChalkConsole.exe\" \"main:    ${bin_MAIN_MODULE:-$DEFAULT_MAIN_MODULE_NAME}\" \"require:$bin_REQUIRE\" last\n\n\nNOW=\"1$(/opt/homebrew/bin/gdate +%N)\"\nDELTA_MS=$(( $(($NOW-$PREV_TIME)) / 1000000))\necho \"DELTAms ${DELTA_MS}  - print directories\"\nPREV_TIME=\"1$(/opt/homebrew/bin/gdate +%N)\"\n\n\n# Perform validation:\n\nLIB_DIR=\"${cur__root}/lib\"\nLIB_DUNE_FILE=\"${LIB_DIR}/dune\"\n\n# TODO: Error if there are multiple libraries all using the default namespace.\nif [ -d \"${LIB_DIR}\" ]; then\n  true\nelse\n  BUILD_STALE_PROBLEM=\"true\"\n  notifyUser\n  if [ \"${MODE}\" == \"build\" ]; then\n    printf \"    □  Your project is missing the lib directory described in package.json buildDirs\\\\n\"\n  else\n    printf \"    %s☒%s  Your project is missing the lib directory described in package.json buildDirs\\\\n\" \"${BOLD}${GREEN}\" \"${RESET}\"\n    mkdir -p \"${LIB_DIR}\"\n  fi\nfi\n\nNOW=\"1$(/opt/homebrew/bin/gdate +%N)\"\nDELTA_MS=$(( $(($NOW-$PREV_TIME)) / 1000000))\necho \"DELTAms ${DELTA_MS}  - check lib dir\"\nPREV_TIME=\"1$(/opt/homebrew/bin/gdate +%N)\"\n\nLIB_DUNE_CONTENTS=\"\"\nLIB_DUNE_EXISTING_CONTENTS=\"\"\nif [ -f \"${LIB_DUNE_FILE}\" ]; then\n  LIB_DUNE_EXISTING_CONTENTS=$(<\"${LIB_DUNE_FILE}\")\nfi\nLIB_DUNE_CONTENTS=\"(library\"\nLIB_DUNE_CONTENTS=$(printf \"%s\\\\n %s\" \"${LIB_DUNE_CONTENTS}\" \"  ; !!!! This dune file is generated from the package.json file. Do NOT modify by hand.\")\nLIB_DUNE_CONTENTS=$(printf \"%s\\\\n %s\" \"${LIB_DUNE_CONTENTS}\" \"  ; !!!! Instead, edit the package.json and then rerun 'esy pesy' at the project root.\")\nLIB_DUNE_CONTENTS=$(printf \"%s\\\\n %s\" \"${LIB_DUNE_CONTENTS}\" \"  ; The namespace other code see this as\")\nLIB_DUNE_CONTENTS=$(printf \"%s\\\\n %s\" \"${LIB_DUNE_CONTENTS}\" \"  (name ${lib_NAMESPACE})\")\nLIB_DUNE_CONTENTS=$(printf \"%s\\\\n %s\" \"${LIB_DUNE_CONTENTS}\" \"  (public_name chalk-console.lib)\")\nLIB_DUNE_CONTENTS=$(printf \"%s\\\\n %s\\\\n\" \"${LIB_DUNE_CONTENTS}\" \"  (libraries ${lib_REQUIRE})\")\nLIB_DUNE_CONTENTS=$(printf \"%s\\\\n %s\\\\n\" \"${LIB_DUNE_CONTENTS}\" \"  (c_names ${lib_C_NAMES})  ; From package.json cNames field\")\nLIB_DUNE_CONTENTS=$(printf \"%s\\\\n %s\\\\n\" \"${LIB_DUNE_CONTENTS}\" \"  (flags (:standard ${lib_FLAGS}))  ; From package.json flags field\")\nLIB_DUNE_CONTENTS=$(printf \"%s\\\\n %s\\\\n\" \"${LIB_DUNE_CONTENTS}\" \"  (ocamlc_flags (:standard ${lib_OCAMLC_FLAGS}))  ; From package.json ocamlcFlags field\")\nLIB_DUNE_CONTENTS=$(printf \"%s\\\\n %s\\\\n\" \"${LIB_DUNE_CONTENTS}\" \"  (ocamlopt_flags (:standard ${lib_OCAMLOPT_FLAGS}))) ; From package.json ocamloptFlags\")\n\n\nNOW=\"1$(/opt/homebrew/bin/gdate +%N)\"\nDELTA_MS=$(( $(($NOW-$PREV_TIME)) / 1000000))\necho \"DELTAms ${DELTA_MS}  - create lib build file\"\nPREV_TIME=\"1$(/opt/homebrew/bin/gdate +%N)\"\n\nif [ \"${LIB_DUNE_EXISTING_CONTENTS}\" == \"${LIB_DUNE_CONTENTS}\" ]; then\n  true\nelse\n  notifyUser\n  BUILD_STALE_PROBLEM=\"true\"\n  if [ \"${MODE}\" == \"build\" ]; then\n    printf \"    □  Update lib/dune build config\\\\n\"\n  else\n    printf \"    %s☒%s  Update lib/dune build config\\\\n\" \"${BOLD}${GREEN}\" \"${RESET}\"\n    printf \"%s\" \"$LIB_DUNE_CONTENTS\" > \"${LIB_DUNE_FILE}\"\n  fi\nfi\n\nNOW=\"1$(/opt/homebrew/bin/gdate +%N)\"\nDELTA_MS=$(( $(($NOW-$PREV_TIME)) / 1000000))\necho \"DELTAms ${DELTA_MS}  - verify lib build existing contents\"\nPREV_TIME=\"1$(/opt/homebrew/bin/gdate +%N)\"\n\n\nBIN_DIR=\"${cur__root}/bin\"\nBIN_DUNE_FILE=\"${BIN_DIR}/dune\"\n# FOR BINARY IN DIRECTORY bin\nbin_MAIN_MODULE=\"${bin_MAIN_MODULE:-$DEFAULT_MAIN_MODULE_NAME}\"\n\nbin_MAIN_MODULE_NAME=\"${bin_MAIN_MODULE%%.*}\"\n\n\nNOW=\"1$(/opt/homebrew/bin/gdate +%N)\"\nDELTA_MS=$(( $(($NOW-$PREV_TIME)) / 1000000))\necho \"DELTAms ${DELTA_MS}  - setup bin vars\"\nPREV_TIME=\"1$(/opt/homebrew/bin/gdate +%N)\"\n\n# https://stackoverflow.com/a/965072\nif [ \"$bin_MAIN_MODULE_NAME\"==\"$bin_MAIN_MODULE\" ]; then\n  # If they did not specify an extension, we'll assume it is .re\n  bin_MAIN_MODULE_FILENAME=\"${bin_MAIN_MODULE}.re\"\nelse\n  bin_MAIN_MODULE_FILENAME=\"${bin_MAIN_MODULE}\"\nfi\n\nNOW=\"1$(/opt/homebrew/bin/gdate +%N)\"\nDELTA_MS=$(( $(($NOW-$PREV_TIME)) / 1000000))\necho \"DELTAms ${DELTA_MS}  - check bin main mod name\"\nPREV_TIME=\"1$(/opt/homebrew/bin/gdate +%N)\"\n\n\nif [ -f  \"${BIN_DIR}/${bin_MAIN_MODULE_FILENAME}\" ]; then\n  true\nelse\n  BUILD_STALE_PROBLEM=\"true\"\n  notifyUser\n  echo \"\"\n  if [ \"${MODE}\" == \"build\" ]; then\n    printf \"    □  Generate %s main module\\\\n\" \"${bin_MAIN_MODULE_FILENAME}\"\n  else\n    printf \"    %s☒%s  Generate %s main module\\\\n\" \"${BOLD}${GREEN}\" \"${RESET}\" \"${bin_MAIN_MODULE_FILENAME}\"\n    mkdir -p \"${BIN_DIR}\"\n    printf \"print_endline(\\\"Hello!\\\");\" > \"${BIN_DIR}/${bin_MAIN_MODULE_FILENAME}\"\n  fi\nfi\n\n\n\nNOW=\"1$(/opt/homebrew/bin/gdate +%N)\"\nDELTA_MS=$(( $(($NOW-$PREV_TIME)) / 1000000))\necho \"DELTAms ${DELTA_MS}  - check bin main module exists\"\nPREV_TIME=\"1$(/opt/homebrew/bin/gdate +%N)\"\n\nif [ -d \"${BIN_DIR}\" ]; then\n  LAST_EXE_NAME=\"ChalkConsole.exe\"\n  BIN_DUNE_EXISTING_CONTENTS=\"\"\n  if [ -f \"${BIN_DUNE_FILE}\" ]; then\n    BIN_DUNE_EXISTING_CONTENTS=$(<\"${BIN_DUNE_FILE}\")\n  else\n    BIN_DUNE_EXISTING_CONTENTS=\"\"\n  fi\n\n  NOW=\"1$(/opt/homebrew/bin/gdate +%N)\"\n  DELTA_MS=$(( $(($NOW-$PREV_TIME)) / 1000000))\n  echo \"DELTAms ${DELTA_MS}  - read existing dune bin contents\"\n  PREV_TIME=\"1$(/opt/homebrew/bin/gdate +%N)\"\n\n\n  BIN_DUNE_CONTENTS=\"(executable\"\n  BIN_DUNE_CONTENTS=$(printf \"%s\\\\n %s\" \"${BIN_DUNE_CONTENTS}\" \"  ; !!!! This dune file is generated from the package.json file. Do NOT modify by hand.\")\n  BIN_DUNE_CONTENTS=$(printf \"%s\\\\n %s\" \"${BIN_DUNE_CONTENTS}\" \"  ; !!!! Instead, edit the package.json and then rerun 'esy pesy' at the project root.\")\n  BIN_DUNE_CONTENTS=$(printf \"%s\\\\n %s\" \"${BIN_DUNE_CONTENTS}\" \"  ; The entrypoint module\")\n  BIN_DUNE_CONTENTS=$(printf \"%s\\\\n %s\" \"${BIN_DUNE_CONTENTS}\" \"  (name ${bin_MAIN_MODULE_NAME})  ;  From package.json main field\")\n  BIN_DUNE_CONTENTS=$(printf \"%s\\\\n %s\" \"${BIN_DUNE_CONTENTS}\" \"  (public_name ChalkConsole.exe)  ;  From package.json name field\")\n  BIN_DUNE_CONTENTS=$(printf \"%s\\\\n %s\\\\n\" \"${BIN_DUNE_CONTENTS}\" \"  (libraries ${bin_REQUIRE}) ;  From package.json require field (array of strings)\")\n  BIN_DUNE_CONTENTS=$(printf \"%s\\\\n %s\\\\n\" \"${BIN_DUNE_CONTENTS}\" \"  (flags (:standard ${bin_FLAGS})) ;  From package.json flags field\")\n  BIN_DUNE_CONTENTS=$(printf \"%s\\\\n %s\\\\n\" \"${BIN_DUNE_CONTENTS}\" \"  (ocamlc_flags (:standard ${bin_OCAMLC_FLAGS}))  ; From package.json ocamlcFlags field\")\n  BIN_DUNE_CONTENTS=$(printf \"%s\\\\n %s\\\\n\" \"${BIN_DUNE_CONTENTS}\" \"  (ocamlopt_flags (:standard ${bin_OCAMLOPT_FLAGS})))  ; From package.json ocamloptFlags field\")\n\n\n  \n  NOW=\"1$(/opt/homebrew/bin/gdate +%N)\"\n  DELTA_MS=$(( $(($NOW-$PREV_TIME)) / 1000000))\n  echo \"DELTAms ${DELTA_MS}  - create bin dune contents\"\n  PREV_TIME=\"1$(/opt/homebrew/bin/gdate +%N)\"\n\n  if [ \"${BIN_DUNE_EXISTING_CONTENTS}\" == \"${BIN_DUNE_CONTENTS}\" ]; then\n    true\n  else\n    notifyUser\n    BUILD_STALE_PROBLEM=\"true\"\n    if [ \"${MODE}\" == \"build\" ]; then\n      printf \"    □  Update bin/dune build config\\\\n\"\n    else\n      printf \"    %s☒%s  Update bin/dune build config\\\\n\" \"${BOLD}${GREEN}\" \"${RESET}\"\n      printf \"%s\" \"${BIN_DUNE_CONTENTS}\" > \"${BIN_DUNE_FILE}\"\n      mkdir -p \"${BIN_DIR}\"\n    fi\n  fi\n  \n  NOW=\"1$(/opt/homebrew/bin/gdate +%N)\"\n  DELTA_MS=$(( $(($NOW-$PREV_TIME)) / 1000000))\n  echo \"DELTAms ${DELTA_MS}  - check bin against required bin\"\n  PREV_TIME=\"1$(/opt/homebrew/bin/gdate +%N)\"\n\nelse\n  BUILD_STALE_PROBLEM=\"true\"\n  notifyUser\n  if [ \"${MODE}\" == \"build\" ]; then\n    printf \"    □  Generate missing the bin directory described in package.json buildDirs\\\\n\"\n  else\n    printf \"    %s☒%s  Generate missing the bin directory described in package.json buildDirs\\\\n\" \"${BOLD}${GREEN}\" \"${RESET}\"\n    mkdir -p \"${BIN_DIR}\"\n  fi\nfi\n\nif [ -f  \"${cur__root}/dune\" ]; then\n  true\nelse\n  BUILD_STALE_PROBLEM=\"true\"\n  notifyUser\n  if [ \"${MODE}\" == \"build\" ]; then\n    printf \"    □  Update ./dune to ignore node_modules\\\\n\"\n  else\n    printf \"    %s☒%s  Update ./dune to ignore node_modules\\\\n\" \"${BOLD}${GREEN}\" \"${RESET}\"\n    printf \"(ignored_subdirs (node_modules))\" > \"${cur__root}/dune\"\n  fi\nfi\n\nNOW=\"1$(/opt/homebrew/bin/gdate +%N)\"\nDELTA_MS=$(( $(($NOW-$PREV_TIME)) / 1000000))\necho \"DELTAms ${DELTA_MS}  - check root dune exists\"\nPREV_TIME=\"1$(/opt/homebrew/bin/gdate +%N)\"\n\n\n\nif [ -f  \"${cur__root}/${PACKAGE_NAME}.opam\" ]; then\n  true\nelse\n  BUILD_STALE_PROBLEM=\"true\"\n  notifyUser\n  if [ \"${MODE}\" == \"build\" ]; then\n    printf \"    □  Add %s\\\\n\" \"${PACKAGE_NAME}.opam\"\n  else\n    printf \"    %s☒%s  Add %s\\\\n\" \"${BOLD}${GREEN}\" \"${RESET}\" \"${PACKAGE_NAME}.opam\" \n    touch \"${cur__root}/${PACKAGE_NAME}.opam\"\n  fi\nfi\n\n\nNOW=\"1$(/opt/homebrew/bin/gdate +%N)\"\nDELTA_MS=$(( $(($NOW-$PREV_TIME)) / 1000000))\necho \"DELTAms ${DELTA_MS}  - check opam file exists\"\nPREV_TIME=\"1$(/opt/homebrew/bin/gdate +%N)\"\n\n\nif [ -f  \"${cur__root}/dune-project\" ]; then\n  true\nelse\n  BUILD_STALE_PROBLEM=\"true\"\n  notifyUser\n  if [ \"${MODE}\" == \"build\" ]; then\n    printf \"    □  Add a ./dune-project\\\\n\"\n  else\n    printf \"    %s☒%s  Add a ./dune-project\\\\n\" \"${BOLD}${GREEN}\" \"${RESET}\"\n    printf \"(lang dune 1.0)\\\\n (name %s)\" \"${PACKAGE_NAME}\" > \"${cur__root}/dune-project\"\n  fi\nfi\n\nNOW=\"1$(/opt/homebrew/bin/gdate +%N)\"\nDELTA_MS=$(( $(($NOW-$PREV_TIME)) / 1000000))\necho \"DELTAms ${DELTA_MS}  - check root dune-project file exists\"\nPREV_TIME=\"1$(/opt/homebrew/bin/gdate +%N)\"\n\n\nif [ \"${MODE}\" == \"build\" ]; then\n  if [ \"${BUILD_STALE_PROBLEM}\" == \"true\" ]; then\n    printf \"\\\\n  %sTo perform those updates and build run:%s\\n\\n\" \"${BOLD}${YELLOW}\" \"${RESET}\"\n    printf \"    esy pesy\\\\n\\\\n\\\\n\\\\n\"\n    exit 1\n  else\n    # If you list a refmterr as a dev dependency, we'll use it!\n\n    BUILD_FAILED=\"\"\n    if hash refmterr 2>/dev/null; then\n      refmterr dune build -p \"${PACKAGE_NAME}\" || BUILD_FAILED=\"true\"\n    else\n      dune build -p \"${PACKAGE_NAME}\" || BUILD_FAILED=\"true\"\n    fi\n\n    NOW=\"1$(/opt/homebrew/bin/gdate +%N)\"\n    DELTA_MS=$(( $(($NOW-$PREV_TIME)) / 1000000))\n    echo \"DELTAms ${DELTA_MS}  - perform actual build\"\n    PREV_TIME=\"1$(/opt/homebrew/bin/gdate +%N)\"\n\n    if [ -z \"$BUILD_FAILED\" ]; then\n      printf \"\\\\n%s  Build Succeeded!%s \" \"${BOLD}${GREEN}\" \"${RESET}\"\n      if [ -z \"$LAST_EXE_NAME\" ]; then\n        printf \"\\\\n\\\\n\"\n        true\n      else\n        # If we built an EXE\n        printf \"%sTo test a binary:%s\\\\n\\\\n\" \"${BOLD}\" \"${RESET}\"\n        printf \"      esy x %s\\\\n\\\\n\\\\n\" \"${LAST_EXE_NAME}\"\n      fi\n      true\n      NOW=\"1$(/opt/homebrew/bin/gdate +%N)\"\n      DELTA_MS=$(( $(($NOW-$PREV_TIME)) / 1000000))\n      echo \"DELTAms ${DELTA_MS}  - check build failure\"\n      PREV_TIME=\"1$(/opt/homebrew/bin/gdate +%N)\"\n    else\n      exit 1\n    fi\n  fi\nelse\n  # In update mode.\n  if [ \"${BUILD_STALE_PROBLEM}\" == \"true\" ]; then\n    printf \"\\\\n  %sUpdated!%s %sNow run:%s\\\\n\\\\n\" \"${BOLD}${GREEN}\" \"${RESET}\" \"${BOLD}\" \"${RESET}\"\n    printf \"    esy build\\\\n\\\\n\\\\n\"\n  else\n    printf \"\\\\n  %sAlready up to date!%s %sNow run:%s\\\\n\\\\n\" \"${BOLD}${GREEN}\" \"${RESET}\" \"${BOLD}\" \"${RESET}\"\n    printf \"      esy build\\\\n\\\\n\\\\n\"\n  fi\nfi\n\n      NOW=\"1$(/opt/homebrew/bin/gdate +%N)\"\n      DELTA_MS=$(( $(($NOW-$PREV_TIME)) / 1000000))\n      echo \"DELTAms ${DELTA_MS}  - end\"\n      PREV_TIME=\"1$(/opt/homebrew/bin/gdate +%N)\"\n\n      NOW=\"1$(/opt/homebrew/bin/gdate +%N)\"\n      DELTA_MS=$(( $(($NOW-$PREV_TIME)) / 1000000))\n      echo \"DELTAms ${DELTA_MS}  - end\"\n      PREV_TIME=\"1$(/opt/homebrew/bin/gdate +%N)\"\n\n```\n\n\n\nAlthough we quickly call into genEverything if the package.json hasn't changed,\nthere appears to be an 80ms overhead in pesy until we get to that point.\n\n\nDELTAms 4 - baseline margin of error amount\nDELTAms 5 - check help\nDELTAms 12 - check env\nDELTAms 13 - check create\nDELTAms 7 - record pesy dir\n\nsuper-project-now@0.0.0\nDELTAms 6 - output title\nDELTAms 7 - mkdir cur__target_dir\nDELTAms 7 - check if md5 exists\nDELTAms 12 - compute md5\nDELTAms 14 - get previous md5\n"
  },
  {
    "path": "notes/checksum-verification.md",
    "content": "# Checksum verification\n\nAs we create the build artifacts to publish to NPM, we also generate the SHA1 hash\nof the `.tgz` file created by `npm pack`, in a manner similar to how npm does.\nThis way, you can verify that the package published to NPM is infact the same\nset of binaries that were built on CI.\n\nYou can verify this by following this simple steps.\n\n1. Head over to CI logs as per the release version\n\n   a. [Pre-beta](https://dev.azure.com/pesy/pesy/_build/results?buildId=103)\n\n2) Navigate to the `Release Job` section\n\n![release-job](./images/release-job.png \"Release job section\")\n\n3. Look for 'Calculating sha1'\n\n![calculating-sha1](./images/calculating-sha1.png \"Calculating sha1 option in the logs\")\n\n4. Verify its the same as the one in `npm info pesy`. Of course, ensure that the version\n   you see in `npm info pesy` is the same the one in the logs.\n\n![sha1-logs](./images/sha1-logs.png \"SHA1 hash in the logs\")\n\nYou can also download the package straight from the CI and check if it is the\nsame as the one on NPM.\n\n1. In the same logs, on the top right you would see a blue button labeled `Artifacts`\n\n![top-right-corner](./images/top-right-corner.png \"Artifacts button on the top right corner\")\n\n2. In the sub menu drawn up by `Artifacts`, click on `Release`. This is the job where we\n   collect are platform binaries and package them for NPM. You'll only find platform-specfic\n   binaries in the other jobs.\n\n![release-option](./images/release-option.png \"Release option\")\n\n3. A file explorer like interface opens on clicking `Release` as explained in the previous step.\n   Click on the `Release` folder - the only option. We run `npm pack` in this directory structure.\n\n![artifacts-explorer](./images/artifacts-explorer.png \"Artifacts explorer\")\n\n4. `pesy-<version>.tgz` is the tar file that published to npm. You can uncompress and inspect its\n   contents, or check its SHA1 integrity and ensure it's the same as the one on NPM\n\n![download](./images/download.png \"Download option for pesy-<version>.tgz\")\n\n5. You might have to tap on the file once to show the kebab menu.\n\n![tap-for-kebab](./images/tap-for-kebab.png \"Tap for Kebab menu\")\n\n\n"
  },
  {
    "path": "notes/compiler-support.org",
    "content": "* Compiler support\n\n  This is an attempt to document compiler support pesy provides.\n  \n** Terminologies\n\n   As defined in [[https://esy.sh/docs/en/environment.html][Esy's documentation]]\n\n   - Regular dependencies\n\n    #+begin_quote\n    Regular dependencies are dependencies which are needed at\n    runtime. They are listed in \"dependencies\" key of the\n    package.json. \n    #+end_quote \n    \n   - Development dependencies\n    #+begin_quote\n    are dependencies which are needed only during development. They\n    are listed in \"devDependencies\" key of the package.json. Examples:\n    @opam/merlin, @opam/ocamlformat and so on.\n    #+end_quote\n\n** Regular dependencies must be atleast 4.4.2004 because of ocamlbuild and base\n   \n    Base becase (and @pesy/esy-pesy -> @opam/sexplib -> @opam/parsexp -> @opam/base -> ocaml@>=4.4.2)\n   \n**  4.4 cannot be supported - possibly because of a solver bug in esy\n\n    #+begin_example\n        [ERROR] It appears that the num library was previously installed to your system\n                compiler's lib directory, probably by a faulty opam package.\n                You will need to remove arith_flags.*, arith_status.*, big_int.*,\n                int_misc.*, nat.*, num.*, ratio.*, nums.*, libnums.* and\n                stublibs/dllnums.* from /Users/manas/.esy/3___________________________________________________________________/i/ocaml-4.4.2004-52c21c80/lib/ocaml.\n        make: *** [findlib-install] Error 1\n        error: command failed: 'make' 'LIBDIR=/Users/manas/.esy/3___________________________________________________________________/s/opam__s__num-opam__c__1.3-c60c3f0c/lib' 'findlib-install' (exited with 2)\n        esy-build-package: exiting with errors above...\n    #+end_example\n    esy seeems to fetch num1.3 for compiler 4.4 when it's supposed to\n    fetch num.0. Reported [[https://github.com/esy/esy/issues/1013][here]]\n\n**  Development dependencies must be altleast is 4.6 because of refmterr \n\n    It uses string_of_bool_opt available post 4.05 only\n\n**  When dependencies: \"ocaml\": \"4.4.2004 - 4.8\" and devDependencies: \"ocaml\": \"4.6.10 - 4.8\"\n   \n    #+begin_example\n    Conflicting constraints:\n        @pesy/esy-pesy -> @reason-native/pastel -> @opam/re -> @opam/seq -> \n        ocaml@<4.7.0\n        @pesy/esy-pesy -> ocaml@=4.8.1000\n    #+end_example \n    ie if consuming packages want to use ocaml > 4.7, latest seq\n    package (which is basically empty since the compiler supports\n    natively) must be used. If consuming package is < 4.7, c-cube\n    fallback package must be used. Esy's resolutions field cannot be\n    used to vendor seq package - resolutions package can only be\n    used to pin one package at a time.\n\n** 4.9 support\n\n    #+begin_example\n        Conflicting constraints:\n        @pesy/esy-pesy -> @opam/sexplib -> @opam/parsexp -> @opam/base -> ocaml@>=4.4.2 && ocaml@<4.9.0\n        @pesy/esy-pesy -> ocaml@=4.9.0\n    #+end_example\n    Upgrading base requires latest dune. So 4.9 needs newer\n    dune. TODO\n"
  },
  {
    "path": "notes/e2e.org",
    "content": "* Setup\n\n  Recently [[https://github.com/esy/pesy/pull/105][Windows CI started failing]] due disk space issue. This could\n  be due to the heavy e2e setup - multiple test projects were probably\n  installing too many dependencies\n\n  As a work around, we're writing an in place e2e setup that actually\n  reflects developer workflow - it would bootstrap a new project and\n  edit it in place.\n\n  This time around, we aim to test error cases too\n\n* Issues with mdx attempt\n\n  [[https://github.com/realworldocaml/mdx][MDX]] was the ideal tool for this. But unfortunately, we're testing a\n  cli tool that call =esy=. Using =MDX= meant we had to use esy to run\n  the tests and running a cli tool that spawns esy within esy can be\n  challenging. For instance, we had tried setting up the following\n\n  #+BEGIN_SRC lisp\n    (alias\n     (name runtest)\n     (deps (:t test.t) (source_tree ./files))\n     (action\n      (progn\n       (run pwd)\n       (run echo \"%{project_root}/npm-cli/pesy\")\n       (setenv ESY__PROJECT \".\"\n\t(setenv OCAMLRUNPARAM b\n\t(setenv TEST_PROJECT_DIR \".\"\n\t (setenv\n\t   PESY %{bin:pesy}\n\t  (run %{bin:mdx} test --syntax=cram %{t})))))\n       (diff? %{t} %{t}.corrected))))\n  #+END_SRC\n\n  and\n\n  #+BEGIN_SRC sh\n    The simplest case: running pesy in an empty directory\n\n\t$ mkdir -p $TEST_PROJECT_DIR\n\t$ cp -R $PWD/files/package.json $TEST_PROJECT_DIR\n\t$ cd $TEST_PROJECT_DIR; $PESY\n  #+END_SRC\n\n  It needs =MDX= which is available only in the sandbox and =esy-pesy=\n  runs =esy status= which assumes the root package.json is the root\n  not the test-project folder inside the =_build=. Writing to external $TMPDIR\n\n\n"
  },
  {
    "path": "notes/release.org",
    "content": "* Release process\n\n  The release process is mostly manual right now and works like this.\n  \n** @pesy/esy-pesy\n\n   1. =git ls-files | xargs sed -i 's/dev.<num>/alpha.<num/g'=\n   2. Commit and push\n   3. Tag the commit for just =@pesy/esy-pesy=\n   4. =npm publish= (watch the tag)\n\n \n   =@pesy/esy-pesy= is preferably released first so that =pesy-reason-template= can be updated with it\n\n  \n** Update pesy-reason-template with the newly released @pesy/esy-pesy\n\n   The diff usually looks like this\n\n   #+begin_src diff\n   - \"@pesy/esy-pesy\": \"<old version>\"\n   + \"@pesy/esy-pesy\": \"<new version>\"\n   #+end_src\n\n   \n** pesy\n\n   Same as =@pesy/esy-pesy=\n   \n   1. =git ls-files | xargs sed -i 's/dev.<num>/alpha.<num/g'=\n   2. Commit and push\n   3. Tag the commit for just =@pesy/esy-pesy=\n   4. =npm publish= (watch the tag)\n\n** Back to dev version for further development\n\n   1. Revert the two commits that bump to release versions\n   2. =git ls-files | xargs sed -i 's/dev.<num>/dev.<num + 1>/g'=\n   3. Commit and push\n"
  },
  {
    "path": "npm-cli/.gitignore",
    "content": ".DS_Store\n.merlin\n.bsb.lock\nnpm-debug.log\n/lib/bs/\n/node_modules/\npesy.bundle.js\npesy-*.tgz\n*.map"
  },
  {
    "path": "npm-cli/.npmignore",
    "content": "src/*"
  },
  {
    "path": "npm-cli/.vscode/tasks.json",
    "content": "{\n    \"version\": \"0.1.0\",\n    \"command\": \"npm\",\n    \"options\": {\n      \"cwd\": \"${workspaceRoot}\",\n      \"env\": {\n        \"BS_VSCODE\" : \"true\"\n      }\n    },\n    \"type\": \"shell\",\n    \"args\": [\"run\", \"start\"],\n    \"presentation\": {\n      \"echo\": true,\n      \"reveal\": \"always\",\n      \"focus\": false,\n      \"panel\": \"shared\"\n    },\n    \"isBackground\": true,\n    \"problemMatcher\": {\n      \"fileLocation\": \"absolute\",\n      \"owner\": \"ocaml\",\n      \"background\": {\n        \"activeOnStart\": false,\n        \"beginsPattern\": \">>>> Start compiling\",\n        \"endsPattern\": \">>>> Finish compiling\"\n      },\n      \"pattern\": [\n        {\n          \"regexp\":\n            \"^File \\\"(.*)\\\", line (\\\\d+)(?:, characters (\\\\d+)-(\\\\d+))?:$\",\n          \"file\": 1,\n          \"line\": 2,\n          \"column\": 3,\n          \"endColumn\": 4\n        },\n        {\n          \"regexp\":\n            \"^(?:(?:Parse\\\\s+)?(Warning|[Ee]rror)(?:\\\\s+\\\\d+)?:)?\\\\s+(.*)$\",\n          \"severity\": 1,\n          \"message\": 2,\n          \"loop\": true\n        }\n      ]\n    }\n  }\n"
  },
  {
    "path": "npm-cli/README.md",
    "content": "# Basic Reason Template\n\nHello! This project allows you to quickly get started with Reason and BuckleScript. If you wanted a more sophisticated version, try the `react` template (`bsb -theme react -init .`).\n\n# Build\n```\nnpm run build\n```\n\n# Build + Watch\n\n```\nnpm run start\n```\n\n\n# Editor\nIf you use `vscode`, Press `Windows + Shift + B` it will build automatically\n"
  },
  {
    "path": "npm-cli/__tests__/utils_test.re",
    "content": "open Jest;\nopen Expect;\nopen! Expect.Operators;\n\nopen Utils;\n\ndescribe(\"kebab function\", () => {\n    test(\"sample 1\", () =>\n      \"Esy Pesy\" |> kebab\n      |> expect |> toBe(\"esy-pesy\")\n    );\n    test(\"sample 2\", () =>\n      \"Hello-World-2020!\" |> kebab\n      |> expect |> toBe(\"hello-world-2020!\")\n    );\n  }\n);\n\ndescribe(\"removeScope function\", () => {\n    test(\"no forward slash\", () =>\n      \"esy-pesy\" |> removeScope\n      |> expect |> toEqual(\"esy-pesy\")\n    );\n    test(\"forward slash at the beginning\", () =>\n      \"/esy-pesy\" |> removeScope\n      |> expect |> toEqual(\"esy-pesy\")\n    );\n    test(\"forward slash in between\", () =>\n      \"esy/pesy\" |> removeScope\n      |> expect |> toEqual(\"pesy\")\n    );\n    test(\"forward slash at the end\", () =>\n      \"esy-pesy/\" |> removeScope\n      |> expect |> toEqual(\"\")\n    );\n    test(\"multiple forward slashes\", () =>\n      \"/esy/pesy/lemon/squeezy\" |> removeScope\n      |> expect |> toEqual(\"squeezy\")\n    );\n  }\n);\n\ndescribe(\"upperCamelCasify function\", () => {\n    test(\"should camelCasify\", () =>\n      \"esy-pesy\" |> upperCamelCasify\n      |> expect |> toEqual(\"EsyPesy\")\n    );\n    test(\"forward slash(/) at the beginning\", () =>\n      \"/esy-pesy\" |> upperCamelCasify\n      |> expect |> toEqual(\"/esyPesy\")\n    );\n    test(\"forward slash(/) in between\", () =>\n      \"esy/pesy\" |> upperCamelCasify\n      |> expect |> toEqual(\"Esy/pesy\")\n    );\n    test(\"forward slash(/) at the end\", () =>\n      \"esy-pesy/\" |> upperCamelCasify\n      |> expect |> toEqual(\"EsyPesy/\")\n    );\n  }\n);\n"
  },
  {
    "path": "npm-cli/bsconfig.json",
    "content": "{\n  \"name\": \"pesy-bootstrapper\",\n  \"version\": \"0.1.0\",\n  \"sources\": [\n    {\n      \"dir\": \"src\",\n      \"subdirs\": true\n    },\n    {\n      \"dir\": \"__tests__\",\n      \"type\": \"dev\"\n    }\n  ],\n  \"package-specs\": {\n    \"module\": \"commonjs\"\n  },\n  \"suffix\": \".bs.js\",\n  \"bs-dependencies\": [\n    \"@glennsl/bs-json\",\n    \"@glennsl/bs-jest\",\n    \"tablecloth-bucklescript\",\n    \"@prometheansacrifice/bs-cmdliner\"\n  ],\n  \"bsc-flags\": [\"-bs-g\"],\n  \"warnings\": {\n    \"number\": \"-44-102-20\",\n    \"error\": \"+5\"\n  },\n  \"refmt\": 3\n}\n"
  },
  {
    "path": "npm-cli/esy.json",
    "content": "{\n  \"dependencies\": {\n    \"ocaml\": \"4.6.x\",\n    \"@opam/dune\": \"2.7.1\",\n    \"@esy-ocaml/reason\": \"3.6.x\",\n    \"@opam/odoc\": \"*\",\n    \"@opam/ocaml-lsp-server\": \"ocaml/ocaml-lsp:ocaml-lsp-server.opam\",\n    \"@opam/merlin\": \"*\"\n  }\n}\n"
  },
  {
    "path": "npm-cli/package.json",
    "content": "{\n  \"name\": \"pesy\",\n  \"version\": \"0.5.0-dev.23\",\n  \"bin\": {\n    \"pesy\": \"pesy\"\n  },\n  \"esy\": {\n    \"install\": [\n      \"mkdir #{self.install / 'bin' / 'azure-ci-template'}\",\n      \"cp #{self.root / 'v0.4.4' / 'azure-ci-template' / 'azure-pipelines.yml'} #{self.install / 'bin' / 'azure-ci-template/' / 'azure-pipelines.yml'}\",\n      \"cp #{self.root / 'v0.4.4' / 'azure-ci-template' / 'esy-build-steps.template.yml'} #{self.install / 'bin' / 'azure-ci-template/' / 'esy-build-steps.template.yml'}\",\n      \"cp #{self.root / 'v0.4.4' / 'azure-ci-template' / 'publish-build-cache.yml'} #{self.install / 'bin' / 'azure-ci-template/' / 'publish-build-cache.yml'}\",\n      \"cp #{self.root / 'v0.4.4' / 'azure-ci-template' / 'restore-build-cache.yml'} #{self.install / 'bin' / 'azure-ci-template/' / 'restore-build-cache.yml'}\",\n      \"cp #{self.root / 'v0.4.4' / 'pesy'} #{self.install / 'bin' / 'pesy'}\",\n      \"cp #{self.root / 'v0.4.4' / 'pesy-header.sh'} #{self.install / 'bin' / 'pesy-header.sh'}\",\n      \"cp #{self.root / 'v0.4.4' / 'pesy-footer.template.sh'} #{self.install / 'bin' / 'pesy-footer.template.sh'}\",\n      \"cp #{self.root / 'v0.4.4' / 'pesy-genBin.template.sh'} #{self.install / 'bin' / 'pesy-genBin.template.sh'}\",\n      \"cp #{self.root / 'v0.4.4' / 'pesy-genLib.template.sh'} #{self.install / 'bin' / 'pesy-genLib.template.sh'}\",\n      \"cp #{self.root / 'v0.4.4' / 'pesy-JSON.sh'} #{self.install / 'bin' / 'pesy-JSON.sh'}\",\n      \"cp #{self.root / 'v0.4.4' / 'pesy-create.sh'} #{self.install / 'bin' / 'pesy-create.sh'}\",\n      \"cp #{self.root / 'v0.4.4' / 'pesy-name-utils.sh'} #{self.install / 'bin' / 'pesy-name-utils.sh'}\",\n      \"cp #{self.root / 'v0.4.4' / 'pesy-gitignore.template'} #{self.install / 'bin' / 'pesy-gitignore.template'}\",\n      \"cp #{self.root / 'v0.4.4' / 'pesy-package.template.json'} #{self.install / 'bin' / 'pesy-package.template.json'}\",\n      \"cp #{self.root / 'v0.4.4' / 'pesy-README.template.md'} #{self.install / 'bin' / 'pesy-README.template.md'}\"\n    ]\n  },\n  \"scripts\": {\n    \"rollup\": \"rollup -c rollup.config.js\",\n    \"rollup:watch\": \"rollup -c rollup.config.js -w\",\n    \"docs\": \"bsdoc build pesy\",\n    \"bsb\": \"bsb -make-world\",\n    \"build\": \"yarn run bsb && yarn run rollup\",\n    \"package\": \"node scripts/vendor-template.js && yarn run build\",\n    \"prettier\": \"prettier --single-quote --trailing-comma es5 --write src/**.js\",\n    \"test\": \"yarn run build && jest --coverage\",\n    \"bsb:watch\": \"bsb -make-world -w\",\n    \"bsb:clean\": \"bsb -clean-world\"\n  },\n  \"keywords\": [\n    \"esy\",\n    \"pesy\",\n    \"reason\",\n    \"ocaml\"\n  ],\n  \"files\": [\n    \"package.json\",\n    \"pesy\",\n    \"pesy.bundle.js\",\n    \"templates/\",\n    \"stubs/\",\n    \"v0.4.4/\"\n  ],\n  \"license\": \"MIT\",\n  \"devDependencies\": {\n    \"@glennsl/bs-json\": \"^5.0.2\",\n    \"@glennsl/bs-jest\": \"^0.5.0\",\n    \"@prometheansacrifice/bs-cmdliner\": \"1.0.4000\",\n    \"@rollup/plugin-commonjs\": \"^11.0.2\",\n    \"@rollup/plugin-json\": \"^4.0.2\",\n    \"@rollup/plugin-node-resolve\": \"^7.1.1\",\n    \"bs-platform\": \"7.0.1\",\n    \"prettier\": \"^1.19.1\",\n    \"rollup\": \"^1.16.2\",\n    \"tablecloth-bucklescript\": \"0.0.6\",\n    \"bsdoc\": \"*\"\n  },\n  \"bugs\": {\n    \"url\": \"https://github.com/esy/pesy/issues\"\n  },\n  \"homepage\": \"https://github.com/esy/pesy#readme\",\n  \"dependencies\": {\n    \"chalk\": \"^3.0.0\",\n    \"download-git-repo\": \"^2.0.0\",\n    \"request\": \"^2.88.2\",\n    \"request-progress\": \"^3.0.0\",\n    \"rimraf\": \"^3.0.2\",\n    \"source-map-support\": \"^0.5.16\",\n    \"walk-sync\": \"^2.0.2\"\n  },\n  \"resolutions\": {\n    \"mkdirp\": \"1.0.3\"\n  }\n}\n"
  },
  {
    "path": "npm-cli/pesy",
    "content": "#! /usr/bin/env node\n\nrequire('./pesy.bundle.js');\n"
  },
  {
    "path": "npm-cli/pesy.bundle.js.minisig",
    "content": "untrusted comment: signature from minisign secret key\nRWSTA7d4LKXMeRPeL7ceAi164fDdHZ1FIBWA8v6SdC+F496BaNW/H5mEFRhT+mr/6aSBqiIr0uNGXDLnspgUpafBuHL05S6JEw4=\ntrusted comment: By prometheansacrifice\nL54khMsR3AfaT1VG0rhsZwQE7eK9lx1geX79qpMM1qRQAZd9Wv7qJYq4GH5J3lPMlJ4/YARjdz+bXJo3EkXBDA==\n"
  },
  {
    "path": "npm-cli/pesy.js",
    "content": "const Pesy = require(\"./lib/js/src/Pesy.bs.js\");\n\ntry {\n  Pesy.main(process.argv.slice(1)).catch((e) =>\n    console.error(\"Pesy.main rejected promise\", e)\n  );\n} catch (e) {\n  console.error(\"Pesy.main threw an exception\", e);\n}\n"
  },
  {
    "path": "npm-cli/rollup.config.js",
    "content": "// rollup.config.js\nimport commonjs from \"@rollup/plugin-commonjs\";\nimport nodeResolve from \"@rollup/plugin-node-resolve\";\nimport json from \"@rollup/plugin-json\";\n\nexport default {\n  input: \"./pesy.js\",\n  output: {\n    file: \"pesy.bundle.js\",\n    format: \"cjs\",\n    sourcemap: true,\n  },\n  plugins: [\n    nodeResolve({ preferBuiltins: true }),\n    json(),\n    commonjs({\n      ignore: [\"child_process\"],\n    }),\n  ],\n  external: [\n    \"child_process\",\n    \"fs\",\n    \"util\",\n    \"chalk\",\n    \"source-map-support\",\n    \"request\",\n    \"request-progress\",\n    \"process\",\n    \"https\",\n    \"walk-sync\",\n    \"download-git-repo\",\n    \"path\",\n    \"readline\",\n    \"readable-stream\",\n  ],\n};\n"
  },
  {
    "path": "npm-cli/scripts/vendor-template.js",
    "content": "const fs = require(\"fs\");\nconst https = require(\"https\");\nconst path = require(\"path\");\nconst cp = require(\"child_process\");\nconst util = require(\"util\");\n\nlet tag = \"0.1.0-alpha.20\";\nlet url = `https://github.com/esy/pesy-reason-template/archive/${tag}.zip`;\nlet downloadAs = \"template.zip\";\nlet extractedDirName = `pesy-reason-template-${tag}`;\nlet get = (url) =>\n  new Promise((resolve, reject) => {\n    let request = https.get(url, function (response) {\n      resolve({ request, response });\n    });\n  });\n\nlet downloadFromHTTPStream = (response, p) =>\n  new Promise((resolve, reject) => {\n    response.pipe(fs.createWriteStream(p));\n    response.on(\"end\", resolve);\n  });\n\nlet fetch = (url) => {\n  return get(url).then(({ response }) => {\n    if (response.statusCode === 302) {\n      let redirectUri = response.headers[\"location\"];\n      if (redirectUri) {\n        return fetch(redirectUri);\n      } else {\n        return Promise.reject(new Error(\"Redirect location was not found\"));\n      }\n    } else {\n      return downloadFromHTTPStream(\n        response,\n        path.resolve(templateDir, zipFile)\n      );\n    }\n  });\n};\n\nlet delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms));\n\nlet templateDir = \"templates\";\nlet zipTarget = path.resolve(__dirname, \"..\", templateDir, extractedDirName);\nlet zipFile = \"template.zip\";\nlet main = () => {\n  if (!fs.existsSync(path.resolve(\".\", templateDir))) {\n    fs.mkdirSync(path.resolve(\".\", templateDir));\n  }\n  let p;\n  if (!fs.existsSync(path.resolve(\".\", templateDir, zipFile))) {\n    p = fetch(url);\n  } else {\n    p = Promise.resolve();\n  }\n  p.then(() => delay(100))\n    .then(() => {\n      if (!fs.existsSync(zipTarget)) {\n        console.log(\n          `Extracting (entering: ${path.resolve(\n            __dirname,\n            \"..\",\n            templateDir\n          )})...`\n        );\n        return Promise.resolve(\n          cp\n            .execSync(\"unzip -o template.zip\", {\n              cwd: path.resolve(__dirname, \"..\", templateDir),\n            })\n            .toString()\n        );\n      }\n    })\n    .catch((e) => {\n      console.error(e);\n      process.exit(-1);\n    });\n};\n\nmain();\n"
  },
  {
    "path": "npm-cli/src/AzurePipelines.re",
    "content": "open Bindings;\nmodule P = Js.Promise;\n\nmodule ProjectName: {\n  type validated;\n  type unvalidated;\n  type t('a);\n  let ofString: string => t(unvalidated);\n  let validate: t(unvalidated) => t(validated);\n  let toString: t(validated) => string;\n} = {\n  type validated;\n  type unvalidated;\n  type t('a) = string;\n  let ofString = x => x;\n  let validate = x => {\n    let start = x.[0] == '/' ? 1 : 0;\n    let len = Js.String.length(x);\n    let end_ = x.[len - 1] == '/' ? len - 1 : len;\n    Js.String.substring(~from=start, ~to_=end_, x);\n  };\n  let toString = x => x;\n};\n\nmodule E = {\n  type t =\n    | InvalidJSONType(string)\n    | MissingField(string)\n    | InvalidFirstArrayElement;\n\n  let toString =\n    fun\n    | InvalidJSONType(value) => {j|Field $value in Azure's response was undefined|j}\n    | MissingField(k) => {j| Response from Azure did not contain build $k |j}\n    | InvalidFirstArrayElement => \"Unexpected array value in Azure response\";\n};\n\nmodule RESTResponse = {\n  type buildIdObject = {id: int};\n\n  let guard = (jsonParser, str) =>\n    try(jsonParser(str)) {\n    | e =>\n      let msg = Printexc.to_string(e);\n      Error({j|Failed to parse Azure response\n$msg\n$str\n|j});\n    };\n\n  let getBuildId' = json => {\n    open Json.Decode;\n    let buildIdObject = json => {id: field(\"id\", int, json)};\n    let valueArray = field(\"value\", array(buildIdObject), json);\n    valueArray[0].id;\n  };\n\n  let getBuildId =\n    guard(responseText =>\n      switch (Json.parse(responseText)) {\n      | Some(json) => Ok(getBuildId'(json))\n      | None =>\n        Error(\n          {j|getBuildId(): responseText could not be parsed\n------------\n$responseText\n|j},\n        )\n      }\n    );\n\n  type downloadUrlObject = {downloadUrl: string};\n\n  let getDownloadURL' = json => {\n    open Json.Decode;\n    let downloadUrlObject = json => {\n      downloadUrl: field(\"downloadUrl\", string, json),\n    };\n\n    switch (json |> optional(field(\"resource\", downloadUrlObject))) {\n    | Some(resource) => Ok(resource.downloadUrl)\n    | None =>\n      let responseText = Json.stringify(json);\n      Error(\n        {j|getDownloadURL(): responseObject.resource as not of the form { downloadURL: \"...\" }. Instead got\n$responseText |j},\n      );\n    };\n  };\n\n  let getDownloadURL =\n    guard(responseText =>\n      switch (Json.parse(responseText)) {\n      | Some(json) => getDownloadURL'(json)\n      | None => Error(\"getDownloadURL(): could not parse responseText\")\n      }\n    );\n};\n\nlet os =\n  switch (Process.platform) {\n  | \"darwin\" => Some(\"Darwin\")\n  | \"linux\" => Some(\"Linux\")\n  | \"win32\" => Some(\"Windows_NT\")\n  | _ => None\n  };\n\ntype artifact = {\n  filename: string,\n  checksumFilename: string,\n};\n\nlet artifact =\n  switch (os) {\n  | Some(os) =>\n    Some({\n      filename: {j|cache-$os-install-v1|j},\n      checksumFilename: {j|cache-$os-install-v1-checksum|j},\n    })\n  | None => None\n  };\n\nlet master = \"branchName=refs%2Fheads%2Fmaster\";\n\nlet filter = \"deletedFilter=excludeDeleted&statusFilter=completed&resultFilter=succeeded\";\n\nlet latest = \"queryOrder=finishTimeDescending&$top=1\";\nlet restBase = \"https://dev.azure.com\";\n\nlet getDefinitionID = (projName, github) => {\n  let proj = projName |> ProjectName.toString;\n  let definition = Js.String.replace(\"/\", \".\", github);\n  Https.getCompleteResponse(\n    {j|$restBase/$proj/_apis/build/definitions?name=$definition&api-version=4.1|j},\n  )\n  |> P.then_(r =>\n       P.resolve(\n         switch (r) {\n         | Ok(response) => RESTResponse.getBuildId(response)\n         | Error(e) =>\n           switch (e) {\n           | Https.E.Failure(url) => Error({j| Could not download $url |j})\n           }\n         },\n       )\n     );\n};\n\nlet getBuildID = (projName, definitionID) => {\n  let proj = projName |> ProjectName.toString;\n  Https.getCompleteResponse(\n    {j|$restBase/$proj/_apis/build/builds?$filter&$master&$latest&definitions=$definitionID&api-version=4.1|j},\n  )\n  |> P.then_(r =>\n       P.resolve(\n         switch (r) {\n         | Ok(response) => RESTResponse.getBuildId(response)\n         | Error(e) =>\n           switch (e) {\n           | Https.E.Failure(url) => Error({j| Could not download $url |j})\n           }\n         },\n       )\n     );\n};\n\nlet getDownloadURL = (projName, latestBuildID) => {\n  let proj = projName |> ProjectName.toString;\n  let latestBuildID = Js.Int.toString(latestBuildID);\n  switch (artifact) {\n  | Some({filename}) =>\n    Https.getCompleteResponse(\n      {j|$restBase/$proj/_apis/build/builds/$latestBuildID/artifacts?artifactname=$filename&api-version=4.1|j},\n    )\n    |> P.then_(\n         fun\n         | Error(Https.E.Failure(url)) =>\n           Error({j| Failed to download $url |j}) |> P.resolve\n         | Ok(responseText) =>\n           responseText |> RESTResponse.getDownloadURL |> P.resolve,\n       )\n  | None =>\n    Error(\"We detected a platform for which we couldn't find cached builds\")\n    |> P.resolve\n  };\n};\n\nlet getChecksumDownloadURL = (projName, latestBuildID) => {\n  let proj = projName |> ProjectName.toString;\n  let latestBuildID = Js.Int.toString(latestBuildID);\n  switch (artifact) {\n  | Some({checksumFilename}) =>\n    Https.getCompleteResponse(\n      {j|$restBase/$proj/_apis/build/builds/$latestBuildID/artifacts?artifactname=$checksumFilename&api-version=4.1|j},\n    )\n    |> P.then_(\n         fun\n         | Error(Https.E.Failure(url)) =>\n           Error({j| Failed to download $url |j}) |> P.resolve\n         | Ok(responseText) =>\n           responseText |> RESTResponse.getDownloadURL |> P.resolve,\n       )\n  | None =>\n    Error(\"We detected a platform for which we couldn't find cached builds\")\n    |> P.resolve\n  };\n};\n"
  },
  {
    "path": "npm-cli/src/Bindings.re",
    "content": "open Js;\n\nmodule Process = {\n  type t;\n  [@bs.val] external v: t = \"process\";\n  [@bs.val] [@bs.scope \"process\"] external cwd: unit => string = \"cwd\";\n  [@bs.val] [@bs.scope \"process\"] external chdir: string => unit = \"chdir\";\n  [@bs.val] [@bs.scope \"process\"] external platform: string = \"platform\";\n  [@bs.val] [@bs.scope \"process\"] external arch: string = \"arch\";\n  [@bs.val] [@bs.scope \"process\"] external env: Js.Dict.t(string) = \"env\";\n  module Stdout = {\n    type t;\n    [@bs.val] external v: t = \"process.stdout\";\n    [@bs.send] external write: (t, string) => unit = \"write\";\n  };\n};\n\nmodule Error = {\n  type t = {. \"message\": string};\n  [@bs.new] external make: string => t = \"Error\";\n};\n\nmodule JsError = Error;\n\n[@bs.val] [@bs.module \"path\"] external basename: string => string = \"basename\";\n[@bs.val] [@bs.module \"fs\"] external makedirSync: string => unit = \"mkdirSync\";\n[@bs.val] [@bs.module \"fs\"]\nexternal renameSync: (string, string) => unit = \"renameSync\";\n\ntype stats;\n[@bs.val] [@bs.module \"fs\"] external statSync: string => stats = \"statSync\";\n\n[@bs.send] external isFile: stats => bool = \"isFile\";\n\n[@bs.val] [@bs.module \"process\"] external cwd: unit => string = \"cwd\";\n[@bs.val] [@bs.module \"process\"] external argv: array(string) = \"argv\";\nlet scriptPath: string = [%raw \"process.argv[1]\"];\n[@bs.val] external dirname: string = \"__dirname\";\n\n[@bs.module]\nexternal downloadGit: (string, string, Js.Nullable.t(Error.t) => unit) => unit =\n  \"download-git-repo\";\n\nlet downloadGit = (repo, path) =>\n  Promise.make((~resolve, ~reject as _) => {\n    downloadGit(repo, path, err => {\n      switch (Nullable.toOption(err)) {\n      | Some(e) => resolve(. Error(e##message))\n      | None => resolve(. Ok())\n      }\n    })\n  });\n\nmodule Buffer = {\n  type t;\n  [@bs.send] external toString: t => string = \"toString\";\n  [@bs.val] [@bs.scope \"Buffer\"] external from: string => t = \"from\";\n  let ofString = from;\n};\n\nmodule type STREAM = {\n  type t;\n  let onData: (t, string, Buffer.t => unit) => unit;\n  let onEnd: (t, string, unit => unit) => unit;\n  let onClose: (t, string, unit => unit) => unit;\n};\n\nmodule StreamFunctor = (S: {type t;}) => {\n  type t = S.t;\n  [@bs.send] external onData': (t, string, Buffer.t => unit) => unit = \"on\";\n  let onData = (t, cb) => onData'(t, \"data\", cb);\n  [@bs.send] external onEnd': (t, string, unit => unit) => unit = \"on\";\n  let onEnd = (t, cb) => onEnd'(t, \"end\", cb);\n  [@bs.send] external onError': (t, string, Error.t => unit) => unit = \"on\";\n  let onError = (t, cb) => onError'(t, \"error\", cb);\n  let onClose = (t, cb) => onEnd'(t, \"close\", cb);\n};\n\nmodule Stream =\n  StreamFunctor({\n    type t;\n  });\n\n[@bs.module] external walk_sync: string => array(string) = \"walk-sync\";\nmodule ChildProcess: {\n  type t = {. \"exitCode\": int};\n\n  module Options: {\n    type t;\n    let make:\n      (~cwd: string=?, ~env: Js.Dict.t(string)=?, ~stdio: string=?, unit) => t;\n  };\n  exception ExecFailure((string, string, string));\n\n  let spawn: (string, array(string), Options.t) => t;\n  let onClose: (t, int => unit) => unit;\n  let exec:\n    (string, Options.t) => Js.Promise.t(result((int, string, string), unit));\n} = {\n  type t = {. \"exitCode\": int}; // FIXME: async processes dont set exitCode\n\n  exception ExecFailure((string, string, string));\n\n  module Options = {\n    type t;\n    [@bs.obj]\n    external make:\n      (~cwd: string=?, ~env: Js.Dict.t(string)=?, ~stdio: string=?, unit) => t = \"\";\n  };\n\n  [@bs.module \"child_process\"]\n  external spawn: (string, array(string), Options.t) => t = \"spawn\";\n\n  /* [@bs.send] external on': (t, string, unit => unit) => unit = \"on\"; */\n  [@bs.send] external onClose': (t, string, int => unit) => unit = \"on\";\n\n  let onClose = (t, cb) => onClose'(t, \"close\", cb);\n\n  [@bs.module \"child_process\"]\n  external exec:\n    (string, Options.t, (Js.Nullable.t(Error.t), string, string) => unit) =>\n    t /* This should have been `t` - ChildProcess object in Node.js TODO: figure a way to pass it to callback */ =\n    \"exec\";\n\n  let exec = (cmd, options) => {\n    Js.Promise.(\n      make((~resolve, ~reject as _) => {\n        let cp = ref({\"exitCode\": 0});\n        cp :=\n          exec(cmd, options, (err, stdout, stderr) =>\n            if (Js.Nullable.isNullable(err)) {\n              resolve(. Ok(((cp^)##exitCode, stdout, stderr)));\n            } else {\n              resolve(. Error());\n            }\n          );\n        ();\n      })\n    );\n  };\n\n  let spawn = spawn;\n};\n\nmodule Response = {\n  type t = {\n    .\n    \"statusCode\": int,\n    \"headers\": Js.Dict.t(string),\n  };\n\n  [@bs.send] external setEncoding: (t, string) => unit = \"setEncoding\";\n\n  [@bs.send] external on: (t, string, Buffer.t => unit) => unit = \"on\";\n};\n\nmodule Request = {\n  [@bs.module] external request: string => Stream.t = \"request\";\n};\n\nmodule RequestProgress = {\n  type t;\n\n  type state = {\n    .\n    \"percent\": float,\n    \"speed\": int,\n    \"size\": {\n      .\n      \"total\": int,\n      \"transferred\": int,\n    },\n    \"time\": {\n      .\n      \"elapsed\": float,\n      \"remaining\": float,\n    },\n  };\n\n  [@bs.module] external requestProgress: Stream.t => t = \"request-progress\";\n\n  [@bs.send] external onData': (t, string, Buffer.t => unit) => unit = \"on\";\n\n  let onData = (t, cb) => onData'(t, \"data\", cb);\n\n  [@bs.send] external onProgress': (t, string, state => unit) => unit = \"on\";\n\n  let onProgress = (t, cb) => onProgress'(t, \"progress\", cb);\n\n  [@bs.send] external onError': (t, string, JsError.t => unit) => unit = \"on\";\n\n  let onError = (t, cb) => onError'(t, \"error\", cb);\n\n  [@bs.send] external onEnd': (t, string, unit => unit) => unit = \"on\";\n\n  let onEnd = (t, cb) => onEnd'(t, \"end\", cb);\n\n  [@bs.send] external pipe: (t, Stream.t) => unit = \"pipe\";\n};\n\nmodule Https = {\n  module E = {\n    type t =\n      | Failure(string);\n\n    let toString =\n      fun\n      | Failure(url) => {j|Failed to place request to $url|j};\n  };\n\n  [@bs.module \"https\"]\n  external get: (string, Response.t => unit) => Stream.t = \"get\";\n\n  let getCompleteResponse = url =>\n    Promise.make((~resolve, ~reject as _) => {\n      let req = get(\n        url,\n        response => {\n          let _statusCode = response##statusCode;\n          let responseText = ref(\"\");\n          Response.on(response, \"data\", c =>\n            responseText := responseText^ ++ Buffer.toString(c)\n          );\n          Response.on(response, \"end\", _ => resolve(. Ok(responseText^)));\n          Response.on(response, \"error\", _err =>\n            resolve(.\n              Error(\n                E.Failure({j|Error occurred while placing request to $url|j}),\n              ),\n            )\n          );\n        },\n      );\n      Stream.onError(req, error => resolve(. Error(E.Failure(error##message))));\n    });\n};\n\nmodule Crypto = {\n  [@bs.module \"../../../stubs/crypto.js\"]\n  external sha256: (. string, string) => string = \"sha256\";\n  [@bs.module \"../../../stubs/crypto.js\"]\n  external sha1File: (string) => Js.Promise.t(string) = \"sha1File\";\n  [@bs.module \"../../../stubs/crypto.js\"]\n  external sha256File: (string) => Js.Promise.t(string) = \"sha256File\";\n};\n\nmodule Resolve = {\n  [@bs.module \"../../../stubs/resolve.js\"]\n  external resolve': (string) => ((Js.Nullable.t(string), string) => unit) => unit = \"run\";\n  let resolve = (url) => Js.Promise.make((~resolve as r, ~reject as _) => {\n    resolve'(url, (err, resolvedUrl) => {\n      switch(Js.Nullable.toOption(err)) {\n        | Some(msg) => r(. Error(msg))\n\t| None => r(. Ok(resolvedUrl))\n      }\n    });\n  });\n};\n\nmodule Fs = {\n  [@bs.module \"../../../stubs/fs.js\"]\n  external writeFile: (. string, Buffer.t) => Js.Promise.t(unit) =\n    \"writeFile\";\n\n  [@bs.module \"../../../stubs/fs.js\"]\n  external readFile: (. string) => Js.Promise.t(Buffer.t) = \"readFile\";\n\n  [@bs.module \"fs\"]\n  external createWriteStream: string => Stream.t = \"createWriteStream\";\n\n  [@bs.module \"fs\"]\n  external readStream: string => Stream.t = \"ReadStream\";\n\n  [@bs.module \"../../../stubs/fs.js\"]\n  external unlink: string => Js.Promise.t(bool) = \"unlink\";\n\n  [@bs.module \"../../../stubs/fs.js\"]\n  external rmdirRecursive: string => Js.Promise.t(unit) = \"rmdirRecursive\";\n\n  let copy = (~dryRun=?, ~src, ~dest, ()) => {\n    Promise.(\n      {\n        let dryRun =\n          switch (dryRun) {\n          | Some(x) => x\n          | None => false\n          };\n        if (dryRun) {\n          Js.log({j|Copying $src to $dest|j}) |> resolve;\n        } else {\n          readFile(. src) |> then_(b => writeFile(. dest, b));\n        };\n      }\n    );\n  };\n\n  module DirEnt = {\n    type t = {. \"name\": string};\n    [@bs.send] external isDirectory: t => bool = \"isDirectory\";\n    [@bs.send] external isFile: t => bool = \"isFile\";\n  };\n\n  module Dir = {\n    type t = {. \"path\": string};\n    [@bs.send] external close: t => Promise.t(unit) = \"close\";\n    [@bs.send]\n    external read: t => Promise.t(Js.Nullable.t(DirEnt.t)) = \"read\";\n  };\n\n  [@bs.module \"../../../stubs/fs\"]\n  external opendir: string => Js.Promise.t(Dir.t) = \"opendir\";\n  [@bs.module \"../../../stubs/fs\"]\n  external readdir: string => Js.Promise.t(Js.Array.t(string)) = \"readdir\";\n\n  module Stats = {\n    type t;\n    [@bs.send] external isDirectory: t => Js.Promise.t(bool) = \"isDirectory\";\n  };\n\n  [@bs.module \"../../../stubs/fs\"]\n  external stat: string => Js.Promise.t(Stats.t) = \"stat\";\n\n  let isDirectory = p =>\n    Promise.(stat(p) |> then_(stats => Stats.isDirectory(stats)));\n\n  [@bs.module \"../../../stubs/fs.js\"]\n  external exists: string => Js.Promise.t(bool) = \"exists\";\n\n  [@bs.module \"../../../stubs/fs.js\"]\n  external mkdir: string => Js.Promise.t(unit) = \"mkdir\";\n};\n\n[@bs.module \"source-map-support\"]\nexternal sourceMapSupportInstall: unit => unit = \"install\";\n\nlet throwJSError = [%raw \"e => { throw e; }\"];\n\nmodule Chalk = {\n  // https://github.com/ecliptic/bucklescript-tools/blob/develop/packages/bs-chalk/src/Chalk.re\n  module Level = {\n    type t =\n      | None\n      | Basic\n      | Ansi256\n      | TrueColor;\n    let fromInt = level =>\n      switch (level) {\n      | 0 => None\n      | 1 => Basic\n      | 2 => Ansi256\n      | 3 => TrueColor\n      | _ => None\n      };\n    let toInt = level =>\n      switch (level) {\n      | None => 0\n      | Basic => 1\n      | Ansi256 => 2\n      | TrueColor => 3\n      };\n  };\n\n  type colorSupport = {\n    .\n    \"level\": int,\n    \"hasBasic\": bool,\n    \"has256\": bool,\n    \"has16m\": bool,\n  };\n\n  [@bs.module \"chalk\"] external enabled: bool = \"enabled\";\n\n  [@bs.module \"chalk\"] external level_: int = \"level\";\n\n  [@bs.module \"chalk\"] external supportsColor: colorSupport = \"supportsColor\";\n\n  [@bs.module \"chalk\"] external stripColor: string => string = \"stripColor\";\n\n  [@bs.module \"chalk\"] external hasColor: string => bool = \"hasColor\";\n\n  [@bs.module \"chalk\"] external visible: string => bool = \"visible\";\n\n  /* Styles */\n  [@bs.module \"chalk\"] external reset: string => string = \"chalk\";\n\n  [@bs.module \"chalk\"] external bold: string => string = \"bold\";\n\n  [@bs.module \"chalk\"] external dim: string => string = \"dim\";\n\n  [@bs.module \"chalk\"] external italic: string => string = \"italic\";\n\n  [@bs.module \"chalk\"] external underline: string => string = \"underline\";\n\n  [@bs.module \"chalk\"] external inverse: string => string = \"inverse\";\n\n  [@bs.module \"chalk\"] external hidden: string => string = \"hidden\";\n\n  [@bs.module \"chalk\"]\n  external strikethrough: string => string = \"strikethrough\";\n\n  /* Colors */\n  [@bs.module \"chalk\"] external black: string => string = \"black\";\n\n  [@bs.module \"chalk\"] external red: string => string = \"red\";\n\n  [@bs.module \"chalk\"] external green: string => string = \"green\";\n\n  [@bs.module \"chalk\"] external yellow: string => string = \"yellow\";\n\n  [@bs.module \"chalk\"] external blue: string => string = \"blue\";\n\n  [@bs.module \"chalk\"] external magenta: string => string = \"magenta\";\n\n  [@bs.module \"chalk\"] external cyan: string => string = \"cyan\";\n\n  [@bs.module \"chalk\"] external white: string => string = \"white\";\n\n  [@bs.module \"chalk\"] external gray: string => string = \"gray\";\n\n  [@bs.module \"chalk\"] external grey: string => string = \"grey\";\n\n  [@bs.module \"chalk\"] external blackBright: string => string = \"blackBright\";\n\n  [@bs.module \"chalk\"] external redBright: string => string = \"redBright\";\n\n  [@bs.module \"chalk\"] external greenBright: string => string = \"greenBright\";\n\n  [@bs.module \"chalk\"]\n  external yellowBright: string => string = \"yellowBright\";\n\n  [@bs.module \"chalk\"] external blueBright: string => string = \"blueBright\";\n\n  [@bs.module \"chalk\"]\n  external magentaBright: string => string = \"magentaBright\";\n\n  [@bs.module \"chalk\"] external cyanBright: string => string = \"cyanBright\";\n\n  [@bs.module \"chalk\"] external whiteBright: string => string = \"whiteBright\";\n\n  [@bs.module \"chalk\"] external bgBlack: string => string = \"bgBlack\";\n\n  [@bs.module \"chalk\"] external bgRed: string => string = \"bgRed\";\n\n  [@bs.module \"chalk\"] external bgGreen: string => string = \"bgGreen\";\n\n  [@bs.module \"chalk\"] external bgYellow: string => string = \"bgYellow\";\n\n  [@bs.module \"chalk\"] external bgBlue: string => string = \"bgBlue\";\n\n  [@bs.module \"chalk\"] external bgMagenta: string => string = \"bgMagenta\";\n\n  [@bs.module \"chalk\"] external bgCyan: string => string = \"bgCyan\";\n\n  [@bs.module \"chalk\"] external bgWhite: string => string = \"bgWhite\";\n\n  [@bs.module \"chalk\"]\n  external bgBlackBright: string => string = \"bgBlackBright\";\n\n  [@bs.module \"chalk\"] external bgRedBright: string => string = \"bgRedBright\";\n\n  [@bs.module \"chalk\"]\n  external bgGreenBright: string => string = \"bgGreenBright\";\n\n  [@bs.module \"chalk\"]\n  external bgYellowBright: string => string = \"bgYellowBright\";\n\n  [@bs.module \"chalk\"]\n  external bgBlueBright: string => string = \"bgBlueBright\";\n\n  [@bs.module \"chalk\"]\n  external bgMagentaBright: string => string = \"bgMagentaBright\";\n\n  [@bs.module \"chalk\"]\n  external bgCyanBright: string => string = \"bgCyanBright\";\n\n  [@bs.module \"chalk\"]\n  external bgWhiteBright: string => string = \"bgWhiteBright\";\n\n  /* Exact colors */\n  [@bs.module \"chalk\"] external hex: string => string = \"hex\";\n\n  [@bs.module \"chalk\"] external rgb_: (. int, int, int) => string = \"rgb\";\n\n  [@bs.module \"chalk\"] external hsl_: (. int, int, int) => string = \"hsl\";\n\n  [@bs.module \"chalk\"] external hsv_: (. int, int, int) => string = \"hsv\";\n\n  [@bs.module \"chalk\"] external hwb_: (. int, int, int) => string = \"hwb\";\n\n  [@bs.module \"chalk\"] external bgHex: string => string = \"bgHex\";\n\n  [@bs.module \"chalk\"] external bgRgb_: (. int, int, int) => string = \"bgRgb\";\n\n  [@bs.module \"chalk\"] external bgHsl_: (. int, int, int) => string = \"bgHsl\";\n\n  [@bs.module \"chalk\"] external bgHsv_: (. int, int, int) => string = \"bgHsv\";\n\n  [@bs.module \"chalk\"] external bgHwb_: (. int, int, int) => string = \"bgHwb\";\n\n  [@bs.module \"chalk\"] external keyword: string => string = \"keyword\";\n\n  /* Convenience Methods */\n  let level: Level.t = level_ |> Level.fromInt;\n\n  let rgb = (~r: int, ~g: int, ~b: int) => rgb_(. r, g, b);\n\n  let hsl = (~h: int, ~s: int, ~l: int) => hsl_(. h, s, l);\n\n  let hsv = (~h: int, ~s: int, ~v: int) => hsv_(. h, s, v);\n\n  let hwb = (~h: int, ~w: int, ~b: int) => hwb_(. h, w, b);\n\n  let bgRgb = (~r: int, ~g: int, ~b: int) => bgRgb_(. r, g, b);\n\n  let bgHsl = (~h: int, ~s: int, ~l: int) => bgHsl_(. h, s, l);\n\n  let bgHsv = (~h: int, ~s: int, ~v: int) => bgHsv_(. h, s, v);\n\n  let bgHwb = (~h: int, ~w: int, ~b: int) => bgHwb_(. h, w, b);\n};\n\nmodule Path = {\n  [@bs.module \"path\"] [@bs.variadic]\n  external join: array(string) => string = \"join\";\n  [@bs.module \"path\"] external basename: string => string = \"basename\";\n  [@bs.module \"path\"] external extname: string => string = \"extname\";\n  [@bs.module \"path\"] external dirname: string => string = \"dirname\";\n  [@bs.module \"path\"] [@bs.variadic]\n  external resolve: array(string) => string = \"resolve\";\n  [@bs.module \"path\"] external isAbsolute: string => bool = \"isAbsolute\";\n};\n\nmodule Rimraf: {\n  type t;\n  /* Bindinds for https://www.npmjs.com/package/rimraf. rimraf is a\n     cross-platform utility library to delete a directory and all its contens */\n  let run: string => Js.Promise.t(result(unit, string));\n} = {\n  type t;\n\n  [@bs.module]\n  external run': (string, Js.Nullable.t('a) => unit) => unit = \"rimraf\";\n\n  let run = p =>\n    Js.Promise.make((~resolve, ~reject as _) =>\n      run'(p, err =>\n        switch (Js.Nullable.toOption(err)) {\n        | Some(err) => resolve(. Error(err##message))\n        | None => resolve(. Ok())\n        }\n      )\n    );\n};\n\nmodule Os: {\n  let tmpdir: unit => string;\n} = {\n  [@bs.module \"os\"] external tmpdir: unit => string = \"tmpdir\";\n}\n  \n"
  },
  {
    "path": "npm-cli/src/Bootstrapper.re",
    "content": "open Bindings;\nopen ResultPromise;\n\nlet runCommand = (cmd, args, projectPath, message) => {\n  Js.log(\"\");\n  Js.log(message);\n  Cmd.spawn(~args, ~cwd=projectPath, ~cmd);\n};\n\n/** TODO: Bootstrapper should ideally work in a temporary workspace, make sure\nthe project of generating files and substituting values in them works fine and\nonly them present the project to the user for further esy command.\n\nBonus: Caching templates fetched from remote urls. This way, we make them\nhash addressable and cache them. We'll need to however first issue a request\nto github and check if the last commit hash at the repo has changed.\n\nBonus: We don't overwrite if files of the same name exist and only append pesy\nconfig to package.json/esy.json. Why? So that users can easily upgrade to a pesy\nconfig. (Opposite of pesy eject) */\n\nlet bootstrap = Template.Kind.gen;\n\nlet warmup = (~projectPath, ~esyCmd as esy, ()) => {\n  Js.log((\"Running\" |> Chalk.dim) ++ (\" pesy warm\" |> Chalk.whiteBright));\n  Project.ofPath(esy, projectPath)\n  >>= (\n    project =>\n      try(Warmup.run(esy, project)) {\n      | Js.Exn.Error(e) =>\n        switch (Js.Exn.message(e)) {\n        | Some(message) => Js.Promise.resolve(Error({j|Error: $message|j}))\n        | None => Js.Promise.resolve(Error(\"An unknown error occurred\"))\n        }\n      | e =>\n        Js.log(e);\n        Js.Promise.resolve(Error(\"A network error occurred\"));\n      }\n  )\n  |> Js.Promise.then_(warmupResult => {\n       switch (warmupResult) {\n       | Ok () => ()\n       | Error(msg) =>\n         Js.log(\"Skipping warmup because: \");\n         Js.log(msg);\n       };\n       ResultPromise.ok();\n     })\n  |> catch\n  |> Js.Promise.then_(() => ResultPromise.ok());\n};\n\nlet warmupPrompt = () =>\n  Js.Promise.make((~resolve, ~reject as _) => {\n    Utils.askYesNoQuestion(\n      ~question=\"Warm up local cache from CI?\",\n      ~onYes=() => resolve(. true),\n      ~onNo=() => resolve(. false),\n      (),\n    )\n  });\n\nlet runningEsy = (~esy, ~projectPath, ~forceCacheFetch, ()) => {\n  runCommand(\n    esy,\n    [|\"i\"|],\n    projectPath,\n    (\"Running\" |> Chalk.dim) ++ (\" esy install\" |> Chalk.whiteBright),\n  )\n  >>= (\n    () => {\n      Process.Stdout.write(\n        Process.Stdout.v,\n        \"\\n\"\n        ++ (\"Checking\" |> Chalk.dim)\n        ++ \" if project has all dependencies installed already => \",\n      );\n      Esy.status(projectPath, esy)\n      >>= (\n        status =>\n          if (!EsyStatus.isProjectReadyForDev(status)) {\n            Js.log(\"No\" |> Chalk.red);\n            let toRunWarmup =\n              switch (forceCacheFetch) {\n              | Some(toRunOrNot) => Js.Promise.resolve(toRunOrNot)\n              | None => warmupPrompt()\n              };\n            toRunWarmup\n            |> Js.Promise.then_(toWarmup =>\n                 if (toWarmup) {\n                   warmup(~esyCmd=esy, ~projectPath, ());\n                 } else {\n                   ResultPromise.ok();\n                 }\n               );\n          } else {\n            Js.log(\"Yes!\" |> Chalk.green);\n            ResultPromise.ok();\n          }\n      );\n    }\n  )\n  >>= (\n    () /* (_stdout, _stderr) */ => {\n      runCommand(\n        esy,\n        [|\"pesy\"|],\n        projectPath,\n        (\"Running\" |> Chalk.dim)\n        ++ (\" esy pesy\" |> Chalk.whiteBright)\n        ++ (\" and \" |> Chalk.dim)\n        ++ (\"building project dependencies\" |> Chalk.whiteBright),\n      );\n    }\n  )\n  >>= (\n    () /* (_stdout, _stderr) */ => {\n      runCommand(\n        esy,\n        [|\"b\"|],\n        projectPath,\n        (\"Running\" |> Chalk.dim) ++ (\" esy build\" |> Chalk.whiteBright),\n      );\n    }\n  )\n  >>| (\n    () /* (_stdout, _stderr) */ => {\n      Js.log(\"\");\n      \"Ready for development!\" |> Chalk.green |> Js.log;\n    }\n  );\n};\n\nlet run =\n    (\n      esy,\n      projectPath,\n      template,\n      bootstrapOnly,\n      bootstrapCIOnly,\n      forceCacheFetch,\n    ) => {\n  let bootstrapped =\n    bootstrap(projectPath, bootstrapCIOnly, template)\n    >>= (\n      () => {\n        // TODO: Hacky! Streamline what stays and what doesn't. Maybe add a ignore field to pesy config so that we know what to copy and what shouldn't be?\n        Rimraf.run(\n          Path.join([|projectPath, \".ci-self\"|]),\n        );\n      }\n    );\n  /* >>= ( */\n  /*   _ => { */\n  /*     Js.log(\"\"); */\n  /*     Js.log(\"Setting up\"); */\n  /*     Js.log(\"\"); */\n  /*     Template.substitute(projectPath); */\n  /*   } */\n  /* ); */\n\n  bootstrapOnly\n    ? bootstrapped\n      >>| (\n        () => {\n          Js.log(\"\");\n          \"You may have to run \" ++ Chalk.green(\"esy\") |> Js.log;\n        }\n      )\n    : bootstrapped >>= runningEsy(~esy, ~projectPath, ~forceCacheFetch);\n};\n\nlet run =\n    (\n      esy,\n      projectPath,\n      template,\n      bootstrapOnly,\n      bootstrapCIOnly,\n      forceCacheFetch,\n    ) => {\n  Fs.mkdir(projectPath)\n  |> Js.Promise.then_(() => {\n       Process.chdir(projectPath);\n       run(\n         esy,\n         projectPath,\n         template,\n         bootstrapOnly,\n         bootstrapCIOnly,\n         forceCacheFetch,\n       );\n     });\n};\n"
  },
  {
    "path": "npm-cli/src/Bootstrapper.rei",
    "content": "let run:\n  (\n    Cmd.t,\n    Path.t,\n    Template.Kind.t,\n    bool /* bootstrapOnly */,\n    bool /* bootstrapCIOnly */,\n    option(bool)\n  ) =>\n  ResultPromise.t(unit, string);\n"
  },
  {
    "path": "npm-cli/src/Cmd.re",
    "content": "open Bindings;\n\ntype t = {\n  cmd: string,\n  env: Js.Dict.t(string),\n};\n\ntype stdout = string;\n\ntype stderr = string;\n\nlet pathMissingFromEnv = \"'PATH' variable not found in the environment\";\n\nlet env_sep = Process.platform == \"win32\" ? \";\" : \":\";\nlet binPath = c => c.cmd;\n\nlet make = (~env, ~cmd) =>\n  switch (Js.Dict.get(env, \"PATH\")) {\n  | None => Error(pathMissingFromEnv) |> Js.Promise.resolve\n  | Some(path) =>\n    let cmds =\n      Process.platform == \"win32\"\n        ? [|cmd ++ \".exe\", cmd ++ \".cmd\"|] : [|cmd|];\n\n    cmds\n    |> Array.map(cmd =>\n         Js.String.split(env_sep, path)\n         |> Js.Array.map(p => Path.join([|p, cmd|]))\n       )\n    |> Js.Array.reduce(Js.Array.concat, [||])\n    |> Js.Array.map(p =>\n         Fs.exists(p)\n         |> Js.Promise.then_(exists => Js.Promise.resolve((p, exists)))\n       )\n    |> Js.Promise.all\n    |> Js.Promise.then_(r =>\n         Js.Promise.resolve(Js.Array.filter(((_p, exists)) => exists, r))\n       )\n    |> Js.Promise.then_(r => {\n         let r = Array.to_list(r);\n         let r =\n           switch (r) {\n           | [] => Error({j| Command \"$cmd\" not found |j})\n           | [(cmd, _exists), ..._rest] => Ok({cmd, env})\n           };\n\n         Js.Promise.resolve(r);\n       });\n  };\n\nlet ofPathStr = path => {\n  Fs.exists(path)\n  |> Js.Promise.then_(exists =>\n       if (exists) {\n         Ok({cmd: path, env: Process.env}) |> Js.Promise.resolve;\n       } else {\n         Error({j| Command ($path) not found |j}) |> Js.Promise.resolve;\n       }\n     );\n};\n\nlet output = (~args, ~cwd, ~cmd) => {\n  let {cmd, env} = cmd;\n  let shellString =\n    Js.Array.concat(args, [|cmd|]) |> Js.Array.joinWith(\" \");\n  ChildProcess.exec(shellString, ChildProcess.Options.make(~cwd, ~env, ()))\n  |> Js.Promise.then_(r => {\n       let r =\n         switch (r) {\n         | Error () => Result.fail({j| Exec failed: $shellString |j})\n         | Ok((exitCode, stdout, stderr)) =>\n           if (exitCode == 0) {\n             Ok((stdout, stderr));\n           } else {\n             Error(\n               {j| Command $cmd failed:\nexitCode: $exitCode\nstderr: $stderr\n|j},\n             );\n           }\n         };\n\n       Js.Promise.resolve(r);\n     });\n};\n\nlet spawn = (~args, ~cwd, ~cmd) => {\n  let {cmd, env: _} = cmd;\n  Js.Promise.make((~resolve, ~reject as _) => {\n    let process =\n      ChildProcess.spawn(\n        cmd,\n        args,\n        ChildProcess.Options.make(~cwd, ~stdio=\"inherit\", ()),\n      );\n    ChildProcess.onClose(process, exitCode =>\n      if (exitCode == 0) {\n        resolve(. Ok());\n      } else {\n        resolve(.\n          Error(Js.Array.concat(args, [|cmd|]) |> Js.Array.joinWith(\" \")),\n        );\n      }\n    );\n  });\n};\n"
  },
  {
    "path": "npm-cli/src/DefaultTemplate.re",
    "content": "open Bindings;\n\nlet path =\n  Path.resolve([|\n    dirname,\n    \"templates\",\n    \"pesy-reason-template-0.1.0-alpha.20\", /* Must be the same as ./script/vendor-template.js */\n  |]);\n\nlet ciPath = Path.resolve([|dirname, \"templates\", \"ci\"|]);\nlet dockerPath = Path.resolve([|dirname, \"templates\", \"docker\"|]);\n"
  },
  {
    "path": "npm-cli/src/Dir.re",
    "content": "open Bindings;\n\nlet isEmpty = path =>\n  !Node.Fs.existsSync(path)\n  || Belt.Array.length(Node.Fs.readdirSync(path)) == 0;\n\nlet forEachEnt = (f, dir) => {\n  Js.Promise.(\n    Fs.readdir(dir)\n    |> then_(files => files |> Array.map(f) |> all)\n    |> then_(_ => ResultPromise.ok())\n  );\n};\n\nlet rec scan = (ignoreDirsTbl, f, dir) => {\n  Js.Promise.(\n    forEachEnt(\n      entry =>\n        if (!Hashtbl.mem(ignoreDirsTbl, entry)) {\n          let entryPath = Path.join([|dir, entry|]);\n          f(entryPath)\n          |> then_(_ =>\n               Fs.isDirectory(entryPath)\n               |> then_(isDir =>\n                    if (isDir) {\n                      scan(ignoreDirsTbl, f, entryPath);\n                    } else {\n                      ResultPromise.ok();\n                    }\n                  )\n             );\n        } else {\n          ResultPromise.ok();\n        },\n      dir,\n    )\n  );\n};\n"
  },
  {
    "path": "npm-cli/src/Dir.rei",
    "content": "let isEmpty: Path.t => bool;\n\nlet forEachEnt:\n  (string => ResultPromise.t(unit, string), Path.t) =>\n  ResultPromise.t(unit, string);\n\nlet scan:\n  (\n    Hashtbl.t(string, bool),\n    Path.t => ResultPromise.t(unit, string),\n    Path.t\n  ) =>\n  ResultPromise.t(unit, string);\n"
  },
  {
    "path": "npm-cli/src/Esy.re",
    "content": "open Bindings;\nopen ResultPromise;\n\ntype t = Cmd.t;\n\nlet make = () => Cmd.make(~cmd=\"esy\", ~env=Process.env);\nlet status = (projectPath, cmd) =>\n  Cmd.output(~cmd, ~cwd=projectPath, ~args=[|\"status\"|])\n  >>= (((output, _stderr)) => EsyStatus.make(output) |> Js.Promise.resolve);\nlet manifestPath = (path, cmd) =>\n  status(path, cmd)\n  >>| (esyStatus => EsyStatus.getRootPackageConfigPath(esyStatus));\n\nlet importDependencies = (~projectPath, ~exportsPath, cmd) =>\n  Cmd.output(\n    ~cmd,\n    ~cwd=projectPath,\n    ~args=[|\"import-dependencies \" ++ exportsPath|],\n  );\n"
  },
  {
    "path": "npm-cli/src/Esy.rei",
    "content": "type t = Cmd.t;\nlet make: unit => Js.Promise.t(result(t, string));\nlet manifestPath: (string, t) => Js.Promise.t(result(string, string));\nlet status: (string, t) => Js.Promise.t(result(EsyStatus.t, string));\nlet importDependencies:\n  (~projectPath: Path.t, ~exportsPath: Path.t, t) =>\n  Js.Promise.t(result((string, string), string));\n"
  },
  {
    "path": "npm-cli/src/EsyLock.re",
    "content": "type t = {checksum: string};\n\nlet ofPath = path => {\n  Bindings.(\n    Fs.readFile(. path)\n    |> Js.Promise.then_(lockfileBytes => {\n         let lockFileContents = lockfileBytes |> Buffer.toString;\n         (\n           switch (Json.parse(lockFileContents)) {\n           | Some(json) =>\n             Json.Decode.(\n               try(\n                 {checksum: field(\"checksum\", string, json)} |> Result.return\n               ) {\n               | DecodeError(msg) => Error(msg)\n               }\n             )\n           | None =>\n             Error(\n               {j| Json parser failed on the lockfile:\n$lockFileContents |j},\n             )\n           }\n         )\n         |> Js.Promise.resolve;\n       })\n  );\n};\n\nlet checksum = v => v.checksum;\n"
  },
  {
    "path": "npm-cli/src/EsyLock.rei",
    "content": "type t;\n\nlet ofPath: Path.t => ResultPromise.t(t, string);\nlet checksum: t => string;\n"
  },
  {
    "path": "npm-cli/src/EsyStatus.re",
    "content": "type t = {\n  isProjectReadyForDev: bool,\n  rootPackageConfigPath: string,\n};\nlet make = statusOutput =>\n  switch (Json.parse(statusOutput)) {\n  | Some(json) =>\n    Json.Decode.(\n      try(\n        {\n          rootPackageConfigPath: field(\"rootPackageConfigPath\", string, json),\n          isProjectReadyForDev: field(\"isProjectReadyForDev\", bool, json),\n        }\n        |> Result.return\n      ) {\n      | DecodeError(msg) => Error(msg)\n      }\n    )\n  | None => Error({j| Json parser failed\n$statusOutput |j})\n  };\n\nlet getRootPackageConfigPath = config => config.rootPackageConfigPath;\nlet isProjectReadyForDev = config => config.isProjectReadyForDev;\n"
  },
  {
    "path": "npm-cli/src/EsyStatus.rei",
    "content": "type t;\nlet make: string => result(t, string);\nlet getRootPackageConfigPath: t => string;\nlet isProjectReadyForDev: t => bool;\n"
  },
  {
    "path": "npm-cli/src/Path.re",
    "content": "type t = string;\n"
  },
  {
    "path": "npm-cli/src/Path.rei",
    "content": "type t = string;\n"
  },
  {
    "path": "npm-cli/src/Pesy.re",
    "content": "Bindings.sourceMapSupportInstall();\n\nopen Cmdliner;\nopen Utils;\nopen Bindings;\nopen ResultPromise;\n\nlet promptEmptyDirectory = () =>\n  Js.Promise.make((~resolve, ~reject as _) => {\n    askYesNoQuestion(\n      ~question=\"Current directory is not empty. Are you sure to continue?\",\n      ~onYes=() => resolve(. Result.return()),\n      ~onNo=() => resolve(. Result.fail(\"Aborting setup\")),\n      (),\n    )\n  });\n\nlet handleEmptyDirectory =\n  (. path, force) =>\n    if (Dir.isEmpty(path) || force) {\n      ResultPromise.ok();\n    } else {\n      promptEmptyDirectory();\n    };\n\nlet main =\n    (\n      projectPath,\n      template,\n      forceInit,\n      forceCacheFetch,\n      bootstrapOnly,\n      bootstrapCIOnly,\n    ) => {\n  let projectPath =\n    Path.isAbsolute(projectPath)\n      ? projectPath : Path.join([|Process.cwd(), projectPath|]);\n  handleEmptyDirectory(. projectPath, forceInit)\n  >>= (() => Cmd.make(~cmd=\"esy\", ~env=Process.env))\n  >>= (\n    esy =>\n      Bootstrapper.run(\n        esy,\n        projectPath,\n        template,\n        bootstrapOnly,\n        bootstrapCIOnly,\n        forceCacheFetch,\n      )\n  )\n  |> catch;\n};\n\nlet warmup = () => {\n  let projectPath = Process.cwd();\n  Esy.make()\n  >>= (\n    esy =>\n      Project.ofPath(esy, projectPath)\n      >>= (project => Warmup.run(esy, project))\n  )\n  |> ResultPromise.catch;\n};\n\nlet testTemplate = () => {\n  let templatePath = Process.cwd();\n  let tmpdir = Os.tmpdir();\n  let testProjectPath = Path.join([|tmpdir, \"test-project\"|]);\n  Rimraf.run(testProjectPath)\n  >>= (\n    () =>\n      Fs.mkdir(testProjectPath)\n      |> Js.Promise.then_(() => Cmd.make(~cmd=\"esy\", ~env=Process.env))\n  )\n  >>= (\n    esy => {\n      Js.log(\"\");\n      Js.log(\n        Chalk.dim(\"Creating \")\n        ++ Chalk.whiteBright(\"test-project\")\n        ++ Chalk.dim(\" at \")\n        ++ Chalk.whiteBright(testProjectPath),\n      );\n      Bootstrapper.run(\n        esy,\n        testProjectPath,\n        Template.Kind.path(templatePath),\n        false,\n        false,\n        None,\n      );\n    }\n  )\n  |> ResultPromise.catch;\n};\n\ntype componentConv =\n  | CI\n  | Docker;\n\nlet upgradeTemplate = (dest, cs1, cs2) => {\n  let components = cs1 @ cs2;\n  let allIfNone =\n    fun\n    | [] => [CI, Docker]\n    | x => x;\n  let rec uniq = acc =>\n    fun\n    | [] => acc\n    | [h, ...rest] =>\n      List.mem(h, acc) ? uniq(acc, rest) : uniq([h, ...acc], rest);\n  let setupTemplate = path =>\n    Template.copyAndSubstitute(path, dest, [])\n    |> Js.Promise.then_(\n         fun\n         | Ok () => Js.Promise.resolve()\n         | Error(msg) =>\n           Js.log(\"Error while upgrading: \" ++ msg) |> Js.Promise.resolve,\n       );\n  components\n  |> uniq([])\n  |> allIfNone\n  |> List.map(\n       fun\n       | CI => setupTemplate(DefaultTemplate.ciPath)\n       | Docker => setupTemplate(DefaultTemplate.dockerPath),\n     )\n  |> Array.of_list\n  |> Js.Promise.all\n  |> Js.Promise.then_(_ => Js.log(\"\") |> Js.Promise.resolve);\n};\n\nlet version = \"0.5.0-dev.23\";\nlet template = {\n  let doc = \"Specify URL of the remote template. This can be of the form https://repo-url.git#<commit|branch|tag>. Eg: https://github.com/reason-native-web/morph-hello-world-pesy-template#6e5cbbb9f28\";\n  Arg.(\n    value\n    & opt(\n        Template.Kind.cmdlinerConv,\n        Template.Kind.path(DefaultTemplate.path),\n      )\n    & info([\"t\", \"template\"], ~docv=\"TEMPLATE_URL\", ~doc)\n  );\n};\n\nlet directory = {\n  let doc = \"Initialises a new project at given directory\";\n  Arg.(value & opt(string, Process.cwd()) & info([\"directory\", \"d\"], ~doc));\n};\n\nlet forceInit = {\n  let doc = \"Force generation of project files\";\n  Arg.(value & flag & info([\"finit\", \"force-init\"], ~doc));\n};\n\nlet forceCacheFetch = {\n  let doc = \"Whether to fetch relocatable assets from CI. When absent, a prompt will be presented.\";\n  Arg.(value & opt(some(bool), None) & info([\"fetch-cache\"], ~doc));\n};\n\nlet bootstrapOnly = {\n  let doc = \"Only create initial set of files. Dont run esy commands on them.\";\n  Arg.(value & flag & info([\"b\", \"bootstrap-only\"], ~doc));\n};\n\nlet bootstrapCIOnly = {\n  let doc = \"Only create ci files.\";\n  Arg.(value & flag & info([\"c\", \"bootstrap-ci-only\"], ~doc));\n};\n\nopen Cmdliner.Term;\nlet cmd = {\n  let cmd = \"pesy\";\n  let envs: list(env_info) = [];\n  let exits: list(exit_info) = [];\n  let doc = \"Your Esy Assistant.\";\n  let cmdT =\n    Term.(\n      const(main)\n      $ directory\n      $ template\n      $ forceInit\n      $ forceCacheFetch\n      $ bootstrapOnly\n      $ bootstrapCIOnly\n    );\n  (cmdT, Term.info(cmd, ~envs, ~exits, ~doc, ~version));\n};\n\nlet warmupCmd = {\n  let cmd = \"warmup\";\n  let envs: list(env_info) = [];\n  let exits: list(exit_info) = [];\n  let doc = \"warmup - warms esy cache with prebuilts from CI\";\n  let cmdT = Term.(const(warmup) $ const());\n  (cmdT, Term.info(cmd, ~envs, ~exits, ~doc, ~version));\n};\n\nlet testTemplateCmd = {\n  let cmd = \"test-template\";\n  let envs: list(env_info) = [];\n  let exits: list(exit_info) = [];\n  let doc = \"test-template - convenient subcommand to test your pesy template\";\n  let cmdT = Term.(const(testTemplate) $ const());\n  (cmdT, Term.info(cmd, ~envs, ~exits, ~doc, ~version));\n};\n\nlet upgradeTemplateCmd = {\n  let componentConv: Cmdliner.Arg.conv(componentConv) = {\n    let ofString =\n      fun\n      | \"ci\" => Ok(CI)\n      | \"docker\" => Ok(Docker)\n      | _ => Error(\"Unrecognised component to be upgraded\");\n\n    let parser =\n        (str: string): Pervasives.result(componentConv, [ | `Msg(string)]) =>\n      switch (ofString(str)) {\n      | Ok(kind) => Ok(kind)\n      | Error(msg) => Error(`Msg(msg))\n      };\n\n    let printer: Cmdliner.Arg.printer(componentConv) =\n      (ppf: Format.formatter, v: componentConv) => (\n        switch (v) {\n        | CI => Format.fprintf(ppf, \"CI\")\n        | Docker => Format.fprintf(ppf, \"Docker\")\n        }: unit\n      );\n\n    (parser, printer) |> Arg.conv(~docv=\"ci | docker\");\n  };\n  let components = {\n    let doc = \"Specifies which components of the template to upgrade\";\n    Arg.(\n      value\n      & opt(list(componentConv), [])\n      & info([\"components\", \"l\"], ~doc)\n    );\n  };\n  let component = {\n    let doc = \"Specifies which component of the template to upgrade\";\n    Arg.(\n      value & opt_all(componentConv, []) & info([\"component\", \"c\"], ~doc)\n    );\n  };\n  let cmd = \"upgrade-template\";\n  let envs: list(env_info) = [];\n  let exits: list(exit_info) = [];\n  let doc = \"upgrade-template - convenient subcommand to upgrade your template\";\n  let cmdT =\n    Term.(const(upgradeTemplate) $ directory $ component $ components);\n  (cmdT, Term.info(cmd, ~envs, ~exits, ~doc, ~version));\n};\n\nlet main =\n  (. argv) =>\n    switch (\n      Term.eval_choice(\n        ~argv,\n        cmd,\n        [warmupCmd, testTemplateCmd, upgradeTemplateCmd],\n      )\n    ) {\n    | exception (Invalid_argument(msg)) =>\n      Js.log(msg);\n      Js.Promise.resolve(1);\n    | `Ok(p) => p |> Js.Promise.then_(() => Js.Promise.resolve(0))\n    | _ => Js.Promise.resolve(1)\n    };\n"
  },
  {
    "path": "npm-cli/src/Pesy.rei",
    "content": "let main: (. array(string)) => Js.Promise.t(int);\n"
  },
  {
    "path": "npm-cli/src/PesyConfig.re",
    "content": "module Tag = {\n  open Json.Decode;\n  type t = string;\n  let decoder = json => json |> string;\n};\n\ntype t = {\n  azureProject: option(string),\n  github: string,\n  template: option(Tag.t),\n  ignoreDirs: option(list(string)),\n};\n\nlet decoder = json => {\n  open Json.Decode;\n  let azureProject = json |> (field(\"azure-project\", string) |> optional);\n  let template = json |> (field(\"template\", Tag.decoder) |> optional);\n  let github = json |> field(\"github\", string);\n  let ignoreDirs = json |> (field(\"ignore-dirs\", list(string)) |> optional);\n  {ignoreDirs, github, template, azureProject};\n};\n\nlet ofJson = json =>\n  try(json |> Json.Decode.field(\"pesy\", decoder) |> Result.return) {\n  | Json.Decode.DecodeError(msg) => Error(msg)\n  };\n\n/* Makes a config. Must fail if mandatory fields are not present */\nlet make = manifest =>\n  switch (manifest |> Json.parse) {\n  | None => Error(\"Json parser failed: \" ++ manifest)\n  | Some(json) => ofJson(json)\n  };\n\nlet getAzureProject = config => config.azureProject;\nlet getGithub = config => config.github;\nlet getIgnoreDirs = config => config.ignoreDirs;\nlet getTemplateTag = config => config.template;\n\nmodule Build: {\n  type t;\n  let ofString: string => result(t, string);\n  let ofJson: Js.Json.t => result(t, string);\n} = {\n  type t = bool; // We only track if 'buildDirs' property exists in the package.json\n\n  open Json.Decode;\n\n  let ofJson = json =>\n    switch (json |> (field(\"buildDirs\", dict(id)) |> optional)) {\n    | Some(_) => Result.return(true)\n    | None =>\n      let str = Json.stringify(json);\n      Result.fail(\n        {j|buildDirs was not found in the provided string: $str |j},\n      );\n    };\n\n  let ofString = str => {\n    switch (Json.parse(str)) {\n    | Some(json) => ofJson(json)\n    | None =>\n      {j| Could not parse the provided string as json:\n$str\n|j} |> Result.fail\n    };\n  };\n};\n"
  },
  {
    "path": "npm-cli/src/PesyConfig.rei",
    "content": "type t;\n\n/* Json decoder */\nlet decoder: Json.Decode.decoder(t);\n\n/* Extracts the Azure Project name from the config */\nlet getAzureProject: t => option(string);\n\n/* Extracts the github slug (username/reponame) from the config */\nlet getGithub: t => string;\n\n/* Extracts ignoreDirs from the config */\nlet getIgnoreDirs: t => option(list(string));\n\n/* Extracts template version/tag from the config */\nlet getTemplateTag: t => option(string);\n\n/* Creates pesy config from a give manifest file */\nlet make: string => result(t, string);\n\n/* Same as make, but accepts a json instead of string */\nlet ofJson: Js.Json.t => result(t, string);\n\n/** Build Config */\nmodule Build: {\n  /** Abstract type */\n  type t;\n\n  /** Parses the build config from a strig */\n  let ofString: string => result(t, string);\n\n  /** Same as ofString - parses build config, but from a Json.t */\n  let ofJson: Js.Json.t => result(t, string);\n};\n"
  },
  {
    "path": "npm-cli/src/Project.re",
    "content": "open ResultPromise;\n\ntype t = {\n  path: Path.t,\n  manifest: string,\n  hash: string,\n};\n\nlet ofPath = (esy, projectPath) =>\n  Esy.manifestPath(projectPath, esy)\n  >>= (\n    rootPackageConfigPath =>\n      Bindings.Fs.readFile(. rootPackageConfigPath)\n      |> Js.Promise.then_(bytes =>\n           bytes |> Result.return |> Js.Promise.resolve\n         )\n      >>= (\n        manifestBytes => {\n          [|\n            rootPackageConfigPath\n            |> Js.String.replace(\"package.json\", \"esy.json\")\n            |> Js.String.replace(\".json\", \".lock\"),\n            \"index.json\",\n          |]\n          |> Bindings.Path.join\n          |> EsyLock.ofPath\n          >>| (lock => EsyLock.checksum(lock))\n          >>= (\n            checksum => {\n              let manifest = manifestBytes |> Bindings.Buffer.toString;\n              ResultPromise.ok({hash: checksum, path: projectPath, manifest});\n            }\n          );\n        }\n      )\n  );\n\nlet lockFileHash = v => v.hash;\nlet pesyConfig = v => PesyConfig.make(v.manifest);\nlet path = v => v.path;\n\nlet hasBuildDirsConfig = v =>\n  switch (PesyConfig.Build.ofString(v.manifest)) {\n  | Error(_) => false\n  | Ok(_) => true\n  };\n"
  },
  {
    "path": "npm-cli/src/Project.rei",
    "content": "type t;\n\n/** Given a path, it tries to returns a [project] if it\n   is a valid one */\nlet ofPath: (Esy.t, Path.t) => ResultPromise.t(t, string);\n\n/** Given [project], it returns it's pesy config */\nlet pesyConfig: t => result(PesyConfig.t, string);\n\n/** Given a [project], it returns it's esy lock file checksum */\nlet lockFileHash: t => string;\n\n/** Given a [project], it returns the path it is setup */\nlet path: t => Path.t;\n\nlet hasBuildDirsConfig: t => bool;\n"
  },
  {
    "path": "npm-cli/src/Readline.re",
    "content": "type io = {\n  .\n  \"input\": in_channel,\n  \"output\": out_channel,\n};\ntype rlType = {\n  .\n  [@bs.meth] \"close\": unit => unit,\n  [@bs.meth] \"write\": string => unit,\n  [@bs.meth] \"on\": (string, string => unit) => unit,\n  [@bs.meth] \"question\": (string, string => unit) => unit,\n};\n\n[@bs.module \"readline\"]\nexternal createInterface: io => rlType = \"createInterface\";\n"
  },
  {
    "path": "npm-cli/src/Result.re",
    "content": "open Belt.Result;\n\nlet (>>=) = flatMap;\n\nlet (>>|) = map;\n\nlet return = x => Ok(x);\n\nlet fail = x => Error(x);\n\nlet all = (~f, rps) =>\n  List.fold_left(\n    (acc, r) =>\n      switch (r, acc) {\n      | (Ok(v), Ok(acc)) => Ok([v, ...acc])\n      | (Error(msg), Ok(_)) => Error(msg)\n      | (Ok(_), Error(msg)) => Error(msg)\n      | (Error(msg1), Error(msg2)) => Error(f(msg1, msg2))\n      },\n    Ok([]),\n    rps,\n  );\n\nlet all2 = (~f: ('a, 'a) => 'a, rps) =>\n  switch (rps) {\n  | (Ok(v1), Ok(v2)) => Ok((v1, v2))\n  | (Error(msg), Ok(_)) => Error(msg)\n  | (Ok(_), Error(msg)) => Error(msg)\n  | (Error(msg1), Error(msg2)) => Error(f(msg1, msg2))\n  };\n"
  },
  {
    "path": "npm-cli/src/ResultPromise.re",
    "content": "type t('a, 'b) = Js.Promise.t(result('a, 'b));\nlet (>>=) = (rp, f) => {\n  rp\n  |> Js.Promise.then_(\n       fun\n       | Ok(x) => f(x)\n       | Error(msg) => Js.Promise.resolve(Error(msg)),\n     );\n};\nlet (>>|) = (rp, f) => {\n  rp\n  |> Js.Promise.then_(\n       fun\n       | Error(msg) => Js.Promise.resolve(Error(msg))\n       | Ok(x) => f(x) |> Result.return |> Js.Promise.resolve,\n     );\n};\nlet ok = x => x |> Result.return |> Js.Promise.resolve; // Js.Promise.resolve << Result.return;\nlet fail = x => x |> Result.fail |> Js.Promise.resolve;\n/**\n     Js.Promise.resolve << Result.fail;\n     let fail: '_weak1 => Js.Promise.t(Belt.Result.t('a, '_weak1))\n     is not included in let fail: 'b => t('a, 'b)\n   */;\n\nlet catch = rp =>\n  rp\n  |> Js.Promise.then_(\n       fun\n       | Ok () => Js.Promise.resolve()\n       | Error(msg) => Js.log(msg) |> Js.Promise.resolve,\n     );\n\nlet all = (~f, rps) =>\n  Js.Promise.all(rps)\n  |> Js.Promise.then_(rs =>\n       rs\n       |> Array.to_list\n       |> Result.all(~f)\n       |> (\n         fun\n         | Ok(l) => Ok(Array.of_list(l))\n         | Error(msg) => Error(msg)\n       )\n       |> Js.Promise.resolve\n     );\n\nlet all2 = (~f, rps) =>\n  Js.Promise.all2(rps)\n  |> Js.Promise.then_(rs => rs |> Result.all2(~f) |> Js.Promise.resolve);\n"
  },
  {
    "path": "npm-cli/src/ResultPromise.rei",
    "content": "type t('a, 'b) = Js.Promise.t(result('a, 'b));\nlet (>>=): (t('a, 'b), 'a => t('c, 'b)) => t('c, 'b);\nlet (>>|): (t('a, 'b), 'a => 'c) => t('c, 'b);\nlet ok: 'a => t('a, 'b);\nlet fail: 'b => t('a, 'b);\nlet catch: t(unit, string) => Js.Promise.t(unit);\nlet all: (~f: ('b, 'b) => 'b, array(t('a, 'b))) => t(array('a), 'b);\nlet all2: (~f: ('b, 'b) => 'b, (t('a, 'b), t('c, 'b))) => t(('a, 'c), 'b);\n"
  },
  {
    "path": "npm-cli/src/Spinner.re",
    "content": "let interval = 120;\nlet frames = [|\"-\", \"\\\\\", \"|\", \"/\"|];\n/* let frames = [|\".  \", \".. \", \"...\"|]; */\n\ntype t = Js.Nullable.t(Js.Global.intervalId);\n\nlet n_frames = Array.length(frames);\n\nlet start = msg => {\n  let i = ref(0);\n  Js.Nullable.return(\n    Js.Global.setInterval(\n      () => {\n        Printf.printf(\n          \"%s %s                                                                                    \\r\\r\",\n          msg,\n          frames[i^ mod n_frames],\n        );\n        i := i^ + 1;\n      },\n      interval,\n    ),\n  );\n};\n\nlet cancel = intervalID =>\n  Js.Nullable.iter(intervalID, (. intervalId) =>\n    Js.Global.clearInterval(intervalId)\n  );\n\nlet stop = spinnerIntervalID => {\n  Printf.printf(\n    \"                                                                                       \\r\\r\",\n  );\n  cancel(spinnerIntervalID);\n};\n\nlet clearLine = () => {\n  Js.log(\"\\n\");\n};\n"
  },
  {
    "path": "npm-cli/src/Spinner.rei",
    "content": "type t;\nlet start: string => t;\nlet stop: t => unit;\nlet clearLine: unit => unit;\n"
  },
  {
    "path": "npm-cli/src/Template.re",
    "content": "open Utils;\n\nmodule Helpers: {\n  /** Contains functions that compute package name kebabs, upper camel\n   cased and other forms that aid in generating Dune config for the subpackages */\n\n  /** Substitute variable in a file name. Different from [substituteTemplateValues]\n   since placeholders in file name contains underscore */\n  let substituteFileNames: (Path.t, string) => string;\n\n  /** strips -template suffix */\n  let stripTemplateExtension: string => string;\n\n  /** Substitiute variables in the provided string (file contents) */\n  let substituteTemplateValues: (Path.t, string) => string;\n} = {\n  open Bindings;\n\n  /** If the package name were [fooBar], it would be turned to [foo-bar] */\n  /* let packageNameKebab: Path.t => string; */\n  let packageNameKebab = projectPath => kebab(basename(projectPath));\n\n  /** If the package name were [@opam/foo], it turns [foo] */\n  /* let packageNameKebabSansScope: Path.t => string; */\n  let packageNameKebabSansScope = projectPath =>\n    projectPath |> packageNameKebab |> removeScope;\n\n  /** foo-bar turns FooBar */\n  /* let packageNameUpperCamelCase: Path.t => string; */\n  let packageNameUpperCamelCase = projectPath =>\n    projectPath |> packageNameKebabSansScope |> upperCamelCasify;\n\n  /** Set to a 0.0.0 */\n  /* let templateVersion: string; */\n  let templateVersion = \"0.0.0\";\n\n  /** Produces value for (library name <packageLibName> ...) */\n  /* let packageLibName: Path.t => string; */\n  let packageLibName = projectPath =>\n    packageNameKebabSansScope(projectPath) ++ \"/library\";\n\n  /** Produces value for (library name <packageLibName> ...) */\n  /* let packageTestName: Path.t => string; */\n  let packageTestName = projectPath =>\n    packageNameKebabSansScope(projectPath) ++ \"/test\";\n\n  let substituteTemplateValues = (projectPath, s) =>\n    s\n    |> Js.String.replaceByRe(\n         [%bs.re \"/<PACKAGE_NAME_FULL>/g\"],\n         packageNameKebab(projectPath),\n       )\n    |> Js.String.replaceByRe([%bs.re \"/<VERSION>/g\"], templateVersion)\n    |> Js.String.replaceByRe(\n         [%bs.re \"/<PUBLIC_LIB_NAME>/g\"],\n         packageLibName(projectPath),\n       )\n    |> Js.String.replaceByRe(\n         [%bs.re \"/<TEST_LIB_NAME>/g\"],\n         packageTestName(projectPath),\n       )\n    |> Js.String.replaceByRe(\n         [%bs.re \"/<PACKAGE_NAME>/g\"],\n         packageNameKebab(projectPath),\n       )\n    |> Js.String.replaceByRe(\n         [%bs.re \"/<PACKAGE_NAME_UPPER_CAMEL>/g\"],\n         packageNameUpperCamelCase(projectPath),\n       );\n  let stripTemplateExtension = s => {\n    s |> Js.String.replace(\"-template\", \"\");\n  };\n\n  let substituteFileNames = (projectPath, s) => {\n    s\n    |> Js.String.replaceByRe(\n         [%bs.re \"/__PACKAGE_NAME_FULL__/g\"],\n         packageNameKebab(projectPath),\n       )\n    |> Js.String.replaceByRe(\n         [%bs.re \"/__PACKAGE_NAME__/g\"],\n         packageNameKebab(projectPath),\n       )\n    |> Js.String.replaceByRe(\n         [%bs.re \"/__PACKAGE_NAME_UPPER_CAMEL__/g\"],\n         packageNameUpperCamelCase(projectPath),\n       );\n  };\n};\n\nopen Bindings;\nopen Helpers;\nlet copyAndSubstitute = (templatePath, projectPath, ignoreDirs) => {\n  let ignoreDirs = ignoreDirs @ [\".ci-self\"]; /* Hacky! Figure a cleaner way to ignore template ci files */\n\n  let ignoreDirsTbl = Hashtbl.create(ignoreDirs |> List.length);\n  List.iter(\n    ignoreDir => Hashtbl.add(ignoreDirsTbl, ignoreDir, true),\n    ignoreDirs,\n  );\n  Js.log(\"\");\n  Dir.scan(\n    ignoreDirsTbl,\n    src => {\n      let dest =\n        Js.String.replace(templatePath, projectPath, src)\n        |> substituteFileNames(projectPath)\n        |> stripTemplateExtension;\n\n      if (Js.String.search([%re \"/azure\\\\-pipelines\\\\.ya?ml/\"], src) != (-1)\n          || Js.String.search([%re \"/README.md/i\"], src) != (-1)) {\n        ResultPromise.ok();\n      } else {\n        Fs.isDirectory(src)\n        |> Js.Promise.then_(isDir =>\n             if (isDir) {\n               Fs.mkdir(dest);\n             } else {\n               Js.Promise.(\n                 Fs.(\n                   readFile(. src)\n                   |> then_(b =>\n                        Buffer.toString(b)\n                        |> substituteTemplateValues(projectPath)\n                        |> Buffer.from\n                        |> resolve\n                      )\n                   |> then_(s => writeFile(. dest, s))\n                   |> then_(_ =>\n                        if (Js.String.search([%re \"/\\\\.lock/\"], dest) == (-1)) {\n                          (\"    created \" |> Chalk.green)\n                          ++ (\n                            dest\n                            |> Js.String.replace(\n                                 projectPath\n                                 ++ (Process.platform == \"win32\" ? \"\\\\\" : \"/\"),\n                                 \"\",\n                               )\n                            |> Chalk.whiteBright\n                          )\n                          |> Js.log;\n                          resolve();\n                        } else {\n                          resolve();\n                        }\n                      )\n                 )\n               );\n             }\n           )\n        |> Js.Promise.then_(_ => ResultPromise.ok());\n      };\n    },\n    templatePath,\n  );\n};\n\nlet substitute = projectPath => {\n  walk_sync(projectPath)\n  |> Array.map(file_or_dir => Path.join([|projectPath, file_or_dir|]))\n  |> Js.Array.filter(file_or_dir => {statSync(file_or_dir)->isFile})\n  |> Array.map(file => {\n       let substitutedName =\n         file |> substituteFileNames(projectPath) |> stripTemplateExtension;\n       Js.Promise.(\n         Fs.(\n           readFile(. file)\n           |> then_(b =>\n                Buffer.toString(b)\n                |> substituteTemplateValues(projectPath)\n                |> Buffer.from\n                |> resolve\n              )\n           |> then_(s => writeFile(. substitutedName, s))\n           |> then_(_ => {\n                if (file != substitutedName) {\n                  Node.Fs.unlinkSync(file);\n                };\n                substitutedName\n                |> Js.String.replace(\n                     projectPath ++ (Process.platform == \"win32\" ? \"\\\\\" : \"/\"),\n                     \"\",\n                   )\n                |> resolve;\n              })\n         )\n       );\n     })\n  |> Js.Promise.all\n  |> Js.Promise.then_(files => {\n       let shown = ref([]);\n       files\n       |> Array.to_list\n       |> List.iter(fileName =>\n            if (Js.String.search([%re \"/\\\\.lock/\"], fileName) == (-1)\n                && !List.exists(x => x == fileName, shown^)) {\n              (\"    created \" |> Chalk.green)\n              ++ (fileName |> Chalk.whiteBright)\n              |> Js.log;\n              shown := [fileName, ...shown^];\n            } else {\n              ();\n            }\n          );\n       ResultPromise.ok();\n     });\n};\n\nmodule Kind = {\n  open ResultPromise;\n  type t =\n    | Path(string)\n    | GitRemote(string);\n  let path = x => Path(x);\n  let gitRemote = x => GitRemote(x);\n\n  let validate = source => {\n    /* Sanitisation. Checking if the source is a valid pesy\n       project*/\n    /* We may not reliably be able to run 'esy status' in a\n       template project. Otherwise, we could have have simply obtained\n       rootPackageConfigPath from it */\n    /* Checking if root as a json file. Pesy supports multiple esy sandboxes\n       Therefore, any one of them may contain a pesy config, for the whole\n       template to be considered a valid pesy template */\n    Fs.readdir(source)\n    |> Js.Promise.then_(directoryEntries =>\n         Js.Array.reduce(\n           (acc, directoryEntry) =>\n             if (Js.Re.test_([%re \"/\\\\.json$/\"], directoryEntry)) {\n               Js.Array.concat(\n                 acc,\n                 [|Path.join([|source, directoryEntry|])|],\n               );\n             } else {\n               acc;\n             },\n           [||],\n           directoryEntries,\n         )\n         |> Js.Promise.resolve\n       )\n    |> Js.Promise.then_(jsonFiles =>\n         if (Array.length(jsonFiles) == 0) {\n           ResultPromise.fail(\n             {j|No esy manifest found in the template ($source) |j},\n           );\n         } else {\n           Js.Array.map(\n             jsonFile => {\n               Fs.readFile(. jsonFile)\n               |> Js.Promise.then_(jsonBytes => {\n                    switch (\n                      jsonBytes |> Bindings.Buffer.toString |> Json.parse\n                    ) {\n                    | None =>\n                      ResultPromise.fail(\n                        {j| JSON file $jsonFile failed to parse |j},\n                      )\n                    | Some(json) =>\n                      let buildDirsExists =\n                        switch (PesyConfig.Build.ofJson(json)) {\n                        | Ok(_) => true\n                        | Error(_) => false\n                        };\n                      let (pesyConfigExists, explicitIgnoreDirs) =\n                        switch (PesyConfig.ofJson(json)) {\n                        | Ok(pesyConfig) =>\n                          switch (PesyConfig.getIgnoreDirs(pesyConfig)) {\n                          | Some(explicitIgnoreDirs) => (\n                              true,\n                              explicitIgnoreDirs,\n                            )\n                          | None => (true, [])\n                          }\n                        | Error(_msg) => (false, [])\n                        };\n                      if (buildDirsExists || pesyConfigExists) {\n                        ResultPromise.ok((jsonFile, explicitIgnoreDirs));\n                      } else {\n                        ResultPromise.fail(\n                          {j|Neither 'pesy' nor 'buildDirs' was found in $jsonFile.\n'pesy' must contain 'github' and 'azure-project'.\n'buildDirs' must be key-value object of build directories and their config  |j},\n                        );\n                      };\n                    }\n                  })\n             },\n             jsonFiles,\n           )\n           |> Js.Promise.all\n           |> Js.Promise.then_(esyManifestFiles => {\n                let (pesyManifests, errors, explicitIgnoreDirs) =\n                  Js.Array.reduce(\n                    ((pesyManifests, errors, accExplicitIgnoreDirs)) =>\n                      fun\n                      | Ok((jsonFile, explicitIgnoreDirs)) => (\n                          [jsonFile, ...pesyManifests],\n                          errors,\n                          explicitIgnoreDirs @ accExplicitIgnoreDirs,\n                        )\n                      | Error(msg) => (\n                          pesyManifests,\n                          [msg, ...errors],\n                          accExplicitIgnoreDirs,\n                        ),\n                    ([], [], []),\n                    esyManifestFiles,\n                  );\n                if (List.length(pesyManifests) == 0) {\n                  let errors =\n                    Js.Array.joinWith(\"\\n\", Array.of_list(errors));\n                  ResultPromise.fail(\n                    {j|No esy manifest files found with pesy config (buildDirs or pesy).\nErrors:\n$errors\n|j},\n                  );\n                } else {\n                  ResultPromise.ok(explicitIgnoreDirs);\n                };\n              });\n         }\n       );\n  };\n\n  let gen = (dest, bootstrapCIOnly) =>\n    fun\n    | GitRemote(remote) => {\n        let tmpdir = Os.tmpdir();\n        let hash = Crypto.sha256(. remote, \"pesy-sha256-secret\");\n        let remoteTemplateStageArea =\n          Path.join([|tmpdir, \"remote-stage-area-\" ++ hash|]);\n        /* TODO: sanitise remote templates */ downloadGit(\n          remote,\n          remoteTemplateStageArea,\n        )\n        >>= (() => validate(remoteTemplateStageArea))\n        >>= (\n          explicitIgnoreDirs => {\n            copyAndSubstitute(\n              remoteTemplateStageArea,\n              dest,\n              explicitIgnoreDirs @ [\"node_modules\", \".git\", \"_esy\"],\n            );\n          }\n        );\n      }\n    | Path(source) =>\n      if (bootstrapCIOnly) {\n        copyAndSubstitute(DefaultTemplate.ciPath, dest, []);\n      } else {\n        validate(source)\n        >>= (\n          explicitIgnoreDirs =>\n            copyAndSubstitute(\n              source,\n              dest,\n              explicitIgnoreDirs @ [\"node_modules\", \".git\", \"_esy\"],\n            )\n        );\n      };\n  let ofString = str =>\n    /* TODO: sanitisation. For instance, if git remotes with three components (foo/bar/baz) are meaningless */\n    if (Path.isAbsolute(str)) {\n      Path(str) |> Result.return;\n    } else {\n      GitRemote(str) |> Result.return;\n    };\n  let cmdlinerConv = {\n    let parser: Cmdliner.Arg.parser(t) =\n      (str: string) =>\n        switch (ofString(str)) {\n        | Ok(kind) => `Ok(kind)\n        | Error(msg) => `Error(msg)\n        };\n\n    let printer: Cmdliner.Arg.printer(t) =\n      (ppf: Format.formatter, v: t) => (\n        switch (v) {\n        | GitRemote(remote) => Format.fprintf(ppf, \"GitRemote(%s)\", remote)\n        | Path(path) => Format.fprintf(ppf, \"Path(%s)\", path)\n        }: unit\n      );\n\n    (parser, printer);\n  };\n};\n"
  },
  {
    "path": "npm-cli/src/Template.rei",
    "content": "module Kind: {\n  type t;\n\n  let path: string => t;\n  let gitRemote: string => t;\n\n  let gen: (Path.t, bool, t) => ResultPromise.t(unit, string);\n  /** Parses a string into either Path or GitRemote. Otherwise fails */\n  let ofString: string => result(t, string);\n  let cmdlinerConv: Cmdliner.Arg.conv(t); // = (Cmdliner.Arg.parser(t), Cmdliner.Arg.printer(t));\n};\n\n/** Copies a template */\nlet copyAndSubstitute:\n  (Path.t, Path.t, list(string)) => ResultPromise.t(unit, string);\n\n/** Substitutes values in the template */\nlet substitute: Path.t => ResultPromise.t(unit, string);\n"
  },
  {
    "path": "npm-cli/src/Utils.re",
    "content": "let (<<) = (f, g, x) => f(g(x));\nmodule Caml = {\n  module List = List;\n  module String = String;\n};\n\nlet spf = Printf.sprintf;\n\nlet parent = Filename.dirname;\n\n/* let copyTemplate = (a, b) => { */\n/*   write(b, readFile(Path.(scriptPath / \"share\" / \"template-repo\" / a))); */\n/* }; */\n\nlet kebab = str => {\n  let charStrings = Js.String.split(\"\", str);\n  let k =\n    Js.Array.joinWith(\n      \"\",\n      Array.map(\n        c => {\n          let c = Caml.String.get(c, 0);\n          if (c == ' ' || c == '_') {\n            String.make(1, '-');\n          } else if (Char.uppercase_ascii(c) != Char.lowercase_ascii(c)\n                     && Char.uppercase_ascii(c) == c) {\n            \"-\" ++ String.make(1, Char.lowercase_ascii(c));\n          } else {\n            String.make(1, c);\n          };\n        },\n        charStrings,\n      ),\n    )\n    |> Js.String.replaceByRe([%bs.re \"/\\\\-\\\\-+/g\"], \"-\");\n\n  if (Js.String.split(\"\", k)->Array.unsafe_get(0) == \"-\") {\n    Caml.String.sub(k, 1, String.length(k) - 1);\n  } else {\n    k;\n  };\n};\n\nlet removeScope = kebab =>\n  Js.String.replaceByRe([%bs.re \"/[^\\\\/]*\\\\//g\"], \"\", kebab);\n\nlet upperCamelCasify = kebab => {\n  let parts = Js.String.split(\"-\", kebab);\n  let k = Js.Array.joinWith(\"\", Array.map(String.capitalize_ascii, parts));\n  if (Caml.String.get(k, 0) == '-') {\n    Caml.String.sub(k, 1, String.length(k) - 1);\n  } else {\n    k;\n  };\n};\n\n/* let loadTemplate = name => */\n/*   readFile(Path.(scriptPath / \"share\" / \"template-repo\" / name)); */\n/* let rec mkdirp = p => { */\n/*   let directory_created = exists(p); */\n/*   if (!directory_created) { */\n/*     mkdirp(Filename.dirname(p)); */\n/*     makedirSync(p); */\n/*   }; */\n/* }; */\n\nlet renderAsciiTree = (dir, name, namespace, require, isLast) =>\n  if (isLast) {\n    spf({js|│\n└─ %s\n   %s\n   %s\n|js}, dir, name, namespace);\n  } else {\n    Printf.sprintf(\n      {js|│\n├─ %s\n│  %s\n│  %s\n|js},\n      dir,\n      name,\n      namespace,\n    )\n    ++ (require == \"\" ? \"\" : (isLast ? \"   \" : \"│  \") ++ require);\n  };\n\n/* Capable of rendering a tree of depth 1 */\n/* exception RenderAsciiTreeChildrenError(string); */\n/* let renderAscTreeChildren = */\n/*   fun */\n/*   | [] => */\n/*     raise(RenderAsciiTreeChildrenError(\"Tree cannot have zero children\")) */\n/*   | [firstChild, ...restChildren] => { */\n/*       let firstChildLog = spf(\"├─ %s\", firstChild); */\n/*       let restChildrenLog = */\n/*         Caml.List.map(c => spf(\"│  %s\", c), restChildren); */\n/*       String.joinWith(\"\\n\", [\"│\", firstChildLog, ...restChildrenLog]); */\n/*     }; */\n/* let renderAscLastTree = */\n/*   fun */\n/*   | [] => */\n/*     raise(RenderAsciiTreeChildrenError(\"Tree cannot have zero children\")) */\n/*   | [firstChild, ...restChildren] => { */\n/*       let firstChildLog = spf(\"└─ %s\", firstChild); */\n/*       let restChildrenLog = */\n/*         Caml.List.map(c => spf(\"   %s\", c), restChildren); */\n/*       String.join(~sep=\"\\n\", [\"│\", firstChildLog, ...restChildrenLog]); */\n/*     }; */\n\n/* let rec renderAscTree = */\n/*   fun */\n/*   | [] => () */\n/*   | [t] => print_endline(renderAscLastTree(t)) */\n/*   | [t, ...rest] => { */\n/*       Js.log(renderAscTreeChildren(t)); */\n/*       renderAscTree(rest); */\n/*     }; */\n\nmodule Option: {\n  type t('a) = option('a);\n  let (>>=): (t('a), 'a => t('b)) => t('b);\n  let (>>|): (t('a), 'a => 'b) => t('b);\n  let return: 'a => t('a);\n} = {\n  open Belt.Option;\n\n  type t('a) = option('a);\n\n  let (>>=) = flatMap;\n\n  let (>>|) = map;\n\n  let return = x => Some(x);\n};\n\nlet rec askYesNoQuestion = (~question, ~onYes, ~onNo, ()) => {\n  let rl =\n    Readline.createInterface({\n      \"input\": [%raw \"process.stdin\"],\n      \"output\": [%raw \"process.stdout\"],\n    });\n  rl##question(\n    question ++ \" [y/n] \",\n    input => {\n      let response = input->Js.String.trim->Js.String.toLowerCase;\n      switch (response) {\n      | \"y\"\n      | \"yes\" =>\n        onYes();\n        rl##close();\n      | \"n\"\n      | \"no\" =>\n        onNo();\n        rl##close();\n      | _ =>\n        rl##close();\n        askYesNoQuestion(~question, ~onYes, ~onNo, ());\n      };\n    },\n  );\n};\n\nlet jsExnGuard = f =>\n  try(f()) {\n  | Js.Exn.Error(e) =>\n    let message =\n      switch (Js.Exn.message(e)) {\n      | Some(message) => message\n      | None => \"\"\n      };\n    let stack =\n      switch (Js.Exn.stack(e)) {\n      | Some(stack) => stack\n      | None => \"\"\n      };\n    Js.log(message);\n    Js.log(stack);\n    Js.Promise.resolve();\n  };\n"
  },
  {
    "path": "npm-cli/src/Warmup.re",
    "content": "open Bindings;\nopen ResultPromise;\n\nlet os =\n  switch (Process.platform) {\n  | \"darwin\" =>\n    let os = \"Darwin\";\n    let os =\n      switch (Process.arch) {\n      | \"arm64\" => os ++ \"-arm64\"\n      | _ => os\n      };\n    os;\n  | \"linux\" => \"Linux\"\n  | \"win32\" => \"Windows_NT\"\n  | _ => failwith(\"No $os\")\n  };\n\nlet prepareAzureCacheURL = (projStr, github) => {\n  let proj =\n    projStr\n    |> AzurePipelines.ProjectName.ofString\n    |> AzurePipelines.ProjectName.validate;\n  AzurePipelines.getDefinitionID(proj, github)\n  >>= (definitionID => AzurePipelines.getBuildID(proj, definitionID))\n  >>= (id => AzurePipelines.getDownloadURL(proj, id));\n};\n\nlet getLatestAzureBuildId = (proj, github) => {\n  AzurePipelines.getDefinitionID(proj, github)\n  >>= (definitionID => AzurePipelines.getBuildID(proj, definitionID));\n};\n\nlet download = (url, file, ~progress, ~end_, ~error) => {\n  open Bindings;\n  let stream = RequestProgress.requestProgress(Request.request(url));\n  RequestProgress.onProgress(stream, state =>\n    progress(state##size##transferred)\n  );\n  /* RequestProgress.onData(stream, data); */\n  RequestProgress.onEnd(stream, end_);\n  RequestProgress.onError(stream, error);\n  RequestProgress.pipe(stream, Fs.createWriteStream(file));\n};\n\nlet getUnzipCmd = () => {\n  Process.platform == \"win32\"\n    ? Cmd.ofPathStr(\n        Path.resolve([|\n          dirname,\n          \"..\",\n          \"esy\",\n          \"node_modules\",\n          \"esy-bash\",\n          \".cygwin\",\n          \"bin\",\n          \"unzip.exe\",\n        |]),\n      )\n      |> Js.Promise.then_(cmd => {\n           switch (cmd) {\n           | Ok(cmd) => Ok(cmd) |> Js.Promise.resolve\n           | Error(_) =>\n             Cmd.ofPathStr(\n               Path.resolve([|\n                 dirname,\n                 \"..\",\n                 \"@esy-nightly\",\n                 \"esy\",\n                 \"node_modules\",\n                 \"esy-bash\",\n                 \".cygwin\",\n                 \"bin\",\n                 \"unzip.exe\",\n               |]),\n             )\n           }\n         })\n    : Cmd.make(~cmd=\"unzip\", ~env=Process.env);\n};\n\nlet giga = 1024 * 1024 * 1024;\nlet mega = 1024 * 1024;\nlet kilo = 1024;\n\nlet divideBy = (n, x) => float_of_int(x) /. float_of_int(n);\nlet toHumanReadableBytes =\n  fun\n  | x when x > giga => x |> divideBy(giga) |> Printf.sprintf(\"%.2f GB  \")\n  | x when x > mega => x |> divideBy(mega) |> Printf.sprintf(\"%.2f MB  \")\n  | x when x > kilo => x |> divideBy(kilo) |> Printf.sprintf(\"%.2f KB  \")\n  | x => (x |> string_of_int) ++ \" bytes\";\n\nlet readFileContentAsString = filePath =>\n  Fs.readFile(. filePath)\n  |> Js.Promise.then_(bytes =>\n       Bindings.Buffer.toString(bytes) |> Js.String.trim |> Js.Promise.resolve\n     );\n\ntype checksumMatch =\n  | ChecksumMatch\n  | ChecksumNotMatch;\n\ntype cacheState =\n  | CacheFound(checksumMatch)\n  | CacheNotFound;\n\nlet verifyChecksum = (~checksumFilePath, ~cacheZipPath) =>\n  Js.Promise.all2((\n    readFileContentAsString(checksumFilePath),\n    Crypto.sha256File(cacheZipPath),\n  ))\n  |> Js.Promise.then_(((checksumToMatch, calculatedChecksum)) => {\n       Js.Promise.resolve(\n         if (checksumToMatch == calculatedChecksum) {\n           ChecksumMatch;\n         } else {\n           ChecksumNotMatch;\n         },\n       )\n     });\n\nlet checkCacheState = (~checksumFilePath, ~cacheZipPath) =>\n  Js.Promise.all2((Fs.exists(cacheZipPath), Fs.exists(checksumFilePath)))\n  |> Js.Promise.then_(((cacheZipFound, checksumFileFound)) =>\n       if (cacheZipFound && checksumFileFound) {\n         verifyChecksum(~checksumFilePath, ~cacheZipPath)\n         |> Js.Promise.then_(checksumMatch =>\n              Js.Promise.resolve(CacheFound(checksumMatch))\n            );\n       } else {\n         Js.Promise.resolve(CacheNotFound);\n       }\n     );\n\nlet rec downloadCacheFromGithub =\n        (~github, ~templateTag, ~cacheDir, ~cacheZipPath, ~checksumFilePath) => {\n  Js.log2(\n    \"Fetching prebuilts from Github\" |> Chalk.dim,\n    github |> Chalk.whiteBright,\n  );\n  Rimraf.run(cacheDir)\n  |> Js.Promise.then_(_ => Fs.mkdir(cacheDir))\n  |> (\n    _ =>\n      Resolve.resolve(\n        {j|https://github.com/$github/releases/download/$templateTag/cache-$os-install-v1-checksum|j},\n      )\n  )\n  >>= (\n    downloadUrl =>\n      Js.Promise.make((~resolve, ~reject as _) => {\n        let progress = bytes => {\n          bytes\n          |> toHumanReadableBytes\n          |> (\n            x =>\n              Process.Stdout.(\n                write(\n                  v,\n                  \"Downloading checksum file \" ++ (x |> Chalk.green) ++ \"\\r\",\n                )\n              )\n          );\n        };\n        let error = error => {\n          Js.log(error);\n          resolve(. Error(\"Checksum file download failed\"));\n        };\n        let end_ = () => {\n          Js.log(\"Checksum file downloaded. \" |> Chalk.green);\n          resolve(. Ok());\n        };\n        download(downloadUrl, checksumFilePath, ~progress, ~error, ~end_);\n      })\n  )\n  >>= (\n    _ =>\n      Resolve.resolve(\n        {j|https://github.com/$github/releases/download/$templateTag/cache-$os-install-v1|j},\n      )\n  )\n  >>= (\n    downloadUrl =>\n      Js.Promise.make((~resolve, ~reject as _) => {\n        let progress = bytes => {\n          bytes\n          |> toHumanReadableBytes\n          |> (\n            x =>\n              Process.Stdout.(\n                write(\n                  v,\n                  \"Downloading cache (\"\n                  ++ {j|cache-$os-install-v1|j}\n                  ++ \") \"\n                  ++ (x |> Chalk.green)\n                  ++ \"\\r\",\n                )\n              )\n          );\n        };\n        let error = error => {\n          Js.log(error);\n          resolve(. Error(\"Cache files download failed\"));\n        };\n        let end_ = () => {\n          Js.log(\"\\nCache files downloaded\" |> Chalk.green);\n          resolve(. Ok());\n        };\n        download(downloadUrl, cacheZipPath, ~progress, ~error, ~end_);\n      })\n  )\n  >>= (_ => getUnzipCmd())\n  >>= (cmd => Cmd.output(~cwd=cacheDir, ~cmd, ~args=[|\"-o\", cacheZipPath|]))\n  >>= (\n    _ => {\n      Process.Stdout.(write(v, \"Verifying checksum... \"));\n      verifyChecksum(~checksumFilePath, ~cacheZipPath)\n      |> Js.Promise.then_(cacheState =>\n           switch (cacheState) {\n           | ChecksumMatch =>\n             Process.Stdout.(\n               write(v, Chalk.green(\"checksum match\") ++ \"\\n\")\n             );\n             ResultPromise.ok();\n           | ChecksumNotMatch =>\n             Process.Stdout.(\n               write(v, Chalk.red(\"checksum does not match\") ++ \"\\n\")\n             );\n             Js.Promise.make((~resolve, ~reject as _) => {\n               Utils.askYesNoQuestion(\n                 ~question=\n                   \"Looks like there is an issue with the downloaded files. Do you want to re-download these files ?\",\n                 ~onYes=\n                   () =>\n                     downloadCacheFromGithub(\n                       ~github,\n                       ~cacheDir,\n                       ~cacheZipPath,\n                       ~checksumFilePath,\n                     ),\n                 ~onNo=\n                   () =>\n                     resolve(.\n                       Result.fail(\n                         \"Issue with the downloaded files (checksum does not match)\",\n                       ),\n                     ),\n                 (),\n               )\n             });\n           }\n         );\n    }\n  );\n};\n\nlet rec downloadCacheFromAzure =\n        (\n          ~azureProject,\n          ~github,\n          ~cacheDir,\n          ~checksumZipPath,\n          ~cacheZipPath,\n          ~checksumFilePath,\n          ~exportPath,\n        ) => {\n  Js.log2(\n    \"Fetching prebuilts for azure project\" |> Chalk.dim,\n    azureProject |> AzurePipelines.ProjectName.toString |> Chalk.whiteBright,\n  );\n  Rimraf.run(cacheDir)\n  |> Js.Promise.then_(_ => Fs.mkdir(cacheDir))\n  |> Js.Promise.then_(() => getLatestAzureBuildId(azureProject, github))\n  >>= (\n    buildId => {\n      AzurePipelines.getChecksumDownloadURL(azureProject, buildId)\n      >>= (\n        downloadUrl =>\n          Js.Promise.make((~resolve, ~reject as _) => {\n            let progress = bytes => {\n              bytes\n              |> toHumanReadableBytes\n              |> (\n                x =>\n                  Process.Stdout.(\n                    write(\n                      v,\n                      \"Downloading checksum file\" ++ (x |> Chalk.green) ++ \"\\r\",\n                    )\n                  )\n              );\n            };\n            let error = error => {\n              Js.log(error);\n              resolve(. Error(\"Checksum file download failed\"));\n            };\n            let end_ = () => {\n              Js.log(\"Checksum file downloaded. \" |> Chalk.green);\n              resolve(. Ok());\n            };\n            download(downloadUrl, checksumZipPath, ~progress, ~error, ~end_);\n          })\n      )\n      >>= (_ => AzurePipelines.getDownloadURL(azureProject, buildId))\n      >>= (\n        downloadUrl =>\n          Js.Promise.make((~resolve, ~reject as _) => {\n            let progress = bytes => {\n              bytes\n              |> toHumanReadableBytes\n              |> (\n                x =>\n                  Process.Stdout.(\n                    write(\n                      v,\n                      \"Downloading cache files \" ++ (x |> Chalk.green) ++ \"\\r\",\n                    )\n                  )\n              );\n            };\n            let error = error => {\n              Js.log(error);\n              resolve(. Error(\"Cache files download failed\"));\n            };\n            let end_ = () => {\n              Js.log(\"\\nCache files Downloaded. \" |> Chalk.green);\n              resolve(. Ok());\n            };\n            download(downloadUrl, cacheZipPath, ~progress, ~error, ~end_);\n          })\n      )\n      >>= (_ => getUnzipCmd())\n      >>= (\n        cmd => {\n          Cmd.output(~cwd=cacheDir, ~cmd, ~args=[|\"-o\", checksumZipPath|])\n          >>= (\n            _ => {\n              Js.log(\"Extracting files...\");\n              Cmd.output(~cwd=cacheDir, ~cmd, ~args=[|\"-o\", cacheZipPath|]);\n            }\n          )\n          >>= (\n            _ =>\n              Cmd.output(\n                ~cwd=cacheDir,\n                ~cmd,\n                ~args=[|\"-d\", \"_export\", \"-o\", exportPath|],\n              )\n          );\n        }\n      )\n      >>= (\n        _ => {\n          Process.Stdout.(write(v, \"Verifying checksum... \"));\n          verifyChecksum(~checksumFilePath, ~cacheZipPath=exportPath)\n          |> Js.Promise.then_(cacheState =>\n               switch (cacheState) {\n               | ChecksumMatch =>\n                 Process.Stdout.(\n                   write(v, Chalk.green(\"checksum match\") ++ \"\\n\")\n                 );\n                 ResultPromise.ok();\n               | ChecksumNotMatch =>\n                 Process.Stdout.(\n                   write(v, Chalk.red(\"checksum does not match\") ++ \"\\n\")\n                 );\n                 Js.Promise.make((~resolve, ~reject as _) => {\n                   Utils.askYesNoQuestion(\n                     ~question=\n                       \"Looks like there is an issue with the downloaded files. Do you want to re-download these files ?\",\n                     ~onYes=\n                       () =>\n                         downloadCacheFromAzure(\n                           ~azureProject,\n                           ~github,\n                           ~cacheDir,\n                           ~checksumZipPath,\n                           ~cacheZipPath,\n                           ~checksumFilePath,\n                           ~exportPath,\n                         ),\n                     ~onNo=\n                       () =>\n                         resolve(.\n                           Result.fail(\n                             \"Issue with the downloaded files (checksum does not match)\",\n                           ),\n                         ),\n                     (),\n                   )\n                 });\n               }\n             );\n        }\n      );\n    }\n  );\n};\n\nlet run = (esy, project) => {\n  let projectHash = Project.lockFileHash(project);\n  let projectPath = Project.path(project);\n  let cacheDir = Path.join([|Os.tmpdir(), \"pesy-\" ++ projectHash|]);\n  let checksumZipPath = Path.join([|cacheDir, \"checksum.zip\"|]);\n  let cacheZipPath = Path.join([|cacheDir, \"cache.zip\"|]);\n  let exportPath =\n    Path.join([|cacheDir, {j|cache-$os-install-v1|j}, \"_export.zip\"|]);\n\n  Js.Promise.resolve(Project.pesyConfig(project))\n  >>= (\n    pesyConfig => {\n      let p = {\n        let github = PesyConfig.getGithub(pesyConfig);\n        let templateVersion = PesyConfig.getTemplateTag(pesyConfig);\n        let azureProject = PesyConfig.getAzureProject(pesyConfig);\n        switch (templateVersion, azureProject) {\n        | (None, None) =>\n          let checksumFilePath = Path.join([|cacheDir, \"checksum.txt\"|]);\n          checkCacheState(~checksumFilePath, ~cacheZipPath)\n          |> Js.Promise.then_(cacheState =>\n               switch (cacheState) {\n               | CacheFound(ChecksumMatch) => ResultPromise.ok()\n               | CacheNotFound\n               | CacheFound(ChecksumNotMatch) =>\n                 downloadCacheFromGithub(\n                   ~github,\n                   ~templateTag=\"latest\",\n                   ~cacheDir,\n                   ~cacheZipPath,\n                   ~checksumFilePath,\n                 )\n               }\n             );\n        | (Some(templateTag), _) =>\n          let checksumFilePath = Path.join([|cacheDir, \"checksum.txt\"|]);\n          checkCacheState(~checksumFilePath, ~cacheZipPath)\n          |> Js.Promise.then_(cacheState =>\n               switch (cacheState) {\n               | CacheFound(ChecksumMatch) => ResultPromise.ok()\n               | CacheNotFound\n               | CacheFound(ChecksumNotMatch) =>\n                 downloadCacheFromGithub(\n                   ~github,\n                   ~templateTag,\n                   ~cacheDir,\n                   ~cacheZipPath,\n                   ~checksumFilePath,\n                 )\n               }\n             );\n        | (None, Some(azureProject)) =>\n          let checksumFilePath =\n            Path.join([|\n              cacheDir,\n              {j|cache-$os-install-v1-checksum|j},\n              \"checksum.txt\",\n            |]);\n          checkCacheState(~checksumFilePath, ~cacheZipPath)\n          |> Js.Promise.then_(cacheState => {\n               switch (cacheState) {\n               | CacheFound(ChecksumMatch) => ResultPromise.ok()\n               | CacheNotFound\n               | CacheFound(ChecksumNotMatch) =>\n                 let azureProject =\n                   azureProject\n                   |> AzurePipelines.ProjectName.ofString\n                   |> AzurePipelines.ProjectName.validate;\n                 downloadCacheFromAzure(\n                   ~azureProject,\n                   ~github,\n                   ~cacheDir,\n                   ~checksumZipPath,\n                   ~cacheZipPath,\n                   ~checksumFilePath,\n                   ~exportPath,\n                 );\n               }\n             });\n        };\n      };\n      p\n      >>= (\n        _stdout =>\n          Esy.importDependencies(\n            ~projectPath,\n            ~exportsPath=Path.join([|cacheDir, \"_export\"|]),\n            esy,\n          )\n          |> Js.Promise.then_(\n               fun\n               | Ok(r) => ResultPromise.ok(r)\n               | Error(_) =>\n                 /* import-dependencies can sometimes fail on individual cache entries which is fail. We can simply retry */\n                 Esy.importDependencies(\n                   ~projectPath,\n                   ~exportsPath=Path.join([|cacheDir, \"_export\"|]),\n                   esy,\n                 ),\n             )\n          >>| (\n            ((stdout, stderr)) => {\n              Js.log(\n                (\"Running \" |> Chalk.dim)\n                ++ (\n                  \"esy import-dependencies \"\n                  ++ Path.join([|cacheDir, \"_export\"|])\n                  |> Chalk.bold\n                ),\n              );\n              Process.Stdout.(write(v, stdout |> Chalk.dim));\n              Process.Stdout.(write(v, stderr |> Chalk.dim));\n            }\n          )\n      );\n    }\n  );\n};\n"
  },
  {
    "path": "npm-cli/stubs/crypto.js",
    "content": "const crypto = require(\"crypto\");\nconst fs = require(\"fs\");\n\nfunction sha256(data, secret) {\n  crypto.createHmac(\"sha256\", secret).update(data).digest(secret);\n}\n\nfunction shaFile(path, algo) {\n  return new Promise((resolve, reject) => {\n    const shasum = crypto.createHash(algo);\n    let s = fs.ReadStream(path);\n    s.on(\"data\", function (data) {\n      shasum.update(data);\n    });\n\n    s.on(\"end\", function () {\n      var hash = shasum.digest(\"hex\");\n      resolve(hash);\n    });\n    s.on(\"error\", function (error) {\n      reject(error);\n    });\n  });\n}\n\nfunction sha1File(path) {\n  return shaFile(path, \"sha1\");\n}\n\nfunction sha256File(path) {\n  return shaFile(path, \"sha256\");\n}\n\nmodule.exports = { sha256, sha1File, sha256File };\n"
  },
  {
    "path": "npm-cli/stubs/fs.js",
    "content": "let { promisify } = require(\"util\");\nlet fs = require(\"fs\");\nlet readFile = promisify(fs.readFile);\nlet writeFile = promisify(fs.writeFile);\nlet mkdirP = promisify(fs.mkdir);\nlet exists = promisify(fs.exists);\nlet stat = promisify(fs.stat);\nlet readdir = promisify(fs.readdir);\nlet unlink = promisify(fs.unlink);\n\nlet mkdir = (path) => mkdirP(path, { recursive: true });\n\nmodule.exports = {\n  readFile,\n  writeFile,\n  mkdir,\n  exists,\n  readdir,\n  stat,\n  unlink,\n};\n"
  },
  {
    "path": "npm-cli/stubs/resolve.js",
    "content": "const url = require(\"url\");\n\nfunction run(urlStr, callback) {\n  let httpm;\n  let urlObj = url.parse(urlStr);\n  switch (urlObj.protocol) {\n    case \"http:\":\n      httpm = require(\"http\");\n      break;\n    case \"https:\":\n      httpm = require(\"https\");\n      break;\n    default:\n      throw `Unrecognised protocol in provided url: ${urlStr}`;\n  }\n  httpm.get(urlObj, function (response) {\n    if (response.statusCode >= 300 && response.statusCode < 400) {\n      let urlStr = response.headers.location;\n      run(urlStr, (err, resolvedUrl) => {\n        if (err) {\n          callback(err);\n        } else {\n          callback(null, resolvedUrl);\n        }\n      });\n    } else if (response.statusCode >= 200 && response.statusCode < 300) {\n      return callback(null, urlStr);\n    } else callback(\"Server returned 4xx/5xx for \" + urlStr);\n  });\n}\n\nmodule.exports.run = run;\n"
  },
  {
    "path": "npm-cli/templates/.gitignore",
    "content": "pesy-reason-template-*\ntemplate.zip"
  },
  {
    "path": "npm-cli/templates/.npmignore",
    "content": ""
  },
  {
    "path": "npm-cli/templates/ci/.ci/build-docker.yml",
    "content": "jobs:\n  - job: Docker_Alpine_Build\n    displayName: Docker Alpine Build\n    pool:\n      vmImage: ubuntu-latest\n    steps:\n      - checkout: self\n        submodules: true\n      - script: sudo apt install jq gzip\n        displayName: Install deps\n      - bash: |\n          ESY__PROJECT_NAME=$(jq -r .name package.json)\n          ESY__PROJECT_VERSION=$(jq -r .version package.json)\n          echo \"##vso[task.setvariable variable=esy__project_name]$ESY__PROJECT_NAME\"\n          echo \"##vso[task.setvariable variable=esy__project_version]$ESY__PROJECT_VERSION\"\n      - script: docker build . -f docker/DevImage.Dockerfile --network=host -t $(esy__project_name)-dev\n        displayName: \"Build Docker (dev) image\"\n      - script: docker container run -itd --network=host --name $(esy__project_name)-container $(esy__project_name)-dev\n        displayName: \"Run Docker container\"\n      - script:  docker cp $(esy__project_name)-container:/app/_release $PWD/_container_release\n        displayName: \"Copy _release from container\"\n      - script: npm pack\n        workingDirectory: _container_release\n        displayName: \"Npm pack'ing\"\n      - task: PublishBuildArtifacts@1\n        displayName: \"Publish Docker built artifact\"\n        inputs:\n          PathtoPublish: \"_container_release\"\n          ArtifactName: DockerBuiltNPM\n      - script: docker build . -f docker/ProdImage.Dockerfile --network=host -t $(esy__project_name)\n        displayName: \"Build production Docker image\"\n      - script: docker save $(esy__project_name) | gzip > $(esy__project_name)-docker-image.tar.gz\n        displayName: \"Save Docker image as tarball\"\n      - task: PublishBuildArtifacts@1\n        displayName: \"Publish Docker production image\"\n        inputs:\n          PathtoPublish: \"$(esy__project_name)-docker-image.tar.gz\"\n          ArtifactName: AlpineDockerImage\n"
  },
  {
    "path": "npm-cli/templates/ci/.ci/build-platform.yml",
    "content": "parameters:\n  platform: \"macOS\"\n  vmImage: \"macOS-10.13\"\n\njobs:\n  - job: ${{ parameters.platform }}\n    pool:\n      vmImage: ${{ parameters.vmImage }}\n      demands: node.js\n    timeoutInMinutes: 120 # This is mostly for Windows\n    steps: \n      - powershell: $Env:Path\n        continueOnError: true\n        condition: and(eq(variables['AGENT.OS'], 'Windows_NT'), and(eq(variables['Build.Reason'], 'PullRequest'), and(succeeded(), ne(variables['Build.SourceBranch'], variables['System.PullRequest.TargetBranch']))))\n        displayName: \"Print env in powershell\"\n      # Needed so that the mingw tar doesn't shadow the system tar. See\n      # pipelines.yaml. We need windows bsdtar from system32, not the mingw\n      # one. Note powershell doesn't need escaping of backslashes.\n      - powershell: Write-Host \"##vso[task.setvariable variable=PATH;]C:\\Program Files\\Git\\bin;C:\\Windows\\system32;${env:PATH}\"\n        continueOnError: true\n        condition: eq(variables['AGENT.OS'], 'Windows_NT')\n        displayName: \"Make sure C:/Program Files/Git/bin and windows/system32 is at front of path if windows\"\n      - powershell: $Env:Path\n        continueOnError: true\n        condition: and(eq(variables['AGENT.OS'], 'Windows_NT'), and(eq(variables['Build.Reason'], 'PullRequest'), and(succeeded(), ne(variables['Build.SourceBranch'], variables['System.PullRequest.TargetBranch']))))\n        displayName: \"Print env in powershell\"\n      - powershell: get-command tar\n        continueOnError: true\n        condition: and(eq(variables['AGENT.OS'], 'Windows_NT'), and(eq(variables['Build.Reason'], 'PullRequest'), and(succeeded(), ne(variables['Build.SourceBranch'], variables['System.PullRequest.TargetBranch']))))\n        displayName: \"Print where tar is located\"\n      - powershell: tar --help\n        continueOnError: true\n        condition: and(eq(variables['AGENT.OS'], 'Windows_NT'), and(eq(variables['Build.Reason'], 'PullRequest'), and(succeeded(), ne(variables['Build.SourceBranch'], variables['System.PullRequest.TargetBranch']))))\n        displayName: \"Print tar help\"\n      - powershell: Write-Host \"##vso[task.setvariable variable=HOME;]D:\\\"\n        continueOnError: true\n        condition: eq(variables['AGENT.OS'], 'Windows_NT')\n        displayName: \"Make sure $HOME is same is Agent.BuildDirectory\"\n      - bash: |\n          # COMPUTE THE ESY INSTALL CACHE LOCATION AHEAD OF TIME\n          DESIRED_LEN=\"85\"\n          # Not sure why, windows is has one extra underscore. Observed at https://github.com/ManasJayanth/reason-ocaml-tls-tutorial-meet/commit/3b4a6113cc413cc5cdf0fd8a2521c4c44dd1c0e5\n          if [ \"$AGENT_OS\" == \"Windows_NT\" ]; then\n            DESIRED_LEN=\"86\"\n          fi\n          HOME_ESY3=\"$HOME/.esy/3\"\n          HOME_ESY3_LEN=${#HOME_ESY3}\n          NUM_UNDERS=$(echo \"$(($DESIRED_LEN-$HOME_ESY3_LEN))\")\n          UNDERS=$(printf \"%-${NUM_UNDERS}s\" \"_\")\n          UNDERS=\"${UNDERS// /_}\"\n          THE_ESY__CACHE_INSTALL_PATH=${HOME_ESY3}${UNDERS}/i\n          if [ \"$AGENT_OS\" == \"Windows_NT\" ]; then\n            THE_ESY__CACHE_INSTALL_PATH=$( cygpath --mixed --absolute \"$THE_ESY__CACHE_INSTALL_PATH\")\n          fi\n          echo \"THE_ESY__CACHE_INSTALL_PATH: $THE_ESY__CACHE_INSTALL_PATH\"\n          # This will be exposed as an env var ESY__CACHE_INSTALL_PATH, or an\n          # Azure var esy__cache_install_path\n          echo \"##vso[task.setvariable variable=esy__cache_install_path]$THE_ESY__CACHE_INSTALL_PATH\"\n      # - bash: |\n      #     which esy\n      #     echo \"$( which esy )\"\n      #     echo \"##vso[task.setvariable variable=esy_bin_location]$(which esy)\"\n      #   displayName: \"Find esy binary\"\n      # - bash: echo ${ESY_BIN_LOCATION}\n      # displayName: \"Print esy bin location\"\n      - bash: env\n        displayName: \"Print environment\"\n      - template: esy-build-steps.yml\n      - task: PublishBuildArtifacts@1\n        displayName: \"Publish Artifact: ${{ parameters.platform }}\"\n        inputs:\n          PathtoPublish: \"_release\"\n          ArtifactName: ${{ parameters.platform }}\n  \n"
  },
  {
    "path": "npm-cli/templates/ci/.ci/cross-release.yml",
    "content": "steps:\n  - template: utils/use-node.yml\n\n  - script: \"mkdir _release\"\n    displayName: \"Create _release dir\"\n\n  - template: release-platform-setup.yml\n    parameters:\n      artifactName: \"DockerBuiltNPM\" # If static linking isn't necessary, use 'Linux'\n      folder: \"platform-linux\"\n\n  - template: release-platform-setup.yml\n    parameters:\n      artifactName: \"macOS\"\n      folder: \"platform-darwin\"\n\n  - template: release-platform-setup.yml\n    parameters:\n      artifactName: \"Windows\"\n      folder: \"platform-windows-x64\"\n\n  - script: \"node .ci/pipelines-release.js\"\n    displayName: \"node .ci/pipelines-release.js\"\n    continueOnError: true\n\n  - script: \"npm pack .\"\n    displayName: \"npm pack\"\n    workingDirectory: \"_release\"\n\n  - task: PublishBuildArtifacts@1\n    displayName: \"Publish Artifact: Release\"\n    inputs:\n      PathtoPublish: \"_release\"\n      ArtifactName: Release\n"
  },
  {
    "path": "npm-cli/templates/ci/.ci/esy-build-steps.yml",
    "content": "# Cross-platform set of build steps for building esy projects\n\nsteps:\n  - template: utils/use-node.yml\n  - template: utils/use-cache-yarn.yml\n  - template: utils/use-esy.yml\n  - script: \"esy install\"\n    displayName: \"esy install\"\n    condition: ne(variables['AGENT.OS'], 'Linux')\n  - template: utils/use-cache-esy.yml\n  - script: \"esy install --cache-tarballs-path=$(Agent.HomeDirectory)/esy-sources\"\n    displayName: \"esy install\"\n    condition: eq(variables['AGENT.OS'], 'Linux')\n  - template: utils/publish-sources.yml\n  - template: utils/restore-build-cache.yml\n  - script: \"esy build --release\"\n    displayName: \"esy build --release\"\n  - script: \"esy release\"\n    displayName: \"esy release\"\n  - template: utils/publish-build-cache.yml\n"
  },
  {
    "path": "npm-cli/templates/ci/.ci/opam-build-steps.yml",
    "content": "# Shared steps for building OPAM projects\n\nsteps:\n  - task: NodeTool@0\n    inputs:\n      versionSpec: '8.9'\n  - script: brew install gpatch\n    displayName: 'brew install gpatch'\n  - script: brew install opam\n    displayName: 'brew install opam'\n  - script: opam --version\n    displayName: 'Check opam version'\n  - script: opam init --auto-setup --dot-profile=~/.bash_profile\n    displayName: 'opam init'\n  - script: opam remote add ocamlorg https://opam.ocaml.org || true\n    displayName: 'opam remote add ocamlorg'\n  - script: opam remove default || true\n    displayName: 'opam remove default'\n  - script: opam update\n    displayName: 'opam update'\n  - script: opam switch create $(OCAML_VERSION)\n    displayName: 'Use OCaml version: $(OCAML_VERSION)'\n  - script: opam install -y dune\n    displayName: 'opam install -y dune'\n  - script: opam install -y menhir\n    displayName: 'opam install -y menhir'\n  - script: opam install -y utop\n    displayName: 'opam install -y utop'\n  - script: make clean-for-ci\n    displayName: 'make clean-for-ci'\n  - script: opam pin add -y reason .\n    displayName: \"opam pin add -y reason .\"\n  - script: opam pin add -y rtop .\n    displayName: \"opam pin add -y rtop .\"\n  - script: eval $(opam env); make test-ci\n    displayName: \"make test-ci\"\n  - script: git diff --exit-code\n    displayName: \"Check git is clean\"\n"
  },
  {
    "path": "npm-cli/templates/ci/.ci/pipelines-release.js",
    "content": "const fs = require(\"fs\");\nconst path = require(\"path\");\n\nconsole.log(\"Creating package.json\");\n\n// From the project root pwd\nconst mainPackageJsonPath = fs.existsSync(\"esy.json\")\n  ? \"esy.json\"\n  : \"package.json\";\n\nconst exists = fs.existsSync(mainPackageJsonPath);\nif (!exists) {\n  console.error(\"No package.json or esy.json at \" + mainPackageJsonPath);\n  process.exit(1);\n}\n// Now require from this script's location.\nconst mainPackageJson = require(path.join(\"..\", mainPackageJsonPath));\nconst bins = Array.isArray(mainPackageJson.esy.release.bin)\n  ? mainPackageJson.esy.release.bin.reduce(\n      (acc, curr) => Object.assign({ [curr]: \"bin/\" + curr }, acc),\n      {}\n    )\n  : Object.keys(mainPackageJson.esy.release.bin).reduce(\n      (acc, currKey) =>\n        Object.assign(\n          { [currKey]: \"bin/\" + mainPackageJson.esy.release.bin[currKey] },\n          acc\n        ),\n      {}\n    );\n\nconst rewritePrefix =\n  mainPackageJson.esy &&\n  mainPackageJson.esy.release &&\n  mainPackageJson.esy.release.rewritePrefix;\n\nconst packageJson = JSON.stringify(\n  {\n    name: mainPackageJson.name,\n    version: mainPackageJson.version,\n    license: mainPackageJson.license,\n    description: mainPackageJson.description,\n    repository: mainPackageJson.repository,\n    scripts: {\n      postinstall:\n\t\"node -e \\\"process.env['OCAML_VERSION'] = process.platform == 'linux' ? '4.10.2000-musl.static.flambda': '4.10.2000'; process.env['OCAML_PKG_NAME'] = 'ocaml'; process.env['ESY_RELEASE_REWRITE_PREFIX']=true; require('./postinstall.js')\\\"\":\n\t\"node -e \\\"process.env['OCAML_VERSION'] = process.platform == 'linux' ? '4.10.2000-musl.static.flambda': '4.10.2000'; process.env['OCAML_PKG_NAME'] = 'ocaml'; require('./postinstall.js')\\\"\"\n    },\n    bin: bins,\n    files: [\n      \"_export/\",\n      \"bin/\",\n      \"postinstall.js\",\n      \"esyInstallRelease.js\",\n      \"platform-linux/\",\n      \"platform-darwin/\",\n      \"platform-darwin-arm64/\",\n      \"platform-windows-x64/\",\n    ],\n  },\n  null,\n  2\n);\n\nfs.writeFileSync(\n  path.join(__dirname, \"..\", \"_release\", \"package.json\"),\n  packageJson,\n  {\n    encoding: \"utf8\",\n  }\n);\n\ntry {\n  console.log(\"Copying LICENSE\");\n  fs.copyFileSync(\n    path.join(__dirname, \"..\", \"LICENSE\"),\n    path.join(__dirname, \"..\", \"_release\", \"LICENSE\")\n  );\n} catch (e) {\n  console.warn(\"No LICENSE found\");\n}\n\nconsole.log(\"Copying README.md\");\ntry {\n  fs.copyFileSync(\n    path.join(__dirname, \"..\", \"README.md\"),\n    path.join(__dirname, \"..\", \"_release\", \"README.md\")\n  );\n} catch (e) {\n  console.warn(\"No README.md found\");\n}\n\nconsole.log(\"Copying postinstall.js\");\nfs.copyFileSync(\n  path.join(__dirname, \"release-postinstall.js\"),\n  path.join(__dirname, \"..\", \"_release\", \"postinstall.js\")\n);\n\nconsole.log(\"Creating placeholder files\");\nconst placeholderFile = `:; echo \"You need to have postinstall enabled\"; exit $?\n@ECHO OFF\nECHO You need to have postinstall enabled`;\nfs.mkdirSync(path.join(__dirname, \"..\", \"_release\", \"bin\"));\n\nObject.keys(bins).forEach((name) => {\n  if (bins[name]) {\n    const binPath = path.join(__dirname, \"..\", \"_release\", bins[name]);\n    fs.writeFileSync(binPath, placeholderFile);\n    fs.chmodSync(binPath, 0777);\n  } else {\n    console.log(\"bins[name] name=\" + name + \" was empty. Weird.\");\n    console.log(bins);\n  }\n});\n"
  },
  {
    "path": "npm-cli/templates/ci/.ci/release-platform-setup.yml",
    "content": "parameters:\n  platform: \"macOS\"\n  folder: \"platform-darwin\"\n\nsteps:\n  - task: DownloadBuildArtifacts@0\n    displayName: \"Download ${{ parameters.artifactName }} Artifacts\"\n    inputs:\n      artifactName: ${{ parameters.artifactName }}\n      downloadPath: $(Build.StagingDirectory)\n\n  - script: \"mkdir _release/${{ parameters.folder }}\"\n    displayName: \"Create _release/${{ parameters.folder }}\"\n\n  - script: \"cp -r $(Build.StagingDirectory)/${{ parameters.artifactName }}/ _release/${{ parameters.folder }}\"\n    displayName: \"cp ${{ parameters.artifactName }}\"\n"
  },
  {
    "path": "npm-cli/templates/ci/.ci/release-postinstall.js",
    "content": "/**\n * release-postinstall.js\n *\n * XXX: We want to keep this script installable at least with node 4.x.\n *\n * This script is bundled with the `npm` package and executed on release.\n * Since we have a 'fat' NPM package (with all platform binaries bundled),\n * this postinstall script extracts them and puts the current platform's\n * bits in the right place.\n */\n\nvar path = require(\"path\");\nvar cp = require(\"child_process\");\nvar fs = require(\"fs\");\nvar os = require(\"os\");\nvar platform = process.platform;\n\nvar packageJson = require(\"./package.json\");\nvar binariesToCopy = Object.keys(packageJson.bin)\n  .map(function(name) {\n    return packageJson.bin[name];\n  })\n  .concat([\"esyInstallRelease.js\"]);\nvar foldersToCopy = [\"bin\", \"_export\"];\n\nfunction copyRecursive(srcDir, dstDir) {\n  var results = [];\n  var list = fs.readdirSync(srcDir);\n  var src, dst;\n  list.forEach(function(file) {\n    src = path.join(srcDir, file);\n    dst = path.join(dstDir, file);\n\n    var stat = fs.statSync(src);\n    if (stat && stat.isDirectory()) {\n      try {\n        fs.mkdirSync(dst);\n      } catch (e) {\n        console.log(\"directory already exists: \" + dst);\n        console.error(e);\n      }\n      results = results.concat(copyRecursive(src, dst));\n    } else {\n      try {\n        fs.writeFileSync(dst, fs.readFileSync(src));\n      } catch (e) {\n        console.log(\"could't copy file: \" + dst);\n        console.error(e);\n      }\n      results.push(src);\n    }\n  });\n  return results;\n}\n\n/**\n * Since os.arch returns node binary's target arch, not\n * the system arch.\n * Credits: https://github.com/feross/arch/blob/af080ff61346315559451715c5393d8e86a6d33c/index.js#L10-L58\n */\n\nfunction arch() {\n  /**\n   * The running binary is 64-bit, so the OS is clearly 64-bit.\n   */\n  if (process.arch === \"x64\") {\n    return \"x64\";\n  }\n\n  /**\n   * All recent versions of Mac OS are 64-bit.\n   */\n  if (process.platform === \"darwin\") {\n    return \"x64\";\n  }\n\n  /**\n   * On Windows, the most reliable way to detect a 64-bit OS from within a 32-bit\n   * app is based on the presence of a WOW64 file: %SystemRoot%\\SysNative.\n   * See: https://twitter.com/feross/status/776949077208510464\n   */\n  if (process.platform === \"win32\") {\n    var useEnv = false;\n    try {\n      useEnv = !!(\n        process.env.SYSTEMROOT && fs.statSync(process.env.SYSTEMROOT)\n      );\n    } catch (err) {}\n\n    var sysRoot = useEnv ? process.env.SYSTEMROOT : \"C:\\\\Windows\";\n\n    // If %SystemRoot%\\SysNative exists, we are in a WOW64 FS Redirected application.\n    var isWOW64 = false;\n    try {\n      isWOW64 = !!fs.statSync(path.join(sysRoot, \"sysnative\"));\n    } catch (err) {}\n\n    return isWOW64 ? \"x64\" : \"x86\";\n  }\n\n  /**\n   * On Linux, use the `getconf` command to get the architecture.\n   */\n  if (process.platform === \"linux\") {\n    var output = cp.execSync(\"getconf LONG_BIT\", { encoding: \"utf8\" });\n    return output === \"64\\n\" ? \"x64\" : \"x86\";\n  }\n\n  /**\n   * If none of the above, assume the architecture is 32-bit.\n   */\n  return \"x86\";\n}\n\n// implementing it b/c we don't want to depend on fs.copyFileSync which appears\n// only in node@8.x\nfunction copyFileSync(sourcePath, destPath) {\n  var data;\n  try {\n    data = fs.readFileSync(sourcePath);\n  } catch (e) {\n    data = fs.readFileSync(sourcePath + \".exe\");\n    sourcePath = sourcePath + \".exe\";\n    destPath = destPath + \".exe\";\n  }\n  var stat = fs.statSync(sourcePath);\n  fs.writeFileSync(destPath, data);\n  fs.chmodSync(destPath, 0755);\n}\n\nvar copyPlatformBinaries = platformPath => {\n  var platformBuildPath = path.join(__dirname, \"platform-\" + platformPath);\n\n  foldersToCopy.forEach(folderPath => {\n    var sourcePath = path.join(platformBuildPath, folderPath);\n    var destPath = path.join(__dirname, folderPath);\n\n    copyRecursive(sourcePath, destPath);\n  });\n\n  binariesToCopy.forEach(binaryPath => {\n    var sourcePath = path.join(platformBuildPath, binaryPath);\n    var destPath = path.join(__dirname, binaryPath);\n    if (fs.existsSync(destPath)) {\n      fs.unlinkSync(destPath);\n    }\n    copyFileSync(sourcePath, destPath);\n  });\n};\n\ntry {\n  fs.mkdirSync(\"_export\");\n} catch (e) {\n  console.log(\"Could not create _export folder\");\n}\n\nswitch (platform) {\n  case \"win32\":\n    if (arch() !== \"x64\") {\n      console.warn(\"error: x86 is currently not supported on Windows\");\n      process.exit(1);\n    }\n\n    copyPlatformBinaries(\"windows-x64\");\n    break;\n  case \"linux\":\n  case \"darwin\":\n    copyPlatformBinaries(platform);\n    break;\n  default:\n    console.warn(\"error: no release built for the \" + platform + \" platform\");\n    process.exit(1);\n}\n\nrequire(\"./esyInstallRelease\");\n"
  },
  {
    "path": "npm-cli/templates/ci/.ci/utils/create-docs.yml",
    "content": "# These steps are only run on Linux\nsteps:\n  - script: \"esy doc\"\n    displayName: \"Build docs\"\n    condition: and(succeeded(), eq(variables['Agent.OS'], 'Linux'))\n\n  - script: echo '##vso[task.setvariable variable=docsPath]'$(esy echo '#{self.target_dir}/default/_doc/_html')\n    displayName: \"Save docsPath in variable\"\n    condition: and(succeeded(), eq(variables['Agent.OS'], 'Linux'))\n\n  - task: PublishBuildArtifacts@1\n    displayName: \"Publish Artifact: Docs\"\n    condition: and(succeeded(), eq(variables['Agent.OS'], 'Linux'))\n    inputs:\n      PathtoPublish: $(docsPath)\n      ArtifactName: Docs\n"
  },
  {
    "path": "npm-cli/templates/ci/.ci/utils/publish-build-cache.yml",
    "content": "# Steps for publishing project cache\n\nsteps:\n  - bash: 'mkdir -p $(Build.StagingDirectory)'\n    displayName: '[Cache][Publish] Create cache directory'\n\n  # continueOnError because on windows it has a permission denied error but the\n  # export succeeds.\n  - script: \"esy export-dependencies\"\n    displayName: \"esy export-dependencies\"\n\n  - bash: \"zip -r cache.zip _export && shasum -a 256 cache.zip | awk '{ print $1 }' > checksum.txt && mv checksum.txt cache.zip $(Build.StagingDirectory)\"\n    displayName: \"Computing sha256 of the zip\"\n    condition: ne(variables['AGENT.OS'], 'Windows_NT')\n\n  - script: powershell.exe -nologo -noprofile -command \"Compress-Archive -Path _export -DestinationPath cache.zip\"\n    displayName: \"[Windows] Zipping _export\"\n    condition: eq(variables['AGENT.OS'], 'Windows_NT')\n\n  - script: \"shasum -a 256 cache.zip | awk '{ print $1 }' > checksum.txt && mv checksum.txt cache.zip $(Build.StagingDirectory)\"\n    displayName: \"[Windows] Computing sha256\"\n    condition: eq(variables['AGENT.OS'], 'Windows_NT')\n\n  - bash: pwd && ls _export/* && mv _export '$(Build.StagingDirectory)' && ls '$(Build.StagingDirectory)/_export/'\n    displayName: '[Cache][Publish] move export to staging dir'\n\n  # - bash: cd $ESY__CACHE_INSTALL_PATH && tar -czf $(Build.StagingDirectory)/esy-cache.tar .\n  #   workingDirectory: ''\n  #   condition: and(succeeded(), eq(variables['Build.Reason'], 'IndividualCI'))\n  #   displayName: '[Cache][Publish] Tar esy cache directory'\n\n  # - bash: 'cd $(ESY__NPM_ROOT) && tar -czf $(Build.StagingDirectory)/npm-cache.tar .'\n  #   condition: and(succeeded(), eq(variables['Build.SourceBranch'], variables['System.PullRequest.TargetBranch']))\n  #   displayName: '[Cache][Publish] Tar npm cache directory'\n\n  - task: PublishBuildArtifacts@1\n    displayName: '[Cache][Publish] Upload tarball'\n    # TODO: The CI Build caches are pulled down by the last successful buildID\n    # for the target branch.\n    inputs:\n        pathToPublish: '$(Build.StagingDirectory)/cache.zip'\n        artifactName: 'cache-$(Agent.OS)-install-$(esy__ci_cache_version)'\n        parallel: true\n        parallelCount: 8\n\n\n  - task: PublishBuildArtifacts@1\n    displayName: '[Cache][Publish] Upload checksum'\n    inputs:\n        pathToPublish: '$(Build.StagingDirectory)/checksum.txt'\n        artifactName: 'cache-$(Agent.OS)-install-$(esy__ci_cache_version)-checksum'\n        parallel: true\n        parallelCount: 8\n"
  },
  {
    "path": "npm-cli/templates/ci/.ci/utils/publish-sources.yml",
    "content": "steps:\n  - task: PublishBuildArtifacts@1\n    displayName: '[Cache][Publish] Sources'\n    condition: eq(variables['AGENT.OS'], 'Linux')\n    inputs:\n      pathToPublish: \"$(Agent.HomeDirectory)/esy-sources\"\n      artifactName: 'esy-sources'\n      parallel: true\n      parallelCount: 8\n\n"
  },
  {
    "path": "npm-cli/templates/ci/.ci/utils/restore-build-cache.yml",
    "content": "# Steps for restoring project cache\n\nsteps:\n  - bash: 'mkdir -p $(Build.StagingDirectory)'\n    condition: and(eq(variables['Build.Reason'], 'PullRequest'), and(succeeded(), ne(variables['Build.SourceBranch'], variables['System.PullRequest.TargetBranch'])))\n    displayName: '[Cache][Publish] Create cache directory'\n\n  # TODO: This can be done in parallel with installing node, and esy\n  # (which would save a bunch of time on windows)\n  - task: Bash@3\n    condition: and(eq(variables['Build.Reason'], 'PullRequest'), and(succeeded(), ne(variables['Build.SourceBranch'], variables['System.PullRequest.TargetBranch'])))\n    displayName: '[Cache][Restore] Restoring build cache using REST API'\n    continueOnError: true\n    inputs:\n      targetType: 'inline' # Optional. Options: filePath, inline\n      script: |\n        # If org name is reasonml then REST_BASE will be: https://dev.azure.com/reasonml/\n        REST_BASE=\"${SYSTEM_TEAMFOUNDATIONCOLLECTIONURI}\"\n        PROJ=\"$SYSTEM_TEAMPROJECT\"\n        ART_NAME=\"cache-${AGENT_OS}-install-${ESY__CI_CACHE_VERSION}\"\n        fetchLatestBuild() {\n          PREFIX=\"branchName=refs%2Fheads%2F\"\n          BRANCH=${PREFIX}${SYSTEM_PULLREQUEST_TARGETBRANCH}\n          FILTER='deletedFilter=excludeDeleted&statusFilter=completed&resultFilter=succeeded'\n          LATEST='queryOrder=finishTimeDescending&$top=1'\n          REST_BUILDS=\"$REST_BASE/$PROJ/_apis/build/builds?${FILTER}&${BRANCH}&${LATEST}&api-version=4.1\"\n          echo \"Rest call for builds: $REST_BUILDS\"\n          REST_BUILDS_RESP=$(curl \"$REST_BUILDS\")\n          if [[ $REST_BUILDS_RESP =~ (\\\"web\\\":\\{\\\"href\\\":\\\")([^\\\"]*) ]]; then LATEST_BUILD_PAGE=\"${BASH_REMATCH[2]}\"; else LATEST_BUILD_PAGE=\"\"; fi\n          if [[ $REST_BUILDS_RESP =~ (\\\"badge\\\":\\{\\\"href\\\":\\\")([^\\\"]*) ]]; then LATEST_BUILD_BADGE=\"${BASH_REMATCH[2]}\"; else LATEST_BUILD_BADGE=\"\"; fi\n          if [[ $REST_BUILDS_RESP =~ (\\\"id\\\":)([^,]*) ]]; then LATEST_BUILD_ID=\"${BASH_REMATCH[2]}\"; else LATEST_BUILD_ID=\"\"; fi\n        }\n        fetchLatestBuild\n        fetchArtifactURL() {\n          REST_ART=\"$REST_BASE/$PROJ/_apis/build/builds/$LATEST_BUILD_ID/artifacts?artifactName=$ART_NAME&api-version=4.1\"\n          echo \"Rest call for artifacts: $REST_ART\"\n          if [[ $(curl $REST_ART) =~ (downloadUrl\\\":\\\")([^\\\"]*) ]]; then LATEST_ART_URL=\"${BASH_REMATCH[2]}\"; else LATEST_ART_URL=\"\"; fi\n        }\n        downloadArtifactAndContinue() {\n          if [ -z \"$LATEST_ART_URL\" ]\n          then\n            echo \"No latest artifact for merge-target branch found at URL $REST_ART\"\n          else\n            curl \"$LATEST_ART_URL\" > \"${BUILD_STAGINGDIRECTORY}/$ART_NAME.zip\"\n            PROJECT_DIR=$PWD\n            cd $BUILD_STAGINGDIRECTORY\n            unzip \"$ART_NAME.zip\"\n            echo \"Using Dependency cache for buildID: $LATEST_BUILD_ID\"\n            echo \"Build log for build that produced the cache: $LATEST_BUILD_PAGE\"\n            echo \"Build badge for build that produced the cache: $LATEST_BUILD_BADGE\"\n            echo \"Build artifact from build that produced the cache: $LATEST_ART_URL\"\n            echo \"Restoring build cache into:\"\n            mkdir -p $ESY__CACHE_INSTALL_PATH\n            echo $ESY__CACHE_INSTALL_PATH\n            echo \"##vso[task.setvariable variable=esy_export_dir_to_import]${BUILD_STAGINGDIRECTORY}/${ART_NAME}/_export\"\n            if [[ -d ${ART_NAME}/_export ]]; then\n              mv ${ART_NAME}/_export ${PROJECT_DIR}/_import\n              cd $PROJECT_DIR\n              echo \"Cached builds to import\"\n              ls ./_import\n              # import-build allows importing before esy install runs.\n              # unlike import-dependencies\n              echo \"Going to import builds from ${PROJECT_DIR}/_import in the next build step\"\n              if [ \"$AGENT_OS\" == \"Windows_NT\" ]; then\n                 echo \"Trying the cmd\"\n                 # Have to import the builds one by one in windows because\n                 # there is some file locking issue in esy on windows only when\n                 # importing many in parallel.\n                 cd ./_import\n                 FILES=*\n                 for f in $FILES\n                 do\n                   echo \"Trying to import $f\"\n                   esy.cmd import-build \"$f\"\n                 done\n                 cd $PROJECT_DIR\n              else\n                esy import-dependencies \"_import\"\n              fi\n            else\n              echo \"No _export directory to import from build cache\"\n              echo \"Here's the contents of build cache:\"\n              find ${BUILD_STAGINGDIRECTORY}\n            fi\n          fi\n        }\n        fetchArtifactURL\n        downloadArtifactAndContinue\n      \n  - bash: 'rm -rf _import'\n    continueOnError: true\n    condition: and(eq(variables['Build.Reason'], 'PullRequest'), and(succeeded(), ne(variables['Build.SourceBranch'], variables['System.PullRequest.TargetBranch'])))\n    displayName: 'Remove import directory'\n\n  - bash: 'rm -rf *'\n    continueOnError: true\n    workingDirectory: '$(Build.StagingDirectory)'\n    condition: and(eq(variables['Build.Reason'], 'PullRequest'), and(succeeded(), ne(variables['Build.SourceBranch'], variables['System.PullRequest.TargetBranch'])))\n    displayName: '[Cache][Restore] Clean up staging dir'\n"
  },
  {
    "path": "npm-cli/templates/ci/.ci/utils/use-cache-esy.yml",
    "content": "steps:\n  - task: Cache@2\n    inputs:\n      key: 'v1 | esy-install-cache | \"$(Agent.OS)\" | \"$(Build.SourcesDirectory)/esy.lock/index.json\"' # vPrimary, here, is just a way to bust cache during debugging. Inspired from https://docs.microsoft.com/en-us/azure/devops/pipelines/caching/?view=azure-devops#can-i-clear-a-cache\" \n      path: $(ESY__CACHE_INSTALL_PATH)\n      cacheHitVar: ESY_INSTALL_CACHE_RESTORED\n    displayName:  \"Caching $(ESY__CACHE_INSTALL_PATH)\"\n  - task: Cache@2\n    inputs:\n      key: 'v1 | esy-sources | \"$(Agent.OS)\" | \"$(Build.SourcesDirectory)/esy.lock/index.json\"' # vPrimary, here, is just a way to bust cache during debugging. Inspired from https://docs.microsoft.com/en-us/azure/devops/pipelines/caching/?view=azure-devops#can-i-clear-a-cache\" \n      path: \"$(Agent.HomeDirectory)/esy-sources\"\n      cacheHitVar: ESY_SOURCE_CACHE_RESTORED\n    displayName:  \"Caching esy sources\"\n    condition: eq(variables['AGENT.OS'], 'Linux')\n  - task: Cache@2\n    inputs:\n      key: 'v1 | esy-sources | \"$(Agent.OS)\" | \"$(Build.SourcesDirectory)/esy.lock/index.json\"' # vPrimary, here, is just a way to bust cache during debugging. Inspired from https://docs.microsoft.com/en-us/azure/devops/pipelines/caching/?view=azure-devops#can-i-clear-a-cache\" \n      path: \"$(ESY__CACHE_INSTALL_PATH)/../../source\"\n      cacheHitVar: ESY_SOURCE_CACHE_RESTORED\n    displayName:  \"Caching esy sources\"\n    condition: ne(variables['AGENT.OS'], 'Linux')\n"
  },
  {
    "path": "npm-cli/templates/ci/.ci/utils/use-cache-yarn.yml",
    "content": "steps:\n- bash: |\n    YARN_CACHE_DIR=$(yarn cache dir)\n    echo \"##vso[task.setvariable variable=YARN_CACHE_DIR]$YARN_CACHE_DIR\"\n- task: Cache@2\n  inputs:\n    key: 'yarn | \"$(Agent.OS)\" | \"$(Build.SourcesDirectory)/npm-cli/yarn.lock\"'\n    restoreKeys: |\n       yarn | \"$(Agent.OS)\"\n       yarn\n    path: $(YARN_CACHE_DIR)\n  displayName: Cache yarn\n"
  },
  {
    "path": "npm-cli/templates/ci/.ci/utils/use-esy.yml",
    "content": "# steps to install esy globally\n\nsteps:\n- script: \"yarn global add @esy-nightly/esy\"\n  displayName: \"Install esy-nightly (via yarn)\"\n\n- bash: |\n    YARN_BIN_DIR=$(yarn global bin)\n    echo $YARN_BIN_DIR\n    echo \"##vso[task.setvariable variable=YARN_BIN_DIR]$YARN_BIN_DIR\"\n  displayName: \"Setting $YARN_BIN_DIR\"\n\n- bash: |\n    echo \"##vso[task.setvariable variable=PATH]$PATH:$YARN_BIN_DIR\" \n  displayName: \"Ensure yarn install global tools are available on $PATH\"\n  condition: ne(variables['AGENT.OS'], 'Windows_NT')\n\n- powershell: Write-Host \"##vso[task.setvariable variable=PATH;]${env:PATH};${env:YARN_BIN_DIR}\"\n  displayName: \"Ensure yarn install global tools are available on $PATH\"\n  condition: eq(variables['AGENT.OS'], 'Windows_NT')\n"
  },
  {
    "path": "npm-cli/templates/ci/.ci/utils/use-node.yml",
    "content": "# steps to use node on agent\n\nsteps:\n  - task: NodeTool@0\n    displayName: \"Use Node 12.x\"\n    inputs:\n      versionSpec: 12.x\n"
  },
  {
    "path": "npm-cli/templates/ci/azure-pipelines-template.yml",
    "content": "name: Build npm release\n\nvariables:\n  esy__ci_cache_version: v1    # this is available to all jobs in env as $ESY__CI_CACHE_VERSION or in azure config as $(esy__ci_cache_version)\n\ntrigger:\n  branches:\n    include:\n    - master\n    - releases/*\n  paths:\n    exclude:\n    - README.html\n    - notes/*\n    - \"*.md\"\n    - LICENSE\n\njobs:\n  - template: .ci/build-platform.yml\n    parameters:\n      platform: Linux\n      vmImage: ubuntu-latest\n\n  - template: .ci/build-platform.yml\n    parameters:\n      platform: macOS\n      vmImage: macOS-latest\n\n  # Need windows-2019 to do esy import/export-dependencies\n  # which assumes you have bsdtar (tar.exe) in your system\n  # otherwise it will end up using the esy-bash tar which doesn't\n  # understand drives like D:/ (thinks it's an scp path).\n  - template: .ci/build-platform.yml\n    parameters:\n      platform: Windows\n      vmImage: windows-2019\n\n  - template: .ci/build-docker.yml\n          \n  # This job is kept here as we want to have the platform names in the same file\n  - job: Release\n    displayName: Release\n    dependsOn:\n      - Docker_Alpine_Build\n      - macOS\n      - Windows\n    pool:\n      vmImage: macOS-latest\n      demands: node.js\n    steps:\n      - template: .ci/cross-release.yml\n"
  },
  {
    "path": "npm-cli/templates/docker/docker/DevImage.Dockerfile",
    "content": "FROM esydev/esy:nightly-alpine-latest\n\nRUN apk add nodejs npm linux-headers emacs curl git perl-utils bash gcc g++ musl-dev make m4 patch\nCOPY . /app\nWORKDIR /app\nRUN esy --cache-tarballs-path=esy-sources\nRUN esy release\nWORKDIR /app/_release\nRUN npm pack\n"
  },
  {
    "path": "npm-cli/templates/docker/docker/ProdImage.Dockerfile",
    "content": "FROM node:current-alpine\nCOPY _container_release /app/_container_release\nWORKDIR /app/_container_release\nRUN yarn global --prefix /usr/local add $PWD\n\nENTRYPOINT FooApp\n\n# To use: docker run --rm -it --name foo-c foo"
  },
  {
    "path": "npm-cli/v0.4.4/LICENSE",
    "content": "MIT License\n\nCopyright (c) 2017 Jordan W\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": "npm-cli/v0.4.4/ORIGIN.md",
    "content": "\n- Includes vendored copy of [JSON.sh](https://github.com/dominictarr/JSON.sh)\n  (under MIT LICENSE)  which has been renamed to `pesy-JSON.sh` to avoid name\n  collisions.\n"
  },
  {
    "path": "npm-cli/v0.4.4/README.md",
    "content": "# pesy: Native Reason Project from Json.\n\n> Use `package.json` to automatically configure libraries and executables built\n  with Dune.\n\n![screenshot](./images/screenshot.png \"Demo\")\n\n## Commands:\n\n- `pesy` : Creates a new project in the current directory.\n- `esy` : Builds the current project (just like every other `esy` project).\n- `esy pesy` : Updates your build config from `package.json` (run this any time\n  you change `package.json`).\n  \n<br>\n\n### `pesy` (Create New Project)\n\n`pesy` global command creates `esy` projects instantly inside of any directory.\n\n```sh\nnpm install -g pesy\n\ncd my-project\npesy      # Hit enter to accept default name\n```\n\n\nThis creates:\n\n- `package.json` with useful dependencies/compilers.\n- `.gitignore` and `README.md` with instructions for new contributors.\n- `.circleci` continuous integration with cache configured for ultra-fast pull\n    requests.\n- `library/`, `executable/` and `test/` directory with starter modules.\n\n\n<br>\n\n### `esy` (Build The Project)\n\nJust like with any `esy` project, running `esy` from the project directory will\nbuild it and fetch/install any dependencies you might need.\n\n```sh\nesy\n```\n\n> Your project's `esy.build` field is set to `pesy`, which will run `pesy` to\n> verify that all your build config is up to date before invoking the Dune\n> build.  It will let you know if you need to run `esy pesy` to update your\n> build config from new changes to `package.json`.\n\n<br >\n\n### `esy pesy`: (Update Build Config Based On `package.json`)\n\n```sh\nesy pesy\n```\n\nIf you change your `buildDirs` config in `package.json`, run this command to\nupdate build configuration based on your latest `package.json`. If you forget\nto run this command and try to build (by running `esy`) without first running\n`esy pesy`, the build will remind you.\n\n\n<br>\n\n## Configuring:\n\nConfigure your `package.json`'s `buildDirs` field for multiple libraries and\nexecutables.\n`buildDirs.DirectoryName` means that a library or executable will be located at\n`./DirectoryName`. The `buildDirs.DirectoryName.name` field determines the\npublic name of the library or executable. a `name` ending in `.exe` is\nautomatically configured as an executable, and a name of the form\n`packageName.anything` is automatically configured to be a library with the\npublic name of `packageName.anything`.\n\n\n```json\n\"buildDirs\": {\n  \"MyLibrary\": {\n    \"name\": \"packageNameMyLibrary\",\n    \"namespace\": \"MyLibrary\",\n    \"require\": [\"console.lib\"]\n  },\n  \"Tests\": {\n    \"name\": \"Tests.exe\",\n    \"description\": \"Runs all the tests natively\",\n    \"flags\": [\"-linkall\"],\n    \"require\": [\"console.lib\", \"packageNameMyLibrary\"\"]\n  }\n}\n```\n\n### Supported Config\nNot all config is supported. This is just a proof of concept. If you'd like to\nadd support for more config fields, PRs are welcomed.\n\n**Binaries**\n\n| Field  | Type            | Description                                                                                                                                                                                                                                                                                                                                             |\n|--------|-----------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|`name`  | `string`        | The name of the binary **that must end with `.exe`**.                                                                                                                                                                                                                                                                                                   |\n|`main`  | `string`        | The name of the module that serves as the main entrypoint of the binary.                                                                                                                                                                                                                                                                                |\n|`modes` | `list(string)`  | [Advanced linking modes](https://jbuilder.readthedocs.io/en/latest/dune-files.html?highlight=modules_without_implementation#linking-modes). Each string should be of the form `\"(<compilation-mode> <binary-kind>)\"` where `<compilation-mode>` is one `byte`, `native` or `best` and `<binary-kind>` is one of `c`, `exe`, `object`, `shared_object`.  |\n\n**Libraries**\n\n| Field           | Type                              | Description                                                                                                                                                                                                                                                                                                                   |\n|-----------------|-----------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n|`name`           | `string`                          | The name of the library                                                                                                                                                                                                                                                                                                       |\n|`modes`          | `list(\"byte\"\\|\"native\"\\|\"best\")`  | Mode which should be built by default. Useful for disabling native compilation for some libraries.                                                                                                                                                                                                                            |\n|`cNames`         | `list(string)`                    | List of strings to use as C stubs (filenames without the `.c` extension).                                                                                                                                                                                                                                                     |\n|`virtualModules` | `list(string)`                    | List of modules within the library that will have interfaces but no implementation, causing this library to be considered \"virtual\". Another library can then claim to \"implement\" this library by including `\"implements\": \"yourLibName\"`. See [Virtual Libraries](https://jbuilder.readthedocs.io/en/latest/variants.html)  |\n|`implements`     | `list(string)`                    | List of virtual library names that this library implements.                                                                                                                                                                                                                                                                   |\n|`wrapped`        | `true|false`                      | Default `true`, and it's a good idea to keep it that way. Setting to `false` will put all your library modules in the global namespace.\n\n**Both Libraries And Binaries**\n\n| Field                 | Type                  | Description                                                                                                                                                                                                                                                              |\n|-----------------------|-----------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|`require`              | `list(string)`        | Public library names you want to be able to use.                                                                                                                                                                                                                         |\n|`flags`                | `list(string)`        | List of strings to pass to both native and bytecode compilers.                                                                                                                                                                                                           |\n|`ocamlcFlags`          | `list(string)`        | List of flags to pass to `ocamlc`                                                                                                                                                                                                                                        |\n|`ocamloptFlags`        | `list(string)`        | List of flags to pass to `ocamlopt`                                                                                                                                                                                                                                      |\n|`jsooFlags`            | `list(string)`        | List of flags passed to `jsoo`                                                                                                                                                                                                                                           |\n|`preprocess`           | `list(string)`        | List of preprocess options to enable. Primarily used to enable PPX                                                                                                                                                                                                       |\n|`ignoredSubdirs`       | `list(string)`        | Subdirectory names to ignore (This feature is soon to be deprecated).                                                                                                                                                                        |\n|`includeSubdirs`       | `\"no\"\\|\"unqualified\"` | Default is `\"no\"`, and changing to `\"unqualified\"` will compile modules at deeper directories than the place where the `dune` file is generated. See [Dune docs](https://jbuilder.readthedocs.io/en/latest/dune-files.html?highlight=include_subdirs#include-subdirs)    |\n|`rawBuildConfig`       | `list(string)`        | Raw build config to be injected into the build config for _this_ target.                                                                                                                                                                                                 |\n|`rawBuildConfigFooter` | `list(string)`        | Raw build config to be injected into the footer of the build config.                                                                                                                                                                                                     |\n\n\n\n\n## Consuming New Package And Library Dependencies:\n\n- Add dependencies to `dependencies` in `package.json`.\n- Add the name of that new dependencies *library*  to `package.json`'s\n    `buildDirs` section that you want to use the library within. For example, if\n    your project builds a library in the `exampleLib/` directory, and you want it\n    to depend on a library named `bos.top` from an opam package named `bos`,\n    change the `package.json` to look like this:\n\n    ```json\n    {\n      \"name\": \"my-package\",\n      \"dependencies\": {\n        \"@opam/bos\": \"*\"\n      },\n      \"buildDirs\": {\n        \"exampleLib\": {\n          \"namespace\": \"Examples\",\n          \"name\": \"my-package.example-lib\",\n          \"require\": [ \"bos.top\" ]\n        }\n      }\n    }\n    ```\n\n- Then run:\n    ```sh\n    esy install  # Fetch dependency sources\n    esy pesy     # Configure the build based on package.json\n    esy build    # Do the build\n    ```\n\n> Note: After adding/building a new dependency you can use `esy ls-libs` to see\n> which named libraries become available to you by adding the package\n> dependency.\n\n\n\n## Tradeoffs:\n`esy-pesy` is good for rapidly making new small executables/libraries. Once they\ngrow, you'll want to \"eject out\" of `esy-pesy` and begin customizing using a more\nadvanced build system.\n\n\n## Adding `pesy` to an existing project.\n\nYou probably don't need `pesy` if you have an existing project that is working\nwell, but to add `pesy` to an existing project, follow these steps:\n\n**1. Add a dependency on `pesy`, and configure `buildDirs`:**\n\n```json\n{\n  \"name\": \"my-package\",\n  \"dependencies\": {\n    \"pesy\": \"*\"\n  },\n  \"buildDirs\": {\n    \"exampleLib\": {\n      \"namespace\": \"Examples\",\n      \"name\": \"my-package.example-lib\",\n      \"require\": [ \"bos.top\" ]\n    },\n    \"bin\": {\n      \"name\": \"my-package.exe\",\n      \"require\": [\n        \"my-package.lib\"\n      ]\n    }\n  }\n}\n```\n\n**2.Install and Build:**\n\n```sh\nesy install\nesy pesy  # Generate the project build config from json\nesy build\n```\n\n# Future Development:\n\nThe next major version of `pesy` is getting even simpler and better, and has\nundergone a full native rewrite.\n\nFollow the work in its new repo:\n[https://github.com/esy/pesy](https://github.com/esy/pesy).\n\n\n# Changes:\n\n**version 0.4.3  (6/20/2019)**\nMoved `pesy` to a `devDependency` of all newly created projects.\nAlso did the same for `refmterr`. This causes fewer package conflicts.\n\n**version 0.4.2  (6/16/2019)**\n\nMake new projects pin to ocaml `4.7.1004` so that it compiles with Reason,\nsince we're still waiting on Reason to work with `4.8`.\n\n**version 0.4.0  (12/21/2018)**\n\n- Allow `buildDirs` to contain deeper directories such as `\"path/to/my-lib\": {...}\"`.\n- Added support for `wrapped` property on libraries.\n- Added support for `virtualModules` and `implements` - properties for Dune\n  virtual libraries. (This will only be supported if you mark your project as\n  Dune 1.7 - not yet released).\n- Stopped using `ignore_subdirs` in new projects, instead using\n  `(dirs (:standard \\ _esy))` which only works in  Dune `1.6.0+`, so made new\n  projects have a lower bound of Dune `1.6.0`.\n- Support new properties `rawBuildConfig` which will be inserted at the bottom\n  of the _target_ being configured (library/executable).\n  - It expects an array of strings, each string being a separate line in the\n    generated config.\n- Support new properties `rawBuildConfigFooter` which will be inserted at the\n  bottom of the entire Dune file for the _target_ being configured.\n  - It expects an array of strings, each string being a separate line in the\n    generated config.\n- Support new properties `modes` for binaries and libraries `list(string)`.\n"
  },
  {
    "path": "npm-cli/v0.4.4/azure-ci-template/azure-pipelines.yml",
    "content": "# Starter pipeline\n# Start with a minimal pipeline that you can customize to build and deploy your code.\n# Add steps that build, run tests, deploy, and more:\n# https://aka.ms/yaml\n\nname: $(Build.SourceVersion)\njobs:\n- job: Linux\n  timeoutInMinutes: 0\n  pool:\n    vmImage: 'Ubuntu 16.04'\n\n  variables:\n    ESY__CACHE_INSTALL_PATH: /home/vsts/.esy/3_____________________________________________________________________/i/\n    ESY__CACHE_SOURCE_TARBALL_PATH: /home/vsts/.esy/source/i\n\n  steps:\n  # TODO: Uncomment both this and 'publish-build-cache' below to enable build caching for Linux.\n  # - template: .ci/restore-build-cache.yml\n  - template: .ci/esy-build-steps.yml\n  # - template: .ci/publish-build-cache.yml\n\n- job: MacOS\n  timeoutInMinutes: 0\n  pool:\n    vmImage: 'macOS-latest'\n\n  variables:\n    ESY__CACHE_INSTALL_PATH: /Users/vsts/.esy/3____________________________________________________________________/i/\n    ESY__CACHE_SOURCE_TARBALL_PATH: /Users/vsts/.esy/source/i\n\n  steps:\n  # TODO: Uncomment both this and 'publish-build-cache' below to enable build caching for Mac.\n  # - template: .ci/restore-build-cache.yml\n  - template: .ci/esy-build-steps.yml\n  # - template: .ci/publish-build-cache.yml\n\n- job: Windows\n  timeoutInMinutes: 0\n  pool:\n    vmImage: 'vs2017-win2016'\n\n  variables:\n    ESY__CACHE_INSTALL_PATH: C:\\Users\\VssAdministrator\\.esy\\3_\\i\n    ESY__CACHE_SOURCE_TARBALL_PATH: C:\\Users\\VssAdministrator\\.esy\\source\\i\n\n  steps:\n  - template: .ci/restore-build-cache.yml\n  - template: .ci/esy-build-steps.yml\n  - template: .ci/publish-build-cache.yml\n\n- job: Release\n  timeoutInMinutes: 0\n  displayName: Release\n  dependsOn:\n      - Linux\n      - MacOS\n      - Windows\n  condition: succeeded()\n  pool:\n     vmImage: ubuntu-16.04\n  steps:\n    - task: PublishBuildArtifacts@1\n      displayName: 'Release Package'\n      inputs:\n          PathtoPublish: '.'\n          ArtifactName: npm-package\n"
  },
  {
    "path": "npm-cli/v0.4.4/azure-ci-template/esy-build-steps.template.yml",
    "content": "# Cross-platform set of build steps for building esy projects\n\nsteps:\n  - task: NodeTool@0\n    inputs:\n      versionSpec: '8.9'\n  - script: npm install -g esy@0.4.3\n    displayName: 'npm install -g esy@0.4.3'\n  - script: esy install\n    displayName: 'esy install'\n  - script: esy pesy\n    displayName: 'esy pesy'\n  - script: esy build\n    displayName: 'esy build'\n  - script: esy test\n    displayName: 'esy test'\n  - script: esy x <PACKAGE_NAME_UPPER_CAMEL>App.exe\n    displayName: 'Run the main binary'\n  - script: esy ls-libs\n    continueOnError: true\n    displayName: 'Show all libraries including this package lib'\n  - script: esy release\n    displayName: 'Test Creation of Prebuilt Binary Releases'\n    continueOnError: true\n"
  },
  {
    "path": "npm-cli/v0.4.4/azure-ci-template/publish-build-cache.yml",
    "content": "# Steps for publishing project cache\n\nsteps:\n  - task: PublishBuildArtifacts@1\n    displayName: 'Cache: Upload install folder'\n    condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/master'))\n    inputs:\n        pathToPublish: '$(ESY__CACHE_INSTALL_PATH)'\n        artifactName: 'cache-$(Agent.OS)-install'\n        parallel: true\n        parallelCount: 8\n"
  },
  {
    "path": "npm-cli/v0.4.4/azure-ci-template/restore-build-cache.yml",
    "content": "# Steps for restoring project cache\n\nsteps:\n  - task: DownloadBuildArtifacts@0\n    condition: and(succeeded(), ne(variables['Build.SourceBranch'], 'refs/heads/master'))\n    displayName: 'Cache: Restore install'\n    inputs:\n        buildType: 'specific'\n        project: '$(System.TeamProject)'\n        pipeline: '$(Build.DefinitionName)'\n        branchName: 'refs/heads/master'\n        buildVersionToDownload: 'latestFromBranch'\n        downloadType: 'single'\n        artifactName: 'cache-$(Agent.OS)-install'\n        downloadPath: '$(System.ArtifactsDirectory)'\n    continueOnError: true\n\n  - task: CopyFiles@2\n    condition: and(succeeded(), ne(variables['Build.SourceBranch'], 'refs/heads/master'))\n    inputs:\n        sourceFolder: '$(System.ArtifactsDirectory)\\cache-$(Agent.OS)-install'\n        targetFolder: '$(ESY__CACHE_INSTALL_PATH)'\n    continueOnError: true\n"
  },
  {
    "path": "npm-cli/v0.4.4/esy-peasy",
    "content": "#!/bin/bash\n\nset -e\nset -u\n\necho \"\"\necho \"esy-peasy low-config build\"\necho \"--------------------------\"\necho \"Building at: $cur__root\"\n\n# Need to avoid spinning up node every build command.\n# MD5_OF_PACKAGE\n\n# We can build out of source, then simply copy over the .merlin files because\n# those are whitelisted! We can also prepare them.\nPACKAGE_NAME=\"${cur__name}\"\nPACKAGE_NAME_CAMEL=$(echo \"${PACKAGE_NAME}\" | perl -pe 's/([a-z0-9])-([a-zA-Z0-9])/$1\\U$2/g')\nPACKAGE_NAME_CAMEL_UC=$(tr '[:lower:]' '[:upper:]' <<< \"${PACKAGE_NAME_CAMEL:0:1}\")${PACKAGE_NAME_CAMEL:1}\n\nLIB_DIR=\"${cur__root}/lib\"\nBIN_DIR=\"${cur__root}/bin\"\nLIB_JBUILD_FILE=\"${LIB_DIR}/jbuild\"\nBIN_JBUILD_FILE=\"${BIN_DIR}/jbuild\"\n\n# Hacky, but fast and v8-less parsing of the important field in json file.\n# Some of these command might fail if there's no field in the package.json so\n# we fall back to empty string on failure.\nDEPENDENCY_LIBRARIES_WITH=$(tr -d '[:\",\\n' < package.json | grep -E -o 'peasyLibs .*?\\]') || DEPENDENCY_LIBRARIES_WITH=\"\"\nDEPENDENCY_LIBRARIES=\"${DEPENDENCY_LIBRARIES_WITH:9}\" || DEPENDENCY_LIBRARIES=\"\"\n# Trim off the final dangling ]\nDEPENDENCY_LIBRARIES=${DEPENDENCY_LIBRARIES::${#DEPENDENCY_LIBRARIES}-1} || DEPENDENCY_LIBRARIES=\"\"\n\n\nif [ -f  \"${cur__root}/bin/${PACKAGE_NAME_CAMEL_UC}.re\" ]; then\n  MAIN_MODULE=\"${PACKAGE_NAME_CAMEL_UC}\"\nelse\n  if [ -f  \"${cur__root}/bin/Index.re\" ]; then\n    MAIN_MODULE=\"Index\"\n  else\n    echo \"\"\n    echo \"ERROR: You must include either bin/Index.re or bin/${PACKAGE_NAME_CAMEL_UC}.re\"\n    echo \"\"\n    exit 1\n  fi\nfi\n\necho \"Building Executable Named $PACKAGE_NAME_CAMEL_UC\"\n\n\nif [ -d \"${LIB_DIR}\" ]; then\n  echo \"Building Library Named $cur__name\"\n  echo \"(jbuild_version 1)\" > \"${LIB_JBUILD_FILE}\"\n  echo \"(library\" >> \"${LIB_JBUILD_FILE}\"\n  echo \"((name ${PACKAGE_NAME_CAMEL_UC}Lib)\" >> \"${LIB_JBUILD_FILE}\"\n  echo \"  (flags (-w -40 -w +26))\" >> \"${LIB_JBUILD_FILE}\"\n  echo \"  (public_name ${cur__name})\" >> \"${LIB_JBUILD_FILE}\"\n  echo \"  (libraries (${DEPENDENCY_LIBRARIES}))))\" >> \"${LIB_JBUILD_FILE}\"\n  DEPENDENCY_LIBRARIES=\"${DEPENDENCY_LIBRARIES} ${PACKAGE_NAME_CAMEL_UC}Lib\"\nfi\n\nif [ -d \"${BIN_DIR}\" ]; then\n  echo \"(jbuild_version 1)\" > \"${BIN_JBUILD_FILE}\"\n  echo \"(executable\" >> \"${BIN_JBUILD_FILE}\"\n  echo \" ((name ${MAIN_MODULE})\" >> \"${BIN_JBUILD_FILE}\"\n  echo \" (public_name ${PACKAGE_NAME_CAMEL_UC})\" >> \"${BIN_JBUILD_FILE}\"\n  echo \" (libraries (${DEPENDENCY_LIBRARIES}))))\" >> \"${BIN_JBUILD_FILE}\"\nelse\n  echo \"Your reason-script is missing a ./bin directory.\"\n  echo \"  Your reason-script must include a bin directory with a file named Index.re or ${PACKAGE_NAME_CAMEL_UC}.re\"\nfi\n\n\n\nif [ -f  \"${cur__root}/${cur__name}.opam\" ]; then\n  # They already have an opam so apparently they know what they're\n  # doing.\n  DID_CREATE_OPAM=\"false\"\nelse\n  DID_CREATE_OPAM=\"true\"\n  echo \"(*tmp*)\" > \"${cur__root}/${cur__name}.opam\" \nfi\n\nif [ -f  \"${cur__root}/jbuild-ignore\" ]; then\n  # They already have a jbuild-ignore so apparently they know what\n  # they're doing.\n  DID_CREATE_JBUILD_IGNORE=\"false\"\nelse\n  DID_CREATE_JBUILD_IGNORE=\"true\"\n  echo \"temporarily_generated_by_reason_script\" > \"${cur__root}/jbuild-ignore\" \n  echo \"node_modules\" >> \"${cur__root}/jbuild-ignore\" \nfi\n\n# If you list a refmterr as a dev dependency, we'll use it!\nBUILD_FAILED=\"\"\nif hash refmterr 2>/dev/null; then\n  refmterr jbuilder build || BUILD_FAILED=\"true\"\nelse\n  jbuilder build || BUILD_FAILED=\"true\"\nfi\n\n# Cleaning up automatically created opam/jbuild files is only something we'd\n# need to do if we weren't doing buildsInSource:true\n# if [ \"${DID_CREATE_OPAM}\" == \"true\" ]; then\n#   rm \"${cur__root}/${cur__name}.opam\"\n# else\n#   if [ -f  \"${cur__root}/${cur__name}.opam\" ]; then\n#     if [ \"$(cat \\\"${cur__root}/${cur__name}.opam\\\")\" == \"(*tmp*)\" ]; then\n#       # Then this is left over from another failed run. Delete it.\n#       rm \"${cur__root}/${cur__name}.opam\"\n#     fi\n#   fi\n# fi\n\n# if [ \"${DID_CREATE_JBUILD_IGNORE}\" == \"true\" ]; then\n#   rm \"${cur__root}/jbuild-ignore\"\n# else\n#   if [ -f \"${cur__root}/jbuild-ignore\" ]; then\n#     if grep -q \"temporarily_generated_by_reason_script\" \"${cur__root}/jbuild-ignore\"; then\n#       # Then this is left over from another failed run. Delete it.\n#       rm \"${cur__root}/jbuild-ignore\"\n#     fi\n#   fi\n# fi\n\n# Copy over generated .merlin files - even if the build failed.\nif [ -d \"${BIN_DIR}\" ]; then\n  if [ -f \"${BIN_DIR}/.merlin\" ]; then\n    # Did you know sed allows you to use any separator such as ; and not just /\n    # Really useful when the substitutions contain variables that have slashes\n    # (paths)\n    sed  \"s;\\\\.\\\\.\\\\/_build;${cur__target_dir}\\\\/_build;\" > \"${cur__original_root}/bin/.merlin\" \"${BIN_DIR}/.merlin\"\n  fi\nfi\n\nif [ -d \"${LIB_DIR}\" ]; then\n  if [ -f \"${LIB_DIR}/.merlin\" ]; then\n    sed \"s;\\\\.\\\\.\\\\/_build;${cur__target_dir}\\\\/_build;\" > \"${cur__original_root}/lib/.merlin\" \"${LIB_DIR}/.merlin\" \n  fi\nfi\n\nif [ -f \"${cur__root}/.merlin\" ]; then\n  cp \"${cur__root}/.merlin\" \"${cur__original_root}/.merlin\"\nfi\n\nif [ -z \"$BUILD_FAILED\" ]; then\n  true\nelse\n  echo \"esy-peasy BUILD FAILED!\"\n  echo \"\"\n  exit 1\nfi\n"
  },
  {
    "path": "npm-cli/v0.4.4/notes/benchmarking.md",
    "content": "The results of benchmarking a sample \"generateEverything.sh\" script:\n\n\nDELTAms 5\nDELTAms 11  - detect shell\nDELTAms 6  - setup variables\nDELTAms 10  - define functions\nDELTAms 11  - define build variables\nDELTAms 8  - print directories\nDELTAms 9  - check lib dir\nDELTAms 30  - create lib build file\nDELTAms 12  - verify lib build existing contents\nDELTAms 12  - setup bin vars\nDELTAms 8  - check bin main mod name\nDELTAms 10  - check bin main module exists\nDELTAms 28  - read existing dune bin contents\nDELTAms 23  - create bin dune contents\nDELTAms 5  - check bin against required bin\nDELTAms 8  - check root dune exists\nDELTAms 4  - check opam file exists\nDELTAms -989  - check root dune-project file exists\nDELTAms 82  - perform actual build\n\n  Build Succeeded! To test a binary:\n\n      esy x ChalkConsole.exe\n\n\nDELTAms 5  - check build failure\nDELTAms 8  - end\nDELTAms 5  - end\n\n\n\nFor the following manually instrumented profiling of that script file (requires\ngdate be installed). I've since improved the detect shell step (avoided using\ngrep subprocess).\n\nAll that really matters is the time it takes to run the genEverything script.\nIt doesn't matter how long it takes to generate the genEverything script.  The\nbiggest impacts for optimization of running genEverything would be:\n1. Omitting fields in the generated dune files that aren't present in the\n   package.json config.\n\nNote that each measurement has an additional 5ms overhead apparently (so\nsubtract about 5ms for each measurement to get the real time).\n\nSome smaller improvements:\n- md5 takes about 7ms to execute which blocks running of genEverything.sh, but\n  just checking for if md5 program exists is time consuming.\n  If we have a previous build hash, we don't need to check \n\nRun it in a project by doing `esy b ./_build/genEverything.sh`\n\n\n```sh\n\n#!/bin/bash\n\nset -e\nset -u\n\nBOLD=`tput bold`  || BOLD=''   # Select bold mode\nBLACK=`tput setaf 0` || BLACK=''\nRED=`tput setaf 1` || RED=''\nGREEN=`tput setaf 2` || GREEN=''\nYELLOW=`tput setaf 3` || YELLOW=''\nRESET=`tput sgr0` || RESET=''\n\nPREV_TIME=\"1$(/opt/homebrew/bin/gdate +%N)\"\n\n\n\n\n# Some operation:\nNOW=\"1$(/opt/homebrew/bin/gdate +%N)\"\nDELTA_MS=$(( $(($NOW-$PREV_TIME)) / 1000000))\necho \"DELTAms ${DELTA_MS}\"\nPREV_TIME=\"1$(/opt/homebrew/bin/gdate +%N)\"\nMODE=\"update\"\n[[ $SHELL =~ \"noprofile\" ]] && MODE=\"build\"\n\n# Some operation:\nNOW=\"1$(/opt/homebrew/bin/gdate +%N)\"\nDELTA_MS=$(( $(($NOW-$PREV_TIME)) / 1000000))\necho \"DELTAms ${DELTA_MS}  - detect shell\"\nPREV_TIME=\"1$(/opt/homebrew/bin/gdate +%N)\"\n\n\nLAST_EXE_NAME=\"\"\nNOTIFIED_USER=\"false\"\nBUILD_STALE_PROBLEM=\"false\"\n\nDEFAULT_MAIN_MODULE_NAME=\"Index\"\n\nNOW=\"1$(/opt/homebrew/bin/gdate +%N)\"\nDELTA_MS=$(( $(($NOW-$PREV_TIME)) / 1000000))\necho \"DELTAms ${DELTA_MS}  - setup variables\"\nPREV_TIME=\"1$(/opt/homebrew/bin/gdate +%N)\"\n\n\n\nfunction notifyUser() {\n  if [ \"${NOTIFIED_USER}\" == \"false\" ]; then\n    echo \"\"\n    if [ \"${MODE}\" == \"build\" ]; then\n      printf \"  %sAlmost there!%s %sWe just need to prepare a couple of files:%s\\\\n\\\\n\" \"${YELLOW}${BOLD}\" \"${RESET}\" \"${BOLD}\" \"${RESET}\"\n    else\n      printf \"  %sPreparing for build:%s\\\\n\\\\n\" \"${YELLOW}${BOLD}\" \"${RESET}\"\n    fi\n    NOTIFIED_USER=\"true\"\n  else\n    # do nothing\n    true\n  fi\n}\n\n\nfunction printDirectory() {\n  if [ \"${MODE}\" != \"build\" ]; then\n    DIR=$1\n    NAME=$2\n    NAMESPACE=$3\n    REQUIRE=$4\n    IS_LAST=$5\n    printf \"│\\\\n\"\n    PREFIX=\"\"\n    if [[ \"$IS_LAST\" == \"last\" ]]; then\n      printf \"└─%s/\\\\n\" \"$DIR\"\n      PREFIX=\"    \"\n    else\n      printf \"├─%s/\\\\n\" \"$DIR\"\n      PREFIX=\"│   \"\n    fi\n    printf \"%s%s\\\\n\" \"$PREFIX\" \"$NAME\"\n    printf \"%s%s\\\\n\" \"$PREFIX\" \"$NAMESPACE\"\n    if [ -z \"$REQUIRE\" ]; then\n      true\n    else\n      if [ \"$REQUIRE\" != \" \" ]; then\n        printf   \"%s%s\\\\n\" \"$PREFIX\" \"$REQUIRE\"\n      fi\n    fi\n  fi\n}\n\n\nNOW=\"1$(/opt/homebrew/bin/gdate +%N)\"\nDELTA_MS=$(( $(($NOW-$PREV_TIME)) / 1000000))\necho \"DELTAms ${DELTA_MS}  - define functions\"\nPREV_TIME=\"1$(/opt/homebrew/bin/gdate +%N)\"\n\n\n\nPACKAGE_NAME=\"chalk-console\"\nPACKAGE_NAME_UPPER_CAMEL=\"ChalkConsole\"\nNAMESPACE=\"ChalkConsole\"\nPUBLIC_LIB_NAME=\"chalk-console.lib\"\n#Default Namespace\nlib_NAMESPACE=\"ChalkConsole\"\n#Default Requires\nlib_REQUIRE=\"\"\n#Default Flags\nlib_FLAGS=\"\"\nlib_OCAMLC_FLAGS=\"\"\nlib_OCAMLOPT_FLAGS=\"\"\nlib_PREPROCESS=\"\"\nlib_C_NAMES=\"\"\n#Default Requires\nbin_REQUIRE=\"\"\n#Default Flags\nbin_FLAGS=\"\"\nbin_OCAMLC_FLAGS=\"\"\nbin_OCAMLOPT_FLAGS=\"\"\nbin_PREPROCESS=\"\"\nbin_C_NAMES=\"\"\nlib_NAMESPACE=\"\"ChalkConsole\"\"\nbin_MAIN_MODULE=\"\"TestChalkConsole\"\"\nlib_REQUIRE=\" console.lib chalk.lib \"\nbin_REQUIRE=\" console.lib chalk.lib chalk-console.lib \"\n\n\nNOW=\"1$(/opt/homebrew/bin/gdate +%N)\"\nDELTA_MS=$(( $(($NOW-$PREV_TIME)) / 1000000))\necho \"DELTAms ${DELTA_MS}  - define build variables\"\nPREV_TIME=\"1$(/opt/homebrew/bin/gdate +%N)\"\n\nprintDirectory \"lib\" \"library name: chalk-console.lib\" \"namespace:    $lib_NAMESPACE\" \"require:     $lib_REQUIRE\" not-last\nprintDirectory \"bin\" \"name:    ChalkConsole.exe\" \"main:    ${bin_MAIN_MODULE:-$DEFAULT_MAIN_MODULE_NAME}\" \"require:$bin_REQUIRE\" last\n\n\nNOW=\"1$(/opt/homebrew/bin/gdate +%N)\"\nDELTA_MS=$(( $(($NOW-$PREV_TIME)) / 1000000))\necho \"DELTAms ${DELTA_MS}  - print directories\"\nPREV_TIME=\"1$(/opt/homebrew/bin/gdate +%N)\"\n\n\n# Perform validation:\n\nLIB_DIR=\"${cur__root}/lib\"\nLIB_DUNE_FILE=\"${LIB_DIR}/dune\"\n\n# TODO: Error if there are multiple libraries all using the default namespace.\nif [ -d \"${LIB_DIR}\" ]; then\n  true\nelse\n  BUILD_STALE_PROBLEM=\"true\"\n  notifyUser\n  if [ \"${MODE}\" == \"build\" ]; then\n    printf \"    □  Your project is missing the lib directory described in package.json buildDirs\\\\n\"\n  else\n    printf \"    %s☒%s  Your project is missing the lib directory described in package.json buildDirs\\\\n\" \"${BOLD}${GREEN}\" \"${RESET}\"\n    mkdir -p \"${LIB_DIR}\"\n  fi\nfi\n\nNOW=\"1$(/opt/homebrew/bin/gdate +%N)\"\nDELTA_MS=$(( $(($NOW-$PREV_TIME)) / 1000000))\necho \"DELTAms ${DELTA_MS}  - check lib dir\"\nPREV_TIME=\"1$(/opt/homebrew/bin/gdate +%N)\"\n\nLIB_DUNE_CONTENTS=\"\"\nLIB_DUNE_EXISTING_CONTENTS=\"\"\nif [ -f \"${LIB_DUNE_FILE}\" ]; then\n  LIB_DUNE_EXISTING_CONTENTS=$(<\"${LIB_DUNE_FILE}\")\nfi\nLIB_DUNE_CONTENTS=\"(library\"\nLIB_DUNE_CONTENTS=$(printf \"%s\\\\n %s\" \"${LIB_DUNE_CONTENTS}\" \"  ; !!!! This dune file is generated from the package.json file. Do NOT modify by hand.\")\nLIB_DUNE_CONTENTS=$(printf \"%s\\\\n %s\" \"${LIB_DUNE_CONTENTS}\" \"  ; !!!! Instead, edit the package.json and then rerun 'esy pesy' at the project root.\")\nLIB_DUNE_CONTENTS=$(printf \"%s\\\\n %s\" \"${LIB_DUNE_CONTENTS}\" \"  ; The namespace other code see this as\")\nLIB_DUNE_CONTENTS=$(printf \"%s\\\\n %s\" \"${LIB_DUNE_CONTENTS}\" \"  (name ${lib_NAMESPACE})\")\nLIB_DUNE_CONTENTS=$(printf \"%s\\\\n %s\" \"${LIB_DUNE_CONTENTS}\" \"  (public_name chalk-console.lib)\")\nLIB_DUNE_CONTENTS=$(printf \"%s\\\\n %s\\\\n\" \"${LIB_DUNE_CONTENTS}\" \"  (libraries ${lib_REQUIRE})\")\nLIB_DUNE_CONTENTS=$(printf \"%s\\\\n %s\\\\n\" \"${LIB_DUNE_CONTENTS}\" \"  (c_names ${lib_C_NAMES})  ; From package.json cNames field\")\nLIB_DUNE_CONTENTS=$(printf \"%s\\\\n %s\\\\n\" \"${LIB_DUNE_CONTENTS}\" \"  (flags (:standard ${lib_FLAGS}))  ; From package.json flags field\")\nLIB_DUNE_CONTENTS=$(printf \"%s\\\\n %s\\\\n\" \"${LIB_DUNE_CONTENTS}\" \"  (ocamlc_flags (:standard ${lib_OCAMLC_FLAGS}))  ; From package.json ocamlcFlags field\")\nLIB_DUNE_CONTENTS=$(printf \"%s\\\\n %s\\\\n\" \"${LIB_DUNE_CONTENTS}\" \"  (ocamlopt_flags (:standard ${lib_OCAMLOPT_FLAGS}))) ; From package.json ocamloptFlags\")\n\n\nNOW=\"1$(/opt/homebrew/bin/gdate +%N)\"\nDELTA_MS=$(( $(($NOW-$PREV_TIME)) / 1000000))\necho \"DELTAms ${DELTA_MS}  - create lib build file\"\nPREV_TIME=\"1$(/opt/homebrew/bin/gdate +%N)\"\n\nif [ \"${LIB_DUNE_EXISTING_CONTENTS}\" == \"${LIB_DUNE_CONTENTS}\" ]; then\n  true\nelse\n  notifyUser\n  BUILD_STALE_PROBLEM=\"true\"\n  if [ \"${MODE}\" == \"build\" ]; then\n    printf \"    □  Update lib/dune build config\\\\n\"\n  else\n    printf \"    %s☒%s  Update lib/dune build config\\\\n\" \"${BOLD}${GREEN}\" \"${RESET}\"\n    printf \"%s\" \"$LIB_DUNE_CONTENTS\" > \"${LIB_DUNE_FILE}\"\n  fi\nfi\n\nNOW=\"1$(/opt/homebrew/bin/gdate +%N)\"\nDELTA_MS=$(( $(($NOW-$PREV_TIME)) / 1000000))\necho \"DELTAms ${DELTA_MS}  - verify lib build existing contents\"\nPREV_TIME=\"1$(/opt/homebrew/bin/gdate +%N)\"\n\n\nBIN_DIR=\"${cur__root}/bin\"\nBIN_DUNE_FILE=\"${BIN_DIR}/dune\"\n# FOR BINARY IN DIRECTORY bin\nbin_MAIN_MODULE=\"${bin_MAIN_MODULE:-$DEFAULT_MAIN_MODULE_NAME}\"\n\nbin_MAIN_MODULE_NAME=\"${bin_MAIN_MODULE%%.*}\"\n\n\nNOW=\"1$(/opt/homebrew/bin/gdate +%N)\"\nDELTA_MS=$(( $(($NOW-$PREV_TIME)) / 1000000))\necho \"DELTAms ${DELTA_MS}  - setup bin vars\"\nPREV_TIME=\"1$(/opt/homebrew/bin/gdate +%N)\"\n\n# https://stackoverflow.com/a/965072\nif [ \"$bin_MAIN_MODULE_NAME\"==\"$bin_MAIN_MODULE\" ]; then\n  # If they did not specify an extension, we'll assume it is .re\n  bin_MAIN_MODULE_FILENAME=\"${bin_MAIN_MODULE}.re\"\nelse\n  bin_MAIN_MODULE_FILENAME=\"${bin_MAIN_MODULE}\"\nfi\n\nNOW=\"1$(/opt/homebrew/bin/gdate +%N)\"\nDELTA_MS=$(( $(($NOW-$PREV_TIME)) / 1000000))\necho \"DELTAms ${DELTA_MS}  - check bin main mod name\"\nPREV_TIME=\"1$(/opt/homebrew/bin/gdate +%N)\"\n\n\nif [ -f  \"${BIN_DIR}/${bin_MAIN_MODULE_FILENAME}\" ]; then\n  true\nelse\n  BUILD_STALE_PROBLEM=\"true\"\n  notifyUser\n  echo \"\"\n  if [ \"${MODE}\" == \"build\" ]; then\n    printf \"    □  Generate %s main module\\\\n\" \"${bin_MAIN_MODULE_FILENAME}\"\n  else\n    printf \"    %s☒%s  Generate %s main module\\\\n\" \"${BOLD}${GREEN}\" \"${RESET}\" \"${bin_MAIN_MODULE_FILENAME}\"\n    mkdir -p \"${BIN_DIR}\"\n    printf \"print_endline(\\\"Hello!\\\");\" > \"${BIN_DIR}/${bin_MAIN_MODULE_FILENAME}\"\n  fi\nfi\n\n\n\nNOW=\"1$(/opt/homebrew/bin/gdate +%N)\"\nDELTA_MS=$(( $(($NOW-$PREV_TIME)) / 1000000))\necho \"DELTAms ${DELTA_MS}  - check bin main module exists\"\nPREV_TIME=\"1$(/opt/homebrew/bin/gdate +%N)\"\n\nif [ -d \"${BIN_DIR}\" ]; then\n  LAST_EXE_NAME=\"ChalkConsole.exe\"\n  BIN_DUNE_EXISTING_CONTENTS=\"\"\n  if [ -f \"${BIN_DUNE_FILE}\" ]; then\n    BIN_DUNE_EXISTING_CONTENTS=$(<\"${BIN_DUNE_FILE}\")\n  else\n    BIN_DUNE_EXISTING_CONTENTS=\"\"\n  fi\n\n  NOW=\"1$(/opt/homebrew/bin/gdate +%N)\"\n  DELTA_MS=$(( $(($NOW-$PREV_TIME)) / 1000000))\n  echo \"DELTAms ${DELTA_MS}  - read existing dune bin contents\"\n  PREV_TIME=\"1$(/opt/homebrew/bin/gdate +%N)\"\n\n\n  BIN_DUNE_CONTENTS=\"(executable\"\n  BIN_DUNE_CONTENTS=$(printf \"%s\\\\n %s\" \"${BIN_DUNE_CONTENTS}\" \"  ; !!!! This dune file is generated from the package.json file. Do NOT modify by hand.\")\n  BIN_DUNE_CONTENTS=$(printf \"%s\\\\n %s\" \"${BIN_DUNE_CONTENTS}\" \"  ; !!!! Instead, edit the package.json and then rerun 'esy pesy' at the project root.\")\n  BIN_DUNE_CONTENTS=$(printf \"%s\\\\n %s\" \"${BIN_DUNE_CONTENTS}\" \"  ; The entrypoint module\")\n  BIN_DUNE_CONTENTS=$(printf \"%s\\\\n %s\" \"${BIN_DUNE_CONTENTS}\" \"  (name ${bin_MAIN_MODULE_NAME})  ;  From package.json main field\")\n  BIN_DUNE_CONTENTS=$(printf \"%s\\\\n %s\" \"${BIN_DUNE_CONTENTS}\" \"  (public_name ChalkConsole.exe)  ;  From package.json name field\")\n  BIN_DUNE_CONTENTS=$(printf \"%s\\\\n %s\\\\n\" \"${BIN_DUNE_CONTENTS}\" \"  (libraries ${bin_REQUIRE}) ;  From package.json require field (array of strings)\")\n  BIN_DUNE_CONTENTS=$(printf \"%s\\\\n %s\\\\n\" \"${BIN_DUNE_CONTENTS}\" \"  (flags (:standard ${bin_FLAGS})) ;  From package.json flags field\")\n  BIN_DUNE_CONTENTS=$(printf \"%s\\\\n %s\\\\n\" \"${BIN_DUNE_CONTENTS}\" \"  (ocamlc_flags (:standard ${bin_OCAMLC_FLAGS}))  ; From package.json ocamlcFlags field\")\n  BIN_DUNE_CONTENTS=$(printf \"%s\\\\n %s\\\\n\" \"${BIN_DUNE_CONTENTS}\" \"  (ocamlopt_flags (:standard ${bin_OCAMLOPT_FLAGS})))  ; From package.json ocamloptFlags field\")\n\n\n  \n  NOW=\"1$(/opt/homebrew/bin/gdate +%N)\"\n  DELTA_MS=$(( $(($NOW-$PREV_TIME)) / 1000000))\n  echo \"DELTAms ${DELTA_MS}  - create bin dune contents\"\n  PREV_TIME=\"1$(/opt/homebrew/bin/gdate +%N)\"\n\n  if [ \"${BIN_DUNE_EXISTING_CONTENTS}\" == \"${BIN_DUNE_CONTENTS}\" ]; then\n    true\n  else\n    notifyUser\n    BUILD_STALE_PROBLEM=\"true\"\n    if [ \"${MODE}\" == \"build\" ]; then\n      printf \"    □  Update bin/dune build config\\\\n\"\n    else\n      printf \"    %s☒%s  Update bin/dune build config\\\\n\" \"${BOLD}${GREEN}\" \"${RESET}\"\n      printf \"%s\" \"${BIN_DUNE_CONTENTS}\" > \"${BIN_DUNE_FILE}\"\n      mkdir -p \"${BIN_DIR}\"\n    fi\n  fi\n  \n  NOW=\"1$(/opt/homebrew/bin/gdate +%N)\"\n  DELTA_MS=$(( $(($NOW-$PREV_TIME)) / 1000000))\n  echo \"DELTAms ${DELTA_MS}  - check bin against required bin\"\n  PREV_TIME=\"1$(/opt/homebrew/bin/gdate +%N)\"\n\nelse\n  BUILD_STALE_PROBLEM=\"true\"\n  notifyUser\n  if [ \"${MODE}\" == \"build\" ]; then\n    printf \"    □  Generate missing the bin directory described in package.json buildDirs\\\\n\"\n  else\n    printf \"    %s☒%s  Generate missing the bin directory described in package.json buildDirs\\\\n\" \"${BOLD}${GREEN}\" \"${RESET}\"\n    mkdir -p \"${BIN_DIR}\"\n  fi\nfi\n\nif [ -f  \"${cur__root}/dune\" ]; then\n  true\nelse\n  BUILD_STALE_PROBLEM=\"true\"\n  notifyUser\n  if [ \"${MODE}\" == \"build\" ]; then\n    printf \"    □  Update ./dune to ignore node_modules\\\\n\"\n  else\n    printf \"    %s☒%s  Update ./dune to ignore node_modules\\\\n\" \"${BOLD}${GREEN}\" \"${RESET}\"\n    printf \"(ignored_subdirs (node_modules))\" > \"${cur__root}/dune\"\n  fi\nfi\n\nNOW=\"1$(/opt/homebrew/bin/gdate +%N)\"\nDELTA_MS=$(( $(($NOW-$PREV_TIME)) / 1000000))\necho \"DELTAms ${DELTA_MS}  - check root dune exists\"\nPREV_TIME=\"1$(/opt/homebrew/bin/gdate +%N)\"\n\n\n\nif [ -f  \"${cur__root}/${PACKAGE_NAME}.opam\" ]; then\n  true\nelse\n  BUILD_STALE_PROBLEM=\"true\"\n  notifyUser\n  if [ \"${MODE}\" == \"build\" ]; then\n    printf \"    □  Add %s\\\\n\" \"${PACKAGE_NAME}.opam\"\n  else\n    printf \"    %s☒%s  Add %s\\\\n\" \"${BOLD}${GREEN}\" \"${RESET}\" \"${PACKAGE_NAME}.opam\" \n    touch \"${cur__root}/${PACKAGE_NAME}.opam\"\n  fi\nfi\n\n\nNOW=\"1$(/opt/homebrew/bin/gdate +%N)\"\nDELTA_MS=$(( $(($NOW-$PREV_TIME)) / 1000000))\necho \"DELTAms ${DELTA_MS}  - check opam file exists\"\nPREV_TIME=\"1$(/opt/homebrew/bin/gdate +%N)\"\n\n\nif [ -f  \"${cur__root}/dune-project\" ]; then\n  true\nelse\n  BUILD_STALE_PROBLEM=\"true\"\n  notifyUser\n  if [ \"${MODE}\" == \"build\" ]; then\n    printf \"    □  Add a ./dune-project\\\\n\"\n  else\n    printf \"    %s☒%s  Add a ./dune-project\\\\n\" \"${BOLD}${GREEN}\" \"${RESET}\"\n    printf \"(lang dune 1.0)\\\\n (name %s)\" \"${PACKAGE_NAME}\" > \"${cur__root}/dune-project\"\n  fi\nfi\n\nNOW=\"1$(/opt/homebrew/bin/gdate +%N)\"\nDELTA_MS=$(( $(($NOW-$PREV_TIME)) / 1000000))\necho \"DELTAms ${DELTA_MS}  - check root dune-project file exists\"\nPREV_TIME=\"1$(/opt/homebrew/bin/gdate +%N)\"\n\n\nif [ \"${MODE}\" == \"build\" ]; then\n  if [ \"${BUILD_STALE_PROBLEM}\" == \"true\" ]; then\n    printf \"\\\\n  %sTo perform those updates and build run:%s\\n\\n\" \"${BOLD}${YELLOW}\" \"${RESET}\"\n    printf \"    esy pesy\\\\n\\\\n\\\\n\\\\n\"\n    exit 1\n  else\n    # If you list a refmterr as a dev dependency, we'll use it!\n\n    BUILD_FAILED=\"\"\n    if hash refmterr 2>/dev/null; then\n      refmterr dune build -p \"${PACKAGE_NAME}\" || BUILD_FAILED=\"true\"\n    else\n      dune build -p \"${PACKAGE_NAME}\" || BUILD_FAILED=\"true\"\n    fi\n\n    NOW=\"1$(/opt/homebrew/bin/gdate +%N)\"\n    DELTA_MS=$(( $(($NOW-$PREV_TIME)) / 1000000))\n    echo \"DELTAms ${DELTA_MS}  - perform actual build\"\n    PREV_TIME=\"1$(/opt/homebrew/bin/gdate +%N)\"\n\n    if [ -z \"$BUILD_FAILED\" ]; then\n      printf \"\\\\n%s  Build Succeeded!%s \" \"${BOLD}${GREEN}\" \"${RESET}\"\n      if [ -z \"$LAST_EXE_NAME\" ]; then\n        printf \"\\\\n\\\\n\"\n        true\n      else\n        # If we built an EXE\n        printf \"%sTo test a binary:%s\\\\n\\\\n\" \"${BOLD}\" \"${RESET}\"\n        printf \"      esy x %s\\\\n\\\\n\\\\n\" \"${LAST_EXE_NAME}\"\n      fi\n      true\n      NOW=\"1$(/opt/homebrew/bin/gdate +%N)\"\n      DELTA_MS=$(( $(($NOW-$PREV_TIME)) / 1000000))\n      echo \"DELTAms ${DELTA_MS}  - check build failure\"\n      PREV_TIME=\"1$(/opt/homebrew/bin/gdate +%N)\"\n    else\n      exit 1\n    fi\n  fi\nelse\n  # In update mode.\n  if [ \"${BUILD_STALE_PROBLEM}\" == \"true\" ]; then\n    printf \"\\\\n  %sUpdated!%s %sNow run:%s\\\\n\\\\n\" \"${BOLD}${GREEN}\" \"${RESET}\" \"${BOLD}\" \"${RESET}\"\n    printf \"    esy build\\\\n\\\\n\\\\n\"\n  else\n    printf \"\\\\n  %sAlready up to date!%s %sNow run:%s\\\\n\\\\n\" \"${BOLD}${GREEN}\" \"${RESET}\" \"${BOLD}\" \"${RESET}\"\n    printf \"      esy build\\\\n\\\\n\\\\n\"\n  fi\nfi\n\n      NOW=\"1$(/opt/homebrew/bin/gdate +%N)\"\n      DELTA_MS=$(( $(($NOW-$PREV_TIME)) / 1000000))\n      echo \"DELTAms ${DELTA_MS}  - end\"\n      PREV_TIME=\"1$(/opt/homebrew/bin/gdate +%N)\"\n\n      NOW=\"1$(/opt/homebrew/bin/gdate +%N)\"\n      DELTA_MS=$(( $(($NOW-$PREV_TIME)) / 1000000))\n      echo \"DELTAms ${DELTA_MS}  - end\"\n      PREV_TIME=\"1$(/opt/homebrew/bin/gdate +%N)\"\n\n```\n\n\n\nAlthough we quickly call into genEverything if the package.json hasn't changed,\nthere appears to be an 80ms overhead in pesy until we get to that point.\n\n\nDELTAms 4 - baseline margin of error amount\nDELTAms 5 - check help\nDELTAms 12 - check env\nDELTAms 13 - check create\nDELTAms 7 - record pesy dir\n\nsuper-project-now@0.0.0\nDELTAms 6 - output title\nDELTAms 7 - mkdir cur__target_dir\nDELTAms 7 - check if md5 exists\nDELTAms 12 - compute md5\nDELTAms 14 - get previous md5\n"
  },
  {
    "path": "npm-cli/v0.4.4/pesy",
    "content": "#!/bin/bash\n\nset -e\n\n# pesy-JSON.sh prints out all the fields in the form of:\n# [\"key\"] value\n# where value may be an array.\n# pipe the output of that to\n#\n# cat package.json | ./pesy-JSON.sh | sed -n 's;\\[\"peasyLibs\"\\][[:space:]]*\\(.*\\);\\1;p'\n#\n# Where (in that case) you would be extracting the value for `peasyLibs` field.\n# use [[:space:]] character class to ensure mac/linux compat.\n#\n# You can extract deeper fields by searching for fields like [\"esy\",\"build\"].\n\n# Need to avoid spinning up node every build command.\n# MD5_OF_PACKAGE\n# $cur__target_dir has some problems right now.\n# $fixed_cur__target_dir=\"$cur__original_root\"\n\n# We can build out of source, then simply copy over the .merlin files because\n# those are whitelisted! We can also prepare them.\n\n# The two modes:\n# update: Update the jbuild files based on package.json\n# build:  Perform the build from files updated in update mode.\n# Only way to determine that we are part of actual build vs. command line\n# update mode is by looking for noprofile.\n\n\nUNDER_ON=`tput smul` || UNDER_ON=''\nUNDER_OFF=`tput rmul` || UNDER_OFF=''\nBOLD=`tput bold`  || BOLD=''   # Select bold mode\nREV=`tput rev` || REV=''      # Select bold mode\nBLACK=`tput setaf 0` || BLACK=''\nRED=`tput setaf 1` || RED=''\nGREEN=`tput setaf 2` || GREEN=''\nYELLOW=`tput setaf 3` || YELLOW=''\nBLUE=`tput setaf 4` || BLUE=''\nMAGENTA=`tput setaf 5` || MAGENTA=''\nCYAN=`tput setaf 6` || CYAN=''\nWHITE=`tput setaf 7` || WHITE=''\nRESET=`tput sgr0` || RESET=''\n\nif [[ \"$1\" == \"help\" ]]; then\n  SHOW_HELP=\"true\"\nelse\n  if [[ \"$1\" == \"--help\" ]]; then\n    SHOW_HELP=\"true\"\n  fi\nfi\n\nif [[ \"$SHOW_HELP\" == \"true\" ]]; then\n  printf \"\\\\n%spesy%s%s: Your simple esy assistant.%s\" \"${BOLD}${GREEN}\" \"${RESET}\" \"${BOLD}\" \"${RESET}\"\n  printf \"\\\\n\"\n  printf \"\\\\n  %spesy --help%s \" \"$BOLD\" \"$RESET\"\n  printf \"\\\\n    Show this help screen.\"\n  printf \"\\\\n\"\n  printf \"\\\\n  %spesy%s \" \"$BOLD\" \"$RESET\"\n  printf \"\\\\n    Running pesy in a fresh directory will help you set up an esy project.\"\n  printf \"\\\\n\"\n  printf \"\\\\n  %sesy pesy%s (in a project that uses esy)\" \"$BOLD\" \"$RESET\"\n  printf \"\\\\n    Once you have an esy project, 'esy pesy' will keep your project up to date.\"\n  printf \"\\\\n    (make sure pesy is listed as a devDependency).\"\n  printf \"\\\\n\\\\n\\\\n\"\n  exit 0\nfi\n\nprintf \"%s\\\\n  Hey, you are on an older unmaintained version of pesy. Please use @pesy/esy-pesy, in the devDependencies. See https://github.com/esy/pesy\\\\n %s\" \"${YELLOW}${BOLD}\" \"$RESET\"\n\n# It can be expensive to find the pesy implementation dir.\n# If -z then we aren't in any sort of esy build or esy cmd environment. We're\n# running naked on the command line. This implies pesy create or help.  In that\n# case, we need to compute the pesy dir, but we have nowhere to record it yet.\nif [ -z \"${cur__target_dir}\" ]; then\n  # Create mode\n  RECOMPUTE_PESY_DIR=\"true\"\n  RECORD_PESY_DIR=\"false\"\nelse\n  # Build/update mode (must have the cur__target_dir available).\n  mkdir -p \"${cur__target_dir}\"\n  PESY_DIR_CACHE=\"${cur__target_dir}/pesyDirCache.txt\"\n  if [ -f  \"${PESY_DIR_CACHE}\" ]; then\n    RECOMPUTE_PESY_DIR=\"false\"\n    RECORD_PESY_DIR=\"false\"\n  else\n    # Else compute and record it.\n    RECOMPUTE_PESY_DIR=\"true\"\n    RECORD_PESY_DIR=\"true\"\n  fi\nfi\n\nif [ \"${RECOMPUTE_PESY_DIR}\" == \"true\" ]; then\n  SOURCE=\"${BASH_SOURCE[0]}\"\n  while [ -h \"$SOURCE\" ]; do # resolve $SOURCE until the file is no longer a symlink\n    PESY_DIR=\"$( cd -P \"$( dirname \"$SOURCE\" )\" >/dev/null && pwd )\"\n    SOURCE=\"$(readlink \"$SOURCE\")\"\n    [[ $SOURCE != /* ]] && SOURCE=\"$PESY_DIR/$SOURCE\" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located\n  done\n  PESY_DIR=\"$( cd -P \"$( dirname \"$SOURCE\" )\" >/dev/null && pwd )\"\nelse\n  PESY_DIR=$(cat \"${PESY_DIR_CACHE}\")\nfi\n\nif [ -z \"${cur__name}\" ]; then\n  # Will set PACKAGE_NAME and VERSION\n  source \"${PESY_DIR}/pesy-create.sh\"\n  esy install\n  # Dynamically access the *current* version of instead of the one installed\n  # as a dependency. Not always a great idea.\n  # Uncomment while debugging pesy itself.\n  # esy sh \"${PESY_DIR}/pesy\"\n  esy pesy\n  exit 0\nelse\n  PACKAGE_NAME_FULL=\"${cur__name}\"\n  VERSION=\"${cur__version}\"\n  # Strip off any scope like @esy-ocaml/foo-package.\n  PACKAGE_NAME=\"${PACKAGE_NAME_FULL##*/}\"\nfi\n\n\nif [ \"${RECORD_PESY_DIR}\" == \"true\" ]; then\n  echo \"${PESY_DIR}\" >  \"${PESY_DIR_CACHE}\"\nfi\n\nset -u\n\necho \"\"\necho \"${BOLD}${PACKAGE_NAME_FULL}@${VERSION}${RESET}\"\n\n# The genEverything script is the one that actually does all the\n# checking/updating of build config. We generate that from pesy, then run it.\n# But it's really expensive to generate, so we only regenerate it if\n# package.json has changed.\nGEN_EVERYTHING=\"${cur__target_dir}/genEverything.sh\"\nPESY_DIR_CACHE=\"${cur__target_dir}/pesyDirCache.txt\"\nGEN_MD5=\"${cur__target_dir}/packageJson.md5\"\n\nif [ -x \"$(command -v md5)\" ]; then\n  CUR_MD5=$(md5 \"${cur__root}/package.json\")\nelse\n  if [ -x \"$(command -v md5sum)\" ]; then\n    CUR_MD5=$(md5sum \"${cur__root}/package.json\")\n  else\n    echo \"Aborting build because no checksum utilities are found (md5/md5sum)\"\n    exit 1\n  fi\nfi\n\nif [ -f  \"${GEN_MD5}\" ]; then\n  PREV_MD5=$(cat \"${GEN_MD5}\")\nelse\n  PREV_MD5=\"\"\nfi\n\nif [[ \"$CUR_MD5\" == \"$PREV_MD5\" ]]; then\n  \"${GEN_EVERYTHING}\"\n  exit 0\nelse\n  printf \"%s\" \"${CUR_MD5}\" > \"${GEN_MD5}\"\nfi\n\n####### OKAY NOW EVERYTHING GENERATES THE BUILD SCRIPT \"genEverything\" #########\n\necho \"\" > \"${GEN_EVERYTHING}\"\nchmod 777 \"${GEN_EVERYTHING}\"\n\n# Gnu uppercasing extensions to sed don't exist on mac.\nsource \"${PESY_DIR}/pesy-name-utils.sh\"\nPACKAGE_NAME_UPPER_CAMEL=$(upperCamelCasify \"${PACKAGE_NAME}\")\nNAMESPACE=\"${PACKAGE_NAME_UPPER_CAMEL}\"\nPUBLIC_LIB_NAME=\"${PACKAGE_NAME}.lib\"\n\n\n\ncat \"${PESY_DIR}/pesy-header.sh\" >> \"${GEN_EVERYTHING}\"\n\ncat <<EOT >> \"${GEN_EVERYTHING}\"\nPACKAGE_NAME=\"${PACKAGE_NAME}\"\nPACKAGE_NAME_UPPER_CAMEL=\"${PACKAGE_NAME_UPPER_CAMEL}\"\nNAMESPACE=\"${NAMESPACE}\"\nPUBLIC_LIB_NAME=\"${PUBLIC_LIB_NAME}\"\nEOT\n\nfunction genLib() {\n  DIR=\"$1\"\n  LIB_NAME=\"$2\"\n  ORIG_DIR=\"$3\"\n  sed  -e \"s;<ORIG_DIR>;${ORIG_DIR};g; s;<DIR>;${DIR};g; s;<LIB_NAME>;${LIB_NAME};g\" \"${PESY_DIR}/pesy-genLib.template.sh\"  >> \"${GEN_EVERYTHING}\"\n}\n\n\n# Generate the config updater per bin directory.\nfunction genBin() {\n  DIR=\"$1\"\n  EXE_NAME=\"$2\"\n  ORIG_DIR=\"$3\"\n  sed  -e \"s;<ORIG_DIR>;${ORIG_DIR};g; s;<DIR>;${DIR};g; s;<EXE_NAME>;${EXE_NAME};g\" \"${PESY_DIR}/pesy-genBin.template.sh\"  >> \"${GEN_EVERYTHING}\"\n}\n\n\n# Hacky, but fast and v8-less parsing of the important field in json file.\n# Spit out some variable names that are of the form <DIR>_FEATURE.\n# Then that secondary script can access those variables in generated code.\n\nOIFS=$IFS;\n\n\n# Initial pass through all names to set some defaults.\n# NOTICE THE QUOTE AROUND THE (.*) - that's because this should be a string.\nPARSED=$(\"${PESY_DIR}/pesy-JSON.sh\" < \"${cur__root}/package.json\")\nALL_DIR_TO_NAME=$(printf \"%s\" \"${PARSED}\" |  sed -n 's;\\[\"buildDirs\",\"\\([^\"]*\\)\",\"name\"\\][[:space:]]*\"\\([^\"]*\\)\";\\1=\\2;p')\nALL_DIR_TO_NAME=$(printf \"%s\" \"$ALL_DIR_TO_NAME\" | tr -s '\\n' '|')\nif [ -z \"${ALL_DIR_TO_NAME}\" ]; then\n  # By default, bin and lib\n  ALL_DIR_TO_NAME=\"executable=${PACKAGE_NAME_UPPER_CAMEL}.exe|library=${PACKAGE_NAME}.lib|\"\nfi\nIFS=\"|\";\nALL_DIR_TO_NAME_ARR=($ALL_DIR_TO_NAME);\n# Set deafults for each package before then overriding them.\nSEEN_A_LIB=\"false\"\nfor ((i=0; i<${#ALL_DIR_TO_NAME_ARR[@]}; ++i)); do\n  IFS=\"=\";\n  DIR_AND_NAME=\"${ALL_DIR_TO_NAME_ARR[$i]}\"\n  DIR_AND_NAME_ARR=($DIR_AND_NAME);\n  ORIG_DIR=${DIR_AND_NAME_ARR[0]}\n  DIR=$(upperCamelCasify \"${DIR_AND_NAME_ARR[0]}\")\n  NAME=${DIR_AND_NAME_ARR[1]}\n  if [[ \"${NAME}\" == *.lib ]]; then\n    # We will let a single library default to the namespace of the package.\n    if [[ \"${SEEN_A_LIB}\" == \"false\" ]]; then\n      echo \"#Default Namespace\" >> \"${GEN_EVERYTHING}\"\n      echo \"${DIR}_NAMESPACE=\\\"${PACKAGE_NAME_UPPER_CAMEL}\\\"\" >> \"${GEN_EVERYTHING}\"\n    else\n      # Else if there's more than one lib each must set their namespace.\n      echo \"#Default Namespace, When More Than One Library Present\" >> \"${GEN_EVERYTHING}\"\n      echo \"${DIR}_NAMESPACE=\\\"\\\"\" >> \"${GEN_EVERYTHING}\"\n    fi\n    SEEN_A_LIB=\"true\"\n  else\n    echo \"${DIR}_NAMESPACE=\\\"HEY! You Need To Specify a nameSpace: field for ${ORIG_DIR}\\\"\" >> \"${GEN_EVERYTHING}\"\n  fi\n  echo \"${DIR}_INCLUDESUBDIRS=\\\"\\\"\" >> \"${GEN_EVERYTHING}\"\n  echo \"#Default Requires\" >> \"${GEN_EVERYTHING}\"\n  echo \"${DIR}_REQUIRE=\\\"\\\"\" >> \"${GEN_EVERYTHING}\"\n  echo \"#Default Flags\" >> \"${GEN_EVERYTHING}\"\n  echo \"${DIR}_FLAGS=\\\"\\\"\" >> \"${GEN_EVERYTHING}\"\n  echo \"${DIR}_IGNOREDSUBDIRS=\\\"\\\"\" >> \"${GEN_EVERYTHING}\"\n  echo \"${DIR}_OCAMLC_FLAGS=\\\"\\\"\" >> \"${GEN_EVERYTHING}\"\n  echo \"${DIR}_OCAMLOPT_FLAGS=\\\"\\\"\" >> \"${GEN_EVERYTHING}\"\n  echo \"${DIR}_PREPROCESS=\\\"\\\"\" >> \"${GEN_EVERYTHING}\"\n  echo \"${DIR}_C_NAMES=\\\"\\\"\" >> \"${GEN_EVERYTHING}\"\n  echo \"${DIR}_JSOO_FLAGS=\\\"\\\"\" >> \"${GEN_EVERYTHING}\"\n  echo \"${DIR}_JSOO_FILES=\\\"\\\"\" >> \"${GEN_EVERYTHING}\"\n  echo \"${DIR}_IMPLEMENTS=\\\"\\\"\" >> \"${GEN_EVERYTHING}\"\n  echo \"${DIR}_VIRTUALMODULES=\\\"\\\"\" >> \"${GEN_EVERYTHING}\"\n  echo \"${DIR}_RAWBUILDCONFIG=\\\"\\\"\" >> \"${GEN_EVERYTHING}\"\n  echo \"${DIR}_RAWBUILDCONFIGFOOTER=\\\"\\\"\" >> \"${GEN_EVERYTHING}\"\n  echo \"${DIR}_MODES=\\\"\\\"\" >> \"${GEN_EVERYTHING}\"\n  echo \"${DIR}_WRAPPED=\\\"\\\"\" >> \"${GEN_EVERYTHING}\"\ndone\n\n\nALL_DIR_TO_INCLUDESUBDIRS=$(printf \"%s\" \"${PARSED}\" |  sed -n 's;\\[\"buildDirs\",\"\\([^\"]*\\)\",\"includeSubdirs\"\\][[:space:]]*\\(.*\\);\\1=\\2;p')\nALL_DIR_TO_INCLUDESUBDIRS=$(printf \"%s\" \"$ALL_DIR_TO_INCLUDESUBDIRS\" | tr -s '\\n' '|')\nIFS=\"|\";\nALL_DIR_TO_INCLUDESUBDIRS_ARR=($ALL_DIR_TO_INCLUDESUBDIRS);\nfor ((i=0; i<${#ALL_DIR_TO_INCLUDESUBDIRS_ARR[@]}; ++i)); do\n  IFS=\"=\";\n  DIR_AND_INCLUDESUBDIRS=\"${ALL_DIR_TO_INCLUDESUBDIRS_ARR[$i]}\"\n  DIR_AND_INCLUDESUBDIRS_ARR=($DIR_AND_INCLUDESUBDIRS);\n  ORIG_DIR=${DIR_AND_INCLUDESUBDIRS_ARR[0]}\n  DIR=$(upperCamelCasify \"${ORIG_DIR}\")\n  INCLUDESUBDIRS=${DIR_AND_INCLUDESUBDIRS_ARR[1]}\n  echo \"${DIR}_INCLUDESUBDIRS=\\\"${INCLUDESUBDIRS}\\\"\" >> \"${GEN_EVERYTHING}\"\ndone\n\n# NOTICE THE QUOTE AROUND THE (.*) - that's because this should be a string.\nALL_DIR_TO_NAMESPACE=$(printf \"%s\" \"${PARSED}\" |  sed -n 's;\\[\"buildDirs\",\"\\([^\"]*\\)\",\"namespace\"\\][[:space:]]*\"\\(.*\\)\";\\1=\\2;p')\nALL_DIR_TO_NAMESPACE=$(printf \"%s\" \"$ALL_DIR_TO_NAMESPACE\" | tr -s '\\n' '|')\nIFS=\"|\";\nALL_DIR_TO_NAMESPACE_ARR=($ALL_DIR_TO_NAMESPACE);\nfor ((i=0; i<${#ALL_DIR_TO_NAMESPACE_ARR[@]}; ++i)); do\n  IFS=\"=\";\n  DIR_AND_NAMESPACE=\"${ALL_DIR_TO_NAMESPACE_ARR[$i]}\"\n  DIR_AND_NAMESPACE_ARR=($DIR_AND_NAMESPACE);\n  ORIG_DIR=${DIR_AND_NAMESPACE_ARR[0]}\n  DIR=$(upperCamelCasify \"${ORIG_DIR}\")\n  NAMESPACE=${DIR_AND_NAMESPACE_ARR[1]}\n  echo \"${DIR}_NAMESPACE=\\\"${NAMESPACE}\\\"\" >> \"${GEN_EVERYTHING}\"\ndone\n\n# NOTICE THE LACK OF QUOTE AROUND THE (.*) - that's because this should be a boolean.\nALL_DIR_TO_WRAPPED=$(printf \"%s\" \"${PARSED}\" |  sed -n 's;\\[\"buildDirs\",\"\\([^\"]*\\)\",\"wrapped\"\\][[:space:]]*\\(.*\\);\\1=\\2;p')\nALL_DIR_TO_WRAPPED=$(printf \"%s\" \"$ALL_DIR_TO_WRAPPED\" | tr -s '\\n' '|')\nIFS=\"|\";\nALL_DIR_TO_WRAPPED_ARR=($ALL_DIR_TO_WRAPPED);\nfor ((i=0; i<${#ALL_DIR_TO_WRAPPED_ARR[@]}; ++i)); do\n  IFS=\"=\";\n  DIR_AND_WRAPPED=\"${ALL_DIR_TO_WRAPPED_ARR[$i]}\"\n  DIR_AND_WRAPPED_ARR=($DIR_AND_WRAPPED);\n  ORIG_DIR=${DIR_AND_WRAPPED_ARR[0]}\n  DIR=$(upperCamelCasify \"${ORIG_DIR}\")\n  WRAPPED=${DIR_AND_WRAPPED_ARR[1]}\n  echo \"${DIR}_WRAPPED=\\\"${WRAPPED}\\\"\" >> \"${GEN_EVERYTHING}\"\ndone\n\n# NOTICE THE QUOTE AROUND THE (.*) - that's because this should be a string.\nALL_DIR_TO_MAIN=$(printf \"%s\" \"${PARSED}\" |  sed -n 's;\\[\"buildDirs\",\"\\([^\"]*\\)\",\"main\"\\][[:space:]]*\"\\(.*\\)\";\\1=\\2;p')\nALL_DIR_TO_MAIN=$(printf \"%s\" \"$ALL_DIR_TO_MAIN\" | tr -s '\\n' '|')\nIFS=\"|\";\nALL_DIR_TO_MAIN_ARR=($ALL_DIR_TO_MAIN);\nfor ((i=0; i<${#ALL_DIR_TO_MAIN_ARR[@]}; ++i)); do\n  IFS=\"=\";\n  DIR_AND_MAIN=\"${ALL_DIR_TO_MAIN_ARR[$i]}\"\n  DIR_AND_MAIN_ARR=($DIR_AND_MAIN);\n  ORIG_DIR=${DIR_AND_MAIN_ARR[0]}\n  DIR=$(upperCamelCasify \"${ORIG_DIR}\")\n  MAIN=${DIR_AND_MAIN_ARR[1]}\n  echo \"${DIR}_MAIN_MODULE=\\\"${MAIN}\\\"\" >> \"${GEN_EVERYTHING}\"\ndone\n\nALL_DIR_TO_REQUIRE=$(printf \"%s\" \"${PARSED}\" |  sed -n 's;\\[\"buildDirs\",\"\\([^\"]*\\)\",\"require\"\\][[:space:]]*\\(.*\\);\\1=\\2;p')\nALL_DIR_TO_REQUIRE=$(printf \"$ALL_DIR_TO_REQUIRE\" | tr -s '[\"],' ' ')\nALL_DIR_TO_REQUIRE=$(printf \"%s\" \"$ALL_DIR_TO_REQUIRE\" | tr -s '\\n' '|')\nIFS=\"|\";\nALL_DIR_TO_REQUIRE_ARR=($ALL_DIR_TO_REQUIRE);\nfor ((i=0; i<${#ALL_DIR_TO_REQUIRE_ARR[@]}; ++i)); do\n  IFS=\"=\";\n  DIR_AND_REQUIRE=\"${ALL_DIR_TO_REQUIRE_ARR[$i]}\"\n  DIR_AND_REQUIRE_ARR=($DIR_AND_REQUIRE);\n  ORIG_DIR=${DIR_AND_REQUIRE_ARR[0]}\n  DIR=$(upperCamelCasify \"${ORIG_DIR}\")\n  REQUIRE=${DIR_AND_REQUIRE_ARR[1]}\n  # This one is an array so we take an extra step to strip out [ ] and \"\"\n  echo \"${DIR}_REQUIRE=\\\"${REQUIRE}\\\"\" >> \"${GEN_EVERYTHING}\"\ndone\n\nALL_DIR_TO_FLAGS=$(printf \"%s\" \"${PARSED}\" |  sed -n 's;\\[\"buildDirs\",\"\\([^\"]*\\)\",\"flags\"\\][[:space:]]*\\(.*\\);\\1=\\2;p')\nALL_DIR_TO_FLAGS=$(printf \"$ALL_DIR_TO_FLAGS\" | tr -s '[\"],' ' ')\nALL_DIR_TO_FLAGS=$(printf \"%s\" \"$ALL_DIR_TO_FLAGS\" | tr -s '\\n' '|')\nIFS=\"|\";\nALL_DIR_TO_FLAGS_ARR=($ALL_DIR_TO_FLAGS);\nfor ((i=0; i<${#ALL_DIR_TO_FLAGS_ARR[@]}; ++i)); do\n  IFS=\"=\";\n  DIR_AND_FLAGS=\"${ALL_DIR_TO_FLAGS_ARR[$i]}\"\n  DIR_AND_FLAGS_ARR=($DIR_AND_FLAGS);\n  ORIG_DIR=${DIR_AND_FLAGS_ARR[0]}\n  DIR=$(upperCamelCasify \"${ORIG_DIR}\")\n  FLAGS=${DIR_AND_FLAGS_ARR[1]}\n  # Escape any dollar signs\n  FLAGS=\"${FLAGS//\\\\[^n\\\"]/\\\\\\\\}\"\n  FLAGS=\"${FLAGS//\\$/\\\\\\$}\"\n  # This one is an array so we take an extra step to strip out [ ] and \"\"\n  echo \"${DIR}_FLAGS=\\\"${FLAGS}\\\"\" >> \"${GEN_EVERYTHING}\"\ndone\n\nALL_DIR_TO_IGNOREDSUBDIRS=$(printf \"%s\" \"${PARSED}\" |  sed -n 's;\\[\"buildDirs\",\"\\([^\"]*\\)\",\"ignoredSubdirs\"\\][[:space:]]*\\(.*\\);\\1=\\2;p')\nALL_DIR_TO_IGNOREDSUBDIRS=$(printf \"$ALL_DIR_TO_IGNOREDSUBDIRS\" | tr -s '[\"],' ' ')\nALL_DIR_TO_IGNOREDSUBDIRS=$(printf \"%s\" \"$ALL_DIR_TO_IGNOREDSUBDIRS\" | tr -s '\\n' '|')\nIFS=\"|\";\nALL_DIR_TO_IGNOREDSUBDIRS_ARR=($ALL_DIR_TO_IGNOREDSUBDIRS);\nfor ((i=0; i<${#ALL_DIR_TO_IGNOREDSUBDIRS_ARR[@]}; ++i)); do\n  IFS=\"=\";\n  DIR_AND_IGNOREDSUBDIRS=\"${ALL_DIR_TO_IGNOREDSUBDIRS_ARR[$i]}\"\n  DIR_AND_IGNOREDSUBDIRS_ARR=($DIR_AND_IGNOREDSUBDIRS);\n  ORIG_DIR=${DIR_AND_IGNOREDSUBDIRS_ARR[0]}\n  DIR=$(upperCamelCasify \"${ORIG_DIR}\")\n  IGNOREDSUBDIRS=${DIR_AND_IGNOREDSUBDIRS_ARR[1]}\n  # This one is an array so we take an extra ignoreSubdirs to strip out [ ] and \"\"\n  echo \"${DIR}_IGNOREDSUBDIRS=\\\"${IGNOREDSUBDIRS}\\\"\" >> \"${GEN_EVERYTHING}\"\ndone\n\nALL_DIR_TO_IMPLEMENTS=$(printf \"%s\" \"${PARSED}\" |  sed -n 's;\\[\"buildDirs\",\"\\([^\"]*\\)\",\"implements\"\\][[:space:]]*\\(.*\\);\\1=\\2;p')\nALL_DIR_TO_IMPLEMENTS=$(printf \"$ALL_DIR_TO_IMPLEMENTS\" | tr -s '[\"],' ' ')\nALL_DIR_TO_IMPLEMENTS=$(printf \"%s\" \"$ALL_DIR_TO_IMPLEMENTS\" | tr -s '\\n' '|')\nIFS=\"|\";\nALL_DIR_TO_IMPLEMENTS_ARR=($ALL_DIR_TO_IMPLEMENTS);\nfor ((i=0; i<${#ALL_DIR_TO_IMPLEMENTS_ARR[@]}; ++i)); do\n  IFS=\"=\";\n  DIR_AND_IMPLEMENTS=\"${ALL_DIR_TO_IMPLEMENTS_ARR[$i]}\"\n  DIR_AND_IMPLEMENTS_ARR=($DIR_AND_IMPLEMENTS);\n  ORIG_DIR=${DIR_AND_IMPLEMENTS_ARR[0]}\n  DIR=$(upperCamelCasify \"${ORIG_DIR}\")\n  IMPLEMENTS=${DIR_AND_IMPLEMENTS_ARR[1]}\n  # Escape any dollar signs\n  IMPLEMENTS=\"${IMPLEMENTS//\\\\[^n\\\"]/\\\\\\\\}\"\n  IMPLEMENTS=\"${IMPLEMENTS//\\$/\\\\\\$}\"\n  # This one is an array so we take an extra step to strip out [ ] and \"\"\n  echo \"${DIR}_IMPLEMENTS=\\\"${IMPLEMENTS}\\\"\" >> \"${GEN_EVERYTHING}\"\ndone\n\nALL_DIR_TO_VIRTUALMODULES=$(printf \"%s\" \"${PARSED}\" |  sed -n 's;\\[\"buildDirs\",\"\\([^\"]*\\)\",\"virtualModules\"\\][[:space:]]*\\(.*\\);\\1=\\2;p')\nALL_DIR_TO_VIRTUALMODULES=$(printf \"$ALL_DIR_TO_VIRTUALMODULES\" | tr -s '[\"],' ' ')\nALL_DIR_TO_VIRTUALMODULES=$(printf \"%s\" \"$ALL_DIR_TO_VIRTUALMODULES\" | tr -s '\\n' '|')\nIFS=\"|\";\nALL_DIR_TO_VIRTUALMODULES_ARR=($ALL_DIR_TO_VIRTUALMODULES);\nfor ((i=0; i<${#ALL_DIR_TO_VIRTUALMODULES_ARR[@]}; ++i)); do\n  IFS=\"=\";\n  DIR_AND_VIRTUALMODULES=\"${ALL_DIR_TO_VIRTUALMODULES_ARR[$i]}\"\n  DIR_AND_VIRTUALMODULES_ARR=($DIR_AND_VIRTUALMODULES);\n  ORIG_DIR=${DIR_AND_VIRTUALMODULES_ARR[0]}\n  DIR=$(upperCamelCasify \"${ORIG_DIR}\")\n  VIRTUALMODULES=${DIR_AND_VIRTUALMODULES_ARR[1]}\n  # Escape any dollar signs\n  VIRTUALMODULES=\"${VIRTUALMODULES//\\\\[^n\\\"]/\\\\\\\\}\"\n  VIRTUALMODULES=\"${VIRTUALMODULES//\\$/\\\\\\$}\"\n  # This one is an array so we take an extra step to strip out [ ] and \"\"\n  echo \"${DIR}_VIRTUALMODULES=\\\"${VIRTUALMODULES}\\\"\" >> \"${GEN_EVERYTHING}\"\ndone\n\n# Raw build config for this target\n# NOTE: This is how you implement config that is an array of strings, that become one line per array entry!\nALL_DIR_TO_RAWBUILDCONFIG=$(printf \"%s\" \"${PARSED}\" | sed -n 's;\\[\"buildDirs\",\"\\([^\"]*\\)\",\"rawBuildConfig\",.*\\][[:space:]]\"*\\(.*\\)\";\\1=\\2;p')\n# Note we DON'T want to remove the quotes. They are inside the strings perhaps.\n# ALL_DIR_TO_RAWBUILDCONFIG=$(printf \"$ALL_DIR_TO_RAWBUILDCONFIG\" | tr -s '[\"],' ' ')\nALL_DIR_TO_RAWBUILDCONFIG=$(printf \"%s\" \"$ALL_DIR_TO_RAWBUILDCONFIG\" | tr -s '\\n' '|')\nIFS=\"|\";\nALL_DIR_TO_RAWBUILDCONFIG_ARR=($ALL_DIR_TO_RAWBUILDCONFIG);\nfor ((i=0; i<${#ALL_DIR_TO_RAWBUILDCONFIG_ARR[@]}; ++i)); do\n  IFS=\"=\";\n  DIR_AND_RAWBUILDCONFIG=\"${ALL_DIR_TO_RAWBUILDCONFIG_ARR[$i]}\"\n  DIR_AND_RAWBUILDCONFIG_ARR=($DIR_AND_RAWBUILDCONFIG);\n  ORIG_DIR=${DIR_AND_RAWBUILDCONFIG_ARR[0]}\n  DIR=$(upperCamelCasify \"${ORIG_DIR}\")\n  RAWBUILDCONFIG=${DIR_AND_RAWBUILDCONFIG_ARR[1]}\n  # Escape any dollar signs\n  # Note we DON'T want to remove the quotes. They are inside the strings perhaps.\n  # RAWBUILDCONFIG=\"${RAWBUILDCONFIG//\\\\[^n\\\"]/\\\\\\\\}\"\n  RAWBUILDCONFIG=\"${RAWBUILDCONFIG//\\$/\\\\\\$}\"\n  # This one is an array so we take an extra step to strip out [ ] and \"\"\n  echo \"${DIR}_RAWBUILDCONFIG=\\$(printf \\\"%s\\\\\\\\n %s\\\" \\\"\\$${DIR}_RAWBUILDCONFIG\\\" \\\"${RAWBUILDCONFIG}\\\")\" >> \"${GEN_EVERYTHING}\"\ndone\n\n# Raw build config for this dune file\n# NOTE: This is how you implement config that is an array of strings, that become one line per array entry!\nALL_DIR_TO_RAWBUILDCONFIGFOOTER=$(printf \"%s\" \"${PARSED}\" | sed -n 's;\\[\"buildDirs\",\"\\([^\"]*\\)\",\"rawBuildConfigFooter\",.*\\][[:space:]]\"*\\(.*\\)\";\\1=\\2;p')\n# Note we DON'T want to remove the quotes. They are inside the strings perhaps.\n# ALL_DIR_TO_RAWBUILDCONFIGFOOTER=$(printf \"$ALL_DIR_TO_RAWBUILDCONFIGFOOTER\" | tr -s '[\"],' ' ')\nALL_DIR_TO_RAWBUILDCONFIGFOOTER=$(printf \"%s\" \"$ALL_DIR_TO_RAWBUILDCONFIGFOOTER\" | tr -s '\\n' '|')\nIFS=\"|\";\nALL_DIR_TO_RAWBUILDCONFIGFOOTER_ARR=($ALL_DIR_TO_RAWBUILDCONFIGFOOTER);\nfor ((i=0; i<${#ALL_DIR_TO_RAWBUILDCONFIGFOOTER_ARR[@]}; ++i)); do\n  IFS=\"=\";\n  DIR_AND_RAWBUILDCONFIGFOOTER=\"${ALL_DIR_TO_RAWBUILDCONFIGFOOTER_ARR[$i]}\"\n  DIR_AND_RAWBUILDCONFIGFOOTER_ARR=($DIR_AND_RAWBUILDCONFIGFOOTER);\n  ORIG_DIR=${DIR_AND_RAWBUILDCONFIGFOOTER_ARR[0]}\n  DIR=$(upperCamelCasify \"${ORIG_DIR}\")\n  RAWBUILDCONFIGFOOTER=${DIR_AND_RAWBUILDCONFIGFOOTER_ARR[1]}\n  # Escape any dollar signs\n  # Note we DON'T want to remove the quotes. They are inside the strings perhaps.\n  # RAWBUILDCONFIGFOOTER=\"${RAWBUILDCONFIGFOOTER//\\\\[^n\\\"]/\\\\\\\\}\"\n  RAWBUILDCONFIGFOOTER=\"${RAWBUILDCONFIGFOOTER//\\$/\\\\\\$}\"\n  # This one is an array so we take an extra step to strip out [ ] and \"\"\n  echo \"${DIR}_RAWBUILDCONFIGFOOTER=\\$(printf \\\"%s\\\\\\\\n %s\\\" \\\"\\$${DIR}_RAWBUILDCONFIGFOOTER\\\" \\\"${RAWBUILDCONFIGFOOTER}\\\")\" >> \"${GEN_EVERYTHING}\"\ndone\n\n# Raw build config for the footer of this targets Dune file.\nALL_DIR_TO_MODES=$(printf \"%s\" \"${PARSED}\" |  sed -n 's;\\[\"buildDirs\",\"\\([^\"]*\\)\",\"modes\"\\][[:space:]]*\\(.*\\);\\1=\\2;p')\nALL_DIR_TO_MODES=$(printf \"$ALL_DIR_TO_MODES\" | tr -s '[\"],' ' ')\nALL_DIR_TO_MODES=$(printf \"%s\" \"$ALL_DIR_TO_MODES\" | tr -s '\\n' '|')\nIFS=\"|\";\nALL_DIR_TO_MODES_ARR=($ALL_DIR_TO_MODES);\nfor ((i=0; i<${#ALL_DIR_TO_MODES_ARR[@]}; ++i)); do\n  IFS=\"=\";\n  DIR_AND_MODES=\"${ALL_DIR_TO_MODES_ARR[$i]}\"\n  DIR_AND_MODES_ARR=($DIR_AND_MODES);\n  ORIG_DIR=${DIR_AND_MODES_ARR[0]}\n  DIR=$(upperCamelCasify \"${ORIG_DIR}\")\n  MODES=${DIR_AND_MODES_ARR[1]}\n  # Escape any dollar signs\n  MODES=\"${MODES//\\\\[^n\\\"]/\\\\\\\\}\"\n  MODES=\"${MODES//\\$/\\\\\\$}\"\n  # This one is an array so we take an extra step to strip out [ ] and \"\"\n  echo \"${DIR}_MODES=\\\"${MODES}\\\"\" >> \"${GEN_EVERYTHING}\"\ndone\n\n\nALL_DIR_TO_OCAMLC_FLAGS=$(printf \"${PARSED}\" | sed -n 's;\\[\"buildDirs\",\"\\([^\"]*\\)\",\"ocamlcFlags\"\\][[:space:]]*\\(.*\\);\\1=\\2;p')\nALL_DIR_TO_OCAMLC_FLAGS=$(printf \"$ALL_DIR_TO_OCAMLC_FLAGS\" | tr -s '[\"],' ' ')\nALL_DIR_TO_OCAMLC_FLAGS=$(printf \"%s\" \"$ALL_DIR_TO_OCAMLC_FLAGS\" | tr -s '\\n' '|')\nIFS=\"|\";\nALL_DIR_TO_OCAMLC_FLAGS_ARR=($ALL_DIR_TO_OCAMLC_FLAGS);\nfor ((i=0; i<${#ALL_DIR_TO_OCAMLC_FLAGS_ARR[@]}; ++i)); do\n  IFS=\"=\";\n  DIR_AND_OCAMLC_FLAGS=\"${ALL_DIR_TO_OCAMLC_FLAGS_ARR[$i]}\"\n  DIR_AND_OCAMLC_FLAGS_ARR=($DIR_AND_OCAMLC_FLAGS);\n  ORIG_DIR=${DIR_AND_OCAMLC_FLAGS_ARR[0]}\n  DIR=$(upperCamelCasify \"${ORIG_DIR}\")\n  FLAGS=${DIR_AND_OCAMLC_FLAGS_ARR[1]}\n  # Escape any dollar signs\n  FLAGS=\"${FLAGS//\\\\[^n\\\"]/\\\\\\\\}\"\n  FLAGS=\"${FLAGS//\\$/\\\\\\$}\"\n  # This one is an array so we take an extra step to strip out [ ] and \"\"\n  echo \"${DIR}_OCAMLC_FLAGS=\\\"${FLAGS}\\\"\" >> \"${GEN_EVERYTHING}\"\ndone\n\nALL_DIR_TO_OCAMLOPT_FLAGS=$(printf \"%s\" \"${PARSED}\" |  sed -n 's;\\[\"buildDirs\",\"\\([^\"]*\\)\",\"ocamloptFlags\"\\][[:space:]]*\\(.*\\);\\1=\\2;p')\nALL_DIR_TO_OCAMLOPT_FLAGS=$(printf \"$ALL_DIR_TO_OCAMLOPT_FLAGS\" | tr -s '[\"],' ' ')\nALL_DIR_TO_OCAMLOPT_FLAGS=$(printf \"%s\" \"$ALL_DIR_TO_OCAMLOPT_FLAGS\" | tr -s '\\n' '|')\nIFS=\"|\";\nALL_DIR_TO_OCAMLOPT_FLAGS_ARR=($ALL_DIR_TO_OCAMLOPT_FLAGS);\nfor ((i=0; i<${#ALL_DIR_TO_OCAMLOPT_FLAGS_ARR[@]}; ++i)); do\n  IFS=\"=\";\n  DIR_AND_OCAMLOPT_FLAGS=\"${ALL_DIR_TO_OCAMLOPT_FLAGS_ARR[$i]}\"\n  DIR_AND_OCAMLOPT_FLAGS_ARR=($DIR_AND_OCAMLOPT_FLAGS);\n  ORIG_DIR=${DIR_AND_OCAMLOPT_FLAGS_ARR[0]}\n  DIR=$(upperCamelCasify \"${ORIG_DIR}\")\n  FLAGS=${DIR_AND_OCAMLOPT_FLAGS_ARR[1]}\n  # Escape any dollar signs\n  FLAGS=\"${FLAGS//\\\\[^n\\\"]/\\\\\\\\}\"\n  FLAGS=\"${FLAGS//\\$/\\\\\\$}\"\n  # This one is an array so we take an extra step to strip out [ ] and \"\"\n  echo \"${DIR}_OCAMLOPT_FLAGS=\\\"${FLAGS}\\\"\" >> \"${GEN_EVERYTHING}\"\ndone\n\nALL_DIR_TO_PREPROCESS=$(printf \"${PARSED}\" | sed -n 's;\\[\"buildDirs\",\"\\([^\"]*\\)\",\"preprocess\"\\][[:space:]]*\\(.*\\);\\1=\\2;p')\nALL_DIR_TO_PREPROCESS=$(printf \"$ALL_DIR_TO_PREPROCESS\" | tr -s '[\"],' ' ')\nALL_DIR_TO_PREPROCESS=$(printf \"%s\" \"$ALL_DIR_TO_PREPROCESS\" | tr -s '\\n' '|')\nIFS=\"|\";\nALL_DIR_TO_PREPROCESS_ARR=($ALL_DIR_TO_PREPROCESS);\nfor ((i=0; i<${#ALL_DIR_TO_PREPROCESS_ARR[@]}; ++i)); do\n  IFS=\"=\";\n  DIR_AND_PREPROCESS=\"${ALL_DIR_TO_PREPROCESS_ARR[$i]}\"\n  DIR_AND_PREPROCESS_ARR=($DIR_AND_PREPROCESS);\n  ORIG_DIR=${DIR_AND_PREPROCESS_ARR[0]}\n  DIR=$(upperCamelCasify \"${ORIG_DIR}\")\n  FLAGS=${DIR_AND_PREPROCESS_ARR[1]}\n  # Escape any dollar signs\n  FLAGS=\"${FLAGS//\\\\[^n\\\"]/\\\\\\\\}\"\n  FLAGS=\"${FLAGS//\\$/\\\\\\$}\"\n  # This one is an array so we take an extra step to strip out [ ] and \"\"\n  echo \"${DIR}_PREPROCESS=\\\"${FLAGS}\\\"\" >> \"${GEN_EVERYTHING}\"\ndone\n\nALL_DIR_TO_C_NAMES=$(printf \"%s\" \"${PARSED}\" | sed -n 's;\\[\"buildDirs\",\"\\([^\"]*\\)\",\"cNames\"\\][[:space:]]*\\(.*\\);\\1=\\2;p')\nALL_DIR_TO_C_NAMES=$(printf \"$ALL_DIR_TO_C_NAMES\" | tr -s '[\"],' ' ')\nALL_DIR_TO_C_NAMES=$(printf \"%s\" \"$ALL_DIR_TO_C_NAMES\" | tr -s '\\n' '|')\nIFS=\"|\";\nALL_DIR_TO_C_NAMES_ARR=($ALL_DIR_TO_C_NAMES);\nfor ((i=0; i<${#ALL_DIR_TO_C_NAMES_ARR[@]}; ++i)); do\n  IFS=\"=\";\n  DIR_AND_C_NAMES=\"${ALL_DIR_TO_C_NAMES_ARR[$i]}\"\n  DIR_AND_C_NAMES_ARR=($DIR_AND_C_NAMES);\n  ORIG_DIR=${DIR_AND_C_NAMES_ARR[0]}\n  DIR=$(upperCamelCasify \"${ORIG_DIR}\")\n  FLAGS=${DIR_AND_C_NAMES_ARR[1]}\n  # This one is an array so we take an extra step to strip out [ ] and \"\"\n  echo \"${DIR}_C_NAMES=\\\"${FLAGS}\\\"\" >> \"${GEN_EVERYTHING}\"\ndone\n\n\n# TODO: If not moving to native, we should make all the other list parsers use\n# this approach instead.\n# Need to achieve the following:\n# ...\n# (public_name console.lib)\n#  (js_of_ocaml (flags (:standard --pretty))\n#              (javascript_files nativeChannels.js))\n#                                                                                                                                                                  [\"                \"]                          \",\" (not escpaed quote)       Remaining quotes?\n# OSX doen't have extended or pattern regexes. Need multiple pipes.\n# Two parallel arrays with the same length\nALL_DIRS_JSOO_FLAGS=$(printf \"%s\" \"${PARSED}\" |  sed -n 's;\\[\"buildDirs\",\"\\([^\"]*\\)\",\"jsooFlags\"\\][[:space:]]*\\(.*\\);\\2;p' | sed 's;\\[\";;g' | sed 's;\\([^\\\\]\\)\"\\];\\1;g' | sed 's;\\([^\\\\]\\)\",\";\\1 ;g')\nALL_DIRS_WITH_JSOO_FLAGS=$(printf \"%s\" \"${PARSED}\" |  sed -n 's;\\[\"buildDirs\",\"\\([^\"]*\\)\",\"jsooFlags\"\\][[:space:]]*\\(.*\\);\\1;p')\nIFS=$'\\n'\nALL_DIRS_JSOO_FLAGS_ARR=($ALL_DIRS_JSOO_FLAGS);\nALL_DIRS_WITH_JSOO_FLAGS_ARR=($ALL_DIRS_WITH_JSOO_FLAGS);\nfor ((i=0; i<${#ALL_DIRS_WITH_JSOO_FLAGS_ARR[@]}; ++i)); do\n  ORIG_DIR=\"${ALL_DIRS_WITH_JSOO_FLAGS_ARR[$i]}\"\n  DIR=$(upperCamelCasify \"${ORIG_DIR}\")\n  FLAGS=\"${ALL_DIRS_JSOO_FLAGS_ARR[$i]}\"\n  # Escape any dollar signs\n  FLAGS=\"${FLAGS//\\\\[^n\\\"]/\\\\\\\\}\"\n  FLAGS=\"${FLAGS//\\$/\\\\\\$}\"\n  # This one is an array so we take an extra step to strip out [ ] and \"\"\n  echo \"${DIR}_JSOO_FLAGS=\\\"${FLAGS}\\\"\" >> \"${GEN_EVERYTHING}\"\ndone\n\nALL_DIR_TO_JSOO_FILES=$(printf \"%s\" \"${PARSED}\" | sed -n 's;\\[\"buildDirs\",\"\\([^\"]*\\)\",\"jsooFiles\"\\][[:space:]]*\\(.*\\);\\1=\\2;p')\nALL_DIR_TO_JSOO_FILES=$(printf \"$ALL_DIR_TO_JSOO_FILES\" | tr -s '[\"],' ' ')\nALL_DIR_TO_JSOO_FILES=$(printf \"%s\" \"$ALL_DIR_TO_JSOO_FILES\" | tr -s '\\n' '|')\nIFS=\"|\";\nALL_DIR_TO_JSOO_FILES_ARR=($ALL_DIR_TO_JSOO_FILES);\nfor ((i=0; i<${#ALL_DIR_TO_JSOO_FILES_ARR[@]}; ++i)); do\n  IFS=\"=\";\n  DIR_AND_JSOO_FILES=\"${ALL_DIR_TO_JSOO_FILES_ARR[$i]}\"\n  DIR_AND_JSOO_FILES_ARR=($DIR_AND_JSOO_FILES);\n  ORIG_DIR=${DIR_AND_JSOO_FILES_ARR[0]}\n  DIR=$(upperCamelCasify \"${ORIG_DIR}\")\n  FLAGS=${DIR_AND_JSOO_FILES_ARR[1]}\n  # This one is an array so we take an extra step to strip out [ ] and \"\"\n  echo \"${DIR}_JSOO_FILES=\\\"${FLAGS}\\\"\" >> \"${GEN_EVERYTHING}\"\ndone\n\n# Print a summary of each named target.\nfor ((i=0; i<${#ALL_DIR_TO_NAME_ARR[@]}; ++i)); do\n  IFS=\"=\";\n  DIR_AND_NAME=\"${ALL_DIR_TO_NAME_ARR[$i]}\"\n  DIR_AND_NAME_ARR=($DIR_AND_NAME);\n  ORIG_DIR=${DIR_AND_NAME_ARR[0]}\n  DIR=$(upperCamelCasify \"${ORIG_DIR}\")\n  NAME=${DIR_AND_NAME_ARR[1]}\n  if [[ \"$i\" == $(expr \"${#ALL_DIR_TO_NAME_ARR[@]}\" - \"1\") ]]; then\n    IS_LAST=\"last\"\n  else\n    IS_LAST=\"not-last\"\n  fi\n\n  # We won't print the directories if running in build mode, just to make the\n  # output cleaner for the most common builds, and to save a few milliseconds.\n  # Since MODE is set at actual runtime (not in this script) we have to defer\n  # evaluation of MODE.\n  if [[ \"${NAME}\" == *.exe ]]; then\n    # Lazy evaluation of mode - it's not yet known.\n    echo '[ \"${MODE}\" != \"build\" ] && ' >> \"$GEN_EVERYTHING\"\n    echo \"printDirectory \\\"$ORIG_DIR\\\" \\\"name:    $NAME\\\" \\\"main:    \\${${DIR}_MAIN_MODULE:-\\$DEFAULT_MAIN_MODULE_NAME}\\\" \\\"require:\\$${DIR}_REQUIRE\\\"\" \"$IS_LAST\" >> \"$GEN_EVERYTHING\"\n  else\n    if [[ \"${NAME}\" == \"${PACKAGE_NAME}\"\\.* ]]; then\n      echo '[ \"${MODE}\" != \"build\" ] && ' >> \"$GEN_EVERYTHING\"\n      echo \"printDirectory \\\"$ORIG_DIR\\\" \\\"library name: $NAME\\\" \\\"namespace:    \\$${DIR}_NAMESPACE\\\" \\\"require:     \\$${DIR}_REQUIRE\\\"\" \"$IS_LAST\" >> \"$GEN_EVERYTHING\"\n    else\n      # Errors will be caught later\n      true\n    fi\n  fi\ndone\n\n# Perform the updates/refresh per target or build.\nfor ((i=0; i<${#ALL_DIR_TO_NAME_ARR[@]}; ++i)); do\n  IFS=\"=\";\n  DIR_AND_NAME=\"${ALL_DIR_TO_NAME_ARR[$i]}\"\n  DIR_AND_NAME_ARR=($DIR_AND_NAME);\n  ORIG_DIR=${DIR_AND_NAME_ARR[0]}\n  DIR=$(upperCamelCasify \"${ORIG_DIR}\")\n  NAME=${DIR_AND_NAME_ARR[1]}\n\n  if [[ \"${NAME}\" == \"\" ]]; then\n    printf \"\\\\n%sMisconfigured package.json:%s\" \"${RED}${BOLD}\" \"${RESET}\"\n    printf \"\\\\n  - Missing/empty name for buildDirs/%s\\\\n\\\\n\" \"${ORIG_DIR}\"\n    exit 1\n  fi\n  if [[ \"${NAME}\" == *.exe ]]; then\n    genBin \"$DIR\" \"$NAME\" \"$ORIG_DIR\"\n  else\n    if [[ \"${NAME}\" == \"${PACKAGE_NAME}\"\\.* ]]; then\n      genLib \"$DIR\" \"$NAME\" \"$ORIG_DIR\"\n    else\n      printf \"\\\\n%sMisconfigured package.json:%s\" \"${RED}${BOLD}\" \"${RESET}\"\n      printf \"\\\\n\"\n      printf \"\\\\n  buildDirs.%s.name (\\\"%s\\\")\\\\n\" \"${ORIG_DIR}\" \"${NAME}\"\n      printf \"\\\\n  %s- Name should be any-name.exe to build a binary or%s\" \"${YELLOW}${BOLD}\" \"$RESET\"\n      printf \"\\\\n  %s- Name should be %s.suffix to build a library, where 'suffix' is anything but 'exe'%s\\\\n\\\\n\" \"${YELLOW}${BOLD}\" \"${PACKAGE_NAME}\" \"$RESET\"\n      exit 1\n    fi\n  fi\ndone\nIFS=$OIFS;\n\ncat \"${PESY_DIR}/pesy-footer.template.sh\" >> \"${GEN_EVERYTHING}\"\n\n\"${GEN_EVERYTHING}\"\n"
  },
  {
    "path": "npm-cli/v0.4.4/pesy-JSON.sh",
    "content": "#!/bin/sh\n\nthrow() {\n  echo \"$*\" >&2\n  exit 1\n}\n\nBRIEF=0\nLEAFONLY=0\nPRUNE=0\nNO_HEAD=0\nNORMALIZE_SOLIDUS=0\n\nusage() {\n  echo\n  echo \"Usage: JSON.sh [-b] [-l] [-p] [-s] [-h]\"\n  echo\n  echo \"-p - Prune empty. Exclude fields with empty values.\"\n  echo \"-l - Leaf only. Only show leaf nodes, which stops data duplication.\"\n  echo \"-b - Brief. Combines 'Leaf only' and 'Prune empty' options.\"\n  echo \"-n - No-head. Do not show nodes that have no path (lines that start with []).\"\n  echo \"-s - Remove escaping of the solidus symbol (straight slash).\"\n  echo \"-h - This help text.\"\n  echo\n}\n\nparse_options() {\n  set -- \"$@\"\n  local ARGN=$#\n  while [ \"$ARGN\" -ne 0 ]\n  do\n    case $1 in\n      -h) usage\n          exit 0\n      ;;\n      -b) BRIEF=1\n          LEAFONLY=1\n          PRUNE=1\n      ;;\n      -l) LEAFONLY=1\n      ;;\n      -p) PRUNE=1\n      ;;\n      -n) NO_HEAD=1\n      ;;\n      -s) NORMALIZE_SOLIDUS=1\n      ;;\n      ?*) echo \"ERROR: Unknown option.\"\n          usage\n          exit 0\n      ;;\n    esac\n    shift 1\n    ARGN=$((ARGN-1))\n  done\n}\n\nawk_egrep () {\n  local pattern_string=$1\n\n  gawk '{\n    while ($0) {\n      start=match($0, pattern);\n      token=substr($0, start, RLENGTH);\n      print token;\n      $0=substr($0, start+RLENGTH);\n    }\n  }' pattern=\"$pattern_string\"\n}\n\ntokenize () {\n  local GREP\n  local ESCAPE\n  local CHAR\n\n  if echo \"test string\" | egrep -ao --color=never \"test\" >/dev/null 2>&1\n  then\n    GREP='egrep -ao --color=never'\n  else\n    GREP='egrep -ao'\n  fi\n\n  if echo \"test string\" | egrep -o \"test\" >/dev/null 2>&1\n  then\n    ESCAPE='(\\\\[^u[:cntrl:]]|\\\\u[0-9a-fA-F]{4})'\n    CHAR='[^[:cntrl:]\"\\\\]'\n  else\n    GREP=awk_egrep\n    ESCAPE='(\\\\\\\\[^u[:cntrl:]]|\\\\u[0-9a-fA-F]{4})'\n    CHAR='[^[:cntrl:]\"\\\\\\\\]'\n  fi\n\n  local STRING=\"\\\"$CHAR*($ESCAPE$CHAR*)*\\\"\"\n  local NUMBER='-?(0|[1-9][0-9]*)([.][0-9]*)?([eE][+-]?[0-9]*)?'\n  local KEYWORD='null|false|true'\n  local SPACE='[[:space:]]+'\n\n  # Force zsh to expand $A into multiple words\n  local is_wordsplit_disabled=$(unsetopt 2>/dev/null | grep -c '^shwordsplit$')\n  if [ $is_wordsplit_disabled != 0 ]; then setopt shwordsplit; fi\n  $GREP \"$STRING|$NUMBER|$KEYWORD|$SPACE|.\" | egrep -v \"^$SPACE$\"\n  if [ $is_wordsplit_disabled != 0 ]; then unsetopt shwordsplit; fi\n}\n\nparse_array () {\n  local index=0\n  local ary=''\n  read -r token\n  case \"$token\" in\n    ']') ;;\n    *)\n      while :\n      do\n        parse_value \"$1\" \"$index\"\n        index=$((index+1))\n        ary=\"$ary\"\"$value\" \n        read -r token\n        case \"$token\" in\n          ']') break ;;\n          ',') ary=\"$ary,\" ;;\n          *) throw \"EXPECTED , or ] GOT ${token:-EOF}\" ;;\n        esac\n        read -r token\n      done\n      ;;\n  esac\n  [ \"$BRIEF\" -eq 0 ] && value=$(printf '[%s]' \"$ary\") || value=\n  :\n}\n\nparse_object () {\n  local key\n  local obj=''\n  read -r token\n  case \"$token\" in\n    '}') ;;\n    *)\n      while :\n      do\n        case \"$token\" in\n          '\"'*'\"') key=$token ;;\n          *) throw \"EXPECTED string GOT ${token:-EOF}\" ;;\n        esac\n        read -r token\n        case \"$token\" in\n          ':') ;;\n          *) throw \"EXPECTED : GOT ${token:-EOF}\" ;;\n        esac\n        read -r token\n        parse_value \"$1\" \"$key\"\n        obj=\"$obj$key:$value\"        \n        read -r token\n        case \"$token\" in\n          '}') break ;;\n          ',') obj=\"$obj,\" ;;\n          *) throw \"EXPECTED , or } GOT ${token:-EOF}\" ;;\n        esac\n        read -r token\n      done\n    ;;\n  esac\n  [ \"$BRIEF\" -eq 0 ] && value=$(printf '{%s}' \"$obj\") || value=\n  :\n}\n\nparse_value () {\n  local jpath=\"${1:+$1,}$2\" isleaf=0 isempty=0 print=0\n  case \"$token\" in\n    '{') parse_object \"$jpath\" ;;\n    '[') parse_array  \"$jpath\" ;;\n    # At this point, the only valid single-character tokens are digits.\n    ''|[!0-9]) throw \"EXPECTED value GOT ${token:-EOF}\" ;;\n    *) value=$token\n       # if asked, replace solidus (\"\\/\") in json strings with normalized value: \"/\"\n       [ \"$NORMALIZE_SOLIDUS\" -eq 1 ] && value=$(echo \"$value\" | sed 's#\\\\/#/#g')\n       isleaf=1\n       [ \"$value\" = '\"\"' ] && isempty=1\n       ;;\n  esac\n  [ \"$value\" = '' ] && return\n  [ \"$NO_HEAD\" -eq 1 ] && [ -z \"$jpath\" ] && return\n\n  [ \"$LEAFONLY\" -eq 0 ] && [ \"$PRUNE\" -eq 0 ] && print=1\n  [ \"$LEAFONLY\" -eq 1 ] && [ \"$isleaf\" -eq 1 ] && [ $PRUNE -eq 0 ] && print=1\n  [ \"$LEAFONLY\" -eq 0 ] && [ \"$PRUNE\" -eq 1 ] && [ \"$isempty\" -eq 0 ] && print=1\n  [ \"$LEAFONLY\" -eq 1 ] && [ \"$isleaf\" -eq 1 ] && \\\n    [ $PRUNE -eq 1 ] && [ $isempty -eq 0 ] && print=1\n  [ \"$print\" -eq 1 ] && printf \"[%s]\\t%s\\n\" \"$jpath\" \"$value\"\n  :\n}\n\nparse () {\n  read -r token\n  parse_value\n  read -r token\n  case \"$token\" in\n    '') ;;\n    *) throw \"EXPECTED EOF GOT $token\" ;;\n  esac\n}\n\nif ([ \"$0\" = \"$BASH_SOURCE\" ] || ! [ -n \"$BASH_SOURCE\" ]);\nthen\n  parse_options \"$@\"\n  tokenize | parse\nfi\n\n# vi: expandtab sw=2 ts=2\n"
  },
  {
    "path": "npm-cli/v0.4.4/pesy-README.template.md",
    "content": "# <PACKAGE_NAME_FULL>\n\n\n[![CircleCI](https://circleci.com/gh/yourgithubhandle/<PACKAGE_NAME>/tree/master.svg?style=svg)](https://circleci.com/gh/yourgithubhandle/<PACKAGE_NAME>/tree/master)\n\n\n**Contains the following libraries and executables:**\n\n```\n<PACKAGE_NAME_FULL>@0.0.0\n│\n├─test/\n│   name:    Test<PACKAGE_NAME_UPPER_CAMEL>.exe\n│   main:    Test<PACKAGE_NAME_UPPER_CAMEL>\n│   require: <PUBLIC_LIB_NAME>\n│\n├─library/\n│   library name: <PUBLIC_LIB_NAME>\n│   namespace:    <PACKAGE_NAME_UPPER_CAMEL>\n│   require:\n│\n└─executable/\n    name:    <PACKAGE_NAME_UPPER_CAMEL>App.exe\n    main:    <PACKAGE_NAME_UPPER_CAMEL>App\n    require: <PUBLIC_LIB_NAME>\n```\n\n## Developing:\n\n```\nnpm install -g esy\ngit clone <this-repo>\nesy install\nesy build\n```\n\n## Running Binary:\n\nAfter building the project, you can run the main binary that is produced.\n\n```\nesy x <PACKAGE_NAME_UPPER_CAMEL>App.exe \n```\n\n## Running Tests:\n\n```\n# Runs the \"test\" command in `package.json`.\nesy test\n```\n"
  },
  {
    "path": "npm-cli/v0.4.4/pesy-create.sh",
    "content": "#!/bin/bash\n\nset -e\nset -u\n\nuppers=\"ABCDEFGHIJKLMNOPQRSTUVWXYZ\"\nlowers=\"abcdefghijklmnopqrstuvwxyz\"\nwordBoundaries=\"._-\"\n\n#usage: camelcasify \"some_stringHere\" -> \"some-string-here\"\n#usage: camelcasify \"domHTML\" -> \"dom-html\"\n#usage: camelcasify \"domHtML\" -> \"dom-ht-ml\"\n#usage: camelcasify \"dom-HTML\" -> \"dom-html\"\nlowerHyphenate(){\n  OUTPUT=\"\"\n  i=0\n  prevWasUpper=\"true\" # Causes leading uppercase\n  while ([ $i -lt ${#1} ]) do\n    CUR=${1:$i:1}\n    case $uppers in\n        *$CUR*)\n          CUR=${uppers%$CUR*};\n          if [[ \"${prevWasUpper}\" == \"false\" ]]; then\n            OUTPUT=\"${OUTPUT}-${lowers:${#CUR}:1}\"\n          else\n            # No hyphen\n            OUTPUT=\"${OUTPUT}${lowers:${#CUR}:1}\"\n          fi\n          prevWasUpper=\"true\" # Causes leading uppercase\n          ;;\n        *)\n          OUTPUT=\"${OUTPUT}$CUR\"\n          prevWasUpper=\"false\" # Causes leading uppercase\n          ;;\n    esac\n    i=$((i+1))\n  done\n  echo \"${OUTPUT}\"\n}\n\nfunction printDirectory() {\n  PREFIX=\"\"\n  if [[ \"$IS_LAST\" == \"last\" ]]; then\n    printf \"└─%s/\\\\n\" \"$DIR\"\n    PREFIX=\"    \"\n  else\n    printf \"├─%s/\\\\n\" \"$DIR\"\n    PREFIX=\"│   \"\n  fi\n  printf \"%s%s\\\\n\" \"$PREFIX\" \"$NAME\"\n  printf \"%s%s\\\\n\" \"$PREFIX\" \"$NAMESPACE\"\n  if [ -z \"$REQUIRE\" ]; then\n    true\n  else\n    if [ \"$REQUIRE\" != \" \" ]; then\n      printf   \"%s%s\\\\n\" \"$PREFIX\" \"$REQUIRE\"\n    fi\n  fi\n}\n\n\n# https://stackoverflow.com/a/677212\n# We want to check if esy has been installed globally, but only when running\n# naked on the command line (just `pesy`).\nif hash esy 2>/dev/null; then\n  true\nelse\n  printf \"\\\\n%sERROR: You haven't installed esy globally. First install esy then try again.%s\" \"${RED}${BOLD}\" \"${RESET}\"\n  printf \"\\\\n\"\n  printf \"\\\\n    npm install -g esy\"\n  printf \"\\\\n\\\\n\"\n  exit 1\nfi\n\nHAS_JSON=\"false\"\nif [ -f  \"${PWD}/package.json\" ]; then\n  HAS_JSON=\"true\"\nelse\n  if [ -f  \"${PWD}/esy.json\" ]; then\n    HAS_JSON=\"true\"\n  fi\nfi\nif [[ \"$HAS_JSON\" == \"true\" ]]; then\n  printf \"\\\\n%sIncorrect Usage:%s\" \"${RED}${BOLD}\" \"${RESET}\"\n  printf \"\\\\n\"\n  printf \"\\\\npesy should only be run via 'esy pesy', unless you want to create a new project\"\n  printf \"\\\\nin a fresh directory. This does not appear to be a fresh directory because\"\n  printf \"\\\\nit contains a package.json or esy.json file.\\n\\n\"\n  printf \"\\\\nType esy --help for more assistance.\\n\\n\"\n  exit 1\nfi\n\nCUR_DIR_NAME=${PWD##*/}\nCUR_DIR_NAME_KEBAB=$(lowerHyphenate \"${CUR_DIR_NAME}\")\nprintf \"\\\\n%sCreate new package in the CURRENT DIRECTORY %s?%s\\\\n\" \"${BOLD}\" \"${PWD}\" \"${RESET}\"\nprintf \"\\\\n\"\nprintf \"Enter package name (lowercase/hyphens) [default %s]:\" \"${CUR_DIR_NAME_KEBAB}\"\nread ANSWER\nif [[ \"${ANSWER}\" == \"\" ]]; then\n  ANSWER_KEBAB=\"${CUR_DIR_NAME_KEBAB}\"\nelse\n  ANSWER_KEBAB=$(lowerHyphenate \"${ANSWER}\")\n  if [[ \"$ANSWER\" != \"${ANSWER_KEBAB}\" ]]; then\n    printf \"\\\\n%sPackage names should only consist of lower case and hyphens. Pesy is going to adjust the name to%s:%s\" \"${YELLOW}${BOLD}\" \"${RESET}\" \"${BOLD}${ANSWER_KEBAB}${RESET}\"\n  fi\nfi\nPACKAGE_NAME_FULL=\"${ANSWER_KEBAB}\"\n# Strip off any scope like @esy-ocaml/foo-package.\nPACKAGE_NAME=\"${PACKAGE_NAME_FULL##*/}\"\n\n# https://stackoverflow.com/a/8952274\nsource \"${PESY_DIR}/pesy-name-utils.sh\"\n\n# Gnu uppercasing extensions to sed don't exist on mac.\nPACKAGE_NAME_UPPER_CAMEL=$(upperCamelCasify \"${PACKAGE_NAME}\")\nPUBLIC_LIB_NAME=\"${PACKAGE_NAME}.lib\"\n\nVERSION=\"0.0.0\"\nsed  -e \"s;<PACKAGE_NAME_FULL>;${PACKAGE_NAME_FULL};g; s;<VERSION>;${VERSION};g; s;<PUBLIC_LIB_NAME>;${PUBLIC_LIB_NAME};g; s;<PACKAGE_NAME_UPPER_CAMEL>;${PACKAGE_NAME_UPPER_CAMEL};g\" \"${PESY_DIR}/pesy-package.template.json\"  >> \"${PWD}/package.json\"\n\n\nmkdir -p \"${PWD}/executable/\"\nprintf \"%s;\\\\n\" \"${PACKAGE_NAME_UPPER_CAMEL}.Util.foo()\"                   >> \"${PWD}/executable/${PACKAGE_NAME_UPPER_CAMEL}App.re\"\n\nmkdir -p \"${PWD}/library/\"\nprintf \"let foo = () => print_endline(\\\"Hello\\\");\\\\n\"                   >> \"${PWD}/library/Util.re\"\n\nmkdir -p \"${PWD}/test/\"\nprintf \"%s;\\\\n\" \"${PACKAGE_NAME_UPPER_CAMEL}.Util.foo()\"                   >> \"${PWD}/test/Test${PACKAGE_NAME_UPPER_CAMEL}.re\"\nprintf \"print_endline(\\\"Add Your Test Cases Here\\\");\\\\n\"                   >> \"${PWD}/test/Test${PACKAGE_NAME_UPPER_CAMEL}.re\"\n\nif [ -f  \"${PWD}/azure-pipelines.yml\" ]; then\n  printf \"%s-azure-pipelines.yml already exists. Skipping azure-pipelines.yml generation.%s\\\\n\" \"${YELLOW}\" \"${RESET}\"\nelse\n  mkdir -p \"${PWD}/.ci\"\n  cp \"${PESY_DIR}/azure-ci-template/azure-pipelines.yml\" \"${PWD}/azure-pipelines.yml\"\n  sed  -e \"s;<PACKAGE_NAME_FULL>;${PACKAGE_NAME_FULL};g; s;<PACKAGE_NAME>;${PACKAGE_NAME};g; s;<PUBLIC_LIB_NAME>;${PUBLIC_LIB_NAME};g; s;<PACKAGE_NAME_UPPER_CAMEL>;${PACKAGE_NAME_UPPER_CAMEL};g\" \"${PESY_DIR}/azure-ci-template/esy-build-steps.template.yml\"  >> \"${PWD}/.ci/esy-build-steps.yml\"\n  cp \"${PESY_DIR}/azure-ci-template/publish-build-cache.yml\" \"${PWD}/.ci/publish-build-cache.yml\"\n  cp \"${PESY_DIR}/azure-ci-template/restore-build-cache.yml\" \"${PWD}/.ci/restore-build-cache.yml\"\nfi\n\nif [ -f  \"${PWD}/README.md\" ]; then\n  printf \"%s-README.md already exists. Skipping README generation.%s\\\\n\" \"${YELLOW}\" \"${RESET}\"\nelse\n  sed  -e \"s;<PACKAGE_NAME_FULL>;${PACKAGE_NAME_FULL};g; s;<PACKAGE_NAME>;${PACKAGE_NAME};g; s;<PUBLIC_LIB_NAME>;${PUBLIC_LIB_NAME};g; s;<PACKAGE_NAME_UPPER_CAMEL>;${PACKAGE_NAME_UPPER_CAMEL};g\" \"${PESY_DIR}/pesy-README.template.md\"  >> \"${PWD}/README.md\"\nfi\n\nif [ -f  \"${PWD}/.gitignore\" ]; then\n  printf \"%s-.gitignore already exists. Skipping .gitignore generation.%s\\\\n\" \"${YELLOW}\" \"${RESET}\"\nelse\n  sed  -e \"s;<PACKAGE_NAME>;${PACKAGE_NAME};g; s;<PUBLIC_LIB_NAME>;${PUBLIC_LIB_NAME};g; s;<PACKAGE_NAME_UPPER_CAMEL>;${PACKAGE_NAME_UPPER_CAMEL};g\" \"${PESY_DIR}/pesy-gitignore.template\"  >> \"${PWD}/.gitignore\"\nfi\n\nprintf \"\\\\n%s%s package.json created. Running 'esy install' and 'esy pesy'\\\\n\\\\n%s\" \"${BOLD}\"  \"${PACKAGE_NAME_FULL}@${VERSION}\" \"${RESET}\"\n"
  },
  {
    "path": "npm-cli/v0.4.4/pesy-footer.template.sh",
    "content": "if [ -f  \"${cur__root}/dune\" ]; then\n  true\nelse\n  BUILD_STALE_PROBLEM=\"true\"\n  notifyUser\n  if [ \"${MODE}\" == \"build\" ]; then\n    printf \"    □  Update ./dune to ignore node_modules\\\\n\"\n  else\n    printf \"    %s☒%s  Update ./dune to ignore node_modules\\\\n\" \"${BOLD}${GREEN}\" \"${RESET}\"\n    printf \"(dirs (:standard \\\\ node_modules \\\\ _esy))\" > \"${cur__root}/dune\"\n  fi\nfi\n\nif [ -f  \"${cur__root}/${PACKAGE_NAME}.opam\" ]; then\n  true\nelse\n  BUILD_STALE_PROBLEM=\"true\"\n  notifyUser\n  if [ \"${MODE}\" == \"build\" ]; then\n    printf \"    □  Add %s\\\\n\" \"${PACKAGE_NAME}.opam\"\n  else\n    printf \"    %s☒%s  Add %s\\\\n\" \"${BOLD}${GREEN}\" \"${RESET}\" \"${PACKAGE_NAME}.opam\" \n    touch \"${cur__root}/${PACKAGE_NAME}.opam\"\n  fi\nfi\n\nif [ -f  \"${cur__root}/dune-project\" ]; then\n  true\nelse\n  BUILD_STALE_PROBLEM=\"true\"\n  notifyUser\n  if [ \"${MODE}\" == \"build\" ]; then\n    printf \"    □  Add a ./dune-project\\\\n\"\n  else\n    printf \"    %s☒%s  Add a ./dune-project\\\\n\" \"${BOLD}${GREEN}\" \"${RESET}\"\n    printf \"(lang dune 1.6)\\\\n (name %s)\" \"${PACKAGE_NAME}\" > \"${cur__root}/dune-project\"\n  fi\nfi\n\n\nif [ \"${MODE}\" == \"build\" ]; then\n  if [ \"${BUILD_STALE_PROBLEM}\" == \"true\" ]; then\n    printf \"\\\\n  %sTo perform those updates and build run:%s\\n\\n\" \"${BOLD}${YELLOW}\" \"${RESET}\"\n    printf \"    esy pesy\\\\n\\\\n\\\\n\\\\n\"\n    exit 1\n  else\n    # If you list a refmterr as a dev dependency, we'll use it!\n    BUILD_FAILED=\"\"\n    if hash refmterr 2>/dev/null; then\n      refmterr dune build -p \"${PACKAGE_NAME}\" || BUILD_FAILED=\"true\"\n    else\n      dune build -p \"${PACKAGE_NAME}\" || BUILD_FAILED=\"true\"\n    fi\n    if [ -z \"$BUILD_FAILED\" ]; then\n      printf \"\\\\n%s  Build Succeeded!%s \" \"${BOLD}${GREEN}\" \"${RESET}\"\n      if [ -z \"$LAST_EXE_NAME\" ]; then\n        printf \"\\\\n\\\\n\"\n        true\n      else\n        # If we built an EXE\n        printf \"%sTo test a binary:%s\\\\n\\\\n\" \"${BOLD}\" \"${RESET}\"\n        printf \"      esy x %s\\\\n\\\\n\\\\n\" \"${LAST_EXE_NAME}\"\n      fi\n      true\n    else\n      exit 1\n    fi\n  fi\nelse\n  # In update mode.\n  if [ \"${BUILD_STALE_PROBLEM}\" == \"true\" ]; then\n    printf \"\\\\n  %sUpdated!%s %sNow run:%s\\\\n\\\\n\" \"${BOLD}${GREEN}\" \"${RESET}\" \"${BOLD}\" \"${RESET}\"\n    printf \"    esy\\\\n\\\\n\\\\n\"\n  else\n    printf \"\\\\n  %sAlready up to date!%s %sNow run:%s\\\\n\\\\n\" \"${BOLD}${GREEN}\" \"${RESET}\" \"${BOLD}\" \"${RESET}\"\n    printf \"      esy\\\\n\\\\n\\\\n\"\n  fi\nfi\n\n"
  },
  {
    "path": "npm-cli/v0.4.4/pesy-genBin.template.sh",
    "content": "BIN_DIR=\"${cur__root}/<ORIG_DIR>\"\nBIN_DUNE_FILE=\"${BIN_DIR}/dune\"\n# FOR BINARY IN DIRECTORY <DIR>\n<DIR>_MAIN_MODULE=\"${<DIR>_MAIN_MODULE:-$DEFAULT_MAIN_MODULE_NAME}\"\n\n<DIR>_MAIN_MODULE_NAME=\"${<DIR>_MAIN_MODULE%%.*}\"\n# https://stackoverflow.com/a/965072\nif [ \"$<DIR>_MAIN_MODULE_NAME\"==\"$<DIR>_MAIN_MODULE\" ]; then\n  # If they did not specify an extension, we'll assume it is .re\n  <DIR>_MAIN_MODULE_FILENAME=\"${<DIR>_MAIN_MODULE}.re\"\nelse\n  <DIR>_MAIN_MODULE_FILENAME=\"${<DIR>_MAIN_MODULE}\"\nfi\n\nif [ -f  \"${BIN_DIR}/${<DIR>_MAIN_MODULE_FILENAME}\" ]; then\n  true\nelse\n  BUILD_STALE_PROBLEM=\"true\"\n  notifyUser\n  echo \"\"\n  if [ \"${MODE}\" == \"build\" ]; then\n    printf \"    □  Generate %s main module\\\\n\" \"${<DIR>_MAIN_MODULE_FILENAME}\"\n  else\n    printf \"    %s☒%s  Generate %s main module\\\\n\" \"${BOLD}${GREEN}\" \"${RESET}\" \"${<DIR>_MAIN_MODULE_FILENAME}\"\n    mkdir -p \"${BIN_DIR}\"\n    printf \"print_endline(\\\"Hello!\\\");\" > \"${BIN_DIR}/${<DIR>_MAIN_MODULE_FILENAME}\"\n  fi\nfi\n\nif [ -d \"${BIN_DIR}\" ]; then\n  LAST_EXE_NAME=\"<EXE_NAME>\"\n  BIN_DUNE_EXISTING_CONTENTS=\"\"\n  if [ -f \"${BIN_DUNE_FILE}\" ]; then\n    BIN_DUNE_EXISTING_CONTENTS=$(<\"${BIN_DUNE_FILE}\")\n  else\n    BIN_DUNE_EXISTING_CONTENTS=\"\"\n  fi\n  BIN_DUNE_CONTENTS=\"\"\n  BIN_DUNE_CONTENTS=$(printf \"%s\\\\n%s\" \"${BIN_DUNE_CONTENTS}\" \"; !!!! This dune file is generated from the package.json file by pesy. If you modify it by hand\")\n  BIN_DUNE_CONTENTS=$(printf \"%s\\\\n%s\" \"${BIN_DUNE_CONTENTS}\" \"; !!!! your changes will be undone! Instead, edit the package.json and then rerun 'esy pesy' at the project root.\")\n  BIN_DUNE_CONTENTS=$(printf \"%s\\\\n%s %s\" \"${BIN_DUNE_CONTENTS}\" \"; !!!! If you want to stop using pesy and manage this file by hand, change package.json's 'esy.build' command to: refmterr dune build -p \" \"${cur__name}\")\n  BIN_DUNE_CONTENTS=$(printf \"%s\\\\n%s\" \"${BIN_DUNE_CONTENTS}\" \"(executable\")\n  BIN_DUNE_CONTENTS=$(printf \"%s\\\\n %s\" \"${BIN_DUNE_CONTENTS}\" \"  ; The entrypoint module\")\n  BIN_DUNE_CONTENTS=$(printf \"%s\\\\n %s\" \"${BIN_DUNE_CONTENTS}\" \"  (name ${<DIR>_MAIN_MODULE_NAME})  ;  From package.json main field\")\n  BIN_DUNE_CONTENTS=$(printf \"%s\\\\n %s\" \"${BIN_DUNE_CONTENTS}\" \"  ; The name of the executable (runnable via esy x <EXE_NAME>) \")\n  BIN_DUNE_CONTENTS=$(printf \"%s\\\\n %s\" \"${BIN_DUNE_CONTENTS}\" \"  (public_name <EXE_NAME>)  ;  From package.json name field\")\n\n  if [ -z \"${<DIR>_JSOO_FLAGS}\" ] && [ -z \"${<DIR>_JSOO_FILES}\" ]; then\n    # No jsoo flags whatsoever\n    true\n  else\n    BIN_DUNE_CONTENTS=$(printf \"%s\\\\n %s\" \"${BIN_DUNE_CONTENTS}\" \"  (js_of_ocaml \")\n    if [ ! -z \"${<DIR>_JSOO_FLAGS}\" ]; then\n      BIN_DUNE_CONTENTS=$(printf \"%s\\\\n %s\\\\n\" \"${BIN_DUNE_CONTENTS}\" \"    (flags (${<DIR>_JSOO_FLAGS}))  ; From package.json jsooFlags field\")\n    fi\n    if [ ! -z \"${<DIR>_JSOO_FILES}\" ]; then\n      BIN_DUNE_CONTENTS=$(printf \"%s\\\\n %s\\\\n\" \"${BIN_DUNE_CONTENTS}\" \"    (javascript_files ${<DIR>_JSOO_FILES})  ; From package.json jsooFiles field\")\n    fi\n    BIN_DUNE_CONTENTS=$(printf \"%s\\\\n%s\" \"${BIN_DUNE_CONTENTS}\" \"   )\")\n  fi\n  if [ ! -z \"${<DIR>_REQUIRE}\" ]; then\n    BIN_DUNE_CONTENTS=$(printf \"%s\\\\n %s\\\\n\" \"${BIN_DUNE_CONTENTS}\" \"  (libraries ${<DIR>_REQUIRE}) ;  From package.json require field (array of strings)\")\n  fi\n  if [ ! -z \"${<DIR>_FLAGS}\" ]; then\n    BIN_DUNE_CONTENTS=$(printf \"%s\\\\n %s\\\\n\" \"${BIN_DUNE_CONTENTS}\" \"  (flags (${<DIR>_FLAGS})) ;  From package.json flags field\")\n  fi\n  if [ ! -z \"${<DIR>_OCAMLC_FLAGS}\" ]; then\n    BIN_DUNE_CONTENTS=$(printf \"%s\\\\n %s\\\\n\" \"${BIN_DUNE_CONTENTS}\" \"  (ocamlc_flags (${<DIR>_OCAMLC_FLAGS}))  ; From package.json ocamlcFlags field\")\n  fi\n  if [ ! -z \"${<DIR>_OCAMLOPT_FLAGS}\" ]; then\n    BIN_DUNE_CONTENTS=$(printf \"%s\\\\n %s\\\\n\" \"${BIN_DUNE_CONTENTS}\" \"  (ocamlopt_flags (${<DIR>_OCAMLOPT_FLAGS}))  ; From package.json ocamloptFlags field\")\n  fi\n  if [ ! -z \"${<DIR>_MODES}\" ]; then\n    BIN_DUNE_CONTENTS=$(printf \"%s\\\\n %s\\\\n\" \"${BIN_DUNE_CONTENTS}\" \"  (modes (${<DIR>_MODES}))  ; From package.json modes field\")\n  fi\n  if [ ! -z \"${<DIR>_RAWBUILDCONFIG}\" ]; then\n    BIN_DUNE_CONTENTS=$(printf \"%s\\\\n %s\\\\n\" \"${BIN_DUNE_CONTENTS}\" \"  ${<DIR>_RAWBUILDCONFIG} \")\n  fi\n  if [ ! -z \"${<DIR>_PREPROCESS}\" ]; then\n    BIN_DUNE_CONTENTS=$(printf \"%s\\\\n %s\\\\n\" \"${BIN_DUNE_CONTENTS}\" \"  (preprocess (${<DIR>_PREPROCESS}))  ; From package.json preprocess field\")\n  fi\n  BIN_DUNE_CONTENTS=$(printf \"%s\\\\n%s\\\\n\" \"${BIN_DUNE_CONTENTS}\" \")\")\n  if [ ! -z \"${<DIR>_IGNOREDSUBDIRS}\" ]; then\n    BIN_DUNE_CONTENTS=$(printf \"%s\\\\n%s\\\\n\" \"${BIN_DUNE_CONTENTS}\" \"(ignored_subdirs (${<DIR>_IGNOREDSUBDIRS})) ;  From package.json ignoredSubdirs field\")\n  fi\n  if [ ! -z \"${<DIR>_INCLUDESUBDIRS}\" ]; then\n    BIN_DUNE_CONTENTS=$(printf \"%s\\\\n%s\\\\n\" \"${BIN_DUNE_CONTENTS}\" \"(include_subdirs ${<DIR>_INCLUDESUBDIRS}) ;  From package.json includeSubdirs field\")\n  fi\n\n  if [ ! -z \"${<DIR>_RAWBUILDCONFIGFOOTER}\" ]; then\n    BIN_DUNE_CONTENTS=$(printf \"%s\\\\n %s\\\\n\" \"${BIN_DUNE_CONTENTS}\" \"${<DIR>_RAWBUILDCONFIGFOOTER}\")\n  fi\n\n  if [ \"${BIN_DUNE_EXISTING_CONTENTS}\" == \"${BIN_DUNE_CONTENTS}\" ]; then\n    true\n  else\n    notifyUser\n    BUILD_STALE_PROBLEM=\"true\"\n    if [ \"${MODE}\" == \"build\" ]; then\n      printf \"    □  Update <ORIG_DIR>/dune build config\\\\n\"\n    else\n      printf \"    %s☒%s  Update <ORIG_DIR>/dune build config\\\\n\" \"${BOLD}${GREEN}\" \"${RESET}\"\n      printf \"%s\" \"${BIN_DUNE_CONTENTS}\" > \"${BIN_DUNE_FILE}\"\n      mkdir -p \"${BIN_DIR}\"\n    fi\n  fi\nelse\n  BUILD_STALE_PROBLEM=\"true\"\n  notifyUser\n  if [ \"${MODE}\" == \"build\" ]; then\n    printf \"    □  Generate missing the <ORIG_DIR> directory described in package.json buildDirs\\\\n\"\n  else\n    printf \"    %s☒%s  Generate missing the <ORIG_DIR> directory described in package.json buildDirs\\\\n\" \"${BOLD}${GREEN}\" \"${RESET}\"\n    mkdir -p \"${BIN_DIR}\"\n  fi\nfi\n"
  },
  {
    "path": "npm-cli/v0.4.4/pesy-genLib.template.sh",
    "content": "\n# Perform validation:\n\nLIB_DIR=\"${cur__root}/<ORIG_DIR>\"\nLIB_DUNE_FILE=\"${LIB_DIR}/dune\"\n\n# TODO: Error if there are multiple libraries all using the default namespace.\nif [ -d \"${LIB_DIR}\" ]; then\n  true\nelse\n  BUILD_STALE_PROBLEM=\"true\"\n  notifyUser\n  if [ \"${MODE}\" == \"build\" ]; then\n    printf \"    □  Your project is missing the <ORIG_DIR> directory described in package.json buildDirs\\\\n\"\n  else\n    printf \"    %s☒%s  Your project is missing the <ORIG_DIR> directory described in package.json buildDirs\\\\n\" \"${BOLD}${GREEN}\" \"${RESET}\"\n    mkdir -p \"${LIB_DIR}\"\n  fi\nfi\n\nLIB_DUNE_CONTENTS=\"\"\nLIB_DUNE_EXISTING_CONTENTS=\"\"\nif [ -f \"${LIB_DUNE_FILE}\" ]; then\n  LIB_DUNE_EXISTING_CONTENTS=$(<\"${LIB_DUNE_FILE}\")\nfi\nLIB_DUNE_CONTENTS=$(printf \"%s\\\\n%s\" \"${LIB_DUNE_CONTENTS}\" \"; !!!! This dune file is generated from the package.json file by pesy. If you modify it by hand\")\nLIB_DUNE_CONTENTS=$(printf \"%s\\\\n%s\" \"${LIB_DUNE_CONTENTS}\" \"; !!!! your changes will be undone! Instead, edit the package.json and then rerun 'esy pesy' at the project root.\")\nLIB_DUNE_CONTENTS=$(printf \"%s\\\\n%s %s\" \"${LIB_DUNE_CONTENTS}\" \"; !!!! If you want to stop using pesy and manage this file by hand, change package.json's 'esy.build' command to: refmterr dune build -p \" \"${cur__name}\")\nLIB_DUNE_CONTENTS=$(printf \"%s\\\\n%s\" \"${LIB_DUNE_CONTENTS}\" \"(library\")\nLIB_DUNE_CONTENTS=$(printf \"%s\\\\n %s\" \"${LIB_DUNE_CONTENTS}\" \"  ; The namespace that other packages/libraries will access this library through\")\nLIB_DUNE_CONTENTS=$(printf \"%s\\\\n %s\" \"${LIB_DUNE_CONTENTS}\" \"  (name ${<DIR>_NAMESPACE})\")\nLIB_DUNE_CONTENTS=$(printf \"%s\\\\n %s\" \"${LIB_DUNE_CONTENTS}\" \"  ; Other libraries list this name in their package.json 'require' field to use this library.\")\nLIB_DUNE_CONTENTS=$(printf \"%s\\\\n %s\" \"${LIB_DUNE_CONTENTS}\" \"  (public_name <LIB_NAME>)\")\nif [ ! -z \"${<DIR>_REQUIRE}\" ]; then\n  LIB_DUNE_CONTENTS=$(printf \"%s\\\\n %s\\\\n\" \"${LIB_DUNE_CONTENTS}\" \"  (libraries ${<DIR>_REQUIRE})\")\nfi\nif [ ! -z \"${<DIR>_WRAPPED}\" ]; then\n  LIB_DUNE_CONTENTS=$(printf \"%s\\\\n%s\\\\n\" \"${LIB_DUNE_CONTENTS}\" \"   (wrapped ${<DIR>_WRAPPED})  ; From package.json wrapped field\")\nfi\nif [ ! -z \"${<DIR>_C_NAMES}\" ]; then\n  LIB_DUNE_CONTENTS=$(printf \"%s\\\\n %s\\\\n\" \"${LIB_DUNE_CONTENTS}\" \"  (c_names ${<DIR>_C_NAMES})  ; From package.json cNames field\")\nfi\nif [ -z \"${<DIR>_JSOO_FLAGS}\" ] && [ -z \"${<DIR>_JSOO_FILES}\" ]; then\n  # No jsoo flags whatsoever\n  true\nelse\n  LIB_DUNE_CONTENTS=$(printf \"%s\\\\n %s\" \"${LIB_DUNE_CONTENTS}\" \"  (js_of_ocaml \")\n  if [ ! -z \"${<DIR>_JSOO_FLAGS}\" ]; then\n    LIB_DUNE_CONTENTS=$(printf \"%s\\\\n %s\\\\n\" \"${LIB_DUNE_CONTENTS}\" \"    (flags (${<DIR>_JSOO_FLAGS}))  ; From package.json jsooFlags field\")\n  fi\n  if [ ! -z \"${<DIR>_JSOO_FILES}\" ]; then\n    LIB_DUNE_CONTENTS=$(printf \"%s\\\\n %s\\\\n\" \"${LIB_DUNE_CONTENTS}\" \"    (javascript_files ${<DIR>_JSOO_FILES})  ; From package.json jsooFiles field\")\n  fi\n  LIB_DUNE_CONTENTS=$(printf \"%s\\\\n%s\" \"${LIB_DUNE_CONTENTS}\" \"   )\")\nfi\nif [ ! -z \"${<DIR>_FLAGS}\" ]; then\n  LIB_DUNE_CONTENTS=$(printf \"%s\\\\n %s\\\\n\" \"${LIB_DUNE_CONTENTS}\" \"  (flags (${<DIR>_FLAGS}))  ; From package.json flags field\")\nfi\nif [ ! -z \"${<DIR>_OCAMLC_FLAGS}\" ]; then\n  LIB_DUNE_CONTENTS=$(printf \"%s\\\\n %s\\\\n\" \"${LIB_DUNE_CONTENTS}\" \"  (ocamlc_flags (${<DIR>_OCAMLC_FLAGS}))  ; From package.json ocamlcFlags field\")\nfi\nif [ ! -z \"${<DIR>_OCAMLOPT_FLAGS}\" ]; then\n  LIB_DUNE_CONTENTS=$(printf \"%s\\\\n %s\\\\n\" \"${LIB_DUNE_CONTENTS}\" \"  (ocamlopt_flags (${<DIR>_OCAMLOPT_FLAGS})) ; From package.json ocamloptFlags\")\nfi\nif [ ! -z \"${<DIR>_MODES}\" ]; then\n  LIB_DUNE_CONTENTS=$(printf \"%s\\\\n %s\\\\n\" \"${LIB_DUNE_CONTENTS}\" \"  (modes (${<DIR>_MODES}))  ; From package.json modes field\")\nfi\nif [ ! -z \"${<DIR>_IMPLEMENTS}\" ]; then\n  LIB_DUNE_CONTENTS=$(printf \"%s\\\\n %s\\\\n\" \"${LIB_DUNE_CONTENTS}\" \"  (implements ${<DIR>_IMPLEMENTS}) ; From package.json implements\")\nfi\nif [ ! -z \"${<DIR>_VIRTUALMODULES}\" ]; then\n  LIB_DUNE_CONTENTS=$(printf \"%s\\\\n %s\\\\n\" \"${LIB_DUNE_CONTENTS}\" \"  (virtual_modules ${<DIR>_VIRTUALMODULES}) ; From package.json virtualModules\")\nfi\nif [ ! -z \"${<DIR>_RAWBUILDCONFIG}\" ]; then\n  LIB_DUNE_CONTENTS=$(printf \"%s\\\\n %s\\\\n\" \"${LIB_DUNE_CONTENTS}\" \"  ${<DIR>_RAWBUILDCONFIG} \")\nfi\nif [ ! -z \"${<DIR>_PREPROCESS}\" ]; then\n  LIB_DUNE_CONTENTS=$(printf \"%s\\\\n %s\\\\n\" \"${LIB_DUNE_CONTENTS}\" \"  (preprocess (${<DIR>_PREPROCESS}))  ; From package.json preprocess field\")\nfi\nLIB_DUNE_CONTENTS=$(printf \"%s\\\\n%s\\\\n\" \"${LIB_DUNE_CONTENTS}\" \")\")\n\nif [ ! -z \"${<DIR>_IGNOREDSUBDIRS}\" ]; then\n  LIB_DUNE_CONTENTS=$(printf \"%s\\\\n%s\\\\n\" \"${LIB_DUNE_CONTENTS}\" \"(ignored_subdirs (${<DIR>_IGNOREDSUBDIRS}))  ; From package.json ignoreSubdirs field\")\nfi\nif [ ! -z \"${<DIR>_INCLUDESUBDIRS}\" ]; then\n  LIB_DUNE_CONTENTS=$(printf \"%s\\\\n%s\\\\n\" \"${LIB_DUNE_CONTENTS}\" \"(include_subdirs ${<DIR>_INCLUDESUBDIRS})  ; From package.json includeSubdirs field\")\nfi\n\nif [ ! -z \"${<DIR>_RAWBUILDCONFIGFOOTER}\" ]; then\n  LIB_DUNE_CONTENTS=$(printf \"%s\\\\n %s\\\\n\" \"${LIB_DUNE_CONTENTS}\" \"${<DIR>_RAWBUILDCONFIGFOOTER}\")\nfi\n\nif [ \"${LIB_DUNE_EXISTING_CONTENTS}\" == \"${LIB_DUNE_CONTENTS}\" ]; then\n  true\nelse\n  notifyUser\n  BUILD_STALE_PROBLEM=\"true\"\n  if [ \"${MODE}\" == \"build\" ]; then\n    printf \"    □  Update <ORIG_DIR>/dune build config\\\\n\"\n  else\n    printf \"    %s☒%s  Update <ORIG_DIR>/dune build config\\\\n\" \"${BOLD}${GREEN}\" \"${RESET}\"\n    printf \"%s\" \"$LIB_DUNE_CONTENTS\" > \"${LIB_DUNE_FILE}\"\n  fi\nfi\n"
  },
  {
    "path": "npm-cli/v0.4.4/pesy-gitignore.template",
    "content": "npm-debug.log\n.merlin\nyarn-error.log\nnode_modules\nnode_modules/\n_build\n_release\n_esy/\n<PACKAGE_NAME>.install\n.DS_Store\n*.install\n"
  },
  {
    "path": "npm-cli/v0.4.4/pesy-header.sh",
    "content": "#!/bin/bash\n\nset -e\nset -u\n\nBOLD=`tput bold`  || BOLD=''   # Select bold mode\nBLACK=`tput setaf 0` || BLACK=''\nRED=`tput setaf 1` || RED=''\nGREEN=`tput setaf 2` || GREEN=''\nYELLOW=`tput setaf 3` || YELLOW=''\nRESET=`tput sgr0` || RESET=''\n\nMODE=\"update\"\n\n# On Windows, the 'esy pesy' syntax doesn't work as we want it to -\n# our bash environment there is always run with 'noprofile',\n# so 'pesy' always runs in build mode instead of update mode.\n\n# To make this command work cross-platform, we add a way to override\n# the mode via the 'PESY_MODE' environment variable.\n\nset +u\nif [ ! -z \"${PESY_MODE}\" ]; then\n  printf \"PESY MODE\"\n  MODE=\"$PESY_MODE\"\nelse \n  if [[ $SHELL =~ \"noprofile\" ]]; then\n    MODE=\"build\"\n  fi\nfi\nset -u\n\nLAST_EXE_NAME=\"\"\nNOTIFIED_USER=\"false\"\nBUILD_STALE_PROBLEM=\"false\"\n\nDEFAULT_MAIN_MODULE_NAME=\"Index\"\n\nfunction notifyUser() {\n  if [ \"${NOTIFIED_USER}\" == \"false\" ]; then\n    echo \"\"\n    if [ \"${MODE}\" == \"build\" ]; then\n      printf \"  %sAlmost there!%s %sWe just need to prepare a couple of files:%s\\\\n\\\\n\" \"${YELLOW}${BOLD}\" \"${RESET}\" \"${BOLD}\" \"${RESET}\"\n    else\n      printf \"  %sPreparing for build:%s\\\\n\\\\n\" \"${YELLOW}${BOLD}\" \"${RESET}\"\n    fi\n    NOTIFIED_USER=\"true\"\n  else\n    # do nothing\n    true\n  fi\n}\n\n\nfunction printDirectory() {\n  DIR=$1\n  NAME=$2\n  NAMESPACE=$3\n  REQUIRE=$4\n  IS_LAST=$5\n  printf \"│\\\\n\"\n  PREFIX=\"\"\n  if [[ \"$IS_LAST\" == \"last\" ]]; then\n    printf \"└─%s/\\\\n\" \"$DIR\"\n    PREFIX=\"    \"\n  else\n    printf \"├─%s/\\\\n\" \"$DIR\"\n    PREFIX=\"│   \"\n  fi\n  printf \"%s%s\\\\n\" \"$PREFIX\" \"$NAME\"\n  printf \"%s%s\\\\n\" \"$PREFIX\" \"$NAMESPACE\"\n  if [ -z \"$REQUIRE\" ]; then\n    true\n  else\n    if [ \"$REQUIRE\" != \" \" ]; then\n      printf   \"%s%s\\\\n\" \"$PREFIX\" \"$REQUIRE\"\n    fi\n  fi\n}\n"
  },
  {
    "path": "npm-cli/v0.4.4/pesy-name-utils.sh",
    "content": "#!/bin/bash\n\nset -e\nset -u\n\n# Also removes /\n# https://stackoverflow.com/a/8952274\nuppers=\"ABCDEFGHIJKLMNOPQRSTUVWXYZ\"\nlowers=\"abcdefghijklmnopqrstuvwxyz\"\nwordBoundaries=\"._-/\"\nupperCamelCasify(){ #usage: camelcasify \"some_string-Here\" -> \"SomeStringHere\"\n  OUTPUT=\"\"\n  i=0\n  prevWasBoundary=\"true\" # Causes leading uppercase\n  while ([ $i -lt ${#1} ]) do\n    CUR=${1:$i:1}\n    if [[ \"${prevWasBoundary}\" == \"true\" ]]; then\n      # Then upper case this one.\n      case \"$lowers\" in\n          *$CUR*)\n            CUR=${lowers%$CUR*}\n            OUTPUT=\"${OUTPUT}${uppers:${#CUR}:1}\"\n            ;;\n          *)\n            OUTPUT=\"${OUTPUT}$CUR\"\n            ;;\n      esac\n      prevWasBoundary=\"false\"\n    else\n      case $wordBoundaries in\n          *$CUR*)\n            prevWasBoundary=\"true\"\n            ;;\n          *)\n            OUTPUT=\"${OUTPUT}$CUR\"\n            ;;\n      esac\n    fi\n    i=$((i+1))\n  done\n  echo \"${OUTPUT}\"\n}\n"
  },
  {
    "path": "npm-cli/v0.4.4/pesy-package.template.json",
    "content": "{\n  \"name\": \"<PACKAGE_NAME_FULL>\",\n  \"version\": \"0.0.0\",\n  \"description\": \"My Project\",\n  \"esy\": {\n    \"build\": \"dune build -p <PACKAGE_NAME>\",\n    \"buildDev\": \"pesy\",\n    \"release\": {\n      \"releasedBinaries\": [\n        \"<PACKAGE_NAME_UPPER_CAMEL>App.exe\"\n      ]\n    }\n  },\n  \"buildDirs\": {\n    \"test\": {\n      \"require\": [\"<PUBLIC_LIB_NAME>\"],\n      \"main\": \"Test<PACKAGE_NAME_UPPER_CAMEL>\",\n      \"name\": \"Test<PACKAGE_NAME_UPPER_CAMEL>.exe\"\n    },\n    \"library\": {\n      \"name\": \"<PUBLIC_LIB_NAME>\",\n      \"namespace\": \"<PACKAGE_NAME_UPPER_CAMEL>\"\n    },\n    \"executable\": {\n      \"require\": [\"<PUBLIC_LIB_NAME>\"],\n      \"main\": \"<PACKAGE_NAME_UPPER_CAMEL>App\",\n      \"name\": \"<PACKAGE_NAME_UPPER_CAMEL>App.exe\"\n    }\n  },\n  \"scripts\": {\n    \"pesy\": \"bash -c 'env PESY_MODE=update pesy'\",\n    \"test\": \"esy x Test<PACKAGE_NAME_UPPER_CAMEL>.exe\"\n  },\n  \"dependencies\": {\n    \"@opam/dune\": \">=1.6.0\",\n    \"@esy-ocaml/reason\": \"*\",\n    \"ocaml\": \"^4.4.0\"\n  },\n  \"devDependencies\": {\n    \"ocaml\": \"4.7.1004\",\n    \"refmterr\": \"*\",\n    \"pesy\": \"*\",\n    \"@opam/merlin\": \"*\"\n  }\n}\n"
  },
  {
    "path": "package.json",
    "content": "{\n  \"name\": \"@pesy/esy-pesy\",\n  \"version\": \"0.1.0-alpha.14\",\n  \"description\": \"\\\"Esy Pesy\\\" - Your Esy Assistant.\",\n  \"esy\": {\n    \"buildsInSource\": \"_build\",\n    \"build\": [\n      \"dune build -p pesy--esy-pesy\"\n    ],\n    \"install\": [\n      \"esy-installer pesy--esy-pesy.install\"\n    ],\n    \"buildDev\": [\n      \"dune build --root . --only-packages pesy--esy-pesy,PesyE2E\"\n    ],\n    \"buildEnv\": {\n      \"ODOC_SYNTAX\": \"re\"\n    },\n    \"release\": {\n      \"bin\": [\n        \"pesy\"\n      ],\n      \"includePackages\": [\n        \"root\"\n      ]\n    }\n  },\n  \"pesy\": {\n    \"github\": \"esy/pesy\",\n    \"azure-project\": \"pesy/pesy\"\n  },\n  \"scripts\": {\n    \"doc\": \"esy dune build @doc -p pesy--esy-pesy,PesyE2E\",\n    \"test:unit\": \"esy b dune exec ./unit-tests/runner/RunUnitTests.exe\",\n    \"test:e2e\": \"./_build/default/e2e-tests/Runner.exe\",\n    \"test\": \"esy run-script test:unit\"\n  },\n  \"dependencies\": {\n    \"@opam/reason\": \"*\",\n    \"@opam/dune\": \"*\",\n    \"@opam/cmdliner\": \"*\",\n    \"@opam/pastel\": \"*\",\n    \"@opam/ocamlfind\": \"*\",\n    \"@opam/sexplib\": \"*\",\n    \"@opam/yojson\": \"*\",\n    \"ocaml\": \"4.6.10 - 5.3.0\"\n  },\n  \"devDependencies\": {\n    \"@opam/dune\": \"*\",\n    \"@opam/bos\": \"*\",\n    \"@reason-native/rely\": \"*\",\n    \"@opam/odoc\": \"*\",\n    \"@opam/ocaml-lsp-server\": \"*\"\n  },\n  \"resolutions\": {\n    \"@opam/cli\": \"reasonml/reason-native:cli.opam#20b1997b6451d9715dfdbeec86a9d274c7430ed8\",\n    \"@reason-native/cli\": \"reasonml/reason-native:cli.opam#20b1997b6451d9715dfdbeec86a9d274c7430ed8\",\n    \"@reason-native/rely\": \"reasonml/reason-native:rely.opam#20b1997b6451d9715dfdbeec86a9d274c7430ed8\",\n    \"@opam/pastel\": \"reasonml/reason-native:pastel.opam#20b1997b6451d9715dfdbeec86a9d274c7430ed8\",\n    \"@opam/console\": \"reasonml/reason-native:console.opam#20b1997b6451d9715dfdbeec86a9d274c7430ed8\",\n    \"@opam/file-context-printer\": \"reasonml/reason-native:file-context-printer.opam#20b1997b6451d9715dfdbeec86a9d274c7430ed8\",\n    \"@opam/pastel\": \"reasonml/reason-native:pastel.opam#20b1997b6451d9715dfdbeec86a9d274c7430ed8\"\n  }\n}\n"
  },
  {
    "path": "pesy--esy-pesy.opam",
    "content": "opam-version: \"2.0\"\nname: \"pesy\"\ndescription: \"Esy Pesy - Your Esy Assistant\"\nsynopsis: \"Esy Pesy - Your Esy Assistant\"\nversion: \"0.1.0-dev\"\nmaintainer: \"Jordan Walke<jordojw@gmail.com>\"\nauthors: [\n  \"Jordan Walke<jordojw@gmail.com>\"\n  \"Manas Jayanth <prometheansacrifice@gmail.com>\"\n]\nhomepage: \"https://github.com/esy/pesy\"\nbug-reports: \"https://github.com/esy/pesy/issues\"\nlicense: \"MIT\"\ndev-repo: \"git+https://github.com/esy/pesy.git\"\nbuild: []\ndepends: []\n"
  },
  {
    "path": "scripts/bootstrap.sh",
    "content": "#! /bin/bash\n\nmkdir -p vendor\ncd vendor\n\n# reason_tag=\"3.0.4\"\n# curl -LO \"https://github.com/facebook/reason/archive/${reason_tag}.tar.gz\"\n# mv \"${reason_tag}.tar.gz\" reason.tar.gz\n# tar -xf \"reason.tar.gz\"\n# mv \"reason-${reason_tag}\" reason\n\n# dune_tag=\"1.11.3\"\n# curl -LO \"https://github.com/ocaml/dune/archive/${dune_tag}.tar.gz\"\n# mv \"${dune_tag}.tar.gz\" dune.tar.gz\n# tar -xf \"dune.tar.gz\"\n# mv \"dune-${dune_tag}\" dune\n\n# cmdliner_tag=\"1.0.4\"\n# curl -LO \"https://github.com/dbuenzli/cmdliner/archive/v${cmdliner_tag}.tar.gz\"\n# mv \"v${cmdliner_tag}.tar.gz\" cmdliner.tar.gz\n# tar -xf \"cmdliner.tar.gz\"\n# mv \"cmdliner-${cmdliner_tag}\" cmdliner\n\n# sexplib_tag=\"0.12.0\"\n# curl -LO \"https://github.com/janestreet/sexplib/archive/v${sexplib_tag}.tar.gz\"\n# mv \"v${sexplib_tag}.tar.gz\" sexplib.tar.gz\n# tar -xf \"sexplib.tar.gz\"\n# mv \"sexplib-${sexplib_tag}\" sexplib\n\n# yojson_tag=\"1.7.0\"\n# curl -LO \"https://github.com/ocaml-community/yojson/archive/${yojson_tag}.tar.gz\"\n# mv \"${yojson_tag}.tar.gz\" yojson.tar.gz\n# tar -xf \"yojson.tar.gz\"\n# mv \"yojson-${yojson_tag}\" yojson\n\n# reason_native_commit=\"fd4da6d2f0f50cf4a9b5323a8706ff21557db5bb\"\n# curl -LO \"https://github.com/facebookexperimental/reason-native/archive/${reason_native_commit}.tar.gz\"\n# mv \"${reason_native_commit}.tar.gz\" reason_native.tar.gz\n# tar -xf \"reason_native.tar.gz\"\n# mv \"reason-native-${reason_native_commit}\" reason-native\n\n# tag=\"v0.5\"\n# pkg=\"merlin-extend\"\n# curl -LO \"https://github.com/let-def/${pkg}/releases/download/${tag}/merlin-extend-${tag}.tbz\"\n# tar -xf \"${pkg}-${tag}.tbz\"\n# mv \"${pkg}-${tag}\" \"${pkg}\"\n# rm \"${pkg}-${tag}.tbz\"\n\n# tag=\"v3.3.2\"\n# pkg=\"merlin\"\n# curl -LO \"https://github.com/ocaml/${pkg}/releases/download/${tag}/${pkg}-${tag}.tbz\"\n# tar -xf \"${pkg}-${tag}.tbz\"\n# mv \"${pkg}-${tag}\" \"${pkg}\"\n# rm \"${pkg}-${tag}.tbz\"\n\n# tag=\"20190626\"\n# pkg=\"menhir\"\n# curl -LO \"https://gitlab.inria.fr/fpottier/${pkg}/repository/${tag}/archive.tar.gz\"\n# tar -xf \"archive.tar.gz\"\n# mv \"menhir-20190626-9158c209f7a86967c837831b6ba64f031e4f3d76\" \"${pkg}\"\n# rm \"archive.tar.gz\"\n\n# tag=\"1.3.2\"\n# pkg=\"easy-format\"\n# curl -LO \"https://github.com/ocaml-community/${pkg}/releases/download/${tag}/${pkg}-${tag}.tbz\"\n# tar -xf \"${pkg}-${tag}.tbz\"\n# mv \"${pkg}-${tag}\" \"${pkg}\"\n# rm \"${pkg}-${tag}.tbz\"\n\ntag=\"v0.12.2\"\npkg=\"base\"\ncurl -LO \"https://github.com/janestreet/${pkg}/archive/${tag}.tar.gz\"\ntar -xf $tag.tar.gz\nmv $pkg-0.12.2 $pkg\nrm $tag.tar.gz\n\n# Clean up\n# rm vendor/*.tar.*\n"
  },
  {
    "path": "scripts/run.bat",
    "content": "call esy build\ncall esy npm-release\ncall cd _release\ncall npm pack\ncall npm install -g ./pesy-0.5.0-dev.23.tgz\ncall cd ..\ncall .\\_build\\install\\default\\bin\\TestPesyConfigure.exe\n"
  },
  {
    "path": "scripts/run.sh",
    "content": "#! /bin/bash\n\n# TODO: Add npm install -g verdaccio\n\nroot=$PWD\ncustom_registry_url=http://localhost:4873\noriginal_npm_registry_url=https://registry.npmjs.org # `npm get registry`\noriginal_yarn_registry_url=https://registry.yarnpkg.com # `yarn config get registry`\nversion=0.5.0-dev.23\n\n\nfunction cleanup {\n\n  if [[ ! -z \"$root\" ]]\n  then\n      rm -rf $root/scripts/storage\n      rm -rf $root/scripts/htpasswd\n  fi\n\n  # TODO: kill verdaccio. Makes it convenient for local dev\n  # ps -aux | grep 'verdaccio' | grep -v grep | awk '{print $2}' | xargs kill -9\n\n  echo Resetting registries\n  npm set registry \"$original_npm_registry_url\" # https://registry.npmjs.org\n  yarn config set registry \"$original_yarn_registry_url\" # http://registry.yarnpkg.com/\n  export NPM_CONFIG_REGISTRY=\n  \n  echo Clean up _release\n  rm -rf _release\n}\n\n\nfunction main {\n    echo 'Cleaning up.'\n    cleanup\n\n    echo esy install\n    esy i\n\n    echo esy build\n    esy b --install\n\n    # echo esy npm-release\n    # esy npm-release || exit -1\n\n    # echo Entering _release\n    # cd _release || exit -1\n\n    # echo Simulate latest stable release\n    # node $root/scripts/simulate-latest.js $root/_release/package.json $version\n\n    # echo Npm packing...\n    # npm pack\n\n    cd npm-cli\n\n    echo Globally instaling the packed pesy\n    npm i -g .\n\n    tmp_registry_log=`mktemp`\n    echo \"Booting up verdaccio (log: $tmp_registry_log) (config: $root/scripts/verdaccio.yaml) \"\n\n    (cd && nohup npx verdaccio@3.8.2 -c $root/scripts/verdaccio.yaml | tee $tmp_registry_log &)\n    grep -q 'http address' <(tail -f $tmp_registry_log)\n\n    echo Set registry to local registry\n    npm set registry \"$custom_registry_url\"\n    yarn config set registry \"$custom_registry_url\"\n\n    (npx npm-auth-to-token@1.0.0 -u user -p password -e user@example.com -r \"$custom_registry_url\")\n\n    echo Publishing to local npm\n    npm publish .\n\n    echo NPM info\n    npm info pesy\n\n    # echo Writing pesy meta data to pesy-meta.jso\n    # curl -H \"Accept: application/vnd.npm.install-v1+json\" http://localhost:4873/pesy | python -m json.tool > $root/pesy-meta.json\n\n    pwd\n\n    echo Entering root again\n    cd ..\n\n    pwd\n\n    export NPM_CONFIG_REGISTRY=\"$custom_registry_url\"\n    ./_build/install/default/bin/TestBootstrapper.exe\n    PESY_CLONE_PATH=$PESY_CLONE_PATH ./_build/install/default/bin/TestPesyConfigure.exe\n\n    echo 'Cleaning up again'\n    cleanup\n}\n\nif [ ! -z \"$1\" ] && [ \"$1\" == \"clean\" ]\nthen\n    cleanup\nelse\n    if [ -z \"${PESY_CLONE_PATH}\" ]\n    then\n        echo PESY_CLONE_PATH not defined in env\n        exit -1\n    fi\n    main\nfi\n"
  },
  {
    "path": "scripts/simulate-latest.js",
    "content": "let path = require(\"path\");\nlet fs = require(\"fs\");\nlet packageJSONPath = path.join(process.argv[2]);\nlet packageJSON = require(packageJSONPath);\n\nfs.writeFileSync(\n  packageJSONPath,\n  JSON.stringify(Object.assign({}, packageJSON, { version: process.argv[3] }))\n);\n"
  },
  {
    "path": "scripts/verdaccio.yaml",
    "content": "# path to a directory with all packages\nstorage: ./storage\n# path to a directory with plugins to include\nplugins: ./plugins\n\nweb:\n  title: Verdaccio\n  # comment out to disable gravatar support\n  # gravatar: false\n  # by default packages are ordercer ascendant (asc|desc)\n  # sort_packages: asc\n\nauth:\n  htpasswd:\n    file: ./htpasswd\n    # Maximum amount of users allowed to register, defaults to \"+inf\".\n    # You can set this to -1 to disable registration.\n    # max_users: 1000\n\nsecurity:\n  api:\n    jwt:\n      sign:\n        expiresIn: 60d\n        notBefore: 1\n  web:\n    sign:\n      expiresIn: 7d\n      notBefore: 1\n\n# a list of other known repositories we can talk to\nuplinks:\n  npmjs:\n    url: https://registry.npmjs.org/\n\npackages:\n  '@*/*':\n    # scoped packages\n    access: $anonymous\n    publish: $anonymous\n    unpublish: $anonymous\n    proxy: npmjs\n\n  '**':\n    # allow all users (including non-authenticated users) to read and\n    # publish all packages\n    #\n    # you can specify usernames/groupnames (depending on your auth plugin)\n    # and three keywords: \"$all\", \"$anonymous\", \"$authenticated\"\n    access: $anonymous\n\n    # allow all known users to publish/publish packages\n    # (anyone can register by default, remember?)\n    publish: $anonymous\n    unpublish: $anonymous\n\n    # if package is not available locally, proxy requests to 'npmjs' registry\n    proxy: npmjs\n\n# You can specify HTTP/1.1 server keep alive timeout in seconds for incomming connections.\n# A value of 0 makes the http server behave similarly to Node.js versions prior to 8.0.0, which did not have a keep-alive timeout.\n# WORKAROUND: Through given configuration you can workaround following issue https://github.com/verdaccio/verdaccio/issues/301. Set to 0 in case 60 is not enought.\nserver:\n  keepAliveTimeout: 60\n\nmiddlewares:\n  audit:\n    enabled: true\n\n# log settings\nlogs:\n  - { type: stdout, format: pretty, level: http }\n  #- {type: file, path: verdaccio.log, level: info}\n"
  },
  {
    "path": "site/ORIGINS.md",
    "content": "\nDox:\n\nHere's a list of all of the technologies that are used and included in Dox.\n\nEach of these projects should include a LICENSE file from their original\nproject, but even if they do not, they still retain the license/copyright of\ntheir original project (even though they are copied/\"vendored\" in \n\n## Flatdoc:\nThis project is just a fork of flatdoc, so of course\n[https://github.com/rstacruz/flatdoc](flatdoc) should be mentioned.  Flatdoc is\nexcellent.\n\n# jquery:\njquery is licensed under the MIT license, and is vendored in vendor/jquery.js\nSee its license [here](https://jquery.org/license/)\n\n#medium-zoom\n[Medium-zoom](https://github.com/francoischalifour/medium-zoom) is vendored as\nwell.\n\n#Fira Mono Font\nIs also vendored as the default source code font. See its LICENSE included in the vendor directory.\n\n#Roboto Font\nIs also vendored and is the default font for text. See its LICENSE included in the vendor directory.\n\n# Terminal Animation: \nThe example terminal animation was gotten from\n[termtosvg](https://github.com/nbedos/termtosvg)'s repo, which is BSD 3-Clause\nLicense (see the license there).\n\n# Stylus\nThe vendored stylus in `support/vendor/stylus.min.js` is gotten from\nhttps://github.com/stylus/stylus/tree/client and is under MIT license (see the\nrepo).\n\n# hljs\nHLJS is vendored in support/vendor/ along with all of its out of the box css\nstyles.  hljs is licensed under BSD 3-Clause License and the license can be\nfound in its repo [here](https://github.com/highlightjs/highlight.js).\n\n\n# marked\nFlatdoc vendors marked (markdown parsing library) inside of flatdoc.js\nhttps://github.com/markedjs/marked\nIt is licensed under MIT (see the repo for license).\n\n# Beach Images:\nCredit Lance Aspser:\nhttps://unsplash.com/photos/W785zpEXZZo\nhttps://unsplash.com/photos/woDxDNvpmdk\n"
  },
  {
    "path": "site/Reload.js",
    "content": "/*!\n * Flatdoc - (c) 2013, 2014 Rico Sta. Cruz\n * http://ricostacruz.com/flatdoc\n * @license MIT\n */\n\n\n/**\n * Reload is just a paired down version of Flatdoc with some additional\n * features, and many features removed.\n *\n * This version of flatdoc can run in three modes:\n *\n * Main entrypoint script include (when included from an index.html or\n * foo.html).\n *\n *     <script start src=\"pathto/Reload.js\"></script>\n *\n * Included in a name.md.html markdown document or name.styl.html Stylus\n * document at the start of file\n *\n *     <script src=\"pathto/Reload.js\"></script>\n *     # Rest of markdown here\n *     - regular markdown\n *     - regular markdown\n *\n * or:\n *\n *     <script src=\"pathto/Reload.js\"></script>\n *     Rest of .styl document here:\n *\n * As a node script which will bundle your page into a single file assuming you've run npm install.\n */\n\n/**\n * Since we use one simple script for everything, we need to detect how it's\n * being used. If not a node script, it could be included form the main html\n * page, or from a docs/stylus page. The main script tag in the main page will\n * be run at a point where there's no body in the document. For doc pages\n * (markdown/stylus) it will have a script tag at the top which implicitly\n * defines a body.\n */\nfunction detectDocOrStyleIfNotNodeScript() {\n  let hasParentFrame = window.parent !== window;\n  let hasBody = document.body !== null;\n  return hasParentFrame || hasBody;\n};\n\n/**\n * Here's the order of events that occur when using the local file system at least:\n * 1. body DOMContentLoaded\n * 2. body onload event\n * 3. settimeout 0 handler.\n */\nif(typeof process !== 'undefined') {\n  if(process.argv && process.argv.length > 2 && process.argv[2] === 'bundle') {\n    var fs = require('fs');\n    var path = require('path');\n    var Inliner = require('inliner');\n\n\n    let siteDir = __dirname;\n\n    var pathToChrome =\n      process.platform === 'win32' ?\n      path.join(require('process').env['LOCALAPPDATA'], 'Google', 'Chrome', 'Application', 'chrome.exe') :\n      '/Applications/Google\\\\ Chrome.app/Contents/MacOS/Google\\\\ Chrome';\n\n    var cmd = pathToChrome + \" \" + path.join(siteDir, \"index.dev.html\") + ' --headless --dump-dom --virtual-time-budget=400';\n    var rendered = require('child_process').execSync(cmd).toString();\n\n    let renderedHtmlPath = path.join(siteDir, 'index.rendered.html');\n    let indexHtmlPath = path.join(siteDir, 'index.html');\n    fs.writeFileSync(renderedHtmlPath, rendered);\n\n    console.log(\"INLINING PAGE: \", indexHtmlPath);\n\n    var options = {\n      /* Make sure you have this set to true to avoid flickering jumps */\n      images: true,\n      compressCSS: true,\n      compressJS: true,\n      // If true, will mess with hljs.\n      collapseWhitespace: false,\n      nosvg: true, // by default, DO compress SVG with SVGO\n      skipAbsoluteUrls: false,\n      preserveComments: false,\n      iesafe: false,\n    };\n\n    new Inliner(renderedHtmlPath, options, function (error, html) {\n      // compressed and inlined HTML page\n      // console.log(html);\n      if(error) {\n        console.error(e);\n        process.exit(1);\n      }\n      fs.writeFileSync(indexHtmlPath, html)\n      process.exit(0);\n    });\n  }\n}\n\n/**\n * How Github decides to render previews as markdown:\n * https://github.com/github/markup/issues/1069#issuecomment-306084234\n *\n * This comment says you can force your file to be rendered as markdown in\n * github a couple of ways: A vim region, or a gitattributes but gitattributes\n * isn't working.\n * Abusing the Vim mode:\n * <!-- vim: syntax=Markdown -->\n * Abusing the Emacs mode:\n * <!--*- mode: markdown -*-->\n * (note that emacs mode is determined by the `-*- mode: markdown; -*-` It just fits nicely\n * with the html comment *)\n * https://github.com/github/markup/issues/1069#issuecomment-460056003\n *\n * Supposedly, Chrome is supposed to detect html files on local disk by\n * sniffing some tags.  but it doesn't appear to work.\n * Chromium mime type sniffing:\n *  https://source.chromium.org/chromium/chromium/src/+/master:net/base/mime_sniffer.cc;drc=faa13f8c8516dd027f5fc5a6ba984099ff330d05;l=781?originalUrl=https:%2F%2Fcs.chromium.org%2Fchromium%2Fsrc%2Fnet%2Fbase%2Fmime_sniffer.cc\n *  https://source.chromium.org/chromium/chromium/src/+/master:net/base/mime_sniffer.cc;l=795?originalUrl=https:%2F%2Fcs.chromium.org%2Fchromium%2Fsrc%2Fnet%2Fbase%2Fmime_sniffer.cc\n *  SniffForHTML:\n *  https://source.chromium.org/chromium/chromium/src/+/master:net/base/mime_sniffer.cc;drc=c12f7a008d7096c48d0c4db36c6d6edbc71700fb;l=381?originalUrl=https:%2F%2Fcs.chromium.org%2Fchromium%2Fsrc%2Fnet%2Fbase%2Fmime_sniffer.cc\n *\n * A trick to create markdown comments that don't render in Github:\n * http://alvinalexander.com/technology/markdown-comments-syntax-not-in-generated-output/\n * (Suggestion, use the # form and make sure there's a line before it)\n * https://stackoverflow.com/questions/4823468/comments-in-markdown\n *\n * <!--*- mode: markdown -*-->\n * This doesn't work because it needs spaces around the [] for ft detection to\n * kick in on Github:\n * [vim: syntax=Markdown]: # (<script src=\"./flatdoc.js\"></script>)\n * This works!\n * [ vim:syntax=Markdown ]: # (<script src=\"./flatdoc.js\"></script>)\n * But this does!\n * [-*-mode:markdown-*-]: # (<script src=\"./flatdoc.js\"> </script>)\n *\n * Another supposed way to write comments in markdown is:\n * [this is a comment]::\n * So this works for injecting the script tag and getting Github to render it\n * as a markdown file:\n * [<script src=\"./flatdoc.js\"> </script>]:-*-mode:markdown-*-:\n * However with that last approach, there's much more to clean up in the output\n * on Flatdoc's side.\n *\n * This approach is the cleanest and only has us searching for / cleaning up a\n * single `)` closing paren before Flatdoc renders the markup.\n *\n *     [ vim:syntax=Markdown ]: # (<script src=\"flatdoc.js\"></script>)\n *\n */\nelse if(\n    document.location.href.indexOf('.md') === document.location.href.length - 2  ||\n    document.location.href.indexOf('.md.html') === document.location.href.length - 8  ||\n    document.location.href.indexOf('.styl.html') === document.location.href.length - 10 ||\n    document.location.href.indexOf('.md.htm') === document.location.href.length - 7  ||\n    document.location.href.indexOf('.styl.htm') === document.location.href.length - 9 ||\n    detectDocOrStyleIfNotNodeScript()\n) {\n  document.write('<plaintext>');\n  document.addEventListener(\"DOMContentLoaded\", function() {\n    var plaintexts = document.querySelectorAll('plaintext');\n    if(plaintexts.length === 1) {\n      window.parent.postMessage({\n        messageType: 'docPageContent' ,\n        iframeName: window.name,\n        content: plaintexts[0].innerHTML\n      }, \"*\");\n    } else {\n      window.parent.postMessage({\n        messageType: \"docPageError\",\n        iframeName: window.name,\n        error: \"There isn't exactly one plaintext tag inside of \" + window.name +\n        \". Something went wrong and we didn't inject the plaintext tag.\"\n      }, \"*\");\n    }\n  });\n} else {\n(function($) {\n  var exports = this;\n\n  var marked;\n\n  /**\n   * Basic Flatdoc module.\n   *\n   * The main entry point is `Flatdoc.run()`, which invokes the [Runner].\n   *\n   *     Flatdoc.run({\n   *       fetcher: Flatdoc.github('rstacruz/backbone-patterns');\n   *     });\n   *\n   * These fetcher functions are available:\n   *\n   *     Flatdoc.github('owner/repo')\n   *     Flatdoc.github('owner/repo', 'API.md')\n   *     Flatdoc.github('owner/repo', 'API.md', 'branch')\n   *     Flatdoc.bitbucket('owner/repo')\n   *     Flatdoc.bitbucket('owner/repo', 'API.md')\n   *     Flatdoc.bitbucket('owner/repo', 'API.md', 'branch')\n   *     Flatdoc.file('http://path/to/url')\n   *     Flatdoc.file([ 'http://path/to/url', ... ])\n   */\n\n  var Flatdoc = exports.Flatdoc = {};\n  exports.Reload = exports.Flatdoc;\n\n  /**\n   * Creates a runner.\n   * See [Flatdoc].\n   */\n  Flatdoc.run = function(options) {\n    $(function() { (new Flatdoc.runner(options)).run(); });\n  };\n  \n  /**\n   * Simplified easy to use API that calls the underlying API.\n   */\n  Flatdoc.reload = function(options) {\n    var actualOptions = {};\n    if(options.stylus) {\n      actualOptions.stylusFetcher = Flatdoc.docPage(options.stylus);\n    }\n    if(options.doc) {\n      actualOptions.fetcher = Reload.docPage(options.doc);\n    }\n    if(options.highlight) {\n      actualOptions.highlight = options.highlight;\n    }\n    Flatdoc.run(actualOptions);\n  };\n\n\n  /**\n   * File fetcher function.\n   *\n   * Fetches a given `url` via AJAX.\n   * See [Runner#run()] for a description of fetcher functions.\n   */\n\n  Flatdoc.file = function(url) {\n    function loadData(locations, response, callback) {\n      if (locations.length === 0) callback(null, response);\n\n      else $.get(locations.shift())\n        .fail(function(e) {\n          callback(e, null);\n        })\n        .done(function (data) {\n          if (response.length > 0) response += '\\n\\n';\n          response += data;\n          loadData(locations, response, callback);\n        });\n    }\n\n    return function(callback) {\n      loadData(url instanceof Array ?\n        url : [url], '', callback);\n    };\n  };\n\n  /**\n   * Local docPage doc fetcher function.\n   *\n   * Fetches a given `url` via iframe inclusion, expecting the file to be of\n   * the \"docPage\" form of markdown which can be loaded offline.\n   * See [Runner#run()] for a description of fetcher functions.\n   *\n   * Tags the url argument on the fetcher itself so it can be used for other\n   * debugging/relativization.\n   */\n\n  Flatdoc.docPageErrorHandler = null;\n\n  Flatdoc.docPage = function(url) {\n    if (!Flatdoc.errorHandler) {\n      var listenerID = window.addEventListener('message', function(e) {\n        if (e.data.messageType === 'docPageError') {\n          console.error(e.data.error);\n        }\n      });\n      Flatdoc.docPageErrorHandler = listenerID;\n    }\n    var fetchdocPage = function(url) {\n      var onDone = null;\n      var onFail = null;\n      var returns = {\n        fail: function(cb) {\n          onFail = cb;\n          return returns;\n        },\n        done: function(cb) {\n          onDone = cb;\n          return returns;\n        }\n      };\n      var timeout = window.setTimeout(function() {\n        onFail && onFail(\n          \"Timed out loading \" + url +\n          \". It might still load if the request comes back, \" +\n          \"but this took super long. Maybe you are paused in the debugger?\"\n        );\n      }, 400);\n      var listenerID = window.addEventListener('message', function(e) {\n        if(e.data.messageType === 'docPageContent' && e.data.iframeName === url) {\n          window.removeEventListener('message', listenerID);\n          if(onDone) {\n            window.clearTimeout(timeout);\n            onDone(e.data.content);\n          }\n        }\n      });\n      var iframe = document.createElement('iframe');\n      iframe.name = url;\n      // Themes may opt to handle offline/pre rendering, and this is convenient\n      // to mark these iframes as not-essential once rendered so they may be\n      // removed from the DOM after rendering, and won't take up space in the\n      // bundle.\n      iframe.className = 'removeFromRenderedPage';\n      iframe.src=url;\n      iframe.style=\"display:none !important\";\n      iframe.type=\"text/plain\";\n      iframe.onerror = function(e) {\n        if(onFail) {\n          onFail(e);\n        }\n      };\n      // iframe.onload = function(e) {\n      // };\n      document.body.appendChild(iframe);\n      // Even if using the local file system, this will immediately resume\n      // after appending without waiting or blocking.  There is no way to tell\n      // that an iframe has loaded successfully without some kind of a timeout.\n      // Even bad src locations will fire the onload event. An onerror event is\n      // a solid signal that the page failed, but abscense of an onerror on the\n      // iframe is not a confirmation of success or that it hasn't failed.\n      return returns;\n    };\n    function loadData(locations, response, callback) {\n      if (locations.length === 0) callback(null, response);\n      else fetchdocPage(locations.shift())\n        .fail(function(e) {\n          callback(e, null);\n        })\n        .done(function (data) {\n          if (response.length > 0) response += '\\n\\n';\n          response += data;\n          loadData(locations, response, callback);\n        });\n    }\n\n    var url = url instanceof Array ? url : [url];\n    var ret = function(callback) {\n      loadData(url, '', callback);\n    };\n      // Tag the fetcher with the url in case you want it.\n    ret.url = url;\n    return ret;\n  };\n\n  /**\n   * Github fetcher.\n   * Fetches from repo `repo` (in format 'user/repo').\n   *\n   * If the parameter `filepath` is supplied, it fetches the contents of that\n   * given file in the repo's default branch. To fetch the contents of\n   * `filepath` from a different branch, the parameter `ref` should be\n   * supplied with the target branch name.\n   *\n   * See [Runner#run()] for a description of fetcher functions.\n   *\n   * See: http://developer.github.com/v3/repos/contents/\n   */\n  Flatdoc.github = function(opts) {\n    if (typeof opts === 'string') {\n      opts = {\n        repo: arguments[0],\n        filepath: arguments[1]\n      };\n    }\n    var url;\n    if (opts.filepath) {\n      url = 'https://api.github.com/repos/'+opts.repo+'/contents/'+opts.filepath;\n    } else {\n      url = 'https://api.github.com/repos/'+opts.repo+'/readme';\n    }\n    var data = {};\n    if (opts.token) {\n      data.access_token = opts.token;\n    }\n    if (opts.ref) {\n      data.ref = opts.ref;\n    }\n    return function(callback) {\n      $.get(url, data)\n        .fail(function(e) { callback(e, null); })\n        .done(function(data) {\n          var markdown = exports.Base64.decode(data.content);\n          callback(null, markdown);\n        });\n    };\n  };\n\n  /**\n   * Bitbucket fetcher.\n   * Fetches from repo `repo` (in format 'user/repo').\n   *\n   * If the parameter `filepath` is supplied, it fetches the contents of that\n   * given file in the repo.\n   *\n   * See [Runner#run()] for a description of fetcher functions.\n   *\n   * See: https://confluence.atlassian.com/display/BITBUCKET/src+Resources#srcResources-GETrawcontentofanindividualfile\n   * See: http://ben.onfabrik.com/posts/embed-bitbucket-source-code-on-your-website\n   * Bitbucket appears to have stricter restrictions on\n   * Access-Control-Allow-Origin, and so the method here is a bit\n   * more complicated than for Github\n   *\n   * If you don't pass a branch name, then 'default' for Hg repos is assumed\n   * For git, you should pass 'master'. In both cases, you should also be able\n   * to pass in a revision number here -- in Mercurial, this also includes\n   * things like 'tip' or the repo-local integer revision number\n   * Default to Mercurial because Git users historically tend to use GitHub\n   */\n  Flatdoc.bitbucket = function(opts) {\n    if (typeof opts === 'string') {\n      opts = {\n        repo: arguments[0],\n        filepath: arguments[1],\n        branch: arguments[2]\n      };\n    }\n    if (!opts.filepath) opts.filepath = 'readme.md';\n    if (!opts.branch) opts.branch = 'default';\n\n    var url = 'https://bitbucket.org/api/1.0/repositories/'+opts.repo+'/src/'+opts.branch+'/'+opts.filepath;\n\n   return function(callback) {\n     $.ajax({\n      url: url,\n      dataType: 'jsonp',\n      error: function(xhr, status, error) {\n        alert(error);\n      },\n      success: function(response) {\n        var markdown = response.data;\n        callback(null, markdown);\n      }\n  });\n};\n};\n\n  /**\n   * Parser module.\n   * Parses a given Markdown document and returns a JSON object with data\n   * on the Markdown document.\n   *\n   *     var data = Flatdoc.parser.parse('markdown source here');\n   *     console.log(data);\n   *\n   *     data == {\n   *       title: 'My Project',\n   *       content: '<p>This project is a...',\n   *       menu: {...}\n   *     }\n   */\n\n  var Parser = Flatdoc.parser = {};\n\n  /**\n   * Parses a given Markdown document.\n   * See `Parser` for more info.\n   */\n  Parser.parse = function(source, highlight) {\n    marked = exports.marked;\n\n    Parser.setMarkedOptions(highlight);\n\n    var html = $(\"<div>\" + marked(source));\n    var h1 = html.find('h1').eq(0);\n    var title = h1.text();\n\n    // Mangle content\n    Transformer.mangle(html);\n    var menu = Transformer.getMenu(html);\n\n    return { title: title, content: html, menu: menu };\n  };\n\n  Parser.setMarkedOptions = function(highlight) {\n    marked.setOptions({\n      highlight: function(code, lang) {\n        if (lang) {\n          return highlight(code, lang);\n        }\n        return code;\n      }\n    });\n  };\n\n  /**\n   * Transformer module.\n   * This takes care of any HTML mangling needed.  The main entry point is\n   * `.mangle()` which applies all transformations needed.\n   *\n   *     var $content = $(\"<p>Hello there, this is a docu...\");\n   *     Flatdoc.transformer.mangle($content);\n   *\n   * If you would like to change any of the transformations, decorate any of\n   * the functions in `Flatdoc.transformer`.\n   */\n\n  var Transformer = Flatdoc.transformer = {};\n\n  /**\n   * Takes a given HTML `$content` and improves the markup of it by executing\n   * the transformations.\n   *\n   * > See: [Transformer](#transformer)\n   */\n  Transformer.mangle = function($content) {\n    this.addIDs($content);\n    this.buttonize($content);\n    this.smartquotes($content);\n  };\n\n  /**\n   * Adds IDs to headings.\n   */\n\n  Transformer.addIDs = function($content) {\n    var slugs = ['', '', ''];\n    $content.find('h1, h2, h3').each(function() {\n      var $el = $(this);\n      var num = parseInt(this.nodeName[1]);\n      var text = $el.text();\n      var slug = Flatdoc.slugify(text);\n      if (num > 1) slug = slugs[num - 2] + '-' + slug;\n      slugs.length = num - 1;\n      slugs = slugs.concat([slug, slug]);\n      $el.attr('id', slug);\n    });\n  };\n\n  /**\n   * Returns menu data for a given HTML.\n   *\n   *     menu = Flatdoc.transformer.getMenu($content);\n   *     menu == {\n   *       level: 0,\n   *       items: [{\n   *         section: \"Getting started\",\n   *         level: 1,\n   *         items: [...]}, ...]}\n   */\n\n  Transformer.getMenu = function($content) {\n    var root = {items: [], id: '', level: 0};\n    var cache = [root];\n\n    function mkdir_p(level) {\n      cache.length = level + 1;\n      var obj = cache[level];\n      if (!obj) {\n        var parent = (level > 1) ? mkdir_p(level-1) : root;\n        obj = { items: [], level: level };\n        cache = cache.concat([obj, obj]);\n        parent.items.push(obj);\n      }\n      return obj;\n    }\n\n    $content.find('h1, h2, h3').each(function() {\n      var $el = $(this);\n      var level = +(this.nodeName.substr(1));\n\n      var parent = mkdir_p(level-1);\n\n      var obj = { section: $el.text(), items: [], level: level, id: $el.attr('id') };\n      parent.items.push(obj);\n      cache[level] = obj;\n    });\n\n    return root;\n  };\n\n  /**\n   * Changes \"button >\" text to buttons.\n   */\n\n  Transformer.buttonize = function($content) {\n    $content.find('a').each(function() {\n      var $a = $(this);\n\n      var m = $a.text().match(/^(.*) >$/);\n      if (m) $a.text(m[1]).addClass('button');\n    });\n  };\n\n  /**\n   * Applies smart quotes to a given element.\n   * It leaves `code` and `pre` blocks alone.\n   */\n\n  Transformer.smartquotes = function ($content) {\n    var nodes = getTextNodesIn($content), len = nodes.length;\n    for (var i=0; i<len; i++) {\n      var node = nodes[i];\n      node.nodeValue = quotify(node.nodeValue);\n    }\n  };\n\n  /**\n   * Syntax highlighters.\n   *\n   * You may add or change more highlighters via the `Flatdoc.highlighters`\n   * object.\n   *\n   *     Flatdoc.highlighters.js = function(code) {\n   *     };\n   *\n   * Each of these functions\n   */\n\n  var Highlighters = Flatdoc.highlighters = {};\n\n  /**\n   * JavaScript syntax highlighter.\n   *\n   * Thanks @visionmedia!\n   */\n\n  Highlighters.js = Highlighters.javascript = function(code) {\n    return code\n      .replace(/</g, '&lt;')\n      .replace(/>/g, '&gt;')\n      .replace(/(\"[^\\\"]*?\")/g, '<span class=\"string\">$1</span>')\n      .replace(/('[^\\']*?')/g, '<span class=\"string\">$1</span>')\n      .replace(/\\/\\/(.*)/gm, '<span class=\"comment\">//$1</span>')\n      .replace(/\\/\\*(.*)\\*\\//gm, '<span class=\"comment\">/*$1*/</span>')\n      .replace(/(\\d+\\.\\d+)/gm, '<span class=\"number\">$1</span>')\n      .replace(/(\\d+)/gm, '<span class=\"number\">$1</span>')\n      .replace(/\\bnew *(\\w+)/gm, '<span class=\"keyword\">new</span> <span class=\"init\">$1</span>')\n      .replace(/\\b(function|new|throw|return|var|if|else)\\b/gm, '<span class=\"keyword\">$1</span>');\n  };\n\n  Highlighters.html = function(code) {\n    return code\n      .replace(/</g, '&lt;')\n      .replace(/>/g, '&gt;')\n      .replace(/(\"[^\\\"]*?\")/g, '<span class=\"string\">$1</span>')\n      .replace(/('[^\\']*?')/g, '<span class=\"string\">$1</span>')\n      .replace(/&lt;!--(.*)--&gt;/g, '<span class=\"comment\">&lt;!--$1--&gt;</span>')\n      .replace(/&lt;([^!][^\\s&]*)/g, '&lt;<span class=\"keyword\">$1</span>');\n  };\n\n  Highlighters.generic = function(code) {\n    return code\n      .replace(/</g, '&lt;')\n      .replace(/>/g, '&gt;')\n      .replace(/(\"[^\\\"]*?\")/g, '<span class=\"string\">$1</span>')\n      .replace(/('[^\\']*?')/g, '<span class=\"string\">$1</span>')\n      .replace(/(\\/\\/|#)(.*)/gm, '<span class=\"comment\">$1$2</span>')\n      .replace(/(\\d+\\.\\d+)/gm, '<span class=\"number\">$1</span>')\n      .replace(/(\\d+)/gm, '<span class=\"number\">$1</span>');\n  };\n\n  /**\n   * Menu view. Renders menus\n   */\n\n  var MenuView = Flatdoc.menuView = function(menu) {\n    var $el = $(\"<ul>\");\n\n    function process(node, $parent) {\n      var id = node.id || 'root';\n\n      var $li = $('<li>')\n        .attr('id', id + '-item')\n        .addClass('level-' + node.level)\n        .appendTo($parent);\n\n      if (node.section) {\n        var $a = $('<a>')\n          .html(node.section)\n          .attr('id', id + '-link')\n          .attr('href', '#' + node.id)\n          .addClass('level-' + node.level)\n          .appendTo($li);\n      }\n\n      if (node.items.length > 0) {\n        var $ul = $('<ul>')\n          .addClass('level-' + (node.level+1))\n          .attr('id', id + '-list')\n          .appendTo($li);\n\n        node.items.forEach(function(item) {\n          process(item, $ul);\n        });\n      }\n    }\n\n    process(menu, $el);\n    return $el;\n  };\n\n  /**\n   * A runner module that fetches via a `fetcher` function.\n   *\n   *     var runner = new Flatdoc.runner({\n   *       fetcher: Flatdoc.url('readme.txt')\n   *     });\n   *     runner.run();\n   *\n   * The following options are available:\n   *\n   *  - `fetcher` - a function that takes a callback as an argument and\n   *    executes that callback when data is returned.\n   *\n   * See: [Flatdoc.run()]\n   */\n\n  var Runner = Flatdoc.runner = function(options) {\n    this.initialize(options);\n  };\n\n  Runner.prototype.root    = '[role~=\"flatdoc\"]';\n  Runner.prototype.menu    = '[role~=\"flatdoc-menu\"]';\n  Runner.prototype.title   = '[role~=\"flatdoc-title\"]';\n  Runner.prototype.content = '[role~=\"flatdoc-content\"]';\n\n  Runner.prototype.initialize = function(options) {\n    $.extend(this, options);\n  };\n\n  /**\n   * Syntax highlighting.\n   *\n   * You may define a custom highlight function such as `highlight` from\n   * the highlight.js library.\n   *\n   *     Flatdoc.run({\n   *       highlight: function (code, value) {\n   *         return hljs.highlight(lang, code).value;\n   *       },\n   *       ...\n   *     });\n   *\n   */\n\n  Runner.prototype.highlight = function(code, lang) {\n    var fn = Flatdoc.highlighters[lang] || Flatdoc.highlighters.generic;\n    return fn(code);\n  };\n\n  /**\n   * Loads the Markdown document (via the fetcher), parses it, and applies it\n   * to the elements.\n   */\n\n  Runner.prototype.run = function() {\n    var doc = this;\n    $(doc.root).trigger('flatdoc:loading');\n    // If this *is* an already rendered snapshot, then no need to render\n    // anything. Just fire off the ready events so that hacky jquery code can\n    // perform resizing etc.\n    if(window.location.pathname.indexOf('.dev.html') !== (window.location.pathname.length - '.dev.html'.length)) {\n      $(doc.root).trigger('flatdoc:style-ready');\n      $(doc.root).trigger('flatdoc:ready');\n      return;\n    }\n    var fetchedStylus = false;\n    var stylus = false;\n    var fetchedMarkdown = false;\n    var markdown = null;\n    function checkDone() {\n      if(fetchedStylus && fetchedMarkdown) {\n        var styleCss = null;\n        if(stylus) {\n          window.stylus.render(stylus, function(err, result) {\n            if(err) {\n              console.error('Stylus error:' + err.message);\n              throw err;\n            } else {\n              styleCss = result;\n            }\n          });\n          var style = document.createElement('style');\n          style.type = 'text/css';\n          style.name = 'style generated from .styl.html file';\n          style.innerHTML = styleCss;\n          document.getElementsByTagName('head')[0].appendChild(style);\n        }\n        $(doc.root).trigger('flatdoc:style-ready');\n        /**\n         * The user can put this in their html file to:\n         * 1. Get vim syntax highlighting to work.\n         * 2. Get github to treat their html/htm file as a markdown file for rendering.\n         * 3. Load the script tag only when rendered with ReFresh.\n         *\n         * [ vim:syntax=Markdown ]: # (<script src=\"flatdoc.js\"></script>)\n         *\n         * Only downside is that it leaves a dangling ) in the text returned to\n         * us which we can easily normalize.\n         */\n        if(markdown[0] === ')' && markdown[1] === '\\n') {\n          markdown = markdown.substring(2);\n        }\n        var data = Flatdoc.parser.parse(markdown, doc.highlight);\n        doc.applyData(data, doc);\n        var id = location.hash.substr(1);\n        if (id) {\n          var el = document.getElementById(id);\n          if (el) el.scrollIntoView(true);\n        }\n        $(doc.root).trigger('flatdoc:ready');\n      }\n    };\n    if(doc.stylusFetcher) {\n      doc.stylusFetcher(function(err, st) { // Will run sync\n        if (err) {\n          console.error('[Flatdoc] fetching Stylus data failed.', err);\n          return;\n        }\n        fetchedStylus = true;\n        stylus = st;\n        checkDone();\n      });\n    } else {\n      fetchedStylus = true;\n    }\n    doc.fetcher(function(err, md) {\n      if (err) {\n        console.error('[Flatdoc] fetching Markdown data failed.', err);\n        return;\n      }\n      fetchedMarkdown = true;\n      markdown = md;\n      checkDone();\n    });\n  };\n\n  /**\n   * Applies given doc data `data` to elements in object `elements`.\n   */\n\n  Runner.prototype.applyData = function(data) {\n    var elements = this;\n    elements.el('title').html(data.title);\n    elements.el('content').html(data.content.find('>*'));\n    elements.el('menu').html(MenuView(data.menu));\n  };\n\n  /**\n   * Fetches a given element from the DOM.\n   *\n   * Returns a jQuery object.\n   * @api private\n   */\n\n  Runner.prototype.el = function(aspect) {\n    return $(this[aspect], this.root);\n  };\n\n  /*\n   * Helpers\n   */\n\n  // http://stackoverflow.com/questions/298750/how-do-i-select-text-nodes-with-jquery\n  function getTextNodesIn(el) {\n    var exclude = 'iframe,pre,code';\n    return $(el).find(':not('+exclude+')').andSelf().contents().filter(function() {\n      return this.nodeType == 3 && $(this).closest(exclude).length === 0;\n    });\n  }\n\n  // http://www.leancrew.com/all-this/2010/11/smart-quotes-in-javascript/\n  function quotify(a) {\n    a = a.replace(/(^|[\\-\\u2014\\s(\\[\"])'/g, \"$1\\u2018\");        // opening singles\n    a = a.replace(/'/g, \"\\u2019\");                              // closing singles & apostrophes\n    a = a.replace(/(^|[\\-\\u2014\\/\\[(\\u2018\\s])\"/g, \"$1\\u201c\"); // opening doubles\n    a = a.replace(/\"/g, \"\\u201d\");                              // closing doubles\n    a = a.replace(/\\.\\.\\./g, \"\\u2026\");                         // ellipses\n    a = a.replace(/--/g, \"\\u2014\");                             // em-dashes\n    return a;\n  }\n\n})(jQuery);\n\n/* jshint ignore:start */\n\n/*!\n * marked - a markdown parser\n * Copyright (c) 2011-2013, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/chjj/marked\n */\n\n(function(){var t={newline:/^\\n+/,code:/^( {4}[^\\n]+\\n*)+/,fences:o,hr:/^( *[-*_]){3,} *(?:\\n+|$)/,heading:/^ *(#{1,6}) *([^\\n]+?) *#* *(?:\\n+|$)/,nptable:o,lheading:/^([^\\n]+)\\n *(=|-){3,} *\\n*/,blockquote:/^( *>[^\\n]+(\\n[^\\n]+)*\\n*)+/,list:/^( *)(bull) [\\s\\S]+?(?:hr|\\n{2,}(?! )(?!\\1bull )\\n*|\\s*$)/,html:/^ *(?:comment|closed|closing) *(?:\\n{2,}|\\s*$)/,def:/^ *\\[([^\\]]+)\\]: *<?([^\\s>]+)>?(?: +[\"(]([^\\n]+)[\")])? *(?:\\n+|$)/,table:o,paragraph:/^((?:[^\\n]+\\n?(?!hr|heading|lheading|blockquote|tag|def))+)\\n*/,text:/^[^\\n]+/};t.bullet=/(?:[*+-]|\\d+\\.)/;t.item=/^( *)(bull) [^\\n]*(?:\\n(?!\\1bull )[^\\n]*)*/;t.item=l(t.item,\"gm\")(/bull/g,t.bullet)();t.list=l(t.list)(/bull/g,t.bullet)(\"hr\",/\\n+(?=(?: *[-*_]){3,} *(?:\\n+|$))/)();t._tag=\"(?!(?:\"+\"a|em|strong|small|s|cite|q|dfn|abbr|data|time|code\"+\"|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo\"+\"|span|br|wbr|ins|del|img)\\\\b)\\\\w+(?!:/|@)\\\\b\";t.html=l(t.html)(\"comment\",/<!--[\\s\\S]*?-->/)(\"closed\",/<(tag)[\\s\\S]+?<\\/\\1>/)(\"closing\",/<tag(?:\"[^\"]*\"|'[^']*'|[^'\">])*?>/)(/tag/g,t._tag)();t.paragraph=l(t.paragraph)(\"hr\",t.hr)(\"heading\",t.heading)(\"lheading\",t.lheading)(\"blockquote\",t.blockquote)(\"tag\",\"<\"+t._tag)(\"def\",t.def)();t.normal=h({},t);t.gfm=h({},t.normal,{fences:/^ *(`{3,}|~{3,}) *(\\S+)? *\\n([\\s\\S]+?)\\s*\\1 *(?:\\n+|$)/,paragraph:/^/});t.gfm.paragraph=l(t.paragraph)(\"(?!\",\"(?!\"+t.gfm.fences.source.replace(\"\\\\1\",\"\\\\2\")+\"|\")();t.tables=h({},t.gfm,{nptable:/^ *(\\S.*\\|.*)\\n *([-:]+ *\\|[-| :]*)\\n((?:.*\\|.*(?:\\n|$))*)\\n*/,table:/^ *\\|(.+)\\n *\\|( *[-:]+[-| :]*)\\n((?: *\\|.*(?:\\n|$))*)\\n*/});function e(e){this.tokens=[];this.tokens.links={};this.options=e||a.defaults;this.rules=t.normal;if(this.options.gfm){if(this.options.tables){this.rules=t.tables}else{this.rules=t.gfm}}}e.rules=t;e.lex=function(t,n){var s=new e(n);return s.lex(t)};e.prototype.lex=function(t){t=t.replace(/\\r\\n|\\r/g,\"\\n\").replace(/\\t/g,\"    \").replace(/\\u00a0/g,\" \").replace(/\\u2424/g,\"\\n\");return this.token(t,true)};e.prototype.token=function(e,n){var e=e.replace(/^ +$/gm,\"\"),s,i,r,l,o,h,a,u,p;while(e){if(r=this.rules.newline.exec(e)){e=e.substring(r[0].length);if(r[0].length>1){this.tokens.push({type:\"space\"})}}if(r=this.rules.code.exec(e)){e=e.substring(r[0].length);r=r[0].replace(/^ {4}/gm,\"\");this.tokens.push({type:\"code\",text:!this.options.pedantic?r.replace(/\\n+$/,\"\"):r});continue}if(r=this.rules.fences.exec(e)){e=e.substring(r[0].length);this.tokens.push({type:\"code\",lang:r[2],text:r[3]});continue}if(r=this.rules.heading.exec(e)){e=e.substring(r[0].length);this.tokens.push({type:\"heading\",depth:r[1].length,text:r[2]});continue}if(n&&(r=this.rules.nptable.exec(e))){e=e.substring(r[0].length);h={type:\"table\",header:r[1].replace(/^ *| *\\| *$/g,\"\").split(/ *\\| */),align:r[2].replace(/^ *|\\| *$/g,\"\").split(/ *\\| */),cells:r[3].replace(/\\n$/,\"\").split(\"\\n\")};for(u=0;u<h.align.length;u++){if(/^ *-+: *$/.test(h.align[u])){h.align[u]=\"right\"}else if(/^ *:-+: *$/.test(h.align[u])){h.align[u]=\"center\"}else if(/^ *:-+ *$/.test(h.align[u])){h.align[u]=\"left\"}else{h.align[u]=null}}for(u=0;u<h.cells.length;u++){h.cells[u]=h.cells[u].split(/ *\\| */)}this.tokens.push(h);continue}if(r=this.rules.lheading.exec(e)){e=e.substring(r[0].length);this.tokens.push({type:\"heading\",depth:r[2]===\"=\"?1:2,text:r[1]});continue}if(r=this.rules.hr.exec(e)){e=e.substring(r[0].length);this.tokens.push({type:\"hr\"});continue}if(r=this.rules.blockquote.exec(e)){e=e.substring(r[0].length);this.tokens.push({type:\"blockquote_start\"});r=r[0].replace(/^ *> ?/gm,\"\");this.token(r,n);this.tokens.push({type:\"blockquote_end\"});continue}if(r=this.rules.list.exec(e)){e=e.substring(r[0].length);l=r[2];this.tokens.push({type:\"list_start\",ordered:l.length>1});r=r[0].match(this.rules.item);s=false;p=r.length;u=0;for(;u<p;u++){h=r[u];a=h.length;h=h.replace(/^ *([*+-]|\\d+\\.) +/,\"\");if(~h.indexOf(\"\\n \")){a-=h.length;h=!this.options.pedantic?h.replace(new RegExp(\"^ {1,\"+a+\"}\",\"gm\"),\"\"):h.replace(/^ {1,4}/gm,\"\")}if(this.options.smartLists&&u!==p-1){o=t.bullet.exec(r[u+1])[0];if(l!==o&&!(l.length>1&&o.length>1)){e=r.slice(u+1).join(\"\\n\")+e;u=p-1}}i=s||/\\n\\n(?!\\s*$)/.test(h);if(u!==p-1){s=h[h.length-1]===\"\\n\";if(!i)i=s}this.tokens.push({type:i?\"loose_item_start\":\"list_item_start\"});this.token(h,false);this.tokens.push({type:\"list_item_end\"})}this.tokens.push({type:\"list_end\"});continue}if(r=this.rules.html.exec(e)){e=e.substring(r[0].length);this.tokens.push({type:this.options.sanitize?\"paragraph\":\"html\",pre:r[1]===\"pre\"||r[1]===\"script\",text:r[0]});continue}if(n&&(r=this.rules.def.exec(e))){e=e.substring(r[0].length);this.tokens.links[r[1].toLowerCase()]={href:r[2],title:r[3]};continue}if(n&&(r=this.rules.table.exec(e))){e=e.substring(r[0].length);h={type:\"table\",header:r[1].replace(/^ *| *\\| *$/g,\"\").split(/ *\\| */),align:r[2].replace(/^ *|\\| *$/g,\"\").split(/ *\\| */),cells:r[3].replace(/(?: *\\| *)?\\n$/,\"\").split(\"\\n\")};for(u=0;u<h.align.length;u++){if(/^ *-+: *$/.test(h.align[u])){h.align[u]=\"right\"}else if(/^ *:-+: *$/.test(h.align[u])){h.align[u]=\"center\"}else if(/^ *:-+ *$/.test(h.align[u])){h.align[u]=\"left\"}else{h.align[u]=null}}for(u=0;u<h.cells.length;u++){h.cells[u]=h.cells[u].replace(/^ *\\| *| *\\| *$/g,\"\").split(/ *\\| */)}this.tokens.push(h);continue}if(n&&(r=this.rules.paragraph.exec(e))){e=e.substring(r[0].length);this.tokens.push({type:\"paragraph\",text:r[1][r[1].length-1]===\"\\n\"?r[1].slice(0,-1):r[1]});continue}if(r=this.rules.text.exec(e)){e=e.substring(r[0].length);this.tokens.push({type:\"text\",text:r[0]});continue}if(e){throw new Error(\"Infinite loop on byte: \"+e.charCodeAt(0))}}return this.tokens};var n={escape:/^\\\\([\\\\`*{}\\[\\]()#+\\-.!_>])/,autolink:/^<([^ >]+(@|:\\/)[^ >]+)>/,url:o,tag:/^<!--[\\s\\S]*?-->|^<\\/?\\w+(?:\"[^\"]*\"|'[^']*'|[^'\">])*?>/,link:/^!?\\[(inside)\\]\\(href\\)/,reflink:/^!?\\[(inside)\\]\\s*\\[([^\\]]*)\\]/,nolink:/^!?\\[((?:\\[[^\\]]*\\]|[^\\[\\]])*)\\]/,strong:/^__([\\s\\S]+?)__(?!_)|^\\*\\*([\\s\\S]+?)\\*\\*(?!\\*)/,em:/^\\b_((?:__|[\\s\\S])+?)_\\b|^\\*((?:\\*\\*|[\\s\\S])+?)\\*(?!\\*)/,code:/^(`+)\\s*([\\s\\S]*?[^`])\\s*\\1(?!`)/,br:/^ {2,}\\n(?!\\s*$)/,del:o,text:/^[\\s\\S]+?(?=[\\\\<!\\[_*`]| {2,}\\n|$)/};n._inside=/(?:\\[[^\\]]*\\]|[^\\]]|\\](?=[^\\[]*\\]))*/;n._href=/\\s*<?([^\\s]*?)>?(?:\\s+['\"]([\\s\\S]*?)['\"])?\\s*/;n.link=l(n.link)(\"inside\",n._inside)(\"href\",n._href)();n.reflink=l(n.reflink)(\"inside\",n._inside)();n.normal=h({},n);n.pedantic=h({},n.normal,{strong:/^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,em:/^_(?=\\S)([\\s\\S]*?\\S)_(?!_)|^\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)/});n.gfm=h({},n.normal,{escape:l(n.escape)(\"])\",\"~|])\")(),url:/^(https?:\\/\\/[^\\s<]+[^<.,:;\"')\\]\\s])/,del:/^~~(?=\\S)([\\s\\S]*?\\S)~~/,text:l(n.text)(\"]|\",\"~]|\")(\"|\",\"|https?://|\")()});n.breaks=h({},n.gfm,{br:l(n.br)(\"{2,}\",\"*\")(),text:l(n.gfm.text)(\"{2,}\",\"*\")()});function s(t,e){this.options=e||a.defaults;this.links=t;this.rules=n.normal;if(!this.links){throw new Error(\"Tokens array requires a `links` property.\")}if(this.options.gfm){if(this.options.breaks){this.rules=n.breaks}else{this.rules=n.gfm}}else if(this.options.pedantic){this.rules=n.pedantic}}s.rules=n;s.output=function(t,e,n){var i=new s(e,n);return i.output(t)};s.prototype.output=function(t){var e=\"\",n,s,i,l;while(t){if(l=this.rules.escape.exec(t)){t=t.substring(l[0].length);e+=l[1];continue}if(l=this.rules.autolink.exec(t)){t=t.substring(l[0].length);if(l[2]===\"@\"){s=l[1][6]===\":\"?this.mangle(l[1].substring(7)):this.mangle(l[1]);i=this.mangle(\"mailto:\")+s}else{s=r(l[1]);i=s}e+='<a href=\"'+i+'\">'+s+\"</a>\";continue}if(l=this.rules.url.exec(t)){t=t.substring(l[0].length);s=r(l[1]);i=s;e+='<a href=\"'+i+'\">'+s+\"</a>\";continue}if(l=this.rules.tag.exec(t)){t=t.substring(l[0].length);e+=this.options.sanitize?r(l[0]):l[0];continue}if(l=this.rules.link.exec(t)){t=t.substring(l[0].length);e+=this.outputLink(l,{href:l[2],title:l[3]});continue}if((l=this.rules.reflink.exec(t))||(l=this.rules.nolink.exec(t))){t=t.substring(l[0].length);n=(l[2]||l[1]).replace(/\\s+/g,\" \");n=this.links[n.toLowerCase()];if(!n||!n.href){e+=l[0][0];t=l[0].substring(1)+t;continue}e+=this.outputLink(l,n);continue}if(l=this.rules.strong.exec(t)){t=t.substring(l[0].length);e+=\"<strong>\"+this.output(l[2]||l[1])+\"</strong>\";continue}if(l=this.rules.em.exec(t)){t=t.substring(l[0].length);e+=\"<em>\"+this.output(l[2]||l[1])+\"</em>\";continue}if(l=this.rules.code.exec(t)){t=t.substring(l[0].length);e+=\"<code>\"+r(l[2],true)+\"</code>\";continue}if(l=this.rules.br.exec(t)){t=t.substring(l[0].length);e+=\"<br>\";continue}if(l=this.rules.del.exec(t)){t=t.substring(l[0].length);e+=\"<del>\"+this.output(l[1])+\"</del>\";continue}if(l=this.rules.text.exec(t)){t=t.substring(l[0].length);e+=r(l[0]);continue}if(t){throw new Error(\"Infinite loop on byte: \"+t.charCodeAt(0))}}return e};s.prototype.outputLink=function(t,e){if(t[0][0]!==\"!\"){return'<a href=\"'+r(e.href)+'\"'+(e.title?' title=\"'+r(e.title)+'\"':\"\")+\">\"+this.output(t[1])+\"</a>\"}else{return'<img src=\"'+r(e.href)+'\" alt=\"'+r(t[1])+'\"'+(e.title?' title=\"'+r(e.title)+'\"':\"\")+\">\"}};s.prototype.smartypants=function(t){if(!this.options.smartypants)return t;return t.replace(/--/g,\"—\").replace(/'([^']*)'/g,\"‘$1’\").replace(/\"([^\"]*)\"/g,\"“$1”\").replace(/\\.{3}/g,\"…\")};s.prototype.mangle=function(t){var e=\"\",n=t.length,s=0,i;for(;s<n;s++){i=t.charCodeAt(s);if(Math.random()>.5){i=\"x\"+i.toString(16)}e+=\"&#\"+i+\";\"}return e};function i(t){this.tokens=[];this.token=null;this.options=t||a.defaults}i.parse=function(t,e){var n=new i(e);return n.parse(t)};i.prototype.parse=function(t){this.inline=new s(t.links,this.options);this.tokens=t.reverse();var e=\"\";while(this.next()){e+=this.tok()}return e};i.prototype.next=function(){return this.token=this.tokens.pop()};i.prototype.peek=function(){return this.tokens[this.tokens.length-1]||0};i.prototype.parseText=function(){var t=this.token.text;while(this.peek().type===\"text\"){t+=\"\\n\"+this.next().text}return this.inline.output(t)};i.prototype.tok=function(){switch(this.token.type){case\"space\":{return\"\"}case\"hr\":{return\"<hr>\\n\"}case\"heading\":{return\"<h\"+this.token.depth+\">\"+this.inline.output(this.token.text)+\"</h\"+this.token.depth+\">\\n\"}case\"code\":{if(this.options.highlight){var t=this.options.highlight(this.token.text,this.token.lang);if(t!=null&&t!==this.token.text){this.token.escaped=true;this.token.text=t}}if(!this.token.escaped){this.token.text=r(this.token.text,true)}return\"<pre><code\"+(this.token.lang?' class=\"'+this.options.langPrefix+this.token.lang+'\"':\"\")+\">\"+this.token.text+\"</code></pre>\\n\"}case\"table\":{var e=\"\",n,s,i,l,o;e+=\"<thead>\\n<tr>\\n\";for(s=0;s<this.token.header.length;s++){n=this.inline.output(this.token.header[s]);e+=this.token.align[s]?'<th align=\"'+this.token.align[s]+'\">'+n+\"</th>\\n\":\"<th>\"+n+\"</th>\\n\"}e+=\"</tr>\\n</thead>\\n\";e+=\"<tbody>\\n\";for(s=0;s<this.token.cells.length;s++){i=this.token.cells[s];e+=\"<tr>\\n\";for(o=0;o<i.length;o++){l=this.inline.output(i[o]);e+=this.token.align[o]?'<td align=\"'+this.token.align[o]+'\">'+l+\"</td>\\n\":\"<td>\"+l+\"</td>\\n\"}e+=\"</tr>\\n\"}e+=\"</tbody>\\n\";return\"<table>\\n\"+e+\"</table>\\n\"}case\"blockquote_start\":{var e=\"\";while(this.next().type!==\"blockquote_end\"){e+=this.tok()}return\"<blockquote>\\n\"+e+\"</blockquote>\\n\"}case\"list_start\":{var h=this.token.ordered?\"ol\":\"ul\",e=\"\";while(this.next().type!==\"list_end\"){e+=this.tok()}return\"<\"+h+\">\\n\"+e+\"</\"+h+\">\\n\"}case\"list_item_start\":{var e=\"\";while(this.next().type!==\"list_item_end\"){e+=this.token.type===\"text\"?this.parseText():this.tok()}return\"<li>\"+e+\"</li>\\n\"}case\"loose_item_start\":{var e=\"\";while(this.next().type!==\"list_item_end\"){e+=this.tok()}return\"<li>\"+e+\"</li>\\n\"}case\"html\":{return!this.token.pre&&!this.options.pedantic?this.inline.output(this.token.text):this.token.text}case\"paragraph\":{return\"<p>\"+this.inline.output(this.token.text)+\"</p>\\n\"}case\"text\":{return\"<p>\"+this.parseText()+\"</p>\\n\"}}};function r(t,e){return t.replace(!e?/&(?!#?\\w+;)/g:/&/g,\"&amp;\").replace(/</g,\"&lt;\").replace(/>/g,\"&gt;\").replace(/\"/g,\"&quot;\").replace(/'/g,\"&#39;\")}function l(t,e){t=t.source;e=e||\"\";return function n(s,i){if(!s)return new RegExp(t,e);i=i.source||i;i=i.replace(/(^|[^\\[])\\^/g,\"$1\");t=t.replace(s,i);return n}}function o(){}o.exec=o;function h(t){var e=1,n,s;for(;e<arguments.length;e++){n=arguments[e];for(s in n){if(Object.prototype.hasOwnProperty.call(n,s)){t[s]=n[s]}}}return t}function a(t,n,s){if(s||typeof n===\"function\"){if(!s){s=n;n=null}if(n)n=h({},a.defaults,n);var l=e.lex(l,n),o=n.highlight,u=0,p=l.length,g=0;if(!o||o.length<3){return s(null,i.parse(l,n))}var c=function(){delete n.highlight;var t=i.parse(l,n);n.highlight=o;return s(null,t)};for(;g<p;g++){(function(t){if(t.type!==\"code\")return;u++;return o(t.text,t.lang,function(e,n){if(n==null||n===t.text){return--u||c()}t.text=n;t.escaped=true;--u||c()})})(l[g])}return}try{if(n)n=h({},a.defaults,n);return i.parse(e.lex(t,n),n)}catch(f){f.message+=\"\\nPlease report this to https://github.com/chjj/marked.\";if((n||a.defaults).silent){return\"<p>An error occured:</p><pre>\"+r(f.message+\"\",true)+\"</pre>\"}throw f}}a.options=a.setOptions=function(t){h(a.defaults,t);return a};a.defaults={gfm:true,tables:true,breaks:false,pedantic:false,sanitize:false,smartLists:false,silent:false,highlight:null,langPrefix:\"lang-\"};a.Parser=i;a.parser=i.parse;a.Lexer=e;a.lexer=e.lex;a.InlineLexer=s;a.inlineLexer=s.output;a.parse=a;if(typeof exports===\"object\"){module.exports=a}else if(typeof define===\"function\"&&define.amd){define(function(){return a})}else{this.marked=a}}).call(function(){return this||(typeof window!==\"undefined\"?window:global)}());\n\n/*!\n * base64.js\n * http://github.com/dankogai/js-base64\n */\n\n(function(r){\"use strict\";if(r.Base64)return;var e=\"2.1.2\";var t;if(typeof module!==\"undefined\"&&module.exports){t=require(\"buffer\").Buffer}var n=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";var a=function(r){var e={};for(var t=0,n=r.length;t<n;t++)e[r.charAt(t)]=t;return e}(n);var o=String.fromCharCode;var u=function(r){if(r.length<2){var e=r.charCodeAt(0);return e<128?r:e<2048?o(192|e>>>6)+o(128|e&63):o(224|e>>>12&15)+o(128|e>>>6&63)+o(128|e&63)}else{var e=65536+(r.charCodeAt(0)-55296)*1024+(r.charCodeAt(1)-56320);return o(240|e>>>18&7)+o(128|e>>>12&63)+o(128|e>>>6&63)+o(128|e&63)}};var c=/[\\uD800-\\uDBFF][\\uDC00-\\uDFFFF]|[^\\x00-\\x7F]/g;var i=function(r){return r.replace(c,u)};var f=function(r){var e=[0,2,1][r.length%3],t=r.charCodeAt(0)<<16|(r.length>1?r.charCodeAt(1):0)<<8|(r.length>2?r.charCodeAt(2):0),a=[n.charAt(t>>>18),n.charAt(t>>>12&63),e>=2?\"=\":n.charAt(t>>>6&63),e>=1?\"=\":n.charAt(t&63)];return a.join(\"\")};var h=r.btoa||function(r){return r.replace(/[\\s\\S]{1,3}/g,f)};var d=t?function(r){return new t(r).toString(\"base64\")}:function(r){return h(i(r))};var v=function(r,e){return!e?d(r):d(r).replace(/[+\\/]/g,function(r){return r==\"+\"?\"-\":\"_\"}).replace(/=/g,\"\")};var g=function(r){return v(r,true)};var l=new RegExp([\"[À-ß][-¿]\",\"[à-ï][-¿]{2}\",\"[ð-÷][-¿]{3}\"].join(\"|\"),\"g\");var A=function(r){switch(r.length){case 4:var e=(7&r.charCodeAt(0))<<18|(63&r.charCodeAt(1))<<12|(63&r.charCodeAt(2))<<6|63&r.charCodeAt(3),t=e-65536;return o((t>>>10)+55296)+o((t&1023)+56320);case 3:return o((15&r.charCodeAt(0))<<12|(63&r.charCodeAt(1))<<6|63&r.charCodeAt(2));default:return o((31&r.charCodeAt(0))<<6|63&r.charCodeAt(1))}};var s=function(r){return r.replace(l,A)};var p=function(r){var e=r.length,t=e%4,n=(e>0?a[r.charAt(0)]<<18:0)|(e>1?a[r.charAt(1)]<<12:0)|(e>2?a[r.charAt(2)]<<6:0)|(e>3?a[r.charAt(3)]:0),u=[o(n>>>16),o(n>>>8&255),o(n&255)];u.length-=[0,0,2,1][t];return u.join(\"\")};var C=r.atob||function(r){return r.replace(/[\\s\\S]{1,4}/g,p)};var b=t?function(r){return new t(r,\"base64\").toString()}:function(r){return s(C(r))};var B=function(r){return b(r.replace(/[-_]/g,function(r){return r==\"-\"?\"+\":\"/\"}).replace(/[^A-Za-z0-9\\+\\/]/g,\"\"))};r.Base64={VERSION:e,atob:C,btoa:h,fromBase64:B,toBase64:v,utob:i,encode:v,encodeURI:g,btou:s,decode:B};if(typeof Object.defineProperty===\"function\"){var S=function(r){return{value:r,enumerable:false,writable:true,configurable:true}};r.Base64.extendString=function(){Object.defineProperty(String.prototype,\"fromBase64\",S(function(){return B(this)}));Object.defineProperty(String.prototype,\"toBase64\",S(function(r){return v(this,r)}));Object.defineProperty(String.prototype,\"toBase64URI\",S(function(){return v(this,true)}))}}})(this);\n\n/*!\n * node-parameterize 0.0.7\n * https://github.com/fyalavuz/node-parameterize\n * Exported as `Flatdoc.slugify`\n */\n\n(function(r){var LATIN_MAP={\"À\":\"A\",\"Á\":\"A\",\"Â\":\"A\",\"Ã\":\"A\",\"Ä\":\"A\",\"Å\":\"A\",\"Æ\":\"AE\",\"Ç\":\"C\",\"È\":\"E\",\"É\":\"E\",\"Ê\":\"E\",\"Ë\":\"E\",\"Ì\":\"I\",\"Í\":\"I\",\"Î\":\"I\",\"Ï\":\"I\",\"Ð\":\"D\",\"Ñ\":\"N\",\"Ò\":\"O\",\"Ó\":\"O\",\"Ô\":\"O\",\"Õ\":\"O\",\"Ö\":\"O\",\"Ő\":\"O\",\"Ø\":\"O\",\"Ù\":\"U\",\"Ú\":\"U\",\"Û\":\"U\",\"Ü\":\"U\",\"Ű\":\"U\",\"Ý\":\"Y\",\"Þ\":\"TH\",\"ß\":\"ss\",\"à\":\"a\",\"á\":\"a\",\"â\":\"a\",\"ã\":\"a\",\"ä\":\"a\",\"å\":\"a\",\"æ\":\"ae\",\"ç\":\"c\",\"è\":\"e\",\"é\":\"e\",\"ê\":\"e\",\"ë\":\"e\",\"ì\":\"i\",\"í\":\"i\",\"î\":\"i\",\"ï\":\"i\",\"ð\":\"d\",\"ñ\":\"n\",\"ò\":\"o\",\"ó\":\"o\",\"ô\":\"o\",\"õ\":\"o\",\"ö\":\"o\",\"ő\":\"o\",\"ø\":\"o\",\"ù\":\"u\",\"ú\":\"u\",\"û\":\"u\",\"ü\":\"u\",\"ű\":\"u\",\"ý\":\"y\",\"þ\":\"th\",\"ÿ\":\"y\"};var LATIN_SYMBOLS_MAP={\"©\":\"(c)\"};var GREEK_MAP={\"α\":\"a\",\"β\":\"b\",\"γ\":\"g\",\"δ\":\"d\",\"ε\":\"e\",\"ζ\":\"z\",\"η\":\"h\",\"θ\":\"8\",\"ι\":\"i\",\"κ\":\"k\",\"λ\":\"l\",\"μ\":\"m\",\"ν\":\"n\",\"ξ\":\"3\",\"ο\":\"o\",\"π\":\"p\",\"ρ\":\"r\",\"σ\":\"s\",\"τ\":\"t\",\"υ\":\"y\",\"φ\":\"f\",\"χ\":\"x\",\"ψ\":\"ps\",\"ω\":\"w\",\"ά\":\"a\",\"έ\":\"e\",\"ί\":\"i\",\"ό\":\"o\",\"ύ\":\"y\",\"ή\":\"h\",\"ώ\":\"w\",\"ς\":\"s\",\"ϊ\":\"i\",\"ΰ\":\"y\",\"ϋ\":\"y\",\"ΐ\":\"i\",\"Α\":\"A\",\"Β\":\"B\",\"Γ\":\"G\",\"Δ\":\"D\",\"Ε\":\"E\",\"Ζ\":\"Z\",\"Η\":\"H\",\"Θ\":\"8\",\"Ι\":\"I\",\"Κ\":\"K\",\"Λ\":\"L\",\"Μ\":\"M\",\"Ν\":\"N\",\"Ξ\":\"3\",\"Ο\":\"O\",\"Π\":\"P\",\"Ρ\":\"R\",\"Σ\":\"S\",\"Τ\":\"T\",\"Υ\":\"Y\",\"Φ\":\"F\",\"Χ\":\"X\",\"Ψ\":\"PS\",\"Ω\":\"W\",\"Ά\":\"A\",\"Έ\":\"E\",\"Ί\":\"I\",\"Ό\":\"O\",\"Ύ\":\"Y\",\"Ή\":\"H\",\"Ώ\":\"W\",\"Ϊ\":\"I\",\"Ϋ\":\"Y\"};var TURKISH_MAP={\"ş\":\"s\",\"Ş\":\"S\",\"ı\":\"i\",\"İ\":\"I\",\"ç\":\"c\",\"Ç\":\"C\",\"ü\":\"u\",\"Ü\":\"U\",\"ö\":\"o\",\"Ö\":\"O\",\"ğ\":\"g\",\"Ğ\":\"G\"};var RUSSIAN_MAP={\"а\":\"a\",\"б\":\"b\",\"в\":\"v\",\"г\":\"g\",\"д\":\"d\",\"е\":\"e\",\"ё\":\"yo\",\"ж\":\"zh\",\"з\":\"z\",\"и\":\"i\",\"й\":\"j\",\"к\":\"k\",\"л\":\"l\",\"м\":\"m\",\"н\":\"n\",\"о\":\"o\",\"п\":\"p\",\"р\":\"r\",\"с\":\"s\",\"т\":\"t\",\"у\":\"u\",\"ф\":\"f\",\"х\":\"h\",\"ц\":\"c\",\"ч\":\"ch\",\"ш\":\"sh\",\"щ\":\"sh\",\"ъ\":\"\",\"ы\":\"y\",\"ь\":\"\",\"э\":\"e\",\"ю\":\"yu\",\"я\":\"ya\",\"А\":\"A\",\"Б\":\"B\",\"В\":\"V\",\"Г\":\"G\",\"Д\":\"D\",\"Е\":\"E\",\"Ё\":\"Yo\",\"Ж\":\"Zh\",\"З\":\"Z\",\"И\":\"I\",\"Й\":\"J\",\"К\":\"K\",\"Л\":\"L\",\"М\":\"M\",\"Н\":\"N\",\"О\":\"O\",\"П\":\"P\",\"Р\":\"R\",\"С\":\"S\",\"Т\":\"T\",\"У\":\"U\",\"Ф\":\"F\",\"Х\":\"H\",\"Ц\":\"C\",\"Ч\":\"Ch\",\"Ш\":\"Sh\",\"Щ\":\"Sh\",\"Ъ\":\"\",\"Ы\":\"Y\",\"Ь\":\"\",\"Э\":\"E\",\"Ю\":\"Yu\",\"Я\":\"Ya\"};var UKRAINIAN_MAP={\"Є\":\"Ye\",\"І\":\"I\",\"Ї\":\"Yi\",\"Ґ\":\"G\",\"є\":\"ye\",\"і\":\"i\",\"ї\":\"yi\",\"ґ\":\"g\"};var CZECH_MAP={\"č\":\"c\",\"ď\":\"d\",\"ě\":\"e\",\"ň\":\"n\",\"ř\":\"r\",\"š\":\"s\",\"ť\":\"t\",\"ů\":\"u\",\"ž\":\"z\",\"Č\":\"C\",\"Ď\":\"D\",\"Ě\":\"E\",\"Ň\":\"N\",\"Ř\":\"R\",\"Š\":\"S\",\"Ť\":\"T\",\"Ů\":\"U\",\"Ž\":\"Z\"};var POLISH_MAP={\"ą\":\"a\",\"ć\":\"c\",\"ę\":\"e\",\"ł\":\"l\",\"ń\":\"n\",\"ó\":\"o\",\"ś\":\"s\",\"ź\":\"z\",\"ż\":\"z\",\"Ą\":\"A\",\"Ć\":\"C\",\"Ę\":\"e\",\"Ł\":\"L\",\"Ń\":\"N\",\"Ó\":\"o\",\"Ś\":\"S\",\"Ź\":\"Z\",\"Ż\":\"Z\"};var LATVIAN_MAP={\"ā\":\"a\",\"č\":\"c\",\"ē\":\"e\",\"ģ\":\"g\",\"ī\":\"i\",\"ķ\":\"k\",\"ļ\":\"l\",\"ņ\":\"n\",\"š\":\"s\",\"ū\":\"u\",\"ž\":\"z\",\"Ā\":\"A\",\"Č\":\"C\",\"Ē\":\"E\",\"Ģ\":\"G\",\"Ī\":\"i\",\"Ķ\":\"k\",\"Ļ\":\"L\",\"Ņ\":\"N\",\"Š\":\"S\",\"Ū\":\"u\",\"Ž\":\"Z\"};var ALL_DOWNCODE_MAPS=new Array;ALL_DOWNCODE_MAPS[0]=LATIN_MAP;ALL_DOWNCODE_MAPS[1]=LATIN_SYMBOLS_MAP;ALL_DOWNCODE_MAPS[2]=GREEK_MAP;ALL_DOWNCODE_MAPS[3]=TURKISH_MAP;ALL_DOWNCODE_MAPS[4]=RUSSIAN_MAP;ALL_DOWNCODE_MAPS[5]=UKRAINIAN_MAP;ALL_DOWNCODE_MAPS[6]=CZECH_MAP;ALL_DOWNCODE_MAPS[7]=POLISH_MAP;ALL_DOWNCODE_MAPS[8]=LATVIAN_MAP;var Downcoder=new Object;Downcoder.Initialize=function(){if(Downcoder.map)return;Downcoder.map={};Downcoder.chars=\"\";for(var i in ALL_DOWNCODE_MAPS){var lookup=ALL_DOWNCODE_MAPS[i];for(var c in lookup){Downcoder.map[c]=lookup[c];Downcoder.chars+=c}}Downcoder.regex=new RegExp(\"[\"+Downcoder.chars+\"]|[^\"+Downcoder.chars+\"]+\",\"g\")};downcode=function(slug){Downcoder.Initialize();var downcoded=\"\";var pieces=slug.match(Downcoder.regex);if(pieces){for(var i=0;i<pieces.length;i++){if(pieces[i].length==1){var mapped=Downcoder.map[pieces[i]];if(mapped!=null){downcoded+=mapped;continue}}downcoded+=pieces[i]}}else{downcoded=slug}return downcoded};Flatdoc.slugify=function(s,num_chars){s=downcode(s);s=s.replace(/[^-\\w\\s]/g,\"\");s=s.replace(/^\\s+|\\s+$/g,\"\");s=s.replace(/[-\\s]+/g,\"-\");s=s.toLowerCase();return s.substring(0,num_chars)};})();\n\n/* jshint ignore:end */\n\n// This } is for the initial if() statement that bails out early.\n}\n"
  },
  {
    "path": "site/fonts/CodingFont.css",
    "content": "/*\n * This is actually Fira Mono\n */\n@font-face {\n    font-family: 'CodingFont';\n    src: url(data:application/font-woff;charset=utf-8;base64,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) format('woff');\n    font-weight: normal;\n    font-style: normal;\n}\n\n@font-face {\n    font-family: 'CodingFont';\n    src: url(data:application/font-woff;charset=utf-8;base64,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) format('woff');\n    font-weight: 500;\n    font-style: normal;\n}\n\n@font-face {\n    font-family: 'CodingFont';\n    src: url(data:application/font-woff;charset=utf-8;base64,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) format('woff');\n    font-weight: bold;\n    font-style: normal;\n}\n\n\n"
  },
  {
    "path": "site/fonts/LICENSE-Fira",
    "content": "Copyright (c) 2012-2013, The Mozilla Corporation and Telefonica S.A.\n\nThis Font Software is licensed under the SIL Open Font License, Version 1.1.\nThis license is copied below, and is also available with a FAQ at:\nhttp://scripts.sil.org/OFL\n\n\n-----------------------------------------------------------\nSIL OPEN FONT LICENSE Version 1.1 - 26 February 2007\n-----------------------------------------------------------\n\nPREAMBLE\nThe goals of the Open Font License (OFL) are to stimulate worldwide\ndevelopment of collaborative font projects, to support the font creation\nefforts of academic and linguistic communities, and to provide a free and\nopen framework in which fonts may be shared and improved in partnership\nwith others.\n\nThe OFL allows the licensed fonts to be used, studied, modified and\nredistributed freely as long as they are not sold by themselves. The\nfonts, including any derivative works, can be bundled, embedded, \nredistributed and/or sold with any software provided that any reserved\nnames are not used by derivative works. The fonts and derivatives,\nhowever, cannot be released under any other type of license. The\nrequirement for fonts to remain under this license does not apply\nto any document created using the fonts or their derivatives.\n\nDEFINITIONS\n\"Font Software\" refers to the set of files released by the Copyright\nHolder(s) under this license and clearly marked as such. This may\ninclude source files, build scripts and documentation.\n\n\"Reserved Font Name\" refers to any names specified as such after the\ncopyright statement(s).\n\n\"Original Version\" refers to the collection of Font Software components as\ndistributed by the Copyright Holder(s).\n\n\"Modified Version\" refers to any derivative made by adding to, deleting,\nor substituting -- in part or in whole -- any of the components of the\nOriginal Version, by changing formats or by porting the Font Software to a\nnew environment.\n\n\"Author\" refers to any designer, engineer, programmer, technical\nwriter or other person who contributed to the Font Software.\n\nPERMISSION & CONDITIONS\nPermission is hereby granted, free of charge, to any person obtaining\na copy of the Font Software, to use, study, copy, merge, embed, modify,\nredistribute, and sell modified and unmodified copies of the Font\nSoftware, subject to the following conditions:\n\n1) Neither the Font Software nor any of its individual components,\nin Original or Modified Versions, may be sold by itself.\n\n2) Original or Modified Versions of the Font Software may be bundled,\nredistributed and/or sold with any software, provided that each copy\ncontains the above copyright notice and this license. These can be\nincluded either as stand-alone text files, human-readable headers or\nin the appropriate machine-readable metadata fields within text or\nbinary files as long as those fields can be easily viewed by the user.\n\n3) No Modified Version of the Font Software may use the Reserved Font\nName(s) unless explicit written permission is granted by the corresponding\nCopyright Holder. This restriction only applies to the primary font name as\npresented to the users.\n\n4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font\nSoftware shall not be used to promote, endorse or advertise any\nModified Version, except to acknowledge the contribution(s) of the\nCopyright Holder(s) and the Author(s) or with their explicit written\npermission.\n\n5) The Font Software, modified or unmodified, in part or in whole,\nmust be distributed entirely under this license, and must not be\ndistributed under any other license. The requirement for fonts to\nremain under this license does not apply to any document created\nusing the Font Software.\n\nTERMINATION\nThis license becomes null and void if any of the above conditions are\nnot met.\n\nDISCLAIMER\nTHE FONT SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT\nOF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE\nCOPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\nINCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL\nDAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM\nOTHER DEALINGS IN THE FONT SOFTWARE.\n\n"
  },
  {
    "path": "site/fonts/LICENSE-Roboto",
    "content": "\n                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"[]\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright [yyyy] [name of copyright owner]\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n\n"
  },
  {
    "path": "site/fonts/WordFont.css",
    "content": "/*\n * This is actually Roboto.\n */\n@font-face {\n    font-family: 'WordFont';\n    src: url(data:application/font-woff;charset=utf-8;base64,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) format('woff');\n    font-weight: 500;\n    font-style: normal;\n}\n\n@font-face {\n    font-family: 'WordFont';\n    src: url(data:application/font-woff;charset=utf-8;base64,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) format('woff');\n    font-weight: normal;\n    font-style: italic;\n}\n\n@font-face {\n    font-family: 'WordFont';\n    src: url(data:application/font-woff;charset=utf-8;base64,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) format('woff');\n    font-weight: 300;\n    font-style: italic;\n}\n\n@font-face {\n    font-family: 'WordFont';\n    src: url(data:application/font-woff;charset=utf-8;base64,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) format('woff');\n    font-weight: normal;\n    font-style: normal;\n}\n\n@font-face {\n    font-family: 'WordFont';\n    src: url(data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAAIP0ABEAAAAA+owAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABHREVGAAB3bAAAAEoAAABYDhgNbEdQT1MAAHe4AAAK2AAAGOwZ5KcaR1NVQgAAgpAAAAFjAAACUB9T/TBPUy8yAABpgAAAAFIAAABgdm1D32NtYXAAAGnUAAAA+QAAAVyOZ4TYY3Z0IAAAbOwAAABaAAAAWgYNLj1mcGdtAABq0AAAAToAAAG8g/sjq2dhc3AAAHdgAAAADAAAAAwACAATZ2x5ZgAAAYAAAF8CAAC4bFEpBFtoZWFkAABk4AAAADYAAAA2/RPSUWhoZWEAAGlcAAAAIQAAACQLXQgBaG10eAAAZRgAAARDAAAIgDsHdJRsb2NhAABgpAAABDwAAARCA07Tp21heHAAAGCEAAAAIAAAACAETQIhbmFtZQAAbUgAAAJbAAAEg6LHImpwb3N0AABvpAAAB7kAAA6T+IDW9XByZXAAAGwMAAAA3wAAATiZxBRDeNrcvXlgE0X7OD7PHknvJE3TtJQe6Q0tTenJfUO5KVc5Ww655KYCKiogyCGgIIKiyH0oIJCsFQQVBBEBFeuFgqgoKuiLvOKBSpvJd2Z2s9lNg+/nj99fP7FNsp08+8zMM8/9PItENA4hPlt0IR4ZUCiKQCZUjlyo61AX50xwc8nthrEPiHxApnbDJIFDluiWkii/GOWXEPbiCrssRcgXIuULnNkVdTm/eROwOHhLKFiAd0AxOPhsTxvuVAm+iY9CxPccjzFwHo/ourNTNHoe4e6vs3APeKq4quVcFUIcmui9CV8xDCNQG8kQGUVBG8wuqA2CaDj5EE4QdRsMrrCcoY4vEv4YRka6wJnfnNzZAUUlBbExhtRM2I//mwMT8eopW6eQ/+ED/uqdaz1HjVo3ahS5Zzx/lqsyABLImmRKQlg4vadgdoWQe/JOiQvj2fycLmOti6eXCXQ+zVIo0l/Im/P6jzAq58j34lw8kGuxkv6iM0lCSJhHZpKAktELUnKKgwJJJoukzCSCIB/hm4mZfDD7PrA5mpQPjciHRnQzEiM4CiHR6UZG/2yFWlei2WVgv8NryYq4QzR/Dae3o7+ja10hZlcMGxZb60JmVxy7kkTnksanWdOKC9lPIc9+bA72k0Y+pXHjtnV+t/PX9blf1XU93WVb13e7XsN1uT9gT+d3O2zL3QbP4wnw/GEIOQxb8Wj6cxj/fRhP4PpDCEKABnozhf6G9agZqpZy8pxkDvL8w8jEwnxTdpAPDjpLzhHGqMvsiqyVLGEO+YM7BvyT4szuRpqPDrMrvVbKlr/nMLtz/H8jcyvKE4qLSkqLC21JYHMUZaalGmwxSYItxmC0pRXnQbEjJrawoIT7u++p3Q90+P7YlsMf4QPlPTv1GHR01wNdLr6+5dJP0H98ZZe+sKjf8PIBU58cv+fL6E8+T/jr2KSZA3v0HNJv8NQ14/d9EX32nN3zYfX9/RES0XDvDfFZ8R0UiRqhbFSMWqLpyFXidLVwsrnyZK68b+IZ5EMG3WtCWGG1ZFHcFs3+8Wa3XfMxg26YK8lJ3rhzNdeTzO4Co2bW1qKSwoLYRIgxpKVmFtvpDNuCPHdo+Kf28p+MYhbYh7vWPXPgwLqnX7nYqvDeFoXNW8GX7qfXuw6sf/qVLzrkjQmBVgX5rTjPnU3cu5uEDct273qi+7KdO540FHVc2qaoc8cW9R8u37n9qW7LyTXRWTZyYnHHtkWefkJ1P8J4UAvvf8SOZF2SUBYqJLyILYCBLIDBtxpx5EOcj/JjyIcYShMmQxzlM7Y4A93iOLM72b/FUiq7KjVlYwincDfX7T/ZYTZjW4wJrCXFDrPR7siKgrTUdEoW1oJSMBKCiOVj7KXtyFC6EFDauvP3r+364oPeV0ohYfnXeHmXQQenf4HrJ66/PbQc3wltOTKsd+e8ph2cLTpw3kEb+rsunl1/dE0x9k5fjC9K3j4F+VePjN85zfNbE2hq6Da0xwS+f7dxTZM6NM/rUkZPRA5/AhIMhD0gqwSigZ0I3uniasnJV1gLJDg+/FWswvdw7ek3HsDtuH2GbsiCzJIx2sq+Eel0CU66142g1G7geJs52m7MDIOsBxb9sKrDqufguSc6rPhpPseV/wE7Ib3V7om4F76Uiz/B3SbubgFN4IXrBHI2gVytQA7RQ4aYMDBmlURbi81cVmlsI7Bz1St+f6LDyg08Ab3q1kqOK/oPHo4/Ktk9CVwQ3xaawdGJu0vx53jUDxTrRlxzvoZwwCiUIu+1QHZUYHtdG0+kTJwrlLyGOuPIvTJKRb6Qz7CLVmM4ZMFofLQjtI+/0AhKOuJDX+4//Np+/o3hby4mf3hu4fHh+K+5kIm/n0Xv0gytFazCIRROOC0BRmC7Qs1ug4ZD8JTJOSzqP+4YDMb78Dt4L1RAa74V/gY/CMvAAQ+z3cEPwE6EiSxIlkKZLED0WIoaEUNugejSZ5USzuIwRsFne1O78RAFMBs/UN5l0dw7F++7SWFtgFvcLe42of1oRDbXDTrapKjc8rzIDYNbIJLRc7x/wk9QRu7cWF4vkayXSOUbMmi/R2UaOb1FJeAsnzy5vP+990IZEWWj144m9/Re9S7mTjEJaiVQnDqpmd/cngaFH/8Xbv36iKEZlVKDvTeE3uIpIm0boe4Sn9CYniLCi8yKlAol3wz1HU/GuejxJAtsBj2b0s3MjNJSUTx5SUGWDJm7WBifLRV6479u/Y5vQyh8D2H44IBhQ/rxA4ZVDABuIL6I34JOkAGEiKEDPkaoddPGNWvxqh3PPr2JrM9uwkS6kJkZUCvN+jTUWpDIBLjTzWv4BMfTq0w/ES0ZhXwXfADXcAuShaIxgL4i0FuTA9mfcKd4NEIyN0pQ5ZRONPtu4o7TgkaMP/FmpgeZze4QzR/DkZkxL/ZHevtiKJH5DBFH7aCwgMiiKDCBQ+hfHwKf7h/Qt89ofGDpzadvIG+HZc+8wbW9DDfemV01dvHYpVcXXnq/Yscrz1yktOUkO0fxbULkqqFpjopvFEExKjlQe4CoRmTEw0Q1inNF6Y6HFAqMr4LZna25GpMN9GojsztVczU5O5VNg+AdOAmDkUjYGCEtVRWqZEQOwBNb3hw+oPM9+ODCq8t/h9j7ps9+DH/6x+o/58PAqf2GTZ4+Zic//kj3EX1b3Vcz/uuTVS8WNd03/+2fp514qPPYe/pMH0lolO7MRLLv4URfHSKZzBaKmMnsEmuDaBKMx7AZhwlsWk43pyFVoimB2RVRK4UwdUqKYqPohCxplDdkEeTJwTTyn6xbhw96PojhyqC/Zw8YbFxLXI/fg+Lz/F6+/nF4K5XsQTnZg54Es0Q0TTIlJat7AAQJ8GFkIh9M9NSQFdZSZAiYKIIhTndCqP+qGJIgT097pKQYO70qJSbYGbYJlHfwdOGjKfXQNS91JLFNSUs1ThvGD/Qcd6TPaXHxp0e+e/7xX5cDDBBH9tpbO7cVd4a7ju/gb2wp2Ht91dV5s955uLyq/qfelBcMJLO5l1CUHaWh8VJceoYsblWNlRG/b1aMzJioNmvZmmRETGU3OiXRSN9pTwqlvCQdo7BQ1lCiTiOTyyouik4v5MlVm1kmIX6Z6c3fG1cfePPK4v+s3vjHcu4ETLjk6Tw89nifiQRb/Ner22biG1dWXl/8BBj2LfsWJr7vMbVrNh7fWDFpyjJ6UooI/fRhfKMwCN9ge0UnIuq3BykMIxQoQTiEPp4r+AXO4ekpxAv1dYLwMgiExw5i/JOuWSqRRLMlG9NwXTazK6WW/k5T1s5G7mLz3ZIxVUqjTWyh7FQ2cca5EzT35puw7TYlNKHACLdN0SyizexO0y2i/+gxpYaqPOnkSBK1jiq79CTyvjdFmYLz3pGT5uHfb/yCbz4wvXIycF9+BRx+r3JD1ag+vUbu7VLWvVvXrmVCzuTtzQvdD7793dWTc2qKmm+ffOzy5fq3h48ZM3zI+HH8tGH9+o4e/cJwQjX9yAqUkRWIJSswIojQsJIPVqbaW0NlO0pCHHtnbaDXa0iezjpRN00i87hixm1io+22GE7IAUtpOl9QqnCimFju1rRlp68v+s+Ta35axL2Jt/9k6wAjq6fnV5WXjR7LFY6FiCurfl31FP5r/6O38OZjRGBb4LVRq1Yt3TC1ehnyetFcIoF/FsabM1E0IIuRSG3gk4g8pnLURIxbOqYL0Q+ukDFZKNr7F59kNiBzPKWyPDSX3y6UEyqL1VBZAlkFn2InWoD+W8Cl1a/iZ3NjXsMfwCQi7Cbh82QdF0KCkMRfIDRlJPoxOUBEbyES1400a2I0u4VAFYL+E5Lqx/Kb6Q/3MQieroQ0CUYz0Bz+a6GfHyOmBlCMxFqCHdW6GEbcas8Vfkb9U9y4I1CAN+DbeAMUEIySvX/wHxDdIA450GjJmJrGDrbZ1bg2iKRJIR9SqGRMCFSUJF5mCeTwGzU0HhbFvAc29kdqqbXjKPcyGB1si4lAMZENMvpt+KGd1vVZ1KYnhw9wf1/55s9OPe5rnsnhIz6Tfu2ehye2e3ZorzPfnD82cHnZFOc9vXGtauO3xq0N18RFhAO0R/ciV76TnDmGdwjBO4QZYLWSKSSf8V6nZAiRebPZXRqhOXm1rnyzO0FzpQkRj5qPhGu3jdDuTxhlalkGxqBLUGFBMvAGqgZFI0eqwBk55CAf7IT1paRz1kaQniJEg4EpSlZK04bLYb+eGTA/beyu0Ws6RyaB4djTk9sXWmYNvs9gwWfxp8fx5/vDzdACWgx6o3VG2w8n4f/iZa+FRVyDp+BvmP5afWR4+27Ofo2yk1JmPshl4jp8rqzjY7NqH7sD+V2ael5deXEP9IWpb+ON3+Pt+ImsRruzm38Ez0M6xMCr//0IP4BXLloyqC+cCTmIOK+HGLf3Ez5qRGGod6BGH+i3YHYdPfahAvNbhDqlfqFQqSVnKYz9SfHVsH88vwcnD8KPc7HQk2uEl+EkaLkJzPhX0XWnnEuGf6gdOZ3w8wvMrohFyegpKU72rRBJRU4a+W2pDSKFVfXQjphiY3fWzLAvsHOVNf3so+zcrJoF9tX05Rv7f8lFabUdqqU37ARhk0Y4h5io/KUizxyu8TgRqRau2fVCiyPFrxCJvIUJMicUMgszB6Zz4RAPGZPGV8/Dt/DtX38cNeHV24fvGzt57sui6/ypWVszk3bOvfA5x03BO4b0OwQ/woDykf3pie7qvSGGE16biMqlCI2+ofMlqRqQOYJpQBFmt1WDrWB2N/J/lBKFCHkPokBII+o6k78pyO7IA3oYZbFRKoYYn8G3DuBv8aH1EPca0d47xeLtwvxHF8/j56x+cKEAv2z4aSHMhcHdL0DHg/inP5fMPvX5xJ/OVD9MNQu6Yz8yDc5GtLm7bw5dyggNvyMLHQn6lS0QZOZvZMvK3BrT4bMTULQf9uAP3lw479nt2zeKroP4xOnOZ/Dbr4CwrX7a55+2/+QCWT+KxwiGx4gg3gd14cIFphGHE5INJ2RwPFxPt3QJdTqlTuPX25r8n54vuFX1Nv4XTzWXzd2Ld+HfRBfZ9g+Qgk8bgk8o6vQv50kK5QT5CAViYQh+W4H3nMPb+POep7gSrovnDXZD8l00gNBPLKGfZDROCmenBvkdqYFWnmQKZ47PcLM7Olxn7MVr6CdJHpTklI4nkWVKDNVglGGgJMVnMZISdCRVWpxW7BBj++MzR/F3eG8EbICEo2CGZvH4QPQD0x9bA+u3Pt75D25gzfDpUAUt5n8OHff/89e8SVdqh176su13t+TVE51sNwcE2U2dVaASmG6fQ8OQwpqOU9bEaVeT+rF9/0Qn3uGpw9tgFCdCJTfas1V0eY5xnQgOS8k2fs+s7cR/8aTL4IAwWagig8n30onWZCZvzShfIsSm7oROx/bxUP0hIPscI3uwFDOLk6Dq0WtP3sR/w+iu/Xv0E1318SsvPfDr5XHDp41V1qmQ3CsC9ZYQ86gHITYmB4Nycp+XXUKMXUsGH9c2stUpBQdRkbnKNXR95kErkHAM3MCjuaTNeCFZp/lH4Kzn4fpPffSeTzARidV6d3rXUrmPrOED7p76djAKouj5UWAZ1jIpMCzI0um2wbfheoGvMk5mLSKBxTjklzAkW4WhHL25FdLASl651tAVusB5vDUVb72Ot6TibWSpw/k/75TDIO61uj+ESE8ZJjxcWfM8drJ7E0s0XF1znemhW3MdiapnkBPl2Ivocx8wsiS/xDxCk/WMJnmo4lfUzyW4zOVXEG5LpUR7oreZCU12V+QEkQKumNp/kRZUTMTcVUxQK4MTiJIi22eUCYuE86bwRkU+tN+Mv8Kr8JVtwibIeP0IpG4DvPGpZfhvEzy5aska4I5+hl9z74N25wdcgDLJhV//2HDxWzx7yoUfv/tUkRDX2VmOQf2kcFuszHlckQrOOqe5z2STIngmyyP0jJFwKKveynRQuUFUSsHBy0ZlVhp8gLdxXV8EeAJ/iG9f+XHClOmjfoabOFp0PXR1zWdeME2onDAPqPTqjm+LHcl62ohd3F2yyHaxxeyKV3CzEHQsyYHkZdHxSapKpgSsp9FuzCCqYeCiaqRux6Vz/3MRv5ube5SsLL8J0t5QV3blKrKwS1eThT2HPxlx9LV6w8vQobbP59DNt7hfX+j8+Q9kceXVFQVFY7pHEu3MVy76vXx3V+MiyYdIpkzIapyZLHW41rslyMEyt003OeZLkZUgsDmAWZ45wK08Rha9LfCQ/tBiyMfLccevx42fcM/XHOfBouvHjzecaed51cRb7n1jCjlDHQiPfIOsezaaIkU3aRo8cpREPiSxk5JEI0BSSw4qqSmpdTuEEQmmUTtNcdFMZJndmZqraVymYohkpmdRQ5rsiCZmFCvYY2UbO1Phu3zlNHxzCP7hCeC2bfpnBd4+rbJq2gOQN+YGvlLnxt8+BaMfXD5kPCzuUzEyZ+XvDx6ZOPPDJcPGDuzQYsSYFsv/e/zSgq/WzJnRi0kDQv0/MM3aGUSSqRtCFA2dAqDxaws/4F54Gx4onBC21Y0StoGJwr2XrCCVThbUVhIV734DVqmz1lWXc6RuPy0xTJRnkVsxkWMRvl+BsYuYiud5GGP4YtpMwn3Ktv/yMMT8yr9V3/K/DyzjD1NvNLUZZN9LCwkZQ4J7yHRMUWV9xPb2O2CIhNkBqbAcx+KFuBEsgVVC+p1yWRLYiCS4yOTbaEnUyDfdPXS8Nqi+ozdb5LtLovwSpuACVoJJOEUnARzChRdhJH4Pr3v7OF6Pz0Hli2egKZfMP3WnnG9Xf5KsyAz+KUTjyki0M942MAhiQb2X7IORfDDKuDCpZJBfeMQiXqEG5EMplOFEpfATN+EpfC9sx1P+/BNPhW14Mqzh34fvPXmeVPgFW7mvuY+VXQkjGIWg5kEwYvdtoBTLSMjbQciA3GwxRMBDOAe/gHPhQb4F90D9CM+fXDi/i8y5HaFoF5N/3VBDoMEkvSQgTnYwuEWtd1o0KjaixVFMf9ngbyJr13KHPN2EKVQdOMJfB1MNuedUvIMrMuwlpygdEbzJLQP1ZR70TKrQRmMwRXPn4hZwRqz55/s/Q4yUam94F/P7fDEUzqk7M/nNqbEaQ+TuaLxFdP3zCblzFN4BF9ids9h4cFIWpJkGNWx0yrqVTqfQkhYFZ3CL++837P3rnz8NjRkv4C7ys9mJydKdGL8ErJXAyMu+bZcoJyNAIdFR3t/ngZx/IBcLm3Fr7nNPEwINeUV+GaJWcywKoHY5iCU6ih38svoH+WV1dWR8iXCaG2ug4x2IwJdMQNipL1wHZtmXJZkIk6VbQohgLL6Jf4RxwmloRSVNM8JxLEJf1IjswZPI7wBMCEbgqspDtkbrA+cE5v4ME6ws/O+knsIozd/NUZTV17xhft9MTPUqM1R2CI0wNzbnmtuYhcqaqeaHyXXK9ZNDNEvuYI6YzOKi9NZAPU2EtaenxNotsXZbBhG2xeRKTCz3VnRU5YvPXQDh70mPPoAPQjhs/pXncj2X2w+MHutq5+gw58gqV03L9XM3nTrnwo71/SyXS1L3b85rSWc/hsy+F1k9E0pAEyRr40TZzekKr5VDkz7lK+FfWY8YwQ54GHth5rteuYnTx9q4tNQsIxUC1I8uh9uMlEuXlgi9Lp/ZNT4Kfwz9q9afu4wPDKyozs2Zc3+KmYshrPu7xTMMyHN1Cv4a/yO8sGQIHlAxuyX1l3tv8H+TPWyM+kixiUkqBbJARkIAc9IdYd5I3WaS1WRUYhixWlTJKmc5aOiSehlkJx+TriwCz2WX9QVo4z17A//64PcvfPI3PjWg6+JYY99f+3SVvodsMETtrFv285lBw18srtwxn642wVNIJqsdheKIVhMbTyNcrlgzkYuILKZ/gRP+VfMX+RC22uzFbdEvtQ5/qzm6sMDOokTUF51hJmtsofgXff3uU/fAAPyRZdLWE99B/5dm5ufNfCGSywCA7Gou/Q6avRyy6/GVKnhhdD3BvC3BvICssI2s8XTkRy4h0FkVjyhWrnhnTXK8M56bJR2Ph1nS6niopL+q3REhOmeJJigrRZsjFBembhJiKmoLbPVRIrCYEfU/8qlGR3FJJjf5H/z+Qze2fw8hnrHR88ZsHf58+2v71jUm5k1FDDS52Xg3Xol/8CweMWnmoSET+apTjfoPozwrgmzHNYON6O7jJSPT3TWTcmiJPUGb8BQ4XbriEKrTmSN1PJTmMVlrqR8orbiQJXYkA9mARCi0pVn2bNp06Z3uFZBc9Nwnn/DlP1cced/2d+hjA3+ud1FqKcUVQkuy5gkoEy2Q0rOy6eqkm112rQ6so+4ErQ5sCUxRidSdS8liZUHgWGNcwyQVyt/SdZTENsBeqljymVmlLEWHRThE5h6hdGUonXpu6Z5REVCwpH73/d+0fqLq+Stj1p3+AwYQw76g+dThE7iMnfWPV1fV/Xf1J7OGdz8948fUKeDEoUs29oB3e26jOzOEyOEsckYsqKcUrmiAZqc+GqBlPrrYnoQ4g5za5w7X8RyaUUMPgsxrqEH60tSXXjnE4QPdBk3KIVyzP396+acfegZzOyr6d6r/myBAdmAkQehj8U+W29deMsq5fUYzES+oIUIqTXC+xDaDIcA94w8NnMQHyPF7ftLuSeR/oRXYu48cuWbkSMR5V+Fe8Cm5ZwQ5a70kPtau5DeYtDFNnXAiG+0O1fkgad5cjNNt0iVhWOjGZVE+W2zhVUTOwqW3B/VqlbEq3odL3ba3ai3IG7pSqFTRIvsyhuzLAgM9Oa2ZrtKABdzFBRMiu2BC9C4YpgJyllF05VMxrMNLyM98eHoUft8A9bXNoA3u7FlM7zuT/DrJ5HuAZuP3UrHFpDvGsDQsImcmET0gCRp/s+4o686Kbj2ZamsKiAOyDwnkQwLzuxiZ1SayF6r7mTRLH0eVGzshNvKTYvXRm5bwYFP4fSc/6D69FnqE4gMteo5rDvhASe8xhfig0GrB0zt24GpPB27fwN7DojyJ3J7BvYd5TEIrMrOh9FyQmVnQIClCYxnpZqabjE/g6WL6EiCjTFFav7WCte6IwLrwme/seZHHBzoNuSdfRu/ce54ybt+APn09gtDKJ9G6E6yiUDxqEYQtqQmv0XrmYm/IXJDFFkOzcLIyKD+xFpupnJp/Y8vvEIev/XoNXw+H8qqRNcLRPVFc1nbPcvwJ9kR48Odg+yX9mVVgS4W0OqrR4NFCL4KRiWA0U4pmeTGuaFnGNlBnmCWp4yiWQKNOjJDtKT5C0W2i/y2PKIbqNpTE7bJuY1ZUG6vQ6+qJ9aMJubcOG7P5zNf44EsPZOfO3SZytnr8yTRsFC+NewBfxFiElApcMRxi2eqSuSSz1Y1D0zT6QnhtkL1n6Os0B0sDzcEQwebCXv4PmkMpPasBmsOVd3aPi4N0fGDM+reuEs1hdm7T2ZsiuGzgIH357DuZcGc6NMH4q6HwckWdfCK538kcIlB/hYNqfCJBcVc17jCzi+H0RcLlYR1Ck8EJ7aEfCJVSiEHJgcmSmTk7cdwvM7Y0IwvcJnzwhpJsPjRknGeg0GrllgjKF9KIhniZYJGBXFJaZpaKhY4A1DPOJdBwv/Q4MRpqjnBnOaKbh5q1cTVXZG1NRGTjSK7y0MjIqZEPR/KVNa0je0Vys2qaRrYil6XYUGYRPB5LrJEEsztN892U2pqBKfekkEFFKTCr5rOUH8j7moyUYvrCp1jpXzqTv0jVKcxoKcrjmeYgEOVTzgYGxbNDE5eoQlTCrR9ev7Pi9rvECsAHHi/uPvREjz/wPx+tvDQPWnOje3XtCvk5RS1GLBq0/sTJzYta5zZrkR4/6OK6o+NeHtWrawuqD3lvcC+JZUTmjJGimMzRmNkJWoaYEOBno0oOs8xYtpB2iXRBJirCLLVEHaKSiCo/TGmwMfuG6kYWuCZJuR0LUkfcc2D3ihViGf79Z2xpm2+4lbjzRS7+Z4gkWA4j3KYJYTxmwgPDNDEIHfkwxIIKJabCMaEUySlaQphO3ZexIToOpXZqaF+dckg6DP2XzW4OA/GpOY9/eJJ709Nx5UDur7rTBB+O8OTGBJ+gvqIEra8ooYGvSNT4Z4gojNoH9+At+CW8BcbBU9yeutOM6xM2IL5K3gX1FOkOu47j/ru5hsJlT5H8EhauYsJTrwzvSIBCQZwGnb346is1+KoXOk95+T/wBje/7jS3yDNfaOW5j3uCnqpwMv8kgp3eT6QTpgn/7icKk/1EYf/TT2TbBFX4KuTgrXtfxJshF38PY3kzNPXc8nwGHfBbXA5nQuCtx72EXEYhXSSkoRAdYjqz0Mf1JWSid9dTBN0dI6GKrGJyyNoDwcNUA/fiMmvVzU49cst6RSfg5TAJvuDG1lnyPo651aS4u9CFrkwnorBcJHjovUkJ/594k27AL/X3whVczN9Pjnv9G9w8EA6xzOgN3CxDW2RHpVJ0XDybe4RGYbKTSRoiWADR4HSLkRrLi+V0k5ukEzs3rZgo9u1oirbRFmOMTYRYO1eAN2zfzr/qaj9fPHJEnI83jIepp89dfe/jmq8LXPlfXbwycuS3X3yVT2f+Mv4Nxt01m5e6sGDca6/h3wzH6OgmBOdqBWdRwTlc/pKdfMlOcbaEMx3Y4nRHa3AWoy0MZ3tJaXFRaWZbIDYJYYy2mEIbMa84scl88ehRcX77V2pg+3Yj3nKYoPntiBHfXvwq31Vw9bWz7109+xneeg/BoQpmCPv5LoT3dZTMCu+LchLVm6n7vDMgD0gpfOD1mkCU2WWrZaltlC1TNp1FeTbjzsXC/sPP9nrwuY4FnW++8lzv+evbF3bkk0/daPXs2B7CqWut19/Tg0r7h/AquEVklGxt+CuJ0GXU8GSzJSWrQ4PdQYqJrA5CuVTBp4r+PrDk4Odglpx4xM2oTxTjlTwjQGO94UKmmIkciBwBljGF/MUM/8N3EqPYQ2Q5Yih7l+JimHIZY9YmB6p+FFrAkskRYz5aW94iO1MqmDPl5OYzJ768dPLMrtc1zpQXPmv88/XGkHw9+gqkNf7m28Rv96k+FUATCQ96QXwbJRNNwy+lGkQHBG1kq1ZKEq1yEoDO6o2odSVRS4u677QpA/akePl82GOY36qQ8IIsQslZcqWGLJbtDgs3TSTitu6TiS15ELc/b/jzoyt1+NDywnahUMg1n1ndkZyNKNPQ4mUgXvzg2o/vbOo/+CKuQywC+oNYKtwitn4OoUIut5lSoJaitTQp+zTXUmuYSK4UTRaX2ezOjggQZFnGrNJMcjKySpl2VGo3Ep3BaDdCDKVJmthDyTQKhIwt597b/OgTy8ZNW/PEkxtPnNy45sl1U8aufLL+wanHZs44NnXamzNmvjltyoL5j615/IV33t/29Jqn7puz7qlnt5w78cITT3EPzT07e/bZufefra4+S/cjlOwHzTCORbMkxOJ2QRz2fvMwHFi0GMLlHFwlhVCM0KUQhkZoNS9KcWSPRKZQkMNoZRnS7PQRoi+0Oeg/Kr6L6b9CwrSbvg7j8fkP8K80MQtvxx+BE3/0B/4AJvB7OKOn5Ni4N/E/YHxz3DHuHN2N+8k+bWQ8zEg0bx8X84W4aIglhxwxiyOeMuT7iTJ8mfz8xifU/8Cf4W5TCFVEDr0snkLNUCu0RjK2bqOclGJlPxMJrERd+IKKoJJEdnxKdPkrEhddQtco3BityIcozSHMl7+Sb3Y30XwlLp/m4UqORJaOmxjgzIEYI9MfU5SEjOKizHSag0vpJV3WM30hxCQuIzOLvktmRQDCyxtX4B/+xn/g72DA+PtO3IefPzRy0xOQ+scdaIQPThw5atxMSH95VivPnnalzYftndtiOvzhHjHxmPvdC6d79a5u1X3ctPUTXFWTjx749MrZXsM7terUpVfPsQu6mGOyy7uUFafm9m7Xj67fKKGWXydeQiHE3k2iuaVujtdUCTIaYEeB1Y7JvowM35tRQxYOIf9zRvlVHFzat+/0vn1L5Reyq4O9N8Rvye40Qk2I1fqclNyylVLrGFpLf/t2KY9sTJ5vl4rJh2JmHRTnyWnBNSYumdgGUmhesZyVU4NCzaHkQmQoFeVuc5g+V9j/UWokJxQXm93JmkF5ZndmmD5ROoVINpnLpGkj7cUZMdFCYUF6tJlLT6OJmUXRNBWT5pnR+Lww8iB+683jm3fsf2Hk0JHjYcLIYcM9pvUQvWsnWJ55Bt/csQX/94V5r0MvWAi9Xj+GDx8/gQ+/wQ3asP2zmlkHPtu1fvTAZbMemrOs/9glu/B3+1+GJOgNift24it7z8Hwd9/Fu8+9j3edPgPD6W4t4V7hQ8l6JhD7aroUxewrKhETA3LJJSHTJle6SGGCTQmV2AhBR2nckmE2lmFuccbRktaEWuouaByljY27UnxWIVkiX4ykRI6RKHI31maJsctBkiggqzI0zNjn4bmLX9o/YXbHHvsPLl/2QiO8NXtQwuTeFdyJhCYDHrp3+oOFCwrzoyY9umYJPjWm/6KM+OXQpvlQrxd1RLP5N/inzZnw42fIbIQfoZr5mh6BufxbfAYSUaYEBiPjdGRmiBmnlGnQrDsuIMmg2MG/dcazhO8Mc0HYR6ArFVfRROlFtMLOR5tRKBEVojZos1TYth0FWMjcioWM35HfrYNlQqjuFmuYPjFGQ3rJ4Qy/ZKfkEBjXdRC6dZgd1B5NZnmpRU53kuYLWUlFyunIq6X1qm3CdL4bHeGV6slSpDUqNDXamAQxsXZbWiZNfc/ypbQMDiTAeYEkCm88C/HP75vSKs8YtjGyU5/NC3uPL6t8grsYQIXvBVDpbXyQH7Dq4eltUmbu6mI3p27t3Xlp++JurYHs26uiyE8RJcIH0iQkiKqE8mmpbqTbNLplUzw9uUOiuJ/Q+iP8M9wesj8076d5QKCT6A8RTndolM6vYolqUOhqY+VwIs0xSTXExD7yYvXMHduqZ++C+OIuXSb36CXsm7Nz55zZ27aFdJ/Uu9fkMnrGBiHgr4uRrKaomxqcU63wULOvjpDT1hFSK1wrLsQoZmKFi3I41J8xyGr7XNACn8GX8DkogUxIq1/LT+fP41t4J4wEE7S/8weEkPUr5DZyR8Q3iM4+QgpRdHbVrNIlh1nJYsZyGkkWy3LDeBNSom0hnDYzh4XiYkyK9ecozminHOk036qZiDA/4lkFSQXNB+cUfLtv+fO7Bz/VH3pyG5/25A6O6d0mZ+62RfN6PTK5C7UtuDXcSYJnOpojJWVkqniyNfPhyawMK/WL2iN99WbSGhpDjtStpRQaCXLRmSvNx32k6DSmvSSkMQPFbnYn6ShHLTnz4W9Udr64UCk3y0oD29Dxhc3SSq7sXf78/hXPv7HxKffV1kUtmk2rEuYMSMloFD/hkYcmPdC8yZOTHl1RnegsSB4MlPcMF05zi31RbyW+Lev+cgCcqI58bTyhzDg56g3JMA7/jH8xIHyafv8xPFpYQOzTaDRGirTG6PNsgvrJmfPEEuj80RYH0RUTtIWExkh5Jy0saOcLQ1L3KFyAshELi6E/flsc9uDgDviA0MqzfMq4EdyNutPFPVPxQCL7AQ0gE5xL9LAwlCNx4RH6KF2DPHlgocf85g4LqytChUQhf6r8R/wXhP0IRVwIvvAZ8t4pJ3BXcAJgvoLoqtFUu9OWyuqqVbv0v/fe/uWTJ/MVo9eOJvYSXbkKnM0BwSgSNSenycRwMhAb0Uk100gnNdiMKoFERFKxIEGEvBIZMgFkUbrIKoU5Yc+cdhmHti9LDmvb+KnZjx3tk5kkriX3WE1OWBLhNgZiC4DGr9SwfNSqLx/lGpaPEqFjLM4o5JK+ccHDVgLYlv7iPMJP5nAS31Spoy3WM0ApNEGpgHCbo/QqTAAvS9EX5pf4KpvmHIeSt97YtPnYwcryviOgsl/fSmHM1rdP7u6+5e1TO8Sx06eOKR8zfdoEIv/6oPv4s/xaIl2vAZWu12AzolVLsxASh4h7zVkceL/jNpiz4CdIJTts5ARuPZGUZv2S5Dcn3xlGvnNMlOhYdAeFsO+e47aS7yBe9H/Hlz/GvjMYIUOi+AaD/wX7jsCPQIh8h0e53Ebfd1i1EPsOWbseeAF/W+jHckYqNH/XnRVqnKeYg1YXmZWyW03UTopg9baSXSm7BcrslBq4UgeLuRIdpz2UtOcoaRZSIuWOt+3eqbJzcedeHAwU/rryze+9Rw7uEypuKJ8ypXzAvfdyc5/Z1rbt8NFlHQf3Pfv1h28OfLqib6ch3ZcRSh6zZozXK9fHGEuiM4neRqvHuqA7UML8NlrFIkKuI2sw+n54l4wOZdHAyOBjYDA6HASiSTe6hTp6BDoDzRWIMboxZnmM2YimoLegRL2+Sv3uMJgIrxBqlr/rsteynTIjZGxNOIiJnPSFQTIVg6fZW5gHknqc7l41QeSVr+aClVsEVIFohW60wZcLzbO6IYvDyn6gkDe2rl8QhRdtwPO4bwST58tIeBd3MXGt62betkEPfFh04b/xKfKzE/rBj/RcdMXZtKKGzDuLrcdD8CY7L6xShK18E2UvT/pXXp2zsk8NRt8Pq4OMjgo+muzqgiCjzbrRZnk027HlbMf20soDBqWZjKF3th+Kmv4uKlCWEqXnbc3o+1EH/2hV4zIoVLKWjP7aPxoGe5sHgR2ijH6OjD7PMGwmY+htRUZz3u+UrGMT0b3n/Z8q9mtMQrLAzZJmCDBLMglQLbWn77YIUCktIB/doHFdWGgfG53XUNQ5yqi909iXLKIpHLKm+SqHcsBSuGrvXk35UP+PWP3Q3I+4h45zc/1FRNxD+GlWRISfU/ZEzGMnrUA5aVflkyY6XVZlxVkWPlvDQoWCvP41VFPwk+8y+n54P8jolOCjCQW98T9Ht1BHj0AfyNhGOF1ZujFmeQyjsncIRCCy7LQAwrNET27BmiGFsvgtLZkJC2XxDoFnwT2l2p6nVfmSUQiT65aJiUUEWyiUhoI9FIyhUAw5mKx2BmScwJ9C7gn8Jf4SHgGiJRzGn0HOYXwef3gYmuILVBfr790m9hRvEs04hdB+WZB2DGoYhHD/TI1LMr3W1YhZuomai8T2TauVCxmoPy+tNFMudiuwlxYaYy0ZRVnAxENGjB3khjg9N+Ovjm5f1P/DJ96lufebFrWtffAc3piIZ7cZsnQ1eGoTYEWb/itXKdUNHVf9+S6ML6Qp+B0mf3IGPx+2ZLSnX7PvPjUsqeIO5nx9gawzy8hmO9dSoYpv/TunpgL7aChw9P1wwD9aLTuICT6aUMXmILBjdaPN8mi24y+qkiCMQWnbkJepbsdwCoVIhNmEOx0jZzwSxaJhklmuLDDTPNEgmeaqnxJQuJy/Kpnld2anLucGdByfxTiTOFpLSesKQK6nzEyDdz/YV/cY/hx7P8D7YeDpiffPnUA4PIbq2sc/+ofDP4suzx08c1LVKFpNsJTM9y9DPGqKhktxObl6LdARTICpletRzL3tjtc2wrCKcg2FOyugaoz6/KheSpQNu2KgsPQugnIeR5QORaeDL/ABCP/r1O1RzQet/uf7Xs82bT14fpt+BVs7V5W37dlR6PXVrdqXp2wYktxpwMr1r59NiPPkdmzTpPuKBT0nvtSvde9Jk+gesmxbAyJ71ZXslQF1IeqXNSDrNlPZb/1Yuq+pSB2thieygo42wODohpCb6Mby6tgRafUN4GZrx4qX5LFmA5qS4IdQ4cMNhqGT6BFfxrJ6v7zLruZUD+Fp/qRhvVBOuEIBaoWuIL/tqUs+SAgIWygaIyfamdVuF2WNg5qaZk16sTWcapQdQiOsja251jZWobLmqPWclauU4tlXpBLE0mBKiK5SQtMxS6C6JrnEWcKx95XatGMqojTdGqTMtGSFbpqGavu0ufM030kwuwv1OZtZisqanlGo0E8GpTN7ib0gWknjbA/2KMgoUFx0QAvpqYv5wq+rOp2a+e4V4JH3yS4du/fGByHiq3Nz5p/89Lbn0ah5E+aPade/8w/1l4aVr+w7gW87YEg4FHeKWdqpy+Ftm1+GvE69WudYn31rRCWHb189MHZMdsL5oq7X27uge6up3Nwx99AMULKDRTib5gyTHSxT9KiuTI9ima4GINd7yBQ6CHy0ocbZkxTa0I+lFOpADUcnBx1NKNTScKxDO1b8Uh5Lqa4REE63kWhQ58Ub5OofigY13ntDp+UkaDSohwi7q1FHG9D9zW/o9KcEjf60mIz90A+Z6E+pQSD79KcVZPRx8bQ8mulPOWQ0x+qf7jHkoMYoGw2QjKwCinrqfX5glorqCEwCiIpjIQxiQRt1HTRo3DVNW50LNEWMYwFWIgcJMWWyIBdhVvZSO1ANSQlb8FUgPvH3c+tuLv71woLxzadIfZdPXT71xis7+uCpVZM7LRw7YpzYGHvwrJZu/MNzC75d/hMI7VZOmD53UKeMP/IXjp9bt3TXhjGdls2ZMJ+sI8u8Y9xigMwt+tZTXYR3uhKUlWZZcIz3DJRpZgHS2Tx07YKPpTTTGzUc3Tg4ZBjc5n+N5dWxI/rUK7ZUmnYE42UDZarqSrWW1miW0E/4jsWdbUS+s75foVq73xXu82joY81ml0n9Q4whwGmqJrtafG+EfnU3hBhP6wkvTVD/5wr/AHtZZeWTlZWeJPmV4lTknSF0F95GMYSW0ilODTILfSm/2m5PtIWNnalRjXRJma7kWn8KM1WdaKIhU6ggxk77VhjFoiyepunRhMOqgV3dE9/D136t7FvmnlQL/aOvNErZEwWzLF/GJtUILPkw/slP1+HDHvx57NOfPw0tR7eF90Prsge3w20MYKOeCJqpxPZtWCBFqF61aGVX9GMDKELNZrIGHa2jCBWyTTuW7fcw336T08tyZBiESuV+jcn9Qmn1jHwXGn/DoyndsSzKCQFZlCFB6kL+PXdSVsH/z7mTlsDcye7fnnymiib5Vq175wo++NLspjlzaOpkHf54Cg41bvX8cC/+CtcJkDII9x8CMeos2dwr5bnbVG+C4TvVh1GN9kH+3Tweiuzfr2or1Ya6u2krDXwZQ9CNIJ6PKJ0GwqkayJCyhtpKtrwXXg8exbqYxJK9uF+Kl/ci3p+FrtNY2a5YAjtFabtT0sJq1UNJzzAxSy1OKU7uMhLn1FWexrOrtIaOCWlaeyGH20qZK8Pq4PlKrtGUvp3bJGVl9qicvqR6gNIOJRRabqI9ULLKCttFv5Q7e+yigWCgbVHqZ8A/tO4Kj2J1V02I/Xbgf9Vd+brC+TuQ0ik2Mvv0I1Z39S/lV2E0l+bQSDMttOIrlTosbQkW7VSqRhUpA9EqO2Fmt1Nbl5Vx97qsgFXi/WVax6zhwcq0Sv1LN1ku2OKzShtUbKmLuACy5eItxQIOZ3ZPlnKO3/oXm5rVSLFTX6aMTvdzGTUjTmvda2ATy8wVBHZqUNiEJ8X8L8idVMhDYTv0aQA5Swc5woc1GW0g1nUg7Ewd7FIVdgU6EwTrNB1sULGuyG2ItU8fa0b7wTDI2TJk7+0gNqZGxos7DWDORN2pfgR3hMHC9///9S8pdQD7iLyIRSlotRTpoE0XXZG0+y8ix7qhvAjeeclpJdMy0V+xVhaBiHW6UYQmRVJpgSg3ljbV0lx4MmmDWWvpUjmTFFA2K9e/WVhSezGtxHLYCkHNaRf2rVIq4WhZXH09DFhVf0kpiROO13WktXBgYaVxV48vWlS/VqmL8/k6mTxposiT+/zypIHXVdbqD6i2RbVY38ACSNR5UVuoPtchqCaIz9Wksy141bYY0q2hbZGig9xJhTwUZvlPoArZpoMc6bNxyGgexTWAzU4g7SJCuPoI1kN8q2Rh1aTywFgyMFbXX9ISjM+rHZQTYpl3LsEptU+g9E5/9Usg5D+DvjueQEiE/KrWlUvH6Jsc8bW05WaYytRjA+tQqaYRKNV0TZDe9vPmcZ6/tA2RVH78cD9fbyQOtcWLWI1kOspBWySHnMPnMLsyFDnNhJguS92ufIgmH6JZWTEN2LtC1PhhdjQr+ch21ozKnpHNzapJznZmU6M9my5ANrB31e4kjSkere9/mp6apHRFzdCnuhvtAVPPbFBmCXKNpWBrOYP3L0Xzi/hvXcUlPivXW+4dUATqwoxoa4eUS0n+8kv4+ZRiecv0V6rSXwV6NghlW3T0x6mUXdHk7lYz6xbFpFaOIrVO+CGrLRTSldGsvpJJrV6y1MpoaFvl6CC3UCEPQbeDQE7TQeZUyEOGN4TcVAe5kwp5KLziP40q5KY6yBEKZDra7peHKux8H2yPh3bPkmFTOQR38GoVykkfFC4CStHrDaDk+vmF6GSrmqus6if+uatdEnzRH1a/aXyajO6tjLbC09S6sDhlTy45KQ4C8U3CJawE92lBkkd8dc9SjNzVMMYpmWNMstuVqnxmfZd5nj0ZQKRJyLpEbTvLTDbTnjyUFbDaE1p6Ih9yWQxQQ5X8iN3nzJFbZk2YIDfNqt/MiZ464cvDdZdp/ywh/fBnn33mOXaIdlt4m8yxK5F28WiuFKl0Xo51NrRRdfXbavWJM5ZKOfor3hwrF0vrpBwnhCgtaiL1VZ3RtVTtj2FPQLAFluspUo3b9LmusFWSoP/nwut/aotbhdePL11KbRaJbMZhRtVy1GyEt5McZ+H8Ed0dZMxL4k3VMzTCW+i9FjDmEhmzhklBOVZX7c3wS8HAyJ73PTL6UXGD6sWq9sZ6f7ybF8t7it5fg+MQ74QgkT2jMvpVMvo5DbZDvEOC+LGU0Sgej6K90JQ4oIEmM5KrIeTqx+Kf5Gof+ep/lXgkfM/OqYzHUJTqP6cqHpGKHHyIeuqEVgFd1hKCd1k7T4MBZDC9i/eGYZ7oMvsik3ncZIbTSGLNGsU/zTJORtSXK2TX0wn3ENjZzJNPGwwJopcqvgPvLNyLe5N6+WCQ4uUz+1dH1c98nHc6LqBd2Ahsp8I99uFT5PoY3JhWApPr/ZTrk/EBMue55FQcZbVKw9BdzsK/1wobuBC5OEUaZYBKXZPmMDD4sllYAr5cP9yeGlL9h38LLrwXqnBfmIeXCq3wQ7AEGzxv+WRNPluffCWKXOxfH1X3VvyatNaY0NpiMrpcGZ0Bi3U+U4ffZ0rWx0h7w8mw2TrMwc+R66OxkVYsy1DoddSOXZd7ybl9uMAdbqKwzpdf4uP0LCeF4MG3ZPaDAgF+Fr5XIfjvOBR+9vyojL/XgNTxRIZ4tpEdiSfj72GxrsogjdRUtRvkvh3AeCvoklYpbzXo0rrkB8rQRGnEElLDKDsqtcl13cbiUouDQydP0t53y5fDKH5tsVSM8/Bv3IIMKYNbwJ6yQFZ5DuGe4UT6+CN9jgbt0OWY7F2xqqVPt0EsZTvEjwPDAG4uW4YPLFoEA/hNTWuaeuzcwuyabO59fyS8xBcJJ3bwd36KUBPLfB4g2feLFN8vHd1H9pXxaoYKmk6kbB7blQJlt+qYlB1K6COLRRgGKNcn+eiAYFCqxuIr0M//otnLGIDqfa4Y7Lu/Ehf1PkJHiF7/fbwjhO/IOpPTLrYkux+NxkuGwBw/nS4eGO5smOPnbzSgqTKIYKFQycJe5J5baalZVlpRoDT9E1t+eXpon6j84jmeP2grSS5CdN3p/dEVC4SG7+ZX1s9RWgDSjEbC4bJZH557pEj2VIf/Vd/OyCawy4UEcbzyCB6T3tloC1bu7sfYX/f+bOTsY7v38J+fHNIjqqBgTtsu09rS6vfnD1z+3FNx7rIFeSN2cRvGVPb0IKGVLxOBSb9CxQZ0EeknZysk6Tzv+9UIQXV+neKbb3SXnIch6FYQ34VD5+vnVF//kFkNNcxEHeRiFfJI6E0gxzbwE7nSaxn3obBnMnoaKI9H7yPkG6+JOrhS5Byrkd4bxoXiKdaFf6MEcrdBMLsaBeveqGvBHbSDJA37aNvCWOVm3FandNxKpEKMPs8q9q6dhqgfIFEf6ma9C8lOsxwKf7NUpXmJzRITa5xfP/vFBw/jK1s2Q8qhh17kn6RGHzUG6waNHzmhctnGTTHPgOVlaL4fotfHUNMP1+FdSRH84cjdL+HzL71Eoxe9iBT/XihHSSibyOWXg0hDtdTcwDpHyQ/vop71BNrfxWV3Srl2JgxznTXJuc5cavPlUpsvF9g7fSMde8CKsUY6UnyCbEOb3Q598wVNE0HasaZJkEYvgWFackoMrDeD2deaIYMah0W9FtzYcmnlY7WX73iejL5/+IJRvcvLfnj4i9UrvrmGr4VD+es14ut7o/hZS+3QlMvaWbf84fkc/uf6y5UT0pPPF3dZuBBibqbjr8GaDml1daca7VX4o6zTlCg8d2QQT3q8Qt1jyILnMA5docjsl/x+TbUE2eSX2dQDJ8NmPHkF48nl2Ei7FMhQmMzOU3m1wHh1icKrxwXBRYnAea8TXPoxXl0h82p3Q0x82hXrFclmWarMcnuQ3Bef/cn6F7BZDlFGh/hnqTYxyA4Om9hga//PsIkd/E9DyD77swPOph0uZcgsar6D6aFpOJn2V5BhsOth3r9UTEpVTCrQXjlnNMzpaqa7P6j3rzAzCRfqVO+ajgtot0kyooUCfQUKI9cjcDZXI5aR60Pl6+gVWSum3SnZXVsod13zL7mQEeT+jxiWmBUoRC/LEydpelyaUN8gbTzVXtemMNkbqTPiqCfHxB5zF6ZvgxBRqyixzAUrK7N87Va87csvaS9M3Gsr94mnGffJcTCBibCXW9TevOy9wR0Sy4gtsUCKDnxqS9AEEpZq9W/dGQhmBqfbqPUem90RvLbskj49wMDYEU9bxxJ+rvRusNEff/+GLOZR9fVw+PBDuYvD3hf5o0eVRg7PHH+edXLYvK32+DO0lYOazdVCzf0agQ7Ktifyx9XlWCevxjqViLbBLzUZFCZ7Wyqyd63f8myQnSbHQ/erUVkqhe8WlQ3Eb4jW66FC1kVamTweFiiPVcj6rLdVKuRh0Bde8clXFXLCZfasQxV2hS8+DMPQDfQIzXRm6+BKlEfJUItVqCMhzy/lVahxl5n/QIEqS/lhDaW8JuosZ1IDuhfvY51Zk9EYKUHTiV2nTbKMJp2otwempvFWpFQHhqquWavZnaDv3so1cE+moGJNL1d4X/B7JGPxL/i8v6krvrLC74dsnQ/xf/E1vgavgIbhUayHSDK6X2qkmQfzUPuODyvPDapn6lQW1W8bZnaJ6mwQK082OSVzIpLD5tp0hPzmjoCZZQW0HeGxf2qzQjUdSNRJLR4wRd+KhOwn6ynLeH5rxRPwgJ9e1Y65PunD+oownj9CkRDf+eWJ6gnQ5ulrMiz1+d/6DMsG+QVEnkQg3VhNNoMC2SxD9ueKy91Y2R3bKfJueRCfo89KY9022B2rlNGNUMPz5xstw+7kg02s5cnEqgtlT7Cx6iBG+CDCUFRP9Fv9GBlOqQpHJ2VUHE06iKBAJFIutSGGJsV7RB8s6zbYyBkvlPjA/veOIL1IQ/XPnKD1IXYj0Wltlqqvz3ceF5df/Jiw5vVztn/CHqu7T+438B+xvfgOoZpEVCUhueN6bLDH5KgxSZE9/oYmjEfpRVqAFi7qonH5zUX6jA72JAUjX0Kf1EGTuAQaGXfQuPjb+CPs5jeGHXdfONa8LaQ+Aj3gwR340iuz10V73llng+nQe++uF1tCo/h8vBG/veN1/NE+aLJhdfLDq6hsvIB7cXVkrZLQbCkmOUVdK1Zz7AjWvFF3uJkPiB7uRLMbhepmEab3vkbV0mNtCzjMkMYz7dgqcyZfl0e2+olQyNVe4ODsa8PKTOmFrfNfeOHrDzuPi88rXXyBL69fcewjaku268PP/blC3pyBrHs7sdfeN8QQeksne+NglYs0jhTxb93wJRN7LApVQ2xROhsoQd8j33H3Hvmx9nZQXGg2xga0yu+0RWmVzxq6r75ZUVL4/oVegDeuXYb/McETq5bSdvkX8GsutaP7pLHWBcvx9vIt5znWNN/X172ASB1JeI5QfhKZm5ntF/XQB+1pqXrMDYJZ6VoTHqXremHXGzaNg1kybEYNW8sVzP/P1tsr2722qyW+9ut1/FNAd7kNrfbg+mEPHwhsMCf3KDdMNVA/VoVk13gqdJKQiYbAR89JINuyoC8SJucpVrcrtnZccWEMfQRlgybmPcpTP3jzvQatzK+LLSaur79k9HwS2NKcdc0SuwqbUByaLBlZD7kgnfDunnujBmNsVmZP2pxuXlOvb5CvhuhMUPkZb3LYXSPabIS+xK4r1uJTYRqxVponbKqpiau/qu2vtSR2wlQiH0aR031a/EX1WFd4s703FC3Rosu8uuqrEOPCoQJ4NcfqgJK5Ta4jt/c8uc5qwhj/f1yWFpwbOv1b/NuwnvHtPcroKf4cXzWDu60ymlWAGBeS0RsVSfQFLPSNVitBclUvzgyhu1hHRr+ujM701jXw4/hyYTp4PFrbi9iuR5mfMc3zu9b2ItcdeAmzmox+q4n6m2Ebfg5FIqk8EiolVyQtAWf2j8dDe79Fq/YPOodXE866E/eCy8yf3+T/2HpU7wO0wOUvTlT0MBXkzxVa1R15n3nOdgtdWZ9O4RK/34BQiNxNlKa2VLrE2njCj+NcQF5Bbv/AunfTN8ZaIiZrTMZkI1cp8YLSFMvmyDI6iqGQ349vb9mC66HzCeFa5PLlFrDRu5QKX/KbyUkNoX3/fHdhVdI1JkgGAgkJLOuN+V6oD9lhgzT6QM0bT0MyPnoRvwap4kNLw/EPkBjKJLPwId/JwKFwlMOqi0w8gchsKclkIG95IouN2pJBVlDE+njQom9yhvlO57Dr3A+9Huth4B7fu/fxNp07tqOQpwi1cEj8kz1xilYrmUIpOH+jC23ngClV3cuqqsq6V4ljOw4Y0LHDgAGUt84VyrhS8SKD0FTTOTZG7uXNOutI7SnCoVSYyB359IDttCVBGu1JMHdxVeXiR0eNfvTb/NLS/OalpWJUxZw5FYOrq61thrZrN7QNxZnGzyTUhljIOWqTXlVb9ivEZp9C3MZEaS5Q/4UX/PruWVXH3T+cdX8VfuDnGIwohj5vinfKS33IZEg2OA08XW7q/g+lVdfuyAh92wVtzyAlasrmGNCbi5+zZGyn7QUpzV5fMqZge05cSp5YX71lUG5e2IztPcJy8+jKZguf8DtFL+sH1MFfb88M6xoTMSU4bcU9VRbY8wrpNYYwxdNI/mhUyvHTeAefxj0Jsfj2L8ch7uavopcWl2H6XJnn8Rwuwfs+4XE21E0yyrtolJ8rwzk72BFn5lK4fK4DV86N5mZyC7k13FYuvFI+IdJAIznbhUbav6CW3p82n7bLCdhk7qW+x9ySRXi+euuMqQMHzHwkKykxPT0xKevbnvfcs270mB7JWVnJKdnZCOrrhXq8x7CK8IwCxnHZZDqEysvf3iBUukWNJACWtCZFgFLBnEVulFbKSMto80THPr7MWPtpeTehfr6hZaenJlW26BVGKb/+V7wET/AeJKe0Md3jDqGIN/MpfD4vkKPlPwCiL428/le5kdmPHQcNWjRoEJUAeD7NkPVJAKiEUSiUSgC8kuaY+mp3oHJGrOzTM6xltkVzhaM/HiSibPH7Fw2LmG3RXxn9tN+2UIMTvtyqACsMdYHXg+SJRAW3wsjoDD9std1b1F1g388tl31p4H/WZyDE++G3u9t1CkSzDJFaX/Aos74YFJY7PUKxyv6DmKTFT+rWeZQYo6zzRs06k+tCOopVJfMRNSe6SsyEZg28p+G6nOjH1JqqKuFR798NsqIzNFJ/nvFRH2wuCr0Nobonmcor7fN3UOifGXr7Mq65qKRPG9RrNb3symOjiRSmmPuhm9AxP3RNNjc7X2R8BcPdD90U3xB69mVXM3m0vC4nVehm9HoQ3CMus5QVBfduhidU6ObYoNBztdDPqtAtd8Pd5oduMaxToVuC4+5UoFMa8FX4m7PkCn+LQgsNIus+HyujEF91njmTVudZFDq5W5WeMo/N6jyi0c/QOtg84rXzmKTOI7qrGGwehdpV8kOPvBv0RsGhRwaHXqSBHlKkQreibyA7GPRMLXSvCt3a6vf/hXuITYWegK5Dzv/E/YoKPaHz7X/Dne1wC3WHWSVD4A43rGhgO8ypOzyk7O47nK1GY1bTbFFfpwAy+mvm12+Ll9BMSqX6jV5fo+lxcETNHKwSbvr5iaq5R+gyB5eomatVwkLvPw1yB5veJd92BFoj+6OJ+NbnwgpqLuKIVA8dEeJUM9BpvKgT4xtNFK600n/2NLmNvrNHIX5q6OODyEUlfuYbrcnbVaiE5Z2N0EA3oaVBoJt8PM87mOHrh26KCwo9Q8aFrsArjCs1UbjS4uDQrX7cuxqeVKGbbQ2hJ6lRZXl9z6rQLXfDPdYPvcCwXoVuiQsKPUuBTinJ16GCcaUFMs1SirprpwpGZ76KTMqVLGBRqO2uVZy0L0V3RoNyHlgVv8VPg6r2IGhqMFsaZqj5aFX8Gu/VBvlo6mi8BG6p+WgEE36lkv21Gj5TM9Lo9RnsnHTFS+hzE309EMgJTUJybevDtCu/UudHZ7SORePkTIAjaiZAlZjjx111K+lyFpg8Hqicn31+eaxap9r8hQWMNgsVyj/j319N/oJvxyh0L5OYA2XK7/5pgxyDxMusAQIZjRjmfugmrbTXQldOykKGux+6qXNQ6KkydHldTqrQzeitINCT1ZPCMiSYPJahmzs0hJ5w2eXQQj+rQrcExZ1Az/ZD787ksQzd0jkodOVcMRrwddZglP+Gwq2TAjQ/XTUQpRBfXSml/DYytyZ0ctf6UuaXNLaNzgRfPf5H0PaulTvM00fvAN2U0b2C1Lk67gK7CwhBYGcGhW1AXeY3hJyig/yWDzKh+XwoagA5Qwf5MR/WhOb3BqH5ZB3s9irsEehjaNEAdrYONu/DGkb0rm8A2VdR1Z3s6vuGGBkyO8H17GQXkH2ThOdkGOz6enay7yWcTM5kbalc/5uNH0auNxFaKRWg9HoC8scgj6jRwiox0s8J1GihvkL1MTVWqOMEavTC4o9vGqZS/xqUqRl2qn+NFUEka7KTmHeS5aR2V0b39OekqhpDwl1gdwGbH7ba+blxUNiETh650aCutpEO8js+yGRFOkLLBpATtJApX5exJiuyx8/XVdjxOthdVNi0+07bBiuSpMP6pg9rGNHrWoP18M3wXvww9UXLkJkEyGX0QPad+nxlGGzfn0FBInn6LlFq9mNY8Ege6tIP6XyZmng50Rpr6BMafZE8cscLyMlgNKUd+ZU6XIrhFu8uFZMjakxRp8upmITqMHnMV7NMRj/kp0AVF4suqthCha3qcsRSjtZB5NUo5YjEemWEjyJ0nVmDfH6a6yRIfE9zN/jnFur9QQd6rYLrJF4g18rgH+8ChCZMuNtV+uwIPEp50qERZSKJF/gc6rhCUfonpkcF1NUXq88/pD941LP3PUs9ZVOFaDhsyEYhyCGFhIbpoxIOGr8LVeJ3NPuR9WJvB5C2bgB/GyYbssvXPereNeIj9uwC/jo8wXyzeki+6KOEQpUOt/nNrVkltJd7jOHCuoHc7Sn89fI1Kw7sqPyEwhmIz8EW9A+BY1XhCE7fYxzZNx3GKLi2rjsHHMBkfK78kY3vHiNIAOpKcFjDcIjQfglssXZjHrQFaM0NXNd7igEdWLGmvMunIwhFofuEaD7RkE2k2QUjpbQLMIHtUzl/nRdpdjR8HkWvfw4PsKd7DcSH+FCIZD2mk6WwaLl42OwSL8st7WoV3yKqVbGNMYg+tH/bwtAeDdatA3jggZuED5Uv3XX5wzFf9Sx/bs3Xn43+gsyjgGi9JvYk1d5BWlfqnluie1yGmiAfFvgEXfkBmprOrYIJv4YP4jegC/SH7nxu/ad8LkTBXLyCdsfHo4UurNJmfpDgoe6WLEilu7/l35rkaZ8OGhgRJutmrpUrM30PwNM+nV7FvAvB/AB+EzrTHxgA3fFr5Gc0bAWBKyAaAJkDrvecp72Q4Dr3KH8DRSK7FKZ03eSd/uo+nxvbrvQvWrpq5n0ruBX3zVrJcXVTli6a3HTK4kdZB6KF3j/5r6DMnImiwykHjAaimfuqNPx9dzSPzJK5Afme+I7ve+Ys+Xtm8n3+MusGPYtoQ9f4eLLS8ZIYY2MYigHPYLMWteMKC2hjqCguLTWPm5VQ0KVp0y4FCb5Xbk56m9y4uNw26corQgY03nvD+KDyNO8sVIQ6or7oceRKJ1an7HKPJ4jGJwfmpDB/v+wVpp0bompph5V4+kgBVwq94s4x6hzmzTUfc8yuFrWu5mZXu1raw7Kr5k/xZndvo5YlFcmPOytQWoHKIT+5Z7mvOShkgZ2nruf2IPcCErUfQNM61MY3ffXJdeUDnlrzas3qtQPL1z552NP6pSVramqeXLIXlm7i3t3kap83JgRaFTRvBe+qb+uqWhXmtyRvp8D4RXvHj39pZbfFe8aN27Ocn7d4797lZYv27Hm8PqGfUN2vvqWzbOTE4o4dW/T0veF+KurYobBvYZelZJ9z+BOQQGSegT7dhtYI8We5KiJhDUh+wtxUNJvryT9NPpnpBkucUZS7wdPHD6RBMRTC2Ovn6aMGznM8ngVLrUBLh8j5v4/L4dfK36NdQI1IfrwIba5ggzQrDwn08QQfXr/Or8XzrHgerIY1FIOJ3ptCNKsJEhnFiVwxw8SEpvH3iXlEfsjxUIpCKVnpl+kqTaNzpd8u4TZyJ0UX7ZtKmN7GBhlBkbWyPPyecKo2TH43ZdHSMO9w3I7cZbLyfI1MtFl5BqWml0+DUpLMOFZKkunUNtFmFSS6528o5SOExWay2FCm8sjCQ6aY5BhnDF/ptmha2TaOYU3aGjvpUyqTwrUVv8TGog+2Z23y0nRP5yguZD/+J3TY7A5bmr2QH/MrqA/p4LY8zz+7VpCf0/H4TBH4evEv+NSqPqmj6d4JexaxR3XsXrRnApXVTciRnMoqnJPJeXxFipPz3ePMruRa+ttRG6TiWdXx/uWprrEhSnqNv42zm4vSZaQYtG3wGXeNYs/BMLNQTzR7DkYM+x3Hrjdm15PY+xT2PlWpgbSxOkhfIipL3mSNSYG8F8nKiXtPkv/wdnz5G7ztBPkPRgEQcVeFR3Z7Ee98bHQ6/5+te7d6vBzQH/IW3sGt4Z36W3v37iWydRHRePexbMFstFuKkztBxdGNutvq+CRPEvmQlBDYs0T3cMYkfapOmP7B1b5UHckREyu3t9c+TYM+4CWx1pXopPXgWeH6NgG6Z5IZhBwmswoEO83ULQRf13rDRimvA3tQ2Yvlufi7S63wBtj5LWSnlkF/qa5fm9FTJlV24suxpX2e4Vbirt1c/PbXcaToevcgROLf8YXqoeUTOeqz8t4IWcXONctFR0MEFznXIqOwF8jaJaFURP1ZueiSFNUsT8maTK2lvzPY7yz2O7c2wPmkpSv9wx9DOPkRu06qSMhqlV7FpHkcYZqYntJqwcIqbK2M5Gz0OzQrmGNZwfIzGji2qiHsEBjYqQyhm03fZ9RK2fJtiW7VpFbKUT/kMmIsdRgJMdIf+fFjvpPrsJM/WQtLCT2WpoG91GEvFczbkmBEzqbXYz68sRavrxiMn1n37SnbwbU5UJm0OQWyug2NmoMNQ0yzuTx7rOeMzS68+9NPW6dvrb/G5Xtq+Xjy9qeffsKh06dPx7/t2UOrNTgW4bsjtGJPXLjPlwtnCfa4VV3DvqArTJPhtHljJl0/DskQFq1UOFqiw+QWw7TheBLYCIVlOplax4iutIRmgtL0H37f2pf74f1CVQkejw/C20TJW95pvAAD9uFXjwutyvfvwF9Ay3mRQv05oVXdae4cbsWHP8Lt84ytPjKLeXoW0c4cSi+SLC4Myrgiovd0Rqu9jyA7kkyNoVLa0phG5iWngbx3GqGSypfB3l+EoYTzp6FVSlVPkLPra/4upcWyJ5qkOXUGTKie8yOWeJDGTmgaIyirs8ZkTbZylbpW47H6tDUrY2JmM6s4UpoTWA00M0phXiXIUWDnWQ9U9vQfIkHPiEueu6dPzpJF+Dd8PGTXrl0vWaEvRE+en9N32Iq1kVCMz0ALqH9sfhL+PQni/to6b8vfEJuMf0t+ZPGWefRJHOQcipfJOWxEuFg6+XRcimiaIzeyopw1ghE4+Z1dGxDe1bZekgxGPkc6SNe1A00QIaJQkz1FTvAjrixnnBtpyuqOIzL4II3jd6BxfKPuRFI+bqqVm+pRLkaYfjRrOk8WKMkpS1GabpBJO6FJ6WHh7KEG6SzxQMvsKVcj4pAeO0Jk1iyyaBkOwtzAYSss4FLxtufJf1zXNyC+9altANveaYl/O/MRh3vBIdwTRud3+5ms4Hs/5sFNHM0bt7bYCs23rN2amLB18TPwcXKLLxyAJ4RRKsoiS2kjqxiPFkoWpVa+gf6gniUi4EFT2BSnT/GT6QVZzYReqH5rJacrRFfT4FN03aGa9k+RoVFK8XCsvdCYFgVGsDkgq7Ck1FFK5uywOviv38uNPFP6tP3F5+EZvBwXw43VTXG7UlicuxD/3oHfL3xdNuzjlS4njjRxGSf4xR+PEsBEnzHhvSFsYLx6bUCPW605IVktolzDJhd31ZTbR9sJycdFavTqWkUvsptd/6+0qwFu4rjCt3u6O/mQLP9ItoUxtpGMHEMs27Ix2ICMXRjjoQhCMYkbWU2AEsAgDKQxbikkEP6LIfzUQEwI/yYBC2EErlsITFtKC7EnOA0Bys902rRMGdLOhEky4dy3eydzJ4vppNEgRmvtnN5++/fe7nvvS+qWI2tJA82qOrD0wvQxkr+TjodxQPd/tUdqcDAXLzObEWtZzhxMgmKLaGCspdgikHf8WFRcpGs+IN3uPLOvGV6o9iC81m5G+Kvyj6WONjNemXM7pw7eSH8o93ZuHbylVPbWnyeQPh0JM2M6rJhJjDcoqji+qM9tVCfCPo4IjTukOdYip3cgG5E57uQAjZIIDUhiEi2ZRXHEAZKPh08jEoj1zfrvIA5LbTvoP/TazW1oKlszStoiff3e22jIq4+v4qJ66ZM9rQGUcc5+h6zxbpB4JfRTMszlDUEr9fuXkylEMYv7IhHlIBm1coHolgY9IzrbfaJfxN6gSUTe9vNiF/nsFlG9Ji+wHEKTRMKAiE5m0LCs5+VnkQQUtngXeZM5SWi5Mm0wOCl1iMPG7pUuSe9eghcuP4LYzdJl6ctbaJR06ZO7i176e2trK4otRiZ8qvHe5ptSMZrwh5cbCMPNWlzOPmKrQFtNkLM5Rua9YR99s5X143LK5zKkdyHyoDSwIgYRiyaUweVxZRzrbd/C7eOwN3z2kuwoHjEGdMdYdOGdgQX30OS3puTWNr5QVX1JzrOvO8JbYEQMZN4MxlCvWOJmltKtMjcy1fimqu3VcIFasqnRjh3o1kvN2jhNcsoYbZyvrABbwkmuikYUE+uUdcje2KDzknOI4y0t7MbVD3b8KXfkgmUXenrwUZKAgZ1y3359SV2J9MiUFki8/02AMFwTvnNGd4C2rJZ5InBmtBMczSCnuyQpJMRFsggIMRoqM6rGEyarsIzyMk28lznoqinVpb+9dk060dKCvvrHIbREOs6Jwq6xICBIPOHiNcvX9DQL5BSqQE4HM4z5VdAsZx8yE41LtWtH7QGNc3w6FNLDhRwo5ETtDhsUbOFCNhSyo/RNkhLUqsljkqRx0yYdBsoiKLWg0Q7t6zZitaXLgGT270OiJZF+bG1pufG7ymqUXrgLTSc9uv2qc+SChguA1nHpPc5DMkYCRtUdVyxfxqyepu1ddoqqhyly2cyJoJlaKlEQo0bb/4ZPQwOiQYwO7XDBDgV7FMT0cZFYpWmxGkJSwpPN3REdq0KCFUeUSTVYGqDeWt5zEEbRCRhWH31EgFJBVP7xvBoYTzDAmt0KRgQhFwywDjYzOuOTNaK1WsYnhthgQUuSSSZ+skQhfjJQ4idyRPgtGJ+i8D01gZSD2QSGB3vqyfZrjVTIdBzqT5cTwIBnppYqhxLlwMyq6P0Cd7IZjJFJYSqDrMzCzhKrW3VdZo3cO8AqjcNagnWs9Y+noZNyOx3QaJnZrxh3Htq54zA+tnXbsbveajYnf4YO5e88vH9baM+hI7uFDT//faW7gWoeX+CL0Cd2Zm1/ditrxKqpsFsBCKE76CHqRbC6n0ddCNeHDGgQGg7lfnxXiH8K31UE0VUw1TZYVq++G98VuvFUvitMLGRorYURwUqrUm0p1n5ZQ+S7CeTU5Avh6aHIgO6gfgDlPzPGKATy5CjEVpTpQGDeFwl4icdzTzplQi/ek3ZsiEOeYEvLVvSZVHI+GRAvBcRPgwxW5scqg9samS4Dx2l4mASZa1xwqsmTgpyQLGdIPJmoqhufSPO8W5MTqXSpoIxnCk+8s4tcPIEYhsqkkRhLp8yTC9ese79pdedfce0P51fa0c/QrmPLB77RuGzvutlj5sy1U80HpP6QzaYRNzUqm9baz4yFpUglSx9TdIjlwdbiWe9JM9YEFg3UjGeLwKtEdRAmUXZImK2yEJf/4Fja+DlL155evzfAMr3/3Pc9W/7IYaPY7FOsqWn05saftBz45Zjuf0kl2TmjXO7sGYC3k2SnArx5WH/6z+e+GxLQf3UquRlOF85YS27L8BnpNw/QeGkmXof3PJ6NZxNWV3lGZwImaUwW41dp7tbI5OR2garTdme70+6248Uhg32Qfbgd0NAS29mp67M9SaFoTcWawOoM3I9+NZx1T14B2EKaJRawkj+BDXbMv/LQzu2tr/v3rd/4bpf3BVd2Tn5iVWVVJXYvGTF6RV1jY93rJSX+VxobpImVlfZnnkEvjxs3AXp8XO9/6GptBl13XlAv67p6ckyjuoKyRh4NYZNePscOGfAgPBzDigDrdDzW8H9ZtCdFqZpmKTycyi3MMFRUMBY5CsKUYGbU4560ct3Z1duO4L99ljBvmqvclfasMycf5eStXdHQemRH+afXT1hHH057blTu+LyXGMrTtpGdRfVYaxApTI1EnTVE8jPOejwU38Abz0PNjbpZrI6/S7OZpzDN9CqPRpGE2vB53AXtavdhP8b1xId/cdAH/7WTb3C9TOdaX2Z0Yw8mdVbgJsyDKQ5VZCW4zEic/Z1gTXgYH8NrnP7DGTza3XqPHrRmHaz/nAatJE4jNmdLlOm5zbxD5ZaP7qAs6VbPjNrG5aGfLjtb6MjOy8t2FPJ3r0svLti/aNH+BeeyCwqycwoKCEKv6QrQ+7zACBH3pMmwcdqK4pDuaAWLH/DCxE31TQ2g7WOmVneBLeNnUh7JmRExLGrXfrJj6cWIUBbCPcEr0Rwy22VZvMmQbnAa3AaPwWfwG1YY9GTggEZrBTsvRRv7kuVKtrFll6XA5a7q5ulS7b1VbdypujVr6opKS4sCZ0G6jbqHujN8A8x5kZlOr/jkSIqo8Ad5jqxRVpA8BfrYCp2cEtSxjLI/y7e39AIsRAKHnAJLSC9dnM0h2JCLtaH9h1DKzaYtN9jSf38e4C7fWLoUrZcekJzbY3QP2TkaOeipvAKTMQyTh/fxIIeO5akcOhL8AXIwIAemf1OyZemdss0YMonpolOkchApskAY1sXO+XRL0y1kPShtCjz8XPdw6dIbs1AioLEN0MjjO0AKC8mTyJJjW82vkMfLgrFKzAnIxqVzTs7NeTgfx3vl0BNyB0jPRcpi3LGeWF+sP1bnPWlUkbzqKVlj0KxXIqtk6ZIddFQqQRzJ7Jy/bNp0B6Xu6zQvGesSmndXlCAqrm8enzskuaF6srNMX8jIkgN+H4DkKUzo/5M8iDlWQVC2t5vEd0SYtr3E3iY4wlSNd4sekdjhK0TybZuo98o0jDAsjelGp9Ft9Bh9Rr9xhRG+EcMjl2y7ouYCIUnUnDamdPdBUKwEDSm8wrABKygkHz0xoTB3jT3LX15o354xlAJxteL5sRMyymvGTKYs4LpzfXPtR996rvHhS9unT7RY0iIrNCliojlcgmqiLbt3uo0LhOfZqbPKKjBVMIBOm6peBehIAcnobHELsmSiqMkKItNcCmHh6Ilj0G1GXjWmQVMsTck+0BQbpjNU6YFZmtAgduof245f7Zk+9fvPS/eT174phM5OqeAC81evqssfWVxgm6kbXrh46sRnS4W83l6mAv8Cd3Jn4wWMAeLmfj5rcfJ9JjMCN+OL3HHl3rP5afeeTCk87zStx9F6cdqsBtTH0g11PuQ+gDq8+ll9XmFm5VlO+M0z9FmC+lkajkpZ/g6oo6d1rBHnhkn0QjNDeeI4vAF30Nox6l/u8yJJ7ZYzqtbqfs2W8/dhpKUzq77Tqk4PlMtMpoT0BGeCO8GT4EvwJwh0Tbd0ByzUc8Aqam44Bolq9wBKtqEejInasDs6AtjyK1L7la7pb09b5aso2ZQzcMgG7/jhu3NSbFxg4Zo1CwuKiwtQ4qS54/LtQ6vml+XbqYfZK5rooxq0Tok+elUTfVQDuz6N85LmaqILatBzSnSBTxNdUINghPwXXTsRhwAAAAEAAAIgAI8AFgBPAAUAAQAAAAAADgAAAgABQQADAAF42nXCe1CTBQAA8MEm483GcxPYe7AHG9u3jW8vvu17fx8b78cG26UXCieWZKcV4INARU8lIuA66UCoDrEZRcp16OERYaYlnUAhRyV35hnFofTSeNVf/df9fgwGo/A/pxkjQdagT4IdwRPBC8wwJsisYbYzP2VOMVdZYawdrFbWw22+bRdCYkIaQgbZKnYbu5/9IfsO+6/QpNDDYcKwyrD74fbwxvCbEYyI6ojBiMmItUhnZFXklcjfonKjuqPWoz3RX0U/jbHE7I25ymFxTJxaTgcnwLnLecblcvXcj2LjYqtjP4/LiDsS9yzeEV8XP5kQlMBLOJ7wTSI/8WjiYpIs6TKPzcvnNfKm+Dy+n9/Fv8d/vB3Y/sq/Pk7mJh9IvpdiS/GnrKeqU6cFiCBPsF9QJ1QJaeFx4S2RQHRGFBBtidViWtwgviR+It6QJEn0EpdkSHJDMidZkQZJo6Qi6SlppzQgnZDOSx9KN2TxMrUMlL0nG5F9LXsgW5NHyflyj3xcPidfSQtJi01Tph1Je5S2mZ6Qrk6H093puxQahUWRr6hSHFK0KHoUlxW3Fd8pEWWxco+yUdmlHFAOK9dVftXLqlOqXtVF1TV1qlqhdqhL1S+om9TLGa0Z72dcy5jO+FnD0CRptBpM49NUa2a0Bdpq7WFth/aidlw7l1mWuaQL0iXptDpM59Pt153U9eo+0H2mu6f7Re/SD+nH9dP6JSAI4AGZgBXAAT/wGnAMaAMGgDHgFvCtQWQADXmGCkOVocHQYnjL0GtYMiqNTmOR8TljjfF1Y7uxx/iHqci0y3TQdMbUbxo13c3yZf0NckEFaASdoAd8ETwGdoPD4E1wBrwPrpqZ5hhzshkwQ+Zm87J5y8KxpFuyLSWWGkuTpdNyyTJpVVo7rQHrhHXe+ti6bouzqWx2W55tt63BFrBz7fX2R9k52f0QA4qFBJAKgiEvVAudgNqhHmgYGoN+dQgdlOOgo8sx5WQ4UWed87pzFY6DhbAKhmEvXAufgN+Gh+Cr8BfwNPwj/CcShcgRO1KC7EWakXPIMPIl8gDZRBNRDYqjfvQAehp9Fx1FZ9EVdA1jYwLMhJGYF3sJa8F6sRHsDvYTtoHH45k4je/EX8Wb8TfwbnwAH8Nn8WWCRaQQBsJFPE/UE28SAeIG8T3xOxlBikkzmU9WkYfIk2QHeZ4MkBPkPPmECqWElIlyU5VUPdVGvUNdoK5Ts9QitUyz6GRaQ0P/i6DzaC9dSe+jO+lR+gd6PScxR5KjzdmZc97FcilduKvU1eS2uGE37d7tbnK3uvvcV9zjuXTuQt6+vPp8IL8vf6wAKlgsLCi8XSQr6i4aLpophos7S4CSiZKJ0sRSpPRsGauMKOsr2/SoPec8W16+t8076H1abi8/Wr5QsaMi4Avzpfr0PtTn8e3xNfo6/CH+WL/Ar/Jn/QO0Rm+iAAEAAAACIxLe4jodXw889QAfCAAAAAAAxPARLgAAAADVAVLM+jz91QmyCHMAAAAIAAIAAAAAAAB42o1VfUzVVRh+7jnvuReDhct0AzeaZoubEA0EaURARsM+DBUo9I6PRmMCIxmiLUIwhMyPXNmYWNONmlvObH240n/ctP7IVszV2rLWVrnKzT+sZf+EnZ73x4WxGze827Pn3PP1O+d9nve8di9awF/oH2CKTSFazUvIkKPIkjGsd1exwbWgOHQflpuv8Ky5gGz7MTLlIeSabCy3ozho2tFjxv3PnF9LHCVKiLw4V+s+xAqihnjctGKrWYMH5VbcLe9iQDLxjCzAbZG7UOK6/XUXRacrR6XLQac8RzTx/xasc0fQadowLP1Y5rLYX4fOiOXYYWKY8wsDrnLFZINyl8p5a7HJrfbXw39ioVsMcWF/XX7E/aYCHXaTv0K+2b6GZXYX7/4RiqQMubIDzZLN8w4QG1FqfkGaHMJK2YknTAFiJur38kzNbG8OX+LcQTwp2zlX1/VjhU0hZ+B2c4brBlEvS2HcOBZJFlLlDj9BfsCMItuk4jg56tLREMS+Fb1yCk/JF2h1PaiUGswzadjmFqLBXkNjuAq1POcQ11dIC/o09tonUZy0ueiTNaixQAERNR9QtyXYaS9jnXkFu829qGP/fnsMPVz/mDuOrnAI9eFRrl+A1UHcZ0FkGPNVi0CHGTBt/phqQX6VGHUP+5+mdUiAlKDQ7cDaQIuZUC3+wBaXT0017rMgfBalgRbUYSZMlX/dVKGXPEjsln0on9YhES/Th9Ql0GImVIvn0aisd9Xv/Yf17vx+Us7hnEVkvX+U39D46BnnYPWzeiop0+vqN/c1lsiYP8cYv897vkm+SP6c/An5JDXIoA9TAi0Yj/BlxjKGmOaIifmuIE/oVbmIrZov6tk4NwX82eR/m07exb1GkKk6aiwTWQZ9n3sHXdx7Q6ArY5vIkfOIRQrxiOag5kGcqyfZ/6Z5qbmRlJmzmjcB/xrnM/579YtqdqMc5DtzLvCY6hvPe829RDaL0eBGUGn+8t+4E6iSE8h3Z7nPOOoZw8YpL2guqB/Vy+qnxDNz7lsyD832W6y0R9DAGLebMb51Q8iw32Gz7WbOv4FDwMQEcXV6X75h+o5MnTmRk3qz2/8tZb7uf8ZviOf2rD8nG31tsvEp75F79X1M5g0yZLsfSDo+Ffu5OFHzuFZz8kwvzMKsR0iJ8oxxNqeIm1gXY+zrZ/setsdYKC9M1kt9fxV8ww6EHeoUdohzPDpCv9NXOVgfeg+Vth3dtgvVtoN1sBz58jZr7DXmaSMGwgUYMPXoinyIp4May9prdqPDdOBRaUOrHUY63+0iafKXWBfawiOIRtLwQsp5euZTtmPM7cNBba3l96NSijvlB9aUfSh2X6KMuf9i6DSW8o2a725BWuT0JEI8v/EoIPYTq4goUUSUEGVEXry/wl5h/RjDntAEttmDaBCDPWJ8KfmAQvsCAKv0rEQJUUbkxfsqdDzRb/8CJ+ECbwB42mNgZGBgz/nHw8DAufqXzT9Nzk0MQBFkwKQAAIMcBW4AAAB42mNgZjnB3MLAysDAOovVmIGBUR5CM19kSGNiYGAAYQhYwMCgD6ScYXx3f393BgcGBiUhNoZ/DAxp7LOYGBQYGOeD5FisWDcAKQUGZgAalgr9AAB42q3PTSuEYRQG4HMerEQ+GyVPdxPZioWvCUWZlWzt/AhZem2sp6wsXzFWI2PMxsegyMJPkNI9M2VrY8HiPR5vk1/g1Dn35u6qIyJORNrCDoSrabZrPuSaLEmHdMtvo0t2NNKC7uuhlvVDzQ27affkXtyrV7/o9/wXOtGLQXhkMY4JTGEOOaxgC8co4RxXqGX7zERaHiROvVjPgvfthv488Qt+18cQ9KAfGQBjwZvEbMs7wknwLnGTeipqn9a0B6taxYp2YBu2bjM2khSSKIkam43RerP+zEfe8463rPGaF6zwlCUWuc08V7nMHOff3tPv/3F+AGemXwgAAAB42l2QzUoDMRSFE2esrT/gUghCwlCF9gb3rmaRKUg3o9NF4sIfbMF25QsIsxGGLHyW091018fpS4imUy3qJifnXPJxbsBoiE5u55y/u5p/vsGczjvR/Z0GJymzqQF/0Ngh8J7SiEgOEHUHNzZx0kt/NfZyIJ8fx4i7jYbBxLsLCVbYaThHViF1YnudOHepEa8xcYPxLgBm34BZAwjvPzR2aSgRneX22qI0AqlxQimZYZlbLI1Qzmm0th2Dvk5PNm33CK2eRntDKCxSAea837hEofRe+LDBj1/+9TVn/4P0dxB+IKt5mTeTMlFiHSQqUaGhMxodGhY2CxVVqLhP6GcaBwQKckjzc15JX9hFymL2VLdZNbIL1o9WL04gCXBZ1cdsm623PCKkVS3ZrZ0TM2LBKFoZp78AXKGI6wAAeNo9jk0LAUEch2e8v+6m3YO1NF5SWLISh1WUSHHgTnF1olhO4hvIJ7HNxcfwUXwE5rfk8vTMf+aZGSdmOMQgnEoegzxotZhWJRIyHp5+q5JVYd7/zHc7LqwCzH9YTdoZWKCQ1tQ4LNg1SykFFmqU80kZFm6Uf21kPrZMt4j+74t1zJKWgMWbRaa5M2lk1dx3CZeloPhbdnhaJwfcUeiOzxS65xdgq1Cb93QxWwJnoK6LjSmwAa7AHXgDTP8WNgobhc1lJrINwxL2AhgTh5fAFXgCb6CHc/UcCoEP1M9QeAAAKgEEALABCgBOAGABSgC3ANMA6gB9AQ4AwQDgAKAAAAAU/mAAFAKbABD/OQAN/pcAEgMhAAsEOgAUBI0AEAWwABQGGAAVAaYAEQbAABACWwASBwQABQAAAAAAAHjabZPNattAFIWPlB/jxAkJaaGrMqtASyzZycKQbOqYEAImBafNqhQUaWIJyxozkmOy6KKrLrrqO3TXVR+j2z5PoT0aTRO51GI8371zf46uxwCeOxkcVB+fq2IHLVoVu2jgxPJKzb9a4zXs4dTyOv1vLTcgEFhu8uSj5U1s4JPlFnO/WN6Ch6+Wt/ESPy3vMPeX5V2sOS6VOKtNWu+dhmUHzxxp2cW288HySs2/WuM17DufLa/T/91yA6+cH5abaLlNy5t44j613MK++8LyFt65ry1v4437zfIOc39b3sXGyuZAze51Mo4LcdjpdsW5UuNUioss9EQ/TcWoPMrFSOZS38nIG6kbVShxmgbhZCTH8zTQ11LnicrEodc96p2UZXpVVLuKqjKSXASi0EEkp4GeCHVrW3nVZo1QTQexTvIiCTLBTKmLXGXDJJRZLiMxzyKpRRFL0Z8FITd7ciAeRXTiopgd+/5isfACE+UpPfbTKjL3hxeDs8urszYjK2lGJQZQmOEeGgnGiFHwkhyigy4fgXOeKvpTSFoXyBDyUgj06Um5jx6ycmNJ7pK17vgdMXLE7BuugkvwUqa8gCEmJnKMubE1rk1OzlqKHcr+Hrsfocer/ldNb6lWe6lWvUdilARcBWsGVCExNV0m9Cnc/vNW3pK1fBKSp5xQbKaTs2LCSpl507Jnqbp881L1kGchPZmZQMSYOTkyMaWW2Eywz1mXqitrOeeAnv9NomPmWzDzmH9xHwvzeKzzWMtjvKZun8rrNXN6hvzdBjjDJa743bY161N7mOUfWuHKcQB42m2WZ3gbxxGGv29FAqzqvfdeCIAESHcccJAoy6ItiaYl1yNwAiCBOApFlOTeW+zYcWKn2XGLE9txr3FN3HuJe++9JnFvCnA7FJE8wY97Z5e7887sHQ6EgvvZ7kEC/+ejpgJUHMQqDEIVquGBFzWoRR3q0YBGDMYQDMUwDMcIjMQojMYYjMU4jMcETMQkTMYUTMU0TMcMzMQszMYczMU8zMcCLMQiLMYSNMEHPwJoRguCCKEVbdgJO2MX7IrdsDv2QBgGIojCRAxLsQztWI49sQJ7YSU6sDf2wSqsxhp0Yl90YT+sxTrsjwNwIA7CwTgEFqtxEY7D8bgdZ+N9nIDTcSrOxaW4mB6cghdxLM6ilzU4DefgJNyNV1mL83AZvsQX+AoX4go8iPtxJboRxxmls3oYNh7AQ3gcj+BRPIYPsB5P4Qk8iauQxOc4E8/iaTyDFD7CJzgZG5DGRvQggyzOh4NN6EUOeRRRwGb04UNswTZsxaE4HIfhZlyAI3EEjsLR+Bif4hbWsZ4NbORgDsGP+IlDOYzDOQLbCY7kKI4mOYZjOY7jOYETOYmTOYVTOY3T8Q2+5QzO5CzO5hzO5TzO5wIu5CIu5hI20Uc/vsNzDLCZLQwyxFa2cSfuzF24K3fj7tyDYbyJt2gwwihNxriUy9jO5dyTK7gXV7KDe+NqXMN9uIqruYad3Jdd3I9ruQ7f4we8jXe4Pw/ggTyIB/MQWuxmnAnaXM8kU0xzAzcywx5m6bAXt3ITc8yzgHfxHovcjEvYxy3cym08lIfxcB7BI3kUj+YxPJbH8XiegOfxBl7Cy3gFr+MFvMYTeRJP5ik8lT/jaTydP+cZPJO/4Fn8JX/Fs3kOf83f8Lf8HX/Pc3ke/8DzeQEv5EW8mH/kJfwT/8xLeRkv5194Ba/kVbya1/BaXsfreQNv5E28mX/lLbyVt/F23sE7+Tf+nXfxbt7De3kf7+cDfJAP8WE+wkf5GB/nE3yS/+BTfJrP8Fk+x+f5Al/kS3yZr/BVvsbX+Qbf5Ft8m+/wXb7H9/kBP+RH/Jif8FN+xs/5T/6L/+YX/JJf8Wt+w2/5Hb/HtbiOP/BH3IibcA9/wvW4AffiGNyFE7kdl5e+5PcpKoU7cKcahNtUFb5W1cqjvKpG1ao6Va8aVKMarIaooWoYPlPD1Qg1Uo1So9UYNVaNU+PVBDVRTVKT1RQ1VU1T09UMNVPNUrPVHDVXzVPz1QK1UC1Si9US1aR8yq8Cqlm1qKAKeYvZdFPpI4wK/ZphmQ/LvCHzRkDY5g33WPGck/Vamp5wd87ebHssF96wk3Sy9kavpVkfiadz8WLP+oy9pT4+ENdFEk7BisftbKEuviP0RONWOWVCI1rKbxW8pghtEZpaaLuoMwcS2TtCryll2JoeU2e0XdQvrSgqWVHU0oFcyYFc5cZ9fr8wUL+sYndqIK5a1m3lqlKli6e9kM4kbE/ahbdd6k9L/e26/rQ+sHapNK2p2per9Ib65RWODQOxriEQFIYaNiZztp3NWNlEOu5ZYcWLBduTcSFLDGHEs0IfQcZF1YpSf1WZ0sWzUu/KVuxqbhEGPSv1rqw+uKzV6+QLOac3ZQ8ys8lBdjbp7ZD2HGmvQ7fnuGjsSBWzSStX7MlYxUKjUznyrNLmXIW5RVprCXlWaXNOY7Vem3dRv7riePL/ezxBuVXBgGeN3lzQPa8p36BC+QZ16htU1DeoUzooSgeduoOii+rOXDqbrC6Wr42d/9VNsXLk7ZQbWZQnv6uixr6KeG1FvHUg9qzTHW5zUbdu4FHctiOszjjZZF531xqr7kg5uWy141473WuxfNV/jzXVhcs163TWjtAbNjUtW59lRz5j5VM6dgZiN4vf1ypsE4aF+rnyB/T7xB8LNKYcZ6PV7Wy2405Pd0Op5m474/SVB+UlPlO/ckr0aQZMYczTlcxZpQPv0+jSB9HnorYrkbZzdj6dr+3rj/S+sOQLS76wXxgQNgtbhEFhSNgqbBOGhYYwIowKpd5wTNMQvyF+Q/yG+A3xG+I3xG+I3xC/IX5D/Ib4DfEb4jfEb4g/Iv6I+CPij4g/Iv6I+CPij4g/Iv6I+CPij4g/Iv6I+CPij4g/Kv6o+KPij4o/Kv6o+KPij4o/Kv6o+KPij4o/Kv6o+KPij4rfFL8pflP8pvhN8ZviN8Vvit8Uvyl+U/ym+E3xm+I3xW+KPyb+mM+zVj+4W13IrNhjYo+JPSb2mNhjrt0vP8gl+oR+YUDYLGwRBoUhYauwP19YaGj6JL9P8vtaGovZhJ3Lx52cnejONG4qOgW7/MLL5e3E4EKfU/oGl35ZbKu0SG/xhzw96az7Fi59x7OJWntLPGP1lDbrv4eaqzLpnKUH4aCn187bhf6hlBeW8sLhqkTpXVZlFnOOnjGkMENWGNKA/hqU6N6GWFA/3jFDH1SJfmH/fHODHMTijBPP1JQ6WZzIOj01pZeyG9Rus3N6qq6QKv166sn1TjEnUXqznqvJp7fodfnSsWR1aKeTqYJemE1LxppkZmtvqqWlqT/wSRBs7g9a+oNQf9DaH7RJEOrfHvL3BwFda7bYk9MF6qhcYDlyCywHUqAb6gLdhW6B7kKdr83fIP+euUfTYFUOzMqBXTH4DxttQhoAAAAAAQACAAgAAv//AA942iWMQQpAUABE38yKkiyspNzFHSz0N+7h5FIYTM3rNYtBmJY/c7xCWtJVa1hUwk1HeOrCul0j9x7C0RPifYAm7eJ8y/4AWfsHmQAAeNqdmAt0FNUZx79v89qEBJIQY4zW06MioYqgiAhUqqXyCPYhIkXRVipSDtI0Iio+awuEBETAF0MVgUZKIBBpEZUjQnio1WKMUSCEGMIa4goLSJVDPceT29/Mzj6SbELsfOc338zde+/Mvd//3t1vRUUkRfrLMIn/2Yibxknu3Q/PmC65v59xz72SO33SzALJlXjqiDFi19V775lRIF77yiFePHiPpKRcK6qFTt1NnrqUvJQ8TyDuUm+ld5zX562Ju9z7O+9Ury+hIGFWwk5vUcJ/vRXeE94nE1O89YmjkjKTcrxlmN9bkPTP5Lyk75LzvNm0jdg4b41rvig74a13zW7rWnIerUOtgmbXraFWW8qctwpamWs++ghR4FiRY7wv/fLOjvnovQjKKLetsgOL9dRoop/WFn/wiRFS8pKvsGc2aMz+JuY7UbpJqvSUXtJb8qSP/Ej6Ec8BcrUMlGvkWhkiQ+U64vsTGS35cpP8Um6WsXKLjJcJcrtMlDvltzJb5shcKZJ5UizzZYE8JQvlaXlWnpcXZKlYskxWSrmslw1SIa/JZnld3pA3ZYtUyk7ZJe/Ie/K+/Fs+lI/kY/lE9so+2S+1ckDq5KDUy2fSIH75Vr6TFhX1aJImazdN1R6arhmaqT01S3M0Vy/QXtpb++ggHaxDdKj+WIfp9Tpc83Ws3qV362SdolN1mk7XAi3UGTpTH9RZ+og+pk/ok/oXna1zdK4W6Twt1hKdrwv0KV2oT+siXaxL9AVdqpYu07/qi/qSLteXdYWu1FX6Ny3Vct2qb+s23a6VukN36i7dp/v1gNbpQW3SI8zytWa39oLeMNbslu7MaxYzeylzm83sZOsguVQH44fCZK6nwFTYyv02qISd1FXpabyyWNJbTkgm9DLXyxWmP5HKkhtNg4w0x2QUjIYxcAvcCuNNs9xmjsrtxi93wmzazYG5UATzoBhK6eMVWA1/hzVQBuvooxzWwwaogM3wOrwBb8IW2Moz3oZtsB0qedZO2EXfu+nnHfy7+Pfw/8J/QJs9UAXVUAP7oBbqoB4aoBF80ATNcMb013RzTDMhC7Khl2Rpb7jcHNUroD9cBVfDNTDE+HUE9UZxnW+u1zGmQcdS/y6uJ3E9DX8vfjr+D/gC/B/xhfj78DPw9+Nn4h/AP4h/CD8L/zD+Efyj+Mfwj+OfwP8J/yT+z/jZPHsuzIMSWAALYREsgaWwDF6E5bACVkEprIY1sBaIgxIDfZVx/AM2wWZ4A7bAW/A2Y90OO2AX1Lac0HpohMPoxsP67S4lLfslE3UekiGmSYaagFxnPpOV5jPUegi1HtJBJqCDuR8KY7mfzP0UmApbKdsGlbCTdmn0VEVPx+mlml6q6aWKXqrooZoequmhilbVtKqmVTWtqlkdaWj3BslAoz6ZxF7UA0WfkMHwEiyHl2EFnDEn9DLoC/3gShgAA6ECNlLnKva0dHa1dLffTNaEnzXhZ034WRN+1oPfec46fDmshw1QAR/AHqiCaqiBfVALdVAPDdAIPmiCZuY329GWnxj7ibGfGPuJsZ8Y+4mxnxj7ibGfOPqJo584+omhX/dJuu6HA1AHB6EJjvD+qvuNxR4xkriMgtEwBm6FdVAO62EDVMAHsAeqoBpqYB/UQh3UQwM0gg+aoJk4ZsMImA1zYR6UwAJYCItgCayGNbAW7Gdmsrv42AV87AI+dgEfu4CPXcDHyvSxMn2sTB+q9qFqH6r2oWofqvahah+q9qFkH6PPsSNm5kimmaO1UA+NcJgyWwsBtBBACwG0EEALAbQQQAsBtBBACwG0EEALAbQQQAsBtBBACwGJkzT2vRvMNzLJnGTvnGh2OOc9qC4fdUxALRMlw46AU36E3ybx7M/jzXbuPpYCM12eMAVSYobLWrNe3jKrnKgUO6rtgbpSqXsMNXWn5GLzqkzgORNZJyONvcbyOU9kF7TbVPKEElaafb2Y+inMla3Q7uYjR6X51BtvaunhqKPOAlPBsz+kzUqevYNnV+oh8wm95NNuGKqwUIWFKixUYRGLQpRhya9NDmPqhkIsFGKhEAuFWCjEIlaFxKqQWBUSq0JiVYhqLFRjoRoL1VioxkI1FqqxUI2FaixUY6EaC9VYqMZCNRYxLiTGhcS4EAVZeqHJ0R/CRXAJjKDsZvxs/FyYByWwABbCIlgCS2m/DF6E5bACVkEprObzNbAWyrm3x6HO6DwJv7J/LSY2p6yXC1BQ9JEZdOZz9rTgkSGdHMQv6MvNXvfqqPnSvSoiGuF6ptp8Y04711XmpCk207hMdT8thgOwKeYzToWvvnJ9Wei5XTvMxjb3x4Nn9Gb7Zk5Z36O3U+1KTnZa/3TblszuqU7qf92u5D+xagT7iNlTD+eT22L0fbRLI2w2hzkfCUaSddVxzTuc83ZGVMv5gJlmdpgAqy6DHeld4yNiaU6NLyXDnEfZVD4Ts8Y0QX9aFJsJrFVhD0k3r5nd4Qhvkh4tLfxS+8rkheIe+qwL73/Mjinn4/bT2ZnOPt4vnPqOquyxd3B0N5M76OHzTvsPnG0eY+qz3jn7Qmsy6kh3PrmljR44m1+gth6t+vow2I9Iy3TnflQXnn+6XUmlq8OenPmONgNavox82tJIaSlc5dZ+xx6zWW2vbH7VhPp4JXx1sE3vh4NnVuRednlnpmO81X2wu4M3PmLej1Hqd/2nztzUoLrNnE930EcfuLsr8WlpHW2PDOdbOJGrbpjaWqYsE4sjN+zDXns5OWEyecYwym6UkXIeGeFo9t6bsB+QFY6TC8kKx8tF5IW3y8Vyh/xGLiE3LCaznE8O2FdeItO5TkqlTH4q68gFR5ENbpGfkwd+TEb5CXYP2V+DTJEvyPgK5Rg2Q45j98tJbKacwh6Qr7EH5Qz2EHnhtzKL3PA7eVhasEfU/mvhUfJEjzymiZoqj5MpZskccsQcmU+emCsLyBUvkKfIF3vJQnLG3vI0eWMfWaSX6WWyWPtqX1mi/bSfPKNX6pXyrA7QAfKcDtSB8jz55SB5gRzzBllKdjlcVpJhjpFVZJljpZRMc7K8QqY5RdaSbU6VdWScz0i5PqfPyadkkaWyl3yxXD7XCq2QJt2oG+UI+eMuaSZrrBd+oethOe3kjWcYSqI2yrnhKEWuznc5++EhUhn0lBAuSSHC2c6Vhr8z0ijN5Xs0ne+zVmsPTSTJOXivcxcfLo/H4vhM7PXkHMnOd29yLN3/n4cnyuxv8QTXQkfwX6SQBccWtFT33SMmjMLrmkSNIi5s0UcyI0vmqYlhMmgfjbrPT6C/trQ/4jsdZ4qz7uwjuw2R1vHunAfHHRcmePSMovWRFkVKB+Q4v2OSndh3DyPunEaikdiu544jl+i8b47be45b9n2INbOxZjl6NtrS+ogLz3ZKB+8dnIUIXTnOxc53zueG1+T57pVdFlzFkd+gkassYty1X22JzvyF5rb1XuBxIafgjc9xMuhuwe/X8JEUXimto2rrPt6Zq+Av2eC8ZnJO68JbZXfx3aNXoecsK92+Tnatm/vuEWu73kOjiA+bOKMImtfZt+wdLISHdtFEZkPb0b7u2XTQ+REXJs4dc3wUrfvvTjSiidZsMiOLRU9nF/G6/32ECM1vcK8K7ucSVkxqhytBwnXjWu0u0bPZFWLNbGskxmzEt5udCMH70KglBsFZiNC5hrMdHWdgWc45I7wms9wryv4H1OgRTXjaXVA7T8JgFD33tuU1MPhAbUCro4MmTA4M4oMBWyENYTAMIgoxFkgaMTFx9PfwI1x0cXXRP0DiP/CBtx+FVIae3nPvOffxgQCkMKQM9KOSXYPZuvc9mB3/6gam17ztYRu6aDAeQ5MfIY4dxItnxxa8Q7cmWHKLFgpOxbbQOC3WLdhuxZG45p5IVTl15WTxBswImT7HY3PcCPnErQlLXPb6XeTbfrOFPe+608SBwrLXb3moKqwrbPQGXR8X4cYQtyH9ExKxxJOO060ChEJSmEASS3K3jXM8YognfFJ6ViPpsxv4aJO2ZllGGjpnOcfrvKF6P+MF7/j458sHM+g1nBzk9kN3DGn6kc3KcOhLuBPRZCOaX6Wp0rfwqtq4HJ1Abyq3KNpJThNckK8dXhkXH9OIRsFDcDJyM6OAFDOT5DXW2eAYxzmhNFOFKYolPGCAO17mDK/wKq+xKRWSF8sBfyLERGUA) format('woff');\n    font-weight: 900;\n    font-style: normal;\n}\n\n@font-face {\n    font-family: 'WordFont';\n    src: url(data:application/font-woff;charset=utf-8;base64,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) format('woff');\n    font-weight: bold;\n    font-style: italic;\n}\n\n@font-face {\n    font-family: 'WordFont';\n    src: url(data:application/font-woff;charset=utf-8;base64,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) format('woff');\n    font-weight: 900;\n    font-style: italic;\n}\n\n@font-face {\n    font-family: 'WordFont';\n    src: url(data:application/font-woff;charset=utf-8;base64,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) format('woff');\n    font-weight: bold;\n    font-style: normal;\n}\n\n@font-face {\n    font-family: 'WordFont';\n    src: url(data:application/font-woff;charset=utf-8;base64,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) format('woff');\n    font-weight: 300;\n    font-style: normal;\n}\n\n@font-face {\n    font-family: 'WordFont';\n    src: url(data:application/font-woff;charset=utf-8;base64,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) format('woff');\n    font-weight: 500;\n    font-style: italic;\n}\n\n\n"
  },
  {
    "path": "site/index.dev.html",
    "content": "<!doctype html>\n<html>\n<head>\n  <meta charset='utf-8'>\n  <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge,chrome=1\">\n  <meta name=\"viewport\" content=\"width=device-width\">\n\n  <title>pesy</title>\n\n  <!-- Reload -->\n  <script class=\"removeFromRenderedPage\" src='vendor/highlight.pack.js'></script>\n  <script src='vendor/jquery.js'></script>\n  <script src='vendor/medium-zoom.js'></script>\n  <script class=\"removeFromRenderedPage\" src='vendor/stylus.min.js'></script>\n  <!-- <script src='legacy.js'></script> -->\n  <script src='Reload.js'></script>\n\n  <!-- hljs theme -->\n  <link  href='vendor/highlight-styles/mono-blue.css' rel='stylesheet'>\n\n  <!-- fonts -->\n  <link  href='./fonts/PrivateCodingFont.css' rel='stylesheet'>\n  <link  href='./fonts/PrivateWordFont.css' rel='stylesheet'>\n  <!-- if including a private coding font/word font, remove the non-private one from document after rendering to avoid bundling it -->\n  <link href='./fonts/CodingFont.css' rel='stylesheet'>\n  <link href='./fonts/WordFont.css' rel='stylesheet'>\n\n  <!-- Initializer -->\n  <script>\n    Reload.reload({\n      stylus: './theme-white/theme.styl.html',\n      doc: '../README.html',\n      highlight: function (code, value) {\n        return hljs.highlight(\n          value === 'reason' ? 'reasonml' :\n          value === 'json' ? 'javascript' : value,\n          code\n        ).value;\n      }\n    });\n  </script>\n\n  <!-- Flatdoc theme -->\n  <script src='theme-white/theme.js'></script>\n\n  <!-- Meta -->\n  <meta content=\"Reload\" property=\"og:site_name\">\n  <meta content=\"Reload\" property=\"og:title\">\n  <meta content=\"website\" property=\"og:type\">\n  <meta content=\"A rapid project documentation tool\" name=\"description\">\n  <meta content=\"A rapid project documentation tool\" property=\"og:description\">\n  <meta content=\"http://ricostacruz.com/flatdoc/support/preview.jpg\" property=\"og:image\">\n  <!-- Analytics -->\n</head>\n<body role='flatdoc' class='big-h3 large-brief'>\n  <script>\n    document.body.style=\"visibility:hidden\"\n  </script>\n  <!-- https://unsplash.com/photos/Z0uzZSM5i4M -->\n  <div class='title-area title-card noselect'>\n    <div class='in'>\n      <div class='headline'>\n        <h1>pesy</h1>\n        <img src=\"./animation.svg\" alt=\"Example\" style=\"max-width:100%;\">\n      </div>\n    </div>\n  </div>\n\n  <div class='header'>\n    <div class='left'>\n      <h1><a href='./index.html'>pesy</a></h1>\n      <ul>\n        <li><a href=\"https://github.com/esy/pesy\">GitHub</a></li>\n        <li><a href=\"https://github.com/esy/pesy/issues\">Issues</a></li>\n      </ul>\n    </div>\n    <div class='right'>\n    </div>\n  </div>\n\n  <div class='content-root'>\n    <div class='menubar'>\n      <div class='section'>\n        <a class='big button' href='' target='_blank'>Install</a>\n      </div>\n      <div class='menu section' role='flatdoc-menu'></div>\n    </div>\n    <div role='flatdoc-content' class='content'></div>\n  </div>\n</body>\n</html>\n"
  },
  {
    "path": "site/package.json",
    "content": "{\n  \"name\": \"Reload\",\n  \"description\": \"Fork of the wonderful Flatdoc\",\n  \"keywords\": [\n    \"documentation\",\n    \"markdown\"\n  ],\n  \"author\": \"Rico Sta. Cruz <hi@ricostacruz.com>\",\n  \"version\": \"0.9.0\",\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/rstacruz/flatdoc.git\"\n  },\n  \"scripts\": {\n    \"test\": \"mocha\",\n    \"bundle\": \"node ./Reload.js bundle\"\n  },\n  \"main\": \"Reload.js\",\n  \"devDependencies\": {\n    \"mocha\": \"1.10.0\",\n    \"chai\": \"1.6.0\",\n    \"jsdom\": \"*\",\n    \"uglify-js\": \"2.6.0\",\n    \"stylus\": \"0.46.3\",\n    \"nib\": \"0.9.1\",\n    \"commander\": \"1.1.1\",\n    \"dox\": \"0.4.3\",\n    \"inliner\": \"*\"\n  }\n}\n"
  },
  {
    "path": "site/theme-white/theme.js",
    "content": "(function($) {\n  var $window = $(window);\n  var $document = $(document);\n\n  /*\n   * Scrollspy.\n   */\n  $document.on('flatdoc:ready', function() {\n    /**\n     * Remove any nodes that are not needed once rendered. This way when generating\n     * a pre-rendered `.rendered.html`, they won't become part of the bundle, when\n     * that rendered page is turned into a `.html` bundle. They have served their\n     * purpose. Add `class='removeFromRenderedPage'` to anything you want removed\n     * once used to render the page. (Don't use for script tags that are needed for\n     * interactivity).\n     */\n    $('.removeFromRenderedPage').each(function(i, e) {\n      e.parentNode.removeChild(e);\n    });\n    \n    /**\n     * See documentation for `continueRight` css class in style.styl.\n     */\n    document.querySelectorAll(\n       '.content > img + pre,' +\n       '.content > img + blockquote,' +\n       '.content > p + pre,' +\n       '.content > p + blockquote,' +\n       '.content > ul + pre,' +\n       '.content > ul + blockquote,' +\n       '.content > ol + pre,' +\n       '.content > ol + blockquote,' +\n       '.content > h1 + pre,' +\n       '.content > h1 + blockquote,' +\n       '.content > h2 + pre,' +\n       '.content > h2 + blockquote,' +\n       '.content > h3 + pre,' +\n       '.content > h3 + blockquote,' +\n       '.content > h4 + pre,' +\n       '.content > h4 + blockquote,' +\n       '.content > h5 + pre,' +\n       '.content > h5 + blockquote,' +\n       '.content > h6 + pre,' +\n       '.content > h6 + blockquote,' +\n       '.content > table + pre,' +\n       '.content > table + blockquote'\n     ).forEach(function(e) {\n       // Annotate classes for the left and right items that are \"resynced\".\n       // This allows styling them differently. Maybe more top margins.\n       e.className += 'flatdoc-synced-up-right';\n       if(e.previousSibling) {\n          e.previousSibling.className += 'flatdoc-synced-up-left';\n       }\n     })\n    var onAllImagesLoaded = function() {\n      $(\"h2, h3\").scrollagent( function(cid, pid, currentElement, previousElement) {\n        if (pid) {\n         $(\"[href='#\"+pid+\"']\").removeClass('active');\n        }\n        if (cid) {\n         $(\"[href='#\"+cid+\"']\").addClass('active');\n        }\n      });\n      $('.menu a').anchorjump();\n      // Rejump after images have loaded\n      $.anchorjump(window.location.hash, {speed: 0});\n      /**\n       * If you add a style=\"visibility:hidden\" to your document body, we will clear\n       * the style after the styles have been injected. This avoids a flash of\n       * unstyled content.\n       * Only after scrolling and loading a stable page with all styles, do we\n       * reenable visibility.\n       */\n      document.body.style=\"\";\n    };\n\n    var imageCount = $('img').length;\n    var nImagesLoaded = 0;\n    // Wait for all images to be loaded by cloning and checking:\n    // https://cobwwweb.com/wait-until-all-images-loaded\n    // Thankfully browsers cache images.\n    function onOneImageLoaded(loadedEl) {\n      nImagesLoaded++;\n      if (nImagesLoaded == imageCount) {\n        onAllImagesLoaded();\n      }\n    }\n    $('img').each(function(_i, imgEl) {\n      $('<img>').on('load', onOneImageLoaded).attr('src', $(imgEl).attr('src'));\n    });\n  });\n\n  /*\n   * Anchor jump links.\n   */\n  $document.on('flatdoc:ready', function() {\n    // $('.menu a').anchorjump();\n  });\n\n  $document.on('flatdoc:ready', function() {\n    if (typeof mediumZoom !== 'undefined') {\n      mediumZoom(document.querySelectorAll('.content img'), {\n        scrollOffset: 20,\n        container: document.body,\n        margin: 24,\n        background: '#ffffff',\n      });\n      document.querySelectorAll('.content img').forEach(function(img) {\n        var parent = img.parentElement;\n        if (parent && parent.tagName.toUpperCase() === 'P') {\n          // Allows targeting css for containers of images\n          // since has() selector is not yet supported in css\n          parent.className += ' imageContainer';\n        }\n      });\n    }\n  });\n\n\n\n  /*\n   * Title card.\n   */\n  $document.on('flatdoc:style-ready', function() {\n     var $card = $('.title-card');\n     if (!$card.length) return;\n\n     var $header = $('.header');\n     var headerHeight = $header.length ? $header.outerHeight() : 0;\n\n     $window\n       .on('resize.title-card', function() {\n         var windowWidth = $window.width();\n\n         if (windowWidth < 480) {\n           $card.css('height', '');\n         } else {\n           var height = $window.height();\n           $card.css('height', height - headerHeight);\n         }\n       })\n       .trigger('resize.title-card');\n  });\n\n\n  $(document).on('flatdoc:ready', function() {\n    $(\"#misc, #basic\").remove();\n\n    $(\"pre > code\").each(function() {\n      var $code = $(this);\n      var m = $code.text().match(/<body class='([^']*)'/);\n      if (m) {\n        var $q = $(\"<blockquote><a href='#\"+m[1]+\"' class='button light'>Toggle</a></blockquote>\");\n        $q.find('a').click(function() {\n          var klass = $(this).attr('href').substr(1);\n          $('body').toggleClass(klass);\n          if (klass === 'big-h3') $.anchorjump('#theme-options');\n          if (klass === 'large-brief') $.anchorjump('#flatdoc');\n\n        });\n        $code.after($q);\n      }\n    });\n  });\n\n\n  /*\n   * Sidebar stick.\n   */\n\n  /*\n  $(function() {\n    var $sidebar = $('.menubar');\n    var elTop;\n\n    $window\n      .on('resize.sidestick', function() {\n        $sidebar.removeClass('fixed');\n        elTop = $sidebar.offset().top;\n        $window.trigger('scroll.sidestick');\n      })\n      .on('scroll.sidestick', function() {\n        var scrollY = $window.scrollTop();\n        $sidebar.toggleClass('fixed', (scrollY >= elTop));\n      })\n      .trigger('resize.sidestick');\n  });\n  */\n\n})(jQuery);\n/*! jQuery.scrollagent (c) 2012, Rico Sta. Cruz. MIT License.\n *  https://github.com/rstacruz/jquery-stuff/tree/master/scrollagent */\n\n// Call $(...).scrollagent() with a callback function.\n//\n// The callback will be called everytime the focus changes.\n//\n// Example:\n//\n//      $(\"h2\").scrollagent(function(cid, pid, currentElement, previousElement) {\n//        if (pid) {\n//          $(\"[href='#\"+pid+\"']\").removeClass('active');\n//        }\n//        if (cid) {\n//          $(\"[href='#\"+cid+\"']\").addClass('active');\n//        }\n//      });\n\n(function($) {\n\n  $.fn.scrollagent = function(options, callback) {\n    // Account for $.scrollspy(function)\n    if (typeof callback === 'undefined') {\n      callback = options;\n      options = {};\n    }\n\n    var $sections = $(this);\n    var $parent = options.parent || $(window);\n\n    // Find the top offsets of each section\n    var offsets = [];\n    $sections.each(function(i) {\n      var offset = $(this).attr('data-anchor-offset') ?\n        parseInt($(this).attr('data-anchor-offset'), 10) :\n        (options.offset || 0);\n\n      offsets.push({\n        id: $(this).attr('id'),\n        index: i,\n        el: this,\n        offset: offset\n      });\n    });\n\n    // State\n    var current = null;\n    var height = null;\n    var range = null;\n\n    // Save the height. Do this only whenever the window is resized so we don't\n    // recalculate often.\n    $(window).on('resize', function() {\n      height = $parent.height();\n      range = $(document).height();\n    });\n\n    // Find the current active section every scroll tick.\n    $parent.on('scroll', function() {\n      var y = $parent.scrollTop();\n      // y += height * (0.3 + 0.7 * Math.pow(y/range, 2));\n\n      var latest = null;\n\n      for (var i in offsets) {\n        if (offsets.hasOwnProperty(i)) {\n          var offset = offsets[i];\n          var el = offset.el;\n          var relToViewport = offset.el.getBoundingClientRect().top;\n          if(relToViewport > 0 && relToViewport < height / 2) {\n            latest = offset;\n            break;\n          }\n        }\n      }\n\n      if (latest && (!current || (latest.index !== current.index))) {\n        callback.call($sections,\n          latest ? latest.id : null,\n          current ? current.id : null,\n          latest ? latest.el : null,\n          current ? current.el : null);\n        current = latest;\n      }\n    });\n\n    $(window).trigger('resize');\n    $parent.trigger('scroll');\n\n    return this;\n  };\n\n})(jQuery);\n/*! Anchorjump (c) 2012, Rico Sta. Cruz. MIT License.\n *   http://github.com/rstacruz/jquery-stuff/tree/master/anchorjump */\n\n// Makes anchor jumps happen with smooth scrolling.\n//\n//    $(\"#menu a\").anchorjump();\n//    $(\"#menu a\").anchorjump({ offset: -30 });\n//\n//    // Via delegate:\n//    $(\"#menu\").anchorjump({ for: 'a', offset: -30 });\n//\n// You may specify a parent. This makes it scroll down to the parent.\n// Great for tabbed views.\n//\n//     $('#menu a').anchorjump({ parent: '.anchor' });\n//\n// You can jump to a given area.\n//\n//     $.anchorjump('#bank-deposit', options);\n\n(function($) {\n  var defaults = {\n    'speed': 500,\n    'offset': 0,\n    'for': null,\n    'parent': document.body\n  };\n\n  $.fn.anchorjump = function(options) {\n    options = $.extend({}, defaults, options);\n\n    if (options['for']) {\n      this.on('click', options['for'], onClick);\n    } else {\n      this.on('click', onClick);\n    }\n\n    function onClick(e) {\n      var $a = $(e.target).closest('a');\n      if (e.ctrlKey || e.metaKey || e.altKey || $a.attr('target')) {\n        return;\n      }\n\n      e.preventDefault();\n      var href = $a.attr('href');\n\n      $.anchorjump(href, options);\n    }\n  };\n\n  // Jump to a given area.\n  $.anchorjump = function(href, options) {\n    options = $.extend({}, defaults, options);\n\n    var top = 0;\n\n    if (href != '#') {\n      var $area = $(href);\n      // Find the parent\n      if (options.parent) {\n        var $parent = $area.closest(options.parent);\n        if ($parent.length) { $area = $parent; }\n      }\n      if (!$area.length) { return; }\n\n      // Determine the pixel offset; use the default if not available\n      var offset =\n        $area.attr('data-anchor-offset') ?\n        parseInt($area.attr('data-anchor-offset'), 10) :\n        options.offset;\n\n      // offset().top might be negative because the document is the thing that\n      // overflow-scrolls.\n      top = $area.offset().top + offset;\n    }\n\n    $('html, body').animate({ scrollTop: document.body.scrollTop + top }, options.speed);\n    $('body').trigger('anchor', href);\n\n    // Add the location hash via pushState.\n    if (window.history.pushState) {\n      window.history.pushState({ href: href }, \"\", href);\n    }\n  };\n})(jQuery);\n"
  },
  {
    "path": "site/theme-white/theme.styl.html",
    "content": "<script src=\"../Reload.js\"> </script>\nsupport-for-ie = true\n\n// Fonts\n$body-font = PrivateWordFont, WordFont, Helvetica Neue, Open Sans, sans-serif\n$mono-font = PrivateCodingFont, CodingFont, Menlo, monospace\n\n// Margins\n$pad = 40px      // Space between things\n$sidepad = 30px  // Padding to the left of the sidebar\n$minipad = 20px  // Space for mobile\n$vmargin = 16px  // Margin between blocks\n\n// Colors\n$offwhite = #fafafa\n$codebg = #f7fafc\n$codeborder = #eceff3\n$grey = #909090\n$txt = #444444\n$txtlight = #888888\n$accent = #556cd6 * 0.85\n$line = #e3e8ee \n$headerbg = #fafafa \n\n// Misc\n$shadow-str = 0.1\n\n// Dimensions\n$sidebar-width = 230px\n$content-width = 550px\n$pre-width = 380px\n\n.medium-zoom-image\n  z-index:100\n.medium-zoom-overlay\n  z-index:100\n\nglobal-reset()\n  h1, h2, h3, h4, h5, h6, p, blockquote, pre,\n  html, body, div, span, applet, object, iframe,\n  del, dfn, em, img, ins, kbd, q, s, samp,\n  dl, dt, dd, ol, ul, li,\n  a, small, abbr, acronym, address, big, cite, code, caption, tbody, table, tfoot, thead, tr, th, td,\n  fieldset, form, label, legend,\n  strike, strong, sub, sup, tt, var\n    font-weight: inherit\n    font-style: inherit\n    font-family: inherit\n    font-size: 100%\n    vertical-align: baseline\n    margin: 0\n    padding: 0\n    border: 0\n    outline: 0\n  body\n    /** Needed for medium-zoom positioning */\n    position:relative;\n    line-height: 1\n    color: black\n    background: white\n  ol, ul\n    list-style: none\n  table\n    border-spacing: 0\n    border-collapse: separate\n    vertical-align: middle\n  caption, th, td\n    text-align: left\n    vertical-align: middle\n    font-weight: normal\n  a img\n    border: none\n\nclearfix()\n  &:before\n  &:after\n    content: \"\"\n    display: table\n  &:after\n    clear: both\n  zoom: 1 if support-for-ie\n\n// ----------------------------------------------------------------------------\n// Mixins\n\nscrollbar($bg=white)\n  &\n    -webkit-overflow-scrolling: touch\n  &::-webkit-scrollbar\n    width: 15px\n    height: 15px\n  &::-webkit-scrollbar-thumb\n    background: #ddd\n    border-radius: 8px\n    border: solid 4px $bg\n  &:hover::-webkit-scrollbar-thumb\n    background: #999\n    box-shadow: inset 2px 2px 3px rgba(0, 0, 0, 0.2)\n\nantialias()\n  -webkit-font-smoothing: antialiased\n  text-rendering: optimizeLegibility\n\n/* ----------------------------------------------------------------------------\n * Base\n */\n\nglobal-reset()\n\nhtml\n  height: 100%\n  /* Messes up medium-zoom */\n  /* overflow-y:scroll */\n\n/*\nmesses up medium-zoom\nbody\n  overflow-y:scroll\n  overflow-x:hidden\n*/\n\n/*\n * jordwalke: Continues left parallel with a right docking, until the next\n * right docking. Requires a JS shim at document load time to\n * fix up the elements that occur before that next right docking,\n * because there is no CSS selector for \"comes before\".\n * What about using:\n *\n * The following selector matches <h1> elements only if they have a <p> element\n * directly following them:\n * \n *   h1:has(+ p)\n * \n * document.querySelectorAll(\n *    '.content > img + pre,' +\n *    '.content > img + blockquote,' +\n *    '.content > p + pre,' +\n *    '.content > p + blockquote,' +\n *    '.content > ul + pre,' +\n *    '.content > ul + blockquote,' +\n *    '.content > ol + pre,' +\n *    '.content > ol + blockquote,' +\n *    '.content > h1 + pre,' +\n *    '.content > h1 + blockquote,' +\n *    '.content > h2 + pre,' +\n *    '.content > h2 + blockquote,' +\n *    '.content > h3 + pre,' +\n *    '.content > h3 + blockquote,' +\n *    '.content > h4 + pre,' +\n *    '.content > h4 + blockquote,' +\n *    '.content > h5 + pre,' +\n *    '.content > h5 + blockquote,' +\n *    '.content > h6 + pre,' +\n *    '.content > h6 + blockquote,' +\n *    '.content > table + pre,' +\n *    '.content > table + blockquote'\n *  ).forEach(function(e) {e.previousSibling ? (e.previousSibling.style=\"clear:both\") : null;})\n */\ncontinueRight\n clear:left\n float:left\n\nhtml\n  overflow-x: hidden\n\nbody, td, textarea, input\n  font-family: $body-font\n  line-height: 1.6\n  font-size: 16px\n  color:$txt\n\n  @media (max-width: 480px) /* Mobile */\n    font-size: 12px\n\na\n  color: $accent\n  text-decoration: none\n  &:hover\n    color: $accent * 0.8\n\n/* ----------------------------------------------------------------------------\n * Content styling\n */\n\n.content\n  img\n    margin: 0\n    box-sizing: border-box\n\n  .imageContainer\n    margin: $vmargin 0\n\n  p, ul, ol, h1, h2, h3, h4, h5, h6, pre, blockquote\n    padding: $vmargin 0\n    box-sizing: border-box\n\n  h1, h2, h3, h4, h5, h6\n    font-weight: bold\n    antialias()\n\n  pre\n    font-family: $mono-font\n\n  ul > li\n    list-style-type: disc\n\n  ol > li\n    list-style-type: decimal\n\n  ul, ol\n    margin-left: 20px\n    /* jordwalke: This margin-right is needed to allow lists to \"dock\" to the\n     * left of a right block that spans multiple left blocks. The padding-right\n     * is needed regardless to get the right boundary of text to be a perfect box.\n     * TODO: This is the source of funny body size in mobile dimensions.\n     */\n    margin-right: -20px\n\n  ul > li\n    list-style-type: none\n    position: relative\n    &:before\n      content: ''\n      display: block\n      position: absolute\n      left: -17px\n      top: 7px\n      width: 5px\n      height: 5px\n      border-radius: 4px\n      box-sizing: border-box\n      background: white\n      border: solid 1px $grey\n\n  li > :first-child\n    padding-top: 0\n\n  strong, b\n    font-weight: bold\n\n  i, em\n    font-style: italic\n    /*color: $grey*/\n\n  p > code\n    background: $codebg\n    border-radius: 2px;\n    border: 1px solid $codeborder\n  \n  table > code, li > code, tr > code, td > code, th > code\n    background: $codebg\n    border-radius: 2px;\n    border: 1px solid $codeborder\n    \n  code\n    font-family: $mono-font\n    padding: 1px 3px\n    font-size: 0.90em\n\n  pre > code\n    border: none;\n    background: $codebg\n    display: block\n    background: transparent\n    font-size: 0.90em\n    letter-spacing: 0px\n\n  blockquote\n    :first-child\n      padding-top: 0\n    :last-child\n      padding-bottom: 0\n\n  table\n\n    margin-top: $vmargin\n    margin-bottom: $vmargin\n    padding: 0\n    border-collapse: collapse\n    /* Tables in non split mode should not have any clearing */\n    /* clear: both */\n    /* float: left */\n\n    tbody\n      > :nth-child(2n)\n        background-color: $offwhite\n\n    tr\n      border-top: 1px solid $line\n      background-color: white\n      margin: 0\n      padding: 0\n\n      th\n        background-color: $offwhite\n        text-align: auto;\n        font-weight: bold\n        border: 1px solid $line\n        margin: 0\n        padding: 6px 13px\n\n      td\n        text-align: auto;\n        border: 1px solid $line\n        margin: 0\n        padding: 6px 13px\n\n      th, td\n        :first-child\n\n          margin-top: 0;\n        :last-child\n          margin-bottom: 0;\n\n\n\n    \n\n/* ----------------------------------------------------------------------------\n * Content\n */\n\n.content-root\n  min-height: 90%\n  position: relative\n\n\n/* Shadow around image in literate right bar */\n/* Remove outline while animating open */\n/* It's still not enough to hide outline while closing */\n.medium-zoom--opened\n  .content\n    .imageContainer\n      &:after\n        box-shadow: none !important\n\n@media (min-width: 1180px) /* Big desktop */\n  body:not(.no-literate)\n    .content\n      blockquote\n        .imageContainer\n          /* So clicks pass through to image */\n          pointer-events: none\n          overflow:hidden;\n          display:inline-block;\n          position:relative;\n          border-radius:0px;\n          &:after\n            content: \"\";\n            position: absolute;\n            width: 100%; height: 100%;\n            left: 0; top: 0;\n            box-shadow: inset 0px 0px 0px 0.5px #55555511\n          img\n            vertical-align:middle;\n            /* Reenable pointer events */\n            pointer-events: auto\n      \n\n.content\n  padding-top: $pad - $vmargin\n  padding-bottom: $pad\n  padding-left: $pad\n  padding-right: $pad\n  clearfix()\n\n  img\n    width: 100%\n\n  max-width: 700px\n\n  blockquote\n    color: $grey\n\n  h1, h2, h3\n    antialias()\n    font-family: WordFont\n    padding-bottom: 0\n\n    + p, ul, ol\n      padding-top: 10px\n\n  h1, h2\n    text-transform: uppercase\n    letter-spacing: 1px\n    font-size: 1.5em\n\n  h3\n    font-size: 1.2em\n\n  // Lines\n  h1, h2, .big-heading\n    padding-top: $pad * 1.5\n    &:before\n      display: block\n      content: ''\n      background: linear-gradient(left, rgba($line, 1.0) 80%, rgba($line, 0.0))\n      box-shadow: 0 1px 0 rgba(white, 0.4)\n      height: 1px\n      position: relative\n      top: $pad * -1\n      left: $pad * -1\n      /* width: 100% */\n\n    @media (max-width: 768px) /* Mobile and tablet */\n      padding-top: $minipad * 2\n      &:before\n        background: $line\n        left: $pad * -1\n        top: $minipad * -1\n        width: 120%\n\n  // Small headings\n  h4, h5, h6, .small-heading\n    border-bottom: solid 1px rgba(black, 0.07)\n    color: $grey\n    padding-top: $vmargin * 2\n    padding-bottom: 10px\n\n  body:not(.big-h3) & h3\n    @extends .content .small-heading\n    font-size: 0.9em\n\n  body.big-h3 & h3\n    @extends .content .big-heading\n\n  h1:first-child\n    padding-top: 0\n    &, a, a:visited\n      color: $txt\n    &:before\n      display: none\n\n@media (max-width: 768px) /* Tablet */\n  .content\n    h4, h5, h6, .small-heading, body:not(.big-h3) & h3\n      padding-top: $vmargin * 1.5\n\n@media (max-width: 480px) /* Mobile */\n  .content\n    padding: $minipad\n    padding-top: $minipad * 2\n\n    h4, h5, h6, .small-heading, body:not(.big-h3) & h3\n      padding-top: $vmargin\n\n// ----------------------------------------------------------------------------\n// Code blocks\n\ninset-box()\n  background: $offwhite\n  /* border: solid 1px $offwhite*0.95 */\n  /* border-top: solid 1px $offwhite*0.9 */\n  /* border-left: solid 1px $offwhite*0.93 */\n  display: block\n  padding: 10px\n  border-radius: 2px\n\n  overflow: auto\n  scrollbar($offwhite)\n\nbody.no-literate .content pre > code\n  inset-box()\n\n@media (max-width: 1180px) /* Small desktop */\n  .content pre > code\n    inset-box()\n    \n/* Hide scrollbar but keep functionality */\npre > code\n  &::-webkit-scrollbar\n    display: none\n  \n/* Hide scrollbar for IE, Edge and Firefox */\npre > code\n  overflow-x:scroll\n  -ms-overflow-style: none  /* IE and Edge */\n  scrollbar-width: none  /* Firefox */\n\n// ----------------------------------------------------------------------------\n// Buttons\n\n.button\n  antialias()\n  font-family: WordFont, sans-serif\n  letter-spacing: 0px\n  font-weight: bold\n\n  display: inline-block\n  padding: 3px 25px\n\n  border: solid 2px $accent\n  border-radius: 20px\n\n  margin-right: 15px\n\n  &, &:visited\n    background: $accent\n    color: white\n    text-shadow: none\n\n  &:hover\n    border-color: #111\n    background: #111\n    color: white\n\n  &.light\n    &, &:visited\n      background: transparent\n      color: $grey\n      border-color: $grey\n      text-shadow: none\n\n    &:hover\n      border-color: $grey\n      background: $grey\n      color: white\n    \n.content\n  .button + em\n    color: $grey\n\n\n// ----------------------------------------------------------------------------\n// Literate mode content\n\n@media (min-width: 1180px) /* Big desktop */\n  body:not(.no-literate)\n    .content-root\n      background-color: $offwhite\n      $w = ($sidebar-width + $content-width)\n      /* Fix major perf issue on firefox by commenting this out: https://github.com/zachlatta/reason/commit/787b8f783288d0337a3fab5b71c54d6d5630ef6e */\n      box-shadow: inset $w 0 white, inset ($w + 1) 0 $line, inset ($w + 10) 0 5px -10px rgba(black, $shadow-str)\n\n// Literate mode\n@media (min-width: 1180px) /* Big desktop */\n  small-heading()\n    margin-left: $pad\n    width: $content-width - $pad * 2\n    margin-bottom: 3px\n\n    padding-left: 0\n    padding-right: 0\n\n  body:not(.no-literate)\n    .content\n      padding-left: 0\n      padding-right: 0\n\n      width: $content-width + $pre-width\n      max-width: none\n\n      >\n        .flatdoc-synced-up-left\n          clear: both\n        /*.flatdoc-synced-up-right\n          margin-top:$pad */\n        p, ul, ol, h1, h2, h3, h4, h5, h6, pre, blockquote\n          width: $content-width\n          box-sizing: border-box\n          padding-right: $pad\n          padding-left: $pad\n        h1, h2, h3\n          clear: both\n          /* width: 100% */\n        pre, blockquote\n          width: $pre-width\n          padding-left: ($pad/2)\n          padding-right: ($pad/2)\n          float: right\n          clear: right\n          +\n            p, ul, ol, h4, h5, h6\n              clear: both\n        p, ul, ol, h4, h5, h6\n          float: left\n          clear: left\n\n        h4, h5, h6, .small-heading, body:not(.big-h3) & h3\n          small-heading()\n\n        table\n          /* jordwalke: Moved the clearing only to here instead of the general table rule.\n           * Otherwise, the following layout is messed up when resizing the window to be narrow:\n           *\n           *    `type Unix.error`\n           *    : Error codes for specific `Unix` module errors.\n           *\n           *    Value                | Meaning                                    \n           *    :------------------- |:------------------------------------------\n           *    `EACCES`           | Permission denied                          \n           *    `EAGAIN`           | Resource temporarily unavailable; try again\n           *    `EBADF`            | Bad file descriptor\n           *    `EBUSY`            | Resource unavailable\n           *    `EEXISTS`          | File already exists\n           *    `EISDIR`           | Is a directory\n           *    `ENOENT`           | No such file or directory\n           *    `ENOTDIR`          | Not a directory\n           *    `ENOTEMPTY`        | Directory not empty\n           *    [See all](https://caml.inria.fr/pub/docs/manual-ocaml/libref/Unix.html#TYPEerror) | \n           *\n           *\n           *    `fun Unix.dup` : `(~cloexec:bool=?, ` `file_descr` `) => ` `file_descr`\n           *    : Return a new file descriptor referencing the same file as the given\n           *      descriptor. See `Unix.set_close_on_exec` for documentation on the `cloexec`\n           *      optional argument.\n           *      (Copied from stdlib docs)\n           */\n          clear: left\n          float: left\n          margin-left: $pad\n          margin-right: $pad\n          max-width: $content-width - $pad*2\n\n  body:not(.no-literate):not(.big-h3)\n    .content > h3\n      small-heading()\n\n// ----------------------------------------------------------------------------\n// Header\n\n.medium-zoom--opened > .header\n  /* Needs to be less than medium-zoom overlays */\n  z-index:50\n\n.header\n  background: $headerbg\n  z-index:101\n  /* text-shadow: 0 1px 0 rgba(white, 0.5) */\n  border-bottom: solid 1px $line\n  padding: 15px 15px 15px $sidepad\n  position: -webkit-sticky\n  position: sticky\n  top: 0px;\n  clearfix()\n\n  line-height: 20px\n\n  .left\n    float: left\n\n  .right\n    text-align: right\n    position: absolute\n    right: 15px\n    top: 15px\n\n    iframe\n      display: inline-block\n      vertical-align: middle\n\n  h1\n    antialias()\n    font-weight: bold\n    font-family: WordFont, sans-serif\n    font-size: 1em\n\n    &, a, a:visited\n      color: $grey\n    a:hover\n      color: $txt\n\n  li a\n    font-size: 1em\n    color: $grey\n    display: block\n\n    &:hover\n      color: $grey*0.4\n\n  @media (min-width: 480px) /* Tablet & Desktop */\n    h1\n      float: left\n\n    ul, li\n      display: block\n      float: left\n\n    ul\n      margin-left: -15px\n\n    h1 + ul\n      border-left: solid 1px $line\n      margin-left: 15px\n\n    li\n      border-left: solid 1px rgba(white, 0.5)\n      border-right: solid 1px $line\n      &:last-child\n        border-right: 0\n\n    li a\n      padding: 0 15px\n\n@media (max-width: 480px) /* Mobile */\n  // Hide extra stuff on mobile\n  .right\n    display: none\n\n// ----------------------------------------------------------------------------\n// Sidebar\n\n.menubar\n  antialias()\n  .section\n    padding: $sidepad $sidepad\n    box-sizing: border-box\n\n  .section + .section\n    border-top: solid 1px $line\n\n  .section.no-line\n    border-top: 0\n    padding-top: 0\n\na.big.button\n  display: block\n  box-sizing: border-box\n  width: 100%\n  padding: 10px 20px\n  text-align: center\n\n  font-weight: bold\n  font-size: 1.1em\n\n  background: transparent\n  border: solid 3px $accent\n  border-radius: 30px\n  font-family: WordFont, sans-serif\n\n  &, &:visited\n    color: $accent\n    text-decoration: none\n\n  &:hover\n    background: $accent\n    &, &:visited\n      color: white\n\n@media (max-width: 480px) /* Mobile */\n  .menubar\n    padding: $minipad\n    border-bottom: solid 1px $line\n\n@media (max-width: 768px) /* Mobile and tablet */\n  .menubar\n    display: none\n\n@media (min-width: 768px) /* Desktop */\n  .content-root\n    padding-left: $sidebar-width\n\n  .menubar\n    position: absolute\n    left: 0\n    top: 0\n    bottom: 0\n    width: $sidebar-width\n    border-right: solid 1px $line\n\n  .menubar.fixed\n    position: fixed\n\n    scrollbar()\n    overflow-y: auto\n\n.menubar\n  font-size: 0.9em\n\n// Sticky left menu:\n.menu.section\n  position: -webkit-sticky\n  position: sticky\n  /* header height */\n  top: 35px\n.bottom.section\n  position: -webkit-sticky\n  position: sticky\n  /* header height */\n  top: 35px\n\n.noselect\n  -webkit-touch-callout: none; /* iOS Safari */\n  -webkit-user-select: none; /* Safari */\n  -khtml-user-select: none; /* Konqueror HTML */\n  -moz-user-select: none; /* Old versions of Firefox */\n  -ms-user-select: none; /* Internet Explorer/Edge */\n  user-select: none; /* Non-prefixed version, currently supported by Chrome, Edge, Opera and Firefox */\n\n// Menu items\n.menu\n  ul.level-1 > li + li\n    margin-top: 20px\n\n  a\n    box-sizing: border-box\n    position: relative\n\n    display: block\n    padding-top: 4px\n    padding-bottom: 4px\n    margin-right: ($sidepad * -1)\n\n    color: $txtlight\n    font-weight: 500!important\n    &:hover\n      color: $accent*0.8\n\n  a.level-1\n    font-family: WordFont, sans-serif\n    text-transform: uppercase\n    font-size: 1em\n    font-weight: bold\n    &, &:visited\n      color: $grey\n    &:hover\n      color: $grey*0.6\n\n  a.level-2\n    font-size: 1em\n    font-weight: normal\n\n  a.level-3\n    font-weight: normal\n    font-size: 1em\n    padding-left: 8px\n\n  a.active\n    &, &:visited, &:hover\n      color: $accent\n    \n    // Indicator\n    &:after\n      visibility: hidden\n      content: ''\n      display: block\n      box-sizing: border-box\n\n      position: absolute\n      top: 10px\n      right: $sidepad\n\n      width: 9px\n      height: 3px\n      border-radius: 2px\n      background: $accent\n\n// ----------------------------------------------------------------------------\n// Syntax highlighting\n\ncode\n  .string, .number\n    color: #3ac\n  .init\n    color: #383\n  .keyword\n    font-weight: bold\n  .comment\n    color: $grey * 1.2\n\n// ----------------------------------------------------------------------------\n\n.content\n  .large-brief & > h1:first-child + p,\n  > p.brief\n    font-size: 1.3em\n    font-family: Open Sans, sans-serif\n    font-weight: 300\n\n\n// ----------------------------------------------------------------------------\n\n.title-area\n  min-height: 100px\n  box-sizing: border-box\n  antialias()\n  text-align: center\n  border-bottom: solid 1px $line\n  overflow: hidden\n\n  > img.bg\n    z-index: 0\n\n    // Start it off screen\n    position: absolute\n    left: -9999px\n\n  > div\n    position: relative\n    z-index: 1\n  \n\n// ----------------- Styles just for \"this page\" -----------------------------\n.title-card\n  text-rendering: optimizeLegibility !important\n  -webkit-font-smoothing: antialiased !important\n  -moz-osx-font-smoothing: grayscale\n\n.title-card\n  /* background: #1d3b47; */\n  /* background-position: center center; */\n  /* background-size: cover; */\n  color: #ccc\n  text-align: center\n\n  position: relative\n  z-index: 1\n\n  width: 100%\n  display: table\n\n.title-card > .in\n  display: table-cell\n  vertical-align: middle\n\n.title-card .headline\n  vertical-align: middle\n  display: inline-block\n  -webkit-box-sizing: border-box\n  box-sizing: border-box\n\n  /* text-shadow: 0 0 4px rgba(0, 0, 0, 0.5); */\n\n  padding-left: 40px\n  padding-right: 40px\n  max-width: 800px\n  line-height: 1.7\n\n.title-card h1\n  font-family: 'Open Sans', sans-serif\n  font-size: 6em\n  font-weight: 600\n  line-height: 1.1\n  margin-bottom: 0.5em\n  color: #333\n\n.title-card p\n  font-family: WordFont, sans-serif\n  color: #777\n  font-weight: bold\n  font-size: 1.5em\n\n.title-card h5\n  margin-top: 50px\n  margin-bottom: 50px\n  font-family: WordFont, sans-serif\n  color: #777\n  letter-spacing: 2px\n  font-size: 1.8em\n\n.title-card h5 span\n  display: inline-block\n  padding: 5px 20px\n  border: solid 3px #fff\n\n@media (max-width: 768px) /* Tablet */\n  .title-card h5\n    margin-top: 100px\n\n@media (max-width: 480px) /* Mobile */\n  .title-card\n    padding: 50px 0\n  .title-card .headline\n    padding-left: 10px\n    padding-right: 10px\n    min-height: none\n  .title-card h1\n    font-size: 2.2em\n  .title-card p\n    font-size: 1.1em\n  .title-card h5\n    margin-top: 40px\n    font-size: 0.9em\n"
  },
  {
    "path": "unit-tests/runner/Lib.re",
    "content": "module TestFramework = {\n  include Rely.Make({\n    let config =\n      Rely.TestFrameworkConfig.initialize({\n        snapshotDir: \"_build/default/unit-tests\",\n        projectDir: \"\",\n      });\n  });\n};\n\nopen TestFramework;\nopen PesyEsyPesyLib;\nopen PesyConf;\nopen PesyEsyPesyErrors.Errors;\nopen PesyEsyPesyUtils.Utils;\n\ndescribe(\"PesyConf.resolveRelativePath\", ({test, _}) => {\n  test(\"simple case\", ({expect, _}) =>\n    expect.string(resolveRelativePath(\"foo/lib\")).toEqual(\"foo/lib\")\n  );\n  test(\"with ../ in the path\", ({expect, _}) =>\n    expect.string(resolveRelativePath(\"foo/bar/..\")).toEqual(\"foo\")\n  );\n  test(\"with ../../ in the path\", ({expect, _}) =>\n    expect.string(resolveRelativePath(\"foo/bar/../..\")).toEqual(\"\")\n  );\n  test(\"with excessive ../\", ({expect, _}) =>\n    expect.fn(() => resolveRelativePath(\"foo/bar/../../..\")).toThrowException(\n      ResolveRelativePathFailure(\n        \"Failed resolving: foo/bar/../../.. Too many `../`\",\n      ),\n    )\n  );\n  test(\"foo/bar/../baz/\", ({expect, _}) =>\n    expect.string(resolveRelativePath(\"foo/bar/../baz/\")).toEqual(\"foo/baz\")\n  );\n});\n\ndescribe(\"PesyConf.moduleNameOf\", ({test, _}) => {\n  test(\"simple case .re file\", ({expect, _}) =>\n    expect.string(moduleNameOf(\"Foo.re\")).toEqual(\"Foo\")\n  );\n  test(\"simple case .ml file\", ({expect, _}) =>\n    expect.string(moduleNameOf(\"Foo.ml\")).toEqual(\"Foo\")\n  );\n});\n\ndescribe(\"PesyConf.isValidBinaryFileName\", ({test, _}) => {\n  test(\"For an invalid binary\", ({expect, _}) =>\n    expect.bool(isValidBinaryFileName(\"Foo.re\")).toBeFalse()\n  );\n  test(\"For a valid binary\", ({expect, _}) =>\n    expect.bool(isValidBinaryFileName(\"Foo.exe\")).toBeTrue()\n  );\n});\n\ndescribe(\"PesyConf.isValidSourceFile\", ({test, _}) => {\n  test(\"For an invalid source file\", ({expect, _}) =>\n    expect.bool(isValidSourceFile(\"Foo.exe\")).toBeFalse()\n  );\n  test(\"For a valid source file\", ({expect, _}) =>\n    expect.bool(isValidSourceFile(\"Foo.ml\")).toBeTrue()\n  );\n  test(\"For a valid source file\", ({expect, _}) =>\n    expect.bool(isValidSourceFile(\"Foo.re\")).toBeTrue()\n  );\n});\n\ndescribe(\"PesyConf.isValidScopeName\", ({test, _}) => {\n  test(\"For an invalid case\", ({expect, _}) =>\n    expect.bool(isValidScopeName(\"myscope\")).toBeFalse()\n  );\n  test(\"For a valid case\", ({expect, _}) =>\n    expect.bool(isValidScopeName(\"@myscope\")).toBeTrue()\n  );\n});\n\ndescribe(\"PesyConf.doubleKebabifyIfScoped\", ({test, _}) => {\n  test(\"test foo-bar\", ({expect, _}) =>\n    expect.string(doubleKebabifyIfScoped(\"foo-bar\")).toEqual(\"foo-bar\")\n  )\n});\n\nlet testToPackages = (~duneVersion=\"1.11\", jsonStr) => {\n  let json = JSON.ofString(jsonStr);\n  let pkgs = PesyConf.pkgs(json);\n  let pesyPackages = List.map(toPesyConf(\"\", \"\", ~duneVersion), pkgs);\n  let dunePackages = List.map(toDunePackages(\"\", \"\"), pesyPackages);\n  List.map(\n    p => {\n      let (_, d) = p;\n      d;\n    },\n    dunePackages,\n  );\n};\n\ndescribe(\"PesyConf.testToPackages\", ({test, _}) => {\n  test(\"Sample config - 1\", ({expect, _}) =>\n    expect.list(\n      testToPackages(\n        {|\n           {\n             \"name\": \"foo\",\n             \"buildDirs\": {\n               \"test\": {\n                 \"require\": [\"foo\"],\n                 \"bin\": { \"Bar.exe\": \"Bar.re\" }\n               }\n             }\n           }\n                |},\n      )\n      |> List.map(DuneFile.toString),\n    ).\n      toEqual([\n      \"(executables (names Bar) (modules (:standard)) (public_names Bar.exe)\\n    (libraries foo))\\n\",\n    ])\n  );\n  test(\"Sample config - 2\", ({expect, _}) =>\n    expect.list(\n      testToPackages(\n        {|\n              {\n                  \"name\": \"foo\",\n                  \"buildDirs\": {\n                  \"testlib\": {\n                    \"require\": [\"foo\"],\n                    \"namespace\": \"Foo\",\n                    \"name\": \"bar.lib\",\n                   \"modes\": [\"best\"]\n                  }\n                }\n              }\n            |},\n      )\n      |> List.map(DuneFile.toString),\n    ).\n      toEqual([\n      \"(library (name Foo) (modules (:standard)) (libraries foo) (modes best))\\n\",\n    ])\n  );\n  test(\"Sample config - 3\", ({expect, _}) =>\n    expect.list(\n      testToPackages(\n        {|\n           {\n               \"name\": \"foo\",\n               \"buildDirs\": {\n               \"testlib\": {\n                 \"require\": [\"foo\"],\n                 \"namespace\": \"Foo\",\n                 \"name\": \"bar.lib\",\n                 \"cNames\": [\"stubs\"]\n               }\n             }\n           }\n         |},\n      )\n      |> List.map(DuneFile.toString),\n    ).\n      toEqual([\n      \"(library (name Foo) (modules (:standard)) (libraries foo) (c_names stubs))\\n\",\n    ])\n  );\n  test(\"Sample config - 4\", ({expect, _}) =>\n    expect.list(\n      testToPackages(\n        {|\n           {\n               \"name\": \"foo\",\n               \"buildDirs\": {\n               \"testlib\": {\n                 \"namespace\": \"Foo\",\n                 \"name\": \"bar.lib\",\n                 \"implements\": [\"foo\"]\n               }\n             }\n           }\n         |},\n      )\n      |> List.map(DuneFile.toString),\n    ).\n      toEqual([\n      \"(library (name Foo) (modules (:standard)) (implements foo))\\n\",\n    ])\n  );\n  test(\"Sample config - 5\", ({expect, _}) =>\n    expect.list(\n      testToPackages(\n        {|\n           {\n               \"name\": \"foo\",\n               \"buildDirs\": {\n               \"testlib\": {\n                 \"namespace\": \"Foo\",\n                 \"name\": \"bar.lib\",\n                 \"wrapped\": false\n               }\n             }\n           }\n         |},\n      )\n      |> List.map(DuneFile.toString),\n    ).\n      toEqual([\n      \"(library (name Foo) (modules (:standard)) (wrapped false))\\n\",\n    ])\n  );\n  test(\"Sample config - 6\", ({expect, _}) =>\n    expect.list(\n      testToPackages(\n        {|\n              {\n                  \"name\": \"foo\",\n                  \"buildDirs\": {\n                  \"testlib\": {\n                    \"bin\": { \"bar.exe\": \"Foo.re\" },\n                    \"modes\": [\"best\", \"c\"]\n                  }\n                }\n              }\n            |},\n      )\n      |> List.map(DuneFile.toString),\n    ).\n      toEqual([\n    \"(executables (names Foo) (modules (:standard)) (public_names bar.exe)\\n    (modes (best c)))\\n\",\n    ])\n  );\n  test(\"Sample config - 7\", ({expect, _}) =>\n    expect.list(\n      testToPackages(\n        {|\n                {\n                    \"name\": \"foo\",\n                    \"buildDirs\": {\n                    \"testlib\": {\n                        \"require\": [\"foo\"],\n                        \"namespace\": \"Foo\",\n                        \"name\": \"bar.lib\",\n                        \"flags\": [\"-w\", \"-33+9\"]\n                    }\n                    }\n                }\n         |},\n      )\n      |> List.map(DuneFile.toString),\n    ).\n      toEqual([\n      \"(library (name Foo) (modules (:standard)) (libraries foo) (flags -w -33+9))\\n\",\n    ])\n  );\n  test(\"Sample config - 8\", ({expect, _}) =>\n    expect.list(\n      testToPackages(\n        {|\n                    {\n                      \"name\": \"foo\",\n                      \"buildDirs\": {\n                        \"testlib\": {\n                          \"namespace\": \"Foo\",\n                          \"name\": \"bar.lib\",\n                          \"ocamlcFlags\": [\"-annot\", \"-c\"]\n                        }\n                      }\n                    }\n\n         |},\n      )\n      |> List.map(DuneFile.toString),\n    ).\n      toEqual([\n      \"(library (name Foo) (modules (:standard)) (ocamlc_flags -annot -c))\\n\",\n    ])\n  );\n  test(\"Sample config - 9\", ({expect, _}) =>\n    expect.list(\n      testToPackages(\n        {|\n    {\n        \"name\": \"foo\",\n        \"buildDirs\": {\n            \"testlib\": {\n                \"namespace\": \"Foo\",\n                \"name\": \"bar.lib\",\n                \"ocamloptFlags\": [\"-rectypes\", \"-nostdlib\"]\n            }\n        }\n    }\n\n         |},\n      )\n      |> List.map(DuneFile.toString),\n    ).\n      toEqual([\n      \"(library (name Foo) (modules (:standard))\\n    (ocamlopt_flags -rectypes -nostdlib))\\n\",\n    ])\n  );\n  test(\"Sample config - 10\", ({expect, _}) =>\n    expect.list(\n      testToPackages(\n        {|\n\n                    {\n                      \"name\": \"foo\",\n                      \"buildDirs\": {\n                        \"testlib\": {\n                          \"namespace\": \"Foo\",\n                          \"name\": \"bar.lib\",\n                          \"jsooFlags\": [\"-pretty\", \"-no-inline\"]\n                        }\n                      }\n                    }\n\n         |},\n      )\n      |> List.map(DuneFile.toString),\n    ).\n      toEqual([\n      \"(library (name Foo) (modules (:standard)) (js_of_ocaml -pretty -no-inline))\\n\",\n    ])\n  );\n  test(\"Sample config - 11\", ({expect, _}) =>\n    expect.list(\n      testToPackages(\n        {|\n\n                   {\n                      \"name\": \"foo\",\n                      \"buildDirs\": {\n                        \"testlib\": {\n                          \"namespace\": \"Foo\",\n                          \"name\": \"bar.lib\",\n                          \"preprocess\": [ \"pps\", \"lwt_ppx\" ]\n                        }\n                      }\n                    }\n         |},\n      )\n      |> List.map(DuneFile.toString),\n    ).\n      toEqual([\n      \"(library (name Foo) (modules (:standard)) (preprocess (pps lwt_ppx)))\\n\",\n    ])\n  );\n  test(\"Sample config - 12\", ({expect, _}) =>\n    expect.list(\n      testToPackages(\n        {|\n\n                    {\n                      \"name\": \"foo\",\n                      \"buildDirs\": {\n                        \"testlib\": {\n                          \"namespace\": \"Foo\",\n                          \"name\": \"bar.lib\",\n                          \"includeSubdirs\": \"unqualified\"\n                        }\n                      }\n                    }\n\n         |},\n      )\n      |> List.map(DuneFile.toString),\n    ).\n      toEqual([\n      \"(library (name Foo) (modules (:standard)))\\n(include_subdirs unqualified)\\n\",\n    ])\n  );\n  test(\"Sample config - 12\", ({expect, _}) =>\n    expect.list(\n      testToPackages(\n        {|\n\n                    {\n                      \"name\": \"foo\",\n                      \"buildDirs\": {\n                        \"testlib\": {\n                          \"namespace\": \"Foo\",\n                          \"name\": \"bar.lib\",\n                          \"includeSubdirs\": \"unqualified\"\n                        }\n                      }\n                    }\n\n         |},\n      )\n      |> List.map(DuneFile.toString),\n    ).\n      toEqual([\n      \"(library (name Foo) (modules (:standard)))\\n(include_subdirs unqualified)\\n\",\n    ])\n  );\n  test(\"Sample config - 14\", ({expect, _}) =>\n    expect.list(\n      testToPackages(\n        {|\n{\n                      \"name\": \"foo\",\n                      \"buildDirs\": {\n                        \"testexe\": {\n                          \"bin\": { \"Foo.exe\": \"Foo.re\" },\n                          \"rawBuildConfigFooter\": [\n                            \"(install (section share_root) (files (asset.txt as asset.txt)))\"\n                          ]\n                        }\n                      }\n                    }\n\n\n         |},\n      )\n      |> List.map(DuneFile.toString),\n    ).\n      toEqual([\n      \"(executables (names Foo) (modules (:standard)) (public_names Foo.exe))\\n(install (section share_root) (files (asset.txt as asset.txt)))\\n\",\n    ])\n  );\n  test(\"Sample config - 14\", ({expect, _}) =>\n    expect.list(\n      testToPackages(\n        {|\n                   {\n                      \"name\": \"foo\",\n                      \"buildDirs\": {\n                        \"testexe\": {\n                          \"bin\": { \"Foo.exe\": \"Foo.re\" }\n                        }\n                      }\n                    }  |},\n      )\n      |> List.map(DuneFile.toString),\n    ).\n      toEqual([\n      \"(executables (names Foo) (modules (:standard)) (public_names Foo.exe))\\n\",\n    ])\n  );\n  test(\"Sample config - 15\", ({expect, _}) =>\n    expect.list(\n      testToPackages(\n        {|\n                    {\n                      \"name\": \"foo\",\n                      \"buildDirs\": {\n                        \"testlib\": {\n                          \"namespace\": \"Foo\",\n                          \"name\": \"bar.lib\",\n                          \"rawBuildConfigFooter\": [\n                            \"(install (section share_root) (files (asset.txt as asset.txt)))\"\n                          ]\n                        }\n                      }\n                    }\n|},\n      )\n      |> List.map(DuneFile.toString),\n    ).\n      toEqual([\n      \"(library (name Foo) (modules (:standard)))\\n(install (section share_root) (files (asset.txt as asset.txt)))\\n\",\n    ])\n  );\n  test(\"Sample config - 16\", ({expect, _}) =>\n    expect.list(\n      testToPackages(\n        {|\n                    {\n                      \"name\": \"foo\",\n                      \"buildDirs\": {\n                        \"testlib\": {\n                          \"namespace\": \"Foo\",\n                          \"name\": \"bar.lib\",\n                          \"rawBuildConfig\": [\n                            \"(libraries lwt lwt.unix raw.lib)\",\n                            \"(preprocess (pps lwt_ppx))\"\n                          ]\n                        }\n                      }\n                    }\n|},\n      )\n      |> List.map(DuneFile.toString),\n    ).\n      toEqual([\n      \"(library (name Foo) (modules (:standard)) (libraries lwt lwt.unix raw.lib)\\n    (preprocess (pps lwt_ppx)))\\n\",\n    ])\n  );\n\n  test(\"Sample config - 17\", ({expect, _}) =>\n    expect.list(\n      testToPackages(\n        {|\n                {\n                    \"name\": \"foo\",\n                    \"buildDirs\": {\n                    \"testlib\": {\n                        \"require\": [\"foo\"],\n                        \"namespace\": \"Foo\",\n                        \"name\": \"bar.lib\",\n                        \"flags\": \"-verbose\"\n                    }\n                    }\n                }\n         |},\n      )\n      |> List.map(DuneFile.toString),\n    ).\n      toEqual([\n      \"(library (name Foo) (modules (:standard)) (libraries foo) (flags -verbose))\\n\",\n    ])\n  );\n  test(\"Sample config - 18\", ({expect, _}) =>\n    expect.list(\n      testToPackages(\n        {|\n                    {\n                      \"name\": \"foo\",\n                      \"buildDirs\": {\n                        \"testlib\": {\n                          \"namespace\": \"Foo\",\n                          \"name\": \"bar.lib\",\n                          \"ocamlcFlags\": \"-annot -c\"\n                        }\n                      }\n                    }\n\n         |},\n      )\n      |> List.map(DuneFile.toString),\n    ).\n      toEqual([\n      \"(library (name Foo) (modules (:standard)) (ocamlc_flags -annot -c))\\n\",\n    ])\n  );\n  test(\"Sample config - 19\", ({expect, _}) =>\n    expect.list(\n      testToPackages(\n        {|\n    {\n        \"name\": \"foo\",\n        \"buildDirs\": {\n            \"testlib\": {\n                \"namespace\": \"Foo\",\n                \"name\": \"bar.lib\",\n                \"ocamloptFlags\": \"-rectypes -nostdlib\"\n            }\n        }\n    }\n\n         |},\n      )\n      |> List.map(DuneFile.toString),\n    ).\n      toEqual([\n      \"(library (name Foo) (modules (:standard))\\n    (ocamlopt_flags -rectypes -nostdlib))\\n\",\n    ])\n  );\n  test(\"Sample config - 20\", ({expect, _}) =>\n    expect.list(\n      testToPackages(\n        {|\n\n                    {\n                      \"name\": \"foo\",\n                      \"buildDirs\": {\n                        \"testlib\": {\n                          \"namespace\": \"Foo\",\n                          \"name\": \"bar.lib\",\n                          \"jsooFlags\": \"-pretty -no-inline\"\n                        }\n                      }\n                    }\n\n         |},\n      )\n      |> List.map(DuneFile.toString),\n    ).\n      toEqual([\n      \"(library (name Foo) (modules (:standard)) (js_of_ocaml -pretty -no-inline))\\n\",\n    ])\n  );\n  test(\"Sample config - 21\", ({expect, _}) =>\n    expect.list(\n      testToPackages(\n        {|\n             {\n                 \"name\": \"foo\",\n                 \"buildDirs\": {\n                 \"testlib\": {\n                   \"bin\": { \"bar.bc.js\": \"Foo.re\" },\n                   \"modes\": \"js\"\n                 }\n               }\n             }\n           |},\n      )\n      |> List.map(DuneFile.toString),\n    ).\n      toEqual([\n      \"(executables (names Foo) (modules (:standard)) (public_names bar.bc.js)\\n    (modes js))\\n\",\n    ])\n  );\n  test(\"Sample config - 22\", ({expect, _}) =>\n    expect.list(\n      testToPackages(\n        {|\n                  {\n                      \"name\": \"foo\",\n                      \"buildDirs\": {\n                      \"testlib\": {\n                        \"bin\": { \"bar.exe\": \"Foo.re\" },\n                        \"modes\": \"exe object shared_object\"\n                      }\n                    }\n                  }\n                |},\n      )\n      |> List.map(DuneFile.toString),\n    ).\n      toEqual([\n      \"(executables (names Foo) (modules (:standard)) (public_names bar.exe)\\n    (modes exe object shared_object))\\n\",\n    ])\n  );\n  test(\"Sample config - 23\", ({expect, _}) =>\n    expect.list(\n      testToPackages(\n        {|\n                    {\n                        \"name\": \"foo\",\n                        \"buildDirs\": {\n                        \"testlib\": {\n                          \"bin\": { \"bar.exe\": \"Foo.re\" },\n                          \"modes\": [\"js\", \"plugin\"]\n                        }\n                      }\n                    }\n                  |},\n      )\n      |> List.map(DuneFile.toString),\n    ).\n      toEqual([\n      \"(executables (names Foo) (modules (:standard)) (public_names bar.exe)\\n    (modes js plugin))\\n\",\n    ])\n  );\n\n  test(\"Sample config - 24\", ({expect, _}) =>\n    expect.list(\n      testToPackages(\n        {|\n             {\n                 \"name\": \"foo\",\n                 \"buildDirs\": {\n                 \"testlib\": {\n                   \"bin\": { \"bar.exe\": \"Foo.re\" },\n                   \"modes\": [[\"byte\", \"exe\"], [\"byte\", \"js\"]]\n                 }\n               }\n             }\n           |},\n      )\n      |> List.map(DuneFile.toString),\n    ).\n      toEqual([\n      \"(executables (names Foo) (modules (:standard)) (public_names bar.exe)\\n    (modes (byte exe) (byte js)))\\n\",\n    ])\n  );\n\n  test(\"Sample config - 25\", ({expect, _}) =>\n    expect.list(\n      testToPackages(\n        {|\n             {\n                 \"name\": \"foo\",\n                 \"buildDirs\": {\n                 \"testlib\": {\n                   \"bin\": { \"bar.exe\": \"Foo.re\" },\n                   \"modes\": [\"byte\", \"exe\"]\n                 }\n               }\n             }\n           |},\n      )\n      |> List.map(DuneFile.toString),\n    ).\n      toEqual([\n      \"(executables (names Foo) (modules (:standard)) (public_names bar.exe)\\n    (modes (byte exe)))\\n\",\n    ])\n  );\n\n  test(\"Sample config - 26\", ({expect, _}) =>\n    expect.list(\n      testToPackages(\n        {|\n                    {\n                        \"name\": \"foo\",\n                        \"buildDirs\": {\n                        \"testlib\": {\n                          \"bin\": { \"bar.exe\": \"Foo.re\" },\n                          \"modes\": [\"exe\"]\n                        }\n                      }\n                    }\n                  |},\n      )\n      |> List.map(DuneFile.toString),\n    ).\n      toEqual([\n      \"(executables (names Foo) (modules (:standard)) (public_names bar.exe)\\n    (modes exe))\\n\",\n    ])\n  );\n\n  test(\"Sample config - 27\", ({expect, _}) =>\n    expect.list(\n      testToPackages(\n        {|\n         {\n             \"name\": \"foo\",\n             \"buildDirs\": {\n             \"testlib\": {\n               \"require\": [\"foo\"],\n               \"namespace\": \"Foo\",\n               \"name\": \"bar.lib\",\n               \"foreignStubs\": [\n                  {\n                    \"language\": \"c\"\n                  }\n                ]\n             }\n           }\n         }\n       |},\n        ~duneVersion=\"2.0\",\n      )\n      |> List.map(DuneFile.toString),\n    ).\n      toEqual([\n      \"(library (name Foo) (modules (:standard)) (libraries foo)\\n    (foreign_stubs (language c) (names :standard) (flags :standard)))\\n\",\n    ])\n  );\n\n  test(\"Sample config - 28\", ({expect, _}) =>\n    expect.list(\n      testToPackages(\n        {|\n         {\n             \"name\": \"foo\",\n             \"buildDirs\": {\n             \"testlib\": {\n               \"require\": [\"foo\"],\n               \"namespace\": \"Foo\",\n               \"name\": \"bar.lib\",\n               \"foreignStubs\": [\n                  {\n                    \"language\": \"c\",\n                    \"names\": [\"src1\", \"src2\"],\n                    \"flags\": []\n                  }\n                ]\n             }\n           }\n         }\n       |},\n        ~duneVersion=\"2.0\",\n      )\n      |> List.map(DuneFile.toString),\n    ).\n      toEqual([\n      \"(library (name Foo) (modules (:standard)) (libraries foo)\\n    (foreign_stubs (language c) (names src1 src2) (flags :standard)))\\n\",\n    ])\n  );\n\n  test(\"Sample config - 29\", ({expect, _}) =>\n    expect.list(\n      testToPackages(\n        {|\n         {\n             \"name\": \"foo\",\n             \"buildDirs\": {\n             \"testlib\": {\n               \"require\": [\"foo\"],\n               \"namespace\": \"Foo\",\n               \"name\": \"bar.lib\",\n               \"foreignStubs\": [\n                  {\n                    \"language\": \"c\",\n                    \"names\": [\"src1\", \"src2\"]\n                  },\n                  {\n                    \"language\": \"cxx\",\n                    \"names\": [\"src3\"],\n                    \"flags\": [\"-02\"]\n                  }\n                ]\n             }\n           }\n         }\n       |},\n        ~duneVersion=\"2.0\",\n      )\n      |> List.map(DuneFile.toString),\n    ).\n      toEqual([\n      \"(library (name Foo) (modules (:standard)) (libraries foo)\\n    (foreign_stubs (language c) (names src1 src2) (flags :standard))\\n    (foreign_stubs (language cxx) (names src3) (flags -02)))\\n\",\n    ])\n  );\n\n  test(\"Sample config - 30\", ({expect, _}) =>\n    expect.list(\n      testToPackages(\n        {|\n         {\n             \"name\": \"foo\",\n             \"buildDirs\": {\n             \"testlib\": {\n               \"require\": [\"foo\"],\n               \"namespace\": \"Foo\",\n               \"name\": \"bar.lib\",\n               \"cNames\": [\"stubs\"],\n               \"foreignStubs\": [\n                  {\n                    \"language\": \"c\",\n                    \"names\": [\"src1\", \"src2\"]\n                  },\n                  {\n                    \"language\": \"cxx\",\n                    \"names\": [\"src3\"],\n                    \"flags\": [\"-02\"]\n                  }\n                ]\n             }\n           }\n         }\n       |},\n        ~duneVersion=\"2.0\",\n      )\n      |> List.map(DuneFile.toString),\n    ).\n      toEqual([\n      \"(library (name Foo) (modules (:standard)) (libraries foo)\\n    (foreign_stubs (language c) (names src1 src2) (flags :standard))\\n    (foreign_stubs (language cxx) (names src3) (flags -02)))\\n\",\n    ])\n  );\n\n  test(\"Sample config - 31\", ({expect, _}) =>\n    expect.list(\n      testToPackages(\n        {|\n         {\n             \"name\": \"foo\",\n             \"buildDirs\": {\n             \"testlib\": {\n               \"require\": [\"foo\"],\n               \"namespace\": \"Foo\",\n               \"name\": \"bar.lib\",\n               \"cNames\": [\"stub1\", \"stub2\"],\n               \"foreignStubs\": [\n                  {\n                    \"language\": \"c\",\n                    \"names\": [\"src1\", \"src2\"]\n                  },\n                  {\n                    \"language\": \"cxx\",\n                    \"names\": [\"src3\"],\n                    \"flags\": [\"-02\"]\n                  }\n                ]\n             }\n           }\n         }\n       |},\n        ~duneVersion=\"1.11\",\n      )\n      |> List.map(DuneFile.toString),\n    ).\n      toEqual([\n      \"(library (name Foo) (modules (:standard)) (libraries foo)\\n    (c_names stub1 stub2))\\n\",\n    ])\n  );\n});\n"
  },
  {
    "path": "unit-tests/runner/RunUnitTests.re",
    "content": "module UtilsTests = Utils;\nmodule LibTests = Lib;\nLibTests.TestFramework.cli();\nUtilsTests.TestFramework.cli();\n"
  },
  {
    "path": "unit-tests/runner/Utils.re",
    "content": "module TestFramework = {\n  include Rely.Make({\n    let config =\n      Rely.TestFrameworkConfig.initialize({\n        snapshotDir: \"_build/default/unit-tests\",\n        projectDir: \"\",\n      });\n  });\n};\n\nopen PesyEsyPesyUtils;\nopen TestFramework;\nopen Utils;\n\ndescribe(\"Utils.filterNone\", ({test, _}) => {\n  test(\"simple case\", ({expect, _}) =>\n    expect.list(filterNone([Some(1), None, None, Some(2), None, Some(3)])).\n      toEqual([\n      1,\n      2,\n      3,\n    ])\n  )\n});\n"
  },
  {
    "path": "unit-tests/runner/dune",
    "content": "(test\n (name RunUnitTests)\n (libraries pesy--esy-pesy.lib pesy--esy-pesy.utils rely.lib))\n"
  },
  {
    "path": "utils/FieldTypes.re",
    "content": "open Printf;\ntype t =\n  | Bool(bool)\n  | String(string)\n  | List(list(t));\nexception ConversionException(string);\nlet toBool =\n  fun\n  | Bool(b) => b\n  | String(s) =>\n    raise(\n      ConversionException(sprintf(\"Expected string. Actual string (%s)\", s)),\n    )\n  | List(_l) => raise(ConversionException(\"Expected string. Actual list\"));\nlet toString =\n  fun\n  | String(s) => s\n  | Bool(b) =>\n    raise(\n      ConversionException(\n        sprintf(\"Expected string. Actual bool (%s)\", string_of_bool(b)),\n      ),\n    )\n  | List(_) => raise(ConversionException(\"Expected string. Actual list\"));\nlet toList =\n  fun\n  | List(l) => l\n  | Bool(b) =>\n    raise(\n      ConversionException(\n        sprintf(\"Expected list. Actual bool (%s)\", string_of_bool(b)),\n      ),\n    )\n  | String(_) => raise(ConversionException(\"Expected list. Actual string\"));\n"
  },
  {
    "path": "utils/JSON.re",
    "content": "/* TODO: Making parsing more lenient? Eg. allow string where single element list is valid */\ninclude Yojson.Basic;\nopen Printf;\nopen Yojson.Basic;\ntype t = Yojson.Basic.t;\n\n/* private */\nexception MissingJSONMember(string);\n\n/* public */\nexception InvalidJSONValue(string);\nexception NullJSONValue(unit);\n\nlet ofString = jstr => from_string(jstr);\nlet fromFile = path => from_file(path);\nlet member = (j, m) =>\n  try(Util.member(m, j)) {\n  | _ =>\n    raise(\n      MissingJSONMember(Printf.sprintf(\"%s was missing in the json\", m)),\n    )\n  };\nlet toOption = v => v === `Null ? None : Some(v);\nlet toKeyValuePairs = (json: Yojson.Basic.t) =>\n  switch (json) {\n  | `Assoc(jsonKeyValuePairs) => jsonKeyValuePairs\n  | `Null => raise(NullJSONValue())\n  | _ => raise(InvalidJSONValue(\"Expected key value pairs\"))\n  };\nlet toListKVPairs = (json: Yojson.Basic.t) =>\n  switch (json) {\n  | `List(kvs) => List.map(toKeyValuePairs, kvs)\n  | `Null => raise(NullJSONValue())\n  | _ => raise(InvalidJSONValue(\"Expected list of key value pairs\"))\n  };\nlet rec toValue = (json: Yojson.Basic.t) =>\n  switch (json) {\n  | `Bool(b) => FieldTypes.Bool(b)\n  | `String(s) => FieldTypes.String(s)\n  | `List(jl) => FieldTypes.List(List.map(j => toValue(j), jl))\n  | `Null => raise(NullJSONValue())\n  | _ =>\n    raise(\n      InvalidJSONValue(\n        sprintf(\n          \"Value must be either string, bool or list of string. Found %s\",\n          to_string(json),\n        ),\n      ),\n    )\n  };\nlet debug = t => to_string(t);"
  },
  {
    "path": "utils/JSON.rei",
    "content": "include (module type of Yojson.Basic);\ntype t = Yojson.Basic.t;\nexception NullJSONValue(unit);\nexception InvalidJSONValue(string);\nlet ofString: string => t;\nlet fromFile: string => t;\nlet member: (t, string) => t;\nlet toOption: t => option(t);\nlet toKeyValuePairs: t => list((string, t));\nlet toListKVPairs: t => list(list((string, t)));\nlet toValue: t => FieldTypes.t;\nlet debug: t => string;"
  },
  {
    "path": "utils/Utils.re",
    "content": "open Printf;\nlet prompt = q => {\n  print_endline(q);\n  read_line();\n};\n\nlet kebab = str => {\n  let charStrings = Str.split(Str.regexp_string(\"\"), str);\n  let k =\n    String.concat(\n      \"\",\n      List.map(\n        c =>\n          if (Char.code(c.[0]) >= 65 && Char.code(c.[0]) <= 90) {\n            \"-\" ++ String.lowercase_ascii(c);\n          } else {\n            c;\n          },\n        charStrings,\n      ),\n    );\n  if (k.[0] == '-') {\n    String.sub(k, 1, String.length(k) - 1);\n  } else {\n    k;\n  };\n};\n\nlet getCurrentDirName = () => Filename.basename(Sys.getenv(\"PWD\"));\n\nlet upperCamelCasify = kebab => {\n  let parts = Str.split(Str.regexp_string(\"-\"), kebab);\n  let k = String.concat(\"\", List.map(String.capitalize_ascii, parts));\n  if (String.length(k) > 0 && k.[0] == '-') {\n    String.sub(k, 1, String.length(k) - 1);\n  } else {\n    k;\n  };\n};\n\nlet removeScope = kebab =>\n  Str.global_replace(Str.regexp(\"[^\\\\/]*/\"), \"\", kebab);\n\nmodule NoLwt = {\n  open Printf;\n  let write = (file, str) => {\n    let oc = open_out(file);\n    fprintf(oc, \"%s\", str);\n    close_out(oc);\n  };\n};\n\nlet readFile = file => {\n  let buf = ref(\"\");\n  let breakOut = ref(false);\n  let ic = open_in(file);\n  while (! breakOut^) {\n    let line =\n      try(input_line(ic)) {\n      | End_of_file =>\n        breakOut := true;\n        \"\";\n      };\n    buf := buf^ ++ \"\\n\" ++ line;\n  };\n  buf^;\n};\n\nmodule Path = {\n  let (/) = Filename.concat;\n};\n\nlet parent = Filename.dirname;\n\nlet loadTemplate = name =>\n  readFile(\n    Path.(\n      (Sys.executable_name |> parent |> parent)\n      / \"share\"\n      / \"template-repo\"\n      / name\n    ),\n  );\n\nlet buffer_size = 8192;\nlet buffer = Bytes.create(buffer_size);\nlet copyFile = (input_name, output_name) => {\n  open Unix;\n  let fd_in = openfile(input_name, [O_RDONLY], 0);\n  let fd_out = openfile(output_name, [O_WRONLY, O_CREAT, O_TRUNC], 438);\n  let rec copy_loop = () =>\n    switch (read(fd_in, buffer, 0, buffer_size)) {\n    | 0 => ()\n    | r =>\n      ignore(write(fd_out, buffer, 0, r));\n      copy_loop();\n    };\n\n  copy_loop();\n  close(fd_in);\n  close(fd_out);\n};\n\nlet copyTemplate = (input_name, output_name) => {\n  copyFile(\n    Path.(\n      (Sys.executable_name |> parent |> parent)\n      / \"share\"\n      / \"template-repo\"\n      / input_name\n    ),\n    output_name,\n  );\n};\n\nlet r = Str.regexp;\n\nlet exists = Sys.file_exists;\n\nlet mkdir = (~perms=?, p) =>\n  switch (perms) {\n  | Some(x) => Unix.mkdir(p, x)\n  | None => Unix.mkdir(p, 0o755)\n  };\n\nlet rec mkdirp = p => {\n  let directory_created =\n    try(Sys.is_directory(p)) {\n    | Sys_error(_) => false\n    };\n  if (!directory_created) {\n    mkdirp(Filename.dirname(p));\n    mkdir(p);\n  };\n};\n\nlet spf = Printf.sprintf;\n\nlet renderAsciiTree = (dir, name, namespace, require, isLast) =>\n  if (isLast) {\n    spf({js|│\n└─ %s\n   %s\n   %s\n|js}, dir, name, namespace);\n  } else {\n    Printf.sprintf(\n      {js|│\n├─ %s\n│  %s\n│  %s\n|js},\n      dir,\n      name,\n      namespace,\n    )\n    ++ (require == \"\" ? \"\" : (isLast ? \"   \" : \"│  \") ++ require);\n  };\n\n/* Capable of rendering a tree of depth 1 */\nexception RenderAsciiTreeChildrenError(string);\nlet renderAscTreeChildren =\n  fun\n  | [] =>\n    raise(RenderAsciiTreeChildrenError(\"Tree cannot have zero children\"))\n  | [firstChild, ...restChildren] => {\n      let firstChildLog = sprintf(\"├─ %s\", firstChild);\n      let restChildrenLog =\n        List.map(c => sprintf(\"│  %s\", c), restChildren);\n      String.concat(\"\\n\", [\"│\", firstChildLog, ...restChildrenLog]);\n    };\nlet renderAscLastTree =\n  fun\n  | [] =>\n    raise(RenderAsciiTreeChildrenError(\"Tree cannot have zero children\"))\n  | [firstChild, ...restChildren] => {\n      let firstChildLog = sprintf(\"└─ %s\", firstChild);\n      let restChildrenLog = List.map(c => sprintf(\"   %s\", c), restChildren);\n      String.concat(\"\\n\", [\"│\", firstChildLog, ...restChildrenLog]);\n    };\n\nlet rec renderAscTree =\n  fun\n  | [] => ()\n  | [t] => print_endline(renderAscLastTree(t))\n  | [t, ...rest] => {\n      print_endline(renderAscTreeChildren(t));\n      renderAscTree(rest);\n    };\n\nlet readFileOpt = f =>\n  if (exists(f)) {\n    Some(readFile(f));\n  } else {\n    None;\n  };\n\n/* module Cache = { */\n/*   module CacheInternal = { */\n/*     type t = {path: string}; */\n/*     let init = path => {path: path}; */\n/*   }; */\n/*   let init = () => { */\n/*     /\\* let cacheStoragePath = *\\/ */\n/*     /\\*   Path.((Sys.executable_name |> parent |> parent) / \"share\" / \"cache\"); *\\/ */\n/*   }; */\n/*   let get = (cache: CacheInternal.t, key: string) => {}; */\n/* }; */\n\nlet commandOutput = (command, args) => {\n  open Unix;\n  let cmd =\n    String.concat(\" \", Array.to_list(Array.append([|command|], args)));\n  let (cout, cin, cerr) = open_process_full(cmd, Unix.environment());\n  let repeat = ref(true);\n  let stdout = ref(\"\");\n  let stderr = ref(\"\");\n  while (repeat^) {\n    ignore(\n      try(stdout := stdout^ ++ input_line(cout)) {\n      | End_of_file => repeat := false\n      },\n    );\n  };\n  while (repeat^) {\n    ignore(\n      try(stderr := stderr^ ++ input_line(cerr)) {\n      | End_of_file => repeat := false\n      },\n    );\n  };\n  switch (close_process_full((cout, cin, cerr))) {\n  | WEXITED(_c) => (stdout^, stderr^)\n  | WSIGNALED(_c) => (stdout^, stderr^)\n  | WSTOPPED(_c) => (stdout^, stderr^)\n  };\n};\n\nlet runCommandWithEnv = (command, args) => {\n  open Unix; /* let attach = */\n  /*   Unix.create_process_env( */\n  /*     command, */\n  /*     Array.append([|command|], args), */\n  /*     Unix.environment(), */\n  /*   ); */\n  /* let pid = attach(Unix.stdin, Unix.stdout, Unix.stderr); */\n  /* switch (Unix.waitpid([], pid)) { */\n  /* | (_, WEXITED(c)) => c */\n  /* | (_, WSIGNALED(c)) => c */\n  /* | (_, WSTOPPED(c)) => c */\n  /* }; */\n\n  let cmd =\n    String.concat(\" \", Array.to_list(Array.append([|command|], args)));\n  let (cout, cin, cerr) = open_process_full(cmd, Unix.environment());\n  let repeat = ref(true);\n  while (repeat^) {\n    ignore(\n      try({\n        let line = input_line(cerr);\n        print_endline(<Pastel dim=true> line </Pastel>);\n      }) {\n      | End_of_file => repeat := false\n      },\n    );\n  };\n  while (repeat^) {\n    ignore(\n      try({\n        let line = input_line(cout);\n        print_endline(<Pastel dim=true> line </Pastel>);\n      }) {\n      | End_of_file => repeat := false\n      },\n    );\n  };\n  switch (close_process_full((cout, cin, cerr))) {\n  | WEXITED(c) => c\n  | WSIGNALED(c) => c\n  | WSTOPPED(c) => c\n  };\n};\n\nlet filterNone = l => {\n  let result = ref([]);\n  let rec loop =\n    fun\n    | [] => ()\n    | [h, ...rest] => {\n        switch (h) {\n        | Some(a) => result := [a, ...result^]\n        | None => ()\n        };\n        loop(rest);\n      };\n  loop(l);\n  List.rev(result^);\n};\n\nlet run = (~env, c, args) => {\n  let env_vars =\n    switch (env) {\n    | Some(v) => v\n    | None => Unix.environment()\n    };\n  let (readme, writeme) = Unix.pipe();\n  let pid =\n    Unix.create_process_env(\n      c,\n      Array.append([|c|], args),\n      env_vars,\n      Unix.stdin,\n      writeme,\n      Unix.stderr,\n    );\n  Unix.close(writeme);\n  let result = {contents: []};\n  let in_channel = Unix.in_channel_of_descr(readme);\n  try(\n    while (true) {\n      result.contents = [input_line(in_channel), ...result.contents];\n    }\n  ) {\n  | End_of_file => ()\n  };\n  Unix.close(readme);\n  result := List.rev(result^);\n  switch (Unix.waitpid([], pid)) {\n  | (_, WEXITED(c)) => (c, result^)\n  | (_, WSIGNALED(c)) => (c, [])\n  | (_, WSTOPPED(c)) => (c, [])\n  };\n};\n\nlet run = (~env=?, cmd, args) => {\n  let (exitCode, lines) = run(~env, cmd, args);\n  if (exitCode != 0) {\n    Printf.printf(\n      \"%s failed. Exit code relayed to the shell\\n Exiting with (%d)...\\n\",\n      cmd,\n      exitCode,\n    );\n    exit(exitCode);\n  } else {\n    (exitCode, lines);\n  };\n};\n\nlet moduleNameOf = fileName =>\n  Str.global_replace(Str.regexp(\"\\\\.\\\\(re\\\\|ml\\\\)$\"), \"\", fileName);\n\nmodule JSON = JSON;\nmodule FieldTypes = FieldTypes;\n"
  },
  {
    "path": "utils/dune",
    "content": "(library\n (name PesyEsyPesyUtils)\n (public_name pesy--esy-pesy.utils)\n (modules (:standard))\n (libraries unix yojson str pastel.lib))\n"
  }
]