<!--
ATTENTION! Please read and follow:
- if this is a _question_ about how to build / test / query / deploy using Bazel, or a _discussion starter_, send it to bazel-discuss@googlegroups.com
- if this is a _bug_ or _feature request_, fill the form below as best as you can.
-->

### Description of the problem / feature request:

> Replace this line with your answer.

### Feature requests: what underlying problem are you trying to solve with this feature?

> Replace this line with your answer.

### Bugs: what's the simplest, easiest way to reproduce this bug? Please provide a minimal example if possible.

> Replace this line with your answer.

### What operating system are you running Bazel on?

> Replace this line with your answer.

### What's the output of `bazel info release`?

> Replace this line with your answer.

### If `bazel info release` returns "development version" or "(@non-git)", tell us how you built Bazel.

> Replace this line with your answer.

### What's the output of `git remote get-url origin ; git rev-parse master ; git rev-parse HEAD` ?

> Replace this line with your answer.

###  Have you found anything relevant by searching the web?

> Replace this line with your answer.

<!--
Places to look:
 - StackOverflow: http://stackoverflow.com/questions/tagged/bazel
 - GitHub issues: https://github.com/bazelbuild/bazel/issues
 - email threads on https://groups.google.com/forum/#!forum/bazel-discuss
-->

### Any other information, logs, or outputs that you want to share?

> Replace this line with your answer.

<!-- If the files are large, upload as attachment or provide link. -->
