// Copyright (c) 2021, 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.

import 'dart:html';

void main() {
  print(HttpStatus.CONTINUE);
  print(HttpStatus.SWITCHING_PROTOCOLS);
  print(HttpStatus.OK);
  print(HttpStatus.CREATED);
  print(HttpStatus.ACCEPTED);
  print(HttpStatus.NON_AUTHORITATIVE_INFORMATION);
  print(HttpStatus.NO_CONTENT);
  print(HttpStatus.RESET_CONTENT);
  print(HttpStatus.PARTIAL_CONTENT);
  print(HttpStatus.MULTIPLE_CHOICES);
  print(HttpStatus.MOVED_PERMANENTLY);
  print(HttpStatus.FOUND);
  print(HttpStatus.MOVED_TEMPORARILY);
  print(HttpStatus.SEE_OTHER);
  print(HttpStatus.NOT_MODIFIED);
  print(HttpStatus.USE_PROXY);
  print(HttpStatus.TEMPORARY_REDIRECT);
  print(HttpStatus.BAD_REQUEST);
  print(HttpStatus.UNAUTHORIZED);
  print(HttpStatus.PAYMENT_REQUIRED);
  print(HttpStatus.FORBIDDEN);
  print(HttpStatus.NOT_FOUND);
  print(HttpStatus.METHOD_NOT_ALLOWED);
  print(HttpStatus.NOT_ACCEPTABLE);
  print(HttpStatus.PROXY_AUTHENTICATION_REQUIRED);
  print(HttpStatus.REQUEST_TIMEOUT);
  print(HttpStatus.CONFLICT);
  print(HttpStatus.GONE);
  print(HttpStatus.LENGTH_REQUIRED);
  print(HttpStatus.PRECONDITION_FAILED);
  print(HttpStatus.REQUEST_ENTITY_TOO_LARGE);
  print(HttpStatus.REQUEST_URI_TOO_LONG);
  print(HttpStatus.UNSUPPORTED_MEDIA_TYPE);
  print(HttpStatus.REQUESTED_RANGE_NOT_SATISFIABLE);
  print(HttpStatus.EXPECTATION_FAILED);
  print(HttpStatus.UPGRADE_REQUIRED);
  print(HttpStatus.INTERNAL_SERVER_ERROR);
  print(HttpStatus.NOT_IMPLEMENTED);
  print(HttpStatus.BAD_GATEWAY);
  print(HttpStatus.SERVICE_UNAVAILABLE);
  print(HttpStatus.GATEWAY_TIMEOUT);
  print(HttpStatus.HTTP_VERSION_NOT_SUPPORTED);
  print(HttpStatus.NETWORK_CONNECT_TIMEOUT_ERROR);
}
