*.pydevproject
.project
.metadata
bin/
tmp/
*.tmp
*.bak
*.swp
*~.nib
local.properties
.classpath
.settings/
.loadpath
.ninja*
build.ninja
.vs
.vscode

# Generated version
version.c

# External tool builders
.externalToolBuilders/

# Locally stored "Eclipse launch configurations"
*.launch

# CDT-specific
.cproject

# PDT-specific
.buildpath

#Android local build files
build/android/assets
build/android/libs

#Xcode build
build/xcode/foundation/build

#Doxygen generated
doc/html

#Coverity scan
cov-int/
cov-int.*

#################
## Visual Studio
#################

## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.

# User-specific files
*.suo
*.user
*.sln.docstates

# Build results
[Dd]ebug/
[Rr]elease/
[Pp]rofile/
[Dd]eploy/
*_i.c
*_p.c
*.ilk
*.meta
*.obj
*.pch
*.pchi
*.pdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.vspscc
.builds
*.dotCover
*.lastbuildstate
*.unsuccessfulbuild
*.opendb
*.vc
*.VC.db
*.db-shm
*.db-wal

## TODO: If you have NuGet Package Restore enabled, uncomment this
#packages/

# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opensdf
*.sdf

# Visual Studio profiler
*.psess
*.vsp

# ReSharper is a .NET coding add-in
_ReSharper*

# Installshield output folder
[Ee]xpress

# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html

# Click-Once directory
publish

# Others
[Bb]in
[Oo]bj
sql
TestResults
*.Cache
ClientBin
stylecop.*
~$*
*.dbmdl
Generated_Code #added for RIA/Silverlight projects

# Backup & report files from converting an old project file to a newer
# Visual Studio version. Backup files are not needed, because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML


############
## Windows
############

# Windows image file caches
Thumbs.db

# Folder config file
Desktop.ini


#############
## Python
#############

*.py[co]

# Packages
*.egg
*.egg-info
dist
eggs
parts
var
sdist
develop-eggs
.installed.cfg

# Installer logs
pip-log.txt

# Unit test / coverage reports
.coverage
.tox

#Translations
*.mo

#Mr Developer
.mr.developer.cfg

# Mac crap
.DS_Store


###############
## Generic
###############

#Project builds
lib/**
bin/**
dist/**
libs/**

#Log files
*.log
*.tlog

#Scons build
.sconsign.dblite
build/scons/debug*
build/scons/release*
build/scons/profi*
build/scons/deploy*

#Backups
*~

#Object files
*.o

#XCode
xcuserdata
*.xccheckout

#SublimeText local workspace
*.sublime-workspace

#Never store keystores in version control!
*.keystore

#Do not store local build prefs
build.json
codesign.json
coveralls.json
coverallsreport.json
codecov.json
codecovreport.json
benchmark-*.txt
