# Copyright (c) 2019, the Dart project authors.  Please see the AUTHORS file
# for details. All rights reserved. Use of this source code is governed by a
# BSD-style license that can be found in the LICENSE file.

# Blank lines and comments are ignored.
# Comments can also be inline like 'correct # this is ok'.
# Note that at least one space before the hash is required.

# Comments on a line by itself will be considered a header of the file and
# automatic tools might move it to the top of the file.

a0x
a1x
a2x
aa
aaa
abc
abcompile
actions
adopted
affected
albeit
allocations
alt
amortized
anon
aoo
approval
approximation
arbitrarily
asdf
asserter
assure
auth
authority
auto
autobianchi
automatic
b0x
b1x
b2x
ba
baba
backed
bail
bailout
bash
bat
bbb
bc
bench
benchmark
besides
beta
bigger
blacklist
blah
blindly
blocked
blorp
boo
bootstrap
bots
bowtie
boz
bq
brand
brave
brown
builddir
bulk2
bulkcompile
c's
cafebabe
callable
camel
capitalized
casing
cc
ccc
charcode
charset
checkout
cipd
circular
cli
cloneable
cmp
cnn
coded
codepath
collisions
commented
commit
companion
comparator
comparer
comparisons
compilations
compiler's
complement
completers
confidence
confident
confirm
consecutive
considering
consolidated
constrains
consts
contract
conversion
conversions
coo
cov
crashes
cumulative
dacoharkes
dadd
daemon
dartanalyzer
dartfile
dash
dashes
day
db
debugger
decrease
decrements
def
deleting
depended
depfile
desc
descriptors
detector
deviation
dfast
di
dictionaries
dictionary
differences
differs
dijkstra
dijkstras
dillfile
dills
dinteractive
dirname
disagree
disagreement
disallowed
disconnect
discovering
dispatcher
dispose
dist
doctype
doesnt
dog
doo
downstream
dumping
dupe
durations
dw
dyn
e's
e2e
ease
ec
edits
elapse
ell
entrypoint
entrypoints
eoo
epoch
err
everytime
evicting
excess
exe
execute
exercised
exercises
exitcode
exiting
exits
expanded
expands
expansion
expansive
explain
extern
fac
faking
falling
favors
fetched
fibonacci
filesystem
filler
finder
fisk
five
flagged
floor
fluctuate
foo1
foo10
foo12
foo13
foo14
foo15
foo2
foo4
foo5
foo6
foo7
foo8
foo9
foos
forbidden
forces
foreign
forrest
fox
fulfill
func
futures
gallery
gamma
gave
gc
gen
generators
git
goo
google
greeting
gtgt
gulp
gunk
hackish
harness
helper2
hest
heuristics
hi
hints
home
hoo
hosting
hot
hotreload
hunk
hurray
i'm
ia
ikg
illustrate
implementor
inclosure
increased
incrementally
increments
infinity
inspect
insufficient
intact
interactive
internet
interpolate
inv
invalidating
ioo
isolate
isolates
issue41210b
issue41436c
issue41496b
issue41498b
issue41499b
it'll
iter
joo
jumped
kernels
kill
ko
koo
la
launching
lc
ld
le
lengths
lightly
likewise
lily
linebreaks
lints
linux
listening
ll
local1a
local1b
local1c
local1d
local1e
local1f
local1g
local1h
local1i
local2a
local2b
local2c
local2d
local2e
local2f
local2g
local2h
local3a
local3b
local3c
local3d
local3e
local3f
local3g
local3h
logd
logs
loo
loopback
mac
maker
matters
mc
mds
measured
met
metric
metrics
mf
micro
minimize
minutes
mismatched
misnamed
miss
misspelled
mistake
mistakes
modelled
month
moo
mx
mysdk
naturally
negatable
newest
newworld
ninja
nondefault
nonexisting
noo
numerator
observable
observatory
oh
okay
ooo
operate
ops
optimal
oracle
outbound
overlay
party
pause
paused
pc
periodic
periodically
person
phrase
pink
places
plug
pointed
policy
pooled
population
portions
pp
preliminary
prematurely
pretends
producer
profile
profiler
promotes
propagated
protected
proved
provider
pseudocode
pubspec
pv
px
py
python
quot
r"
r"\s
r"k
rd
reachability
reality
recompile
recompiles
redir
redirections
reducer
referring
reflectee
reflective
regenerate
regressions
reify
reload
remap
remaps
repeating
repro
resource
respected
response
retaining
retainingpath
retains
rev
risky
runtimes
say
scans
screen
scripts
sdkroot
sdks
secondary
segment
sensitive
severe
sheets
shipped
shortest
shot
signalled
slight
smoke
somehow
spans
spell
spellcheck
spelled
spelling
spent
splay
splitting
sqrt
squared
sssp
stashed
stat
stats
std
stdio
strip
strongest
stub's
stupid
subcommand
subdir
subtool
subtools
suite
summarization
summarized
superinterface
supermixin
supplement
suspension
tails
talk
templates
thereof
thing
threw
timeout
timer
timing
timings
tinv
title
tpt
transitively
translators
triangle
trigger
triggers
trimming
tripped
tripping
trivially
truncated
tt
ttest
txt
typeargs
typeparam
typeparambounds
ugly
unassignment
unawaited
unbreak
unpacked
unregistered
untransformed
untrimmed
upload
uppercase
upward
uses8
usual
val
vars
verbatim
versioning
waiting
walt
warmup
wherever
whitelist
whitelisting
wins
workflow
worlds
ws
x's
xlate
xrequired
xxx
y's
year
