# Compiled python files.
*.pyc
# Files open in vi.
*.swp
# Compiled cfg files.
*.cfgc
# gclient files
.gclient*
# recipe DEPS
infra/bots/.recipe_deps
# common code
/common
**/res/common
# TAGS
*TAGS
*tags
# Files used by bugdroid.
.bugdroid_password
services/bugdroid/bugdroid_log.txt
# Data files used by webpages_playback.py
# Eclipse project files
.project
.pydevproject
**/client_secret.json
**/service-account.json
**/google_storage_token.data
**/gcloud_token.data
google_oauth_token.data
oauth-token.cache
# Bower and Node related directories
node_modules
bower_components
# Sublime project files
*.sublime-project
*.sublime-workspace
# Generated Go files.
go/depot_tools/gen_version.go
go/skiaversion/gen_version.go
# Generated for Go package.
pdfium/build
# Generated by the 'absent' tool
prometheus/sys/absent.rules
# Server executables/config
**/res/vul/
**/res/js/core-debug.js
**/res/js/core.js
datahopper_internal/google_storage_token.dat
fuzzer/res/css/fuzzer.css
fuzzer/third_party
perf/bqtoken.data
perf/res/css/perf.css
perf/res/common
perf/third_party
perf/timestamp.json
perf/local.toml
perf/client_secrets.json
perf/go/ingester/testdata/local-ingest-test/
push/third_party
push/res/common
sksysmon/third_party
sksysmon/res/common
doc/res/common
doc/res/css/docs.css
doc/third_party
alertserver/third_party
status/third_party
android_ingest/third_party
res/imp/9/res
res/imp/9/res/js
res/imp/9/bower_components
# Ignore all SQLite databases, because tests will create their own unique ones.
*.db
# Logfiles from launched buildslaves.
launch_slaves.log*
tracedb/local_perf.toml
fiddle/fiddle_secwrap
fiddle/res/css
prometheus/tmp
# Jupyter
.ipynb_checkpoints
