# Autoconf files
agent/Makefile
config.h
config.log
config.status
autom4te.cache
**/.cmake.state

# Google APIs
protos/googleapis

# Protobuf intermediate files
**/*.pb.*

# Proto files
**/*.proto

# C++ output files
**/*.o
**/*.a

# Build output
build

# BAL API 3.x
**/bal-api-3.*

# Test binary
**/test_openolt

# Test report
**/test_openolt_report_xunit.xml

# IntelliJ Files
.idea

# vscode
.vscode

# for unit tests
agent/test/keystore/
agent/test/lib
agent/test/bal-oss-api-*

# for Rx optical power test app and test data
agent/src/read_rxtx_power
agent/read_rxtx_power
eeprom.bin

# downloaded Accton patch files and BAL packages
agent/download/*

# debian build artifacts
**/.debhelper
