Mukho

give up try add menubar

Showing 1000 changed files with 2494 additions and 20 deletions

Too many changes to show.

To preserve performance only 1000 of 1000+ files are displayed.

...@@ -11378,4 +11378,4 @@ header.masthead h1, header.masthead .h1 { ...@@ -11378,4 +11378,4 @@ header.masthead h1, header.masthead .h1 {
11378 footer.footer { 11378 footer.footer {
11379 padding-top: 4rem; 11379 padding-top: 4rem;
11380 padding-bottom: 4rem; 11380 padding-bottom: 4rem;
11381 -}
...\ No newline at end of file ...\ No newline at end of file
11381 +}
......
1 +#!/bin/sh
2 +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
3 +
4 +case `uname` in
5 + *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
6 +esac
7 +
8 +if [ -x "$basedir/node" ]; then
9 + "$basedir/node" "$basedir/../acorn/bin/acorn" "$@"
10 + ret=$?
11 +else
12 + node "$basedir/../acorn/bin/acorn" "$@"
13 + ret=$?
14 +fi
15 +exit $ret
1 +@ECHO off
2 +SETLOCAL
3 +CALL :find_dp0
4 +
5 +IF EXIST "%dp0%\node.exe" (
6 + SET "_prog=%dp0%\node.exe"
7 +) ELSE (
8 + SET "_prog=node"
9 + SET PATHEXT=%PATHEXT:;.JS;=;%
10 +)
11 +
12 +"%_prog%" "%dp0%\..\acorn\bin\acorn" %*
13 +ENDLOCAL
14 +EXIT /b %errorlevel%
15 +:find_dp0
16 +SET dp0=%~dp0
17 +EXIT /b
1 +#!/usr/bin/env pwsh
2 +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
3 +
4 +$exe=""
5 +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
6 + # Fix case when both the Windows and Linux builds of Node
7 + # are installed in the same directory
8 + $exe=".exe"
9 +}
10 +$ret=0
11 +if (Test-Path "$basedir/node$exe") {
12 + & "$basedir/node$exe" "$basedir/../acorn/bin/acorn" $args
13 + $ret=$LASTEXITCODE
14 +} else {
15 + & "node$exe" "$basedir/../acorn/bin/acorn" $args
16 + $ret=$LASTEXITCODE
17 +}
18 +exit $ret
1 +#!/bin/sh
2 +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
3 +
4 +case `uname` in
5 + *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
6 +esac
7 +
8 +if [ -x "$basedir/node" ]; then
9 + "$basedir/node" "$basedir/../escodegen/bin/escodegen.js" "$@"
10 + ret=$?
11 +else
12 + node "$basedir/../escodegen/bin/escodegen.js" "$@"
13 + ret=$?
14 +fi
15 +exit $ret
1 +@ECHO off
2 +SETLOCAL
3 +CALL :find_dp0
4 +
5 +IF EXIST "%dp0%\node.exe" (
6 + SET "_prog=%dp0%\node.exe"
7 +) ELSE (
8 + SET "_prog=node"
9 + SET PATHEXT=%PATHEXT:;.JS;=;%
10 +)
11 +
12 +"%_prog%" "%dp0%\..\escodegen\bin\escodegen.js" %*
13 +ENDLOCAL
14 +EXIT /b %errorlevel%
15 +:find_dp0
16 +SET dp0=%~dp0
17 +EXIT /b
1 +#!/usr/bin/env pwsh
2 +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
3 +
4 +$exe=""
5 +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
6 + # Fix case when both the Windows and Linux builds of Node
7 + # are installed in the same directory
8 + $exe=".exe"
9 +}
10 +$ret=0
11 +if (Test-Path "$basedir/node$exe") {
12 + & "$basedir/node$exe" "$basedir/../escodegen/bin/escodegen.js" $args
13 + $ret=$LASTEXITCODE
14 +} else {
15 + & "node$exe" "$basedir/../escodegen/bin/escodegen.js" $args
16 + $ret=$LASTEXITCODE
17 +}
18 +exit $ret
1 +#!/bin/sh
2 +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
3 +
4 +case `uname` in
5 + *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
6 +esac
7 +
8 +if [ -x "$basedir/node" ]; then
9 + "$basedir/node" "$basedir/../escodegen/bin/esgenerate.js" "$@"
10 + ret=$?
11 +else
12 + node "$basedir/../escodegen/bin/esgenerate.js" "$@"
13 + ret=$?
14 +fi
15 +exit $ret
1 +@ECHO off
2 +SETLOCAL
3 +CALL :find_dp0
4 +
5 +IF EXIST "%dp0%\node.exe" (
6 + SET "_prog=%dp0%\node.exe"
7 +) ELSE (
8 + SET "_prog=node"
9 + SET PATHEXT=%PATHEXT:;.JS;=;%
10 +)
11 +
12 +"%_prog%" "%dp0%\..\escodegen\bin\esgenerate.js" %*
13 +ENDLOCAL
14 +EXIT /b %errorlevel%
15 +:find_dp0
16 +SET dp0=%~dp0
17 +EXIT /b
1 +#!/usr/bin/env pwsh
2 +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
3 +
4 +$exe=""
5 +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
6 + # Fix case when both the Windows and Linux builds of Node
7 + # are installed in the same directory
8 + $exe=".exe"
9 +}
10 +$ret=0
11 +if (Test-Path "$basedir/node$exe") {
12 + & "$basedir/node$exe" "$basedir/../escodegen/bin/esgenerate.js" $args
13 + $ret=$LASTEXITCODE
14 +} else {
15 + & "node$exe" "$basedir/../escodegen/bin/esgenerate.js" $args
16 + $ret=$LASTEXITCODE
17 +}
18 +exit $ret
1 +#!/bin/sh
2 +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
3 +
4 +case `uname` in
5 + *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
6 +esac
7 +
8 +if [ -x "$basedir/node" ]; then
9 + "$basedir/node" "$basedir/../esprima/bin/esparse.js" "$@"
10 + ret=$?
11 +else
12 + node "$basedir/../esprima/bin/esparse.js" "$@"
13 + ret=$?
14 +fi
15 +exit $ret
1 +@ECHO off
2 +SETLOCAL
3 +CALL :find_dp0
4 +
5 +IF EXIST "%dp0%\node.exe" (
6 + SET "_prog=%dp0%\node.exe"
7 +) ELSE (
8 + SET "_prog=node"
9 + SET PATHEXT=%PATHEXT:;.JS;=;%
10 +)
11 +
12 +"%_prog%" "%dp0%\..\esprima\bin\esparse.js" %*
13 +ENDLOCAL
14 +EXIT /b %errorlevel%
15 +:find_dp0
16 +SET dp0=%~dp0
17 +EXIT /b
1 +#!/usr/bin/env pwsh
2 +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
3 +
4 +$exe=""
5 +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
6 + # Fix case when both the Windows and Linux builds of Node
7 + # are installed in the same directory
8 + $exe=".exe"
9 +}
10 +$ret=0
11 +if (Test-Path "$basedir/node$exe") {
12 + & "$basedir/node$exe" "$basedir/../esprima/bin/esparse.js" $args
13 + $ret=$LASTEXITCODE
14 +} else {
15 + & "node$exe" "$basedir/../esprima/bin/esparse.js" $args
16 + $ret=$LASTEXITCODE
17 +}
18 +exit $ret
1 +#!/bin/sh
2 +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
3 +
4 +case `uname` in
5 + *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
6 +esac
7 +
8 +if [ -x "$basedir/node" ]; then
9 + "$basedir/node" "$basedir/../esprima/bin/esvalidate.js" "$@"
10 + ret=$?
11 +else
12 + node "$basedir/../esprima/bin/esvalidate.js" "$@"
13 + ret=$?
14 +fi
15 +exit $ret
1 +@ECHO off
2 +SETLOCAL
3 +CALL :find_dp0
4 +
5 +IF EXIST "%dp0%\node.exe" (
6 + SET "_prog=%dp0%\node.exe"
7 +) ELSE (
8 + SET "_prog=node"
9 + SET PATHEXT=%PATHEXT:;.JS;=;%
10 +)
11 +
12 +"%_prog%" "%dp0%\..\esprima\bin\esvalidate.js" %*
13 +ENDLOCAL
14 +EXIT /b %errorlevel%
15 +:find_dp0
16 +SET dp0=%~dp0
17 +EXIT /b
1 +#!/usr/bin/env pwsh
2 +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
3 +
4 +$exe=""
5 +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
6 + # Fix case when both the Windows and Linux builds of Node
7 + # are installed in the same directory
8 + $exe=".exe"
9 +}
10 +$ret=0
11 +if (Test-Path "$basedir/node$exe") {
12 + & "$basedir/node$exe" "$basedir/../esprima/bin/esvalidate.js" $args
13 + $ret=$LASTEXITCODE
14 +} else {
15 + & "node$exe" "$basedir/../esprima/bin/esvalidate.js" $args
16 + $ret=$LASTEXITCODE
17 +}
18 +exit $ret
1 +#!/bin/sh
2 +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
3 +
4 +case `uname` in
5 + *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
6 +esac
7 +
8 +if [ -x "$basedir/node" ]; then
9 + "$basedir/node" "$basedir/../sshpk/bin/sshpk-conv" "$@"
10 + ret=$?
11 +else
12 + node "$basedir/../sshpk/bin/sshpk-conv" "$@"
13 + ret=$?
14 +fi
15 +exit $ret
1 +@ECHO off
2 +SETLOCAL
3 +CALL :find_dp0
4 +
5 +IF EXIST "%dp0%\node.exe" (
6 + SET "_prog=%dp0%\node.exe"
7 +) ELSE (
8 + SET "_prog=node"
9 + SET PATHEXT=%PATHEXT:;.JS;=;%
10 +)
11 +
12 +"%_prog%" "%dp0%\..\sshpk\bin\sshpk-conv" %*
13 +ENDLOCAL
14 +EXIT /b %errorlevel%
15 +:find_dp0
16 +SET dp0=%~dp0
17 +EXIT /b
1 +#!/usr/bin/env pwsh
2 +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
3 +
4 +$exe=""
5 +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
6 + # Fix case when both the Windows and Linux builds of Node
7 + # are installed in the same directory
8 + $exe=".exe"
9 +}
10 +$ret=0
11 +if (Test-Path "$basedir/node$exe") {
12 + & "$basedir/node$exe" "$basedir/../sshpk/bin/sshpk-conv" $args
13 + $ret=$LASTEXITCODE
14 +} else {
15 + & "node$exe" "$basedir/../sshpk/bin/sshpk-conv" $args
16 + $ret=$LASTEXITCODE
17 +}
18 +exit $ret
1 +#!/bin/sh
2 +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
3 +
4 +case `uname` in
5 + *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
6 +esac
7 +
8 +if [ -x "$basedir/node" ]; then
9 + "$basedir/node" "$basedir/../sshpk/bin/sshpk-sign" "$@"
10 + ret=$?
11 +else
12 + node "$basedir/../sshpk/bin/sshpk-sign" "$@"
13 + ret=$?
14 +fi
15 +exit $ret
1 +@ECHO off
2 +SETLOCAL
3 +CALL :find_dp0
4 +
5 +IF EXIST "%dp0%\node.exe" (
6 + SET "_prog=%dp0%\node.exe"
7 +) ELSE (
8 + SET "_prog=node"
9 + SET PATHEXT=%PATHEXT:;.JS;=;%
10 +)
11 +
12 +"%_prog%" "%dp0%\..\sshpk\bin\sshpk-sign" %*
13 +ENDLOCAL
14 +EXIT /b %errorlevel%
15 +:find_dp0
16 +SET dp0=%~dp0
17 +EXIT /b
1 +#!/usr/bin/env pwsh
2 +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
3 +
4 +$exe=""
5 +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
6 + # Fix case when both the Windows and Linux builds of Node
7 + # are installed in the same directory
8 + $exe=".exe"
9 +}
10 +$ret=0
11 +if (Test-Path "$basedir/node$exe") {
12 + & "$basedir/node$exe" "$basedir/../sshpk/bin/sshpk-sign" $args
13 + $ret=$LASTEXITCODE
14 +} else {
15 + & "node$exe" "$basedir/../sshpk/bin/sshpk-sign" $args
16 + $ret=$LASTEXITCODE
17 +}
18 +exit $ret
1 +#!/bin/sh
2 +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
3 +
4 +case `uname` in
5 + *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
6 +esac
7 +
8 +if [ -x "$basedir/node" ]; then
9 + "$basedir/node" "$basedir/../sshpk/bin/sshpk-verify" "$@"
10 + ret=$?
11 +else
12 + node "$basedir/../sshpk/bin/sshpk-verify" "$@"
13 + ret=$?
14 +fi
15 +exit $ret
1 +@ECHO off
2 +SETLOCAL
3 +CALL :find_dp0
4 +
5 +IF EXIST "%dp0%\node.exe" (
6 + SET "_prog=%dp0%\node.exe"
7 +) ELSE (
8 + SET "_prog=node"
9 + SET PATHEXT=%PATHEXT:;.JS;=;%
10 +)
11 +
12 +"%_prog%" "%dp0%\..\sshpk\bin\sshpk-verify" %*
13 +ENDLOCAL
14 +EXIT /b %errorlevel%
15 +:find_dp0
16 +SET dp0=%~dp0
17 +EXIT /b
1 +#!/usr/bin/env pwsh
2 +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
3 +
4 +$exe=""
5 +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
6 + # Fix case when both the Windows and Linux builds of Node
7 + # are installed in the same directory
8 + $exe=".exe"
9 +}
10 +$ret=0
11 +if (Test-Path "$basedir/node$exe") {
12 + & "$basedir/node$exe" "$basedir/../sshpk/bin/sshpk-verify" $args
13 + $ret=$LASTEXITCODE
14 +} else {
15 + & "node$exe" "$basedir/../sshpk/bin/sshpk-verify" $args
16 + $ret=$LASTEXITCODE
17 +}
18 +exit $ret
1 +#!/bin/sh
2 +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
3 +
4 +case `uname` in
5 + *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
6 +esac
7 +
8 +if [ -x "$basedir/node" ]; then
9 + "$basedir/node" "$basedir/../uuid/bin/uuid" "$@"
10 + ret=$?
11 +else
12 + node "$basedir/../uuid/bin/uuid" "$@"
13 + ret=$?
14 +fi
15 +exit $ret
1 +@ECHO off
2 +SETLOCAL
3 +CALL :find_dp0
4 +
5 +IF EXIST "%dp0%\node.exe" (
6 + SET "_prog=%dp0%\node.exe"
7 +) ELSE (
8 + SET "_prog=node"
9 + SET PATHEXT=%PATHEXT:;.JS;=;%
10 +)
11 +
12 +"%_prog%" "%dp0%\..\uuid\bin\uuid" %*
13 +ENDLOCAL
14 +EXIT /b %errorlevel%
15 +:find_dp0
16 +SET dp0=%~dp0
17 +EXIT /b
1 +#!/usr/bin/env pwsh
2 +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
3 +
4 +$exe=""
5 +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
6 + # Fix case when both the Windows and Linux builds of Node
7 + # are installed in the same directory
8 + $exe=".exe"
9 +}
10 +$ret=0
11 +if (Test-Path "$basedir/node$exe") {
12 + & "$basedir/node$exe" "$basedir/../uuid/bin/uuid" $args
13 + $ret=$LASTEXITCODE
14 +} else {
15 + & "node$exe" "$basedir/../uuid/bin/uuid" $args
16 + $ret=$LASTEXITCODE
17 +}
18 +exit $ret
1 +## 2.0.5
2 +
3 +- Use a lookup string in atobLookup and btoaLookup (@GiovanniFrigo in #38)
4 +- Dependency updates
5 +
6 +## 2.0.4
7 +
8 +- Dependency updates
9 +
10 +## 2.0.3
11 +
12 +- Use standard wording for BSD-3-Clause license (@PhilippWendler)
13 +
14 +## 2.0.2
15 +
16 +- Correct license in `package.json` (@Haegin)
17 +
18 +## 2.0.1
19 +
20 +- Add TypeScript type definitions, thanks to @LinusU
21 +
22 +## 2.0.0
23 +
24 +Modernization updates thanks to @TimothyGu:
25 +
26 +- Use jsdom's eslint config, remove jscs
27 +- Move syntax to ES6
28 +- Remove Babel
29 +- Via: https://github.com/jsdom/abab/pull/26
30 +
31 +## 1.0.4
32 +
33 +- Added license file
34 +
35 +## 1.0.3
36 +
37 +- Replaced `let` with `var` in `lib/btoa.js`
38 + - Follow up from `1.0.2`
39 + - Resolves https://github.com/jsdom/abab/issues/18
40 +
41 +## 1.0.2
42 +
43 +- Replaced `const` with `var` in `index.js`
44 + - Allows use of `abab` in the browser without a transpilation step
45 + - Resolves https://github.com/jsdom/abab/issues/15
1 +Copyright © 2019 W3C and Jeff Carpenter \<jeffcarp@chromium.org\>
2 +
3 +Both the original source code and new contributions in this repository are released under the [3-Clause BSD license](https://opensource.org/licenses/BSD-3-Clause).
4 +
5 +# The 3-Clause BSD License
6 +
7 +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
8 +
9 +1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
10 +2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
11 +3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
12 +
13 +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
1 +# abab [![npm version](https://badge.fury.io/js/abab.svg)](https://www.npmjs.com/package/abab) [![Build Status](https://travis-ci.org/jsdom/abab.svg?branch=master)](https://travis-ci.org/jsdom/abab)
2 +
3 +A JavaScript module that implements `window.atob` and `window.btoa` according the forgiving-base64 algorithm in the [Infra Standard](https://infra.spec.whatwg.org/#forgiving-base64). The original code was forked from [w3c/web-platform-tests](https://github.com/w3c/web-platform-tests/blob/master/html/webappapis/atob/base64.html).
4 +
5 +Compatibility: Node.js version 3+ and all major browsers.
6 +
7 +Install with `npm`:
8 +
9 +```sh
10 +npm install abab
11 +```
12 +
13 +## API
14 +
15 +### `btoa` (base64 encode)
16 +
17 +```js
18 +const { btoa } = require('abab');
19 +btoa('Hello, world!'); // 'SGVsbG8sIHdvcmxkIQ=='
20 +```
21 +
22 +### `atob` (base64 decode)
23 +
24 +```js
25 +const { atob } = require('abab');
26 +atob('SGVsbG8sIHdvcmxkIQ=='); // 'Hello, world!'
27 +```
28 +
29 +#### Valid characters
30 +
31 +[Per the spec](https://html.spec.whatwg.org/multipage/webappapis.html#atob:dom-windowbase64-btoa-3), `btoa` will accept strings "containing only characters in the range `U+0000` to `U+00FF`." If passed a string with characters above `U+00FF`, `btoa` will return `null`. If `atob` is passed a string that is not base64-valid, it will also return `null`. In both cases when `null` is returned, the spec calls for throwing a `DOMException` of type `InvalidCharacterError`.
32 +
33 +## Browsers
34 +
35 +If you want to include just one of the methods to save bytes in your client-side code, you can `require` the desired module directly.
36 +
37 +```js
38 +const atob = require('abab/lib/atob');
39 +const btoa = require('abab/lib/btoa');
40 +```
41 +
42 +## Development
43 +
44 +If you're **submitting a PR** or **deploying to npm**, please use the [checklists in CONTRIBUTING.md](CONTRIBUTING.md#checklists).
45 +
46 +## Remembering what `atob` and `btoa` stand for
47 +
48 +Base64 comes from IETF [RFC 4648](https://tools.ietf.org/html/rfc4648#section-4) (2006).
49 +
50 +- **`btoa`**, the encoder function, stands for **binary** to **ASCII**, meaning it converts any binary input into a subset of **ASCII** (Base64).
51 +- **`atob`**, the decoder function, converts **ASCII** (or Base64) to its original **binary** format.
1 +export function atob(encodedData: string): string | null
2 +export function btoa(stringToEncode: string): string | null
1 +"use strict";
2 +
3 +const atob = require("./lib/atob");
4 +const btoa = require("./lib/btoa");
5 +
6 +module.exports = {
7 + atob,
8 + btoa
9 +};
1 +"use strict";
2 +
3 +/**
4 + * Implementation of atob() according to the HTML and Infra specs, except that
5 + * instead of throwing INVALID_CHARACTER_ERR we return null.
6 + */
7 +function atob(data) {
8 + // Web IDL requires DOMStrings to just be converted using ECMAScript
9 + // ToString, which in our case amounts to using a template literal.
10 + data = `${data}`;
11 + // "Remove all ASCII whitespace from data."
12 + data = data.replace(/[ \t\n\f\r]/g, "");
13 + // "If data's length divides by 4 leaving no remainder, then: if data ends
14 + // with one or two U+003D (=) code points, then remove them from data."
15 + if (data.length % 4 === 0) {
16 + data = data.replace(/==?$/, "");
17 + }
18 + // "If data's length divides by 4 leaving a remainder of 1, then return
19 + // failure."
20 + //
21 + // "If data contains a code point that is not one of
22 + //
23 + // U+002B (+)
24 + // U+002F (/)
25 + // ASCII alphanumeric
26 + //
27 + // then return failure."
28 + if (data.length % 4 === 1 || /[^+/0-9A-Za-z]/.test(data)) {
29 + return null;
30 + }
31 + // "Let output be an empty byte sequence."
32 + let output = "";
33 + // "Let buffer be an empty buffer that can have bits appended to it."
34 + //
35 + // We append bits via left-shift and or. accumulatedBits is used to track
36 + // when we've gotten to 24 bits.
37 + let buffer = 0;
38 + let accumulatedBits = 0;
39 + // "Let position be a position variable for data, initially pointing at the
40 + // start of data."
41 + //
42 + // "While position does not point past the end of data:"
43 + for (let i = 0; i < data.length; i++) {
44 + // "Find the code point pointed to by position in the second column of
45 + // Table 1: The Base 64 Alphabet of RFC 4648. Let n be the number given in
46 + // the first cell of the same row.
47 + //
48 + // "Append to buffer the six bits corresponding to n, most significant bit
49 + // first."
50 + //
51 + // atobLookup() implements the table from RFC 4648.
52 + buffer <<= 6;
53 + buffer |= atobLookup(data[i]);
54 + accumulatedBits += 6;
55 + // "If buffer has accumulated 24 bits, interpret them as three 8-bit
56 + // big-endian numbers. Append three bytes with values equal to those
57 + // numbers to output, in the same order, and then empty buffer."
58 + if (accumulatedBits === 24) {
59 + output += String.fromCharCode((buffer & 0xff0000) >> 16);
60 + output += String.fromCharCode((buffer & 0xff00) >> 8);
61 + output += String.fromCharCode(buffer & 0xff);
62 + buffer = accumulatedBits = 0;
63 + }
64 + // "Advance position by 1."
65 + }
66 + // "If buffer is not empty, it contains either 12 or 18 bits. If it contains
67 + // 12 bits, then discard the last four and interpret the remaining eight as
68 + // an 8-bit big-endian number. If it contains 18 bits, then discard the last
69 + // two and interpret the remaining 16 as two 8-bit big-endian numbers. Append
70 + // the one or two bytes with values equal to those one or two numbers to
71 + // output, in the same order."
72 + if (accumulatedBits === 12) {
73 + buffer >>= 4;
74 + output += String.fromCharCode(buffer);
75 + } else if (accumulatedBits === 18) {
76 + buffer >>= 2;
77 + output += String.fromCharCode((buffer & 0xff00) >> 8);
78 + output += String.fromCharCode(buffer & 0xff);
79 + }
80 + // "Return output."
81 + return output;
82 +}
83 +/**
84 + * A lookup table for atob(), which converts an ASCII character to the
85 + * corresponding six-bit number.
86 + */
87 +
88 +const keystr =
89 + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
90 +
91 +function atobLookup(chr) {
92 + const index = keystr.indexOf(chr);
93 + // Throw exception if character is not in the lookup string; should not be hit in tests
94 + return index < 0 ? undefined : index;
95 +}
96 +
97 +module.exports = atob;
1 +"use strict";
2 +
3 +/**
4 + * btoa() as defined by the HTML and Infra specs, which mostly just references
5 + * RFC 4648.
6 + */
7 +function btoa(s) {
8 + let i;
9 + // String conversion as required by Web IDL.
10 + s = `${s}`;
11 + // "The btoa() method must throw an "InvalidCharacterError" DOMException if
12 + // data contains any character whose code point is greater than U+00FF."
13 + for (i = 0; i < s.length; i++) {
14 + if (s.charCodeAt(i) > 255) {
15 + return null;
16 + }
17 + }
18 + let out = "";
19 + for (i = 0; i < s.length; i += 3) {
20 + const groupsOfSix = [undefined, undefined, undefined, undefined];
21 + groupsOfSix[0] = s.charCodeAt(i) >> 2;
22 + groupsOfSix[1] = (s.charCodeAt(i) & 0x03) << 4;
23 + if (s.length > i + 1) {
24 + groupsOfSix[1] |= s.charCodeAt(i + 1) >> 4;
25 + groupsOfSix[2] = (s.charCodeAt(i + 1) & 0x0f) << 2;
26 + }
27 + if (s.length > i + 2) {
28 + groupsOfSix[2] |= s.charCodeAt(i + 2) >> 6;
29 + groupsOfSix[3] = s.charCodeAt(i + 2) & 0x3f;
30 + }
31 + for (let j = 0; j < groupsOfSix.length; j++) {
32 + if (typeof groupsOfSix[j] === "undefined") {
33 + out += "=";
34 + } else {
35 + out += btoaLookup(groupsOfSix[j]);
36 + }
37 + }
38 + }
39 + return out;
40 +}
41 +
42 +/**
43 + * Lookup table for btoa(), which converts a six-bit number into the
44 + * corresponding ASCII character.
45 + */
46 +const keystr =
47 + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
48 +
49 +function btoaLookup(index) {
50 + if (index >= 0 && index < 64) {
51 + return keystr[index];
52 + }
53 +
54 + // Throw INVALID_CHARACTER_ERR exception here -- won't be hit in the tests.
55 + return undefined;
56 +}
57 +
58 +module.exports = btoa;
1 +{
2 + "_from": "abab@^2.0.0",
3 + "_id": "abab@2.0.5",
4 + "_inBundle": false,
5 + "_integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==",
6 + "_location": "/abab",
7 + "_phantomChildren": {},
8 + "_requested": {
9 + "type": "range",
10 + "registry": true,
11 + "raw": "abab@^2.0.0",
12 + "name": "abab",
13 + "escapedName": "abab",
14 + "rawSpec": "^2.0.0",
15 + "saveSpec": null,
16 + "fetchSpec": "^2.0.0"
17 + },
18 + "_requiredBy": [
19 + "/data-urls",
20 + "/jsdom"
21 + ],
22 + "_resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz",
23 + "_shasum": "c0b678fb32d60fc1219c784d6a826fe385aeb79a",
24 + "_spec": "abab@^2.0.0",
25 + "_where": "C:\\Users\\KoMoGoon\\Desktop\\oss_project\\Singer-Composer\\node_modules\\jsdom",
26 + "author": {
27 + "name": "Jeff Carpenter",
28 + "email": "gcarpenterv@gmail.com"
29 + },
30 + "bugs": {
31 + "url": "https://github.com/jsdom/abab/issues"
32 + },
33 + "bundleDependencies": false,
34 + "deprecated": false,
35 + "description": "WHATWG spec-compliant implementations of window.atob and window.btoa.",
36 + "devDependencies": {
37 + "eslint": "^4.19.1",
38 + "karma": "^2.0.0",
39 + "karma-cli": "^1.0.1",
40 + "karma-firefox-launcher": "^1.1.0",
41 + "karma-mocha": "^1.3.0",
42 + "karma-webpack": "^3.0.0",
43 + "mocha": "^5.1.0",
44 + "webpack": "^4.5.0"
45 + },
46 + "files": [
47 + "index.d.ts",
48 + "index.js",
49 + "lib/"
50 + ],
51 + "homepage": "https://github.com/jsdom/abab#readme",
52 + "keywords": [
53 + "atob",
54 + "btoa",
55 + "browser"
56 + ],
57 + "license": "BSD-3-Clause",
58 + "main": "index.js",
59 + "name": "abab",
60 + "repository": {
61 + "type": "git",
62 + "url": "git+https://github.com/jsdom/abab.git"
63 + },
64 + "scripts": {
65 + "karma": "karma start",
66 + "lint": "eslint .",
67 + "mocha": "mocha test/node",
68 + "test": "npm run lint && npm run mocha && npm run karma"
69 + },
70 + "version": "2.0.5"
71 +}
1 +Copyright (c) 2014 Forbes Lindesay
2 +
3 +Permission is hereby granted, free of charge, to any person obtaining a copy
4 +of this software and associated documentation files (the "Software"), to deal
5 +in the Software without restriction, including without limitation the rights
6 +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 +copies of the Software, and to permit persons to whom the Software is
8 +furnished to do so, subject to the following conditions:
9 +
10 +The above copyright notice and this permission notice shall be included in
11 +all copies or substantial portions of the Software.
12 +
13 +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19 +THE SOFTWARE.
...\ No newline at end of file ...\ No newline at end of file
1 +# acorn-globals
2 +
3 +Detect global variables in JavaScript using acorn
4 +
5 +[Get supported acorn-globals with the Tidelift Subscription](https://tidelift.com/subscription/pkg/npm-acorn_globals?utm_source=npm-acorn-globals&utm_medium=referral&utm_campaign=readme)
6 +
7 +[![Build Status](https://img.shields.io/travis/ForbesLindesay/acorn-globals/master.svg)](https://travis-ci.org/ForbesLindesay/acorn-globals)
8 +[![Dependency Status](https://img.shields.io/david/ForbesLindesay/acorn-globals.svg)](https://david-dm.org/ForbesLindesay/acorn-globals)
9 +[![NPM version](https://img.shields.io/npm/v/acorn-globals.svg)](https://www.npmjs.org/package/acorn-globals)
10 +
11 +## Installation
12 +
13 + npm install acorn-globals
14 +
15 +## Usage
16 +
17 +detect.js
18 +
19 +```js
20 +var fs = require('fs');
21 +var detect = require('acorn-globals');
22 +
23 +var src = fs.readFileSync(__dirname + '/input.js', 'utf8');
24 +
25 +var scope = detect(src);
26 +console.dir(scope);
27 +```
28 +
29 +input.js
30 +
31 +```js
32 +var x = 5;
33 +var y = 3, z = 2;
34 +
35 +w.foo();
36 +w = 2;
37 +
38 +RAWR=444;
39 +RAWR.foo();
40 +
41 +BLARG=3;
42 +
43 +foo(function () {
44 + var BAR = 3;
45 + process.nextTick(function (ZZZZZZZZZZZZ) {
46 + console.log('beep boop');
47 + var xyz = 4;
48 + x += 10;
49 + x.zzzzzz;
50 + ZZZ=6;
51 + });
52 + function doom () {
53 + }
54 + ZZZ.foo();
55 +
56 +});
57 +
58 +console.log(xyz);
59 +```
60 +
61 +output:
62 +
63 +```
64 +$ node example/detect.js
65 +[ { name: 'BLARG', nodes: [ [Object] ] },
66 + { name: 'RAWR', nodes: [ [Object], [Object] ] },
67 + { name: 'ZZZ', nodes: [ [Object], [Object] ] },
68 + { name: 'console', nodes: [ [Object], [Object] ] },
69 + { name: 'foo', nodes: [ [Object] ] },
70 + { name: 'process', nodes: [ [Object] ] },
71 + { name: 'w', nodes: [ [Object], [Object] ] },
72 + { name: 'xyz', nodes: [ [Object] ] } ]
73 +```
74 +
75 +## Security contact information
76 +
77 +To report a security vulnerability, please use the [Tidelift security contact](https://tidelift.com/security). Tidelift will coordinate the fix and disclosure.
78 +
79 +## License
80 +
81 + MIT
1 +'use strict';
2 +
3 +var acorn = require('acorn');
4 +var walk = require('acorn-walk');
5 +
6 +function isScope(node) {
7 + return node.type === 'FunctionExpression' || node.type === 'FunctionDeclaration' || node.type === 'ArrowFunctionExpression' || node.type === 'Program';
8 +}
9 +function isBlockScope(node) {
10 + return node.type === 'BlockStatement' || isScope(node);
11 +}
12 +
13 +function declaresArguments(node) {
14 + return node.type === 'FunctionExpression' || node.type === 'FunctionDeclaration';
15 +}
16 +
17 +function declaresThis(node) {
18 + return node.type === 'FunctionExpression' || node.type === 'FunctionDeclaration';
19 +}
20 +
21 +function reallyParse(source, options) {
22 + var parseOptions = Object.assign({}, options,
23 + {
24 + allowReturnOutsideFunction: true,
25 + allowImportExportEverywhere: true,
26 + allowHashBang: true
27 + }
28 + );
29 + return acorn.parse(source, parseOptions);
30 +}
31 +module.exports = findGlobals;
32 +module.exports.parse = reallyParse;
33 +function findGlobals(source, options) {
34 + options = options || {};
35 + var globals = [];
36 + var ast;
37 + // istanbul ignore else
38 + if (typeof source === 'string') {
39 + ast = reallyParse(source, options);
40 + } else {
41 + ast = source;
42 + }
43 + // istanbul ignore if
44 + if (!(ast && typeof ast === 'object' && ast.type === 'Program')) {
45 + throw new TypeError('Source must be either a string of JavaScript or an acorn AST');
46 + }
47 + var declareFunction = function (node) {
48 + var fn = node;
49 + fn.locals = fn.locals || Object.create(null);
50 + node.params.forEach(function (node) {
51 + declarePattern(node, fn);
52 + });
53 + if (node.id) {
54 + fn.locals[node.id.name] = true;
55 + }
56 + };
57 + var declareClass = function (node) {
58 + node.locals = node.locals || Object.create(null);
59 + if (node.id) {
60 + node.locals[node.id.name] = true;
61 + }
62 + };
63 + var declarePattern = function (node, parent) {
64 + switch (node.type) {
65 + case 'Identifier':
66 + parent.locals[node.name] = true;
67 + break;
68 + case 'ObjectPattern':
69 + node.properties.forEach(function (node) {
70 + declarePattern(node.value || node.argument, parent);
71 + });
72 + break;
73 + case 'ArrayPattern':
74 + node.elements.forEach(function (node) {
75 + if (node) declarePattern(node, parent);
76 + });
77 + break;
78 + case 'RestElement':
79 + declarePattern(node.argument, parent);
80 + break;
81 + case 'AssignmentPattern':
82 + declarePattern(node.left, parent);
83 + break;
84 + // istanbul ignore next
85 + default:
86 + throw new Error('Unrecognized pattern type: ' + node.type);
87 + }
88 + };
89 + var declareModuleSpecifier = function (node, parents) {
90 + ast.locals = ast.locals || Object.create(null);
91 + ast.locals[node.local.name] = true;
92 + };
93 + walk.ancestor(ast, {
94 + 'VariableDeclaration': function (node, parents) {
95 + var parent = null;
96 + for (var i = parents.length - 1; i >= 0 && parent === null; i--) {
97 + if (node.kind === 'var' ? isScope(parents[i]) : isBlockScope(parents[i])) {
98 + parent = parents[i];
99 + }
100 + }
101 + parent.locals = parent.locals || Object.create(null);
102 + node.declarations.forEach(function (declaration) {
103 + declarePattern(declaration.id, parent);
104 + });
105 + },
106 + 'FunctionDeclaration': function (node, parents) {
107 + var parent = null;
108 + for (var i = parents.length - 2; i >= 0 && parent === null; i--) {
109 + if (isScope(parents[i])) {
110 + parent = parents[i];
111 + }
112 + }
113 + parent.locals = parent.locals || Object.create(null);
114 + if (node.id) {
115 + parent.locals[node.id.name] = true;
116 + }
117 + declareFunction(node);
118 + },
119 + 'Function': declareFunction,
120 + 'ClassDeclaration': function (node, parents) {
121 + var parent = null;
122 + for (var i = parents.length - 2; i >= 0 && parent === null; i--) {
123 + if (isBlockScope(parents[i])) {
124 + parent = parents[i];
125 + }
126 + }
127 + parent.locals = parent.locals || Object.create(null);
128 + if (node.id) {
129 + parent.locals[node.id.name] = true;
130 + }
131 + declareClass(node);
132 + },
133 + 'Class': declareClass,
134 + 'TryStatement': function (node) {
135 + if (node.handler === null) return;
136 + node.handler.locals = node.handler.locals || Object.create(null);
137 + declarePattern(node.handler.param, node.handler);
138 + },
139 + 'ImportDefaultSpecifier': declareModuleSpecifier,
140 + 'ImportSpecifier': declareModuleSpecifier,
141 + 'ImportNamespaceSpecifier': declareModuleSpecifier
142 + });
143 + function identifier(node, parents) {
144 + var name = node.name;
145 + if (name === 'undefined') return;
146 + for (var i = 0; i < parents.length; i++) {
147 + if (name === 'arguments' && declaresArguments(parents[i])) {
148 + return;
149 + }
150 + if (parents[i].locals && name in parents[i].locals) {
151 + return;
152 + }
153 + }
154 + node.parents = parents.slice();
155 + globals.push(node);
156 + }
157 + walk.ancestor(ast, {
158 + 'VariablePattern': identifier,
159 + 'Identifier': identifier,
160 + 'ThisExpression': function (node, parents) {
161 + for (var i = 0; i < parents.length; i++) {
162 + if (declaresThis(parents[i])) {
163 + return;
164 + }
165 + }
166 + node.parents = parents.slice();
167 + globals.push(node);
168 + }
169 + });
170 + var groupedGlobals = Object.create(null);
171 + globals.forEach(function (node) {
172 + var name = node.type === 'ThisExpression' ? 'this' : node.name;
173 + groupedGlobals[name] = (groupedGlobals[name] || []);
174 + groupedGlobals[name].push(node);
175 + });
176 + return Object.keys(groupedGlobals).sort().map(function (name) {
177 + return {name: name, nodes: groupedGlobals[name]};
178 + });
179 +}
1 +#!/bin/sh
2 +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
3 +
4 +case `uname` in
5 + *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
6 +esac
7 +
8 +if [ -x "$basedir/node" ]; then
9 + "$basedir/node" "$basedir/../acorn/bin/acorn" "$@"
10 + ret=$?
11 +else
12 + node "$basedir/../acorn/bin/acorn" "$@"
13 + ret=$?
14 +fi
15 +exit $ret
1 +@ECHO off
2 +SETLOCAL
3 +CALL :find_dp0
4 +
5 +IF EXIST "%dp0%\node.exe" (
6 + SET "_prog=%dp0%\node.exe"
7 +) ELSE (
8 + SET "_prog=node"
9 + SET PATHEXT=%PATHEXT:;.JS;=;%
10 +)
11 +
12 +"%_prog%" "%dp0%\..\acorn\bin\acorn" %*
13 +ENDLOCAL
14 +EXIT /b %errorlevel%
15 +:find_dp0
16 +SET dp0=%~dp0
17 +EXIT /b
1 +#!/usr/bin/env pwsh
2 +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
3 +
4 +$exe=""
5 +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
6 + # Fix case when both the Windows and Linux builds of Node
7 + # are installed in the same directory
8 + $exe=".exe"
9 +}
10 +$ret=0
11 +if (Test-Path "$basedir/node$exe") {
12 + & "$basedir/node$exe" "$basedir/../acorn/bin/acorn" $args
13 + $ret=$LASTEXITCODE
14 +} else {
15 + & "node$exe" "$basedir/../acorn/bin/acorn" $args
16 + $ret=$LASTEXITCODE
17 +}
18 +exit $ret
This diff is collapsed. Click to expand it.
1 -Copyright (c) 2012 Felix Geisendörfer (felix@debuggable.com) and contributors 1 +Copyright (C) 2012-2018 by various contributors (see AUTHORS)
2 2
3 - Permission is hereby granted, free of charge, to any person obtaining a copy 3 +Permission is hereby granted, free of charge, to any person obtaining a copy
4 - of this software and associated documentation files (the "Software"), to deal 4 +of this software and associated documentation files (the "Software"), to deal
5 - in the Software without restriction, including without limitation the rights 5 +in the Software without restriction, including without limitation the rights
6 - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 6 +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 - copies of the Software, and to permit persons to whom the Software is 7 +copies of the Software, and to permit persons to whom the Software is
8 - furnished to do so, subject to the following conditions: 8 +furnished to do so, subject to the following conditions:
9 9
10 - The above copyright notice and this permission notice shall be included in 10 +The above copyright notice and this permission notice shall be included in
11 - all copies or substantial portions of the Software. 11 +all copies or substantial portions of the Software.
12 12
13 - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 13 +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 14 +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 15 +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 16 +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 17 +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 18 +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19 - THE SOFTWARE. 19 +THE SOFTWARE.
......
This diff is collapsed. Click to expand it.
1 +#!/usr/bin/env node
2 +'use strict';
3 +
4 +require('../dist/bin.js');
1 +export as namespace acorn
2 +export = acorn
3 +
4 +declare namespace acorn {
5 + function parse(input: string, options?: Options): Node
6 +
7 + function parseExpressionAt(input: string, pos?: number, options?: Options): Node
8 +
9 + function tokenizer(input: string, options?: Options): {
10 + getToken(): Token
11 + [Symbol.iterator](): Iterator<Token>
12 + }
13 +
14 + interface Options {
15 + ecmaVersion?: 3 | 5 | 6 | 7 | 8 | 9 | 10 | 2015 | 2016 | 2017 | 2018 | 2019
16 + sourceType?: 'script' | 'module'
17 + onInsertedSemicolon?: (lastTokEnd: number, lastTokEndLoc?: Position) => void
18 + onTrailingComma?: (lastTokEnd: number, lastTokEndLoc?: Position) => void
19 + allowReserved?: boolean | 'never'
20 + allowReturnOutsideFunction?: boolean
21 + allowImportExportEverywhere?: boolean
22 + allowAwaitOutsideFunction?: boolean
23 + allowHashBang?: boolean
24 + locations?: boolean
25 + onToken?: ((token: Token) => any) | Token[]
26 + onComment?: ((
27 + isBlock: boolean, text: string, start: number, end: number, startLoc?: Position,
28 + endLoc?: Position
29 + ) => void) | Comment[]
30 + ranges?: boolean
31 + program?: Node
32 + sourceFile?: string
33 + directSourceFile?: string
34 + preserveParens?: boolean
35 + }
36 +
37 + class Parser {
38 + constructor(options: Options, input: string, startPos?: number)
39 + parse(this: Parser): Node
40 + static parse(this: typeof Parser, input: string, options?: Options): Node
41 + static parseExpressionAt(this: typeof Parser, input: string, pos: number, options?: Options): Node
42 + static tokenizer(this: typeof Parser, input: string, options?: Options): {
43 + getToken(): Token
44 + [Symbol.iterator](): Iterator<Token>
45 + }
46 + static extend(this: typeof Parser, ...plugins: ((BaseParser: typeof Parser) => typeof Parser)[]): typeof Parser
47 + }
48 +
49 + interface Position { line: number; column: number; offset: number }
50 +
51 + const defaultOptions: Options
52 +
53 + function getLineInfo(input: string, offset: number): Position
54 +
55 + class SourceLocation {
56 + start: Position
57 + end: Position
58 + source?: string | null
59 + constructor(p: Parser, start: Position, end: Position)
60 + }
61 +
62 + class Node {
63 + type: string
64 + start: number
65 + end: number
66 + loc?: SourceLocation
67 + sourceFile?: string
68 + range?: [number, number]
69 + constructor(parser: Parser, pos: number, loc?: SourceLocation)
70 + }
71 +
72 + class TokenType {
73 + label: string
74 + keyword: string
75 + beforeExpr: boolean
76 + startsExpr: boolean
77 + isLoop: boolean
78 + isAssign: boolean
79 + prefix: boolean
80 + postfix: boolean
81 + binop: number
82 + updateContext?: (prevType: TokenType) => void
83 + constructor(label: string, conf?: any)
84 + }
85 +
86 + const tokTypes: {
87 + num: TokenType
88 + regexp: TokenType
89 + string: TokenType
90 + name: TokenType
91 + eof: TokenType
92 + bracketL: TokenType
93 + bracketR: TokenType
94 + braceL: TokenType
95 + braceR: TokenType
96 + parenL: TokenType
97 + parenR: TokenType
98 + comma: TokenType
99 + semi: TokenType
100 + colon: TokenType
101 + dot: TokenType
102 + question: TokenType
103 + arrow: TokenType
104 + template: TokenType
105 + ellipsis: TokenType
106 + backQuote: TokenType
107 + dollarBraceL: TokenType
108 + eq: TokenType
109 + assign: TokenType
110 + incDec: TokenType
111 + prefix: TokenType
112 + logicalOR: TokenType
113 + logicalAND: TokenType
114 + bitwiseOR: TokenType
115 + bitwiseXOR: TokenType
116 + bitwiseAND: TokenType
117 + equality: TokenType
118 + relational: TokenType
119 + bitShift: TokenType
120 + plusMin: TokenType
121 + modulo: TokenType
122 + star: TokenType
123 + slash: TokenType
124 + starstar: TokenType
125 + _break: TokenType
126 + _case: TokenType
127 + _catch: TokenType
128 + _continue: TokenType
129 + _debugger: TokenType
130 + _default: TokenType
131 + _do: TokenType
132 + _else: TokenType
133 + _finally: TokenType
134 + _for: TokenType
135 + _function: TokenType
136 + _if: TokenType
137 + _return: TokenType
138 + _switch: TokenType
139 + _throw: TokenType
140 + _try: TokenType
141 + _var: TokenType
142 + _const: TokenType
143 + _while: TokenType
144 + _with: TokenType
145 + _new: TokenType
146 + _this: TokenType
147 + _super: TokenType
148 + _class: TokenType
149 + _extends: TokenType
150 + _export: TokenType
151 + _import: TokenType
152 + _null: TokenType
153 + _true: TokenType
154 + _false: TokenType
155 + _in: TokenType
156 + _instanceof: TokenType
157 + _typeof: TokenType
158 + _void: TokenType
159 + _delete: TokenType
160 + }
161 +
162 + class TokContext {
163 + constructor(token: string, isExpr: boolean, preserveSpace: boolean, override?: (p: Parser) => void)
164 + }
165 +
166 + const tokContexts: {
167 + b_stat: TokContext
168 + b_expr: TokContext
169 + b_tmpl: TokContext
170 + p_stat: TokContext
171 + p_expr: TokContext
172 + q_tmpl: TokContext
173 + f_expr: TokContext
174 + }
175 +
176 + function isIdentifierStart(code: number, astral?: boolean): boolean
177 +
178 + function isIdentifierChar(code: number, astral?: boolean): boolean
179 +
180 + interface AbstractToken {
181 + }
182 +
183 + interface Comment extends AbstractToken {
184 + type: string
185 + value: string
186 + start: number
187 + end: number
188 + loc?: SourceLocation
189 + range?: [number, number]
190 + }
191 +
192 + class Token {
193 + type: TokenType
194 + value: any
195 + start: number
196 + end: number
197 + loc?: SourceLocation
198 + range?: [number, number]
199 + constructor(p: Parser)
200 + }
201 +
202 + function isNewLine(code: number): boolean
203 +
204 + const lineBreak: RegExp
205 +
206 + const lineBreakG: RegExp
207 +
208 + const version: string
209 +}
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
1 +'use strict';
2 +
3 +var path = require('path');
4 +var fs = require('fs');
5 +var acorn = require('./acorn.js');
6 +
7 +var infile, forceFile, silent = false, compact = false, tokenize = false;
8 +var options = {};
9 +
10 +function help(status) {
11 + var print = (status === 0) ? console.log : console.error;
12 + print("usage: " + path.basename(process.argv[1]) + " [--ecma3|--ecma5|--ecma6|--ecma7|--ecma8|--ecma9|...|--ecma2015|--ecma2016|--ecma2017|--ecma2018|...]");
13 + print(" [--tokenize] [--locations] [---allow-hash-bang] [--compact] [--silent] [--module] [--help] [--] [infile]");
14 + process.exit(status);
15 +}
16 +
17 +for (var i = 2; i < process.argv.length; ++i) {
18 + var arg = process.argv[i];
19 + if ((arg === "-" || arg[0] !== "-") && !infile) { infile = arg; }
20 + else if (arg === "--" && !infile && i + 2 === process.argv.length) { forceFile = infile = process.argv[++i]; }
21 + else if (arg === "--locations") { options.locations = true; }
22 + else if (arg === "--allow-hash-bang") { options.allowHashBang = true; }
23 + else if (arg === "--silent") { silent = true; }
24 + else if (arg === "--compact") { compact = true; }
25 + else if (arg === "--help") { help(0); }
26 + else if (arg === "--tokenize") { tokenize = true; }
27 + else if (arg === "--module") { options.sourceType = "module"; }
28 + else {
29 + var match = arg.match(/^--ecma(\d+)$/);
30 + if (match)
31 + { options.ecmaVersion = +match[1]; }
32 + else
33 + { help(1); }
34 + }
35 +}
36 +
37 +function run(code) {
38 + var result;
39 + try {
40 + if (!tokenize) {
41 + result = acorn.parse(code, options);
42 + } else {
43 + result = [];
44 + var tokenizer = acorn.tokenizer(code, options), token;
45 + do {
46 + token = tokenizer.getToken();
47 + result.push(token);
48 + } while (token.type !== acorn.tokTypes.eof)
49 + }
50 + } catch (e) {
51 + console.error(infile && infile !== "-" ? e.message.replace(/\(\d+:\d+\)$/, function (m) { return m.slice(0, 1) + infile + " " + m.slice(1); }) : e.message);
52 + process.exit(1);
53 + }
54 + if (!silent) { console.log(JSON.stringify(result, null, compact ? null : 2)); }
55 +}
56 +
57 +if (forceFile || infile && infile !== "-") {
58 + run(fs.readFileSync(infile, "utf8"));
59 +} else {
60 + var code = "";
61 + process.stdin.resume();
62 + process.stdin.on("data", function (chunk) { return code += chunk; });
63 + process.stdin.on("end", function () { return run(code); });
64 +}
1 +{
2 + "_from": "acorn@^6.0.1",
3 + "_id": "acorn@6.4.2",
4 + "_inBundle": false,
5 + "_integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==",
6 + "_location": "/acorn-globals/acorn",
7 + "_phantomChildren": {},
8 + "_requested": {
9 + "type": "range",
10 + "registry": true,
11 + "raw": "acorn@^6.0.1",
12 + "name": "acorn",
13 + "escapedName": "acorn",
14 + "rawSpec": "^6.0.1",
15 + "saveSpec": null,
16 + "fetchSpec": "^6.0.1"
17 + },
18 + "_requiredBy": [
19 + "/acorn-globals"
20 + ],
21 + "_resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz",
22 + "_shasum": "35866fd710528e92de10cf06016498e47e39e1e6",
23 + "_spec": "acorn@^6.0.1",
24 + "_where": "C:\\Users\\KoMoGoon\\Desktop\\oss_project\\Singer-Composer\\node_modules\\acorn-globals",
25 + "bin": {
26 + "acorn": "bin/acorn"
27 + },
28 + "bugs": {
29 + "url": "https://github.com/acornjs/acorn/issues"
30 + },
31 + "bundleDependencies": false,
32 + "deprecated": false,
33 + "description": "ECMAScript parser",
34 + "engines": {
35 + "node": ">=0.4.0"
36 + },
37 + "homepage": "https://github.com/acornjs/acorn",
38 + "license": "MIT",
39 + "main": "dist/acorn.js",
40 + "maintainers": [
41 + {
42 + "name": "Marijn Haverbeke",
43 + "email": "marijnh@gmail.com",
44 + "url": "https://marijnhaverbeke.nl"
45 + },
46 + {
47 + "name": "Ingvar Stepanyan",
48 + "email": "me@rreverser.com",
49 + "url": "https://rreverser.com/"
50 + },
51 + {
52 + "name": "Adrian Heine",
53 + "url": "http://adrianheine.de"
54 + }
55 + ],
56 + "module": "dist/acorn.mjs",
57 + "name": "acorn",
58 + "repository": {
59 + "type": "git",
60 + "url": "git+https://github.com/acornjs/acorn.git"
61 + },
62 + "scripts": {
63 + "prepare": "cd ..; npm run build:main && npm run build:bin"
64 + },
65 + "version": "6.4.2"
66 +}
1 +{
2 + "_from": "acorn-globals@^4.1.0",
3 + "_id": "acorn-globals@4.3.4",
4 + "_inBundle": false,
5 + "_integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==",
6 + "_location": "/acorn-globals",
7 + "_phantomChildren": {},
8 + "_requested": {
9 + "type": "range",
10 + "registry": true,
11 + "raw": "acorn-globals@^4.1.0",
12 + "name": "acorn-globals",
13 + "escapedName": "acorn-globals",
14 + "rawSpec": "^4.1.0",
15 + "saveSpec": null,
16 + "fetchSpec": "^4.1.0"
17 + },
18 + "_requiredBy": [
19 + "/jsdom"
20 + ],
21 + "_resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz",
22 + "_shasum": "9fa1926addc11c97308c4e66d7add0d40c3272e7",
23 + "_spec": "acorn-globals@^4.1.0",
24 + "_where": "C:\\Users\\KoMoGoon\\Desktop\\oss_project\\Singer-Composer\\node_modules\\jsdom",
25 + "author": {
26 + "name": "ForbesLindesay"
27 + },
28 + "bugs": {
29 + "url": "https://github.com/ForbesLindesay/acorn-globals/issues"
30 + },
31 + "bundleDependencies": false,
32 + "dependencies": {
33 + "acorn": "^6.0.1",
34 + "acorn-walk": "^6.0.1"
35 + },
36 + "deprecated": false,
37 + "description": "Detect global variables in JavaScript using acorn",
38 + "devDependencies": {
39 + "testit": "^3.0.0"
40 + },
41 + "files": [
42 + "index.js",
43 + "LICENSE"
44 + ],
45 + "homepage": "https://github.com/ForbesLindesay/acorn-globals#readme",
46 + "keywords": [
47 + "ast",
48 + "variable",
49 + "name",
50 + "lexical",
51 + "scope",
52 + "local",
53 + "global",
54 + "implicit"
55 + ],
56 + "license": "MIT",
57 + "name": "acorn-globals",
58 + "repository": {
59 + "type": "git",
60 + "url": "git+https://github.com/ForbesLindesay/acorn-globals.git"
61 + },
62 + "scripts": {
63 + "test": "node test"
64 + },
65 + "version": "4.3.4"
66 +}
1 +## 6.2.0 (2017-07-04)
2 +
3 +### New features
4 +
5 +Add support for `Import` nodes.
6 +
7 +## 6.1.0 (2018-09-28)
8 +
9 +### New features
10 +
11 +The walker now walks `TemplateElement` nodes.
12 +
13 +## 6.0.1 (2018-09-14)
14 +
15 +### Bug fixes
16 +
17 +Fix bad "main" field in package.json.
18 +
19 +## 6.0.0 (2018-09-14)
20 +
21 +### Breaking changes
22 +
23 +This is now a separate package, `acorn-walk`, rather than part of the main `acorn` package.
24 +
25 +The `ScopeBody` and `ScopeExpression` meta-node-types are no longer supported.
26 +
27 +## 5.7.1 (2018-06-15)
28 +
29 +### Bug fixes
30 +
31 +Make sure the walker and bin files are rebuilt on release (the previous release didn't get the up-to-date versions).
32 +
33 +## 5.7.0 (2018-06-15)
34 +
35 +### Bug fixes
36 +
37 +Fix crash in walker when walking a binding-less catch node.
38 +
39 +## 5.6.2 (2018-06-05)
40 +
41 +### Bug fixes
42 +
43 +In the walker, go back to allowing the `baseVisitor` argument to be null to default to the default base everywhere.
44 +
45 +## 5.6.1 (2018-06-01)
46 +
47 +### Bug fixes
48 +
49 +Fix regression when passing `null` as fourth argument to `walk.recursive`.
50 +
51 +## 5.6.0 (2018-05-31)
52 +
53 +### Bug fixes
54 +
55 +Fix a bug in the walker that caused a crash when walking an object pattern spread.
56 +
57 +## 5.5.1 (2018-03-06)
58 +
59 +### Bug fixes
60 +
61 +Fix regression in walker causing property values in object patterns to be walked as expressions.
62 +
63 +## 5.5.0 (2018-02-27)
64 +
65 +### Bug fixes
66 +
67 +Support object spread in the AST walker.
68 +
69 +## 5.4.1 (2018-02-02)
70 +
71 +### Bug fixes
72 +
73 +5.4.0 somehow accidentally included an old version of walk.js.
74 +
75 +## 5.2.0 (2017-10-30)
76 +
77 +### Bug fixes
78 +
79 +The `full` and `fullAncestor` walkers no longer visit nodes multiple times.
80 +
81 +## 5.1.0 (2017-07-05)
82 +
83 +### New features
84 +
85 +New walker functions `full` and `fullAncestor`.
86 +
87 +## 3.2.0 (2016-06-07)
88 +
89 +### New features
90 +
91 +Make it possible to use `visit.ancestor` with a walk state.
92 +
93 +## 3.1.0 (2016-04-18)
94 +
95 +### New features
96 +
97 +The walker now allows defining handlers for `CatchClause` nodes.
98 +
99 +## 2.5.2 (2015-10-27)
100 +
101 +### Fixes
102 +
103 +Fix bug where the walker walked an exported `let` statement as an expression.
1 +Copyright (C) 2012-2018 by various contributors (see AUTHORS)
2 +
3 +Permission is hereby granted, free of charge, to any person obtaining a copy
4 +of this software and associated documentation files (the "Software"), to deal
5 +in the Software without restriction, including without limitation the rights
6 +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 +copies of the Software, and to permit persons to whom the Software is
8 +furnished to do so, subject to the following conditions:
9 +
10 +The above copyright notice and this permission notice shall be included in
11 +all copies or substantial portions of the Software.
12 +
13 +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19 +THE SOFTWARE.
1 +# Acorn AST walker
2 +
3 +An abstract syntax tree walker for the
4 +[ESTree](https://github.com/estree/estree) format.
5 +
6 +## Community
7 +
8 +Acorn is open source software released under an
9 +[MIT license](https://github.com/acornjs/acorn/blob/master/acorn-walk/LICENSE).
10 +
11 +You are welcome to
12 +[report bugs](https://github.com/acornjs/acorn/issues) or create pull
13 +requests on [github](https://github.com/acornjs/acorn). For questions
14 +and discussion, please use the
15 +[Tern discussion forum](https://discuss.ternjs.net).
16 +
17 +## Installation
18 +
19 +The easiest way to install acorn is from [`npm`](https://www.npmjs.com/):
20 +
21 +```sh
22 +npm install acorn-walk
23 +```
24 +
25 +Alternately, you can download the source and build acorn yourself:
26 +
27 +```sh
28 +git clone https://github.com/acornjs/acorn.git
29 +cd acorn
30 +npm install
31 +```
32 +
33 +## Interface
34 +
35 +An algorithm for recursing through a syntax tree is stored as an
36 +object, with a property for each tree node type holding a function
37 +that will recurse through such a node. There are several ways to run
38 +such a walker.
39 +
40 +**simple**`(node, visitors, base, state)` does a 'simple' walk over a
41 +tree. `node` should be the AST node to walk, and `visitors` an object
42 +with properties whose names correspond to node types in the [ESTree
43 +spec](https://github.com/estree/estree). The properties should contain
44 +functions that will be called with the node object and, if applicable
45 +the state at that point. The last two arguments are optional. `base`
46 +is a walker algorithm, and `state` is a start state. The default
47 +walker will simply visit all statements and expressions and not
48 +produce a meaningful state. (An example of a use of state is to track
49 +scope at each point in the tree.)
50 +
51 +```js
52 +const acorn = require("acorn")
53 +const walk = require("acorn-walk")
54 +
55 +walk.simple(acorn.parse("let x = 10"), {
56 + Literal(node) {
57 + console.log(`Found a literal: ${node.value}`)
58 + }
59 +})
60 +```
61 +
62 +**ancestor**`(node, visitors, base, state)` does a 'simple' walk over
63 +a tree, building up an array of ancestor nodes (including the current node)
64 +and passing the array to the callbacks as a third parameter.
65 +
66 +```js
67 +const acorn = require("acorn")
68 +const walk = require("acorn-walk")
69 +
70 +walk.ancestor(acorn.parse("foo('hi')"), {
71 + Literal(_, ancestors) {
72 + console.log("This literal's ancestors are:", ancestors.map(n => n.type))
73 + }
74 +})
75 +```
76 +
77 +**recursive**`(node, state, functions, base)` does a 'recursive'
78 +walk, where the walker functions are responsible for continuing the
79 +walk on the child nodes of their target node. `state` is the start
80 +state, and `functions` should contain an object that maps node types
81 +to walker functions. Such functions are called with `(node, state, c)`
82 +arguments, and can cause the walk to continue on a sub-node by calling
83 +the `c` argument on it with `(node, state)` arguments. The optional
84 +`base` argument provides the fallback walker functions for node types
85 +that aren't handled in the `functions` object. If not given, the
86 +default walkers will be used.
87 +
88 +**make**`(functions, base)` builds a new walker object by using the
89 +walker functions in `functions` and filling in the missing ones by
90 +taking defaults from `base`.
91 +
92 +**full**`(node, callback, base, state)` does a 'full' walk over a
93 +tree, calling the callback with the arguments (node, state, type) for
94 +each node
95 +
96 +**fullAncestor**`(node, callback, base, state)` does a 'full' walk
97 +over a tree, building up an array of ancestor nodes (including the
98 +current node) and passing the array to the callbacks as a third
99 +parameter.
100 +
101 +```js
102 +const acorn = require("acorn")
103 +const walk = require("acorn-walk")
104 +
105 +walk.full(acorn.parse("1 + 1"), node => {
106 + console.log(`There's a ${node.type} node at ${node.ch}`)
107 +})
108 +```
109 +
110 +**findNodeAt**`(node, start, end, test, base, state)` tries to locate
111 +a node in a tree at the given start and/or end offsets, which
112 +satisfies the predicate `test`. `start` and `end` can be either `null`
113 +(as wildcard) or a number. `test` may be a string (indicating a node
114 +type) or a function that takes `(nodeType, node)` arguments and
115 +returns a boolean indicating whether this node is interesting. `base`
116 +and `state` are optional, and can be used to specify a custom walker.
117 +Nodes are tested from inner to outer, so if two nodes match the
118 +boundaries, the inner one will be preferred.
119 +
120 +**findNodeAround**`(node, pos, test, base, state)` is a lot like
121 +`findNodeAt`, but will match any node that exists 'around' (spanning)
122 +the given position.
123 +
124 +**findNodeAfter**`(node, pos, test, base, state)` is similar to
125 +`findNodeAround`, but will match all nodes *after* the given position
126 +(testing outer nodes before inner nodes).
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
1 +{
2 + "_from": "acorn-walk@^6.0.1",
3 + "_id": "acorn-walk@6.2.0",
4 + "_inBundle": false,
5 + "_integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==",
6 + "_location": "/acorn-walk",
7 + "_phantomChildren": {},
8 + "_requested": {
9 + "type": "range",
10 + "registry": true,
11 + "raw": "acorn-walk@^6.0.1",
12 + "name": "acorn-walk",
13 + "escapedName": "acorn-walk",
14 + "rawSpec": "^6.0.1",
15 + "saveSpec": null,
16 + "fetchSpec": "^6.0.1"
17 + },
18 + "_requiredBy": [
19 + "/acorn-globals"
20 + ],
21 + "_resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz",
22 + "_shasum": "123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c",
23 + "_spec": "acorn-walk@^6.0.1",
24 + "_where": "C:\\Users\\KoMoGoon\\Desktop\\oss_project\\Singer-Composer\\node_modules\\acorn-globals",
25 + "bugs": {
26 + "url": "https://github.com/acornjs/acorn/issues"
27 + },
28 + "bundleDependencies": false,
29 + "deprecated": false,
30 + "description": "ECMAScript (ESTree) AST walker",
31 + "engines": {
32 + "node": ">=0.4.0"
33 + },
34 + "homepage": "https://github.com/acornjs/acorn",
35 + "license": "MIT",
36 + "main": "dist/walk.js",
37 + "maintainers": [
38 + {
39 + "name": "Marijn Haverbeke",
40 + "email": "marijnh@gmail.com",
41 + "url": "https://marijnhaverbeke.nl"
42 + },
43 + {
44 + "name": "Ingvar Stepanyan",
45 + "email": "me@rreverser.com",
46 + "url": "https://rreverser.com/"
47 + },
48 + {
49 + "name": "Adrian Heine",
50 + "url": "http://adrianheine.de"
51 + }
52 + ],
53 + "module": "dist/walk.mjs",
54 + "name": "acorn-walk",
55 + "repository": {
56 + "type": "git",
57 + "url": "git+https://github.com/acornjs/acorn.git"
58 + },
59 + "scripts": {
60 + "prepare": "cd ..; npm run build:walk"
61 + },
62 + "version": "6.2.0"
63 +}
1 +List of Acorn contributors. Updated before every release.
2 +
3 +Adrian Heine
4 +Adrian Rakovsky
5 +Alistair Braidwood
6 +Amila Welihinda
7 +Andres Suarez
8 +Angelo
9 +Aparajita Fishman
10 +Arian Stolwijk
11 +Artem Govorov
12 +Boopesh Mahendran
13 +Bradley Heinz
14 +Brandon Mills
15 +Charles Hughes
16 +Charmander
17 +Chris McKnight
18 +Conrad Irwin
19 +Daniel Tschinder
20 +David Bonnet
21 +Domenico Matteo
22 +ehmicky
23 +Eugene Obrezkov
24 +Felix Maier
25 +Forbes Lindesay
26 +Gilad Peleg
27 +impinball
28 +Ingvar Stepanyan
29 +Jackson Ray Hamilton
30 +Jesse McCarthy
31 +Jiaxing Wang
32 +Joel Kemp
33 +Johannes Herr
34 +John-David Dalton
35 +Jordan Klassen
36 +Jürg Lehni
37 +Kai Cataldo
38 +keeyipchan
39 +Keheliya Gallaba
40 +Kevin Irish
41 +Kevin Kwok
42 +krator
43 +laosb
44 +luckyzeng
45 +Marek
46 +Marijn Haverbeke
47 +Martin Carlberg
48 +Mat Garcia
49 +Mathias Bynens
50 +Mathieu 'p01' Henri
51 +Matthew Bastien
52 +Max Schaefer
53 +Max Zerzouri
54 +Mihai Bazon
55 +Mike Rennie
56 +naoh
57 +Nicholas C. Zakas
58 +Nick Fitzgerald
59 +Olivier Thomann
60 +Oskar Schöldström
61 +Paul Harper
62 +Peter Rust
63 +PlNG
64 +Prayag Verma
65 +ReadmeCritic
66 +r-e-d
67 +Renée Kooi
68 +Richard Gibson
69 +Rich Harris
70 +Sebastian McKenzie
71 +Shahar Soel
72 +Sheel Bedi
73 +Simen Bekkhus
74 +Teddy Katz
75 +Timothy Gu
76 +Toru Nagashima
77 +Victor Homyakov
78 +Wexpo Lyu
79 +zsjforcn
This diff is collapsed. Click to expand it.
1 +Copyright (C) 2012-2018 by various contributors (see AUTHORS)
2 +
3 +Permission is hereby granted, free of charge, to any person obtaining a copy
4 +of this software and associated documentation files (the "Software"), to deal
5 +in the Software without restriction, including without limitation the rights
6 +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 +copies of the Software, and to permit persons to whom the Software is
8 +furnished to do so, subject to the following conditions:
9 +
10 +The above copyright notice and this permission notice shall be included in
11 +all copies or substantial portions of the Software.
12 +
13 +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19 +THE SOFTWARE.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
1 +'use strict';
2 +
3 +var path = require('path');
4 +var fs = require('fs');
5 +var acorn = require('./acorn.js');
6 +
7 +var infile, forceFile, silent = false, compact = false, tokenize = false;
8 +var options = {};
9 +
10 +function help(status) {
11 + var print = (status === 0) ? console.log : console.error;
12 + print("usage: " + path.basename(process.argv[1]) + " [--ecma3|--ecma5|--ecma6|--ecma7|--ecma8|--ecma9|...|--ecma2015|--ecma2016|--ecma2017|--ecma2018|...]");
13 + print(" [--tokenize] [--locations] [---allow-hash-bang] [--compact] [--silent] [--module] [--help] [--] [infile]");
14 + process.exit(status);
15 +}
16 +
17 +for (var i = 2; i < process.argv.length; ++i) {
18 + var arg = process.argv[i];
19 + if ((arg === "-" || arg[0] !== "-") && !infile) { infile = arg; }
20 + else if (arg === "--" && !infile && i + 2 === process.argv.length) { forceFile = infile = process.argv[++i]; }
21 + else if (arg === "--locations") { options.locations = true; }
22 + else if (arg === "--allow-hash-bang") { options.allowHashBang = true; }
23 + else if (arg === "--silent") { silent = true; }
24 + else if (arg === "--compact") { compact = true; }
25 + else if (arg === "--help") { help(0); }
26 + else if (arg === "--tokenize") { tokenize = true; }
27 + else if (arg === "--module") { options.sourceType = "module"; }
28 + else {
29 + var match = arg.match(/^--ecma(\d+)$/);
30 + if (match)
31 + { options.ecmaVersion = +match[1]; }
32 + else
33 + { help(1); }
34 + }
35 +}
36 +
37 +function run(code) {
38 + var result;
39 + try {
40 + if (!tokenize) {
41 + result = acorn.parse(code, options);
42 + } else {
43 + result = [];
44 + var tokenizer = acorn.tokenizer(code, options), token;
45 + do {
46 + token = tokenizer.getToken();
47 + result.push(token);
48 + } while (token.type !== acorn.tokTypes.eof)
49 + }
50 + } catch (e) {
51 + console.error(infile && infile !== "-" ? e.message.replace(/\(\d+:\d+\)$/, function (m) { return m.slice(0, 1) + infile + " " + m.slice(1); }) : e.message);
52 + process.exit(1);
53 + }
54 + if (!silent) { console.log(JSON.stringify(result, null, compact ? null : 2)); }
55 +}
56 +
57 +if (forceFile || infile && infile !== "-") {
58 + run(fs.readFileSync(infile, "utf8"));
59 +} else {
60 + var code = "";
61 + process.stdin.resume();
62 + process.stdin.on("data", function (chunk) { return code += chunk; });
63 + process.stdin.on("end", function () { return run(code); });
64 +}
1 +#!/usr/bin/env node
2 +'use strict';
3 +
4 +var path = require('path');
5 +var fs = require('fs');
6 +var acorn = require('../dist/acorn.js');
7 +
8 +var infile;
9 +var forceFile;
10 +var silent = false;
11 +var compact = false;
12 +var tokenize = false;
13 +var options = {};
14 +
15 +function help(status) {
16 + var print = (status === 0) ? console.log : console.error;
17 + print("usage: " + path.basename(process.argv[1]) + " [--ecma3|--ecma5|--ecma6|--ecma7|--ecma8|--ecma9|...|--ecma2015|--ecma2016|--ecma2017|--ecma2018|...]");
18 + print(" [--tokenize] [--locations] [---allow-hash-bang] [--compact] [--silent] [--module] [--help] [--] [infile]");
19 + process.exit(status);
20 +}
21 +
22 +for (var i = 2; i < process.argv.length; ++i) {
23 + var arg = process.argv[i];
24 + if ((arg === "-" || arg[0] !== "-") && !infile) { infile = arg; }
25 + else if (arg === "--" && !infile && i + 2 === process.argv.length) { forceFile = infile = process.argv[++i]; }
26 + else if (arg === "--locations") { options.locations = true; }
27 + else if (arg === "--allow-hash-bang") { options.allowHashBang = true; }
28 + else if (arg === "--silent") { silent = true; }
29 + else if (arg === "--compact") { compact = true; }
30 + else if (arg === "--help") { help(0); }
31 + else if (arg === "--tokenize") { tokenize = true; }
32 + else if (arg === "--module") { options.sourceType = "module"; }
33 + else {
34 + var match = arg.match(/^--ecma(\d+)$/);
35 + if (match)
36 + { options.ecmaVersion = +match[1]; }
37 + else
38 + { help(1); }
39 + }
40 +}
41 +
42 +function run(code) {
43 + var result;
44 + try {
45 + if (!tokenize) {
46 + result = acorn.parse(code, options);
47 + } else {
48 + result = [];
49 + var tokenizer$$1 = acorn.tokenizer(code, options), token;
50 + do {
51 + token = tokenizer$$1.getToken();
52 + result.push(token);
53 + } while (token.type !== acorn.tokTypes.eof)
54 + }
55 + } catch (e) {
56 + console.error(e.message);
57 + process.exit(1);
58 + }
59 + if (!silent) { console.log(JSON.stringify(result, null, compact ? null : 2)); }
60 +}
61 +
62 +if (forceFile || infile && infile !== "-") {
63 + run(fs.readFileSync(infile, "utf8"));
64 +} else {
65 + var code = "";
66 + process.stdin.resume();
67 + process.stdin.on("data", function (chunk) { return code += chunk; });
68 + process.stdin.on("end", function () { return run(code); });
69 +}
1 +#!/usr/bin/env node
2 +'use strict';
3 +
4 +require('./_acorn.js');
1 +const fs = require("fs")
2 +const path = require("path")
3 +const run = require("test262-parser-runner")
4 +const parse = require("..").parse
5 +
6 +const unsupportedFeatures = [
7 + "BigInt",
8 + "class-fields",
9 + "class-fields-private",
10 + "class-fields-public",
11 + "numeric-separator-literal"
12 +];
13 +
14 +run(
15 + (content, {sourceType}) => parse(content, {sourceType, ecmaVersion: 10}),
16 + {
17 + testsDirectory: path.dirname(require.resolve("test262/package.json")),
18 + skip: test => (test.attrs.features && unsupportedFeatures.some(f => test.attrs.features.includes(f))),
19 + whitelist: fs.readFileSync("./bin/test262.whitelist", "utf8").split("\n").filter(v => v)
20 + }
21 +)
This diff is collapsed. Click to expand it.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
1 +{
2 + "_from": "acorn@^5.5.3",
3 + "_id": "acorn@5.7.4",
4 + "_inBundle": false,
5 + "_integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==",
6 + "_location": "/acorn",
7 + "_phantomChildren": {},
8 + "_requested": {
9 + "type": "range",
10 + "registry": true,
11 + "raw": "acorn@^5.5.3",
12 + "name": "acorn",
13 + "escapedName": "acorn",
14 + "rawSpec": "^5.5.3",
15 + "saveSpec": null,
16 + "fetchSpec": "^5.5.3"
17 + },
18 + "_requiredBy": [
19 + "/jsdom"
20 + ],
21 + "_resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz",
22 + "_shasum": "3e8d8a9947d0599a1796d10225d7432f4a4acf5e",
23 + "_spec": "acorn@^5.5.3",
24 + "_where": "C:\\Users\\KoMoGoon\\Desktop\\oss_project\\Singer-Composer\\node_modules\\jsdom",
25 + "bin": {
26 + "acorn": "bin/acorn"
27 + },
28 + "bugs": {
29 + "url": "https://github.com/acornjs/acorn/issues"
30 + },
31 + "bundleDependencies": false,
32 + "contributors": [
33 + {
34 + "name": "List of Acorn contributors. Updated before every release."
35 + },
36 + {
37 + "name": "Adrian Heine"
38 + },
39 + {
40 + "name": "Adrian Rakovsky"
41 + },
42 + {
43 + "name": "Alistair Braidwood"
44 + },
45 + {
46 + "name": "Amila Welihinda"
47 + },
48 + {
49 + "name": "Andres Suarez"
50 + },
51 + {
52 + "name": "Angelo"
53 + },
54 + {
55 + "name": "Aparajita Fishman"
56 + },
57 + {
58 + "name": "Arian Stolwijk"
59 + },
60 + {
61 + "name": "Artem Govorov"
62 + },
63 + {
64 + "name": "Boopesh Mahendran"
65 + },
66 + {
67 + "name": "Bradley Heinz"
68 + },
69 + {
70 + "name": "Brandon Mills"
71 + },
72 + {
73 + "name": "Charles Hughes"
74 + },
75 + {
76 + "name": "Charmander"
77 + },
78 + {
79 + "name": "Chris McKnight"
80 + },
81 + {
82 + "name": "Conrad Irwin"
83 + },
84 + {
85 + "name": "Daniel Tschinder"
86 + },
87 + {
88 + "name": "David Bonnet"
89 + },
90 + {
91 + "name": "Domenico Matteo"
92 + },
93 + {
94 + "name": "ehmicky"
95 + },
96 + {
97 + "name": "Eugene Obrezkov"
98 + },
99 + {
100 + "name": "Felix Maier"
101 + },
102 + {
103 + "name": "Forbes Lindesay"
104 + },
105 + {
106 + "name": "Gilad Peleg"
107 + },
108 + {
109 + "name": "impinball"
110 + },
111 + {
112 + "name": "Ingvar Stepanyan"
113 + },
114 + {
115 + "name": "Jackson Ray Hamilton"
116 + },
117 + {
118 + "name": "Jesse McCarthy"
119 + },
120 + {
121 + "name": "Jiaxing Wang"
122 + },
123 + {
124 + "name": "Joel Kemp"
125 + },
126 + {
127 + "name": "Johannes Herr"
128 + },
129 + {
130 + "name": "John-David Dalton"
131 + },
132 + {
133 + "name": "Jordan Klassen"
134 + },
135 + {
136 + "name": "Jürg Lehni"
137 + },
138 + {
139 + "name": "Kai Cataldo"
140 + },
141 + {
142 + "name": "keeyipchan"
143 + },
144 + {
145 + "name": "Keheliya Gallaba"
146 + },
147 + {
148 + "name": "Kevin Irish"
149 + },
150 + {
151 + "name": "Kevin Kwok"
152 + },
153 + {
154 + "name": "krator"
155 + },
156 + {
157 + "name": "laosb"
158 + },
159 + {
160 + "name": "luckyzeng"
161 + },
162 + {
163 + "name": "Marek"
164 + },
165 + {
166 + "name": "Marijn Haverbeke"
167 + },
168 + {
169 + "name": "Martin Carlberg"
170 + },
171 + {
172 + "name": "Mat Garcia"
173 + },
174 + {
175 + "name": "Mathias Bynens"
176 + },
177 + {
178 + "name": "Mathieu 'p01' Henri"
179 + },
180 + {
181 + "name": "Matthew Bastien"
182 + },
183 + {
184 + "name": "Max Schaefer"
185 + },
186 + {
187 + "name": "Max Zerzouri"
188 + },
189 + {
190 + "name": "Mihai Bazon"
191 + },
192 + {
193 + "name": "Mike Rennie"
194 + },
195 + {
196 + "name": "naoh"
197 + },
198 + {
199 + "name": "Nicholas C. Zakas"
200 + },
201 + {
202 + "name": "Nick Fitzgerald"
203 + },
204 + {
205 + "name": "Olivier Thomann"
206 + },
207 + {
208 + "name": "Oskar Schöldström"
209 + },
210 + {
211 + "name": "Paul Harper"
212 + },
213 + {
214 + "name": "Peter Rust"
215 + },
216 + {
217 + "name": "PlNG"
218 + },
219 + {
220 + "name": "Prayag Verma"
221 + },
222 + {
223 + "name": "ReadmeCritic"
224 + },
225 + {
226 + "name": "r-e-d"
227 + },
228 + {
229 + "name": "Renée Kooi"
230 + },
231 + {
232 + "name": "Richard Gibson"
233 + },
234 + {
235 + "name": "Rich Harris"
236 + },
237 + {
238 + "name": "Sebastian McKenzie"
239 + },
240 + {
241 + "name": "Shahar Soel"
242 + },
243 + {
244 + "name": "Sheel Bedi"
245 + },
246 + {
247 + "name": "Simen Bekkhus"
248 + },
249 + {
250 + "name": "Teddy Katz"
251 + },
252 + {
253 + "name": "Timothy Gu"
254 + },
255 + {
256 + "name": "Toru Nagashima"
257 + },
258 + {
259 + "name": "Victor Homyakov"
260 + },
261 + {
262 + "name": "Wexpo Lyu"
263 + },
264 + {
265 + "name": "zsjforcn"
266 + }
267 + ],
268 + "deprecated": false,
269 + "description": "ECMAScript parser",
270 + "devDependencies": {
271 + "eslint": "^4.10.0",
272 + "eslint-config-standard": "^10.2.1",
273 + "eslint-plugin-import": "^2.2.0",
274 + "eslint-plugin-node": "^5.2.1",
275 + "eslint-plugin-promise": "^3.5.0",
276 + "eslint-plugin-standard": "^3.0.1",
277 + "rollup": "^0.45.0",
278 + "rollup-plugin-buble": "^0.16.0",
279 + "test262": "git+https://github.com/tc39/test262.git#3bfad28cc302fd4455badcfcbca7c5bb7ce41a72",
280 + "test262-parser-runner": "^0.4.0",
281 + "unicode-11.0.0": "^0.7.7"
282 + },
283 + "engines": {
284 + "node": ">=0.4.0"
285 + },
286 + "homepage": "https://github.com/acornjs/acorn",
287 + "license": "MIT",
288 + "main": "dist/acorn.js",
289 + "maintainers": [
290 + {
291 + "name": "Marijn Haverbeke",
292 + "email": "marijnh@gmail.com",
293 + "url": "http://marijnhaverbeke.nl"
294 + },
295 + {
296 + "name": "Ingvar Stepanyan",
297 + "email": "me@rreverser.com",
298 + "url": "http://rreverser.com/"
299 + },
300 + {
301 + "name": "Adrian Heine",
302 + "email": "http://adrianheine.de"
303 + }
304 + ],
305 + "module": "dist/acorn.es.js",
306 + "name": "acorn",
307 + "repository": {
308 + "type": "git",
309 + "url": "git+https://github.com/acornjs/acorn.git"
310 + },
311 + "scripts": {
312 + "build": "npm run build:main && npm run build:walk && npm run build:loose && npm run build:bin",
313 + "build:bin": "rollup -c rollup/config.bin.js",
314 + "build:loose": "rollup -c rollup/config.loose.js && rollup -c rollup/config.loose_es.js",
315 + "build:main": "rollup -c rollup/config.main.js",
316 + "build:walk": "rollup -c rollup/config.walk.js",
317 + "lint": "eslint src/",
318 + "prepare": "npm run build && node test/run.js && node test/lint.js",
319 + "pretest": "npm run build:main && npm run build:loose",
320 + "test": "node test/run.js && node test/lint.js",
321 + "test:test262": "node bin/run_test262.js"
322 + },
323 + "version": "5.7.4"
324 +}
1 +var Ajv = require('ajv');
2 +var ajv = new Ajv({allErrors: true});
3 +
4 +var schema = {
5 + "properties": {
6 + "foo": { "type": "string" },
7 + "bar": { "type": "number", "maximum": 3 }
8 + }
9 +};
10 +
11 +var validate = ajv.compile(schema);
12 +
13 +test({"foo": "abc", "bar": 2});
14 +test({"foo": 2, "bar": 4});
15 +
16 +function test(data) {
17 + var valid = validate(data);
18 + if (valid) console.log('Valid!');
19 + else console.log('Invalid: ' + ajv.errorsText(validate.errors));
20 +}
...\ No newline at end of file ...\ No newline at end of file
1 -# Copyright (c) 2015 Calvin Metcalf 1 +The MIT License (MIT)
2 +
3 +Copyright (c) 2015-2017 Evgeny Poberezkin
2 4
3 Permission is hereby granted, free of charge, to any person obtaining a copy 5 Permission is hereby granted, free of charge, to any person obtaining a copy
4 of this software and associated documentation files (the "Software"), to deal 6 of this software and associated documentation files (the "Software"), to deal
...@@ -10,10 +12,11 @@ furnished to do so, subject to the following conditions: ...@@ -10,10 +12,11 @@ furnished to do so, subject to the following conditions:
10 The above copyright notice and this permission notice shall be included in all 12 The above copyright notice and this permission notice shall be included in all
11 copies or substantial portions of the Software. 13 copies or substantial portions of the Software.
12 14
13 -**THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 17 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 19 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 20 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19 -SOFTWARE.** 21 +SOFTWARE.
22 +
......
This diff is collapsed. Click to expand it.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
1 +'use strict';
2 +
3 +
4 +var Cache = module.exports = function Cache() {
5 + this._cache = {};
6 +};
7 +
8 +
9 +Cache.prototype.put = function Cache_put(key, value) {
10 + this._cache[key] = value;
11 +};
12 +
13 +
14 +Cache.prototype.get = function Cache_get(key) {
15 + return this._cache[key];
16 +};
17 +
18 +
19 +Cache.prototype.del = function Cache_del(key) {
20 + delete this._cache[key];
21 +};
22 +
23 +
24 +Cache.prototype.clear = function Cache_clear() {
25 + this._cache = {};
26 +};
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff could not be displayed because it is too large.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff could not be displayed because it is too large.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.