# License Notices

## @vscode/codicons

Content and Documentation under `node_modules/@vscode/codicons` is Copyright (c) Microsoft Corportation
and any contributors under the Creative Commons Attribution 4.0 International Public License.

See `node_modules/@vscode/codicons/LICENSE` for the full terms.

Code under `node_modules/@vscode/codicons` is Copyright (c) Microsoft Corportation under the MIT License.

See `node_modules/@vscode/codicons/LICENSE-CODE` for the full terms.

## @vscode/debugadapter

Code under `node_modules/@vscode/debugadapter` is Copyright (c) Microsoft Corportation under the MIT License.

See `node_modules/@vscode/debugadapter/License.txt` for the full terms.

## jsonparse

Code under `node_modules/jsonparse` is Copyright (c) 2012 Tim Caswell under the MIT License.

See `node_modules/jsonparse/LICENSE` for the full terms.
