# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
#
.DS_Store
cpanfile.snapshot
rpm/build.number
rpmbuild/
docs/build/*
/grove/grove
/grove/grovetccfg/grovetccfg
local
traffic_ops_extensions/log/*
traffic_ops_extensions/lib/Extensions/InfluxDB/log/*
traffic_ops/app/log/*.log
traffic_ops/app/public/CRConfig-Snapshots/*
traffic_ops/app/public/Trafficserver-Snapshots/*
docs/.todo_cache
docs/_build/
docs/source/_build/
traffic_ops/app/conf/ldap.conf
traffic_ops/app/db/admin
traffic_ops/app/db/reencrypt/reencrypt
traffic_ops/app/db/traffic_vault_migrate/traffic_vault_migrate
traffic_ops/app/db/traffic_vault_migrate/dump
traffic_ops/**/*.log
traffic_stats/traffic_stats
traffic_router/*/*.log
traffic_router/*.log
vendor/**/appveyor.yml
vendor/**/.gitattributes
vendor/**/.gitignore
vendor/**/.gitmodules
vendor/golang.org/
vendor/**/*.sh
vendor/**/.travis.yml
.dbInfo
/dist
*.pyc
bin/docker-compose
/.m2/
/.npm/
/.github/actions/**/node_modules/
# local storage for cdn-in-a-box Carton packages
local.tar.gz
# Editor/IDE configuration files
*.sublime-project
*.sublime-workspace
.vscode/
__debug_bin
*.code-workspace
*.pydevproject
.idea/
.project
.*.swp
*.tmlanguage.cache
*.tmPreferences.cache
*.stTheme.cache
*.elc
.projectile
*.bak
*.iml
.anjuta/
.anjuta_sym_db.db
*.anjuta
*.kateproject
# built local binaries
./traffic_ops_golang
# Created by TP/TO docker integration tests
junit/
