From 0301f323b3ca36e108e5c0fe3c1b7be0bc9b5bd4 Mon Sep 17 00:00:00 2001 From: Jess Frazelle Date: Mon, 17 Sep 2018 15:23:04 -0400 Subject: [PATCH] update to use generated files for assets Signed-off-by: Jess Frazelle --- .travis.yml | 2 +- Dockerfile | 3 - Gopkg.lock | 116 +- Gopkg.toml | 8 + internal/binutils/generate.go | 14 +- internal/binutils/{ => static}/static.go | 30 +- internal/binutils/templates/templates.go | 200 ++ server.go | 21 +- vendor/github.com/Microsoft/go-winio/ea.go | 274 +- .../github.com/Microsoft/go-winio/fileinfo.go | 3 +- vendor/github.com/Microsoft/go-winio/pipe.go | 42 +- .../continuity/pathdriver/path_driver.go | 16 + .../docker/cli/cli/config/configfile/file.go | 14 +- vendor/github.com/docker/cli/opts/envfile.go | 2 +- vendor/github.com/docker/cli/opts/file.go | 14 +- vendor/github.com/docker/cli/opts/opts.go | 65 +- vendor/github.com/docker/cli/opts/parse.go | 4 +- .../github.com/docker/distribution/blobs.go | 10 +- .../github.com/docker/distribution/errors.go | 4 + .../manifest/manifestlist/manifestlist.go | 69 +- .../distribution/manifest/schema1/manifest.go | 2 +- .../distribution/manifest/schema2/manifest.go | 10 +- .../docker/distribution/registry.go | 5 + .../distribution/registry/api/v2/routes.go | 9 - .../registry/client/auth/session.go | 2 - .../registry/client/repository.go | 12 +- .../registry/client/transport/http_reader.go | 9 +- .../components/cli/cli/config/config.go | 4 +- .../docker-ce/components/engine/AUTHORS | 42 +- .../docker-ce/components/engine/LICENSE | 2 +- .../engine/pkg/symlink/LICENSE.APACHE | 2 +- .../components/engine/pkg/symlink/LICENSE.BSD | 2 +- vendor/github.com/docker/docker/AUTHORS | 42 +- vendor/github.com/docker/docker/LICENSE | 2 +- vendor/github.com/docker/docker/api/common.go | 2 +- .../docker/docker/api/types/stats.go | 4 +- .../docker/docker/api/types/swarm/swarm.go | 8 +- .../docker/docker/api/types/types.go | 31 +- .../docker/docker/client/build_prune.go | 19 +- .../github.com/docker/docker/client/client.go | 22 +- .../github.com/docker/docker/client/hijack.go | 11 +- .../docker/docker/client/interface.go | 3 +- .../github.com/docker/docker/client/ping.go | 5 +- .../docker/docker/client/session.go | 2 +- .../docker/docker/pkg/idtools/idtools.go | 45 +- .../docker/docker/pkg/idtools/idtools_unix.go | 9 +- .../docker/pkg/idtools/idtools_windows.go | 10 +- .../docker/docker/pkg/symlink/LICENSE.APACHE | 2 +- .../docker/docker/pkg/symlink/LICENSE.BSD | 2 +- .../docker/docker/pkg/system/path_unix.go | 10 + .../docker/docker/pkg/system/path_windows.go | 24 + .../github.com/docker/docker/pkg/system/rm.go | 2 +- .../docker/pkg/system/syscall_windows.go | 72 +- .../docker/docker/pkg/term/term_windows.go | 7 - .../docker/docker/registry/service_v2.go | 4 +- .../go-connections/sockets/unix_socket.go | 92 +- vendor/github.com/genuinetools/pkg/cli/cli.go | 306 +- .../genuinetools/pkg/cli/version.go | 2 +- vendor/github.com/golang/protobuf/LICENSE | 3 - .../golang/protobuf/jsonpb/jsonpb.go | 60 +- .../golang/protobuf/proto/encode.go | 18 - .../github.com/golang/protobuf/proto/lib.go | 62 +- .../golang/protobuf/proto/properties.go | 16 +- .../golang/protobuf/proto/table_marshal.go | 190 +- .../golang/protobuf/proto/table_unmarshal.go | 146 +- .../github.com/golang/protobuf/proto/text.go | 4 +- .../golang/protobuf/proto/text_parser.go | 6 +- .../github.com/golang/protobuf/ptypes/any.go | 10 +- .../golang/protobuf/ptypes/any/any.pb.go | 2 +- .../protobuf/ptypes/duration/duration.pb.go | 4 +- .../protobuf/ptypes/struct/struct.pb.go | 52 +- .../protobuf/ptypes/timestamp/timestamp.pb.go | 4 +- .../grpc-gateway/runtime/context.go | 31 +- .../grpc-gateway/runtime/convert.go | 169 +- .../grpc-gateway/runtime/errors.go | 32 +- .../grpc-gateway/runtime/handler.go | 37 +- .../runtime/internal/stream_chunk.pb.go | 10 +- .../grpc-gateway/runtime/mux.go | 4 +- .../grpc-gateway/runtime/pattern.go | 27 +- .../grpc-gateway/runtime/proto_errors.go | 8 +- .../grpc-gateway/runtime/query.go | 41 +- .../client_golang/prometheus/collector.go | 33 + .../client_golang/prometheus/desc.go | 8 +- .../client_golang/prometheus/fnv.go | 13 + .../client_golang/prometheus/go_collector.go | 13 + .../client_golang/prometheus/histogram.go | 150 +- .../client_golang/prometheus/http.go | 31 +- .../prometheus/internal/metric.go | 85 + .../client_golang/prometheus/labels.go | 13 + .../client_golang/prometheus/metric.go | 56 +- .../prometheus/process_collector.go | 115 +- .../client_golang/prometheus/registry.go | 83 +- .../client_golang/prometheus/summary.go | 17 +- .../client_golang/prometheus/value.go | 12 +- .../client_golang/prometheus/wrap.go | 179 ++ .../prometheus/common/expfmt/text_parse.go | 2 +- .../httpfs/html/vfstemplate/vfstemplate.go | 73 + .../shurcooL/httpfs/path/vfspath/match.go | 105 + .../shurcooL/httpfs/vfsutil/file.go | 21 + .../shurcooL/httpfs/vfsutil/vfsutil.go | 39 + .../shurcooL/httpfs/vfsutil/walk.go | 146 + .../shurcooL/vfsgen/commentwriter.go | 45 + vendor/github.com/shurcooL/vfsgen/doc.go | 15 + .../github.com/shurcooL/vfsgen/generator.go | 485 +++ vendor/github.com/shurcooL/vfsgen/options.go | 45 + .../shurcooL/vfsgen/stringwriter.go | 27 + vendor/github.com/sirupsen/logrus/entry.go | 26 +- vendor/github.com/sirupsen/logrus/exported.go | 20 +- .../github.com/sirupsen/logrus/formatter.go | 20 +- .../sirupsen/logrus/json_formatter.go | 12 +- vendor/github.com/sirupsen/logrus/logger.go | 16 +- .../sirupsen/logrus/text_formatter.go | 31 +- vendor/golang.org/x/net/http2/frame.go | 63 +- vendor/golang.org/x/net/http2/headermap.go | 20 +- .../golang.org/x/net/http2/hpack/huffman.go | 20 +- vendor/golang.org/x/net/http2/http2.go | 17 +- vendor/golang.org/x/net/http2/server.go | 17 +- .../golang.org/x/net/internal/socks/socks.go | 1 + vendor/golang.org/x/net/trace/trace.go | 8 + vendor/golang.org/x/sys/unix/aliases.go | 14 + vendor/golang.org/x/sys/unix/constants.go | 2 +- vendor/golang.org/x/sys/unix/dev_aix_ppc.go | 37 + vendor/golang.org/x/sys/unix/dev_aix_ppc64.go | 39 + vendor/golang.org/x/sys/unix/dirent.go | 2 +- vendor/golang.org/x/sys/unix/env_unix.go | 2 +- vendor/golang.org/x/sys/unix/gccgo.go | 1 + vendor/golang.org/x/sys/unix/gccgo_c.c | 1 + vendor/golang.org/x/sys/unix/ioctl.go | 30 + .../golang.org/x/sys/unix/openbsd_pledge.go | 75 +- vendor/golang.org/x/sys/unix/pagesize_unix.go | 2 +- vendor/golang.org/x/sys/unix/race0.go | 2 +- vendor/golang.org/x/sys/unix/sockcmsg_unix.go | 2 +- vendor/golang.org/x/sys/unix/str.go | 2 +- vendor/golang.org/x/sys/unix/syscall.go | 2 +- vendor/golang.org/x/sys/unix/syscall_aix.go | 562 ++++ .../golang.org/x/sys/unix/syscall_aix_ppc.go | 34 + .../x/sys/unix/syscall_aix_ppc64.go | 34 + .../golang.org/x/sys/unix/syscall_darwin.go | 36 +- .../x/sys/unix/syscall_dragonfly.go | 4 +- .../golang.org/x/sys/unix/syscall_freebsd.go | 247 +- vendor/golang.org/x/sys/unix/syscall_linux.go | 79 +- .../x/sys/unix/syscall_linux_mipsx.go | 7 +- .../x/sys/unix/syscall_linux_ppc64x.go | 9 +- .../x/sys/unix/syscall_linux_riscv64.go | 212 ++ .../golang.org/x/sys/unix/syscall_netbsd.go | 16 +- .../golang.org/x/sys/unix/syscall_openbsd.go | 4 +- .../golang.org/x/sys/unix/syscall_solaris.go | 4 +- vendor/golang.org/x/sys/unix/syscall_unix.go | 2 +- vendor/golang.org/x/sys/unix/timestruct.go | 2 +- vendor/golang.org/x/sys/unix/types_aix.go | 229 ++ .../golang.org/x/sys/unix/types_dragonfly.go | 17 - vendor/golang.org/x/sys/unix/types_freebsd.go | 17 - vendor/golang.org/x/sys/unix/types_openbsd.go | 17 - vendor/golang.org/x/sys/unix/types_solaris.go | 17 - vendor/golang.org/x/sys/unix/xattr_bsd.go | 231 ++ .../golang.org/x/sys/unix/zerrors_aix_ppc.go | 1360 +++++++++ .../x/sys/unix/zerrors_aix_ppc64.go | 1361 +++++++++ .../x/sys/unix/zerrors_dragonfly_amd64.go | 32 +- .../x/sys/unix/zerrors_freebsd_386.go | 29 + .../x/sys/unix/zerrors_freebsd_amd64.go | 29 + .../x/sys/unix/zerrors_freebsd_arm.go | 29 + .../x/sys/unix/zerrors_linux_386.go | 40 +- .../x/sys/unix/zerrors_linux_amd64.go | 40 +- .../x/sys/unix/zerrors_linux_arm.go | 40 +- .../x/sys/unix/zerrors_linux_arm64.go | 40 +- .../x/sys/unix/zerrors_linux_mips.go | 39 +- .../x/sys/unix/zerrors_linux_mips64.go | 39 +- .../x/sys/unix/zerrors_linux_mips64le.go | 39 +- .../x/sys/unix/zerrors_linux_mipsle.go | 39 +- .../x/sys/unix/zerrors_linux_ppc64.go | 39 +- .../x/sys/unix/zerrors_linux_ppc64le.go | 39 +- .../x/sys/unix/zerrors_linux_riscv64.go | 2625 +++++++++++++++++ .../x/sys/unix/zerrors_linux_s390x.go | 40 +- .../x/sys/unix/zerrors_netbsd_386.go | 4 + .../x/sys/unix/zerrors_netbsd_amd64.go | 4 + .../x/sys/unix/zerrors_netbsd_arm.go | 4 + .../x/sys/unix/zerrors_openbsd_386.go | 28 + .../x/sys/unix/zerrors_openbsd_amd64.go | 29 + .../x/sys/unix/zerrors_openbsd_arm.go | 28 + .../x/sys/unix/zerrors_solaris_amd64.go | 35 + .../golang.org/x/sys/unix/zsyscall_aix_ppc.go | 1495 ++++++++++ .../x/sys/unix/zsyscall_aix_ppc64.go | 1495 ++++++++++ .../x/sys/unix/zsyscall_darwin_386.go | 57 + .../x/sys/unix/zsyscall_darwin_amd64.go | 57 + .../x/sys/unix/zsyscall_darwin_arm.go | 57 + .../x/sys/unix/zsyscall_darwin_arm64.go | 57 + .../x/sys/unix/zsyscall_freebsd_386.go | 6 +- .../x/sys/unix/zsyscall_freebsd_amd64.go | 6 +- .../x/sys/unix/zsyscall_freebsd_arm.go | 6 +- .../x/sys/unix/zsyscall_linux_386.go | 95 + .../x/sys/unix/zsyscall_linux_amd64.go | 95 + .../x/sys/unix/zsyscall_linux_arm.go | 95 + .../x/sys/unix/zsyscall_linux_arm64.go | 95 + .../x/sys/unix/zsyscall_linux_mips.go | 107 + .../x/sys/unix/zsyscall_linux_mips64.go | 95 + .../x/sys/unix/zsyscall_linux_mips64le.go | 95 + .../x/sys/unix/zsyscall_linux_mipsle.go | 107 + .../x/sys/unix/zsyscall_linux_ppc64.go | 115 +- .../x/sys/unix/zsyscall_linux_ppc64le.go | 115 +- .../x/sys/unix/zsyscall_linux_riscv64.go | 2114 +++++++++++++ .../x/sys/unix/zsyscall_linux_s390x.go | 95 + .../x/sys/unix/zsyscall_netbsd_386.go | 214 ++ .../x/sys/unix/zsyscall_netbsd_amd64.go | 214 ++ .../x/sys/unix/zsyscall_netbsd_arm.go | 214 ++ .../x/sys/unix/zsysnum_freebsd_386.go | 736 ++--- .../x/sys/unix/zsysnum_freebsd_amd64.go | 736 ++--- .../x/sys/unix/zsysnum_freebsd_arm.go | 736 ++--- .../x/sys/unix/zsysnum_linux_386.go | 2 + .../x/sys/unix/zsysnum_linux_amd64.go | 2 + .../x/sys/unix/zsysnum_linux_arm.go | 1 + .../x/sys/unix/zsysnum_linux_arm64.go | 1 + .../x/sys/unix/zsysnum_linux_mips.go | 2 + .../x/sys/unix/zsysnum_linux_mips64.go | 2 + .../x/sys/unix/zsysnum_linux_mips64le.go | 2 + .../x/sys/unix/zsysnum_linux_mipsle.go | 2 + .../x/sys/unix/zsysnum_linux_ppc64.go | 2 + .../x/sys/unix/zsysnum_linux_ppc64le.go | 2 + .../x/sys/unix/zsysnum_linux_riscv64.go | 286 ++ .../x/sys/unix/zsysnum_linux_s390x.go | 2 + .../x/sys/unix/zsysnum_openbsd_amd64.go | 1 + .../golang.org/x/sys/unix/ztypes_aix_ppc.go | 306 ++ .../golang.org/x/sys/unix/ztypes_aix_ppc64.go | 313 ++ .../x/sys/unix/ztypes_dragonfly_amd64.go | 17 - .../x/sys/unix/ztypes_freebsd_386.go | 17 - .../x/sys/unix/ztypes_freebsd_amd64.go | 17 - .../x/sys/unix/ztypes_freebsd_arm.go | 17 - .../golang.org/x/sys/unix/ztypes_linux_386.go | 37 + .../x/sys/unix/ztypes_linux_amd64.go | 39 + .../golang.org/x/sys/unix/ztypes_linux_arm.go | 38 + .../x/sys/unix/ztypes_linux_arm64.go | 39 + .../x/sys/unix/ztypes_linux_mips.go | 38 + .../x/sys/unix/ztypes_linux_mips64.go | 39 + .../x/sys/unix/ztypes_linux_mips64le.go | 39 + .../x/sys/unix/ztypes_linux_mipsle.go | 38 + .../x/sys/unix/ztypes_linux_ppc64.go | 39 + .../x/sys/unix/ztypes_linux_ppc64le.go | 39 + .../x/sys/unix/ztypes_linux_riscv64.go | 1919 ++++++++++++ .../x/sys/unix/ztypes_linux_s390x.go | 39 + .../x/sys/unix/ztypes_openbsd_386.go | 17 - .../x/sys/unix/ztypes_openbsd_amd64.go | 17 - .../x/sys/unix/ztypes_openbsd_arm.go | 17 - .../x/sys/unix/ztypes_solaris_amd64.go | 17 - vendor/golang.org/x/sys/windows/aliases.go | 13 + .../x/sys/windows/syscall_windows.go | 60 +- .../golang.org/x/sys/windows/types_windows.go | 111 +- .../api/annotations/annotations.pb.go | 18 +- .../googleapis/api/annotations/http.pb.go | 130 +- .../googleapis/rpc/status/status.pb.go | 22 +- vendor/google.golang.org/grpc/balancer.go | 25 - .../grpc/balancer/balancer.go | 6 +- vendor/google.golang.org/grpc/call.go | 33 +- vendor/google.golang.org/grpc/clientconn.go | 635 +--- .../grpc/credentials/credentials.go | 77 +- .../{credentials_util_pre_go17.go => go16.go} | 0 .../{credentials_util_go17.go => go17.go} | 3 +- .../{credentials_util_go18.go => go18.go} | 8 + .../grpc/credentials/go19.go | 35 + vendor/google.golang.org/grpc/dialoptions.go | 453 +++ vendor/google.golang.org/grpc/go16.go | 7 +- vendor/google.golang.org/grpc/go17.go | 7 +- .../grpc/internal/channelz/types.go | 7 +- .../grpc/internal/channelz/types_linux.go | 53 + .../grpc/internal/channelz/types_nonlinux.go | 38 + .../grpc/internal/channelz/util_linux_go19.go | 39 + .../channelz/util_nonlinux_pre_go19.go | 26 + .../{ => internal/envconfig}/envconfig.go | 14 +- .../grpc/internal/internal.go | 8 - .../{ => internal}/transport/bdp_estimator.go | 0 .../{ => internal}/transport/controlbuf.go | 92 +- .../grpc/internal/transport/defaults.go | 49 + .../{ => internal}/transport/flowcontrol.go | 24 - .../grpc/{ => internal}/transport/go16.go | 11 +- .../grpc/{ => internal}/transport/go17.go | 11 +- .../transport/handler_server.go | 22 +- .../{ => internal}/transport/http2_client.go | 205 +- .../{ => internal}/transport/http2_server.go | 208 +- .../{ => internal}/transport/http_util.go | 59 +- .../grpc/{ => internal}/transport/log.go | 6 - .../{ => internal}/transport/transport.go | 98 +- .../google.golang.org/grpc/picker_wrapper.go | 160 +- .../grpc/resolver/dns/dns_resolver.go | 54 +- .../grpc/resolver/resolver.go | 8 +- vendor/google.golang.org/grpc/rpc_util.go | 45 +- vendor/google.golang.org/grpc/server.go | 169 +- .../google.golang.org/grpc/service_config.go | 149 +- .../grpc/stickiness_linkedmap.go | 97 - vendor/google.golang.org/grpc/stream.go | 698 +++-- vendor/google.golang.org/grpc/version.go | 2 +- 288 files changed, 25331 insertions(+), 4170 deletions(-) rename internal/binutils/{ => static}/static.go (99%) create mode 100644 internal/binutils/templates/templates.go create mode 100644 vendor/github.com/docker/docker/pkg/system/path_unix.go create mode 100644 vendor/github.com/docker/docker/pkg/system/path_windows.go create mode 100644 vendor/github.com/prometheus/client_golang/prometheus/internal/metric.go create mode 100644 vendor/github.com/prometheus/client_golang/prometheus/wrap.go create mode 100644 vendor/github.com/shurcooL/httpfs/html/vfstemplate/vfstemplate.go create mode 100644 vendor/github.com/shurcooL/httpfs/path/vfspath/match.go create mode 100644 vendor/github.com/shurcooL/httpfs/vfsutil/file.go create mode 100644 vendor/github.com/shurcooL/httpfs/vfsutil/vfsutil.go create mode 100644 vendor/github.com/shurcooL/httpfs/vfsutil/walk.go create mode 100644 vendor/github.com/shurcooL/vfsgen/commentwriter.go create mode 100644 vendor/github.com/shurcooL/vfsgen/doc.go create mode 100644 vendor/github.com/shurcooL/vfsgen/generator.go create mode 100644 vendor/github.com/shurcooL/vfsgen/options.go create mode 100644 vendor/github.com/shurcooL/vfsgen/stringwriter.go create mode 100644 vendor/golang.org/x/sys/unix/aliases.go create mode 100644 vendor/golang.org/x/sys/unix/dev_aix_ppc.go create mode 100644 vendor/golang.org/x/sys/unix/dev_aix_ppc64.go create mode 100644 vendor/golang.org/x/sys/unix/ioctl.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_aix.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_aix_ppc.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go create mode 100644 vendor/golang.org/x/sys/unix/types_aix.go create mode 100644 vendor/golang.org/x/sys/unix/xattr_bsd.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_aix_ppc.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_aix_ppc64.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_aix_ppc.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go create mode 100644 vendor/golang.org/x/sys/windows/aliases.go rename vendor/google.golang.org/grpc/credentials/{credentials_util_pre_go17.go => go16.go} (100%) rename vendor/google.golang.org/grpc/credentials/{credentials_util_go17.go => go17.go} (98%) rename vendor/google.golang.org/grpc/credentials/{credentials_util_go18.go => go18.go} (65%) create mode 100644 vendor/google.golang.org/grpc/credentials/go19.go create mode 100644 vendor/google.golang.org/grpc/dialoptions.go create mode 100644 vendor/google.golang.org/grpc/internal/channelz/types_linux.go create mode 100644 vendor/google.golang.org/grpc/internal/channelz/types_nonlinux.go create mode 100644 vendor/google.golang.org/grpc/internal/channelz/util_linux_go19.go create mode 100644 vendor/google.golang.org/grpc/internal/channelz/util_nonlinux_pre_go19.go rename vendor/google.golang.org/grpc/{ => internal/envconfig}/envconfig.go (70%) rename vendor/google.golang.org/grpc/{ => internal}/transport/bdp_estimator.go (100%) rename vendor/google.golang.org/grpc/{ => internal}/transport/controlbuf.go (81%) create mode 100644 vendor/google.golang.org/grpc/internal/transport/defaults.go rename vendor/google.golang.org/grpc/{ => internal}/transport/flowcontrol.go (86%) rename vendor/google.golang.org/grpc/{ => internal}/transport/go16.go (77%) rename vendor/google.golang.org/grpc/{ => internal}/transport/go17.go (78%) rename vendor/google.golang.org/grpc/{ => internal}/transport/handler_server.go (96%) rename vendor/google.golang.org/grpc/{ => internal}/transport/http2_client.go (87%) rename vendor/google.golang.org/grpc/{ => internal}/transport/http2_server.go (87%) rename vendor/google.golang.org/grpc/{ => internal}/transport/http_util.go (89%) rename vendor/google.golang.org/grpc/{ => internal}/transport/log.go (90%) rename vendor/google.golang.org/grpc/{ => internal}/transport/transport.go (90%) delete mode 100644 vendor/google.golang.org/grpc/stickiness_linkedmap.go diff --git a/.travis.yml b/.travis.yml index a4884838..a89191bd 100644 --- a/.travis.yml +++ b/.travis.yml @@ -11,7 +11,7 @@ jobs: include: - script: - make fmt lint staticcheck vet install - - DOCKER_API_VERSION=1.37 make dind dtest + - DOCKER_API_VERSION=1.38 make dind dtest - stage: Build Release script: - make release diff --git a/Dockerfile b/Dockerfile index 7d6bcedc..f8b8cd25 100644 --- a/Dockerfile +++ b/Dockerfile @@ -28,9 +28,6 @@ FROM scratch COPY --from=builder /usr/bin/reg /usr/bin/reg COPY --from=builder /etc/ssl/certs/ /etc/ssl/certs -COPY server/static /src/static -COPY server/templates /src/templates - WORKDIR /src ENTRYPOINT [ "reg" ] diff --git a/Gopkg.lock b/Gopkg.lock index 3a03209c..aa563a62 100644 --- a/Gopkg.lock +++ b/Gopkg.lock @@ -13,12 +13,12 @@ revision = "d6e3b3328b783f23731bc4d058875b0371ff8109" [[projects]] - digest = "1:52200fa7808b1ee999b1f5a8daf19a6c79b6e2077956125f55c100e633d8bde3" + digest = "1:2be791e7b333ff7c06f8fb3dc18a7d70580e9399dbdffd352621d067ff260b6e" name = "github.com/Microsoft/go-winio" packages = ["."] pruneopts = "NUT" - revision = "67921128fb397dd80339870d2193d6b1e6856fd4" - version = "v0.4.8" + revision = "97e4973ce50b2ff5f09635a57e2b88a037aae829" + version = "v0.4.11" [[projects]] branch = "master" @@ -38,11 +38,11 @@ [[projects]] branch = "master" - digest = "1:fc8dbcc2a5de7c093e167828ebbdf551641761d2ad75431d3a167d467a264115" + digest = "1:4a029051269e04c040c092eb4ddd92732f8f3a3921a8b43b82b30804e00f3357" name = "github.com/containerd/continuity" packages = ["pathdriver"] pruneopts = "NUT" - revision = "0377f7d767206f3a9e8881d0f02267b0d89c7a62" + revision = "c2ac4ecc959316e616c37fd95143e972811bd12e" [[projects]] branch = "master" @@ -59,7 +59,7 @@ [[projects]] branch = "master" - digest = "1:30aa048f2c90ef2d0568cce07cb8afbaeabbec3ccd75f99d22864039c273bcc8" + digest = "1:3d253a76fba28c8ed28b517fd89b362b4e0116d05833023bcc987111b5aa9b15" name = "github.com/docker/cli" packages = [ "cli/config/configfile", @@ -67,11 +67,11 @@ "opts", ] pruneopts = "NUT" - revision = "b395d2d6f5eec2c047e6bba4a3fd941d5757d725" + revision = "b4180e8757e9d5f9b38813e10c4f4a1c0f6643b5" [[projects]] branch = "master" - digest = "1:f8b9eb707f84a5f01f1537f2086962590855bb63a616eb35c02c437f60431018" + digest = "1:1aed2b27277a9c4a2b3b40abf3e0484704a35482f24a804e7791c5172dcbf323" name = "github.com/docker/distribution" packages = [ ".", @@ -92,11 +92,11 @@ "registry/storage/cache/memory", ] pruneopts = "NUT" - revision = "749f6afb4572201e3c37325d0ffedb6f32be8950" + revision = "b089e91688254eb5aef187f188c8ee0ebe4e4675" [[projects]] branch = "master" - digest = "1:f8ac8d8219f7afe01d3821f3ed2327af7263390227369456c2a603f8659e88d3" + digest = "1:29566f3fa9f66bf12978baba01329b29da05526cace5c15a74e1a61f7f3a4381" name = "github.com/docker/docker" packages = [ "api", @@ -132,15 +132,15 @@ "registry/resumable", ] pruneopts = "NUT" - revision = "492545e139e7461aac044149a931bb4b2dd48f75" + revision = "ed392603acbf7849aa68d760c67d9c645ac035d8" [[projects]] branch = "master" - digest = "1:3d29840a1e0fee12b70d874896b3c4f63507049e2dac83a066b583ff513c67bf" + digest = "1:961fe5dd401b2284aff5141c1076e6a5cce10fcf2e6440b79bb7e2ea353d1c01" name = "github.com/docker/docker-ce" packages = ["components/cli/cli/config"] pruneopts = "NUT" - revision = "2ec1cede27a3dc04c44f8ed2feb1efb00c724d63" + revision = "d156a93844295ae887439d37031e71737db7b5e0" [[projects]] digest = "1:8866486038791fe65ea1abf660041423954b1f3fb99ea6a0ad8424422e943458" @@ -155,7 +155,7 @@ [[projects]] branch = "master" - digest = "1:2a47f7eb1a2c30428d1ee6808cb66d4deb17e68a3e55d696f03c8068552ba5e8" + digest = "1:42cfcc9461365aacb806b9cfe929c926f0d3fb0f692bfc10c375872f2881b2f2" name = "github.com/docker/go-connections" packages = [ "nat", @@ -163,7 +163,7 @@ "tlsconfig", ] pruneopts = "NUT" - revision = "7395e3f8aa162843a74ed6d48e79627d9792ac55" + revision = "97c2040d34dfae1d1b1275fa3a78dbdd2f41cf7e" [[projects]] branch = "master" @@ -199,22 +199,22 @@ [[projects]] branch = "master" - digest = "1:26bac590d2ee7a8ace363d3b8f84e3f790e732470ba54995c9bf722827fc96c4" + digest = "1:bd228d1a02fffcaf3abca973886870113d843ea7a67d5b6f70a5169950499ea9" name = "github.com/genuinetools/pkg" packages = ["cli"] pruneopts = "NUT" - revision = "3654fc151753f8cd41b366e0c15b9fa070890ddf" + revision = "1c141f661797b5fb22033c9a7a5ab004994a0404" [[projects]] digest = "1:38e684375ef5b55e812332266d63f9fc5b6329ab303067c4cdda051db6d29ca4" name = "github.com/gogo/protobuf" packages = ["proto"] pruneopts = "NUT" - revision = "7d68e886eac4f7e34d0d82241a6273d6c304c5cf" - version = "v1.1.0" + revision = "636bf0302bc95575d69441b25a2603156ffdddf1" + version = "v1.1.1" [[projects]] - digest = "1:6aef947ba53156da1a66ee891d70d61835e0dcfc9f0d728ae1132db651e81c22" + digest = "1:9b117ac202b9de210a7093bca0c29d0d2424e4c9235c9e025ae0d6ef6b121c82" name = "github.com/golang/protobuf" packages = [ "jsonpb", @@ -227,8 +227,8 @@ "ptypes/timestamp", ] pruneopts = "NUT" - revision = "b4deda0973fb4c70b50d226b1af49f3da59f5265" - version = "v1.1.0" + revision = "aa810b61a9c79d51363740d207bb46cf8e620ed5" + version = "v1.2.0" [[projects]] digest = "1:2e3c336fc7fde5c984d2841455a658a6d626450b1754a854b3b32e7a8f49a07a" @@ -260,7 +260,7 @@ version = "v1.6.2" [[projects]] - digest = "1:5c3363169fc963321cd0789dda2ddff90562817d277e78011b0e1bbf51a6b473" + digest = "1:228dfa88f068306d5d23fb3efac8e61b868e1d327aac6eebc21f0f15b03e44e4" name = "github.com/grpc-ecosystem/grpc-gateway" packages = [ "runtime", @@ -268,8 +268,8 @@ "utilities", ] pruneopts = "NUT" - revision = "92583770e3f01b09a0d3e9bdf64321d8bebd48f2" - version = "v1.4.1" + revision = "8558711daa6c2853489043207b563dceacbc19cf" + version = "v1.5.0" [[projects]] digest = "1:5985ef4caf91ece5d54817c11ea25f182697534f8ae6521eadcd628c142ac4b6" @@ -280,12 +280,12 @@ version = "v1.0.1" [[projects]] - branch = "master" digest = "1:9f63926f52745d1f9d6053f8fbbb3bd3983c2c97c0565957e682b8d2f7aad3af" name = "github.com/mitchellh/go-wordwrap" packages = ["."] pruneopts = "NUT" - revision = "ad45545899c7b13c020ea92b2072220eefad42b8" + revision = "9e67c67572bc5dd02aef930e2b0ae3c02a4b5a5c" + version = "v1.0.0" [[projects]] branch = "master" @@ -332,14 +332,15 @@ [[projects]] branch = "master" - digest = "1:f434beb84b411972e928573deaf8776680c5359d2c6859720a86fc23fe06d27c" + digest = "1:cfa8aa49949ef9e612512736234abd8023cffd7bc76865afcfeec9846b246daf" name = "github.com/prometheus/client_golang" packages = [ "prometheus", + "prometheus/internal", "prometheus/promhttp", ] pruneopts = "NUT" - revision = "bcbbc08eb2ddff3af83bbf11e7ec13b4fd730b6e" + revision = "e637cec7d9c8990247098639ebc6d43dd34ddd49" [[projects]] branch = "master" @@ -351,7 +352,7 @@ [[projects]] branch = "master" - digest = "1:768b555b86742de2f28beb37f1dedce9a75f91f871d75b5717c96399c1a78c08" + digest = "1:fad5a35eea6a1a33d6c8f949fbc146f24275ca809ece854248187683f52cc30b" name = "github.com/prometheus/common" packages = [ "expfmt", @@ -359,7 +360,7 @@ "model", ] pruneopts = "NUT" - revision = "7600349dcfe1abd18d72d3a1770870d9800a7801" + revision = "c7de2306084e37d54b8be01f3541a8464345e9a5" [[projects]] branch = "master" @@ -372,15 +373,35 @@ "xfs", ] pruneopts = "NUT" - revision = "ae68e2d4c00fed4943b5f6698d504a5fe083da8a" + revision = "05ee40e3a273f7245e8777337fc7b46e533a9a92" [[projects]] - digest = "1:6989062eb7ccf25cf38bf4fe3dba097ee209f896cda42cefdca3927047bef7b6" + branch = "master" + digest = "1:25eadade1fa09cbada860b0f17e559a40b97feea133ff73d8d6451be5df6d9a4" + name = "github.com/shurcooL/httpfs" + packages = [ + "html/vfstemplate", + "path/vfspath", + "vfsutil", + ] + pruneopts = "NUT" + revision = "809beceb23714880abc4a382a00c05f89d13b1cc" + +[[projects]] + branch = "master" + digest = "1:43c44ab8b001881225afe48c6aedcf2dd4f93495efd4586d1649c9dc2c7c7eaa" + name = "github.com/shurcooL/vfsgen" + packages = ["."] + pruneopts = "NUT" + revision = "33ae1944be3fe078a54c597f107e0867da19c713" + +[[projects]] + digest = "1:b2339e83ce9b5c4f79405f949429a7f68a9a904fed903c672aac1e7ceb7f5f02" name = "github.com/sirupsen/logrus" packages = ["."] pruneopts = "NUT" - revision = "c155da19408a8799da419ed3eeb0cb5db0ad5dbc" - version = "v1.0.5" + revision = "3e01752db0189b9157070a0e1668a620f9a85da2" + version = "v1.0.6" [[projects]] branch = "master" @@ -388,11 +409,11 @@ name = "golang.org/x/crypto" packages = ["ssh/terminal"] pruneopts = "NUT" - revision = "a49355c7e3f8fe157a85be2f77e6e269a0f89602" + revision = "0e37d006457bf46f9e6692014ba72ef82c33022c" [[projects]] branch = "master" - digest = "1:fef55c9d9f298ab9816a672db63040c2de40d7895de3b8ee74e53979f433b93e" + digest = "1:8f96a3abd7277a1f433c5b7036c00f21188fd6a36ff1e8c9c1681ab14476e192" name = "golang.org/x/net" packages = [ "context", @@ -407,18 +428,18 @@ "trace", ] pruneopts = "NUT" - revision = "d0887baf81f4598189d4e12a37c6da86f0bba4d0" + revision = "26e67e76b6c3f6ce91f7c52def5af501b4e0f3a2" [[projects]] branch = "master" - digest = "1:5420733d35e5e562fffc7c5b99660f3587af042b5420f19b17fe0426e6a5259d" + digest = "1:581828cee9f0d31195c1ae52ea8935dfaec395cee6c23adc02109b892b391c2e" name = "golang.org/x/sys" packages = [ "unix", "windows", ] pruneopts = "NUT" - revision = "ac767d655b305d4e9612f5f6e33120b9176c4ad4" + revision = "d0be0721c37eeb5299f245a996a483160fc36940" [[projects]] digest = "1:e7071ed636b5422cc51c0e3a6cebc229d6c9fffc528814b519a980641422d619" @@ -445,17 +466,17 @@ [[projects]] branch = "master" - digest = "1:eff11a4ed88d9d3e28dd697961c550af1c4d0d3dccdc6252715b9a65a1d541bb" + digest = "1:42448f154e7d40907ae03cbdf99dbcfa3feb927c4521e0f01c52c6142e4891d5" name = "google.golang.org/genproto" packages = [ "googleapis/api/annotations", "googleapis/rpc/status", ] pruneopts = "NUT" - revision = "e92b116572682a5b432ddd840aeaba2a559eeff1" + revision = "4b56f30a1fd96a133a036b62cdd2a249883dd89b" [[projects]] - digest = "1:d0e5846da58e4e20d1bbd7502b24f31d37e3ac1e02a9042d95bd93c2d0c139dd" + digest = "1:5b805b8e03b29399b344655cac16873f026e54dc0a7c17b381f6f4d4c7b6d741" name = "google.golang.org/grpc" packages = [ ".", @@ -471,7 +492,9 @@ "internal", "internal/backoff", "internal/channelz", + "internal/envconfig", "internal/grpcrand", + "internal/transport", "keepalive", "metadata", "naming", @@ -482,11 +505,10 @@ "stats", "status", "tap", - "transport", ] pruneopts = "NUT" - revision = "168a6198bcb0ef175f7dacec0b8691fc141dc9b8" - version = "v1.13.0" + revision = "8dea3dc473e90c8179e519d91302d0597c0ca1d1" + version = "v1.15.0" [solve-meta] analyzer-name = "dep" @@ -510,6 +532,8 @@ "github.com/mitchellh/go-wordwrap", "github.com/opencontainers/go-digest", "github.com/peterhellberg/link", + "github.com/shurcooL/httpfs/html/vfstemplate", + "github.com/shurcooL/vfsgen", "github.com/sirupsen/logrus", "google.golang.org/grpc", ] diff --git a/Gopkg.toml b/Gopkg.toml index a4852eac..1e81c559 100644 --- a/Gopkg.toml +++ b/Gopkg.toml @@ -63,3 +63,11 @@ [[override]] name = "github.com/prometheus/client_golang" branch = "master" + +[[constraint]] + name = "github.com/shurcooL/vfsgen" + branch = "master" + +[[constraint]] + name = "github.com/shurcooL/httpfs" + branch = "master" diff --git a/internal/binutils/generate.go b/internal/binutils/generate.go index 8a08749b..402a7cff 100644 --- a/internal/binutils/generate.go +++ b/internal/binutils/generate.go @@ -16,10 +16,20 @@ func main() { if err != nil { logrus.Fatal(err) } + // Generate server assets. assets := http.Dir(filepath.Join(wd, "server/static")) if err := vfsgen.Generate(assets, vfsgen.Options{ - Filename: filepath.Join(wd, "internal/binutils", "static.go"), - PackageName: "binutils", + Filename: filepath.Join(wd, "internal/binutils/static", "static.go"), + PackageName: "static", + VariableName: "Assets", + }); err != nil { + logrus.Fatal(err) + } + // Generate template assets. + assets = http.Dir(filepath.Join(wd, "server/templates")) + if err := vfsgen.Generate(assets, vfsgen.Options{ + Filename: filepath.Join(wd, "internal/binutils/templates", "templates.go"), + PackageName: "templates", VariableName: "Assets", }); err != nil { logrus.Fatal(err) diff --git a/internal/binutils/static.go b/internal/binutils/static/static.go similarity index 99% rename from internal/binutils/static.go rename to internal/binutils/static/static.go index c79206c8..df32c493 100644 --- a/internal/binutils/static.go +++ b/internal/binutils/static/static.go @@ -1,6 +1,6 @@ // Code generated by vfsgen; DO NOT EDIT. -package binutils +package static import ( "bytes" @@ -19,86 +19,86 @@ var Assets = func() http.FileSystem { fs := vfsgen۰FS{ "/": &vfsgen۰DirInfo{ name: "/", - modTime: time.Date(2018, 8, 19, 14, 21, 17, 476526885, time.UTC), + modTime: time.Date(2018, 9, 10, 21, 40, 58, 711425774, time.UTC), }, "/css": &vfsgen۰DirInfo{ name: "css", - modTime: time.Date(2018, 8, 19, 14, 21, 17, 476526885, time.UTC), + modTime: time.Date(2018, 9, 10, 21, 40, 58, 711425774, time.UTC), }, "/css/bootstrap-theme.css": &vfsgen۰CompressedFileInfo{ name: "bootstrap-theme.css", - modTime: time.Date(2018, 8, 19, 14, 21, 17, 476526885, time.UTC), + modTime: time.Date(2018, 9, 10, 21, 40, 58, 711425774, time.UTC), uncompressedSize: 26045, compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x5c\x5b\x6f\xe3\xb8\x15\x7e\xcf\xaf\x60\xb1\x18\x4c\xb2\xb0\x65\x59\xb6\x7c\x5b\xcc\xb4\xe8\x74\xb1\x18\x60\xb7\x2f\x9d\x87\x02\x45\x1f\x28\x91\x72\xd4\xb5\x25\x41\xa2\x13\x4f\x8b\xfc\xf7\x42\x24\x65\x8b\x12\x49\x51\x94\x3c\xc9\x00\x1b\xed\x25\xa6\xe8\xf3\x1d\xf2\x1c\x7e\xbc\x9c\xc3\xcc\x7e\xfc\xd3\x1d\xf8\x11\xfc\x35\x4d\x49\x41\x72\x98\x81\xa7\x85\xb3\x70\xd6\xe0\xfe\x91\x90\x6c\x37\x9b\xed\x31\x09\xaa\x77\x4e\x98\x1e\x1f\xca\xda\x9f\xd2\xec\x6b\x1e\xef\x1f\x09\xf0\xdc\xf9\x7c\xea\xb9\xf3\x35\xf8\xf2\x1c\x13\x82\xf3\x09\xf8\x9c\x84\x4e\x59\xe9\xd7\x38\xc4\x49\x81\x11\x38\x25\x08\xe7\xe0\xb7\xcf\x5f\x98\xd0\xa2\x94\x1a\x93\xc7\x53\x50\xca\x9b\x91\xe7\xa0\x98\x5d\x20\x66\xc1\x21\x0d\x66\x47\x58\x10\x9c\xcf\x7e\xfd\xfc\xe9\xe7\xbf\xff\xe3\xe7\x12\x72\x76\x77\xc7\x35\xfd\x05\x27\x38\x87\xa4\x94\x5b\xc4\xc9\x1e\x90\x47\x5c\xd3\xfe\xd3\xa9\x20\xe9\x31\xfe\x2f\xce\x6b\x60\x8d\x26\xcc\xc2\xaa\xd2\xec\xcf\x31\xfa\xe0\x2f\x96\x0b\xbc\x0d\x03\xbc\x0a\x82\xf5\xca\x87\x78\xe9\xba\x5b\x2f\x58\xae\x30\xdc\x2e\x97\xc8\xe7\x2d\x4e\xa2\x78\x0f\x0a\xf8\x84\x11\x20\x29\x08\xe9\x67\xe7\x3f\x45\x9a\x00\x98\x20\x70\x6d\x58\x41\x9c\x5a\xeb\xba\x84\xd3\xa6\x8d\x64\x83\xd5\xcd\x6d\xe0\x04\x24\x99\x22\x1c\xc1\xd3\x81\x4c\xd8\xa7\x2c\x8f\x8f\x30\xff\xca\x3f\x15\xa7\x30\xc4\x45\xc1\x3f\xc5\x49\x94\xf2\x5f\x9f\x61\x9e\xc4\xc9\x9e\x7f\x42\x30\xd9\xe3\x1c\xfc\xef\x0e\x00\x82\xcf\x64\x5a\x3c\x42\x94\x3e\xef\x80\x0b\xa6\xf3\xec\x0c\x5c\x90\xef\x03\x78\xef\x4e\x00\xff\xc7\xf1\x1e\x7e\xba\x03\x60\xfa\x8c\x83\xdf\x63\x32\x0d\xd2\xf3\xe5\x2b\x71\x52\x60\x02\x5c\x50\xfb\x9e\xe7\xfb\x13\x70\xfd\x8f\xeb\xcc\xfd\x87\x09\xaf\x52\xfe\xdb\x14\xee\xae\x7d\x2a\xfe\x26\x62\x5f\x84\x4e\xdb\xc1\x90\xc4\x4f\x58\xec\x3b\xb1\x90\x77\xa1\x58\x58\xf6\xa4\x58\xc2\x3b\x54\x2c\x64\xfd\xda\x28\x63\xc8\x8e\x0c\xd9\x91\x21\x3b\x2d\x64\x47\x86\xec\x48\x90\x79\x19\x35\xac\xce\x58\x8b\xec\x0c\x7c\x49\x97\xcd\x3d\xb5\x25\xf4\xdf\x11\xbb\xd9\x41\x71\x01\x83\x03\x46\x8d\xe6\x36\x8a\xab\x06\x37\x8a\x69\x93\x1b\x65\x55\xa3\x1b\xc5\xbc\xd9\xcd\x52\xa6\xc5\xbf\xaa\xe2\x7f\x8b\x6a\xb4\xca\xb9\x1e\xad\xf2\x52\x91\x56\x21\xd7\xa4\x55\xce\x54\xa9\x17\x47\x31\x3e\xa0\x02\xd7\xf4\x00\xe2\x00\x56\x55\xb8\x8c\x69\x55\x85\xcb\x30\x57\x55\x60\x23\x5f\xf5\xf6\x42\x06\x4a\x0d\xaf\xfc\x20\x73\xa3\x24\x4d\x70\xd3\x4d\x58\x99\xe8\x06\xc0\x09\x20\xda\x37\x7c\x5e\x2c\xe4\x2d\x11\x0b\x4b\xed\xc5\x12\xae\xb1\x58\xc8\xb5\x64\x65\x6d\x32\xab\x6b\x24\x0c\xc9\xfa\x28\x09\x60\xf8\xfb\x3e\x4f\x4f\x09\x9a\xc6\x47\xb8\xc7\x8a\x86\xc8\xab\x56\x7d\x73\x88\x13\x0c\xf3\xe9\x3e\x87\x28\xc6\x09\xb9\x27\x69\x36\x01\x3f\x44\xf4\x07\xb8\xef\x26\xe0\x07\xec\x96\x0f\x98\xbb\xee\x3b\x36\xc0\xda\xb2\xd2\x71\xc4\x70\x95\x2e\x42\x98\xd0\x09\x38\xe0\x88\x00\x2a\x91\xfe\x16\xa4\x84\xa4\xc7\x09\x88\xf2\xf4\x78\xcf\x31\x1e\x26\x80\xa4\xf7\x1c\xe4\x41\x01\xd0\x56\xf2\x22\x4b\xab\x6a\x14\x1f\x08\xce\x77\x20\xcb\xd3\x7d\x8c\x76\x7f\xfb\xe7\xe7\x52\xde\x97\x1c\x26\x45\x94\xe6\x47\xe7\xb7\x38\xcc\xd3\x22\x8d\x88\x73\x11\x5d\x10\x98\x93\x4f\xe9\x21\xcd\x0b\x92\x7f\x78\xcf\xc5\x47\xd1\xfb\x09\xc0\x09\x12\x5e\x30\xb4\xf7\x13\xf0\x0b\xff\xf2\x97\xaf\x19\xfe\xe0\xda\x22\xe3\x84\x8e\x06\xf0\x01\x44\xf0\x50\xe0\x66\x57\xe4\x38\xc3\x90\xec\x00\xfb\xff\xf4\xcc\xc6\x42\x8e\x70\x3e\x0d\x4b\xad\x76\xe0\x07\x14\x94\xcf\x4f\xed\x09\x96\x4d\x68\x65\x5b\x24\xdf\x0a\xc3\xb0\x35\x63\x3d\xa6\x4f\x38\x17\x89\x6d\x17\xa5\xe1\xa9\x68\x3a\x65\x25\x84\xf5\x45\x43\xe5\x2c\x2d\x62\x12\xa7\x09\x9b\xe3\xfd\xec\xac\x9f\x19\xc5\x49\xcb\x00\x49\xde\x7a\xfd\xac\x20\xa1\xe9\x4e\xca\x94\xca\x93\xf5\xd1\x55\x42\xf5\xb6\x43\xb6\x4c\xc8\x15\x81\xf6\xb8\x12\x81\xbf\xed\x42\x90\x08\xb9\x20\x38\x5a\x04\xc7\x0c\x41\x26\xe4\xda\x06\x99\x85\x6b\x8d\xa8\x5e\x77\xb5\x42\xea\x28\x97\x66\xe8\x41\x1c\x43\x10\x73\xc7\xd3\xf3\x77\x35\xe7\xd8\xf0\xf7\x62\xb1\x86\xc1\x9a\xb1\x99\xb7\xf2\xe1\x66\x63\xc5\xdf\x3d\xc5\x58\xf1\x37\xc3\xe0\xfc\xcd\x40\x6c\xf8\x5b\xa7\xea\x28\xfc\xcd\x00\x24\xfc\xcd\xd0\xde\x10\x7f\x7b\x4b\xdf\xdf\xb8\x4d\x3f\x12\x38\xa2\x2a\xd3\x92\x31\x6b\x98\x31\x19\x4b\x77\x24\xe2\x66\xc1\x00\xc9\xa4\x29\x8a\x25\xba\x09\x19\x8b\x5b\xce\xa6\x3c\x59\x1f\x99\x93\xb1\xa6\xa3\xe5\x64\xdc\x46\xe8\xa0\x4a\xc1\x6c\x0a\x04\x47\x8b\xd0\x45\xc6\x95\x34\x1d\x82\xd4\xc2\x3d\xc8\x58\xeb\x28\x72\x32\x6e\xb7\xc3\x10\xc4\xdc\xf1\xf4\x64\x5c\xad\xf5\x6d\xc8\xd8\x0f\x83\x8d\x1f\x32\x6a\x5a\xce\xb7\xab\xe5\xdc\x8a\x8c\x7b\x8a\xb1\x22\x63\x86\xc1\xc9\x98\x81\xd8\x90\xb1\x4e\xd5\x51\xc8\x98\x01\x48\xc8\x98\xa1\xbd\x21\x32\x5e\xe0\x4d\xb4\x68\xf9\x91\xc0\x11\x55\x99\x96\x8c\x59\xc3\x8c\xc9\x58\x7a\x12\x24\x1e\xd2\x18\x20\x99\x34\x45\x71\x30\x62\x42\xc6\xe2\x89\x5f\x53\x9e\xac\x8f\xcc\xc9\x58\xd3\xd1\x72\x32\x6e\x23\x74\x50\xa5\x60\x36\x05\x82\xa3\x45\xe8\x22\xe3\x4a\x9a\x0e\x41\x6a\xe1\x1e\x64\xac\x75\x14\x39\x19\xb7\xdb\x61\x08\x62\xee\x78\x7a\x32\xa6\x67\x2c\x56\x4c\x1c\x84\x2e\xc2\x7c\x91\x08\x61\x80\x3c\x3b\x26\xee\x27\xc6\x8e\x89\x29\x46\xb5\x2c\xa6\x20\x56\x4c\xac\x51\x75\x1c\x26\xa6\x00\xb2\x65\x31\x45\x7b\x43\x4c\xec\x6d\xe0\x32\xdc\x0a\x4e\x24\xb0\x03\x2d\xd0\x2f\x88\x69\x93\x8c\x39\xb8\x7d\xf0\x5e\x3b\x10\x37\xc0\xe8\x54\x5f\x76\xf8\x6c\xc2\xbb\xb5\xd8\x8a\x20\xa6\xd5\x1d\xe6\x74\x2b\xed\x4d\x39\xd1\x36\x04\x77\x70\xe0\xd5\x2a\x32\xc1\x8e\x5a\x70\x17\xb9\x52\x39\x4a\xc1\x6d\xbb\xf5\xe0\x54\x85\xe1\xe5\x6c\xda\xd0\xda\x44\xb6\xb9\x0b\xe9\x79\xb4\x3a\x99\xb6\x3a\x21\x76\x21\x5a\x72\x62\xc1\xc1\x76\x31\x5f\xd9\x9d\x10\xf7\x13\x63\x77\x42\x4c\x31\xaa\x13\x62\x0a\x62\x75\x42\xac\x51\x75\x9c\x13\x62\x0a\x20\x3b\x21\xa6\x68\x6f\x88\x4a\xf1\x62\x83\xe6\x8b\xa6\x1f\x09\xe3\xbf\x2a\xd3\x1f\xf7\xd2\x86\x19\x13\xaa\x34\x6e\x29\x86\x14\x0d\x90\x4c\x9a\xa2\x08\xe1\x99\x90\xab\x18\xad\x6e\xca\x93\xf5\x91\x39\xcb\x6a\x3a\x5a\xce\xb5\x6d\x84\x0e\x56\x14\xcc\xa6\x40\x70\xb4\x08\x5d\xbc\x5b\x49\xd3\x21\x48\x2d\xdc\x83\x80\xb5\x8e\x22\xa7\xe1\x76\x3b\x0c\x41\xcc\x1d\xaf\x23\x5c\x77\x8d\x5b\xf6\xe5\x62\xb4\xf5\x17\x4b\x1e\xbb\x0a\xe7\x1e\xf6\xa0\x15\x17\xf7\x14\x63\xc5\xc5\x0c\x83\x73\x31\x03\xb1\xe1\x62\x9d\xaa\xa3\x70\x31\x03\x90\x70\x31\x43\x7b\x43\x5c\x1c\x6c\xbd\xd0\xdb\x34\xdc\x48\x0c\x08\xb1\x22\x2d\x13\xb3\x66\x99\x07\xde\x64\xc9\x22\xad\x34\x0e\x3d\x8e\x41\x33\xe4\x29\x13\x46\x41\x37\x5a\x53\x9e\x69\x21\xe9\x9c\x1e\x11\x37\x55\xff\x2a\xe2\x6d\x4d\xf1\x5d\xc1\xb0\x9a\xad\xe4\xe2\x1d\x9d\xf8\xce\x58\x1b\x93\xa5\x11\x2f\xb3\x69\x9f\x40\x9b\xda\x31\x14\x61\xb6\x66\x0b\xcc\x10\xcc\xdd\x4c\xcd\xba\xe4\xf1\x74\x0c\x12\x18\x1f\x26\x77\x4e\x7c\xdc\x4f\x2f\x9f\x95\xc9\x23\x2c\x04\xee\x19\xe6\x81\x75\xd5\x7e\xb9\x73\x50\x9e\x66\x28\x7d\x4e\xa6\x47\x9c\x9c\xc0\x47\x70\x88\xc1\x47\x00\x2f\xde\xa5\x78\x2d\x1d\xc9\x66\xab\x76\xbf\x7c\xf8\x1a\x76\x53\x3e\x76\xab\xf6\x7e\x62\xec\x56\xed\x14\xa3\x5a\xb5\x53\x10\xab\x55\xbb\x99\xaa\x32\xa2\x1d\x67\x51\x4f\xf1\x65\x8b\x7a\xaa\x8c\x7c\x22\x91\xad\x23\x68\x75\xa9\xd3\x54\x63\xe1\x23\x80\x12\x9f\xa9\xbd\x55\xfa\x55\xbd\x8e\xbd\x73\x09\x21\x58\xbc\x42\x70\x39\x3c\xe8\xdc\x2d\x66\x84\xa0\x33\x05\x19\x1c\x74\x56\xab\x7a\x33\xe7\x52\xc7\xa4\xa9\x32\xc6\xce\xc5\xaa\x53\xe7\x4a\xe0\x53\x00\xf3\xd1\x92\xc7\xa2\x4d\xf9\x0c\x4e\x1e\x33\x10\x33\x3c\x79\x8c\x81\x0c\x4d\x1e\xd3\xa8\x7a\x3b\x92\x51\xe5\x96\x31\x65\x6e\xbb\x5a\x65\xeb\xb8\xb2\xca\xa9\xd8\x81\x65\x76\x1e\x29\xdd\x5a\x96\xb0\x3b\x42\xba\xb5\x5a\x6c\xdb\xfb\xab\xcf\x09\x7c\x2a\x59\x32\xcd\x70\xc2\x59\x56\x5f\xf1\x4a\xa7\x76\xfb\x39\x9a\x82\xc6\xe7\x2c\xaf\x7c\xec\xf6\x73\xfd\xc4\xd8\xed\xe7\x28\x46\x35\x4b\x53\x10\xab\xfd\x9c\x99\xaa\x37\x1b\x40\x0c\x5f\x36\x4b\x53\x65\xe4\x03\xa8\x2b\x4b\x7d\xdb\xd3\x81\xf5\xdf\xb9\x7a\x67\x90\xc3\x04\x5d\x7d\x90\xf9\x1c\x5b\x1a\xca\xae\x45\xe8\xc6\x85\x27\x4a\x8e\x93\x27\x9c\x17\xaa\xec\xe2\x8e\xd9\x3f\x2c\x1f\x3e\x17\xd2\x1f\xbb\xd9\xbf\x9f\x18\xbb\xd9\x9f\x62\x54\xb3\x3f\xfd\xb1\x9a\xfd\xcd\x54\xbd\xdd\xec\x4f\xf1\x65\xb3\x3f\xfd\xf9\xe6\xac\xdf\xf6\xa3\x4e\xfe\x54\x54\x1c\xc8\x9f\xee\xa6\x7c\x98\x61\xdc\xa8\x7c\xac\x5c\xb1\xa7\x18\x2b\x57\x64\x18\xdc\x15\x19\x88\x8d\x2b\x1a\xaa\x7a\x33\x57\x64\xf8\x12\x57\x64\xca\x8c\xc7\x9f\x1d\x97\x7c\x94\x5f\x51\xfb\x66\x83\x4d\xe5\x1e\xa9\x66\x57\xd5\xa5\x33\x11\xb4\x20\x90\xc4\xe1\xb4\xf4\x82\x4b\x59\x14\x9f\x31\x92\x15\x31\xab\x32\xcf\x17\x87\x19\xcd\x84\xfc\xcb\x11\xa3\x18\x82\xfb\x23\x3c\x4f\x9f\x63\x44\x1e\x77\x60\xbd\x5a\x67\xe7\x07\xfa\x0d\x2e\x4a\xd0\x9f\x0d\x3c\xfd\xbe\xd1\xf6\x9b\xd5\x9e\xd2\xfa\xfb\xd7\xfd\x26\x00\xd5\x7e\x84\xdf\x30\x18\x77\x0b\x3a\xda\x26\xf4\x1b\x6c\x43\xc7\xdc\x88\x76\x32\xc0\x6b\x6e\x46\x5f\xca\x41\x02\x0f\x38\x27\xbd\x97\x2e\x83\xae\x75\x7a\xd7\x0d\x81\xf4\x80\xce\x6e\x9b\x61\x22\xb5\x6a\xef\xa0\x94\x52\x14\x45\x2e\xe2\x7c\x1f\x6e\xb0\x1f\x84\x76\x3b\x84\x7e\x62\xec\x76\x08\x14\xa3\x8a\xf8\x50\x10\xab\x1d\x82\x99\xaa\xb7\xdb\x21\x50\x7c\x59\x40\x88\x2a\xa3\x38\x6a\x69\xc4\x38\x3c\x14\xc0\x79\xcd\x05\xac\x13\xd9\xd0\x16\xa3\x88\x8f\xf7\x60\x8b\x70\x64\x77\x3f\xaf\xa7\x18\xcb\x88\x5f\x89\xc1\xed\xcf\x40\xec\x22\x7e\x46\xaa\xde\xce\xfe\x14\x5f\x62\x7f\xa6\x8c\x91\xfd\xb7\x30\x8c\x30\xac\xd9\x7f\x50\x02\x4e\x18\x6d\xf0\xa2\x3a\x73\xc2\x51\x68\x79\x45\xb3\x9f\x18\xbb\x53\x36\x8a\x71\x39\x65\x2b\x41\xac\x4e\xd9\xcc\x54\xbd\xdd\x29\x1b\xc5\x97\x9e\xb2\x95\xca\x18\xb9\x40\xe4\xe3\xf5\x16\xd7\x5c\x60\x40\xd8\x3f\xf2\x10\xae\x72\x3b\xf1\xba\xdc\x0c\xda\x79\x40\x3f\x31\x76\x1e\x40\x31\xaa\x63\x22\x0a\x62\xe5\x01\x66\xaa\xde\xce\x03\x28\xbe\xec\x98\x88\x2a\x63\xe4\x01\x28\x84\x6b\xb8\xa6\x1e\x50\xea\x92\xdb\x2e\x01\x70\x50\x3e\x7c\x34\xb0\x20\x97\x8d\xf5\x7b\x8a\xb1\xb2\x3e\xc3\xa8\xc6\x3f\x8b\xeb\x59\x58\xdf\x50\xd5\x9b\x59\x9f\xe1\xcb\xc6\x7f\x15\xe3\x6b\x59\xbf\x66\xe4\x69\xb9\x37\x1a\x1c\x56\xdb\xac\xdc\xad\x1d\xd1\xf7\x14\x33\xc2\x7e\x86\x82\x0c\x0e\xab\xa9\x55\x7d\x85\xb0\x1a\x55\xc6\xc0\xd0\xe3\xdd\x17\x5b\x6e\xd1\xd2\x2e\x8e\xda\x53\xcc\x08\xf7\xc5\x28\xc8\xe0\xfb\x62\x6a\x55\x6f\x66\x70\xf5\x75\x32\xaa\x8c\x89\xc1\x47\xb9\x93\xb2\x98\x07\x2e\xb2\xe3\xf1\x9e\x62\x86\xdf\x49\x61\x20\x43\xef\xa4\x68\x54\xbd\x9d\xb5\x55\x57\x56\x98\x32\x26\xd6\x1e\x2d\x73\x3e\xdc\xae\xe7\x76\xa7\xd3\x3d\xc5\x8c\x90\x39\x4f\x41\x06\x67\xce\xab\x55\xbd\xdd\xb2\x4d\x99\x58\x4f\x95\x31\x31\xf8\x58\xd9\xb9\xdb\x85\xeb\x59\x9e\xd5\xf4\x13\x33\x42\x76\x2e\x05\x19\x9c\x9d\xab\x56\xf5\x86\x7b\x75\x55\xf2\x2e\x55\xc6\x68\xfe\x26\x79\x9c\x61\xd4\xd3\xe0\x4b\x1f\xe1\xfd\x44\x9d\x83\x00\x3c\xff\xdd\x04\x90\xb2\x35\x19\xcc\x71\x42\xda\x05\x7e\xd9\x6b\x6a\x01\x1d\xaf\xd7\x4d\x71\xcd\x02\x73\xaf\xfb\x6e\xdb\xf2\x5d\x36\xe4\xe5\xce\x39\xc4\x45\x39\x5e\xd3\x53\x26\x0b\xfd\x68\xf2\x6a\x46\xcf\x4a\xbd\x6a\x32\x8d\x09\x3e\x5e\x13\x76\xe5\x2f\x2e\x69\x85\x8a\xd7\xd7\x08\x8f\x3c\x76\xc6\xd7\xf8\x7a\x22\x33\xd8\xd4\x04\xab\xd5\xd6\xee\xe6\x43\x4f\x31\x23\xec\x8d\x28\xc8\xe0\xbd\x91\x5a\xd5\x57\xd8\x1b\x51\x65\x8c\x8e\x40\x58\x55\x8d\xab\x5d\xff\x56\x9e\xce\xe3\x3a\x6b\x31\xc7\xeb\xfc\x1b\x7b\x19\x4c\xb0\x55\xce\x77\xaf\xc1\xc5\xc7\x16\x05\xbb\xe4\x8d\x7d\x04\xbc\xe0\x11\x43\x64\xbd\xa0\xfc\x23\xa9\xfb\xed\x27\x75\x5f\x4c\x5f\xfd\x59\xaf\x51\x4c\xff\x47\xca\xf5\x77\x90\x72\x7d\x31\x7d\x75\x28\x34\x8a\xe9\xeb\x01\x51\xe4\xe2\x6d\x68\x77\x01\xbb\xa7\x98\xe1\x21\x60\x06\x32\x34\x04\xac\x51\xf5\xdb\x87\x80\x99\x32\x5a\xd3\xd3\xe3\xa1\x71\xec\x5e\x0b\x84\x86\x4b\xbc\x88\xec\xa2\x3e\x3d\xc5\x0c\x0f\xfd\x32\x90\xa1\xa1\x5f\x8d\xaa\xdf\x3e\xf4\xcb\x94\xd1\xda\xbd\x3a\x28\x1a\x67\xa2\xaf\x07\x40\x61\xe4\x85\x76\x27\x09\x3d\xc5\x8c\x10\xf2\xa5\x20\x83\x43\xbe\x6a\x55\x5f\x21\xe4\x4b\x95\xd1\x9a\x9e\x1f\x19\x8d\x63\xf9\x7a\xe0\x33\x08\x43\x5b\xcb\xf7\x13\x33\x42\xa8\x97\x82\x0c\x0e\xf5\xaa\x55\x7d\x85\x50\x2f\x55\x46\x61\xf9\x67\x7c\x38\xd8\x45\x73\xd9\x2a\x76\x70\x34\xb7\x9f\x18\xbb\x68\x2e\x5b\xb6\x0f\x8e\xe6\x9a\xa9\x7a\xbb\x68\x6e\xb5\x54\x37\x8f\xe6\x4a\x62\xf9\xe5\x63\x92\x87\xb8\x90\x6f\x09\x27\x5d\xf7\x96\xb4\x69\x88\x03\x84\xbe\xdc\xfd\x3f\x00\x00\xff\xff\xb8\x80\xd8\xab\xbd\x65\x00\x00"), }, "/css/bootstrap-theme.min.css": &vfsgen۰CompressedFileInfo{ name: "bootstrap-theme.min.css", - modTime: time.Date(2018, 8, 19, 14, 21, 17, 476526885, time.UTC), + modTime: time.Date(2018, 9, 10, 21, 40, 58, 711425774, time.UTC), uncompressedSize: 24411, compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x5c\x5d\x8f\x9c\x38\x16\x7d\xcf\xaf\xf0\x2a\x8a\xd2\x3d\xaa\xa2\x29\xaa\xa8\x8f\x6e\x25\xbb\xda\xec\x68\x14\x69\x66\x5f\x36\x0f\x2b\xad\xf6\xc1\x60\x53\xcd\x4e\x15\x20\x70\x75\x77\xb6\xd5\xff\x7d\x84\x0d\x55\x18\xae\xb1\x5d\x50\x9d\x89\x94\x41\xd1\xa4\x0c\x9c\x7b\xec\x7b\x7d\xfc\x71\x4d\x6e\x7e\xfa\xcb\x1b\xf4\x13\xfa\x7b\x9a\xb2\x82\xe5\x38\x43\x0f\x73\x67\xee\xac\xd0\xd5\x3d\x63\xd9\xed\xcd\xcd\x96\xb2\xa0\xbe\xe7\x84\xe9\xfe\xba\x7c\xfa\x53\x9a\x7d\xcd\xe3\xed\x3d\x43\x9e\x3b\x9b\x4d\x3d\x77\xb6\x42\x5f\x1e\x63\xc6\x68\x3e\x41\x9f\x93\xd0\x29\x1f\xfa\x35\x0e\x69\x52\x50\x82\x0e\x09\xa1\x39\xfa\xed\xf3\x17\x01\x5a\x94\xa8\x31\xbb\x3f\x04\x25\xde\x0d\x7b\x0c\x8a\x9b\xa3\x89\x9b\x60\x97\x06\x37\x7b\x5c\x30\x9a\xdf\xfc\xfa\xf9\xd3\xcf\xff\xfc\xd7\xcf\xa5\xc9\x9b\x37\x6f\x2a\xa6\xbf\xd0\x84\xe6\x98\x95\xb8\x45\x9c\x6c\x11\xbb\xa7\x0d\xf6\x9f\x0e\x05\x4b\xf7\xf1\xff\x69\xde\x30\xd6\xaa\xc2\x4d\x58\x3f\x74\xf3\xd7\x98\x7c\xf0\xe7\x8b\x39\xdd\x84\x01\x5d\x06\xc1\x6a\xe9\x63\xba\x70\xdd\x8d\x17\x2c\x96\x14\x6f\x16\x0b\xe2\x57\x35\x4e\xa2\x78\x8b\x0a\xfc\x40\x09\x62\x29\x0a\xf9\x6f\xe7\x7f\x45\x9a\x20\x9c\x10\x74\xaa\x58\xc1\x9c\x46\xed\x74\xe0\x65\xd5\x46\x72\xc1\xf2\xd2\x2e\x70\x02\x96\x4c\x09\x8d\xf0\x61\xc7\x26\xfc\x47\x96\xc7\x7b\x9c\x7f\x15\x3f\x8a\x43\x18\xd2\xa2\x10\x3f\xe2\x24\x4a\xc5\xdf\x1e\x71\x9e\xc4\xc9\x56\xfc\x20\x38\xd9\xd2\xfc\x99\xd1\x27\x36\x2d\xee\x31\x49\x1f\x6f\x5d\x34\x9d\x65\x4f\xc8\x45\xf9\x36\xc0\x57\xee\x84\x5f\x8e\x77\x7d\x37\x7d\xa4\xc1\xef\x31\x9b\x06\xe9\x53\xfd\x6c\x9c\x14\x94\x21\x17\x35\x5e\xf0\x7c\x7f\x52\xff\x71\x9d\x99\x7f\x3d\x11\xb7\xcb\x3f\x12\xa2\xbb\xf2\xaf\xef\x46\xc4\x7a\x69\x36\xc7\x2d\x0e\x59\xfc\x40\xa5\x56\x91\xca\xaa\xc6\x91\xca\xca\x36\x92\x0a\xaa\xa6\x92\xca\x44\x8b\xc9\x45\xc2\xa6\x03\xd8\x74\x00\x9b\x4e\xdb\xa6\x03\xd8\x74\xba\x36\xab\xa2\xe7\x1e\x3f\xcc\xb3\x27\xe4\xb7\x1b\x67\xe6\xc1\x0d\xad\x7c\x58\x6a\x49\x87\xc4\x05\x0e\x76\x94\xc8\xf5\x92\x4b\xeb\x9a\xc9\xa5\xbc\x6e\x72\x51\x5d\x3b\xb9\xb4\xaa\x5f\xab\x50\xd8\xff\x4f\x5d\xfa\x5f\x89\x40\xbb\xb8\x62\xd0\x2e\x2e\x29\xb4\xcb\x2a\x0e\xed\x62\x41\xa2\x51\x1a\xc5\x74\x47\x0a\xda\x60\x80\xa4\x1e\xa7\xba\x5f\x77\x42\xd5\xfd\xba\x5f\xaa\xee\xf3\xae\xaa\xba\x59\xf7\x5e\x25\x39\xd1\xa1\x81\x18\x49\xd2\x84\xde\xb5\x7e\x4b\x9e\x46\x4e\x80\xc9\x56\x8e\x5f\xa9\xac\x22\x2e\x95\x95\x64\xa5\x82\x8a\xa0\x54\x26\x48\x55\x45\x92\xd8\x1c\x49\x34\x3b\x54\x1d\xe8\x01\x0e\x7f\xdf\xe6\xe9\x21\x21\xd3\x78\x8f\xb7\xb4\x4b\xb9\xfb\x48\x5d\xf1\x5d\x9c\x50\x9c\x4f\xb7\x39\x26\x31\x4d\xd8\x15\x4b\xb3\x09\x7a\x1b\x45\x11\x72\x27\xe8\x2d\x75\xcb\x0b\xcd\x5c\xf7\xdd\xf5\x5d\x17\x23\x1d\xf6\x7a\x45\xe1\xf8\xb2\x00\x9b\xa0\x1d\x8d\x18\xe2\x48\xfc\x6f\x41\xca\x58\xba\x9f\xa0\x30\xdd\xa5\xf9\xb4\x60\x69\x76\xe5\x0a\x23\xd7\x13\xc4\xd2\xab\xca\xcc\x35\x60\xa2\x4b\xef\x88\x06\x93\x8c\xe2\x1d\xa3\xf9\x6d\x96\xa7\xdb\x98\xdc\xfe\xe3\xdf\x9f\x4b\x98\x2f\x39\x4e\x8a\x28\xcd\xf7\xce\x6f\x71\x98\xa7\x45\x1a\x31\xe7\x08\x59\x30\x9c\xb3\x4f\x25\xb5\x82\xe5\x1f\xde\x97\xb0\xfc\xbf\xf7\x13\x44\x13\x22\xdd\x10\x96\xde\x4f\xd0\x2f\xd5\xcb\x5f\xbe\x66\xf4\x83\x7b\x8e\x55\x9a\xf0\x60\x46\x1f\x50\x84\x77\x05\x95\xaa\x9e\xd3\x8c\x62\x76\x2b\xfe\x37\x7d\xba\x0b\xd2\x9c\xd0\x7c\xca\x9b\xef\xf6\x2d\x09\xca\xeb\x4e\x1e\xc9\xc4\x58\x52\x72\x6f\x3d\x1d\x86\xa1\x3c\x5e\xdc\xa7\x0f\x34\x97\x84\xe7\x36\x4a\xc3\x43\xd1\x8c\xb0\xea\x5d\x51\xdd\x26\xb3\x2c\x2d\x62\x16\xa7\x09\x1f\x3b\xfd\xec\x49\x3d\x14\xc9\x43\x45\x0f\x38\x50\xb7\x3e\x59\xee\x8a\xa5\x4e\xbd\x40\x30\xa0\x19\x4e\xef\x57\x37\x35\xc0\x00\xc4\x09\x9e\x37\xa9\x0a\x5e\xdc\xd4\xc1\x77\x21\x8e\xf0\x4e\x1f\xbc\x63\x04\x0f\x40\x9c\xd8\x03\x8e\x6c\xd0\xaf\xee\xea\xf8\x43\xd1\x70\xac\x40\xaf\x05\xc7\xcc\x82\x3e\xb6\xd4\xb2\x5a\xa9\xbe\xad\xac\xce\xe7\x2b\x1c\xac\xb8\xea\x78\x4b\x1f\xaf\xd7\xd6\xca\x6a\x8e\x30\x4c\x5c\x85\x9d\x4a\x5f\x85\x25\x5b\x7d\x55\x51\x1d\x43\x62\x05\x36\x20\xb1\xc2\xd2\x37\x96\x58\x6f\xe1\xfb\x6b\x57\x8a\x94\x66\x6f\xaf\x8b\x54\xba\x29\xea\xa0\xd7\x4d\x68\xba\x2e\x4f\xa7\x7b\xc0\x75\x84\xe1\xe9\xac\x81\x6e\x4a\x4b\xab\x36\x18\xd0\x0c\xc6\xba\xa9\x6e\x49\x50\x37\xbb\xf0\xfd\xc2\x26\x79\x05\x86\x77\xfa\xe0\x35\xba\x59\x63\xf5\xc0\x43\x8e\x34\xd7\xcd\xbe\x68\x00\x75\xb3\x5b\x03\x33\x0b\xfa\xd8\x52\xeb\x66\x35\x33\xb6\xd5\x4d\x3f\x0c\xd6\x7e\xc8\xa5\x64\x31\xdb\x2c\x17\x33\x6b\xdd\x34\x47\x18\xa6\x9b\xc2\x4e\xa5\x9b\xc2\x92\xad\x6e\xaa\xa8\x8e\xa1\x9b\x02\x1b\xd0\x4d\x61\xe9\x1b\xeb\xe6\x9c\xae\xa3\xb9\x1c\x29\xcd\xde\x5e\x17\xa9\x74\x53\xd4\x41\xaf\x9b\xd0\x96\x86\xbc\xe5\xd0\x03\xae\x23\x0c\x2f\xf8\x0d\x74\x53\xda\x85\x6a\x83\x01\xcd\x60\xac\x9b\xea\x96\x04\x75\xb3\x0b\xdf\x2f\x6c\x92\x57\x60\x78\xa7\x0f\x5e\xa3\x9b\x35\x56\x0f\x3c\xe4\x48\x73\xdd\xec\x8b\x06\x50\x37\xbb\x35\x30\xb3\xa0\x8f\x2d\xb5\x6e\xc6\x49\x94\x5a\x8b\x66\x10\xba\x84\x8a\xf9\x17\xc6\x01\xf1\xec\x45\xd3\x18\x61\xa0\x68\x72\x3b\xf5\x64\x93\x5b\xb2\x16\x4d\x05\xd5\x51\x44\x93\x63\x43\x93\x4d\x6e\xe9\x5b\x4f\x36\xd7\x78\x11\x6e\x4e\x61\xd2\xec\xe7\xfc\xb7\x72\x9a\xc9\xd9\xeb\xe5\xb2\xb3\xdb\xdb\xd8\x8a\xed\x81\xed\x25\x09\x6c\x80\x1a\x48\xe4\x69\x6f\x5e\xc2\x68\xd7\xd8\x58\x19\xa1\xe6\x02\x35\xb1\x85\xda\xaf\x58\xa7\x46\x07\x50\x1d\x25\xaa\x46\x07\x39\x8a\x0a\xb5\xe3\x1e\x73\xf9\x83\xbd\x0b\x0a\x5f\x8b\xaf\x01\xb0\x3e\x4a\xd4\x92\x57\xed\x8f\x5a\xef\x5c\xba\x98\x2c\x84\x10\xd0\x60\x33\x9f\x2d\xed\x37\x2f\x8d\x11\x06\xee\x5f\x72\x3b\xf5\x16\x26\xb7\x64\xbd\x85\xa9\xa0\x3a\xca\x2e\x26\xc7\x86\x76\x31\xb9\xa5\x6f\xac\x7a\x74\xbe\x26\xb3\xb9\x14\x29\xcd\x9e\x5c\x17\x29\xb7\x26\x79\x1d\xf4\xda\x07\x25\xb6\xe4\xc4\x53\x0f\xb8\x8e\x30\x9c\xf2\x31\xd0\x41\x29\x33\xd9\x06\x03\x9a\xc1\x58\x10\xd5\x2d\x09\xca\x62\x17\xbe\x5f\xc3\x24\xaf\xc0\xf0\x4e\x1f\xbc\x46\x22\x6b\xac\x1e\x78\xc8\x91\xe6\x5a\xd9\x17\x0d\xa0\x62\x76\x6b\x60\x66\x41\x1f\x5b\x3d\x19\x1f\x91\xd8\xb2\x94\x4d\xb2\xf1\xe7\x0b\x91\x0f\x09\x67\x1e\xf5\xb0\xb5\x6c\x9a\x23\x0c\x93\x4d\x61\xa7\x92\x4d\x61\xc9\x56\x36\x55\x54\xc7\x90\x4d\x81\x0d\xc8\xa6\xb0\xf4\x8d\x65\x33\xd8\x78\xa1\xb7\x6e\x06\x8a\x94\x86\x10\x25\x2a\xd1\x14\x35\x30\xc8\xe7\x00\x99\x7f\x29\x31\xaf\x86\xd6\x90\x05\xd3\xe1\x26\xb9\x1c\xfe\x20\x98\x43\xef\xd6\xdf\x3c\x91\xa3\x68\x40\x38\x8d\xd3\xc6\xd6\xa4\x59\x1a\xae\x00\xb1\x9d\x1e\x6c\x5d\x0a\x47\x20\xa9\xb1\x01\xd7\x59\xe4\x6f\x94\xde\x87\xb3\x37\x6d\xee\x46\xf0\xfa\x48\x82\x05\x92\xdd\x1f\xf6\x41\x82\xe3\xdd\xc4\x89\xf7\xdb\xe9\xf1\x27\x74\x0e\x40\x64\x45\x3d\xdd\x71\x9c\x9e\xc7\x5e\x1c\x92\xa7\x19\x49\x1f\x93\xe9\x9e\x26\x87\x8f\xbb\xf8\x23\xae\xc3\x05\xb8\xd3\xe9\x77\x46\xf3\x5d\xbf\xbc\xc4\x14\x70\x5d\x5e\xf6\xf3\x5d\x63\x84\x81\xf3\x5d\x6e\xa7\x9e\xef\x72\x4b\xd6\xf3\x5d\x3d\xd5\xb6\xfe\x8d\x32\x15\xe6\x66\xa1\xa9\x30\x27\x01\x68\x3a\x30\x70\xf3\x47\xdb\x11\x51\xc5\xf1\x47\xdc\x0e\x88\xe3\x0d\x38\x5e\x4e\xb7\xcf\x0a\x9a\x66\x6a\x8e\x2e\x09\x5e\x0c\xca\x43\xf6\x23\x8c\x99\x87\xe4\x96\x86\xe4\x21\x15\x54\x2f\x11\x34\xea\x14\x25\x27\x61\x14\x34\xe2\xd1\x17\x27\xc1\x0f\x01\xce\x87\x1e\xe6\x89\xd6\xe5\x75\xf6\x61\x1e\xcd\xeb\x63\x1d\xe6\x11\x66\xce\x3d\xcc\xa3\x22\x79\x11\x59\x50\x9d\xf3\x11\x24\x2e\x34\xd5\x13\x53\xa4\xf2\xfe\xa1\xb8\x5d\x64\x4f\x03\x8f\x9b\x76\x0e\x36\x0e\x38\x6e\x0a\x62\xb5\xa3\x17\xd5\xbf\x13\xfc\xf0\xd1\x49\x33\x9a\x94\xea\xd7\xf7\x4c\xad\x75\xd6\x6b\x1a\x7e\x1a\x48\x8c\x16\x5e\x79\xd9\xaf\x69\x8c\x11\x06\xae\x69\xb8\x9d\x7a\x68\xe4\x96\xac\xd7\x34\x7a\xaa\x97\xe8\x03\xc2\x2c\x34\x34\x72\x12\x40\x1f\xd0\x9c\xca\xdd\x98\xc6\xa3\xf2\xe1\x63\xc0\x05\x39\x4e\xc8\xa4\x19\x4a\xe5\x34\xeb\x19\x3a\xf9\x06\x84\xb5\xd7\x40\x8a\x93\x07\x9a\x17\xc0\x41\x4b\xcd\x30\x1b\x96\x97\x18\x79\x3c\xfb\xe8\x33\x7c\x7d\xe0\x00\xcb\x8d\xd4\x03\xac\x67\x1d\x77\x3a\x92\x17\x19\x5a\xb9\x4d\x68\x68\xe5\xff\xbd\x92\xf0\xb6\xa3\xa3\x57\xd8\xc0\x67\xce\x15\x36\x77\x5d\x5e\xbc\xcd\xdd\xa8\xbc\xac\x43\xcb\x1c\x61\x58\x74\x09\x3b\x55\x74\x09\x4b\xb6\x01\x66\x40\xf5\x12\x31\x26\xcc\x02\x31\x26\x48\x8c\x20\x6c\x3d\x5f\x1b\x40\xcf\x2a\xc3\x4d\x96\x39\x28\xd0\x00\xd9\x03\x3f\x5d\x69\x18\x29\x18\x66\x71\x38\x2d\x1d\x5c\x17\x45\xf1\x13\x25\x40\x89\xf0\xd4\xb3\xdc\x3f\xdc\x97\xbf\xed\x29\x89\x31\xba\xda\xe3\xa7\xe9\x63\x4c\xd8\xfd\xed\x6a\xb9\xca\x9e\xae\x9f\xab\xb7\x9b\x0c\x11\xef\x2e\x48\xbd\x38\xb2\x7e\xa5\x5e\x36\xd9\xbf\x28\x16\x54\xd5\x04\x9c\x1f\x88\xfe\xb1\xb6\xfa\xee\xd7\x56\x2f\x2f\x0e\xde\xd1\x9c\x19\x0f\xfe\xe7\x7d\xc5\xe5\x1d\xa7\xc2\xdd\xfd\x20\xcb\x59\x75\x3f\x54\x55\x9d\x73\xcf\xd3\x91\x28\x72\x89\xd0\xd4\x70\x4d\xfd\x20\xb4\x9f\x19\x1b\x23\x0c\x9c\x19\x73\x3b\xf5\x6e\x3f\xb7\x64\x3d\x33\xd6\x53\xbd\xc8\xcc\x98\x9b\x85\x12\x01\x9c\x04\xb4\xfe\x97\x77\xbf\x3d\x12\xe0\x59\xed\xe8\x73\x0e\x00\x91\x0d\x25\x91\xe8\x9c\xc1\x86\xd0\xc8\xfe\x3b\x1e\x73\x84\xa1\x39\x9d\xd2\x4e\xe5\x65\x61\xc9\x3e\xa7\xa3\xa5\x7a\x11\x2f\x73\xb3\x80\x97\x05\x09\xad\x97\x37\x38\x8c\x28\xae\xbd\x7c\xee\x99\x87\x30\x5a\xd3\x79\xb5\xff\x41\xa3\xf0\x8c\x0f\xb6\x8c\x11\x06\x6e\xf3\x70\x3b\xc7\x9d\x9e\xd2\x92\xf5\x4e\x8f\x9e\xea\x45\x36\x7b\xb8\x59\x70\xb3\xa7\x24\xa1\x75\x74\xe4\xd3\xd5\x86\xd6\x8e\x3e\x2f\x49\x1b\x79\x84\x56\x87\xdc\xe8\xaa\x5c\x03\xd9\xfb\xd9\x18\x61\xa0\x9f\xb9\x9d\x7a\x43\x83\x5b\xb2\xf6\xb3\x9e\xea\x45\xfc\xcc\xcd\x42\x1b\x1a\x9c\x84\xd6\xcf\x24\xc4\x2b\xbc\x7a\x71\x4a\x12\xf9\x19\x43\x33\x0d\xca\x0b\x9d\x12\x26\xd6\x3e\x36\x47\x18\xe6\x63\x61\xa7\xee\xcb\x22\xb9\x63\xe9\x63\x03\xaa\x97\xf0\xb1\x30\x0b\xf5\xe5\x3a\xd1\xd3\x9e\x3e\x1e\xdd\x39\x0d\xb0\x75\xb7\x6d\x4e\x92\xd7\x4b\x77\x63\x2f\xcf\xe6\x08\x63\xae\x08\xb8\xa5\x21\x2b\x02\x05\xd5\xd7\x5d\x11\x70\x12\x3a\x97\x8e\xf1\x61\xca\x62\x43\x16\xf6\x8b\x3d\x73\x84\x31\x3f\x4c\xe1\x96\x86\x7c\x98\xa2\xa0\x7a\x09\xd7\xaa\xbf\x59\xe1\x24\xb4\xae\x1d\x78\x76\x7e\x3e\x0b\x5c\x62\xaf\xc2\xe6\x08\x23\x9e\x9d\x17\x96\x06\x9c\x9d\x57\x51\xbd\x88\x5f\x55\xc7\xea\x05\x09\xad\x5f\x47\x38\x20\x1c\x6e\x56\x33\xfb\xcd\x53\x73\x84\x31\x0f\x08\x73\x4b\x43\x0e\x08\x2b\xa8\x5e\x64\x12\xa5\x3c\x3b\xcc\x49\x68\x5d\x3b\xfc\x0c\xe3\x66\xee\x7a\x67\xec\x6a\x18\x23\x8c\x79\x86\x91\x5b\x1a\x72\x86\x51\x41\xf5\x32\xeb\x5d\xd5\xf1\x46\x4e\x42\x3f\xce\xb2\x3c\xce\x28\x31\x77\xed\xc2\x27\x74\x3b\x51\xe4\x9d\x91\xe7\xbf\x9b\x20\x56\x56\x21\xc3\x39\x4d\x58\xb7\xc0\x77\xdf\x29\xdf\xee\xbb\xb7\x6a\x03\xb5\x0b\xcc\xe2\xea\x7b\xa2\xff\xfd\x70\x7f\x71\x76\x71\x51\xf6\xbe\xf4\x90\x3d\x1b\x9d\x88\x18\xe3\x30\xdf\xc9\xe6\x34\x66\x74\x7f\x3c\xc6\x08\x97\xd7\x19\x08\xc5\x5d\x91\x66\x00\x93\x32\xd5\xc4\x79\x48\xe2\x21\x58\x2e\x37\xf6\x47\xb8\xcd\x11\xc6\x5c\x66\x70\x4b\x43\x96\x19\x0a\xaa\xaf\xbb\xcc\xe0\x24\xb4\xbb\x03\xe2\x31\x55\x28\x1d\xff\x2d\xa8\xbe\x88\xd2\x3d\xc4\x03\x4b\xfd\x4f\x48\x65\x38\xa1\x56\xc7\x5d\xcd\x3a\x48\xd9\x3f\x38\x74\x7d\x84\xe7\x63\xf5\xf3\x9e\x62\x72\xce\x2c\xed\xc7\xb1\xd6\x3f\xdf\xb1\xd6\xda\xc5\xd5\x3f\x04\x31\xd0\xc5\x3f\x12\xa5\x7f\xc6\x44\x69\xe5\xd3\x6a\x3f\x64\xa0\x8b\x1b\xa9\x37\xe2\xd2\x4d\x68\xff\x31\xa6\x39\xc2\x88\x79\x46\x61\x69\x40\x9e\x51\x45\xf5\x55\xf3\x8c\x82\x84\xda\xc5\x71\x12\xa5\x43\xfd\x7b\x4a\xba\x85\x0b\x3a\x8f\xec\x13\x12\xe6\x08\x23\x66\x18\x85\xa5\x01\x19\x46\x15\xd5\x57\xcd\x30\x0a\x12\x6a\xff\x56\xfb\x23\x43\x07\xe2\x46\xba\x0d\x47\x5e\x68\xbf\xa8\x36\x47\x18\x33\xb7\xc8\x2d\x0d\xc9\x2d\x2a\xa8\xbe\x6e\x6e\x91\x93\x50\xbb\x58\xec\x93\x0c\xf5\x70\x23\xd1\x16\x84\xe1\x39\x1e\x36\x46\x18\x33\xab\xc8\x2d\x0d\xc9\x2a\x2a\xa8\xbe\x6e\x56\x91\x93\x80\x3c\xfc\x48\x77\x3b\xeb\xe4\xa1\x98\x3d\x0e\x49\x1e\x1a\x23\x0c\x4c\x1e\x8a\x89\xf2\xa0\xe4\xa1\x9e\xea\x45\x92\x87\xf5\xe4\xd8\x34\x79\xd8\x49\x10\x97\x97\xee\x78\xd9\x1c\x58\x61\x4d\xfa\x3e\xc2\x50\x9e\x2e\xb3\x47\x7a\xf9\x23\x00\x00\xff\xff\x04\xde\xae\x08\x5b\x5f\x00\x00"), }, "/css/bootstrap.css": &vfsgen۰CompressedFileInfo{ name: "bootstrap.css", - modTime: time.Date(2018, 8, 19, 14, 21, 17, 476526885, time.UTC), + modTime: time.Date(2018, 9, 10, 21, 40, 58, 711425774, time.UTC), uncompressedSize: 85114, compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x7d\x6b\x93\xe3\xb8\x91\xe0\x77\xfd\x0a\xba\x27\x1c\xdb\x33\x2d\xb2\xa9\x77\x49\x1d\xd3\xe7\x3d\xc7\xc6\x9d\x23\xd6\xfe\xb2\xfb\x6d\x3c\x17\x41\x91\x50\x89\x6e\x8a\xe4\x92\x54\x55\xf5\x78\xeb\x7e\xfb\x05\x08\x80\x48\x00\x09\x10\x94\xaa\xc7\xf6\x85\xbb\x76\x3d\x55\x44\xbe\x90\x0f\x20\xf1\xfe\xf8\xc3\x6f\x66\xc1\x0f\xc1\xff\xac\xaa\xae\xed\x9a\xa4\x0e\x9e\x56\xd1\x2a\xda\x05\xef\xcf\x5d\x57\x1f\x3e\x7e\x7c\x24\xdd\x51\x94\x45\x69\x75\xf9\x9e\x42\xff\xbe\xaa\xbf\x36\xf9\xe3\xb9\x0b\x96\xf1\x62\x11\x2e\xe3\xc5\x2e\xf8\xcf\xe7\xbc\xeb\x48\x33\x0f\xfe\x50\xa6\x11\x05\xfa\xf7\x3c\x25\x65\x4b\xb2\xe0\x5a\x66\xa4\x09\xfe\xf8\x87\xff\x64\x44\x5b\x4a\x35\xef\xce\xd7\x23\xa5\xf7\xb1\x7b\x3e\xb6\x1f\x07\x16\x1f\x8f\x45\x75\xfc\x78\x49\xda\x8e\x34\x1f\xff\xfd\x0f\xbf\xff\xb7\x3f\xfd\xc7\xbf\x51\x96\x1f\x67\x33\x2e\xe9\xff\x22\x25\x69\x92\x8e\xd2\x6d\xf3\xf2\x31\xe8\xce\x04\x48\xff\xfb\x6b\xdb\x55\x97\xfc\x17\xd2\x00\x66\x5a\x15\x3e\xa6\x02\xe8\xe3\xff\xc8\xb3\x1f\x37\xab\xf5\x8a\xec\xd3\x23\xd9\x1e\x8f\xbb\xed\x26\x21\xeb\x38\xde\x2f\x8f\xeb\x2d\x49\xf6\xeb\x75\xb6\xe1\x35\x2e\x4f\xf9\x63\xd0\x26\x4f\x24\x0b\xba\x2a\x48\xfb\xbf\xa3\xbf\xb4\x55\x19\x24\x65\x16\xc8\x8a\xb5\x5d\x04\x6a\x37\x46\xbc\xaf\xda\x1b\xd9\x60\xfb\xcd\x6d\xf0\xf1\x87\xdf\x04\x65\xd5\x5c\x92\x22\xff\x85\x44\x69\xdb\x52\x49\xe3\x68\x15\xfc\x77\x4f\x9a\x73\x0b\xfe\x3b\x00\xb4\x4b\x92\x56\x45\xd2\x7e\x54\xf1\x7e\xf8\x38\x3b\x77\x97\x22\xf8\xeb\x2c\x08\x4e\x55\xd9\x85\xa7\xe4\x92\x17\x5f\x0f\x41\x9b\x94\x6d\xd8\x92\x26\x3f\x7d\x9a\x05\x41\x78\x69\xc3\x8e\xbc\x74\x61\x9b\xff\x42\xc2\x24\xfb\xcb\xb5\xed\x0e\xc1\x22\x8e\x7f\xdb\x97\x3e\x93\xe3\x97\xbc\xb3\x42\xbc\xce\x8e\x55\xf6\xb5\xe7\x71\x49\x9a\xc7\xbc\x3c\x04\x31\xfd\x9a\x34\x5d\x9e\x16\x64\x3e\x4b\xda\x3c\x23\xf3\x59\x46\xba\x24\x2f\xda\xf9\xec\x94\x3f\xa6\x49\xdd\xe5\x55\xd9\xff\x7e\x6d\xc8\x7c\x76\xaa\x2a\xaa\xd2\xd9\x99\x24\x59\xff\xdf\xc7\xa6\xba\xd6\xf3\xd9\x25\xc9\xcb\xf9\xec\x42\xca\xeb\x7c\x56\x26\x4f\xf3\x59\x4b\x52\x86\xd9\x5e\x2f\x97\xa4\x61\x7c\xb3\xbc\xad\x8b\xe4\xeb\x21\x38\x16\x55\xfa\xa5\x67\x7e\xcd\xf2\x6a\x3e\x4b\x93\xf2\x29\x69\xe7\xb3\xba\xa9\x1e\x1b\xd2\xb6\xf3\xd9\x53\x9e\x91\x4a\x45\xca\xcb\x22\x2f\x49\xc8\x71\x83\xe0\x89\x50\xc9\x93\x22\x4c\x8a\xfc\xb1\x3c\x04\xc7\xa4\x25\x14\x62\xa0\x7b\x28\xab\xee\xfd\x4f\x69\x55\x76\x4d\x55\xb4\x3f\x7f\xaf\x92\x2b\x2b\x0a\x1a\x04\x67\x42\xfd\x86\x2b\xe3\xa7\x73\x9e\x65\xa4\xfc\x79\x3e\xeb\xc8\xa5\x2e\x92\x8e\x60\x48\xaf\xb3\xa4\xff\x7c\x4c\xd2\x2f\x54\x01\x65\x16\xa6\x55\x51\x35\x87\xa0\x6b\x92\xb2\xad\x93\x86\x94\x5d\x0f\x76\x48\xd2\x2e\x7f\xa2\xca\x3d\x9c\xab\x27\xd2\xf4\x68\xd5\xb5\xa3\x72\x0a\xfd\x1f\x8f\xcd\x4f\x5d\xde\x15\xe4\x67\x46\xb4\x6a\x32\xd2\x84\xc7\xaa\xeb\xaa\xcb\x21\x58\xd4\x2f\x41\x56\x75\x1d\xc9\x7a\x13\xce\x67\x6d\xd7\x54\xe5\xa3\xf4\x95\x67\x2e\xff\xb1\x2a\x7a\x90\xec\x54\xca\xc2\xb6\xfb\x5a\x90\x43\x90\x77\x49\x91\xa7\xb4\xf4\xbc\x00\x85\xf9\x2f\xe4\x10\x2c\xc9\xe5\x13\xf4\x89\x68\xbb\x23\x17\x26\xda\x25\x69\xbe\x68\x15\x3d\x04\xdf\x9d\x4e\x31\x45\xe0\x35\xfe\x2e\x8e\x7b\xd8\xf6\x92\x14\x85\x4e\xfb\x81\x39\x5e\x7b\xa5\x72\x5f\x6b\xbd\x78\xb7\xe9\x3d\xb7\x37\x2b\x30\x43\x10\xd4\x55\x9b\x53\xf7\x39\x04\x0d\x29\x12\xaa\xc1\x31\x83\x0b\xea\x5d\x55\x1f\x82\x30\x8e\x36\xb4\x56\x3d\x67\xae\x54\xa6\xcd\x30\x8e\x96\xbc\x28\xbf\x3c\x02\x7d\x73\x63\xb4\x4f\x8f\xbd\xd7\x1c\x9a\xaa\xea\x98\xc3\x50\xb3\x9d\x8a\xea\xf9\x10\x30\xdf\xa0\x60\x2c\x1c\x94\x58\x5a\x90\x4b\xb0\x8e\xeb\x97\x5e\xc9\xcc\xce\x22\x22\x8f\xd5\x0b\xad\x70\x5e\x3e\x1e\x68\x53\xd9\x91\xb2\xff\x46\xab\x14\xd0\xa8\xae\x7e\x19\x01\xe9\xff\x39\x40\x14\x17\xae\xb9\x60\x52\xee\xe4\xda\x55\xb4\x24\xad\x68\x7c\x7f\x39\x66\x34\xd0\xc8\x7c\xd6\x26\x97\xda\x6c\x73\x2e\x55\x59\xb5\x75\x92\x92\xb9\xfc\xf5\x93\x6a\xb7\x05\xd3\xe0\xf1\xda\x75\x34\xc4\xf3\xb2\xbe\x76\xf3\x59\x55\x77\xbc\x35\x68\x49\x41\xd2\x8e\xc6\xd0\x4b\x97\x34\x84\x05\x0b\xf7\x97\xbc\x3c\x93\x26\xef\x04\x45\xe5\x83\xd2\x2e\x31\xea\x5a\x55\x9e\xf2\x36\x3f\x16\x04\x72\x67\xcc\x98\xf1\x69\xd3\xd7\x87\xe0\xa9\x6a\x2e\x32\x5a\x05\x68\xdf\xc8\xf6\xd2\xfe\xd4\x7d\xad\xc9\x8f\xef\x58\xc1\xbb\x9f\x79\x1d\xf8\xd7\x86\xb4\xa4\xd3\x3f\xb6\xd7\xe3\x25\xef\xde\xfd\xac\x58\x36\xa9\x6b\x92\x34\x49\x99\x92\x43\xc0\x68\xf5\x91\x71\x6d\x5a\x5a\xd5\xba\xca\xcb\x8e\x34\x52\x82\x9f\xb2\xbc\x4d\x8e\x05\xc9\x7e\x56\x64\x19\xbe\x32\x3d\x71\xec\x8c\x9c\x92\x6b\xd1\x49\xec\xc3\xa1\x77\x95\x53\x95\x5e\xdb\x30\x2f\x4b\xda\xfe\xf6\x04\xcc\x02\xdd\xb1\x83\xa0\x4e\xb2\xac\x77\x9d\x5e\xb7\x3d\x5a\x0f\xa4\xc4\x1e\xeb\x95\x06\x00\x5e\xf3\xf4\x4c\xd2\x2f\xc7\xea\xc5\x50\x53\x92\xe5\x95\xa6\x10\xe8\xa4\x43\x43\x66\xf5\x74\x03\xc2\x70\x74\x15\x02\xa9\x04\x97\xa5\xbc\x5e\x8e\xa4\x79\xf7\xf3\xe1\x20\x24\xe9\xf5\x10\xb6\x75\x5e\x86\x8a\x9f\x5a\x11\xaa\x6b\xa7\x22\xf4\x15\x13\xaa\x11\x31\xa4\xb8\x04\x49\x9a\xf4\xec\x70\x09\xea\x8f\xa7\x9c\xd0\x76\xf9\x57\x6b\x0d\x70\x11\x65\x35\xd9\x97\x30\xa5\x12\x16\xa8\x6a\xac\x38\x19\x49\xab\x26\xa1\xed\xb2\xb5\xc6\x22\xe2\xfa\x5a\xb7\xa4\x53\x1c\x91\x76\x65\x6d\x55\xe4\x59\xf0\x5d\x1a\xd3\x1f\x25\xe6\x83\x65\xad\x19\x39\x5a\x6d\x68\x4f\x14\x6d\x97\xec\xbf\x3b\xde\x72\x17\xe4\x91\x94\xd9\x98\x8f\x2b\x8d\x8f\xd9\x18\x8a\xd6\xca\xde\x91\x76\x34\x28\x61\x97\x9c\x56\x45\x91\xd4\x2d\xa1\x1a\x67\xbf\x7d\x92\x85\xb4\x9d\x04\xcc\xb3\xf9\xac\x3b\xf7\xc8\xaa\x54\x34\x69\xfc\x8f\xea\xda\x50\x65\x21\xb9\xe7\x79\x73\xac\x3f\xd2\xa6\x61\x13\x1e\xab\xbc\x20\x4d\x9f\x83\x28\x39\x68\xdb\xa4\x1f\xd3\xb6\xfd\x48\x53\x2e\x91\x3d\xfe\xee\x42\xb2\x3c\x09\xea\x26\x2f\x99\xca\x7f\x98\xd3\xff\x39\x1c\xc9\xa9\xa2\x2d\x3d\xfd\x3d\x39\x75\xbc\x61\x50\xfb\x73\x90\xb2\x04\xbf\xc9\x2f\x75\xd5\x74\x49\xd9\x31\x5f\x03\x7d\xbc\x51\xa6\xf8\xf3\x39\xc9\xa8\x72\xa9\xf9\x0d\x40\xc5\x65\x5d\x80\x2c\x73\xb5\x43\xbc\xce\x82\x20\xa1\x95\x49\x0e\xb4\x1f\xa0\xa3\x9e\xbf\x4a\x44\xe9\x9d\x07\x96\xe0\xb3\xd4\x80\xa3\xfd\x74\x6e\xc8\xe9\x67\x45\x09\x3c\x6c\x0e\xc1\xbb\xe0\xfd\xbb\x20\xe9\xba\xe6\x3d\x05\xfa\x3e\x78\xf7\xfd\xbb\x01\x4f\x26\x67\x63\xb8\x3d\x94\x8a\xdc\x33\xfd\x3f\x3f\xbe\xfb\xee\x1d\xc7\x9e\xc3\xaf\x7f\x49\x9e\x92\x36\x6d\xf2\xba\x3b\xbc\xb3\x51\x1f\x68\xd5\xcc\x8c\x7d\xf2\xfb\x5f\xd7\x8a\xe7\xa5\x68\x6c\xed\xf7\x7b\xa6\xcf\x3a\x79\x24\xe1\xb1\x21\xc9\x97\x30\x2f\x69\x72\x7f\x08\x92\xa7\x2a\xcf\x04\xcd\x8e\x66\xf1\x9c\xce\x90\xe1\xf6\x5e\x1f\xb2\xfc\x3e\xec\x23\x64\x00\xef\xc5\x17\x69\xd3\x38\x79\x09\x79\x49\x5e\xc2\xe7\x3c\xeb\xce\x6c\x2c\x82\x98\xb5\xa6\xa4\xcf\xcb\xfe\x7f\x57\x1c\xab\x6a\xea\x73\x52\xb6\x87\x60\xc5\xaa\xf3\x9c\x67\xd5\xb3\xf8\xf3\xd5\x84\x07\xf2\xf4\xca\xd4\xc4\x89\xca\xe4\xe9\x98\x34\x7a\x7d\xc5\x30\xa0\x07\x39\x76\x65\xf0\x39\x88\xd2\xa4\x21\x1d\xa5\x1d\x65\x4d\x55\x5f\x6b\xfa\x0d\x16\x29\xba\x0f\xbb\xaa\x0e\xed\x81\xd2\xd3\x2d\x92\x23\x29\xec\x16\xeb\x53\x68\x0e\x2a\x5b\x1d\x47\xbb\x83\xf1\x60\x88\xb4\xe1\x91\x7f\x9c\x8d\x78\x1f\x24\x3d\x9d\x4e\x56\x2a\x21\x63\x4c\x07\xf7\xe7\x39\xf6\x35\xb3\xd7\x25\xcb\x32\x83\xee\xeb\xec\x07\xcf\x2c\x61\x24\x45\xb0\x95\xbc\xce\x64\x5b\x07\x5b\xba\x6f\xc8\x50\x1d\xb0\xf3\xbc\x38\x66\x5d\xd8\x30\x14\x4f\xea\xf0\x9c\x3f\x9e\x0b\xda\xb1\x08\xcd\x37\x8f\xc7\xe4\x7d\x3c\x0f\xf8\xff\x7d\xaf\x8c\xcc\x95\x4c\xfc\xdd\xff\x26\xc5\x13\xa1\x43\x9e\xe0\x4f\xe4\x4a\xde\xcd\x83\xe1\xc3\x3c\xf8\xd7\x26\x4f\x8a\xb9\x36\x43\x00\x65\x59\x33\x59\x94\x04\x6f\x11\xad\x97\x0f\x9b\xdd\x62\xbd\x82\x23\xb8\x55\xff\xef\x13\x3a\xa0\xa5\x7e\x72\x3a\x9d\x86\xbc\x62\xae\xe5\xdd\x5a\x92\xaf\xc8\xaf\xa5\xfa\x5c\x30\xf0\x55\x91\x6d\xf8\x2e\x46\xd7\x52\xbc\x5d\x72\xdc\x7d\x9a\x21\xed\xfc\x30\x1c\x67\xa3\x6b\x3a\xcc\xee\xb3\x60\x05\x7f\xb9\xda\x2c\x77\x29\x8a\x0f\xfa\x89\x57\x05\x77\x18\xa2\x6f\xea\x97\x3e\x65\x18\x6c\xca\xb2\xec\x26\x2f\x1f\x99\x8a\x3e\x49\xe8\xb0\x3a\x9d\x5a\xd2\x1d\x82\x70\xc9\xc6\x81\xc8\x30\x31\x86\x43\x4f\x7d\x40\x7b\xc9\xb3\x8c\x0d\x6e\xa2\xfc\xf2\x18\x36\xa4\xad\xab\xb2\xcd\x9f\x08\x3a\x7b\x62\xb4\xab\x9f\x90\x7c\x95\x11\xa2\x16\x25\x30\x63\x0a\x69\xf2\x7e\x6d\x0f\xc1\x96\x49\xda\x83\x75\xe7\xeb\xe5\x58\x26\x79\xa1\xe6\x2d\xe3\x8e\xe4\x70\x1b\x5b\x1b\x91\x65\xd9\x27\x53\x9a\xb5\x16\x3f\x34\x35\xe1\x13\x01\x49\x51\x04\x71\xb4\x6c\x03\x92\xb4\x24\xcc\x4b\x9a\xaf\xf7\xb0\x95\x17\x98\x0f\x8c\x75\xa6\xc9\x57\xcf\x69\xde\xa4\x6a\xca\x28\x2a\xb6\x61\x13\x21\x7c\x62\x80\x39\x43\xd8\xcf\x55\x2c\x79\x9b\xc1\xbf\x89\x89\x0a\xf1\x59\x49\x70\x65\x87\xa3\xa8\x93\xf4\xff\x7a\x29\xda\x26\xac\xca\x82\xb5\x25\x72\x12\x25\x39\xb6\x55\x71\xed\xfa\x7e\x4e\xd4\xa3\x56\x66\x0e\x16\x50\x88\x43\x10\x2e\xf4\x5c\xfc\x13\x3a\x13\x12\x04\x69\x91\xd7\x87\xa0\x21\x69\xa7\xb6\x69\xda\xbc\x8a\x10\x8c\x85\x0f\xed\x4d\x86\x99\x31\xa4\x48\xc6\xa1\xac\x43\xdb\x25\x5d\x9e\x82\x1a\x30\xcd\xeb\x96\x50\x22\x0d\x9d\x39\x10\x32\x0b\xcb\xfd\xd4\x54\x05\x98\x0a\x50\xc6\xe0\x60\x04\x7f\x5e\xcc\x67\x34\xe1\x38\xaf\xe6\xb3\xf3\x7a\x3e\x3b\x6f\xe6\xb3\xf3\x76\x3e\x8b\x68\x41\x44\x4b\x22\x5a\x14\xd1\xb2\x88\x16\x46\xe7\xed\x78\x93\x28\xc6\x1c\x1b\x96\x01\x68\x31\xb6\xf8\x84\xcc\x9b\xf4\x73\x78\xfd\x6c\x1b\x15\x68\xf8\x6d\x35\xfc\xb6\x1e\x7e\xdb\x0c\xbf\x6d\xc5\x6f\x91\x44\x8e\x24\x76\x24\xd1\x23\x89\x1f\x49\x02\x91\xa4\x70\x5e\x04\x91\x64\x1f\x49\xfe\x91\x14\x20\x92\x12\x44\x52\x84\x08\xc8\x10\x01\x21\x22\x20\x45\x04\xc4\x88\x80\x1c\x11\x10\x24\xd2\xe6\x1a\x9f\xb5\xe9\x0b\x5d\x8f\xb0\xaf\xdb\xf5\xff\x84\x41\x23\x61\xd5\x48\x98\x36\xe2\xe9\xa4\x47\x88\x2e\xc4\x6c\xdf\x02\x51\x2e\xd4\x2d\x62\x24\xa0\x70\x45\x19\xa8\x6e\x23\x5c\xcf\x52\x5d\x7a\x1e\xb2\xdd\xb0\xd6\x66\xcd\xfd\x91\xb9\xe3\xe0\xb0\x5b\xa3\x86\x8b\x91\x1a\xae\x11\xef\x80\xce\x81\x3a\xda\x36\x30\x1d\x22\xc2\x9d\x23\xb2\x39\x8a\x69\x6c\x30\x73\x3c\xd8\x50\x2f\x5d\xf1\x5e\x8d\x5b\xd6\x28\x16\xd5\x02\xf6\x86\x13\xe2\x6b\x51\x6b\x26\xaf\x9e\xe4\x3d\xf0\x62\xa6\x54\xa3\x58\x60\x6f\xb5\x26\x80\x17\xf3\xd4\xa0\x56\xb3\x82\x20\x1e\x94\x1d\x15\x62\x54\x66\xe9\x12\x20\xb5\x2d\xf8\x24\xc2\x60\x85\xb6\x25\x6b\x4a\x9b\xcf\x13\xbc\xbf\xe4\xa5\xe8\xd0\x76\xdb\x87\xfa\x85\xcd\x74\x4b\xce\xaa\x3e\x78\x67\xf0\x2a\x66\xf9\x69\x9b\x8d\xce\xf6\x33\xa3\x5c\x92\xe6\xcb\x7c\x16\x21\x8b\x07\x32\x3b\x48\x4f\x0f\x64\xa5\xf4\x30\xd1\x92\x4d\xee\x44\x7d\x92\x56\x90\x13\x98\xd2\xe5\xe9\x11\xfd\x28\x41\xd8\x72\x9f\x0e\xd3\x7f\x95\x40\x29\x29\xc5\x58\x00\x42\xb1\xcf\x12\xec\x2f\xd7\xb6\xcb\x4f\x5f\x0d\x38\xfe\x5d\x02\x96\xd5\x73\x93\x30\xdb\x3d\x9f\xf3\x8e\xf4\xd3\x3e\xfd\xbc\x17\xfd\x0e\xe4\xaf\x9e\x49\x93\x26\x2d\x41\xe7\xa5\x87\x52\x89\x70\xad\x6b\x07\xc2\x50\x0a\x6a\x96\xd4\xfd\xaa\xce\x2f\x38\x86\x2c\x96\x28\x97\xab\x98\x32\x31\x5b\x43\x06\x51\x37\xf9\xb0\x58\xa7\xa7\xdf\xaf\xb3\x44\x01\x1a\x52\x6e\xf5\x2b\x92\x7f\x3f\x6c\xe3\x7d\x2c\x99\xb4\xd7\x34\x25\xad\x0a\xb3\x4a\x77\xdb\x55\x06\x98\x70\x20\x8d\x89\xf8\x8a\x30\x39\x6e\xd6\xcb\x54\x32\xc9\xcb\x53\xa5\x72\x58\xec\xe2\x87\x13\xe0\x40\x21\x34\xf2\xfd\x27\x84\xf6\x7a\xb3\xdc\xee\x25\xed\xe7\xa4\x29\x73\xbe\x04\x27\x60\x1e\x92\x6d\xb6\x3a\x02\xf2\x1c\x48\xe3\x20\xbe\x9a\x4c\xb6\xdb\xcd\x02\x56\x20\x4b\xca\x47\xee\xb9\x02\x24\xd9\xaf\xd7\xeb\x25\xe0\xc1\x60\x34\x16\xfc\xa3\xc9\xe1\x61\xbd\xda\xac\xfa\x66\x20\x3a\x3e\xa2\xa6\x16\x19\xbb\x19\xb0\xd0\x09\x24\xb2\xe4\x0c\xbe\x49\xc6\x08\x1d\xe0\x0b\xc7\x47\xc5\x13\x10\xe0\xec\x74\x8a\xb3\x87\x81\xa9\xe1\x12\xe0\x9b\x93\x69\xba\x20\xcb\xe3\x4a\x30\x1d\x3c\x03\xe3\xb8\x27\xd9\x49\x56\x53\x75\x11\xf1\xc1\xc9\x2b\x39\x65\x7b\x9e\x8b\x1f\x1f\x15\x4f\x71\x34\x83\x9c\x9d\xe1\x32\xe0\x9b\x93\xe9\x69\x47\xd2\xe3\x46\x30\x05\x9e\x83\xc1\x2e\x33\x92\x91\x81\xa7\xee\x42\xf2\x93\x93\x23\x59\x1f\xf7\x47\x16\x12\xfd\xb4\x1b\x9b\x2f\x84\xe3\xc6\xa1\xdb\xda\xab\x43\x8b\x75\x5c\xbf\x04\xb1\x36\xbe\x51\x56\xbb\x8d\x51\xcd\xb5\x98\xcf\xaa\xc2\x48\x5a\x62\x47\xc6\x72\x2d\x02\x8e\x45\xff\x73\x2d\x82\x8a\xfd\xa5\x92\x11\x58\xcc\x21\x8b\xbc\xed\xc2\x6b\xd9\x2f\x99\x67\x4a\x55\x68\xc7\xc3\xf9\xf5\x40\x7c\x55\x5d\xcc\x3e\x30\x4c\x36\x68\xf4\xc7\x1b\xa4\x60\x50\xe1\x46\x74\xff\x80\xd8\xe7\xa0\xc8\xdd\x9b\x20\x54\x56\x1b\x65\xd8\xc6\xba\x48\xfe\xf5\x75\x96\xf9\xa9\x70\xc9\x55\x98\x75\xf3\x59\x96\x99\x8b\x84\x70\xe8\x4f\xa1\x1c\x3b\x11\x94\x34\x66\x50\xc6\x68\x1a\x92\x15\xe1\xb9\x6a\xf2\x5f\xaa\xb2\x4b\x8a\x20\x13\xd3\xad\xa7\xa2\x4a\x3a\x91\x05\xf0\x09\xe1\x7e\x28\xbb\xe5\xbe\x44\x47\x76\x24\x69\x20\x08\x92\x1a\xf4\x53\xcb\xc8\x48\x96\x03\xcb\x22\x52\x14\x79\xdd\xe6\x2d\x67\x86\x75\xf7\x7c\xd2\x54\x13\x38\x1b\xa6\xbd\x41\xc5\x17\x0f\xb1\x4c\xa3\xc0\xb2\xc2\x9c\xfd\x91\x25\x5d\x12\x56\x4d\xfe\x98\x97\x49\x11\x82\xed\x20\x62\x28\x7a\x26\x45\x6d\x09\x18\xb6\x3d\x44\xe9\xcd\xf3\x32\xef\xf2\xa4\xc8\xdb\x8b\x9e\xa4\xed\xd9\xfc\x85\x33\xc3\xd0\x56\x19\x86\x1c\x8d\x46\x97\x36\x1a\x62\xb9\x2b\x96\x9a\xee\xa2\x8d\x12\xe2\x83\x87\x9a\x01\x0e\xf8\xd5\x87\x22\x69\xbb\x30\x3d\xe7\x45\x36\x87\x05\xd7\xc2\x56\x52\xc1\x12\x6b\x78\x03\x04\xb1\x89\x09\x7c\xe2\x79\x2d\xf8\x02\x52\x5c\x73\xe2\x4d\xdf\xe2\xe2\x35\xcd\x2a\xcd\x63\xc8\x32\x4c\x5e\xeb\x22\x61\x05\x11\x2c\xe1\xfd\x37\x5f\x2f\xfa\x97\x3f\x2f\xe3\xc5\x3a\xf8\x73\x1c\xff\x6b\xfc\x2f\xac\x3f\x18\xf0\xc2\x86\x3c\x91\xa6\x55\x68\x45\xf5\xb5\x28\x40\x26\xad\x35\x1c\x0b\xad\x3d\x01\xed\x99\x98\xdf\x1a\x5a\x18\xdd\xaa\x9a\xdd\xe3\x4f\xd6\x44\xdd\x14\xd1\xae\x15\x28\xb0\x06\x84\xd1\xb1\xe9\x10\x92\x51\x61\x30\x2a\x91\x0f\x19\x97\x55\x6c\xa6\x10\x55\xe0\x6b\x83\xce\x6a\x72\x18\x7b\x2d\x9d\x44\x14\x10\x47\x1d\x9d\x44\x20\x8c\xee\x77\xd4\xe3\x82\xde\xfb\xfa\xca\x26\x59\xd6\x88\xcc\xce\x39\x8c\x15\x3d\x22\x3e\x73\xa3\x74\x35\x7e\xdb\x97\xfe\x48\xca\xa2\x9a\x07\x7f\xac\xca\x24\xad\xe6\xc1\xef\xab\xb2\xad\x8a\xa4\x9d\x07\xef\x7e\x5f\x5d\x9b\x9c\x34\xc1\x9f\xc8\xf3\x3b\x65\x6f\x13\x23\xad\x36\x75\xcb\xfa\x45\xcc\x46\x9b\x8d\xe7\x90\x58\xee\x96\x9b\x35\xb1\xcd\x80\xef\x4f\xcb\xd3\xda\x36\xc9\xfd\x4a\x2b\x72\x03\x4b\x30\xaf\x8e\x65\xe9\xc3\x42\x8e\xca\x72\xa5\xce\xab\xc3\x95\xf8\xbc\x6c\x49\x17\xc4\xfd\x94\x6f\x10\xeb\xab\x53\xd1\x72\xf3\xbd\xb1\xed\x64\x02\x26\xab\xa6\x51\xd5\x58\xef\x2c\xf8\xac\x3a\x92\x46\xd8\x37\x1a\xd8\xe4\x12\x69\x99\xd8\x08\x67\x36\xdf\x83\x1c\x7b\xd1\x47\x99\x13\x31\xaa\x7c\xab\xd1\x35\x90\xe7\xaa\xc9\xd8\xea\xf3\x21\xe0\x8b\xd0\x45\x31\x14\xd0\x74\x41\x7c\xa7\x1f\xfc\x97\xdf\x36\xf4\xc7\xb2\x8e\x92\xf6\xff\xec\x2e\x46\x35\x60\xba\xb6\xae\x7c\x30\x27\x6d\xee\xd1\x53\xd2\x9e\xba\x21\xa1\x48\x7c\x46\xf6\xbe\x1a\x22\xb1\x1c\x9b\x52\x68\xd3\xa6\x2a\x8a\x61\x99\xfb\x92\xbc\x0c\x2a\x5d\xad\xb9\xee\x45\x16\x16\x7e\x3d\x04\x0c\xbe\x47\xa7\x0d\x4e\x92\x8b\x0d\x6e\xbc\x61\x69\xb0\xf9\x7f\xde\xed\x88\x8f\x6a\x0f\xa6\xf7\x6b\x4a\x77\x37\x9a\x9e\xaa\x42\x0c\x69\xe8\x6e\x03\x12\x3c\x84\xc4\x7e\xbf\x1c\x23\xb1\xdf\xb9\x49\x2c\x96\x71\x3c\x46\x63\xb1\x80\x44\x24\x54\x78\x2a\xae\x79\xf6\x4d\xf5\x16\x35\xd5\xb3\x99\xf1\x87\x0b\x25\xc6\x04\x52\x38\x60\xa5\x55\x11\xbe\xb4\xe1\x62\x1e\xf4\xbf\xb6\x97\xe1\xd7\x4b\x36\xfc\x5a\x3c\x0e\xbf\xbe\xb4\xe1\x52\xc2\x2e\x25\xec\x52\xc2\x2e\x25\xec\x4a\xc2\xae\x24\xec\x4a\xc2\xae\x24\xec\x5a\xc2\xae\x25\xec\x5a\xc2\xae\x25\xec\x46\xc2\x6e\x24\xec\x46\xc2\x6e\x24\xec\x56\xc2\x6e\x25\xec\x56\xc2\x6e\x25\xec\x4e\xc2\xee\x24\xec\x4e\xc2\xee\x24\xec\x83\x84\x7d\x90\xb0\x0f\x12\xf6\x41\xc2\xee\x25\xec\x5e\xc2\xee\x25\xec\x5e\xc2\x2e\x62\x60\x8c\x18\x58\x23\x06\xe6\x88\x01\x3c\x34\x1e\xb4\x1e\x34\x1f\xb0\xdf\x02\x18\x70\x01\x2c\xb8\x00\x26\x5c\x2c\xb5\x15\x40\xb8\x15\x9c\x06\x85\xb6\x76\x39\xcd\x55\x35\xa7\x03\x3e\x05\x5c\x06\x78\x04\x30\x38\xb0\x27\x30\x17\xb0\x06\x50\x36\xd4\x25\xd4\x53\xaf\x03\x96\xbc\xc0\x51\x2d\x10\x8c\x95\x2a\xab\xce\xa0\x74\x01\x4b\xf7\x8b\x68\xcb\xfe\xed\x54\xa8\x18\x42\x3d\xac\xa2\x15\xff\xa7\x40\xed\x21\x10\x5f\x57\x19\x6a\x04\xcb\xb6\x5b\x9c\xcd\x0e\x02\x6d\x1e\x70\x2e\x5b\x05\x48\xad\xcd\x06\x96\xad\x2d\x95\x59\x43\xa0\x95\xa5\x2e\x2b\x08\xb4\x54\xeb\xa2\x2a\xd4\x52\x17\x45\xaf\x96\xaa\xf4\x19\x31\xb7\x8f\x70\x2b\xcd\x3e\x0c\x64\x01\x41\x6c\x46\x62\xa0\x31\x04\xb5\x59\xaa\x07\xdd\x43\x48\xcd\x5c\x3d\xc0\x03\x04\xb0\xd9\xac\x87\xdc\x41\x48\x9b\xe1\x7a\xc8\xad\x02\x89\xd4\x75\x03\x01\x6c\x26\xec\x21\xd7\x10\xd2\x66\xc7\x1e\x72\x05\x21\x97\x48\x4d\x55\x13\xb8\x6a\xaa\x58\xc2\x55\x51\xc5\x0e\xc3\xde\x8e\x01\xa2\x3d\x0b\xc3\xf3\x56\xc6\xb0\x3b\x85\x58\x00\x08\xbb\xd9\x29\x64\x0c\x20\xed\x56\x6f\xcf\xdc\xea\x0c\xd0\x30\x7a\x7b\xe6\x46\x67\xe5\x76\x9b\xb7\x67\x6e\x73\x3e\x17\x63\xd5\x44\x7b\xe6\x26\xe7\x80\x48\x2d\x37\xa0\xdc\x6e\xf0\xf6\xcc\x0d\xce\x00\xed\xf6\x6e\xcf\xdc\xde\x0c\xd0\x30\x77\x7b\x0e\x15\xc5\xbb\xea\x08\xf5\xef\xaa\x22\xd4\xbe\x6e\x6b\xb6\x95\x4b\x58\x5b\x9d\xc9\xd3\x8c\x2e\x40\x17\x26\xa8\xcd\xfa\x02\x25\x36\x51\x6c\x6e\xc0\x51\xf6\x26\x86\xe6\x0f\x1c\xf0\xc1\x04\xb4\x39\x06\xc7\xd8\x99\x18\x36\x0f\xe1\x18\x5b\x04\x03\xd5\xcd\xc6\x04\xb4\xf9\x0c\xc7\x58\x9b\x18\x36\xe7\xe1\x18\x2b\x13\x63\x89\x6a\x06\x33\xa9\x5b\x33\x88\x65\xdd\x8a\x41\xec\xca\xf4\x32\x3a\xb4\x50\xf2\x5f\x90\xde\x82\xec\x15\x24\xa7\x20\xf7\x04\xa9\x25\xc8\x1c\x41\x62\x08\xf2\x3e\x98\xd5\xc1\x8c\xad\xcf\xc6\xf0\xd9\xf6\x57\x28\xde\x52\x1b\x72\xf0\xd1\xbb\x02\xb3\xd0\x86\x36\x8a\xb9\x35\xd8\x58\x85\x55\x43\x40\x85\xdd\xeb\x83\x2e\x03\xe2\x41\x85\x50\x9d\x5e\x05\xdd\xa9\xa0\xaa\xb7\xab\xa0\x5b\x0d\xd4\xac\xf1\x46\x85\x58\x3b\x2a\xbc\x56\x41\x57\x8e\xfa\xae\x54\xd0\xa5\x59\x5f\xdd\x18\x8e\xfa\x6a\x36\x71\x54\x17\xe6\x38\x5a\x96\x83\x01\x2e\x54\x40\x97\xb1\x61\xbe\x63\xc9\x78\x10\x84\xbd\x0a\x8f\x98\x1d\xe4\x3e\x96\xec\x07\x81\xdf\xa9\xf0\x2e\x07\x00\x79\x90\x9a\x09\x21\x60\x1b\x15\xcc\xe5\x0a\x20\x27\xb2\x64\x45\x08\xfc\x4a\x85\x47\x9c\x02\xe4\x47\x96\x0c\x09\xb3\x8a\x66\x94\x11\x29\x34\x1b\x8a\x29\x03\x15\x4e\x66\x4c\x6a\xce\x84\xc1\x2d\x14\x38\xb7\x13\xc9\xec\x09\xcf\x9f\x10\xf8\xbd\x02\x8e\xba\xd0\x90\x49\xe1\xb9\x14\x02\xbe\x53\xc0\xdd\x0e\x34\x64\x55\x4a\x5e\x85\x40\x6d\x14\x28\xb7\xfb\x0c\x19\x16\x9e\x63\x21\xe0\x2b\x05\x1c\x75\x9e\x21\xdb\xc2\xf3\x2d\xcc\x18\xaa\x2d\x46\x44\x50\x2d\x87\x79\x8e\x9a\x7f\xa1\x19\x18\x8e\xb0\xc0\x10\x5c\xbe\xa4\xe6\x62\xce\x6c\x0c\x45\xdc\x63\x78\x88\x77\x29\x79\x99\x33\x33\x43\xf1\x76\x18\x9e\xcb\xdf\x94\x1c\x0d\xcb\xd2\x50\xf0\x0d\x06\xee\xf2\x40\x25\x5f\x73\x66\x6c\x28\xde\x0a\xc3\x43\x7c\x52\xc9\xdd\x9c\xd9\x1b\x6e\x5d\xd4\xb8\xa3\xd2\xa1\x3e\x21\x74\xe7\x31\xcb\xab\x4c\x61\x82\x19\x4a\x30\x01\x09\xe6\x17\xc1\xf4\x21\x98\x1d\x04\x93\x7f\x60\x6e\x0f\x4c\xdd\xc1\x79\x39\x38\xe7\xd6\xcf\xa7\x8d\x64\x73\x10\xc6\x96\xcd\xf5\x34\x3d\xb3\xb9\x5e\x16\xcf\x6c\x8e\x56\xc1\x9d\xcd\xd1\xfa\x7a\x66\x73\x54\x4b\x9e\xd9\x1c\xd5\xad\x3b\x9b\xa3\x86\xf0\xcc\xe6\xa8\xf9\x3c\xb3\x39\x6a\x74\x77\x36\x47\x3d\xc4\x33\x9b\xa3\x8a\xf6\xcb\xe6\x2e\x99\x67\x36\x37\x00\xfa\x66\x73\x03\x82\x6f\x36\x27\x10\x46\xb2\x39\x01\xe6\x9b\xcd\x09\x78\xdf\x6c\x4e\xc0\x8f\x64\x73\x02\xcc\x37\x9b\x13\xf0\xbe\xd9\x9c\x80\x1f\xc9\xe6\x04\x98\x6f\x36\x37\x58\xc5\x2f\x9b\x13\xe0\x63\xd9\x5c\x0f\xe7\x91\xcd\x0d\x70\x9e\xd9\xdc\x00\xef\x99\xcd\x09\x78\x77\x36\x27\xa0\x3c\xb3\x39\x01\xee\x99\xcd\x09\x70\x77\x36\x27\xa0\x3c\xb3\x39\x01\xee\x99\xcd\x09\x70\x77\x36\x27\xa0\x3c\xb3\xb9\xc1\x18\x5e\xd9\x9c\x80\x1e\xc9\xe6\x2e\xd9\xc4\x6c\x0e\x20\x4c\xcb\xe6\x00\xe2\xb4\x6c\x4e\x22\x7a\x65\x73\x12\x7c\x5a\x36\x27\xf1\xa6\x65\x73\x12\xcf\x2b\x9b\x93\xe0\xd3\xb2\x39\x89\x37\x2d\x9b\x93\x78\x5e\xd9\x9c\x04\x9f\x96\xcd\x01\xeb\x4e\xc9\xe6\x24\xda\xf4\x6c\x4e\x5b\x70\x57\x96\xa1\xc1\x2a\x33\x58\x44\x06\x6b\xc4\x60\x09\x18\xac\xf0\x82\x05\x5c\xb0\x3e\x0b\x96\x5f\xe1\xd2\x2a\x5c\x36\x95\x4b\xa2\xf6\x74\x0e\xc2\xd8\xd2\xb9\x9e\xa6\x67\x3a\xd7\xcb\xe2\x99\xce\xd1\x2a\xb8\xd3\x39\x5a\x5f\xcf\x74\x8e\x6a\xc9\x33\x9d\xa3\xba\x75\xa7\x73\xd4\x10\x9e\xe9\x1c\x35\x9f\x67\x3a\x47\x8d\xee\x4e\xe7\xa8\x87\x78\xa6\x73\x54\xd1\x7e\xe9\x5c\xf1\xe8\x99\xce\x0d\x80\xbe\xe9\xdc\x80\xe0\x9b\xce\x09\x84\x91\x74\x4e\x80\xf9\xa6\x73\x02\xde\x37\x9d\x13\xf0\x23\xe9\x9c\x00\xf3\x4d\xe7\x04\xbc\x6f\x3a\x27\xe0\x47\xd2\x39\x01\xe6\x9b\xce\x0d\x56\xf1\x4b\xe7\x04\xf8\x58\x3a\xd7\xc3\x79\xa4\x73\x03\x9c\x67\x3a\x37\xc0\x7b\xa6\x73\x02\xde\x9d\xce\x09\x28\xcf\x74\x4e\x80\x7b\xa6\x73\x02\xdc\x9d\xce\x09\x28\xcf\x74\x4e\x80\x7b\xa6\x73\x02\xdc\x9d\xce\x09\x28\xcf\x74\x6e\x30\x86\x57\x3a\x27\xa0\x47\xd2\xb9\xe2\x71\x62\x3a\x07\x10\xa6\xa5\x73\x00\x71\x5a\x3a\x27\x11\xbd\xd2\x39\x09\x3e\x2d\x9d\x93\x78\xd3\xd2\x39\x89\xe7\x95\xce\x49\xf0\x69\xe9\x9c\xc4\x9b\x96\xce\x49\x3c\xaf\x74\x4e\x82\x4f\x4b\xe7\x80\x75\xa7\xa4\x73\x12\x6d\x24\x9d\x03\xd7\xb7\x8d\x5d\xd3\xca\xaf\xb9\xed\x81\xc5\x86\xb1\xfe\x7c\xd4\x83\xba\x89\x4c\x6c\x61\xe7\x9f\xf5\x83\x1d\xf8\x69\x65\x7e\x09\x13\x7e\x90\x79\x90\x51\xcb\xd6\x90\x1b\x47\x2c\xc7\xb4\x38\x8d\xcf\xfc\x36\xaf\xcf\x41\xd7\xf4\x7f\xcc\x41\x49\x7f\xbd\x10\x5a\x72\xaa\xaa\x0e\x2f\x51\xa8\x65\x56\x6a\x99\x95\x9a\xb6\xe5\xfb\x61\x74\x07\xb5\x7e\x1b\x4e\x57\xc1\x03\x4f\xfa\xa5\x27\xe2\x0e\x19\xbb\x06\x7a\xfe\xc6\x9d\xb1\xbd\xfa\x3e\x99\x07\xa9\x96\x4e\xd2\xc2\x43\x3e\x00\x26\x87\x53\xde\x0c\xc7\x8e\x34\xf5\xa5\x55\xc1\x6e\x17\xf4\x45\xe8\xa1\x74\x00\x37\x0b\x0f\x91\xb2\xa9\x22\x65\x93\x45\x52\x6e\x15\x12\x87\x0a\x5f\x75\x77\xf9\xc0\xff\xab\xc3\xba\xb4\x1e\xb9\x22\x18\xdc\x4b\xc5\x6f\x27\x4b\xab\x32\x63\xd7\x7b\x5b\x63\x41\x85\xc1\xa3\x42\x85\xc1\xe3\xc3\xc1\x2b\xf3\xe0\x65\x81\x71\x45\xcf\x06\x06\xbb\xbc\x88\xed\xaf\xee\xfb\x95\x4c\x04\xbb\x6a\x20\x88\x45\x33\x10\xc4\xa2\x18\x2b\xa3\x6c\x9c\x11\x0e\x82\x68\xe5\x1b\xd4\x58\x95\x15\xba\x29\x6b\x1f\x44\x63\xbc\x54\xec\xd0\x76\x4d\x5e\x6b\x35\x39\x94\xdd\x39\xac\x4e\x61\xf7\xb5\x26\xef\xab\x2c\xfb\xde\xea\xc0\x7b\xfa\x03\xa8\xb1\x0b\xc2\x15\x5a\xf2\xce\x70\xc7\xd1\x10\xd1\xd5\xa5\x55\xf1\x53\x5a\x24\x6d\xfb\xc3\x8f\xef\x68\x4f\xc9\xef\x32\xc2\xae\x50\xe2\xf3\x07\xe2\x14\x8d\x76\xf9\x63\x5a\x15\xd7\x4b\x29\x09\x77\x99\x46\x77\x2e\x0a\xce\x6f\xc4\x90\xf0\xf3\x1d\x96\xde\x27\x1a\xee\x8a\xb2\x74\x42\x08\x80\xea\x37\x08\x80\xea\x15\x63\x2c\x30\x00\x35\x06\x5c\x2c\x78\x99\xbd\x2b\xb5\x01\x0c\x2c\x6c\x00\x18\x0b\xbc\xef\xb7\x01\x60\x2c\xce\xe3\x3e\x67\x75\x5a\xa8\x6f\x71\xaf\x80\x13\xf8\xec\x0b\xac\xc0\xa9\x2d\x86\x35\x76\x3e\x07\x9a\x5d\x7c\xe8\x5a\xab\x4f\x1e\xe8\x8f\xd3\x55\xf9\x8d\x14\x0e\x5f\x45\x20\x34\x67\x45\x20\x34\x6f\x1d\xe3\x82\x42\x68\xfe\xea\xe2\x22\x0a\x1d\x1e\x6b\x83\x90\xfe\x64\x83\x40\xb9\x58\x9c\xd6\x06\x81\x72\xb1\xda\x4d\xde\x24\x32\xe2\xb6\xda\x1d\x23\x23\x7e\xeb\x0b\xad\x02\xfa\x7b\xae\x66\x21\x2f\xca\x76\x1d\xc4\x64\x9f\x6e\x9d\xbe\x9b\x97\xa7\xca\xe1\xb8\x7a\xb1\xe6\xb5\x7a\xb1\xe6\xb2\x4e\xe2\x66\xb1\xe6\xac\x56\xe2\x7d\x89\xc3\x4d\xd1\x62\xe9\x3d\x68\xb1\x49\xdc\xe2\x9d\x68\xb1\x49\xdc\x6e\x93\xe1\xbe\x99\x11\xbf\x84\x37\xd1\x8c\x38\xa5\x17\x28\x80\xf2\x77\x47\x68\x83\x71\x9a\xd6\x4a\xa7\x6b\xb2\x3a\xad\x9c\x8e\xc8\x6f\xbd\x71\xf8\x22\x02\xa1\xb9\x23\x02\xa1\x79\xe4\x18\x17\x14\x42\xf3\x4b\x17\x17\x51\xe8\xf0\x4e\x1b\x84\xf4\x21\x1b\x04\xca\xc5\xe2\xa6\x36\x08\x94\x8b\xbd\xef\x1f\x6e\x2b\x1a\x71\x56\xed\x1e\xa3\x11\x7f\xf5\x85\x56\x01\xfd\xbd\x56\xb3\x90\x17\x65\xbb\x0e\x92\xd3\x32\x4d\x9d\xbe\xcb\xae\x4f\x72\xb8\xae\x09\xa0\x79\xae\x09\xa0\x39\xee\x08\x0b\x0c\x40\x73\x5b\x07\x0b\x5e\xe6\x70\x5a\x0b\x80\xf4\x26\x0b\x00\xc6\xc2\xe2\xb1\x16\x00\x8c\x85\xdd\x56\xc3\x4d\x57\x23\xfe\xaa\xde\x81\x35\xe2\xae\x9e\xc0\x0a\x9c\xbf\xb3\xaa\x76\xf1\xa1\x6b\xcf\x55\x8f\xec\x72\x80\xa1\xfa\xda\x75\xd2\xc3\x11\xfb\x17\x70\x06\x1c\x1c\xab\x8d\xa3\x78\x01\xcf\xac\xb4\x69\x43\x08\x7b\xdf\xed\x3d\x98\x9e\xdc\x6d\x77\xc3\x0a\x39\xca\xc7\x98\xdb\x34\x2f\xed\xda\x88\xfb\x9b\xe0\xb1\x7f\x78\x33\x53\x78\x69\x87\x8b\x99\xc4\x9d\x21\xf4\x1b\x95\xfb\x9c\xf7\x73\xb3\xec\x96\x80\x63\xd2\x30\x0c\xe7\xad\xd3\xaf\xa8\xb0\x9f\xd5\xcb\xf7\xcd\x4b\x84\x46\x11\x91\xb9\x86\x31\x78\x7d\xaa\x65\x0c\x5e\x9f\x77\x99\x24\x4f\x36\x51\x1e\x0f\x78\x64\x7a\xc6\x7d\x57\x96\x95\x9a\x3a\xab\xa5\xdd\x7c\xed\x8b\x6a\x58\x00\x4e\x57\xba\x6b\xe3\x98\x01\xbb\x91\x88\x6a\xab\x1b\x89\xa8\x06\x7c\x8b\xea\xdc\x4a\x44\x35\xb5\x32\x0f\x0c\x2d\x06\x2f\x7c\xba\xdd\x6c\xf0\xae\xaf\x5b\xad\x76\x13\x0d\xcd\x68\x37\xd1\xd0\x6c\x76\x7f\x5d\x6e\xa4\xa1\x59\x4c\xbb\x25\x4d\xbf\xc4\x6b\xaa\xc5\x64\xf7\x05\x08\x8f\xb7\x4a\xb8\x84\x77\xd0\xb0\xc9\x71\x93\xa6\x74\x1a\xaa\xa6\xb4\xce\x40\x7b\xe7\x4a\xbd\x61\x47\xb9\x87\x5e\x69\xcc\xc0\x06\xb3\x7e\xad\x04\xbc\x67\x65\xde\x55\xa4\x75\x9e\x18\x0f\xd7\x0d\xd1\xe2\xf2\x66\xfc\xa9\x0d\xf4\x12\x22\xe4\xc5\x01\xec\x7a\xce\x0d\xfd\xe9\xc5\x1f\x1e\xb7\x99\xf2\x80\x82\x26\xfa\x06\xb9\xc8\x5a\xdc\x23\x39\xfa\xe6\xda\x37\x78\xde\x05\x79\xe8\x6e\x6e\x79\x15\xaf\x17\x65\xb8\xde\xb4\xbf\x0b\x0b\x1a\x67\x58\xb8\xfc\xf3\xde\x30\x04\xfe\xe0\xde\x29\x2f\x08\x27\x6b\xbe\x98\xaa\x0a\x56\x3e\xda\x20\x8d\xbb\x43\xd8\x7b\x2d\x3f\x5d\xae\x45\x97\xd7\xfd\xc5\x93\xfc\x0b\x75\x14\x46\xc3\xf5\xd8\x1d\x13\x8a\xdd\x0a\x8b\xbe\x03\x88\x15\x49\x25\xbd\xf9\xdb\x2a\xd5\xb5\x13\x6f\x18\x5a\x2f\xf8\x62\xba\xdf\x99\xd7\x79\xf9\xbf\x8d\xb3\xe9\xff\xf5\x59\xf4\xa9\x6a\x2e\x21\x7f\x4d\xd6\x2f\x58\xe5\xb5\x56\xda\x73\x1a\xdb\xfa\x85\xdf\x04\x7f\xaf\x5c\x63\x8f\xaf\xc8\xc2\xfc\x92\x3c\x82\xcb\x67\x27\x5f\x27\xe6\xbe\x3e\x8e\x92\xa1\xff\xaf\xdf\x02\x17\xef\x36\xdf\x0f\x91\x36\x11\x07\x7b\x06\x46\x3e\x89\x55\x35\xf0\xfd\x96\x20\x5a\x6c\xda\x39\x22\xa2\x01\xf4\xc9\x7c\x34\x66\x84\xe8\x08\xb1\xb7\xa2\xa4\xb9\x18\xbc\x80\x19\x50\xed\xaf\x0a\x4f\x4e\x64\xff\x49\x7b\x49\x78\x92\x7d\xe8\x4f\xaf\xe7\x79\x7f\xe5\xdd\x83\x28\x59\xc4\xcb\x79\xb0\xd8\x6d\xe6\xc1\x72\xb5\xa2\xb6\xd8\xfa\x5a\x6f\x12\x45\xbd\xaa\xec\x01\xd3\xba\x48\x52\x72\xae\x8a\x4c\xbb\xf7\x7c\xdf\xff\xeb\xeb\x5b\x27\x69\xde\x7d\xed\xdf\xf4\xd0\x69\xd0\xf1\x60\xdf\xf6\x8c\xd2\x31\xb9\x0f\x6f\x86\xde\x86\x7e\x69\x43\xf2\x52\x27\xd8\x9b\x94\xa3\x7b\x8f\x14\x5a\xf0\x81\x58\xb5\xa0\x21\x49\x56\x95\xc5\xd7\x9f\xe7\x43\xce\x01\xde\x8d\x35\xdb\x26\x6c\x42\x60\xb8\x99\xd5\xa1\x46\x28\x81\x17\x23\x71\x3f\x71\x59\x75\x61\x52\x14\xd5\x33\x7b\xa8\x5a\xbc\x0a\x66\x22\xdc\xf5\xa2\xaa\xb8\xdb\x11\x99\x93\x10\xe0\x34\xbb\xca\xc8\x53\x9e\x92\xb0\xce\x5f\x48\x11\xf6\x8f\x7d\x1d\x82\x98\x4d\x52\x40\x76\x59\xd2\x91\x77\x3f\x2b\x22\xce\x35\x90\x2e\xbf\x8c\x81\x50\x2a\x14\x2c\x2c\xaa\x34\x29\x46\x80\x2f\x55\xd9\x9d\x35\x18\xb1\xdf\x12\xb6\xfa\xa2\xcb\x78\xc5\x45\x66\x9e\xda\x5e\x2c\xe2\xda\x8a\x0d\x51\x6d\x80\x42\x4c\x58\xce\xff\xe8\x37\x11\x85\xed\x05\x11\x6b\x0c\x8a\x49\xe7\x43\x0b\x0a\x39\x06\xcf\x65\x45\xb5\x18\x7b\x68\xb1\x78\x74\x6a\xd1\x2c\xb6\x68\xd1\x04\x54\xb5\xc8\xca\x95\x9a\x14\x8f\x3e\x5a\xd4\xa0\x2c\x5a\x44\x68\x39\xb5\xa8\xc1\x3b\xb4\xb8\xde\x82\x0b\x25\x7b\xc7\x95\x2f\xe7\xa2\x53\x79\xaf\xb3\xa8\x4f\x0a\xe7\xb3\x48\x64\x80\xda\xce\x10\x78\x97\x1f\xf6\xae\x9d\xf7\xd3\x44\x8c\x51\xd0\x8f\x41\x20\x3b\x39\x28\x81\x73\x9a\x62\x80\xa4\xde\x15\x68\x79\xdf\x29\x36\x06\x24\xf2\x9a\x62\xe4\x81\x30\x2e\x09\x3a\x70\x60\x65\xe2\x56\x7f\x1c\x64\x10\xdd\xf6\xf6\xf6\x00\x81\xd1\xd1\x86\x23\xf8\xdb\x6f\xea\xbd\x9c\x5a\xb5\x7b\x6d\xaf\xf9\x38\x65\xa8\xce\x87\xc0\x34\xe5\x87\x40\x35\x2b\x24\x10\x2a\x0e\xc0\x25\x45\x64\xf7\x70\x07\xf7\x53\x07\x2e\xa3\xd9\xde\x55\x9c\x6e\x4e\x21\xae\x50\x83\xbd\x42\x40\x29\xb0\x8e\xb6\xd7\x16\xc4\x5e\xf9\xda\x36\xda\x84\x1d\x31\x6e\x68\x1b\x04\x27\x10\x89\x62\x1b\x3e\x00\x40\x7a\x7a\xd4\x49\x47\xe0\x34\x27\xb4\xa4\x06\x8a\x26\x81\x10\xba\xfe\xdc\xf2\x69\xf6\xc0\x20\x30\x7b\x38\x65\x1a\x38\x1a\xed\x89\x51\x62\x95\xc8\x05\x80\xb4\x4e\x36\x79\x60\x7e\x10\xb2\x7d\x74\xe6\xf6\xf4\x1d\xbe\x3d\x7d\x67\x8f\x0c\xd8\x18\xae\xf8\x2d\xd1\x18\x2f\xd0\x65\x39\x8a\xf9\xeb\x12\xc8\xf3\x00\xda\xb5\xab\x6c\x4b\xb0\x82\xa4\x77\xd1\x70\xab\x2b\x7a\x05\xf7\x12\x1d\x1b\x6f\x90\xe1\xea\x8a\xd5\x8b\x4d\x6f\xb8\xb9\x22\xd9\x02\xc8\x5d\x65\xf6\xa3\x4f\x9e\xe0\x54\x87\x4b\x04\x65\x27\x49\x41\xec\x39\xf0\xb7\xab\xbc\x26\x02\xd7\xc5\xa8\x20\xa8\x3e\x34\x5a\x68\x6a\x3f\xc7\x39\x02\x8d\x8d\x0e\x04\x5c\x5a\x83\x21\xa0\xcb\xac\xf8\xf4\x12\x9b\x69\x99\xa2\xd0\xc1\x4f\x8b\x47\x85\x9b\x48\x82\xd4\xc7\x50\x94\x07\xf8\xe0\xfb\x80\x06\xe9\x95\x3e\xc3\xaa\x3f\xc1\xab\xb8\xab\x85\x39\x92\x96\x19\xee\x4a\x63\xd6\xe2\xae\x1a\x55\x4c\xf1\xc5\xa3\xc3\x5d\xbf\xb9\x0e\x34\x49\xc6\xbc\xd6\xa9\x16\x8d\x96\x87\xd7\x0e\x1c\x6f\xf5\x5a\x5d\x79\x98\xd7\x0a\x99\x15\xaf\x7d\xd0\xf5\xba\xb8\x4d\xaf\xaf\xb3\xe8\x9c\xb4\xe1\x89\x90\xec\x98\xa4\x5f\xac\x59\x96\x0e\x67\x56\x53\x6b\xc0\xd7\xcb\x68\x83\xf5\x16\x16\x4e\x30\xe9\x94\xa9\x0f\x5c\x67\xfa\x25\xcc\xcb\x8c\xbc\x1c\x82\x25\x3e\x04\x10\xa7\xaf\xd7\xea\x3b\xc5\x2b\x6c\x86\x54\x7c\xc4\x5e\x78\x0c\x44\x4e\x17\x92\x27\x52\x76\x2d\x78\xb5\x6b\x88\x89\x0f\x01\x5e\xa9\xf9\x4c\x1f\x30\x39\x20\x5d\x31\x64\x43\x83\x27\xbf\x84\x5f\xf8\xf9\xf6\xd0\xfd\x78\xca\xee\x86\x74\x75\x57\x3e\xb2\x8b\x96\xd8\xaf\x37\xa1\x9e\x27\x36\xed\x46\x67\x52\xd4\x2c\xc5\x9f\x6b\x25\x82\xa1\x48\xc5\x94\x42\x31\x26\x51\x31\x78\x7a\x85\x02\xcb\xcc\x1d\xc5\x41\x8b\xb5\xc1\x25\x2c\x51\x53\x39\x0c\x4d\x64\x9d\x2e\x6c\x05\x46\x99\x6c\x94\x0f\x62\xaa\xf2\x9a\x13\x7d\xea\xdc\xb0\xc0\xfb\xb5\x67\xeb\x5d\x72\xda\x67\xb2\xc5\xab\x9d\xb7\x4b\xcb\x66\x9b\x69\x2f\xff\xdd\x76\x77\x5c\x6c\x1f\x6e\x11\x1f\x21\xa2\xd7\x07\x06\x53\x92\x65\xfc\xb0\xa8\xa9\x75\xab\x39\xdc\xbb\xd2\xad\xba\x53\xe3\xcd\xe2\x1d\x62\xf7\xa6\x19\x4d\x43\x09\x16\x4d\x43\x21\x8c\x26\x89\xa1\x46\x93\x0a\xac\x86\x8b\x81\x83\x16\x23\xd1\x24\x4a\xd0\x68\x52\xd0\xb0\x68\xd2\xb1\xed\xd1\x24\x5f\x67\x55\xe5\x1d\x8b\x26\x81\xf7\x37\x8a\x26\x54\x4e\xd7\xba\x10\x7b\x42\xf6\x4d\xa2\x29\x8d\x93\xc5\xf6\x78\x67\x34\x09\x22\x7a\x7d\xdc\xd1\x24\xb5\x6e\x35\x87\x7b\x7b\xb2\x55\x77\x78\x34\x69\xde\x41\x9a\xa6\x6a\x90\x58\xe2\xdf\xb1\x48\xe2\x45\x30\x8e\x04\xb4\x1a\x45\x10\x50\x0d\x12\x0d\x1e\x29\x44\xe2\x87\x7d\x47\xa3\x07\xa0\x60\xb1\xa3\x62\xda\x23\x47\xbe\x39\x0c\xa5\x1c\x8b\x1b\x81\xf5\x37\x8a\x1b\x44\x4a\x7b\xd4\x88\x67\x91\xdf\x26\x6a\xc8\xc3\xfa\x61\x75\x6f\xd4\x70\x22\x6a\x6d\xdc\x31\x23\x35\x6e\x35\x85\x7b\x8b\xb4\x45\x6f\x78\xc4\x68\x5e\x31\xc0\x30\xff\xf9\xbf\x2e\x12\xec\xd8\xf7\x06\xe4\x82\x2a\x76\xd4\x36\x61\x55\x16\x5f\x3d\xa8\xb0\x59\x25\x19\xa7\x96\x4d\x19\x70\x0a\x76\xe3\x58\x4c\x00\x17\x3a\xac\xe8\x8f\xc7\x7d\xfd\xbd\x80\x3c\x76\xf4\x95\x11\xc7\x4c\x36\x3e\x37\xe7\x9a\xb7\x7e\xc5\xb9\xa9\x0b\x88\x0e\x7e\x5c\x76\xb1\xcf\xfb\x76\x56\x70\x48\xeb\xe0\x68\x12\x01\xee\x6b\x41\xee\x77\xe5\x4d\x97\x0e\x12\x36\x83\x64\xee\x0f\x7f\xec\xc6\xa0\x11\x9d\x6b\x8a\x75\x8b\xf7\xd9\x45\x42\xb9\x37\x47\x21\xa1\xf4\x38\x8e\xdd\xe9\xd3\xf4\xc6\x3b\x2b\x83\x19\x5c\xd9\xf1\xf1\x61\x39\xbe\x7f\x33\xa9\x44\x4f\x65\x95\x0d\x6a\x02\x99\x7d\xb6\x91\x45\xd7\x34\xac\x4c\x1c\x2b\x1b\xb6\xb5\x2b\xf3\xb1\x6b\x4c\x18\xfb\xd4\x8b\xda\xc8\xc1\xb9\x13\xb9\xf6\x0a\x5e\x9a\x1e\x12\x0e\xa3\x00\xa4\x1d\x38\x92\xcc\x2f\xac\xb8\x3e\xcb\x58\x8a\xa5\xcd\xb5\x89\x9b\x64\x36\x57\x6d\xad\xb4\xf0\xc5\x68\xbf\x77\x07\x7d\x9a\x76\x45\x3c\x24\x0a\x2d\xcf\x8b\xe3\x61\x80\x2d\xdd\xe0\x66\xf5\x75\x90\x69\xef\x56\x3a\xb4\xd7\x4f\x59\x61\x15\x54\x64\x5e\x2c\xc4\x39\x1d\x64\x4a\xd2\x72\x83\xa6\xaf\x00\xed\xc5\x43\x80\x2d\xc6\x7f\x09\x34\x79\xec\xca\xb1\x8d\xc8\xde\x4b\xfc\xf8\x6c\xa2\xbd\x2d\x0b\x2f\x6d\xd8\x55\xd7\xf4\x1c\x26\x29\x6b\x19\x2e\x49\x99\xd7\x57\xda\x3a\x54\xfc\x1c\x13\x8d\x68\x17\x84\xb1\x0e\x3d\x6d\x07\xa7\xf6\x02\xab\xe5\x18\xce\x1b\xec\x42\x75\xef\x0f\xbd\xb6\xa4\x09\xd9\x4c\xba\x94\xb6\xdf\xe1\x67\x29\x69\xf1\x02\xe4\x23\xb3\xb1\xd8\x6a\xdc\xff\xce\x2f\x6f\x00\x9f\x22\xe4\x93\x89\x11\x99\x18\xd1\x5b\x6f\x52\xee\xd9\x89\xa3\x82\x9a\xe0\x80\x99\xb9\x09\xbf\x77\xbe\x8c\xa4\x55\xbf\x79\xad\xd4\xaa\x3f\xdc\x68\x21\x45\x57\x85\xd6\xb7\x1e\x6a\x9e\xe3\x1a\xe8\xac\xea\x97\xbe\xce\xfa\x18\x65\xb1\xb4\x0f\xca\xdc\x38\x4c\x68\xb8\xd0\x7f\xec\xca\xb1\x7d\x86\x22\x92\xd1\xf5\x71\xb0\x83\x31\x8e\xb6\xfd\x2a\xe8\x29\x2f\x3a\x1a\x0c\x49\x51\x9f\x93\xf7\xbc\xf8\xc7\xad\xba\x91\x18\x7b\x41\x1a\x7b\x39\x3a\xd1\x04\x46\x04\x4c\x06\x09\xad\xeb\x0b\xc7\xae\x0c\x33\x72\x4a\xae\x45\x67\xb1\xb2\x7b\xeb\xb6\x3a\x8e\x13\x9b\xb3\x55\xc2\xd0\xa1\xc4\x37\xa7\x63\x61\xfb\x42\xb7\xf4\x07\x9b\x6e\x49\xe9\x8f\xc1\x52\x5e\x4a\x74\x1f\xf9\x24\xa3\x3f\x06\x79\xe8\xdc\x43\x95\x86\x8f\x55\x4d\xca\xfe\xa0\x6c\x53\xd5\x59\xf5\x4c\x53\x92\xc7\xc7\x82\xdc\xa6\xec\xdb\x44\x83\x01\xad\x09\x38\x14\x79\x88\x89\x91\x41\x1a\x33\x9d\x83\x28\xf2\xe1\x80\x90\x41\x1a\x3f\x8d\x43\x34\x81\xc3\x54\x57\xcb\xd6\xf4\xc7\xdf\xd5\xde\xc6\x17\x6c\x0d\xa1\xca\x6c\x88\x77\xcc\x30\x32\xf2\x45\xa9\xa5\xd1\x72\x59\x57\x72\x40\xb4\x0f\x38\xf0\xd2\x31\x0e\x98\x09\x05\x28\x66\x5f\x49\x27\xf2\xe3\x00\xac\x7b\x7f\x4b\x15\x44\xc7\x24\x7b\x24\x8a\xaf\xa0\xe7\x54\x74\x47\xe2\x64\xea\x26\xbf\x24\xcd\xd7\x29\xf8\xbb\xe4\xb8\x43\xe4\x5b\x92\x6d\x96\xac\x75\xc2\x8a\x3a\xf9\x37\xc4\xbd\x9d\x2c\x97\x0f\xdb\x78\x1f\x23\x2c\x17\xcb\xe5\x71\x1d\x1b\x2c\xcd\x96\xf4\x36\xf2\xcb\x78\x9d\xed\xcc\x1a\x29\xd1\x23\xaa\xe4\x15\x3d\x93\x95\x7d\x9b\x68\x4a\x90\xa8\x02\x7a\xb5\xa4\x8a\x1e\xe7\x28\x07\xcc\xaa\x13\x5a\x52\x87\x73\x60\x2d\xa9\xca\xc1\xab\x25\xbd\xd5\xd5\xb8\x5e\x7d\x5d\xed\x6d\x7c\x61\xa4\x25\x15\x74\xd1\x96\x94\x17\xfa\xb7\xa4\x0e\xeb\xe2\x2d\xa9\xc9\x61\xa4\x9d\x73\x85\x3e\xda\x92\x1a\x1c\xc6\x5a\x52\xd3\xba\xf7\xb7\x54\x58\x4b\x0a\x48\x38\xaf\x4a\xa5\x64\xc4\x3a\xb3\xb7\xaf\x6d\xd2\xe3\xc3\x26\x45\xe4\x5b\xa7\x09\x59\xa7\x3a\x61\x45\x9d\x62\xc7\xc3\x44\xf7\x5e\xaf\xf7\xd9\x1a\x73\xef\xe5\x66\xb3\x5d\x6e\x0c\x96\x13\x5b\x52\x2b\xf9\xd5\xfe\x61\xbd\xda\x1b\xe4\x95\xe8\x11\x55\xf2\x8a\x9e\xc9\xca\xbe\x4d\x34\x25\x48\x54\x01\xbd\x5a\x52\xfd\x26\x3b\x84\x03\x66\xd5\x09\x2d\xa9\xc3\x39\xb0\x96\x54\xe5\xe0\xd5\x92\xde\xe8\x6a\x42\xaf\xbe\xae\xf6\x36\xbe\x30\xd2\x92\x0a\xba\x68\x4b\xca\x0b\xfd\x5b\x52\x87\x75\xf1\x96\xd4\xe4\x30\xd2\xce\xb9\x42\x1f\x6d\x49\x0d\x0e\x63\x2d\xa9\x69\xdd\xfb\x5b\x2a\xac\x25\x05\x24\x46\x5b\xd2\xfe\x7e\x3f\xff\x66\xf4\x98\xc6\x19\xc1\x84\xdb\x1e\x1f\xb2\x44\xa1\xaa\x28\x92\x7e\x98\xec\xd5\x8b\x63\x9c\x6d\xb0\xfc\xe0\xb8\xcd\x1e\x36\x2a\xb3\x89\xad\xa7\x95\xf6\x72\xbb\x4f\x8e\xa9\x4a\x5b\x09\x97\xbe\x26\x5e\xb1\x32\x4d\xb5\x37\x48\xa4\x04\x03\x90\xcb\xab\xb9\x54\xee\x58\xd4\x09\x1b\xa6\x9b\xd0\x4a\xa2\xb6\xc7\xda\x47\x40\xd8\xab\x71\xbc\xc5\x87\x84\xf2\xbc\x7c\xe8\x5e\x3b\x8f\x34\x88\x3d\x45\xb4\x35\xa4\x25\xfe\x4d\x21\x6a\x39\xbc\x11\xd4\x08\x8f\xb4\x4f\x78\xd4\xa2\x6d\x9f\x4a\x78\xac\xe1\xd3\x2c\x77\x67\xc3\x82\x36\x79\x12\x7f\xb4\xc9\x13\xdb\xaa\xbc\x9d\xe8\x14\x27\xd9\x1a\x13\x8e\x90\x64\xb9\xda\xea\x84\x15\x15\x8a\x0d\x7e\x13\xfd\x96\xa4\xfb\xdd\x02\x9b\x99\xd8\x3f\x6c\x4e\x71\x66\xb0\x9c\xd8\xfc\x59\xc9\x67\x9b\x87\xcd\x62\x69\x90\x57\x22\x43\x54\xc9\x2b\x38\x26\x2b\xfb\x36\xd1\x94\x78\x50\x05\xf4\x6a\x0d\xf5\x1b\x3c\x11\x0e\x98\x55\x27\x34\x8b\x0e\xe7\xc0\x1a\x47\x95\x83\x57\xfb\x78\xa3\xab\x09\xbd\xfa\xba\xda\xdb\xf8\xc2\x48\x5b\x29\xe8\xa2\xcd\x25\x2f\xf4\x6f\x31\x1d\xd6\xc5\xdb\x4d\x93\xc3\x48\x0b\xe7\x0a\x7d\xb4\x01\x35\x38\x8c\xb5\xa1\xa6\x75\xef\x6f\xa9\xd0\x09\x4d\x49\x62\xb4\x25\xe5\x37\x98\xfa\xbb\xda\x7e\xb3\x5a\xa3\xb1\xbd\x5e\x9d\x56\x89\x46\x57\x9d\x1d\xee\x3f\x4d\xf5\xed\x74\xbf\x8a\x97\x58\xf7\xbf\xdb\x2e\xd2\xc5\x5e\x67\x38\xb1\x15\xb5\x52\x4f\xd2\xe5\x1e\x0c\xbb\x38\x75\x75\x25\x80\xd5\xc7\x6f\x21\x60\xa2\x9a\x6f\x92\x4b\x9d\xed\x87\xd2\xf9\xad\x08\xa9\x77\xca\x9a\xe4\x11\x63\x4e\x59\x0e\xb2\x79\x04\xba\x18\x04\xc9\xfb\xad\x05\xdd\xe4\x5d\x42\x9d\x9e\xde\xf5\x16\xf6\x1f\x5b\x07\x62\x54\xf1\x65\xa0\xbe\x6c\xc2\x2a\x90\xcd\xa2\x96\x35\x20\x9d\xfc\xd8\x02\x8d\x35\xc6\xf1\x05\x20\x8d\xfc\xe8\xfa\x8f\x6e\xd1\xbb\x9b\x23\xac\xb1\x04\x14\x46\x1b\xcb\x22\x2f\xbf\x58\x26\x3c\x2d\xdb\x77\xb4\x2d\x2a\xb1\x42\x6a\x2e\x7f\x55\x3d\x8b\x7e\x89\x8c\x2f\x1e\x9b\x15\xa4\x84\x23\x37\x3e\x4d\xdf\x8d\x80\x4a\x0d\x3d\xab\xff\x00\xed\x0d\xea\x85\xec\x78\xd7\x2f\xa0\x1a\xa1\xa9\xa8\x7d\xb9\xda\x2c\x77\x29\xba\x43\xe5\x5a\x66\xa4\x29\xf2\xd2\xd2\xfd\xd9\xb8\xfa\xc7\x14\x2a\xa3\x7f\xcc\x58\x6a\xa4\x3d\xde\x67\xdb\x73\x23\xce\x4e\x7f\xbb\xa3\xcf\xfd\xbc\xd4\x45\x65\xf2\x76\xd7\x01\x50\xea\x2f\xad\x56\x05\xb6\x6d\xe7\x6d\x88\xbb\x76\xe0\x6b\x37\x51\x02\xf8\x0f\x81\x86\x6c\x6c\xd6\xd7\x2e\x08\xbb\x1e\x2f\x79\xf7\xee\x67\x89\xa5\xdd\x7d\x42\x5a\xe2\x28\x3e\x5e\xbb\xae\x2a\x61\x39\x3c\xc6\x2a\xe5\x6b\x48\x92\xa5\xcd\xf5\x72\x54\x15\xf6\x40\xcd\x81\x1f\x21\x58\x0e\x47\x5e\xdb\x4e\xdc\x50\x3e\x04\xb5\xfd\x1d\x25\x7c\x2b\x9d\x2a\xc2\xe7\xa0\xc8\x5d\xbb\x1a\x11\xe8\x0f\x41\x91\x1f\x8e\xe4\x54\x35\xa2\xc9\x2d\x3b\x52\x76\x87\xe0\xdd\xc7\x3f\xc7\x71\x12\xbf\x53\xf6\x01\xc6\xc2\x0b\xb0\x15\x7c\x48\x19\xee\x35\xd3\xe3\xe7\x75\x16\x59\x2f\x82\x55\xb8\x45\x4b\x72\x09\xa2\x2d\xfd\x9f\x15\xb9\x68\xce\xc7\x9f\x66\x45\xae\x81\xd5\x1d\xf2\x13\x9a\x68\xe0\x9b\x36\x2d\x1b\x21\x8d\xb7\x21\x93\x96\x0c\x0d\x98\x6a\x96\x68\xb9\xa1\xb2\xbe\xce\x12\x56\x4b\xd1\x0e\x89\x3f\x5d\xc9\x8f\xa5\x5d\xc1\x6f\x1d\x62\xe4\xc8\xa5\xee\xbe\xaa\x9a\x84\x8d\x51\x00\x54\x8d\x6f\x44\x67\x77\x31\x2d\xb8\x33\xf5\xd0\xb6\x2d\x31\x36\x43\x0e\xdb\x46\xce\x0d\x39\x0d\x8d\x33\x5a\xe6\x9e\x9d\xea\x6f\x0a\x06\x74\x2d\x0b\xca\x7a\xcf\xae\xc3\xa3\x72\xa8\x65\x4e\x39\xc4\x16\x85\x81\xae\x65\x39\x46\x5f\x08\xd0\xe1\x51\x39\xd4\x32\xa7\x1c\x62\x81\x6f\xa0\x8b\x4d\x81\xea\x53\x73\x0a\x30\x2a\x01\x28\x70\x2f\x36\xf3\xa9\xf2\x81\xa2\x65\x62\x41\x1f\xd2\xea\xf0\xa8\x10\x6a\x99\x53\x0e\x31\x55\x25\xdd\x0d\x4d\xd4\xf5\x64\x51\x03\xc7\x9d\x13\x16\x39\x85\x10\x83\x3d\x1a\x56\x43\x7e\x6a\xdf\x3c\x2e\xb7\xb5\x2f\xf4\x8b\x7b\x56\xf5\x0b\x76\xd1\xf0\xd2\x7a\xad\x35\xd6\x52\x98\x2d\x9c\x7d\xbb\xb9\xa5\x4d\xc3\x1b\x40\x47\xb8\x1b\x4d\xdd\x70\xb3\x5e\xaf\x91\xf1\xa6\x48\x2a\xce\xa7\x29\xe2\x79\x08\xc3\xe2\x79\x1c\x3b\x01\xf0\xd2\xd2\x1e\x46\x23\x29\x0f\x9c\x98\x59\x4b\xbf\x4f\xb7\x97\x71\x68\x8c\xd9\x9f\x6f\xd7\x18\xd3\xce\x9c\x49\x97\x77\xe4\x22\x1f\x48\x1c\xc4\x2f\x93\xa7\xb0\xce\x8b\xa2\x05\xbd\xe3\xe7\x20\x19\x40\x6e\xda\xa4\xa1\xb1\x55\x89\xf1\x97\x34\xf9\x69\x13\x17\xf4\x07\x88\xa6\x1e\x82\x11\xc7\x2f\xa1\xf8\x45\x6e\x4a\xae\x3e\x18\xce\x91\x92\x82\x34\xda\x85\xf7\x23\x49\xd1\xe8\x49\x05\x4b\x12\xc4\x38\x9d\xd7\xf8\x11\x24\xae\xb9\xe1\x32\xfb\x01\x81\xfd\x47\x8e\xc8\xd0\x4b\xe5\x39\xec\xe7\xa0\x9e\xcb\xdf\xaf\x05\x64\x05\x4e\x89\x40\xf8\xe0\x43\x50\xdb\x72\x55\xce\x3a\xcb\xdb\x4b\xde\xf6\xc3\x8f\xb9\xf6\x2d\x17\x2f\xcc\x68\x37\xec\xac\xac\x14\x82\x28\x2d\xaa\x16\x27\xc4\x8a\x46\xa3\x8f\x37\x43\xe2\x08\x94\x78\x14\xc0\xa6\xc1\xb1\xae\x51\x5c\x5c\x61\x8e\xfd\xb7\xec\x8d\x41\xf4\xa6\x0a\x95\xf4\xb9\x81\x43\xd3\xae\xaa\x41\xa3\x4c\x96\xc7\x15\x82\xa2\xdb\x75\xe8\xd9\xf9\x2d\x22\x03\x82\xab\x47\x15\x4f\xee\x19\xb2\x1f\x53\xf2\x70\x52\xd2\xca\xd5\x62\x17\x3f\x9c\x74\xba\x76\xc1\x93\x2d\x59\x10\x43\x0e\xab\xd4\xeb\xcd\x72\xbb\x07\xd0\x63\x1d\x31\xbf\xdf\xc0\x10\xfc\x94\x90\x23\xbb\xb6\x5d\x7c\x01\x17\x1a\xa8\xa4\xed\xb2\x9f\x76\x64\x71\xdc\x20\x28\x36\xf1\xc5\x65\x13\xd2\x63\x9d\xfd\xb7\x38\x69\x6e\x4e\xae\x1f\xd3\x34\x53\xd4\x0e\x0e\x97\x2b\x94\xed\xc2\x93\xf5\x71\x9f\xc6\x26\x86\x4d\x76\x71\xe4\xff\x75\xf6\x3b\x31\x19\xf3\x85\x7c\x3d\x35\xc9\x85\xb4\x41\xdd\x54\x8f\x0d\x69\xdb\xf0\x98\x34\xfc\x85\x67\x16\x08\xa7\xa6\xba\xf0\x53\x69\xa0\x82\x32\xec\xd6\x71\xfd\x22\x8f\x7c\x76\x95\x0b\x36\x96\xa7\x3a\x7f\x17\x56\x7f\x4b\xee\x7f\x3b\xd6\x91\x60\xc8\xce\x2e\xf1\xe7\xbd\xe0\xc3\x5f\xfa\xb5\xbd\xb6\xee\x65\xea\xf8\x7a\xfc\xaa\x87\x25\x76\x9a\xc9\x79\x29\x85\x0d\x03\xd4\x93\x2a\x16\xf6\xe1\xb4\x5b\x05\xd3\x23\xea\x9b\x11\xe2\x38\xf8\xd8\xcc\xcc\x52\xbb\xbb\x60\x6c\x2c\xec\xdc\x7f\xea\x52\x0b\x4d\xe1\x82\xd8\xac\xa3\xfd\x58\x98\x1b\x03\x7b\xdd\xa1\xd7\x44\x10\x47\xdb\xb6\x7f\x1f\xe1\x93\xf9\x54\x03\x02\xe1\x2c\x86\xea\x17\xcf\xb5\x2b\x06\x99\xab\xf6\x19\x80\xf0\x05\x03\x21\x34\x35\x41\xd2\x84\x8f\xd4\xad\x48\xd9\xbd\x5f\x6f\x32\xf2\x38\x67\x55\x5d\x6e\x36\xf3\x40\xfe\x4f\x5f\xe1\x60\xb9\xf9\xed\x1c\x66\x3d\xe6\x87\x4d\xfc\x5b\x17\x81\x91\xe2\x9d\x4e\x4e\xff\xf0\xfd\x27\xbc\x42\xd5\xff\x3f\x75\xf9\x07\xad\xc8\x10\x74\xb2\x42\x2c\xde\xfb\x76\x75\x1d\x8b\x43\xcf\xec\x9f\x0b\x0a\x38\xbb\x18\x8c\xb8\x7c\x1d\x4e\xe7\x0d\x8f\x2d\x94\xf9\x85\x8f\x8c\xd0\xfe\x60\xd9\x72\x35\x07\x79\x79\xca\xcb\xbc\x13\x41\x7a\x1b\xe2\x2d\x58\xaf\x7a\xc4\x7a\xcf\xe3\xb8\x5b\x82\x91\xfd\xb9\xff\x0c\xfd\xbf\xe3\xba\xfc\x43\x56\x44\x77\x64\xcf\x89\xc0\x11\x2f\x76\xec\xa8\xfc\xa7\x0b\xff\x1d\xd7\xe5\x1f\xb2\x22\xba\x0b\xfb\x4f\x26\x8f\x78\xb1\x7b\xbb\xdb\x3f\x1d\xf9\xef\xb8\x2e\xff\x90\x15\xd1\x1d\xd9\x7b\x35\x62\xc4\x8f\x9d\xdb\x8f\xfe\xe9\xc6\x7f\xc7\x75\xf9\x87\xac\x88\xb2\x1e\x80\xcd\x65\xe3\x2f\x20\xc5\xe8\x4a\x82\x7d\x56\xd9\xfa\xe2\xa6\xd8\x17\x83\xaf\x07\x84\x0b\xfb\x84\x8d\x76\x9b\x00\xfa\x72\xbb\x29\xa3\xf1\x0a\x35\x98\x1d\xec\x67\xbb\xf5\x89\x1f\x50\x4e\xab\x6e\x2c\x39\xe8\xf4\xb5\x37\x93\xb1\xfb\xa3\x94\x37\x72\x9d\x5c\x39\x08\xc6\x38\xd1\x39\xcf\x67\x6c\xb3\x0a\x6a\x95\x21\x2b\x1c\x5e\x27\x35\xf0\x03\xfd\x43\x78\x26\x09\x35\x91\x95\xb0\x0d\x41\x5b\xc3\x12\xb7\x32\x18\x1c\xc5\x32\x1c\x4e\x1e\xec\x98\xd0\x4d\xc8\xf6\x6d\x59\xd0\xe4\x62\x9e\x7d\xe9\x4e\xd3\x86\x73\x46\xf0\xd5\xa5\x57\xed\x2a\x46\x38\x83\xc6\x26\xeb\x90\x45\x41\x70\xaf\x91\xad\x48\xae\x4f\xdb\x00\xdc\x4b\xe5\xc3\xc3\x8d\xe6\xe2\xad\xed\xfd\x20\x1b\x27\x87\x5b\x8c\x88\x7f\x13\x26\xab\x97\x8f\x67\xc1\x45\x28\x7f\xe1\xa9\x85\x6e\x90\x7c\x0c\xcd\x22\x36\x45\xb3\x6e\x7e\x42\xd7\x8a\x11\x26\xda\xbe\x70\x4b\xb1\x74\x08\xf5\xa5\x0c\xbf\xe3\x90\xb6\x0b\x05\xe0\xde\x1a\x7c\x6d\x7b\x82\x91\x61\x45\x6e\xc0\x73\xbb\x86\x15\xcf\xee\x4c\x9f\x83\xf6\x92\x14\xc5\xad\x92\x8e\xe3\x8f\x38\xf3\x18\xbe\x0b\x33\xba\x57\xf4\x31\x02\xa3\xb2\x33\x02\xbe\x11\x69\xab\x91\x25\xb0\xdc\xb5\x70\x23\xf9\xc6\x62\xba\xcb\x32\x82\x6e\xa0\x40\x2f\x61\xf0\x7c\x99\xc1\xe8\xae\x04\x31\x5b\x87\xe5\x64\xe6\xa0\x37\xb9\xbf\x1e\x45\xb4\xd8\xd2\x2a\x81\xbb\xff\xd6\xa1\xec\x64\x9c\xfd\xb9\x0a\x35\xc1\x22\x31\xdb\x59\xe0\x90\x7f\x68\x72\xdd\x9c\x07\xb0\x31\x42\x7e\xfa\xd0\x80\x47\x89\x7a\x69\xc7\xec\x05\x40\xbb\x6f\x6b\xf4\xc7\xde\x20\x41\x02\xc3\x38\x65\x2f\xb6\x3c\x38\xb7\x4e\x60\x36\xa0\x94\xac\xb5\xb2\xb2\xb1\x51\x9a\x1e\x0c\x4e\x2c\xef\x48\x80\xa7\xc3\x1d\x8c\xec\xc6\x86\xa7\xc0\x5d\x04\x10\xef\x77\x69\x3e\x5d\x93\xd5\x09\xcf\xba\xd5\xb3\xf6\x0e\x9e\x0e\xbf\x47\xae\x3f\x18\x27\xe4\x56\x82\x9f\xbb\x1b\x90\xbe\xbe\x2e\x95\xa5\xf9\xba\xdc\xb2\xa3\xf3\xc2\x0e\x53\x7b\x3e\x28\x62\x56\x91\x13\xb3\x56\xcc\xc5\xcc\x41\x6f\xba\xdf\x8f\x21\x7a\xbb\xbe\x76\xcc\xd7\xcd\xce\x6e\x7b\xed\x2c\xef\x08\x19\xd3\xe6\x6e\x8b\x24\xa7\x25\x3b\x97\x60\x65\x3c\x16\x09\x3a\xd8\x18\x21\x3f\x7d\x8c\x86\x04\x7e\xe6\xdd\x8f\xe8\x94\xc0\x18\x7d\x3a\x07\x09\x0c\xe4\x84\xac\xe7\xa3\x21\x66\x3d\x19\x2d\x6b\xcd\x1c\xac\xec\xd4\xa6\x07\xc5\x08\x9e\x77\x4c\xa8\xa7\x38\x9d\xcc\xec\xa6\x57\xcf\x6a\xba\x89\x98\xa6\x76\x5a\x82\x1c\xc5\x39\x1d\x1b\xdb\xb1\x70\xd0\xa0\x46\xc8\x78\x69\x62\x34\x16\xd0\x03\xcc\x5e\x24\xa7\x44\xc2\xe8\x83\x38\x48\x24\x40\xff\x18\x7b\xf1\x60\x83\x4f\x18\xca\x71\x09\x36\x55\xa8\x1f\x0a\x64\x2b\x08\x49\x49\xd0\x7d\xc7\xae\xfd\x6d\x8e\xe9\x52\x8f\xbd\xd5\xf8\x4e\x2f\xc7\x03\x45\xe6\x26\xaf\x11\x60\x51\xaf\xf0\x58\x65\x5f\xb1\xcd\xe2\x03\x00\x54\x3a\x3e\x8b\xac\xcc\x9e\x8e\xd7\xd4\x9c\xfb\x5d\xb9\xe7\x7e\x57\xa8\x3c\xe0\x3c\xb9\x71\xb2\xdc\x36\x4c\x66\x14\xba\xbc\x2b\x26\x3c\x9b\x01\x77\xf8\x6d\xad\x1b\xb3\x21\xe9\xcf\x41\x32\xd7\xbf\x88\xf1\xbf\xfa\x35\xc2\x3f\xb3\xb1\x3e\x46\x26\x1a\x8a\xdc\x75\x3c\x55\x55\xc7\x5b\x72\x8b\xd1\x3c\x36\x65\xb2\x57\x25\xcc\x79\x7e\xf7\x9c\xfa\x6a\x74\x4e\x5d\x31\x28\xad\x94\x0c\xd2\x39\xf8\xca\x6a\x92\x56\x45\x91\xd4\x2d\x51\xe1\xec\xe7\x00\x10\xa2\x46\x4f\xe3\xcd\x05\x9d\x85\xe6\x35\x13\x93\xd1\x62\x73\x2d\x7a\xa2\x1d\x91\x46\x59\x13\x31\xe7\xd3\x65\xa1\xaf\x94\xde\x04\xb5\x15\x18\x75\x7d\xe4\xbe\xb0\xd4\x24\x02\xcb\x32\x86\x40\xb2\xcc\xbb\x82\x7e\xe4\x60\xf5\xbc\x57\x80\x6e\xf0\x56\xb5\x1d\xfa\x30\xd1\x85\xfc\x97\xc4\x74\xeb\x28\x52\xc5\x48\x93\xf8\xe1\x66\xc6\x62\x8b\xb3\xbe\x42\x39\x54\x0e\xb4\x27\x36\xb4\x41\x3f\x1d\x3f\x57\xa3\x7e\x08\x1b\xd2\xd6\x55\xd9\xf2\x13\x5a\x06\x90\xa9\xc4\x1e\xc4\x23\xd0\x19\x5c\x9a\xd4\x5d\x5e\x95\x5e\x7c\x31\x60\x1b\x7f\x0e\xaa\x9c\x09\x62\xab\xb2\xa2\x29\xd5\x4e\x0a\xa9\xfd\xe7\x40\xc8\x16\xd9\xba\x90\x8a\x99\x30\x64\xb7\xd3\x4c\x0d\x5a\x93\xfc\xe7\xa0\xa3\x0e\xa5\x7f\x6b\xde\xae\x02\x37\x71\xd0\xa1\x69\xe2\xf2\x6d\x65\x1c\xe5\xa0\x5b\xc2\xd4\xf4\x98\xa1\xee\xb7\x44\xd0\x65\xbf\xae\x61\xc6\x18\x4e\xd7\xe2\x1b\xd7\xe0\x6e\x86\x37\xa8\xe4\xfc\x6b\xdb\xc0\xcd\xf0\x06\x95\xbc\x6d\x0d\xa6\x32\x1c\x8f\xa4\xb7\x89\x14\x3c\xf7\xf8\x76\x81\xe2\xe0\x77\x93\xdb\xbe\xa1\xfc\xf7\xf2\xbb\xc9\x69\x7f\x5d\xfd\x3b\xf9\xdd\xe4\xb2\xbf\xae\xfe\xcf\x96\xe4\xd6\xbb\x33\xf1\x14\x17\x70\x41\x50\xcd\xb4\xfa\xfe\x14\xda\xe0\x21\x14\xa2\x7e\x6a\xde\xa8\x06\x37\x50\xd7\x60\x69\xfe\xfb\xed\x84\x1b\xa1\x8e\x58\xc0\x91\x6a\xd8\x6d\x74\xa7\x05\xa6\x74\xd4\x77\x1b\x64\xb4\x93\x9e\xa6\xc1\x37\x15\xfd\x4e\x66\x53\x15\xe1\xdf\x35\xbf\x81\xd6\x47\x12\x8b\x89\x8a\x78\x4b\xd1\xa7\x31\xf3\x8a\x99\x37\x08\x88\x5f\xab\x81\x1a\xeb\x8d\x27\x7b\xe8\xaf\xd6\x78\x4d\x12\xdc\xc3\x3f\x7f\x3d\x8d\xbb\xf3\x87\xc9\xde\xf9\xeb\x69\xdc\x96\x38\xf8\x75\x0d\x60\x61\xe0\x83\x75\xa2\x46\x29\x06\xe2\x1b\x55\x93\x73\x48\x14\xc5\x39\x3d\xa3\x40\x1a\x93\x95\xf8\x86\x73\x8d\x99\x67\x62\x65\x4a\xe9\x99\x11\x63\x53\xa8\x86\x14\x21\x03\x20\x4e\x3b\x9b\xd0\x80\xf6\x08\x5d\x91\xff\xf6\x12\xf6\x7f\xf8\xb6\xb3\xf7\xd3\x82\x78\xbd\x9d\xde\x48\x86\x29\xb4\x20\x1e\x0d\x86\xb7\x92\x61\x0a\x2d\xab\xfe\xbc\x33\x8d\xfb\x69\x59\xf5\x77\xa7\x0c\x53\x68\x59\xf5\x77\xa7\x0c\x76\x5a\x30\x06\xe1\xf9\x18\xff\x60\xf1\x6b\x89\xef\x26\xe5\x70\xef\x7b\x24\x98\x40\xca\xe1\xdc\xf7\x48\x30\x81\x94\xc3\xb5\xdf\xcc\x0a\x6e\x52\x0e\xc7\x7e\x33\x2b\xf8\x4b\xa0\xb9\xf5\x9b\x59\x21\xb3\x74\xf9\x7c\x51\xc2\x3f\x42\xf4\x1e\xf0\x1e\xe3\x78\xd0\x42\x55\xfa\x06\x32\x4c\xa1\xe5\x25\xbb\x99\x33\xdc\xae\x07\x84\x96\x97\xec\x37\xc8\x60\xa7\x65\x59\x2e\x75\xbb\x89\x24\xa7\xe6\x9f\x77\x59\x68\x94\x14\xea\xf5\xf7\x4b\x30\x81\x94\x8f\xe0\x77\x59\x67\x94\x94\x8f\xe0\x37\x48\x60\x25\xe5\xed\x1e\x80\x83\x96\xc0\xba\x16\x6e\xed\xdb\x38\x96\xb1\xb2\xdf\x87\x2f\x66\x33\xa6\x23\x67\x3c\xf5\xd3\xa2\x08\x85\x0f\x08\x29\xe5\x86\x48\x13\x47\xd9\x02\x65\xd7\x08\x8e\x83\x6e\x0f\x30\xc7\x43\x13\x90\xb5\x4d\x30\x9e\x43\x24\x95\x01\xba\x9c\xef\xa8\x0d\x87\x37\xe5\xb1\x0c\xd8\xcc\xbd\x60\xa6\x40\xca\x7d\xd7\xda\x3d\x95\x36\x58\x63\xf7\x05\x76\xf6\xd5\x6f\x73\xd3\x74\x5e\x23\xa6\xb4\xdd\x7e\xe8\xcf\x00\x7b\xb1\x48\x8a\xed\x7c\x82\xdd\x42\xd9\x6a\x37\xab\xe4\x7c\x8a\xc0\x2a\xbc\x72\x3b\xb8\xf5\xf4\xa2\x0a\xeb\xb4\xda\xdd\x27\x25\x47\x78\xdd\x68\x35\x7f\x06\x77\xdc\x24\x6c\xa1\x7c\xb7\xd5\x0c\xe1\x95\xab\xb3\xf0\x3b\x61\x0d\x58\x77\xac\xf9\x1c\xcf\xbb\x83\xd7\xad\xb1\xe6\xcd\x00\x7b\xf0\x46\x8a\x6d\x3f\xbe\x65\xa7\x7c\x7f\xac\xe9\xc2\xcb\xab\xa2\xf0\xab\x70\x55\x40\xb7\xbd\x7c\x0e\x8e\xdd\xca\xe8\x46\x63\x79\x52\x47\x9f\x26\x1a\x04\xb6\x1f\x3e\xb2\x90\xbd\xdb\x4c\x86\xd8\xca\x5d\x48\xf8\xdd\xbf\x06\xac\xd3\x58\x5e\xc7\x9e\xee\xe0\x75\xa3\xbd\xfc\x19\x60\x1d\x99\x14\xdb\x7e\x2c\xc6\x4e\xf9\x6e\xab\x19\xc2\xc3\x9b\x7f\xf0\x2b\x8f\x75\x50\xa7\xcd\xbc\x8e\xe4\xdc\xce\xea\x46\x93\x79\xd3\xc7\x2c\x26\x85\xb6\x1f\xdf\xb0\x12\xbe\xdb\x60\x40\x74\x72\x39\x92\x4c\x1f\x67\xf8\xde\x7c\x23\x8e\x73\xa8\xaf\x14\xf4\x7f\x99\x77\x1a\x63\xcc\x8c\x2f\x62\x0b\xb9\x01\x99\xf7\x37\x35\x63\x25\xfd\x07\xac\xa0\x3a\xfe\x85\xa4\x1d\x56\xf2\x94\x67\xa4\xd2\x6a\x9a\x1c\xdb\xaa\xb8\x76\xf2\xe6\x78\x76\x6a\x45\xcc\x81\x52\x55\x82\x41\x91\x7e\x55\xb1\x76\x7b\x8a\xba\xd2\x60\x54\x72\xb1\x3d\x7e\xdd\x2b\xbb\x5e\x87\xa3\x35\xdb\x68\xb9\xf9\x2d\x8e\xb5\x3e\x7e\x5d\xa1\x48\x3b\x8e\xf1\x4c\xf8\x2d\x06\x97\xbc\x34\x2e\x49\x96\x47\x15\xf6\xf7\xde\x28\xad\x8c\x3d\xc8\x8a\xfe\xdc\x7e\xdd\xb4\xe7\x99\x1b\x2f\x14\xa1\x83\xde\x41\xff\xeb\x5a\x75\xd8\x1b\x70\xdf\xa9\xe7\x2c\xf8\x57\xf4\xa6\x66\x4e\xcf\x78\x00\x6d\xa9\xde\x6d\xa4\x3f\x67\xd6\xe3\xe8\xef\x99\xed\x51\x14\xb1\x40\x28\xdf\x32\x50\x1f\xb9\x50\x8e\xc8\x88\xb7\x0b\x26\x3e\x11\x15\xf7\xff\x86\x4b\x7d\xd4\x53\x4c\x31\x1c\x25\x54\x75\x92\xe6\xdd\xd7\x43\x10\x47\x7d\x73\x7b\xca\x8b\x8e\x9a\x3b\x29\xea\x73\xf2\x9e\x97\xfe\xb8\x8c\xbf\x97\x32\x0f\x97\xb9\xb0\xbf\xcc\x63\x6a\x1a\x77\xaf\xf7\x47\x14\x49\x36\x76\x49\x36\x4c\x12\x7e\x80\x0e\xbc\x07\xa1\x34\x45\x08\x79\xe9\xe4\xc6\x13\x85\xca\x1c\xcb\x70\x35\x70\x5d\x93\xa4\x49\xca\x14\x3e\x9c\x99\x16\x24\x69\x4e\xf9\x0b\x7f\x6d\x6c\x0e\xbe\x24\xa7\xae\x57\x4a\x56\x84\xe7\xaa\xc9\x7f\xa9\xca\x2e\x29\x82\x2c\x93\xa0\x46\x89\x40\x49\xe9\x97\xbc\x24\x0d\x20\x3b\x7c\x32\x80\xc2\x53\x71\xcd\x33\x04\x94\x17\x08\x84\xa6\x7a\x96\x40\xf4\x0f\x51\x70\xaa\x9a\x0b\x94\x84\x7d\x60\x47\x43\x06\x04\x17\x90\x20\x24\x3b\x1e\x89\x07\xbe\xf5\x60\xdc\x31\xc4\x83\x6c\xc1\x3b\xa5\x5b\xe9\xa7\xbc\x54\xcd\x5a\xf5\x68\x6a\xcb\xa6\x1a\xa8\x01\x9f\x4a\x23\xf5\x01\xb2\x53\xc1\x68\xcc\x75\x67\x26\x68\x7f\xb7\xbc\xf3\x01\x40\xe5\x1d\x99\xe4\xda\x55\x9f\x8c\x27\x69\xd8\x57\xda\xdd\x5f\x8b\x82\x7d\x34\x9a\x82\xe0\x37\xf9\xa5\xae\x9a\x2e\xe1\x6f\x48\xf6\xa0\x94\x28\x84\xec\xff\xd6\x00\xcf\x79\xa6\xbd\xed\x44\x1d\x58\x87\x6a\xcf\xd5\x33\x52\x01\x1d\x2c\x2f\x9f\x72\xf9\x8c\x4b\xff\x7b\x5e\xf4\x71\x0a\x7a\xf9\x3e\xce\x07\xb6\xb4\xb1\x3a\x04\xf1\xc7\x38\x48\x40\xa3\xa4\x05\x9d\xd2\x30\xd9\xdf\x0e\xb4\x87\x2a\xab\x68\x46\xca\xf1\xaa\x26\xa7\x53\xfe\xa2\x75\xfe\xa7\xfc\x85\x5d\x1e\xf6\xbb\xf0\xd2\x86\x4f\x39\x79\xa6\x18\xf0\x5e\xb4\x8c\x3c\xe5\x29\x61\xa7\x72\x7a\x32\x5c\x11\xe1\x4b\x3b\x97\x7f\xb4\x17\xf0\xc7\x25\x03\x7f\xf0\x2e\xc4\x29\x99\x24\x29\x1e\x70\x84\x9f\xd8\x93\x5c\xd8\x37\x03\xba\xbd\x60\x9f\x0c\x02\xc3\x37\x03\xfa\x92\x61\x9f\x0c\x02\xc3\x37\x03\xba\x78\xc4\x3e\x19\x04\x86\x6f\x58\x08\x21\x2a\xfa\xdd\x85\x64\x79\x12\xbc\xbf\x24\x2f\xe2\x80\xd4\x6e\xbb\xab\x5f\xbe\xef\x31\x81\x66\xfa\xbf\x9d\xde\xcc\x5f\xec\xa0\x6d\x8e\x03\x8f\x6d\x60\x41\xf0\x9a\x31\xa4\xb0\xa9\x9e\x31\xc4\xb3\xe2\x39\x41\xd0\x65\xa3\x94\x52\x9a\xd3\xe8\xa4\x26\x28\x03\x28\x77\x54\x25\x53\xc8\x32\xd3\xe9\x74\xf9\xd7\xfb\x09\xe3\x62\x2b\x65\x0e\x26\xf2\xc1\xba\xdd\xf6\x81\x32\x49\xca\x4c\xe1\xbd\xdf\x2f\x0c\xde\xed\xe5\x36\xc7\x31\xf1\x3c\x1c\xc7\x82\x34\xee\x38\xb4\x95\x51\x1c\xc7\x46\x69\xcc\x71\x6e\xd4\xd1\x8d\xfe\x74\x2b\xb7\x5b\xdd\xec\x3e\x7e\x6f\xe5\x7d\xfb\xfd\x12\xe3\xbd\x58\xec\xf7\x06\xf3\x4b\x76\x9b\xfb\x99\x78\x1e\xee\x67\x41\x1a\x77\x3f\xda\xaf\x29\xee\x67\xa3\xe4\xef\x7e\xd3\x94\x74\xb7\xff\x4d\x64\x77\xbf\x03\xde\xc4\xf0\xad\x3c\x70\xb1\x8c\x63\x83\x0b\xcf\x47\x26\xbb\x9a\x89\xe7\xe1\x6a\x16\xa4\x71\x57\x2b\x1e\x35\x57\xb3\x51\xf2\x77\x35\x8b\x36\xee\xf6\x29\x1b\xdd\xfb\x9d\xc7\x4d\xf9\x3e\x2f\xc1\xbb\x62\x96\x4a\x23\xf9\x88\x91\x92\xdd\xd3\xe4\x72\x2e\x66\xe7\xe5\xcf\xc5\x27\xae\x38\x1b\xb3\x91\xf2\x67\xa3\x58\x80\xd3\x33\x3d\xd1\x42\x6f\x30\x59\xdd\xe4\x65\xe7\x9b\xe2\x4a\x60\x04\x7f\x72\xd4\xa2\xa8\x1e\x81\x6b\xc7\x1b\x8f\xdd\x1e\x57\x0b\x5f\x07\x3d\x4b\x04\xab\xa8\xd3\x86\x09\x36\x1d\x4e\x8b\x75\x0d\x17\xc4\xf3\x3d\x22\x4c\x6c\x16\x50\xec\x37\xd2\xc6\xfd\xed\x08\x20\xcd\xa3\x03\x35\xb4\x25\x40\xfe\x5f\x00\x00\x00\xff\xff\xdd\x8e\x76\x91\x7a\x4c\x01\x00"), }, "/css/bootstrap.min.css": &vfsgen۰CompressedFileInfo{ name: "bootstrap.min.css", - modTime: time.Date(2018, 8, 19, 14, 21, 17, 476526885, time.UTC), + modTime: time.Date(2018, 9, 10, 21, 40, 58, 711425774, time.UTC), uncompressedSize: 71102, compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xbd\x6d\x8f\xe3\xb8\xb1\x28\xfc\x3d\xbf\x42\xe9\xc5\x20\x33\x3b\x92\x46\x7e\x6f\xdb\x48\x3f\x39\x4f\x70\x70\x6f\x80\x93\x7c\x39\xe7\xdb\x66\x2e\x20\x4b\xb4\xad\xac\x2c\xe9\x48\x72\x77\xcf\xfa\xf8\xfe\xf6\x0b\xbe\x89\x45\xb2\x28\xc9\xee\x9e\x0d\x16\x48\x3a\xbb\xdb\xcd\x2a\x16\x8b\x55\xc5\x2a\xbe\x96\xbe\xfc\xf8\xfb\xdf\x79\x3f\x7a\xff\x7f\x59\xb6\x4d\x5b\xc7\x95\xf7\x3c\x0b\x67\xe1\xca\xfb\x78\x6c\xdb\x6a\xf3\xe5\xcb\x81\xb4\x3b\x09\x0b\x93\xf2\xf4\x89\x62\xff\xb9\xac\xbe\xd5\xd9\xe1\xd8\x7a\xd3\x68\x32\x09\xa6\xd1\x64\xe5\xfd\xd7\x4b\xd6\xb6\xa4\xf6\xbd\xbf\x14\x49\x48\x91\xfe\x23\x4b\x48\xd1\x90\xd4\x3b\x17\x29\xa9\xbd\xbf\xfe\xe5\xbf\x38\xd1\x86\x52\xcd\xda\xe3\x79\x47\xe9\x7d\x69\x5f\x76\xcd\x97\xae\x89\x2f\xbb\xbc\xdc\x7d\x39\xc5\x4d\x4b\xea\x2f\xff\xf1\x97\x3f\xff\xfb\xdf\xfe\xf3\xdf\x69\x93\x5f\x7e\xf7\x3b\xc1\xe9\xff\x22\x05\xa9\xe3\x96\xd2\x6d\xb2\xe2\xe0\xb5\x47\x02\xb8\xff\xf3\xb9\x69\xcb\x53\xf6\x0b\xa9\x41\x63\x46\x17\xbe\x24\x12\xe9\xcb\xff\x97\xa5\x7f\x5c\xcc\xe6\x33\xb2\x4e\x76\x64\xb9\xdb\xad\x96\x8b\x98\xcc\xa3\x68\x3d\xdd\xcd\x97\x24\x5e\xcf\xe7\xe9\x42\xf4\xb8\xd8\x67\x07\xaf\x89\x9f\x49\xea\xb5\xa5\x97\xb0\xbf\xc3\x7f\x34\x65\xe1\xc5\x45\xea\xa9\x8e\x35\x6d\x08\x7a\x37\x44\x9c\x76\xed\x9d\x54\xb0\xfc\xde\x2a\xf8\xf2\xe3\xef\xbd\xa2\xac\x4f\x71\x9e\xfd\x42\xc2\xa4\x69\x28\xa3\x51\x38\xf3\xfe\x87\x51\x16\x8d\x79\xff\xe3\x01\xd2\x05\x49\xca\x3c\x6e\xbe\xe8\xf5\x7e\xfc\x72\x6c\x4f\xf9\x65\x5f\x16\x6d\xb0\x8f\x4f\x59\xfe\x6d\xd3\xc4\x45\x13\x34\xa4\xce\xf6\xdb\xe0\xd4\x04\x2d\x79\x6d\x83\x26\xfb\x85\x04\x71\xfa\x8f\x73\xd3\x6e\x26\x51\xf4\x61\x1b\xbc\x90\xdd\xcf\x59\x8b\x43\xaf\xbb\x32\xfd\x76\x39\xc5\xf5\x21\x2b\x36\xd1\x35\xae\xdb\x2c\xc9\x89\x1f\x37\x59\x4a\xfc\x94\xb4\x71\x96\x37\xfe\x3e\x3b\x24\x71\xd5\x66\x65\x41\x7f\x3d\xd7\xc4\xdf\x97\x25\x95\xd9\x91\xc4\x29\xfd\xcf\xa1\x2e\xcf\x95\x7f\x8a\xb3\xc2\x3f\x91\xe2\xec\x17\xf1\xb3\xdf\x90\x84\xd5\x68\xce\xa7\x53\x5c\x7f\xbb\xa4\x59\x53\xe5\xf1\xb7\xcd\x2e\x2f\x93\x9f\xaf\xf1\x39\xcd\x4a\x3f\x89\x8b\xe7\xb8\xf1\xab\xba\x3c\xd4\xa4\x69\xfc\xe7\x2c\x25\x65\x87\x99\x15\x79\x56\x90\x80\x55\xd8\x3e\x13\xca\x5a\x9c\x07\x71\x9e\x1d\x8a\xcd\x2e\x6e\x08\x85\x72\x42\x9b\xa2\x6c\x3f\xfe\x94\x94\x45\x5b\x97\x79\xf3\xf5\x53\x47\xa2\x28\x0b\xb2\x3d\x12\xaa\xf2\x4d\x74\xfd\xe9\x98\xa5\x29\x29\xbe\xfa\x2d\x39\x55\x79\xdc\x12\x0d\xef\x1a\x5f\x76\x71\xf2\x33\xed\x4b\x91\x06\x49\x99\x97\xf5\xa6\xad\xe3\xa2\xa9\xe2\x9a\x14\xed\x35\xde\xc4\x49\x9b\x3d\x13\x3f\xde\x1c\xcb\x67\x52\x5f\xca\x73\x4b\x59\xa0\x62\xdb\xed\xea\x9f\xda\xac\xcd\xc9\xd7\xcb\xae\xac\x53\x52\x07\xbb\xb2\x6d\xcb\xd3\x66\x52\xbd\x7a\x69\xd9\xb6\x24\xbd\xee\xfc\xa6\xad\xcb\xe2\xc0\x35\xf8\xc2\x99\xda\x95\x79\x7a\x4d\xf7\x05\x2f\x6c\xda\x6f\x39\xd9\x64\x6d\x9c\x67\xc9\xf5\x38\x11\x85\xd9\x2f\x64\x33\x25\xa7\xad\xd4\x52\xb8\x5c\x91\x93\x17\x5d\x4f\x71\xfd\x33\x60\x79\xf3\xc3\x7e\x1f\x6d\x39\xdf\x3f\x44\x51\x74\x6d\x4e\x71\x9e\x03\x1a\x8f\xd1\x87\x6b\x73\xde\xf9\xcd\xb9\x02\xa5\xab\xc5\x87\x2d\x93\xb3\x14\xd3\xb6\x2a\x9b\x8c\xaa\x6e\x53\x93\x3c\xa6\x3d\x76\x0a\x9f\x52\x6a\xcb\x6a\x13\x44\xe1\x82\x9c\x28\xf1\x8b\xe8\x77\x10\x85\x53\x5a\x94\x9d\x0e\x42\x22\x9b\xe8\xda\x3c\x1f\x98\xa6\x36\x75\x59\xb6\x9f\x2e\x54\x88\xfb\xbc\x7c\xd9\x70\xb5\x5c\xb9\x6d\x49\x63\x9c\x90\x93\x37\x8f\xaa\xd7\xeb\xb1\xbe\x48\x13\xde\x95\xaf\x94\xe9\xac\x38\x6c\xa8\xb2\x49\xc1\x8a\xb6\xc1\xa9\xfc\xc5\x05\x73\x14\x77\x36\x51\xd5\x44\x31\x12\x9f\xdb\xf2\x9a\x94\x29\xf1\x7f\xde\xa5\x7e\x55\x13\xbf\x89\x4f\x95\x36\xe4\x4e\x65\x51\x36\x55\x9c\x10\xdf\xeb\x7e\xdd\x2a\x69\x4e\xc8\xe9\xba\x3b\xb7\x6d\x59\xf8\x59\x51\x9d\x5b\xbf\xac\x5a\x3e\x3a\x1a\x92\x93\xa4\xf5\xe9\x28\x8c\x6b\x12\x5f\xb8\xa2\xb2\xe2\x48\xea\xac\x65\x14\xba\x3f\xba\xe1\xc8\x29\x29\xfe\x9e\xb3\x26\xdb\xe5\x44\xb6\xc0\x49\x5e\xd8\xc0\x66\x96\xba\x2f\xeb\x13\xb7\x65\x81\x41\x3d\x86\xc7\x18\xf9\xa9\xfd\x56\x91\x3f\x3e\xf0\xf2\x87\xaf\x3e\x2c\xac\x49\x43\x5a\xa3\xac\x39\xef\x4e\x59\xfb\xf0\xb5\x93\x7d\x5c\x55\x24\xae\xe3\x22\x21\x1b\x4e\x64\x9b\x9c\xeb\xa6\xac\x37\x55\x99\x15\x2d\xa9\x45\x93\x3f\xa5\x59\x13\xef\x72\x92\x7e\x85\x8d\x77\x85\x17\x51\x29\x25\xfb\xf8\x9c\xb7\xa2\xd2\x66\xc3\x54\xb8\x2f\x93\x73\x13\x64\x45\x41\x6a\xce\x8b\x5d\xde\x19\xd3\xb6\x8a\xd3\x94\x6a\x35\xba\x32\xd4\x0b\xb4\x61\xee\x38\xaf\xb0\x3f\xc9\x91\x24\x3f\xef\xca\x57\xb3\xeb\x71\x9a\x95\xa0\x97\xc0\x5c\xba\x81\x6c\x1b\x18\x00\xe1\xa5\x06\x73\xa2\xb1\xe2\x7c\xda\x91\xfa\xe1\xeb\x66\x23\x9b\x63\x7d\x0a\x9a\x2a\x2b\x02\x68\x35\x4e\xfc\xf2\xdc\xea\xf8\x17\xd1\x63\x66\xb9\x9a\xfe\x48\x5c\x27\x47\x5c\x7f\xd4\x60\xf6\x19\xc9\xd3\xed\xbb\x0f\x2c\x94\x07\xc5\x3f\x2f\x09\x12\xca\x46\x8e\x75\xd9\x59\x25\x25\x49\x59\xc7\xd4\x2d\x61\x3d\x62\x36\xcf\xba\xd4\x90\x56\xda\x08\xf5\xbd\x4d\x99\x67\xa9\xf7\x43\x12\xd1\x9f\x6e\x60\x79\xd3\x0a\xe8\x28\x9c\x2d\xa8\x3f\x0d\x97\x53\xfe\xdf\x15\x75\x5c\x39\x39\x90\x22\xc5\xcc\xad\x1b\xc1\xba\xdb\x90\x03\xdd\x76\xef\x2d\x35\x7d\x19\x17\x92\x32\xcf\xe3\xaa\x21\x1b\xf9\xcb\x56\x00\xa8\x27\x11\x0d\xa4\x7e\x7b\xbc\xa8\x06\xe9\x14\xe2\x3f\xcb\x73\x9d\x90\x8d\x87\x4c\x44\x8e\x8b\x5d\xc5\xa6\x06\x8b\x60\x57\x66\x39\xa9\x59\x68\xd3\x26\x24\x4d\x9d\x7c\x49\x9a\xe6\x0b\x8d\xd0\x62\x2e\xf1\xa7\x13\x49\xb3\xd8\xab\xea\xac\x68\x2f\x3f\xfa\x3f\x6e\x76\x64\x5f\xd6\xc4\xff\x71\x13\xef\x5b\x3a\xce\x54\x5c\x01\x41\xd0\xfb\x7d\x76\xaa\xca\xba\x8d\x8b\x16\x44\x1a\x58\xaa\x59\xd4\x31\x4e\xcb\x17\xa6\x1c\x88\xd2\x03\xe2\x73\x14\x14\x76\x8d\xfd\x98\x39\xc0\x96\xa4\xdc\xe5\x29\x93\xd8\xb0\xa9\x1a\x9f\x0f\xfc\x74\xac\xc9\xfe\xab\xe8\x85\xb0\xcc\xcd\x83\xf7\xf1\xc1\x8b\xdb\xb6\xfe\x48\xa1\x9f\xbc\x87\x4f\x0f\x30\x68\x3b\xb1\x19\x58\xa0\x33\xc2\xff\xe7\x8f\x0f\x3f\x3c\x08\x7c\xbf\x2b\xfa\x47\xfc\x1c\x37\x49\x9d\x55\xed\xe6\xc1\x22\xf6\x40\x63\x8c\xcf\x66\x31\xff\x7d\x2e\x5b\x82\x98\xe7\x7a\xbd\xde\x56\xf1\x81\x04\xbb\x9a\xc4\x3f\x07\x59\x41\xa7\x5f\x9b\xf8\xb9\xcc\xd2\x6b\x4b\x27\x59\xdd\x44\x85\xd9\x52\xc0\xe7\x5d\x01\xb3\xb7\x6b\x5b\xfb\x34\xca\xba\xea\x53\xd8\x29\x7e\x0d\x5e\xb2\xb4\x3d\xb2\x39\x1f\x14\x6a\xe5\x1f\xa7\xfe\x71\x76\x29\xeb\xea\x18\x17\xcd\x66\xb6\x7d\xc9\xd2\xf2\xa5\xd9\xcc\xae\x1c\x00\xc8\xb2\x7e\x09\xaa\x61\x11\x3f\xef\xe2\x5a\x9f\x40\x85\xbb\xb6\x78\x0a\x93\xb8\x26\xad\x1f\xa6\x75\x59\x9d\xab\x27\x50\x26\x87\x40\x5b\x56\x01\x6a\x3c\xd7\x30\x8f\x77\x24\x47\x04\x44\xa7\x33\x61\xff\x38\xd2\xe8\x30\x54\xaf\x4d\x7d\xf9\xdb\xd1\x9e\xdb\xfd\xb0\xdf\xef\xed\x4a\x01\xa7\x4f\x17\x2c\x47\xdf\x2a\x4a\x11\xde\xd2\x34\x85\x64\xae\x3f\xbe\x73\x30\xb9\x5a\x63\xf3\x9d\xe9\xab\x65\x05\x9f\xc2\x44\xd5\xab\x5a\x34\xc4\x55\x70\xcc\x0e\xc7\x9c\xba\x33\x21\xb8\xfa\xb0\x8b\x3f\x46\x3e\xfb\xf9\xc4\x17\x10\x70\x86\xf4\xf0\xbf\x49\xfe\x4c\xe8\x7c\xd1\xfb\x1b\x39\x93\x07\xbf\xfb\xdb\xff\xb7\x3a\x8b\x73\x1f\xac\x5a\x40\xab\xf3\xea\x55\x9b\x87\x4e\xc2\xf9\xf4\x71\xb1\x9a\xcc\x67\xd2\xd3\xcc\x66\xb3\x2d\xaa\x45\x1e\x74\x7c\x6d\x56\xa4\x26\x5a\x90\x37\x38\xdd\xe2\xed\xca\x12\xd8\xb4\x28\xbb\xca\x49\xda\x0f\xb3\xd9\x2a\xde\xad\xb6\xa6\xd7\xe1\xab\x06\xbe\x1a\xf0\xe3\x0d\x9b\xa6\xc8\x2a\xd3\xd9\x62\xba\x4a\xac\x2a\xc0\x51\x09\x7c\xb9\x8a\x58\x54\xaf\x1e\x0d\x24\x9e\x14\x3d\x9f\xf5\xd4\x59\x71\xe0\x5d\xdd\x0a\xcc\xa0\xdc\xef\x1b\xd2\x6e\x82\x69\xf5\x6a\xcc\x99\x23\x36\xda\x8d\xd9\xfa\x29\x4b\xd3\x9c\x5c\xc3\xec\x74\x08\x6a\xd2\x54\x65\xd1\x64\xcf\x44\x5f\x8f\x6d\x75\x0f\xb1\x85\xb3\x0a\x5e\x91\x8a\x9c\x48\xf3\x0f\xe8\xb4\xe9\xdc\x6c\x96\xd5\x2b\x07\xb7\xc7\xf3\x69\x57\xc4\x59\xde\x85\xad\x1e\x75\xa2\x3a\xdc\xa2\x03\x6b\xab\xb7\x37\x87\x96\x49\xa3\x12\x5f\xa7\xc4\x79\xee\x85\xd3\xc6\x23\x71\x43\x82\xac\xa0\xb3\xa4\x6d\x50\x0e\x61\x0c\x80\xd1\x55\xe8\x90\x98\x92\xac\x4e\x94\x8f\x12\x5c\x2f\xa2\x0f\x74\x11\xc3\x75\x44\xbd\xdf\x66\x4a\x87\x98\xf8\x5b\x2c\x98\x58\x51\x37\xdb\x50\x9e\x12\x0a\x84\x10\x72\x0d\x9b\x3a\x28\x8b\xfc\xdb\xa5\x5b\xa5\xc5\xbb\xa6\xcc\xcf\x2d\xd9\x0a\xc6\xaa\x6e\x75\x33\xe9\x5a\xd9\x04\x13\x38\xe3\xd9\x1a\x4b\xaf\x6d\x92\x67\xd5\xa6\x26\x49\xfb\x31\xf2\x3d\xf1\xff\x4f\x1d\x3b\x5d\xa3\xdc\x26\xa9\x4f\x94\x6b\x61\x04\xc2\xcd\xba\x63\xaf\x69\xe3\x36\x4b\x04\x73\x54\x52\x50\x6a\xdd\x8c\x6c\x6b\xae\x71\x38\x4b\x4c\xb2\x3f\xd5\x65\x0e\x96\x2e\x17\x63\xdd\x71\x9c\xf0\x18\xe6\x1f\xe7\xfe\x71\xe1\x1f\x97\x7e\x78\x9c\xf8\xe1\x71\xea\x87\xc7\x99\x1f\x1e\xe7\x7e\x78\x5c\xf8\xe1\x71\xe9\xf6\x04\x62\xb6\xb6\x88\x22\xc3\x66\x27\x5b\x6d\x99\x76\x3d\x4e\x3c\xb6\xaa\xf6\x8f\x53\xf9\xcb\x4c\xfe\x32\x97\xbf\x2c\xe4\x2f\x4b\xf1\x4b\xd8\x55\x0b\xbb\x7a\x61\x57\x31\xec\x6a\x86\x5d\xd5\xb0\xab\x7b\x9c\x78\x61\xd7\x64\xd8\xb5\x19\x76\x8d\x86\x5d\xab\x61\xd7\x6c\xa8\xda\x0d\x55\xc3\xa1\x6a\x39\x54\x4d\x87\xaa\xed\x50\x35\x1e\x82\xcd\x83\x17\xb8\xa8\xd2\x05\x24\x5d\xf3\x6a\xb5\xba\x32\xa1\x33\x5d\x84\x5c\x1f\xe1\x71\x36\x60\xf4\x13\xb6\xbe\x9f\x58\x62\x02\x52\xb2\xe4\xac\x04\x07\x7b\x87\x48\x29\xc4\x04\xa6\x3a\x0f\x22\xde\x72\xf1\xe1\xca\xcc\x84\x19\x50\x28\x8d\x68\x09\xb9\x9f\xb8\xb8\x9f\x5b\x6a\x04\x5a\x44\x4c\x61\xe9\x99\xaa\x0b\x31\x2d\x86\xb8\x42\x97\x36\xf7\x2b\xca\x3d\x93\x3d\x28\x9c\x51\xd7\xcc\x55\x01\x4b\x19\xc7\x5c\x33\x60\x6f\x69\xce\xfa\x41\xf9\x80\xd3\x80\x47\x5a\xca\xc4\x71\xd1\xc3\xf4\x55\x48\x07\x94\xd2\x50\x54\x75\x51\xc8\x8b\x3c\x26\x9b\x30\xa7\x53\x57\xc4\xcf\x81\x9a\x4b\xf9\xa7\xb0\xb2\x99\x35\x06\xe7\x57\xb1\x56\xf9\x78\xca\x0a\xe1\x7d\x57\xcb\xc7\xea\xf5\xd3\x85\x37\x00\x7a\x32\xa9\x5e\xaf\x57\x21\x2b\x6b\xfb\x6b\xf1\x81\x6d\x99\xf9\xa1\xb1\x71\xd6\x45\xa1\x64\xff\x48\x66\x9d\x97\x0c\xa7\xe4\x74\x0d\x59\x00\xcf\xc9\x5e\x6c\xb3\xf0\x90\x4a\xff\x16\x20\xb6\x9d\x0c\x61\xac\x40\x00\x13\x42\x3d\x14\x84\xf2\x12\x01\xfe\xc7\xb9\x69\xb3\xfd\x37\x08\x17\x45\x02\xa1\x28\x5f\xea\xb8\xba\xbc\x1c\xb3\x96\xb0\x05\x22\x5d\xe9\xd2\x22\xc9\x57\xf9\x42\xea\x24\x6e\x88\xb9\x07\xd4\x01\x04\xe2\xb9\xaa\x70\xc4\x0e\x20\x39\x8e\x2b\xb6\xfd\xf8\x8b\x85\xa9\x20\x02\xf5\x74\xa6\x2b\x31\xe0\x00\x78\x71\x55\x67\x6c\xbf\x57\x9b\x3a\x5d\x63\x0d\x28\xa7\x4c\x7a\xa1\x3e\x7f\x7a\x5c\x46\xeb\x48\xd0\x6c\xce\x49\x42\x9a\x0e\x36\x4b\x56\xcb\x59\x2a\x69\x0a\xa0\x4e\x53\x16\xea\x34\x77\x8b\xf9\x34\x11\x34\xb3\x62\x5f\x76\x04\x27\xab\xe8\x71\x2f\x09\x52\x88\x4e\x8d\x95\xe8\xa4\xe6\x8b\xe9\x72\x2d\x48\xbd\xc4\x75\x91\x15\x07\x09\x7b\x8c\x97\xe9\x6c\x27\xa9\x09\xa0\x4e\x50\x16\x6a\x34\x97\xcb\xc5\xa4\x63\x2f\x8d\x8b\x03\x5b\x45\x32\x50\xbc\x9e\xcf\xe7\x53\x49\x92\xc3\x74\x8a\xa2\x4c\x23\xf8\x38\x9f\x2d\x66\xf3\x6b\xb8\x3b\x98\x5a\x61\x13\x2e\x6b\x00\x74\xba\x52\x15\xba\x46\x40\x11\x6f\xc3\xae\x2e\x55\xb6\x3b\x74\x0a\xb3\x91\xd2\xfd\x3e\x4a\x1f\x79\x1b\xa6\xe6\x40\x91\xab\x8d\x64\x42\xa6\xbb\x19\x6b\x83\x29\x10\x69\x60\x4d\xd2\xbd\xe8\x84\xa6\x49\xf9\xb7\x8b\x74\xbc\x4f\xd7\x74\x82\xb5\x3b\x74\x0a\x75\xf9\x08\x4e\xdd\xd4\x2c\x28\x72\xb5\xb1\x5f\x91\x64\xb7\x60\x6d\x08\x05\x23\x38\xd3\x94\xa4\x84\x37\x61\x68\x5a\x95\xb8\x1a\x20\xf3\xdd\x7a\xb7\xbe\x86\x6c\xd9\xce\xb7\x09\xe4\x94\x5c\x7a\xe0\xb5\x9a\x15\xce\xa3\xea\xd5\x8b\x3c\x30\xf7\x84\xe7\x16\x60\xd6\x79\xce\xfd\x32\x87\xe1\x30\xc2\x62\xe1\x39\xf7\x18\x22\xfd\xf7\x39\xf7\x4a\xf6\xbb\xaa\x27\x50\xa3\x6b\x98\x67\x4d\x1b\x9c\x0b\x76\xdc\x91\x76\xfc\x51\xaf\xba\xa1\xde\xbf\x91\x27\x21\x7c\x57\x81\x15\xf0\x69\xf8\x00\xae\x64\x8a\x41\x83\x05\x0b\x41\xaa\xf2\x53\x9e\xe1\x67\x4b\x1a\xd1\x85\x9a\x28\x73\xe7\x4e\x4b\xae\x69\x6f\xef\xa9\x00\xaf\x69\xeb\xa7\xe9\x05\x5f\xf3\x5c\xd3\x16\x39\xf6\xe9\x62\x23\xef\x4d\x4f\x9c\x4b\xf3\xe0\x58\xd6\xd9\x2f\x65\xd1\xc6\xb9\x47\x89\xe5\x65\xdc\xb2\x38\x24\xa7\xfd\x4b\xaa\xc4\x24\x27\x71\xcd\x8b\xcd\x90\x64\xcd\xf9\x19\x42\x57\x48\xf2\x3c\xab\x9a\xac\xd9\x62\xc1\xc6\x68\x5e\xe7\x7b\xf2\x48\x7b\x0f\xb7\xd3\x7c\xf6\x7b\x1a\xb7\x71\x50\xd6\xd9\x21\x2b\xe2\x3c\x10\xa7\x63\x62\xee\x7e\x24\x79\x85\x58\x1c\x3f\x29\xf3\x78\x34\xc9\x8a\xac\xcd\xe2\x3c\x6b\x4e\x20\x88\xaf\xa3\x0f\x5b\x67\x08\x03\x7b\x6c\x32\x88\x53\xbb\xf4\xc0\xcc\x93\x4d\x4e\xcc\x39\xc8\x2a\x5c\xa8\x01\x20\x8d\x00\x9a\xbf\x22\xec\x55\x9b\x3c\x6e\xda\x20\x39\x66\x79\x0a\x36\xf5\xbc\x73\xee\x00\x94\x10\x60\x0d\x05\x80\x28\xce\x54\x41\x09\x9f\xc8\x80\x02\x31\xa7\xd1\x97\xee\xda\x01\xdf\xc0\x16\x0a\x15\xac\xd5\xa4\xdc\x5e\x32\x5b\x46\xca\x43\x08\xe8\xb6\x38\xff\xf0\xf7\x69\x34\x99\x7b\x7f\x8f\xa2\x7f\x8b\xfe\x70\x0d\x15\x7e\x50\x93\x67\x52\x37\x90\x44\x58\x9d\xf3\x5c\xcc\x9a\xf4\x61\x36\x81\x23\x4f\x8c\x6f\xb9\x90\x96\xe3\x10\x28\x45\xd3\x57\x64\x99\x3b\xc6\x86\xb3\xbf\x80\x29\x03\x07\xa3\xe2\x10\x0e\x24\xa2\xa1\x60\x34\xc2\x11\x44\x1c\xc2\x46\x25\x2c\xd9\xe6\x1b\xd3\xbd\x3d\xe3\x28\xee\x8e\xf5\x91\x80\x18\x3d\xdd\xea\x23\x01\x51\x80\x05\x51\xdb\xf1\x98\x1d\xfd\xe1\x1a\xa7\x69\x4d\x67\x0f\xce\x95\x83\x70\xf8\xf6\x7a\x54\x39\xdc\xfe\x53\xdc\xbf\x92\x22\x2f\xfd\xbf\x96\x45\x9c\x94\xfe\x9f\xcb\xa2\x29\xf3\xb8\xf1\x1f\xfe\x5c\x9e\xeb\x8c\xd4\xde\xdf\xc8\xcb\x83\xdf\x1d\xef\x32\x5a\x9d\x47\x99\x56\xaf\xde\x5c\xf3\x1f\xd4\x27\xc9\xe9\xc9\x6a\xba\x98\x13\x6c\x87\x6b\xbd\x9f\xee\xe7\xf6\x76\xd6\xf5\xe7\x5d\x3a\x8e\xb4\x6b\xca\x36\x33\x88\xce\xc0\x1e\x19\x38\x69\xc9\x8a\x86\xb4\x5e\xe4\x05\x13\x16\xf2\xe1\x1e\x6e\x38\x5d\x7c\xda\x8e\x47\xa5\x2c\x7b\x90\xed\x08\xfa\xd2\x28\xfa\xb0\x35\x23\x9d\xeb\x50\xc8\x3c\x09\x62\x87\xf1\xba\x73\x93\x6d\xac\x99\x8b\x36\x16\x98\xb0\xdd\x99\x7b\xbf\xf1\xa5\xac\x53\x7e\x84\xb1\x11\x07\x19\x79\xce\x0b\x69\x74\x13\x65\xf4\xef\x81\x8d\xe6\x05\xfd\x41\xf6\x29\x93\x24\x41\x14\x5b\xd5\xc4\xd3\x0c\x27\x42\x76\x9d\xf5\x4b\x00\x30\xf4\x56\x35\x61\xec\xd9\x8c\x80\xe3\x38\xa3\xd9\xe8\x1a\xd2\x6a\x4d\x52\x97\x79\xce\x0e\x4b\x4e\xf1\xab\x14\xc8\x8c\x4e\xf6\xba\x49\x40\xf0\x6d\xc3\xd1\xae\x21\x1d\x83\x71\x56\x90\x6e\x87\xb2\x36\xb7\xe7\xb8\x8f\x65\x05\x9a\x7f\x9e\xd8\x73\x25\x5a\xd4\x33\x8f\x51\x6d\x89\xf2\x05\x9b\x3b\xd8\x15\xd6\xeb\x29\x5a\x61\xbd\x72\x54\x98\x4c\xa3\x08\xad\x31\x99\xf0\x2a\x0a\x10\xec\xf3\x73\x96\xbe\x5b\x6f\xc3\xba\x7c\xd1\x26\x44\xc1\x44\xd9\xaa\x40\x0c\x38\x66\x52\xe6\xc1\x6b\x13\x4c\x7c\x8f\xfd\xda\x9c\xba\x5f\x4f\x69\xf7\x6b\x7e\xe8\x7e\x7d\x6d\x82\xa9\xc2\x9d\x2a\xdc\xa9\xc2\x9d\x2a\xdc\x99\xc2\x9d\x29\xdc\x99\xc2\x9d\x29\xdc\xb9\xc2\x9d\x2b\xdc\xb9\xc2\x9d\x2b\xdc\x85\xc2\x5d\x28\xdc\x85\xc2\x5d\x28\xdc\xa5\xc2\x5d\x2a\xdc\xa5\xc2\x5d\x2a\xdc\x95\xc2\x5d\x29\xdc\x95\xc2\x5d\x29\xdc\x47\x85\xfb\xa8\x70\x1f\x15\xee\xa3\xc2\x5d\x2b\xdc\xb5\xc2\x5d\x2b\xdc\xb5\xc2\x9d\x44\x40\x19\x11\xd0\x46\x04\xd4\x11\x01\x7c\xa8\x3c\xa8\x3d\xa8\x3e\xa0\xbf\x09\x50\xe0\x04\x68\x70\x02\x54\x38\x99\x5e\xec\x3b\x57\xd4\xb4\xc1\x3e\xfe\x38\x53\x34\x0c\x0c\xd8\x0f\x30\x0f\xa0\x7d\xa0\x5c\xa0\x3b\xa0\x1a\x20\x79\x20\x58\x28\x37\x28\x13\xd6\x5f\xb0\x36\xb9\x82\x52\x75\x6c\xa2\x4a\x27\x72\x54\x4f\xc2\x25\xff\xdf\x0a\x40\x23\x01\x7d\x9c\x85\x33\xf1\x3f\x05\x5d\x77\x1e\x44\x95\x3d\x8a\xb2\xe5\x12\x21\xb7\x12\xc0\xc5\x23\x42\x6d\x29\x81\x80\xbb\x85\x28\x9b\x63\xcc\xcd\x05\x70\x86\xf1\x36\x13\xc0\x29\xe0\xad\x13\x00\xc6\x9b\x94\x03\xc6\x1a\x9b\x3a\x4d\xa6\x17\xa1\x66\x28\x3f\x0e\x9a\x08\x10\x2a\x44\x8e\x12\x09\x14\x54\x92\x0c\x65\x2d\x30\xa0\x38\x19\xe0\x51\x00\x50\x99\x32\x8c\x95\xc0\x40\x05\xcb\x30\x96\x12\xc3\xe4\x7d\x21\x00\xa8\x88\x19\xc6\x5c\x60\xa0\x72\x66\x18\x33\x81\x31\x35\x39\xef\x44\xe6\xe4\x5c\x4a\xce\xc9\xb8\x94\x1b\x3f\xe0\xeb\x20\xcd\x91\x2a\x84\x8f\x44\x5d\x1f\x14\x32\xe1\x10\x87\x3a\x28\x46\xc4\x31\x1c\xda\x68\x8e\xc1\x9a\x23\xe8\xca\x68\x8e\xc1\x23\x2f\x77\xe8\xa2\x39\x06\x2b\x8e\xe0\x50\x45\x73\x0c\x96\x02\xc1\xe4\x7a\xc1\xcb\x1d\x8a\x68\x8e\xc1\x9c\x23\x38\xf4\xd0\x1c\x83\x19\x47\x98\x9a\x3c\x4b\x41\x39\x79\x16\xf2\x72\xb2\x2c\xa4\xa5\xe9\x80\x1f\x81\x53\x2d\x68\x3b\x11\x50\x19\x12\x65\xa2\xa1\xa0\x5a\x91\xa8\x91\x86\x8a\xaa\x47\xa0\xae\x35\x4c\xa8\x27\x81\xf0\xa8\x21\xa0\x0a\x13\x98\x2b\x0d\x13\xd5\x9c\xc0\x5c\xea\x98\x76\x5f\x17\x1a\x02\xaa\x4b\x81\x39\xd7\x30\x51\xa5\x0a\xcc\x99\x86\x39\xb5\x7b\x6a\xa8\xa0\xa7\xa7\xba\x26\x7a\x3a\x1a\x8d\xde\x17\x33\x66\x51\x60\x92\x04\xe6\x40\x60\x8a\x03\x66\x30\x60\x82\x02\xe6\x1f\x60\x7a\x01\x66\x0f\x70\x6e\x00\xe3\x3e\x8b\xe9\x56\xbc\xe3\xa5\x66\xbc\x63\xf5\x9c\xf1\x8e\xb5\xe0\x8c\x77\x94\x15\x33\xde\x51\x4e\x9d\xf1\x8e\xf6\xc8\x19\xef\x68\xcf\xcd\x78\x47\x05\xe3\x8c\x77\x54\x80\xce\x78\x47\x05\x6d\xc6\x3b\xaa\x07\x67\xbc\xa3\x5d\x75\xc5\xbb\xe6\xe4\x8c\x77\x1d\xc8\x1d\xef\x3a\x14\x77\xbc\x93\x28\x56\xbc\x93\x00\x77\xbc\x93\x18\xee\x78\x27\x31\xac\x78\x27\x01\xee\x78\x27\x31\xdc\xf1\x4e\x62\x58\xf1\x4e\x02\xdc\xf1\xae\x93\x8b\x2b\xde\x49\x04\x3b\xde\x31\x08\x1a\xef\x3a\x88\x33\xde\x75\x18\xce\x78\x27\x31\xcc\x78\x27\xcb\x9d\xf1\x4e\x22\x38\xe3\x9d\x44\x30\xe3\x9d\x2c\x77\xc6\x3b\x89\xe0\x8c\x77\x12\xc1\x8c\x77\xb2\xdc\x19\xef\x3a\x71\x38\xe2\x9d\x84\x5b\xf1\xae\x39\x0d\xc6\x3b\x80\x32\x14\xef\x00\xea\x50\xbc\x53\xa8\x8e\x78\xa7\x10\x86\xe2\x9d\xc2\x1c\x8a\x77\x0a\xd3\x11\xef\x14\xc2\x50\xbc\x53\x98\x43\xf1\x4e\x61\x3a\xe2\x9d\x42\x18\x8a\x77\x40\xbe\xfd\xf1\x4e\x21\x9a\xf1\xae\x77\x3f\x44\xdb\x2b\x00\x5b\x01\x60\xa5\x0f\x16\xf2\x60\x9d\x0e\x96\xe1\x60\x95\x0d\x16\xd1\x60\x8d\x0c\x17\xc0\x70\x71\xcb\x16\xae\x56\xc0\xe3\xa5\x66\xc0\x63\xf5\x9c\x01\x8f\xb5\xe0\x0c\x78\x94\x15\x33\xe0\x51\x4e\x9d\x01\x8f\xf6\xc8\x19\xf0\x68\xcf\xcd\x80\x47\x05\xe3\x0c\x78\x54\x80\xce\x80\x47\x05\x6d\x06\x3c\xaa\x07\x67\xc0\xa3\x5d\x75\x05\xbc\x53\xea\x0c\x78\x1d\xc8\x1d\xf0\x3a\x14\x77\xc0\x93\x28\x56\xc0\x93\x00\x77\xc0\x93\x18\xee\x80\x27\x31\xac\x80\x27\x01\xee\x80\x27\x31\xdc\x01\x4f\x62\x58\x01\x4f\x02\xdc\x01\xaf\x93\x8b\x2b\xe0\x49\x04\x3b\xe0\x31\x08\x1a\xf0\x3a\x88\x33\xe0\x75\x18\xce\x80\x27\x31\xcc\x80\x27\xcb\x9d\x01\x4f\x22\x38\x03\x9e\x44\x30\x03\x9e\x2c\x77\x06\x3c\x89\xe0\x0c\x78\x12\xc1\x0c\x78\xb2\xdc\x19\xf0\x3a\x71\x38\x02\x9e\x84\x5b\x01\xef\x94\x0e\x06\x3c\x80\x32\x14\xf0\x00\xea\x50\xc0\x53\xa8\x8e\x80\xa7\x10\x86\x02\x9e\xc2\x1c\x0a\x78\x0a\xd3\x11\xf0\x14\xc2\x50\xc0\x53\x98\x43\x01\x4f\x61\x3a\x02\x9e\x42\x18\x0a\x78\x40\xbe\xfd\x01\x4f\x21\x8e\x08\x78\x60\x3f\x5f\xdb\x12\x07\x3b\xde\x60\x43\x1b\xec\x57\x83\xed\x68\xb0\xdb\x0c\x36\x93\xc1\x5e\x31\xd8\x0a\x86\xdb\xbc\x70\x0b\x97\x6f\xcf\x9a\x11\x8f\x97\x9a\x11\x8f\xd5\x73\x46\x3c\xd6\x82\x33\xe2\x51\x56\xcc\x88\x47\x39\x75\x46\x3c\xda\x23\x67\xc4\xa3\x3d\x37\x23\x1e\x15\x8c\x33\xe2\x51\x01\x3a\x23\x1e\x15\xb4\x19\xf1\xa8\x1e\x9c\x11\x8f\x76\xd5\x15\xf1\xf2\x83\x33\xe2\x75\x20\x77\xc4\xeb\x50\xdc\x11\x4f\xa2\x58\x11\x4f\x02\xdc\x11\x4f\x62\xb8\x23\x9e\xc4\xb0\x22\x9e\x04\xb8\x23\x9e\xc4\x70\x47\x3c\x89\x61\x45\x3c\x09\x70\x47\xbc\x4e\x2e\xae\x88\x27\x11\xec\x88\xc7\x20\x68\xc4\xeb\x20\xce\x88\xd7\x61\x38\x23\x9e\xc4\x30\x23\x9e\x2c\x77\x46\x3c\x89\xe0\x8c\x78\x12\xc1\x8c\x78\xb2\xdc\x19\xf1\x24\x82\x33\xe2\x49\x04\x33\xe2\xc9\x72\x67\xc4\xeb\xc4\xe1\x88\x78\x12\x6e\x45\xbc\xfc\x30\x18\xf1\x00\xca\x50\xc4\x03\xa8\x43\x11\x4f\xa1\x3a\x22\x9e\x42\x18\x8a\x78\x0a\x73\x28\xe2\x29\x4c\x47\xc4\x53\x08\x43\x11\x4f\x61\x0e\x45\x3c\x85\xe9\x88\x78\x0a\x61\x28\xe2\x01\xf9\xf6\x47\x3c\x85\x68\x45\x3c\xf1\x98\xb1\x2f\xe1\x84\xc8\xb9\xd1\x5d\x93\x6a\xcb\x6a\xf3\x08\x0e\xfe\xc4\xbd\x18\x5a\xa4\xae\x77\x6d\xcd\x6b\xea\xed\x11\xb9\xb9\xce\x1a\x07\x0f\x99\x8c\x77\x4d\xc8\xed\x46\x5e\xe7\x89\xbd\x46\x7d\x6a\xeb\xa7\xee\x75\xe4\x53\xbb\x2b\xd3\x6f\x46\xd1\xbe\x2c\x5b\xa3\xa8\xab\x98\xda\x15\x53\xbb\xa2\xba\x5e\xf2\xe8\xbe\xd9\x61\xbc\x74\x6b\xcb\xca\xf1\x72\x2a\x4d\x53\xa4\x07\xe6\x4b\x39\xde\x5f\xe3\x5e\xe2\x14\xa5\x22\x74\xf3\x59\x52\xdb\xec\xb3\x5a\x5e\xf2\x03\xbd\x4e\xca\x9c\x3d\xd2\x1d\xc2\x63\x60\x1d\xe6\x24\xd9\xdb\x72\x3a\xb2\xe5\x74\x7c\xcb\x29\x78\xb7\xbb\x89\xae\x50\x79\x9f\xd9\xbf\x21\x1c\x95\x96\x17\x3a\xac\x9d\x3d\xde\x14\x8f\x6c\x93\xb2\x48\x59\xde\x1d\xc4\xc6\x20\xd0\xb2\x36\x08\xb4\xec\x0e\x25\x9b\xf6\x91\xc5\x80\x88\x55\x2e\xba\x31\xd1\x3d\x0f\xc6\xdf\x06\x9b\x58\x58\xf7\x14\xcc\xee\x9d\x82\xd9\x9d\x43\x68\xa6\x3d\x34\x11\x18\xe8\xd9\x3b\x70\xaf\xb8\xd0\xd3\xe0\x08\xdf\x32\x55\x32\x6b\xda\x3a\xab\x00\x73\x9b\xa2\x3d\x06\xe5\x3e\x68\xbf\x55\xe4\x63\x99\xa6\x9f\x30\x63\x59\xd3\x1f\x49\x81\xdd\x89\x57\xf5\x79\x4a\x1e\xd7\xad\x2d\xee\x6e\xbd\xa4\xcc\x7f\x4a\xf2\xb8\x69\x7e\xfc\xe3\x03\xf5\xcf\x0f\x5f\xad\x77\x8a\x7c\xa6\xcf\x6e\xa7\xe9\x6f\xee\x93\x32\x3f\x9f\x8a\xab\x7c\x59\x6e\xd0\xf1\xe5\x3b\xf3\xfb\xe9\x93\x3c\xb7\x7d\x54\x1a\xca\x87\x96\x96\xcf\x34\x21\x4a\x95\x26\x44\xa9\xcc\x49\xcd\x82\x28\x63\x73\x50\x13\xc5\x88\x3f\x47\x20\x82\x1a\x02\x31\xa9\x59\x61\x05\x81\x98\xd4\xd0\xc7\xfd\x5c\xef\xa8\xb1\x28\x11\x89\x97\x15\x0e\xac\xe3\x08\x2c\x0d\x05\x0c\x31\xcc\x3c\x9f\x74\x51\xf6\x53\xc2\x3a\x45\x1e\xe9\x0f\x66\x25\xe2\xdd\x0c\x66\x26\x26\x08\xd8\x89\x09\x02\x86\xe2\x24\x68\x83\x80\xa9\x38\x08\xca\x72\xcc\x58\x10\x90\xd4\x2f\x02\xb2\x08\xda\xf6\x82\x80\x2c\x82\x98\x70\xc5\xcb\x24\xa7\xc5\xe8\xaf\x95\x9c\x26\x33\x02\x4d\xc7\x19\x34\x1a\x5d\xa8\x03\xb4\xd0\x9e\x45\x64\x9d\x2c\x31\xb3\xc9\x8a\x7d\x89\xd9\x8c\x56\x0e\x0c\x46\x2b\x07\xd6\x82\xd3\x39\x3a\xe8\x1c\x51\x3a\xac\x10\xb3\x10\xb3\x5c\x6a\xd3\x2c\xd7\xe9\xd8\x86\x61\x96\xeb\x74\x50\xc1\xf1\xb7\x64\x4e\x93\x00\xef\xcb\x9c\xf6\x30\x84\x03\x10\x06\x2d\x01\x88\xad\x8f\x0a\xd6\x95\x64\x4e\x66\xfb\x19\x66\x03\xe2\xcd\x1a\x66\x06\x26\x08\x58\x82\x09\x02\xc6\xe0\x24\x68\x83\x80\x49\x38\x08\xca\x72\xcc\x30\x10\x90\xd4\x29\x02\xb2\x08\xda\x16\x82\x80\x2c\x82\x68\xb0\xe1\xaf\x02\x9d\x76\xa2\xbf\x14\x74\x9a\xca\x08\x34\x1d\x67\xd0\x60\x74\xa1\x0e\xd0\x42\x7b\x16\xef\xa7\x49\x82\x99\x0d\x7f\x88\x88\x59\x8d\x01\x01\x46\x63\x40\x80\xcd\xb8\xa8\x59\x10\x60\x31\x38\x35\x51\x8c\xd9\x8b\x0d\x91\xda\xb5\x21\x26\x35\xdb\x58\x6c\x88\x49\x0d\x15\x28\x7f\xdd\xe9\x34\x15\xed\xc5\xa7\xd3\x52\x86\xb1\x34\x94\x41\x3b\xd1\x44\xd9\x4f\x09\x9d\x97\xec\x92\xa4\xb3\x12\x98\x64\xa6\x7b\x6e\xf0\x2a\x6e\xd8\xab\x4b\xcd\x51\x18\x4d\x3e\xc8\x8d\xff\x26\xa9\x09\xe1\x49\x61\x3f\xaa\xbd\x88\xd5\x72\xc5\x8e\x00\x2c\xb2\xce\xad\x0a\x76\x31\x1a\xbc\x71\x10\x4f\x1d\x83\x53\xd3\xbd\x74\x14\xaf\x87\x68\x11\x65\xe9\x98\xb1\xbd\x14\xfe\x18\x62\x17\xd7\x78\x1e\x1a\xbb\x6b\x4f\x62\x4d\x6b\xbd\x6d\x75\x20\x62\x0b\x27\x04\xc9\x5e\xff\x21\x48\xf6\x42\xb0\xaf\xb9\x74\x4c\x73\x7d\x48\x60\x8d\x88\x66\x22\xc0\xeb\x59\xcb\x62\xb7\x6c\xd0\xd5\x25\xdc\x84\x70\x32\x87\xae\x9c\x6f\xad\xa9\xc4\x79\x6b\x4d\x25\xe3\xbb\xb9\xbd\xb9\xa6\xd2\x06\xac\x79\xd1\x5e\x43\xde\x28\x69\xf0\x70\xf5\x36\x41\xdf\x56\x11\xc8\xf9\xb6\x8a\x40\xcc\x77\xb2\x7a\x6b\x45\x20\x64\xf0\x78\x57\x7b\x8d\x3a\x4a\xc8\xd2\xcd\x2a\x22\x7d\x83\xd6\x66\xe0\xf6\x8a\x58\x8b\xb7\x74\x59\xaf\x68\x64\x33\x8e\xae\x2a\xc9\xa6\x7a\xd6\xd6\xe5\x70\xea\xd2\x57\xa9\x63\xdc\x48\x26\xd2\xd4\x9f\xf5\x01\x07\x6e\xd2\x71\x24\x8a\x99\x4e\x8c\x6d\x60\xfd\x09\x1d\x78\x08\xa9\x9e\x0d\x23\xb9\x0c\x16\xf4\xe7\xca\xd3\x0c\x8e\xc9\xf0\xa5\xf3\xb4\x30\x92\xd5\xb0\x67\xfc\xbd\x59\x57\xdf\x29\x45\x1f\x92\xb2\xd6\xc7\xb3\xdb\xca\x24\x3c\x73\xf6\x76\xb3\x13\xaa\xdc\x0f\xff\xfb\x7a\x3b\x90\x28\x77\x9f\xe5\xe4\xe1\xab\x91\xae\x5b\x6f\xbf\x38\x58\x18\x40\xa3\x57\x9e\x80\xef\xa7\xd3\x39\x6f\xb3\x2a\x27\x5f\x45\x46\xbe\x9f\xa8\x1e\xbf\x3a\x13\xd6\xf2\x76\x79\x62\x0b\x2c\x45\x2f\x02\x51\xbd\x7e\x97\x5c\x7a\xe5\xb9\xad\xce\x2d\xfe\x00\x95\x09\x70\xa5\x3f\x39\x1d\xce\x58\xb8\x58\x2c\xae\xe1\xbe\xac\x4f\x81\xc8\x4d\xee\x1e\x06\xdd\x2b\x4d\x90\xa7\x6d\x59\xbd\x7a\x93\xe9\x1d\x8d\xba\x52\xec\xa9\xd2\xec\x14\x1f\x88\x7c\x84\x3b\xea\x41\x6b\xdf\xa3\x62\x5a\x97\xfe\xa3\x3d\x15\x8e\x56\xf8\xb3\x62\x37\x32\x92\xda\x4f\x65\xfb\x2c\x6b\x98\x9e\xcf\x0b\x27\x8b\xc6\xf7\x6c\x9e\x2c\x24\x23\x13\xe0\x00\xc1\x3e\x42\xef\x42\x45\xb7\x07\x99\xc7\x05\x90\xdb\xfc\xb0\x5c\xc6\x7b\xb2\xde\x76\xe9\xe5\x6f\x94\x3c\x93\xa5\x4f\x07\xbf\xf7\x28\x21\x93\x68\xea\x7b\x93\xd5\xc2\xf7\xa6\xb3\x99\xef\x45\xe1\x72\xac\x6a\x46\x52\x33\xba\xc5\xf3\x76\x57\x79\x9c\x90\x63\x99\xa7\x2a\x91\xd1\x7a\xbd\xde\x96\x55\x9c\x64\xed\xb7\xcd\xc4\xa8\x44\xa7\xe4\x6c\x78\x3b\x2a\x5a\x6d\x74\x49\xb4\x6f\xa8\x73\x6a\x02\xf2\x5a\xc5\x30\xb5\x73\xef\x21\xac\x56\x1f\x24\x37\xd7\xcb\x6b\x12\xa7\x65\x91\x7f\xfb\xea\xcb\xf8\xa8\x50\x3d\xdd\x03\x20\xab\x27\x42\x5c\x32\x01\x0d\x0e\x12\x16\xa9\x55\x8a\xb2\x0d\xe2\x3c\x2f\x5f\x48\xda\xa5\xaa\xd6\x11\xef\x49\x19\xce\x9e\xe7\x23\x8b\x35\x89\x4a\x23\x7e\x4a\x9e\xb3\x84\x04\x55\xf6\x4a\xf2\x80\xe5\x3b\xdd\x44\x9f\x2e\xb0\x85\x34\x6e\xc9\xc3\x57\x8d\x1b\xcd\xa1\xb7\xd9\xa9\x17\x4e\xeb\x53\x9c\x20\x2f\x93\x38\xef\xc3\x3c\x95\x45\x7b\x34\x10\xb4\xdc\x3c\xd4\xd1\x5e\x11\xde\xb8\x31\x35\x27\x8c\x2f\x14\x66\xf1\x84\x62\x49\x7e\x3a\xa0\xf8\x8d\x9d\xd1\x06\xcd\xc9\xb3\x59\xe9\x45\xe1\x1c\x0d\x52\x81\x8c\xf5\x22\x0b\xfe\x74\x11\x45\x7d\x22\xca\x0f\x6e\x11\x19\x30\x87\x88\x0c\x2c\x5d\x44\xf9\x41\xe7\x37\x3f\x0c\x8a\xc8\x40\xc1\x44\x84\x50\x71\x8b\xc8\x40\xc6\x44\x34\x5f\xb2\xd4\x02\xcc\xca\x78\xf6\x77\x7b\x3f\xe2\x1a\xb2\x19\x8c\x1f\xca\xe9\x0a\xf2\xd8\xdb\x4c\xc6\x3b\x98\x76\x92\xd3\xf4\xd8\x44\x56\x51\xe6\x7f\x5f\xc0\x2e\x0b\x9b\x45\x6b\x6f\xc7\x91\x34\x9c\xd1\x16\xc9\xf3\x69\x64\x59\x15\x0d\x62\x13\x51\x0e\x12\x49\xb6\x70\x8c\x8e\x41\xc7\x27\x19\x3a\x04\x8c\x0a\x98\xdc\xda\x49\x6f\xb5\xc4\x0b\xb0\x6f\x54\x7a\x73\x36\xe3\x15\xbc\x7f\x36\xf5\xf0\x59\x69\x04\xd4\x09\x94\xca\x04\x33\x16\x77\x3d\x0a\x74\xe7\x15\x43\xe5\x8e\xa6\x6a\x1e\xad\x0d\xc1\xce\xe7\x7e\x6e\x3f\x5b\xec\x63\x99\xcc\xc4\x6d\xb3\x0a\x5d\x6b\x80\x30\x84\x2b\xc6\x81\x20\xaa\x87\x12\xea\xa8\xad\xe0\x48\x90\xc3\xec\x69\x00\x0d\x18\x0c\x12\x14\x35\x69\xa9\xa6\x4d\x29\xf5\x32\xa5\x4b\x1c\x43\x30\x65\xee\x64\xa4\x6b\xc7\x1c\xcc\x26\xc0\xc9\x46\x0f\xdc\x70\x0c\x18\x13\x30\x42\x06\xfc\x92\xc2\xc5\x5c\xf4\x18\x37\xce\x56\x88\x25\x03\x9f\xc3\x42\x2b\x46\x17\xb8\x76\x37\xb4\x39\x99\x49\xfe\xf4\x44\x17\xd1\x55\x21\x82\x40\xb5\x05\x17\x73\xac\xe4\x40\x53\x6b\xd1\xb4\xb0\xb3\x26\x89\x75\x2b\x4e\xdd\x8a\x8b\xdd\xd4\xaa\x8b\xe8\xe6\xb2\xd7\x22\xc4\xaf\x7b\xaa\x58\x41\x63\x30\x3a\x33\x7b\xa7\xfe\x18\x4d\x89\xee\x39\x1b\xb4\xba\x68\xd4\x47\x27\x93\x3e\xda\x08\x10\x82\x73\xe6\xd9\x27\x08\x69\x87\x90\x3d\x68\x60\x53\x73\x91\x3c\x2c\x9f\x6b\x67\x7c\x17\x10\xbb\xb7\x5a\x9e\x40\x95\x8c\xb8\xcb\x80\x6c\x90\x11\xd7\x3b\xb7\x76\x1a\x7c\xcd\x78\x8c\x46\xac\x19\x83\x61\x3c\xf9\xc1\x65\x3c\x8a\x90\x25\xb3\xfc\x80\x1b\xcf\xfb\x76\xcb\x68\xb1\xc7\x86\xf0\x9e\x1a\xf5\x87\x6d\xa8\x6b\xe4\x56\x1b\x32\xe5\x61\xd8\x10\x63\x0f\xda\xd0\x23\x14\xd3\xe4\x16\x31\x5d\xc3\x63\xdc\x04\x7b\x42\x52\xba\x96\xb3\x27\x03\x3a\xdc\xd0\x92\xee\xcc\xe6\xd3\x70\x61\x39\x4b\x9b\x72\x37\xdb\xe1\x21\x5b\x38\xc2\xed\x2f\x41\x56\xa4\xe4\x75\x33\xdd\x62\xdb\x4a\x6c\x2b\x09\x6e\x2b\x99\xcb\x9f\xad\x95\x97\x7a\x2b\xe6\x17\x01\x79\x26\x45\xdb\x88\xfc\xab\xd2\x14\x3f\xe3\x6c\x9a\x93\x66\x27\x5a\x8f\xb2\x1c\x75\xe4\x73\x95\xa5\xea\x89\xc3\xcc\xa4\xaf\x1d\xc5\x63\x0f\x5a\x8f\x53\xea\xe7\x91\xf9\xa8\x7e\x77\x4a\xad\x42\xdc\xd6\xf1\xc2\x23\xc9\x2b\x3e\x4d\xf4\x75\x80\xa4\x2f\x66\x03\x1a\x4c\x4c\x60\x75\x7c\x11\xe2\x31\xd4\x6e\x4a\x88\xd6\xc0\xa0\xfa\xba\x02\x02\xf4\xa9\x04\x52\x49\x4e\xdd\x7b\xea\x6a\x28\x46\x36\x6f\x9d\x47\x7d\xcb\x44\xdb\x1e\xe3\xf8\xdf\x7f\x3b\xb2\x87\x23\x74\xdb\x8e\x67\x17\xbf\x8b\x2f\x3f\xf2\x22\x8f\x06\xb2\x1f\x96\xab\xdd\x64\xf9\x78\x13\x9f\x66\x65\x83\x6f\x68\xf8\x71\x9a\x96\x85\x2e\xf7\x2d\x2a\x5c\xf7\xed\x38\xa7\x4c\xd4\x80\x40\xf4\x2a\x6e\x9a\xd8\x66\xdf\x01\x10\xb3\xef\x60\xc0\xec\x15\xbe\x66\xf6\x3a\xaa\x66\xd8\x56\x0d\x0c\x6a\x9b\xbd\x04\x60\x66\xaf\x55\x42\xcc\xde\xac\x8b\x9a\xbd\xc8\x12\xaf\xf3\xd8\x63\xf6\x1c\xff\xd7\x32\x7b\x94\x23\xc7\x6e\xf5\x62\xf2\x66\xb3\x4f\xa2\x78\xb2\xdc\xdd\x69\xf6\xbc\xb2\xc1\xb7\xd3\xec\x85\x1c\x51\xe1\xba\x6f\x76\x39\x65\x62\x99\x3d\xd4\x2b\xa9\xeb\xb2\xb6\x8d\x5e\x14\x23\x26\x2f\x20\xc0\xe0\x25\xae\x66\xee\x10\x4d\x33\x67\x03\xdb\x86\xd9\x86\xce\x8b\x31\x33\x07\x15\x10\x23\xd7\xeb\xa1\x26\x2e\xbe\x5a\x00\x39\xeb\x31\x70\x8e\xfd\x6b\x19\x38\xc2\x0f\x6a\xde\xfc\x1b\x0a\x6f\x35\x6f\xf2\x38\x7f\x9c\xdd\x6b\xde\xac\xb2\xc6\xb5\xd3\xb8\x85\x0c\x51\xc1\xba\xef\xa2\x39\xe4\x61\x99\x36\xd4\x67\x37\xbd\x65\x1a\xff\xbf\x8e\x8a\xec\x49\xd0\x42\x4e\x7e\xf4\x3a\xf2\xd3\x51\x7d\x75\xa3\x2b\x18\x3c\xd6\x27\xcb\xba\x5d\xac\x05\xba\x49\xda\xbd\x8a\x9b\xd1\x9f\x9e\x2c\x62\xac\x7d\x61\xc0\x70\x2f\xd7\x71\x41\x60\xc4\x16\xde\x15\xa1\x69\x1e\x01\x6b\x54\xc1\xe7\xb1\x6e\x25\x28\x17\x3a\x18\x5d\xa3\x1a\xb0\x1b\x13\x9d\x5d\x07\x19\xd5\x36\x20\x82\x58\xa2\x3f\x12\x79\xd7\xf6\xa2\x6a\x12\x53\xc2\x71\xb3\xf2\x84\x55\xe1\xaf\x67\xb5\x2a\x9a\xd3\x35\x6f\xef\x8d\xea\xbf\x70\xce\x3a\x55\xb9\x91\xdc\x67\x32\xd8\x97\x23\x6e\x68\x52\x3a\x5f\xb4\x61\xe1\x78\xf5\x9d\x33\x94\x0a\xba\x3f\x8f\xd3\x1c\xda\x84\x57\xb9\x6a\xb5\xb7\xad\x3a\x35\xf7\x5a\xd8\x1c\xea\xa2\x22\xf8\xd2\x84\x26\x6b\x58\xae\xc2\x21\x5e\xa5\x0b\x7c\xce\x9a\x7d\x7b\xe1\x9d\x6e\x8c\x7d\xd0\x3b\x18\xd4\xce\x62\x70\x12\xf6\xe1\x51\x7f\x16\xe9\x01\x3f\xa6\x71\xa1\x19\xbb\xf5\x45\x90\xa1\xee\x22\xcc\x8e\xd1\xe6\xa8\x4c\xe0\x3d\x62\x60\xbb\x03\x3a\xeb\x90\xb3\xc9\xc4\xda\xa7\xc1\x12\x88\x8c\x69\x88\x2e\xf1\xdd\x0d\x2d\xad\x4d\xc5\x2b\xfb\xc4\xed\xb8\xb8\x80\x1c\xe2\xd8\xfb\x2d\xf8\xf9\x4f\x70\x6a\x82\xb6\x3c\x27\xc7\x20\x4e\xd8\x40\x3b\xc5\x45\x56\x9d\x73\xf6\x09\xd1\xad\x1b\xa2\x1f\x12\x8d\xbd\xee\x03\xf3\xc9\xdb\xf7\x7b\xef\xbd\x8c\xe4\xbe\x3f\x74\x6e\x48\x1d\xf0\x3d\x3e\xce\x11\xbb\x2b\x82\x94\x36\x76\xa1\x59\xc0\xf4\x21\x6e\x86\xb1\x5f\xc5\x1b\x3a\x55\x12\xda\x25\x16\x7a\x68\xa1\x87\xef\x71\x9f\x8c\xb5\x20\xae\xe8\xeb\x6c\x86\xda\x67\xba\x66\xb3\x19\xfe\x69\x59\xc0\x22\x64\xee\xa2\x6e\x06\xe1\x2a\xee\x99\xac\xce\xaa\x57\x6f\x61\xce\x37\x27\x8e\x0f\x40\x38\x91\x19\x67\xe0\xe8\x6c\xd7\x16\x03\x37\x55\xe8\xb0\xb1\x4f\x9f\xba\x6b\x2f\xe1\x72\xb1\xdd\x67\x39\xfb\x3c\x49\x5e\x1d\xe3\x8f\x02\xf0\xc7\x25\xb8\x16\x36\xf4\xf5\x88\x58\xe7\x0a\x61\x83\x61\x5c\xd0\x4d\xce\x5d\x5b\x04\x29\xd9\xc7\xe7\xbc\xbd\x0c\x7d\x6f\xd8\x98\x5f\xb3\xa7\x0f\xa0\x3e\x50\xb4\x2c\xb2\x15\x8e\x5c\x03\x5a\xd2\x1f\x73\x61\x9a\xd0\x1f\x9d\x3c\x7f\xea\x7c\x3b\xad\x38\xa5\x3f\x3a\x2d\x60\x5d\x1d\xaf\xb2\xac\xac\x48\xf1\xc4\xbe\xe3\x9d\x96\x2f\x34\x44\x1e\x0e\x39\x19\x2f\xa8\x1b\x79\x00\x23\xc5\xe0\x44\x42\x06\xf9\x41\x48\xd8\x0e\xc1\x24\x2e\x20\xc3\xc4\x6d\x12\xb6\xfb\x30\x88\x87\x63\x89\x8f\xb1\x8f\x74\x4e\x7f\x46\xd8\xc7\xdb\x74\x8a\xba\x14\xad\x81\x6e\x88\x21\xf2\x56\x83\x4d\x00\x1d\xce\xa0\x47\x65\x8a\xbc\x2d\x57\x40\x9e\x03\x87\xc8\x23\xaa\x91\x98\x88\xda\x14\x95\x70\x14\xf9\xd0\xf9\x9d\xbf\x41\x27\xe1\x85\xbb\x38\x3d\x90\xa1\x0f\x32\xce\x78\xa5\x1b\x3e\xdf\x68\xb4\x3b\x25\xcb\x34\x9e\x6b\x54\xa0\x50\x44\x91\x6e\x7f\x38\x79\xfe\x79\x47\x83\xfc\x64\x3a\xdd\xcd\x23\x9d\xbc\xe6\x9f\x6e\xa0\x35\x8d\xe6\xe9\xca\x60\x15\xda\xb2\xe4\x75\xd8\x96\x47\x89\xeb\x46\x1e\xa0\xa5\xea\x9c\x0c\xfb\x27\xfd\x63\x9a\x18\x71\x44\x25\x63\xfd\x93\x5b\xab\x88\x7f\xd2\x89\x0f\xfb\xa7\x5b\xec\x83\x89\x6e\x84\x7d\xbc\x4d\xa7\x3d\xfe\x49\x12\xc3\xfc\x93\x80\x8d\xf6\x4f\x6e\x95\xa1\xfe\xc9\x26\xdf\xef\x40\x7a\x86\x22\xe6\x9f\x2c\xf2\x03\xfe\x49\x57\xdb\xfd\xae\xc2\xf0\x52\xb2\x1a\x9e\xc7\x87\xd6\x33\xbe\xd4\x8b\x5b\xca\x22\xd9\x3d\x2e\x12\xa3\xf5\x79\x12\x93\x79\xa2\x51\x81\xd2\x91\x47\x89\x23\x0c\x71\x3e\x5f\xa7\x73\xd3\x10\xa7\x8b\xc5\x72\xba\xd0\xc9\x8f\x70\x54\x28\xad\xd9\xfa\x71\x3e\x5b\xeb\xb4\xa0\x51\x4b\x5e\x87\x8d\x7a\x94\xb8\x6e\xe4\x01\x9a\xac\xce\xc9\xb0\xa3\x32\x92\x57\x20\xc4\x11\x95\x8c\x75\x54\x6e\xad\x22\x8e\x4a\x27\x3e\xec\xa8\x6e\xb0\x0f\x2e\xba\x11\xf6\xf1\x36\x9d\xf6\x38\x2a\x49\x0c\x73\x54\x02\x36\xda\x51\xb9\x55\x86\x3a\x2a\x9b\x7c\xbf\x27\xe9\x19\x8a\x98\xa3\xb2\xc8\x0f\x38\x2a\x5d\x6d\xf7\xbb\x0a\xc3\x51\xc9\x6a\x6e\x47\x05\x3f\xff\xed\xf0\x52\xbb\x24\x4a\x89\xd9\xf4\x72\xf7\x98\xc6\x8a\x04\x94\x0b\xfd\x7b\x94\xfd\x4d\x76\x51\xba\x30\x03\xe5\x6e\x99\x3e\x2e\x00\xe1\x11\xce\x09\x25\x34\x5d\xae\xe3\x5d\x02\x08\x41\x2b\x66\x2c\x0e\x9b\xf0\xb0\x70\x6e\x69\x1a\x9a\x26\x60\x60\xd8\x1b\xc1\xd4\x29\x26\x4d\x53\xee\x63\x9d\x10\xa6\x34\xc4\xfd\x00\x9a\xc3\xbe\x67\xac\xe2\xb9\x7c\x86\x14\x7f\xaf\xbe\x7a\xfc\x0d\x23\x83\x39\x1b\x0a\x18\xed\x69\x30\x75\xa0\x3e\xc6\xa0\xda\xef\x01\xd0\x51\x84\xb9\x16\x9d\xea\x80\x5f\x01\x2a\xb9\x73\x64\x9b\x1e\x45\xd4\x71\x7b\x14\xf9\xd1\xf8\x5e\x13\xd8\x47\x71\x3a\x37\x9b\x26\x24\x9e\xce\x96\x1a\x15\x28\x11\x79\x9d\x64\x84\x85\x91\x64\xbd\x9a\x98\x4b\xcf\xf5\xe3\x62\x1f\xa5\x3a\xf9\x11\xde\x05\xa5\x95\x2e\x1e\x17\x93\xa9\x4e\x0b\x1a\xac\xe4\x75\xd8\x66\x47\x89\xeb\x46\x1e\xa0\x75\xea\x9c\x0c\x3b\x1b\x23\xf9\x0e\x42\x1c\x51\xc9\x58\xaf\xe3\xd6\x2a\xe2\x7b\x74\xe2\xc3\xee\xe7\x06\xfb\xe0\xa2\x1b\x61\x1f\x6f\xd3\x69\x8f\x2b\x92\xc4\x30\x6f\x24\x60\xa3\x1d\x92\x5b\x65\xa8\x5b\xb2\xc9\xf7\xfb\x90\x9e\xa1\x88\xf9\x27\x8b\xfc\x80\x8b\xd2\xd5\x76\xbf\xab\x30\x77\x92\x44\x35\xb7\xa3\xe2\xf9\x7c\x06\x0c\x65\xbd\x98\xcd\xad\x81\x37\x9f\xed\x67\x31\x24\xa2\xed\xaf\xb1\x92\x31\x56\x98\xac\x67\xd1\xd4\x8c\x83\xab\xe5\x24\x99\xac\x35\xe2\x23\x9c\x14\x4a\x2a\x4e\xa6\x6b\x39\x97\x17\xa4\xb4\x3d\x51\xce\xe8\x88\x2d\xd1\x11\x82\xba\x8d\x01\x6d\xbb\x13\xb2\x31\x62\x8f\x5b\x4b\xf9\x64\x53\xb6\x35\x31\x7a\x83\xdb\xa1\x4a\x6c\x7b\x1b\x52\x1e\xb1\xbb\x3d\xda\x24\xb8\xc4\x86\x4d\xe2\x2d\x7a\xec\xdb\xd9\xe6\xa4\xd0\x8d\x6d\x06\x1a\xbf\xaf\xed\x50\x13\xbe\xab\x6d\xd2\x1e\xd8\x75\x76\x8d\x39\x74\x4b\xdb\xa0\x3d\xb4\xa3\x0d\x55\x75\xb7\x3f\x30\x7c\x91\xac\xe5\xf6\x45\x79\x56\xfc\x6c\xec\x2e\x21\x07\xe7\xd6\x67\xce\x65\x55\xbf\xfb\x4d\xb3\x0c\x5a\x10\x9a\x05\xc3\x27\x94\x9c\x9b\xde\x0f\xae\x8f\x3d\x8b\xc4\x38\x04\x36\xc1\xfe\x06\xca\x02\x3d\xd0\xef\x1f\x6a\xa9\x08\xfa\x29\x49\x31\x4e\x67\x8b\xe9\x2a\xb1\x4e\x94\xcf\x45\x4a\xea\x3c\x2b\x90\xd0\x80\x36\x32\xda\xe2\x31\x8e\x46\x9b\xb4\xcd\x7e\x97\xc3\x1e\x3b\x0d\x0f\xf2\xc3\xe5\xfd\xde\x36\xb1\xfd\x83\xd3\xe5\x1d\x5e\xda\x51\x4a\xaf\x8d\x62\x8d\x1f\x9c\xdf\x49\x08\xbb\xec\x08\xef\xb3\x75\x38\x9f\x01\xba\x7e\x1b\x52\xcf\xeb\x70\xde\x9d\xb2\xf6\xe1\xab\xc2\xd6\x1f\xe9\x92\x86\xb8\xa1\xbb\x73\xdb\x96\x05\x04\x6b\x77\xeb\x76\x35\x89\xd3\xa4\x3e\x9f\x76\x30\x5f\xbf\x37\xb1\x6f\x64\x4e\xf9\xa3\x98\xa6\x15\x09\xf8\xf8\xb0\x71\xe4\x6d\xb6\xaf\x8f\xc0\xa6\x9e\xf2\xcc\x71\xdb\x51\xc3\xf9\x9c\x67\x9b\x1d\xd9\x97\x35\xf5\x47\x45\x4b\x8a\x76\xf3\xf0\xe5\xef\x51\x14\x47\x0f\x2a\xeb\x14\xd3\x93\x76\x46\xa7\x48\xc8\xfb\x16\xca\x32\xaf\x21\x96\x3a\xaa\xa3\x16\x4e\xc9\xc9\x0b\x97\xf4\x5f\x33\x72\x02\xea\x5f\x2d\x3e\x58\x89\xa3\x74\x73\xd8\x82\xf0\x68\xdf\x13\x42\xee\xe5\x98\xdf\x2e\x88\x1b\xc2\x47\xb7\x26\xb9\x70\xba\x20\xa7\x6b\xcc\xd9\x16\xa3\x54\xfe\x65\x85\x65\x6c\xd8\x59\x2f\xcf\x79\x5d\x72\xaa\xda\x6f\x9d\x18\xba\xf1\xe9\x09\xf9\xd8\x57\x04\xd9\xd3\xfa\x09\xd5\x23\xc3\xc0\x8e\x9b\x2d\x31\x77\xc7\xb2\xc7\x9a\xec\xa5\x1b\x42\x41\xce\x95\x3e\x4b\xf8\x25\xc9\x21\x47\x48\x5a\xe8\x31\xf0\xb0\x66\x75\x90\xab\x59\x7e\xb4\x28\xc9\x21\x1b\xc2\xda\x36\xa5\x81\x87\x35\xab\x83\x5c\xcd\xf2\x83\x02\x49\xce\xdc\x14\xd2\x36\x32\x20\x12\xd6\x20\x28\x77\x9e\x21\xb1\x2d\x40\x49\x08\x59\xfa\x69\x0b\x12\x03\x0f\x6b\x53\x07\xb9\x9a\xe5\x5b\x02\x9d\x85\x58\x53\x3b\x6d\xea\xa1\xa3\xa1\x76\x04\x21\xae\x36\xf9\x24\xff\x2a\x26\x37\xf8\xf5\x3f\xf5\xe5\x32\xf8\x7a\x7b\x56\xbd\x7a\x2b\x3b\x12\x58\xbe\x00\x8c\x42\xdd\x2d\xe0\x37\x04\x11\x7f\x60\x3b\x0d\x74\x68\x19\xfe\x81\x27\x13\x61\xfd\x72\x8f\x69\xde\xed\xbe\x31\xcd\xe3\x9f\xc0\xe4\xd3\x00\x7e\xc3\xf2\xb5\x79\x82\x34\xf8\x35\x5b\x23\x4c\x5e\x63\xc1\x80\x74\x4f\xfc\xaf\x3b\xdd\x13\x8d\x30\xbc\xed\xac\x25\x27\xf9\x8d\x00\xc9\x59\x11\x3f\x07\x55\x96\xe7\x8d\x74\xee\x4f\xf1\xd3\x2d\x67\x9c\x06\x79\x59\x97\x7f\xd5\x81\x5d\x7c\x75\xe1\x7c\x16\xa8\xda\x8d\x5e\xf6\x34\x42\xf1\x94\x67\x8a\x1d\xed\x6b\x46\x14\x2d\xce\x49\xad\xd2\x2e\xba\x22\x6c\xef\xf5\x4e\x24\xaa\x32\xaa\xde\x71\xae\x5f\x84\xe6\x5d\x16\x29\x16\x25\x12\xff\x0f\x9f\x24\x5b\x59\x10\x39\xf0\xa9\xf2\xc5\x2f\x67\xeb\x72\x7d\x87\xf2\xb9\x32\x67\x2b\x82\x72\x9a\x35\xa7\xac\x61\xf3\x43\x5f\x2f\xca\x76\x39\x31\x9e\x4e\xcf\xf0\x8a\x5e\x98\xe4\x65\x83\xd5\x17\x10\x97\x1d\xd3\x61\x29\xae\x59\xb3\x5c\x93\x98\x08\x7a\x5c\x39\x7f\x1f\x69\x2e\x90\x96\x64\x9d\x2c\xbb\x14\x95\xe2\x41\xa4\x46\xca\x3b\xd6\xe0\xfb\x39\xca\xe1\x90\xe9\x6e\x66\xa2\x42\x05\xc8\x48\xc3\x1e\x9d\x4a\x44\x87\xcb\xe7\x69\xec\x0d\xde\x76\x09\x79\xdc\x77\xd3\x8e\xd9\x64\x15\x3d\xee\x21\x1d\x9c\xb1\x78\x49\x26\x44\x6b\x0f\xe5\x6a\xbe\x98\x2e\xd7\x12\xab\x27\x34\xb0\xd7\x75\x06\x63\xfb\x98\xec\x92\x44\x32\x26\x9f\xd3\x69\xa4\x70\xde\xf6\x2b\x32\xd9\x2d\x4c\x54\x84\x3d\xfe\x64\xb1\x33\x1e\x57\x08\xe1\xcf\xa3\xcc\x0d\xb8\x5d\x92\xa4\x9d\xd8\xe4\x8b\x28\x48\x09\x67\x8e\xcc\x77\xeb\x24\x32\x30\x11\xde\xf8\x7b\xb3\xeb\x9f\xe4\x42\xf3\x67\xf2\x6d\x5f\xc7\x27\xd2\x78\x55\x5d\x1e\x6a\xd2\x34\xc1\x2e\xae\xc5\xf7\x73\x9a\xcb\xbe\x2e\x4f\x90\xf5\xce\xb8\xe7\x74\x75\x14\x5d\xdb\x12\x85\x46\x5e\x74\xbd\xfe\x29\x28\xbf\x2b\xf9\xef\x48\x3b\x94\x14\xbb\x0c\xe3\x32\xd5\x37\xcc\x7b\x85\xb9\xc7\xd1\x0b\x8e\xa1\x27\x7f\x53\xeb\x62\xb4\xf3\x19\x22\x82\xaa\x7a\x40\x65\x02\xbe\x2f\x2a\x56\x7a\x2a\x23\x28\xcb\x0e\xda\xb3\x90\x9c\x82\x97\x6e\xf8\xe2\xc1\x79\xfd\xa7\xa7\x87\x34\xac\x7b\x91\xc1\x35\x7e\x4b\xdc\x85\x8a\x64\xf3\x64\x7d\xf3\xc2\x65\xc3\xd2\x62\x1a\x99\x39\x0d\xa0\x13\x02\x44\x27\xbe\x22\xe5\x69\xc2\xf4\x43\xc4\xdc\x52\x7b\xf7\x4f\xf2\x47\x85\x19\xd7\xc1\x81\xaa\x9e\x14\xed\xc7\xf9\x22\x25\x07\x9f\xf7\x67\xba\x58\xf8\xf2\x1f\xd6\x2b\x6f\xba\xf8\xe0\xc3\x98\x6a\x17\x2c\xa2\x0f\xce\xda\x7d\xb0\x95\x49\xc8\x2c\xf8\x64\x5f\xf7\x0f\xca\xdf\x34\xfb\xbf\x21\xde\xbb\xb1\xa2\xfa\xc0\xc6\x23\x73\x56\x73\xc3\xb5\xe8\x10\x65\xb0\x62\xce\xd9\x67\xaf\x72\xcf\xa1\xcb\xc1\x59\x64\x27\x3e\xdd\xc5\x9c\xa8\x37\x6d\x3c\x2e\x44\x2f\x2b\xf6\x59\x91\xb5\x6c\x54\xdd\x5e\xe9\xe6\x1a\x57\x63\x94\x0d\xae\x71\xfb\x07\xad\xfb\xd6\xd4\xbf\x86\xe9\x3f\x9d\xfd\xdf\x0e\xef\x86\x55\x0e\x6c\x81\x0c\x98\x24\x7e\xab\xe6\x5f\xf6\xf8\x4f\x67\xff\xb7\xc3\xbb\x61\x8f\xc3\x9b\x64\x03\x26\xe9\xbc\x60\xf1\x2f\xab\xfc\xa7\xb3\xff\xdb\xe1\xdd\xb0\xca\xc1\x3d\xd4\x01\xa3\x74\x1d\xaf\xff\xcb\x26\xff\xe9\xec\xff\x76\x78\x87\xdb\xa6\x17\x64\xe1\x6e\x66\xb6\x30\x36\x59\x07\x73\x6a\xeb\xa7\xc6\xf6\xe6\x29\x5d\xc5\xf6\xbe\xf6\xb5\xbe\x08\x66\x70\x80\x7d\x8d\xa9\x2d\x2b\xbe\x5b\x09\xf7\x15\x00\x8c\x76\x46\xdb\x8d\x35\x69\x82\x8f\x0f\x99\xf9\x05\xf4\x0f\x2c\xbb\x5a\x11\x60\xb3\xa1\xd8\x6c\xc9\xe7\xe7\xbc\x96\x58\xe5\x8c\x69\xb1\xb0\xeb\x78\x66\x41\x70\x24\x31\x15\xb2\x83\x98\x13\x1f\xbc\x7b\xb5\x5b\x11\xa7\x02\x38\x49\x75\xa2\x69\x2a\x83\xdd\x3a\x70\x54\xe2\x27\x0b\xf8\x71\x42\xd7\x5f\xe7\x56\xd1\xd5\x21\x2a\xf0\x31\x17\xeb\x83\xfb\xe6\xa9\x84\x7a\x3a\xef\x82\x74\xa7\x54\x2e\xb8\xf3\x7c\x8c\x74\xbd\x58\xad\x56\x5b\x2c\xe5\xb3\x8b\xa6\x5b\xa1\x03\x6c\xde\x53\x91\xf1\x3f\x64\x12\xdd\xf6\xfb\x78\x96\xa9\xec\x6f\xe7\x77\xa0\x96\x83\x59\x5a\x4b\xbf\x1d\x80\x9e\x3e\xd9\x84\xf5\x4b\x7f\x0e\x28\xd7\xb0\x4a\xf2\xda\xff\x20\x03\x7b\xd1\xd7\x1d\x6b\xa3\x0d\xdc\xa0\x35\xc8\xef\xed\xd5\xfa\x55\xed\xaa\xe6\xac\xf0\xd4\x9c\xe2\x3c\xbf\x93\xc9\x81\xca\xfd\xac\xf6\x57\x76\x57\x0b\xdf\xc4\xf1\x40\xed\x01\x96\x79\xed\xa1\xf1\xe4\xea\x01\x3e\x2e\xfa\xf9\xee\xad\x33\x62\x24\x25\xab\x34\x25\xf6\x59\xab\xf9\x58\x72\x28\x55\xa9\x15\x14\x24\x01\x47\x58\xc0\xe9\xbb\xc9\xdc\x1a\xfe\x06\xeb\x19\x3a\x72\x36\xdc\x1b\x11\x0d\x24\x37\x91\xbe\x08\xa9\x23\x0d\x0b\x9c\x7f\x5f\xdc\xd9\x96\x74\x83\xfd\x8d\x49\xac\x21\x32\xa3\xba\xaf\xe3\x0e\x92\x1c\x23\x0c\xdd\x2d\xf7\x3b\x63\x77\x6a\x5d\xdb\xac\xe1\x63\x3b\x7e\x0c\x8b\xde\xc7\x67\x5f\x22\xb7\x3b\xc2\x3e\x09\xee\x60\xdc\xa6\xec\x20\x70\xb3\x29\xf7\x56\x1a\xb4\x63\xf0\x90\xac\x87\xbe\x53\x77\xe0\xc5\x58\x5f\x75\xdd\x76\x5d\x82\x15\xdf\x45\xc7\x5b\x19\x30\x5c\x88\xd2\x4b\x60\xb8\xb3\x43\xf6\x6a\xbf\x71\x1c\x41\x6c\xd4\x5b\x54\x2e\x17\xdd\x52\xc5\x65\x00\x93\xb6\xf1\x64\x6b\x28\x69\xae\xdd\x0b\xf9\x39\x72\x07\xef\x28\x7d\x37\x99\x9b\xad\x76\xa8\xde\xa0\xe1\xea\x0f\x8e\xfa\x5b\x71\xaa\x52\x7f\x56\x34\x40\x44\x53\xa1\x5b\xe0\xfc\x2b\xed\xce\xb6\x06\xec\xd8\xc0\x1a\x22\x33\xaa\xfb\x43\x06\x8d\xbe\xa0\x1b\x47\x72\x84\x59\xf7\x24\x79\xb6\xcd\x5a\x7f\xe6\x33\x94\x2d\xd7\xee\x8a\xf8\x78\xba\x83\x79\x8c\xba\x93\xc8\xcd\x26\x3d\x50\x6d\xd0\xa2\xb5\xe7\x2a\xbd\x6d\x38\x35\xa9\xbd\x4a\xe9\x27\xa1\x69\xce\x29\x68\xf1\x35\x79\x57\x4b\x03\xc6\xac\x23\x0d\x10\x19\xd3\xf1\x21\x4b\xc6\x5e\x5b\x8d\x22\x38\xe6\x59\x94\x3b\x9f\xb3\x6d\xc7\x52\xe7\x3d\x29\x4d\x17\xc8\x26\x13\x9f\x7b\x9b\xdb\x4b\xc6\x23\x8a\x6b\x58\xc5\x85\x95\x30\xd7\x75\xa5\x06\xdb\x34\xeb\xbd\x87\x88\x5d\x45\x71\x25\xc7\xd6\x6f\xa1\xb8\xb1\x04\xcb\xc1\xae\x4c\xbf\x69\xd7\x26\x25\x40\xca\xcb\xde\x1a\x74\x7d\x3f\x1a\xe9\x83\xb5\xc5\x37\x73\x6f\xf1\xcd\xac\xb6\xd5\x7b\x35\xcf\x7c\xb9\x66\xae\xd8\x78\xbd\x36\x6b\xf3\x81\xa4\xb5\xe0\xae\xd0\xd2\xbe\xc7\x08\xc8\x3c\xc5\xbe\xf6\xa7\x58\x66\xc2\xa2\x10\x29\x63\x45\x66\xdd\x50\x94\xe2\x5c\xef\xcb\xb2\x25\x35\x26\xe8\x81\xeb\x58\xf2\xb3\xd5\x6a\xdf\xb5\x6f\xdf\x73\xd6\xbb\xef\xa9\xa4\xff\x04\x86\x80\x2f\x8b\x38\xa7\x49\x99\xe7\x71\xd5\x90\x27\xf7\x76\x74\x84\x50\xb1\x1c\xf0\x08\xb2\x56\x1d\xb9\x6b\x2c\x36\x12\xab\x57\x2f\xb2\x5f\xbe\x59\x4d\xc3\x7d\x67\x8b\x24\x04\x8e\x60\x69\x34\x2d\xb0\xc1\xad\xb6\xa2\xef\x1b\x0a\x5a\xfb\x6a\xbf\xdb\x6e\x1e\x7e\xc1\x7f\xb8\x27\xe3\x28\x99\xdf\xb7\x7f\x1f\xeb\xd2\x86\xf8\xe7\x5b\x4c\x60\xd4\x21\x42\xe4\x12\x6a\x74\x35\x9b\xbe\xa3\x29\xf9\xdd\x7e\x80\xff\x59\x1f\xc6\x18\xb2\xe8\x79\xcb\xef\x6e\xc3\xbf\x82\x9a\x34\x55\x59\x34\xec\x16\xbe\x0e\x37\x05\xc3\xa0\xce\xd1\xc6\xa0\x5e\x12\x57\x6d\x56\x16\x43\x6d\x58\x78\x68\x5b\x12\x4b\xcf\x9b\xce\x3c\x93\x7e\xd9\x1c\x84\x0d\x51\x15\x1d\x59\x26\x33\x10\x09\xa9\xe7\xd4\xf0\xc8\x81\x63\x11\x7c\x6a\xa9\xe6\xf5\x92\xfa\x3d\x38\xbd\x91\xb0\x8e\x48\x03\xf0\x77\xe1\x69\x80\xf0\xc5\x2d\xc2\x3e\x97\xf5\x06\xf1\x7a\x6d\xfa\xab\x48\xbb\xb7\x9d\x9b\x64\xf4\x6e\x1c\xbf\xa5\x9d\x1b\xfb\x7e\xfc\x95\x64\xdc\xd3\xce\x8d\x7d\x7f\x27\x8e\x6f\x6b\xa7\xc7\xfc\xdf\x68\xe2\x48\x24\xfe\x1e\x16\xee\x6a\xe6\x66\xc3\x7b\x0f\x7e\xdf\xd0\xcc\xcd\x66\xf7\xab\xc8\xd7\xdd\xcc\xcd\x46\xf7\xab\xc8\xf7\x88\x4c\xdb\x46\xb8\xef\x31\xbc\x29\x1c\xbb\xd6\xe5\x5d\x66\x84\x26\x55\xd1\x5f\x58\x50\xbf\x99\xd5\x9b\x88\x6a\x68\x74\x62\xf7\xee\xcc\xf4\x12\xbd\xf4\xca\x6d\x60\x1a\x7e\xaf\x58\x47\x07\xbb\x37\x48\xb9\x3f\xd0\x8d\x96\xcf\x3b\xb1\x7a\x7f\x1b\xb7\xf4\x78\x64\x78\x7b\x93\x54\xfb\x82\xf1\x0d\x3d\x7e\x17\x56\x6f\x69\xa3\xdf\xd0\xdf\x62\xc9\xdf\xd9\x5d\xf4\x46\xb4\x9b\x6c\xec\x3b\xbb\x92\xd1\x8c\x0e\x5a\xd8\x77\x97\x68\x4f\xcc\xbd\xc9\xbe\xbe\xbb\x44\xb1\x60\x3b\xe4\x8c\xd5\x6e\xeb\x67\x74\x9d\x0f\x20\x80\x4f\xbd\x03\x9f\x01\xae\xb3\x6b\x10\xe9\xe2\xdc\x28\xd4\x87\xd6\x98\x09\x86\x7f\x6b\x0d\x7d\x1b\x4c\x6f\x30\xe0\x20\xe2\xd6\x90\x89\x28\x88\x39\x09\xf1\x39\xdd\x53\x5b\x3f\x8d\xf4\x62\x77\x12\x50\xe8\x54\x00\x6f\x6a\x6f\x14\x01\x85\x4e\x8d\xf2\x4d\xed\x8d\x22\x80\x88\x63\x5c\xac\xbd\x93\x00\x22\x8e\x7b\xdb\x1b\x45\x00\x11\xc7\xbd\xed\xe1\x04\xa4\xd5\xcb\xab\xd8\xc3\xd6\x3a\xc2\x5f\xdd\x57\x1f\x35\xb5\xbb\x5a\x1b\x53\x1f\x35\xb4\xbb\x5a\x1b\x53\x1f\x35\xb3\xb7\x49\xb2\xa7\x3e\x6a\x64\x6f\x93\xe4\xa8\xd6\x80\x89\xbd\x4d\x92\x29\x12\xb2\xf8\xe6\xed\xa0\x89\xea\x4e\xfe\x0e\xc9\xf6\x13\xb0\x44\x73\x7f\x7b\xa3\x08\x0c\xb0\x77\x7c\x6b\xff\x4c\x02\x03\xec\xdd\xd2\x1e\x4e\xc0\x3c\xa5\x71\xea\x53\x56\x87\x13\x9b\x7b\xc4\xdb\x57\xdf\x32\xbd\xbb\x5b\x1b\x53\xbf\x9f\xb7\x7b\x44\xdb\x57\xbf\x9f\xb7\x5b\x5a\x43\xeb\x0f\xe8\x51\xd1\xeb\xa6\x42\xe6\xe1\xb6\x3c\xe0\xc2\xce\x65\xa7\x91\x3a\x5e\x17\x47\x5e\xec\x0f\xd7\xcb\x19\xf8\xee\xc6\xae\xf5\x59\xaf\xdc\x65\x2a\xb2\x31\xbb\x7b\x04\x78\xef\x50\x5c\xfb\x50\xd0\x9a\xf7\x8e\xac\x07\x8e\xa9\x87\xa6\xc2\x3a\x45\xeb\x30\xcf\xc1\x31\xc7\x33\x1b\xf6\x90\x39\xb8\x75\x5d\x02\xb6\xdd\xe5\xfb\xd3\x13\x24\x59\x08\xc6\xe9\xe9\xc0\xb7\x18\xb5\xcb\x02\x63\x69\xf6\x09\x1f\xc9\xdc\x33\x48\xcf\x4c\xc0\x2d\x98\xc2\xbf\xe6\x86\x12\xc2\x65\x8c\xf1\x25\x16\x61\x36\x6b\x5d\x6e\x43\xf4\x01\x88\x86\xe3\x10\xf1\x1d\xef\x4a\xfa\xc8\xde\x28\xe5\x31\x24\x6f\xfa\x1a\x15\x4a\xe8\x5e\x41\xeb\xdc\x75\xb9\x2a\x90\x64\x5f\x06\x8e\xcb\x9c\xfb\xdf\x2e\xa0\x69\xc4\xfa\x29\xdf\x6a\xd4\x23\x48\x9a\xc9\x9c\x05\x6b\x8e\xdb\xee\x0e\x5a\x77\x9b\xb6\xc6\x20\x4f\xc5\x80\xe4\x2f\x83\x08\x2e\x59\xf7\xdf\xa9\x47\xd3\xa2\xf5\x90\xbd\x51\xd0\x83\xf4\xac\x94\xd9\x9c\x29\xc7\x4d\x6d\x8c\xd0\xbd\x22\xd6\x59\xeb\x52\x0b\x20\xc9\xd8\x0c\x1c\x87\xa0\x07\xee\x83\xa3\x69\xde\xfa\x29\xdf\x28\xeb\x31\x24\x4d\x67\x2d\x58\x73\xdc\x20\x76\xd0\xba\x57\xe2\x3a\x83\xf2\xdd\x3c\x92\x5f\x4e\x47\x71\xc8\x7b\xe0\xa6\x32\x9a\xb8\xae\x97\xf0\x8d\xe2\x1e\x41\xd1\x94\xb6\x60\xcc\x71\xcf\x15\x27\x75\xaf\xb0\x25\x7b\xe4\xb4\x23\x29\x9c\x5c\x0e\x3d\x15\x17\xb7\x5e\x55\x9e\xd2\x68\x6b\x64\x99\xb3\x89\x7a\x56\x89\xb8\x06\x68\x21\x66\x2c\x27\x1e\x02\x60\x05\x48\x79\xb9\xfb\x07\x49\x5a\x04\xf0\x9c\xa5\xa4\x54\xbd\x89\x77\x4d\x99\x9f\x5b\x9e\xce\x32\xda\xf2\xdd\x99\x6d\x37\xeb\x85\xe9\xe4\xc0\x53\x65\xb5\xe9\x68\x75\x60\xb2\xdc\x7d\x5b\x77\x57\xa3\xe4\x0d\xe2\x65\x38\x5d\x7c\x40\xb0\xe7\xbb\x6f\x33\x13\x79\x45\x31\x5f\x48\x9e\x5f\x4e\x59\xa1\x25\xac\xeb\xae\x82\xae\xef\xca\xd3\x07\x27\x99\x64\x46\x7f\x6e\x4f\xe0\x37\x74\xb3\x78\x08\x97\xf7\xcc\x63\x36\xf3\xdf\xe7\xb2\x25\xf6\xdc\x56\x1f\x82\x66\x86\x3c\x4e\x00\xa6\xb4\x9f\x82\x97\xfb\x30\x51\x3d\xc3\x03\x99\xea\xd7\x16\x1a\xdb\x88\xe7\xf9\x4d\x41\x2e\x5a\x70\x17\x98\xe5\x34\x1d\x97\x82\x3c\x8a\x22\xfe\x82\x5d\xbb\x62\x1d\x79\x6c\x86\xd8\x7d\xb1\x7d\x8a\x7f\xb0\x7d\x1a\x7d\x12\x8c\xc8\xd7\xcd\xfc\x0f\xed\xb2\x7b\xd7\x42\x7f\x36\x5f\xd5\x98\xe3\xeb\xf0\x8b\xe8\x93\x7c\x8d\x2f\x72\xbb\x76\x23\xd6\xa0\xa4\xec\x69\x63\x5f\xe2\xde\x44\x9d\xad\xc4\x55\x45\xe2\x3a\x2e\x12\xf9\x75\x90\x24\x27\x71\xbd\xcf\x5e\x45\x26\x79\x5f\x15\xc4\xfb\x96\x76\x2f\xcd\x83\x63\x59\x67\xbf\x94\x45\x1b\xe7\x5e\x9a\x76\x88\x16\x40\x54\x48\x68\x41\x56\x90\x5a\x91\xec\x4a\x4c\x94\x60\x9f\x9f\xb3\xd4\x46\x14\xe5\x02\xbd\x2e\x5f\x3a\x14\xfa\xbb\x28\xde\x97\xf5\x09\xb2\xc0\x0b\xf8\xf5\x58\x89\xde\x87\x23\xc8\x28\x3f\xdb\xd5\x02\x45\x0c\x49\xe5\xd7\xf7\x1e\x3a\x67\xca\x16\xf5\xd7\x61\x79\x59\x62\x71\x08\x01\x74\x76\x44\x07\x6d\xe6\x05\xa7\x94\x9d\xcd\xae\x6c\x8f\xd7\x90\xe7\xc7\x44\xbf\xb7\x00\xb3\x2f\xc7\xe7\xb6\xdc\x6a\x69\x9b\x69\xc9\x35\xac\xce\x79\xce\x0b\xe0\x98\xf3\x7e\x9f\x9d\xaa\xb2\x6e\xe3\xa2\x15\x28\x94\x08\xc8\xf0\xa9\x21\x1c\xb3\x94\x68\x29\xb7\x35\x68\x73\x2c\x5f\x74\xc6\x34\x70\x56\x3c\x67\x3c\x35\x32\xfb\x6f\x96\xd3\xb1\x22\x23\x14\x1b\x5f\x8c\x3c\x1d\xf5\x9b\xe8\x4b\xe4\xc5\x62\x84\xc3\x11\x00\x07\x3a\xfe\x49\x06\x6c\xbc\x30\xc6\x53\x52\xb8\x59\x8f\xf7\xfb\xec\x55\x05\xa7\x7d\xf6\x4a\xd2\xeb\x9f\x82\x53\x13\x3c\x67\xe4\x85\xa2\x89\x84\x19\x29\x79\xce\x12\xc2\x6f\x12\x5f\x43\xd1\xa1\xe0\xb5\xf1\xbb\xdf\x9b\x93\xfa\xfd\x94\xaa\xdf\xf3\x83\xbb\x79\x45\x47\x7c\xd3\x02\x96\xf0\xc4\xed\x48\x91\x89\xdb\x9c\x90\x12\xb3\x76\x57\x64\xe2\x9e\x52\xa4\xc4\xac\xdd\x15\x99\xb8\xf9\x01\x29\x31\x6b\x77\x45\x86\x11\x9b\xf2\xf8\xd3\x89\xa4\x59\xec\x7d\x3c\xc5\xaf\xe2\xce\xf6\x6a\xb9\xaa\x5e\x3f\x5d\x80\x0c\xdc\x86\xc6\x46\x32\x86\xc9\x00\x1a\x66\xed\x44\x0b\xea\xf2\x45\x43\x3d\x42\x65\xb7\xa9\xbb\x62\x42\xc3\x2c\xa8\x39\xaa\x37\xd8\xa8\xbe\x9d\x08\x17\xae\x91\xf1\xff\x5e\x32\x06\x4b\xb0\x10\x27\xd9\x7d\x52\x60\xb5\x7c\xac\x5e\x3f\x79\x71\x91\xc2\x86\xd6\xeb\x89\xd6\x50\x73\x1a\xab\x42\x80\xd9\xa7\x42\x13\xad\x47\x85\xcd\x09\xaa\xd0\xaa\xe8\x56\xe1\xcd\x7d\x1c\xaf\xd8\xdb\x49\xdf\xa0\xee\x7b\x89\xdf\x6f\x04\xeb\xf5\x14\x69\x68\x32\x59\xaf\xb5\x96\x4e\xe9\x58\x2b\x00\x98\x7d\x56\x60\xa2\xf5\x58\xc1\x29\x85\x56\x60\x55\x1c\x61\x05\xa3\x3b\x79\x87\x19\x8c\xa7\x7d\x8f\x1d\xdc\x4a\xfd\x7e\x43\x98\x4c\xa3\x48\xa3\x09\x02\xe1\x80\xca\x01\x66\x9f\xca\x4d\xb4\x1e\x95\xe7\x07\xa8\x72\xab\xe2\x08\x95\x23\xdd\xb9\x43\xb9\x18\x95\x7b\xd4\xe8\xa6\x73\xb3\xc2\xac\x88\xc0\xe7\x4c\x30\xc0\x99\x71\xfa\x66\xff\x22\x48\x02\x87\x3b\x82\xe4\x80\xa9\x0a\x9a\x60\xf8\x8e\xa0\xd9\xc9\x4d\xd4\xee\x99\x9c\xa9\xd9\x59\x55\x67\x45\x3b\x34\x69\xe1\x48\x8e\x3a\x03\xf6\xae\x23\xf7\x99\x3c\x82\xd9\x63\xf5\x0c\x1b\x1a\x3e\x56\xdd\xb2\x7d\x1d\x7b\xdc\x94\x0d\xeb\xfd\xe0\xf0\x30\xd0\x8d\x71\x70\x4b\x4b\xc3\x43\x08\xad\xf0\x86\xbe\xdd\x35\xd8\x04\x25\x61\x7b\xfd\x66\x75\xfd\x7f\x01\x00\x00\xff\xff\x42\x0a\xde\x2d\xbe\x15\x01\x00"), }, "/css/search.svg": &vfsgen۰CompressedFileInfo{ name: "search.svg", - modTime: time.Date(2018, 8, 19, 14, 21, 17, 476526885, time.UTC), + modTime: time.Date(2018, 9, 10, 21, 40, 58, 711425774, time.UTC), uncompressedSize: 1321, compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x52\x5d\x6b\xeb\x46\x10\x7d\x4e\x20\xff\x61\xbb\x7d\x2a\xec\x8e\x66\xbf\xb5\x26\xea\xa5\xb1\x43\x08\xe4\xb6\x81\xa4\x29\x7d\x0a\x8e\xac\x6b\x8b\xab\xc8\x46\x92\x3f\x6e\x7e\x7d\x99\x95\x5d\x0c\x0d\xd4\xe0\xd9\xd1\xcc\xd9\x33\x33\x67\xf6\xfa\xcb\xe1\xbd\x61\xbb\xaa\xeb\xeb\x75\x5b\x70\x05\xc8\x59\xd5\x96\xeb\x45\xdd\x2e\x0b\xbe\x1d\xbe\xc9\x9c\x7f\xf9\xf5\xea\xf2\xfa\x27\x29\xd9\x5d\xd5\x56\xdd\x7c\x58\x77\x13\xf6\xdb\x62\xfd\x56\xb1\xfb\xa6\xd9\xf6\x43\x0a\x31\x15\x00\x01\x05\x7b\x7a\xb9\x63\xb7\x87\xcd\xba\x1b\xd8\x63\xb3\x5d\xca\xfb\x96\x41\x0a\xbe\x8c\x45\x26\xcc\x03\x22\xbb\xd9\xd6\xcd\x82\xe1\x2f\x8c\x49\x99\xf8\x67\x7f\x4c\x9f\xff\x7e\xbc\x65\xfd\x6e\xc9\x1e\xff\xbc\x79\xb8\x9f\x32\x2e\xb3\xec\x2f\x33\xcd\xb2\xd9\xf3\x2c\x51\x28\x50\x59\x76\xfb\x3b\x67\x7c\x35\x0c\x9b\x49\x96\xed\xf7\x7b\xd8\x1b\x58\x77\xcb\xec\xae\x9b\x6f\x56\x75\xd9\x67\x4f\x2f\x77\x19\x01\x67\xcf\xb3\xac\xdf\x2d\x95\x82\xc5\xb0\xe0\x54\x83\xa8\xcf\x46\x55\x9c\xd5\x8b\x82\x3f\xcc\x7f\x54\xdd\xab\xe2\xec\xf0\xde\xb4\x7d\xf1\x09\xb5\x46\x44\xa2\x3a\x42\x26\x87\xa6\x6e\xbf\x7f\x06\x54\x31\xc6\x2c\x65\x39\x3b\x14\x1c\x37\x07\xce\x7e\x8c\xe7\xd5\xe5\x05\xdb\xd7\x8b\x61\x55\x70\xa3\x29\xbe\xaa\xea\xe5\x6a\x38\x7d\xed\xea\x6a\x7f\xb3\xa6\x3b\x0c\x99\xd1\xcc\x68\xda\xc3\xfc\xad\xa9\xe4\xdb\xbc\xfc\xbe\xec\xd6\xdb\x76\x51\xf0\xb6\xda\xb3\x33\xc4\xe1\xbd\x99\xf4\x9b\x79\x59\x15\x7c\xd3\x55\x7d\xd5\xed\xaa\x34\xe8\x32\x0d\xd6\x57\xf3\xae\x5c\xbd\xaa\x57\x8a\x5d\x5c\x6f\xe6\xc3\x8a\x7d\xab\x9b\xa6\xe0\x3f\x4f\xd3\x8f\xb3\x45\xc1\xbf\x6a\x14\x08\x88\xae\x94\x1e\xbc\x0e\x02\xa5\xd2\xc2\x81\x09\x86\x1c\xa5\x4b\x14\x1a\x50\x7b\x81\xe0\x30\x08\x03\xd1\x18\xa1\xc0\x44\x27\x1c\x78\xcc\x1b\x99\x83\xb1\x56\x90\xd5\x0d\x51\x85\x44\xe8\xaf\x2e\x2f\x2e\xa6\x08\x16\xbd\xd0\x1e\x3c\x6a\x81\x42\x07\xb0\x91\xce\x1c\x6c\x08\x25\x0a\x05\xd1\x46\xa1\xc0\xe5\xc2\x80\xd3\xf1\xdc\x96\x08\x31\x77\x82\x40\x79\xb0\xf2\x48\x05\x4e\x39\xa9\x00\x5d\x6c\x24\xd5\xd1\xa3\x6d\xa8\xbe\x4a\xbd\x50\xe1\x52\x81\x0f\xd4\x73\x1e\x15\xb1\xe5\x5e\x28\xb0\xd4\xb1\x0a\xe4\x95\xc7\x61\x85\xd2\x32\x0d\x4b\x8e\xd2\x4f\xfa\x18\x27\x45\xc4\x49\x9a\x0f\xf6\xd5\x42\x88\x4e\xe8\x08\x3e\x86\xc4\x2f\x11\x8c\xd6\x02\xc1\x18\x6a\x2d\xf8\x9c\x04\xb2\x46\x2a\xd0\xde\x8f\x3e\x81\x62\x70\x24\x29\x04\xef\x08\x96\xc7\xa3\x4f\xd6\x96\x48\x53\x45\xba\xaa\x15\x81\xad\x39\x67\x19\x07\x8c\xc9\xe6\x4d\x0e\xe8\xbd\x4c\x36\x75\x80\x10\xd0\x09\x84\xe8\x14\x09\x68\x9d\x50\x10\xa2\x12\x1a\x6c\xb4\xc9\xe6\x0f\xe7\x6d\x7f\x30\xda\xb5\xd6\xb4\x9b\x52\x3a\x70\xd4\xbe\x54\x28\x2d\xd8\x10\xc9\x51\x58\xe2\x31\x41\xb1\x5c\x2a\x14\x29\x9c\xea\x51\x42\x91\x62\x38\x66\x45\xca\x4e\x0d\x0a\x15\xc0\xe9\x20\xf4\x88\x18\x2b\x88\x7f\x6b\x7d\xf0\xec\xff\x1e\xa0\x1b\x1f\xa0\x81\xdc\xd3\x03\xa4\x57\xa6\x8c\x95\x41\xd0\x13\x41\xd0\x69\x93\x5a\x5b\x12\xe7\xf4\xef\x11\x48\xd1\x63\x54\x22\xb8\x12\xa5\x01\xa3\x8c\xd0\xe0\x73\x2f\xbd\xf0\xf2\xa4\x94\xa6\x2d\x88\xff\xdc\x78\xd2\x63\xca\x9d\xd6\x9d\x9c\xb1\xe1\xeb\x6c\x99\x6c\xbf\xa3\xf3\x9f\x00\x00\x00\xff\xff\x33\xb0\x62\x8c\x29\x05\x00\x00"), }, "/css/styles.css": &vfsgen۰CompressedFileInfo{ name: "styles.css", - modTime: time.Date(2018, 8, 19, 14, 21, 17, 476526885, time.UTC), + modTime: time.Date(2018, 9, 10, 21, 40, 58, 711425774, time.UTC), uncompressedSize: 5524, compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd4\x58\x4d\x6f\xdb\x38\x13\xbe\xfb\x57\x0c\x5a\x14\x49\x5c\xcb\x96\xec\xd8\x75\x54\x14\x6f\x5f\x74\x53\x6c\x81\x16\x7b\xe8\x02\x7b\xd8\xee\x81\x96\x28\x8b\x08\x45\x0a\xe4\x28\xb1\xb3\xc8\x7f\x5f\xf0\x43\xb2\x64\xcb\xa9\xdd\x62\x0f\xeb\xb4\x89\x45\xce\x0c\x87\x33\x0f\x67\x1e\xea\x3d\x2b\x4a\xa9\x10\x2a\xc5\x2f\x2f\x72\xc4\x52\xc7\x93\x49\x26\x05\xea\xf1\x5a\xca\x35\xa7\xa4\x64\x7a\x9c\xc8\x62\x92\x68\xfd\xbf\x8c\x14\x8c\x6f\xdf\xfd\x56\x52\xf1\xfa\x2b\x11\x3a\xbe\x0e\xc3\xd1\x2c\x0c\x2f\xae\xde\x0e\x26\x43\xf8\x95\xdc\x53\x40\x09\x95\xa6\x50\x1b\xce\xa4\x02\xcc\x29\x18\x9b\x23\x20\x1a\xb6\xb2\x82\x84\x08\x90\x82\x6f\x41\x97\x34\x61\xd9\x16\x08\x68\x26\xd6\x9c\x82\xc6\x2d\xa7\x3a\xa7\x14\x61\x38\x19\x0c\xe1\xef\x01\x40\x41\xd4\x9a\x89\x18\xc2\xb7\x03\x80\x92\xa4\x29\x13\x6b\xff\x14\x3c\xd0\xd5\x1d\xc3\x60\x25\x37\x81\x66\x8f\x76\x62\x25\x55\x4a\x95\x19\xb2\x12\x85\x7c\x7c\x66\xfa\xd8\xcc\xd3\x20\xc7\x82\xbb\xe5\x99\x08\x72\xca\xd6\x39\xc6\x10\x85\xe1\x2b\xa7\x66\x45\x51\x96\x66\xac\xdc\x80\x96\x9c\xa5\xf0\xf2\xf6\xc3\xed\xed\xc7\xa8\x25\xb1\x92\x88\xb2\x38\x26\x94\x48\x2e\x55\x0c\x2f\x17\xd1\x62\xb1\x48\xcc\x88\x09\x53\xf0\xe0\x57\x9b\x85\x61\x33\xa6\xd9\x23\x8d\x21\xa2\x45\x33\xe2\x92\x11\xc3\x85\x49\x07\x98\x74\x5c\x8c\x40\x13\xa1\x03\x4d\x15\xcb\x8c\x1c\x67\x82\x36\xbe\x4f\x8d\xee\xd3\x60\x25\xd3\xad\xdd\x57\x13\xc9\x69\x58\x6e\x3a\xc1\x24\xc9\x5d\x46\x12\x1a\xdc\x33\xcd\x56\x8c\x33\xdc\xc6\x90\xb3\x34\xa5\xc2\x18\x48\x64\x4a\xad\x81\x8e\x17\x9f\x44\x22\x85\x96\x9c\x20\x19\x15\x52\x48\x5d\x92\x84\x1a\x71\x62\x65\x0f\x77\x8a\x74\x83\x41\x4a\x13\xa9\x08\x32\x29\x62\x10\x52\x38\x85\x38\x97\xf7\x54\x75\xd4\xa6\xc4\xfc\x98\xd9\xc9\x30\x38\xe1\x33\xfc\x36\x00\x00\xf8\x43\x91\xb2\xa4\x6a\xf0\xed\x34\xa5\xc9\x60\xfc\xe0\x34\xba\xb8\x03\x52\xa1\x6c\x81\xcf\xe5\xbd\x0e\x5b\x41\x36\xc1\x03\x4b\x31\x8f\x61\x19\xda\xb1\x33\xbd\xfc\x85\x16\x12\x56\x5c\x26\x77\x67\x38\x6a\xe5\x77\x69\x70\xf0\x18\x2f\xdf\xcc\x1d\x42\x6a\xdf\x8d\x93\x7b\x07\xa7\xf6\xbb\x8e\xed\x4d\x78\x73\xf3\xff\x99\x85\x7c\xb4\x33\x58\x63\x70\xea\x30\x68\xb3\x45\x38\x5b\x8b\x18\x12\x2a\x90\xaa\x7d\x64\x8e\xaf\xdd\xca\x1d\xcc\xcd\xfa\xf0\xfa\xa5\xd2\x54\xc2\x57\x4e\x56\x17\xa3\x2e\x7a\x3b\xc0\xc9\xa4\x2a\xac\x3f\x7d\x6b\x3f\x0d\x98\x28\x2b\x3c\x92\xa7\xb6\x5f\xfe\xc4\xde\x53\x85\x2c\x21\xbc\x36\x54\xb0\x34\xe5\xd4\xcc\x0c\x0d\xda\x32\x2e\x1f\x62\xb0\x80\x77\xa3\x9d\x6d\x08\xa9\x0a\xc2\xcf\x39\x79\x6d\x0f\xa6\x2e\xde\x7d\x47\xbb\xb3\x4a\xb4\x74\x82\x29\xd3\x25\x27\xdb\x18\x98\xb0\xf3\x36\xd5\x66\xa2\x39\xc9\x3e\x83\x4d\x4a\xaf\xcb\x0d\xcc\xa6\xe5\xc6\x7e\x59\xd4\xb0\x34\x51\x69\x0a\xd0\x4d\xcb\x09\xef\xd7\xb5\x1b\xea\x16\x89\x3d\x70\xcc\xed\xa7\x5b\x6a\x6d\x61\x53\x24\x65\x95\x8e\x61\x56\xb6\xcb\x6c\xdf\x54\xff\xa8\x3f\x31\xd1\x8d\x77\xd7\x14\x9d\xb5\x92\x95\x48\x83\x7a\xed\xcc\x7e\x76\x26\x62\x88\x76\x45\x34\xb1\x9f\x83\x1e\x90\x93\xd4\x24\x92\x09\x4d\x11\x42\xab\x60\xfe\xab\xf5\x8a\x5c\x86\x23\xf0\xff\xc6\xe1\x9b\xf9\x55\xb7\x3b\x9c\xa9\xf8\x43\x8b\x79\x47\x51\x11\xa1\x99\x2b\x7a\x6e\x67\x36\x07\x44\x41\x38\x9e\xea\x51\xcb\x76\x7b\xbc\x71\xf7\x27\xd4\xe5\x4f\x28\xff\xb8\xe6\x2e\xb5\xb1\xe3\x19\x9a\x12\x95\xe4\x63\x7d\xbf\xbe\xb8\x02\x21\x03\x45\x4b\x4a\x10\xa6\x91\x89\xde\xae\xba\xb4\x20\xe1\x10\x6b\x8e\xb7\x47\xa8\x3f\xff\x71\x26\x93\x4a\xdb\x2a\xe0\x61\xe6\xc1\x63\x73\xb0\x9c\x8e\x20\x5a\x2c\x47\x30\x9d\x2d\x4c\x22\x96\x36\x0d\xb2\x42\xe3\xa0\x67\x10\xcd\x13\xe6\x4c\x40\x2a\x11\x69\x0a\xdf\x6e\xcc\xd4\x64\x08\x9f\x6e\x17\xc1\x8d\x61\x22\x3f\x81\xb3\x11\x84\x10\xc2\xb2\x9e\xdd\x77\x6a\xf1\xe3\x40\x3c\xc9\xf2\xbf\x60\xb4\x0e\x7e\x6c\xbd\xb6\x29\x08\x98\x10\xbe\x6d\x76\x19\x5a\x7d\x74\xc3\x46\xed\x4f\xdc\x96\xf4\xdd\x0b\x07\x82\x17\x7f\xb5\x4a\x78\xb7\xaf\xf6\x71\xbb\x44\x0a\xa4\x02\x8f\x92\xbb\xbd\xf9\xe7\x54\xbd\x75\xd3\xee\x89\x22\x22\x31\x10\xa0\x1b\xcc\x18\xe5\xe9\xb1\xd3\x4a\x38\x37\x95\xbb\xd0\x40\x89\xa6\x01\x13\xbd\x87\xf2\x88\x94\x3e\x41\x48\x7e\x5f\xe6\x3b\x02\xfd\x41\x8e\xe3\x7a\x3b\x6e\xa4\x45\xbc\x46\xa7\x29\x24\x26\x44\x3c\x58\x55\x88\x52\xd8\x9c\xf5\x45\xb0\xe1\x70\xe3\x84\x53\xa2\x46\xf5\x97\x98\x33\x71\xb7\x7b\x32\x7d\xd6\x9c\xb3\x0e\x33\x5c\x2c\xba\x34\xc5\x10\x17\xf7\xfb\xa0\x7b\x5e\x1f\x12\xe3\xeb\x76\xd7\x8b\xc1\xd2\x1e\xa3\x1f\xf6\x34\xb9\x5a\xf8\x68\xa3\xdd\x23\xef\x36\xe4\x25\x51\x54\xe0\xae\x05\xf5\x91\x8a\x20\xda\xc3\xee\x7f\x0e\x3c\x75\x86\x76\x14\xfc\x08\x4f\xdf\x25\x6e\x36\x9b\xd9\xc7\x4a\x69\xf3\x5c\x4a\x56\x53\xb4\xb3\x58\xf0\xef\x64\xc5\x29\x5c\xa6\x4c\xd1\x04\xa5\xda\x02\x67\x1a\x99\x58\x5f\x9d\x4e\x8a\xd1\x9a\xe8\x36\x03\x4e\x4a\x4d\xcd\xe9\x77\xdf\xde\x1e\x27\xcc\x0d\x8b\xaf\x29\x63\x87\x43\xdb\xde\x53\x7f\x31\x9b\x43\x17\x9e\x6e\x37\xe9\x54\x3b\xac\xc3\x88\x0e\xe9\xed\x3e\xf8\x32\x5b\x98\x1f\x2b\x96\x1f\xb0\x5c\x4e\x33\xdc\xf7\xb4\x76\xb4\xbe\x83\xa8\x36\x61\x33\xb1\x86\xa9\x48\xe1\x83\xe4\x55\x21\x62\xf8\xc8\x38\x15\xa4\xa0\xa6\x77\x61\x0e\xaf\xc1\xaf\xe2\xb7\xb8\x98\xbf\xf2\x4a\x33\xb5\x53\xfa\x4c\x34\xc2\x17\x99\xb2\x8c\xd1\xd4\x68\x4e\x86\x70\x8d\x79\x33\xff\x95\x3d\x76\x0c\xee\x7e\xb5\x4c\x3b\xcb\x68\x76\x1d\x67\x4c\x69\x0c\x64\x16\x98\xe2\xd2\x6e\x0e\x81\xd9\xa1\xbb\x15\xf7\xec\x29\xf2\x7b\xf2\x71\x6b\x4a\xc2\xbc\x2e\x06\x47\x83\x7e\x78\xef\xde\x31\x46\x9a\x66\x51\x36\x7f\xfe\x2e\xd0\x97\x84\x5e\xda\xd6\xa4\xf2\x84\x23\xfd\xbc\xb0\x3e\x5d\x56\x9e\x2c\x7a\x9a\x9c\x89\x70\xcc\x89\xc6\x20\xc9\x19\x4f\x47\x03\xcc\x5b\x8f\x07\xa8\xb4\xd9\xe9\x49\xd7\xbc\xc9\x96\xbb\xeb\x37\x65\xd5\xd7\x53\x83\x86\xb1\x2f\x9f\xdd\xb7\x01\xbb\xab\x67\x33\xff\xec\xe5\xff\xbc\x8a\xf2\x59\x12\xe3\x26\x7c\x12\x29\x4b\x08\xca\x73\xde\x03\x68\xb6\x16\x84\xb7\x6a\x89\x6b\x48\x1e\x4a\xbe\xe4\xed\xdd\x6c\xa2\xb9\x43\x73\xd3\x66\xfc\xb3\xc3\xfa\xbc\x5b\x54\x82\xa5\xef\x50\x81\xbf\xf5\xc9\x92\x24\xf6\x4d\x8b\xbb\x6f\x1b\x26\xe4\x55\xea\xb2\xe4\xcd\x65\x5c\x12\x6c\x65\x83\x08\x56\xf8\xd2\x5c\x56\x5c\x13\xa4\x10\xf9\x24\xcb\xaa\x2b\x11\x30\xa4\xae\x8c\x07\x89\xac\x04\x9a\xce\x97\x31\xc1\xd0\x36\xed\xc1\xfb\x3b\xba\xcd\x14\x29\xa8\x6e\x2c\x99\x00\x84\xaf\xec\x1f\x8f\x2a\x73\x2d\x8f\x41\x27\x84\xd3\xcb\x71\x64\x29\x66\xdb\xf9\xb1\x75\xff\x69\x00\xc6\x7b\xaf\xd7\xcc\x46\xf5\x9c\x29\xb1\xc7\x8c\x46\xe3\xe9\x81\x55\xa7\x77\x2e\x00\x3e\x4a\x89\x67\xbd\xfd\xc9\xac\xc2\xd1\x97\x0e\xfd\x05\xb9\xcd\x5d\xe7\xf5\xe5\xa4\x58\x77\xbb\x43\xdd\x34\x6b\x30\xd5\xcf\xa6\xed\x34\x78\x59\x38\xe5\x7f\x02\x00\x00\xff\xff\x48\x30\x82\xe2\x94\x15\x00\x00"), }, "/css/styles.less": &vfsgen۰CompressedFileInfo{ name: "styles.less", - modTime: time.Date(2018, 8, 19, 14, 21, 17, 476526885, time.UTC), + modTime: time.Date(2018, 9, 10, 21, 40, 58, 711425774, time.UTC), uncompressedSize: 4897, compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd4\x58\x51\x6f\xdb\xb6\x13\x7f\xb6\x3e\xc5\xa1\x45\x91\x26\xb5\x6c\xc9\x8e\x55\x9b\x46\xf1\xff\x0f\x5d\x8a\x15\x58\xb1\x87\x0e\xd8\xc3\xba\x07\x5a\xa2\x2c\x22\x14\x29\x90\x74\x62\xa7\xc8\x77\x1f\x48\x91\x16\xe5\x38\xa9\x13\x6c\x0f\x93\x5b\x40\x22\xef\xc8\xe3\xdd\xef\xee\x7e\x4c\xf4\x7f\x5a\x37\x42\x6a\xd8\x48\xf6\xf6\xac\xd2\xba\x41\xe3\x71\x29\xb8\x56\xa3\xb5\x10\x6b\x46\x70\x43\xd5\x28\x17\xf5\x38\x57\xea\x7f\x25\xae\x29\xdb\x7d\xf8\xad\x21\xfc\xdd\x57\xcc\x15\xba\x4c\x92\xe1\x34\x49\xce\xce\x97\xd1\xf8\x02\x7e\xc1\x37\x04\xb4\x80\x8d\x22\xe0\xd7\x2d\x85\x04\x5d\x11\x30\x6b\x0e\x01\x2b\xd8\x89\x0d\xe4\x98\x83\xe0\x6c\x07\xaa\x21\x39\x2d\x77\x80\x41\x51\xbe\x66\x04\x94\xde\x31\xa2\x2a\x42\x34\x5c\x8c\xa3\x0b\xf8\x1e\x0d\x6a\x2c\xd7\x94\xa3\x64\x19\x0d\x1a\x5c\x14\x94\xaf\xed\x7b\x7c\x4b\x56\xd7\x54\xc7\x2b\xb1\x8d\x15\xbd\x33\xc3\x2b\x21\x0b\x22\xcd\xc8\x32\x1a\x00\x40\x5c\x8b\xbb\xa7\xe6\xcd\x13\x4c\x43\x30\x0f\xd1\x7d\x14\x55\xba\x66\xd6\x02\xca\xe3\x8a\xd0\x75\xa5\x51\x9a\x24\x6f\x96\xd1\xc0\x49\x6a\xd1\xa0\x34\x69\xb6\xa0\x04\xa3\x05\xbc\xbe\xfa\x78\x75\xf5\x29\xed\xe6\x57\x42\x6b\x51\x1f\x17\xc9\x05\x13\x12\xbd\xce\xd2\x2c\xcb\xf2\x65\x34\x30\x0e\x8a\x6f\xdb\x5d\xa6\x49\xe2\x47\x14\xbd\x23\x28\x25\xb5\xff\x6e\x43\x80\xce\x4c\x0c\xc0\xc4\xe0\x6c\x08\x0a\x73\x15\x2b\x22\x69\xb9\x8c\x06\x8c\x72\xe2\xad\x9d\x18\xbd\xfb\x68\x25\x8a\x9d\x39\x87\x77\xdf\x24\x69\xb6\xa1\x07\x71\x7e\x5d\xe2\x9c\xc4\x37\x54\xd1\x15\x65\x54\xef\x50\x45\x8b\x82\x70\xa3\x9c\x8b\x82\x18\xe5\x70\xf7\xcf\x3c\x17\x5c\x09\x86\x35\x1e\xd6\x82\x0b\xd5\xe0\x9c\x2c\x07\xd1\x7d\x84\x8d\xe8\xe1\xd1\x34\xd9\xea\xb8\x20\xb9\x90\x58\x53\xc1\x11\x17\x9c\x98\xa5\x31\xaa\xc4\x0d\x91\x81\xca\x04\x9b\x9f\x99\x1b\x5f\xc4\x27\x3c\x17\xdf\x22\x13\xc4\x3f\x24\x6e\x1a\x22\xa3\x6f\xa7\x29\x8d\xa3\xd1\x6d\xab\x11\xe2\x0b\xf0\x46\x8b\x0e\x64\x36\xb8\xce\x53\x35\xde\xc6\xb7\xb4\xd0\x15\x9a\x27\x76\xe4\x99\xf6\xfd\x4c\x6a\x01\x2b\x26\xf2\xeb\x67\x98\x68\xe5\xf7\x9e\xb7\x38\x18\xcd\xdf\xcf\x2c\x14\x9c\xcd\xc6\x3c\x08\x13\xc3\xd9\xeb\xbc\xb9\x48\x16\x8b\x9f\xa6\x4b\x0b\xe5\x74\xbf\x92\xc3\xd8\xc4\x62\xcc\x86\x06\x33\xba\xe6\x28\x27\x5c\x13\xd9\xc7\xdd\xe8\xd2\x6e\x17\x62\x6a\xfa\x10\x8b\x5f\x36\x8a\x08\xf8\xca\xf0\xea\x6c\x18\x02\xb3\x83\x46\x74\x1f\x95\x42\xd6\xc6\x86\x23\x3b\xde\x47\x94\x37\x1b\x1d\x04\x03\xf6\xd1\xe8\x8c\x01\x97\x7b\x37\x44\x6a\x9a\x63\xe6\x16\x81\x9a\x16\x05\x23\xcb\x68\x70\x61\xc0\x54\x32\x71\x8b\xc0\x22\xd9\x0e\x86\xa6\x03\x17\xb2\xc6\xec\xe4\x54\x0a\xf7\x9e\x58\xc7\x86\x0e\x84\x36\x4b\x7b\x1b\xa4\xf3\xd0\xff\x33\xfb\x2c\xa3\x41\x41\x55\xc3\xf0\x0e\x01\xe5\x56\xdc\x86\x76\x19\x0d\xbc\x9a\x0b\x9b\x8f\x22\x5c\x36\x5b\x98\x4e\x9a\xad\x7d\xc9\x1c\x04\x8d\x63\x7c\x45\x81\x45\x67\x8e\x33\xf0\xd2\x8e\xf4\xac\xe9\xa1\x01\x3a\x73\xba\xd2\x69\xab\x94\xc4\x05\xdd\x28\x04\xd3\xb6\x2a\xb4\x45\xf3\xc8\xcc\xd1\xc1\x36\x2d\x20\x5d\xb4\x66\x9a\x5a\xb2\x96\x62\xc3\x8b\xd8\x6f\x5b\xda\x67\xaf\x8f\x20\xed\xaa\x61\x6e\x9f\xc3\x6a\x5e\xe1\xc2\x04\x91\x72\x45\x34\x24\x56\xde\xfc\x97\xeb\x15\x7e\x9b\x0c\xc1\xfd\x1b\x25\xef\x67\xe7\x9d\xc1\xcf\xd6\x7b\xc9\x56\xce\x4a\x2d\x31\x57\xd4\xd6\x32\xd7\x34\xc0\x38\x1e\x4b\x18\x4d\xd4\x10\xba\x95\x83\x61\x6f\xe9\x4b\x75\xc5\x4b\x35\x5f\xa8\xd6\x45\x12\xb5\xe4\x40\x11\x2c\xf3\x6a\xa4\x6e\xd6\x67\xe7\xc0\x45\x2c\x49\x43\xb0\x86\x49\x6a\x1c\xe6\x53\xd9\xb6\xd4\x0e\x03\x16\x9b\x26\x93\x1d\x16\xef\xa3\x36\xd5\x51\x29\xf2\x8d\x32\x09\xef\x40\xe5\xc0\x62\xfd\x3e\x9f\x0c\x21\xcd\xe6\x43\x98\x4c\x33\xe3\xfc\xb9\x71\xbd\xd8\x68\x63\x1e\xb2\xe5\x6e\xff\xa1\x2b\xca\xa1\x10\x5a\x93\x02\xbe\x2d\x96\xd1\x60\x7c\x01\x9f\xaf\xb2\x78\x61\xd8\xc3\x8b\x41\x35\x84\x04\x12\x98\xfb\xd9\x43\x7b\xb2\x17\xa3\xee\x94\x85\xff\x85\x35\xf7\x5e\x47\xd6\x6a\xeb\xfb\x98\x72\xde\xf6\xbf\x7d\xd5\x49\x82\x1c\x4d\x3a\xad\x3f\xf5\xae\x21\x1f\x5e\xb5\xe1\x7f\xf5\x57\x57\xa5\x6d\x87\x84\x43\x32\x11\xf0\xa9\x5c\x70\x4d\xb8\x76\x84\xeb\x90\x8d\x1d\x4c\x3f\xa1\xe8\x96\x36\x1d\x1b\x4b\xcc\x73\x13\x78\xb2\xd5\x25\x25\xac\x38\x9e\x95\x98\x31\x53\x9e\x6b\x05\x04\x2b\x12\x53\x1e\x10\xc2\x1f\x8b\x41\x5c\xab\x53\xc4\xa0\x9f\x94\x8f\x8a\x01\xc0\xd3\x62\x8f\xb8\x1a\x21\x7f\xb4\x76\x24\xe0\x50\xc3\xd3\x14\x72\xe3\x2d\x16\xaf\x36\x5a\x0b\x6e\x22\x77\xcc\x97\x7b\x3a\x36\xca\x19\xc1\x72\x08\xee\x05\x31\xca\xaf\xbb\x2f\xd3\x53\x4d\x9e\x05\x04\x2f\xcb\x42\xee\x61\xb8\x08\x4c\x1c\x23\xe9\x75\xca\xcb\x03\x3e\xeb\xbb\x95\xa7\x5e\x56\x33\xf1\x50\xea\x77\xd4\x56\xf2\xb1\x0e\xda\x27\xda\xad\x9b\x1b\x2c\x09\xd7\x5d\x9b\x39\xc2\x19\xe2\xb4\x8f\xda\xff\x32\x74\x7c\x7c\xf6\x5c\xfa\x90\x6e\xbb\x00\xfb\xa8\x4d\xa7\x53\xf3\xb1\x91\xca\x54\xdc\x46\x50\x4f\xc2\x9e\x45\x69\x7f\xc7\x2b\x46\xe0\x6d\x41\x25\xc9\xb5\x90\x3b\x60\x54\x69\xca\xd7\xe7\xa7\x33\x5c\x6d\x97\xe8\xf5\x00\x86\x1b\x45\x90\x7f\x59\x3e\xc2\x7d\x3d\x19\x77\x84\x30\x24\xc3\xb6\xd7\xf8\x17\x73\x28\x6d\x5d\xe2\x1b\x46\x50\xe2\x92\x76\xd6\xb9\x4d\x5b\x5c\x07\x3d\xef\x75\x99\x99\x9f\x15\xaa\x0e\x78\x2b\x23\xa5\xee\xdb\xe6\x4c\xf3\x57\x07\xe9\x18\xb6\xbf\x2a\xc0\x84\x17\xf0\x51\xb0\x4d\xcd\x11\x7c\xa2\x8c\x70\x5c\x13\xd3\xa2\x74\x05\xef\xa0\x5d\xbf\x3d\x52\x36\x7b\xe3\x54\xa6\xb2\x53\xf9\x15\x2b\x0d\x5f\x44\x41\x4b\x4a\x8a\x50\xcf\x29\x5b\x85\x4b\x5d\xed\x15\xbe\xd2\x3b\xf2\x40\xae\xbf\x53\xbb\x91\x36\x47\x47\x25\x95\x4a\xc7\xa2\x8c\x4d\x39\x09\x7a\x42\x6c\x4e\x8a\xd2\x1e\x3b\x75\x87\x4b\xdd\xe1\x5a\xc7\xf9\x1a\x30\x73\xd9\x7f\xdc\xdf\x87\xd7\xe2\x8e\x07\x92\xa2\x4c\xcb\xd9\xc3\x44\xdd\x73\xfb\x87\xde\x3f\x92\xba\x5d\xf8\x4e\xc9\xe0\xa7\xa5\x0f\x13\xf9\x07\xd2\x07\xf9\xfc\x23\xe9\x7e\x5a\x3f\x2e\x6d\xfc\x8b\x18\x56\x3a\xce\x2b\xca\x8a\x21\xe8\x2a\xf8\x3c\x80\xa5\x0d\xcc\x83\x40\x75\x71\xc2\xdf\x83\x3a\xea\x0a\xa8\x41\xc0\xc8\x15\xcc\xf0\xee\xde\x5d\x1d\xf7\xb3\xff\xd4\x65\xfd\x93\x10\xfa\x59\x77\xf5\xd2\x2a\x3c\x72\x77\x3c\x92\x85\x01\x3b\x99\xb9\xd3\xd3\x7a\x1d\x96\x01\x57\x10\x1d\x32\xdb\x2f\x63\x9a\x29\x2d\xfe\x0f\x3d\x59\xab\xf9\x77\x00\x00\x00\xff\xff\x7c\x13\xde\x7b\x21\x13\x00\x00"), }, "/favicon.ico": &vfsgen۰CompressedFileInfo{ name: "favicon.ico", - modTime: time.Date(2018, 8, 19, 14, 21, 17, 476526885, time.UTC), + modTime: time.Date(2018, 9, 10, 21, 40, 58, 711425774, time.UTC), uncompressedSize: 32988, compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x5c\x0b\x98\x64\x45\x75\xbe\x08\x2a\x8f\xf8\xb9\x2a\xb8\xcb\x4a\xc2\xcc\xad\x53\xb7\x7b\x58\x76\x83\xae\x09\x6e\x14\x5c\x31\xc1\x10\x15\x22\xb2\x31\xa2\x21\x40\xc8\xc2\xf6\xad\xc7\xed\x79\xed\x2e\x2c\x38\x7c\xa0\x81\x28\xf1\x11\x24\x90\x0f\x45\x51\x08\xc1\x44\x83\x80\xa0\xa2\x60\x14\xbf\x44\x5e\x8a\x0a\x82\x11\x03\x86\x37\xbb\xc8\xbe\x98\xae\x47\x57\xbe\x53\xb7\xbb\xe7\xf6\x6b\xba\x7b\xa6\x67\x17\xf8\xfa\x7c\x5f\x7d\x3b\xdb\x7d\xef\xa9\xfb\x9f\x7b\xea\xd4\x7f\xaa\x4e\x75\x10\xec\x11\xec\x15\xac\x5e\x8d\xff\x0e\x05\xf9\xd5\x41\x70\x74\x10\x04\x43\x43\x95\xff\x2f\x0a\x02\xb1\x3a\x08\x96\x2c\xa9\xfc\x7f\x9f\x20\xb8\xe4\xcf\x83\x60\xd1\xa2\xca\xff\xf7\x0a\x82\xef\x7e\x30\x08\xf2\x41\x10\xac\x0e\x82\x60\x2a\x48\x3f\x5f\x48\x71\xc0\xdf\x62\x41\x6c\xd6\x10\x6f\x2e\xbd\x48\x9a\x05\xbe\x59\x43\xe1\xc1\xbe\xe0\xa7\xf2\x48\x17\x8d\x39\x47\x13\xe7\xa8\x7c\x71\xb4\x68\xd4\x29\xe0\xbf\xed\x0b\xfe\x48\xbe\x0d\xb1\x5b\xe0\x4e\x03\x7b\x51\x34\xb4\x81\x0a\xe3\xa7\x06\xf8\x07\xf8\x07\xf8\x3b\x8b\x86\x64\xb5\xc9\x15\xff\xc2\x8d\x8c\x1d\xdc\x84\x9f\xca\xc3\x5f\xea\xf8\x4d\x28\xbe\xe9\x46\xce\xc2\x98\xb9\xc3\x86\xec\x1e\x43\xe4\x15\x96\x8a\x33\x1c\x4d\x0e\x73\xc0\x8f\xb6\x54\x96\x5f\xaa\xf8\xdd\xd0\xd4\xde\x0a\xe2\x87\xd3\xf9\x4d\x38\x17\x15\x9d\xcb\x8d\xfb\x86\x98\xd5\x30\x7f\xa6\x04\xac\xbc\xbb\x31\x2d\x14\xfe\x52\xc8\x96\x6b\xe0\xe5\x72\x8b\xf7\x8b\x9f\xa1\xae\x66\xfd\x68\xa7\xb1\x17\x54\xcb\xfa\x67\x2f\xf8\x0d\x11\x7f\x8d\xef\xba\x5b\xdb\x5a\x2a\xbc\x6e\x03\xec\x7a\x43\xd8\x8d\xe5\xdd\xdc\x0c\xe1\x37\x18\xe0\x37\x2b\x88\x77\x56\x6d\xd0\x0b\x7e\x0b\xfc\x92\x5e\xf0\xa3\xad\xcb\x44\xde\xd0\x8d\xee\x5d\x29\x0a\xf8\xff\xe2\x18\xee\x15\xbf\xa6\xfc\x47\xc8\x17\x7b\xc2\x0f\xfc\xe6\x85\x47\xd4\xbd\xb8\x55\xc5\x7d\x14\xb0\x87\x7b\xc5\xef\x86\x0a\x4b\x54\xc8\xb7\xe1\x78\x7e\x51\xe3\x5f\xb9\x76\xdf\xb9\xe0\xd7\xc0\x8f\xc6\x77\x6f\x7a\x89\xad\x2f\x21\xfc\x96\x88\xb3\x5c\x6e\xa2\xb7\xb9\xa5\x03\x7e\x4d\xf9\xa6\x32\x14\xbf\x61\xc2\xf8\xeb\xfd\x6c\xa8\xd3\x46\xf2\xdc\x7e\xe2\x47\xbd\x2e\x37\xd6\x57\xfc\x16\xc4\x95\xee\x90\x4d\xfd\x9f\xe3\x46\x36\x39\x43\xc5\xbf\xf5\x0b\xbf\x1b\x3a\x79\x6f\x05\xac\x16\x33\x6b\xf3\x3a\x72\x9f\x68\xd4\xff\xdd\x6a\x5c\x74\xc2\x6f\x22\x9c\x4f\x27\x7a\x1a\x53\x5d\xd9\x3d\x37\x81\x73\xef\x19\xfd\xc2\xdf\xc8\x7b\xfc\xbc\x0e\xec\x49\x0b\xe2\x62\x03\xe2\x76\x0d\xec\x59\xcf\x05\xa3\xb1\x9e\xf0\xbb\xa8\xf8\x06\x0d\xf1\xce\x5e\x62\x6a\xa7\x56\x46\x5d\x84\x95\x5c\x3e\x69\xb9\xd8\x35\x17\xfc\x86\xf2\x93\xb3\xf3\x3e\x8e\x03\x43\xc5\xf5\x35\x9d\x43\x13\x4b\x74\x24\xde\x89\xf6\x28\x53\x59\x7b\x9f\xdd\xc4\x3f\x4b\xd9\xbf\xf4\x1a\x57\x3a\xbd\x7b\x0d\xfc\x6b\x6d\x6d\x3e\x07\xfc\x96\x8a\x7f\xca\x3e\xa3\xf7\x2f\xe0\xe7\x34\xe9\xce\x17\x97\x67\xf3\xbf\x6e\xf0\xab\x88\xff\xbe\xa1\xc2\x96\xfb\xe0\x03\xa8\xa3\x8c\xb9\x09\x11\x2b\xfb\x89\xdf\x64\x78\x8f\xf1\xb8\xf0\x6f\xf9\xae\x26\xdd\x0d\xf9\x7f\xb7\xf3\x9f\xa6\x85\x0b\x5d\x7e\x7d\xeb\x18\x82\x79\x85\x1f\x5b\xa3\x95\xf8\x56\x74\xad\xc6\x8b\x7f\xae\xfc\x7a\xa7\x43\xf1\x0f\xb3\xf5\xd5\x2b\x7e\xb7\xac\xb0\x44\x11\x56\xe3\x3d\x2e\xe5\xf4\xdb\xdd\x48\x72\x60\xbf\xf0\xbb\xd5\x53\x7b\x95\x23\x71\x13\x3e\xbf\xf5\x78\xe2\x74\x6d\x32\x37\x81\x79\xb6\xd1\xc0\xef\x57\x10\x7f\x57\x51\x7e\x8b\xa6\xfc\x27\x0a\xd8\xf3\x69\xec\x2d\xd6\x61\x37\x94\xdf\xe2\x56\xae\x7d\x79\x5f\xf1\x53\xf9\x27\x59\xde\x83\x7d\x5a\x60\x77\xb6\xbc\x76\x8e\xf8\xfd\xbd\x4b\xd7\xee\x6b\x23\xe9\x63\x81\x7f\x8f\x20\x1f\xb7\x20\xcf\x71\x50\x5c\xd6\x74\x6d\x6e\x7c\xd8\x52\x29\x34\x88\x07\x5c\x6e\xbd\xb7\x53\x39\x2a\x5e\xeb\x96\x15\x7e\xa7\x63\x3f\x3d\xe2\xd7\x84\x6f\x6a\x1c\xfb\x66\x98\x5d\xd6\x6f\xfc\x19\x1d\x27\x59\x18\xbb\x78\x47\x83\x7f\xb9\xfc\xc6\xd7\x39\xd8\x78\x40\xdd\x67\x2b\xc6\xf7\xb3\x64\xec\x3c\x47\x93\x93\xbb\xd6\xdf\x23\x7e\xcf\x7b\x32\xf3\x1a\xfa\x9d\x01\x7e\x6a\x9b\x67\x9f\x37\xfe\xac\xec\x38\x78\xed\x81\x36\x1a\x3b\xd7\x46\xf2\x4e\x0d\x6c\xb3\xa2\xec\x59\x4b\xe5\x4f\x2d\x29\x7e\xba\x44\x0b\x23\x73\xd1\xd9\x0b\xfe\x5f\x7b\xde\x13\xd7\xae\xc5\xf9\xdf\x50\x51\xc6\x98\xdd\x52\x77\x1f\xf1\x9b\x90\xbf\xdb\x92\xd1\xc7\xbc\x7f\x7b\x8e\x25\x33\x6b\x4e\x93\xce\x42\xb2\xdd\x10\xfe\xb7\x0b\x89\xdf\x85\xc5\xe5\x86\x32\x5b\xae\xad\x15\x24\x4e\x87\xf1\x6f\xdc\x41\xc5\x7d\x16\x12\xbf\xa3\xf2\x48\x03\x89\x9e\x2d\xd7\xf6\x6b\x70\x38\x16\x29\xef\xda\xf7\x7b\xc5\x9f\xf2\xd3\xf1\x3a\x3e\x67\x60\x86\xf7\x2c\x04\x7e\xb7\x74\x6a\x5f\x03\xfc\x97\x8d\x5c\xb2\x9d\x0d\x74\xc8\xb7\x3b\x32\xfa\xbb\x0b\x81\x3f\x5d\xef\x69\xe0\x3d\x94\x6f\x5a\x48\xfc\x86\x8a\x13\x7b\xc9\x09\x5c\x7e\xd2\x69\xc2\xcf\x5b\x08\xfc\x06\xf8\x1d\x55\x1f\xb4\x35\xde\xc3\x9a\x78\x4f\x3f\xf1\x2b\xe0\x57\xf6\xc2\x87\xd3\xb9\x99\xff\xb0\xdf\xf8\x77\x1c\x9c\x1c\xe8\x79\x4e\x17\xbc\xa7\x9f\xf8\x0d\x95\xb7\x74\xe3\xfb\xd9\x31\x60\x42\xfe\x90\x5b\x36\xf5\x8a\x7e\xe2\xd7\x50\xf4\xeb\x3d\x36\x63\x67\x0d\xec\xae\x59\x75\xf7\x05\x3f\xbf\xb9\x57\xfc\x1a\x0a\x0f\x22\x87\xec\x27\x7e\x1c\xe7\xcd\x63\xbf\x35\xef\xe9\x27\x7e\x0d\xfc\x93\x3d\xf9\x3f\xf2\x11\xca\x6e\xec\x56\x7f\xb7\xf8\x4d\x28\x9a\x78\x8f\xa3\xe2\x94\x85\xc6\xef\x88\xf8\xa3\xd4\xef\x3a\xef\xa1\x99\x4a\xfc\xeb\x65\x0e\xec\x06\xbf\x03\xfe\xca\x56\xbc\xc7\xe5\xe4\x8a\x85\xc6\x1f\xf8\x31\xc0\xbe\x9a\xe6\x00\x5d\xe5\xfa\xf7\xe2\xf3\xf6\x15\x7f\x58\x5c\xae\x41\x94\xb3\xbc\xc7\xdb\x63\xe8\xe4\xbd\x77\x05\x7e\x17\x8d\xed\x6f\x41\xde\x8b\x36\x68\xb5\xd7\x86\xfa\x53\xee\x53\x7c\xa2\x04\x71\x53\x7e\x34\x5f\xfc\x86\x34\xac\xf7\x44\xf5\xeb\x3d\x0b\x8d\x1f\x65\x6b\xb4\x76\x7f\x4b\xe5\x55\x8e\xa6\x7c\xb7\xba\xcf\xea\xf3\x43\xd4\x1b\x15\xbf\x3d\x1d\xc6\x51\xaf\x7a\xbb\xc2\x4f\xd9\x65\x4d\xb1\x8f\x88\xb3\x3b\xea\xee\x73\xfe\x53\xd1\xf9\x07\x36\x4a\x3e\xa2\x88\xbc\x5a\x81\xf8\x57\x4d\x93\x0b\x5d\x2e\x39\x6a\xce\xfa\xba\xc0\xaf\x33\xbc\xc7\x74\xc1\x7b\x32\xcf\xda\x77\xfc\xfd\x96\x4e\xf8\x91\xdf\x34\xf2\x1e\x1d\xf2\x6d\x6e\xd9\xc4\x92\x8e\xba\x5f\x02\xf8\x1b\xf7\xb9\x2a\xef\xbe\xe5\x7a\x4f\x93\xee\x96\xf8\xc5\x4d\x0b\x0a\xa8\x47\x71\xc7\xe0\xdc\x36\x0b\x7e\x2a\xce\x6e\x1e\xfb\xf2\xd2\xae\x74\xbf\x18\xf0\x77\xd8\xff\x35\xc0\xae\xcf\xee\x73\xa5\xfc\x6a\x76\xde\x53\xd3\xdd\x80\xdf\x00\x77\xa5\x30\xde\xaa\x43\x76\x8f\x06\xfe\x63\x4d\xf9\x4f\x76\x6b\xc3\x67\x00\x7e\x6f\x29\x64\xca\xb4\xa8\x7f\xc8\xd6\xf7\xd4\x78\x0f\xb4\x5f\xef\xe9\x84\xdf\xeb\xa0\xd5\xf5\xeb\x17\x4e\x33\x6d\xea\x5f\x90\xdf\x35\xf3\x1e\xf6\x08\xda\x65\xae\xf8\x5f\xe8\x2d\x8b\x1f\xfd\xbc\x69\x9f\x2b\x8c\xbf\xde\x0d\xf6\x14\x3f\x3f\xa2\x6e\xad\x6e\x81\x5a\x2b\xfb\x7a\x4e\x38\x17\x7d\x51\x11\xdf\xf1\x96\xc0\xef\xf1\xcb\x4b\x7b\x59\xef\x69\xc2\x9f\x4b\xde\x6a\x41\x6a\x4d\x98\x56\x24\x5e\x90\x56\x22\x5c\xe1\xf8\x6d\x85\x1f\xbf\xeb\x55\x9f\x05\xa1\x4b\xc0\x1f\x0f\xd2\xfd\xf8\x3b\xeb\xf6\x54\xfc\x78\xe1\x7f\xdc\x35\xfe\x83\x8a\xfb\xb8\x68\x2c\x5f\x8a\x58\xde\xe5\x64\x6e\x41\x5a\x28\xa8\x01\xf6\xf9\x7a\x3f\x1d\xf7\xb9\xf9\x74\x3e\x8e\x7a\xd6\x17\x8d\xe5\x1d\x29\x42\x2b\xde\xa3\xc2\x78\xab\x5b\xbe\xee\x35\xdd\xe2\xdf\x55\x62\xa8\xf8\x56\x35\x37\x37\x33\xeb\xb2\xc7\xcd\x47\xa7\x06\xf9\xae\x2c\xef\xc1\x18\xa9\xc2\xb8\x64\xa8\xb8\xcd\x82\xfc\x84\x03\xb9\xc6\x85\xa3\x91\x0b\xba\x5b\x67\x59\x28\x71\x43\xc9\x22\x35\xcc\x9e\xa9\xd6\x5a\xa6\xfc\x94\x95\x5c\x54\x0c\xe7\xa3\xb7\x71\xbd\x27\xcb\xfd\x7d\xce\x95\x1b\x73\x8a\x08\xa5\x41\xdc\xef\xf7\xec\x21\x49\x7c\xbc\xcf\xc7\xaf\xeb\x1f\xba\xce\xe2\x48\xf2\xd6\x7a\x8e\x55\x74\x9a\xb0\xfb\x5c\xb0\x66\xcf\xf9\xe8\xf5\x3e\x35\x4b\x6d\xa3\xb7\x85\x9f\xcb\x93\x99\x3c\x14\xe7\xc7\x90\x3f\x6d\x42\xf6\xbd\xd4\x47\xf8\x09\xd3\xa1\xa0\x2e\x98\x7a\x59\xff\x10\xd7\x8b\x05\x9e\xd4\xc7\xe8\x71\xa7\xa8\xb8\x6a\xfe\x7a\x31\xf6\x8d\x55\xde\xf5\x78\x6d\x9f\x7d\xb6\x75\x78\x5b\xa9\xf9\xad\xf9\x48\x84\x3e\xc2\x95\xa6\xe2\xe7\x36\x94\x5f\x72\x51\x12\x2b\xe0\x6f\x71\xe1\xfa\x57\xf7\x07\x7d\x10\x28\x5f\x2f\x32\xde\x30\x47\x09\x3e\x5f\xbd\xee\xa0\xe2\x6b\x35\x24\xab\x50\x97\x8a\xe4\x97\x34\xe5\x3f\xd3\xa1\x98\xae\xd9\xa4\x32\xaf\xcf\xc6\x6d\x0c\xb0\x86\xba\xf0\xd4\x47\x70\x7e\x31\x94\xdf\xa2\x23\xf9\x77\x86\x26\xc7\xe3\x58\x75\x41\xb0\x47\xcf\xcf\x18\xac\xd9\x53\x03\xbf\xdf\xd1\x62\xc6\xfe\xc8\x55\x93\x55\xf3\xc5\xdf\x28\x53\xc1\xd4\xcb\x1c\x4c\x10\x7c\x5e\x4b\xe4\xdf\x97\x29\xbf\x55\x53\xf1\x54\x75\xdf\xad\x77\x1f\x19\x9b\xf1\x11\xe0\xcf\x5b\x90\xf7\x2a\x10\x57\x5a\x10\xb1\xeb\xd2\x47\x1c\x29\x00\xce\xd9\x33\x73\x94\x74\xd3\x21\x7f\x7a\x4b\x1f\xfd\x6b\xd6\xfe\x97\x15\x5f\x8b\x31\xcf\x02\x2b\x2a\xe0\xd7\x68\x12\xff\x42\x11\xa6\xe7\xef\x23\x18\xcb\xf9\xe3\x86\xf0\x6f\x5b\x9a\x9c\x6f\x40\x1e\xdb\xea\x7c\x89\xf7\x1d\xbf\xff\x3e\xb3\x2e\xa7\x80\xdf\xba\x2b\xb0\xb7\x12\x9c\x0b\x91\xeb\x98\x48\x7e\xc0\x82\xb8\x08\xe3\xa0\x26\xfc\xe9\x14\x5b\xc5\x47\xfc\x59\x09\x3e\x07\x1f\x61\x3b\x6d\xc8\xee\xb1\x54\x7c\xce\x92\xe2\x5a\x47\xc4\xa1\x16\xc4\xc5\x2d\xc6\xfe\x85\xbb\x0b\x7f\x2b\x71\xd1\xd8\xfe\x9a\xca\x23\x2d\x88\x51\x8b\x3e\x02\xe2\x01\x05\xdc\xb8\x68\x7c\x1e\x3e\x32\x9e\xe6\xd2\xc0\x4c\xfd\xdc\x3c\xe6\x0c\x95\xef\xdf\xdd\x98\x67\x13\xb7\x7a\x6a\x2f\x87\x3e\x42\xc5\x89\x96\xc8\x4f\xa7\xf5\x92\x7c\x4b\xba\xae\x9b\xbe\x6b\xf4\x91\x34\xd7\x6e\xef\x23\xf8\x7d\x7d\x5e\x2d\x9c\x26\x71\x69\x3a\x5a\x37\x2f\xde\xb3\x3b\xc4\x91\xf1\xd7\x3b\x22\xde\x61\x41\xae\x2f\x53\xf9\x55\x13\x8a\xff\x29\x01\x2f\xcf\xac\x6f\xb7\xaf\xa9\xad\xf9\x3e\xf2\x9e\x30\xfe\xf9\x42\x72\x8d\x5d\x25\x0e\xf8\x2b\x4b\x44\x1c\x6a\x20\xf9\x90\xa5\xc9\x67\x4c\x24\x6f\x57\xd5\x9a\xda\x0a\xf7\xac\xfa\x48\x7d\xce\x13\x7f\x79\x77\x3f\xfb\x42\x89\x1b\x96\x8b\xd3\x9a\x5a\xb9\xa1\x0c\xfc\x6b\x26\x14\x0f\xa5\xfb\x3e\x15\x1f\x19\x39\x13\x73\x73\xb1\xbb\x9f\x73\x57\x89\x1b\x9a\xda\xdb\xe5\xe4\x0a\x43\xc5\x29\x96\xc8\x4b\x0d\x8c\xde\xa1\x22\xfe\x87\xfd\xd2\x9f\x0f\x02\xff\xeb\x00\xab\xe7\xf9\x3b\x01\x0e\x38\x51\x84\x3d\x63\x23\xb1\x45\x01\xeb\x5b\xb3\x91\xdc\xa2\xc2\x75\x0f\x75\xec\x3f\x8c\xa3\xda\xdc\xd1\xe7\x73\xf2\xa5\x90\x6d\xeb\xdc\xbf\xfc\x3d\x05\xcc\xf4\xb3\xa6\xbd\xca\xf5\x4a\x10\x6f\x6e\xd5\xa7\xa6\xe2\xe3\x2e\x1a\xfd\x88\x26\xec\x28\x07\xf1\x2a\x45\x98\xda\x55\xfd\x63\xfe\xab\x80\x95\x5d\x7e\x83\xb7\x79\x09\xd8\x8e\x12\x14\xac\xae\xad\x1f\x8d\x67\xf6\x2e\xe7\xd0\xa2\x2a\x87\x12\x2d\xfb\xd7\xc0\xdf\x9e\xae\xe9\xa6\x6b\x16\x55\xdc\xe5\xa8\xe8\x2c\xe1\x97\x1a\xca\x4e\x34\xc0\x3e\x3c\xe7\x46\xd9\x89\xc8\x75\x31\xe6\xb4\xec\x9f\xb2\xc9\x56\xf5\x1a\x7e\x7f\x3a\xe4\xc7\x77\xf2\x97\x6e\x04\x73\x32\x97\xdf\xd8\xb2\x7f\x5f\x2b\xd0\x22\x6f\xf7\x9c\x89\xf0\x93\x6a\xef\x09\x73\xae\xdc\xf8\x87\x91\x87\x74\x6a\x78\xdd\x34\x29\x40\xad\x7f\xe0\xeb\xf1\xfd\x36\xf6\x8f\xdc\xc6\x90\xf8\xd7\xfe\xfd\x54\xd7\x05\x2a\xeb\x52\x8d\xfd\x6b\x22\xfe\x14\x63\x76\x57\xef\x7c\xe4\x2c\xf4\xb7\xf7\x74\xea\x1f\xb9\xb7\x06\x66\x7d\x9f\x84\x7d\xca\x52\x21\x0d\x65\x37\xea\x0a\x97\xa8\xc3\xbf\x74\x6a\xdf\x12\x61\x8f\x55\xd7\x37\x67\xe3\x15\x0a\xd8\x93\xd9\x5a\xea\x76\xfd\x57\x6b\xf5\x7c\x8e\x1b\xb2\xe5\x41\x65\xde\x42\xff\xf7\xef\x3f\xd3\x7f\xaa\x87\x15\x50\x4f\xb9\x5a\xd3\x5f\xcd\x11\x3c\xe7\x29\xa6\x9f\xe7\x37\x38\x4b\x18\xaf\xbf\xaf\x4d\xff\xc0\xfe\x11\x3f\x9f\x0e\x0b\x4f\xb9\x15\xe3\xfb\xf9\xfe\x43\x41\xdb\xf5\x1f\xd4\xf6\xf6\x27\x7d\xdd\x88\xa2\x4c\x1a\x1a\xbf\xc7\x02\x5f\x67\x40\xfc\x77\xe5\x5c\xc7\x3f\x37\xf9\x5f\x9b\xfe\x75\xc8\xfe\x0b\xfd\x52\x11\x7e\x4b\xcd\xce\x1d\xfa\xf7\xd7\xd0\xf1\xc3\x9f\xce\x9d\xfa\x2a\x17\x8d\xbe\xd3\xe5\x27\xb8\x8b\xc6\x8e\x41\x7b\x3b\x18\x7d\x63\xab\xeb\x5b\xf5\x8f\x71\xa7\x14\xc6\x5b\xf1\x73\x0d\xec\x63\x3d\xf5\x1f\x04\x7b\x94\x41\x7e\x27\xad\x9d\x9f\xac\x9c\x1d\x90\x3f\x42\x1f\xe9\xb6\x7f\x0d\x6c\x75\xf5\xcc\x93\x01\x76\x6c\x2f\xfd\x5b\xe0\x9f\x44\xbb\x65\xf9\x2d\xea\x57\xd0\x9a\xcf\xb5\xee\x1f\x3f\x5b\xef\xd7\x68\xb3\xf5\xaf\xdd\xf4\x8f\x79\x7b\xe3\x38\xa8\xd4\xf8\x3c\xd1\xaa\x96\xa8\x55\xff\x69\x8d\x92\xb7\xfd\xcf\xb2\x6b\x39\x5d\xf5\x0f\xec\xa7\x8d\xb5\xcd\x69\x2d\x6f\xe1\x37\x6e\xe5\x65\x4d\xe7\x37\x1a\xfb\x77\x2b\xd7\xbe\x5c\x61\xdc\xf1\x36\xe3\x5f\xcc\x5e\xdb\x5d\xff\xf1\x46\x37\xb2\xb1\xc6\xa7\xfd\xb8\x1b\x39\x13\xc7\xc4\x45\xdd\xd8\xdf\xf9\xb8\x83\x31\x66\x12\xc7\xcb\xba\x5e\xfb\x4f\xe3\x26\xbf\x62\x66\xdd\x70\xd4\x19\x22\xff\xdd\x2d\x5d\xdb\x95\xff\x19\xe0\x1f\xaa\xc6\x1d\x17\xb2\x37\xf7\xda\x7f\x55\x14\x24\x6f\x32\xb9\x89\x35\x8a\xca\xc3\x67\xbb\xae\x45\xff\x33\x71\x67\x71\x1a\x77\x9a\xfb\x9f\x74\x86\x88\xf7\xcd\xa6\xb7\x5b\xb1\x84\xb3\xec\xfc\x97\xc6\x9d\x0d\x4e\xd1\x99\xb8\xd3\xd4\x7f\xfa\xbb\x46\x57\x2a\x88\x63\x45\x38\x9b\x6b\xc3\x98\xad\x81\x5d\x87\x71\x1a\xfb\xf7\x7c\xa7\x16\x77\xf8\x47\x9b\xfb\x8f\x23\xbf\xe7\xed\xcf\x2f\x8d\xf9\xd8\xd2\xb1\xd5\xd5\x77\x4d\x36\x7f\x5f\x59\x23\xf0\xb5\x04\x44\xbc\xa3\x7a\x16\xcc\x84\xe2\xcf\x9a\xfa\x27\x05\xd0\x84\x6f\xb3\x94\xef\x54\x10\x77\x6c\x25\xff\x2f\xdb\xa1\xab\x7b\x3e\x24\xd6\x25\x28\x34\x5d\x67\xa9\xd8\xa9\x09\x7b\x34\x13\x77\xa6\x5b\x9e\x01\x0b\xd6\xec\xe9\xa2\xe2\x1b\xba\x6e\xb9\xc9\xa5\x96\xf2\xd3\x6b\xbf\x9b\x05\xf2\x58\xfc\xac\xe5\xb5\x23\xc9\x81\x86\xf0\x1b\xd2\x77\xc1\x8c\xa5\xfc\x2e\x9c\xaf\x0c\x88\xd3\xfc\xef\xaf\xb4\x89\xdf\x9d\x04\xe7\x8f\x34\x96\xb0\x2d\xed\xce\x76\xd4\xae\x25\xec\xbe\xf4\x7d\x4d\xf8\x98\xed\x9b\x1f\x8b\xc2\x9f\x0d\x29\x13\x79\x83\x05\x79\x8e\xdf\x4f\x9b\xa5\x56\xbc\x4e\x27\xe5\xdf\xf7\xfe\x44\xf8\x7f\x76\xba\x76\x27\xf0\x83\x1c\x14\x8f\xb6\x54\x9c\x6d\x88\xbc\xc1\x9f\x47\xf1\x67\x91\x33\xcf\x93\x4f\xcf\xcc\x28\xc2\xb7\x19\x90\x77\xf8\x7c\xd1\xef\xed\xcb\x15\x8d\xb5\x0c\x18\x73\x4a\x50\x78\xd6\xf7\x4f\xc5\xc7\xbb\x79\xde\xc6\xfb\xd1\xf6\x06\x92\xd3\x4c\x24\x2e\xb7\x54\xdc\xad\x80\xef\xf0\xef\xd3\xfb\xef\x8c\x8d\xca\xe9\xb9\xe1\x87\xcb\x94\x5f\x67\x23\x79\xa6\x03\xfe\x76\x03\xe2\xb8\x74\xac\x20\xcf\xef\xcf\x5a\x9e\x43\x1b\x45\xc9\x31\x36\x92\xe7\x1a\x10\x37\x69\xc2\x1f\x4d\xfb\x98\xac\xb7\x11\x2d\xba\x12\x61\xa6\xb2\x96\xa6\xe7\xbb\x87\xd8\xf6\x79\x56\x8c\xef\xe7\x88\x58\x69\xa9\x3c\xdd\xaf\xe7\x82\xf8\xb1\x02\xfe\x7c\xba\xde\x5b\xe1\x1f\x61\xe1\xa1\x5d\xb9\x96\x85\x79\xaa\x81\xe2\x7b\x2d\x15\xe7\x97\xe9\xf8\xad\x16\xf8\xc5\xdd\xdc\x97\x0f\x82\x60\x49\x10\x04\x87\xcd\x71\x9d\xc0\x40\x7c\x9c\x85\xb1\x79\xfd\x5e\x9f\x01\xf6\xcb\xb6\xfa\x29\x3f\xde\xdb\x74\x5e\x79\x7e\xbc\xb5\xce\x56\x64\xfc\xf5\x0e\x92\x44\x43\xbc\xca\x00\x3f\xb5\x1c\x8d\xd6\x7e\xef\x67\x2e\xad\x34\xcc\x9e\xa9\xb7\x09\x7f\x6f\x25\xe7\x71\x18\x7b\xb5\xaf\x1b\x2b\x4c\x2b\x88\x9f\x55\xc0\x7e\xdb\x4b\xb3\x94\xdb\x26\x9e\x4e\xf8\x79\x15\x6e\x5f\xfb\xdd\x02\xcc\x97\x70\x2e\x73\xd1\xda\xfd\xdd\xb2\x35\xaf\x70\xc1\xd4\x5e\x7e\xad\xba\xb1\xe1\xe7\x69\x5d\xc7\xfe\xdb\x80\x1f\xa0\x86\xd9\xaf\x4a\xc0\x9e\xcf\xea\x57\xc0\xbe\x55\x39\x1f\x90\xae\xcb\x63\x3e\x9c\x39\x93\xa4\x23\x7e\x04\x8e\x75\xdd\xb2\x25\xab\x15\xf0\x37\x66\x74\x3d\x80\xd8\x6b\xb6\x5f\xea\xeb\x35\x9f\x34\x54\x1a\xb4\x4d\x75\xff\xad\xca\xf9\x2b\xb5\xfa\x9b\x6b\xe7\x04\x1b\xdb\xc8\x59\x68\xd3\x6f\xcc\xe8\x2f\x3c\x98\xd5\xaf\x88\x58\x89\xfe\x82\x5c\x02\xe3\x86\x05\x79\x2e\xde\x93\xcd\x29\x2c\xf0\x8f\x22\xff\xa8\xfd\xe6\x43\x6d\xdd\xbe\x12\x53\x08\x3b\xa6\x9d\x7e\x3f\xb7\x1d\x72\x8e\xb3\x20\xa6\xfc\xbb\x0e\xd7\xbd\xdb\x8d\x6c\xaa\xcf\x59\x56\x8c\xef\x67\x40\xfe\xc0\x80\xdc\x6e\x42\xf6\x59\x0d\xf1\x7a\x05\xec\x2a\x43\x47\x4b\x98\xe3\xd5\xdb\xba\xe1\xf9\x29\xfb\x02\x3e\xaf\xa9\x3c\x83\x01\xb6\xa6\x51\x7f\x50\xf9\x0d\x0b\x07\x63\x87\x38\x28\xfe\x8d\xcb\x4d\x5e\x60\x80\x9f\xd0\x2a\xde\x35\xdb\x87\x3d\x60\x28\xb7\x3b\x72\x6c\xe9\x6c\xfa\xfd\xb5\xc3\xec\x8b\x69\x8e\x3f\x51\xc9\x63\xf9\xd8\x6c\xfa\x71\x2e\x33\x54\x96\x15\x89\xef\xab\x7e\xdf\xf6\xf9\xf3\x71\x94\xf2\x83\x6a\x6d\x5e\xd1\xd7\xad\x35\x9e\x49\xc8\xea\xc7\xdc\xd6\xdb\x06\xe2\xcf\x75\xd4\x9f\x63\xc3\xd5\x9a\x30\x5d\xad\xfb\x25\xec\xd1\xc6\x73\x55\x59\xfd\x9a\xb2\xf3\xf1\xdd\x22\xff\xe8\xa4\x3f\xfd\x8e\x5f\x5c\x9b\x7b\xda\xfc\x46\x47\x56\xbf\x82\xf8\x3b\xa9\x6f\x26\x87\x35\xeb\x6f\xe6\x9e\x1e\x07\x4d\x8e\x77\xf9\xc9\x8d\x98\x9f\xb6\xfa\xbe\xaa\xdf\xcf\xfb\x61\xe1\x39\xcf\x79\x32\x9c\xa0\xa6\xbf\x87\x33\x85\xf5\xfa\xb9\x1f\xbf\x0e\x92\x37\xf9\x1c\x20\x64\xdf\xac\xb3\x01\x61\x1f\xc0\xb1\xaa\x86\xd9\x33\x1a\xd6\xb5\xad\x89\x55\xc3\x85\xbb\x35\xb0\x3b\x1b\xaf\x41\x5f\x2c\x85\x6c\x5b\x75\x5c\x21\x1f\xad\xd3\x1f\x89\xf7\x59\x28\x6e\x2f\x85\x4c\xd9\xca\x9e\x59\x63\x33\xd9\xfd\x56\xff\x7b\x1d\x99\xef\x53\xde\xfc\x30\xe6\x95\xe9\x1e\x83\x3c\xbd\x89\x33\x2d\xdf\xf0\x1a\x37\x2c\x17\x23\xbf\x6b\xd5\xb6\x0f\xcb\xc5\xf8\xec\x69\x0c\x2a\x1e\xe1\x96\x4d\x2c\xa9\xbb\x06\xbf\x47\xde\x86\x63\xc5\xe7\x29\xf1\x13\xc8\xe5\x1c\x4d\xce\x72\xb9\xe4\x28\x37\x94\x2c\x9a\xcd\xc6\x3e\xe6\x85\xf1\xf6\x12\xb0\xc7\xdb\x5d\xe3\x79\x55\x24\x2f\x30\x54\xdc\x86\x3c\xd0\xfb\xdc\x21\xe7\xf8\x3c\x57\x41\x6c\x2d\xf0\xbb\x2c\x15\x97\x98\x48\x9e\xe4\x88\x38\x34\xeb\xe7\x3e\x26\xfa\xf5\x09\xfe\x1f\xdd\xbc\x73\x7c\x5e\x07\xc9\x2a\x47\xa5\xb0\x44\x5e\x6d\x08\xfb\x95\x5f\x1b\x19\xd9\xe4\xdc\x21\x67\xfb\x98\x59\x22\xec\x31\x03\xfc\x3a\x0b\x62\xd4\x00\xbf\x24\x8d\xb1\xf5\xef\xae\x5b\x71\x81\xdb\xc3\xc1\x04\x71\x90\x9c\xa0\x41\x7e\xc2\x00\xff\x81\xe7\x9c\x38\xb6\xb0\x3f\x8c\xd5\xe9\x1c\xd1\x72\x0c\xcc\xa9\x4f\x7c\xe7\xbe\xf6\x41\x16\xcb\x54\x7c\xc5\x86\xec\x1e\x07\xfc\x80\x76\xd7\x23\x4f\x5a\x54\xd9\x53\xe9\x85\x27\x69\x10\x53\x96\x4e\xf4\xcc\x83\xa6\x49\x01\x5c\xae\xf8\x66\x43\xe2\x4b\xbd\x5f\x79\xee\x3d\xd9\xa6\xa5\xbc\x5c\x85\x85\xe7\xaa\xf7\x9b\x50\x7c\xd6\x9f\x39\xa3\x72\x5a\x87\xec\xff\x4c\x18\x7f\x45\x41\xfc\x65\x43\xe2\x2b\x0c\xe1\x99\x16\x5f\xa1\x81\x5d\x8b\xf3\x15\xf2\x8d\xea\xfd\x25\x60\x3f\xf4\xfd\x8e\x6c\x70\x8a\xb0\xab\x83\xd4\x4f\x0f\x70\xd1\x86\xd0\xc7\xd6\x6a\x23\x45\xbf\xae\xac\x68\x7c\xb8\xaa\xc4\x39\xb4\xad\x0a\xe3\xe7\x1c\x4d\x6e\x33\xd1\xe8\x53\x98\x6f\x07\x69\xae\xf5\x29\xcf\x8b\x32\x75\x59\xc8\xd5\x5d\xb8\xf6\xd5\xf8\x2e\x54\x85\x87\xa4\xfb\x84\xdc\x05\x95\x18\xab\x49\xfc\x7d\xfc\xfb\xf9\xe1\xf8\x60\x45\xe5\xc3\x06\xc4\xed\x0a\x0a\xd7\xd8\x68\xec\x91\x6a\x5c\xd6\xc0\x8f\xae\xdd\x0f\xfc\x5c\x05\xec\x91\xd4\x0e\x85\xcb\x35\x29\xd4\xf2\xb0\xed\xc3\xa7\x2d\xd6\xc0\x2f\xb2\xd1\xe4\xd5\xd9\x5a\x83\xba\xfb\x43\xf6\x3d\xb4\x89\xc7\x85\xf6\xc9\xdc\x6f\x22\xf1\x97\xde\x1f\xf3\x1b\x9c\x5f\x2b\xaf\xfc\x3e\x49\xf5\x7e\x5f\x43\x12\x16\x9e\xab\xae\x23\x35\xdd\x8f\xf1\xd2\xdb\xf5\xcc\x34\x47\xa8\x8c\xd3\xda\xfd\x11\xcb\xfb\x5a\xd5\x4a\x8d\xbe\x22\xf1\x17\xd4\xf0\xba\xba\x9a\x18\x4b\x0a\xa7\xdb\xfc\xfa\xcf\x4c\x03\x27\xb5\xe7\x0f\x0b\x6f\x43\xfb\x1b\xca\x4e\x29\x01\xdb\x51\xd5\xab\x80\x7d\x1e\x73\xdc\x1a\x3f\xa3\xf1\x91\xa5\xe1\x75\x2b\x4a\xe4\x8c\x43\xb1\x0f\x4d\xe5\x91\xf8\xb9\xa5\x62\x52\x85\x4c\xa1\x8f\x64\xd7\x61\x70\xde\xb0\x74\xc2\xc7\x5f\x55\x69\xe9\xdf\x71\xa9\x7a\xae\xc0\xc7\x66\x2a\xa7\xd1\x1e\x18\xc3\x6c\x98\xdc\x63\xa2\xe4\x18\x1f\x27\x57\xae\x7d\xb9\x5b\x73\xed\x9e\xf8\xef\xd3\xb9\x53\x5f\xb5\x15\xf9\xe9\xb0\x5c\x6c\x28\x7b\x7f\xa5\xde\xeb\xb0\xed\x43\x85\x25\xd8\x90\x8f\x6a\xe0\x17\x58\x2a\xef\xd6\x20\x8c\x6f\x24\xfe\x85\x0d\xe5\xe5\x2e\x4a\xfe\xca\x85\x82\xce\x3c\x57\x61\x0c\x63\x50\xbb\x71\xe7\x96\x15\x96\xe0\x33\x58\x10\x1f\x43\xdf\xd6\x54\x3c\x57\x4e\x6b\x4c\x9f\x45\x7c\x86\x8c\x3e\x56\xf5\xeb\x6e\xc4\xc7\x68\x9a\x1c\x86\x73\xbc\x05\x7e\x8d\xcd\x8d\xdf\x67\x28\xff\x60\xb7\xf7\x0f\x64\x20\x03\x19\xc8\x40\x06\x32\x90\x81\x0c\x64\x20\x03\x19\xc8\x40\x06\x32\x90\x81\x0c\x64\x20\x03\x19\xc8\x40\x06\x32\x90\x81\x0c\x64\x20\x03\x19\xc8\x40\x06\x32\x90\x81\x0c\x64\x20\x2f\x5c\xf9\xff\x00\x00\x00\xff\xff\x45\xa8\x7a\xdd\xdc\x80\x00\x00"), }, "/js": &vfsgen۰DirInfo{ name: "js", - modTime: time.Date(2018, 8, 19, 14, 21, 17, 480526969, time.UTC), + modTime: time.Date(2018, 9, 10, 21, 40, 58, 715425786, time.UTC), }, "/js/lib": &vfsgen۰DirInfo{ name: "lib", - modTime: time.Date(2018, 8, 19, 14, 21, 17, 476526885, time.UTC), + modTime: time.Date(2018, 9, 10, 21, 40, 58, 711425774, time.UTC), }, "/js/lib/jquery-1.9.1.min.js": &vfsgen۰CompressedFileInfo{ name: "jquery-1.9.1.min.js", - modTime: time.Date(2018, 8, 19, 14, 21, 17, 480526969, time.UTC), + modTime: time.Date(2018, 9, 10, 21, 40, 58, 715425786, time.UTC), uncompressedSize: 92629, compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xcc\xbd\x6b\x97\xdb\x36\x96\x28\xfa\xfd\xfc\x8a\x22\xdb\xc3\x00\x25\x88\x25\xd9\x49\x9f\x09\x15\x14\x8f\xe3\x47\xc7\xd3\xb1\x9d\x8e\xdd\x93\xf4\x50\x74\x16\x25\x42\x2a\xc6\x14\xa8\x90\x50\x3d\x22\xb2\x7f\xfb\x5d\xd8\x00\x48\x90\xa2\x1c\xf7\x9c\xb9\xeb\xde\x0f\x55\x22\x41\xbc\xb1\xb1\x5f\xd8\x7b\xe3\xea\xd2\xb9\xf8\xf5\x6f\x07\x56\x3e\x5c\xdc\xce\xfd\xaf\xfd\xf9\x45\x7d\x81\xd6\xf8\xe2\xf1\x6c\xf6\x15\xb9\x78\x3c\x9b\x3f\x36\x9f\x5f\x16\x07\x9e\x26\x22\x2b\x38\xb9\x78\xc5\xd7\xfe\x45\x7d\xf1\xeb\x6f\xf2\x8b\x5f\x94\xdb\xab\x3c\x5b\x33\x5e\xb1\xff\x75\x75\xf5\x7f\x2e\xaa\xe2\x50\xae\xd9\xeb\x64\xbf\xcf\xf8\xf6\xef\x3f\x7e\x4f\x75\xbe\x5d\xc6\xfd\x5d\xb2\xff\x5f\x97\x57\x68\x73\xe0\x6b\x59\x15\x62\x44\xe0\xe3\x6d\x52\x5e\x70\x52\x92\x8c\x8a\x87\x3d\x2b\x36\x17\x82\x14\x94\xf9\x69\xb1\x3e\xec\x18\x17\x24\xa1\xcc\xcf\x8b\xb5\x6a\xbc\xa2\xcc\x57\x5d\x22\x07\xca\xfc\x47\x24\xa7\xc7\x86\xac\x69\x14\x93\x3d\x75\x61\x0c\x2e\xd9\xd0\xb5\xbf\x2e\xf8\x3a\x11\x24\xa5\x6b\x7f\x7f\xa8\x6e\xc8\x0d\x5d\xfb\x95\xec\x27\xd9\xd2\xb5\x9f\xf1\x94\xdd\xbf\xdd\x90\x1d\xcd\x7d\x51\xbc\x13\x65\xc6\xb7\xe4\x81\xe6\xfe\x4d\x52\xbd\xbd\xe3\x3f\x94\xc5\x9e\x95\xe2\x81\xdc\xd2\xbd\x2f\xca\x6c\x47\x56\xb4\xdf\xe9\x92\x89\x43\xc9\x2f\x38\xbb\xbb\x58\xf9\x1b\xee\x67\x3c\x13\xf2\x0b\x29\x71\x43\xee\xe9\x55\x34\x99\xc6\x21\x0a\x83\x65\x7a\xb9\xf4\x6b\xbc\x4c\x27\x28\x0c\x22\xf6\x22\x86\x0f\xcb\x74\x52\xe3\x2b\x5f\x4d\x15\xb9\xa3\x57\xcb\x77\x93\xab\x2d\x79\x4f\xaf\x3e\x44\xcb\x6a\x79\x78\xf9\xe2\xe5\xcb\xe5\xfd\xd3\x59\x3c\xa9\x07\xef\x8f\xae\xb6\xe4\x0d\xbd\xfa\x80\xc2\x00\x7d\x13\x2d\xef\x96\x3f\xc5\x93\x6b\x1c\x7d\xb8\x8e\x2f\xeb\x3f\xa1\x68\x79\x37\x8d\x2f\x31\x7e\x74\x45\x9e\xd1\xab\x0f\xdf\xa0\xe5\xdd\x04\x2f\xab\xcb\xe5\x55\x78\x8d\xc2\xe0\x9b\xe5\xd5\x72\x7e\x5d\xcb\xcf\x1f\xa1\xa9\x98\x04\xc7\x66\x59\xc5\x97\x8f\xae\xc8\x0b\x7a\x85\xc2\xe0\x43\x1d\xd4\x04\xcb\x8e\x57\x97\xcb\x08\xcb\x5e\xbd\xa3\x57\xcb\xa5\xec\xbd\xbb\x5c\x2e\xaf\x56\x1b\x5e\x8a\xb8\x3e\x44\xcb\x34\x99\x6e\x9e\x4e\x5f\xc6\xc7\x2f\x1b\x7c\xb5\x25\x4f\xe9\x95\x1b\x7d\x90\x79\xca\x25\x8f\x2f\xdd\x5a\x94\x07\x56\x6f\x92\xbc\x62\x35\x3f\xe4\x79\x3d\x55\xf3\x31\x39\x3b\x1f\x5b\xf2\x2b\xbd\xfa\x30\xdd\x55\xd3\x2b\xf2\x9c\x5e\x4d\x11\xb4\xf1\x7b\x8c\xaf\xb6\x19\xf9\x7e\x7c\x01\x84\x2f\x8a\xbf\xef\xf7\xac\x7c\x96\x54\x0c\xe1\x86\x7c\x67\xe5\xc3\x47\x54\xf8\x49\x9a\xbe\xb8\x65\x5c\x7c\x9f\x55\x82\x71\x56\xd6\xb5\x9b\x17\x49\xea\x52\x4a\x99\x2f\x21\xae\xae\xdd\x75\xb1\xdb\xe7\x4c\x30\x99\x58\xf8\x25\x4b\xd2\x87\x77\x22\x11\x0c\x7b\x1e\xfa\x0d\x61\xb2\x52\x69\x08\xe3\x86\xfc\xd6\x35\x80\x8f\xa7\xd5\x87\x48\x56\xb0\x2b\x6e\x59\x2f\x19\xb9\xcf\xdf\xbe\x7e\x56\x70\x21\xd3\x8a\x24\x65\xa9\x4b\xbe\x23\xce\x1c\x13\x36\x9e\x1d\xfa\xa8\xb2\xe0\x00\x15\x7e\xca\x44\xb2\xbe\x81\x4c\xc8\x2d\x38\xf4\xa7\x92\x7d\x5c\xdf\x24\x7c\xcb\x5c\xf2\x9d\xac\x6a\x90\x4b\x57\x82\x71\xb3\x90\x50\x4a\x57\xfe\xbe\x2c\x44\x21\x47\x4d\x8f\x6a\x5f\x06\x7b\xb2\x2e\x78\x25\xca\xc3\x5a\x14\x65\xb0\x22\x12\x92\x03\x6b\xae\x39\x29\xd5\x1e\xcd\x48\xb2\xc8\x36\xc8\x61\xd8\xcc\xfd\x4d\x56\xc9\x14\xb7\x82\xfd\xe3\x52\xb3\x81\x19\x3e\x66\x1b\x94\x51\xf7\x1b\x35\xcb\xeb\x9b\xa4\x7c\x2a\xd0\x0c\x7b\x9e\x7b\xdd\x4b\x62\x7e\xce\xf8\x56\xdc\x4c\xe7\xd8\xf3\xcc\xcb\x35\x7d\x12\x46\x12\x64\x08\x23\xf2\x27\x0e\xde\xf8\xec\x9e\xad\x11\xc3\xc4\xc9\xea\xda\xc9\xa2\x79\xec\x79\x5c\xf7\xc3\xe1\x75\xcd\x7d\x35\x9a\x10\xf1\xba\x2e\xb1\xbf\xc9\x78\x8a\x18\x0e\x64\x17\x7d\x6b\x7c\x88\xb7\xdf\x64\xcf\x65\x45\xd0\x57\x4e\xf9\x45\xc6\x2b\x91\xf0\xb5\x1c\xc0\x2a\xe4\xd1\x2c\x0e\x38\x59\xf9\x3b\x56\x6e\x19\x92\xf5\x90\x95\xbf\x4f\xca\x8a\x7d\xf7\xfe\xf5\xf7\x50\x92\x70\xcf\xe3\x3e\x2f\x52\xf6\xfe\x61\xcf\x42\xee\x17\x77\x9c\x95\xcf\x35\xde\xaa\x6b\x1e\x14\xc4\x99\x61\x4c\x9e\xf9\x82\x55\x42\xb5\xe6\x79\x2b\x3f\xab\x7e\xc8\x93\x8c\xbf\x5d\xfd\xca\xd6\x02\x71\x8c\x37\x45\x89\xb2\x8b\x8c\x5f\x70\x2c\xbf\xbe\x34\xb3\x2f\x9b\x8d\xb2\x18\x87\xfa\x01\x71\xf9\xa6\x46\x95\x08\x51\xa2\x8c\x40\xca\xc2\x5a\x91\x26\xdb\xa0\x84\x16\xfe\x96\x89\x17\x39\x93\x3d\xf9\xf6\xe1\x55\x8a\xb2\xe8\x71\x8c\x49\xe2\x79\x89\x1c\x05\xe3\xe2\x4d\x91\xaa\x75\x4a\xfc\x2c\x75\x28\x85\x0c\xba\x9e\xb2\x9d\x24\x68\x4a\x2d\x0b\x9d\x13\xe8\xc6\x2c\xa6\x49\x63\x35\x28\xe7\x57\xb0\x7b\x41\x0b\xf8\xee\x57\x2c\x67\x72\xae\x29\x83\x77\x93\x95\x75\x33\x85\x7a\xc5\x4c\xa5\x2a\x7b\xbf\x31\x1c\xf4\xe6\x83\xe1\xb0\xd4\x5b\x91\xe1\x00\xb1\xb6\x2d\x87\x52\xe1\x79\x68\xd0\x7e\xfb\x48\x7a\x0d\x32\xf3\x24\x37\xf6\x2e\xf9\xc8\x9e\x96\x65\xf2\x80\x54\xfb\x72\x8b\x9b\x62\x81\xeb\x12\xd5\x9d\x60\x46\xaa\xec\x77\x16\x58\x5b\xdf\x9e\x01\x95\xa9\x21\xa2\x80\xaa\x46\xb2\xdd\xf8\xeb\x24\xcf\xa1\x83\xb8\x21\x5b\x66\x6f\xb1\x8e\x9a\x1c\xf2\x9c\x52\x06\xab\xed\xeb\xba\x10\x0e\x66\xd7\x2a\x29\xb2\xda\x9a\xb0\x18\xc0\x20\x62\x71\x43\x24\x81\x7b\x27\x92\xf5\xc7\x5e\xa5\x72\xcf\x0a\x6a\x43\x70\x6f\x27\x60\xc2\x3a\xb8\xf1\xf7\x25\xbb\x55\xf0\x08\xeb\x41\x44\x6f\x79\xcc\x0b\x11\x0d\x61\xc9\xfa\x26\x18\xc5\xc5\x2b\x5f\x7e\x53\x7b\x45\xa6\x37\x04\x96\x6a\x6c\xa4\x1a\xa1\x4a\x74\xb4\xcb\x24\xe2\xf6\xd3\x82\x33\xb9\xc1\x01\x64\x08\x50\xea\x73\xb3\xdd\x0e\x17\xdd\xf8\xc9\x7e\x9f\x3f\xa8\x26\x93\x72\x0b\x1b\x0f\x96\x70\x93\x95\x95\x38\x57\x01\xfb\x0d\xcd\x70\x43\xf2\xe4\x93\x59\xa6\x73\xdc\x10\xf6\xdb\xc8\x9c\x5a\xeb\x40\x38\x9d\xb0\x09\x82\x25\x0a\x66\xbd\x8d\x68\xf5\x93\x5f\xd3\x99\xe7\x89\x6b\x1e\xc2\x1a\x46\x3c\x8e\x83\x28\xc6\x0d\xd9\x25\xfb\xb1\xe9\x19\x14\x97\x50\xba\x57\x83\x6c\x33\x0b\xc2\xdb\xec\x4c\x03\x17\xe1\x72\xd6\xe5\xf0\x19\x4f\xcf\xce\x5e\xbb\xd2\x75\x7d\x8a\x1e\x0f\x79\x8e\x15\x40\x05\x29\xa9\x8a\x52\x04\x51\xec\xcb\x5f\x52\xed\x61\x4d\xe4\x2b\x3c\x35\xa4\x65\x7c\x2c\xaa\x22\xd3\xc8\xca\x67\xf7\x82\xf1\x14\xde\xcc\xb3\xd5\x1d\x39\x8b\x40\x58\x48\x46\x0a\x92\x90\x8a\xb6\x6b\x17\xcd\xe2\xba\x3e\x36\xe4\x40\xe7\x24\xef\x92\xcd\x6c\xaf\xa9\x33\x5f\x48\x6c\xe9\xae\x8a\x22\x67\x09\xef\x88\x4e\xe5\x79\x68\x4d\xab\x5e\x65\x73\x53\xd9\x63\x4c\xdc\x02\x06\x6d\x15\xa8\xeb\x1e\x72\xa9\x70\x5d\xa3\x8a\x1e\x1b\x4c\x72\x4a\xe9\xc1\xf3\x50\xa5\x36\xc3\x74\x7a\xc0\x8b\xfc\xfa\xb0\x38\x4c\x26\x58\x52\x8b\x43\x9e\x3b\x14\x15\x56\x4b\x87\xd8\xc2\xe2\x05\x66\x54\xa2\x6b\x52\xd2\x42\xfe\x54\x0e\xa5\xa5\xec\x9e\xe7\xc9\x9f\x21\x01\x28\x65\xc3\x92\x38\x67\x95\xda\xf2\x25\xc6\x38\x44\x3c\x44\x9c\x3a\x73\xc9\xff\x2a\xa2\xa1\xd1\x14\x0e\xe5\x2a\xe0\xa0\x4d\xb7\xeb\x82\xaf\xc7\x86\xc8\xe6\xa9\x59\x07\xb4\x26\x09\x29\x31\x0e\x0c\x9e\x84\xaf\x25\x6e\xc1\xb5\x6a\xda\x35\x43\x47\x5e\x3c\x2b\xf8\x26\xcf\xd6\xd6\xe6\x10\x16\xac\x3d\xa2\x94\xae\x3c\x0f\xc9\xa7\x03\x26\x42\x12\x6e\xc5\x92\xb7\x1f\xf4\x6b\x85\xc9\xaa\x21\x59\xf5\x23\xa0\x01\x67\xae\xf0\xc1\x4f\x49\x26\x82\x39\xb9\x29\xf2\xf4\xc7\x13\xfc\xc0\x42\x8d\x1a\x64\xae\xc9\x24\x30\x9c\x97\x33\x1b\x45\x27\xd9\x06\x31\x4a\xa9\x33\x0b\x9d\xe9\xd4\x2a\x19\x38\x72\x62\xa0\x7a\xc8\xe4\x14\xfe\xaa\x48\x1f\x0c\x7d\xab\x98\x78\x9f\xed\x58\x71\x10\x48\x17\xc2\x8b\xb6\x00\x75\x66\x84\x39\xb2\x52\xcf\xeb\x55\x7a\x3d\x93\xeb\xe4\x97\xac\x2a\xf2\x5b\xf6\x53\x26\x6e\x50\x41\xa2\x55\x8c\xd5\x4e\x10\x65\xb6\xdd\xb2\xd2\xf3\x56\xa8\xc0\xe6\x0d\xb9\x50\xdc\xc5\x7e\xb1\xd9\xb4\x2f\xb8\x91\xd3\x62\x20\x6f\x04\x03\xb8\x26\x49\x72\x4b\x2b\x60\x53\x11\xc3\xb2\x90\x22\x30\xf0\xdf\x80\x44\x5d\x8f\x54\x90\xc8\x2f\x27\xa5\x7f\xca\x78\x5a\xdc\x9d\xa3\x3d\x8e\x84\x28\x26\xd9\xb3\x3b\xc8\x27\x4b\xbc\x39\xec\x58\x99\xad\x47\x8a\x38\x59\xf5\x26\x79\x83\x80\x27\x7a\x99\x17\x89\x04\x3e\xec\x79\x59\xf5\x52\xe2\x04\xd5\xa2\x6c\xfa\x53\x94\x8e\x4d\x5c\x37\x38\xd9\x99\x92\x25\xb7\x26\xc0\xa4\x86\x79\xb4\x53\x98\x8e\xe1\xb8\xae\x4d\xb1\xc0\x7c\x97\xdd\xb5\xf6\xc2\x10\x50\x1c\xd6\x95\x71\xac\x79\xa9\xeb\x8e\x35\x51\x28\x41\xcd\x92\x1c\x8e\x1e\xe9\x7c\x21\xca\x07\x00\x36\x1b\x5b\x7a\x9e\xf3\xa0\xfb\x43\x5c\x2b\xdd\xc5\xd6\x17\xbb\x40\x87\x27\x89\x9b\x55\x3f\x98\x97\xb7\x1b\xb7\x6b\xa9\x59\x27\x62\x7d\x83\x5a\xe4\xee\xcc\x1b\x89\x2e\x4b\xc0\x7a\xa5\xc4\x2e\x1d\xd9\x2e\x29\xa5\xa2\xae\xdb\x4e\x94\xb0\xc6\x2f\x76\x7b\xf1\x30\x32\x05\x40\xbb\xa0\x1a\xa1\xaa\x69\x07\xa7\x1f\x66\x0d\x61\x65\x59\x94\xbd\x52\xe2\xa6\x2c\xee\x2e\x5e\xc8\x74\x58\xd1\x96\x05\xee\xf1\x00\x92\x18\x99\x29\xd6\xd2\x80\xd3\x49\x03\xd6\xa2\x2f\x4e\x11\xb7\x44\x48\x9c\x0a\x22\xa8\x14\x87\x84\x1c\x51\xb1\x80\x31\xd3\x67\x2d\xdf\x9f\x51\x87\x7b\x5e\x14\xb7\x43\x0f\x23\xe1\xaf\x4b\x96\x08\xa6\xb9\x5c\x54\x4a\xf6\x3a\x0e\x50\x49\x57\xfe\xea\x90\xe5\xe9\xcb\x32\xd9\xc2\x97\x88\xc5\x44\x90\x0c\x93\x4c\x6e\xce\x0c\x6b\x89\x0b\x04\x3b\xc5\x1d\x45\x31\x29\xfd\xf5\x4d\x96\xa7\x92\x2d\x06\x0e\x02\x06\xfa\x1f\xef\xde\xbe\xe9\x06\x6a\x53\x5c\xf9\x45\x62\x3e\xf9\xab\xe4\x82\xd0\x7e\x41\x1c\x07\x0a\xc8\x29\x0f\x79\x70\x22\x22\x71\x18\xf4\x0a\x94\x0b\x88\x63\x29\x4a\x7c\x54\x52\x82\x44\x30\xfb\x3c\x59\x33\xf4\x8e\xb8\xff\xc7\xc5\xed\xeb\x53\xe2\xc6\xd6\xeb\x0b\xe2\xba\x92\x4e\xb4\xf4\xcb\xd5\x7d\x73\x27\x1c\x23\x1c\xa0\x95\x0f\xab\x89\xdc\x57\xfc\x36\xc9\xb3\xf4\x02\x06\x03\x9f\x81\x39\x83\x7e\xfe\x6c\x2f\x24\x57\x40\x52\x92\x0c\x04\x3d\x3e\xb2\x98\xbc\xb7\x98\x72\x57\x30\xff\xf9\xdb\xd7\x3f\xc8\xba\xca\x10\x65\x94\xb3\xbb\x8b\x36\x81\x94\x34\x53\xf3\xf1\xb2\x2c\x76\x4a\xcd\x82\x38\x71\x25\x2f\x79\x75\xbf\xcb\x5d\x29\xdb\x96\x50\xe6\xe9\x5a\x64\xb7\xec\x67\x4d\xc6\xdc\xd7\xd9\xba\x2c\xaa\x62\x23\xfc\x9f\x5f\x7f\xff\xfc\xed\x6b\x17\x93\xd2\x4f\xaa\x07\xbe\xa6\x2e\xe8\x14\x5c\x52\xfa\x52\xbc\xfd\xf9\xf5\xf7\x52\x82\xd2\xdb\xa6\xc0\xc7\x92\x0a\x23\x72\x94\x9e\x57\xb6\x7a\x24\x0d\x26\x9e\xe7\x94\x96\x6c\x54\x7d\xfb\xf0\x3e\xd9\xbe\x49\x76\x0c\xb9\xd0\xd1\x12\x26\xcd\xc5\x9a\xe3\x90\x08\x61\x30\x8d\x72\xca\xd4\x2c\x96\x0d\xe1\x45\xb1\xb7\x39\xad\x86\x6c\xf3\x62\x95\xe4\x2f\x6e\x93\xbc\x47\x3e\x85\xa4\xd5\xb0\xda\x02\x03\x8d\x94\x90\xfd\x6e\x5d\x66\x7b\x61\xe1\x6f\x81\x8f\xcc\x67\xb7\x49\x6e\xb6\xb4\xe4\xe7\x90\x5c\xad\x75\xb2\x63\xf9\xb3\xa4\x1a\x45\xa7\xac\x85\x8a\x5f\x89\xbb\xab\xa6\x16\x98\x3c\x27\xdf\x63\xd9\xcd\x94\xc9\x41\x8e\x33\xee\x0a\xff\xc9\xef\x12\xa2\xcd\xb3\x2f\x8a\xef\x8b\x3b\xa3\x59\x91\xa8\xa6\x9f\x32\x22\x0a\x90\x0e\x82\xe8\x0c\xb4\x78\x9a\x6f\x4b\xe8\x6b\x2d\x72\x2b\x44\x91\xe0\xa3\x44\x44\x8b\xe2\x3a\x5b\x64\x8a\xa9\x2a\xa9\xd0\xdc\x3c\x93\x3c\x93\x9c\x5e\x49\xd9\xe7\x78\x55\xb2\xe4\x63\xc3\xf2\x8a\x5d\xb4\x1c\x16\xfb\xdc\x12\xe7\xdb\x52\x13\x2c\x0b\x66\x44\xfe\x7c\x5e\x7b\x9f\x2e\x65\xb0\x13\x6b\x88\x5c\xea\xe0\xd6\xf3\x9c\x5b\x55\xc6\x5d\x1e\x36\x6c\xb3\x59\x1e\x66\xb3\x64\xe6\xe2\xf0\x13\x44\xd1\x75\x83\x5b\x43\xe7\x9a\x4f\x51\x4f\xd7\x0d\x90\xa4\xa0\xdd\x6a\xbf\x97\x48\x41\x8a\x15\x5a\xa8\x0d\x46\x54\xad\x12\xc1\x76\x88\xb4\xa5\xfb\xe8\x35\x6a\x79\x48\x1c\x1a\xc4\xc8\xc9\xa9\x76\x27\x8c\x58\x1c\x30\x1c\xa4\xaa\x93\x9c\x30\x8c\x09\x6f\x48\xc6\x4f\xdb\x6c\x21\x42\xae\xbd\x80\xb5\xdf\x1a\x14\xb2\x35\x62\x0b\x23\x1c\x2b\xfa\x46\x45\x27\x57\xf1\x70\x76\xcd\xc3\xd7\x89\xb8\xf1\x77\xc9\x3d\x9a\x91\x72\x22\x91\x6a\x30\x5b\x94\xd7\x7c\xc1\x35\x2b\x2e\x57\x47\x78\x9e\x88\x78\x4c\x29\xed\x68\x8d\xc6\x01\xd3\x79\x43\x60\x24\x3d\x95\x96\xee\x13\xe5\xa6\xb5\xac\x03\xd5\x82\xce\x40\xa9\xc5\x0f\xbb\x15\x2b\xbb\x61\x97\xc0\xdf\x2f\xca\xeb\x62\x51\x4c\x26\x98\x45\xd9\x64\x12\x53\x1e\x15\xf1\x02\x60\xe5\xee\x26\xcb\x19\x92\xef\x92\xc9\xb6\xbe\x4f\x26\xed\x64\x9b\x46\x68\x46\x58\x43\xb6\x25\xdb\x9f\xdd\x3e\x51\x2c\x7b\xa2\x94\xdf\x50\x06\x26\x88\x53\xc7\xe1\x8b\x44\xf7\xa1\xa4\x8e\x23\x10\x8b\x8a\x98\x14\x98\x70\x25\x65\x64\x20\x38\x42\x6a\xcb\x28\x64\x43\x49\xf3\x0f\xb7\x2a\xa9\x68\x14\x2f\x60\xf7\xf4\x36\x4f\x49\x85\x01\x7f\x49\xb5\x00\x78\x4a\x90\x28\x8c\x8c\x26\x05\x8b\xc5\x70\xf7\x7c\x66\x31\xdd\xdd\x8d\xde\xd6\x51\x4c\x40\x5b\x72\xc8\xd2\x60\x4e\xf6\x65\x71\xff\x30\xb6\x8c\x52\x8a\xd4\x45\x47\xe9\x6c\x41\x59\xc4\x63\xc2\x29\x23\x8c\x16\x92\xe8\xf7\x55\x4a\xa8\xa4\x5a\x3d\xd3\xca\x73\xe4\xb1\x64\x39\x4e\x25\x68\xa6\x7b\xc6\x95\xec\x2c\x99\x06\x38\x67\x40\xc3\x0a\xb0\x64\x21\x32\x5f\x76\x9d\x32\xfb\x47\x12\x14\xf9\x3b\x99\x90\x0c\x07\xa2\x21\xc9\x7a\xcd\xaa\x6a\xa0\x71\x35\x82\xb1\x1a\xe1\x81\xce\x48\xde\xad\xd0\x9a\x2a\x04\x00\x7b\xaa\x63\x9e\x0d\x47\x5b\x62\x7c\x2c\xa8\x33\x03\x80\x39\xc8\xf9\x2f\xf1\xca\x57\xcd\x40\xed\x07\x52\x46\x87\x98\x38\x33\x68\xa1\xc5\x93\x99\x16\x0e\x65\xd9\xfe\x1c\x65\x4a\x32\x76\x66\x98\xac\xe5\xa2\x85\x88\x1b\xfa\x94\x61\xb9\x53\x0f\x79\x8e\x03\xb4\xa6\x9c\x70\x3a\x04\x32\x3d\x73\x6b\x55\x62\x25\x61\x8b\xe3\x46\x62\x0c\x25\x31\xb7\x82\x35\x47\x4c\x76\xab\x24\x55\x98\x05\x99\xc1\xb4\x87\x98\x1c\x88\xf9\x84\x3b\x91\xb5\x08\x59\xb0\x0e\x4d\x3f\x70\x90\x87\x32\xd3\x4c\x66\x0a\x12\x49\xf0\xee\x4e\x15\x20\x08\x98\x93\x44\x30\x2c\x39\x00\x29\x01\x22\xdc\x34\xad\x7a\xdf\x68\xa3\xa8\x4d\x8e\x81\x11\x02\x4c\x43\x57\xfe\x73\xb6\x61\x65\xc9\x52\x84\xc9\xf9\x33\x83\x31\xe1\xd2\xcc\xf1\xe9\x79\x01\x3e\x4d\xfa\xd4\x59\xc1\x69\x5e\xeb\xa0\x00\x9a\x39\x16\x7e\x22\x3e\xe7\xac\x60\x90\xcb\x9c\x15\x68\xd6\x5b\xcb\x3c\xa5\x86\x35\xe6\x6f\xca\x64\xc7\x5a\x26\xaa\x18\xf2\x55\x9a\x01\xcb\xf0\xb1\xd1\x6c\xd7\xbb\x75\x59\xe4\xb9\xe7\x99\xd9\xbc\x48\x90\x9a\x4e\x4b\x34\x87\x26\xda\xbc\xc8\xcd\xd9\x46\xb8\x86\x99\xeb\x08\x9e\x35\xa5\x09\xf9\x6a\x86\x9b\xde\xa1\x4c\xd3\x20\x6c\x58\x3e\xde\xaa\x14\x25\xd3\xa4\x35\x92\xee\xb7\x4a\xe6\xb8\x78\x03\x38\xfd\x42\x31\xa2\x17\x06\xbe\x2f\x80\x6c\x01\x60\x5c\xfc\xc8\xb6\x2f\xee\xf7\x17\x8a\x12\x2a\xb1\xc7\x05\x85\x97\x40\xee\x85\x8b\x49\x9f\x9e\xe6\x91\x1b\xa9\xfd\x77\xe1\x4e\xc4\xc4\x8d\xdd\xf8\x84\x4b\xc2\x8b\x76\x02\x5e\x77\x2a\x44\xd6\xd1\xb9\x56\x10\x5d\xb4\xca\x51\x4b\x04\x0d\x9d\x79\x30\x87\x23\x13\x23\xa3\x7a\x9e\x08\x9d\x59\xd0\x49\xf8\xdc\x16\x97\x1d\x4a\x25\xce\x9b\x29\xd1\xf0\x84\x8a\x49\x52\x79\x3d\xf3\x3c\x31\x9d\x2b\xcc\xdc\x94\x74\x85\x0a\xb5\xea\xbf\xd0\x63\xd3\xf5\xf6\x65\xd7\xdb\x5f\x22\x16\xcb\x6f\x7d\x45\x2f\xf3\x77\xb0\x4e\x77\x58\x32\x14\xa4\x8f\x99\x81\x20\x3b\xb3\x06\x13\xd1\xac\xfc\x67\x49\x9e\xaf\x92\xf5\xc7\xaa\x77\x3a\xc7\xe8\x08\x73\x21\xdb\xaa\x6b\xd9\x78\xd0\xe9\xa4\x1a\xc2\x54\x17\x2d\xdc\x48\x0e\x92\x48\xe6\xd4\x61\x7e\xc1\xd7\x4c\x4a\x87\x64\xdd\xdb\xbb\x8a\xa5\x60\xfe\x8e\xed\x8a\xf2\xc1\xf3\x84\x14\x23\x25\x4d\xad\xea\x7a\x46\x2a\xa0\x7b\x87\x6e\x21\x9c\xd9\xe2\xe0\x79\xc5\x75\xb2\x48\x14\x73\x71\x88\x92\xd8\x68\x98\x25\x6a\x11\x52\xc2\x04\x76\x4f\xf2\xc9\x95\x28\xf6\x6f\xf9\x4b\x29\x8c\x48\xa9\xc3\x99\x2f\x14\xe7\x08\x4a\xbb\x83\xe7\xa1\x3c\xcc\x75\xe5\x9e\xb7\x46\xb9\x5f\xdd\x64\x1b\x81\x30\x0e\xca\x50\x76\x3d\xd8\xfb\x69\x56\x25\xab\x9c\xc1\xb9\xe2\x9e\x1e\x93\xb4\xa7\xb5\x95\x3d\x30\x2b\x60\xba\xb9\x68\x0f\xcf\x2f\x32\x39\x44\xa3\x73\x1f\x28\x86\xd5\x1e\xd6\x90\xc5\xf1\xa2\xa7\x4f\x2a\x43\xe6\x1f\x78\xf6\xdb\x81\x79\xde\xde\xbf\x49\x2a\xc4\x71\x5d\x1f\x14\xdf\x20\x59\x2c\xcf\xe3\x6d\xc7\x3b\x09\x10\x98\x0b\x24\x71\x77\x83\x2d\x42\x47\x78\xd8\xcd\x62\x50\x2a\xad\x29\x59\x4b\x32\x64\x9f\x12\x35\x44\x09\xdd\x23\x6a\xe9\x83\x14\x8d\x60\x18\x1d\xfd\x3d\xe5\x5b\xcb\x85\xe2\xb0\x40\xbe\xd7\xac\x26\x12\x92\x98\x61\x7c\x3d\x9d\xe3\x83\xd6\x4b\xa3\x92\xcc\x41\x9e\x46\xc5\xb5\xec\x72\x31\x9d\x92\x04\x9e\x92\xe9\x14\x37\xe6\x84\xe1\x26\xa9\x46\x25\xa9\xb0\xab\x9c\x91\x83\xac\x39\x70\x90\x73\xa8\x6b\xc7\x8c\x51\x0a\x3e\xbb\xbd\x18\x3b\xe5\x01\x88\x54\xf5\xeb\xa5\x1d\xcd\x94\xd3\x92\x8a\x7e\xbe\x11\x75\xbd\x73\x68\x48\x5e\xd8\x87\x3a\x6d\x15\x39\x15\xa4\xac\x6b\x0b\x80\x74\x6d\x32\xff\x68\x5d\x39\x1c\x89\x80\xd2\x72\x5c\x06\x14\x4a\x2c\x20\x82\x46\x8c\x08\x65\x2a\x11\xea\x5f\x84\x03\x11\x13\x39\x09\x99\xe7\x39\x79\x5d\x23\x1e\xe6\x0a\x5c\x04\x0e\xd6\x48\x60\xd3\xbe\x6c\x63\xa4\xbf\x7b\xdf\x34\x3e\x3c\xaa\xb1\xca\x8d\x75\xdb\xc9\x9a\x16\xeb\xec\x6d\x25\xb5\xa1\xc4\x23\xa7\x33\x51\xe4\x6a\x15\xad\x4b\xdc\xb4\xe0\xcc\x25\x16\x02\x92\xa4\x6e\xcd\x2e\x14\x4a\x70\x31\x31\x79\x53\x37\x26\xb2\x20\x30\x53\xc4\xdd\x24\x59\xfe\x47\xe5\x64\x56\x5d\x8e\x17\x22\xdb\x3c\xb8\xc4\xdd\x97\xc5\xb6\x64\x55\x35\x28\x6b\x8a\xc5\x92\x0d\x75\xf7\x8c\xa7\x72\x4f\x91\x92\x1e\x81\x2e\x8f\x4c\x19\x6f\x48\x92\xdf\x25\x0f\xd5\xc8\xb7\x4c\x9d\x96\x75\xb3\xe8\xcb\xee\xa2\x93\x59\x15\x37\x8c\x07\xc3\x73\x97\xee\xd0\xa2\x43\xe7\x2d\x5f\x63\xab\x82\xc6\x50\x4b\xa1\x2a\x49\x68\x21\xf1\x61\x45\xfb\xac\x74\x24\x62\xec\x79\xf2\x67\x91\x45\x45\x34\x8f\x63\x74\xd2\x7a\xe5\x79\xd5\xf8\xa9\xdd\x42\x1f\x67\x74\xf5\x19\x5a\x8e\x43\x36\x3c\x29\x6c\xd5\xf0\x7a\xec\xf2\x5d\xae\x07\xf6\xcd\x0a\x20\xee\xab\x55\xc1\x01\x8f\x92\x89\x2b\xa1\xcf\x8d\xa1\x51\xc0\x81\x1d\xa7\xa0\x0e\xd4\x49\x05\x72\x6d\xd7\x1f\x89\xe7\x08\x03\xfe\xa7\xc1\x5d\xe6\x86\xe8\xc7\x4f\x68\xd1\xc3\x16\x50\x99\xe4\x47\xcb\xa6\x21\x99\x45\x3f\x4b\x7f\x9f\xed\x19\x2d\x7d\xb9\x40\xe4\x74\x9e\x99\x3d\xcf\x8f\xe5\x3c\x17\xd1\x93\x78\x51\xaa\x39\xa5\x89\xe4\x02\x49\xe5\x79\xf0\x60\x4f\x31\xa7\x72\xd5\xa3\xf9\x07\x16\x47\x8f\x63\x83\x1d\x88\x88\x1e\xc3\xbb\xc4\x0e\x98\xc8\xa5\x99\xc5\xf1\x88\x74\xa3\xbe\x0c\xa7\x2a\x0b\xcb\x60\x7c\xd7\xf6\xf3\xd3\xa4\xdd\xe5\x0d\x26\x65\x3b\x63\x19\x26\xa0\x57\x02\x4e\x3d\x03\x35\x6c\x43\xee\x7a\xa0\xd9\xee\xdd\x19\xe1\x27\xb2\x18\x26\x3d\x41\x7d\x2e\x29\x51\x5d\x7f\x02\x58\xca\x40\x12\xf6\x39\x74\x9d\x05\x3d\xae\x3d\x39\x27\x9e\xb4\xc9\xa5\x64\x5d\x58\xac\x0e\xfe\xb8\x7c\x1a\x1e\x42\x5e\xcf\xc3\x93\x2e\x06\x25\xe1\x94\xd2\x2a\x2c\x34\xd0\x29\x5c\x47\x38\x0e\xa6\xd3\xac\xae\x8b\xde\xa9\x91\x4c\x6f\x1a\xc9\xc1\x90\x5c\xca\x70\xe5\xf5\x1c\x44\xa1\x8a\x9a\xf3\x3f\x72\xe8\x1e\xf3\xf6\x71\x51\x5e\x8b\x85\x90\xa2\x52\x24\xe2\xc1\xf8\x65\x52\x37\x05\xf6\x9b\xd9\x32\x09\x12\x24\x97\x52\x97\xda\x31\xc5\xe9\x8e\x49\x80\x9e\x56\x18\x3a\xdd\xea\x0e\x86\xbd\x97\x75\x90\xc2\xda\x10\x20\x41\x55\x87\xfd\xbe\x28\xc5\xf0\x98\x57\x80\x34\x9b\xa8\xb1\x92\x35\xd9\x93\x0d\x49\x69\x31\x50\xdd\xbb\x69\x76\xeb\x82\x7a\x30\xf5\x2b\x26\x9e\x0a\x51\x66\xab\x83\x60\xc8\x5d\xe7\x49\x55\xbd\x49\x76\x12\x97\x0b\x17\x93\xd4\xcf\x38\x67\xe5\x77\xef\x5f\x7f\x4f\xdd\x8b\x8b\x6f\xf2\x8c\x7f\xbc\xba\xfe\x46\x48\x38\xbf\xfe\xe6\x4a\xff\x26\x17\x37\x25\xdb\xd0\x2f\xae\x92\x2f\xae\x93\x6f\xae\x92\xeb\x6f\x32\xbe\x3f\x88\x0b\x38\xa2\xfe\x62\x7d\xc3\xd6\x1f\x57\xc5\xfd\x17\x57\xd7\x2e\xe1\x34\x3d\xa3\x0e\xbe\x74\x25\xe4\x9d\xfb\x9a\xb8\x58\xa2\x40\x87\xd7\xb5\x53\xd6\xb5\x63\x20\x54\x2b\xa0\x8e\xcd\xa2\x3a\x1d\xa6\x32\x2c\x71\xe5\x9a\x02\x12\x64\x3c\x7d\x76\x93\xe5\x29\x3a\xc9\x59\xec\x81\x5b\xc3\x12\x64\xcf\x75\x01\xc6\xa4\xba\x51\xfa\x95\x78\xc8\x99\xbf\xae\xaa\xf7\xec\x5e\x50\x57\x14\xfb\x60\xbe\xbf\x5f\x6c\xf2\x22\x11\x81\x14\xab\x16\xc5\x3e\x59\x67\xe2\x21\xf0\xbf\x72\x89\xa0\xc7\x2d\x13\xef\xac\xa9\x0e\x5c\x38\x15\x4b\xfd\x76\xc6\x49\xce\x12\x49\xa6\x7e\xba\xc9\x04\xab\xf6\xc9\x9a\x05\x4f\xa8\xcc\x01\xb6\x15\xd0\xef\x56\x26\x21\x62\x55\xa4\x0f\x81\x73\xae\xab\xf0\xb9\x55\xaa\x93\x1b\xb1\xcb\xdf\xb1\x32\x4b\xf2\xec\x77\x16\x38\x67\x8b\xc9\xd5\xed\x4a\xc1\x10\x83\x2b\x51\xec\xaf\xd4\x51\x09\x28\xf2\x2d\x60\x81\x0c\x72\xce\xe4\xea\xbf\x29\xca\x1d\xd4\x9f\x06\xee\x55\x02\x7c\xef\x20\xbb\xcc\xe5\x62\x62\xe6\xe5\xea\xc3\xcc\xff\xaa\xad\x59\xcd\xa7\xfe\x86\xc9\xba\xaa\xe0\x8c\x33\x70\x1c\x6b\xae\x21\x89\x00\x3c\xbd\xe5\x81\xe3\x24\xfe\x6d\x92\x1f\x18\x29\xf6\xe2\x1d\x2c\x35\x4b\x83\x5c\x5b\x21\xb1\x94\x30\xbe\x86\x03\x51\xc7\x39\x59\xef\x4d\x51\xee\x5c\xec\xeb\x1c\x30\x41\x5f\x3d\xcb\x0b\xce\x02\xf7\x9b\x80\x27\xb7\xd7\xdf\x5c\xc1\x8f\x5c\xa3\x93\xc2\x3c\xb9\x75\xb1\xbf\x96\xd9\xdf\x14\x29\x43\xce\x0c\xfb\xc5\x41\xa8\x6d\x42\x56\xc5\xfd\xeb\x22\x65\x79\xe0\x3e\x7b\xf7\x6e\xfe\xac\xd8\xed\x13\xa1\x94\x16\x6b\x78\x96\x1f\x49\xca\x72\x26\xd8\x8b\xfb\x7d\xc2\xd3\x22\x70\x66\x84\x17\xd0\x3c\xa8\x07\xe4\x7b\xc6\xf3\x8c\xb3\x6f\x25\x09\x79\xc3\x58\x5a\x7d\x9f\x3c\x14\x07\x11\x38\x73\x52\xdd\x94\x19\xff\xf8\x53\x99\xec\xe1\x6b\xa5\x0e\xfa\xf3\x4c\x6e\xc5\xd7\x49\xb9\xcd\xf8\x8f\xd9\xf6\x06\x2a\x59\x15\xf7\xef\xb2\xdf\x33\xbe\xfd\x51\x7f\x97\x89\xfb\xec\x9e\xe5\x3f\x14\x55\x06\x67\xe1\xce\xbc\x21\x89\x0f\x53\xca\x52\x29\xad\x09\x5f\x77\xe5\x99\x4e\x4b\x06\x23\xd5\x79\x49\x65\xe8\x9d\x2e\x56\xec\xc5\xf3\x36\x21\x6f\x3f\x82\x5a\x43\x0d\xf7\x22\x85\xd5\xd6\xea\x86\x1b\x7c\x14\x7e\x6f\x1e\xa8\x33\x6f\x92\xd3\xe9\xd6\xfb\x8e\x24\x03\x5c\x05\x6b\xef\x12\xd7\xc5\x44\xf8\x90\x89\xba\x72\xa2\x93\x01\xdc\xa9\x7c\xb2\x3c\x3c\x51\x57\xb8\x27\x75\x49\x28\x70\x89\x5b\x26\x69\x56\x40\x7d\xf0\xf4\x9f\x26\x3f\xd4\xaa\x60\x6d\x58\x52\x4f\x87\xc6\x97\xc3\xaf\xbc\x43\xa5\x87\x76\x64\xc6\x64\xb1\x3d\x30\xc5\xe4\xd0\x43\x4f\x89\xec\x81\x49\x68\x57\x41\xcf\xbb\x50\x4f\xb0\x46\xf4\x30\x5c\x9c\xde\x5b\x9e\x18\xc4\x61\x0a\xa7\xb6\x1a\xca\xf3\x50\x3a\x54\x4b\xad\xf3\x6c\xfd\xd1\x25\x16\x59\x69\x01\x02\xf2\xc8\x35\x92\x64\x61\xd8\x6c\xb6\xfe\x88\xb0\x3a\x55\xd8\x5c\x64\xfc\x58\x1d\x56\xbb\x0c\x80\x50\x29\xc1\xe4\xd3\xa6\x58\x1f\xaa\x8c\x07\xce\xac\xc1\x03\xc2\xb3\xa6\x6e\xc1\xdd\xc9\x46\x4d\x95\x88\x36\x13\xf7\xdb\xc3\x6a\x95\xb3\xca\x8d\xe9\x1a\x54\x27\x75\x0d\x9d\x55\x05\xaa\x68\x1d\xfb\x4c\x83\x0d\xa5\xed\xa1\xfa\x45\xaa\xb1\x85\x14\x04\xb6\x65\x71\xe0\xe9\xb3\x3c\xdb\x53\x77\xad\xf4\x7b\xd3\x55\x71\xef\x9e\x74\x7f\xbc\x88\x2b\xa7\x3a\x67\x49\x09\xa3\x7f\x27\xf3\xf4\xeb\x01\xec\x3c\x56\x96\xac\x86\x8c\xb8\xa6\xca\xd4\xdd\x27\xa9\x44\xf2\xc1\x6c\xb1\x83\xbd\x1a\xcc\x16\xab\xa2\x4c\x59\x19\xcc\x16\x69\x56\xed\xf3\xe4\x21\x58\xc9\x7d\xbd\x58\x15\xf7\xd3\x0a\x76\x6f\x60\x35\xba\x98\xee\x8a\xdf\xa7\xe7\xbe\xdd\xb1\xd5\xc7\x4c\x9c\xfb\xec\x02\x0c\x8e\xa3\x7e\x45\x30\xa2\x59\xbc\x38\xc0\x51\xf9\x38\xcb\x40\xf8\x90\xf0\xb5\x9d\xbf\xcb\x52\x71\x13\xcc\x16\x37\x0c\xb0\xcf\x6c\xb1\x37\x28\x26\x59\x55\x45\x7e\x10\x6c\x21\x89\xe4\x6c\x21\x89\x63\x30\xfd\xfa\xeb\xaf\xbf\xde\xdf\xeb\x49\x98\x6a\xf2\xe9\x0e\xf6\x01\xc7\xbd\xd7\x74\xc0\x8f\x18\x36\x44\x94\xd7\xdf\x88\x54\xb2\x23\x29\x3c\x08\xf5\x74\x25\xd3\x35\x8b\xe2\x7e\x82\xae\x8b\x54\x6e\xdc\x68\x16\x0f\xc7\xf6\x39\x6b\xc5\x41\xe0\xdd\xd3\x99\x44\x11\xb2\x8e\x62\xb3\xa9\x98\xf8\x0e\x66\xc1\xae\x55\x17\x90\x60\x95\x44\xf3\x93\x54\x55\x8f\xf0\x0d\x26\xff\x2e\x4b\x53\xc6\xdf\x42\x65\x15\xdd\x7b\xde\x78\x03\xbd\xf9\x90\x80\x7d\xb2\x3c\x2d\x24\xa8\xae\x8f\xc2\x90\xfd\xe9\x14\x84\xac\xaf\x66\x46\x24\xab\xa3\xa7\x42\x3e\xf6\x01\x57\x41\xc2\x97\x83\xd5\xfd\xb7\x33\x00\x31\xff\xb7\x85\x1c\x77\x4b\xaa\xe8\x97\xb0\xad\xd4\x28\x7f\x92\x55\x11\xe1\xa7\x05\xab\xde\x14\xe2\x15\x5f\xe7\x87\x54\x53\xb9\x57\xfc\xdb\x22\x7d\x50\x33\x04\x52\xca\x41\x17\x7a\x5f\xec\x09\x93\x6b\x2d\x69\xef\x41\xb0\x14\xb6\xae\xe7\x21\xe1\xf7\x68\x1f\x75\xe7\xff\x26\xe9\x3b\x3a\xcd\x8c\x52\x38\x34\xc3\x75\x7d\x6c\xb0\x2f\x8a\xbd\xdd\x43\x43\x4c\xa9\xfb\xe5\x1e\x90\xc0\xa7\x2b\x50\xd3\x01\x79\x1b\xec\xc3\x1b\xf0\xb9\x9f\xe4\x47\x61\xb7\xe1\x13\x3e\x73\xb8\xbe\x55\x9b\x63\xd7\x51\x7e\x6a\xd2\xa0\x2d\xea\xce\x3a\xb8\xd0\x29\xb0\xd5\x3a\x58\xb3\xb8\x06\xea\x58\xf6\x65\x63\xe3\x2a\xed\x89\xb1\x1a\xc5\x98\x68\x95\xb2\x69\xeb\xf7\xa2\xd8\x39\x94\x66\x40\x65\x3e\x09\xa5\xd5\xc4\x55\x93\x24\x61\xc9\x06\x31\x03\x57\x8a\x19\x5a\xc8\x1a\x83\xb9\x0b\xd4\x7e\x8c\x3b\xa2\x4f\x4e\x40\x27\x1d\xee\x33\x00\x51\x77\x80\x47\xd2\x4c\x32\x7c\xf2\xbf\xfc\x62\xf1\xdb\xbd\x59\xfb\x4a\xcd\xda\x90\xff\xa2\x4f\x9c\x53\x80\x1d\xef\xa0\xe7\xa1\x83\x35\x3b\x74\x8e\x25\xe5\x57\x8a\x5a\x83\xf1\xa4\x84\x44\x13\xaa\x0e\x82\x70\x23\xdf\x2b\xaa\x74\x98\x09\xa4\x11\xd1\x20\xa5\x9c\x7f\x0b\x2e\x44\xcb\x63\xb4\xac\x96\xef\xe2\xcb\x65\x53\x2f\x23\xf3\x1c\xe3\x47\x57\xe4\x5b\x7a\x85\xa2\xa7\xd3\xff\x8a\xf1\xd5\xb6\x3b\x68\xf8\xc1\x9c\x79\x82\xca\x5b\x1d\x55\xee\xc5\xf3\x44\x24\x88\x61\x45\xae\x94\x95\xf0\xca\x50\x58\x72\x38\x3d\x39\xe0\x70\x44\xda\x0a\x24\x7b\x9a\x87\x2b\x7f\x9d\xac\x6f\x58\xc0\xc8\x86\xe6\x21\x8b\xaa\x38\x90\xff\x3c\x0f\xdc\x56\x36\x9e\xb7\x8f\x36\xb1\xe7\xa1\xac\xae\xe5\x93\x9f\x26\x22\xc1\x75\xed\x1c\xea\x1a\x2c\x65\x8d\x31\xc1\xa6\xae\x91\x2a\x4f\x37\x74\xed\xef\x8b\x3d\xc2\xdd\x39\x6e\xb0\xa1\x15\x26\xb2\x82\xba\x46\xf2\x87\x1e\x1b\x92\xeb\x67\x5f\x14\xff\xf1\xee\xed\x1b\xba\xf2\x79\x51\xec\x31\x26\xe8\xc4\xda\x91\x8f\x5a\x3b\x72\x2c\x3b\x16\x42\x7d\xad\x36\x49\xbe\x11\x8e\x83\xb6\xb7\xfd\x4f\x90\x24\x25\x7c\x52\x50\xc8\x9a\xd5\x35\x2a\x20\xb5\x7d\x00\xfb\xe6\x82\xaa\x17\x4c\x8c\x45\x70\x11\xc9\xc9\xd2\x26\x46\x88\xe3\x98\x96\x98\x1c\x42\x94\xd0\x02\xce\xce\xe1\x10\x30\xf1\x3c\x48\x18\x64\xc5\x38\x48\x68\x41\x92\xa6\x69\x97\xf4\x47\xcb\x28\x70\x74\x41\xf5\x29\x8e\xbd\x62\x15\x4d\xac\x15\x3b\xd0\x24\x64\x51\xbb\xe2\x71\xd0\x3e\xca\xb5\x03\x83\x6b\x59\xb9\x3a\xb0\xe6\xa1\x4c\x08\xe4\x3f\x35\x2e\x7c\xec\x0c\xa6\x05\x0e\x05\x15\xe6\xa0\x5e\xdb\xd2\x13\x6b\x0c\x18\x07\x60\x11\x59\x84\x82\x46\x22\x0e\x90\xa0\xf6\x08\x05\x18\x25\xaa\x0c\xf2\xb3\xb0\xce\x03\x8d\xd9\xca\x8c\x64\xad\xe9\xca\x22\xbb\x2e\x17\xe5\x64\x82\xb5\x90\x51\x44\x22\x2a\x63\x30\xa6\x70\x10\x0f\x1f\x81\x4b\x8b\x65\xa4\x89\x51\x61\xcc\x3f\x1b\xc4\xeb\x1a\xe9\x72\xed\x68\xc8\x23\x35\x5e\x2c\x41\x02\xe6\x28\x67\x09\x87\xe9\x8c\x58\x4c\x9c\x19\x0e\x5a\xfd\x4b\x5f\x80\xa9\xeb\xca\xa1\x95\xb6\xe6\x0d\xad\x7a\x61\xaa\xf4\x8e\x6e\x9a\x4e\xad\xae\x66\xff\xd8\x10\x3d\xd7\x81\xab\x4c\xb9\xdd\x09\xda\x4f\xc0\x14\xa7\x94\xc9\x3b\x84\x3b\x9b\xa3\xab\xe5\xf3\xab\x2d\x48\x3d\xbc\x90\x9d\x0a\x8e\x6c\xb7\x62\xa9\x64\xb0\x15\xa8\x07\xee\x3a\xaf\xb2\x34\x78\xfe\xf8\x7f\x3f\x7b\xfe\xed\x9f\x5f\x4c\x9f\xbe\xf8\xf3\xf3\xe9\x7c\xbe\xde\x4c\xbf\xfe\xf3\xb7\xff\x3e\xfd\xf2\xcb\x2f\xbf\xfa\xea\xc9\x57\x5f\xce\x66\xb3\x99\x4b\x92\xfd\x3e\x67\x92\x51\x87\x33\x1a\xa8\x70\xec\x9c\xc6\x82\x1c\x03\x35\x91\x0d\x2f\x72\xab\x77\x6f\xc4\x71\x98\xe7\x39\x8f\xc0\x84\x35\xed\xd7\xd9\xd3\x03\xfe\xa0\xdf\xcd\x71\xd5\xf3\x61\xde\x36\xe7\x8f\xca\x3a\x8f\xfc\xf2\x19\xd5\x11\x30\x5f\xff\xe5\xb3\xaa\x54\x79\xbb\x2d\x73\x62\xef\x6e\x1d\x04\x4b\x2e\xc3\x7e\xff\xba\xf7\xde\x19\xf8\x9a\x33\xe7\xce\xcc\x4f\xe2\x23\x59\x7b\x74\xce\xde\xcf\xd8\x2c\x39\xa2\xae\x85\xb6\x86\x67\x03\x41\x16\x54\x45\x59\xea\x82\x71\xa0\x52\x03\xb6\xfe\x1e\xe8\x38\x9c\x17\xdb\x5c\xc7\x38\x7d\x91\x84\xce\x48\x05\x80\xb8\xd0\xb6\xfc\xca\xe6\xc2\x72\xb1\x81\x13\xc5\x15\xec\x04\x54\x60\x32\x07\xd5\x45\x37\x66\x67\xe5\xff\xa2\xbe\x11\x65\xc1\x99\xca\x1e\x56\x2e\xc6\xe6\x00\xb8\xb0\xc4\xb4\x45\x69\xb4\xb8\xfa\x94\x97\x96\x51\x12\xfb\x52\x2c\x26\x99\x71\x0b\x46\xae\xac\x70\xea\xe2\xba\x46\x59\x0f\x17\x64\xfa\x40\xec\x2b\x8c\xc9\x4f\xa8\x20\x19\x38\x5a\x60\xbc\x38\xd3\x09\x58\xcc\xd6\xc9\x42\xdb\x28\x9d\x98\xbb\x2b\x87\x2f\x38\x05\xb0\xc4\x34\x3d\x64\xe5\x4e\x85\x1b\xb9\xc9\xb5\x11\x4f\xdf\x13\xa8\x83\x36\x2e\xa7\x2f\x2c\x42\xd9\x33\x46\xcc\x94\x11\x89\xe0\xe4\x0c\x07\xe8\x8f\xdb\x01\xdb\x1c\x80\x6b\x20\xed\x9c\x9c\x6a\xbf\xd5\x17\xed\x90\x31\x02\xd0\x03\x47\xaa\x93\xd6\xba\x42\xdd\xd8\x1a\xdb\x4c\xe2\x27\xe3\x75\x0a\x36\x97\x40\x9f\xfa\x16\x10\xda\x1f\x95\xea\x65\x9a\x74\x26\xd3\xdf\x12\x77\xfa\x68\xee\xe2\x3e\x2c\x83\x8e\x9d\x0e\xa0\x37\xc3\xa7\xa6\x8d\xa5\xb6\x48\xa1\xae\x28\x0f\x4c\x9d\x95\x3b\xb3\x40\x5b\x1c\xab\xd7\x79\xe0\xca\x09\x50\x6f\x30\xad\x93\x72\xe2\xaa\xd7\x49\x19\xbc\xd5\x0a\x44\x1c\x6a\x77\x51\x49\xfe\x11\x1c\x02\xb5\x26\xca\x8d\x9e\x72\x35\x4c\x65\x80\x65\x9b\x2d\x77\x74\xf4\xd1\xa8\xe1\x7e\xb6\x41\x0a\x44\xa5\xb4\x20\xea\xda\x19\x50\x14\x75\x12\x87\x3d\xcf\x55\xdc\x87\x6b\x31\x33\xb6\xb9\x7f\x87\xf7\x7f\x3b\xb0\x03\x1b\xf7\xfa\x6d\x6d\x17\x43\xc4\x29\x02\x66\xe5\xde\xc5\x13\x17\x8a\xb8\x44\xee\x8f\x5f\xcc\x68\x30\x29\x3d\x0f\x39\x99\x72\xa3\x30\xc7\x16\x61\x2f\x4f\xcf\xe7\xb2\xc4\x38\xd0\x06\x8b\x25\xc6\x92\x5f\x89\x62\xb0\x8a\x4b\xd9\x49\x97\x04\x3e\xc2\x21\xb5\x6c\x5f\xd9\x82\xd0\x95\x0f\xb9\xe0\x63\xff\x94\x88\x1b\x6b\x0b\x52\xc8\xc6\x21\xdb\x77\x45\xf1\xb1\x52\x79\x13\xda\xdf\x00\xac\xab\xa7\x59\xb8\x19\x6f\x8f\x71\xa9\x12\x18\xec\x0a\xcb\xe9\x14\x93\xc2\x5f\x1f\x4a\x9a\x11\xf9\x51\x76\x48\x81\x29\xf7\x0f\x5c\x65\xb3\xeb\xc0\xc4\x70\x02\x60\x33\x42\x8c\x6d\x1b\x49\x48\x81\x31\x71\x4a\xcf\x2b\x3c\xaf\xf0\xc1\xaa\x00\xce\xd0\x90\xa4\x16\x5d\x9f\xc7\xad\x78\xf5\x12\x40\x0e\xb7\x3b\xcb\xed\x16\x43\xae\x42\x37\xed\x47\x65\xb4\x70\xfe\x48\x7b\x78\x98\xb8\xf2\x2d\x82\x25\x5b\x36\x6b\x2e\xf1\x7c\xff\x93\x32\x0a\x39\xa1\x00\xa7\x50\x65\x2c\x53\x1e\x0f\xec\x35\x3b\x67\x11\x50\xf6\x30\xc2\xa8\x9c\x55\x35\xd7\xe5\xf5\x10\x09\x85\x66\xe1\x0d\x19\x61\x38\x50\xc8\x4f\x26\x04\xa3\x88\xc7\xb8\xc3\x76\x05\x95\xdd\x71\x1f\x3a\x34\x46\x22\x7a\x4d\x99\xe7\xd9\x2b\x29\xf7\x51\x34\x83\xa3\x37\x03\x32\x1d\x0a\x1b\x81\xd9\x3f\x42\x85\xa3\x95\xe4\x27\x66\xdb\x2d\xcf\xb3\xf2\x37\xf7\xa1\xfc\xe7\x57\x7b\x29\xc5\x81\xa9\x94\xe4\x96\xdb\x8d\xa1\x3c\x9d\x75\xad\xa3\x46\x41\x96\x2d\x9d\x20\x0c\x2f\x38\x00\xa5\xbd\x1f\x40\xc7\x68\xf2\x94\x72\x59\x1b\x02\x69\x7f\xfb\xe4\xf0\xf4\x16\xd2\xfd\x00\xf7\xd6\xd3\x93\x72\xdb\xec\x78\x0e\x7b\xb3\x77\x3a\xab\x0e\xe2\x7b\x0e\xb6\x07\xbb\x6b\x23\x87\xa9\x09\x89\x92\x58\xee\xda\xf3\xa0\x24\x30\x61\x54\x77\x4c\x5b\x11\x55\xd3\x29\x2e\x5b\xb4\x94\x44\x55\x4c\x58\x6f\x43\x01\x2a\x2b\xd5\x9e\x94\x08\x60\x32\x21\xfa\x0d\xf6\xc9\xa1\xb3\x44\x3d\x20\xfb\x38\x94\x03\x2d\x93\x43\x7c\x45\x7e\x27\x3f\xd3\xab\x68\x29\x20\x22\xc6\xd5\x96\xfc\x9d\x5e\x2d\xcb\xab\x2d\xf9\x4f\x15\xc0\x03\x8e\x08\x6a\x75\x3a\x54\x0b\x76\x2f\x92\x92\x25\xf5\xea\x20\x44\xc1\x6b\xc5\x24\xe0\x47\x57\x19\xf9\x87\xca\x9e\xd4\xf2\x3b\xa4\xfc\x87\x4a\xd1\x4a\xf4\xda\x1c\x30\xd5\xc9\x41\x14\xa0\xd4\x86\xa7\x7d\x9e\x3c\xd4\xe0\x33\x53\xaf\x0b\x2e\xca\x22\xaf\xea\x54\xce\x76\x6d\xce\x42\xea\x1b\xd0\xea\xd5\x79\x51\xec\xeb\xdd\x21\x17\xd9\x3e\x67\x75\xb1\x67\xbc\x2e\x59\x92\x16\x3c\x7f\xa8\x4b\xf6\xdb\x21\x2b\x65\x2b\xeb\x62\xcf\x52\x68\xff\x2f\xe3\xed\xc3\xb7\xbf\xd1\x4e\x18\x19\x9c\x31\x92\xbf\x5a\xdf\x60\xf4\x8b\x1e\xbe\x90\x6c\xda\x39\xd7\x72\x9b\xf5\x59\x01\x43\x47\x24\xb3\x7c\xca\x9e\xb4\x6c\xc9\xd3\x7e\x6d\x9f\xc7\x96\xc8\x42\xf6\x76\xdc\x97\xc5\xfe\xf3\xba\x24\x73\xfe\x51\x97\x7e\xe8\xd7\xd6\xdb\xd9\xb2\xfc\xcb\xec\x5e\x6d\x69\x32\xda\x49\xc9\x9b\x68\xa7\x7f\x2a\x0c\x51\x31\x51\x00\x5a\xbf\x41\xd8\xaf\x49\x9a\x3e\x93\xdc\xf9\xa9\x8d\x45\x67\x5e\x0e\xac\x77\x7f\xab\x9d\xda\x63\x7a\x1e\x5b\x80\x10\xdf\xb3\x99\xc7\xe7\xe7\x52\xe0\xe3\x4a\xc5\x39\xf0\x4d\x27\x10\xeb\xa2\x1f\x10\xa1\x83\x31\x98\x63\x66\x8c\x1b\x60\xd0\x0e\x60\x02\x21\x28\x60\x10\x17\xf7\x6c\x4b\x17\x55\x67\x94\xc9\x95\xec\x90\xc4\xa4\x04\x1b\x0f\x6e\xc9\x02\x88\x77\xf5\x86\x52\x40\x9f\x58\x09\x13\x29\xb0\xb7\x9c\xe2\xcf\x44\xbe\x06\x20\xc4\x1f\x0b\x3a\xd3\x78\x21\xa3\x02\x3c\x36\xf0\xec\xba\xec\xc4\x81\x0b\x77\x92\x41\x71\xcf\x43\xe5\x84\xaa\xe7\x85\x55\xb7\xf1\xe4\x2b\x47\x6d\x1e\xff\x3b\x2b\x01\xea\xf5\x01\x24\x75\xfe\x78\xff\x33\xeb\x63\xf5\xee\xff\xcf\x4b\x74\x66\x85\xd4\xeb\xd8\x2a\x5d\xd3\x19\x2e\x69\xd9\x56\xd4\x7e\x21\x27\xeb\xc6\xc2\x76\xe5\x02\xd7\xed\x2f\x9e\x28\xb6\xdb\xfc\x64\xf1\x2c\x0e\x4c\x2f\x01\x29\xe9\x88\x57\xab\x6d\xcd\x6d\x7b\x9b\x8c\x2c\x09\xef\x96\xc4\x6a\xb3\xb7\x24\x7c\xb0\x24\x92\x89\x15\x52\x28\x1c\x45\x14\xbd\xa0\x3c\x94\xb7\x3a\x54\x80\x33\xdd\x14\x39\x50\x01\x2a\xd3\xde\x2a\xaa\x49\x2d\x68\x1e\x25\x72\x8e\x0f\xb4\x0c\x0f\x81\x53\xf9\x37\x49\xa5\x3a\x55\x60\x52\x45\x87\xd0\x35\x7b\xdb\x0d\x5c\x0b\x8c\xdc\x18\x15\x4a\xa0\x41\x92\x1f\xcb\xea\xda\x9a\x19\x0a\x3a\xcd\xfe\x38\x24\x2b\xf5\x4b\x27\x7f\xba\xbf\xfc\xd2\x7e\xfa\xe5\x17\x77\x08\x87\x83\x77\xda\x7f\xad\x6b\x88\x05\x30\x0f\x5d\x37\xf8\x54\xad\x18\xa0\x57\x62\x49\x33\xaa\x11\x4b\x34\x09\x33\x00\x8f\x84\xd3\x19\x29\xed\xdd\xb9\xd0\x8e\x60\xad\x13\x9a\x84\x71\x1d\xd7\xc3\x86\x74\x59\x85\x49\xfe\x24\x88\xb7\x20\x2c\x14\xe8\x6a\xf9\x6c\xd1\x7a\x80\x93\x9e\x37\x29\xb3\x62\xa6\x75\xaa\x94\x05\xf8\x55\x0e\x30\x86\xc1\x03\xd9\xc0\x52\x13\x8f\x11\x18\x0b\x4e\x34\x8c\x2c\xcc\xc8\xec\x61\x15\x34\x0b\xfb\xa0\x09\xa6\x08\x08\xe3\x80\x69\x45\x71\x11\x16\xd4\x75\x83\x13\xef\x83\x22\x2c\x26\x14\x56\xc7\x48\x87\x05\x86\x1a\x95\x56\xb6\x20\x9f\x76\x76\x64\x13\xd7\x6d\xb0\x94\xf4\x56\xb2\x45\x60\xd4\x54\x50\x1c\x59\x7f\x2c\xe5\x9d\x7e\xf2\x19\xd5\x96\x64\xed\xdc\x8a\x09\x37\xd3\x3e\xc2\x15\x13\x6a\x2c\x05\x31\xd6\x19\x4a\xb2\x56\xd0\xaa\xcc\x34\x0a\x83\x06\x8b\x36\x4c\x92\xdd\x8f\x62\xa4\x13\xc5\x27\x7b\xb0\x6d\x7b\x80\xb8\x32\x4e\x42\x5d\xfb\xd0\x81\x90\x07\x70\xf4\xad\x2c\x3d\x4e\x8f\x3c\xc2\x4e\xf3\xf1\x77\xe2\xba\xc6\xe5\x9c\xcb\xc9\x92\x8c\x28\x08\x64\x86\xbb\x32\xbd\x0a\x8e\xca\xb8\x2c\x38\x0e\xc3\x10\x19\x35\x61\xa7\x2e\x53\x2d\xdb\xaa\x40\x29\x79\xac\xb3\x4d\xc6\xd2\x90\xa9\xaf\x01\xf3\x25\xf3\xda\x98\xb8\x49\x67\xea\x95\xd4\x8e\x32\x5f\xb5\x5d\x81\xc7\xa5\xe1\x1b\x5f\x49\xf0\x27\x05\xd5\xf6\x71\xd3\x82\x33\x3b\x3c\xdb\xec\x3a\x23\x09\x2d\x94\xb2\x25\x02\x73\xd8\x30\x9b\xcc\x83\xd2\xa2\x96\xd7\x59\x58\x05\x45\x98\x05\xca\xed\x6d\x51\x59\xd1\x5a\xa8\x72\x77\x43\x0e\x6f\x5b\xf4\xbc\x83\x03\xe8\x09\x75\x0c\xa9\x65\x2f\x14\xf2\xd6\x5c\x28\x50\x26\xbd\x94\x0f\x74\x9f\xe6\xbb\x8b\x71\x5d\x73\x2b\xa6\x56\x5b\x52\x29\x59\xd5\xf2\x23\x3b\x07\x71\x8b\xbd\xd8\x96\xc5\x61\x0f\x4a\xca\x6c\x83\x04\x5d\x21\x8e\xd5\x2e\x22\x2d\x78\x89\x45\x62\x8c\xec\x0d\x61\x4a\xe4\x24\x8b\x51\x6a\x64\xab\x55\x44\xe7\x4b\x84\x98\x8e\x78\xd6\x9a\x14\x9e\xb2\x95\x5d\xd4\x2c\x96\x5a\xce\x15\x86\x26\xa9\x6e\x71\x89\x9b\x1a\x4c\x78\xcb\x8c\xa0\xc1\x0a\xd2\xe9\x1c\x13\xde\x34\x0d\x19\x32\xf2\xad\x36\xc9\x38\xee\x74\xba\x3c\x50\xfb\x7a\xde\x13\x07\x22\xee\xfc\xbb\xfa\x79\x2c\x7f\xda\x69\xd0\x64\xb6\xb7\x00\x60\xdc\xab\x98\x66\x5d\x7f\x80\x12\x75\xea\xae\xf5\x61\x3f\xbf\xfe\xfe\x79\x01\xb1\x23\x12\xd8\x60\xbc\xbf\x05\x41\xf6\x94\xfd\x54\x3b\x95\xc7\x75\x8d\xfe\x43\x47\x60\xc0\xe1\xef\xc1\x2b\xac\x5c\xbb\x45\x58\x78\x5e\xd2\xed\xd6\xc2\xf3\x34\x44\xa0\x4a\x19\xaf\x80\x50\x8b\xc3\x2a\x40\xa3\x3d\xd5\x47\xce\xd5\x50\xff\xc8\x31\xd6\xd8\xb2\x0a\x45\x50\x61\x03\x68\xa5\x69\xb0\x6a\x1b\x84\x96\x2a\x68\xa9\x94\x6d\x01\x6a\xa8\x54\xfc\x33\xbb\x46\x52\x4e\x5c\x29\xb8\x42\xf0\x07\x4b\x9e\x01\xcd\x9c\xc0\xe7\x24\xa3\x7e\x10\xce\x99\x24\x29\x9e\x27\x5a\xbe\x00\x50\xde\x89\x0a\x56\xbb\x3b\xd3\x02\xfc\x9c\x41\x96\x36\x12\x8c\x9c\x4b\x4e\xba\xc9\x74\xfe\xe6\x79\x7f\x69\xdf\x58\xef\xf8\xd0\x4d\xd9\x26\x39\xe4\x62\xea\x4e\x38\x8e\x29\x8b\xca\x98\x3a\xf3\xc0\xfc\xaa\x25\x82\x15\x96\x23\x63\xd6\xa8\xd4\x98\xff\x16\xf2\xa0\xc4\x0a\xe2\x34\x76\x03\x13\xcb\xe3\xe9\x36\x51\xae\x87\x66\xb7\x77\xf6\x74\x9e\xa7\xcd\xec\x94\x0e\xcf\xda\xb4\x8c\x18\x5b\x3f\xb3\xc9\x58\x0f\x21\x5e\xb0\x51\xab\x3d\xa1\xdc\x8f\x74\x5e\x2a\xe7\xbe\x91\xbb\x42\xcf\x4f\x70\x14\xc9\x0a\x28\x7e\xe0\x8a\x64\x05\x5b\xc7\x25\x46\xde\x0e\x20\x46\xd0\x5b\x9e\x3f\xb8\xc4\xdd\x14\xa5\x1b\xb8\x37\x62\x97\xbf\x2c\x4a\x97\xa8\x03\x17\x37\xb0\xad\xa2\x77\xc9\xbd\x76\xbd\x72\x77\xc9\xfd\xf7\xf0\xe8\x92\x35\xcb\xf3\x6a\x9f\xac\x33\xbe\x0d\x5c\xf9\xf2\x4e\xbd\xa8\x2f\xc6\xa4\x01\xbe\xfc\xa0\x5e\x5c\x52\x16\x77\xd5\x3e\xe1\x81\x5b\x16\x77\xef\xf6\x09\x77\xc9\xba\xc8\x55\xca\xba\xc8\x55\xca\xa1\x62\xbb\x64\x1f\xb8\x87\x8a\xbd\x4e\xf6\x2e\x01\xa7\x50\x6d\x78\xe3\xc2\xcb\xb7\xf0\x22\xcb\x82\x9d\x17\x4b\x33\x30\x78\x0a\x8c\xa1\xda\x0b\x9d\xe0\x9e\xca\xd6\x56\xa4\x49\x75\xde\x3f\x8a\x25\x2a\x85\x25\x2a\x85\x25\x2a\x83\x25\xd4\xe6\xaf\xce\x6c\xfe\x21\x70\x16\x3a\xc5\x6c\x7e\x7d\x10\x2e\xb7\x9e\xbd\xef\xb2\x91\x7d\x97\x05\x2c\xe2\x31\x2d\x83\x62\x14\x29\x64\x3d\xa4\xa0\x32\xab\xa1\x1a\xf0\xd4\x4b\x3e\x4e\x26\xf9\x00\x4d\x80\x49\xa0\x6b\x00\xc6\x6d\xf1\x3a\xf8\xe8\x75\xa4\x18\x4e\x1a\x5e\x71\x81\xb8\xe6\x15\xe6\x33\x1c\xfc\xa7\xda\x73\xdd\x09\x1f\xae\xeb\x7f\x9c\xa4\x79\x1e\xf3\x6f\x4a\xb6\x09\x67\x01\x80\x29\x26\xbf\xd3\x41\xd7\x6c\x8f\x42\x83\x71\x31\xc9\x46\xa4\x9e\xf2\xe4\x90\x90\x4b\x4c\x3b\x92\x31\xfc\xab\xe7\xfd\x2d\x54\xb3\x96\x05\x9f\x87\x1e\x02\xc7\xc9\x82\x91\xf9\xe1\x9d\x57\xb8\xe7\x69\x6e\xc9\x01\x49\x60\x80\xf4\x03\x71\x4a\x3f\xad\xd3\x5a\xa1\xc4\x87\x13\xdc\x19\xc8\xbe\xd6\xb5\x63\xf5\xb2\xbf\xf1\x25\x86\x1b\x82\x18\xc7\xc1\x1f\xa0\x3a\x70\x90\x95\x04\x93\xa8\xfa\x91\x45\x90\x34\xee\x38\xbb\x10\x9f\x9c\x85\x51\x14\x16\x32\x5f\x77\x00\xb0\x5e\xa0\x18\xdf\x16\x82\x4a\xcd\xcc\x9d\xce\x10\x6c\xcb\x4f\xd6\x8c\xfa\x55\x53\x4e\x04\x0e\x5e\x79\xde\x2b\xbd\x79\xe0\x94\xab\xc1\x44\x8e\xf1\x95\xc5\x33\xfb\x4a\xd7\xf9\xdf\x1c\xa5\xe4\x9b\xdd\x2c\x35\x1e\xd0\x60\xd9\xac\x9f\xd7\x45\x51\xa6\x70\x78\x23\x59\x61\x49\x54\xf5\xe8\xac\x11\xe3\x3f\x1a\xb2\x3a\x63\x1c\xe9\x42\x17\xa8\x22\xab\xeb\x3e\x24\xc0\x77\x59\xa8\x17\x0a\x56\x1b\xd3\x75\xf0\x02\x67\x5d\x86\x3c\x48\x89\xc8\xb0\xfd\x14\x7c\x9b\x38\x90\xda\xde\x36\x2a\x71\xc8\xe5\xfe\x24\x36\x8c\x0c\x70\xac\x9a\xc7\x57\xb2\xe0\x28\x94\x9b\xe5\x80\xc3\x4a\x11\x3a\xf3\x40\x3b\x22\x69\x0f\xb4\x48\x59\xbd\xb9\xc4\x55\x36\xb3\xee\xd0\xa7\xbb\xcf\x30\x75\xb6\x47\xfd\x74\x32\xa4\xbd\x2d\xf8\xe8\x53\xd2\x53\xbe\xc5\x4d\x0e\xa2\x50\x9c\x8b\x68\x1a\x88\x0e\xd1\x51\xea\xbe\x33\x07\x6c\x13\xdd\x5d\x70\xe0\x20\x6e\x55\xae\x5d\xf2\x3f\xd5\xf7\x31\xa4\x7c\x72\x76\xcc\xc9\x63\xbc\xe8\xc9\xa7\x65\x28\x82\x12\xba\x4e\xc6\xba\x17\x0f\x1c\x9a\x6d\xea\x23\xe2\xe1\x06\xb0\xc2\x8d\xf4\x9a\x15\xe4\x4b\x10\xea\xec\xd9\x01\xeb\xbd\x01\xee\x80\xb4\x4f\x54\xda\xb3\x76\xac\xeb\x11\xa4\x78\x2e\x33\x15\x52\x04\xb7\x1d\xbe\x7c\xcb\xd7\x05\xba\xd1\x0e\xcc\x16\x29\xda\xc9\x3e\xfd\x3a\x3e\xe5\x52\x0c\xed\x24\xa6\x36\xac\x2a\x18\xcd\xf6\xc5\x46\x61\xe5\x93\x6c\xab\x25\x89\xf5\x32\x2a\x6e\x7b\x30\x7b\xda\xdf\xa6\xed\xf8\xcb\xec\xde\xa4\x51\x97\xf1\x75\x01\xac\x91\x5d\x42\x3b\xfb\x40\x5c\x30\xb5\xcc\x8a\x79\x24\xae\x71\x2b\xb3\x17\x5b\xae\x74\x4f\x25\x71\x7e\xad\x75\xb4\xb8\xa1\x8d\x8d\x56\x07\x84\x6e\xc1\xdd\x40\xb3\x94\x46\xb0\xff\x6f\xb5\x6f\x2d\x46\xff\xcb\xc9\xbe\xe5\x16\xda\x37\xfa\x1a\xa0\x7d\xc6\x3b\xc7\x16\x15\x59\x4f\x4e\xd4\xdb\x18\xce\xc1\xfe\xeb\x13\xa7\x5d\x70\x62\xc4\x04\xbd\xfa\xf0\x91\x3d\x5c\x11\x21\x54\xde\x5d\x71\xa8\x58\xad\x83\x0e\xef\x18\x3f\xe0\x1a\x3c\x3a\xae\x08\xd7\x39\xb4\xeb\x86\x3a\xec\x82\xff\xc5\x41\xac\xf2\x43\x89\x1f\x5d\x91\x12\x32\x45\x1f\xfc\xf8\x12\x42\xd9\xfb\xc8\x9f\xe0\x1a\x3f\xba\xea\x6c\x4c\x32\xd1\x39\x99\xcf\x3a\x7b\x8b\xc2\x4a\x9e\x37\x2b\x9f\x81\x8b\xc9\x51\xc5\x74\x0b\x8e\x70\xae\x32\x0c\xd5\x53\x90\x44\xc1\x6c\xcf\xc7\x91\xdc\x90\x2d\xd9\x91\x07\x72\xdb\x19\x3f\x80\x28\x75\x8b\x8f\xa5\x7f\x93\xf0\x34\x67\x10\x13\x96\x96\xa4\xa4\x6b\x93\x42\x12\xba\x6e\xc3\x56\x63\x52\xea\x98\x41\x48\x3d\x50\x63\x73\x8a\x09\x3a\xd0\x5b\xd5\x3d\x88\x5b\xdb\xbd\x81\x81\x27\xda\xd0\x5b\x5d\xa5\xfc\xda\xbd\xd1\xb1\x03\x31\xc5\x92\xad\x94\xc2\x16\x54\xb2\x50\x95\x89\x61\xca\xd2\x56\x19\x13\x8a\xc0\x7c\x4c\xb3\x6a\x2f\x25\x44\xed\xcc\xbd\xf1\x59\xce\x76\x96\x8f\x70\x43\x54\x12\x65\x98\x68\xc3\x91\xfe\x91\x81\xeb\xc6\x24\x6f\x6d\x36\xb4\xe6\x39\x9f\x4e\x71\x45\xe5\xce\xbc\x67\x6b\xc4\xa3\x3c\x56\xc1\x45\xb6\xf4\x81\x56\xd1\x3c\x26\x3b\x8a\xaa\xe8\x71\xac\x6a\xd3\x86\x98\xbe\x7c\x2c\x4a\x81\x30\xd9\x53\xd3\x3f\x20\xf4\x49\x1e\x6d\x55\x0c\xe0\x2d\x45\x49\xb8\x07\xf3\xc8\x6d\x22\x40\xa8\x08\xf6\xbe\x64\xab\x41\x9c\xad\xeb\xed\xf9\xb2\x16\x06\x53\xd2\xe5\x96\x14\x65\xb6\x85\x3a\x1e\x94\x39\x61\x41\xf4\x02\x06\xa5\x8a\x57\xa5\x16\xac\x0b\x25\x9e\x10\xce\x58\x5a\x3d\x53\x30\x1d\x24\x30\xcb\xf7\xfb\x52\xcd\x88\x6f\x7f\x54\x5c\x66\x82\x89\x64\x69\x94\xe3\xe5\xce\xff\xb5\xc8\x38\x8c\xb4\x21\x6b\x4c\xd0\x0d\x3d\x44\x5b\x39\x37\xfa\x89\x46\x31\xb9\x69\x47\xf7\xac\x38\x70\x41\x67\x64\x2f\x09\xed\x61\xef\x79\xfa\xc1\x18\x9e\x14\x64\x47\x36\x18\x58\x64\x50\xe3\x9c\x5c\x62\x30\x12\x68\x68\x4b\x36\xc4\x99\xe3\x80\xf5\x3d\xb6\x4e\xe2\x08\xb9\x93\x2d\xd9\x60\x8c\xc9\x5e\xd6\xe1\x79\x08\x7e\x4d\xcb\xe0\x32\xa3\xa7\xca\xc0\x76\x3f\x81\xaa\x1f\x8c\x49\x12\xde\x98\x98\x1e\x83\xa1\x4d\x26\x64\x46\x52\x1c\xdc\x28\xfd\x58\x0a\xd8\x10\x56\x4e\xed\x54\x39\x21\xce\x6c\xa1\x9d\xf7\x4f\x43\x8f\x28\xa3\x4c\xb0\x38\xb7\xb4\x52\xc3\xcd\x4b\x57\xbe\xb6\x40\x45\x0c\x77\x07\x15\x6a\x1b\xef\x60\xef\xee\xcc\x16\xc4\x47\x41\x91\x38\x03\xe3\xe2\x14\xc6\xb3\x0d\xea\xc0\x5c\xb4\x60\x9e\xd2\xad\x02\xf3\x9b\x4f\x83\x79\x8a\x8f\xa7\xd0\x9a\x1a\x68\x45\xe5\x27\x21\x3d\x25\x1b\xba\x86\xdc\xa0\x4c\x95\xed\x78\x9e\x0a\x7c\x84\x5c\xf4\xa1\x5e\x2e\x7d\xec\x4e\x6e\x34\xc8\x2d\x97\x3e\x0a\x03\xff\x72\xb9\xf4\x6b\xec\xe2\x89\x8b\xe4\xd3\x23\xac\x3c\x08\xe9\xa6\x3f\xb6\x62\x3a\xc5\x09\xdd\x44\x45\x4c\x9c\xcc\xf3\xb6\x0e\xa5\x89\x6f\x36\x4b\x5d\x83\xd8\x2a\x97\x17\xd2\xd5\xfa\x57\x9e\xe7\x54\x1a\xe6\xfd\x16\xe4\x71\x5d\x4b\x09\x05\xf2\x99\x4d\x24\x19\xfe\xcb\x4b\x57\x05\x00\x70\xba\x74\x40\x71\x06\x54\x0a\x32\x57\x6e\x8f\xa6\xcc\xa6\x0f\x3b\xd3\x29\xd9\x6b\x01\x4f\xee\x0b\xf5\xd4\x5a\x64\x61\xbc\x38\x78\x9e\xb3\xe9\x6c\x4f\xf7\xbe\x60\x49\x99\x16\x77\x5c\x66\x37\xcf\xa6\xc0\x0d\xd9\x19\x3c\xab\xb7\xd3\xca\xbe\xcf\x43\x42\x7c\x97\xc3\x1c\xd9\xcb\xc9\xc7\x5d\x84\xc9\xf4\x22\xe3\x17\x6b\x6c\x96\x53\x07\xa7\x65\x24\x9d\x48\xc0\x00\x40\x75\x66\x2a\x40\xb5\x6d\xe4\xb7\xc6\x9e\x67\x6c\xc5\x4d\x13\x27\x96\x59\xae\x82\x4f\x15\x72\x5a\xe3\x73\x2b\xe0\x2b\x1c\x21\x8d\x93\x2f\x1a\x65\x75\x5d\x00\xe6\x35\x71\x1e\x95\x7e\x0b\x4b\xa9\x5a\x02\x15\x27\x3b\xeb\x5b\xbb\x72\x90\xa1\x7d\xb3\x80\x37\x50\x11\x05\x73\xba\xa1\x99\xa4\x34\x05\x79\xe2\x50\x9a\x59\x67\x4b\xff\x3e\x78\x77\xb8\x46\x86\xdb\xc9\x09\x4d\x92\xa3\xdf\x76\x87\xbf\x3e\x1c\xfb\x7a\x1e\xda\xd1\xad\xd5\x26\xd9\xd2\x5d\x6b\xb9\xb7\xd3\xdb\x07\xc3\x89\x81\x55\x38\x70\xb1\xe7\x69\xdc\xc5\x29\xb7\x0c\xc7\x43\x1e\xa8\x3b\x7e\xd4\x72\x6e\x4f\xc3\xc8\x4b\x90\xc6\x84\xfb\x59\xf5\x5e\x75\x0d\x84\xfa\x6e\x02\xa8\x85\xbb\xed\xf4\x5f\x4a\x46\xad\xd7\xf0\x64\x03\xee\xfe\x70\x03\x06\xca\x46\xd7\x2f\x59\x75\xc8\x05\x15\x84\xfb\x22\x29\xb7\x4c\x40\x9c\x72\xf5\x48\x33\xb0\x8c\xd4\x42\x4a\xc4\xe3\xa0\x67\x7f\x49\x40\xf9\x75\x96\xf2\x25\x75\xed\xec\xcd\x9c\xd7\x75\xfb\xa8\x89\x7e\x46\x4a\x05\xf6\xea\x18\xc3\x49\x3c\xcf\xd9\xfb\xbc\x50\xae\xb2\x60\x9b\xdd\x86\x32\xcb\xb4\x3d\xf6\x9a\xf6\x71\x93\xa4\xbc\x66\x99\xd7\x93\xad\xdc\xcb\x39\xcd\xed\x4b\x4a\x16\xf9\x62\x90\xa2\xf1\x7e\x8e\xc9\x86\xe6\x8b\x0d\xa5\x14\x65\xc3\xdb\x57\x0a\xec\x79\x3a\xdf\xa6\x55\x4f\x64\xec\xae\xae\x37\xba\x2a\xd5\xb1\xba\x66\xb8\x49\x5b\xf3\x02\x94\xd3\x9b\x28\x9d\x4c\x62\x2c\xc1\xcf\x87\x30\xdd\xfb\x64\x0b\xb7\x4f\xbd\x13\xc5\x7e\xcf\x52\x84\xb1\xda\x01\x34\xbd\x9e\x87\x6b\x0b\xb9\xca\xb1\x54\x14\x19\x4a\x91\x77\xdb\x0f\xfc\xd3\x22\x55\x2c\xee\x68\x49\x4e\x5c\xb5\x71\x5d\x4c\xac\xc8\x38\x39\x29\x31\xa9\xe8\xc1\xf3\xf2\xe8\x10\xcb\x2f\x3d\x27\x9a\x1c\xb7\x59\xfb\x65\x74\x6c\x32\x0e\x97\x3c\x30\x2e\x9e\xab\x61\x2b\x0b\x68\xdd\xe7\x2d\x71\x50\x52\xd7\x72\x68\xfa\xf3\x0f\x2a\xb3\x1c\x98\x5c\xe2\x5f\xf4\x64\x49\x74\x67\x9e\xcd\x7a\xf7\x27\xd9\xac\x7e\x5d\xbb\xca\x4d\x9b\x52\xba\xed\x69\xd0\x33\xe2\x26\x72\xf0\x4e\xaf\xff\x99\x76\xb2\x72\x32\x80\xb3\x3e\x90\xe0\xe3\x86\x66\x72\xd4\x1b\xcf\x43\x59\xeb\xa6\x42\x4e\x99\xd2\xad\x8a\xca\x1e\x6d\x63\x64\x42\x06\xde\x82\x71\xf5\x30\xa3\xe8\xea\xda\x58\x91\x02\xd5\xb6\x69\x20\x06\x17\xb0\xb2\xfd\x9b\x08\xda\x3d\xb1\xc9\xee\xd1\x69\xf8\x39\xc9\x71\x1d\x46\x82\xd5\xe4\xdd\xfa\x2b\xe3\x83\x3e\x08\x30\x73\x4c\x0c\xd1\xea\x86\xdb\xae\xfd\x7a\x6c\xc0\xe0\x46\xdd\x8b\xc3\xba\x0d\xa3\xf6\x34\x54\xec\xac\xe5\x32\x3f\xd7\x7d\xaf\xeb\xde\xab\x75\x3e\xaf\x29\x13\x3e\x56\x6d\x73\x9a\xdf\xaa\xec\x5c\x24\x97\x7c\x7a\xbb\x0d\x0a\x5a\x45\x5c\x6f\x03\x76\x6e\x1b\x1c\x99\xbf\x3e\x94\x72\x2f\xe9\x8e\x15\x5a\x0a\xe8\xea\xc9\x68\xd1\x36\xa7\x6c\x4a\x74\x85\xaf\x76\x3b\x96\x66\x89\x60\xa3\x35\x23\x87\xf5\x50\x25\x04\xe9\xb7\xde\xf5\x8d\x4a\x16\xbf\xa0\xa2\x6a\xab\xa6\xde\xae\x7e\xa5\x99\x9c\xb6\x44\x24\x34\x53\x4e\x54\x25\x45\x68\x38\xdd\x59\xcb\x9a\xc4\xca\x81\x54\x15\xaf\xeb\xcc\xf4\x19\x6b\xc8\xd7\x03\x3b\x74\x1e\x73\xcc\xa0\xdd\x76\xdb\x41\x0c\xa2\xfe\xbe\x23\x2a\x4c\xa0\x35\x44\x84\xbb\xb8\x78\x6b\x7f\x5f\x54\xc2\x2c\x99\xe7\xf5\xdf\x7b\x4b\x48\x58\x07\xae\x66\x3a\xcf\x39\xd7\x74\xd0\xc9\xfb\xac\x0f\x98\xfb\x28\xb2\x00\xd0\xe5\x79\xb9\x6d\xd8\xe1\x30\xad\x90\x6d\xf7\xb3\x63\xe4\x3e\x13\xaa\xd5\x01\xd0\x1b\xa0\x63\x15\x0b\xd7\x18\xc2\xf4\xaa\xec\xc2\x6e\x80\x0b\xd1\x58\xc5\x40\x14\x0a\xd9\x5f\x09\x35\x87\xd6\x2f\x87\x2b\xfb\xb1\xac\xe5\xe4\xc0\x18\xa7\x88\xca\x98\x1a\x97\xc5\x32\x96\xdc\x82\x25\x39\x85\x2b\xa4\xee\x7a\xd2\x26\x35\x28\x07\x65\xc4\x4a\x9d\x80\xab\x4f\xca\x7d\x45\x72\xdc\xc6\x46\x06\x2a\xf5\xbc\x42\x11\x8b\x0c\x2f\x8a\x96\xfb\x53\xb7\xf0\xa0\xa3\x5c\xfc\x20\xef\x66\xbe\x68\x2c\x3c\xa2\xcd\x3c\x0f\x83\xec\xd0\x58\x5b\x82\x6b\xcf\xa1\x03\x6e\x30\x81\x88\x77\xf7\x27\x9e\x5d\x16\xdf\x61\x8e\xb5\xd8\xc2\x32\x15\xd4\x73\x46\x12\xca\x8c\xbd\xe0\x26\xbb\x57\x2a\x9c\x2c\x5e\x54\xc6\x5e\xc5\x4a\xa4\x15\x15\x9a\xb8\x66\xda\xf6\x0c\x94\x2b\xea\x30\x8a\x0d\x3e\x7d\x64\x0f\xfa\x94\xaa\x91\x5c\x43\x05\x3a\xb1\x2a\xd4\xf7\x06\x15\xfb\xca\x78\x51\xea\x57\x6d\x7e\x06\xcf\x84\x51\x9b\x53\x4a\x30\x11\xb4\xec\x0b\x07\x62\x3a\xc5\x9c\x96\x91\x88\x09\x9c\x7e\x24\x11\xb7\x42\x63\xb7\xac\x8b\x79\x94\x9c\x7f\xb9\xd6\x2e\xe8\x92\xa0\x93\x27\x4a\x11\x01\x5f\x6d\x30\x6b\x4b\xb4\x1f\x2d\x66\x81\x30\x7f\xc7\x44\xf2\x57\xf6\x40\x1d\xa7\x7d\x26\x72\x9a\x72\xc1\xca\xd0\x3c\x00\xfb\x1f\x30\x75\x58\x57\x05\x6e\x92\x8b\xbf\xb2\x87\x8b\x95\x0a\xfb\x71\xb1\x4e\xf8\x9a\xe5\x12\x96\x2f\xd6\xa2\xcc\xe5\xa7\x1e\xee\xbb\x80\x9d\xff\xc3\x4d\x52\xb1\x0b\xdd\xc6\x45\xc9\xf2\x44\xb0\x54\x67\x00\x36\x54\x26\xab\x3e\x5e\x88\x6c\xc7\xde\x89\x64\xb7\xbf\xb8\xcd\xd8\xdd\xc5\xdd\x4d\xb6\xbe\xe9\x07\x9b\xd5\xeb\x18\x1c\x1b\xd2\x2d\x8d\xee\xde\xfa\x26\x29\x2f\xe4\xbf\x67\x45\xca\x2e\x3e\xb2\x07\xf9\x27\x9f\x07\x55\xc8\xa1\x8d\xeb\x76\x4d\x64\x5f\x68\x18\x66\x11\x9e\xa8\x3a\x94\x13\xbe\xa9\x3c\xec\x1e\x03\xe1\xeb\x56\x30\x61\x4d\x43\x2c\x58\x32\xfd\x52\x28\xe4\x42\xfd\x54\x17\xeb\x3c\x63\x5c\xfc\xac\x7f\xff\x71\xb1\x29\x8b\x9d\x5e\xd2\x0b\xe5\xa2\xfe\xb3\xfe\xfd\xc7\xc5\x3e\xd9\xb2\x9f\xe1\xff\x3f\x2e\xaa\x75\xc9\x18\xff\x59\xff\xfe\xe3\x42\x14\xba\xd4\x1f\x0c\xcf\x42\x84\x12\x0d\x72\x8d\xd2\x00\x19\x5a\x6d\x2f\x06\x73\x00\x4d\x9b\x53\x5c\xee\xeb\x5e\xc3\x11\x70\x0b\x53\x43\x06\x93\x00\x6d\xe9\x87\x41\x06\x8c\xb5\x2a\xd2\x07\xa2\xeb\xec\x2a\x9b\x20\xb8\x7d\xaf\x82\x50\xc7\xdf\xb3\x8d\x50\x12\x6e\x2f\x61\x86\xa7\x2a\x97\x2a\x63\xe5\xb2\x13\x66\x58\xd7\xfe\x8f\xb6\xf6\x7f\xf4\x6a\x7f\x5f\xec\x7b\x95\xc3\xfb\xa0\xee\x2e\x8f\xf5\x3e\xc3\x98\x38\x92\xd4\x58\x70\xeb\x79\x07\x4d\xee\xac\x44\x7a\xb0\xb6\x22\x1c\xb3\xea\x09\x08\x0e\xb2\x73\x00\x48\x75\x5d\xa9\x28\xc4\x2d\x64\xcd\xbd\x2a\x9c\x07\x8f\xbd\x2a\x7c\x12\x7c\xe9\x55\xe1\xe3\x60\xa6\xe0\x48\x13\xe4\xe0\x98\x17\x49\x1a\x1c\x8d\x04\x01\x5e\xc0\x40\x31\x82\xe3\x89\xf0\x3a\x76\x28\xa9\x38\x2e\x7d\x2e\xe9\x79\x9d\x4e\xdc\xd8\x31\x0a\x15\x40\x59\xd9\x8d\x66\xeb\x8f\xe6\x2e\x42\x15\x2f\x08\x14\x5c\x92\xc4\x82\x46\x79\xb4\x4d\xed\x9b\x0a\x61\xb8\x12\xb8\xb3\xa4\x8d\x89\xad\x70\xaf\x2c\x89\xc1\x8b\xd0\x32\xc1\x86\x54\xa8\xbf\x8b\x6d\xdd\x80\xb3\x4f\xa7\xa3\x71\xb5\x4e\xdb\x6d\xc8\x2a\x3f\x94\x9f\x1a\xb1\x8e\xcc\x38\xde\x03\x59\x58\x0f\x4b\x3e\xb6\xa3\x1a\x6b\xad\x38\x08\xd9\x1c\xdb\x14\x25\x3b\x70\x35\xf9\x36\x0f\xd2\xe7\x88\x35\x0b\xd2\x32\x40\x92\x79\xca\x78\x92\xbf\xd0\x7a\x0b\xd9\x37\x75\x02\x6c\xb2\xe2\x46\x2e\x6e\xb6\x3b\xe4\xbd\x28\xa7\x5a\xff\x66\xce\x58\x5b\xed\xaa\x45\x40\x08\x27\x4a\xd7\xca\x48\x56\xbd\xd3\x35\x28\xa7\x72\xbb\xd5\xe0\xd8\x34\x78\x51\x86\x03\xa6\x1f\x65\x8a\xcc\x0b\x7c\xaa\xaf\xd6\x97\x4e\x64\x98\x64\xa3\x32\xd0\x98\xfc\x04\x87\xa4\x96\x5e\x87\x8e\x5e\xf2\x1a\x0e\x4f\x5c\x47\xef\x76\xf5\xbc\xf1\x2b\x5f\xc1\x4f\x7c\xde\xbb\xf1\xc3\xba\xa6\x41\xc5\xa3\x12\x8b\xde\x1d\xaf\x9e\xd7\xda\x9c\x29\xbe\x28\x93\xeb\x22\x1f\x95\xcc\xd4\xbf\x10\x16\x6c\x58\xe4\x40\xd4\x10\x46\x4f\x7a\x24\xd8\xf4\x6e\x42\x55\x99\x43\x04\x21\x3c\x45\x77\x7b\x67\x6f\x15\xcc\xdd\x9d\x20\x60\x6a\x26\x05\x12\x4e\xe7\x97\xb6\xb6\x02\x6d\x92\xe4\xed\x6d\xe0\x51\x22\x25\x1c\x84\xfd\xd0\x5b\x07\x6d\x5c\xf2\xc3\x60\x71\xc2\x4c\x04\x85\xd0\xbc\x88\xea\x02\xe1\x4a\xbf\x0e\x50\xa5\xb8\x3e\x6d\xf2\xdc\x12\x5d\xaa\x46\x64\x5e\xa5\x18\xca\x8b\x3b\x1d\x49\xd9\xe2\xc4\x20\x98\x1c\xee\x69\x81\xc0\xe1\xd1\xcc\xa3\x7d\xa5\xee\xe9\x70\x83\x42\x90\x31\xe1\x49\xa5\x7f\x42\x06\x92\x19\xfa\x50\x78\x1a\xc9\xf7\x74\x21\x16\xe7\x66\x3d\x13\x84\x8d\x48\x28\xe1\xa9\xc8\x12\xf4\x17\x43\x42\x24\x19\xc8\x30\xff\x4a\x4f\x4e\x47\xd6\xf5\x65\x50\xad\x09\xaa\xde\x93\x96\x08\xf3\x15\xe7\xa5\x28\x02\x05\xbf\x73\x99\x6b\x6c\xee\x82\xa1\x55\xeb\x27\xa7\x58\x76\x44\xd9\xbe\x0e\x1b\xed\x6c\x22\x8e\xc0\xe1\xc8\x39\x2c\x03\x17\x9e\x8b\x5b\x56\xba\x8a\xf1\xc9\x59\x72\xcb\x4c\x32\x60\xd2\xe1\x29\xff\x40\xba\x8f\xe9\xb1\x87\x84\x05\x31\x9a\xa3\x40\x68\x51\x61\xcc\xcc\x5f\xc9\xfb\x19\x1d\xd0\x60\xb8\xb5\xa5\x15\x78\x17\xff\x4b\x5f\x72\xe1\x64\x75\x9d\xa9\x70\xed\xce\x0a\x6c\x44\x92\x8c\x57\xa8\x24\x99\x96\x91\x01\x56\x8b\x56\xf4\x25\xbc\x13\xd1\xc7\x23\x33\x13\x5d\x46\x28\xf3\xde\x9e\xf9\x01\x84\xd5\xd3\xa1\xf1\x94\x6d\x86\x3d\x64\xfd\x9d\x1e\xe1\xf8\xe9\x73\x68\xb7\x0a\x84\x19\x3a\xf3\xa0\xad\x2b\x49\xf5\x1e\x56\xc2\xa3\xff\x8b\xaa\x54\xf2\xbb\xfb\x92\x55\x95\x49\x70\xc9\x98\x35\x9d\x62\x51\xc0\x67\xa0\xb3\xc6\x6e\x79\x04\xb5\xed\xbb\x64\xc5\x2d\x82\x0a\x5b\xf6\x24\x10\x8b\xd2\x0a\x31\x51\x12\xb7\x37\x60\x70\x08\xb3\xbb\xd9\x66\x18\xef\x13\x33\xc9\xbf\xac\x0c\x34\xc3\x6c\x9e\xa9\x1d\x6e\x8f\xd6\xe1\x18\x3e\x41\x95\xfb\x75\x76\x87\x02\xc3\x2f\x0a\xd8\x6d\x6b\x09\x50\xc4\xbc\x6f\xef\xad\x34\x6b\xa7\xa9\x2d\x72\xcd\x18\x06\x05\x09\x53\x3d\x23\xe6\x34\xe4\xbf\xb9\xb0\xfa\xa4\x43\x7d\x6f\x67\x0c\xc6\xdb\xf4\x6d\x2e\x12\xbe\x65\xe7\x81\x4c\x7d\x3f\x0f\x64\xff\xa5\xa4\xdc\x9e\x4b\x08\x0e\x11\x1a\x67\x0f\xeb\xda\xb2\x07\x36\x89\xc3\x85\x56\x7d\x96\x22\x0f\x2b\xc5\x83\xea\x80\xff\x8b\xb9\x5f\xc5\x5e\x9f\x36\x20\x27\x30\xcc\x7d\x96\xc9\x94\x57\x9e\x50\xaa\x83\xbf\xfc\x7a\xa8\x84\xae\x29\x05\x74\xd7\xe9\x3e\x4f\x76\xc2\x58\x83\xa7\xb5\x0c\x17\x7a\xb4\xa1\x79\xd7\x4c\x07\x00\xa6\x7e\xad\x22\x84\xde\x28\x7e\x72\x64\x36\x14\x1b\x09\x2c\x69\x22\xce\xcc\x86\xb1\xed\xd1\x5a\x28\xb3\x32\xb6\x39\x6a\xbb\xdb\x04\x71\x7b\x2b\x7f\xb2\xdb\xda\x0c\xe3\x6d\x39\x03\xb0\x95\x3c\x85\xc5\x4b\xaa\xd7\xf7\xe6\x6c\xe3\xd3\x83\x3f\x81\x7e\x6b\xdf\x9e\xf4\xd3\xde\xb7\xe7\xb0\x7a\x37\x07\x16\xe7\xe5\x80\xf9\xe2\xa7\x7a\xa9\x41\x13\x1c\x52\x94\x2c\xd3\x01\x71\x9b\x18\x5a\x64\xe1\xd3\x98\x5d\x8a\x05\x9f\xdc\xc4\xa3\x1b\x55\x4f\x0c\x26\xce\xe8\xce\xea\x6f\x5e\x2d\xd5\xb4\xbb\xd7\x10\x56\x25\x62\xb5\x42\x8f\x92\x79\x6c\xa9\x64\xcc\xc9\x65\x46\xca\x9e\x05\xcb\xc9\xa2\x09\xd2\x62\xfc\xbe\xfa\x1e\xd6\x6c\x31\xa4\xc8\x22\x1e\xc1\x1a\x33\x4a\x29\x9f\x4c\x3c\x6f\xe4\x6a\x26\xa6\x0e\x63\xc7\x67\x4d\x16\x9c\x4e\xb9\x2c\x38\xc6\xe0\x9b\xb2\x27\x71\x32\x7a\x57\x00\x1b\xaf\x60\x7d\x03\x00\xa9\xfa\xb7\x7c\xb5\x97\xaa\x1e\x4f\xef\xe6\xf4\x3c\x54\x82\xfd\x28\xe1\x54\xa8\xd0\x64\x89\x8a\x18\xa3\xf8\x33\x8e\x12\xa8\x9d\x45\x49\x4c\x8a\xde\x65\xe5\x8d\xbe\xd6\x1a\xd8\x06\xf5\x90\xc1\x75\x9e\xa4\xa4\xb2\x32\xed\x59\x06\xe1\x4e\x4e\xdd\xd0\x50\x06\x56\x4c\x02\x07\xfa\x49\xf5\x00\x93\x4c\x5d\x8e\x98\xd1\x42\xb4\x77\x60\x39\x99\xed\x9d\x6c\x3a\x01\x61\x9d\xc0\xd5\x25\xb3\x6f\x5e\xb3\xae\x8c\x47\xea\x0e\x65\x86\xc9\x99\x0b\x24\xda\x0b\xd7\x2a\x63\x59\x52\x0d\xac\xa6\x46\xdd\x1e\x3b\x28\x6a\x51\x19\x23\x19\x58\xfc\x37\xb8\x21\x05\x1f\x13\x5c\x6d\xe1\xde\x32\x28\x91\xcc\x72\xb1\xd9\x9c\xf3\x6a\xd0\x6e\x0c\x43\xa6\x1b\x4c\xf0\xcd\x86\xed\x5c\x36\xad\x44\xb2\x42\xc3\x43\x20\x35\x1b\xd6\x09\x48\xd8\x9d\x66\x4c\x5c\xdf\x9d\x58\x9f\x82\xee\x13\xe9\x14\xea\xa4\x3b\xe5\x80\x79\x39\x07\x68\xa0\xa0\xb7\xe1\x68\xb3\x41\x05\xe1\xa4\x77\xc5\x20\x00\x91\xb9\x66\x4d\x8b\x70\xe7\xc2\x1a\x1a\xf8\xd0\x77\x67\x42\x4a\x21\xfe\x60\x71\x6c\x1c\xc4\xda\xd5\x91\xfc\xf3\x59\x73\xfe\x76\x71\x94\x2e\x00\xa4\xb6\x03\x3f\x29\x32\x28\x20\x61\xcc\x68\x0f\x3a\xa5\xc9\x1f\xc3\x00\xdc\x63\x09\x77\x30\x1f\xf8\x99\x52\x6d\x99\xf9\x88\x77\x7f\x68\x35\xef\x5e\x5e\xba\x5a\xa0\x95\x09\x82\x48\xae\xe4\xf2\xd2\x85\x21\x9c\xe8\x85\x4e\xc6\x70\x6e\x0e\x8d\x76\x84\x69\x17\x7f\x98\x42\x9d\xf8\x9d\xb6\x5f\x1b\xb3\xc3\x37\x2e\xc6\xc6\xf2\xfe\x44\xdd\xc2\x8c\x95\x0a\x18\x7e\x8e\xa1\x6e\xfb\xde\xae\x31\x2b\x49\x72\x4f\xdd\x2a\xfb\xfd\xf7\x9c\xb9\x93\xa9\xb9\xa7\x8f\xdc\x51\xd6\x6a\x58\xc9\x7b\x7a\x6c\xc8\x1b\x3a\x23\xcf\xe8\x8c\x7c\xa4\x99\x40\x98\xbc\x50\x3f\xef\xd4\xcf\xd3\xd6\xfb\x9e\xfc\x4a\xe7\xdf\x7c\xf3\x64\x4e\x9e\xd3\x28\x26\xdf\xd3\xe7\xfe\xbe\xd8\x93\xef\xe4\xef\xa1\xba\x21\xbf\xd1\xe7\xea\x3c\x86\xbc\xa6\xcf\x8d\x1d\x48\xff\x1e\xf5\xee\x42\x92\x13\xd7\x6f\xae\xaf\xe1\xd0\xba\x40\x49\x45\xac\xab\x47\x0d\x45\x9f\xce\x1b\xf2\x0b\x75\xa3\xe5\xf2\xfe\xf1\x6c\xb9\x14\xcb\x65\xb9\x5c\xf2\xe5\x72\x13\xbb\xe4\x25\x75\x51\x18\x2c\x97\xcb\xa5\x5f\x47\xcb\xe5\xdd\x34\xae\xa3\x0f\xcb\xe5\xfd\x6c\x36\x5d\x2e\xef\x93\x59\x8c\x27\x2e\x79\x4b\x5f\x76\x21\x0c\xee\x5c\xe2\xde\xfd\xc9\xc5\xe4\x5b\xea\xa2\xe8\xf2\xc3\xa3\xda\xf9\x67\x1c\x52\xec\x92\x1f\xa8\xbb\x5c\x46\xee\xe4\x97\x89\x7b\x89\xdc\xc9\xcb\x89\x8b\xf5\x4b\x18\xb8\x93\x6f\xcd\x23\x8a\xbe\x58\xba\x31\x46\x5d\xbb\x1f\xe4\x6f\x8c\x2f\x43\xbc\x5c\x3e\xa9\x91\x3b\x79\x3b\x71\x71\x8d\x6b\x5d\x7c\xb9\x8c\x5d\xf2\x23\x75\x03\x5d\x29\x14\x44\xe8\x0f\xeb\x19\x7c\x40\x38\x5a\x2e\xe3\xb8\x76\x27\x3f\xb4\xa3\x79\x42\xfe\x1d\x4f\x5c\x7c\x89\x6b\xff\x12\x2f\x97\xb2\x49\xf2\x13\x35\x16\x30\x1f\xa0\xfd\x09\xd4\xf4\xa1\xad\xde\x54\x8b\x2f\x55\xff\x26\x8f\x5c\xe2\x6e\x5d\x4c\x1e\x0d\x0a\x5e\x12\xf5\xe3\x62\xf2\x6a\xf8\x09\x9d\xae\xc6\xf5\xe4\x9f\x31\x6e\x4b\xfc\x6e\x4a\xfc\x88\xc9\xcf\x76\xe9\xb7\x13\xf7\x91\x8b\xc9\xdf\xe9\xf1\xd5\xf3\xa0\x4d\xff\x93\x99\x70\x4c\x9e\x7d\xff\xf4\xdd\xbb\xee\xcb\x72\xe9\x77\xdf\xde\x3c\x7d\xfd\xc2\xfe\x14\x49\xcc\x4c\x61\x22\x43\x9d\x4b\xbd\xc8\x39\xc7\xe4\xfd\xd3\xbf\x74\xb9\xe5\xf7\x01\x18\x5c\xba\x58\xd5\xfb\xf4\xfd\xfb\x1f\x03\xab\x93\x3f\x60\xf2\xc3\xbb\x17\x7f\x7f\xfe\xd6\x4e\xfc\x11\x93\x67\xdf\xbd\xfa\xde\xea\x75\x80\x20\xb2\x0f\xc4\x15\xae\xf3\xa4\x12\x35\x17\x37\xf2\x6f\x2a\x5f\xf0\x14\xc1\x4d\xe8\x75\xb1\x99\x82\xe8\xa3\x16\x5e\x4f\xa0\xdc\xf7\x75\x91\xa6\x35\x42\xd1\x64\x1a\xd7\x18\x2d\x97\xe9\x25\xe6\x75\x07\x74\xfa\x83\x7e\x5f\x2e\xd3\x09\xae\x71\x0b\x54\xb0\xd8\x6e\xe6\xe2\xbe\x41\xec\x60\xa1\x22\xb9\x2c\x75\xd0\x35\xc7\x7e\xab\xb7\xa2\xce\x55\x57\xbb\x9e\xf7\x3b\x87\xc2\x60\xba\x5c\xa6\x38\x84\x3e\x59\x2d\xa2\x90\x46\x1f\xa6\x71\xfd\x48\xb7\xdd\x90\xff\xa4\x57\x11\x80\x02\x44\x67\x5a\x6e\xe2\xcb\x68\xf2\xcf\xf8\x0a\x82\x2d\x45\x1f\x8e\xf1\x64\x79\x5c\x56\x97\x72\xa5\x44\x76\xcb\x2e\xd6\x45\xca\xae\x4c\xdc\xa5\x3f\xa1\x48\x6e\xd9\x09\xae\xd1\xf2\x6e\x82\xeb\xa5\x6f\x12\xf0\xa3\x2b\x13\x1c\xe9\x53\xd1\x9d\x74\xa0\xa4\xab\x0f\x37\xcb\x54\x3e\xfe\x95\x5e\x7d\x51\x2f\x97\x57\x5b\xf2\x5f\xf4\x6a\x49\x07\x1d\x43\xd1\x87\x2f\xdc\x65\x1c\x5f\xe2\xc1\x87\x65\x7c\xb5\x05\xeb\xf9\xe5\x12\x45\xcb\x34\x99\x6e\x9e\x4e\x5f\xc6\xc7\x39\xf9\x73\xd3\xcf\x19\xd6\x3e\xbe\xda\x12\xd1\x53\xfa\xb6\x4c\xb5\x3b\xbb\x77\x27\x62\xfa\xe7\xaf\xbe\x7a\xf2\xe7\xf6\x5c\x4c\x0a\x13\xa1\x08\x66\xd7\x3c\x54\xd7\x65\xc2\xe9\xd9\x33\x7d\x0e\x88\xf8\x04\xb2\xe3\x60\xec\xe3\x57\x5f\x3d\xfe\xfa\xcf\x35\xbf\xbe\x9e\xcf\xc8\x57\x7f\x7e\xf2\x78\x56\xcf\x67\x8f\x9f\x78\x1c\x37\x60\xb1\xf3\x9b\x52\xc1\xdf\x0d\xcf\xce\xac\x0b\xf8\xc9\x0c\x47\xb3\x2e\x98\x86\x09\x6e\x24\xf0\xf1\x37\x3a\x12\x59\x80\xb6\x91\x4b\x94\x6d\x4c\xc4\x26\x93\x18\x73\xe3\x3d\xdf\x0e\xca\x8a\x50\x5c\x0a\x8b\xb7\x34\x5e\x91\x13\xd7\xc5\x4d\xdf\x47\x00\xf4\x9b\x44\xd0\xee\xc6\x6c\xcb\x86\xbe\xc7\x06\xe8\xfb\x13\x27\x14\x42\xd0\x64\x2a\x26\xed\xf7\xda\x90\xc0\xa8\x64\x22\x61\xac\x11\xf5\x19\x78\xd9\xf4\xbc\x0f\x2c\x37\x9d\xe8\x1e\x74\xcf\xac\xfb\x9e\x88\x8e\x30\xed\xc7\xaf\x50\xb2\x0e\x9e\xe0\x0a\xd4\x36\x2a\x54\xeb\xd4\xb0\xc9\x78\x92\xe7\x0f\x47\xa1\x8d\xa3\xdb\xda\xe5\x04\xf4\xce\x65\x2c\x72\xbd\x01\x32\x7d\x2b\x39\x44\x24\xc2\x93\xa3\x50\x11\xdc\x61\x87\xd2\xbd\xe7\xad\x75\xb8\xe4\xba\xde\x13\x2e\x85\xd9\x28\x26\x0e\xeb\x02\x17\x75\xd1\xd9\xda\x9b\xba\x65\xa5\x73\xe5\x4f\xdf\x1d\xea\x63\x15\xcc\xd6\xb8\xf7\x2a\xcb\x51\x27\xf5\x3c\x47\xc5\x05\xcd\xe8\x7f\x28\xdb\x69\x86\x25\x19\x4e\x68\x16\xcd\x55\x44\xe8\xaf\xa9\x2c\x26\x9f\x0a\x2a\xac\x1b\x16\xbe\x7d\x78\x05\x17\x99\x38\x45\x5d\x3b\x85\x6d\x20\x60\x77\xa4\xf0\xb3\x54\xf2\x66\x6d\xa2\x5a\xd5\x02\x13\xde\x5e\x94\x3c\x18\x3e\x04\x30\x19\xa4\x9d\xb6\x8b\x3d\xef\x01\x2e\xd0\x93\xd2\xe1\xa7\xdb\x80\xf1\x45\x8f\x5b\x1b\x90\xef\xcc\xa5\xd3\x44\xef\x1c\x31\x7e\x71\x04\xc3\x64\x86\x31\x81\x71\xc0\x8c\x3c\x89\xb1\xe7\xbd\x97\x99\xbf\x7d\x78\xd6\x45\xdc\x19\x14\x6f\xbf\x7c\x6e\x7b\x6d\x01\x39\x9d\xd0\xa2\x94\x1e\xdf\xfb\xbf\x55\x89\xe7\x39\x37\x7a\x2f\x29\x93\xd0\x8d\x04\xe1\x2d\xbd\x27\x3b\x2a\xc8\x2d\x85\xc5\xf1\x3c\x06\x51\x7c\x2b\xcf\x33\xe2\x86\x43\xa9\x38\x13\x2b\x05\x1f\x73\xba\x91\xf5\x11\xb4\x51\x0b\x6a\x79\x47\x65\xa9\x8b\x71\xb8\xa5\x9b\x96\x42\xfe\x95\xb8\xcb\xe5\x23\x4f\x72\xcf\x03\xe7\xfc\x2c\x75\xc9\x16\x93\x2d\x75\xa3\x2c\xa5\x5f\xb8\x93\xed\xc4\xfd\x22\xbe\x70\xc9\x81\xe6\x7d\x3b\x95\xc3\x74\x8a\xf3\xe8\x10\xd3\xed\x24\x15\x48\x3e\xe1\xc5\x8e\x1a\x77\x6a\xdc\xf7\x32\xab\x6b\x39\xb0\x5c\x1b\xeb\x12\x17\x37\xe0\xe4\x63\x6d\xc4\x93\xf9\xdc\xf9\xbf\x1d\x58\xf9\xf0\x4e\xcb\x61\x4f\xf3\x1c\xdd\x9a\x99\x54\x1b\x76\x85\x8f\xed\x46\xdd\xd4\xb5\x38\x89\x7b\x00\x23\x6f\x1a\x63\x84\x74\x27\xe0\x80\x5e\x4d\xc1\x4f\xc4\x7d\x34\x77\xb1\xde\xcb\x4d\x42\x2b\xa1\x5c\xe2\x4f\x51\x27\x55\x07\x31\x83\xed\xcc\xf0\x10\x35\xb7\x52\x5e\xe8\x7e\xf7\xfe\xf5\xf7\xfd\xf5\x82\x3b\x9b\xd6\xb2\x95\x8a\x09\x53\xcb\x49\x5b\x9c\xb2\xf0\xb4\xa5\xe0\xce\xa6\x38\x7b\xcf\xfb\x7a\x10\x2f\x8c\x0f\xbb\x12\xa2\x3d\xe5\x64\x43\x4f\x3e\x90\x94\x26\x88\x63\xf2\xde\x17\x6a\x43\xbc\x29\x9e\x15\x3b\x80\x59\x9a\x08\x34\xea\x09\xd9\xbb\xdc\x45\x63\x54\x5d\x08\xb9\xae\x32\x86\x38\x7b\x3b\x9c\x06\x9a\x46\x36\xd9\x85\xcc\x19\xb6\xc5\x7a\x37\x3b\x28\x7e\xe0\xfa\x9b\x2b\xfd\xe0\xea\xd8\xdc\x6d\xe8\x90\xee\x8a\xa4\x3e\xa4\x9b\xe8\x8c\x6d\x08\x80\xd6\xa7\x5e\x1d\xc7\x5b\xf7\xf4\x0a\xe8\x51\x7f\xd7\x9f\x9d\x81\xc1\xb5\x13\x17\x10\x5a\x82\x7e\xa1\x02\x43\x5e\xb0\x2f\xf4\x3d\x14\xa7\xdf\xbe\x68\x6f\xa8\x60\x67\xd0\x83\x3e\xae\x1d\x43\x1c\x2e\x6b\xa7\x2f\x44\xf6\xa0\xbb\xd8\x5e\x2e\x73\xc9\x63\xe3\x10\xf9\x07\x75\xe0\x00\x6e\x81\xd2\x83\x1e\x1b\x2f\x93\x38\xf7\x7e\x32\x23\xfd\x11\x27\x17\xc0\x89\x7f\xe1\x4e\xee\x27\xae\x1c\x51\xa2\x46\x3a\x48\x55\xe3\xdc\xf8\x19\xaf\x58\x29\xbe\x05\x3d\x37\x62\x64\x63\x5d\xcd\x81\xf5\x42\xf2\x7e\x77\xd5\x3c\x8c\x24\xa2\x7b\xd3\x79\x4a\xe9\xe3\xc9\x68\x8e\xc9\xcc\xe4\x31\x9b\x04\x46\xf8\x2a\x7d\x53\x08\x18\xa4\xc3\x87\x84\xe6\x1e\x93\x4d\xef\x02\x0f\x86\x89\x84\x87\x4c\xb9\x07\x2b\x1f\xc0\xcf\x81\x05\x73\x85\xe2\x9f\xd4\xac\xc8\x55\xee\x06\xeb\x79\x2d\xbc\x5a\x97\x93\x0c\xa2\xde\x3c\xf5\x3c\xf7\x4f\xea\xd4\xe3\x4c\x26\x73\x05\x5f\x83\xc3\x63\x13\x1c\xe5\xcb\x67\x78\x41\x6b\xbf\xea\xc7\xb8\x81\x1b\x5e\x3e\xa7\x84\xf2\x5b\x69\x1a\xd2\x9f\xbf\x10\x65\x60\x19\xea\xbf\x7a\x4e\x4f\x62\xc5\x18\x4d\xc2\x60\x86\xd5\xc0\x9c\xb4\x0d\x02\x38\x5c\x01\xd6\x8f\xd1\xd1\x11\x0a\x70\xbe\x88\xe2\xa6\x21\x99\xb6\x38\xec\xb7\xdb\x1d\x8e\x18\x44\xce\x04\x11\x1d\xf7\xfa\x19\xe3\xb4\x62\xf1\x07\xe3\x63\xe3\xf6\xd8\x86\xd0\xd3\x1f\x5b\x49\x4f\xa0\xab\x1b\x5b\x19\x96\x8a\x8b\x91\xf4\x4f\x87\xf4\x38\x89\x94\xa0\xea\x3b\x4d\x57\x1d\xd5\xf1\x0f\x28\x65\x61\x54\xc6\x81\xf8\x9f\x9a\x9b\x7e\x70\xc6\x33\x9d\x1a\x8b\xb2\x22\x3b\xd5\x5b\x3b\xd3\x41\xd0\x69\xe9\xe9\x7c\xff\xf4\x2f\x74\x84\xc2\x84\xe3\xd6\x34\xa7\xf3\xdc\xd1\x10\xd9\x91\x70\xfc\x13\x62\x38\x10\xcd\x78\x88\x26\x1a\xc5\x26\x4a\xd3\xb9\xb2\xa0\xc8\xbd\x84\xad\x87\x8f\x83\x40\x4d\xc3\x78\x9c\xa5\xb9\xf6\xbd\x5d\x59\xc3\x53\x14\x8d\x19\xf3\x9b\xa7\xaf\x5f\x50\x0b\xb9\x7a\xde\xbf\x30\xda\x73\x43\x55\x27\xee\x92\xed\x0c\x44\xdb\x12\x28\x51\xe8\x29\xcb\xfa\x2f\xb4\xd7\x91\x3c\x4a\x9f\xd6\x75\x1a\x8a\xe0\x5c\x0e\xb8\x0d\x64\x0b\xae\xb3\x34\x72\x95\x4f\xb9\x1b\x13\xc5\xca\xd2\x52\x20\x7e\xc2\xa8\xa9\x3b\x58\x3e\x87\xc2\xab\x70\x6b\x17\x6d\x10\x84\x2f\x24\x22\x55\x89\x16\xf9\x27\xec\x94\x17\x74\x23\x53\x28\x6e\x29\x5c\x5d\x6b\x5f\x26\x4b\xd7\xd7\x05\x60\x6e\xe3\x39\x67\xd5\x2e\xb1\x22\x39\xb7\x41\x9c\xdb\x08\xd1\x00\xd2\x18\x42\x69\x9d\xb6\x6b\xea\x1b\x69\xb5\xfb\xd4\x60\xf2\xc9\xf1\xdb\x37\xed\x6a\x4e\xe1\x22\xa3\x5f\xc0\x65\xbb\xa3\x83\xcd\x3e\xd0\x2f\xbe\xe8\x46\xda\x7a\x6d\xb9\xd1\xe5\x87\x47\x31\x6d\x07\xbb\x74\x97\x6e\xfd\xc5\x17\x67\x3b\xcf\xb8\x0e\xc8\x77\xda\x79\xf3\x89\xb8\x41\x17\xb7\x6f\xb4\x96\x4b\x12\xdc\xbb\x98\x98\x92\xc4\xbf\x0c\x5c\x38\xf3\x46\xef\x95\x5f\x2f\xab\x4c\x7e\x09\x20\x3b\xba\x19\x26\xd7\xf5\xc6\xdf\x15\xbf\xbf\x3e\x4d\x55\x37\xd9\x8d\x7c\x28\x46\xd2\x76\xd5\x20\x51\x42\xde\x60\xe2\xdf\xfb\x69\x56\xad\x0b\xce\x61\x6d\x21\x3f\xdd\x19\xcf\x54\x7d\x41\x62\xf7\x1e\x55\x8e\x9c\x68\x18\xdf\x56\x8f\xcf\xa1\x2e\xf9\x51\x2e\xe9\x8d\xd1\x75\x1a\xb7\xdf\x5a\x72\xbf\x5b\x93\xba\xb5\x53\x1f\xe4\xc8\x37\xad\x65\x11\x96\xdd\x85\xab\x64\xcb\xf6\x26\x51\x73\xa5\x5d\x38\xa6\x6f\xfa\xba\x17\x49\x2e\x64\x43\x46\x3e\x60\xa4\x54\x21\xe8\x4e\x23\x80\x30\x15\x21\xc7\x41\x4e\x59\xd7\x70\x15\x78\x5b\x91\x4c\xe5\x6d\xaf\x42\x6e\x99\x3e\xe1\x80\x9d\xeb\xa1\xe7\xcd\xff\xec\x9d\xfd\x8a\x4a\x8c\xf1\x10\x11\x4b\x02\x8a\x5b\x75\x93\xad\x49\x80\x50\x8e\xdd\x51\x40\x3f\x84\x2b\xfd\x57\x66\xa9\xb4\x07\x2c\x42\x74\x90\x72\xf4\x0c\x07\xa8\x84\xab\xac\xce\x0c\xe5\x13\xa3\x3c\x3f\x44\x81\x71\x38\xf7\xca\xba\x66\x3d\xdb\xa0\xb9\x0a\xf8\x67\x85\x53\xe9\x56\x4c\x85\x59\x7a\x40\x77\x84\xe1\x70\x3a\x0f\x44\x97\x20\x70\x38\x0f\x66\xc1\x97\x5e\x29\x3f\xcc\xcf\x4f\x3c\x7c\x1e\xa3\x71\x26\x08\xa1\xdd\x36\x49\x7a\x13\x4d\x2a\x1a\xb1\x98\xe4\x34\x12\x71\x77\x6f\x90\x89\xc7\x0f\x53\x05\xfa\xa2\xa2\xae\x9d\x56\xcd\x02\xbd\x6e\x7b\x1b\xce\x83\x42\xbe\x24\xb2\xbb\xa0\xf9\xb1\x55\x32\x07\xd0\x85\xe1\x45\x49\x99\xd6\x09\x94\xb4\xb4\x57\xba\x6a\x6f\xfa\x28\x65\x2e\x31\x9e\x2b\xb7\x73\xe9\x8b\x07\xa2\x2c\xa6\x94\xe6\x51\x16\xe3\x6c\x32\x69\x23\x49\x85\x07\x01\xdf\x08\x7c\x09\x74\xb6\x3b\xd9\xc5\xdc\x3c\xcf\x83\x59\x43\x0e\xd4\x99\x93\x68\x46\x66\xb1\xf2\x66\xbe\x95\x72\x4f\xca\x04\x5b\x8b\xe7\x87\x7d\x9e\xad\x13\x29\x84\x1e\xc8\x1e\x07\xfb\x86\x54\xc2\xe0\x27\x3a\x7a\x5c\x08\x4a\x3f\xe5\x46\x6c\x4e\x3c\xbb\x22\x2d\xa6\x3b\x81\xff\x31\x9d\x81\x51\x00\x32\x50\x00\xb6\x8c\xda\x7f\x11\x97\x7e\xf1\x68\x2e\x31\x3c\x71\x90\x73\x82\x46\xeb\x3a\xad\xeb\xad\xe7\x6d\xb5\x29\x09\x96\x78\x5b\x3f\x62\x50\xa3\x28\xac\xd1\x22\x32\xa1\xbc\x59\xeb\x7a\x04\xfd\x49\x20\x4e\x5b\xbd\xdc\x5c\xdd\x8f\x65\x12\x86\x17\x63\x5d\x18\x6d\x4b\x89\x8f\x4d\x37\x1f\x82\xec\xb5\x8f\x18\x6b\x7d\xc4\xae\x67\x30\x2f\x06\xa3\x8c\xce\xe5\x1f\xcc\xc9\x83\xbe\x2f\xac\x12\x20\x8a\x8d\x69\xe2\x17\x9f\x55\x51\x5a\xd7\x80\x77\xfa\x5a\x32\x82\x38\xb5\x85\xbc\x48\xc4\x38\x94\x54\x22\x48\xe5\x4c\x75\xfa\x89\x70\x18\x54\x0a\x07\x08\x8d\x86\x1d\x14\x18\x6b\x33\x6c\x3b\x37\xf6\x3c\xa6\x4e\x3c\x9d\x99\xe4\xad\xfa\x81\x08\x35\xd3\x0c\xe6\x22\x30\x56\x56\x96\x45\xdf\x66\x47\xdc\x94\xc5\xdd\xc5\x0b\x99\x8e\xdc\x77\x0f\x5c\x24\xf7\x17\x90\x8b\x5c\x1c\x78\xc9\xd6\xc5\x96\x67\xbf\xb3\xf4\x82\xdd\x83\x75\x67\x56\xf0\xe0\xc2\x9d\x30\x35\x75\x07\x9e\xfd\x76\x60\xef\x8a\xf2\x54\xc1\xa4\xce\x01\x48\x49\xe7\x12\x81\x80\x83\x23\x75\x4e\xb7\x06\x61\xed\xbe\x39\x28\xdb\x86\x85\x80\xb8\xa3\x70\x67\x1f\xa0\xef\xa8\x9c\xce\x63\x7d\xeb\x8f\xb9\x9b\xc8\x44\x9f\x9f\x4e\x31\x33\xa1\x26\xb8\xdc\xaf\xf3\xd6\x13\x90\x35\x5d\x7c\x21\x8d\x40\x8c\x30\xe2\x79\x92\xa6\x71\xcf\x43\xff\x14\x7e\x55\x1c\xca\x35\x83\xa0\x54\x75\xfd\x2b\x9e\xa2\x7f\xb2\x61\x1a\xdc\x58\xd5\x86\x99\x06\x78\x6f\x23\xae\x72\x9f\xb3\x7b\xf1\x2e\x5b\xe5\x19\xdf\xaa\x00\xc7\x1d\xf6\x9b\xce\xbb\xfb\x9a\xe6\xc1\x74\xde\xa9\xf7\x73\xfb\x70\xa1\x9d\xbb\xae\x8b\x67\xd4\xaf\x46\xdb\xa4\xec\x65\x25\xe6\x94\x84\x19\xd8\x3b\x4a\x99\x75\x7c\xb0\xfe\xbf\xaa\x1f\x59\x0d\xd4\xb5\x31\xc3\xd5\x31\xe3\x47\xdb\xdb\xdb\xed\x15\xa2\x77\xc1\x41\x1b\xcf\x71\x22\x88\xfd\xc9\x3e\xdb\xa0\x0c\x45\x71\x1b\xcd\x58\x5d\x0a\x55\xf4\xf5\xc0\xc9\x74\x8a\x79\x94\xd1\x22\x4a\x62\x09\x0f\x72\xbd\xa9\x83\x4a\xf9\xc3\xe1\xde\x37\xb8\xf6\xa8\xa0\x15\x88\x62\x10\x20\x6d\x0c\x2a\x5d\x97\xa8\x2b\x22\xfb\x01\x4d\xd5\x7d\xa7\x73\x15\x76\xe9\x6b\xf5\x03\x54\x37\x1b\x44\xf0\x6f\x65\x59\xc1\xee\xc5\x33\x15\xf4\x0f\x77\x7e\x93\x5d\x22\x98\x27\xb0\x9e\xc2\x65\xc1\x16\x70\x57\xa2\x05\x32\x7c\x42\x0b\x29\xfa\x98\xf3\x8c\x27\xaa\xe9\x2f\xa1\xe5\xb6\x5a\xd9\x53\x70\x01\xe8\x02\x95\xd8\x1b\x05\x2a\xb1\x8f\xd6\x48\xa6\x34\xc0\x0a\xab\x57\xf4\x68\x9d\x7f\x05\x5f\xcd\x88\x52\xae\xfe\x50\xb1\x43\x5a\x04\x85\x20\x40\x06\x82\xbf\x13\x29\xf7\x05\xc7\x86\x80\x69\x7b\x76\xcb\x82\xa3\x7b\xed\x06\xc7\x34\x2b\x03\xb7\x23\xa5\x2e\x81\x21\x81\x43\x98\x7b\x31\xf2\xbd\x21\xee\xa4\x4d\x2e\xd9\x6d\x56\x1c\x2a\x3d\xe0\x5e\xd9\x7f\x9e\xcb\x04\x01\x7a\xd9\x4b\xe5\x50\x78\x84\x93\xf5\x31\x8d\x4b\x34\x8f\xa9\xfc\x37\x50\x44\x10\x16\x3d\x89\x29\x62\xd1\x97\x71\x5d\xb3\xe8\x2b\x1d\xb9\x67\x90\xc9\xfd\x27\x05\xa9\x1c\x22\xee\x20\x28\x02\xf7\x0c\x44\x4f\x62\xb8\x17\x40\xe2\x26\xc0\x2c\x33\xf2\x25\x6e\xf4\xb1\xfd\x27\x7b\xd1\x8f\x69\xed\x72\x71\xa3\x1a\x98\xc7\x6d\x4d\x4f\x70\x08\x4d\xd5\xb5\x41\xc7\x88\x45\xb3\x58\x76\xf9\xcb\x98\x4e\xa0\xcf\xa1\xec\xb2\x7c\xfc\x73\x5c\xd7\x73\x1c\x3c\xbe\x44\x10\xb7\x40\x55\x26\xcb\xba\x45\x9a\x9a\x37\x2c\xcb\x7e\xa5\xca\xfe\xef\x78\xc2\xa2\x7f\x3f\xc9\x10\xc8\x1f\xcf\x1b\xb6\xd8\x18\xfb\x84\xb1\x6d\xe2\xc8\x4a\x25\x75\x79\xdc\x9e\xb5\xfe\xdd\x87\x39\xd0\x27\x2f\xb2\x0e\x15\x05\xde\x74\xfa\xb1\x9c\x86\x2f\x63\x49\x85\x7e\x37\xc1\x59\x3d\x0f\x09\xba\x11\x08\x6e\xdd\x54\x6f\xbc\x0b\xf5\x82\xdd\x76\xcf\x4f\x05\x9e\x9a\x67\xf0\x8c\x80\x68\x0b\x70\x43\xba\x9e\x3a\x58\xd7\xc7\x31\xe5\x56\x8a\xbd\x48\x4f\x20\xac\x8e\x76\x42\x3d\xbe\x7f\xfa\x97\x91\xc5\xd2\x8a\x98\xf0\xc4\xba\xd6\x99\x35\x01\x62\x27\x2a\xad\xc1\x92\x8e\xa1\x35\xeb\x1e\xcf\x73\x68\x15\x90\xa5\x04\x21\xb0\x4a\x39\x55\xa4\x7d\x8c\xe0\x26\x8a\x76\xa2\xe1\xae\x03\x6a\xc5\xa0\x01\xb1\x1b\xc3\x1d\x18\xca\xba\x02\x22\xce\x60\xcf\xfb\x88\xd8\xd8\x35\x0d\xc2\x04\x16\xb6\xae\xe3\x38\x17\x0f\xfd\x44\xff\xa6\xaf\x12\xb5\x6e\xe6\x18\xec\xbf\x9e\xf1\x5c\x9b\xdc\x3a\x10\x6a\x9e\x0a\x95\x84\x0d\xe2\x72\x66\xa1\x94\x71\x25\x81\x0c\x44\x88\x32\x15\x6b\x55\x25\x84\x99\x24\x2f\x81\xf9\x1e\x66\x0e\xbc\x7e\xd0\xaf\x5c\x5d\x71\xdf\x5d\x0a\xca\x71\xe0\x5e\x76\x1f\xed\x0f\xd7\xd3\x79\xe0\x3e\xb2\xbf\x29\x08\xe9\xc0\x4b\x35\xf5\x4f\x9d\xc5\xba\xab\x66\x58\x4b\x6d\x77\xae\xae\xb3\x16\xd6\x4c\x55\x93\x39\x54\x36\x71\xa7\x6e\xe0\xcc\xb1\xc4\x6a\xa7\x98\x62\x10\xdf\x8c\x02\x62\x00\x66\xb8\x03\x5d\x92\x50\x37\x4f\x2a\x61\xa7\x4f\xbf\xc4\xa4\xa2\xae\xb6\xfc\x81\x9e\xd8\x06\xba\xa5\x9e\x93\xf0\x14\x00\x1c\xc7\x96\xd7\x2c\xb9\x4e\xf6\xe4\xa0\xfa\xd1\x33\xfb\xa3\x85\x43\x69\x12\xba\x16\x65\x72\x47\x50\xf7\xae\x2f\xf8\x3d\xd0\xea\x3c\xd0\x93\x5b\xea\x1c\x3c\xcf\x01\x4b\xd6\x9d\xb2\x01\x30\x0a\xd0\x2d\x3e\xee\x5b\x31\x6d\x4f\xf7\xd1\x36\x86\x20\x6c\xe1\xfe\xfc\x0e\x7a\x08\xe4\xa0\xf7\x23\x17\xea\xde\xd0\x2d\x75\x0b\x9e\x3f\xe8\x4b\x02\x9d\x1b\xcf\xeb\x8d\xa4\x69\xf7\x78\xb6\x41\x37\x34\x4a\xc2\x9d\x45\x94\x83\x5d\x77\xe4\x15\x93\xc4\xf3\x6e\xf1\x71\x4d\x77\xd1\x7d\x5c\xd7\x48\xfe\x40\x10\xc7\x9c\xae\x23\x1d\x29\x26\xa5\xb9\x44\x4e\x94\xbe\xf1\xbc\x3c\x9a\xc7\x64\xd3\x4b\x78\x1c\x93\x3d\x4d\x3d\x6f\x67\x99\xd0\x44\x69\xdc\x8e\x76\x32\x49\x3d\x6f\xef\x79\x7b\x88\xb7\x83\x36\x34\xa5\x33\x90\xb3\xe0\x2a\x73\x13\xb9\x63\x6f\xa9\x85\x27\x93\x8d\xe7\xed\xd5\x75\xbc\xb2\x17\x34\x7a\x43\x52\xb2\x89\x17\xab\x92\x25\x1f\x9b\x96\x77\xb8\xf5\x3c\x94\x53\x24\x54\xd7\x85\xee\x3a\x96\xa2\x93\xec\x98\xea\x22\x96\xbd\x9d\xc7\xca\x02\xfc\xf3\xfb\xf4\x2f\x2e\x8e\xee\x34\x74\x09\xed\x55\x87\xf6\x56\x87\xe4\x10\x36\x10\xec\x4a\x8e\x0a\xc3\x40\xda\xf3\x83\x29\xcd\xc8\x46\xe9\x96\x24\x84\x6f\xfe\xad\xf4\xbc\xcd\x55\x79\x4d\x67\x4d\x33\x42\xb4\x6c\x7d\x7c\xe6\xef\x81\xa9\x51\xb7\x31\x66\x7e\xc5\x84\xe2\x22\xaa\x68\x78\xed\x8b\x45\x82\xdd\x03\xd7\x1e\x12\x2c\xbd\x50\x15\x28\x31\xa7\xd5\xc3\x47\xf7\x71\x58\x4a\xf1\xac\xbd\xb2\x78\x1e\x22\x4e\x23\x46\x18\x71\x5d\x22\x62\x62\xb7\xe5\xdf\x24\xd5\xdb\x3b\xfe\x83\xf6\x28\x42\x43\x2b\x8a\xd0\xe6\x83\x5b\xd3\x5e\xc9\x07\x97\xe6\x4a\xd4\x11\xee\x37\xa3\xaf\xdb\x98\x91\x51\x02\x3c\x03\xb0\xc0\xc0\x09\x43\x4a\x83\xc7\x18\x14\x59\xe7\x0c\x4c\xb4\x83\x52\x32\x56\x6a\x82\x82\x23\x2f\x44\x50\xf4\x95\x98\x8a\x1e\x49\x56\x5c\x49\x6f\xd5\xa9\x25\x43\x7f\x4e\xfa\x03\x91\xe8\xa5\x0b\xe3\x08\x83\x01\xe1\x3d\x23\x51\x8c\xe1\x0e\x81\xde\xa0\xaa\xe9\x14\xa3\x82\x26\x51\x15\x2b\x92\x5f\xc9\xe1\x08\xf9\x03\xf7\xfb\xd8\x6b\x0c\x4e\x18\x86\xbc\xa9\x48\x4c\xe0\xa5\x2d\xab\x2f\x08\xc7\xc4\xe1\x0a\x58\x9b\x06\x93\x9b\xa4\x1a\x8e\x6c\x44\x16\xb2\xb5\x2e\xc2\x52\x2e\x34\x98\x18\xdd\xc2\x67\xd7\x82\x84\xcd\xfa\xd7\xb5\x50\x6a\x78\x15\xd3\x59\xf2\xe6\x1d\x6d\x61\x92\xb6\xc8\x46\xf2\x84\x6f\xcf\x34\xf0\xb3\x26\xe0\x40\x82\xcf\x01\x2a\x94\x07\x30\x25\xff\x12\xe7\xa2\xd4\x1b\x69\x71\x01\xe2\x6a\x1a\x0e\xed\x78\xee\x77\x79\x20\xeb\x96\x2d\x0f\xbf\xa9\xf4\x40\xf8\xf2\xa1\x55\xdd\x9c\xdc\xe7\xc2\xd5\x61\x24\x38\xef\x74\x03\x97\x64\xd2\xc8\xee\x43\x6d\xad\xba\xd3\xc4\x52\x0b\x75\xda\xda\x06\x13\xe5\x45\x14\x9c\x4a\xb2\xcc\xcf\x8b\x75\xeb\xb0\x6c\x9e\xe5\xfe\xbb\xe9\xdf\xce\x00\x14\x15\xa8\xb5\xf0\xb3\xb4\x21\x65\x51\x8c\x07\xe4\x96\x08\xc7\xc4\x9c\x38\xf3\x7d\x3f\x0c\xf5\x80\x9c\xbd\x6c\xf2\x25\x04\x40\xae\xbb\x67\x24\x79\x34\xc7\x41\xe6\xf2\x24\x75\xb9\x43\x5d\xff\x93\xf9\xe6\xe6\x09\xdc\x10\x7d\x20\x32\x7e\x76\x6e\x8e\x48\xc0\x39\x03\xa2\xa3\x7d\x66\xe6\x59\x43\xf4\x31\xd1\x68\x3c\xef\xcf\x54\x30\x08\xd9\xff\x36\xc8\xb4\x14\x2c\xf6\xda\x87\xc4\x7c\x32\xa7\x59\xe6\xc6\xa9\x73\x7d\xb3\xd5\xd9\xec\x6c\x60\x70\xd2\xbd\xeb\x41\xa8\x9b\x92\xed\x2a\x3f\x4b\xae\x6e\x2f\xe7\x97\x83\xbc\x76\xff\x8f\x5b\xd7\x4f\x7a\x47\x1d\x4a\xc6\x1e\xbb\xa0\xbf\xe5\x16\x88\xea\xe5\xc8\x78\x9c\x96\xce\xa8\x6b\x68\xe1\xf0\xf2\x86\x25\x29\x1b\xbd\xe5\xf4\x6f\x27\x17\x7d\x34\x04\xa6\x78\x2c\xf3\x5f\x46\x32\x2b\x15\xcc\xff\xe5\x42\x5a\x8a\x1c\x03\x90\x56\x12\x38\x1f\xde\x8f\x04\x7f\x3f\xa9\xea\x5c\x9b\x9e\xe7\xca\x1a\xba\xfa\x3d\x4f\xbb\xb1\x21\x71\x12\x4a\x5d\x59\x81\x00\x86\x39\x91\x95\x94\x93\x6f\xa3\x35\x05\x7b\x81\x4e\xc4\xb5\x68\x16\x03\x02\x1d\x7c\xb6\x14\xc0\x91\x98\xce\x65\x1e\xf6\xdb\x30\x47\x27\xbc\x44\xb3\x6b\x1e\xf2\x89\x08\x38\xe4\xbc\x65\xfc\xb4\x36\xed\xea\xa8\x7c\x4d\x04\x5c\x33\x48\x1f\x63\x36\x3c\xa8\x67\x0d\x26\x45\x9a\x9e\x2b\x3f\xff\x9c\xf2\xf9\xc9\x60\x3a\xa7\x9f\xb6\xa7\xaa\xa2\xe9\x54\x72\x43\x0b\x53\x4f\xd9\xab\x67\xfb\xf9\xf5\x88\xeb\xc9\xa4\x1c\xaf\xa6\x69\x20\x0b\xbf\xc8\xf8\x11\xfc\x5c\x03\x67\x46\x8c\x7b\xab\x7c\xde\x64\x10\x13\x88\xec\x93\xaa\xba\x2b\x4a\x08\x07\x93\xed\x92\x2d\x04\x0a\xc2\x1d\x23\xc6\x63\x9a\x0b\x39\xd4\xb6\x3a\xe5\x5b\x2e\xf3\x97\xac\x62\xe2\x34\xff\x5a\xe5\x37\xda\xc5\x8d\xe8\xfb\x2e\x59\x9e\x4b\xf4\x85\x91\x9d\xb3\x0d\x5a\xb7\x5e\x3f\xe1\x2c\x58\x1b\xe9\x0a\x2f\x2a\xca\xc8\x41\x32\x34\xb9\xe4\x0f\x8d\x5e\xc9\x30\x21\xf8\x88\x1c\x5e\xd7\xa8\xa4\x8f\x94\x15\x73\x85\x41\x53\x51\x82\x03\x64\xa5\xab\x29\xa3\x59\x6c\xe4\xc7\xba\xae\x30\x39\x68\x43\x61\x1a\xc5\x58\x12\x3c\x67\x4e\x50\x49\x5f\xb5\x55\xe8\x8b\x04\xdb\x9b\xef\x75\x34\x3a\xad\x91\x57\xd6\x52\x50\xa9\xc5\x5f\x5d\xc0\x89\x7e\xd7\x68\x2b\xb1\x5a\xfe\xa3\xc6\x26\x07\x3b\xa8\xa4\x7f\x8f\x92\xb8\x6d\xb1\xae\xf3\x28\x89\x3d\x4f\x7e\x90\x4f\xa8\x94\x69\x7f\xdc\x8b\x84\xe8\x53\xa0\xa0\x3c\xd7\x7a\xb6\x41\x0e\x57\x5c\x7a\x7b\x2d\x6b\x68\xfc\xb0\x82\x2a\xec\x54\x4b\x38\x78\x81\x18\x39\xe0\x76\xf6\x3b\x25\x71\x2a\xfa\xae\x5c\x86\x1b\x24\x25\x75\xdd\xbe\x33\x57\x39\xa1\x2c\x12\x71\xff\x82\xaf\xb2\xab\xea\x46\xd8\x60\x9d\x51\xe1\xa7\x59\x49\x0a\xca\x3d\xcf\xd6\x43\x4a\xf1\x98\x24\xf4\x59\x77\xb4\x27\x14\xd5\x08\x7b\x12\x71\x69\xe4\x52\x41\x05\x1c\x05\xea\x5b\x44\x2d\x5a\xd1\xde\x03\xc8\x74\x89\x81\x50\x5d\xa9\x9e\x68\x6f\x3a\xfa\x46\xc2\xe4\x24\x91\xf3\x56\x9d\x56\x3e\x52\xbb\xe7\x31\x5d\x4f\x7b\x5c\xdd\x58\x12\xda\xa7\x3a\x26\x01\x9f\x0e\x64\x3e\x82\xa4\xbc\x9a\x59\x72\xdf\x5e\x1d\x15\x1e\x40\xf8\x83\x20\x99\xb3\xba\x3e\x48\x21\xab\x3b\xaa\x05\x82\x6b\x84\x49\x55\x01\x8d\xf6\x31\xc9\x41\xc3\xa9\xfb\x57\xd7\xa5\x4a\x90\xb9\xbb\xce\x76\x6b\xb3\xed\x39\x4e\x74\xe2\xd2\x70\xca\xcd\x95\x3e\x3d\x91\x20\x53\xe1\xd8\x1d\x29\xda\xe8\x8c\x23\x84\x39\x60\x92\x00\xb4\x2d\xee\xc4\x48\x10\x79\x0a\xf1\xd4\x67\x70\xbf\xa1\x86\xb3\xdc\x44\xd3\x53\xc0\x76\xb8\xae\x16\xd5\x64\x22\x45\x10\xa6\x45\x10\x89\x08\x38\x2a\x88\x89\xcf\x92\xb4\xde\x00\x39\x98\x40\xc8\x97\xaa\x13\x81\x92\xae\x0f\x0f\x56\x1f\x2c\x51\xa5\xf4\x3c\x47\x0a\x4a\xe0\x56\xfb\x20\xd4\x65\x43\x9e\xe7\x64\x2a\x2d\x93\x69\x32\x3f\xee\x1d\x8d\x68\x04\xd7\x53\xd4\x50\xd0\x3c\x80\x79\x54\x62\x06\xb4\xa5\x45\x5d\xdf\x0b\x88\x75\x7f\xe9\x92\xee\x66\xd8\x30\xaa\xe2\xa0\x02\xa9\x6b\x47\x1d\x56\xd7\x4e\xe1\x79\x22\xdc\x06\x3b\x01\x77\x07\x30\xa8\x9e\x3c\x50\x1e\x66\x75\x8d\x8a\x90\x05\x37\x75\x5d\xe2\x30\x8a\x83\x24\xd8\xc1\x19\x97\xe7\x71\xb4\x23\x0f\x2a\x67\x89\x8f\x39\xdd\x09\xf4\x40\x52\x4c\x4a\x94\x13\x39\xbb\xf2\xc3\x7a\x68\xaf\xbf\x96\x42\xdd\x9e\xe6\xd1\x1a\x66\xf4\x21\x4a\xa3\x75\x2c\xe5\xba\x9d\x7e\xda\x63\xb0\xca\x2f\x94\xeb\x48\x5d\xab\x78\x9b\x99\x6c\x00\xc2\xf0\x3e\x8c\xd6\xf7\xa0\xea\xcb\xd5\x1a\xec\xa2\xb5\xac\x68\x91\x01\x83\x41\x1e\x00\xb9\x93\x03\x6e\xfe\xa0\x38\xca\x69\x16\x6a\x29\xba\x20\x7b\x1c\x6c\x64\xfa\xf5\x74\x0e\x21\x4c\x73\xd9\xcd\x44\xfe\xc8\x3e\xaa\x9d\xf0\x00\xa3\xa6\x94\x26\xe1\x43\x7b\x01\x02\x79\x68\x6d\x9d\x1f\x30\xc9\x42\xdd\x8d\x84\x3c\x90\x03\x0e\x8c\x8b\x41\x42\x1e\x70\x63\xe1\xbf\x5b\xd1\xbf\x6d\xbc\xe8\x20\x33\xa1\x99\x6f\xce\x5c\x22\xd0\x7a\x43\xe8\x61\x52\xd1\xa4\xae\xad\x4f\x92\xd2\x91\x03\x05\x3b\x09\xb2\xa6\x37\xe3\xb6\xc3\x8a\x9b\xab\x88\x33\xc3\x64\x7f\x26\xd3\x6b\x13\x7a\x4d\x89\xa3\x3a\xf7\x86\x46\x43\x6f\x79\xbd\xe9\x12\x09\xc1\x75\xcd\x1d\x4a\x73\x49\x55\x90\xa0\x1c\x77\xf0\xb6\x36\x17\x7f\x9a\x1b\x40\x71\x13\xab\x5d\x56\xd8\x97\xbf\xf6\x46\x79\xd0\xa3\xc4\x1b\x1a\xdd\x08\xb4\x15\x68\x83\x09\xc7\x4a\x35\x75\xd4\xf9\x15\xb1\xb3\x72\x1b\xff\x0d\x39\xe1\x90\xaa\x89\x17\x26\x3c\xba\x8f\x95\x74\x50\xd2\xc9\xe4\xb0\x28\xae\x4b\x38\x1d\x93\xd0\x65\xb7\x5b\x9a\x76\x7b\x5a\xa7\x07\x81\x0e\xd7\x73\xcf\x53\xdd\x80\x47\x49\xb0\x5a\x1d\xed\x61\x3a\xc7\xf8\xc4\xad\x83\x93\xf2\xfa\xe0\x79\xb7\x5d\xce\x83\x1c\x3c\x29\xae\x4b\x95\xda\x6a\x73\xdb\x54\x20\x83\xb8\xd9\x18\x16\xd0\x10\x54\x68\xb8\x83\x96\x95\xe8\xc7\xda\x28\xda\x9b\x2b\xae\x67\x24\x69\x41\xe7\x7a\x46\x2c\x0b\x08\xc9\x15\xad\xc9\x86\x68\xab\x61\xed\xd0\x2d\x77\xc7\x2d\x9d\x91\x15\x75\x67\x2e\xb9\xa7\x95\xe7\x45\x31\xb9\xd3\xd8\x30\x25\xef\x69\x4e\x9e\xd1\xaa\xae\x13\xcf\xeb\x2c\x6b\x91\x44\x29\xa9\xe7\x1d\x7a\xfe\x35\x07\x4c\x3e\xd2\x37\x13\x1d\xc4\xfe\x7d\x38\x0f\x5e\x27\xe2\xc6\x2f\x13\x9e\x16\x3b\x84\xeb\xda\x57\xbc\xee\x1d\x6c\xb6\x83\x32\x95\x38\x90\x92\x72\xbc\x50\xed\xa1\x1b\xfa\x2c\x5a\xc5\x78\xb1\x9a\x4c\x60\xeb\x27\x9e\x77\x83\x8f\xdb\x36\x4c\xf5\x8e\xb2\x68\x3b\x99\x00\xb9\xdb\xa1\x1b\x39\x24\x8c\x8f\x7a\xbe\x6e\xb0\xd6\x7a\xca\x06\xde\xd0\x8f\x44\xae\x35\xc7\x4d\xe1\x79\x08\xdd\x50\x67\x27\x2b\xf3\xbc\xdb\xe9\x94\x54\x9e\x77\x6f\x0a\x29\x47\xa0\x09\x5d\x91\xc2\xf3\x56\x0e\xa5\xb7\xfd\x16\x85\x6a\x71\x87\xee\xe5\x1e\x26\x6b\xac\x49\xb7\x2c\x75\x3d\xd3\xc7\xfd\xab\xe9\x14\xdf\x47\xab\xb8\xae\x1f\xe0\x3f\x92\x3f\xf4\x7b\xb5\x93\x36\x18\x2f\x14\xb2\xc0\x8d\xc1\x00\x1b\xf2\x80\xc9\x9d\xe7\x39\x95\xe7\x3d\xb4\x0b\xe6\x79\xb7\x93\x76\x2d\xe7\x70\x2e\xd7\x59\x52\xa0\x2e\x28\xba\x19\x61\x4e\xdf\x63\x72\xdf\xb4\xd7\x2a\x86\x85\x40\x15\x0e\xaa\xa6\xa2\x95\xb2\x3f\xcb\x7a\x77\x09\x9d\xd8\x27\x47\x31\x29\xe8\x3b\x8b\x51\x76\x0a\x7c\x54\x87\x4c\xe0\xcc\x25\xd9\xd7\xc1\xb5\x28\x7c\x3a\xc5\x05\xbd\x15\x48\xc0\x9d\x04\x05\xe8\x3f\x0d\x31\x0c\x32\xf3\xb4\x28\xe8\x3b\xc4\xc8\x4a\xc0\xed\x03\xb8\xb3\x56\xee\x98\xf7\x7b\x31\x90\x40\x48\xd6\x35\x06\x18\x22\xd3\xfb\x54\x29\xe2\xa2\x32\x26\xdc\x3a\xca\x6e\x2b\xba\x1b\xb8\x44\x4a\x22\x69\xf8\x2d\x18\x06\x8c\xac\x54\x8a\xa4\xbd\x41\xd0\x00\x60\x74\x2f\x99\xa0\xbd\x75\x9a\x88\x89\x21\xa2\xd7\x8f\x3d\xcf\x7d\xf5\x5c\xf2\x8a\xe8\x40\x93\x68\x16\x63\x2d\xbc\x7e\xdd\x63\xb5\x3c\xcf\x49\xe5\xf6\x68\x11\x49\x02\x47\xbe\x80\x48\xd4\xb5\xd1\xad\x8d\x3f\x3a\x18\xa4\x64\xf3\xf7\xfa\xd8\x59\xe0\x68\x16\x13\x47\x74\x9e\x8e\x1d\x8e\x48\x0c\xa3\xae\x18\x5f\x33\x86\xa6\xa0\x7f\x1f\xb9\x94\x88\xe1\x70\x16\x24\xa7\x57\xbe\x1c\xc1\xda\x26\x89\x8a\x98\x58\xdd\xcd\xe9\xa1\x87\xf6\x24\x37\xb8\xd6\x7d\x8e\xf2\x58\x85\x02\x59\x7f\xb2\xeb\xda\xe9\x2e\x31\xf4\xe9\xd4\xf9\x4e\x5f\xa1\x9d\xf4\xee\x7f\x61\x6d\xe8\x69\x40\x7e\x09\x26\xce\x79\xf7\xc6\x52\xbb\x4d\xea\xa3\x8d\xd6\x14\x0c\x31\xb2\xc7\xa8\x24\x82\xa4\x84\x93\xd6\xfd\x0f\xfc\x1d\x5b\x5d\x0c\x17\x37\xd4\xd2\xcc\xfc\xd6\x41\xe1\x7b\x81\xf0\xb1\x31\xe4\xa4\xa2\xef\xed\x50\x91\x6d\x91\x9e\x12\x1f\x22\x68\xbf\x17\x64\x8d\x70\x6b\x27\xa6\x2e\xf6\x23\x2a\x86\x39\xad\x20\xae\xd1\xfd\xbe\xec\x19\x5b\xe8\xb4\xc8\x0d\x5c\x75\xc1\xdb\xbe\x6c\xeb\x5f\xe9\x9d\x4e\x7b\x7b\x9e\xac\x40\x79\x6c\x59\xae\x90\xee\xde\xdc\xd6\x61\x90\x74\xf1\x03\xa9\x65\xfe\xd6\x98\xeb\x10\x12\x41\xaf\xfe\xce\x45\x96\x3f\xba\x22\x95\xbe\x99\x4d\x2d\x4e\x55\xef\x4b\x76\x8b\xc2\x00\x3e\xd7\x60\x39\x7f\x45\x0e\x32\x8f\x1f\x7d\x08\xfe\xb4\x8c\x96\x3e\x89\x2f\x1f\x5d\x91\x5c\xd0\xb3\x37\x61\x91\xb5\xa0\x47\x38\xd2\x2a\x19\x07\x65\x80\x52\x76\x57\xf2\x99\xb3\x7b\x10\xe8\x65\x43\x52\x9e\x5f\xf4\x62\x2a\x6d\xfa\x51\x5e\x6c\x26\x28\xeb\x45\xf4\xb0\x2c\x6d\x4e\x9d\x93\x75\xe8\x45\x15\x01\xec\x50\xdd\xbc\x13\xc9\xfa\x23\xd2\x97\xaa\x43\xd0\x70\x4b\x4f\x24\x31\x8b\xa0\xb3\x45\xd6\x85\x07\xb1\xe3\x2f\x46\x22\x56\x41\x57\x3a\x09\x46\x0b\xd9\x70\xf2\x61\x97\xd4\x01\xeb\x55\xc4\x3e\x59\xce\xc2\x4e\x74\xd0\x99\xec\x7a\x1e\x9a\x35\x46\x1c\x07\x70\x19\x8d\x81\x0c\x8a\xac\xcb\xdd\x8b\x32\xec\xbd\x49\xdc\x1c\xb8\x2e\x9e\x30\xc2\x1b\x38\xc0\x18\xb3\xca\x58\xe9\x6e\xc0\x35\x32\x03\x77\x34\x1d\x6d\xfe\xdc\x44\x94\xa3\x13\xa1\xc2\xb1\x46\x22\xb6\x27\xa2\x21\x7c\x5c\x39\x3e\x18\xed\x46\x98\x08\x40\xce\x1c\xe3\xe6\x34\x00\xf8\x67\x14\x84\xd0\x85\xd9\x98\xaa\xdd\x71\xd8\x58\x80\x2b\x16\xe6\x1d\xfe\x33\xf3\xe1\xeb\xeb\x09\xcd\x55\x03\x3a\x46\x4e\x7b\xe1\x80\x0e\x29\xaf\x6e\x23\x30\x74\x38\xb0\x67\x8c\x75\xe9\xb8\x21\xeb\xbc\xa8\x58\x35\x7a\xb7\xbf\xb6\x1e\xb3\xa0\x96\xe8\x0b\x13\xba\x7e\x8d\xb9\xd8\xab\xbe\xaa\xeb\x19\xda\xee\x06\xb3\x3e\x09\x3c\x2a\x88\x8a\x4a\x73\x5c\x0c\x87\x17\x03\x0f\x77\xae\x9c\x4c\xc1\xa0\xb6\xf3\x1e\x52\x88\x37\x4c\xf4\x0c\x28\x0b\x06\x05\xbb\x43\x2b\x5f\xc4\x09\xc3\xf8\x58\xb4\x4a\x48\x85\x6c\x39\xb5\x3d\xe4\x5a\xd4\x3b\x58\xbb\xa2\x93\xe8\x5b\x48\x2f\x70\x50\x80\x4a\x3b\x65\xf7\xa3\xda\xff\x70\x64\x19\xbb\x0b\x2b\xf5\x6a\x11\xb9\x95\x71\xd0\xa5\x33\xff\x57\x70\x0a\x09\xa5\x44\x14\xe8\xe5\x0b\x74\x6e\x15\x60\x5b\x92\x22\xcb\xab\x4f\xaf\x68\x59\x49\x1a\x2a\x71\xd1\xd3\x3c\x47\x66\x65\x03\x29\xe7\x0c\xee\x8c\xec\xe2\x6e\x8c\x74\x10\xbe\xf7\xae\x68\x82\xb3\x8b\x4e\xc8\x66\x71\xc0\x30\x44\x33\xdd\xb1\x72\xab\xe2\x61\xc1\x85\xe3\xd8\x42\x12\x43\x7c\x65\x26\x4d\xf2\x4b\xb2\x3b\xdf\x26\xeb\x8f\x67\xf7\x4c\x92\xa6\x5a\x87\xce\xcc\xcd\x0f\xec\x56\xdd\x39\x16\x0c\xde\x3b\x48\xc6\x6d\x50\xbb\x84\xa7\xef\x58\xbe\xa1\xea\x45\xb5\xb5\xe8\x59\x6d\xca\x19\x48\x8b\x0b\x06\xfa\x36\x0d\x74\xcc\xf3\x94\xb1\xf6\xf0\x30\xee\x82\x35\x26\x62\xe0\xc8\xd1\xc8\x27\xaf\x8a\x05\x68\xed\xb8\xa9\x50\x68\xab\x64\x4d\xa1\xc6\x26\x60\xe5\xa7\x99\xdc\xb5\xb6\x46\x0f\xb7\x25\x80\x96\x9d\xb3\x4a\x1a\x2b\x0a\xe1\xba\xf8\xf0\x88\x43\x17\x80\xa9\xe8\x19\x8d\xe0\x46\x11\xb3\xb3\x99\x87\xd6\x31\xba\xf6\xa7\x79\xfe\xc9\xc1\x8c\xb4\xf1\x47\x45\xce\xb4\xf4\x79\x33\x60\xb7\x07\x53\x20\x6b\xfb\xcc\xc9\x1b\xda\xff\xc8\xe2\x95\x7a\x39\xb3\x62\xfa\x2b\x42\xac\xc7\x18\x1e\x1b\x6c\x1d\xd7\x11\x26\x51\xac\xe1\x24\x3e\x59\x8f\x7d\xca\x27\x0b\x19\x96\x63\xb4\x50\xef\x3a\xf4\x4d\x99\xec\x18\xdc\xb4\xae\x0b\x59\x16\xfc\x26\x49\x5d\x74\xd5\xfa\x24\x04\x66\x1f\x47\x31\x61\x96\xf5\x0e\xd8\x15\xf6\x70\x86\xdc\x4f\x11\x8b\xe9\x88\x31\xb3\x44\x06\xc9\x5e\xd1\x37\x61\xa1\x81\xc4\xa2\x0e\x48\x8a\xc3\xa4\xec\x02\x05\xd8\x77\xf6\x23\x59\x85\xde\xcb\xa0\x87\xec\x53\x1b\x29\x31\x3a\x6b\x11\xb1\xb8\xc3\xbf\x19\x0e\x32\x32\xc8\x53\x89\x2e\x44\x06\xca\x40\xf3\x72\xcb\x4a\xe5\x9e\x30\xe4\x5a\x34\xc2\xe8\xd8\xb5\x93\x7b\x4a\x2c\xf0\xe0\x9e\x87\x18\x75\x03\x5e\x08\x04\x26\x89\xd8\xc5\x44\xa9\xa5\x75\x10\x81\x33\x54\x47\x48\x1c\xcf\x70\x18\xc9\x87\x38\x88\xe2\x01\x79\xd2\x3e\x19\x69\x56\x9e\xb9\xfe\x1d\xe4\x58\x16\x71\x83\xa7\x0a\x15\x97\xa6\xb0\x6f\x9f\x29\xd5\x2d\x17\xf3\x5e\x7a\x5d\x3b\x2b\x54\x60\x3f\xab\xc0\x87\x0c\xc2\x5b\x5a\x85\x5a\x71\x96\x14\xb4\xb0\xae\xc1\xc9\x5a\x68\x1f\x25\x19\x91\xd6\x70\x9d\x1e\x3e\xcf\x7b\x27\xcb\x9e\xc7\x14\xc5\xd6\x0e\x0c\xcc\x8e\x81\x74\x72\xcc\x65\xbc\xc2\xe5\x28\x66\x20\x07\xbc\xec\xac\x1e\x70\x0b\xeb\xdb\x92\xed\x7b\xc6\x9f\xdd\x34\x39\x8e\x30\x76\x42\xb6\x0d\x26\x18\x31\x36\x20\x25\x9f\x7a\xdf\x8c\x54\xd8\xd7\x27\x76\x85\x4f\x60\xd6\xb8\x8a\xd1\x4f\x55\xd2\x9f\x12\x55\xd3\x41\xb4\xbe\x45\x6d\x37\x34\xe0\x0b\x52\x12\x87\xe3\x85\xa0\x76\x52\xab\x60\xf8\x54\x4b\x16\xff\x40\x84\xe4\x00\x55\xd7\xc7\xcf\xa1\x6e\x84\xb9\xc1\xa6\x76\x31\x9c\x49\x29\xd3\x78\x83\x2c\x5e\x96\xc9\x16\x02\x90\xe8\x5b\xfb\x7a\x71\x9e\x8c\xdf\xa1\x91\xd3\x07\x9f\x91\xd0\xe6\x73\xdd\x72\x83\x52\x4e\x50\x37\x59\xad\xca\x3a\x29\x45\xb6\xce\x59\x9d\x54\x59\xca\xea\xe4\x90\x66\x45\xbd\x4a\xb3\x7a\x9d\xf0\xdb\xa4\xaa\xd3\x44\x24\xf0\x2f\xcf\x2a\x51\xa7\x4c\x24\x59\x5e\xd5\x9b\x6c\xbb\x4e\xc0\x06\x43\x3e\x1e\x4a\x56\x6f\x8a\x42\xb0\xb2\x56\xd6\x07\xf5\xcd\xb6\x2c\x0e\xfb\x7a\x97\x94\x1f\xeb\x1d\x93\x1f\x78\x72\x5b\x17\x07\xb1\x3f\x88\x7a\x5f\x16\xdb\x92\x55\x55\x5d\x31\x98\x8a\xba\x3a\xec\x76\x49\xf9\x50\x8b\x6c\xc7\xea\xdb\x2c\x65\x85\x4b\xb6\x82\x5e\x5d\xfc\xfa\x37\xc9\x78\x2d\xd3\x09\xc4\x46\x94\xa4\xba\x5e\xa6\x13\xec\x5e\x6d\xc9\xae\x33\x4d\xfe\x06\xa2\x1a\xde\x88\x89\x8b\xa3\xe5\xb2\xba\xba\x8e\x75\x34\xb9\x07\x29\x5b\x2e\xab\xc9\x15\xb9\x15\xf4\xea\x1b\x14\x3a\x2a\xe0\x5a\x59\xaf\x8b\xbc\x66\xbb\x15\x4b\xeb\x9b\xb2\xce\x76\xdb\x5a\x85\x66\xcb\x33\x0e\xfd\x4d\xea\x7d\x52\x26\x3b\x8c\x50\xb4\xbc\x0b\xe2\x09\x8e\x3e\x5c\xc7\x97\x78\x79\x75\x7d\xb5\xcd\xc8\x0a\x2a\xd3\x5f\xae\xc8\xbd\x7c\x15\xab\x22\x7d\xb8\xca\xc8\x9d\x7c\xa9\xbd\x3f\x85\xcb\xbb\xc9\xe2\x8a\xbc\x57\xed\x06\xd5\xba\xcc\xf6\xa2\x56\x37\xf3\xcb\x56\xf0\x55\x46\xde\x68\xf1\xd8\x1c\x67\xd7\x70\xc0\x0d\x81\xe0\x9e\x09\x7a\xa5\xad\x5d\x96\xd5\x25\x0a\x83\xe8\x03\x8d\x6b\xba\xac\x2e\x8d\x11\x8c\x2f\x6b\xf8\x28\x6b\x78\x54\x2f\xaf\x50\x18\xfc\x9a\xdc\x26\x35\x5b\xef\x12\xac\x1a\xbb\xca\xc8\x0b\xf9\x59\x94\x07\xb6\xbc\x42\xfe\x25\xbe\x22\xef\xd4\x84\x5c\x7e\xe3\xa0\x30\x58\x46\xcf\x9e\x3f\x7d\xff\x74\x19\xd5\xd3\x29\xae\x65\x42\xbc\x8c\xe5\xf3\xf5\xb2\xba\x7c\x74\xb5\x25\x4f\x05\x3d\x2a\x43\x9b\x20\x9a\x13\xe3\xc6\x7e\x61\x5c\xc9\xe9\x17\xe6\xe9\x8b\x6b\x97\xb8\x9d\x03\x7b\x4c\x72\xb6\x65\x3c\x55\xa5\x36\x19\xcb\xd3\x8a\x09\x95\xa7\x7b\x8b\x89\x5c\x0c\x95\x67\x97\xec\xd5\x67\x78\x88\x09\xcc\xbe\xfa\xa4\xa2\x41\xa9\xaf\xe6\x59\x0a\xcd\x2c\xd1\xf5\x8b\x64\x95\x33\xf5\x5d\x3f\xc6\x44\x94\x41\xf4\xb8\xfd\xa6\x16\x47\x67\x81\x47\x2b\xeb\xba\xc8\x47\xf2\xb6\x19\xd7\x45\x0e\xa0\xac\x4a\xb7\x6f\x76\x5b\x69\x10\x3d\x39\x29\x2f\x4a\xdd\x5e\x79\x3d\xd2\xa8\xb9\x43\x33\xe8\x62\x62\xdf\x88\x5d\xfe\x8e\x95\x59\x92\x67\xbf\xb3\x30\x9a\x11\xd7\x25\xae\x1b\xc3\x18\x7f\xfe\x46\x45\x9b\x71\x75\xd8\x99\xb8\x21\xbf\x0a\x9a\x0a\x49\x2b\x9e\x0b\xfa\xab\xe8\x05\x2d\x2a\x46\xc3\xc0\xe1\xc5\x53\xe1\x17\x7b\x01\xfd\xa7\xea\x39\x2b\x38\x79\x2a\x7c\xe8\x9e\x4c\x12\x72\x13\xcb\x07\x33\x4e\x78\x56\xfb\x1c\xbe\xcb\x59\x87\x12\x37\xf0\x9a\xf6\x63\x56\x9f\x18\xee\xb4\xa8\x30\x59\xaf\x59\xa5\xc5\xfc\x73\xa8\x3d\x54\xea\x27\xd4\x89\x57\xda\xa8\x09\xeb\xd1\x21\x74\x22\x73\x9d\xdc\xef\xaa\x87\xfe\x9e\xdd\x03\xcb\x07\x52\x88\xb2\xce\x64\x64\x18\x5c\x17\x37\xe4\xae\x4c\xf6\x43\xb6\x17\x34\x13\x16\xb9\x63\xd8\x8e\x4d\x3d\x88\xa3\x2b\x99\x30\xd5\x63\x5f\xd7\x85\x98\x75\x49\xa3\xc0\x58\x93\x3a\xad\x09\xd0\xf8\xde\x28\x0c\x4e\xc6\x80\x7d\xf6\x1b\x9a\x61\x7f\x9d\x17\x9c\x21\x67\x86\x17\xa7\xe2\xa5\xe7\x89\x7e\xd4\x21\x53\x39\x11\xc0\xf3\x59\x5a\x97\xee\x26\x16\x23\x53\xf5\x22\xf6\xcc\x87\x91\x78\x5a\x7a\x3c\x30\x6c\xeb\xec\x71\xcc\x5a\xa8\x50\xc1\xd6\xc4\xa8\xc9\x7c\xc5\xf9\xb8\xea\x65\x30\xa5\xe1\x1f\xcf\x25\x54\x75\x3a\x9b\xc1\x68\x34\x63\x33\xad\x4a\x2b\xc5\xa9\x30\xbc\x75\x85\xf0\xc2\xa8\xa8\x42\xde\x2d\x12\x0e\xcc\xa6\x41\x0c\xbc\x4b\xe4\x97\x11\x39\x72\xd0\xef\xc5\x79\x50\xe0\xa7\xa0\x20\x42\xbb\xfb\x1c\x07\xaa\xa9\x03\xef\x37\x36\xd0\x4f\xc1\x42\x23\x3c\x12\xb1\x79\x70\x7d\x86\xdc\xb6\x70\x5d\x89\x6e\x56\xeb\xc9\x7f\xca\xc4\x8d\xbe\xc2\xcc\x92\x1d\xb0\x2f\xc7\x2a\x65\x7d\x18\xf5\xb9\xd6\xd3\x62\xf7\x3a\xe1\xd9\xbe\xbb\xbe\x96\x38\xb3\xde\x9e\x55\xb6\x1f\x26\xba\xbf\xe2\x6b\xe7\x23\x69\x5f\x0f\x93\xb0\xbe\x8c\xcc\xc6\x55\x6a\x42\xf6\x25\xfb\xff\xb8\x4f\x83\x28\x5e\x9d\x02\x47\x8b\x7c\xd8\xdc\x88\xf6\xaf\xf4\x71\x7e\x7a\x07\x47\x6f\x17\xf7\x13\xc6\xfa\x00\x0d\x27\x1b\x71\xf6\xc6\xb7\xff\x97\xda\xed\x89\x11\xb2\x0f\x2a\x7c\xd8\x39\x45\xa4\xb6\x9a\x52\xe7\xaa\xad\xee\x10\x83\x2e\x11\x39\xac\xae\x2d\xe5\x67\xc4\x2d\x0f\x7a\x70\xc5\x53\x62\x12\xb7\x96\x69\xe5\xaf\x73\x96\x70\xb8\x18\xfa\xad\x40\x1c\x63\xc2\x7b\x43\x40\xc2\xf3\x2c\xf5\xf1\x40\x37\x49\x38\xf6\xbc\xd7\x02\x8a\x12\x57\x71\x43\xee\xa0\x8e\x5e\x40\x34\x8e\x71\x3f\x68\xfd\xd0\xdc\xb7\x8b\xf9\xda\x1f\xab\xc2\xad\x91\x88\x31\x28\xb5\x8f\x43\x89\x6b\x30\x10\xa5\xa1\x1e\x41\xc5\xb8\xdf\x9f\xde\xa7\x05\xd3\xa4\xba\xea\x5d\xa3\xcd\x88\xab\xf8\x2d\x57\xdd\xe0\xa4\xf3\x98\x00\x72\xb3\x01\x72\x06\x82\x32\x1e\x1e\x9e\x51\xa3\xda\x73\xe6\x81\x1c\xa3\x7a\xfd\x7f\x48\x7b\xff\xee\xb6\x6d\x64\x6f\xfc\xff\xef\xab\xb0\x70\x73\x79\x89\x08\x96\xa5\xb4\xf7\x7b\xee\x43\x2d\xc2\xd3\xba\x3f\x77\x1b\x27\x6d\xdc\x6d\xba\x0c\xb7\x87\x96\x20\x9b\x0d\x05\xa8\x24\x18\xdb\x15\xf5\xde\x9f\x83\x19\x00\x04\x29\x39\x7b\xf7\x3c\x7f\x58\x26\x41\x10\x04\x06\xbf\x66\x06\x33\x9f\xd1\xa9\x48\x6c\x30\xac\xd1\xae\xe2\x97\x74\xdc\xa5\xac\x0e\x5d\xc3\x40\x31\x6c\xcc\xbf\xc7\x03\x58\x5f\x70\xdc\xc3\x20\xc2\xfc\x91\x6a\xfb\x08\xcf\x63\x88\x58\x95\xca\x1e\x6d\xc8\x1f\x16\xde\x6a\x46\x08\x4d\x20\xaa\xf1\xe4\xc4\x71\x4e\xd7\x5d\x07\xaa\x90\xc9\x13\x8c\x58\x14\x6d\x4f\xe7\xaa\x44\xb1\x2e\xe5\xed\x2f\x77\xa5\xc6\x78\x0a\x51\xf4\x18\xe4\xfc\x42\x67\xf1\x8d\x76\x70\xb4\x5d\x97\x21\x37\x47\x8f\xfc\x73\x73\x4a\xf7\xa1\xdb\xc4\x47\xcd\xc8\x5f\x9e\x2d\x5e\xfe\xe5\xe2\xd9\x8b\x97\x16\xbc\x77\xa0\x9b\xf7\xd3\x0b\x48\x35\x86\xee\x8a\xc7\x53\x07\x46\x1c\x0b\x08\xc4\x05\x5d\x4a\x3e\xb7\x30\x17\x8a\xee\x0f\x07\x69\xd7\x84\x11\xbb\x25\x3e\xc9\x3a\x05\x9b\xcd\xbf\xb1\x6d\xf6\x47\x12\x3c\xe8\x89\x58\x70\x38\x3f\x93\xca\xb2\x7f\x36\x46\xa1\x57\x12\xf9\x55\x2e\x13\xf9\x78\xed\xb7\x60\x99\xa3\x55\xcb\x61\xf4\x07\x5a\x60\x69\xc8\xe3\xb7\x4a\x88\x1c\x81\x94\x19\x2e\x7f\xe0\xc1\xcf\xb0\x02\x4f\x2a\xc4\xed\xfb\x18\xf6\x87\xb9\xea\x1d\x29\x8c\x04\xdf\xd8\x93\xe5\x2c\x67\xf6\x80\x74\x10\xf2\x80\xcf\xd9\x6e\x70\x88\xb3\xc6\xd3\xc5\x3b\xbe\x3b\x5f\xb0\x5b\x70\x3d\x66\xdb\x21\x39\x6f\x81\xa3\xdc\x76\xdd\x24\x5e\xbc\xe4\xbb\x13\xa7\x3c\xb7\x66\x09\xed\x23\x65\x89\xd5\x87\x4b\x33\x53\x69\x14\x5d\xda\x31\x7a\xfb\x29\xa6\xd6\xbb\x88\xae\x0d\x37\x5a\xd2\xe5\xd6\x79\x42\xdf\x06\xec\x4c\xc9\x64\xaa\x60\xb6\xc4\x34\xd1\x94\x32\xd5\x77\x93\x8d\x7a\x01\x15\xdd\x81\x09\xce\xcd\xec\xa6\x2d\xab\xb5\x57\x64\x3c\xc1\xff\x9a\xcd\x0b\x79\xb8\x92\x57\xa1\xae\x16\xc3\x88\xf7\x0c\x8d\x3f\xca\x8f\x2b\x5e\x52\x56\xda\xa0\xe1\x92\xcb\xc1\x2a\x59\x32\xa2\x6b\x42\x59\x63\xf5\xa1\xaf\x75\x5c\xf5\x5b\x02\xfb\x0e\x9c\xdc\xfc\x32\xb3\x7b\xb9\x5a\xae\xa6\x53\xaa\x78\xc5\x56\x13\xce\xef\x00\xc7\xd9\xad\x73\xca\x8c\xbc\xc9\x9c\xb2\xc2\x7c\x02\x55\xb4\x0d\x7b\xad\x63\x15\x6c\x32\x94\xd5\x48\xa3\x61\x3d\xa0\xb1\xab\x9c\x11\x10\x01\x09\x4d\x7f\xd0\x41\x1a\x32\x72\x89\x4b\x50\xd6\xf0\xa7\x80\x08\xeb\x2d\x6f\x32\x57\xc3\xf3\xc5\x98\x5e\xd8\xac\x86\xfd\xa1\xa9\x19\x4d\xcb\xc2\x37\x01\x8a\xfa\x60\xfb\x5b\x39\x4f\x0b\x12\x46\xd3\x52\x8c\xdc\x56\xea\xa6\xa8\xbe\xfe\x58\x54\xe6\x49\xb0\xa7\xb6\x80\x4b\x1d\xab\x59\x53\xaf\xd2\x9b\x59\xf1\x7b\xf1\x10\xef\xdb\xba\x4a\x20\x05\x4d\xb6\xc9\xb7\x5f\x5f\x13\x66\x8a\xc2\xf8\xb1\x96\x0a\xac\x68\x1e\xe5\x2a\x99\x2c\x18\x96\x6e\xae\x08\x40\xbc\x34\x04\xac\xec\x93\x9b\x59\xff\xdd\xd8\x54\x0e\x1d\xd4\x86\xce\x6b\xaa\x5f\xb4\x86\xc8\x09\x6f\x61\x69\xa7\x74\x59\xf1\x12\x11\xcb\xc3\xad\x2e\xd4\x65\xfe\xa0\x87\x3b\xdd\x69\x74\x44\xb0\x85\xe9\xba\x21\xf4\xef\x08\x70\x67\xac\x53\xa3\x81\x26\xef\x3b\x1d\x9e\x3b\x1d\x83\x48\xa2\x93\x49\x10\xd5\xfc\x71\x27\x78\x0c\x68\x66\x1e\x25\x87\x4e\xc9\x05\x99\xda\x38\xa9\x01\xbe\xfb\x1f\x41\xd9\x5f\xbb\x0d\x05\xcd\x5e\x7a\x00\x66\x17\x8b\x31\x5b\xe4\x89\x38\xc6\x85\xc6\xef\x87\xa5\xbe\xd2\x9f\xe6\xe0\x84\x67\xdf\xdc\x50\x91\x83\xa1\xc2\x26\xda\x2c\x31\x36\xd6\x59\x56\xe7\xc3\x81\x14\xd0\xe6\x37\xed\x01\xa2\x16\x23\x43\xa6\x9b\xd9\x5d\xd1\xc0\x46\x25\xe8\x20\x22\x0c\x77\x25\x0b\x33\x3b\xfb\x90\x6a\xca\xcc\x63\x85\x61\x66\x1a\x6b\x19\x67\x41\xf4\x0b\x1b\xb6\x88\x15\xf6\x31\xdf\xf7\x8e\x23\x67\x0d\x45\x73\x4c\xc3\x56\x34\x99\xcc\x3d\x5b\x61\xf7\xd4\x61\x00\x39\xc9\x4c\x1e\x43\x81\x43\x31\x33\x9f\x06\x0b\x6c\x73\xd1\x47\x25\xde\x1f\x18\x26\x51\x1a\xd8\x9c\x7f\x33\xf2\x10\x29\x97\x47\xcd\xa6\x68\x51\xfa\xa4\xbb\x7a\xc0\x62\x48\x05\xab\xb6\x8d\xea\xab\x83\xf8\xb3\x74\x5f\xf6\x64\x41\x7b\x91\x1a\x9d\x32\xb0\xf1\x74\x10\x98\x18\xb4\xd8\x2e\xae\x13\x5d\x1e\x03\x87\xfb\x82\xe9\xc1\x4d\x61\x0f\xea\x23\x1e\x34\x9c\xc1\x9a\x8b\x34\xfe\xce\x8c\x7c\xb4\x12\xc2\x24\xf6\x07\xcc\x85\xa4\x8f\x11\xc5\x65\x1a\xeb\x11\xb3\x3e\x53\xad\x76\xdc\x47\x7f\x1d\x46\x84\x33\xdb\xc8\x7f\x43\x73\xa3\x28\xc0\x8e\x84\xb5\x4a\xd7\xe5\x36\xd6\x7d\x22\x08\x0d\x21\x43\x13\x3c\xa2\xc9\x00\x95\xe8\xca\x43\x50\xc0\x8c\x31\x35\xb3\x9a\xb7\x4b\xd4\xa2\x72\xed\xf4\xa9\xdc\xbb\x17\x32\x8d\x76\x6f\xd0\x6e\xb8\x82\x0f\x7e\xb4\x51\xac\x11\x2e\xd3\x34\xd9\xfb\x20\xca\xd4\x97\xfb\xd6\xb9\x0d\xea\xde\x83\x50\x8c\x1f\x26\x23\x68\x23\x17\x0a\xc4\x81\x1b\xf5\xd5\x74\xa1\xb3\xc3\x5b\x7a\xf0\xc7\xdf\xb8\x60\x5d\xab\x84\xe0\x15\x71\xa2\xb4\x49\xb2\x97\x84\x85\x1c\x4e\x62\x43\x32\xba\xd4\x2f\x40\xb8\x24\x20\x63\x12\xc7\xd4\x7d\x51\x55\x09\x09\x18\xbc\x13\x51\x6c\x47\x07\x8f\x62\x68\x96\x02\x47\x64\x37\x38\x7f\x95\xdf\xbb\x70\x91\x29\x5e\x72\xc7\xc9\xd6\x60\xd0\x6e\x56\x6d\xd4\xea\x78\xad\x17\xbb\x89\x95\x99\x80\x99\xce\x63\x49\xd9\xda\x32\x51\x25\x93\x68\xd7\xf0\x94\x55\x03\x1c\x21\xf6\xcb\xff\x6b\x1d\x46\xff\x57\xac\xe0\x73\xd6\x0c\x60\x80\x4f\x21\xf0\x96\xe9\x13\xfb\x84\x04\xff\x06\x9a\xf8\x02\xc6\x58\xa1\xf6\xe5\x23\x08\x51\xff\x22\x08\x23\xb8\x1a\x35\xe8\xda\x1e\x1e\xf0\x76\x9d\x70\x4b\xb0\xe2\x75\x56\xe4\x74\x59\x4c\xa7\x74\x22\x07\x11\x69\x15\x93\x34\x6d\xbc\x11\xec\x88\x13\x91\xc1\x39\x0f\x9e\x41\xca\x91\xd8\x28\x69\xea\x0f\x98\x45\xce\xc0\x84\xd7\x53\xec\x4b\xd8\x6e\x46\xd3\x06\xe4\xcb\xd1\xbc\xf1\xb3\x85\x1e\xfa\x45\xf1\x58\xc8\xec\xa9\xef\xd9\x5e\x1e\x30\x19\xa3\x4d\x96\xa1\xf5\xec\xa9\x65\xc1\x90\xc0\xd9\x22\xa2\x2c\xe6\x04\x33\xf2\x17\xb3\x6f\xba\x06\x4e\xc9\x4b\x42\x53\x65\xea\x67\x5e\x83\x0d\x78\x32\xa7\x49\xfc\xd5\x70\xc9\xf0\xab\x10\xfb\x4a\x0f\x64\x6f\xc5\xbf\xd2\xa1\xf8\x4d\xd9\x24\x7e\x6a\x4d\x3e\x4a\xbf\x74\x0e\xca\x43\xc3\x15\x0f\x3b\x18\xaa\x38\x82\xd6\x50\xbb\x3f\xbd\x06\x8d\x7e\x63\xfe\xc3\xd4\x99\xbb\xe1\x60\xb6\x2d\x33\x1c\xa6\xd3\x82\xd6\xe0\x5d\xf7\x0d\xd8\x3a\x43\x22\x60\x8f\x02\x1c\x1c\x8e\xab\xa6\xeb\xb0\x00\x08\xfc\x88\x65\x9e\x28\xcb\x0c\xad\xdf\xfa\x52\xc0\xcd\x04\x76\xeb\x3e\x0a\x24\xd6\x28\xe0\x97\xeb\xc0\x7a\xfc\x95\x8e\x6b\x36\x69\xa3\x08\x66\x59\xa0\x66\xa9\x79\x63\xf9\x32\xa6\x0e\x6c\xc0\xf6\x3f\x15\xee\x7f\x18\x05\xae\x77\x48\xd9\xf0\xb5\xd9\x5f\x9c\xc7\x91\x65\x53\x76\x2f\xef\x96\x77\x68\x43\xa8\xb8\xc8\xee\x72\xa6\xd0\xc9\x1f\xbc\xd0\x82\xad\xe8\x06\xc6\x6f\xac\x28\x75\x23\x7e\xcd\x54\x60\x38\xa5\xf2\x44\x51\x1f\x84\xf2\xde\xf1\xca\x94\xee\x81\x8a\x9b\x01\x43\x38\x66\x01\xed\xb1\x0a\x6b\xb9\x97\xf4\xd5\xa7\x24\x7d\xb6\xe2\x5f\xe8\xac\xcd\xbb\xee\x0b\x3d\x73\x07\x40\xac\x09\x46\xe5\x2a\x5b\xe4\x53\xf5\x94\x2a\x60\xba\xca\x5e\xe4\xac\xe4\xab\x6c\x9e\x07\x6e\x6a\x8d\x11\x5f\x1c\x70\x0c\xac\x2f\xff\x2b\x25\x85\x61\xee\xd7\x36\x18\xd2\xf8\xd0\xe4\xd1\x37\x27\x9b\xe7\x74\xc0\x93\x80\xa8\x42\xf7\x8a\x5b\x41\x66\xc2\x79\xdb\x75\x0f\xbe\xd0\xd4\x9f\xc7\x4d\x38\xb4\x67\xf0\x70\x9e\x34\x49\xa8\x57\x65\x25\x57\x51\xa4\x8e\xc5\xba\xa0\x7d\xc1\xda\x55\xf1\x30\x6b\x56\xf6\xa2\x53\x14\x4d\x4e\x0a\x87\x6a\x30\xb5\x2b\xfa\xff\x1d\xfa\x81\x30\x50\x8f\xb3\x26\x94\x3d\x38\x21\xce\x2d\x37\x5c\x0a\x9a\x41\x69\x83\x47\xcb\x86\x6f\xfa\x6e\x40\x9f\xad\xa7\xc8\xab\x28\x5d\x36\x51\x34\x8c\xc9\xd0\x84\xdc\x90\x1b\x76\x76\x31\xb1\x66\x06\xaf\x75\xbc\xf6\x41\xca\xd9\x97\x9a\xc2\x8c\xb0\x36\x28\x7c\x9d\xdd\x59\x67\x15\xc0\x41\x3e\x5f\xc0\xf8\x77\x36\x08\x8a\xd5\xe8\x49\x18\xae\xbe\x6a\xb4\xfa\xba\xb5\x67\x38\xee\x15\x0d\x16\x80\x02\xe6\x7d\x43\xcd\x3e\xb3\x2f\x83\xcf\x37\x08\x25\x7f\x52\xde\xf4\xc1\x8c\xbc\x19\x3d\xae\x0e\x9b\x03\xf3\xca\xaa\xd3\xaa\x65\x5c\x17\xc0\x7d\xd2\x33\xa9\xac\x32\x6d\x28\x56\x77\x82\xed\x78\x4f\x33\x14\x04\xbe\xb6\x79\x36\x7c\x14\xd6\xf7\x48\xc0\x69\x72\x0a\x6e\x97\x10\xbe\xca\xd0\xb8\x58\xad\xc4\x4e\x83\x3c\x22\x81\x56\x8a\xcb\xac\xcd\x0d\x07\x13\x45\x55\xa6\x72\xe7\x54\x60\x79\x6c\xcf\x75\xf7\x29\x59\x9d\xa7\xa3\xd8\xa4\xe0\x8d\x36\x64\xc7\x4d\xbb\x0a\xcf\x8e\x9b\x92\xfb\xf8\xec\xe6\x8e\xed\x52\x7b\x67\xbe\x9f\x78\x48\xfb\x11\xdb\x0e\xcc\xc6\x51\x6a\xdc\xd2\xc4\xbc\x86\x14\x5e\x39\xca\x43\x84\x61\x50\x3f\xbd\xd1\xec\x27\xcd\x7e\xd1\xec\x99\xe6\x17\x45\xb5\xbb\x2b\xde\xc7\xd9\x3f\x69\xfe\xfc\x3d\xbd\x28\xd9\xf7\x9a\x5f\xa8\x5d\xb1\x2a\xf5\xe3\xfb\xe6\x39\x7f\xdf\x3c\xc7\x87\xf4\x82\xfd\x09\xd6\x0a\x5a\xed\xba\xba\xbc\xbd\xd3\xdd\x8d\xd2\x5a\x6d\xbb\x4a\x6c\x34\x7d\x76\xc1\xde\xc1\x63\x69\xb6\x6a\x58\x01\xe2\x74\x72\xbe\xca\x44\x91\xd3\xd9\x94\x5e\xb0\x9f\xcd\xe3\x6d\x51\xdf\x96\xf2\x82\xfd\xbd\xb7\xdd\xf8\x67\x0c\x11\x55\x68\x3c\x7b\x4e\x9f\x59\xb3\x8d\x5f\x4f\x3c\x4e\x27\xbb\x07\x9a\x15\xe7\x7f\xfe\x67\x3e\x75\xf9\xfe\x1a\xe6\xcb\xa6\xe7\x39\xe5\x36\xbb\xcd\xf0\xad\xe6\xfb\x2f\x5f\x7f\xf5\x6b\x42\x6e\x2a\xb5\xfa\x40\x0e\xec\x47\xcd\xf7\x3b\x8b\x36\x9d\x90\xe2\xa6\x51\x55\xab\x05\x61\x1f\xcb\xa6\xbc\x29\xab\x52\x3f\x26\x04\x11\xea\x09\x5b\x97\xcd\xae\x2a\x1e\xfb\x97\xff\xa6\xf9\xbe\x12\x5a\x8b\xfa\xad\x21\x91\xbc\x4d\xe6\x6c\xa3\xa4\xfe\x45\x18\x82\x24\x9f\xcf\xe7\x07\xf6\x0f\xcd\x33\x72\xad\x76\x84\x91\x9f\x4c\x2a\x61\xe4\x4b\x20\x14\x61\xe4\x07\xb1\xd1\x24\x67\x42\xf2\x8c\xfc\x02\xc0\xef\x84\x91\xd7\x84\x91\x57\xea\x4f\xc2\xc8\xb6\x21\x79\xcf\xbb\xea\x00\x59\x1c\x03\xed\x3a\x96\x77\xe9\xd0\x53\x57\x77\x45\xfd\x85\x8e\xe7\x74\xa6\xd5\xcf\xbb\x9d\xdb\x68\xa6\xda\xe3\xcc\xb0\x9a\x6b\x56\x72\x21\x4f\xba\x37\x6b\x2e\x64\x56\xe6\x53\xc9\xc6\x5f\x38\x76\x75\x97\xe3\x33\x03\xdd\x75\x82\x11\xd3\xdf\xb8\xd3\xae\x9a\x06\x11\xe6\x81\x68\x04\xb5\xe5\x9f\x60\xf4\x82\xb0\x7b\xc7\x31\x61\xd1\x92\x7d\x1e\x62\x35\xc1\xfc\x6d\x5e\x16\xc0\xb7\xd4\x1c\xe2\x55\xd7\x33\x30\xa8\x01\xaf\xd9\x22\xf7\x22\x71\xcd\x88\xaa\xd6\xbe\x26\x0c\xa0\x07\x4c\xc6\x99\x4d\x63\x3a\x85\x37\xba\x0e\x1b\x80\x31\xd6\xe3\x51\x2e\x4e\x08\x65\xc4\xb4\x6e\xf4\x20\x8a\xa4\x8c\x6b\xfa\xe9\xcf\xb2\x56\xc6\x75\x0f\x9e\x42\x29\x4d\xf0\x93\x71\xc9\xe1\x75\x16\xcb\x28\x0a\xbf\x3f\x29\x41\x03\x77\xb2\xb0\x32\x95\x09\xd2\xb8\x0e\x68\x4c\x1d\x22\x03\x9f\x3f\x4d\x1a\x1d\x7c\xe5\xa8\x21\xe4\x44\xea\x09\x4a\xe8\xd4\x92\x8b\x24\x58\x16\x1d\xd8\x62\x07\x36\x20\xab\xa6\x19\x85\x0b\xfe\x17\x07\x40\x23\x2e\x90\xef\x0f\x66\xc1\x5f\x5a\x2b\x0c\xdc\xbd\xa4\xd5\xee\x2a\xfe\x13\x30\xb6\x65\xef\x75\x52\x5a\xef\xf9\x22\x93\x59\x93\xe7\x7e\x20\x9a\x3b\x36\x59\x04\xcc\x6c\xe1\x76\x9f\x7a\x82\xd6\x26\xd0\x44\xe7\x30\xec\xdf\xa3\x07\x88\xd9\x3c\x3e\xf1\x78\xb9\xa0\x07\xd6\xdc\xa9\xfb\x13\x07\xb1\xb5\xc4\x46\xc1\x59\xc0\x5d\xb9\x3e\x75\x48\x6c\xf3\xd0\x03\xd3\xea\xf6\xf6\x44\xf4\x7f\xcd\x7d\xf4\xae\xfe\x68\xe4\x13\xe6\x06\x74\x1f\xeb\x54\x24\xd2\x96\x4b\x53\x77\xb4\x61\x2a\x19\xd3\xc4\xdd\x9a\xfa\xc4\xf4\x30\xb2\xad\x5d\x35\xcd\x77\x4a\x7d\x68\x92\xbd\x5d\xed\x93\xfd\x00\xd9\xaa\x0f\x6a\x60\xcf\xe7\x7e\x01\x26\xdf\x66\xee\x03\x8e\xa1\xf6\x83\x2c\x48\x22\x0f\x87\xc3\x81\xad\x9a\xe6\xaa\xdd\xde\x88\x3a\xd9\xaf\x54\xd5\x6e\xe5\xa5\x6a\xa5\xb6\x38\x2d\xd5\x6b\xfb\xad\xc9\x60\xdd\x9c\xcc\x59\x55\x4a\xf1\x9d\xbf\x53\x7d\x36\x55\xef\xee\x0a\x09\xbe\x5d\xf7\xe5\x5a\xdd\xc3\xd5\x9f\x80\xd1\x04\x57\x4a\x6d\x01\xc3\x77\xd5\x34\x6f\x6a\xb5\x6b\x92\x3d\xd9\x54\xaa\xd0\x24\xb0\xac\x5a\x35\xcd\x37\x26\x2d\x25\xee\x8a\x24\x04\x3a\x1f\x6f\x0e\x0c\x6e\x8e\xe2\xed\x03\x01\x44\x14\x7d\x36\x92\xe5\xfe\x67\x74\x2f\x70\x24\xf5\xee\xa0\x56\xc8\x2d\xb6\xa2\x82\x15\x59\x52\x56\x71\x9b\x0b\xec\x37\x71\x94\x42\x85\x41\x20\x88\x07\xf7\x5c\xcb\xb8\x62\x2d\xc5\x53\x0b\xd7\x53\x99\xcc\xe1\x60\xdc\xdd\xb6\x39\x84\x4a\xf7\x47\xa2\x4d\x14\x91\x5b\xa1\x49\x09\x97\x86\x23\x03\x55\x89\x30\x93\xa0\xa4\x14\xc6\xbc\x4a\xaa\x4c\x82\xeb\x6d\xe1\x2d\xbd\x59\x7f\x20\xc7\x0b\x78\xf1\xaf\x96\xfd\x47\x8e\xb1\xe6\xb1\x32\x72\xc9\x82\x3e\x57\xd9\x8b\x7c\xba\x2b\xea\x06\x09\x17\xf7\x73\x06\x80\x43\x25\x74\x3c\x40\xfa\xe3\x09\x72\x6d\xd6\x57\x4c\xc4\xc2\xcb\xe6\xaa\xb8\x8a\x6b\xda\x75\xb1\x7b\x30\xe1\xbc\xb0\xed\xc2\x81\x83\x04\xa9\xa7\x9c\xec\x1e\x48\xc8\x14\x1b\x56\xb1\x06\x29\xfb\x2d\x58\x51\x76\xb8\x76\x75\xdd\x7c\x12\xc2\xbb\x91\x9b\x62\xf5\xe1\xb6\x56\xad\x5c\x9b\x4d\x28\x36\x2d\xe6\xa4\x94\x77\xa2\x2e\x0d\x07\x6b\xe8\xd4\xf4\x74\xaa\x79\x33\x6b\x80\x4e\x60\xe4\x8e\x38\x90\x10\x62\xa0\xc2\x50\xac\x78\x4e\xba\xa2\x7b\x3b\xbc\x4f\x0c\x93\xa7\xfb\xbd\x57\xc5\xfc\xcb\x1e\xb7\xe3\xe3\x7f\xd3\xef\xa3\xae\x2e\xfa\xae\x9e\x83\xd7\x7f\x81\x40\x5b\x71\x81\xb3\x56\x82\xf5\x3e\x91\xaa\xde\x16\x95\xed\x09\x50\x8b\xff\x0d\x33\xfd\x0d\x9d\xab\x71\xa7\xeb\xba\x3a\x8d\x15\x0f\x7a\xb9\xb0\x31\xf9\xe7\xa8\xb4\xb8\x6a\xb7\xa2\x2e\x8d\x70\x98\x1a\xa9\x3b\x29\x68\x52\x1c\x58\x73\x3f\xb0\x9e\x3a\x12\xee\x9d\x3a\x5e\x99\xef\x6a\x5a\x64\x2a\x77\x33\xc2\x70\xbc\xfd\x25\xd7\x99\xca\x97\x66\x81\x47\x95\x9f\x60\x75\xd7\x65\x39\x0d\xdf\x0e\x72\x9b\x82\x7a\x3b\xf9\x03\xc5\xc0\x83\x97\x6a\xbb\x6b\xb5\x58\xc3\x40\x49\xe3\x9f\x02\x08\xf6\xd1\x61\xd0\x20\xa7\x05\x72\xa4\x07\xf6\xcb\x20\x2a\xf2\x58\x4f\x61\xa8\x84\x1b\x51\xcb\x9b\x14\x88\xef\x30\x36\x41\x41\x1b\x4b\xda\x75\xa6\xe3\x12\x1d\x4c\xfc\x7e\x9e\xc6\xc4\xca\xcd\x9f\x64\x90\xba\x2e\x36\xc3\xc9\xef\x52\xd4\x30\xc6\x28\x5d\xb5\x34\x8a\x7e\xd6\x01\xb8\x75\xc9\xab\xd9\x7d\xb9\x06\x27\xc0\x6a\xb6\x2d\xe5\x2f\x70\x53\x98\x9b\xe2\x01\x6f\xfa\xf4\x20\xd5\xbd\xc7\x5b\xd3\x16\x5b\x86\x4b\x2b\xc3\x77\x14\x0b\xde\x2a\x28\x65\xed\x81\x26\xea\x38\x5e\x73\x5b\xd7\x42\xea\xb7\x96\xf9\xf8\x69\x88\x7e\xef\x49\x1f\x66\xfb\x37\xc9\xfd\x04\x5d\x71\xc9\x69\xa3\xa8\x32\xd2\x9a\x34\x32\x55\xcb\x2b\x18\xd9\x21\xd9\x26\x7f\x8e\xe9\x66\x04\x18\x00\x41\xa9\x5b\xa9\xcb\x2d\xae\x2e\x28\xf5\x29\x7c\x08\xcb\x22\x5c\xf2\x61\xcd\x21\x8d\x32\x2c\x83\x13\xb3\xa7\xbd\x2d\xff\x14\x6e\x53\x14\x5b\x92\xb4\x10\x4a\x76\x57\x3e\x88\xca\xb0\xff\x53\xb3\xaa\xb9\x17\xca\xb0\x64\x43\x52\x98\x82\x6d\x4a\x8a\x56\x2b\x92\xb4\xa1\x2a\x7b\x8c\xa0\xf6\x77\xbb\x48\xeb\x20\xfc\x1e\x40\x60\x6c\x8b\x87\x78\xce\xea\x6c\x91\x9f\xc7\xb2\xeb\xe6\x94\x4e\xe3\x3a\x7b\x61\x98\x37\xb3\xa0\x26\x3a\x88\x1d\x7d\x02\x15\x5a\x72\xce\xe3\x3a\x25\x37\xaa\x5e\x8b\x9a\x24\xc4\xda\x51\x12\x9a\x7e\x9e\x10\x18\x17\x08\x46\xbd\x48\xe6\xa0\x55\x04\xbe\xfc\xf3\x97\x6a\xa9\xa6\xfc\x05\x25\x28\xe2\xd9\xe3\x97\xb8\x98\xf6\x0c\xd9\xf4\x1f\x66\x6a\x9b\x35\xca\x2c\x47\x75\x1a\xfb\xa2\x5d\xe6\xf3\x5e\x8c\xd8\x15\xeb\xb5\xd9\x94\x86\x2f\xb9\xd2\x27\xc7\x2f\xd8\xfa\x62\xfe\x29\x81\x61\x4a\xec\x7b\x34\x09\x2b\x72\xb2\xec\x3e\x75\x72\x54\xf3\x4f\x97\x7d\x02\x84\xa9\x19\xf5\x95\xc9\xc9\x43\xda\x89\x99\xda\x6c\x1a\xa1\xa1\xa4\xc4\xdd\x21\x03\xc4\x1c\x93\x5b\x04\xca\x8d\x1b\xf5\xf0\xb6\xfc\xb3\x94\xb7\x51\x64\x6b\x73\x7e\xa3\x1e\x06\x82\x97\xcf\x42\x2c\xdb\x5b\x6e\xe2\xf9\x4b\x5e\x76\x9d\x45\x3d\xb7\x31\xb2\x7f\x41\xf7\x1e\x45\x59\x3c\x7f\x19\x3c\x85\xd9\xe0\x56\x56\x1d\xcc\x9a\xd2\x9b\x8a\x94\xcb\x1a\x58\x84\x13\xf5\xfa\x49\x54\xa5\x91\xfa\xbb\xae\x04\x13\xb8\xbe\x98\x32\xdc\x4b\x4a\xda\x75\x73\xc7\x87\x97\x53\x37\x00\xbb\x2e\x2e\x4e\x0d\x39\x56\x33\x45\x61\xca\xf4\xc4\x6d\x03\x8e\x59\x31\xc9\xbf\xd5\x99\xf0\x5b\x80\x04\xa0\xb9\x0a\xf9\x57\xd6\x0b\x57\x51\x64\x9e\xbc\xd1\x3c\x7e\xa3\xbb\xee\x26\x26\x7f\x41\xc7\xbc\x33\xf8\xc5\x0f\xf3\xff\x9a\xff\xd7\x19\x2e\x7c\xe6\xea\x0e\x7a\xc3\x5c\x5e\xbc\x24\x14\xa8\x6c\xf8\xc7\x6b\xf1\x60\xa4\x76\xa7\x1b\x00\xd5\xc0\xd9\xa4\xdc\x1a\x72\x14\xa6\xce\xce\x7c\xea\x5a\xc5\x7a\xbc\x3a\x52\x06\x35\xc8\xe6\xf9\xd0\xf5\xaf\xeb\x06\x89\xbd\x31\xb8\x7b\x9f\xe9\xd9\x7d\x5d\x6a\x11\x93\xbf\x4c\xd6\x6a\x65\x78\xb7\xb3\x3b\xbd\xad\x5e\xfe\x05\x7f\xd1\xbf\x81\x32\xc3\x25\x29\x0b\x7d\xeb\xa8\xf0\x46\x07\xd6\x54\x40\x2d\x2e\x29\x0b\x10\x4d\xaa\x81\x3b\xd9\xcd\x91\xa2\x5b\x0c\xdb\x04\x1a\x60\xf0\x36\x36\x34\x91\xd9\x3c\x0f\x24\x52\xdf\x11\xbd\x85\x55\xed\x4e\x2b\x33\x82\x34\x25\xcc\xce\x85\x9c\x0d\x25\xc5\x01\xd3\xc3\xc7\x02\x09\x2c\x52\x7e\xad\x9b\xc3\x30\x0b\xa6\x51\x14\xbd\xb3\x03\xf6\x58\x17\x41\x8d\xb4\x77\x5f\xec\x62\xc1\x7e\xd4\xec\x58\x38\x6b\xa4\x65\x93\x0e\x34\xf1\xd7\x89\x3e\xb0\x66\x24\x13\xf5\xde\x6d\x75\x14\xc1\x34\xf5\x70\x38\xf6\x79\x5a\x38\xc6\xf0\xff\x61\xf6\x82\x41\x53\x32\x07\xa5\x5d\x50\x8e\x95\x8b\x1c\xf7\x08\x94\x72\x89\x47\xe4\xea\x19\x9d\xef\x2d\x5d\x62\x0d\x21\xdf\x82\xfd\x2b\x1d\x6d\x67\xd6\xe3\xd2\x4e\x5f\x87\xf0\x08\x5a\xdc\x74\x36\x5f\x3c\x0f\x66\x32\x2a\xde\x66\xcf\x16\x74\x4a\x48\xa2\x41\x04\x24\xe4\x98\x62\x3d\x42\x32\xb2\xb7\xf5\x68\x0b\x65\x25\x0f\xb9\x4a\x4d\x53\x02\x4a\xc9\xd8\xb5\x8b\x4c\x17\xf3\xf9\x73\x3d\x25\xd4\x7c\x80\x29\x43\xf9\xda\x56\xad\xeb\xa4\xbf\x22\x64\x29\x67\x46\x1e\xe4\x0b\x16\xeb\x97\x7c\x61\x92\x80\x9d\x8f\x22\x62\x0f\x83\xea\x72\x1b\xf7\xe7\x2b\xcf\xd0\x8c\x28\x8a\x8e\x94\xa8\x51\x14\x1f\x2b\x56\x09\x7e\xc9\xe9\x84\x74\xd7\x01\xaa\x5e\x4f\xa5\xd8\x55\x86\x3f\xeb\x8f\x3c\x06\x9f\x2b\x69\xa2\x00\x92\xd1\xba\xba\x0e\xad\xfb\x5d\x37\xd7\x76\x2d\x7d\x05\x9b\x1d\x68\x11\x87\x5d\xbe\xed\x1f\x1c\x75\x7b\xe0\x20\xdb\x0f\xfa\xbd\x57\x65\x96\xd2\x88\xda\xe7\x4e\xa3\xf9\x8b\x66\x99\x70\xdb\x2a\xea\x2b\x73\x33\xf0\x0f\x83\x43\x1f\xe0\x5e\xfa\xb0\x81\xa0\xef\xd9\x05\xb7\x76\x76\x6b\xd0\x7a\x56\xa8\xe4\xfc\xb7\x66\x76\x30\xaf\xe3\xda\x0a\x2d\xfd\x06\x54\x03\xc0\x06\xf5\x9f\x8c\x69\x26\x73\xd8\x15\x92\x1a\x2a\x7b\xa0\x56\xb7\xb1\xab\xa1\x3a\x0f\x3b\xd7\x2b\x0d\xec\x56\x61\xc2\x0c\xb5\xbb\xa7\xb8\xd2\xf9\xcb\xf1\x8a\x12\xa4\xe0\xe6\x3c\x30\x01\x76\xfd\xf4\x1d\x94\xf8\x1a\xb2\x35\x4e\xd9\x66\xd8\x28\xe1\x74\x70\x62\xac\x60\x3b\xb1\x44\x1d\xd8\xa8\xa2\xa0\x92\x1e\x20\x6a\x79\x48\x92\x93\x4d\x02\x5f\x0a\xe6\x2c\x43\xb0\x4b\xcd\x8c\xb1\x8c\x8d\xb9\xc4\xc5\x27\xb1\x1c\xcc\xb1\x51\x87\xef\x24\x31\xd5\x39\xdf\xe3\x81\x4b\x12\x7a\xb8\xf4\xe0\x59\xfb\x03\x53\xc7\x70\x15\x32\x95\xce\x93\xf5\x8c\xd0\x24\x93\xb9\x63\x10\x2d\x08\x5e\x26\x0c\x1b\x55\xe7\xe6\x03\x0a\xac\x98\x55\x56\x9f\xbf\x80\xff\xf3\x50\x94\x63\x3f\x87\x9e\xea\xa3\xba\x19\x91\x9d\x2b\x49\xed\x99\xc6\x4a\xf2\x8b\xff\x7c\x31\xbf\xb8\x65\x3b\xc9\x2f\xde\x67\xef\xf3\x67\x17\x6c\x63\x2e\xeb\xf4\xbd\xbc\xb8\x65\x6b\x89\x9e\x96\x08\xf9\xdb\x21\xdc\x74\x07\x30\xc1\x1d\x80\xff\x76\x9b\xb2\x12\xe0\x79\x79\x67\xb3\xa2\x43\x28\xda\xf0\x74\xce\x40\xa7\xfb\x20\x1e\x6f\x85\xa4\x17\xe5\x10\x59\xa8\x71\xf6\xe2\x27\x34\x7f\x37\x33\xf0\x66\x74\xa8\x3b\x36\x23\x2a\x36\x4d\xb7\x0f\x93\x9e\xf2\xf3\x38\xe9\xd8\x75\x33\xdb\xd5\xca\x3a\xf9\x13\x61\xed\x55\x02\x4b\xc3\x74\x00\x1a\x82\x06\xa6\x87\x53\x30\x45\xbd\x9f\x18\x9c\xdb\x0d\xd4\x8e\x12\x82\x0a\x4d\x9c\x3e\xb1\x6c\xe2\x30\x62\x6e\x14\xdd\x49\xeb\x3e\xed\xfc\x6a\x40\xdf\x1d\x45\x93\xb5\x0c\x5c\xff\xad\x3f\x92\x3d\xd1\x9c\x78\x0b\x13\x4a\x0f\x74\xd8\xb8\x21\x2f\x02\xdf\xfc\x58\x54\xf1\x28\x88\x8f\xc4\xa0\x4f\xa1\x8e\x38\x45\x5b\x58\x79\xc2\xc3\x70\x6f\x1a\x91\x68\x68\x0b\x43\xd4\xe1\xde\xe4\x7e\x23\x19\x79\x5f\xbf\x97\xc4\x2c\xca\xc9\x89\xac\xf2\x74\x56\x34\x45\xc2\x2d\x1a\xba\x78\x14\x54\xdd\x05\x2e\x05\x63\xa8\x61\xf3\x46\x06\xf2\x9a\xa6\x3a\xa6\x89\xf3\xbb\x30\x1b\x2a\x2b\xb3\xd2\xaa\x9e\x73\x2e\xe4\x4a\xad\xc5\xcf\x3f\x7d\x7f\xa9\xb6\x3b\x25\x91\x29\x9b\x12\x4e\xa6\x27\x9e\x68\x7a\x58\xba\x08\x80\x80\xfe\x8c\xc6\xbb\x6f\x85\xd6\xa5\xbc\x05\x27\x92\xf0\x7e\xa6\xeb\x62\x0d\xeb\x6a\x51\x51\xd6\xd3\x53\x40\xa0\x47\x44\xbe\x01\x33\xbc\xb2\x79\x53\x15\xa5\x44\x94\x17\xd3\x71\x76\xa9\x11\x21\x43\xa5\x62\x3f\x66\xd0\x72\x1f\xad\xe5\x0e\xd6\xca\xc2\x9f\x99\x0a\x7a\x2b\xe3\x9a\x09\x80\xd9\x0b\x94\xf4\xa5\x0d\x2a\x1c\x05\xe6\xbe\x2b\xc9\xc8\x94\xd0\x00\xcc\xef\x76\xac\x62\x1a\x1e\x17\x68\x5f\xb7\x80\xd9\x33\xbb\xef\x5e\x76\xdd\xce\x8f\xca\xb4\x8e\x85\xd9\x92\x4d\x69\x53\x92\x91\x69\x60\x3a\x62\x97\xb3\x32\xd5\x80\x86\x45\x72\xc2\x4a\x67\xd3\xee\xec\x45\x64\xd7\xb9\x17\x26\xde\xd6\x44\x53\x8a\xc1\x53\xfa\x06\x97\xa8\xb5\xf2\x9f\x29\xa1\x38\x9d\x95\x39\x96\x68\xeb\x4a\x6e\xaa\xb6\x3e\x83\x88\x0f\xf8\x5b\x4a\xfc\xaf\x5a\x7d\x56\xa9\x62\x7d\x56\x8b\xa6\xfc\x53\x9c\x35\xab\x5a\x55\xd5\x59\x2b\x21\x71\x55\x95\xab\x0f\x67\xeb\x9b\x0a\x2f\xb6\xaa\x6d\xc4\x5a\xdd\x4b\xbc\x6a\x77\xf8\xdf\xb0\x32\x78\xa5\x3e\x8a\xda\x5e\xb5\x1a\x2f\x84\xd4\x2e\xad\x12\xc5\x47\x71\xb6\xba\x2b\xe4\xad\xb0\x71\xca\xcf\x70\xd1\x3c\xfb\x20\x1e\xa1\xdc\x0f\xe2\x11\x82\x70\x9a\x8b\x76\x87\x61\x3a\xcf\x2c\x92\xd4\x56\xc8\x96\x04\x1b\xc0\x29\xb3\x41\x9d\xf3\x93\xfc\xca\xd1\x89\xcb\x1c\x9d\x44\x11\xaa\x19\xfd\x50\xa4\x75\xff\xd4\x75\x79\x7b\x2b\x6a\x33\xd6\x1d\xc6\xd0\x9d\x69\xd8\xe9\x80\xb6\xb8\x80\xfa\x96\x1a\x5e\xa2\x6f\x6c\x0c\xb1\x54\x0f\xb0\x8f\x6c\x25\x7b\x94\xec\xa3\x99\x32\x52\xdd\xc7\x94\xdd\x98\x3d\x24\xbd\x60\x0f\x92\x5f\xfc\xc7\xec\xf9\xb3\x0b\x76\x2f\xf9\x45\x9c\xa5\x51\x4e\x7f\xe3\xd9\x3f\xa3\xfc\xf9\x05\xbb\x86\x1d\x63\xf6\x3c\xa5\x49\x76\xf6\x5e\xe7\xcf\xe3\xec\x9f\x66\x91\xc8\x9f\xd3\xf7\x75\xfa\xec\xe2\x76\xcb\xae\xec\xa6\x52\xdc\xa8\x56\x77\xc5\x6e\x67\xfe\xce\x1b\xad\x6a\xb3\x03\xcd\xa6\xe7\xb0\x91\x34\x08\xa7\x00\x41\xda\x9b\xee\xbe\x5c\xdf\x0a\x4d\x93\x67\x17\xec\xd2\xbe\xfe\xed\xd7\xd7\xdd\x77\x5f\x7f\xf1\x15\x7d\x76\xc1\x3e\x98\xb4\xf7\x17\xef\x2f\x2e\xd8\xd7\xf0\x38\x7b\x7f\x3f\x9b\x9e\xe7\xd3\x84\xc6\x69\x62\x1e\x98\x6a\x5c\xa4\xff\x91\xe4\xcf\x4d\x4a\x12\xbf\x5f\x4f\x69\x47\x3b\x7a\xc1\xde\x4a\x84\x62\x32\x03\x88\x7d\x21\xcd\x5e\xfe\x3b\xfc\x7e\x25\x39\x79\x7e\x41\x8c\x20\xba\x2a\x74\x4c\x9e\x5b\x0f\xa4\x47\xc9\x0b\x08\x1a\x62\xd5\xe1\x3f\x48\x6a\xd2\x8e\x3c\xcd\x0b\x42\xd9\xa3\x84\x9c\x9c\x10\xf6\x28\xb9\xbd\x3b\x6c\x25\xff\x5a\xa2\xca\xea\x71\x14\xa6\x85\x76\x5d\x16\x1c\x7c\x7f\x77\x3a\xc4\x8d\x19\x29\x47\x8e\x2e\xb8\xc0\x69\xa6\x39\x54\x35\x0c\x15\x3d\x0a\xe8\x80\xe8\x2e\xf1\x3d\x7e\x6c\xec\xe3\x2d\x29\x75\xc1\x9a\x15\x1a\xb2\x90\x29\xa8\xc3\xb3\x79\x9e\x42\x04\x67\x77\xa2\x8e\x10\xd7\xb1\x59\xb8\xc0\x4a\x1e\x94\xd3\x3e\xa4\xb3\xa4\x34\x19\x3f\x73\xf8\xba\x81\x4d\xff\xf8\xec\xc0\x90\xbe\xe0\x82\x73\xfe\xbb\xec\x09\xd1\xc4\x0e\x7a\xdb\x0b\x99\x59\x9b\xf3\xc9\xdc\x31\x79\x02\x8e\x12\xb2\x01\xb3\x6d\x5f\x59\xf1\x36\xc6\x2f\xb8\x93\xba\x31\xe9\x56\x5d\x57\x18\xa6\x6b\x95\xa7\x45\x3a\x89\x2b\xbe\xa2\x89\x4e\x62\x39\x73\xee\x1c\x7d\x38\xeb\x15\x65\x8d\xf9\x99\x2c\x0c\x87\x59\xf5\x60\x98\x41\xe6\x6c\x9e\xd3\xae\x9b\xa8\x8c\x3c\x27\x79\x14\x35\x30\x76\x02\x87\x83\xe1\x9e\x08\x36\xfe\x83\x5d\x68\x53\x15\xfa\x35\xba\x30\x76\x9d\x3d\x2c\x80\x85\x53\x52\x99\x95\x39\x22\xd7\xc4\xb1\xca\xca\x3c\x15\x49\x0d\xe0\x45\x10\xc4\xcb\xc5\x5d\x5d\xf6\x50\xe7\xfe\x98\x73\x32\x67\x46\xba\x60\xf6\x8c\xda\x0c\xf7\x23\x45\xf3\x49\xac\xc7\x28\x7a\x2b\x9d\xd6\xeb\xad\x3b\x8a\x00\x36\xcb\xaf\x52\x03\x67\x2e\x74\xda\x6a\xc1\x14\xdd\x1e\x43\x9d\xf5\x7c\x58\xfb\x92\xcf\x9d\x7a\xcd\x82\x33\x7b\x50\x55\x26\x82\x00\x7c\x2d\xa5\x6c\x34\x2e\xcd\xe8\x93\x4c\x72\x4d\x13\x19\x45\x47\x1b\x14\xa8\x2a\x39\x79\xf3\xfa\xed\x35\xa1\xac\x09\xcc\x33\x43\x97\x1d\xe1\x22\x2c\xf4\xae\x3a\x77\x7a\x5b\xa1\xeb\x4e\x22\x0f\x74\xb6\x56\x52\x0c\xf0\xb9\x15\xef\x1d\x8a\x1b\xf4\xf2\x2a\xd3\x9b\x98\x20\x12\x85\xf7\x11\x04\xce\xa7\x11\xdf\x5d\xbf\xfa\x01\xf4\x44\x80\x51\x59\xa2\xa3\x3b\x60\x02\x57\x42\x8b\xb8\x8e\xa2\xe1\xc2\x6c\x0f\xb3\x6b\xa6\xba\x2e\x33\x9c\x58\xb3\x53\xb2\x01\x13\x39\xa6\x99\xc8\xcd\x38\x43\xbf\x55\x2f\x5d\xc2\x68\xd1\x45\xad\x09\xb3\xd7\x20\x6e\x9a\xcb\x4b\xfb\x1d\x7b\x0b\x61\xa4\x5d\xae\x16\x8c\x0e\xdc\x9d\x90\xeb\xa1\x6c\x7a\x72\x53\x1a\x6e\x1c\xb0\xf8\x08\x77\x7e\x8e\x95\xb9\x15\xa6\x1a\x3b\xd5\x9c\x10\x75\x8d\x84\x3b\x54\x5b\x05\x40\xfc\x83\xde\x45\x13\x12\xae\xba\xae\x64\x25\xaf\x59\xcd\xb5\xf9\xc6\x51\xbf\xc9\xbe\xdf\x14\x76\x59\xcd\x1a\x6c\x58\x52\x8e\x4f\xf6\x31\x26\x54\x32\x87\xb0\x34\xaf\xd4\x1a\xbc\x8b\x92\xfd\x81\x09\x5d\xdc\x9a\xff\xe1\xb4\x4b\xe0\x33\x8f\x32\x74\xe7\x2a\x9b\x1f\xd4\xaa\xa8\x92\x2b\xcb\x28\x6d\x65\xb6\xc8\xa9\x77\xe5\x9a\xb3\x5d\xad\xcc\xa7\xc1\x6a\x6f\x32\x77\xce\x5e\x1e\x88\x15\xc7\x97\x99\x32\x25\x86\xc1\xba\x78\x38\xbf\xbf\xbf\x3f\xdf\xa8\x7a\x7b\xde\xd6\x15\xb2\xac\xeb\xa5\xe1\x32\x6a\x23\xc7\xfd\x7c\xfd\xcd\xf9\xff\x10\x86\xf6\x77\x4d\xb2\x27\xcf\x49\xf2\x95\xc4\x30\x40\xe0\x1a\x71\xb1\x33\x8c\x27\x41\xdf\x62\x4c\xc1\xe1\xfb\x60\xee\x07\x5f\xda\x56\xec\x0c\x32\x3c\x98\xe7\xbf\x37\x60\xe5\x15\x64\x30\x29\x36\xc7\xef\xc5\xc7\xc2\xda\x35\x06\x88\x6e\x7b\x53\xa6\x79\xfb\x02\x3f\x07\x5f\xba\xc0\x92\xe0\xed\x8b\x03\x73\xc3\xf5\x1b\xc0\xb2\xc1\x57\x88\x4b\x7c\xf7\xea\x07\x62\xeb\x1e\x0e\x6b\xfc\xc6\x47\x51\x1b\x89\xdd\xb4\x11\x2a\x41\x12\x31\x7b\x0b\x8b\x0f\x83\x76\x81\x52\x97\x18\x62\xe2\xad\xf9\x20\x49\xec\x24\xfb\xeb\xdb\xd7\x57\x36\xdd\xb4\xce\x25\xbf\x7b\xf5\xc3\x81\x05\xcb\x27\xf6\xa9\xeb\x0f\xc0\xc3\x3d\xf8\x5e\x6f\x77\xa7\x75\x84\x3a\x7d\x25\x63\x58\xa4\x87\xeb\x32\x65\x9a\x26\xaf\x64\x3c\x4c\x05\xe4\x3c\x93\xf0\xa6\x16\x56\x67\xf8\x9d\x8c\xbf\x90\x14\x12\xaf\xeb\x42\x36\x3b\x55\x6b\x93\xf8\xbb\x4d\x1c\xe9\xa8\x8e\x16\x32\xd0\xb9\x71\xc1\x84\x99\x03\x92\x4b\xd8\x04\x46\x9e\x03\xd6\x3a\xdc\xd7\xa5\xdd\xc5\xfb\x03\x93\x94\x6d\xf8\xce\x61\x99\x76\xdd\x8e\xad\xfb\xdb\x28\x8a\x37\x81\xd5\xfd\xc6\x0a\x34\x34\xbd\x89\x37\x34\xb1\xb6\x9a\xec\x8e\xdf\xcc\xbe\x12\x1b\x51\xd7\x62\x1d\x53\x76\xcb\x6f\x66\x97\x45\x55\xdd\x14\xab\x0f\x4d\x4c\x94\x5c\x89\xb3\xad\xd8\xaa\xfa\x91\x50\xb6\xe5\xbb\x59\xa3\x0b\xdd\x36\x97\x16\x53\x90\x3d\x9a\xfd\xfb\xa3\xf9\x79\xe0\x73\x76\xcd\xc9\xaa\x90\x2b\x61\xc4\x63\x76\xc5\xf7\xb5\x28\xd6\x8f\x6f\x75\xa1\xcd\xa4\xbc\x15\xfa\x27\x3b\x2a\xbe\x3b\x8e\xd3\x85\x81\xae\xca\x4d\xfc\x82\x73\xfe\x00\x7b\xd3\x64\x45\xf7\x2b\xbe\x3f\x2c\x5d\x04\x96\x6b\xcb\x45\x15\x94\xae\x32\x7d\xec\x4f\xce\x75\xf6\x22\x3f\x68\xbe\x3a\x8a\x34\x79\x18\x08\xd0\x1a\x05\x68\x7d\x30\x75\xfa\xa2\xaa\x86\xd5\x6a\x4e\xe8\x21\xa0\x52\x69\xe1\xe2\xf8\x9b\x96\xfc\xd1\x8a\x46\x1f\x35\x24\xd4\xfa\x9e\x0a\x07\x76\xf6\x00\x2e\xdf\x1f\xcd\x4a\xf9\x11\xec\x1b\x04\x7b\xcc\x44\x6e\xba\x1e\x57\x7d\xc3\xcb\xd7\xe5\x5a\xbc\x2a\xb7\xd0\x73\xa7\xfc\xb0\x4d\x21\xbb\xd9\xd6\xe6\xe0\xc2\xbd\xdb\x77\xce\x69\xda\x0a\x6a\x08\xfc\xf2\x01\x0c\x78\xad\xe1\xe3\xd6\x6c\x00\x99\xf9\x65\x22\xd3\xb9\x0d\x4b\x7a\x35\x2b\xaa\xfb\xe2\xb1\x89\x45\x76\x65\xfb\x3c\x1f\xe1\x44\x14\x37\x66\x9c\x1f\xdb\x72\x89\xae\xbb\x76\x39\xab\x28\xaa\x66\x90\x31\xd6\x94\x7d\xc0\x18\xd2\xe8\xaa\x6a\xea\x73\x37\xdb\xd5\x6a\x5b\x36\x22\xbe\xea\xb7\x4c\x7e\x3b\x2b\xd6\x6b\x76\x35\xb3\xeb\x3c\xbf\x82\x2d\x9a\x5d\x61\x80\x23\x7e\x35\xdb\x14\x65\xc5\x76\xb3\xb6\xae\x78\x1c\x8b\xae\x83\xcb\xae\x7b\x94\x74\x1a\xfa\xca\x3e\x48\x16\xde\x7e\x90\x0c\xd6\xf3\x29\xb9\xb8\x20\x94\xed\xd0\x71\x54\xce\xb6\x42\xdf\xa9\x75\xd7\x49\x6b\xb7\xbd\xf3\x29\x98\x85\xed\x7a\x56\xcf\x69\xd2\xfb\x24\x74\x6f\x7a\x9a\xe1\x26\x24\x67\x38\xea\x76\xb3\x55\xad\x9a\xe6\x2b\xb5\x2d\x4a\x09\xe6\x37\x4e\x2a\x80\xfa\x8f\x04\x03\x36\xc8\xce\x27\x60\xd9\x5e\x63\xd4\x1f\x68\x46\x14\xd5\xd9\x0b\x7b\x07\xf1\xd3\x6b\x08\x4c\x1e\x93\x3b\xad\x77\x09\x72\xf0\x8b\x3c\xfd\x9f\x79\xf2\xf9\xe7\x9f\x51\xca\xb9\xd9\xcd\x46\x39\xa0\x20\x9f\x05\x3e\x8a\x4e\x9f\xbb\x59\xb0\xd3\xf5\x20\x99\x9e\x4b\x74\xf9\x2c\x21\xb8\x53\xf4\xe1\xad\xa1\x6d\xa0\x59\xa1\xec\x0f\xb3\x42\xb2\x1d\x93\xec\x8a\x32\x9c\xe0\x76\x80\x5c\x2d\x5b\xbe\xb3\x1e\xd1\xac\xc5\x78\xca\x37\x36\xb8\xe3\x74\x0a\xfc\x2c\x98\x94\x3b\xa9\x37\xe0\x85\x7c\x17\xe2\xbf\xa1\x21\x30\x83\x10\x90\xce\xa7\x61\x72\x69\x37\x74\xcc\x4a\x99\xe2\x40\xf3\x41\x2e\x98\x53\xb6\x59\xf6\xf9\x94\xc7\x37\xb2\xf7\xef\x88\x48\x42\x52\x42\xa7\xb6\x95\xd6\x52\x1d\xef\xa0\xc3\x8a\xd5\x9d\x80\x30\x91\x40\x19\x33\x3e\xef\xe5\x89\xe3\x90\x7b\xc9\xc8\xb3\xc5\x6f\x9c\x4c\x3f\xca\xe9\x94\x26\x6a\x7a\xf2\x33\xc4\xe7\x30\x85\x97\x1b\xc7\xd1\x80\x62\x3f\x64\x71\xc0\x8c\xfe\x6a\x36\x5e\x96\x62\xf2\xfd\xe6\xdc\xe5\x39\x7f\x5b\xca\x95\x20\xec\xe8\x4d\x60\xa0\x74\x71\xfb\xa9\x42\xae\x94\x14\xe7\xaf\xcc\xa0\x26\x7d\x6e\x4a\x59\xdc\x8f\x97\x9e\x8e\xe6\x2e\xe0\x87\x26\x86\x1e\x66\x76\x05\x69\xf4\xf4\x97\x6c\x01\xe7\x26\x0b\x61\x83\x52\x28\x3b\xf5\xc2\x17\xc0\x37\x91\x70\x86\x02\x46\xda\xce\x7a\x34\x34\xd9\xf0\x49\x9e\x3e\xf9\x64\x6a\xa4\xb6\x89\x99\xa5\x61\x72\x4a\xd8\x19\x99\x7e\x25\xa7\x64\x79\xf6\x07\x9f\xcf\xe6\x70\xd4\x47\x93\xbe\x18\x23\xf3\xd1\x5e\x64\xdb\xcd\x10\x05\xb2\xa1\x27\xea\x5b\x32\xff\x18\xc4\xb6\x72\x13\xef\x66\xe8\x93\x6a\xd8\x73\x18\x34\xfd\xad\x0d\x6a\xc2\xae\xd8\x0e\xa2\x85\x2d\xba\x0e\xa7\x8e\x9f\x3b\x76\x65\xa5\xcb\x6b\x4e\xe0\x92\xf8\x8a\xec\x1d\x93\xbc\x60\xb0\x6a\x26\x0b\xe6\xd6\xd7\x64\x71\xa0\x57\x59\x99\xc7\x3b\x57\x89\x8a\xff\x61\xb8\x15\x3b\x41\xe9\xfe\x6a\xd6\x6f\xdc\x7c\x61\xa6\xe5\x7a\x34\x01\xc1\xb7\x36\xbb\x62\xbb\xdc\x0c\x4d\x60\x83\x0d\xd5\x75\xb9\x15\xaa\xd5\x46\x06\x8b\x1b\xde\x08\x7d\x8d\x09\xa1\xbe\xdd\xd5\x9a\xd8\xcc\x00\xc1\xec\xde\xa4\xa8\x73\x79\xe0\x0b\x56\xcd\x1a\xc3\xd4\x3f\xb2\x0f\xd4\x6a\x5e\x2e\x91\x2b\x80\x0d\x8c\x02\xa6\xc2\xd9\xe5\xf2\x43\x7c\xbe\x60\x97\x2e\x56\x14\xdc\x91\x2b\x75\xe6\x19\x31\x12\x18\x12\x7d\x18\xea\x1e\x56\xec\x91\x7d\x64\xf7\xec\x9a\x5d\x72\xb9\x7c\x31\xe1\xfc\x21\x8a\xe2\x07\xfe\x82\x35\x51\x04\x26\x97\xae\xfa\x0d\x65\x15\xd7\xac\xe0\x65\xd7\x11\xc2\x06\xf4\x11\x2f\xe7\xe9\xe7\xc9\x9c\xd5\x51\x14\xdf\xf3\xdf\x64\xbc\x63\x57\x60\x8a\x28\x5e\xf2\x17\xf3\x79\x14\x7d\x36\x9f\xbf\x14\x5d\xf7\xd9\x1c\xa2\x9d\xa6\xf1\x68\x2a\x5f\xf3\xab\xd9\x11\x6b\x14\x93\x1f\x8a\x46\xfb\xc9\x4b\x28\xbb\x3e\x35\xeb\xf9\x35\x65\x4f\xbc\x6f\x26\xa9\x7f\xcd\xce\x58\x7e\x4d\x29\x7b\xe1\xea\xb1\xe2\x93\x39\xbb\xe4\x44\x2a\x6f\x74\x92\x7c\x76\xfc\x50\x6f\x7d\x25\x92\x78\xc5\xbf\x31\x0d\xbc\xa7\xec\x92\xaf\x80\x2f\x10\xec\x91\xaf\x70\x3d\xfc\xc8\x57\xb8\x45\xb3\x15\x9f\x7c\xa4\x34\x89\x3f\xf2\x4b\x66\x36\xe8\xc9\xa5\x11\xf7\x2e\x39\x11\x28\x9f\xce\x5f\x0a\x80\x30\x9e\x9b\x3d\xc7\xf1\x17\x5c\xf8\x4b\x23\x35\xf0\x58\x76\xdd\xa5\xd9\xd1\xd9\x2a\xbd\x33\x72\xb2\xaa\x3e\x22\xc0\xdb\x86\x65\x8f\xec\x92\x5d\xe5\x34\x31\x0f\x0c\x37\xed\xd2\xaf\xd8\x25\xfb\x98\xf7\x85\x1a\x5e\x28\xde\x1a\xd6\x55\x0f\xc7\xf1\x2a\x1d\x08\xc9\x49\x28\x3e\x9b\x81\xcd\x56\xe9\x63\x62\x4a\xba\x9d\x6d\xca\x5a\x04\xe5\xe7\xd4\x94\x14\x8f\xa6\x44\x2f\x88\xdb\x69\x71\x7e\xee\xf6\xb1\xae\x7b\x62\x17\x53\x3b\x42\xfb\x90\x3d\x57\xc0\x8e\xbe\x05\xb1\xec\x29\x3f\x02\xb4\x75\xd5\x2c\xc0\xf6\x82\xb7\x8c\x7c\xf4\x34\x98\x78\xf0\x16\x48\x55\x43\x4f\xf1\xdf\x4e\x19\x1e\x82\x42\xc7\x49\x86\x60\x71\xe8\x97\x45\xb6\xe2\xbd\xda\x02\xe5\x40\x58\x76\x1a\xb3\xfe\xad\x28\xfc\x33\x93\x41\x66\x2b\x70\x4b\xa8\xc1\xdf\x0c\x79\x78\xf2\xdc\xb0\x1d\x55\x36\xcf\x69\xd5\x87\xc4\xb4\xc7\x35\x8a\x0b\xcf\xd3\x9a\x0d\xe3\xc4\xa8\x1e\xec\x10\x18\x15\x53\x51\xff\xf1\xd6\xb0\xb7\x6d\xd6\xe4\x51\x64\x7e\x7b\x97\xd6\xca\xeb\xf3\x1a\x17\x6a\xc1\x2c\x7b\xd9\x3c\x37\x75\xa5\x05\xd4\x08\x83\x9e\xf9\xc2\x50\x3f\x36\xa9\x2c\x3e\x4a\x2f\xc1\x66\x0d\xd8\x31\x98\x07\x39\xdd\x17\xbc\x71\x25\x82\x7f\x4b\x43\x0f\x05\x84\x8c\x73\xdd\x5a\xa4\x71\x31\xc1\x36\x1b\x66\xd8\x55\xa4\xa0\xe8\x7c\x1c\x1a\x25\x7e\x73\xec\x0d\xe4\xbd\x42\xa0\x43\x7a\xfd\x24\xaa\xcd\xcc\xb2\xd4\x9a\xaa\x43\xac\x65\xf3\x14\x23\xe7\x44\x11\xc4\xfb\xed\x13\x62\xcd\xfa\xb7\x29\x65\x6d\xb6\xc8\xa9\xdf\xb4\xc2\xd6\xd1\x22\x2b\xc7\x62\xd5\xa0\xf5\xa5\x3d\xd6\xae\x79\x9b\x4d\xa7\x4d\xbe\x04\xc7\x63\xd8\x3b\xad\x4a\x11\xae\x0d\xe7\xef\x93\x4a\x5e\x64\x15\x50\xad\xce\xbb\xae\xc8\xc8\x73\xb8\x64\x93\x92\x7a\xa0\x92\x02\x7d\x9a\xc3\x33\x74\xa6\x90\xdf\x45\x48\x76\x57\x84\x32\x84\xf7\xa5\xc0\x1d\x38\x64\x72\x3e\x99\xa7\x26\x9b\xcc\x13\xf3\x63\x18\x8f\x39\xf0\xd9\x26\x0f\x6b\x5d\x44\xa4\xe6\xfc\x9c\x81\xb1\x78\x3f\x12\x4a\xc8\x0b\x61\xea\xa2\x48\x64\x0e\xb0\x27\xa7\x9a\x97\xb1\x3b\xcf\x32\x1b\x13\xde\xf7\x86\xf1\xf6\x88\x15\x16\xc2\x84\x80\x4e\xa2\xb6\x6b\x1c\x6e\xbb\x65\xba\x4a\xcc\x7e\x84\x04\x6c\x00\x64\xbc\x56\x5b\x33\x7e\xa6\xe4\x4c\x2b\x43\x87\xc3\xe1\x50\xf1\xfa\x30\x2c\xab\x71\xda\x3b\x50\x7a\xe9\xc3\x61\x20\xfa\x7b\x85\x11\xae\x02\x56\x33\xd4\xab\x75\xd8\xd9\x40\xf3\xf3\x44\xba\x58\x6d\x4f\xa6\x3f\x9c\xf7\x4f\x06\x0a\x22\xfb\xb5\x93\x90\xcb\x23\x25\x0f\xe8\x6a\x6c\x11\xa7\x41\xf1\x02\x18\x24\x41\x99\xb0\x06\x5f\x03\xd5\x4a\xec\x61\x95\xc2\x12\x84\x67\xb4\x35\xc0\x33\xe0\xdd\x64\x41\x99\x18\x89\x58\x16\x1c\x08\x95\x7b\xc2\x7e\x91\xa3\x2e\x1f\x3f\xe5\xf9\x84\xd3\x9f\x82\x79\x15\x94\xd9\x43\x7d\x28\xe0\xe4\xc0\xa0\xd2\x5c\x10\xc4\x51\x3a\x32\x0a\x5f\xba\x5e\x1d\x60\x7c\xe2\x81\xec\xf1\x19\x92\xf7\x35\x96\xc8\x53\x99\x4d\x58\xcc\x30\xf5\x12\x55\x86\x60\x9f\xe5\xd4\x87\xa3\x67\x10\xea\xa8\x36\xcb\xb3\x91\x6d\xe4\x4c\xc1\x31\x29\x37\x17\xc0\xb0\xc0\xd0\xc2\x03\xce\xd1\x69\x61\xac\xbb\x6e\x22\x03\xb6\xa6\xeb\x2e\xcc\xbb\x62\xdd\x39\xb6\xf1\xc2\xda\x8e\x07\x99\x30\xc4\xf2\x27\x3f\x03\x87\x97\x43\x00\xcb\x4f\x40\x51\x32\x89\x2f\xe8\xae\x2b\xe3\x17\xf3\x39\xf3\xd3\x80\xd2\x03\xab\x87\x78\x75\x92\xd5\xc3\xd0\x14\x23\x85\x04\xdd\x63\xe8\x1e\xa8\x5d\xac\xc1\x45\xcd\xbb\x02\xbf\x86\x20\x53\x5f\x4a\x7e\x11\x73\xfa\x3e\x8d\x53\x1e\x75\xcf\x68\xf7\x3e\x7d\x9f\x5e\x2c\x07\x53\xcd\xec\x98\xbb\x84\xac\xac\x52\x0c\x35\xab\x3b\xa7\x23\x3b\xc2\xc9\xe4\xaf\x25\x62\xce\xc3\xae\x8f\x2e\xd9\x53\xf2\x1b\x0a\x72\xa1\x02\x25\x13\x70\x9e\x25\x4e\x0e\x7b\xf3\x0d\xd0\x80\xee\x82\xf1\x78\xc2\xe5\x46\xce\x20\xd3\xc4\xca\x9c\x5f\x4a\xd7\x49\x6d\x5d\xd1\x94\xb4\x75\x05\xfe\x5e\x23\x43\x25\x2b\xb4\x4d\xe2\x81\x50\x86\x40\x63\xfe\x10\xe7\x5f\x6a\xb1\x09\x8d\xa2\xfe\x83\x20\x03\x47\x11\x31\xff\x83\xe3\x9f\xae\x23\xd8\x0c\x00\x6b\x1c\x88\x56\xb0\xd8\x0f\x88\x39\xb4\x0c\x19\x3d\xa4\xe9\x28\x21\xa6\xc9\x28\x85\xb5\x29\xfa\x7f\x67\x6d\x1f\x39\xef\x4b\x10\xb6\xc9\x54\xf9\xec\x8e\x5a\x72\x24\xe2\x3b\xaa\x39\xf9\xdb\x66\x07\x63\x13\x65\xe6\x56\xb0\x0b\xda\xa9\x8a\x5a\xea\xe0\xd0\xa3\xb7\xab\x85\xfe\x87\x88\xdc\x6a\x4a\xce\xee\x8b\xe6\x4c\x2a\x7d\x66\x86\x11\xf0\xf3\x86\x04\x07\x36\x24\x09\x47\xf6\x8c\x15\x1c\x3d\x83\x0c\xcb\x1e\x94\xdc\xf4\xe7\x52\x07\x56\x3a\x05\x5d\x90\x01\xdd\x82\x98\x44\xb7\xfa\x31\x71\xeb\x11\xb1\x5e\x7b\x6c\x02\xf0\x0c\x1b\xd0\xde\x74\x65\x11\x23\xb2\x76\xc3\x0b\xae\x0f\x01\x12\x42\xa2\x9d\x3f\xbd\x64\x3f\x49\xf6\x8b\xe4\x73\xf6\x4c\x72\x31\xfb\x02\xd8\xdd\x77\x68\x26\x13\x9c\x7b\xd9\xa9\x01\x7c\x83\x30\x7b\xfd\x1b\x49\xdf\xc8\x4c\xe4\x76\x56\xf6\xbc\xe8\xf7\x26\xb3\xd9\x68\x9d\xbe\x56\xdc\x9f\x89\xd9\xbb\x57\x3f\x7c\xa7\xf5\xce\x0a\xd3\x76\xf7\xd5\x74\x1f\x9c\x2b\xff\x79\xf2\xc5\x41\x85\x62\xf2\xaa\x34\x4b\xb9\xda\x68\x28\xf1\xfa\xfa\x0d\xa1\x61\x61\xa3\x63\xd9\x87\xbb\x7a\xdc\xa6\xf4\xa8\x9f\x27\x08\xa1\x8c\xe7\x46\x51\x64\xea\xdf\x75\xa6\x32\x87\xe4\x7b\x43\x9d\xf1\x59\xef\xc3\x5d\x1d\x0f\x3c\xfb\x54\xdd\xf0\xc9\xe4\x27\x19\x45\xe4\xbe\xd4\x77\x97\xb5\x58\x0b\xa9\xcb\xa2\x6a\x48\x29\xcf\x7e\xb2\x65\x78\x74\x8c\xdf\x8b\x07\xc8\xce\x7e\x92\xee\x9c\xb3\xdf\xc2\x42\x6b\x45\x88\x17\x1f\x6e\x5d\x03\x5c\x4c\x55\xdb\x70\xe9\xf5\xe9\x0d\x0a\xce\xed\x20\xa4\xa1\x5d\x66\xa0\xde\x18\x80\xa3\x6d\x44\x2d\x8b\xad\x48\xdb\x99\xda\x09\x33\x4f\x41\x4b\x2a\xed\xa6\x03\x1b\x17\xeb\xb3\xc1\xea\xdf\x34\xf7\xaa\x5e\xd3\xe4\x13\xaf\x98\x09\xf6\x70\x57\xa3\x40\xd1\xf3\xf4\x61\xa2\x61\xea\x79\x90\x90\x35\xf9\x52\x7a\x91\x21\x8a\xda\xd9\x58\x79\x7e\x2a\x2d\xee\x5f\x81\x49\x1d\x92\xa8\xcc\xc8\xbb\x73\x3b\xce\xc4\xfa\x1c\x00\xc0\xc0\x6f\xfd\x54\x3a\x27\xc3\x81\x19\x40\xd6\x42\xd5\x4b\xda\x1e\xeb\x80\x1a\x56\x1a\x79\xc8\x8e\xbb\x8a\xee\x0f\x2d\x2a\x3a\xe4\x40\x85\x86\x0b\x03\xba\xa8\x50\x36\x30\xee\xb1\x5b\x40\x83\x47\x42\xf0\xc9\x72\x13\x03\x8f\xdc\x75\x46\x7c\x6f\x07\x5b\xb4\x79\xc6\xd1\x91\xab\x3d\xb5\x43\xdf\xcc\xa4\x52\x3b\xf6\x4c\x46\x91\x55\x68\xbe\x91\x46\x30\x61\x25\xfd\x7c\x32\x2c\xcc\x50\xd3\xa9\x9c\x40\x58\xda\xa1\x70\xd2\x5a\x61\xdb\x48\x23\xb3\x93\x47\x2a\x31\x65\x47\xdb\x50\x3b\x38\xfb\x06\xe5\x17\xa0\xeb\x0d\xd3\x91\xa6\x2b\xff\x0d\x93\x66\x89\xb7\xa1\xfb\x15\x27\xe4\xd0\x00\xef\x62\xe7\x20\x68\x1a\xfb\x2e\x4d\x17\x2f\x5e\x7c\xc6\x39\x6f\x40\x23\xf5\x62\xfe\x39\x4d\x1a\x8e\x1f\x4a\x5f\xcc\xe7\xc9\xe7\xf3\xcf\x0f\xb6\xb8\x35\xdd\x97\x5d\xa7\xe2\xf3\x05\x5b\xd3\xc3\x2e\x8a\x54\xdc\x40\xe0\xf7\x8a\x1e\xdc\x20\x4d\xc7\xf4\x4d\x03\x25\x57\x4d\x93\xb8\xe0\xd3\xe9\x2f\x12\xa8\x19\xbf\x01\xc7\x1b\x30\x2e\x02\x23\x6e\xb4\x5a\x8b\x9f\x49\x4a\x19\xd0\x98\xd7\x94\x9d\xec\x93\x9a\x26\x75\x7c\x8a\xa3\xa9\xa3\xa8\x1e\xb3\x32\xef\x24\xfb\x59\xb2\xbf\x5b\x3b\x29\x74\xb1\xef\x9a\x3b\x75\xdf\xdd\x95\x6b\x41\x9f\x5d\xb0\x5f\x65\x00\x16\x92\x26\x16\x2f\xa4\xa3\x0e\x60\x04\xb1\x45\x7a\x10\x92\xbf\x4a\x7e\xf1\x47\x2b\x5a\x01\x56\xc7\xcf\x2e\xd8\xb7\x92\x67\xb2\xce\xd9\x8f\x92\xc3\x11\x75\x76\x1a\xb1\xc6\x02\x57\x5b\xcc\x9f\x7b\x21\xac\x1b\x8e\xe2\xbf\x4a\xe7\xb2\x07\x81\xd6\x57\xad\x59\x05\x1b\x3e\x2d\xba\xce\x48\xb6\x0b\x56\xf1\x17\xf3\xa5\x8f\x49\x2f\xf9\x54\x65\x2f\x72\xc3\x66\xe3\x91\x45\xe8\x24\x2d\xf2\x94\x90\x04\x5d\xa4\xcd\xef\x04\x04\xc4\xc6\xec\x8f\x68\x5b\x5e\xce\x44\x25\xb6\x18\xda\xb2\xeb\x64\xd7\x2d\x96\x6b\x75\xd6\x72\xc3\x8c\xcc\xfe\x9b\xb0\xe6\x82\xb7\xcc\x79\x97\xfa\xcc\xcd\xb4\x76\x5a\x8a\x76\x02\x91\x88\x6d\x3d\x2f\xcc\x66\xb8\x98\x80\x83\xe5\xf9\x79\x45\x0f\xe5\xac\x95\xa5\xe6\x35\x2b\xcd\x98\xac\x35\x6f\x58\x39\x13\x72\xcd\x8d\xb8\x9a\x36\x53\xef\x34\x2e\x13\xe9\x1d\xbe\x0e\x79\xb0\xcd\xfd\x2d\x64\x14\x4e\x6a\x49\xdf\x49\xd8\x73\xdf\x79\x7b\xbc\x7e\xab\xfb\x87\x37\xde\x38\xb6\xf3\xf4\x66\xea\xf1\x8f\x32\xd3\xd6\x0a\xcb\x5a\xb4\xfd\x28\x51\x59\x6d\x8d\xc4\xea\x01\xba\x88\x7a\x59\x2e\x4b\x84\x04\xaa\xb3\x32\x77\xd1\xab\x4c\x89\x56\xdd\x1c\xc6\x6f\xc2\x50\x9e\x43\xa3\xa6\x39\x2b\xf8\xb7\x0e\x9b\x02\xdc\xb8\xfb\x63\xe5\x13\xbc\x8a\x5d\x6b\x5a\x20\xff\x81\xb2\x36\xe4\x74\x8c\x20\xee\xa2\xa1\x2e\x96\x78\xac\xf8\x4e\x76\x9d\xa1\x1b\x93\x3c\x70\xf6\xac\xb0\x0b\x0c\x05\xa7\xd5\x6c\xdd\xd6\xc0\xb0\x9e\x6b\x08\xcf\x7a\xd1\xa7\x98\x71\xa6\xf8\xe2\xbc\x06\x6c\x95\x96\x57\x33\x6d\xc6\x67\x33\x20\x42\x6b\x71\x44\xdc\xc3\xac\xc8\x67\x75\x2b\xe3\xde\x46\xb7\x99\x49\xa5\xcb\xcd\x23\xa8\x03\x05\xcb\x2a\xa6\x98\xcc\x29\x5b\xbc\x54\x51\xd4\xa6\x32\x89\x9b\x81\xa6\xd2\x64\xc9\xd1\x7a\x8c\x55\xbc\xf1\xc7\x9d\x7b\xd3\xea\x44\xb0\x1d\x00\x37\x84\xd0\xaa\x66\xba\x18\xc9\x3e\x34\xe4\xda\x5b\x20\xa7\xaf\x8b\xa6\x94\xb7\xc9\xfe\x00\x27\xff\xaa\x2e\x6f\x4b\x59\x54\xd6\xff\xba\x14\x4d\xa2\x7d\xa2\x33\x88\x90\xcc\xd3\x27\xf1\x14\x74\x44\x49\xa4\xa7\x0f\xc3\x16\x27\x59\xce\x82\xe9\x9b\x9c\x1a\x5a\x37\x33\x37\xb5\xab\x99\xa9\x2a\x28\x16\xf1\x72\x36\xa8\x28\x0c\x40\xfb\x40\x40\x8a\xa7\xa3\x27\x3f\x70\xa0\x35\x65\xf5\x81\x35\x5a\x05\x16\x1a\x41\xdc\xfd\x9a\xeb\x74\xd4\x5f\x09\x2c\x16\x65\x08\xe4\x8d\x47\x1f\x7c\x32\x5f\xd6\x2f\xe5\x52\x86\xdd\x28\xb1\x1b\x17\x01\x6c\xf0\x71\x37\x31\x9d\xd3\xa4\x09\xd5\xc9\x2e\xd5\x1e\x58\x53\xb6\xe2\x15\x78\x1d\xe0\xb7\x74\x1d\xaf\x4e\xb6\x9b\x2e\x0b\xf0\x09\xc6\xd9\xc4\xbf\x35\xfc\x38\x4e\xa8\x8a\x09\xe6\xde\xf1\xc7\x38\x8e\x05\x33\x13\xbb\x62\xab\x91\x19\x9c\xfb\x80\xe9\x45\x1a\x45\xe1\xad\x9b\xa4\x60\xbb\xbe\x79\x80\x33\x94\x3a\xf6\x03\xa7\x65\x6e\x94\x15\xb2\xdc\x26\x15\x83\x25\x3d\xb1\x25\xc0\xcd\x81\x52\x06\x4d\x82\x98\x64\xee\x5b\xee\xde\x9a\xc6\xd9\x54\x38\x83\xb7\xd7\x4e\x27\x40\xe1\x28\xde\xe5\x30\xd7\x7e\xaa\xdb\x34\xbc\x0b\x96\x0e\x5d\x9f\xd0\x71\xf6\xe7\x67\x02\x69\x16\x42\x49\x94\x66\x03\xc1\xa0\xf4\x5c\x64\x65\xce\x42\xc7\x07\x8b\x55\xb6\x70\x0f\xb9\x04\x99\xa5\xc4\x4d\x01\xed\x51\xa5\x3b\xa9\x35\x19\xd0\xb9\xd8\x7b\xd4\xd4\xb9\xe1\x8c\x08\x0a\xea\x04\xd4\x90\x7b\xc9\x0b\x2b\xb9\x03\x00\xab\x7b\xb7\xce\x43\xcb\x4c\xac\x6d\xd7\xc5\xc2\x99\x61\x82\x59\x3b\x57\x14\x4f\xa2\x4c\x85\xb9\x3a\xdc\xcc\xbe\x90\xe5\x16\xa6\x58\x8f\xa0\x2c\x6a\xb6\x87\xa1\x79\x64\x3a\x32\x0e\x15\x14\x6b\xb0\x0b\xc2\x85\x3b\x01\x7b\x49\xaf\x1d\x5d\x86\xa8\xb3\xe2\x64\x3c\x7f\x44\xb3\x66\x3f\xca\x4c\xe6\x1c\x7e\xc1\x66\x16\xae\xbc\x26\x5a\x63\x14\x9a\x13\x21\x27\xe9\x5e\xa7\xdf\x4a\x9f\x51\xd0\xe4\x5b\x1f\x40\x71\x70\x84\x20\x8f\xf7\x83\xd0\x6c\x89\x6d\xd0\x48\x74\xed\x5d\x21\xef\x0c\x53\x74\xcb\xb3\x9c\x6d\x07\x78\x32\x12\x22\x26\x48\x1c\x9d\x5d\x17\xaf\xf8\xcd\xec\xb7\x9e\x15\x89\x05\x23\x1b\xb3\xef\xa3\x45\xc5\x6a\xd6\x4a\x78\xb8\x8e\xa2\xb8\xbf\x81\xc0\x02\x2b\x0c\xe9\x00\x87\x37\x2c\xbc\x09\xf7\x99\xfe\x9d\xae\xdb\xc5\xd4\x4c\x71\x9f\x32\x9d\xb2\xcd\x89\x7d\xeb\x54\x5a\xff\xd2\xf9\x39\xbb\xc1\xca\xbb\xaa\xda\x7e\xe9\xba\xb0\x0e\x00\x4a\x44\x31\x66\x67\xd8\xfc\xd8\xb9\x09\x97\x18\x2f\x02\x7d\x85\xc1\x85\x02\x35\x6d\x1f\x45\xbd\xa9\xd4\x3d\xcf\xd6\xfe\x9a\xf5\x97\xef\x82\xeb\x5f\x73\x66\x3d\x1e\x4f\x63\x94\x05\xce\x7a\xfe\x21\xc2\x07\xd1\x81\x9b\x3b\x96\xf1\x65\xa5\x56\x1f\xae\x84\x58\x37\x3f\x14\x8f\xaa\xd5\x51\xe4\x0a\x37\x7c\x91\x8c\x7b\x10\x5a\x9a\xae\xad\x2b\x6a\xb2\xee\xd1\xc4\x06\xbe\x97\x10\x94\xc3\xd5\x13\x4e\xd2\x7c\xbb\x3c\x00\x5d\x5f\x81\xe6\xae\x2e\xe5\x87\x5f\xea\x62\x07\x95\x40\x6c\xd2\x63\x76\xa2\x2f\xa3\x2f\x3b\x9b\xe7\x21\x75\xc2\x27\x8b\xf0\xc9\xaf\xe1\x93\x17\xb9\x8b\x43\x6f\x9d\x57\x10\x32\xc8\x4c\xf0\xbf\xf7\xf6\x67\x86\x45\xb1\x2b\x03\x3c\x42\xee\x12\x99\x6f\xc0\x99\x01\x24\x9a\x78\x9b\x9a\x16\x09\x92\x10\xc3\x90\x13\x4a\x57\x4a\xea\x52\xb6\x62\x79\x8b\x13\xa9\xa4\x07\x38\xf6\xb8\x75\x46\xd1\xc0\xc5\x5a\x08\x78\x33\x82\xf0\xbd\x1e\x71\xbe\x4f\x64\xfb\x03\x65\x8e\x60\x16\x0f\x67\xcb\x9d\x4b\x24\x1e\x52\x7a\x9f\xcf\xc9\x96\xb2\x2d\xfa\x92\x5a\x90\xac\xcd\xc8\xf0\x99\xee\xe1\xa9\xc3\xcc\x62\xc7\xcf\xd1\x8c\xec\x66\xf6\x1b\x2a\x6d\xbf\x1a\xd5\x71\xe9\x8d\xca\xee\x68\x8f\xdd\xa2\xd9\x5d\xa6\x73\x7a\xb0\x24\xe5\x73\xcf\x6a\xd6\xfc\xd6\x50\xae\xe2\x9b\x81\xc4\x50\xb3\x6d\x6a\xd6\xe5\x64\x4e\xd9\x9d\x59\x44\x31\xe0\x4b\x5f\xa2\xe1\x16\x00\xd9\xbe\xeb\x62\xf3\x8c\x5b\x1e\x90\x6d\xa3\x28\xae\x80\x11\x77\x29\xf6\x7f\x00\x40\x51\x77\x9d\x9b\x63\xe6\x2e\x5d\x24\xf3\x01\x8c\x7d\x5d\x87\xb8\x20\x81\x32\xa9\xae\xcd\xbe\xa8\x15\x98\x1a\x95\xb2\xd4\x41\xbe\x83\x65\x89\x78\x5d\xb3\x30\x1f\xdf\xaf\x94\x6c\x74\xdd\xae\xb4\xaa\x93\xba\x66\xe6\xbd\x23\xa8\x20\x34\x92\x46\x98\xb3\x4a\x6c\xb9\xf5\x1e\x33\x8c\x06\x97\xcc\xc2\x9f\x19\xbe\x02\xac\x0f\x9a\x7b\xf0\x94\x47\xf3\x6c\x64\xf2\xb8\x0d\x55\x84\x6d\xb5\xbe\x88\xf7\x56\x16\x03\x49\x0b\x0b\x91\x6b\x5e\xe3\x25\xc8\x2f\x6a\x24\x57\xc9\x5e\xae\x3a\xb0\x55\x5b\x1f\xab\xb6\xb1\x6d\x3b\xdc\x39\x7d\x25\xbd\xe7\x2a\x78\xfb\xde\x0a\x8d\x18\xe2\x36\x98\x61\xf8\x8e\x87\xfe\xed\x9f\x1f\x58\xdd\xca\x63\x23\x42\x26\xff\xd5\xc7\x30\x45\x35\xdc\xb6\xd8\xc5\x80\x72\x0c\x6d\x7a\x63\xa9\x96\x05\x14\xcc\x5d\x8c\xaf\x71\xee\xe7\x82\xcd\xd9\xe2\xf4\x33\x9a\xb8\xc0\x60\xea\x9e\xc7\x8e\x94\xe7\x3d\xc9\xe9\x73\x3d\xed\xef\x86\x85\x34\x5a\xec\x6c\x88\xa1\x30\xa9\x8f\x25\x83\xe2\xa7\x2b\xdf\x06\x80\x81\x83\x8b\x46\xe8\x14\x7e\x3f\x49\x49\xff\xdc\x72\xa9\xec\x68\xa0\x06\xe3\x31\x7c\xc6\xc2\xf2\xf8\xde\x87\xe5\x1c\x79\xa8\xbb\x69\x3f\x30\xa0\x15\x50\xeb\x4c\x60\x97\x74\x1d\xde\x3b\x97\x6f\x44\x9a\x0d\xd3\x5c\x4e\xc3\xcf\xd8\xdd\xc6\x8a\xdd\x90\xce\x08\xa1\xcc\xec\x29\x00\xfe\x03\x70\x6d\x3a\x99\xd3\x64\xf8\x99\x31\xc0\x02\xb8\x2f\x3c\x00\x39\x7d\xf9\x47\x29\x86\x69\x19\xd6\x2e\x3e\x51\xbd\x00\x91\xcc\xbe\x37\x04\x1e\xb3\x89\xb4\x47\x4e\x1c\x54\xdf\xec\x7e\xf7\x53\x01\xd3\x6a\x5c\x6b\xd8\xdf\xef\x0f\xbe\x63\x6c\xff\xa1\x23\xe3\xb5\xda\xf1\x13\xc9\x3f\x88\x8d\xe6\xfb\x71\x6b\x6d\x8d\x43\xf0\x3d\x48\x18\xc4\x9b\x38\xf5\x71\x7a\x08\x7c\x49\xec\x16\xc5\x70\x43\x62\xb8\x3d\x8d\xfd\x42\xac\x0b\x32\x7a\x87\x2c\x4f\xb8\x2e\x0e\x56\x47\x1c\x12\x5d\x77\x02\xc4\x31\x7d\xc2\x81\x08\x5d\x19\x0b\x60\x8d\x45\x5c\x5a\x9d\x16\xc3\x82\xbd\x5f\xa3\x8f\x86\x5e\xac\xc5\xb5\x3a\x81\xb1\x16\xae\x05\xf6\xe8\x4c\x4a\x0b\x58\xe3\xf0\x1a\xd9\xdc\x6d\x79\x18\x05\xd2\x7f\xd5\xc3\x3f\x6a\x84\xbd\xac\xe9\x81\xd9\x67\x4f\xc1\xb9\xc1\x01\xd5\xd7\x86\x8d\xf3\xae\xc0\xe0\xce\xd5\xec\x84\xc0\xf0\x29\xb5\x91\x2f\xc6\x7b\x26\x17\x35\x12\x20\x14\xf4\xcd\xab\x74\x59\xcc\x36\xa5\x2c\x9b\xbb\xf0\x1d\x3d\x33\xa2\x70\x0c\x90\x9a\x71\x19\x04\x9b\x01\x5f\x77\xcc\x0f\xe0\x1d\x41\x46\x0f\xc5\xe4\xca\x2b\x58\xd9\x75\x0a\x79\x51\xb0\x1e\x0c\xc2\x8e\x16\x96\xfe\xc8\xa8\xda\x4c\xac\xa0\x63\x19\x7c\x10\xfa\xfd\x84\xa1\x37\x7c\x7e\xe9\x04\x24\xb8\x63\x3a\xae\x7d\x6d\x4e\x39\x97\x59\x9f\x2e\xe7\xed\x80\x91\xd9\x27\x0b\xbb\x46\x5a\xd6\xb9\xeb\x0c\xef\xcc\xb2\xdc\x6d\x5d\x27\x43\x9e\x4e\xe6\xf6\xbc\x78\xc2\xcd\x6c\x98\x92\x5e\x50\x20\xd0\x2d\x20\x10\x37\x61\x1c\x1d\xb3\x50\xc2\x29\x06\x2d\x00\x27\xcd\xfc\x42\xbd\xa3\xa8\x8c\xcd\x4d\xe0\xbb\x6c\xad\x52\x8e\x32\xfe\x55\xf6\x28\x6a\xee\x25\x8c\xbf\xe5\xc2\x7d\x2c\xe5\xf9\xf9\x92\x2a\xf3\x8a\x99\x8d\x13\x0c\xbc\x89\xca\x7c\xa8\x2b\x3c\x82\xda\x4e\x60\xe6\xc4\x90\x60\x06\x1f\xf6\x68\x4d\x99\xe6\x93\x05\x53\xce\x66\x45\xb2\x05\xa5\x4b\x38\xa5\xaf\x01\x29\x77\x2d\x90\x54\x18\x80\x10\xc2\xb6\x61\xc7\x9f\xb2\xb5\x70\x24\x8e\x05\xb7\xa4\xfd\x14\x5d\x99\x1c\xd2\x8b\xd5\x5c\x66\x8e\xba\x24\x67\x65\x70\x8b\xc4\xce\x87\xd4\xae\xd3\xba\x57\xd3\x00\x65\xdc\xa0\x04\xff\xcd\xb0\xe2\xd0\xc5\x65\x14\x81\xaa\xd5\xfe\xb3\x99\x87\x77\xfd\x86\x69\x48\xe3\x09\xad\x91\xd0\x1a\x09\x6d\x23\x9c\x1a\xfa\xea\xdc\x0f\x7d\xc4\x48\xd6\x21\x7d\xcd\x5a\xe3\x69\xab\x81\xb6\xc0\xbc\x42\x10\x31\x0d\xf1\x2c\xeb\x4c\x83\x89\xbd\xce\x7d\x7d\x82\x9b\xa0\x3a\x6e\xfc\xbb\x46\x1e\x86\xa2\x71\x39\xd4\x77\xf0\x3d\x72\x9f\x89\x38\xb0\xd2\x42\xc8\x69\x84\x94\x5b\x7e\x0e\x8c\x31\x7f\x71\xae\xa9\xe4\xff\x00\xb1\xa2\xce\x1c\xee\xdb\x54\xe6\xbc\xce\x7a\x00\x37\x99\xf3\x1e\xab\xc2\x4c\x2b\x8f\x86\x54\x5b\x08\x43\x11\xe0\x4f\xed\x9b\xaa\x5c\x8b\xaf\xd4\xbd\x4c\xca\x3a\xb6\xc2\x08\x83\xc4\x9f\x77\x90\x04\xfb\x80\x4d\xba\x46\x98\x5e\x93\x6c\xb7\x0b\xca\xcc\x1a\xfc\xbd\xec\x31\x73\xb1\x8c\x03\xa4\xbf\x6e\x75\xf0\x00\x4a\xc2\x07\xb6\xa0\xfe\x99\x2d\xee\xf0\xaf\x83\xea\x1c\x2f\xf0\x6e\xdd\xd6\x6e\xb5\x46\x80\x28\xb3\xf4\xf2\xb1\xe9\x23\x6a\x2a\xc5\x09\xaf\x51\x91\x0e\x17\xe1\x64\xef\xed\xa2\x65\xd7\x4d\x64\x14\x69\x04\xfb\x0c\xd4\x30\x51\x24\x7a\x9d\xa9\x60\xc8\x4b\x26\x98\x55\x5b\x80\x88\x00\xd0\x22\x8a\xb4\x5f\x8f\x6b\xcf\x46\x72\xe0\x4d\xd4\x66\x93\xce\x93\x1e\x1a\xd6\x41\xd1\xf6\x7c\x6b\x7f\x99\xf4\x97\x66\x29\x42\xde\xc6\x34\xb7\x49\x83\xeb\xac\xcf\x95\x27\x41\x7a\x1f\x67\xc3\x41\xd2\x3a\xad\x4a\xdd\xef\x0a\x10\x85\xd6\xdd\xe3\xc2\x50\xcf\x54\xb5\xe6\xb5\xd7\xf1\xb1\xfe\x92\x0f\x30\x9b\x42\x6f\x4e\xf3\x0e\x8d\x22\xf8\x1f\x4e\x55\x5b\xf4\xd1\x8a\x65\xd3\x0d\xfb\x8f\xbc\x09\xc8\x37\xfb\xaa\x94\xa2\x38\x19\x43\x5b\x1c\x18\x48\x3e\x27\x9e\xcd\xfe\xfb\x1c\x0e\x04\x56\xaa\x89\xc5\x73\xb8\x7c\xf3\x3d\xbd\x78\x01\x5c\x0f\x2e\x4a\x3c\xcb\x41\x45\xca\x8f\x98\x63\xa7\x39\x5d\x7d\x18\xef\xda\x02\xd6\x41\xbb\xa8\xb9\x30\x71\xfd\x79\x8c\x8f\xac\x6d\x55\x6d\x82\xcb\xac\xce\x99\x88\x69\xd7\x99\x2b\x5c\xd8\xa5\x5b\x64\xea\xf3\x73\xb6\xe8\x5f\x82\xb0\xc0\x0f\xb8\x18\xc1\x29\x8f\x3e\x04\x3a\xdc\xc1\x5e\x2b\x62\x58\xf0\xb1\x22\x4e\xfb\x06\x48\x54\x0f\x28\x70\xc4\xd4\xbe\x5b\x4a\x2d\xea\x8f\x45\xc5\x17\x9f\xb1\xfe\x71\xd8\xae\x9f\x65\xd7\xc5\x3f\x4b\xde\x08\xfd\xbd\xcd\x1c\x7b\x02\x0c\x0b\xa1\xae\x54\x53\xc7\x81\xce\xac\x12\x45\xed\xdf\xfe\x59\x52\xf6\x33\xee\xc2\x2e\x3f\x8c\x3e\xbe\x6f\x2a\x75\x9f\xfc\xff\xf3\x39\xdb\x14\x8d\x4e\x5e\xcc\xe7\x7d\xe4\x7f\x88\x16\xe0\x59\x75\x38\x1f\xfd\x5f\x22\x58\xd9\x35\x60\x7d\xca\x63\xd9\x86\x0a\xf1\x7d\x16\x1e\x25\x78\xe8\x7e\xce\xb5\x3d\x71\xb2\x3d\xe1\x78\x4d\x84\xba\xe2\x23\xe3\xbf\xa3\xe0\xaf\x61\x41\x41\xf4\xae\xe3\x68\xee\xb6\x40\x23\x9f\x21\x3c\x56\x18\x2b\x78\xe9\x63\x7c\xf0\xbd\xe1\xb8\xe6\xac\x12\x1b\x9d\xcc\x0f\xac\x70\xd1\x80\x59\xc3\x8b\x28\x2a\x86\xd0\xb8\x18\xf8\xcf\x03\x2b\x37\x63\x6b\x43\x16\x06\x86\x66\x05\x4d\x63\xbb\xbe\x14\x46\xe2\xfe\x52\xb5\xd2\x6c\x1e\x97\x55\x29\xa4\xfe\x49\xac\xf4\x84\xf3\x12\x34\xe8\x4f\x3c\x8f\x21\xa4\x91\xaa\xe3\x86\x32\xa8\xa8\x9a\x69\xb5\x9b\xc6\xf5\x6c\x57\xdc\x8a\x5f\xb1\x61\x30\xca\x9d\x38\x43\xcf\x63\x39\x5b\x41\x01\xd7\x6a\xd7\x75\x73\x8a\x4d\x43\xa4\x57\xf7\xe6\xbb\xf1\x9b\x46\xe2\x09\x5e\x35\xb7\xe6\xdd\x03\x4d\x94\x19\x1c\xb6\x73\xf6\x9e\x98\xa7\x03\x6d\x05\x38\xa7\x16\x2f\x8d\xd0\x25\x69\x74\xa1\xcb\x15\xb1\x76\xc4\x0e\x8f\xcc\xe5\xe0\xa4\x16\x55\xa1\xcb\x8f\xc2\x6a\xd4\x4b\x0c\xde\xa6\x78\x69\x3f\x1b\xfb\x23\x03\x53\x32\x18\xed\x3b\x94\x6a\x93\x00\xa0\x6f\x10\x0a\xa9\x8f\xa9\x61\x15\x4d\x9b\xf2\x41\xac\xe1\x06\x26\xac\x0b\x48\x83\x62\x2e\xcb\x0a\xd6\xe4\xf4\xe5\xf9\x82\x55\x66\x0a\xac\xcc\xcf\x8e\x6d\x96\x6d\x1a\xaf\x78\x19\x40\xbe\x81\x36\xdb\xf0\xd6\x1b\xbe\x42\xd8\xdd\x24\xde\x0d\x61\xaa\xbb\x6e\xce\x36\x61\x52\x43\x81\xf6\x47\x3b\x93\x61\x36\xdc\xb9\x91\x64\x8a\xa2\x2a\x7d\x02\x90\x21\x10\xad\xd6\xfc\xc7\xbb\x73\xec\xec\x5d\x9f\xc5\x7c\x1b\xf2\x00\x6a\x2f\xde\x9f\xdb\x9e\xdd\x50\x46\x5a\xb3\x8a\x83\xba\x3a\xd5\x33\xb8\xe9\x8f\xa8\x92\x12\x08\x56\xa1\x30\x1a\x08\x77\x3e\x24\xc9\xf0\xfc\xd7\x4e\x03\x1f\x7d\x9c\xc9\xf1\x54\xa9\xdd\x54\x71\xd2\x86\x27\xb7\x8f\x16\xd1\x0f\x83\x54\xf3\xfa\xa9\x31\x9e\xd8\x58\xe6\xb6\xbf\xdf\x80\x3c\x1d\x1b\x3e\x33\x48\x05\xab\xad\x3e\x94\x1c\x40\x7f\x82\xc7\x3a\xa0\x1f\x7a\xac\xbc\x18\x94\xdb\x86\x6e\x6e\x84\x40\x4e\x44\x9f\xbb\x56\x3b\x0f\xa0\x6b\xb2\x01\xe1\x4e\xe4\x33\xc3\xbf\xcf\x68\xa7\x1e\xf6\x09\x94\x7d\xee\x1b\x88\xcc\x21\xc4\x5c\x99\xb8\xa9\x66\xfb\x05\x8b\x1f\x67\x85\x38\x2c\xd6\x7e\x84\x85\xed\xfd\xb7\xc0\xd7\x8e\xa8\x75\xca\xf2\xd9\x86\x7a\x07\xfe\x28\x0c\xdd\x8e\x54\x03\xa7\x52\x37\x31\x4f\xcc\x5b\x2a\x3c\x4d\xf1\x13\x5e\xcb\x78\xe2\x5b\x87\x10\xa2\x62\xdf\x2f\x29\x09\x09\x56\x1b\xc2\xfc\x2a\x85\xe9\x76\xfd\x1a\x82\x01\xfa\xb5\xe4\xe2\x57\x67\xf1\x4c\x97\x47\xec\x69\xf9\xaf\x63\x7b\xf4\x26\x74\x66\x01\x0d\xd0\x52\x61\xeb\x28\x52\x14\x2f\x53\x74\x57\xf0\x0d\x1a\xb7\x2c\x2b\xf3\x44\x98\x9f\xb8\x48\x0b\xbf\xcc\xc6\x75\x7a\x13\x17\x34\x58\x3c\x63\x9a\x28\x56\xa7\x2a\x09\xd2\xaf\x0d\x73\x41\xe1\x75\xae\xcc\xbe\xc3\x4c\xad\xc6\x5b\x9a\xc5\x7d\x1f\x00\x6e\xd7\x83\x6d\xb5\x6c\x10\xaa\x37\x16\x34\x15\xc9\xff\x19\x9c\x59\xa5\x7d\x7c\xce\x52\xdc\x77\x9d\xb0\xea\x28\x7c\x23\x99\x2c\xbc\x04\x62\x63\x5c\x78\x20\x5c\x04\x80\xb6\x9a\xf9\x71\x17\xb8\x97\x3c\x80\x23\x44\x8a\x23\x53\xe1\x9c\x11\x12\xc9\x08\x49\x08\x84\x32\x24\x53\x11\xbc\x0f\xaa\x29\xe8\xb0\x32\xec\xb0\xbe\x37\xc6\x04\x30\x1c\x70\xa0\xbc\xf2\xca\x8a\x92\x22\xfe\x7a\x5c\xda\x10\x00\x0a\x5d\x4c\x9c\x44\x96\x38\xd4\x66\xdf\xb5\x4f\x8c\x85\xd0\x6e\x7b\x79\x4c\x55\x49\x53\xf9\x74\xff\x13\xdc\x11\xc9\x54\xe4\x40\xfa\x20\xf4\x3f\x18\x50\x8f\x39\x00\x6f\x1b\x23\x01\xad\x18\x0c\x95\x55\x55\x99\xf7\x99\x1a\xdc\xb9\x0c\x38\xc9\x5c\x86\xe1\x5d\xff\x71\x4a\x93\x92\x63\xf0\x18\xc0\x3e\x66\x35\x6b\x68\xe2\xf4\xa1\x78\x8c\xd1\xd0\x03\x93\xac\x48\xcb\x44\xb3\xc2\x8f\x2b\x88\x4c\xf0\xfb\x8f\xad\xa8\x1f\xb9\x98\x3d\xe3\x37\x8c\x38\xd2\xf4\x02\xd0\x5a\x6c\x4a\x29\xa2\x08\xff\xcf\x8a\xed\x3a\xbc\xb6\xaf\xbb\xa4\x98\x20\x94\x05\x61\x21\x00\x54\x3f\x62\xcd\x37\xe3\x7b\xa0\x2e\x5d\xfe\xdf\x00\x00\x00\xff\xff\x90\xb4\x76\x84\xd5\x69\x01\x00"), }, "/js/scripts.js": &vfsgen۰CompressedFileInfo{ name: "scripts.js", - modTime: time.Date(2018, 8, 19, 14, 21, 17, 480526969, time.UTC), + modTime: time.Date(2018, 9, 10, 21, 40, 58, 715425786, time.UTC), uncompressedSize: 3132, compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x94\x56\x6d\x6f\xdb\x36\x10\xfe\xee\x5f\x71\xd3\x87\x8a\x82\x5d\x59\x4e\x86\x74\xa8\xa3\x00\x7d\x09\xd6\x0d\x69\x3a\xb4\xc1\xb0\x2d\xc8\x02\x46\x3a\x5b\x5c\x68\x52\x25\xa9\x38\x42\xe3\xff\x3e\x90\xd4\x9b\x13\xd7\x41\xfd\x21\x92\x78\xcf\x3d\xf7\x7e\xcc\x74\x0a\xa5\x42\x63\x6a\xc8\xa9\x41\x58\x54\x22\x33\x4c\x8a\x51\xfb\xd2\x48\xdf\x53\x83\xc4\xb0\x15\x46\xdf\x46\x00\x00\x77\x54\x79\x85\x14\x04\xae\xc1\x89\x9d\x1c\x1e\x1e\x20\x08\xa2\x58\x61\xc9\x69\x86\x64\xfa\x72\xba\x9c\x04\xd3\xe1\xc9\xe5\xc5\x3f\x57\xf6\x10\x82\x28\x9a\x38\xb6\x9c\x2d\x16\x90\x02\x21\xa4\x23\x8b\xa2\x78\x89\xe6\x82\xad\x90\x44\xf0\xd2\xd9\xea\x0f\x22\x98\xc2\x2c\x49\x92\x56\x9d\xd6\xd7\x0d\xc5\x47\x6a\x8a\x78\xc1\xa5\x54\xc4\x9d\x4c\xe1\x97\xa3\x9f\x93\x24\x9a\x8f\x1c\x92\x2d\x80\x30\x7d\x4e\xcf\x49\xab\x13\x59\x87\x3b\x82\x63\x48\x22\x07\xb4\x3f\x85\xa6\x52\xa2\xd1\xf4\x1f\x03\x53\x29\x24\xf0\xe2\x05\x90\x0e\xde\x05\x72\x0c\x47\x4e\x14\xfc\x57\x69\x03\x42\xae\x03\x78\x78\xd8\x05\x9b\x1d\x78\xdc\x0c\x56\x4c\x54\x06\x81\x2e\xe5\xf7\xb0\x87\x47\x89\x03\x0f\x02\x84\x26\xc2\xa3\x04\x22\x18\x43\xd0\xb0\xe8\x7d\x34\xaf\x0e\x92\xd6\x66\x21\x2b\xb5\x0f\xea\x12\xf7\x1d\x93\xce\x1b\x6f\xd4\xd2\x78\x93\xd1\x90\x68\x98\xa8\x99\xb3\xf8\x37\x6a\x83\x2a\xa7\x75\xb0\x13\x77\x0c\xaf\x2c\xac\xfb\xb6\xdc\x39\xad\x9f\x46\x33\xd0\x38\x9c\x75\xfe\x65\xc8\x38\xe9\x65\x53\x78\xd5\xf8\xb7\x46\xbc\xdd\x43\x72\x32\x24\x51\xb2\x12\x39\x19\x90\x1c\xce\x9a\xcc\x4a\x61\x0a\xcf\x32\x1f\x6d\x46\xa3\xe9\x14\x34\x52\x95\x15\x3b\x06\xc6\x0b\x88\x7f\x5c\xdf\x51\x3e\x18\x19\x5d\x65\x85\x9d\x99\x5e\x18\x1b\x79\x26\xd7\xa8\xde\x51\x8d\x24\x9a\x77\x48\x43\x6f\xb8\x45\xe6\x32\xab\x56\x28\x8c\x6d\xfe\x53\x8e\xf6\xf5\x6d\xfd\x5b\x4e\x82\x9c\x29\xcc\x8c\x54\x75\x30\xd0\xca\x90\xf3\x73\x05\x29\xcc\xfa\x33\xe4\xe8\x3f\x16\x52\x01\xb1\x27\x1e\x00\x0a\x8e\xbd\x99\x58\xc9\xb5\x8e\x39\x8a\xa5\x29\xe6\xa0\xc6\xe3\xc6\x63\xfb\x43\xe7\x45\x0f\xbb\x54\x57\xb1\xb5\xa2\x2f\xbd\xad\xab\x98\x09\x81\xea\xc3\xc5\xc7\xb3\x7e\xc2\x8f\x2f\xff\x3d\xb9\x1a\x9f\xd8\x21\x6f\xbd\x6b\xa7\x0f\x39\x6e\x87\x1c\x33\x91\xe3\xfd\xa7\x05\x71\xb9\x89\x4e\x52\xdb\x58\xdf\xb6\x1a\x72\xdb\xba\x36\x35\xc7\x38\x67\xba\xe4\xb4\x86\x14\xc2\xb0\xb7\xb0\x01\xe4\x1a\x7f\x4c\x5d\x48\x81\x43\x8a\x91\xff\xbb\x19\xf5\x25\xe5\x92\xe6\x7f\x56\x5c\xa0\xa2\x37\x8c\x33\x53\xbf\x93\x95\x30\xa4\x52\xbe\xb6\x36\xa7\xf7\x85\x6a\x76\xe1\x5f\x1f\xcf\x3e\x18\x53\x7e\xc6\xaf\x15\x6a\xe3\x6b\x7a\x5f\xa8\x58\x96\x28\x48\xf8\xeb\xe9\x45\x38\x01\xab\xd9\x9d\x0b\x4b\x0f\x69\xd7\x4a\xa4\x8f\xdf\x66\xcc\x62\xb4\xa1\xa6\xd2\x90\xa6\x29\x1c\x24\xc9\x76\x7e\x5c\x45\xb1\x94\xca\x40\x0a\xbf\x7f\xf9\x74\x1e\x97\x54\x69\x74\x7a\x0a\x75\x29\x85\xc6\x0b\xbc\x37\x83\x42\x78\x25\x66\x8d\x7a\xcd\xf8\x33\x96\x12\xc6\x10\xbe\x0e\x61\xdc\x9e\x5d\xd0\xe5\x63\x15\xf4\x1d\xb8\xa7\x2f\x59\xde\xee\xda\xad\x9a\x5b\xf9\xe3\xb2\x36\xc7\x7d\x03\xf5\xee\xbc\xf5\xf9\xd6\x43\xfb\x3b\x6b\x9b\x49\xa1\x25\xc7\x98\xcb\x25\x09\x5a\xef\x84\x34\xb0\xb0\xa3\xec\x5a\x7e\xc9\xee\x50\xd8\x60\x83\x09\x38\xef\x06\x94\xa3\xfe\xb9\x69\xeb\xa1\x51\xe4\xb6\x6a\x9b\xd1\xc8\x87\x3c\x8c\xf6\x6b\x85\xaa\xfe\x82\xdc\x8d\xde\x1b\xce\x49\x68\xd4\x6b\x61\x8a\x97\x59\xc1\x78\x4e\x0e\xa2\x30\xba\x4c\xae\x76\xc1\xf2\xa7\xb0\xf9\xc8\x67\x27\x36\x78\x6f\xde\x49\x61\x5c\x6a\x53\x08\xff\xa0\xca\xbe\xbe\x6f\x47\x3c\x1c\xac\x90\xd2\xc9\xae\x95\x5c\xff\xb8\x5f\xf3\xee\x12\xec\x59\xe2\x8c\x53\xad\xcf\x98\x36\x83\xa9\xdf\x25\x8e\x69\x9e\x93\xd0\x4b\xc2\x26\x8d\x4f\x6a\xf2\x58\xf1\x9c\xae\x10\xc6\x29\x84\x60\x1b\xab\xd5\x9e\xf7\x33\xd6\x6e\x2d\xfd\x4c\x34\x39\x50\x6b\xf4\x8d\x52\xb4\x8e\x4b\x25\x8d\x34\x75\x89\xf1\x42\xaa\x53\x9a\x15\x71\x46\x39\x27\x8e\x67\xd2\xcf\x11\x33\xb8\x9a\x80\xdb\x2f\x83\x04\x72\x26\x6e\x21\x05\x2b\xb4\xcd\xfb\xc6\x18\xc5\x6e\x2a\x83\x24\x2c\x14\x2e\xda\xc8\x1a\x94\x7d\x74\x7b\x2d\x8c\x0b\xb3\xe2\xe1\x04\xc2\x16\xe5\x48\xf4\x53\x92\x89\x53\xb4\x4d\x64\xa7\xc1\x5a\x95\x95\xba\x7e\xb2\xd3\x77\xc4\x69\x21\x4d\xad\x3a\x95\x47\x16\x58\x6e\x5d\xc8\xfb\xe6\x98\x0f\x2f\x24\x9d\x29\x56\x1a\x67\xb3\xb9\x65\x98\x28\x2b\xb3\xdf\xac\x83\x5c\x0a\xba\xc2\x34\x58\x30\x6e\x50\x05\x57\x8d\x17\xae\x40\x1c\xa9\xba\xbe\xa9\x8c\x91\x62\x3f\x11\x8d\x1d\xb6\xd1\x75\xfd\x3d\xf4\xc2\xaf\x80\xc7\xa7\xf1\x1d\xe5\x15\xc2\x4f\xb6\xf5\xc3\xae\x0b\xb7\xef\xd1\x01\xd0\xe5\x7e\x63\x97\xcc\x96\x8c\xe6\xf9\xe9\x1d\x0a\x63\x7b\x15\x05\x2a\x12\xde\x62\x5d\x95\xe1\xa0\x21\xb0\x23\xc7\xb8\x54\x68\xd1\xef\x71\x41\x2b\x6e\x48\xb7\x17\x9e\x31\xeb\xb7\xdb\xf3\x86\x4b\x85\x5a\xef\xb6\x6d\xc3\x07\x8c\xd7\x05\xcb\x0a\xf7\xef\xd1\xe1\xa3\x1b\xef\xfb\xce\x6d\x1a\x17\x36\x3e\xb5\xc3\xba\x78\x8a\xe1\xc9\x0e\xc7\x32\xce\xb2\xdb\xdd\x5e\xed\x28\xc8\xf0\x6e\x6d\xd2\xd2\x74\xbe\xf7\xe1\xff\x00\x00\x00\xff\xff\x38\x20\xe7\x76\x3c\x0c\x00\x00"), diff --git a/internal/binutils/templates/templates.go b/internal/binutils/templates/templates.go new file mode 100644 index 00000000..77b33308 --- /dev/null +++ b/internal/binutils/templates/templates.go @@ -0,0 +1,200 @@ +// Code generated by vfsgen; DO NOT EDIT. + +package templates + +import ( + "bytes" + "compress/gzip" + "fmt" + "io" + "io/ioutil" + "net/http" + "os" + pathpkg "path" + "time" +) + +// Assets statically implements the virtual filesystem provided to vfsgen. +var Assets = func() http.FileSystem { + fs := vfsgen۰FS{ + "/": &vfsgen۰DirInfo{ + name: "/", + modTime: time.Date(2018, 9, 10, 21, 40, 58, 715425786, time.UTC), + }, + "/repositories.html": &vfsgen۰CompressedFileInfo{ + name: "repositories.html", + modTime: time.Date(2018, 9, 10, 21, 40, 58, 715425786, time.UTC), + uncompressedSize: 1904, + + compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x55\xc9\x6e\xe4\x36\x10\xbd\xf7\x57\x94\x89\x39\x8e\x44\x18\x39\x8c\xd3\xa0\x84\x04\x1e\x1f\x0c\x64\x19\x18\x31\x90\x60\x30\x07\x36\x55\x92\x68\x53\xa4\x86\x2c\xb5\xd1\x51\xf4\xef\x01\xb5\xa0\x57\x1b\xce\x21\xba\x50\x7c\xf5\xea\xb1\x16\xaa\xd4\xf7\x05\x96\xda\x22\x30\x8f\xad\x0b\x9a\x9c\xd7\x18\xd8\x30\xac\xc4\xd5\xe7\xdf\x6f\xff\xf8\xeb\xcb\x1d\xd4\xd4\x98\x7c\x25\xae\x92\xe4\xab\x2e\xc1\x10\xdc\xdf\xc1\xa7\x6f\x39\x8c\x8f\x88\x56\x50\x46\x86\x90\x31\xeb\x92\xa7\x00\x86\x12\x8d\x3f\x4e\xcb\xcd\xb4\x7c\x62\x39\x88\xab\xaf\x68\x0b\x5d\x7e\x4b\x92\xbd\xda\xa1\xd4\x3b\xd4\xde\x90\xb9\x79\x8f\xcc\x6b\xfe\x15\xcd\x12\x11\xc8\x2f\xf8\x8f\x8e\x49\x72\xec\x5c\xa3\x2c\xf2\xd5\x78\x60\x83\x24\x41\xd5\xd2\x07\xa4\x8c\x75\x54\x26\x37\x6c\x36\x6d\x64\x40\xa8\x3d\x96\x19\xe3\x0c\x0e\xf9\x35\x51\x9b\xe0\xf7\x4e\x6f\x33\xf6\x67\xf2\xf8\x73\x72\xeb\x9a\x56\x92\xde\x18\x64\xa0\x9c\x25\xb4\x94\xb1\xfb\xbb\x0c\x8b\x0a\x3f\xaa\xda\xbb\x06\xb3\xeb\x45\x97\x34\x19\xcc\xfb\x1e\xd2\x07\xac\x74\x20\xbf\xfb\xec\x1a\xa9\x2d\x0c\x83\xe0\x93\x71\x22\x1a\x6d\x9f\xc1\xa3\xc9\x98\x56\xce\x32\xa0\x5d\x8b\x19\xd3\x8d\xac\x90\x6b\xe5\xd8\x12\x5c\x20\x49\x5a\xf1\x52\x6e\x23\x2f\x8d\xa6\x33\x85\x40\x3b\x83\xa1\x46\xa4\x53\x37\x15\x02\x9f\xac\xa9\x0a\x81\x01\xcf\x57\x82\x4f\x15\x12\x1b\x57\xec\x66\xa9\xfa\xfa\xb5\x90\xeb\xeb\x99\x52\x3a\xdf\x4c\xaf\xe3\x56\xdb\xb6\x23\xb0\xb2\xc1\x8c\x95\xda\x10\xfa\x25\x85\x80\xd2\xab\x9a\xe5\x42\x2e\xbd\x52\x06\xa5\x67\xf9\xb8\x08\x2e\x67\x41\x3e\x29\x4e\x9b\x42\x6f\x17\xf6\x8b\x97\x6d\x8b\x9e\x1d\x1c\x46\x72\xb3\xd4\x6d\x8f\xf9\x63\x60\x02\xeb\xfc\x61\xf9\x62\x76\xf0\x9b\x6c\x50\x70\xaa\x2f\x13\xbf\x74\xc6\xc0\xad\x6b\x1a\x69\x8b\x73\x96\xe0\xa7\x07\xf4\x3d\x78\x69\x2b\x84\x0f\xcf\xb8\xfb\x08\x1f\xb6\xd2\x74\x08\xeb\x2c\x96\x6d\xff\x91\xc2\x30\xbc\x27\xce\x02\xb6\xd2\xe8\xca\x66\x8c\x5c\xcb\xce\x19\x23\x4b\x2e\xcd\x8c\x53\x80\xf7\xfd\x7c\x66\x1a\xf3\x82\x7f\xa0\xf3\xe6\x7b\x87\x7e\x07\xc3\xc0\x49\x56\xe1\x15\x99\x13\xbf\x93\xf8\xf6\xf9\xca\x0b\x71\x72\x2a\xe6\x0e\x9d\x86\x3f\x47\xef\x75\x55\x13\x03\xeb\x62\xd7\xfe\xd7\x34\x84\x72\x05\xe6\x85\x53\xcf\xe8\xa1\x8d\xbd\xdb\x2b\x3d\x3e\xdc\x8f\x97\x75\xa4\xfc\xd7\xf4\x4e\x90\xf3\xae\xa3\x2d\x0e\xab\x26\xf8\xc1\x75\x14\xbc\xd0\xdb\x0b\x97\xb8\x74\x8e\x8e\xef\x70\x9b\xff\x2a\x0b\x84\x17\x4d\xf5\x9c\x8b\xf8\x61\x8e\x18\x36\xbb\x7d\x95\xe2\xf8\x09\x6b\xce\x2b\x4d\x75\xb7\x49\x95\x6b\xf8\x13\x86\x50\x7a\xf9\x37\xcb\x7f\x5a\x5e\x63\x3e\x82\xb7\x47\xfa\xb7\x35\xaa\x67\xd7\x11\x50\x8d\x10\x5c\xe7\x15\x42\xd4\x07\x49\xeb\x37\xf5\x2b\xb4\x9d\xb6\x48\xce\x99\xc0\x3d\x56\x2c\x7f\xc3\x78\xe9\xe4\x5f\x64\x20\x78\x6c\x0b\x49\x58\xac\x63\xc9\xd2\x88\xcc\xc0\xd8\x99\x63\xfe\x64\x81\x7b\x4b\xe8\xb7\xd2\xac\xc7\x32\xa7\x13\xba\x80\x87\x6e\x53\x95\xe3\xa8\xe7\xe9\x54\xd9\x38\xe9\x47\x4b\x50\x5e\xb7\x04\xc1\xab\xfd\xd0\x7b\x0a\x7c\x82\x43\x1a\xff\x11\x62\xde\xc5\xd1\x37\xcd\x3c\xc1\xa7\xbf\x67\xdf\xa3\x2d\x86\x61\xf5\x6f\x00\x00\x00\xff\xff\x82\xfc\x97\x4b\x70\x07\x00\x00"), + }, + "/tags.html": &vfsgen۰CompressedFileInfo{ + name: "tags.html", + modTime: time.Date(2018, 9, 10, 21, 40, 58, 715425786, time.UTC), + uncompressedSize: 2868, + + compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xcc\x56\xdf\x6f\xdb\x36\x10\x7e\xf7\x5f\x71\x25\x0a\xb4\x05\x2c\x31\xe9\xd6\xb5\x73\x24\x61\x85\x9b\x61\x1d\xf6\x0b\x43\x32\x6c\x08\xf2\x40\x4b\x27\x89\x0e\x4d\xaa\xe4\xc9\x89\xa7\xe9\x7f\x1f\x68\xc9\x8e\xec\xd8\x41\x86\xee\xa1\x7e\x11\x7d\x3f\x3e\x7d\xf7\x9d\xc8\x63\xd3\x64\x98\x4b\x8d\xc0\x48\x14\x8e\xb5\xed\x28\x7a\xf6\xe1\xd7\xe9\xc5\x5f\xbf\x9d\x43\x49\x0b\x95\x8c\xa2\x67\x41\x70\x25\x73\x50\x04\x1f\xcf\xe1\xed\x75\x02\xeb\x5f\xe4\xbd\x90\x2a\xe1\x5c\xcc\xb4\x09\xe6\x0e\x14\x05\x12\xbf\xed\x1e\xef\xba\xc7\x5b\x96\x40\xf4\xec\x0a\x75\x26\xf3\xeb\x20\xb8\x47\x1b\x42\x3d\x01\xed\x11\x98\x77\x4f\x81\x39\x96\x5f\x50\x0f\xe1\x0d\xc9\x81\xfc\x75\x62\x10\xec\x26\x97\x28\xb2\x64\xb4\x7e\xe1\x02\x49\x40\x5a\x0a\xeb\x90\x62\x56\x53\x1e\xbc\x63\xbd\x6b\x26\x1c\x42\x69\x31\x8f\x19\x67\x30\x8c\x2f\x89\xaa\x00\x3f\xd5\x72\x19\xb3\x3f\x83\xcb\xf7\xc1\xd4\x2c\x2a\x41\x72\xa6\x90\x41\x6a\x34\xa1\xa6\x98\x7d\x3c\x8f\x31\x2b\x70\x9c\x96\xd6\x2c\x30\x3e\xdd\xe0\x92\x24\x85\x49\xd3\x40\xf8\x3b\x16\xd2\x91\x5d\x7d\x30\x0b\x21\x35\xb4\x2d\xf7\xd6\x5f\xc4\x02\xa1\x6d\x23\xde\x05\x76\x49\x4a\xea\x1b\xb0\xa8\x62\x26\x53\xa3\x19\xd0\xaa\xc2\x98\xc9\x85\x28\x90\xcb\xd4\xb0\x0d\x51\x47\x82\x64\xca\x73\xb1\xf4\x71\xa1\x77\x3d\x40\x70\xb4\x52\xe8\x4a\x44\xda\x4f\x4b\x9d\xe3\x9d\x37\x4c\x9d\x63\xc0\x93\x51\xc4\x3b\xb5\xa2\x99\xc9\x56\x3d\x54\x79\xfa\x14\xfa\xe5\x69\x1f\x9e\xc9\xe5\xa6\x27\xb7\x56\x54\x15\xda\x9e\x53\x27\x87\x98\x6d\xaa\xbc\xb7\xd9\x5d\x43\x67\x2c\x13\x8f\x1d\x71\x2a\x0f\x7b\x2f\x44\x71\xdc\x39\xb5\x28\x08\xb3\xc3\x01\x4d\x23\x73\x08\x7f\x10\xee\x8f\x5a\x69\xd7\xb6\x3e\xc1\x2f\xd1\x8a\x99\x54\x92\x24\xba\x75\x62\xd3\xa0\xce\xda\x76\x97\x2c\xdf\x67\xdb\x34\x60\x85\x2e\x10\x9e\xdf\xe0\x6a\x0c\xcf\x97\x42\xd5\x08\x93\xd8\x2b\x56\x19\x27\xc9\x58\x89\x0e\xf6\x71\x0e\x17\x9d\xc1\x52\x28\x59\xe8\x98\x29\xcc\x89\x81\x36\x5e\xc3\x87\x91\xdb\x32\x9e\x0f\xeb\x10\x9b\x06\x5b\xac\x8c\x6f\x4f\x47\xa6\x6b\xd2\x3f\x50\x5b\xf5\xa9\x46\xbb\xf2\xbd\x23\x51\x0c\x02\x2e\x44\xe1\x8d\x4b\x8f\xc3\x0e\xd6\x3d\xa8\x76\x08\x7a\x34\x6a\x9f\x1a\x17\x47\x61\x23\x4e\xd9\x61\x2d\x7a\x29\xac\x2c\xca\x2f\x5b\x8b\x2e\xe7\x4b\x91\x62\xc3\xaa\xdf\x04\xe1\xf7\xc6\x2e\x04\x01\x3b\x79\x0d\x3f\x0a\x3d\x86\xd7\x27\x27\xdf\xc0\xe9\x9b\xc9\xc9\xd7\x93\x93\x37\x70\x79\x31\x65\x87\xc8\x1f\xe6\xf2\xa0\x9c\xcf\x64\xfb\x3f\xf5\x09\x64\x16\xb3\x07\xdf\xe6\x64\x3f\x9a\x1d\x26\xb1\x7b\x6a\x39\x59\x68\xa1\x58\x12\xf1\x4c\x2e\x8f\xb0\xe6\xe2\x40\x9b\x8e\x08\xf6\xc4\x43\x04\x75\x36\x6c\x43\xc4\x07\x47\x65\x4f\xe5\xc1\x01\x9b\x1b\x43\xbb\xe7\x6b\x95\xfc\x2c\x32\x84\x5b\x49\x25\x44\xa9\xc9\x30\x89\xbe\x8a\xf8\x7a\x01\xb3\xd5\xbd\xdc\x7e\xa8\xb9\x09\xe7\x85\xa4\xb2\x9e\x85\xa9\x59\xf0\x39\x3a\x97\x5b\xf1\x37\x4b\xbe\xdb\x2c\x7d\x9d\x11\xaf\x76\xf0\xa7\x25\xa6\x37\xa6\x26\xa0\x12\xc1\x99\xda\xa6\x08\x1e\x1f\x04\x4d\x1e\xc5\x2f\x50\xd7\x52\x23\x19\xa3\x1c\xb7\x58\xb0\xe4\x11\xe7\xa1\x37\xff\x24\x1c\xc1\x65\x95\xf9\x8f\x7a\xe2\x25\x0b\xbd\xa5\x37\xac\x87\x50\x35\x94\xcb\xdf\x04\x78\xd8\x49\xe4\x2f\x02\x6b\x8f\x4b\xad\xac\x08\x9c\x4d\xef\xe7\xe0\xdc\xf1\xce\xec\x42\x7f\x85\x88\xfa\x7f\x5d\xc6\xfe\xb0\xd8\x81\xe9\xe6\x32\xe1\x1d\xf1\xb9\x58\x8a\xce\xba\x6d\xc7\x52\x58\x10\x73\x71\x37\x15\x4a\x39\x88\xe1\x6a\x34\x68\xf7\x7f\x9e\x19\x2f\x3e\x6b\x87\x84\x73\x67\xf4\x8b\xf1\xe8\xd8\x07\x77\x7d\xd6\x2f\x6e\xa5\xce\xcc\x6d\x68\xb4\x32\x22\x83\x18\xf2\x5a\xa7\x24\x8d\x7e\xf9\x0a\x9a\x6d\xf6\x7b\x6b\xc5\x2a\xac\xac\x21\xe3\x25\x08\x73\x63\xcf\x45\x5a\x86\xa9\x50\xea\xe5\xb6\xe4\xf1\x7d\x72\x6d\xd5\x18\xa4\xce\xf0\xee\x55\x33\xa8\xc9\xbf\x63\x38\x79\x57\x53\x53\x6b\xf2\xd1\xaf\xce\xb6\x61\xed\x76\xdd\x9e\xf5\xed\xdd\x6d\x50\xb7\xc1\x22\xde\xdd\x59\x22\xde\xdd\x84\x37\xf6\x7f\x03\x00\x00\xff\xff\x88\x1c\x69\x6a\x34\x0b\x00\x00"), + }, + "/vulns.html": &vfsgen۰CompressedFileInfo{ + name: "vulns.html", + modTime: time.Date(2018, 9, 10, 21, 40, 58, 715425786, time.UTC), + uncompressedSize: 2715, + + compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xa4\x56\xdf\x6f\xdb\x36\x10\x7e\xcf\x5f\x71\x21\xfa\x18\x99\x48\x82\xa1\x59\x40\x0b\x5b\x93\x60\x2b\xd0\xfd\x40\x9b\x0e\x1b\x8a\x62\xa0\xa4\xb3\xc4\x86\x22\x35\xf2\xe4\xcd\x13\xf4\xbf\x0f\x12\x2d\x5b\x96\xec\x2c\xc3\xfc\x20\x4b\xbe\xbb\xef\xee\xfb\xee\x74\x74\xd3\x64\xb8\x52\x06\x81\xad\x6b\x6d\x3c\x6b\xdb\x33\x71\x7e\xff\xd3\xdd\xe3\x6f\x3f\x3f\x40\x41\xa5\x8e\xcf\xc4\x79\x14\x7d\x52\x2b\xd0\x04\x6f\x1f\xe0\xf5\xe7\x18\xfa\x8f\xe8\xac\x90\x6a\xe9\xfd\x92\x19\x1b\x7d\xf1\xa0\x29\x52\xf8\x75\xf8\xba\x09\x5f\xaf\x59\x0c\xe2\xfc\x13\x9a\x4c\xad\x3e\x47\xd1\x1e\x6d\x0c\xf5\x02\xb4\x67\x60\x6e\x5e\x02\x73\x2a\x3e\xa7\x2d\x44\xf7\x43\x7c\x24\xbe\x0f\x8c\xa2\xc3\xe0\x02\x65\x16\x9f\xf5\x09\x4b\x24\x09\x69\x21\x9d\x47\x5a\xb2\x9a\x56\xd1\x0d\xdb\x9a\x12\xe9\x11\x0a\x87\xab\x25\xe3\x0c\xc6\xfe\x05\x51\x15\xe1\x1f\xb5\x5a\x2f\xd9\xaf\xd1\xc7\x6f\xa3\x3b\x5b\x56\x92\x54\xa2\x91\x41\x6a\x0d\xa1\xa1\x25\x7b\xfb\xb0\xc4\x2c\xc7\x8b\xb4\x70\xb6\xc4\xe5\xe5\x80\x4b\x8a\x34\xc6\x4d\x03\x8b\xf7\x98\x2b\x4f\x6e\xf3\xf1\xfd\x3b\x68\x5b\x1e\x7e\xaa\x2c\xb4\xed\x6d\x77\xff\x28\x73\x68\x5b\xf8\xa5\xd6\x06\x9d\x4c\x94\x56\xb4\x81\xce\xc1\x91\xe0\x01\x25\x20\x6a\x65\x9e\xc0\xa1\x5e\x32\x95\x5a\xc3\x80\x36\x15\x2e\x99\x2a\x65\x8e\x5c\xa5\x96\x0d\x2c\x3c\x49\x52\x29\x5f\xc9\x75\xe7\xb7\xe8\x4c\x33\x04\x4f\x1b\x8d\xbe\x40\xa4\x69\x58\xea\x3d\x4f\xac\x25\x4f\x4e\x56\x8b\x52\x99\x45\xea\x3d\x03\x1e\x9f\x09\x1e\x14\x15\x89\xcd\x36\x5b\xc4\x4c\xad\x87\x46\x74\x8a\x48\x65\xd0\x6d\xb3\xf5\x76\xbb\xeb\x53\xe2\x50\x66\xa9\xab\xcb\x64\x64\xdf\x56\x15\x0b\xb9\x6b\xc1\x11\xc9\x04\x97\xb1\xe0\x5a\xcd\xe2\x06\x6c\x99\x92\x5a\xe3\x10\x3a\x95\xf6\x30\x54\x70\xab\xe3\xb3\xfd\xe3\x88\x41\x25\x73\x8c\x3a\x8e\x07\x1c\xc2\xc4\x5e\xfe\x87\x56\x0a\x5f\x4a\xad\xe3\xe3\x1d\x0d\x36\xc1\x8b\xcb\x71\x4d\x99\x5a\x8f\x1e\xab\xa1\x22\xc2\xbf\x28\x72\x2a\x2f\x88\xc5\xdf\x61\x87\x46\x98\x81\x35\xb7\xd0\x34\x8b\x7b\x49\xd8\xb1\xab\x46\x74\x9a\x26\xbc\x2e\x8b\x37\x32\xeb\xf2\x7b\xf8\xaa\x6d\x8f\x92\x95\x1a\x1d\x41\x7f\x8d\x32\x69\x72\x74\x0c\x9c\xd5\xb8\xb5\x4c\x04\x68\x9a\x1d\x62\xdb\xc2\xf7\x2a\x2f\x2e\xe0\xce\x29\x52\xa9\xd4\x17\x20\x4d\xc6\xad\x83\x7b\x5c\xa5\xd6\x5c\xc2\x7a\x44\x5c\xa1\x87\x95\xad\x4d\x76\x8a\x6c\xd3\xa0\xc9\xda\x76\xd4\x91\xe2\x2a\xfe\x50\x97\xa5\x74\x1b\xc1\x8b\xab\x91\x2c\xf5\x6e\x98\xb4\xf2\x14\xe5\xce\xd6\xd5\x7c\x98\xe6\x3e\x91\x22\x2c\x27\x8e\xbd\xb3\xaf\xa4\xd9\xcd\xa7\xcc\xf2\x30\x42\x1a\x0d\x2c\x82\x78\x9d\xbc\x9d\xd3\x91\xd8\x24\x7e\xb4\x24\xb5\xe0\xc9\xa4\x82\xd9\xa0\x36\x8d\xeb\xf4\x85\x57\x4f\xb8\xb9\x80\x57\x6b\xa9\x6b\x84\xdb\xe5\x36\xc7\x9b\xcd\x07\x5c\xa3\x53\xb4\x19\x35\xea\xff\x51\xd1\x32\x41\x0d\xfd\x35\x6a\x9a\xd4\x6a\xeb\xfa\xe4\x6d\x0b\x55\xad\xf5\x30\x50\x5b\xaa\xdb\x82\x4e\x53\x6d\x9a\x3e\x1a\xa6\xf5\x1d\x21\x1a\x5a\xb9\xf7\xa8\x0f\x5e\xb5\xe2\x2a\xbe\x47\x92\x4a\xfb\xc3\xc6\xee\x04\xea\x4f\xb7\x7f\x91\x66\xef\x3c\xe8\x18\xc2\x4e\x8c\x79\x25\x0d\x6a\xe8\xaf\x51\x86\x2b\x59\xeb\xe9\x68\xcf\xbc\xfb\x15\xa0\x4c\x7e\x4c\xe6\xe2\xfa\xd0\xb5\xdf\xcf\x9d\x94\xa1\x9c\xc5\x8f\xb2\xc4\x89\x4e\x2f\x6f\x51\x80\xd8\x73\x9e\x74\x6b\x66\x3f\x39\x9b\xbc\xb8\x9e\x0e\xe5\xc1\x3b\x77\x9c\x76\xb7\xd6\x8f\x70\xde\x25\xbe\x47\x9f\x3a\x55\x91\xb2\x66\x36\x0a\x2f\x80\x5f\x59\x4b\xb3\xc5\xda\xbb\x0e\xcb\x7f\x97\xe9\x9d\x32\x4f\x6d\xcb\x80\xa4\xcb\xbb\x03\xfb\xf7\x44\x4b\xf3\x34\xd2\x20\x38\x74\xe7\xc2\x73\x75\x9c\xd8\x34\xd3\xe7\xbd\x7f\x28\xf1\x60\xf9\xa6\x68\xe6\x55\x8b\x2a\xfe\x41\x66\x08\x7f\x2a\x2a\x40\xa4\x36\xc3\x58\x5c\x0b\xde\xdf\x40\xb2\xd9\x33\xea\xfe\x42\xf8\x5b\xce\x73\x45\x45\x9d\x2c\x52\x5b\xf2\x2f\xe8\xfd\xca\xc9\xbf\x59\xfc\xcd\x70\x1b\xce\xb7\x6a\x96\xe3\xae\xc0\xf4\xc9\xd6\x04\x54\x20\x78\x5b\xbb\x14\xa1\xcb\x01\x92\x6e\x9f\xcd\x91\xa3\xa9\x95\x41\xb2\x56\x7b\xee\x30\x67\xf1\x33\xc6\x59\x76\xc1\x83\x0e\xdb\x23\x3e\x88\x28\x78\x38\xf5\x05\x0f\xff\x37\x07\xf1\xfe\x09\x00\x00\xff\xff\x30\xe0\x25\xc3\x9b\x0a\x00\x00"), + }, + } + fs["/"].(*vfsgen۰DirInfo).entries = []os.FileInfo{ + fs["/repositories.html"].(os.FileInfo), + fs["/tags.html"].(os.FileInfo), + fs["/vulns.html"].(os.FileInfo), + } + + return fs +}() + +type vfsgen۰FS map[string]interface{} + +func (fs vfsgen۰FS) Open(path string) (http.File, error) { + path = pathpkg.Clean("/" + path) + f, ok := fs[path] + if !ok { + return nil, &os.PathError{Op: "open", Path: path, Err: os.ErrNotExist} + } + + switch f := f.(type) { + case *vfsgen۰CompressedFileInfo: + gr, err := gzip.NewReader(bytes.NewReader(f.compressedContent)) + if err != nil { + // This should never happen because we generate the gzip bytes such that they are always valid. + panic("unexpected error reading own gzip compressed bytes: " + err.Error()) + } + return &vfsgen۰CompressedFile{ + vfsgen۰CompressedFileInfo: f, + gr: gr, + }, nil + case *vfsgen۰DirInfo: + return &vfsgen۰Dir{ + vfsgen۰DirInfo: f, + }, nil + default: + // This should never happen because we generate only the above types. + panic(fmt.Sprintf("unexpected type %T", f)) + } +} + +// vfsgen۰CompressedFileInfo is a static definition of a gzip compressed file. +type vfsgen۰CompressedFileInfo struct { + name string + modTime time.Time + compressedContent []byte + uncompressedSize int64 +} + +func (f *vfsgen۰CompressedFileInfo) Readdir(count int) ([]os.FileInfo, error) { + return nil, fmt.Errorf("cannot Readdir from file %s", f.name) +} +func (f *vfsgen۰CompressedFileInfo) Stat() (os.FileInfo, error) { return f, nil } + +func (f *vfsgen۰CompressedFileInfo) GzipBytes() []byte { + return f.compressedContent +} + +func (f *vfsgen۰CompressedFileInfo) Name() string { return f.name } +func (f *vfsgen۰CompressedFileInfo) Size() int64 { return f.uncompressedSize } +func (f *vfsgen۰CompressedFileInfo) Mode() os.FileMode { return 0444 } +func (f *vfsgen۰CompressedFileInfo) ModTime() time.Time { return f.modTime } +func (f *vfsgen۰CompressedFileInfo) IsDir() bool { return false } +func (f *vfsgen۰CompressedFileInfo) Sys() interface{} { return nil } + +// vfsgen۰CompressedFile is an opened compressedFile instance. +type vfsgen۰CompressedFile struct { + *vfsgen۰CompressedFileInfo + gr *gzip.Reader + grPos int64 // Actual gr uncompressed position. + seekPos int64 // Seek uncompressed position. +} + +func (f *vfsgen۰CompressedFile) Read(p []byte) (n int, err error) { + if f.grPos > f.seekPos { + // Rewind to beginning. + err = f.gr.Reset(bytes.NewReader(f.compressedContent)) + if err != nil { + return 0, err + } + f.grPos = 0 + } + if f.grPos < f.seekPos { + // Fast-forward. + _, err = io.CopyN(ioutil.Discard, f.gr, f.seekPos-f.grPos) + if err != nil { + return 0, err + } + f.grPos = f.seekPos + } + n, err = f.gr.Read(p) + f.grPos += int64(n) + f.seekPos = f.grPos + return n, err +} +func (f *vfsgen۰CompressedFile) Seek(offset int64, whence int) (int64, error) { + switch whence { + case io.SeekStart: + f.seekPos = 0 + offset + case io.SeekCurrent: + f.seekPos += offset + case io.SeekEnd: + f.seekPos = f.uncompressedSize + offset + default: + panic(fmt.Errorf("invalid whence value: %v", whence)) + } + return f.seekPos, nil +} +func (f *vfsgen۰CompressedFile) Close() error { + return f.gr.Close() +} + +// vfsgen۰DirInfo is a static definition of a directory. +type vfsgen۰DirInfo struct { + name string + modTime time.Time + entries []os.FileInfo +} + +func (d *vfsgen۰DirInfo) Read([]byte) (int, error) { + return 0, fmt.Errorf("cannot Read from directory %s", d.name) +} +func (d *vfsgen۰DirInfo) Close() error { return nil } +func (d *vfsgen۰DirInfo) Stat() (os.FileInfo, error) { return d, nil } + +func (d *vfsgen۰DirInfo) Name() string { return d.name } +func (d *vfsgen۰DirInfo) Size() int64 { return 0 } +func (d *vfsgen۰DirInfo) Mode() os.FileMode { return 0755 | os.ModeDir } +func (d *vfsgen۰DirInfo) ModTime() time.Time { return d.modTime } +func (d *vfsgen۰DirInfo) IsDir() bool { return true } +func (d *vfsgen۰DirInfo) Sys() interface{} { return nil } + +// vfsgen۰Dir is an opened dir instance. +type vfsgen۰Dir struct { + *vfsgen۰DirInfo + pos int // Position within entries for Seek and Readdir. +} + +func (d *vfsgen۰Dir) Seek(offset int64, whence int) (int64, error) { + if offset == 0 && whence == io.SeekStart { + d.pos = 0 + return 0, nil + } + return 0, fmt.Errorf("unsupported Seek in directory %s", d.name) +} + +func (d *vfsgen۰Dir) Readdir(count int) ([]os.FileInfo, error) { + if d.pos >= len(d.entries) && count > 0 { + return nil, io.EOF + } + if count <= 0 || count > len(d.entries)-d.pos { + count = len(d.entries) - d.pos + } + e := d.entries[d.pos : d.pos+count] + d.pos += count + return e, nil +} diff --git a/server.go b/server.go index 159bc264..c1a14fb3 100644 --- a/server.go +++ b/server.go @@ -12,9 +12,11 @@ import ( "time" "github.com/genuinetools/reg/clair" - "github.com/genuinetools/reg/internal/binutils" + "github.com/genuinetools/reg/internal/binutils/static" + "github.com/genuinetools/reg/internal/binutils/templates" "github.com/gorilla/mux" wordwrap "github.com/mitchellh/go-wordwrap" + "github.com/shurcooL/httpfs/html/vfstemplate" "github.com/sirupsen/logrus" ) @@ -93,18 +95,6 @@ func (cmd *serverCommand) Run(ctx context.Context, args []string) error { } staticDir := filepath.Join(assetDir, "static") - templateDir := filepath.Join(assetDir, "templates") - // Make sure all the paths exist. - tmplPaths := []string{ - filepath.Join(templateDir, "vulns.html"), - filepath.Join(templateDir, "repositories.html"), - filepath.Join(templateDir, "tags.html"), - } - for _, path := range tmplPaths { - if _, err := os.Stat(path); os.IsNotExist(err) { - return fmt.Errorf("template %s not found", path) - } - } funcMap := template.FuncMap{ "trim": func(s string) string { @@ -132,7 +122,8 @@ func (cmd *serverCommand) Run(ctx context.Context, args []string) error { }, } - rc.tmpl = template.Must(template.New("").Funcs(funcMap).Parse(templateDir + "/*.html")) + rc.tmpl = template.New("").Funcs(funcMap) + rc.tmpl = template.Must(vfstemplate.ParseGlob(templates.Assets, rc.tmpl, "*.html")) // Create the initial index. logrus.Info("creating initial static index") @@ -176,7 +167,7 @@ func (cmd *serverCommand) Run(ctx context.Context, args []string) error { } // Serve the static assets. - staticHandler := http.FileServer(binutils.Assets) + staticHandler := http.FileServer(static.Assets) mux.PathPrefix("/static/").Handler(http.StripPrefix("/static/", staticHandler)) mux.Handle("/", staticHandler) diff --git a/vendor/github.com/Microsoft/go-winio/ea.go b/vendor/github.com/Microsoft/go-winio/ea.go index b37e930d..4051c1b3 100644 --- a/vendor/github.com/Microsoft/go-winio/ea.go +++ b/vendor/github.com/Microsoft/go-winio/ea.go @@ -1,137 +1,137 @@ -package winio - -import ( - "bytes" - "encoding/binary" - "errors" -) - -type fileFullEaInformation struct { - NextEntryOffset uint32 - Flags uint8 - NameLength uint8 - ValueLength uint16 -} - -var ( - fileFullEaInformationSize = binary.Size(&fileFullEaInformation{}) - - errInvalidEaBuffer = errors.New("invalid extended attribute buffer") - errEaNameTooLarge = errors.New("extended attribute name too large") - errEaValueTooLarge = errors.New("extended attribute value too large") -) - -// ExtendedAttribute represents a single Windows EA. -type ExtendedAttribute struct { - Name string - Value []byte - Flags uint8 -} - -func parseEa(b []byte) (ea ExtendedAttribute, nb []byte, err error) { - var info fileFullEaInformation - err = binary.Read(bytes.NewReader(b), binary.LittleEndian, &info) - if err != nil { - err = errInvalidEaBuffer - return - } - - nameOffset := fileFullEaInformationSize - nameLen := int(info.NameLength) - valueOffset := nameOffset + int(info.NameLength) + 1 - valueLen := int(info.ValueLength) - nextOffset := int(info.NextEntryOffset) - if valueLen+valueOffset > len(b) || nextOffset < 0 || nextOffset > len(b) { - err = errInvalidEaBuffer - return - } - - ea.Name = string(b[nameOffset : nameOffset+nameLen]) - ea.Value = b[valueOffset : valueOffset+valueLen] - ea.Flags = info.Flags - if info.NextEntryOffset != 0 { - nb = b[info.NextEntryOffset:] - } - return -} - -// DecodeExtendedAttributes decodes a list of EAs from a FILE_FULL_EA_INFORMATION -// buffer retrieved from BackupRead, ZwQueryEaFile, etc. -func DecodeExtendedAttributes(b []byte) (eas []ExtendedAttribute, err error) { - for len(b) != 0 { - ea, nb, err := parseEa(b) - if err != nil { - return nil, err - } - - eas = append(eas, ea) - b = nb - } - return -} - -func writeEa(buf *bytes.Buffer, ea *ExtendedAttribute, last bool) error { - if int(uint8(len(ea.Name))) != len(ea.Name) { - return errEaNameTooLarge - } - if int(uint16(len(ea.Value))) != len(ea.Value) { - return errEaValueTooLarge - } - entrySize := uint32(fileFullEaInformationSize + len(ea.Name) + 1 + len(ea.Value)) - withPadding := (entrySize + 3) &^ 3 - nextOffset := uint32(0) - if !last { - nextOffset = withPadding - } - info := fileFullEaInformation{ - NextEntryOffset: nextOffset, - Flags: ea.Flags, - NameLength: uint8(len(ea.Name)), - ValueLength: uint16(len(ea.Value)), - } - - err := binary.Write(buf, binary.LittleEndian, &info) - if err != nil { - return err - } - - _, err = buf.Write([]byte(ea.Name)) - if err != nil { - return err - } - - err = buf.WriteByte(0) - if err != nil { - return err - } - - _, err = buf.Write(ea.Value) - if err != nil { - return err - } - - _, err = buf.Write([]byte{0, 0, 0}[0 : withPadding-entrySize]) - if err != nil { - return err - } - - return nil -} - -// EncodeExtendedAttributes encodes a list of EAs into a FILE_FULL_EA_INFORMATION -// buffer for use with BackupWrite, ZwSetEaFile, etc. -func EncodeExtendedAttributes(eas []ExtendedAttribute) ([]byte, error) { - var buf bytes.Buffer - for i := range eas { - last := false - if i == len(eas)-1 { - last = true - } - - err := writeEa(&buf, &eas[i], last) - if err != nil { - return nil, err - } - } - return buf.Bytes(), nil -} +package winio + +import ( + "bytes" + "encoding/binary" + "errors" +) + +type fileFullEaInformation struct { + NextEntryOffset uint32 + Flags uint8 + NameLength uint8 + ValueLength uint16 +} + +var ( + fileFullEaInformationSize = binary.Size(&fileFullEaInformation{}) + + errInvalidEaBuffer = errors.New("invalid extended attribute buffer") + errEaNameTooLarge = errors.New("extended attribute name too large") + errEaValueTooLarge = errors.New("extended attribute value too large") +) + +// ExtendedAttribute represents a single Windows EA. +type ExtendedAttribute struct { + Name string + Value []byte + Flags uint8 +} + +func parseEa(b []byte) (ea ExtendedAttribute, nb []byte, err error) { + var info fileFullEaInformation + err = binary.Read(bytes.NewReader(b), binary.LittleEndian, &info) + if err != nil { + err = errInvalidEaBuffer + return + } + + nameOffset := fileFullEaInformationSize + nameLen := int(info.NameLength) + valueOffset := nameOffset + int(info.NameLength) + 1 + valueLen := int(info.ValueLength) + nextOffset := int(info.NextEntryOffset) + if valueLen+valueOffset > len(b) || nextOffset < 0 || nextOffset > len(b) { + err = errInvalidEaBuffer + return + } + + ea.Name = string(b[nameOffset : nameOffset+nameLen]) + ea.Value = b[valueOffset : valueOffset+valueLen] + ea.Flags = info.Flags + if info.NextEntryOffset != 0 { + nb = b[info.NextEntryOffset:] + } + return +} + +// DecodeExtendedAttributes decodes a list of EAs from a FILE_FULL_EA_INFORMATION +// buffer retrieved from BackupRead, ZwQueryEaFile, etc. +func DecodeExtendedAttributes(b []byte) (eas []ExtendedAttribute, err error) { + for len(b) != 0 { + ea, nb, err := parseEa(b) + if err != nil { + return nil, err + } + + eas = append(eas, ea) + b = nb + } + return +} + +func writeEa(buf *bytes.Buffer, ea *ExtendedAttribute, last bool) error { + if int(uint8(len(ea.Name))) != len(ea.Name) { + return errEaNameTooLarge + } + if int(uint16(len(ea.Value))) != len(ea.Value) { + return errEaValueTooLarge + } + entrySize := uint32(fileFullEaInformationSize + len(ea.Name) + 1 + len(ea.Value)) + withPadding := (entrySize + 3) &^ 3 + nextOffset := uint32(0) + if !last { + nextOffset = withPadding + } + info := fileFullEaInformation{ + NextEntryOffset: nextOffset, + Flags: ea.Flags, + NameLength: uint8(len(ea.Name)), + ValueLength: uint16(len(ea.Value)), + } + + err := binary.Write(buf, binary.LittleEndian, &info) + if err != nil { + return err + } + + _, err = buf.Write([]byte(ea.Name)) + if err != nil { + return err + } + + err = buf.WriteByte(0) + if err != nil { + return err + } + + _, err = buf.Write(ea.Value) + if err != nil { + return err + } + + _, err = buf.Write([]byte{0, 0, 0}[0 : withPadding-entrySize]) + if err != nil { + return err + } + + return nil +} + +// EncodeExtendedAttributes encodes a list of EAs into a FILE_FULL_EA_INFORMATION +// buffer for use with BackupWrite, ZwSetEaFile, etc. +func EncodeExtendedAttributes(eas []ExtendedAttribute) ([]byte, error) { + var buf bytes.Buffer + for i := range eas { + last := false + if i == len(eas)-1 { + last = true + } + + err := writeEa(&buf, &eas[i], last) + if err != nil { + return nil, err + } + } + return buf.Bytes(), nil +} diff --git a/vendor/github.com/Microsoft/go-winio/fileinfo.go b/vendor/github.com/Microsoft/go-winio/fileinfo.go index b1d60abb..ada2fbab 100644 --- a/vendor/github.com/Microsoft/go-winio/fileinfo.go +++ b/vendor/github.com/Microsoft/go-winio/fileinfo.go @@ -20,7 +20,8 @@ const ( // FileBasicInfo contains file access time and file attributes information. type FileBasicInfo struct { CreationTime, LastAccessTime, LastWriteTime, ChangeTime syscall.Filetime - FileAttributes uintptr // includes padding + FileAttributes uint32 + pad uint32 // padding } // GetFileBasicInfo retrieves times and attributes for a file. diff --git a/vendor/github.com/Microsoft/go-winio/pipe.go b/vendor/github.com/Microsoft/go-winio/pipe.go index 806fd342..d99eedb6 100644 --- a/vendor/github.com/Microsoft/go-winio/pipe.go +++ b/vendor/github.com/Microsoft/go-winio/pipe.go @@ -15,7 +15,6 @@ import ( //sys connectNamedPipe(pipe syscall.Handle, o *syscall.Overlapped) (err error) = ConnectNamedPipe //sys createNamedPipe(name string, flags uint32, pipeMode uint32, maxInstances uint32, outSize uint32, inSize uint32, defaultTimeout uint32, sa *syscall.SecurityAttributes) (handle syscall.Handle, err error) [failretval==syscall.InvalidHandle] = CreateNamedPipeW //sys createFile(name string, access uint32, mode uint32, sa *syscall.SecurityAttributes, createmode uint32, attrs uint32, templatefile syscall.Handle) (handle syscall.Handle, err error) [failretval==syscall.InvalidHandle] = CreateFileW -//sys waitNamedPipe(name string, timeout uint32) (err error) = WaitNamedPipeW //sys getNamedPipeInfo(pipe syscall.Handle, flags *uint32, outSize *uint32, inSize *uint32, maxInstances *uint32) (err error) = GetNamedPipeInfo //sys getNamedPipeHandleState(pipe syscall.Handle, state *uint32, curInstances *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32, userName *uint16, maxUserNameSize uint32) (err error) = GetNamedPipeHandleStateW //sys localAlloc(uFlags uint32, length uint32) (ptr uintptr) = LocalAlloc @@ -139,12 +138,14 @@ func (s pipeAddress) String() string { } // DialPipe connects to a named pipe by path, timing out if the connection -// takes longer than the specified duration. If timeout is nil, then the timeout -// is the default timeout established by the pipe server. +// takes longer than the specified duration. If timeout is nil, then we use +// a default timeout of 5 seconds. (We do not use WaitNamedPipe.) func DialPipe(path string, timeout *time.Duration) (net.Conn, error) { var absTimeout time.Time if timeout != nil { absTimeout = time.Now().Add(*timeout) + } else { + absTimeout = time.Now().Add(time.Second * 2) } var err error var h syscall.Handle @@ -153,22 +154,13 @@ func DialPipe(path string, timeout *time.Duration) (net.Conn, error) { if err != cERROR_PIPE_BUSY { break } - now := time.Now() - var ms uint32 - if absTimeout.IsZero() { - ms = cNMPWAIT_USE_DEFAULT_WAIT - } else if now.After(absTimeout) { - ms = cNMPWAIT_NOWAIT - } else { - ms = uint32(absTimeout.Sub(now).Nanoseconds() / 1000 / 1000) - } - err = waitNamedPipe(path, ms) - if err != nil { - if err == cERROR_SEM_TIMEOUT { - return nil, ErrTimeout - } - break + if time.Now().After(absTimeout) { + return nil, ErrTimeout } + + // Wait 10 msec and try again. This is a rather simplistic + // view, as we always try each 10 milliseconds. + time.Sleep(time.Millisecond * 10) } if err != nil { return nil, &os.PathError{Op: "open", Path: path, Err: err} @@ -349,13 +341,23 @@ func ListenPipe(path string, c *PipeConfig) (net.Listener, error) { if err != nil { return nil, err } - // Immediately open and then close a client handle so that the named pipe is - // created but not currently accepting connections. + // Create a client handle and connect it. This results in the pipe + // instance always existing, so that clients see ERROR_PIPE_BUSY + // rather than ERROR_FILE_NOT_FOUND. This ties the first instance + // up so that no other instances can be used. This would have been + // cleaner if the Win32 API matched CreateFile with ConnectNamedPipe + // instead of CreateNamedPipe. (Apparently created named pipes are + // considered to be in listening state regardless of whether any + // active calls to ConnectNamedPipe are outstanding.) h2, err := createFile(path, 0, 0, nil, syscall.OPEN_EXISTING, cSECURITY_SQOS_PRESENT|cSECURITY_ANONYMOUS, 0) if err != nil { syscall.Close(h) return nil, err } + // Close the client handle. The server side of the instance will + // still be busy, leading to ERROR_PIPE_BUSY instead of + // ERROR_NOT_FOUND, as long as we don't close the server handle, + // or disconnect the client with DisconnectNamedPipe. syscall.Close(h2) l := &win32PipeListener{ firstHandle: h, diff --git a/vendor/github.com/containerd/continuity/pathdriver/path_driver.go b/vendor/github.com/containerd/continuity/pathdriver/path_driver.go index b43d55fe..b0d5a6b5 100644 --- a/vendor/github.com/containerd/continuity/pathdriver/path_driver.go +++ b/vendor/github.com/containerd/continuity/pathdriver/path_driver.go @@ -1,3 +1,19 @@ +/* + Copyright The containerd Authors. + + Licensed 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. +*/ + package pathdriver import ( diff --git a/vendor/github.com/docker/cli/cli/config/configfile/file.go b/vendor/github.com/docker/cli/cli/config/configfile/file.go index 37e1533f..7fa9b734 100644 --- a/vendor/github.com/docker/cli/cli/config/configfile/file.go +++ b/vendor/github.com/docker/cli/cli/config/configfile/file.go @@ -175,15 +175,21 @@ func (configFile *ConfigFile) Save() error { return errors.Errorf("Can't save config with empty filename") } - if err := os.MkdirAll(filepath.Dir(configFile.Filename), 0700); err != nil { + dir := filepath.Dir(configFile.Filename) + if err := os.MkdirAll(dir, 0700); err != nil { return err } - f, err := os.OpenFile(configFile.Filename, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0600) + temp, err := ioutil.TempFile(dir, filepath.Base(configFile.Filename)) if err != nil { return err } - defer f.Close() - return configFile.SaveToWriter(f) + err = configFile.SaveToWriter(temp) + temp.Close() + if err != nil { + os.Remove(temp.Name()) + return err + } + return os.Rename(temp.Name(), configFile.Filename) } // ParseProxyConfig computes proxy configuration by retrieving the config for the provided host and diff --git a/vendor/github.com/docker/cli/opts/envfile.go b/vendor/github.com/docker/cli/opts/envfile.go index 10054c89..69d3ca6f 100644 --- a/vendor/github.com/docker/cli/opts/envfile.go +++ b/vendor/github.com/docker/cli/opts/envfile.go @@ -18,5 +18,5 @@ import ( // environment variables, that's why we just strip leading whitespace and // nothing more. func ParseEnvFile(filename string) ([]string, error) { - return parseKeyValueFile(filename, os.Getenv) + return parseKeyValueFile(filename, os.LookupEnv) } diff --git a/vendor/github.com/docker/cli/opts/file.go b/vendor/github.com/docker/cli/opts/file.go index 28190594..1721a46e 100644 --- a/vendor/github.com/docker/cli/opts/file.go +++ b/vendor/github.com/docker/cli/opts/file.go @@ -21,7 +21,7 @@ func (e ErrBadKey) Error() string { return fmt.Sprintf("poorly formatted environment: %s", e.msg) } -func parseKeyValueFile(filename string, emptyFn func(string) string) ([]string, error) { +func parseKeyValueFile(filename string, emptyFn func(string) (string, bool)) ([]string, error) { fh, err := os.Open(filename) if err != nil { return []string{}, err @@ -53,17 +53,23 @@ func parseKeyValueFile(filename string, emptyFn func(string) string) ([]string, if strings.ContainsAny(variable, whiteSpaces) { return []string{}, ErrBadKey{fmt.Sprintf("variable '%s' has white spaces", variable)} } + if len(variable) == 0 { + return []string{}, ErrBadKey{fmt.Sprintf("no variable name on line '%s'", line)} + } if len(data) > 1 { // pass the value through, no trimming lines = append(lines, fmt.Sprintf("%s=%s", variable, data[1])) } else { var value string + var present bool if emptyFn != nil { - value = emptyFn(line) + value, present = emptyFn(line) + } + if present { + // if only a pass-through variable is given, clean it up. + lines = append(lines, fmt.Sprintf("%s=%s", strings.TrimSpace(line), value)) } - // if only a pass-through variable is given, clean it up. - lines = append(lines, fmt.Sprintf("%s=%s", strings.TrimSpace(line), value)) } } } diff --git a/vendor/github.com/docker/cli/opts/opts.go b/vendor/github.com/docker/cli/opts/opts.go index 51519e03..6485e309 100644 --- a/vendor/github.com/docker/cli/opts/opts.go +++ b/vendor/github.com/docker/cli/opts/opts.go @@ -6,11 +6,11 @@ import ( "net" "path" "regexp" - "strconv" "strings" "github.com/docker/docker/api/types/filters" units "github.com/docker/go-units" + "github.com/pkg/errors" ) var ( @@ -307,6 +307,17 @@ func ValidateSysctl(val string) (string, error) { return "", fmt.Errorf("sysctl '%s' is not whitelisted", val) } +// ValidateProgressOutput errors out if an invalid value is passed to --progress +func ValidateProgressOutput(val string) error { + valid := []string{"auto", "plain", "tty"} + for _, s := range valid { + if s == val { + return nil + } + } + return fmt.Errorf("invalid value %q passed to --progress, valid values are: %s", val, strings.Join(valid, ", ")) +} + // FilterOpt is a flag type for validating filters type FilterOpt struct { filter filters.Args @@ -318,7 +329,7 @@ func NewFilterOpt() FilterOpt { } func (o *FilterOpt) String() string { - repr, err := filters.ToParam(o.filter) + repr, err := filters.ToJSON(o.filter) if err != nil { return "invalid filters" } @@ -327,9 +338,18 @@ func (o *FilterOpt) String() string { // Set sets the value of the opt by parsing the command line value func (o *FilterOpt) Set(value string) error { - var err error - o.filter, err = filters.ParseFlag(value, o.filter) - return err + if value == "" { + return nil + } + if !strings.Contains(value, "=") { + return errors.New("bad format of filter (expected name=value)") + } + f := strings.SplitN(value, "=", 2) + name := strings.ToLower(strings.TrimSpace(f[0])) + value = strings.TrimSpace(f[1]) + + o.filter.Add(name, value) + return nil } // Type returns the option type @@ -487,38 +507,3 @@ func (m *MemSwapBytes) UnmarshalJSON(s []byte) error { b := MemBytes(*m) return b.UnmarshalJSON(s) } - -// NullableBool is a type for tri-state boolean options -type NullableBool struct { - b *bool -} - -// Type returns the type -func (n *NullableBool) Type() string { - return "" -} - -// Value returns the value in *bool -func (n *NullableBool) Value() *bool { - return n.b -} - -// Set sets the value. If value is empty string or "auto", nil is set. -// Otherwise true or false are set based on flag.Bool behavior. -func (n *NullableBool) Set(value string) error { - if value != "auto" && value != "" { - b, err := strconv.ParseBool(value) - if err != nil { - return err - } - n.b = &b - } - return nil -} - -func (n *NullableBool) String() string { - if n.b == nil { - return "auto" - } - return strconv.FormatBool(*n.b) -} diff --git a/vendor/github.com/docker/cli/opts/parse.go b/vendor/github.com/docker/cli/opts/parse.go index 679759de..70b60e14 100644 --- a/vendor/github.com/docker/cli/opts/parse.go +++ b/vendor/github.com/docker/cli/opts/parse.go @@ -19,10 +19,10 @@ func ReadKVStrings(files []string, override []string) ([]string, error) { // present in the file with additional pairs specified in the override parameter. // If a key has no value, it will get the value from the environment. func ReadKVEnvStrings(files []string, override []string) ([]string, error) { - return readKVStrings(files, override, os.Getenv) + return readKVStrings(files, override, os.LookupEnv) } -func readKVStrings(files []string, override []string, emptyFn func(string) string) ([]string, error) { +func readKVStrings(files []string, override []string, emptyFn func(string) (string, bool)) ([]string, error) { variables := []string{} for _, ef := range files { parsedVars, err := parseKeyValueFile(ef, emptyFn) diff --git a/vendor/github.com/docker/distribution/blobs.go b/vendor/github.com/docker/distribution/blobs.go index 145b0785..c0e9261b 100644 --- a/vendor/github.com/docker/distribution/blobs.go +++ b/vendor/github.com/docker/distribution/blobs.go @@ -10,6 +10,7 @@ import ( "github.com/docker/distribution/reference" "github.com/opencontainers/go-digest" + "github.com/opencontainers/image-spec/specs-go/v1" ) var ( @@ -66,12 +67,19 @@ type Descriptor struct { Size int64 `json:"size,omitempty"` // Digest uniquely identifies the content. A byte stream can be verified - // against against this digest. + // against this digest. Digest digest.Digest `json:"digest,omitempty"` // URLs contains the source URLs of this content. URLs []string `json:"urls,omitempty"` + // Annotations contains arbitrary metadata relating to the targeted content. + Annotations map[string]string `json:"annotations,omitempty"` + + // Platform describes the platform which the image in the manifest runs on. + // This should only be used when referring to a manifest. + Platform *v1.Platform `json:"platform,omitempty"` + // NOTE: Before adding a field here, please ensure that all // other options have been exhausted. Much of the type relationships // depend on the simplicity of this type. diff --git a/vendor/github.com/docker/distribution/errors.go b/vendor/github.com/docker/distribution/errors.go index 020d3325..8e0b788d 100644 --- a/vendor/github.com/docker/distribution/errors.go +++ b/vendor/github.com/docker/distribution/errors.go @@ -20,6 +20,10 @@ var ErrManifestNotModified = errors.New("manifest not modified") // performed var ErrUnsupported = errors.New("operation unsupported") +// ErrSchemaV1Unsupported is returned when a client tries to upload a schema v1 +// manifest but the registry is configured to reject it +var ErrSchemaV1Unsupported = errors.New("manifest schema v1 unsupported") + // ErrTagUnknown is returned if the given tag is not known by the tag service type ErrTagUnknown struct { Tag string diff --git a/vendor/github.com/docker/distribution/manifest/manifestlist/manifestlist.go b/vendor/github.com/docker/distribution/manifest/manifestlist/manifestlist.go index 3aa0662d..f4e915ee 100644 --- a/vendor/github.com/docker/distribution/manifest/manifestlist/manifestlist.go +++ b/vendor/github.com/docker/distribution/manifest/manifestlist/manifestlist.go @@ -8,10 +8,13 @@ import ( "github.com/docker/distribution" "github.com/docker/distribution/manifest" "github.com/opencontainers/go-digest" + "github.com/opencontainers/image-spec/specs-go/v1" ) -// MediaTypeManifestList specifies the mediaType for manifest lists. -const MediaTypeManifestList = "application/vnd.docker.distribution.manifest.list.v2+json" +const ( + // MediaTypeManifestList specifies the mediaType for manifest lists. + MediaTypeManifestList = "application/vnd.docker.distribution.manifest.list.v2+json" +) // SchemaVersion provides a pre-initialized version structure for this // packages version of the manifest. @@ -20,6 +23,13 @@ var SchemaVersion = manifest.Versioned{ MediaType: MediaTypeManifestList, } +// OCISchemaVersion provides a pre-initialized version structure for this +// packages OCIschema version of the manifest. +var OCISchemaVersion = manifest.Versioned{ + SchemaVersion: 2, + MediaType: v1.MediaTypeImageIndex, +} + func init() { manifestListFunc := func(b []byte) (distribution.Manifest, distribution.Descriptor, error) { m := new(DeserializedManifestList) @@ -28,6 +38,13 @@ func init() { return nil, distribution.Descriptor{}, err } + if m.MediaType != MediaTypeManifestList { + err = fmt.Errorf("mediaType in manifest list should be '%s' not '%s'", + MediaTypeManifestList, m.MediaType) + + return nil, distribution.Descriptor{}, err + } + dgst := digest.FromBytes(b) return m, distribution.Descriptor{Digest: dgst, Size: int64(len(b)), MediaType: MediaTypeManifestList}, err } @@ -35,6 +52,28 @@ func init() { if err != nil { panic(fmt.Sprintf("Unable to register manifest: %s", err)) } + + imageIndexFunc := func(b []byte) (distribution.Manifest, distribution.Descriptor, error) { + m := new(DeserializedManifestList) + err := m.UnmarshalJSON(b) + if err != nil { + return nil, distribution.Descriptor{}, err + } + + if m.MediaType != "" && m.MediaType != v1.MediaTypeImageIndex { + err = fmt.Errorf("if present, mediaType in image index should be '%s' not '%s'", + v1.MediaTypeImageIndex, m.MediaType) + + return nil, distribution.Descriptor{}, err + } + + dgst := digest.FromBytes(b) + return m, distribution.Descriptor{Digest: dgst, Size: int64(len(b)), MediaType: v1.MediaTypeImageIndex}, err + } + err = distribution.RegisterManifestSchema(v1.MediaTypeImageIndex, imageIndexFunc) + if err != nil { + panic(fmt.Sprintf("Unable to register OCI Image Index: %s", err)) + } } // PlatformSpec specifies a platform where a particular image manifest is @@ -105,8 +144,23 @@ type DeserializedManifestList struct { // DeserializedManifestList which contains the resulting manifest list // and its JSON representation. func FromDescriptors(descriptors []ManifestDescriptor) (*DeserializedManifestList, error) { + var mediaType string + if len(descriptors) > 0 && descriptors[0].Descriptor.MediaType == v1.MediaTypeImageManifest { + mediaType = v1.MediaTypeImageIndex + } else { + mediaType = MediaTypeManifestList + } + + return FromDescriptorsWithMediaType(descriptors, mediaType) +} + +// FromDescriptorsWithMediaType is for testing purposes, it's useful to be able to specify the media type explicitly +func FromDescriptorsWithMediaType(descriptors []ManifestDescriptor, mediaType string) (*DeserializedManifestList, error) { m := ManifestList{ - Versioned: SchemaVersion, + Versioned: manifest.Versioned{ + SchemaVersion: 2, + MediaType: mediaType, + }, } m.Manifests = make([]ManifestDescriptor, len(descriptors), len(descriptors)) @@ -151,5 +205,12 @@ func (m *DeserializedManifestList) MarshalJSON() ([]byte, error) { // Payload returns the raw content of the manifest list. The contents can be // used to calculate the content identifier. func (m DeserializedManifestList) Payload() (string, []byte, error) { - return m.MediaType, m.canonical, nil + var mediaType string + if m.MediaType == "" { + mediaType = v1.MediaTypeImageIndex + } else { + mediaType = m.MediaType + } + + return mediaType, m.canonical, nil } diff --git a/vendor/github.com/docker/distribution/manifest/schema1/manifest.go b/vendor/github.com/docker/distribution/manifest/schema1/manifest.go index 65042a75..5a06b54b 100644 --- a/vendor/github.com/docker/distribution/manifest/schema1/manifest.go +++ b/vendor/github.com/docker/distribution/manifest/schema1/manifest.go @@ -138,7 +138,7 @@ func (sm *SignedManifest) UnmarshalJSON(b []byte) error { return nil } -// References returnes the descriptors of this manifests references +// References returns the descriptors of this manifests references func (sm SignedManifest) References() []distribution.Descriptor { dependencies := make([]distribution.Descriptor, len(sm.FSLayers)) for i, fsLayer := range sm.FSLayers { diff --git a/vendor/github.com/docker/distribution/manifest/schema2/manifest.go b/vendor/github.com/docker/distribution/manifest/schema2/manifest.go index a2708c75..ee29438f 100644 --- a/vendor/github.com/docker/distribution/manifest/schema2/manifest.go +++ b/vendor/github.com/docker/distribution/manifest/schema2/manifest.go @@ -71,7 +71,7 @@ type Manifest struct { Layers []distribution.Descriptor `json:"layers"` } -// References returnes the descriptors of this manifests references. +// References returns the descriptors of this manifests references. func (m Manifest) References() []distribution.Descriptor { references := make([]distribution.Descriptor, 0, 1+len(m.Layers)) references = append(references, m.Config) @@ -79,7 +79,7 @@ func (m Manifest) References() []distribution.Descriptor { return references } -// Target returns the target of this signed manifest. +// Target returns the target of this manifest. func (m Manifest) Target() distribution.Descriptor { return m.Config } @@ -116,6 +116,12 @@ func (m *DeserializedManifest) UnmarshalJSON(b []byte) error { return err } + if manifest.MediaType != MediaTypeManifest { + return fmt.Errorf("mediaType in manifest should be '%s' not '%s'", + MediaTypeManifest, manifest.MediaType) + + } + m.Manifest = manifest return nil diff --git a/vendor/github.com/docker/distribution/registry.go b/vendor/github.com/docker/distribution/registry.go index a3a80ab8..6c321098 100644 --- a/vendor/github.com/docker/distribution/registry.go +++ b/vendor/github.com/docker/distribution/registry.go @@ -54,6 +54,11 @@ type RepositoryEnumerator interface { Enumerate(ctx context.Context, ingester func(string) error) error } +// RepositoryRemover removes given repository +type RepositoryRemover interface { + Remove(ctx context.Context, name reference.Named) error +} + // ManifestServiceOption is a function argument for Manifest Service methods type ManifestServiceOption interface { Apply(ManifestService) error diff --git a/vendor/github.com/docker/distribution/registry/api/v2/routes.go b/vendor/github.com/docker/distribution/registry/api/v2/routes.go index 5b80d5be..9612ac2e 100644 --- a/vendor/github.com/docker/distribution/registry/api/v2/routes.go +++ b/vendor/github.com/docker/distribution/registry/api/v2/routes.go @@ -14,15 +14,6 @@ const ( RouteNameCatalog = "catalog" ) -var allEndpoints = []string{ - RouteNameManifest, - RouteNameCatalog, - RouteNameTags, - RouteNameBlob, - RouteNameBlobUpload, - RouteNameBlobUploadChunk, -} - // Router builds a gorilla router with named routes for the various API // methods. This can be used directly by both server implementations and // clients. diff --git a/vendor/github.com/docker/distribution/registry/client/auth/session.go b/vendor/github.com/docker/distribution/registry/client/auth/session.go index db86c9b0..aad8a0e6 100644 --- a/vendor/github.com/docker/distribution/registry/client/auth/session.go +++ b/vendor/github.com/docker/distribution/registry/client/auth/session.go @@ -68,7 +68,6 @@ func NewAuthorizer(manager challenge.Manager, handlers ...AuthenticationHandler) type endpointAuthorizer struct { challenges challenge.Manager handlers []AuthenticationHandler - transport http.RoundTripper } func (ea *endpointAuthorizer) ModifyRequest(req *http.Request) error { @@ -121,7 +120,6 @@ type clock interface { } type tokenHandler struct { - header http.Header creds CredentialStore transport http.RoundTripper clock clock diff --git a/vendor/github.com/docker/distribution/registry/client/repository.go b/vendor/github.com/docker/distribution/registry/client/repository.go index d8e2c795..aa442e65 100644 --- a/vendor/github.com/docker/distribution/registry/client/repository.go +++ b/vendor/github.com/docker/distribution/registry/client/repository.go @@ -81,9 +81,8 @@ func NewRegistry(baseURL string, transport http.RoundTripper) (Registry, error) } type registry struct { - client *http.Client - ub *v2.URLBuilder - context context.Context + client *http.Client + ub *v2.URLBuilder } // Repositories returns a lexigraphically sorted catalog given a base URL. The 'entries' slice will be filled up to the size @@ -152,10 +151,9 @@ func NewRepository(name reference.Named, baseURL string, transport http.RoundTri } type repository struct { - client *http.Client - ub *v2.URLBuilder - context context.Context - name reference.Named + client *http.Client + ub *v2.URLBuilder + name reference.Named } func (r *repository) Named() reference.Named { diff --git a/vendor/github.com/docker/distribution/registry/client/transport/http_reader.go b/vendor/github.com/docker/distribution/registry/client/transport/http_reader.go index e5ff09d7..1d0b382f 100644 --- a/vendor/github.com/docker/distribution/registry/client/transport/http_reader.go +++ b/vendor/github.com/docker/distribution/registry/client/transport/http_reader.go @@ -5,7 +5,6 @@ import ( "fmt" "io" "net/http" - "os" "regexp" "strconv" ) @@ -97,7 +96,7 @@ func (hrs *httpReadSeeker) Seek(offset int64, whence int) (int64, error) { lastReaderOffset := hrs.readerOffset - if whence == os.SEEK_SET && hrs.rc == nil { + if whence == io.SeekStart && hrs.rc == nil { // If no request has been made yet, and we are seeking to an // absolute position, set the read offset as well to avoid an // unnecessary request. @@ -113,14 +112,14 @@ func (hrs *httpReadSeeker) Seek(offset int64, whence int) (int64, error) { newOffset := hrs.seekOffset switch whence { - case os.SEEK_CUR: + case io.SeekCurrent: newOffset += offset - case os.SEEK_END: + case io.SeekEnd: if hrs.size < 0 { return 0, errors.New("content length not known") } newOffset = hrs.size + offset - case os.SEEK_SET: + case io.SeekStart: newOffset = offset } diff --git a/vendor/github.com/docker/docker-ce/components/cli/cli/config/config.go b/vendor/github.com/docker/docker-ce/components/cli/cli/config/config.go index 143436b9..9161921a 100644 --- a/vendor/github.com/docker/docker-ce/components/cli/cli/config/config.go +++ b/vendor/github.com/docker/docker-ce/components/cli/cli/config/config.go @@ -96,12 +96,12 @@ func Load(configDir string) (*configfile.ConfigFile, error) { } file, err := os.Open(confFile) if err != nil { - return configFile, errors.Wrap(err, confFile) + return configFile, errors.Wrap(err, filename) } defer file.Close() err = configFile.LegacyLoadFromReader(file) if err != nil { - return configFile, errors.Wrap(err, confFile) + return configFile, errors.Wrap(err, filename) } return configFile, nil } diff --git a/vendor/github.com/docker/docker-ce/components/engine/AUTHORS b/vendor/github.com/docker/docker-ce/components/engine/AUTHORS index 46102d74..c6c8fb40 100644 --- a/vendor/github.com/docker/docker-ce/components/engine/AUTHORS +++ b/vendor/github.com/docker/docker-ce/components/engine/AUTHORS @@ -201,6 +201,7 @@ Ben Severson Ben Toews Ben Wiklund Benjamin Atkin +Benjamin Baker Benjamin Boudreau Benjamin Yolken Benoit Chesneau @@ -246,6 +247,7 @@ Brian Torres-Gil Brian Trump Brice Jaglin Briehan Lombaard +Brielle Broder Bruno Bigras Bruno Binet Bruno Gazzera @@ -325,9 +327,11 @@ Chris Swan Chris Telfer Chris Wahl Chris Weyl +Chris White Christian Berendt Christian Brauner Christian Böhme +Christian Muehlhaeuser Christian Persson Christian Rotzoll Christian Simon @@ -444,6 +448,7 @@ David Röthlisberger David Sheets David Sissitka David Trott +David Wang <00107082@163.com> David Williamson David Xia David Young @@ -451,6 +456,7 @@ Davide Ceretti Dawn Chen dbdd dcylabs +Debayan De Deborah Gertrude Digges deed02392 Deng Guangxing @@ -503,6 +509,7 @@ Don Kjer Don Spaulding Donald Huang Dong Chen +Donghwa Kim Donovan Jones Doron Podoleanu Doug Davis @@ -580,6 +587,7 @@ Eystein Måløy Stenberg ezbercih Ezra Silvera Fabian Lauer +Fabian Raetz Fabiano Rosas Fabio Falci Fabio Kung @@ -591,6 +599,7 @@ Faiz Khan falmp Fangming Fang Fangyuan Gao <21551127@zju.edu.cn> +fanjiyun Fareed Dudhia Fathi Boudra Federico Gimenez @@ -621,6 +630,7 @@ Florin Patan fonglh Foysal Iqbal Francesc Campoy +Francesco Mari Francis Chuang Francisco Carriedo Francisco Souza @@ -653,6 +663,7 @@ Gaël PORTAY Genki Takiuchi GennadySpb Geoffrey Bachelet +Geon Kim George Kontridze George MacRorie George Xie @@ -676,6 +687,7 @@ Gopikannan Venugopalsamy Gosuke Miyashita Gou Rao Govinda Fichtner +Grant Millar Grant Reaber Graydon Hoare Greg Fausak @@ -694,6 +706,7 @@ Guruprasad Gustav Sinder gwx296173 Günter Zöchbauer +haikuoliu Hakan Özler Hans Kristian Flaatten Hans Rødtang @@ -735,6 +748,7 @@ Ian Bishop Ian Bull Ian Calvert Ian Campbell +Ian Chen Ian Lee Ian Main Ian Philpot @@ -755,6 +769,7 @@ Ingo Gottwald Isaac Dupree Isabel Jimenez Isao Jonas +Iskander Sharipov Ivan Babrou Ivan Fraixedes Ivan Grcic @@ -847,7 +862,7 @@ Jeroen Franse Jeroen Jacobs Jesse Dearing Jesse Dubay -Jessica Frazelle +Jessica Frazelle Jezeniel Zapanta Jhon Honce Ji.Zhilong @@ -983,6 +998,7 @@ Karl Grzeszczak Karol Duleba Karthik Karanth Karthik Nayak +Kasper Fabæch Brandt Kate Heddleston Katie McLaughlin Kato Kazuyoshi @@ -990,6 +1006,7 @@ Katrina Owen Kawsar Saiyeed Kay Yan kayrus +Kazuhiro Sera Ke Li Ke Xu Kei Ohmura @@ -998,6 +1015,7 @@ Keli Hu Ken Cochrane Ken Herner Ken ICHIKAWA +Ken Reese Kenfe-Mickaël Laventure Kenjiro Nakayama Kent Johnson @@ -1035,9 +1053,9 @@ Krasimir Georgiev Kris-Mikael Krister Kristian Haugene Kristina Zabunova -krrg Kun Zhang Kunal Kushwaha +Kunal Tyagi Kyle Conroy Kyle Linden kyu @@ -1060,6 +1078,7 @@ Leandro Siqueira Lee Chao <932819864@qq.com> Lee, Meng-Han leeplay +Lei Gong Lei Jitang Len Weincier Lennie @@ -1095,6 +1114,7 @@ Lokesh Mandvekar longliqiang88 <394564827@qq.com> Lorenz Leutgeb Lorenzo Fontana +Lotus Fenn Louis Opter Luca Favatella Luca Marturana @@ -1167,6 +1187,7 @@ Martijn van Oosterhout Martin Honermeyer Martin Kelly Martin Mosegaard Amdisen +Martin Muzatko Martin Redmond Mary Anthony Masahito Zembutsu @@ -1248,8 +1269,9 @@ Michal Wieczorek Michaël Pailloncy Michał Czeraszkiewicz Michał Gryko -Michiel@unhosted -Mickaël FORTUNATO +Michiel de Jong +Mickaël Fortunato +Mickaël Remars Miguel Angel Fernández Miguel Morales Mihai Borobocea @@ -1337,6 +1359,7 @@ Nicolas Dudebout Nicolas Goy Nicolas Kaiser Nicolas Sterchele +Nicolas V Castet Nicolás Hock Isaza Nigel Poulton Nik Nyby @@ -1452,6 +1475,7 @@ Prasanna Gautam Pratik Karki Prayag Verma Priya Wadhwa +Projjol Banerji Przemek Hejman Pure White pysqz @@ -1546,6 +1570,7 @@ Rozhnov Alexandr Rudolph Gottesheim Rui Lopes Runshen Zhu +Russ Magee Ryan Abrams Ryan Anderson Ryan Aslett @@ -1572,6 +1597,7 @@ Sachin Joshi Sagar Hani Sainath Grandhi Sakeven Jiang +Salahuddin Khan Sally O'Malley Sam Abed Sam Alba @@ -1620,6 +1646,7 @@ Sergey Alekseev Sergey Evstifeev Sergii Kabashniuk Serhat Gülçiçek +SeungUkLee Sevki Hasirci Shane Canon Shane da Silva @@ -1714,10 +1741,11 @@ tang0th Tangi Colin Tatsuki Sugiura Tatsushi Inagaki +Taylan Isikdemir Taylor Jones -tbonza Ted M. Young Tehmasp Chaudhri +Tejaswini Duggaraju Tejesh Mehta terryding77 <550147740@qq.com> tgic @@ -1811,6 +1839,7 @@ Tristan Carel Troy Denton Tycho Andersen Tyler Brock +Tyler Brown Tzu-Jung Lee uhayate Ulysse Carion @@ -1906,11 +1935,13 @@ XiaoBing Jiang Xiaoxu Chen Xiaoyu Zhang xiekeyang +Ximo Guanter Gonzálbez Xinbo Weng Xinzi Zhou Xiuming Chen Xuecong Liao xuzhaokui +Yadnyawalkya Tale Yahya YAMADA Tsuyoshi Yamasaki Masahide @@ -1941,6 +1972,7 @@ Yu-Ju Hong Yuan Sun Yuanhong Peng Yuhao Fang +Yuichiro Kaneko Yunxiang Huang Yurii Rashkovskii Yves Junqueira diff --git a/vendor/github.com/docker/docker-ce/components/engine/LICENSE b/vendor/github.com/docker/docker-ce/components/engine/LICENSE index 9c8e20ab..6d8d58fb 100644 --- a/vendor/github.com/docker/docker-ce/components/engine/LICENSE +++ b/vendor/github.com/docker/docker-ce/components/engine/LICENSE @@ -176,7 +176,7 @@ END OF TERMS AND CONDITIONS - Copyright 2013-2017 Docker, Inc. + Copyright 2013-2018 Docker, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/vendor/github.com/docker/docker-ce/components/engine/pkg/symlink/LICENSE.APACHE b/vendor/github.com/docker/docker-ce/components/engine/pkg/symlink/LICENSE.APACHE index b9fbf3c9..5d80670b 100644 --- a/vendor/github.com/docker/docker-ce/components/engine/pkg/symlink/LICENSE.APACHE +++ b/vendor/github.com/docker/docker-ce/components/engine/pkg/symlink/LICENSE.APACHE @@ -176,7 +176,7 @@ END OF TERMS AND CONDITIONS - Copyright 2014-2017 Docker, Inc. + Copyright 2014-2018 Docker, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/vendor/github.com/docker/docker-ce/components/engine/pkg/symlink/LICENSE.BSD b/vendor/github.com/docker/docker-ce/components/engine/pkg/symlink/LICENSE.BSD index 4c056c5e..2ee8768d 100644 --- a/vendor/github.com/docker/docker-ce/components/engine/pkg/symlink/LICENSE.BSD +++ b/vendor/github.com/docker/docker-ce/components/engine/pkg/symlink/LICENSE.BSD @@ -1,4 +1,4 @@ -Copyright (c) 2014-2017 The Docker & Go Authors. All rights reserved. +Copyright (c) 2014-2018 The Docker & Go Authors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are diff --git a/vendor/github.com/docker/docker/AUTHORS b/vendor/github.com/docker/docker/AUTHORS index 46102d74..c6c8fb40 100644 --- a/vendor/github.com/docker/docker/AUTHORS +++ b/vendor/github.com/docker/docker/AUTHORS @@ -201,6 +201,7 @@ Ben Severson Ben Toews Ben Wiklund Benjamin Atkin +Benjamin Baker Benjamin Boudreau Benjamin Yolken Benoit Chesneau @@ -246,6 +247,7 @@ Brian Torres-Gil Brian Trump Brice Jaglin Briehan Lombaard +Brielle Broder Bruno Bigras Bruno Binet Bruno Gazzera @@ -325,9 +327,11 @@ Chris Swan Chris Telfer Chris Wahl Chris Weyl +Chris White Christian Berendt Christian Brauner Christian Böhme +Christian Muehlhaeuser Christian Persson Christian Rotzoll Christian Simon @@ -444,6 +448,7 @@ David Röthlisberger David Sheets David Sissitka David Trott +David Wang <00107082@163.com> David Williamson David Xia David Young @@ -451,6 +456,7 @@ Davide Ceretti Dawn Chen dbdd dcylabs +Debayan De Deborah Gertrude Digges deed02392 Deng Guangxing @@ -503,6 +509,7 @@ Don Kjer Don Spaulding Donald Huang Dong Chen +Donghwa Kim Donovan Jones Doron Podoleanu Doug Davis @@ -580,6 +587,7 @@ Eystein Måløy Stenberg ezbercih Ezra Silvera Fabian Lauer +Fabian Raetz Fabiano Rosas Fabio Falci Fabio Kung @@ -591,6 +599,7 @@ Faiz Khan falmp Fangming Fang Fangyuan Gao <21551127@zju.edu.cn> +fanjiyun Fareed Dudhia Fathi Boudra Federico Gimenez @@ -621,6 +630,7 @@ Florin Patan fonglh Foysal Iqbal Francesc Campoy +Francesco Mari Francis Chuang Francisco Carriedo Francisco Souza @@ -653,6 +663,7 @@ Gaël PORTAY Genki Takiuchi GennadySpb Geoffrey Bachelet +Geon Kim George Kontridze George MacRorie George Xie @@ -676,6 +687,7 @@ Gopikannan Venugopalsamy Gosuke Miyashita Gou Rao Govinda Fichtner +Grant Millar Grant Reaber Graydon Hoare Greg Fausak @@ -694,6 +706,7 @@ Guruprasad Gustav Sinder gwx296173 Günter Zöchbauer +haikuoliu Hakan Özler Hans Kristian Flaatten Hans Rødtang @@ -735,6 +748,7 @@ Ian Bishop Ian Bull Ian Calvert Ian Campbell +Ian Chen Ian Lee Ian Main Ian Philpot @@ -755,6 +769,7 @@ Ingo Gottwald Isaac Dupree Isabel Jimenez Isao Jonas +Iskander Sharipov Ivan Babrou Ivan Fraixedes Ivan Grcic @@ -847,7 +862,7 @@ Jeroen Franse Jeroen Jacobs Jesse Dearing Jesse Dubay -Jessica Frazelle +Jessica Frazelle Jezeniel Zapanta Jhon Honce Ji.Zhilong @@ -983,6 +998,7 @@ Karl Grzeszczak Karol Duleba Karthik Karanth Karthik Nayak +Kasper Fabæch Brandt Kate Heddleston Katie McLaughlin Kato Kazuyoshi @@ -990,6 +1006,7 @@ Katrina Owen Kawsar Saiyeed Kay Yan kayrus +Kazuhiro Sera Ke Li Ke Xu Kei Ohmura @@ -998,6 +1015,7 @@ Keli Hu Ken Cochrane Ken Herner Ken ICHIKAWA +Ken Reese Kenfe-Mickaël Laventure Kenjiro Nakayama Kent Johnson @@ -1035,9 +1053,9 @@ Krasimir Georgiev Kris-Mikael Krister Kristian Haugene Kristina Zabunova -krrg Kun Zhang Kunal Kushwaha +Kunal Tyagi Kyle Conroy Kyle Linden kyu @@ -1060,6 +1078,7 @@ Leandro Siqueira Lee Chao <932819864@qq.com> Lee, Meng-Han leeplay +Lei Gong Lei Jitang Len Weincier Lennie @@ -1095,6 +1114,7 @@ Lokesh Mandvekar longliqiang88 <394564827@qq.com> Lorenz Leutgeb Lorenzo Fontana +Lotus Fenn Louis Opter Luca Favatella Luca Marturana @@ -1167,6 +1187,7 @@ Martijn van Oosterhout Martin Honermeyer Martin Kelly Martin Mosegaard Amdisen +Martin Muzatko Martin Redmond Mary Anthony Masahito Zembutsu @@ -1248,8 +1269,9 @@ Michal Wieczorek Michaël Pailloncy Michał Czeraszkiewicz Michał Gryko -Michiel@unhosted -Mickaël FORTUNATO +Michiel de Jong +Mickaël Fortunato +Mickaël Remars Miguel Angel Fernández Miguel Morales Mihai Borobocea @@ -1337,6 +1359,7 @@ Nicolas Dudebout Nicolas Goy Nicolas Kaiser Nicolas Sterchele +Nicolas V Castet Nicolás Hock Isaza Nigel Poulton Nik Nyby @@ -1452,6 +1475,7 @@ Prasanna Gautam Pratik Karki Prayag Verma Priya Wadhwa +Projjol Banerji Przemek Hejman Pure White pysqz @@ -1546,6 +1570,7 @@ Rozhnov Alexandr Rudolph Gottesheim Rui Lopes Runshen Zhu +Russ Magee Ryan Abrams Ryan Anderson Ryan Aslett @@ -1572,6 +1597,7 @@ Sachin Joshi Sagar Hani Sainath Grandhi Sakeven Jiang +Salahuddin Khan Sally O'Malley Sam Abed Sam Alba @@ -1620,6 +1646,7 @@ Sergey Alekseev Sergey Evstifeev Sergii Kabashniuk Serhat Gülçiçek +SeungUkLee Sevki Hasirci Shane Canon Shane da Silva @@ -1714,10 +1741,11 @@ tang0th Tangi Colin Tatsuki Sugiura Tatsushi Inagaki +Taylan Isikdemir Taylor Jones -tbonza Ted M. Young Tehmasp Chaudhri +Tejaswini Duggaraju Tejesh Mehta terryding77 <550147740@qq.com> tgic @@ -1811,6 +1839,7 @@ Tristan Carel Troy Denton Tycho Andersen Tyler Brock +Tyler Brown Tzu-Jung Lee uhayate Ulysse Carion @@ -1906,11 +1935,13 @@ XiaoBing Jiang Xiaoxu Chen Xiaoyu Zhang xiekeyang +Ximo Guanter Gonzálbez Xinbo Weng Xinzi Zhou Xiuming Chen Xuecong Liao xuzhaokui +Yadnyawalkya Tale Yahya YAMADA Tsuyoshi Yamasaki Masahide @@ -1941,6 +1972,7 @@ Yu-Ju Hong Yuan Sun Yuanhong Peng Yuhao Fang +Yuichiro Kaneko Yunxiang Huang Yurii Rashkovskii Yves Junqueira diff --git a/vendor/github.com/docker/docker/LICENSE b/vendor/github.com/docker/docker/LICENSE index 9c8e20ab..6d8d58fb 100644 --- a/vendor/github.com/docker/docker/LICENSE +++ b/vendor/github.com/docker/docker/LICENSE @@ -176,7 +176,7 @@ END OF TERMS AND CONDITIONS - Copyright 2013-2017 Docker, Inc. + Copyright 2013-2018 Docker, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/vendor/github.com/docker/docker/api/common.go b/vendor/github.com/docker/docker/api/common.go index 255a81ae..4582eb92 100644 --- a/vendor/github.com/docker/docker/api/common.go +++ b/vendor/github.com/docker/docker/api/common.go @@ -3,7 +3,7 @@ package api // import "github.com/docker/docker/api" // Common constants for daemon and client. const ( // DefaultVersion of Current REST API - DefaultVersion = "1.38" + DefaultVersion = "1.39" // NoBaseImageSpecifier is the symbol used by the FROM // command to specify that no base image is to be used. diff --git a/vendor/github.com/docker/docker/api/types/stats.go b/vendor/github.com/docker/docker/api/types/stats.go index 60175c06..20daebed 100644 --- a/vendor/github.com/docker/docker/api/types/stats.go +++ b/vendor/github.com/docker/docker/api/types/stats.go @@ -120,7 +120,7 @@ type NetworkStats struct { RxBytes uint64 `json:"rx_bytes"` // Packets received. Windows and Linux. RxPackets uint64 `json:"rx_packets"` - // Received errors. Not used on Windows. Note that we dont `omitempty` this + // Received errors. Not used on Windows. Note that we don't `omitempty` this // field as it is expected in the >=v1.21 API stats structure. RxErrors uint64 `json:"rx_errors"` // Incoming packets dropped. Windows and Linux. @@ -129,7 +129,7 @@ type NetworkStats struct { TxBytes uint64 `json:"tx_bytes"` // Packets sent. Windows and Linux. TxPackets uint64 `json:"tx_packets"` - // Sent errors. Not used on Windows. Note that we dont `omitempty` this + // Sent errors. Not used on Windows. Note that we don't `omitempty` this // field as it is expected in the >=v1.21 API stats structure. TxErrors uint64 `json:"tx_errors"` // Outgoing packets dropped. Windows and Linux. diff --git a/vendor/github.com/docker/docker/api/types/swarm/swarm.go b/vendor/github.com/docker/docker/api/types/swarm/swarm.go index 1b111d72..b742cf1b 100644 --- a/vendor/github.com/docker/docker/api/types/swarm/swarm.go +++ b/vendor/github.com/docker/docker/api/types/swarm/swarm.go @@ -1,6 +1,8 @@ package swarm // import "github.com/docker/docker/api/types/swarm" -import "time" +import ( + "time" +) // ClusterInfo represents info about the cluster for outputting in "info" // it contains the same information as "Swarm", but without the JoinTokens @@ -10,6 +12,8 @@ type ClusterInfo struct { Spec Spec TLSInfo TLSInfo RootRotationInProgress bool + DefaultAddrPool []string + SubnetSize uint32 } // Swarm represents a swarm. @@ -153,6 +157,8 @@ type InitRequest struct { Spec Spec AutoLockManagers bool Availability NodeAvailability + DefaultAddrPool []string + SubnetSize uint32 } // JoinRequest is the request used to join a swarm. diff --git a/vendor/github.com/docker/docker/api/types/types.go b/vendor/github.com/docker/docker/api/types/types.go index 06c0ca3a..a8fae3ba 100644 --- a/vendor/github.com/docker/docker/api/types/types.go +++ b/vendor/github.com/docker/docker/api/types/types.go @@ -102,9 +102,10 @@ type ContainerStats struct { // Ping contains response of Engine API: // GET "/_ping" type Ping struct { - APIVersion string - OSType string - Experimental bool + APIVersion string + OSType string + Experimental bool + BuilderVersion BuilderVersion } // ComponentVersion describes the version information for a specific component. @@ -204,6 +205,8 @@ type Info struct { RuncCommit Commit InitCommit Commit SecurityOptions []string + ProductLicense string `json:",omitempty"` + Warnings []string } // KeyValue holds a key/value pair @@ -540,6 +543,7 @@ type ImagesPruneReport struct { // BuildCachePruneReport contains the response for Engine API: // POST "/build/prune" type BuildCachePruneReport struct { + CachesDeleted []string SpaceReclaimed uint64 } @@ -589,14 +593,21 @@ type BuildResult struct { // BuildCache contains information about a build cache record type BuildCache struct { - ID string - Mutable bool - InUse bool - Size int64 - + ID string + Parent string + Type string + Description string + InUse bool + Shared bool + Size int64 CreatedAt time.Time LastUsedAt *time.Time UsageCount int - Parent string - Description string +} + +// BuildCachePruneOptions hold parameters to prune the build cache +type BuildCachePruneOptions struct { + All bool + KeepStorage int64 + Filters filters.Args } diff --git a/vendor/github.com/docker/docker/client/build_prune.go b/vendor/github.com/docker/docker/client/build_prune.go index c4772a04..42bbf99e 100644 --- a/vendor/github.com/docker/docker/client/build_prune.go +++ b/vendor/github.com/docker/docker/client/build_prune.go @@ -4,19 +4,34 @@ import ( "context" "encoding/json" "fmt" + "net/url" "github.com/docker/docker/api/types" + "github.com/docker/docker/api/types/filters" + "github.com/pkg/errors" ) // BuildCachePrune requests the daemon to delete unused cache data -func (cli *Client) BuildCachePrune(ctx context.Context) (*types.BuildCachePruneReport, error) { +func (cli *Client) BuildCachePrune(ctx context.Context, opts types.BuildCachePruneOptions) (*types.BuildCachePruneReport, error) { if err := cli.NewVersionError("1.31", "build prune"); err != nil { return nil, err } report := types.BuildCachePruneReport{} - serverResp, err := cli.post(ctx, "/build/prune", nil, nil, nil) + query := url.Values{} + if opts.All { + query.Set("all", "1") + } + query.Set("keep-storage", fmt.Sprintf("%d", opts.KeepStorage)) + filters, err := filters.ToJSON(opts.Filters) + if err != nil { + return nil, errors.Wrap(err, "prune could not marshal filters option") + } + query.Set("filters", filters) + + serverResp, err := cli.post(ctx, "/build/prune", query, nil, nil) + if err != nil { return nil, err } diff --git a/vendor/github.com/docker/docker/client/client.go b/vendor/github.com/docker/docker/client/client.go index b874b3b5..5031502a 100644 --- a/vendor/github.com/docker/docker/client/client.go +++ b/vendor/github.com/docker/docker/client/client.go @@ -173,10 +173,17 @@ func WithTLSClientConfig(cacertPath, certPath, keyPath string) func(*Client) err // WithDialer applies the dialer.DialContext to the client transport. This can be // used to set the Timeout and KeepAlive settings of the client. +// Deprecated: use WithDialContext func WithDialer(dialer *net.Dialer) func(*Client) error { + return WithDialContext(dialer.DialContext) +} + +// WithDialContext applies the dialer to the client transport. This can be +// used to set the Timeout and KeepAlive settings of the client. +func WithDialContext(dialContext func(ctx context.Context, network, addr string) (net.Conn, error)) func(*Client) error { return func(c *Client) error { if transport, ok := c.client.Transport.(*http.Transport); ok { - transport.DialContext = dialer.DialContext + transport.DialContext = dialContext return nil } return errors.Errorf("cannot apply dialer to transport: %T", c.client.Transport) @@ -400,3 +407,16 @@ func (cli *Client) CustomHTTPHeaders() map[string]string { func (cli *Client) SetCustomHTTPHeaders(headers map[string]string) { cli.customHTTPHeaders = headers } + +// Dialer returns a dialer for a raw stream connection, with HTTP/1.1 header, that can be used for proxying the daemon connection. +// Used by `docker dial-stdio` (docker/cli#889). +func (cli *Client) Dialer() func(context.Context) (net.Conn, error) { + return func(ctx context.Context) (net.Conn, error) { + if transport, ok := cli.client.Transport.(*http.Transport); ok { + if transport.DialContext != nil && transport.TLSClientConfig == nil { + return transport.DialContext(ctx, cli.proto, cli.addr) + } + } + return fallbackDial(cli.proto, cli.addr, resolveTLSConfig(cli.client.Transport)) + } +} diff --git a/vendor/github.com/docker/docker/client/hijack.go b/vendor/github.com/docker/docker/client/hijack.go index 35f5dd86..0ac8248f 100644 --- a/vendor/github.com/docker/docker/client/hijack.go +++ b/vendor/github.com/docker/docker/client/hijack.go @@ -30,7 +30,7 @@ func (cli *Client) postHijacked(ctx context.Context, path string, query url.Valu } req = cli.addHeaders(req, headers) - conn, err := cli.setupHijackConn(req, "tcp") + conn, err := cli.setupHijackConn(ctx, req, "tcp") if err != nil { return types.HijackedResponse{}, err } @@ -38,7 +38,9 @@ func (cli *Client) postHijacked(ctx context.Context, path string, query url.Valu return types.HijackedResponse{Conn: conn, Reader: bufio.NewReader(conn)}, err } -func dial(proto, addr string, tlsConfig *tls.Config) (net.Conn, error) { +// fallbackDial is used when WithDialer() was not called. +// See cli.Dialer(). +func fallbackDial(proto, addr string, tlsConfig *tls.Config) (net.Conn, error) { if tlsConfig != nil && proto != "unix" && proto != "npipe" { return tls.Dial(proto, addr, tlsConfig) } @@ -48,12 +50,13 @@ func dial(proto, addr string, tlsConfig *tls.Config) (net.Conn, error) { return net.Dial(proto, addr) } -func (cli *Client) setupHijackConn(req *http.Request, proto string) (net.Conn, error) { +func (cli *Client) setupHijackConn(ctx context.Context, req *http.Request, proto string) (net.Conn, error) { req.Host = cli.addr req.Header.Set("Connection", "Upgrade") req.Header.Set("Upgrade", proto) - conn, err := dial(cli.proto, cli.addr, resolveTLSConfig(cli.client.Transport)) + dialer := cli.Dialer() + conn, err := dialer(ctx) if err != nil { return nil, errors.Wrap(err, "cannot connect to the Docker daemon. Is 'docker daemon' running on this host?") } diff --git a/vendor/github.com/docker/docker/client/interface.go b/vendor/github.com/docker/docker/client/interface.go index 9250c468..d190f8e5 100644 --- a/vendor/github.com/docker/docker/client/interface.go +++ b/vendor/github.com/docker/docker/client/interface.go @@ -39,6 +39,7 @@ type CommonAPIClient interface { NegotiateAPIVersion(ctx context.Context) NegotiateAPIVersionPing(types.Ping) DialSession(ctx context.Context, proto string, meta map[string][]string) (net.Conn, error) + Dialer() func(context.Context) (net.Conn, error) Close() error } @@ -85,7 +86,7 @@ type DistributionAPIClient interface { // ImageAPIClient defines API client methods for the images type ImageAPIClient interface { ImageBuild(ctx context.Context, context io.Reader, options types.ImageBuildOptions) (types.ImageBuildResponse, error) - BuildCachePrune(ctx context.Context) (*types.BuildCachePruneReport, error) + BuildCachePrune(ctx context.Context, opts types.BuildCachePruneOptions) (*types.BuildCachePruneReport, error) BuildCancel(ctx context.Context, id string) error ImageCreate(ctx context.Context, parentReference string, options types.ImageCreateOptions) (io.ReadCloser, error) ImageHistory(ctx context.Context, image string) ([]image.HistoryResponseItem, error) diff --git a/vendor/github.com/docker/docker/client/ping.go b/vendor/github.com/docker/docker/client/ping.go index 85d38adb..dec1423e 100644 --- a/vendor/github.com/docker/docker/client/ping.go +++ b/vendor/github.com/docker/docker/client/ping.go @@ -7,7 +7,7 @@ import ( "github.com/docker/docker/api/types" ) -// Ping pings the server and returns the value of the "Docker-Experimental", "OS-Type" & "API-Version" headers +// Ping pings the server and returns the value of the "Docker-Experimental", "Builder-Version", "OS-Type" & "API-Version" headers func (cli *Client) Ping(ctx context.Context) (types.Ping, error) { var ping types.Ping req, err := cli.buildRequest("GET", path.Join(cli.basePath, "/_ping"), nil, nil) @@ -27,6 +27,9 @@ func (cli *Client) Ping(ctx context.Context) (types.Ping, error) { ping.Experimental = true } ping.OSType = serverResp.header.Get("OSType") + if bv := serverResp.header.Get("Builder-Version"); bv != "" { + ping.BuilderVersion = types.BuilderVersion(bv) + } } return ping, cli.checkResponseErr(serverResp) } diff --git a/vendor/github.com/docker/docker/client/session.go b/vendor/github.com/docker/docker/client/session.go index c247123b..df199f3d 100644 --- a/vendor/github.com/docker/docker/client/session.go +++ b/vendor/github.com/docker/docker/client/session.go @@ -14,5 +14,5 @@ func (cli *Client) DialSession(ctx context.Context, proto string, meta map[strin } req = cli.addHeaders(req, meta) - return cli.setupHijackConn(req, proto) + return cli.setupHijackConn(ctx, req, proto) } diff --git a/vendor/github.com/docker/docker/pkg/idtools/idtools.go b/vendor/github.com/docker/docker/pkg/idtools/idtools.go index d1f173a3..230422ea 100644 --- a/vendor/github.com/docker/docker/pkg/idtools/idtools.go +++ b/vendor/github.com/docker/docker/pkg/idtools/idtools.go @@ -37,23 +37,23 @@ const ( // MkdirAllAndChown creates a directory (include any along the path) and then modifies // ownership to the requested uid/gid. If the directory already exists, this // function will still change ownership to the requested uid/gid pair. -func MkdirAllAndChown(path string, mode os.FileMode, owner IDPair) error { - return mkdirAs(path, mode, owner.UID, owner.GID, true, true) +func MkdirAllAndChown(path string, mode os.FileMode, owner Identity) error { + return mkdirAs(path, mode, owner, true, true) } // MkdirAndChown creates a directory and then modifies ownership to the requested uid/gid. // If the directory already exists, this function still changes ownership. // Note that unlike os.Mkdir(), this function does not return IsExist error // in case path already exists. -func MkdirAndChown(path string, mode os.FileMode, owner IDPair) error { - return mkdirAs(path, mode, owner.UID, owner.GID, false, true) +func MkdirAndChown(path string, mode os.FileMode, owner Identity) error { + return mkdirAs(path, mode, owner, false, true) } // MkdirAllAndChownNew creates a directory (include any along the path) and then modifies // ownership ONLY of newly created directories to the requested uid/gid. If the // directories along the path exist, no change of ownership will be performed -func MkdirAllAndChownNew(path string, mode os.FileMode, owner IDPair) error { - return mkdirAs(path, mode, owner.UID, owner.GID, true, false) +func MkdirAllAndChownNew(path string, mode os.FileMode, owner Identity) error { + return mkdirAs(path, mode, owner, true, false) } // GetRootUIDGID retrieves the remapped root uid/gid pair from the set of maps. @@ -102,22 +102,23 @@ func toHost(contID int, idMap []IDMap) (int, error) { return -1, fmt.Errorf("Container ID %d cannot be mapped to a host ID", contID) } -// IDPair is a UID and GID pair -type IDPair struct { +// Identity is either a UID and GID pair or a SID (but not both) +type Identity struct { UID int GID int + SID string } -// IDMappings contains a mappings of UIDs and GIDs -type IDMappings struct { +// IdentityMapping contains a mappings of UIDs and GIDs +type IdentityMapping struct { uids []IDMap gids []IDMap } -// NewIDMappings takes a requested user and group name and +// NewIdentityMapping takes a requested user and group name and // using the data from /etc/sub{uid,gid} ranges, creates the // proper uid and gid remapping ranges for that user/group pair -func NewIDMappings(username, groupname string) (*IDMappings, error) { +func NewIdentityMapping(username, groupname string) (*IdentityMapping, error) { subuidRanges, err := parseSubuid(username) if err != nil { return nil, err @@ -133,7 +134,7 @@ func NewIDMappings(username, groupname string) (*IDMappings, error) { return nil, fmt.Errorf("No subgid ranges found for group %q", groupname) } - return &IDMappings{ + return &IdentityMapping{ uids: createIDMap(subuidRanges), gids: createIDMap(subgidRanges), }, nil @@ -141,21 +142,21 @@ func NewIDMappings(username, groupname string) (*IDMappings, error) { // NewIDMappingsFromMaps creates a new mapping from two slices // Deprecated: this is a temporary shim while transitioning to IDMapping -func NewIDMappingsFromMaps(uids []IDMap, gids []IDMap) *IDMappings { - return &IDMappings{uids: uids, gids: gids} +func NewIDMappingsFromMaps(uids []IDMap, gids []IDMap) *IdentityMapping { + return &IdentityMapping{uids: uids, gids: gids} } // RootPair returns a uid and gid pair for the root user. The error is ignored // because a root user always exists, and the defaults are correct when the uid // and gid maps are empty. -func (i *IDMappings) RootPair() IDPair { +func (i *IdentityMapping) RootPair() Identity { uid, gid, _ := GetRootUIDGID(i.uids, i.gids) - return IDPair{UID: uid, GID: gid} + return Identity{UID: uid, GID: gid} } // ToHost returns the host UID and GID for the container uid, gid. // Remapping is only performed if the ids aren't already the remapped root ids -func (i *IDMappings) ToHost(pair IDPair) (IDPair, error) { +func (i *IdentityMapping) ToHost(pair Identity) (Identity, error) { var err error target := i.RootPair() @@ -173,7 +174,7 @@ func (i *IDMappings) ToHost(pair IDPair) (IDPair, error) { } // ToContainer returns the container UID and GID for the host uid and gid -func (i *IDMappings) ToContainer(pair IDPair) (int, int, error) { +func (i *IdentityMapping) ToContainer(pair Identity) (int, int, error) { uid, err := toContainer(pair.UID, i.uids) if err != nil { return -1, -1, err @@ -183,19 +184,19 @@ func (i *IDMappings) ToContainer(pair IDPair) (int, int, error) { } // Empty returns true if there are no id mappings -func (i *IDMappings) Empty() bool { +func (i *IdentityMapping) Empty() bool { return len(i.uids) == 0 && len(i.gids) == 0 } // UIDs return the UID mapping // TODO: remove this once everything has been refactored to use pairs -func (i *IDMappings) UIDs() []IDMap { +func (i *IdentityMapping) UIDs() []IDMap { return i.uids } // GIDs return the UID mapping // TODO: remove this once everything has been refactored to use pairs -func (i *IDMappings) GIDs() []IDMap { +func (i *IdentityMapping) GIDs() []IDMap { return i.gids } diff --git a/vendor/github.com/docker/docker/pkg/idtools/idtools_unix.go b/vendor/github.com/docker/docker/pkg/idtools/idtools_unix.go index 1d87ea3b..fb239743 100644 --- a/vendor/github.com/docker/docker/pkg/idtools/idtools_unix.go +++ b/vendor/github.com/docker/docker/pkg/idtools/idtools_unix.go @@ -21,11 +21,12 @@ var ( getentCmd string ) -func mkdirAs(path string, mode os.FileMode, ownerUID, ownerGID int, mkAll, chownExisting bool) error { +func mkdirAs(path string, mode os.FileMode, owner Identity, mkAll, chownExisting bool) error { // make an array containing the original path asked for, plus (for mkAll == true) // all path components leading up to the complete path that don't exist before we MkdirAll // so that we can chown all of them properly at the end. If chownExisting is false, we won't // chown the full directory path if it exists + var paths []string stat, err := system.Stat(path) @@ -38,7 +39,7 @@ func mkdirAs(path string, mode os.FileMode, ownerUID, ownerGID int, mkAll, chown } // short-circuit--we were called with an existing directory and chown was requested - return lazyChown(path, ownerUID, ownerGID, stat) + return lazyChown(path, owner.UID, owner.GID, stat) } if os.IsNotExist(err) { @@ -69,7 +70,7 @@ func mkdirAs(path string, mode os.FileMode, ownerUID, ownerGID int, mkAll, chown // even if it existed, we will chown the requested path + any subpaths that // didn't exist when we called MkdirAll for _, pathComponent := range paths { - if err := lazyChown(pathComponent, ownerUID, ownerGID, nil); err != nil { + if err := lazyChown(pathComponent, owner.UID, owner.GID, nil); err != nil { return err } } @@ -78,7 +79,7 @@ func mkdirAs(path string, mode os.FileMode, ownerUID, ownerGID int, mkAll, chown // CanAccess takes a valid (existing) directory and a uid, gid pair and determines // if that uid, gid pair has access (execute bit) to the directory -func CanAccess(path string, pair IDPair) bool { +func CanAccess(path string, pair Identity) bool { statInfo, err := system.Stat(path) if err != nil { return false diff --git a/vendor/github.com/docker/docker/pkg/idtools/idtools_windows.go b/vendor/github.com/docker/docker/pkg/idtools/idtools_windows.go index d72cc289..4ae38a1b 100644 --- a/vendor/github.com/docker/docker/pkg/idtools/idtools_windows.go +++ b/vendor/github.com/docker/docker/pkg/idtools/idtools_windows.go @@ -6,9 +6,11 @@ import ( "github.com/docker/docker/pkg/system" ) -// Platforms such as Windows do not support the UID/GID concept. So make this -// just a wrapper around system.MkdirAll. -func mkdirAs(path string, mode os.FileMode, ownerUID, ownerGID int, mkAll, chownExisting bool) error { +// This is currently a wrapper around MkdirAll, however, since currently +// permissions aren't set through this path, the identity isn't utilized. +// Ownership is handled elsewhere, but in the future could be support here +// too. +func mkdirAs(path string, mode os.FileMode, owner Identity, mkAll, chownExisting bool) error { if err := system.MkdirAll(path, mode, ""); err != nil { return err } @@ -18,6 +20,6 @@ func mkdirAs(path string, mode os.FileMode, ownerUID, ownerGID int, mkAll, chown // CanAccess takes a valid (existing) directory and a uid, gid pair and determines // if that uid, gid pair has access (execute bit) to the directory // Windows does not require/support this function, so always return true -func CanAccess(path string, pair IDPair) bool { +func CanAccess(path string, identity Identity) bool { return true } diff --git a/vendor/github.com/docker/docker/pkg/symlink/LICENSE.APACHE b/vendor/github.com/docker/docker/pkg/symlink/LICENSE.APACHE index b9fbf3c9..5d80670b 100644 --- a/vendor/github.com/docker/docker/pkg/symlink/LICENSE.APACHE +++ b/vendor/github.com/docker/docker/pkg/symlink/LICENSE.APACHE @@ -176,7 +176,7 @@ END OF TERMS AND CONDITIONS - Copyright 2014-2017 Docker, Inc. + Copyright 2014-2018 Docker, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/vendor/github.com/docker/docker/pkg/symlink/LICENSE.BSD b/vendor/github.com/docker/docker/pkg/symlink/LICENSE.BSD index 4c056c5e..2ee8768d 100644 --- a/vendor/github.com/docker/docker/pkg/symlink/LICENSE.BSD +++ b/vendor/github.com/docker/docker/pkg/symlink/LICENSE.BSD @@ -1,4 +1,4 @@ -Copyright (c) 2014-2017 The Docker & Go Authors. All rights reserved. +Copyright (c) 2014-2018 The Docker & Go Authors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are diff --git a/vendor/github.com/docker/docker/pkg/system/path_unix.go b/vendor/github.com/docker/docker/pkg/system/path_unix.go new file mode 100644 index 00000000..b0b93196 --- /dev/null +++ b/vendor/github.com/docker/docker/pkg/system/path_unix.go @@ -0,0 +1,10 @@ +// +build !windows + +package system // import "github.com/docker/docker/pkg/system" + +// GetLongPathName converts Windows short pathnames to full pathnames. +// For example C:\Users\ADMIN~1 --> C:\Users\Administrator. +// It is a no-op on non-Windows platforms +func GetLongPathName(path string) (string, error) { + return path, nil +} diff --git a/vendor/github.com/docker/docker/pkg/system/path_windows.go b/vendor/github.com/docker/docker/pkg/system/path_windows.go new file mode 100644 index 00000000..188f2c29 --- /dev/null +++ b/vendor/github.com/docker/docker/pkg/system/path_windows.go @@ -0,0 +1,24 @@ +package system // import "github.com/docker/docker/pkg/system" + +import "syscall" + +// GetLongPathName converts Windows short pathnames to full pathnames. +// For example C:\Users\ADMIN~1 --> C:\Users\Administrator. +// It is a no-op on non-Windows platforms +func GetLongPathName(path string) (string, error) { + // See https://groups.google.com/forum/#!topic/golang-dev/1tufzkruoTg + p := syscall.StringToUTF16(path) + b := p // GetLongPathName says we can reuse buffer + n, err := syscall.GetLongPathName(&p[0], &b[0], uint32(len(b))) + if err != nil { + return "", err + } + if n > uint32(len(b)) { + b = make([]uint16, n) + _, err = syscall.GetLongPathName(&p[0], &b[0], uint32(len(b))) + if err != nil { + return "", err + } + } + return syscall.UTF16ToString(b), nil +} diff --git a/vendor/github.com/docker/docker/pkg/system/rm.go b/vendor/github.com/docker/docker/pkg/system/rm.go index 02e4d262..b3109918 100644 --- a/vendor/github.com/docker/docker/pkg/system/rm.go +++ b/vendor/github.com/docker/docker/pkg/system/rm.go @@ -34,7 +34,7 @@ func EnsureRemoveAll(dir string) error { for { err := os.RemoveAll(dir) if err == nil { - return err + return nil } pe, ok := err.(*os.PathError) diff --git a/vendor/github.com/docker/docker/pkg/system/syscall_windows.go b/vendor/github.com/docker/docker/pkg/system/syscall_windows.go index ee7e0256..4ae92fa6 100644 --- a/vendor/github.com/docker/docker/pkg/system/syscall_windows.go +++ b/vendor/github.com/docker/docker/pkg/system/syscall_windows.go @@ -2,16 +2,62 @@ package system // import "github.com/docker/docker/pkg/system" import ( "fmt" + "syscall" "unsafe" "github.com/sirupsen/logrus" "golang.org/x/sys/windows" ) +const ( + OWNER_SECURITY_INFORMATION = 0x00000001 + GROUP_SECURITY_INFORMATION = 0x00000002 + DACL_SECURITY_INFORMATION = 0x00000004 + SACL_SECURITY_INFORMATION = 0x00000008 + LABEL_SECURITY_INFORMATION = 0x00000010 + ATTRIBUTE_SECURITY_INFORMATION = 0x00000020 + SCOPE_SECURITY_INFORMATION = 0x00000040 + PROCESS_TRUST_LABEL_SECURITY_INFORMATION = 0x00000080 + ACCESS_FILTER_SECURITY_INFORMATION = 0x00000100 + BACKUP_SECURITY_INFORMATION = 0x00010000 + PROTECTED_DACL_SECURITY_INFORMATION = 0x80000000 + PROTECTED_SACL_SECURITY_INFORMATION = 0x40000000 + UNPROTECTED_DACL_SECURITY_INFORMATION = 0x20000000 + UNPROTECTED_SACL_SECURITY_INFORMATION = 0x10000000 +) + +const ( + SE_UNKNOWN_OBJECT_TYPE = iota + SE_FILE_OBJECT + SE_SERVICE + SE_PRINTER + SE_REGISTRY_KEY + SE_LMSHARE + SE_KERNEL_OBJECT + SE_WINDOW_OBJECT + SE_DS_OBJECT + SE_DS_OBJECT_ALL + SE_PROVIDER_DEFINED_OBJECT + SE_WMIGUID_OBJECT + SE_REGISTRY_WOW64_32KEY +) + +const ( + SeTakeOwnershipPrivilege = "SeTakeOwnershipPrivilege" +) + +const ( + ContainerAdministratorSidString = "S-1-5-93-2-1" + ContainerUserSidString = "S-1-5-93-2-2" +) + var ( - ntuserApiset = windows.NewLazyDLL("ext-ms-win-ntuser-window-l1-1-0") - procGetVersionExW = modkernel32.NewProc("GetVersionExW") - procGetProductInfo = modkernel32.NewProc("GetProductInfo") + ntuserApiset = windows.NewLazyDLL("ext-ms-win-ntuser-window-l1-1-0") + modadvapi32 = windows.NewLazySystemDLL("advapi32.dll") + procGetVersionExW = modkernel32.NewProc("GetVersionExW") + procGetProductInfo = modkernel32.NewProc("GetProductInfo") + procSetNamedSecurityInfo = modadvapi32.NewProc("SetNamedSecurityInfoW") + procGetSecurityDescriptorDacl = modadvapi32.NewProc("GetSecurityDescriptorDacl") ) // OSVersion is a wrapper for Windows version information @@ -125,3 +171,23 @@ func HasWin32KSupport() bool { // APIs. return ntuserApiset.Load() == nil } + +func SetNamedSecurityInfo(objectName *uint16, objectType uint32, securityInformation uint32, sidOwner *windows.SID, sidGroup *windows.SID, dacl *byte, sacl *byte) (result error) { + r0, _, _ := syscall.Syscall9(procSetNamedSecurityInfo.Addr(), 7, uintptr(unsafe.Pointer(objectName)), uintptr(objectType), uintptr(securityInformation), uintptr(unsafe.Pointer(sidOwner)), uintptr(unsafe.Pointer(sidGroup)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(sacl)), 0, 0) + if r0 != 0 { + result = syscall.Errno(r0) + } + return +} + +func GetSecurityDescriptorDacl(securityDescriptor *byte, daclPresent *uint32, dacl **byte, daclDefaulted *uint32) (result error) { + r1, _, e1 := syscall.Syscall6(procGetSecurityDescriptorDacl.Addr(), 4, uintptr(unsafe.Pointer(securityDescriptor)), uintptr(unsafe.Pointer(daclPresent)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(daclDefaulted)), 0, 0) + if r1 == 0 { + if e1 != 0 { + result = syscall.Errno(e1) + } else { + result = syscall.EINVAL + } + } + return +} diff --git a/vendor/github.com/docker/docker/pkg/term/term_windows.go b/vendor/github.com/docker/docker/pkg/term/term_windows.go index 64ead3c5..a3c3db13 100644 --- a/vendor/github.com/docker/docker/pkg/term/term_windows.go +++ b/vendor/github.com/docker/docker/pkg/term/term_windows.go @@ -62,13 +62,6 @@ func StdStreams() (stdIn io.ReadCloser, stdOut, stdErr io.Writer) { } } - if os.Getenv("ConEmuANSI") == "ON" || os.Getenv("ConsoleZVersion") != "" { - // The ConEmu and ConsoleZ terminals emulate ANSI on output streams well. - emulateStdin = true - emulateStdout = false - emulateStderr = false - } - // Temporarily use STD_INPUT_HANDLE, STD_OUTPUT_HANDLE and // STD_ERROR_HANDLE from syscall rather than x/sys/windows as long as // go-ansiterm hasn't switch to x/sys/windows. diff --git a/vendor/github.com/docker/docker/registry/service_v2.go b/vendor/github.com/docker/docker/registry/service_v2.go index 3a56dc91..1a4c9e31 100644 --- a/vendor/github.com/docker/docker/registry/service_v2.go +++ b/vendor/github.com/docker/docker/registry/service_v2.go @@ -57,7 +57,7 @@ func (s *DefaultService) lookupV2Endpoints(hostname string) (endpoints []APIEndp Scheme: "https", Host: hostname, }, - Version: APIVersion2, + Version: APIVersion2, AllowNondistributableArtifacts: ana, TrimHostname: true, TLSConfig: tlsConfig, @@ -70,7 +70,7 @@ func (s *DefaultService) lookupV2Endpoints(hostname string) (endpoints []APIEndp Scheme: "http", Host: hostname, }, - Version: APIVersion2, + Version: APIVersion2, AllowNondistributableArtifacts: ana, TrimHostname: true, // used to check if supposed to be secure via InsecureSkipVerify diff --git a/vendor/github.com/docker/go-connections/sockets/unix_socket.go b/vendor/github.com/docker/go-connections/sockets/unix_socket.go index a8b5dbb6..1d91c7b6 100644 --- a/vendor/github.com/docker/go-connections/sockets/unix_socket.go +++ b/vendor/github.com/docker/go-connections/sockets/unix_socket.go @@ -1,5 +1,51 @@ // +build !windows +/* +Package sockets is a simple unix domain socket wrapper. + +Usage + +For example: + + import( + "fmt" + "net" + "os" + "github.com/docker/go-connections/sockets" + ) + + func main() { + l, err := sockets.NewUnixSocketWithOpts("/path/to/sockets", + sockets.WithChown(0,0),sockets.WithChmod(0660)) + if err != nil { + panic(err) + } + echoStr := "hello" + + go func() { + for { + conn, err := l.Accept() + if err != nil { + return + } + conn.Write([]byte(echoStr)) + conn.Close() + } + }() + + conn, err := net.Dial("unix", path) + if err != nil { + t.Fatal(err) + } + + buf := make([]byte, 5) + if _, err := conn.Read(buf); err != nil { + panic(err) + } else if string(buf) != echoStr { + panic(fmt.Errorf("Msg may lost")) + } + } +*/ package sockets import ( @@ -8,8 +54,31 @@ import ( "syscall" ) -// NewUnixSocket creates a unix socket with the specified path and group. -func NewUnixSocket(path string, gid int) (net.Listener, error) { +// SockOption sets up socket file's creating option +type SockOption func(string) error + +// WithChown modifies the socket file's uid and gid +func WithChown(uid, gid int) SockOption { + return func(path string) error { + if err := os.Chown(path, uid, gid); err != nil { + return err + } + return nil + } +} + +// WithChmod modifies socket file's access mode +func WithChmod(mask os.FileMode) SockOption { + return func(path string) error { + if err := os.Chmod(path, mask); err != nil { + return err + } + return nil + } +} + +// NewUnixSocketWithOpts creates a unix socket with the specified options +func NewUnixSocketWithOpts(path string, opts ...SockOption) (net.Listener, error) { if err := syscall.Unlink(path); err != nil && !os.IsNotExist(err) { return nil, err } @@ -20,13 +89,18 @@ func NewUnixSocket(path string, gid int) (net.Listener, error) { if err != nil { return nil, err } - if err := os.Chown(path, 0, gid); err != nil { - l.Close() - return nil, err - } - if err := os.Chmod(path, 0660); err != nil { - l.Close() - return nil, err + + for _, op := range opts { + if err := op(path); err != nil { + l.Close() + return nil, err + } } + return l, nil } + +// NewUnixSocket creates a unix socket with the specified path and group. +func NewUnixSocket(path string, gid int) (net.Listener, error) { + return NewUnixSocketWithOpts(path, WithChown(0, gid), WithChmod(0660)) +} diff --git a/vendor/github.com/genuinetools/pkg/cli/cli.go b/vendor/github.com/genuinetools/pkg/cli/cli.go index 0ffa2791..d6f28f3e 100644 --- a/vendor/github.com/genuinetools/pkg/cli/cli.go +++ b/vendor/github.com/genuinetools/pkg/cli/cli.go @@ -7,6 +7,7 @@ import ( "fmt" "os" "path/filepath" + "sort" "strings" "text/tabwriter" ) @@ -14,6 +15,8 @@ import ( const ( // GitCommitKey is the key for the program's GitCommit data. GitCommitKey ContextKey = "program.GitCommit" + // NameKey is the key for the program's name. + NameKey ContextKey = "program.Name" // VersionKey is the key for the program's Version data. VersionKey ContextKey = "program.Version" ) @@ -41,9 +44,9 @@ type Program struct { // but after the context is ready. // If a non-nil error is returned, no subcommands are run. Before func(context.Context) error - // After defines a function to execute after any subcommands are run, - // but after the subcommand has finished. - // It is run even if the subcommand returns an error. + // After defines a function to execute after any commands or action is run + // and has finished. + // It is run _only_ if the subcommand exits without an error. After func(context.Context) error // Action is the function to execute when no subcommands are specified. @@ -80,118 +83,31 @@ func NewProgram() *Program { // Run is the entry point for the program. It parses the arguments and executes // the commands. func (p *Program) Run() { - // Create the context with the values we need to pass to the version command. - ctx := context.WithValue(context.Background(), GitCommitKey, p.GitCommit) - ctx = context.WithValue(ctx, VersionKey, p.Version) + ctx := p.defaultContext() // Pass the os.Args through so we can more easily unit test. - printUsage, err := p.run(ctx, os.Args) - if err == nil && !printUsage { + err := p.run(ctx, os.Args) + if err == nil { + // Return early if there was no error. return } - if err != nil { + if err != flag.ErrHelp { + // We did not return the error to print the usage, so let's print the + // error and exit. fmt.Fprintln(os.Stderr, err.Error()) + os.Exit(1) } - if printUsage { - if err != nil { - // Print an extra new line to seperate from the usage output. - fmt.Fprintln(os.Stderr) - } - p.usage(ctx) - } + + // Print the usage. + p.FlagSet.Usage() os.Exit(1) } -func (p *Program) run(ctx context.Context, args []string) (bool, error) { +func (p *Program) run(ctx context.Context, args []string) error { // Append the version command to the list of commands by default. p.Commands = append(p.Commands, &versionCommand{}) - // TODO(jessfraz): Find a better way to tell that they passed -h through as a flag. - if len(args) > 1 && - (strings.Contains(strings.ToLower(args[1]), "help") || - strings.ToLower(args[1]) == "-h") || - args == nil || len(args) < 1 { - return true, nil - } - - // If we do not have an action set and we have no commands, print the usage - // and exit. - if p.Action == nil && len(p.Commands) < 2 { - return true, nil - } - - // Check if the command exists. - var commandExists bool - if len(args) > 1 && in(args[1], p.Commands) { - commandExists = true - } - - // If we are not running a commands we know, then automatically - // run the main action of the program instead. - // Also enter this loop if we weren't passed any arguments. - if p.Action != nil && - (len(args) < 2 || !commandExists) { - return p.runAction(ctx, args) - } - - // Return early if we didn't enter the single action logic and - // the command does not exist or we were passed no commands. - if len(args) < 2 { - return true, nil - } - if !commandExists { - return true, fmt.Errorf("%s: no such command", args[1]) - } - - // Iterate over the commands in the program. - for _, command := range p.Commands { - if args[1] == command.Name() { - // Set the default flagset if our flagset is undefined. - if p.FlagSet == nil { - p.FlagSet = defaultFlagSet(p.Name) - } - - // Register the subcommand flags in with the common/global flags. - command.Register(p.FlagSet) - - // Override the usage text to something nicer. - p.resetCommandUsage(command) - - // Parse the flags the user gave us. - if err := p.FlagSet.Parse(args[2:]); err != nil { - return false, err - } - - if p.Before != nil { - if err := p.Before(ctx); err != nil { - return false, err - } - } - - // Run the command with the context and post-flag-processing args. - if err := command.Run(ctx, p.FlagSet.Args()); err != nil { - if p.After != nil { - p.After(ctx) - } - - return false, err - } - - // Run the after function. - if p.After != nil { - if err := p.After(ctx); err != nil { - return false, err - } - } - } - } - - // Done. - return false, nil -} - -func (p *Program) runAction(ctx context.Context, args []string) (bool, error) { // Set the default flagset if our flagset is undefined. if p.FlagSet == nil { p.FlagSet = defaultFlagSet(p.Name) @@ -202,38 +118,111 @@ func (p *Program) runAction(ctx context.Context, args []string) (bool, error) { p.usage(ctx) } - // Parse the flags the user gave us. - if err := p.FlagSet.Parse(args[1:]); err != nil { - return true, nil + // IF + // args is + // OR + // args is less than 1 + // OR + // we have more than one arg and it equals help OR is a help flag + // THEN + // print the usage + if args == nil || + len(args) < 1 || + (len(args) > 1 && contains([]string{"-h", "--help", "help"}, args[1])) { + return flag.ErrHelp } - // Run the main action _if_ we are not in the loop for the version command - // that is added by default. - if p.Before != nil { - if err := p.Before(ctx); err != nil { - return false, err + // If we do not have an action set and we have no commands, print the usage + // and exit. + if p.Action == nil && len(p.Commands) < 2 { + return flag.ErrHelp + } + + // Check if the command exists. + var ( + command Command + commandExists bool + ) + if len(args) > 1 { + command = p.findCommand(args[1]) + commandExists = command != nil + } + + // Return early if we didn't enter the single action logic and + // the command does not exist or we were passed no commands. + if p.Action == nil && len(args) < 2 { + return flag.ErrHelp + } + if p.Action == nil && !commandExists { + return fmt.Errorf("%s: no such command", args[1]) + } + + // If we are not running a command we know, then automatically + // run the main action of the program instead. + // Also enter this loop if we weren't passed any arguments. + if p.Action != nil && + (len(args) < 2 || !commandExists) { + // Parse the flags the user gave us. + if err := p.FlagSet.Parse(args[1:]); err != nil { + return err + } + + // Run the main action _if_ we are not in the loop for the version command + // that is added by default. + if p.Before != nil { + if err := p.Before(ctx); err != nil { + return err + } + } + + // Run the action with the context and post-flag-processing args. + if err := p.Action(ctx, p.FlagSet.Args()); err != nil { + return err } } - // Run the action with the context and post-flag-processing args. - if err := p.Action(ctx, p.FlagSet.Args()); err != nil { - // Run the after function. - if p.After != nil { - p.After(ctx) + if commandExists { + // Register the subcommand flags in with the common/global flags. + command.Register(p.FlagSet) + + // Override the usage text to something nicer. + p.resetCommandUsage(command) + + // Parse the flags the user gave us. + if err := p.FlagSet.Parse(args[2:]); err != nil { + return err } - return false, err + // Check that they didn't add a -h or --help flag after the subcommand's + // commands, like `cmd sub other thing -h`. + if contains([]string{"-h", "--help"}, args...) { + // Print the flag usage and exit. + return flag.ErrHelp + } + + // Only execute the Before function for user-supplied commands. + // This excludes the version command we supply. + if p.Before != nil && command.Name() != "version" { + if err := p.Before(ctx); err != nil { + return err + } + } + + // Run the command with the context and post-flag-processing args. + if err := command.Run(ctx, p.FlagSet.Args()); err != nil { + return err + } } // Run the after function. if p.After != nil { if err := p.After(ctx); err != nil { - return false, err + return err } } // Done. - return false, nil + return nil } func (p *Program) usage(ctx context.Context) error { @@ -275,13 +264,23 @@ func (p *Program) resetCommandUsage(command Command) { type mflag struct { name string defValue string + usage string +} + +// byName implements sort.Interface for []mflag based on the name field. +type byName []mflag + +func (n byName) Len() int { return len(n) } +func (n byName) Swap(i, j int) { n[i], n[j] = n[j], n[i] } +func (n byName) Less(i, j int) bool { + return strings.TrimPrefix(n[i].name, "-") < strings.TrimPrefix(n[j].name, "-") } func resetFlagUsage(fs *flag.FlagSet) { var ( hasFlags bool flagBlock bytes.Buffer - flagMap = map[string]mflag{} + flagMap = []mflag{} flagWriter = tabwriter.NewWriter(&flagBlock, 0, 4, 2, ' ', 0) ) @@ -303,32 +302,32 @@ func resetFlagUsage(fs *flag.FlagSet) { // Try and find duplicates (or the shortcode flags and combine them. // Like: -, --password - v, ok := flagMap[f.Usage] - if !ok { - flagMap[f.Usage] = mflag{ - name: name, - defValue: defValue, + for k, v := range flagMap { + if v.usage == f.Usage { + if len(v.name) <= 2 { + // We already had the shortcode, let's append. + v.name = fmt.Sprintf("%s, -%s", v.name, name) + } else { + v.name = fmt.Sprintf("%s, -%s", name, v.name) + } + flagMap[k].name = v.name + + // Return here. + return } - - // Return here. - return } - if len(v.name) <= 2 { - // We already had the shortcode, let's append. - v.name = fmt.Sprintf("%s, -%s", v.name, name) - } else { - v.name = fmt.Sprintf("%s, -%s", name, v.name) - } - - flagMap[f.Usage] = mflag{ - name: v.name, + flagMap = append(flagMap, mflag{ + name: name, defValue: defValue, - } + usage: f.Usage, + }) }) - for desc, fm := range flagMap { - fmt.Fprintf(flagWriter, "\t-%s\t%s (default: %s)\n", fm.name, desc, fm.defValue) + // Sort by name and preserve order on output. + sort.Sort(byName(flagMap)) + for i := 0; i < len(flagMap); i++ { + fmt.Fprintf(flagWriter, "\t-%s\t%s (default: %s)\n", flagMap[i].name, flagMap[i].usage, flagMap[i].defValue) } flagWriter.Flush() @@ -347,11 +346,32 @@ func defaultFlagSet(n string) *flag.FlagSet { return flag.NewFlagSet(n, flag.ExitOnError) } -func in(a string, c []Command) bool { - for _, b := range c { - if b.Name() == a { - return true +func (p *Program) findCommand(name string) Command { + // Iterate over the commands in the program. + for _, command := range p.Commands { + if command.Name() == name { + return command + } + } + return nil +} + +func contains(match []string, a ...string) bool { + // Iterate over the items in the slice. + for _, s := range a { + // Iterate over the items to match. + for _, m := range match { + if s == m { + return true + } } } return false } + +func (p *Program) defaultContext() context.Context { + // Create the context with the values we need to pass to the version command. + ctx := context.WithValue(context.Background(), GitCommitKey, p.GitCommit) + ctx = context.WithValue(ctx, NameKey, p.Name) + return context.WithValue(ctx, VersionKey, p.Version) +} diff --git a/vendor/github.com/genuinetools/pkg/cli/version.go b/vendor/github.com/genuinetools/pkg/cli/version.go index 9c41e887..ff151a7d 100644 --- a/vendor/github.com/genuinetools/pkg/cli/version.go +++ b/vendor/github.com/genuinetools/pkg/cli/version.go @@ -26,7 +26,7 @@ func (cmd *versionCommand) Run(ctx context.Context, args []string) error { go version : %s go compiler : %s platform : %s/%s -`, "ship", ctx.Value(VersionKey).(string), ctx.Value(GitCommitKey).(string), +`, ctx.Value(NameKey).(string), ctx.Value(VersionKey).(string), ctx.Value(GitCommitKey).(string), runtime.Version(), runtime.Compiler, runtime.GOOS, runtime.GOARCH) return nil } diff --git a/vendor/github.com/golang/protobuf/LICENSE b/vendor/github.com/golang/protobuf/LICENSE index 1b1b1921..0f646931 100644 --- a/vendor/github.com/golang/protobuf/LICENSE +++ b/vendor/github.com/golang/protobuf/LICENSE @@ -1,7 +1,4 @@ -Go support for Protocol Buffers - Google's data interchange format - Copyright 2010 The Go Authors. All rights reserved. -https://github.com/golang/protobuf Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are diff --git a/vendor/github.com/golang/protobuf/jsonpb/jsonpb.go b/vendor/github.com/golang/protobuf/jsonpb/jsonpb.go index ff368f33..ada2b78e 100644 --- a/vendor/github.com/golang/protobuf/jsonpb/jsonpb.go +++ b/vendor/github.com/golang/protobuf/jsonpb/jsonpb.go @@ -106,6 +106,9 @@ func defaultResolveAny(typeUrl string) (proto.Message, error) { // way they are marshaled to JSON. Messages that implement this should // also implement JSONPBUnmarshaler so that the custom format can be // parsed. +// +// The JSON marshaling must follow the proto to JSON specification: +// https://developers.google.com/protocol-buffers/docs/proto3#json type JSONPBMarshaler interface { MarshalJSONPB(*Marshaler) ([]byte, error) } @@ -114,6 +117,9 @@ type JSONPBMarshaler interface { // the way they are unmarshaled from JSON. Messages that implement this // should also implement JSONPBMarshaler so that the custom format can be // produced. +// +// The JSON unmarshaling must follow the JSON to proto specification: +// https://developers.google.com/protocol-buffers/docs/proto3#json type JSONPBUnmarshaler interface { UnmarshalJSONPB(*Unmarshaler, []byte) error } @@ -565,6 +571,7 @@ func (m *Marshaler) marshalValue(out *errWriter, prop *proto.Properties, v refle out.write(m.Indent) } + // TODO handle map key prop properly b, err := json.Marshal(k.Interface()) if err != nil { return err @@ -586,7 +593,11 @@ func (m *Marshaler) marshalValue(out *errWriter, prop *proto.Properties, v refle out.write(` `) } - if err := m.marshalValue(out, prop, v.MapIndex(k), indent+m.Indent); err != nil { + vprop := prop + if prop != nil && prop.MapValProp != nil { + vprop = prop.MapValProp + } + if err := m.marshalValue(out, vprop, v.MapIndex(k), indent+m.Indent); err != nil { return err } } @@ -778,7 +789,7 @@ func (u *Unmarshaler) unmarshalValue(target reflect.Value, inputValue json.RawMe return nil case "Duration": - unq, err := strconv.Unquote(string(inputValue)) + unq, err := unquote(string(inputValue)) if err != nil { return err } @@ -795,7 +806,7 @@ func (u *Unmarshaler) unmarshalValue(target reflect.Value, inputValue json.RawMe target.Field(1).SetInt(ns) return nil case "Timestamp": - unq, err := strconv.Unquote(string(inputValue)) + unq, err := unquote(string(inputValue)) if err != nil { return err } @@ -842,7 +853,7 @@ func (u *Unmarshaler) unmarshalValue(target reflect.Value, inputValue json.RawMe target.Field(0).Set(reflect.ValueOf(&stpb.Value_NullValue{})) } else if v, err := strconv.ParseFloat(ivStr, 0); err == nil { target.Field(0).Set(reflect.ValueOf(&stpb.Value_NumberValue{v})) - } else if v, err := strconv.Unquote(ivStr); err == nil { + } else if v, err := unquote(ivStr); err == nil { target.Field(0).Set(reflect.ValueOf(&stpb.Value_StringValue{v})) } else if v, err := strconv.ParseBool(ivStr); err == nil { target.Field(0).Set(reflect.ValueOf(&stpb.Value_BoolValue{v})) @@ -878,6 +889,9 @@ func (u *Unmarshaler) unmarshalValue(target reflect.Value, inputValue json.RawMe target.Set(reflect.New(targetType.Elem())) target = target.Elem() } + if targetType.Kind() != reflect.Int32 { + return fmt.Errorf("invalid target %q for enum %s", targetType.Kind(), prop.Enum) + } target.SetInt(int64(n)) return nil } @@ -1007,16 +1021,22 @@ func (u *Unmarshaler) unmarshalValue(target reflect.Value, inputValue json.RawMe k = reflect.ValueOf(ks) } else { k = reflect.New(targetType.Key()).Elem() - // TODO: pass the correct Properties if needed. - if err := u.unmarshalValue(k, json.RawMessage(ks), nil); err != nil { + var kprop *proto.Properties + if prop != nil && prop.MapKeyProp != nil { + kprop = prop.MapKeyProp + } + if err := u.unmarshalValue(k, json.RawMessage(ks), kprop); err != nil { return err } } // Unmarshal map value. v := reflect.New(targetType.Elem()).Elem() - // TODO: pass the correct Properties if needed. - if err := u.unmarshalValue(v, raw, nil); err != nil { + var vprop *proto.Properties + if prop != nil && prop.MapValProp != nil { + vprop = prop.MapValProp + } + if err := u.unmarshalValue(v, raw, vprop); err != nil { return err } target.SetMapIndex(k, v) @@ -1025,13 +1045,6 @@ func (u *Unmarshaler) unmarshalValue(target reflect.Value, inputValue json.RawMe return nil } - // 64-bit integers can be encoded as strings. In this case we drop - // the quotes and proceed as normal. - isNum := targetType.Kind() == reflect.Int64 || targetType.Kind() == reflect.Uint64 - if isNum && strings.HasPrefix(string(inputValue), `"`) { - inputValue = inputValue[1 : len(inputValue)-1] - } - // Non-finite numbers can be encoded as strings. isFloat := targetType.Kind() == reflect.Float32 || targetType.Kind() == reflect.Float64 if isFloat { @@ -1041,10 +1054,25 @@ func (u *Unmarshaler) unmarshalValue(target reflect.Value, inputValue json.RawMe } } + // integers & floats can be encoded as strings. In this case we drop + // the quotes and proceed as normal. + isNum := targetType.Kind() == reflect.Int64 || targetType.Kind() == reflect.Uint64 || + targetType.Kind() == reflect.Int32 || targetType.Kind() == reflect.Uint32 || + targetType.Kind() == reflect.Float32 || targetType.Kind() == reflect.Float64 + if isNum && strings.HasPrefix(string(inputValue), `"`) { + inputValue = inputValue[1 : len(inputValue)-1] + } + // Use the encoding/json for parsing other value types. return json.Unmarshal(inputValue, target.Addr().Interface()) } +func unquote(s string) (string, error) { + var ret string + err := json.Unmarshal([]byte(s), &ret) + return ret, err +} + // jsonProperties returns parsed proto.Properties for the field and corrects JSONName attribute. func jsonProperties(f reflect.StructField, origName bool) *proto.Properties { var prop proto.Properties @@ -1094,6 +1122,8 @@ func (s mapKeys) Swap(i, j int) { s[i], s[j] = s[j], s[i] } func (s mapKeys) Less(i, j int) bool { if k := s[i].Kind(); k == s[j].Kind() { switch k { + case reflect.String: + return s[i].String() < s[j].String() case reflect.Int32, reflect.Int64: return s[i].Int() < s[j].Int() case reflect.Uint32, reflect.Uint64: diff --git a/vendor/github.com/golang/protobuf/proto/encode.go b/vendor/github.com/golang/protobuf/proto/encode.go index c27d35f8..3abfed2c 100644 --- a/vendor/github.com/golang/protobuf/proto/encode.go +++ b/vendor/github.com/golang/protobuf/proto/encode.go @@ -37,27 +37,9 @@ package proto import ( "errors" - "fmt" "reflect" ) -// RequiredNotSetError is the error returned if Marshal is called with -// a protocol buffer struct whose required fields have not -// all been initialized. It is also the error returned if Unmarshal is -// called with an encoded protocol buffer that does not include all the -// required fields. -// -// When printed, RequiredNotSetError reports the first unset required field in a -// message. If the field cannot be precisely determined, it is reported as -// "{Unknown}". -type RequiredNotSetError struct { - field string -} - -func (e *RequiredNotSetError) Error() string { - return fmt.Sprintf("proto: required field %q not set", e.field) -} - var ( // errRepeatedHasNil is the error returned if Marshal is called with // a struct with a repeated field containing a nil element. diff --git a/vendor/github.com/golang/protobuf/proto/lib.go b/vendor/github.com/golang/protobuf/proto/lib.go index 0e2191b8..75565cc6 100644 --- a/vendor/github.com/golang/protobuf/proto/lib.go +++ b/vendor/github.com/golang/protobuf/proto/lib.go @@ -265,7 +265,6 @@ package proto import ( "encoding/json" - "errors" "fmt" "log" "reflect" @@ -274,7 +273,66 @@ import ( "sync" ) -var errInvalidUTF8 = errors.New("proto: invalid UTF-8 string") +// RequiredNotSetError is an error type returned by either Marshal or Unmarshal. +// Marshal reports this when a required field is not initialized. +// Unmarshal reports this when a required field is missing from the wire data. +type RequiredNotSetError struct{ field string } + +func (e *RequiredNotSetError) Error() string { + if e.field == "" { + return fmt.Sprintf("proto: required field not set") + } + return fmt.Sprintf("proto: required field %q not set", e.field) +} +func (e *RequiredNotSetError) RequiredNotSet() bool { + return true +} + +type invalidUTF8Error struct{ field string } + +func (e *invalidUTF8Error) Error() string { + if e.field == "" { + return "proto: invalid UTF-8 detected" + } + return fmt.Sprintf("proto: field %q contains invalid UTF-8", e.field) +} +func (e *invalidUTF8Error) InvalidUTF8() bool { + return true +} + +// errInvalidUTF8 is a sentinel error to identify fields with invalid UTF-8. +// This error should not be exposed to the external API as such errors should +// be recreated with the field information. +var errInvalidUTF8 = &invalidUTF8Error{} + +// isNonFatal reports whether the error is either a RequiredNotSet error +// or a InvalidUTF8 error. +func isNonFatal(err error) bool { + if re, ok := err.(interface{ RequiredNotSet() bool }); ok && re.RequiredNotSet() { + return true + } + if re, ok := err.(interface{ InvalidUTF8() bool }); ok && re.InvalidUTF8() { + return true + } + return false +} + +type nonFatal struct{ E error } + +// Merge merges err into nf and reports whether it was successful. +// Otherwise it returns false for any fatal non-nil errors. +func (nf *nonFatal) Merge(err error) (ok bool) { + if err == nil { + return true // not an error + } + if !isNonFatal(err) { + return false // fatal error + } + if nf.E == nil { + nf.E = err // store first instance of non-fatal error + } + return true +} // Message is implemented by generated protocol buffer messages. type Message interface { diff --git a/vendor/github.com/golang/protobuf/proto/properties.go b/vendor/github.com/golang/protobuf/proto/properties.go index f710adab..50b99b83 100644 --- a/vendor/github.com/golang/protobuf/proto/properties.go +++ b/vendor/github.com/golang/protobuf/proto/properties.go @@ -139,7 +139,7 @@ type Properties struct { Repeated bool Packed bool // relevant for repeated primitives only Enum string // set for enum types only - proto3 bool // whether this is known to be a proto3 field; set for []byte only + proto3 bool // whether this is known to be a proto3 field oneof bool // whether this is a oneof field Default string // default value @@ -148,9 +148,9 @@ type Properties struct { stype reflect.Type // set for struct types only sprop *StructProperties // set for struct types only - mtype reflect.Type // set for map types only - mkeyprop *Properties // set for map types only - mvalprop *Properties // set for map types only + mtype reflect.Type // set for map types only + MapKeyProp *Properties // set for map types only + MapValProp *Properties // set for map types only } // String formats the properties in the protobuf struct field tag style. @@ -275,16 +275,16 @@ func (p *Properties) setFieldProps(typ reflect.Type, f *reflect.StructField, loc case reflect.Map: p.mtype = t1 - p.mkeyprop = &Properties{} - p.mkeyprop.init(reflect.PtrTo(p.mtype.Key()), "Key", f.Tag.Get("protobuf_key"), nil, lockGetProp) - p.mvalprop = &Properties{} + p.MapKeyProp = &Properties{} + p.MapKeyProp.init(reflect.PtrTo(p.mtype.Key()), "Key", f.Tag.Get("protobuf_key"), nil, lockGetProp) + p.MapValProp = &Properties{} vtype := p.mtype.Elem() if vtype.Kind() != reflect.Ptr && vtype.Kind() != reflect.Slice { // The value type is not a message (*T) or bytes ([]byte), // so we need encoders for the pointer to this type. vtype = reflect.PtrTo(vtype) } - p.mvalprop.init(vtype, "Value", f.Tag.Get("protobuf_val"), nil, lockGetProp) + p.MapValProp.init(vtype, "Value", f.Tag.Get("protobuf_val"), nil, lockGetProp) } if p.stype != nil { diff --git a/vendor/github.com/golang/protobuf/proto/table_marshal.go b/vendor/github.com/golang/protobuf/proto/table_marshal.go index 0f212b30..b1679449 100644 --- a/vendor/github.com/golang/protobuf/proto/table_marshal.go +++ b/vendor/github.com/golang/protobuf/proto/table_marshal.go @@ -231,7 +231,7 @@ func (u *marshalInfo) marshal(b []byte, ptr pointer, deterministic bool) ([]byte return b, err } - var err, errreq error + var err, errLater error // The old marshaler encodes extensions at beginning. if u.extensions.IsValid() { e := ptr.offset(u.extensions).toExtensions() @@ -252,11 +252,13 @@ func (u *marshalInfo) marshal(b []byte, ptr pointer, deterministic bool) ([]byte } } for _, f := range u.fields { - if f.required && errreq == nil { + if f.required { if ptr.offset(f.field).getPointer().isNil() { // Required field is not set. // We record the error but keep going, to give a complete marshaling. - errreq = &RequiredNotSetError{f.name} + if errLater == nil { + errLater = &RequiredNotSetError{f.name} + } continue } } @@ -269,14 +271,21 @@ func (u *marshalInfo) marshal(b []byte, ptr pointer, deterministic bool) ([]byte if err1, ok := err.(*RequiredNotSetError); ok { // Required field in submessage is not set. // We record the error but keep going, to give a complete marshaling. - if errreq == nil { - errreq = &RequiredNotSetError{f.name + "." + err1.field} + if errLater == nil { + errLater = &RequiredNotSetError{f.name + "." + err1.field} } continue } if err == errRepeatedHasNil { err = errors.New("proto: repeated field " + f.name + " has nil element") } + if err == errInvalidUTF8 { + if errLater == nil { + fullName := revProtoTypes[reflect.PtrTo(u.typ)] + "." + f.name + errLater = &invalidUTF8Error{fullName} + } + continue + } return b, err } } @@ -284,7 +293,7 @@ func (u *marshalInfo) marshal(b []byte, ptr pointer, deterministic bool) ([]byte s := *ptr.offset(u.unrecognized).toBytes() b = append(b, s...) } - return b, errreq + return b, errLater } // computeMarshalInfo initializes the marshal info. @@ -530,6 +539,7 @@ func typeMarshaler(t reflect.Type, tags []string, nozero, oneof bool) (sizer, ma packed := false proto3 := false + validateUTF8 := true for i := 2; i < len(tags); i++ { if tags[i] == "packed" { packed = true @@ -538,6 +548,7 @@ func typeMarshaler(t reflect.Type, tags []string, nozero, oneof bool) (sizer, ma proto3 = true } } + validateUTF8 = validateUTF8 && proto3 switch t.Kind() { case reflect.Bool: @@ -735,6 +746,18 @@ func typeMarshaler(t reflect.Type, tags []string, nozero, oneof bool) (sizer, ma } return sizeFloat64Value, appendFloat64Value case reflect.String: + if validateUTF8 { + if pointer { + return sizeStringPtr, appendUTF8StringPtr + } + if slice { + return sizeStringSlice, appendUTF8StringSlice + } + if nozero { + return sizeStringValueNoZero, appendUTF8StringValueNoZero + } + return sizeStringValue, appendUTF8StringValue + } if pointer { return sizeStringPtr, appendStringPtr } @@ -1984,9 +2007,6 @@ func appendBoolPackedSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byt } func appendStringValue(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { v := *ptr.toString() - if !utf8.ValidString(v) { - return nil, errInvalidUTF8 - } b = appendVarint(b, wiretag) b = appendVarint(b, uint64(len(v))) b = append(b, v...) @@ -1997,9 +2017,6 @@ func appendStringValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]b if v == "" { return b, nil } - if !utf8.ValidString(v) { - return nil, errInvalidUTF8 - } b = appendVarint(b, wiretag) b = appendVarint(b, uint64(len(v))) b = append(b, v...) @@ -2011,24 +2028,83 @@ func appendStringPtr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, err return b, nil } v := *p - if !utf8.ValidString(v) { - return nil, errInvalidUTF8 - } b = appendVarint(b, wiretag) b = appendVarint(b, uint64(len(v))) b = append(b, v...) return b, nil } func appendStringSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { + s := *ptr.toStringSlice() + for _, v := range s { + b = appendVarint(b, wiretag) + b = appendVarint(b, uint64(len(v))) + b = append(b, v...) + } + return b, nil +} +func appendUTF8StringValue(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { + var invalidUTF8 bool + v := *ptr.toString() + if !utf8.ValidString(v) { + invalidUTF8 = true + } + b = appendVarint(b, wiretag) + b = appendVarint(b, uint64(len(v))) + b = append(b, v...) + if invalidUTF8 { + return b, errInvalidUTF8 + } + return b, nil +} +func appendUTF8StringValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { + var invalidUTF8 bool + v := *ptr.toString() + if v == "" { + return b, nil + } + if !utf8.ValidString(v) { + invalidUTF8 = true + } + b = appendVarint(b, wiretag) + b = appendVarint(b, uint64(len(v))) + b = append(b, v...) + if invalidUTF8 { + return b, errInvalidUTF8 + } + return b, nil +} +func appendUTF8StringPtr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { + var invalidUTF8 bool + p := *ptr.toStringPtr() + if p == nil { + return b, nil + } + v := *p + if !utf8.ValidString(v) { + invalidUTF8 = true + } + b = appendVarint(b, wiretag) + b = appendVarint(b, uint64(len(v))) + b = append(b, v...) + if invalidUTF8 { + return b, errInvalidUTF8 + } + return b, nil +} +func appendUTF8StringSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { + var invalidUTF8 bool s := *ptr.toStringSlice() for _, v := range s { if !utf8.ValidString(v) { - return nil, errInvalidUTF8 + invalidUTF8 = true } b = appendVarint(b, wiretag) b = appendVarint(b, uint64(len(v))) b = append(b, v...) } + if invalidUTF8 { + return b, errInvalidUTF8 + } return b, nil } func appendBytes(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { @@ -2107,7 +2183,8 @@ func makeGroupSliceMarshaler(u *marshalInfo) (sizer, marshaler) { }, func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) { s := ptr.getPointerSlice() - var err, errreq error + var err error + var nerr nonFatal for _, v := range s { if v.isNil() { return b, errRepeatedHasNil @@ -2115,22 +2192,14 @@ func makeGroupSliceMarshaler(u *marshalInfo) (sizer, marshaler) { b = appendVarint(b, wiretag) // start group b, err = u.marshal(b, v, deterministic) b = appendVarint(b, wiretag+(WireEndGroup-WireStartGroup)) // end group - if err != nil { - if _, ok := err.(*RequiredNotSetError); ok { - // Required field in submessage is not set. - // We record the error but keep going, to give a complete marshaling. - if errreq == nil { - errreq = err - } - continue - } + if !nerr.Merge(err) { if err == ErrNil { err = errRepeatedHasNil } return b, err } } - return b, errreq + return b, nerr.E } } @@ -2174,7 +2243,8 @@ func makeMessageSliceMarshaler(u *marshalInfo) (sizer, marshaler) { }, func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) { s := ptr.getPointerSlice() - var err, errreq error + var err error + var nerr nonFatal for _, v := range s { if v.isNil() { return b, errRepeatedHasNil @@ -2184,22 +2254,14 @@ func makeMessageSliceMarshaler(u *marshalInfo) (sizer, marshaler) { b = appendVarint(b, uint64(siz)) b, err = u.marshal(b, v, deterministic) - if err != nil { - if _, ok := err.(*RequiredNotSetError); ok { - // Required field in submessage is not set. - // We record the error but keep going, to give a complete marshaling. - if errreq == nil { - errreq = err - } - continue - } + if !nerr.Merge(err) { if err == ErrNil { err = errRepeatedHasNil } return b, err } } - return b, errreq + return b, nerr.E } } @@ -2223,6 +2285,25 @@ func makeMapMarshaler(f *reflect.StructField) (sizer, marshaler) { // value. // Key cannot be pointer-typed. valIsPtr := valType.Kind() == reflect.Ptr + + // If value is a message with nested maps, calling + // valSizer in marshal may be quadratic. We should use + // cached version in marshal (but not in size). + // If value is not message type, we don't have size cache, + // but it cannot be nested either. Just use valSizer. + valCachedSizer := valSizer + if valIsPtr && valType.Elem().Kind() == reflect.Struct { + u := getMarshalInfo(valType.Elem()) + valCachedSizer = func(ptr pointer, tagsize int) int { + // Same as message sizer, but use cache. + p := ptr.getPointer() + if p.isNil() { + return 0 + } + siz := u.cachedsize(p) + return siz + SizeVarint(uint64(siz)) + tagsize + } + } return func(ptr pointer, tagsize int) int { m := ptr.asPointerTo(t).Elem() // the map n := 0 @@ -2243,24 +2324,26 @@ func makeMapMarshaler(f *reflect.StructField) (sizer, marshaler) { if len(keys) > 1 && deterministic { sort.Sort(mapKeys(keys)) } + + var nerr nonFatal for _, k := range keys { ki := k.Interface() vi := m.MapIndex(k).Interface() kaddr := toAddrPointer(&ki, false) // pointer to key vaddr := toAddrPointer(&vi, valIsPtr) // pointer to value b = appendVarint(b, tag) - siz := keySizer(kaddr, 1) + valSizer(vaddr, 1) // tag of key = 1 (size=1), tag of val = 2 (size=1) + siz := keySizer(kaddr, 1) + valCachedSizer(vaddr, 1) // tag of key = 1 (size=1), tag of val = 2 (size=1) b = appendVarint(b, uint64(siz)) b, err = keyMarshaler(b, kaddr, keyWireTag, deterministic) - if err != nil { + if !nerr.Merge(err) { return b, err } b, err = valMarshaler(b, vaddr, valWireTag, deterministic) - if err != nil && err != ErrNil { // allow nil value in map + if err != ErrNil && !nerr.Merge(err) { // allow nil value in map return b, err } } - return b, nil + return b, nerr.E } } @@ -2333,6 +2416,7 @@ func (u *marshalInfo) appendExtensions(b []byte, ext *XXX_InternalExtensions, de defer mu.Unlock() var err error + var nerr nonFatal // Fast-path for common cases: zero or one extensions. // Don't bother sorting the keys. @@ -2352,11 +2436,11 @@ func (u *marshalInfo) appendExtensions(b []byte, ext *XXX_InternalExtensions, de v := e.value p := toAddrPointer(&v, ei.isptr) b, err = ei.marshaler(b, p, ei.wiretag, deterministic) - if err != nil { + if !nerr.Merge(err) { return b, err } } - return b, nil + return b, nerr.E } // Sort the keys to provide a deterministic encoding. @@ -2383,11 +2467,11 @@ func (u *marshalInfo) appendExtensions(b []byte, ext *XXX_InternalExtensions, de v := e.value p := toAddrPointer(&v, ei.isptr) b, err = ei.marshaler(b, p, ei.wiretag, deterministic) - if err != nil { + if !nerr.Merge(err) { return b, err } } - return b, nil + return b, nerr.E } // message set format is: @@ -2444,6 +2528,7 @@ func (u *marshalInfo) appendMessageSet(b []byte, ext *XXX_InternalExtensions, de defer mu.Unlock() var err error + var nerr nonFatal // Fast-path for common cases: zero or one extensions. // Don't bother sorting the keys. @@ -2470,12 +2555,12 @@ func (u *marshalInfo) appendMessageSet(b []byte, ext *XXX_InternalExtensions, de v := e.value p := toAddrPointer(&v, ei.isptr) b, err = ei.marshaler(b, p, 3<<3|WireBytes, deterministic) - if err != nil { + if !nerr.Merge(err) { return b, err } b = append(b, 1<<3|WireEndGroup) } - return b, nil + return b, nerr.E } // Sort the keys to provide a deterministic encoding. @@ -2509,11 +2594,11 @@ func (u *marshalInfo) appendMessageSet(b []byte, ext *XXX_InternalExtensions, de p := toAddrPointer(&v, ei.isptr) b, err = ei.marshaler(b, p, 3<<3|WireBytes, deterministic) b = append(b, 1<<3|WireEndGroup) - if err != nil { + if !nerr.Merge(err) { return b, err } } - return b, nil + return b, nerr.E } // sizeV1Extensions computes the size of encoded data for a V1-API extension field. @@ -2556,6 +2641,7 @@ func (u *marshalInfo) appendV1Extensions(b []byte, m map[int32]Extension, determ sort.Ints(keys) var err error + var nerr nonFatal for _, k := range keys { e := m[int32(k)] if e.value == nil || e.desc == nil { @@ -2572,11 +2658,11 @@ func (u *marshalInfo) appendV1Extensions(b []byte, m map[int32]Extension, determ v := e.value p := toAddrPointer(&v, ei.isptr) b, err = ei.marshaler(b, p, ei.wiretag, deterministic) - if err != nil { + if !nerr.Merge(err) { return b, err } } - return b, nil + return b, nerr.E } // newMarshaler is the interface representing objects that can marshal themselves. diff --git a/vendor/github.com/golang/protobuf/proto/table_unmarshal.go b/vendor/github.com/golang/protobuf/proto/table_unmarshal.go index 55f0340a..ebf1caa5 100644 --- a/vendor/github.com/golang/protobuf/proto/table_unmarshal.go +++ b/vendor/github.com/golang/protobuf/proto/table_unmarshal.go @@ -97,6 +97,8 @@ type unmarshalFieldInfo struct { // if a required field, contains a single set bit at this field's index in the required field list. reqMask uint64 + + name string // name of the field, for error reporting } var ( @@ -136,8 +138,8 @@ func (u *unmarshalInfo) unmarshal(m pointer, b []byte) error { if u.isMessageSet { return UnmarshalMessageSet(b, m.offset(u.extensions).toExtensions()) } - var reqMask uint64 // bitmask of required fields we've seen. - var rnse *RequiredNotSetError // an instance of a RequiredNotSetError returned by a submessage. + var reqMask uint64 // bitmask of required fields we've seen. + var errLater error for len(b) > 0 { // Read tag and wire type. // Special case 1 and 2 byte varints. @@ -176,11 +178,20 @@ func (u *unmarshalInfo) unmarshal(m pointer, b []byte) error { if r, ok := err.(*RequiredNotSetError); ok { // Remember this error, but keep parsing. We need to produce // a full parse even if a required field is missing. - rnse = r + if errLater == nil { + errLater = r + } reqMask |= f.reqMask continue } if err != errInternalBadWireType { + if err == errInvalidUTF8 { + if errLater == nil { + fullName := revProtoTypes[reflect.PtrTo(u.typ)] + "." + f.name + errLater = &invalidUTF8Error{fullName} + } + continue + } return err } // Fragments with bad wire type are treated as unknown fields. @@ -239,20 +250,16 @@ func (u *unmarshalInfo) unmarshal(m pointer, b []byte) error { emap[int32(tag)] = e } } - if rnse != nil { - // A required field of a submessage/group is missing. Return that error. - return rnse - } - if reqMask != u.reqMask { + if reqMask != u.reqMask && errLater == nil { // A required field of this message is missing. for _, n := range u.reqFields { if reqMask&1 == 0 { - return &RequiredNotSetError{n} + errLater = &RequiredNotSetError{n} } reqMask >>= 1 } } - return nil + return errLater } // computeUnmarshalInfo fills in u with information for use @@ -351,7 +358,7 @@ func (u *unmarshalInfo) computeUnmarshalInfo() { } // Store the info in the correct slot in the message. - u.setTag(tag, toField(&f), unmarshal, reqMask) + u.setTag(tag, toField(&f), unmarshal, reqMask, name) } // Find any types associated with oneof fields. @@ -366,10 +373,17 @@ func (u *unmarshalInfo) computeUnmarshalInfo() { f := typ.Field(0) // oneof implementers have one field baseUnmarshal := fieldUnmarshaler(&f) - tagstr := strings.Split(f.Tag.Get("protobuf"), ",")[1] - tag, err := strconv.Atoi(tagstr) + tags := strings.Split(f.Tag.Get("protobuf"), ",") + fieldNum, err := strconv.Atoi(tags[1]) if err != nil { - panic("protobuf tag field not an integer: " + tagstr) + panic("protobuf tag field not an integer: " + tags[1]) + } + var name string + for _, tag := range tags { + if strings.HasPrefix(tag, "name=") { + name = strings.TrimPrefix(tag, "name=") + break + } } // Find the oneof field that this struct implements. @@ -380,7 +394,7 @@ func (u *unmarshalInfo) computeUnmarshalInfo() { // That lets us know where this struct should be stored // when we encounter it during unmarshaling. unmarshal := makeUnmarshalOneof(typ, of.ityp, baseUnmarshal) - u.setTag(tag, of.field, unmarshal, 0) + u.setTag(fieldNum, of.field, unmarshal, 0, name) } } } @@ -401,7 +415,7 @@ func (u *unmarshalInfo) computeUnmarshalInfo() { // [0 0] is [tag=0/wiretype=varint varint-encoded-0]. u.setTag(0, zeroField, func(b []byte, f pointer, w int) ([]byte, error) { return nil, fmt.Errorf("proto: %s: illegal tag 0 (wire type %d)", t, w) - }, 0) + }, 0, "") // Set mask for required field check. u.reqMask = uint64(1)<= 0 && (tag < 16 || tag < 2*n) { // TODO: what are the right numbers here? for len(u.dense) <= tag { @@ -442,11 +457,17 @@ func typeUnmarshaler(t reflect.Type, tags string) unmarshaler { tagArray := strings.Split(tags, ",") encoding := tagArray[0] name := "unknown" + proto3 := false + validateUTF8 := true for _, tag := range tagArray[3:] { if strings.HasPrefix(tag, "name=") { name = tag[5:] } + if tag == "proto3" { + proto3 = true + } } + validateUTF8 = validateUTF8 && proto3 // Figure out packaging (pointer, slice, or both) slice := false @@ -594,6 +615,15 @@ func typeUnmarshaler(t reflect.Type, tags string) unmarshaler { } return unmarshalBytesValue case reflect.String: + if validateUTF8 { + if pointer { + return unmarshalUTF8StringPtr + } + if slice { + return unmarshalUTF8StringSlice + } + return unmarshalUTF8StringValue + } if pointer { return unmarshalStringPtr } @@ -1448,9 +1478,6 @@ func unmarshalStringValue(b []byte, f pointer, w int) ([]byte, error) { return nil, io.ErrUnexpectedEOF } v := string(b[:x]) - if !utf8.ValidString(v) { - return nil, errInvalidUTF8 - } *f.toString() = v return b[x:], nil } @@ -1468,9 +1495,6 @@ func unmarshalStringPtr(b []byte, f pointer, w int) ([]byte, error) { return nil, io.ErrUnexpectedEOF } v := string(b[:x]) - if !utf8.ValidString(v) { - return nil, errInvalidUTF8 - } *f.toStringPtr() = &v return b[x:], nil } @@ -1488,14 +1512,72 @@ func unmarshalStringSlice(b []byte, f pointer, w int) ([]byte, error) { return nil, io.ErrUnexpectedEOF } v := string(b[:x]) - if !utf8.ValidString(v) { - return nil, errInvalidUTF8 - } s := f.toStringSlice() *s = append(*s, v) return b[x:], nil } +func unmarshalUTF8StringValue(b []byte, f pointer, w int) ([]byte, error) { + if w != WireBytes { + return b, errInternalBadWireType + } + x, n := decodeVarint(b) + if n == 0 { + return nil, io.ErrUnexpectedEOF + } + b = b[n:] + if x > uint64(len(b)) { + return nil, io.ErrUnexpectedEOF + } + v := string(b[:x]) + *f.toString() = v + if !utf8.ValidString(v) { + return b[x:], errInvalidUTF8 + } + return b[x:], nil +} + +func unmarshalUTF8StringPtr(b []byte, f pointer, w int) ([]byte, error) { + if w != WireBytes { + return b, errInternalBadWireType + } + x, n := decodeVarint(b) + if n == 0 { + return nil, io.ErrUnexpectedEOF + } + b = b[n:] + if x > uint64(len(b)) { + return nil, io.ErrUnexpectedEOF + } + v := string(b[:x]) + *f.toStringPtr() = &v + if !utf8.ValidString(v) { + return b[x:], errInvalidUTF8 + } + return b[x:], nil +} + +func unmarshalUTF8StringSlice(b []byte, f pointer, w int) ([]byte, error) { + if w != WireBytes { + return b, errInternalBadWireType + } + x, n := decodeVarint(b) + if n == 0 { + return nil, io.ErrUnexpectedEOF + } + b = b[n:] + if x > uint64(len(b)) { + return nil, io.ErrUnexpectedEOF + } + v := string(b[:x]) + s := f.toStringSlice() + *s = append(*s, v) + if !utf8.ValidString(v) { + return b[x:], errInvalidUTF8 + } + return b[x:], nil +} + var emptyBuf [0]byte func unmarshalBytesValue(b []byte, f pointer, w int) ([]byte, error) { @@ -1674,6 +1756,7 @@ func makeUnmarshalMap(f *reflect.StructField) unmarshaler { // Maps will be somewhat slow. Oh well. // Read key and value from data. + var nerr nonFatal k := reflect.New(kt) v := reflect.New(vt) for len(b) > 0 { @@ -1694,7 +1777,7 @@ func makeUnmarshalMap(f *reflect.StructField) unmarshaler { err = errInternalBadWireType // skip unknown tag } - if err == nil { + if nerr.Merge(err) { continue } if err != errInternalBadWireType { @@ -1717,7 +1800,7 @@ func makeUnmarshalMap(f *reflect.StructField) unmarshaler { // Insert into map. m.SetMapIndex(k.Elem(), v.Elem()) - return r, nil + return r, nerr.E } } @@ -1743,15 +1826,16 @@ func makeUnmarshalOneof(typ, ityp reflect.Type, unmarshal unmarshaler) unmarshal // Unmarshal data into holder. // We unmarshal into the first field of the holder object. var err error + var nerr nonFatal b, err = unmarshal(b, valToPointer(v).offset(field0), w) - if err != nil { + if !nerr.Merge(err) { return nil, err } // Write pointer to holder into target field. f.asPointerTo(ityp).Elem().Set(v) - return b, nil + return b, nerr.E } } diff --git a/vendor/github.com/golang/protobuf/proto/text.go b/vendor/github.com/golang/protobuf/proto/text.go index 2205fdaa..1aaee725 100644 --- a/vendor/github.com/golang/protobuf/proto/text.go +++ b/vendor/github.com/golang/protobuf/proto/text.go @@ -353,7 +353,7 @@ func (tm *TextMarshaler) writeStruct(w *textWriter, sv reflect.Value) error { return err } } - if err := tm.writeAny(w, key, props.mkeyprop); err != nil { + if err := tm.writeAny(w, key, props.MapKeyProp); err != nil { return err } if err := w.WriteByte('\n'); err != nil { @@ -370,7 +370,7 @@ func (tm *TextMarshaler) writeStruct(w *textWriter, sv reflect.Value) error { return err } } - if err := tm.writeAny(w, val, props.mvalprop); err != nil { + if err := tm.writeAny(w, val, props.MapValProp); err != nil { return err } if err := w.WriteByte('\n'); err != nil { diff --git a/vendor/github.com/golang/protobuf/proto/text_parser.go b/vendor/github.com/golang/protobuf/proto/text_parser.go index 0685bae3..bb55a3af 100644 --- a/vendor/github.com/golang/protobuf/proto/text_parser.go +++ b/vendor/github.com/golang/protobuf/proto/text_parser.go @@ -630,17 +630,17 @@ func (p *textParser) readStruct(sv reflect.Value, terminator string) error { if err := p.consumeToken(":"); err != nil { return err } - if err := p.readAny(key, props.mkeyprop); err != nil { + if err := p.readAny(key, props.MapKeyProp); err != nil { return err } if err := p.consumeOptionalSeparator(); err != nil { return err } case "value": - if err := p.checkForColon(props.mvalprop, dst.Type().Elem()); err != nil { + if err := p.checkForColon(props.MapValProp, dst.Type().Elem()); err != nil { return err } - if err := p.readAny(val, props.mvalprop); err != nil { + if err := p.readAny(val, props.MapValProp); err != nil { return err } if err := p.consumeOptionalSeparator(); err != nil { diff --git a/vendor/github.com/golang/protobuf/ptypes/any.go b/vendor/github.com/golang/protobuf/ptypes/any.go index b2af97f4..70276e8f 100644 --- a/vendor/github.com/golang/protobuf/ptypes/any.go +++ b/vendor/github.com/golang/protobuf/ptypes/any.go @@ -130,10 +130,12 @@ func UnmarshalAny(any *any.Any, pb proto.Message) error { // Is returns true if any value contains a given message type. func Is(any *any.Any, pb proto.Message) bool { - aname, err := AnyMessageName(any) - if err != nil { + // The following is equivalent to AnyMessageName(any) == proto.MessageName(pb), + // but it avoids scanning TypeUrl for the slash. + if any == nil { return false } - - return aname == proto.MessageName(pb) + name := proto.MessageName(pb) + prefix := len(any.TypeUrl) - len(name) + return prefix >= 1 && any.TypeUrl[prefix-1] == '/' && any.TypeUrl[prefix:] == name } diff --git a/vendor/github.com/golang/protobuf/ptypes/any/any.pb.go b/vendor/github.com/golang/protobuf/ptypes/any/any.pb.go index f67edc7d..e3c56d3f 100644 --- a/vendor/github.com/golang/protobuf/ptypes/any/any.pb.go +++ b/vendor/github.com/golang/protobuf/ptypes/any/any.pb.go @@ -121,7 +121,7 @@ type Any struct { // Schemes other than `http`, `https` (or the empty scheme) might be // used with implementation specific semantics. // - TypeUrl string `protobuf:"bytes,1,opt,name=type_url,json=typeUrl" json:"type_url,omitempty"` + TypeUrl string `protobuf:"bytes,1,opt,name=type_url,json=typeUrl,proto3" json:"type_url,omitempty"` // Must be a valid serialized protocol buffer of the above specified type. Value []byte `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` diff --git a/vendor/github.com/golang/protobuf/ptypes/duration/duration.pb.go b/vendor/github.com/golang/protobuf/ptypes/duration/duration.pb.go index 4d75473b..a7beb2c4 100644 --- a/vendor/github.com/golang/protobuf/ptypes/duration/duration.pb.go +++ b/vendor/github.com/golang/protobuf/ptypes/duration/duration.pb.go @@ -82,14 +82,14 @@ type Duration struct { // Signed seconds of the span of time. Must be from -315,576,000,000 // to +315,576,000,000 inclusive. Note: these bounds are computed from: // 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years - Seconds int64 `protobuf:"varint,1,opt,name=seconds" json:"seconds,omitempty"` + Seconds int64 `protobuf:"varint,1,opt,name=seconds,proto3" json:"seconds,omitempty"` // Signed fractions of a second at nanosecond resolution of the span // of time. Durations less than one second are represented with a 0 // `seconds` field and a positive or negative `nanos` field. For durations // of one second or more, a non-zero value for the `nanos` field must be // of the same sign as the `seconds` field. Must be from -999,999,999 // to +999,999,999 inclusive. - Nanos int32 `protobuf:"varint,2,opt,name=nanos" json:"nanos,omitempty"` + Nanos int32 `protobuf:"varint,2,opt,name=nanos,proto3" json:"nanos,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` diff --git a/vendor/github.com/golang/protobuf/ptypes/struct/struct.pb.go b/vendor/github.com/golang/protobuf/ptypes/struct/struct.pb.go index 442c0e09..ee6382e1 100644 --- a/vendor/github.com/golang/protobuf/ptypes/struct/struct.pb.go +++ b/vendor/github.com/golang/protobuf/ptypes/struct/struct.pb.go @@ -54,7 +54,7 @@ func (NullValue) XXX_WellKnownType() string { return "NullValue" } // The JSON representation for `Struct` is JSON object. type Struct struct { // Unordered map of dynamically typed values. - Fields map[string]*Value `protobuf:"bytes,1,rep,name=fields" json:"fields,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + Fields map[string]*Value `protobuf:"bytes,1,rep,name=fields,proto3" json:"fields,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -144,30 +144,40 @@ type isValue_Kind interface { } type Value_NullValue struct { - NullValue NullValue `protobuf:"varint,1,opt,name=null_value,json=nullValue,enum=google.protobuf.NullValue,oneof"` -} -type Value_NumberValue struct { - NumberValue float64 `protobuf:"fixed64,2,opt,name=number_value,json=numberValue,oneof"` -} -type Value_StringValue struct { - StringValue string `protobuf:"bytes,3,opt,name=string_value,json=stringValue,oneof"` -} -type Value_BoolValue struct { - BoolValue bool `protobuf:"varint,4,opt,name=bool_value,json=boolValue,oneof"` -} -type Value_StructValue struct { - StructValue *Struct `protobuf:"bytes,5,opt,name=struct_value,json=structValue,oneof"` -} -type Value_ListValue struct { - ListValue *ListValue `protobuf:"bytes,6,opt,name=list_value,json=listValue,oneof"` + NullValue NullValue `protobuf:"varint,1,opt,name=null_value,json=nullValue,proto3,enum=google.protobuf.NullValue,oneof"` } -func (*Value_NullValue) isValue_Kind() {} +type Value_NumberValue struct { + NumberValue float64 `protobuf:"fixed64,2,opt,name=number_value,json=numberValue,proto3,oneof"` +} + +type Value_StringValue struct { + StringValue string `protobuf:"bytes,3,opt,name=string_value,json=stringValue,proto3,oneof"` +} + +type Value_BoolValue struct { + BoolValue bool `protobuf:"varint,4,opt,name=bool_value,json=boolValue,proto3,oneof"` +} + +type Value_StructValue struct { + StructValue *Struct `protobuf:"bytes,5,opt,name=struct_value,json=structValue,proto3,oneof"` +} + +type Value_ListValue struct { + ListValue *ListValue `protobuf:"bytes,6,opt,name=list_value,json=listValue,proto3,oneof"` +} + +func (*Value_NullValue) isValue_Kind() {} + func (*Value_NumberValue) isValue_Kind() {} + func (*Value_StringValue) isValue_Kind() {} -func (*Value_BoolValue) isValue_Kind() {} + +func (*Value_BoolValue) isValue_Kind() {} + func (*Value_StructValue) isValue_Kind() {} -func (*Value_ListValue) isValue_Kind() {} + +func (*Value_ListValue) isValue_Kind() {} func (m *Value) GetKind() isValue_Kind { if m != nil { @@ -358,7 +368,7 @@ func _Value_OneofSizer(msg proto.Message) (n int) { // The JSON representation for `ListValue` is JSON array. type ListValue struct { // Repeated field of dynamically typed values. - Values []*Value `protobuf:"bytes,1,rep,name=values" json:"values,omitempty"` + Values []*Value `protobuf:"bytes,1,rep,name=values,proto3" json:"values,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` diff --git a/vendor/github.com/golang/protobuf/ptypes/timestamp/timestamp.pb.go b/vendor/github.com/golang/protobuf/ptypes/timestamp/timestamp.pb.go index e9c22228..8e76ae97 100644 --- a/vendor/github.com/golang/protobuf/ptypes/timestamp/timestamp.pb.go +++ b/vendor/github.com/golang/protobuf/ptypes/timestamp/timestamp.pb.go @@ -100,12 +100,12 @@ type Timestamp struct { // Represents seconds of UTC time since Unix epoch // 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to // 9999-12-31T23:59:59Z inclusive. - Seconds int64 `protobuf:"varint,1,opt,name=seconds" json:"seconds,omitempty"` + Seconds int64 `protobuf:"varint,1,opt,name=seconds,proto3" json:"seconds,omitempty"` // Non-negative fractions of a second at nanosecond resolution. Negative // second values with fractions must still have non-negative nanos values // that count forward in time. Must be from 0 to 999,999,999 // inclusive. - Nanos int32 `protobuf:"varint,2,opt,name=nanos" json:"nanos,omitempty"` + Nanos int32 `protobuf:"varint,2,opt,name=nanos,proto3" json:"nanos,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` diff --git a/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/context.go b/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/context.go index a745074c..896057e1 100644 --- a/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/context.go +++ b/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/context.go @@ -1,14 +1,16 @@ package runtime import ( + "context" + "encoding/base64" "fmt" "net" "net/http" + "net/textproto" "strconv" "strings" "time" - "context" "google.golang.org/grpc/codes" "google.golang.org/grpc/grpclog" "google.golang.org/grpc/metadata" @@ -19,7 +21,8 @@ import ( // parameters to or from a gRPC call. const MetadataHeaderPrefix = "Grpc-Metadata-" -// MetadataPrefix is the prefix for grpc-gateway supplied custom metadata fields. +// MetadataPrefix is prepended to permanent HTTP header keys (as specified +// by the IANA) when added to the gRPC context. const MetadataPrefix = "grpcgateway-" // MetadataTrailerPrefix is prepended to gRPC metadata as it is converted to @@ -27,6 +30,7 @@ const MetadataPrefix = "grpcgateway-" const MetadataTrailerPrefix = "Grpc-Trailer-" const metadataGrpcTimeout = "Grpc-Timeout" +const metadataHeaderBinarySuffix = "-Bin" const xForwardedFor = "X-Forwarded-For" const xForwardedHost = "X-Forwarded-Host" @@ -37,6 +41,14 @@ var ( DefaultContextTimeout = 0 * time.Second ) +func decodeBinHeader(v string) ([]byte, error) { + if len(v)%4 == 0 { + // Input was padded, or padding was not necessary. + return base64.StdEncoding.DecodeString(v) + } + return base64.RawStdEncoding.DecodeString(v) +} + /* AnnotateContext adds context information such as metadata from the request. @@ -57,11 +69,22 @@ func AnnotateContext(ctx context.Context, mux *ServeMux, req *http.Request) (con for key, vals := range req.Header { for _, val := range vals { + key = textproto.CanonicalMIMEHeaderKey(key) // For backwards-compatibility, pass through 'authorization' header with no prefix. - if strings.ToLower(key) == "authorization" { + if key == "Authorization" { pairs = append(pairs, "authorization", val) } if h, ok := mux.incomingHeaderMatcher(key); ok { + // Handles "-bin" metadata in grpc, since grpc will do another base64 + // encode before sending to server, we need to decode it first. + if strings.HasSuffix(key, metadataHeaderBinarySuffix) { + b, err := decodeBinHeader(val) + if err != nil { + return nil, status.Errorf(codes.InvalidArgument, "invalid binary header %s: %s", key, err) + } + + val = string(b) + } pairs = append(pairs, h, val) } } @@ -80,7 +103,7 @@ func AnnotateContext(ctx context.Context, mux *ServeMux, req *http.Request) (con pairs = append(pairs, strings.ToLower(xForwardedFor), fmt.Sprintf("%s, %s", fwd, remoteIP)) } } else { - grpclog.Printf("invalid remote addr: %s", addr) + grpclog.Infof("invalid remote addr: %s", addr) } } diff --git a/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/convert.go b/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/convert.go index 903ae234..bd54ba12 100644 --- a/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/convert.go +++ b/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/convert.go @@ -2,7 +2,9 @@ package runtime import ( "encoding/base64" + "fmt" "strconv" + "strings" "github.com/golang/protobuf/jsonpb" "github.com/golang/protobuf/ptypes/duration" @@ -15,16 +17,52 @@ func String(val string) (string, error) { return val, nil } +// StringSlice converts 'val' where individual strings are separated by +// 'sep' into a string slice. +func StringSlice(val, sep string) ([]string, error) { + return strings.Split(val, sep), nil +} + // Bool converts the given string representation of a boolean value into bool. func Bool(val string) (bool, error) { return strconv.ParseBool(val) } +// BoolSlice converts 'val' where individual booleans are separated by +// 'sep' into a bool slice. +func BoolSlice(val, sep string) ([]bool, error) { + s := strings.Split(val, sep) + values := make([]bool, len(s)) + for i, v := range s { + value, err := Bool(v) + if err != nil { + return values, err + } + values[i] = value + } + return values, nil +} + // Float64 converts the given string representation into representation of a floating point number into float64. func Float64(val string) (float64, error) { return strconv.ParseFloat(val, 64) } +// Float64Slice converts 'val' where individual floating point numbers are separated by +// 'sep' into a float64 slice. +func Float64Slice(val, sep string) ([]float64, error) { + s := strings.Split(val, sep) + values := make([]float64, len(s)) + for i, v := range s { + value, err := Float64(v) + if err != nil { + return values, err + } + values[i] = value + } + return values, nil +} + // Float32 converts the given string representation of a floating point number into float32. func Float32(val string) (float32, error) { f, err := strconv.ParseFloat(val, 32) @@ -34,11 +72,41 @@ func Float32(val string) (float32, error) { return float32(f), nil } +// Float32Slice converts 'val' where individual floating point numbers are separated by +// 'sep' into a float32 slice. +func Float32Slice(val, sep string) ([]float32, error) { + s := strings.Split(val, sep) + values := make([]float32, len(s)) + for i, v := range s { + value, err := Float32(v) + if err != nil { + return values, err + } + values[i] = value + } + return values, nil +} + // Int64 converts the given string representation of an integer into int64. func Int64(val string) (int64, error) { return strconv.ParseInt(val, 0, 64) } +// Int64Slice converts 'val' where individual integers are separated by +// 'sep' into a int64 slice. +func Int64Slice(val, sep string) ([]int64, error) { + s := strings.Split(val, sep) + values := make([]int64, len(s)) + for i, v := range s { + value, err := Int64(v) + if err != nil { + return values, err + } + values[i] = value + } + return values, nil +} + // Int32 converts the given string representation of an integer into int32. func Int32(val string) (int32, error) { i, err := strconv.ParseInt(val, 0, 32) @@ -48,11 +116,41 @@ func Int32(val string) (int32, error) { return int32(i), nil } +// Int32Slice converts 'val' where individual integers are separated by +// 'sep' into a int32 slice. +func Int32Slice(val, sep string) ([]int32, error) { + s := strings.Split(val, sep) + values := make([]int32, len(s)) + for i, v := range s { + value, err := Int32(v) + if err != nil { + return values, err + } + values[i] = value + } + return values, nil +} + // Uint64 converts the given string representation of an integer into uint64. func Uint64(val string) (uint64, error) { return strconv.ParseUint(val, 0, 64) } +// Uint64Slice converts 'val' where individual integers are separated by +// 'sep' into a uint64 slice. +func Uint64Slice(val, sep string) ([]uint64, error) { + s := strings.Split(val, sep) + values := make([]uint64, len(s)) + for i, v := range s { + value, err := Uint64(v) + if err != nil { + return values, err + } + values[i] = value + } + return values, nil +} + // Uint32 converts the given string representation of an integer into uint32. func Uint32(val string) (uint32, error) { i, err := strconv.ParseUint(val, 0, 32) @@ -62,16 +160,49 @@ func Uint32(val string) (uint32, error) { return uint32(i), nil } +// Uint32Slice converts 'val' where individual integers are separated by +// 'sep' into a uint32 slice. +func Uint32Slice(val, sep string) ([]uint32, error) { + s := strings.Split(val, sep) + values := make([]uint32, len(s)) + for i, v := range s { + value, err := Uint32(v) + if err != nil { + return values, err + } + values[i] = value + } + return values, nil +} + // Bytes converts the given string representation of a byte sequence into a slice of bytes // A bytes sequence is encoded in URL-safe base64 without padding func Bytes(val string) ([]byte, error) { b, err := base64.StdEncoding.DecodeString(val) if err != nil { - return nil, err + b, err = base64.URLEncoding.DecodeString(val) + if err != nil { + return nil, err + } } return b, nil } +// BytesSlice converts 'val' where individual bytes sequences, encoded in URL-safe +// base64 without padding, are separated by 'sep' into a slice of bytes slices slice. +func BytesSlice(val, sep string) ([][]byte, error) { + s := strings.Split(val, sep) + values := make([][]byte, len(s)) + for i, v := range s { + value, err := Bytes(v) + if err != nil { + return values, err + } + values[i] = value + } + return values, nil +} + // Timestamp converts the given RFC3339 formatted string into a timestamp.Timestamp. func Timestamp(val string) (*timestamp.Timestamp, error) { var r *timestamp.Timestamp @@ -85,3 +216,39 @@ func Duration(val string) (*duration.Duration, error) { err := jsonpb.UnmarshalString(val, r) return r, err } + +// Enum converts the given string into an int32 that should be type casted into the +// correct enum proto type. +func Enum(val string, enumValMap map[string]int32) (int32, error) { + e, ok := enumValMap[val] + if ok { + return e, nil + } + + i, err := Int32(val) + if err != nil { + return 0, fmt.Errorf("%s is not valid", val) + } + for _, v := range enumValMap { + if v == i { + return i, nil + } + } + return 0, fmt.Errorf("%s is not valid", val) +} + +// EnumSlice converts 'val' where individual enums are separated by 'sep' +// into a int32 slice. Each individual int32 should be type casted into the +// correct enum proto type. +func EnumSlice(val, sep string, enumValMap map[string]int32) ([]int32, error) { + s := strings.Split(val, sep) + values := make([]int32, len(s)) + for i, v := range s { + value, err := Enum(v, enumValMap) + if err != nil { + return values, err + } + values[i] = value + } + return values, nil +} diff --git a/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/errors.go b/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/errors.go index 0e2bdf44..b39f55ea 100644 --- a/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/errors.go +++ b/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/errors.go @@ -6,7 +6,6 @@ import ( "net/http" "github.com/golang/protobuf/proto" - "github.com/golang/protobuf/ptypes" "github.com/golang/protobuf/ptypes/any" "google.golang.org/grpc/codes" "google.golang.org/grpc/grpclog" @@ -53,7 +52,7 @@ func HTTPStatusFromCode(code codes.Code) int { return http.StatusInternalServerError } - grpclog.Printf("Unknown gRPC error code: %v", code) + grpclog.Infof("Unknown gRPC error code: %v", code) return http.StatusInternalServerError } @@ -67,6 +66,10 @@ var ( type errorBody struct { Error string `protobuf:"bytes,1,name=error" json:"error"` + // This is to make the error more compatible with users that expect errors to be Status objects: + // https://github.com/grpc/grpc/blob/master/src/proto/grpc/status/status.proto + // It should be the exact same message as the Error field. + Message string `protobuf:"bytes,1,name=message" json:"message"` Code int32 `protobuf:"varint,2,name=code" json:"code"` Details []*any.Any `protobuf:"bytes,3,rep,name=details" json:"details,omitempty"` } @@ -94,34 +97,25 @@ func DefaultHTTPError(ctx context.Context, mux *ServeMux, marshaler Marshaler, w } body := &errorBody{ - Error: s.Message(), - Code: int32(s.Code()), - } - - for _, detail := range s.Details() { - if det, ok := detail.(proto.Message); ok { - a, err := ptypes.MarshalAny(det) - if err != nil { - grpclog.Printf("Failed to marshal any: %v", err) - } else { - body.Details = append(body.Details, a) - } - } + Error: s.Message(), + Message: s.Message(), + Code: int32(s.Code()), + Details: s.Proto().GetDetails(), } buf, merr := marshaler.Marshal(body) if merr != nil { - grpclog.Printf("Failed to marshal error message %q: %v", body, merr) + grpclog.Infof("Failed to marshal error message %q: %v", body, merr) w.WriteHeader(http.StatusInternalServerError) if _, err := io.WriteString(w, fallback); err != nil { - grpclog.Printf("Failed to write response: %v", err) + grpclog.Infof("Failed to write response: %v", err) } return } md, ok := ServerMetadataFromContext(ctx) if !ok { - grpclog.Printf("Failed to extract ServerMetadata from context") + grpclog.Infof("Failed to extract ServerMetadata from context") } handleForwardResponseServerMetadata(w, mux, md) @@ -129,7 +123,7 @@ func DefaultHTTPError(ctx context.Context, mux *ServeMux, marshaler Marshaler, w st := HTTPStatusFromCode(s.Code()) w.WriteHeader(st) if _, err := w.Write(buf); err != nil { - grpclog.Printf("Failed to write response: %v", err) + grpclog.Infof("Failed to write response: %v", err) } handleForwardResponseTrailer(w, md) diff --git a/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/handler.go b/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/handler.go index 1b3c6503..8ad9d766 100644 --- a/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/handler.go +++ b/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/handler.go @@ -19,14 +19,14 @@ import ( func ForwardResponseStream(ctx context.Context, mux *ServeMux, marshaler Marshaler, w http.ResponseWriter, req *http.Request, recv func() (proto.Message, error), opts ...func(context.Context, http.ResponseWriter, proto.Message) error) { f, ok := w.(http.Flusher) if !ok { - grpclog.Printf("Flush not supported in %T", w) + grpclog.Infof("Flush not supported in %T", w) http.Error(w, "unexpected type of web server", http.StatusInternalServerError) return } md, ok := ServerMetadataFromContext(ctx) if !ok { - grpclog.Printf("Failed to extract ServerMetadata from context") + grpclog.Infof("Failed to extract ServerMetadata from context") http.Error(w, "unexpected error", http.StatusInternalServerError) return } @@ -63,17 +63,17 @@ func ForwardResponseStream(ctx context.Context, mux *ServeMux, marshaler Marshal buf, err := marshaler.Marshal(streamChunk(resp, nil)) if err != nil { - grpclog.Printf("Failed to marshal response chunk: %v", err) + grpclog.Infof("Failed to marshal response chunk: %v", err) handleForwardResponseStreamError(wroteHeader, marshaler, w, err) return } if _, err = w.Write(buf); err != nil { - grpclog.Printf("Failed to send response chunk: %v", err) + grpclog.Infof("Failed to send response chunk: %v", err) return } wroteHeader = true if _, err = w.Write(delimiter); err != nil { - grpclog.Printf("Failed to send delimiter chunk: %v", err) + grpclog.Infof("Failed to send delimiter chunk: %v", err) return } f.Flush() @@ -106,11 +106,17 @@ func handleForwardResponseTrailer(w http.ResponseWriter, md ServerMetadata) { } } +// responseBody interface contains method for getting field for marshaling to the response body +// this method is generated for response struct from the value of `response_body` in the `google.api.HttpRule` +type responseBody interface { + XXX_ResponseBody() interface{} +} + // ForwardResponseMessage forwards the message "resp" from gRPC server to REST client. func ForwardResponseMessage(ctx context.Context, mux *ServeMux, marshaler Marshaler, w http.ResponseWriter, req *http.Request, resp proto.Message, opts ...func(context.Context, http.ResponseWriter, proto.Message) error) { md, ok := ServerMetadataFromContext(ctx) if !ok { - grpclog.Printf("Failed to extract ServerMetadata from context") + grpclog.Infof("Failed to extract ServerMetadata from context") } handleForwardResponseServerMetadata(w, mux, md) @@ -120,16 +126,21 @@ func ForwardResponseMessage(ctx context.Context, mux *ServeMux, marshaler Marsha HTTPError(ctx, mux, marshaler, w, req, err) return } - - buf, err := marshaler.Marshal(resp) + var buf []byte + var err error + if rb, ok := resp.(responseBody); ok { + buf, err = marshaler.Marshal(rb.XXX_ResponseBody()) + } else { + buf, err = marshaler.Marshal(resp) + } if err != nil { - grpclog.Printf("Marshal error: %v", err) + grpclog.Infof("Marshal error: %v", err) HTTPError(ctx, mux, marshaler, w, req, err) return } if _, err = w.Write(buf); err != nil { - grpclog.Printf("Failed to write response: %v", err) + grpclog.Infof("Failed to write response: %v", err) } handleForwardResponseTrailer(w, md) @@ -141,7 +152,7 @@ func handleForwardResponseOptions(ctx context.Context, w http.ResponseWriter, re } for _, opt := range opts { if err := opt(ctx, w, resp); err != nil { - grpclog.Printf("Error handling ForwardResponseOptions: %v", err) + grpclog.Infof("Error handling ForwardResponseOptions: %v", err) return err } } @@ -151,7 +162,7 @@ func handleForwardResponseOptions(ctx context.Context, w http.ResponseWriter, re func handleForwardResponseStreamError(wroteHeader bool, marshaler Marshaler, w http.ResponseWriter, err error) { buf, merr := marshaler.Marshal(streamChunk(nil, err)) if merr != nil { - grpclog.Printf("Failed to marshal an error: %v", merr) + grpclog.Infof("Failed to marshal an error: %v", merr) return } if !wroteHeader { @@ -162,7 +173,7 @@ func handleForwardResponseStreamError(wroteHeader bool, marshaler Marshaler, w h w.WriteHeader(HTTPStatusFromCode(s.Code())) } if _, werr := w.Write(buf); werr != nil { - grpclog.Printf("Failed to notify error to client: %v", werr) + grpclog.Infof("Failed to notify error to client: %v", werr) return } } diff --git a/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/internal/stream_chunk.pb.go b/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/internal/stream_chunk.pb.go index a06c722c..f4af0748 100644 --- a/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/internal/stream_chunk.pb.go +++ b/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/internal/stream_chunk.pb.go @@ -22,11 +22,11 @@ const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package // StreamError is a response type which is returned when // streaming rpc returns an error. type StreamError struct { - GrpcCode int32 `protobuf:"varint,1,opt,name=grpc_code,json=grpcCode" json:"grpc_code,omitempty"` - HttpCode int32 `protobuf:"varint,2,opt,name=http_code,json=httpCode" json:"http_code,omitempty"` - Message string `protobuf:"bytes,3,opt,name=message" json:"message,omitempty"` - HttpStatus string `protobuf:"bytes,4,opt,name=http_status,json=httpStatus" json:"http_status,omitempty"` - Details []*any.Any `protobuf:"bytes,5,rep,name=details" json:"details,omitempty"` + GrpcCode int32 `protobuf:"varint,1,opt,name=grpc_code,json=grpcCode,proto3" json:"grpc_code,omitempty"` + HttpCode int32 `protobuf:"varint,2,opt,name=http_code,json=httpCode,proto3" json:"http_code,omitempty"` + Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` + HttpStatus string `protobuf:"bytes,4,opt,name=http_status,json=httpStatus,proto3" json:"http_status,omitempty"` + Details []*any.Any `protobuf:"bytes,5,rep,name=details,proto3" json:"details,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` diff --git a/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/mux.go b/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/mux.go index 1d4c7576..8f7dd36b 100644 --- a/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/mux.go +++ b/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/mux.go @@ -3,10 +3,9 @@ package runtime import ( "fmt" "net/http" - "net/textproto" "strings" - "context" + "github.com/golang/protobuf/proto" "google.golang.org/grpc/codes" "google.golang.org/grpc/metadata" @@ -51,7 +50,6 @@ type HeaderMatcherFunc func(string) (string, bool) // keys (as specified by the IANA) to gRPC context with grpcgateway- prefix. HTTP headers that start with // 'Grpc-Metadata-' are mapped to gRPC metadata after removing prefix 'Grpc-Metadata-'. func DefaultHeaderMatcher(key string) (string, bool) { - key = textproto.CanonicalMIMEHeaderKey(key) if isPermanentHTTPHeader(key) { return MetadataPrefix + key, true } else if strings.HasPrefix(key, MetadataHeaderPrefix) { diff --git a/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/pattern.go b/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/pattern.go index 8a9ec2cd..223a12ec 100644 --- a/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/pattern.go +++ b/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/pattern.go @@ -44,13 +44,13 @@ type Pattern struct { // It returns an error if the given definition is invalid. func NewPattern(version int, ops []int, pool []string, verb string) (Pattern, error) { if version != 1 { - grpclog.Printf("unsupported version: %d", version) + grpclog.Infof("unsupported version: %d", version) return Pattern{}, ErrInvalidPattern } l := len(ops) if l%2 != 0 { - grpclog.Printf("odd number of ops codes: %d", l) + grpclog.Infof("odd number of ops codes: %d", l) return Pattern{}, ErrInvalidPattern } @@ -73,14 +73,14 @@ func NewPattern(version int, ops []int, pool []string, verb string) (Pattern, er stack++ case utilities.OpPushM: if pushMSeen { - grpclog.Printf("pushM appears twice") + grpclog.Infof("pushM appears twice") return Pattern{}, ErrInvalidPattern } pushMSeen = true stack++ case utilities.OpLitPush: if op.operand < 0 || len(pool) <= op.operand { - grpclog.Printf("negative literal index: %d", op.operand) + grpclog.Infof("negative literal index: %d", op.operand) return Pattern{}, ErrInvalidPattern } if pushMSeen { @@ -89,7 +89,7 @@ func NewPattern(version int, ops []int, pool []string, verb string) (Pattern, er stack++ case utilities.OpConcatN: if op.operand <= 0 { - grpclog.Printf("negative concat size: %d", op.operand) + grpclog.Infof("negative concat size: %d", op.operand) return Pattern{}, ErrInvalidPattern } stack -= op.operand @@ -100,7 +100,7 @@ func NewPattern(version int, ops []int, pool []string, verb string) (Pattern, er stack++ case utilities.OpCapture: if op.operand < 0 || len(pool) <= op.operand { - grpclog.Printf("variable name index out of bound: %d", op.operand) + grpclog.Infof("variable name index out of bound: %d", op.operand) return Pattern{}, ErrInvalidPattern } v := pool[op.operand] @@ -108,11 +108,11 @@ func NewPattern(version int, ops []int, pool []string, verb string) (Pattern, er vars = append(vars, v) stack-- if stack < 0 { - grpclog.Printf("stack underflow") + grpclog.Infof("stack underflow") return Pattern{}, ErrInvalidPattern } default: - grpclog.Printf("invalid opcode: %d", op.code) + grpclog.Infof("invalid opcode: %d", op.code) return Pattern{}, ErrInvalidPattern } @@ -144,7 +144,16 @@ func MustPattern(p Pattern, err error) Pattern { // If otherwise, the function returns an error. func (p Pattern) Match(components []string, verb string) (map[string]string, error) { if p.verb != verb { - return nil, ErrNotMatch + if p.verb != "" { + return nil, ErrNotMatch + } + if len(components) == 0 { + components = []string{":" + verb} + } else { + components = append([]string{}, components...) + components[len(components)-1] += ":" + verb + } + verb = "" } var pos int diff --git a/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/proto_errors.go b/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/proto_errors.go index 059928c2..43fafca7 100644 --- a/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/proto_errors.go +++ b/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/proto_errors.go @@ -36,17 +36,17 @@ func DefaultHTTPProtoErrorHandler(ctx context.Context, mux *ServeMux, marshaler buf, merr := marshaler.Marshal(s.Proto()) if merr != nil { - grpclog.Printf("Failed to marshal error message %q: %v", s.Proto(), merr) + grpclog.Infof("Failed to marshal error message %q: %v", s.Proto(), merr) w.WriteHeader(http.StatusInternalServerError) if _, err := io.WriteString(w, fallback); err != nil { - grpclog.Printf("Failed to write response: %v", err) + grpclog.Infof("Failed to write response: %v", err) } return } md, ok := ServerMetadataFromContext(ctx) if !ok { - grpclog.Printf("Failed to extract ServerMetadata from context") + grpclog.Infof("Failed to extract ServerMetadata from context") } handleForwardResponseServerMetadata(w, mux, md) @@ -54,7 +54,7 @@ func DefaultHTTPProtoErrorHandler(ctx context.Context, mux *ServeMux, marshaler st := HTTPStatusFromCode(s.Code()) w.WriteHeader(st) if _, err := w.Write(buf); err != nil { - grpclog.Printf("Failed to write response: %v", err) + grpclog.Infof("Failed to write response: %v", err) } handleForwardResponseTrailer(w, md) diff --git a/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/query.go b/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/query.go index 07d0ff8c..bb9359f1 100644 --- a/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/query.go +++ b/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/query.go @@ -64,7 +64,7 @@ func populateFieldValueFromPath(msg proto.Message, fieldPath []string, values [] if err != nil { return err } else if !f.IsValid() { - grpclog.Printf("field not found in %T: %s", msg, strings.Join(fieldPath, ".")) + grpclog.Infof("field not found in %T: %s", msg, strings.Join(fieldPath, ".")) return nil } @@ -108,7 +108,7 @@ func populateFieldValueFromPath(msg proto.Message, fieldPath []string, values [] return fmt.Errorf("no value of field: %s", strings.Join(fieldPath, ".")) case 1: default: - grpclog.Printf("too many field values: %s", strings.Join(fieldPath, ".")) + grpclog.Infof("too many field values: %s", strings.Join(fieldPath, ".")) } return populateField(m, values[0], props) } @@ -221,6 +221,23 @@ func populateField(f reflect.Value, value string, props *proto.Properties) error f.Field(0).SetInt(int64(t.Unix())) f.Field(1).SetInt(int64(t.Nanosecond())) return nil + case "Duration": + if value == "null" { + f.Field(0).SetInt(0) + f.Field(1).SetInt(0) + return nil + } + d, err := time.ParseDuration(value) + if err != nil { + return fmt.Errorf("bad Duration: %v", err) + } + + ns := d.Nanoseconds() + s := ns / 1e9 + ns %= 1e9 + f.Field(0).SetInt(s) + f.Field(1).SetInt(ns) + return nil case "DoubleValue": fallthrough case "FloatValue": @@ -284,6 +301,24 @@ func populateField(f reflect.Value, value string, props *proto.Properties) error } } + // Handle Time and Duration stdlib types + switch t := i.(type) { + case *time.Time: + pt, err := time.Parse(time.RFC3339Nano, value) + if err != nil { + return fmt.Errorf("bad Timestamp: %v", err) + } + *t = pt + return nil + case *time.Duration: + d, err := time.ParseDuration(value) + if err != nil { + return fmt.Errorf("bad Duration: %v", err) + } + *t = d + return nil + } + // is the destination field an enumeration type? if enumValMap := proto.EnumValueMap(props.Enum); enumValMap != nil { return populateFieldEnum(f, value, enumValMap) @@ -291,7 +326,7 @@ func populateField(f reflect.Value, value string, props *proto.Properties) error conv, ok := convFromType[f.Kind()] if !ok { - return fmt.Errorf("unsupported field type %T", f) + return fmt.Errorf("field type %T is not supported in query parameters", i) } result := conv.Call([]reflect.Value{reflect.ValueOf(value)}) if err := result[1].Interface(); err != nil { diff --git a/vendor/github.com/prometheus/client_golang/prometheus/collector.go b/vendor/github.com/prometheus/client_golang/prometheus/collector.go index 3c9bae24..08491bef 100644 --- a/vendor/github.com/prometheus/client_golang/prometheus/collector.go +++ b/vendor/github.com/prometheus/client_golang/prometheus/collector.go @@ -61,6 +61,39 @@ type Collector interface { Collect(chan<- Metric) } +// DescribeByCollect is a helper to implement the Describe method of a custom +// Collector. It collects the metrics from the provided Collector and sends +// their descriptors to the provided channel. +// +// If a Collector collects the same metrics throughout its lifetime, its +// Describe method can simply be implemented as: +// +// func (c customCollector) Describe(ch chan<- *Desc) { +// DescribeByCollect(c, ch) +// } +// +// However, this will not work if the metrics collected change dynamically over +// the lifetime of the Collector in a way that their combined set of descriptors +// changes as well. The shortcut implementation will then violate the contract +// of the Describe method. If a Collector sometimes collects no metrics at all +// (for example vectors like CounterVec, GaugeVec, etc., which only collect +// metrics after a metric with a fully specified label set has been accessed), +// it might even get registered as an unchecked Collecter (cf. the Register +// method of the Registerer interface). Hence, only use this shortcut +// implementation of Describe if you are certain to fulfill the contract. +// +// The Collector example demonstrates a use of DescribeByCollect. +func DescribeByCollect(c Collector, descs chan<- *Desc) { + metrics := make(chan Metric) + go func() { + c.Collect(metrics) + close(metrics) + }() + for m := range metrics { + descs <- m.Desc() + } +} + // selfCollector implements Collector for a single Metric so that the Metric // collects itself. Add it as an anonymous field to a struct that implements // Metric, and call init with the Metric itself as an argument. diff --git a/vendor/github.com/prometheus/client_golang/prometheus/desc.go b/vendor/github.com/prometheus/client_golang/prometheus/desc.go index 4a755b0f..7b8827ff 100644 --- a/vendor/github.com/prometheus/client_golang/prometheus/desc.go +++ b/vendor/github.com/prometheus/client_golang/prometheus/desc.go @@ -67,7 +67,7 @@ type Desc struct { // NewDesc allocates and initializes a new Desc. Errors are recorded in the Desc // and will be reported on registration time. variableLabels and constLabels can -// be nil if no such labels should be set. fqName and help must not be empty. +// be nil if no such labels should be set. fqName must not be empty. // // variableLabels only contain the label names. Their label values are variable // and therefore not part of the Desc. (They are managed within the Metric.) @@ -80,10 +80,6 @@ func NewDesc(fqName, help string, variableLabels []string, constLabels Labels) * help: help, variableLabels: variableLabels, } - if help == "" { - d.err = errors.New("empty help string") - return d - } if !model.IsValidMetricName(model.LabelValue(fqName)) { d.err = fmt.Errorf("%q is not a valid metric name", fqName) return d @@ -156,7 +152,7 @@ func NewDesc(fqName, help string, variableLabels []string, constLabels Labels) * Value: proto.String(v), }) } - sort.Sort(LabelPairSorter(d.constLabelPairs)) + sort.Sort(labelPairSorter(d.constLabelPairs)) return d } diff --git a/vendor/github.com/prometheus/client_golang/prometheus/fnv.go b/vendor/github.com/prometheus/client_golang/prometheus/fnv.go index e3b67df8..3d383a73 100644 --- a/vendor/github.com/prometheus/client_golang/prometheus/fnv.go +++ b/vendor/github.com/prometheus/client_golang/prometheus/fnv.go @@ -1,3 +1,16 @@ +// Copyright 2018 The Prometheus Authors +// Licensed 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. + package prometheus // Inline and byte-free variant of hash/fnv's fnv64a. diff --git a/vendor/github.com/prometheus/client_golang/prometheus/go_collector.go b/vendor/github.com/prometheus/client_golang/prometheus/go_collector.go index 0440bd12..ba3b9333 100644 --- a/vendor/github.com/prometheus/client_golang/prometheus/go_collector.go +++ b/vendor/github.com/prometheus/client_golang/prometheus/go_collector.go @@ -1,3 +1,16 @@ +// Copyright 2018 The Prometheus Authors +// Licensed 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. + package prometheus import ( diff --git a/vendor/github.com/prometheus/client_golang/prometheus/histogram.go b/vendor/github.com/prometheus/client_golang/prometheus/histogram.go index 331783a7..29dc8e34 100644 --- a/vendor/github.com/prometheus/client_golang/prometheus/histogram.go +++ b/vendor/github.com/prometheus/client_golang/prometheus/histogram.go @@ -16,7 +16,9 @@ package prometheus import ( "fmt" "math" + "runtime" "sort" + "sync" "sync/atomic" "github.com/golang/protobuf/proto" @@ -108,8 +110,9 @@ func ExponentialBuckets(start, factor float64, count int) []float64 { } // HistogramOpts bundles the options for creating a Histogram metric. It is -// mandatory to set Name and Help to a non-empty string. All other fields are -// optional and can safely be left at their zero value. +// mandatory to set Name to a non-empty string. All other fields are optional +// and can safely be left at their zero value, although it is strongly +// encouraged to set a Help string. type HistogramOpts struct { // Namespace, Subsystem, and Name are components of the fully-qualified // name of the Histogram (created by joining these components with @@ -120,7 +123,7 @@ type HistogramOpts struct { Subsystem string Name string - // Help provides information about this Histogram. Mandatory! + // Help provides information about this Histogram. // // Metrics with the same fully-qualified name must have the same Help // string. @@ -200,28 +203,49 @@ func newHistogram(desc *Desc, opts HistogramOpts, labelValues ...string) Histogr } } } - // Finally we know the final length of h.upperBounds and can make counts. - h.counts = make([]uint64, len(h.upperBounds)) + // Finally we know the final length of h.upperBounds and can make counts + // for both states: + h.counts[0].buckets = make([]uint64, len(h.upperBounds)) + h.counts[1].buckets = make([]uint64, len(h.upperBounds)) h.init(h) // Init self-collection. return h } -type histogram struct { +type histogramCounts struct { // sumBits contains the bits of the float64 representing the sum of all // observations. sumBits and count have to go first in the struct to // guarantee alignment for atomic operations. // http://golang.org/pkg/sync/atomic/#pkg-note-BUG sumBits uint64 count uint64 + buckets []uint64 +} +type histogram struct { selfCollector - // Note that there is no mutex required. - - desc *Desc + desc *Desc + writeMtx sync.Mutex // Only used in the Write method. upperBounds []float64 - counts []uint64 + + // Two counts, one is "hot" for lock-free observations, the other is + // "cold" for writing out a dto.Metric. + counts [2]histogramCounts + + hotIdx int // Index of currently-hot counts. Only used within Write. + + // This is a complicated one. For lock-free yet atomic observations, we + // need to save the total count of observations again, combined with the + // index of the currently-hot counts struct, so that we can perform the + // operation on both values atomically. The least significant bit + // defines the hot counts struct. The remaining 63 bits represent the + // total count of observations. This happens under the assumption that + // the 63bit count will never overflow. Rationale: An observations takes + // about 30ns. Let's assume it could happen in 10ns. Overflowing the + // counter will then take at least (2^63)*10ns, which is about 3000 + // years. + countAndHotIdx uint64 labelPairs []*dto.LabelPair } @@ -241,36 +265,113 @@ func (h *histogram) Observe(v float64) { // 100 buckets: 78.1 ns/op linear - binary 54.9 ns/op // 300 buckets: 154 ns/op linear - binary 61.6 ns/op i := sort.SearchFloat64s(h.upperBounds, v) - if i < len(h.counts) { - atomic.AddUint64(&h.counts[i], 1) + + // We increment h.countAndHotIdx by 2 so that the counter in the upper + // 63 bits gets incremented by 1. At the same time, we get the new value + // back, which we can use to find the currently-hot counts. + n := atomic.AddUint64(&h.countAndHotIdx, 2) + hotCounts := &h.counts[n%2] + + if i < len(h.upperBounds) { + atomic.AddUint64(&hotCounts.buckets[i], 1) } - atomic.AddUint64(&h.count, 1) for { - oldBits := atomic.LoadUint64(&h.sumBits) + oldBits := atomic.LoadUint64(&hotCounts.sumBits) newBits := math.Float64bits(math.Float64frombits(oldBits) + v) - if atomic.CompareAndSwapUint64(&h.sumBits, oldBits, newBits) { + if atomic.CompareAndSwapUint64(&hotCounts.sumBits, oldBits, newBits) { break } } + // Increment count last as we take it as a signal that the observation + // is complete. + atomic.AddUint64(&hotCounts.count, 1) } func (h *histogram) Write(out *dto.Metric) error { - his := &dto.Histogram{} - buckets := make([]*dto.Bucket, len(h.upperBounds)) + var ( + his = &dto.Histogram{} + buckets = make([]*dto.Bucket, len(h.upperBounds)) + hotCounts, coldCounts *histogramCounts + count uint64 + ) - his.SampleSum = proto.Float64(math.Float64frombits(atomic.LoadUint64(&h.sumBits))) - his.SampleCount = proto.Uint64(atomic.LoadUint64(&h.count)) - var count uint64 + // For simplicity, we mutex the rest of this method. It is not in the + // hot path, i.e. Observe is called much more often than Write. The + // complication of making Write lock-free isn't worth it. + h.writeMtx.Lock() + defer h.writeMtx.Unlock() + + // This is a bit arcane, which is why the following spells out this if + // clause in English: + // + // If the currently-hot counts struct is #0, we atomically increment + // h.countAndHotIdx by 1 so that from now on Observe will use the counts + // struct #1. Furthermore, the atomic increment gives us the new value, + // which, in its most significant 63 bits, tells us the count of + // observations done so far up to and including currently ongoing + // observations still using the counts struct just changed from hot to + // cold. To have a normal uint64 for the count, we bitshift by 1 and + // save the result in count. We also set h.hotIdx to 1 for the next + // Write call, and we will refer to counts #1 as hotCounts and to counts + // #0 as coldCounts. + // + // If the currently-hot counts struct is #1, we do the corresponding + // things the other way round. We have to _decrement_ h.countAndHotIdx + // (which is a bit arcane in itself, as we have to express -1 with an + // unsigned int...). + if h.hotIdx == 0 { + count = atomic.AddUint64(&h.countAndHotIdx, 1) >> 1 + h.hotIdx = 1 + hotCounts = &h.counts[1] + coldCounts = &h.counts[0] + } else { + count = atomic.AddUint64(&h.countAndHotIdx, ^uint64(0)) >> 1 // Decrement. + h.hotIdx = 0 + hotCounts = &h.counts[0] + coldCounts = &h.counts[1] + } + + // Now we have to wait for the now-declared-cold counts to actually cool + // down, i.e. wait for all observations still using it to finish. That's + // the case once the count in the cold counts struct is the same as the + // one atomically retrieved from the upper 63bits of h.countAndHotIdx. + for { + if count == atomic.LoadUint64(&coldCounts.count) { + break + } + runtime.Gosched() // Let observations get work done. + } + + his.SampleCount = proto.Uint64(count) + his.SampleSum = proto.Float64(math.Float64frombits(atomic.LoadUint64(&coldCounts.sumBits))) + var cumCount uint64 for i, upperBound := range h.upperBounds { - count += atomic.LoadUint64(&h.counts[i]) + cumCount += atomic.LoadUint64(&coldCounts.buckets[i]) buckets[i] = &dto.Bucket{ - CumulativeCount: proto.Uint64(count), + CumulativeCount: proto.Uint64(cumCount), UpperBound: proto.Float64(upperBound), } } + his.Bucket = buckets out.Histogram = his out.Label = h.labelPairs + + // Finally add all the cold counts to the new hot counts and reset the cold counts. + atomic.AddUint64(&hotCounts.count, count) + atomic.StoreUint64(&coldCounts.count, 0) + for { + oldBits := atomic.LoadUint64(&hotCounts.sumBits) + newBits := math.Float64bits(math.Float64frombits(oldBits) + his.GetSampleSum()) + if atomic.CompareAndSwapUint64(&hotCounts.sumBits, oldBits, newBits) { + atomic.StoreUint64(&coldCounts.sumBits, 0) + break + } + } + for i := range h.upperBounds { + atomic.AddUint64(&hotCounts.buckets[i], atomic.LoadUint64(&coldCounts.buckets[i])) + atomic.StoreUint64(&coldCounts.buckets[i], 0) + } return nil } @@ -454,7 +555,7 @@ func (h *constHistogram) Write(out *dto.Metric) error { // bucket. // // NewConstHistogram returns an error if the length of labelValues is not -// consistent with the variable labels in Desc. +// consistent with the variable labels in Desc or if Desc is invalid. func NewConstHistogram( desc *Desc, count uint64, @@ -462,6 +563,9 @@ func NewConstHistogram( buckets map[float64]uint64, labelValues ...string, ) (Metric, error) { + if desc.err != nil { + return nil, desc.err + } if err := validateLabelValues(labelValues, len(desc.variableLabels)); err != nil { return nil, err } diff --git a/vendor/github.com/prometheus/client_golang/prometheus/http.go b/vendor/github.com/prometheus/client_golang/prometheus/http.go index 4d08154b..4b8e6027 100644 --- a/vendor/github.com/prometheus/client_golang/prometheus/http.go +++ b/vendor/github.com/prometheus/client_golang/prometheus/http.go @@ -61,15 +61,15 @@ func giveBuf(buf *bytes.Buffer) { // name). // // Deprecated: Please note the issues described in the doc comment of -// InstrumentHandler. You might want to consider using -// promhttp.InstrumentedHandler instead. +// InstrumentHandler. You might want to consider using promhttp.Handler instead. func Handler() http.Handler { return InstrumentHandler("prometheus", UninstrumentedHandler()) } // UninstrumentedHandler returns an HTTP handler for the DefaultGatherer. // -// Deprecated: Use promhttp.Handler instead. See there for further documentation. +// Deprecated: Use promhttp.HandlerFor(DefaultGatherer, promhttp.HandlerOpts{}) +// instead. See there for further documentation. func UninstrumentedHandler() http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) { mfs, err := DefaultGatherer.Gather() @@ -149,21 +149,14 @@ var now nower = nowFunc(func() time.Time { // (label name "method") and HTTP status code (label name "code"). // // Deprecated: InstrumentHandler has several issues. Use the tooling provided in -// package promhttp instead. The issues are the following: -// -// - It uses Summaries rather than Histograms. Summaries are not useful if -// aggregation across multiple instances is required. -// -// - It uses microseconds as unit, which is deprecated and should be replaced by -// seconds. -// -// - The size of the request is calculated in a separate goroutine. Since this -// calculator requires access to the request header, it creates a race with -// any writes to the header performed during request handling. -// httputil.ReverseProxy is a prominent example for a handler -// performing such writes. -// -// - It has additional issues with HTTP/2, cf. +// package promhttp instead. The issues are the following: (1) It uses Summaries +// rather than Histograms. Summaries are not useful if aggregation across +// multiple instances is required. (2) It uses microseconds as unit, which is +// deprecated and should be replaced by seconds. (3) The size of the request is +// calculated in a separate goroutine. Since this calculator requires access to +// the request header, it creates a race with any writes to the header performed +// during request handling. httputil.ReverseProxy is a prominent example for a +// handler performing such writes. (4) It has additional issues with HTTP/2, cf. // https://github.com/prometheus/client_golang/issues/272. func InstrumentHandler(handlerName string, handler http.Handler) http.HandlerFunc { return InstrumentHandlerFunc(handlerName, handler.ServeHTTP) @@ -307,7 +300,7 @@ func InstrumentHandlerFuncWithOpts(opts SummaryOpts, handlerFunc func(http.Respo } func computeApproximateRequestSize(r *http.Request) <-chan int { - // Get URL length in current go routine for avoiding a race condition. + // Get URL length in current goroutine for avoiding a race condition. // HandlerFunc that runs in parallel may modify the URL. s := 0 if r.URL != nil { diff --git a/vendor/github.com/prometheus/client_golang/prometheus/internal/metric.go b/vendor/github.com/prometheus/client_golang/prometheus/internal/metric.go new file mode 100644 index 00000000..351c26e1 --- /dev/null +++ b/vendor/github.com/prometheus/client_golang/prometheus/internal/metric.go @@ -0,0 +1,85 @@ +// Copyright 2018 The Prometheus Authors +// Licensed 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. + +package internal + +import ( + "sort" + + dto "github.com/prometheus/client_model/go" +) + +// metricSorter is a sortable slice of *dto.Metric. +type metricSorter []*dto.Metric + +func (s metricSorter) Len() int { + return len(s) +} + +func (s metricSorter) Swap(i, j int) { + s[i], s[j] = s[j], s[i] +} + +func (s metricSorter) Less(i, j int) bool { + if len(s[i].Label) != len(s[j].Label) { + // This should not happen. The metrics are + // inconsistent. However, we have to deal with the fact, as + // people might use custom collectors or metric family injection + // to create inconsistent metrics. So let's simply compare the + // number of labels in this case. That will still yield + // reproducible sorting. + return len(s[i].Label) < len(s[j].Label) + } + for n, lp := range s[i].Label { + vi := lp.GetValue() + vj := s[j].Label[n].GetValue() + if vi != vj { + return vi < vj + } + } + + // We should never arrive here. Multiple metrics with the same + // label set in the same scrape will lead to undefined ingestion + // behavior. However, as above, we have to provide stable sorting + // here, even for inconsistent metrics. So sort equal metrics + // by their timestamp, with missing timestamps (implying "now") + // coming last. + if s[i].TimestampMs == nil { + return false + } + if s[j].TimestampMs == nil { + return true + } + return s[i].GetTimestampMs() < s[j].GetTimestampMs() +} + +// NormalizeMetricFamilies returns a MetricFamily slice with empty +// MetricFamilies pruned and the remaining MetricFamilies sorted by name within +// the slice, with the contained Metrics sorted within each MetricFamily. +func NormalizeMetricFamilies(metricFamiliesByName map[string]*dto.MetricFamily) []*dto.MetricFamily { + for _, mf := range metricFamiliesByName { + sort.Sort(metricSorter(mf.Metric)) + } + names := make([]string, 0, len(metricFamiliesByName)) + for name, mf := range metricFamiliesByName { + if len(mf.Metric) > 0 { + names = append(names, name) + } + } + sort.Strings(names) + result := make([]*dto.MetricFamily, 0, len(names)) + for _, name := range names { + result = append(result, metricFamiliesByName[name]) + } + return result +} diff --git a/vendor/github.com/prometheus/client_golang/prometheus/labels.go b/vendor/github.com/prometheus/client_golang/prometheus/labels.go index 2502e373..e68f132e 100644 --- a/vendor/github.com/prometheus/client_golang/prometheus/labels.go +++ b/vendor/github.com/prometheus/client_golang/prometheus/labels.go @@ -1,3 +1,16 @@ +// Copyright 2018 The Prometheus Authors +// Licensed 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. + package prometheus import ( diff --git a/vendor/github.com/prometheus/client_golang/prometheus/metric.go b/vendor/github.com/prometheus/client_golang/prometheus/metric.go index 76035bca..55e6d86d 100644 --- a/vendor/github.com/prometheus/client_golang/prometheus/metric.go +++ b/vendor/github.com/prometheus/client_golang/prometheus/metric.go @@ -15,6 +15,9 @@ package prometheus import ( "strings" + "time" + + "github.com/golang/protobuf/proto" dto "github.com/prometheus/client_model/go" ) @@ -43,9 +46,8 @@ type Metric interface { // While populating dto.Metric, it is the responsibility of the // implementation to ensure validity of the Metric protobuf (like valid // UTF-8 strings or syntactically valid metric and label names). It is - // recommended to sort labels lexicographically. (Implementers may find - // LabelPairSorter useful for that.) Callers of Write should still make - // sure of sorting if they depend on it. + // recommended to sort labels lexicographically. Callers of Write should + // still make sure of sorting if they depend on it. Write(*dto.Metric) error // TODO(beorn7): The original rationale of passing in a pre-allocated // dto.Metric protobuf to save allocations has disappeared. The @@ -57,8 +59,9 @@ type Metric interface { // implementation XXX has its own XXXOpts type, but in most cases, it is just be // an alias of this type (which might change when the requirement arises.) // -// It is mandatory to set Name and Help to a non-empty string. All other fields -// are optional and can safely be left at their zero value. +// It is mandatory to set Name to a non-empty string. All other fields are +// optional and can safely be left at their zero value, although it is strongly +// encouraged to set a Help string. type Opts struct { // Namespace, Subsystem, and Name are components of the fully-qualified // name of the Metric (created by joining these components with @@ -69,7 +72,7 @@ type Opts struct { Subsystem string Name string - // Help provides information about this metric. Mandatory! + // Help provides information about this metric. // // Metrics with the same fully-qualified name must have the same Help // string. @@ -110,20 +113,19 @@ func BuildFQName(namespace, subsystem, name string) string { return name } -// LabelPairSorter implements sort.Interface. It is used to sort a slice of -// dto.LabelPair pointers. This is useful for implementing the Write method of -// custom metrics. -type LabelPairSorter []*dto.LabelPair +// labelPairSorter implements sort.Interface. It is used to sort a slice of +// dto.LabelPair pointers. +type labelPairSorter []*dto.LabelPair -func (s LabelPairSorter) Len() int { +func (s labelPairSorter) Len() int { return len(s) } -func (s LabelPairSorter) Swap(i, j int) { +func (s labelPairSorter) Swap(i, j int) { s[i], s[j] = s[j], s[i] } -func (s LabelPairSorter) Less(i, j int) bool { +func (s labelPairSorter) Less(i, j int) bool { return s[i].GetName() < s[j].GetName() } @@ -142,3 +144,31 @@ func NewInvalidMetric(desc *Desc, err error) Metric { func (m *invalidMetric) Desc() *Desc { return m.desc } func (m *invalidMetric) Write(*dto.Metric) error { return m.err } + +type timestampedMetric struct { + Metric + t time.Time +} + +func (m timestampedMetric) Write(pb *dto.Metric) error { + e := m.Metric.Write(pb) + pb.TimestampMs = proto.Int64(m.t.Unix()*1000 + int64(m.t.Nanosecond()/1000000)) + return e +} + +// NewMetricWithTimestamp returns a new Metric wrapping the provided Metric in a +// way that it has an explicit timestamp set to the provided Time. This is only +// useful in rare cases as the timestamp of a Prometheus metric should usually +// be set by the Prometheus server during scraping. Exceptions include mirroring +// metrics with given timestamps from other metric +// sources. +// +// NewMetricWithTimestamp works best with MustNewConstMetric, +// MustNewConstHistogram, and MustNewConstSummary, see example. +// +// Currently, the exposition formats used by Prometheus are limited to +// millisecond resolution. Thus, the provided time will be rounded down to the +// next full millisecond value. +func NewMetricWithTimestamp(t time.Time, m Metric) Metric { + return timestampedMetric{Metric: m, t: t} +} diff --git a/vendor/github.com/prometheus/client_golang/prometheus/process_collector.go b/vendor/github.com/prometheus/client_golang/prometheus/process_collector.go index b80adc6e..55176d58 100644 --- a/vendor/github.com/prometheus/client_golang/prometheus/process_collector.go +++ b/vendor/github.com/prometheus/client_golang/prometheus/process_collector.go @@ -13,45 +13,74 @@ package prometheus -import "github.com/prometheus/procfs" +import ( + "errors" + "os" + + "github.com/prometheus/procfs" +) type processCollector struct { collectFn func(chan<- Metric) pidFn func() (int, error) + reportErrors bool cpuTotal *Desc openFDs, maxFDs *Desc - vsize, rss *Desc + vsize, maxVsize *Desc + rss *Desc startTime *Desc } +// ProcessCollectorOpts defines the behavior of a process metrics collector +// created with NewProcessCollector. +type ProcessCollectorOpts struct { + // PidFn returns the PID of the process the collector collects metrics + // for. It is called upon each collection. By default, the PID of the + // current process is used, as determined on construction time by + // calling os.Getpid(). + PidFn func() (int, error) + // If non-empty, each of the collected metrics is prefixed by the + // provided string and an underscore ("_"). + Namespace string + // If true, any error encountered during collection is reported as an + // invalid metric (see NewInvalidMetric). Otherwise, errors are ignored + // and the collected metrics will be incomplete. (Possibly, no metrics + // will be collected at all.) While that's usually not desired, it is + // appropriate for the common "mix-in" of process metrics, where process + // metrics are nice to have, but failing to collect them should not + // disrupt the collection of the remaining metrics. + ReportErrors bool +} + // NewProcessCollector returns a collector which exports the current state of // process metrics including CPU, memory and file descriptor usage as well as -// the process start time for the given process ID under the given namespace. +// the process start time. The detailed behavior is defined by the provided +// ProcessCollectorOpts. The zero value of ProcessCollectorOpts creates a +// collector for the current process with an empty namespace string and no error +// reporting. // // Currently, the collector depends on a Linux-style proc filesystem and // therefore only exports metrics for Linux. -func NewProcessCollector(pid int, namespace string) Collector { - return NewProcessCollectorPIDFn( - func() (int, error) { return pid, nil }, - namespace, - ) -} - -// NewProcessCollectorPIDFn works like NewProcessCollector but the process ID is -// determined on each collect anew by calling the given pidFn function. -func NewProcessCollectorPIDFn( - pidFn func() (int, error), - namespace string, -) Collector { +// +// Note: An older version of this function had the following signature: +// +// NewProcessCollector(pid int, namespace string) Collector +// +// Most commonly, it was called as +// +// NewProcessCollector(os.Getpid(), "") +// +// The following call of the current version is equivalent to the above: +// +// NewProcessCollector(ProcessCollectorOpts{}) +func NewProcessCollector(opts ProcessCollectorOpts) Collector { ns := "" - if len(namespace) > 0 { - ns = namespace + "_" + if len(opts.Namespace) > 0 { + ns = opts.Namespace + "_" } - c := processCollector{ - pidFn: pidFn, - collectFn: func(chan<- Metric) {}, - + c := &processCollector{ + reportErrors: opts.ReportErrors, cpuTotal: NewDesc( ns+"process_cpu_seconds_total", "Total user and system CPU time spent in seconds.", @@ -72,6 +101,11 @@ func NewProcessCollectorPIDFn( "Virtual memory size in bytes.", nil, nil, ), + maxVsize: NewDesc( + ns+"process_virtual_memory_max_bytes", + "Maximum amount of virtual memory available in bytes.", + nil, nil, + ), rss: NewDesc( ns+"process_resident_memory_bytes", "Resident memory size in bytes.", @@ -84,12 +118,23 @@ func NewProcessCollectorPIDFn( ), } + if opts.PidFn == nil { + pid := os.Getpid() + c.pidFn = func() (int, error) { return pid, nil } + } else { + c.pidFn = opts.PidFn + } + // Set up process metric collection if supported by the runtime. if _, err := procfs.NewStat(); err == nil { c.collectFn = c.processCollect + } else { + c.collectFn = func(ch chan<- Metric) { + c.reportError(ch, nil, errors.New("process metrics not supported on this platform")) + } } - return &c + return c } // Describe returns all descriptions of the collector. @@ -98,6 +143,7 @@ func (c *processCollector) Describe(ch chan<- *Desc) { ch <- c.openFDs ch <- c.maxFDs ch <- c.vsize + ch <- c.maxVsize ch <- c.rss ch <- c.startTime } @@ -107,16 +153,16 @@ func (c *processCollector) Collect(ch chan<- Metric) { c.collectFn(ch) } -// TODO(ts): Bring back error reporting by reverting 7faf9e7 as soon as the -// client allows users to configure the error behavior. func (c *processCollector) processCollect(ch chan<- Metric) { pid, err := c.pidFn() if err != nil { + c.reportError(ch, nil, err) return } p, err := procfs.NewProc(pid) if err != nil { + c.reportError(ch, nil, err) return } @@ -126,14 +172,33 @@ func (c *processCollector) processCollect(ch chan<- Metric) { ch <- MustNewConstMetric(c.rss, GaugeValue, float64(stat.ResidentMemory())) if startTime, err := stat.StartTime(); err == nil { ch <- MustNewConstMetric(c.startTime, GaugeValue, startTime) + } else { + c.reportError(ch, c.startTime, err) } + } else { + c.reportError(ch, nil, err) } if fds, err := p.FileDescriptorsLen(); err == nil { ch <- MustNewConstMetric(c.openFDs, GaugeValue, float64(fds)) + } else { + c.reportError(ch, c.openFDs, err) } if limits, err := p.NewLimits(); err == nil { ch <- MustNewConstMetric(c.maxFDs, GaugeValue, float64(limits.OpenFiles)) + ch <- MustNewConstMetric(c.maxVsize, GaugeValue, float64(limits.AddressSpace)) + } else { + c.reportError(ch, nil, err) } } + +func (c *processCollector) reportError(ch chan<- Metric, desc *Desc, err error) { + if !c.reportErrors { + return + } + if desc == nil { + desc = NewInvalidDesc(err) + } + ch <- NewInvalidMetric(desc, err) +} diff --git a/vendor/github.com/prometheus/client_golang/prometheus/registry.go b/vendor/github.com/prometheus/client_golang/prometheus/registry.go index 896838f1..2c0b9088 100644 --- a/vendor/github.com/prometheus/client_golang/prometheus/registry.go +++ b/vendor/github.com/prometheus/client_golang/prometheus/registry.go @@ -16,7 +16,6 @@ package prometheus import ( "bytes" "fmt" - "os" "runtime" "sort" "strings" @@ -26,6 +25,8 @@ import ( "github.com/golang/protobuf/proto" dto "github.com/prometheus/client_model/go" + + "github.com/prometheus/client_golang/prometheus/internal" ) const ( @@ -52,7 +53,7 @@ var ( ) func init() { - MustRegister(NewProcessCollector(os.Getpid(), "")) + MustRegister(NewProcessCollector(ProcessCollectorOpts{})) MustRegister(NewGoCollector()) } @@ -527,7 +528,7 @@ func (r *Registry) Gather() ([]*dto.MetricFamily, error) { break } } - return normalizeMetricFamilies(metricFamiliesByName), errs.MaybeUnwrap() + return internal.NormalizeMetricFamilies(metricFamiliesByName), errs.MaybeUnwrap() } // processMetric is an internal helper method only used by the Gather method. @@ -538,6 +539,11 @@ func processMetric( registeredDescIDs map[uint64]struct{}, ) error { desc := metric.Desc() + // Wrapped metrics collected by an unchecked Collector can have an + // invalid Desc. + if desc.err != nil { + return desc.err + } dtoMetric := &dto.Metric{} if err := metric.Write(dtoMetric); err != nil { return fmt.Errorf("error collecting metric %v: %s", desc, err) @@ -707,72 +713,7 @@ func (gs Gatherers) Gather() ([]*dto.MetricFamily, error) { } } } - return normalizeMetricFamilies(metricFamiliesByName), errs.MaybeUnwrap() -} - -// metricSorter is a sortable slice of *dto.Metric. -type metricSorter []*dto.Metric - -func (s metricSorter) Len() int { - return len(s) -} - -func (s metricSorter) Swap(i, j int) { - s[i], s[j] = s[j], s[i] -} - -func (s metricSorter) Less(i, j int) bool { - if len(s[i].Label) != len(s[j].Label) { - // This should not happen. The metrics are - // inconsistent. However, we have to deal with the fact, as - // people might use custom collectors or metric family injection - // to create inconsistent metrics. So let's simply compare the - // number of labels in this case. That will still yield - // reproducible sorting. - return len(s[i].Label) < len(s[j].Label) - } - for n, lp := range s[i].Label { - vi := lp.GetValue() - vj := s[j].Label[n].GetValue() - if vi != vj { - return vi < vj - } - } - - // We should never arrive here. Multiple metrics with the same - // label set in the same scrape will lead to undefined ingestion - // behavior. However, as above, we have to provide stable sorting - // here, even for inconsistent metrics. So sort equal metrics - // by their timestamp, with missing timestamps (implying "now") - // coming last. - if s[i].TimestampMs == nil { - return false - } - if s[j].TimestampMs == nil { - return true - } - return s[i].GetTimestampMs() < s[j].GetTimestampMs() -} - -// normalizeMetricFamilies returns a MetricFamily slice with empty -// MetricFamilies pruned and the remaining MetricFamilies sorted by name within -// the slice, with the contained Metrics sorted within each MetricFamily. -func normalizeMetricFamilies(metricFamiliesByName map[string]*dto.MetricFamily) []*dto.MetricFamily { - for _, mf := range metricFamiliesByName { - sort.Sort(metricSorter(mf.Metric)) - } - names := make([]string, 0, len(metricFamiliesByName)) - for name, mf := range metricFamiliesByName { - if len(mf.Metric) > 0 { - names = append(names, name) - } - } - sort.Strings(names) - result := make([]*dto.MetricFamily, 0, len(names)) - for _, name := range names { - result = append(result, metricFamiliesByName[name]) - } - return result + return internal.NormalizeMetricFamilies(metricFamiliesByName), errs.MaybeUnwrap() } // checkSuffixCollisions checks for collisions with the “magic” suffixes the @@ -882,7 +823,7 @@ func checkMetricConsistency( h = hashAddByte(h, separatorByte) // Make sure label pairs are sorted. We depend on it for the consistency // check. - sort.Sort(LabelPairSorter(dtoMetric.Label)) + sort.Sort(labelPairSorter(dtoMetric.Label)) for _, lp := range dtoMetric.Label { h = hashAdd(h, lp.GetName()) h = hashAddByte(h, separatorByte) @@ -926,7 +867,7 @@ func checkDescConsistency( metricFamily.GetName(), dtoMetric, desc, ) } - sort.Sort(LabelPairSorter(lpsFromDesc)) + sort.Sort(labelPairSorter(lpsFromDesc)) for i, lpFromDesc := range lpsFromDesc { lpFromMetric := dtoMetric.Label[i] if lpFromDesc.GetName() != lpFromMetric.GetName() || diff --git a/vendor/github.com/prometheus/client_golang/prometheus/summary.go b/vendor/github.com/prometheus/client_golang/prometheus/summary.go index 83b403c5..f7e92d82 100644 --- a/vendor/github.com/prometheus/client_golang/prometheus/summary.go +++ b/vendor/github.com/prometheus/client_golang/prometheus/summary.go @@ -37,7 +37,7 @@ const quantileLabel = "quantile" // A typical use-case is the observation of request latencies. By default, a // Summary provides the median, the 90th and the 99th percentile of the latency // as rank estimations. However, the default behavior will change in the -// upcoming v0.10 of the library. There will be no rank estiamtions at all by +// upcoming v0.10 of the library. There will be no rank estimations at all by // default. For a sane transition, it is recommended to set the desired rank // estimations explicitly. // @@ -81,10 +81,10 @@ const ( ) // SummaryOpts bundles the options for creating a Summary metric. It is -// mandatory to set Name and Help to a non-empty string. While all other fields -// are optional and can safely be left at their zero value, it is recommended to -// explicitly set the Objectives field to the desired value as the default value -// will change in the upcoming v0.10 of the library. +// mandatory to set Name to a non-empty string. While all other fields are +// optional and can safely be left at their zero value, it is recommended to set +// a help string and to explicitly set the Objectives field to the desired value +// as the default value will change in the upcoming v0.10 of the library. type SummaryOpts struct { // Namespace, Subsystem, and Name are components of the fully-qualified // name of the Summary (created by joining these components with @@ -95,7 +95,7 @@ type SummaryOpts struct { Subsystem string Name string - // Help provides information about this Summary. Mandatory! + // Help provides information about this Summary. // // Metrics with the same fully-qualified name must have the same Help // string. @@ -586,7 +586,7 @@ func (s *constSummary) Write(out *dto.Metric) error { // map[float64]float64{0.5: 0.23, 0.99: 0.56} // // NewConstSummary returns an error if the length of labelValues is not -// consistent with the variable labels in Desc. +// consistent with the variable labels in Desc or if Desc is invalid. func NewConstSummary( desc *Desc, count uint64, @@ -594,6 +594,9 @@ func NewConstSummary( quantiles map[float64]float64, labelValues ...string, ) (Metric, error) { + if desc.err != nil { + return nil, desc.err + } if err := validateLabelValues(labelValues, len(desc.variableLabels)); err != nil { return nil, err } diff --git a/vendor/github.com/prometheus/client_golang/prometheus/value.go b/vendor/github.com/prometheus/client_golang/prometheus/value.go index 9fb7eab0..eb248f10 100644 --- a/vendor/github.com/prometheus/client_golang/prometheus/value.go +++ b/vendor/github.com/prometheus/client_golang/prometheus/value.go @@ -17,9 +17,9 @@ import ( "fmt" "sort" - dto "github.com/prometheus/client_model/go" - "github.com/golang/protobuf/proto" + + dto "github.com/prometheus/client_model/go" ) // ValueType is an enumeration of metric types that represent a simple value. @@ -77,8 +77,12 @@ func (v *valueFunc) Write(out *dto.Metric) error { // operations. However, when implementing custom Collectors, it is useful as a // throw-away metric that is generated on the fly to send it to Prometheus in // the Collect method. NewConstMetric returns an error if the length of -// labelValues is not consistent with the variable labels in Desc. +// labelValues is not consistent with the variable labels in Desc or if Desc is +// invalid. func NewConstMetric(desc *Desc, valueType ValueType, value float64, labelValues ...string) (Metric, error) { + if desc.err != nil { + return nil, desc.err + } if err := validateLabelValues(labelValues, len(desc.variableLabels)); err != nil { return nil, err } @@ -153,6 +157,6 @@ func makeLabelPairs(desc *Desc, labelValues []string) []*dto.LabelPair { }) } labelPairs = append(labelPairs, desc.constLabelPairs...) - sort.Sort(LabelPairSorter(labelPairs)) + sort.Sort(labelPairSorter(labelPairs)) return labelPairs } diff --git a/vendor/github.com/prometheus/client_golang/prometheus/wrap.go b/vendor/github.com/prometheus/client_golang/prometheus/wrap.go new file mode 100644 index 00000000..49159bf3 --- /dev/null +++ b/vendor/github.com/prometheus/client_golang/prometheus/wrap.go @@ -0,0 +1,179 @@ +// Copyright 2018 The Prometheus Authors +// Licensed 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. + +package prometheus + +import ( + "fmt" + "sort" + + "github.com/golang/protobuf/proto" + + dto "github.com/prometheus/client_model/go" +) + +// WrapRegistererWith returns a Registerer wrapping the provided +// Registerer. Collectors registered with the returned Registerer will be +// registered with the wrapped Registerer in a modified way. The modified +// Collector adds the provided Labels to all Metrics it collects (as +// ConstLabels). The Metrics collected by the unmodified Collector must not +// duplicate any of those labels. +// +// WrapRegistererWith provides a way to add fixed labels to a subset of +// Collectors. It should not be used to add fixed labels to all metrics exposed. +// +// The Collector example demonstrates a use of WrapRegistererWith. +func WrapRegistererWith(labels Labels, reg Registerer) Registerer { + return &wrappingRegisterer{ + wrappedRegisterer: reg, + labels: labels, + } +} + +// WrapRegistererWithPrefix returns a Registerer wrapping the provided +// Registerer. Collectors registered with the returned Registerer will be +// registered with the wrapped Registerer in a modified way. The modified +// Collector adds the provided prefix to the name of all Metrics it collects. +// +// WrapRegistererWithPrefix is useful to have one place to prefix all metrics of +// a sub-system. To make this work, register metrics of the sub-system with the +// wrapping Registerer returned by WrapRegistererWithPrefix. It is rarely useful +// to use the same prefix for all metrics exposed. In particular, do not prefix +// metric names that are standardized across applications, as that would break +// horizontal monitoring, for example the metrics provided by the Go collector +// (see NewGoCollector) and the process collector (see NewProcessCollector). (In +// fact, those metrics are already prefixed with “go_” or “process_”, +// respectively.) +func WrapRegistererWithPrefix(prefix string, reg Registerer) Registerer { + return &wrappingRegisterer{ + wrappedRegisterer: reg, + prefix: prefix, + } +} + +type wrappingRegisterer struct { + wrappedRegisterer Registerer + prefix string + labels Labels +} + +func (r *wrappingRegisterer) Register(c Collector) error { + return r.wrappedRegisterer.Register(&wrappingCollector{ + wrappedCollector: c, + prefix: r.prefix, + labels: r.labels, + }) +} + +func (r *wrappingRegisterer) MustRegister(cs ...Collector) { + for _, c := range cs { + if err := r.Register(c); err != nil { + panic(err) + } + } +} + +func (r *wrappingRegisterer) Unregister(c Collector) bool { + return r.wrappedRegisterer.Unregister(&wrappingCollector{ + wrappedCollector: c, + prefix: r.prefix, + labels: r.labels, + }) +} + +type wrappingCollector struct { + wrappedCollector Collector + prefix string + labels Labels +} + +func (c *wrappingCollector) Collect(ch chan<- Metric) { + wrappedCh := make(chan Metric) + go func() { + c.wrappedCollector.Collect(wrappedCh) + close(wrappedCh) + }() + for m := range wrappedCh { + ch <- &wrappingMetric{ + wrappedMetric: m, + prefix: c.prefix, + labels: c.labels, + } + } +} + +func (c *wrappingCollector) Describe(ch chan<- *Desc) { + wrappedCh := make(chan *Desc) + go func() { + c.wrappedCollector.Describe(wrappedCh) + close(wrappedCh) + }() + for desc := range wrappedCh { + ch <- wrapDesc(desc, c.prefix, c.labels) + } +} + +type wrappingMetric struct { + wrappedMetric Metric + prefix string + labels Labels +} + +func (m *wrappingMetric) Desc() *Desc { + return wrapDesc(m.wrappedMetric.Desc(), m.prefix, m.labels) +} + +func (m *wrappingMetric) Write(out *dto.Metric) error { + if err := m.wrappedMetric.Write(out); err != nil { + return err + } + if len(m.labels) == 0 { + // No wrapping labels. + return nil + } + for ln, lv := range m.labels { + out.Label = append(out.Label, &dto.LabelPair{ + Name: proto.String(ln), + Value: proto.String(lv), + }) + } + sort.Sort(labelPairSorter(out.Label)) + return nil +} + +func wrapDesc(desc *Desc, prefix string, labels Labels) *Desc { + constLabels := Labels{} + for _, lp := range desc.constLabelPairs { + constLabels[*lp.Name] = *lp.Value + } + for ln, lv := range labels { + if _, alreadyUsed := constLabels[ln]; alreadyUsed { + return &Desc{ + fqName: desc.fqName, + help: desc.help, + variableLabels: desc.variableLabels, + constLabelPairs: desc.constLabelPairs, + err: fmt.Errorf("attempted wrapping with already existing label name %q", ln), + } + } + constLabels[ln] = lv + } + // NewDesc will do remaining validations. + newDesc := NewDesc(prefix+desc.fqName, desc.help, desc.variableLabels, constLabels) + // Propagate errors if there was any. This will override any errer + // created by NewDesc above, i.e. earlier errors get precedence. + if desc.err != nil { + newDesc.err = desc.err + } + return newDesc +} diff --git a/vendor/github.com/prometheus/common/expfmt/text_parse.go b/vendor/github.com/prometheus/common/expfmt/text_parse.go index b86290af..ec3d86ba 100644 --- a/vendor/github.com/prometheus/common/expfmt/text_parse.go +++ b/vendor/github.com/prometheus/common/expfmt/text_parse.go @@ -359,7 +359,7 @@ func (p *TextParser) startLabelValue() stateFn { } return p.readingValue default: - p.parseError(fmt.Sprintf("unexpected end of label value %q", p.currentLabelPair.Value)) + p.parseError(fmt.Sprintf("unexpected end of label value %q", p.currentLabelPair.GetValue())) return nil } } diff --git a/vendor/github.com/shurcooL/httpfs/html/vfstemplate/vfstemplate.go b/vendor/github.com/shurcooL/httpfs/html/vfstemplate/vfstemplate.go new file mode 100644 index 00000000..67073204 --- /dev/null +++ b/vendor/github.com/shurcooL/httpfs/html/vfstemplate/vfstemplate.go @@ -0,0 +1,73 @@ +// Package vfstemplate offers html/template helpers that use http.FileSystem. +package vfstemplate + +import ( + "fmt" + "html/template" + "net/http" + "path" + + "github.com/shurcooL/httpfs/path/vfspath" + "github.com/shurcooL/httpfs/vfsutil" +) + +// ParseFiles creates a new Template if t is nil and parses the template definitions from +// the named files. The returned template's name will have the (base) name and +// (parsed) contents of the first file. There must be at least one file. +// If an error occurs, parsing stops and the returned *Template is nil. +func ParseFiles(fs http.FileSystem, t *template.Template, filenames ...string) (*template.Template, error) { + return parseFiles(fs, t, filenames...) +} + +// ParseGlob parses the template definitions in the files identified by the +// pattern and associates the resulting templates with t. The pattern is +// processed by vfspath.Glob and must match at least one file. ParseGlob is +// equivalent to calling t.ParseFiles with the list of files matched by the +// pattern. +func ParseGlob(fs http.FileSystem, t *template.Template, pattern string) (*template.Template, error) { + filenames, err := vfspath.Glob(fs, pattern) + if err != nil { + return nil, err + } + if len(filenames) == 0 { + return nil, fmt.Errorf("vfs/html/vfstemplate: pattern matches no files: %#q", pattern) + } + return parseFiles(fs, t, filenames...) +} + +// parseFiles is the helper for the method and function. If the argument +// template is nil, it is created from the first file. +func parseFiles(fs http.FileSystem, t *template.Template, filenames ...string) (*template.Template, error) { + if len(filenames) == 0 { + // Not really a problem, but be consistent. + return nil, fmt.Errorf("vfs/html/vfstemplate: no files named in call to ParseFiles") + } + for _, filename := range filenames { + b, err := vfsutil.ReadFile(fs, filename) + if err != nil { + return nil, err + } + s := string(b) + name := path.Base(filename) + // First template becomes return value if not already defined, + // and we use that one for subsequent New calls to associate + // all the templates together. Also, if this file has the same name + // as t, this file becomes the contents of t, so + // t, err := New(name).Funcs(xxx).ParseFiles(name) + // works. Otherwise we create a new template associated with t. + var tmpl *template.Template + if t == nil { + t = template.New(name) + } + if name == t.Name() { + tmpl = t + } else { + tmpl = t.New(name) + } + _, err = tmpl.Parse(s) + if err != nil { + return nil, err + } + } + return t, nil +} diff --git a/vendor/github.com/shurcooL/httpfs/path/vfspath/match.go b/vendor/github.com/shurcooL/httpfs/path/vfspath/match.go new file mode 100644 index 00000000..579f2185 --- /dev/null +++ b/vendor/github.com/shurcooL/httpfs/path/vfspath/match.go @@ -0,0 +1,105 @@ +// Package vfspath implements utility routines for manipulating virtual file system paths. +package vfspath + +import ( + "net/http" + "os" + "path" + "sort" + "strings" + + "github.com/shurcooL/httpfs/vfsutil" +) + +const separator = "/" + +// Glob returns the names of all files matching pattern or nil +// if there is no matching file. The syntax of patterns is the same +// as in path.Match. The pattern may describe hierarchical names such as +// /usr/*/bin/ed. +// +// Glob ignores file system errors such as I/O errors reading directories. +// The only possible returned error is ErrBadPattern, when pattern +// is malformed. +func Glob(fs http.FileSystem, pattern string) (matches []string, err error) { + if !hasMeta(pattern) { + if _, err = vfsutil.Stat(fs, pattern); err != nil { + return nil, nil + } + return []string{pattern}, nil + } + + dir, file := path.Split(pattern) + switch dir { + case "": + dir = "." + case string(separator): + // nothing + default: + dir = dir[0 : len(dir)-1] // chop off trailing separator + } + + if !hasMeta(dir) { + return glob(fs, dir, file, nil) + } + + var m []string + m, err = Glob(fs, dir) + if err != nil { + return + } + for _, d := range m { + matches, err = glob(fs, d, file, matches) + if err != nil { + return + } + } + return +} + +// glob searches for files matching pattern in the directory dir +// and appends them to matches. If the directory cannot be +// opened, it returns the existing matches. New matches are +// added in lexicographical order. +func glob(fs http.FileSystem, dir, pattern string, matches []string) (m []string, e error) { + m = matches + fi, err := vfsutil.Stat(fs, dir) + if err != nil { + return + } + if !fi.IsDir() { + return + } + fis, err := vfsutil.ReadDir(fs, dir) + if err != nil { + return + } + + sort.Sort(byName(fis)) + + for _, fi := range fis { + n := fi.Name() + matched, err := path.Match(path.Clean(pattern), n) + if err != nil { + return m, err + } + if matched { + m = append(m, path.Join(dir, n)) + } + } + return +} + +// hasMeta reports whether path contains any of the magic characters +// recognized by Match. +func hasMeta(path string) bool { + // TODO(niemeyer): Should other magic characters be added here? + return strings.ContainsAny(path, "*?[") +} + +// byName implements sort.Interface. +type byName []os.FileInfo + +func (f byName) Len() int { return len(f) } +func (f byName) Less(i, j int) bool { return f[i].Name() < f[j].Name() } +func (f byName) Swap(i, j int) { f[i], f[j] = f[j], f[i] } diff --git a/vendor/github.com/shurcooL/httpfs/vfsutil/file.go b/vendor/github.com/shurcooL/httpfs/vfsutil/file.go new file mode 100644 index 00000000..4cb0dada --- /dev/null +++ b/vendor/github.com/shurcooL/httpfs/vfsutil/file.go @@ -0,0 +1,21 @@ +package vfsutil + +import ( + "net/http" + "os" +) + +// File implements http.FileSystem using the native file system restricted to a +// specific file served at root. +// +// While the FileSystem.Open method takes '/'-separated paths, a File's string +// value is a filename on the native file system, not a URL, so it is separated +// by filepath.Separator, which isn't necessarily '/'. +type File string + +func (f File) Open(name string) (http.File, error) { + if name != "/" { + return nil, &os.PathError{Op: "open", Path: name, Err: os.ErrNotExist} + } + return os.Open(string(f)) +} diff --git a/vendor/github.com/shurcooL/httpfs/vfsutil/vfsutil.go b/vendor/github.com/shurcooL/httpfs/vfsutil/vfsutil.go new file mode 100644 index 00000000..df071d11 --- /dev/null +++ b/vendor/github.com/shurcooL/httpfs/vfsutil/vfsutil.go @@ -0,0 +1,39 @@ +// Package vfsutil implements some I/O utility functions for http.FileSystem. +package vfsutil + +import ( + "io/ioutil" + "net/http" + "os" +) + +// ReadDir reads the contents of the directory associated with file and +// returns a slice of FileInfo values in directory order. +func ReadDir(fs http.FileSystem, name string) ([]os.FileInfo, error) { + f, err := fs.Open(name) + if err != nil { + return nil, err + } + defer f.Close() + return f.Readdir(0) +} + +// Stat returns the FileInfo structure describing file. +func Stat(fs http.FileSystem, name string) (os.FileInfo, error) { + f, err := fs.Open(name) + if err != nil { + return nil, err + } + defer f.Close() + return f.Stat() +} + +// ReadFile reads the file named by path from fs and returns the contents. +func ReadFile(fs http.FileSystem, path string) ([]byte, error) { + rc, err := fs.Open(path) + if err != nil { + return nil, err + } + defer rc.Close() + return ioutil.ReadAll(rc) +} diff --git a/vendor/github.com/shurcooL/httpfs/vfsutil/walk.go b/vendor/github.com/shurcooL/httpfs/vfsutil/walk.go new file mode 100644 index 00000000..f256bbec --- /dev/null +++ b/vendor/github.com/shurcooL/httpfs/vfsutil/walk.go @@ -0,0 +1,146 @@ +package vfsutil + +import ( + "io" + "net/http" + "os" + pathpkg "path" + "path/filepath" + "sort" +) + +// Walk walks the filesystem rooted at root, calling walkFn for each file or +// directory in the filesystem, including root. All errors that arise visiting files +// and directories are filtered by walkFn. The files are walked in lexical +// order. +func Walk(fs http.FileSystem, root string, walkFn filepath.WalkFunc) error { + info, err := Stat(fs, root) + if err != nil { + return walkFn(root, nil, err) + } + return walk(fs, root, info, walkFn) +} + +// readDirNames reads the directory named by dirname and returns +// a sorted list of directory entries. +func readDirNames(fs http.FileSystem, dirname string) ([]string, error) { + fis, err := ReadDir(fs, dirname) + if err != nil { + return nil, err + } + names := make([]string, len(fis)) + for i := range fis { + names[i] = fis[i].Name() + } + sort.Strings(names) + return names, nil +} + +// walk recursively descends path, calling walkFn. +func walk(fs http.FileSystem, path string, info os.FileInfo, walkFn filepath.WalkFunc) error { + err := walkFn(path, info, nil) + if err != nil { + if info.IsDir() && err == filepath.SkipDir { + return nil + } + return err + } + + if !info.IsDir() { + return nil + } + + names, err := readDirNames(fs, path) + if err != nil { + return walkFn(path, info, err) + } + + for _, name := range names { + filename := pathpkg.Join(path, name) + fileInfo, err := Stat(fs, filename) + if err != nil { + if err := walkFn(filename, fileInfo, err); err != nil && err != filepath.SkipDir { + return err + } + } else { + err = walk(fs, filename, fileInfo, walkFn) + if err != nil { + if !fileInfo.IsDir() || err != filepath.SkipDir { + return err + } + } + } + } + return nil +} + +// WalkFilesFunc is the type of the function called for each file or directory visited by WalkFiles. +// It's like filepath.WalkFunc, except it provides an additional ReadSeeker parameter for file being visited. +type WalkFilesFunc func(path string, info os.FileInfo, rs io.ReadSeeker, err error) error + +// WalkFiles walks the filesystem rooted at root, calling walkFn for each file or +// directory in the filesystem, including root. In addition to FileInfo, it passes an +// ReadSeeker to walkFn for each file it visits. +func WalkFiles(fs http.FileSystem, root string, walkFn WalkFilesFunc) error { + file, info, err := openStat(fs, root) + if err != nil { + return walkFn(root, nil, nil, err) + } + return walkFiles(fs, root, info, file, walkFn) +} + +// walkFiles recursively descends path, calling walkFn. +// It closes the input file after it's done with it, so the caller shouldn't. +func walkFiles(fs http.FileSystem, path string, info os.FileInfo, file http.File, walkFn WalkFilesFunc) error { + err := walkFn(path, info, file, nil) + file.Close() + if err != nil { + if info.IsDir() && err == filepath.SkipDir { + return nil + } + return err + } + + if !info.IsDir() { + return nil + } + + names, err := readDirNames(fs, path) + if err != nil { + return walkFn(path, info, nil, err) + } + + for _, name := range names { + filename := pathpkg.Join(path, name) + file, fileInfo, err := openStat(fs, filename) + if err != nil { + if err := walkFn(filename, nil, nil, err); err != nil && err != filepath.SkipDir { + return err + } + } else { + err = walkFiles(fs, filename, fileInfo, file, walkFn) + // file is closed by walkFiles, so we don't need to close it here. + if err != nil { + if !fileInfo.IsDir() || err != filepath.SkipDir { + return err + } + } + } + } + return nil +} + +// openStat performs Open and Stat and returns results, or first error encountered. +// The caller is responsible for closing the returned file when done. +func openStat(fs http.FileSystem, name string) (http.File, os.FileInfo, error) { + f, err := fs.Open(name) + if err != nil { + return nil, nil, err + } + fi, err := f.Stat() + if err != nil { + f.Close() + return nil, nil, err + } + return f, fi, nil +} diff --git a/vendor/github.com/shurcooL/vfsgen/commentwriter.go b/vendor/github.com/shurcooL/vfsgen/commentwriter.go new file mode 100644 index 00000000..b6847f52 --- /dev/null +++ b/vendor/github.com/shurcooL/vfsgen/commentwriter.go @@ -0,0 +1,45 @@ +package vfsgen + +import "io" + +// commentWriter writes a Go comment to the underlying io.Writer, +// using line comment form (//). +type commentWriter struct { + W io.Writer + wroteSlashes bool // Wrote "//" at the beginning of the current line. +} + +func (c *commentWriter) Write(p []byte) (int, error) { + var n int + for i, b := range p { + if !c.wroteSlashes { + s := "//" + if b != '\n' { + s = "// " + } + if _, err := io.WriteString(c.W, s); err != nil { + return n, err + } + c.wroteSlashes = true + } + n0, err := c.W.Write(p[i : i+1]) + n += n0 + if err != nil { + return n, err + } + if b == '\n' { + c.wroteSlashes = false + } + } + return len(p), nil +} + +func (c *commentWriter) Close() error { + if !c.wroteSlashes { + if _, err := io.WriteString(c.W, "//"); err != nil { + return err + } + c.wroteSlashes = true + } + return nil +} diff --git a/vendor/github.com/shurcooL/vfsgen/doc.go b/vendor/github.com/shurcooL/vfsgen/doc.go new file mode 100644 index 00000000..46f28504 --- /dev/null +++ b/vendor/github.com/shurcooL/vfsgen/doc.go @@ -0,0 +1,15 @@ +/* +Package vfsgen takes an http.FileSystem (likely at `go generate` time) and +generates Go code that statically implements the provided http.FileSystem. + +Features: + +- Efficient generated code without unneccessary overhead. + +- Uses gzip compression internally (selectively, only for files that compress well). + +- Enables direct access to internal gzip compressed bytes via an optional interface. + +- Outputs `gofmt`ed Go code. +*/ +package vfsgen diff --git a/vendor/github.com/shurcooL/vfsgen/generator.go b/vendor/github.com/shurcooL/vfsgen/generator.go new file mode 100644 index 00000000..5782693e --- /dev/null +++ b/vendor/github.com/shurcooL/vfsgen/generator.go @@ -0,0 +1,485 @@ +package vfsgen + +import ( + "bytes" + "compress/gzip" + "errors" + "fmt" + "io" + "io/ioutil" + "net/http" + "os" + pathpkg "path" + "sort" + "strconv" + "text/template" + "time" + + "github.com/shurcooL/httpfs/vfsutil" +) + +// Generate Go code that statically implements input filesystem, +// write the output to a file specified in opt. +func Generate(input http.FileSystem, opt Options) error { + opt.fillMissing() + + // Use an in-memory buffer to generate the entire output. + buf := new(bytes.Buffer) + + err := t.ExecuteTemplate(buf, "Header", opt) + if err != nil { + return err + } + + var toc toc + err = findAndWriteFiles(buf, input, &toc) + if err != nil { + return err + } + + err = t.ExecuteTemplate(buf, "DirEntries", toc.dirs) + if err != nil { + return err + } + + err = t.ExecuteTemplate(buf, "Trailer", toc) + if err != nil { + return err + } + + // Write output file (all at once). + fmt.Println("writing", opt.Filename) + err = ioutil.WriteFile(opt.Filename, buf.Bytes(), 0644) + return err +} + +type toc struct { + dirs []*dirInfo + + HasCompressedFile bool // There's at least one compressedFile. + HasFile bool // There's at least one uncompressed file. +} + +// fileInfo is a definition of a file. +type fileInfo struct { + Path string + Name string + ModTime time.Time + UncompressedSize int64 +} + +// dirInfo is a definition of a directory. +type dirInfo struct { + Path string + Name string + ModTime time.Time + Entries []string +} + +// findAndWriteFiles recursively finds all the file paths in the given directory tree. +// They are added to the given map as keys. Values will be safe function names +// for each file, which will be used when generating the output code. +func findAndWriteFiles(buf *bytes.Buffer, fs http.FileSystem, toc *toc) error { + walkFn := func(path string, fi os.FileInfo, r io.ReadSeeker, err error) error { + if err != nil { + // Consider all errors reading the input filesystem as fatal. + return err + } + + switch fi.IsDir() { + case false: + file := &fileInfo{ + Path: path, + Name: pathpkg.Base(path), + ModTime: fi.ModTime().UTC(), + UncompressedSize: fi.Size(), + } + + marker := buf.Len() + + // Write CompressedFileInfo. + err = writeCompressedFileInfo(buf, file, r) + switch err { + default: + return err + case nil: + toc.HasCompressedFile = true + // If compressed file is not smaller than original, revert and write original file. + case errCompressedNotSmaller: + _, err = r.Seek(0, io.SeekStart) + if err != nil { + return err + } + + buf.Truncate(marker) + + // Write FileInfo. + err = writeFileInfo(buf, file, r) + if err != nil { + return err + } + toc.HasFile = true + } + case true: + entries, err := readDirPaths(fs, path) + if err != nil { + return err + } + + dir := &dirInfo{ + Path: path, + Name: pathpkg.Base(path), + ModTime: fi.ModTime().UTC(), + Entries: entries, + } + + toc.dirs = append(toc.dirs, dir) + + // Write DirInfo. + err = t.ExecuteTemplate(buf, "DirInfo", dir) + if err != nil { + return err + } + } + + return nil + } + + err := vfsutil.WalkFiles(fs, "/", walkFn) + return err +} + +// readDirPaths reads the directory named by dirname and returns +// a sorted list of directory paths. +func readDirPaths(fs http.FileSystem, dirname string) ([]string, error) { + fis, err := vfsutil.ReadDir(fs, dirname) + if err != nil { + return nil, err + } + paths := make([]string, len(fis)) + for i := range fis { + paths[i] = pathpkg.Join(dirname, fis[i].Name()) + } + sort.Strings(paths) + return paths, nil +} + +// writeCompressedFileInfo writes CompressedFileInfo. +// It returns errCompressedNotSmaller if compressed file is not smaller than original. +func writeCompressedFileInfo(w io.Writer, file *fileInfo, r io.Reader) error { + err := t.ExecuteTemplate(w, "CompressedFileInfo-Before", file) + if err != nil { + return err + } + sw := &stringWriter{Writer: w} + gw := gzip.NewWriter(sw) + _, err = io.Copy(gw, r) + if err != nil { + return err + } + err = gw.Close() + if err != nil { + return err + } + if sw.N >= file.UncompressedSize { + return errCompressedNotSmaller + } + err = t.ExecuteTemplate(w, "CompressedFileInfo-After", file) + return err +} + +var errCompressedNotSmaller = errors.New("compressed file is not smaller than original") + +// Write FileInfo. +func writeFileInfo(w io.Writer, file *fileInfo, r io.Reader) error { + err := t.ExecuteTemplate(w, "FileInfo-Before", file) + if err != nil { + return err + } + sw := &stringWriter{Writer: w} + _, err = io.Copy(sw, r) + if err != nil { + return err + } + err = t.ExecuteTemplate(w, "FileInfo-After", file) + return err +} + +var t = template.Must(template.New("").Funcs(template.FuncMap{ + "quote": strconv.Quote, + "comment": func(s string) (string, error) { + var buf bytes.Buffer + cw := &commentWriter{W: &buf} + _, err := io.WriteString(cw, s) + if err != nil { + return "", err + } + err = cw.Close() + return buf.String(), err + }, +}).Parse(`{{define "Header"}}// Code generated by vfsgen; DO NOT EDIT. + +{{with .BuildTags}}// +build {{.}} + +{{end}}package {{.PackageName}} + +import ( + "bytes" + "compress/gzip" + "fmt" + "io" + "io/ioutil" + "net/http" + "os" + pathpkg "path" + "time" +) + +{{comment .VariableComment}} +var {{.VariableName}} = func() http.FileSystem { + fs := vfsgen۰FS{ +{{end}} + + + +{{define "CompressedFileInfo-Before"}} {{quote .Path}}: &vfsgen۰CompressedFileInfo{ + name: {{quote .Name}}, + modTime: {{template "Time" .ModTime}}, + uncompressedSize: {{.UncompressedSize}}, +{{/* This blank line separating compressedContent is neccessary to prevent potential gofmt issues. See issue #19. */}} + compressedContent: []byte("{{end}}{{define "CompressedFileInfo-After"}}"), + }, +{{end}} + + + +{{define "FileInfo-Before"}} {{quote .Path}}: &vfsgen۰FileInfo{ + name: {{quote .Name}}, + modTime: {{template "Time" .ModTime}}, + content: []byte("{{end}}{{define "FileInfo-After"}}"), + }, +{{end}} + + + +{{define "DirInfo"}} {{quote .Path}}: &vfsgen۰DirInfo{ + name: {{quote .Name}}, + modTime: {{template "Time" .ModTime}}, + }, +{{end}} + + + +{{define "DirEntries"}} } +{{range .}}{{if .Entries}} fs[{{quote .Path}}].(*vfsgen۰DirInfo).entries = []os.FileInfo{{"{"}}{{range .Entries}} + fs[{{quote .}}].(os.FileInfo),{{end}} + } +{{end}}{{end}} + return fs +}() +{{end}} + + + +{{define "Trailer"}} +type vfsgen۰FS map[string]interface{} + +func (fs vfsgen۰FS) Open(path string) (http.File, error) { + path = pathpkg.Clean("/" + path) + f, ok := fs[path] + if !ok { + return nil, &os.PathError{Op: "open", Path: path, Err: os.ErrNotExist} + } + + switch f := f.(type) {{"{"}}{{if .HasCompressedFile}} + case *vfsgen۰CompressedFileInfo: + gr, err := gzip.NewReader(bytes.NewReader(f.compressedContent)) + if err != nil { + // This should never happen because we generate the gzip bytes such that they are always valid. + panic("unexpected error reading own gzip compressed bytes: " + err.Error()) + } + return &vfsgen۰CompressedFile{ + vfsgen۰CompressedFileInfo: f, + gr: gr, + }, nil{{end}}{{if .HasFile}} + case *vfsgen۰FileInfo: + return &vfsgen۰File{ + vfsgen۰FileInfo: f, + Reader: bytes.NewReader(f.content), + }, nil{{end}} + case *vfsgen۰DirInfo: + return &vfsgen۰Dir{ + vfsgen۰DirInfo: f, + }, nil + default: + // This should never happen because we generate only the above types. + panic(fmt.Sprintf("unexpected type %T", f)) + } +} +{{if .HasCompressedFile}} +// vfsgen۰CompressedFileInfo is a static definition of a gzip compressed file. +type vfsgen۰CompressedFileInfo struct { + name string + modTime time.Time + compressedContent []byte + uncompressedSize int64 +} + +func (f *vfsgen۰CompressedFileInfo) Readdir(count int) ([]os.FileInfo, error) { + return nil, fmt.Errorf("cannot Readdir from file %s", f.name) +} +func (f *vfsgen۰CompressedFileInfo) Stat() (os.FileInfo, error) { return f, nil } + +func (f *vfsgen۰CompressedFileInfo) GzipBytes() []byte { + return f.compressedContent +} + +func (f *vfsgen۰CompressedFileInfo) Name() string { return f.name } +func (f *vfsgen۰CompressedFileInfo) Size() int64 { return f.uncompressedSize } +func (f *vfsgen۰CompressedFileInfo) Mode() os.FileMode { return 0444 } +func (f *vfsgen۰CompressedFileInfo) ModTime() time.Time { return f.modTime } +func (f *vfsgen۰CompressedFileInfo) IsDir() bool { return false } +func (f *vfsgen۰CompressedFileInfo) Sys() interface{} { return nil } + +// vfsgen۰CompressedFile is an opened compressedFile instance. +type vfsgen۰CompressedFile struct { + *vfsgen۰CompressedFileInfo + gr *gzip.Reader + grPos int64 // Actual gr uncompressed position. + seekPos int64 // Seek uncompressed position. +} + +func (f *vfsgen۰CompressedFile) Read(p []byte) (n int, err error) { + if f.grPos > f.seekPos { + // Rewind to beginning. + err = f.gr.Reset(bytes.NewReader(f.compressedContent)) + if err != nil { + return 0, err + } + f.grPos = 0 + } + if f.grPos < f.seekPos { + // Fast-forward. + _, err = io.CopyN(ioutil.Discard, f.gr, f.seekPos-f.grPos) + if err != nil { + return 0, err + } + f.grPos = f.seekPos + } + n, err = f.gr.Read(p) + f.grPos += int64(n) + f.seekPos = f.grPos + return n, err +} +func (f *vfsgen۰CompressedFile) Seek(offset int64, whence int) (int64, error) { + switch whence { + case io.SeekStart: + f.seekPos = 0 + offset + case io.SeekCurrent: + f.seekPos += offset + case io.SeekEnd: + f.seekPos = f.uncompressedSize + offset + default: + panic(fmt.Errorf("invalid whence value: %v", whence)) + } + return f.seekPos, nil +} +func (f *vfsgen۰CompressedFile) Close() error { + return f.gr.Close() +} +{{else}} +// We already imported "compress/gzip" and "io/ioutil", but ended up not using them. Avoid unused import error. +var _ = gzip.Reader{} +var _ = ioutil.Discard +{{end}}{{if .HasFile}} +// vfsgen۰FileInfo is a static definition of an uncompressed file (because it's not worth gzip compressing). +type vfsgen۰FileInfo struct { + name string + modTime time.Time + content []byte +} + +func (f *vfsgen۰FileInfo) Readdir(count int) ([]os.FileInfo, error) { + return nil, fmt.Errorf("cannot Readdir from file %s", f.name) +} +func (f *vfsgen۰FileInfo) Stat() (os.FileInfo, error) { return f, nil } + +func (f *vfsgen۰FileInfo) NotWorthGzipCompressing() {} + +func (f *vfsgen۰FileInfo) Name() string { return f.name } +func (f *vfsgen۰FileInfo) Size() int64 { return int64(len(f.content)) } +func (f *vfsgen۰FileInfo) Mode() os.FileMode { return 0444 } +func (f *vfsgen۰FileInfo) ModTime() time.Time { return f.modTime } +func (f *vfsgen۰FileInfo) IsDir() bool { return false } +func (f *vfsgen۰FileInfo) Sys() interface{} { return nil } + +// vfsgen۰File is an opened file instance. +type vfsgen۰File struct { + *vfsgen۰FileInfo + *bytes.Reader +} + +func (f *vfsgen۰File) Close() error { + return nil +} +{{else if not .HasCompressedFile}} +// We already imported "bytes", but ended up not using it. Avoid unused import error. +var _ = bytes.Reader{} +{{end}} +// vfsgen۰DirInfo is a static definition of a directory. +type vfsgen۰DirInfo struct { + name string + modTime time.Time + entries []os.FileInfo +} + +func (d *vfsgen۰DirInfo) Read([]byte) (int, error) { + return 0, fmt.Errorf("cannot Read from directory %s", d.name) +} +func (d *vfsgen۰DirInfo) Close() error { return nil } +func (d *vfsgen۰DirInfo) Stat() (os.FileInfo, error) { return d, nil } + +func (d *vfsgen۰DirInfo) Name() string { return d.name } +func (d *vfsgen۰DirInfo) Size() int64 { return 0 } +func (d *vfsgen۰DirInfo) Mode() os.FileMode { return 0755 | os.ModeDir } +func (d *vfsgen۰DirInfo) ModTime() time.Time { return d.modTime } +func (d *vfsgen۰DirInfo) IsDir() bool { return true } +func (d *vfsgen۰DirInfo) Sys() interface{} { return nil } + +// vfsgen۰Dir is an opened dir instance. +type vfsgen۰Dir struct { + *vfsgen۰DirInfo + pos int // Position within entries for Seek and Readdir. +} + +func (d *vfsgen۰Dir) Seek(offset int64, whence int) (int64, error) { + if offset == 0 && whence == io.SeekStart { + d.pos = 0 + return 0, nil + } + return 0, fmt.Errorf("unsupported Seek in directory %s", d.name) +} + +func (d *vfsgen۰Dir) Readdir(count int) ([]os.FileInfo, error) { + if d.pos >= len(d.entries) && count > 0 { + return nil, io.EOF + } + if count <= 0 || count > len(d.entries)-d.pos { + count = len(d.entries) - d.pos + } + e := d.entries[d.pos : d.pos+count] + d.pos += count + return e, nil +} +{{end}} + + + +{{define "Time"}} +{{- if .IsZero -}} + time.Time{} +{{- else -}} + time.Date({{.Year}}, {{printf "%d" .Month}}, {{.Day}}, {{.Hour}}, {{.Minute}}, {{.Second}}, {{.Nanosecond}}, time.UTC) +{{- end -}} +{{end}} +`)) diff --git a/vendor/github.com/shurcooL/vfsgen/options.go b/vendor/github.com/shurcooL/vfsgen/options.go new file mode 100644 index 00000000..d10d348e --- /dev/null +++ b/vendor/github.com/shurcooL/vfsgen/options.go @@ -0,0 +1,45 @@ +package vfsgen + +import ( + "fmt" + "strings" +) + +// Options for vfsgen code generation. +type Options struct { + // Filename of the generated Go code output (including extension). + // If left empty, it defaults to "{{toLower .VariableName}}_vfsdata.go". + Filename string + + // PackageName is the name of the package in the generated code. + // If left empty, it defaults to "main". + PackageName string + + // BuildTags are the optional build tags in the generated code. + // The build tags syntax is specified by the go tool. + BuildTags string + + // VariableName is the name of the http.FileSystem variable in the generated code. + // If left empty, it defaults to "assets". + VariableName string + + // VariableComment is the comment of the http.FileSystem variable in the generated code. + // If left empty, it defaults to "{{.VariableName}} statically implements the virtual filesystem provided to vfsgen.". + VariableComment string +} + +// fillMissing sets default values for mandatory options that are left empty. +func (opt *Options) fillMissing() { + if opt.PackageName == "" { + opt.PackageName = "main" + } + if opt.VariableName == "" { + opt.VariableName = "assets" + } + if opt.Filename == "" { + opt.Filename = fmt.Sprintf("%s_vfsdata.go", strings.ToLower(opt.VariableName)) + } + if opt.VariableComment == "" { + opt.VariableComment = fmt.Sprintf("%s statically implements the virtual filesystem provided to vfsgen.", opt.VariableName) + } +} diff --git a/vendor/github.com/shurcooL/vfsgen/stringwriter.go b/vendor/github.com/shurcooL/vfsgen/stringwriter.go new file mode 100644 index 00000000..a781efdc --- /dev/null +++ b/vendor/github.com/shurcooL/vfsgen/stringwriter.go @@ -0,0 +1,27 @@ +package vfsgen + +import ( + "io" +) + +// stringWriter writes given bytes to underlying io.Writer as a Go interpreted string literal value, +// not including double quotes. It tracks the total number of bytes written. +type stringWriter struct { + io.Writer + N int64 // Total bytes written. +} + +func (sw *stringWriter) Write(p []byte) (n int, err error) { + const hex = "0123456789abcdef" + buf := []byte{'\\', 'x', 0, 0} + for _, b := range p { + buf[2], buf[3] = hex[b/16], hex[b%16] + _, err = sw.Writer.Write(buf) + if err != nil { + return n, err + } + n++ + sw.N++ + } + return n, nil +} diff --git a/vendor/github.com/sirupsen/logrus/entry.go b/vendor/github.com/sirupsen/logrus/entry.go index 778f4c9f..473bd1a0 100644 --- a/vendor/github.com/sirupsen/logrus/entry.go +++ b/vendor/github.com/sirupsen/logrus/entry.go @@ -48,7 +48,7 @@ type Entry struct { func NewEntry(logger *Logger) *Entry { return &Entry{ Logger: logger, - // Default is three fields, give a little extra room + // Default is five fields, give a little extra room Data: make(Fields, 5), } } @@ -83,14 +83,28 @@ func (entry *Entry) WithFields(fields Fields) *Entry { for k, v := range fields { data[k] = v } - return &Entry{Logger: entry.Logger, Data: data} + return &Entry{Logger: entry.Logger, Data: data, Time: entry.Time} +} + +// Overrides the time of the Entry. +func (entry *Entry) WithTime(t time.Time) *Entry { + return &Entry{Logger: entry.Logger, Data: entry.Data, Time: t} } // This function is not declared with a pointer value because otherwise // race conditions will occur when using multiple goroutines func (entry Entry) log(level Level, msg string) { var buffer *bytes.Buffer - entry.Time = time.Now() + + // Default to now, but allow users to override if they want. + // + // We don't have to worry about polluting future calls to Entry#log() + // with this assignment because this function is declared with a + // non-pointer receiver. + if entry.Time.IsZero() { + entry.Time = time.Now() + } + entry.Level = level entry.Message = msg @@ -113,12 +127,10 @@ func (entry Entry) log(level Level, msg string) { } } -// This function is not declared with a pointer value because otherwise -// race conditions will occur when using multiple goroutines -func (entry Entry) fireHooks() { +func (entry *Entry) fireHooks() { entry.Logger.mu.Lock() defer entry.Logger.mu.Unlock() - err := entry.Logger.Hooks.Fire(entry.Level, &entry) + err := entry.Logger.Hooks.Fire(entry.Level, entry) if err != nil { fmt.Fprintf(os.Stderr, "Failed to fire hook: %v\n", err) } diff --git a/vendor/github.com/sirupsen/logrus/exported.go b/vendor/github.com/sirupsen/logrus/exported.go index 013183ed..eb612a6f 100644 --- a/vendor/github.com/sirupsen/logrus/exported.go +++ b/vendor/github.com/sirupsen/logrus/exported.go @@ -2,6 +2,7 @@ package logrus import ( "io" + "time" ) var ( @@ -15,9 +16,7 @@ func StandardLogger() *Logger { // SetOutput sets the standard logger output. func SetOutput(out io.Writer) { - std.mu.Lock() - defer std.mu.Unlock() - std.Out = out + std.SetOutput(out) } // SetFormatter sets the standard logger formatter. @@ -72,6 +71,15 @@ func WithFields(fields Fields) *Entry { return std.WithFields(fields) } +// WithTime creats an entry from the standard logger and overrides the time of +// logs generated with it. +// +// Note that it doesn't log until you call Debug, Print, Info, Warn, Fatal +// or Panic on the Entry it returns. +func WithTime(t time.Time) *Entry { + return std.WithTime(t) +} + // Debug logs a message at level Debug on the standard logger. func Debug(args ...interface{}) { std.Debug(args...) @@ -107,7 +115,7 @@ func Panic(args ...interface{}) { std.Panic(args...) } -// Fatal logs a message at level Fatal on the standard logger. +// Fatal logs a message at level Fatal on the standard logger then the process will exit with status set to 1. func Fatal(args ...interface{}) { std.Fatal(args...) } @@ -147,7 +155,7 @@ func Panicf(format string, args ...interface{}) { std.Panicf(format, args...) } -// Fatalf logs a message at level Fatal on the standard logger. +// Fatalf logs a message at level Fatal on the standard logger then the process will exit with status set to 1. func Fatalf(format string, args ...interface{}) { std.Fatalf(format, args...) } @@ -187,7 +195,7 @@ func Panicln(args ...interface{}) { std.Panicln(args...) } -// Fatalln logs a message at level Fatal on the standard logger. +// Fatalln logs a message at level Fatal on the standard logger then the process will exit with status set to 1. func Fatalln(args ...interface{}) { std.Fatalln(args...) } diff --git a/vendor/github.com/sirupsen/logrus/formatter.go b/vendor/github.com/sirupsen/logrus/formatter.go index b183ff5b..83c74947 100644 --- a/vendor/github.com/sirupsen/logrus/formatter.go +++ b/vendor/github.com/sirupsen/logrus/formatter.go @@ -30,16 +30,22 @@ type Formatter interface { // // It's not exported because it's still using Data in an opinionated way. It's to // avoid code duplication between the two default formatters. -func prefixFieldClashes(data Fields) { - if t, ok := data["time"]; ok { - data["fields.time"] = t +func prefixFieldClashes(data Fields, fieldMap FieldMap) { + timeKey := fieldMap.resolve(FieldKeyTime) + if t, ok := data[timeKey]; ok { + data["fields."+timeKey] = t + delete(data, timeKey) } - if m, ok := data["msg"]; ok { - data["fields.msg"] = m + msgKey := fieldMap.resolve(FieldKeyMsg) + if m, ok := data[msgKey]; ok { + data["fields."+msgKey] = m + delete(data, msgKey) } - if l, ok := data["level"]; ok { - data["fields.level"] = l + levelKey := fieldMap.resolve(FieldKeyLevel) + if l, ok := data[levelKey]; ok { + data["fields."+levelKey] = l + delete(data, levelKey) } } diff --git a/vendor/github.com/sirupsen/logrus/json_formatter.go b/vendor/github.com/sirupsen/logrus/json_formatter.go index fb01c1b1..dab17610 100644 --- a/vendor/github.com/sirupsen/logrus/json_formatter.go +++ b/vendor/github.com/sirupsen/logrus/json_formatter.go @@ -33,6 +33,9 @@ type JSONFormatter struct { // DisableTimestamp allows disabling automatic timestamps in output DisableTimestamp bool + // DataKey allows users to put all the log entry parameters into a nested dictionary at a given key. + DataKey string + // FieldMap allows users to customize the names of keys for default fields. // As an example: // formatter := &JSONFormatter{ @@ -58,7 +61,14 @@ func (f *JSONFormatter) Format(entry *Entry) ([]byte, error) { data[k] = v } } - prefixFieldClashes(data) + + if f.DataKey != "" { + newData := make(Fields, 4) + newData[f.DataKey] = data + data = newData + } + + prefixFieldClashes(data, f.FieldMap) timestampFormat := f.TimestampFormat if timestampFormat == "" { diff --git a/vendor/github.com/sirupsen/logrus/logger.go b/vendor/github.com/sirupsen/logrus/logger.go index fdaf8a65..342f7977 100644 --- a/vendor/github.com/sirupsen/logrus/logger.go +++ b/vendor/github.com/sirupsen/logrus/logger.go @@ -5,6 +5,7 @@ import ( "os" "sync" "sync/atomic" + "time" ) type Logger struct { @@ -88,7 +89,7 @@ func (logger *Logger) releaseEntry(entry *Entry) { } // Adds a field to the log entry, note that it doesn't log until you call -// Debug, Print, Info, Warn, Fatal or Panic. It only creates a log entry. +// Debug, Print, Info, Warn, Error, Fatal or Panic. It only creates a log entry. // If you want multiple fields, use `WithFields`. func (logger *Logger) WithField(key string, value interface{}) *Entry { entry := logger.newEntry() @@ -112,6 +113,13 @@ func (logger *Logger) WithError(err error) *Entry { return entry.WithError(err) } +// Overrides the time of the log entry. +func (logger *Logger) WithTime(t time.Time) *Entry { + entry := logger.newEntry() + defer logger.releaseEntry(entry) + return entry.WithTime(t) +} + func (logger *Logger) Debugf(format string, args ...interface{}) { if logger.level() >= DebugLevel { entry := logger.newEntry() @@ -316,6 +324,12 @@ func (logger *Logger) SetLevel(level Level) { atomic.StoreUint32((*uint32)(&logger.Level), uint32(level)) } +func (logger *Logger) SetOutput(out io.Writer) { + logger.mu.Lock() + defer logger.mu.Unlock() + logger.Out = out +} + func (logger *Logger) AddHook(hook Hook) { logger.mu.Lock() defer logger.mu.Unlock() diff --git a/vendor/github.com/sirupsen/logrus/text_formatter.go b/vendor/github.com/sirupsen/logrus/text_formatter.go index 61b21cae..3e550403 100644 --- a/vendor/github.com/sirupsen/logrus/text_formatter.go +++ b/vendor/github.com/sirupsen/logrus/text_formatter.go @@ -20,6 +20,7 @@ const ( var ( baseTimestamp time.Time + emptyFieldMap FieldMap ) func init() { @@ -50,12 +51,24 @@ type TextFormatter struct { // be desired. DisableSorting bool + // Disables the truncation of the level text to 4 characters. + DisableLevelTruncation bool + // QuoteEmptyFields will wrap empty fields in quotes if true QuoteEmptyFields bool // Whether the logger's out is to a terminal isTerminal bool + // FieldMap allows users to customize the names of keys for default fields. + // As an example: + // formatter := &TextFormatter{ + // FieldMap: FieldMap{ + // FieldKeyTime: "@timestamp", + // FieldKeyLevel: "@level", + // FieldKeyMsg: "@message"}} + FieldMap FieldMap + sync.Once } @@ -67,7 +80,8 @@ func (f *TextFormatter) init(entry *Entry) { // Format renders a single log entry func (f *TextFormatter) Format(entry *Entry) ([]byte, error) { - var b *bytes.Buffer + prefixFieldClashes(entry.Data, f.FieldMap) + keys := make([]string, 0, len(entry.Data)) for k := range entry.Data { keys = append(keys, k) @@ -76,14 +90,14 @@ func (f *TextFormatter) Format(entry *Entry) ([]byte, error) { if !f.DisableSorting { sort.Strings(keys) } + + var b *bytes.Buffer if entry.Buffer != nil { b = entry.Buffer } else { b = &bytes.Buffer{} } - prefixFieldClashes(entry.Data) - f.Do(func() { f.init(entry) }) isColored := (f.ForceColors || f.isTerminal) && !f.DisableColors @@ -96,11 +110,11 @@ func (f *TextFormatter) Format(entry *Entry) ([]byte, error) { f.printColored(b, entry, keys, timestampFormat) } else { if !f.DisableTimestamp { - f.appendKeyValue(b, "time", entry.Time.Format(timestampFormat)) + f.appendKeyValue(b, f.FieldMap.resolve(FieldKeyTime), entry.Time.Format(timestampFormat)) } - f.appendKeyValue(b, "level", entry.Level.String()) + f.appendKeyValue(b, f.FieldMap.resolve(FieldKeyLevel), entry.Level.String()) if entry.Message != "" { - f.appendKeyValue(b, "msg", entry.Message) + f.appendKeyValue(b, f.FieldMap.resolve(FieldKeyMsg), entry.Message) } for _, key := range keys { f.appendKeyValue(b, key, entry.Data[key]) @@ -124,7 +138,10 @@ func (f *TextFormatter) printColored(b *bytes.Buffer, entry *Entry, keys []strin levelColor = blue } - levelText := strings.ToUpper(entry.Level.String())[0:4] + levelText := strings.ToUpper(entry.Level.String()) + if !f.DisableLevelTruncation { + levelText = levelText[0:4] + } if f.DisableTimestamp { fmt.Fprintf(b, "\x1b[%dm%s\x1b[0m %-44s ", levelColor, levelText, entry.Message) diff --git a/vendor/golang.org/x/net/http2/frame.go b/vendor/golang.org/x/net/http2/frame.go index e3250077..c85e31f2 100644 --- a/vendor/golang.org/x/net/http2/frame.go +++ b/vendor/golang.org/x/net/http2/frame.go @@ -733,32 +733,67 @@ func (f *SettingsFrame) IsAck() bool { return f.FrameHeader.Flags.Has(FlagSettingsAck) } -func (f *SettingsFrame) Value(s SettingID) (v uint32, ok bool) { +func (f *SettingsFrame) Value(id SettingID) (v uint32, ok bool) { f.checkValid() - buf := f.p - for len(buf) > 0 { - settingID := SettingID(binary.BigEndian.Uint16(buf[:2])) - if settingID == s { - return binary.BigEndian.Uint32(buf[2:6]), true + for i := 0; i < f.NumSettings(); i++ { + if s := f.Setting(i); s.ID == id { + return s.Val, true } - buf = buf[6:] } return 0, false } +// Setting returns the setting from the frame at the given 0-based index. +// The index must be >= 0 and less than f.NumSettings(). +func (f *SettingsFrame) Setting(i int) Setting { + buf := f.p + return Setting{ + ID: SettingID(binary.BigEndian.Uint16(buf[i*6 : i*6+2])), + Val: binary.BigEndian.Uint32(buf[i*6+2 : i*6+6]), + } +} + +func (f *SettingsFrame) NumSettings() int { return len(f.p) / 6 } + +// HasDuplicates reports whether f contains any duplicate setting IDs. +func (f *SettingsFrame) HasDuplicates() bool { + num := f.NumSettings() + if num == 0 { + return false + } + // If it's small enough (the common case), just do the n^2 + // thing and avoid a map allocation. + if num < 10 { + for i := 0; i < num; i++ { + idi := f.Setting(i).ID + for j := i + 1; j < num; j++ { + idj := f.Setting(j).ID + if idi == idj { + return true + } + } + } + return false + } + seen := map[SettingID]bool{} + for i := 0; i < num; i++ { + id := f.Setting(i).ID + if seen[id] { + return true + } + seen[id] = true + } + return false +} + // ForeachSetting runs fn for each setting. // It stops and returns the first error. func (f *SettingsFrame) ForeachSetting(fn func(Setting) error) error { f.checkValid() - buf := f.p - for len(buf) > 0 { - if err := fn(Setting{ - SettingID(binary.BigEndian.Uint16(buf[:2])), - binary.BigEndian.Uint32(buf[2:6]), - }); err != nil { + for i := 0; i < f.NumSettings(); i++ { + if err := fn(f.Setting(i)); err != nil { return err } - buf = buf[6:] } return nil } diff --git a/vendor/golang.org/x/net/http2/headermap.go b/vendor/golang.org/x/net/http2/headermap.go index c2805f6a..c3ff3fa1 100644 --- a/vendor/golang.org/x/net/http2/headermap.go +++ b/vendor/golang.org/x/net/http2/headermap.go @@ -7,15 +7,21 @@ package http2 import ( "net/http" "strings" + "sync" ) var ( - commonLowerHeader = map[string]string{} // Go-Canonical-Case -> lower-case - commonCanonHeader = map[string]string{} // lower-case -> Go-Canonical-Case + commonBuildOnce sync.Once + commonLowerHeader map[string]string // Go-Canonical-Case -> lower-case + commonCanonHeader map[string]string // lower-case -> Go-Canonical-Case ) -func init() { - for _, v := range []string{ +func buildCommonHeaderMapsOnce() { + commonBuildOnce.Do(buildCommonHeaderMaps) +} + +func buildCommonHeaderMaps() { + common := []string{ "accept", "accept-charset", "accept-encoding", @@ -63,7 +69,10 @@ func init() { "vary", "via", "www-authenticate", - } { + } + commonLowerHeader = make(map[string]string, len(common)) + commonCanonHeader = make(map[string]string, len(common)) + for _, v := range common { chk := http.CanonicalHeaderKey(v) commonLowerHeader[chk] = v commonCanonHeader[v] = chk @@ -71,6 +80,7 @@ func init() { } func lowerHeader(v string) string { + buildCommonHeaderMapsOnce() if s, ok := commonLowerHeader[v]; ok { return s } diff --git a/vendor/golang.org/x/net/http2/hpack/huffman.go b/vendor/golang.org/x/net/http2/hpack/huffman.go index 8850e394..b412a96c 100644 --- a/vendor/golang.org/x/net/http2/hpack/huffman.go +++ b/vendor/golang.org/x/net/http2/hpack/huffman.go @@ -47,6 +47,7 @@ var ErrInvalidHuffman = errors.New("hpack: invalid Huffman-encoded data") // If maxLen is greater than 0, attempts to write more to buf than // maxLen bytes will return ErrStringLength. func huffmanDecode(buf *bytes.Buffer, maxLen int, v []byte) error { + rootHuffmanNode := getRootHuffmanNode() n := rootHuffmanNode // cur is the bit buffer that has not been fed into n. // cbits is the number of low order bits in cur that are valid. @@ -106,7 +107,7 @@ func huffmanDecode(buf *bytes.Buffer, maxLen int, v []byte) error { type node struct { // children is non-nil for internal nodes - children []*node + children *[256]*node // The following are only valid if children is nil: codeLen uint8 // number of bits that led to the output of sym @@ -114,22 +115,31 @@ type node struct { } func newInternalNode() *node { - return &node{children: make([]*node, 256)} + return &node{children: new([256]*node)} } -var rootHuffmanNode = newInternalNode() +var ( + buildRootOnce sync.Once + lazyRootHuffmanNode *node +) -func init() { +func getRootHuffmanNode() *node { + buildRootOnce.Do(buildRootHuffmanNode) + return lazyRootHuffmanNode +} + +func buildRootHuffmanNode() { if len(huffmanCodes) != 256 { panic("unexpected size") } + lazyRootHuffmanNode = newInternalNode() for i, code := range huffmanCodes { addDecoderNode(byte(i), code, huffmanCodeLen[i]) } } func addDecoderNode(sym byte, code uint32, codeLen uint8) { - cur := rootHuffmanNode + cur := lazyRootHuffmanNode for codeLen > 8 { codeLen -= 8 i := uint8(code >> codeLen) diff --git a/vendor/golang.org/x/net/http2/http2.go b/vendor/golang.org/x/net/http2/http2.go index c8242825..bdaba1d4 100644 --- a/vendor/golang.org/x/net/http2/http2.go +++ b/vendor/golang.org/x/net/http2/http2.go @@ -201,19 +201,12 @@ func validWireHeaderFieldName(v string) bool { return true } -var httpCodeStringCommon = map[int]string{} // n -> strconv.Itoa(n) - -func init() { - for i := 100; i <= 999; i++ { - if v := http.StatusText(i); v != "" { - httpCodeStringCommon[i] = strconv.Itoa(i) - } - } -} - func httpCodeString(code int) string { - if s, ok := httpCodeStringCommon[code]; ok { - return s + switch code { + case 200: + return "200" + case 404: + return "404" } return strconv.Itoa(code) } diff --git a/vendor/golang.org/x/net/http2/server.go b/vendor/golang.org/x/net/http2/server.go index 6e2c5b92..56859d1f 100644 --- a/vendor/golang.org/x/net/http2/server.go +++ b/vendor/golang.org/x/net/http2/server.go @@ -663,6 +663,7 @@ func (sc *serverConn) condlogf(err error, format string, args ...interface{}) { func (sc *serverConn) canonicalHeader(v string) string { sc.serveG.check() + buildCommonHeaderMapsOnce() cv, ok := commonCanonHeader[v] if ok { return cv @@ -1487,6 +1488,12 @@ func (sc *serverConn) processSettings(f *SettingsFrame) error { } return nil } + if f.NumSettings() > 100 || f.HasDuplicates() { + // This isn't actually in the spec, but hang up on + // suspiciously large settings frames or those with + // duplicate entries. + return ConnectionError(ErrCodeProtocol) + } if err := f.ForeachSetting(sc.processSetting); err != nil { return err } @@ -2340,15 +2347,7 @@ func (rws *responseWriterState) writeChunk(p []byte) (n int, err error) { } _, hasContentType := rws.snapHeader["Content-Type"] if !hasContentType && bodyAllowedForStatus(rws.status) && len(p) > 0 { - if cto := rws.snapHeader.Get("X-Content-Type-Options"); strings.EqualFold("nosniff", cto) { - // nosniff is an explicit directive not to guess a content-type. - // Content-sniffing is no less susceptible to polyglot attacks via - // hosted content when done on the server. - ctype = "application/octet-stream" - rws.conn.logf("http2: WriteHeader called with X-Content-Type-Options:nosniff but no Content-Type") - } else { - ctype = http.DetectContentType(p) - } + ctype = http.DetectContentType(p) } var date string if _, ok := rws.snapHeader["Date"]; !ok { diff --git a/vendor/golang.org/x/net/internal/socks/socks.go b/vendor/golang.org/x/net/internal/socks/socks.go index d93e699b..6929a9fd 100644 --- a/vendor/golang.org/x/net/internal/socks/socks.go +++ b/vendor/golang.org/x/net/internal/socks/socks.go @@ -224,6 +224,7 @@ func (d *Dialer) Dial(network, address string) (net.Conn, error) { return nil, &net.OpError{Op: d.cmd.String(), Net: network, Source: proxy, Addr: dst, Err: err} } if _, err := d.DialWithConn(context.Background(), c, network, address); err != nil { + c.Close() return nil, err } return c, nil diff --git a/vendor/golang.org/x/net/trace/trace.go b/vendor/golang.org/x/net/trace/trace.go index a46ee0ea..f00d869f 100644 --- a/vendor/golang.org/x/net/trace/trace.go +++ b/vendor/golang.org/x/net/trace/trace.go @@ -70,6 +70,7 @@ import ( "log" "net" "net/http" + "net/url" "runtime" "sort" "strconv" @@ -110,6 +111,13 @@ var AuthRequest = func(req *http.Request) (any, sensitive bool) { } func init() { + _, pat := http.DefaultServeMux.Handler(&http.Request{URL: &url.URL{Path: "/debug/requests"}}) + if pat != "" { + panic("/debug/requests is already registered. You may have two independent copies of " + + "golang.org/x/net/trace in your binary, trying to maintain separate state. This may " + + "involve a vendored copy of golang.org/x/net/trace.") + } + // TODO(jbd): Serve Traces from /debug/traces in the future? // There is no requirement for a request to be present to have traces. http.HandleFunc("/debug/requests", Traces) diff --git a/vendor/golang.org/x/sys/unix/aliases.go b/vendor/golang.org/x/sys/unix/aliases.go new file mode 100644 index 00000000..951fce4d --- /dev/null +++ b/vendor/golang.org/x/sys/unix/aliases.go @@ -0,0 +1,14 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris +// +build go1.9 + +package unix + +import "syscall" + +type Signal = syscall.Signal +type Errno = syscall.Errno +type SysProcAttr = syscall.SysProcAttr diff --git a/vendor/golang.org/x/sys/unix/constants.go b/vendor/golang.org/x/sys/unix/constants.go index a96f0ebc..3a6ac648 100644 --- a/vendor/golang.org/x/sys/unix/constants.go +++ b/vendor/golang.org/x/sys/unix/constants.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build darwin dragonfly freebsd linux netbsd openbsd solaris +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris package unix diff --git a/vendor/golang.org/x/sys/unix/dev_aix_ppc.go b/vendor/golang.org/x/sys/unix/dev_aix_ppc.go new file mode 100644 index 00000000..27f92c99 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/dev_aix_ppc.go @@ -0,0 +1,37 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix +// +build ppc + +// Functions to access/create device major and minor numbers matching the +// encoding used by the Linux kernel and glibc. +// +// The information below is extracted and adapted from bits/sysmacros.h in the +// glibc sources: +// +// dev_t in glibc is 64-bit, with 32-bit major and minor numbers. glibc's +// default encoding is MMMM Mmmm mmmM MMmm, where M is a hex digit of the major +// number and m is a hex digit of the minor number. This is backward compatible +// with legacy systems where dev_t is 16 bits wide, encoded as MMmm. It is also +// backward compatible with the Linux kernel, which for some architectures uses +// 32-bit dev_t, encoded as mmmM MMmm. + +package unix + +// Major returns the major component of a Linux device number. +func Major(dev uint64) uint32 { + return uint32((dev >> 16) & 0xffff) +} + +// Minor returns the minor component of a Linux device number. +func Minor(dev uint64) uint32 { + return uint32(dev & 0xffff) +} + +// Mkdev returns a Linux device number generated from the given major and minor +// components. +func Mkdev(major, minor uint32) uint64 { + return uint64(((major) << 16) | (minor)) +} diff --git a/vendor/golang.org/x/sys/unix/dev_aix_ppc64.go b/vendor/golang.org/x/sys/unix/dev_aix_ppc64.go new file mode 100644 index 00000000..65d93a68 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/dev_aix_ppc64.go @@ -0,0 +1,39 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix +// +build ppc64 + +// Functions to access/create device major and minor numbers matching the +// encoding used by the Linux kernel and glibc. +// +// The information below is extracted and adapted from bits/sysmacros.h in the +// glibc sources: +// +// dev_t in glibc is 64-bit, with 32-bit major and minor numbers. glibc's +// default encoding is MMMM Mmmm mmmM MMmm, where M is a hex digit of the major +// number and m is a hex digit of the minor number. This is backward compatible +// with legacy systems where dev_t is 16 bits wide, encoded as MMmm. It is also +// backward compatible with the Linux kernel, which for some architectures uses +// 32-bit dev_t, encoded as mmmM MMmm. + +package unix + +// Major returns the major component of a Linux device number. +func Major(dev uint64) uint32 { + return uint32((dev & 0x3fffffff00000000) >> 32) +} + +// Minor returns the minor component of a Linux device number. +func Minor(dev uint64) uint32 { + return uint32((dev & 0x00000000ffffffff) >> 0) +} + +// Mkdev returns a Linux device number generated from the given major and minor +// components. +func Mkdev(major, minor uint32) uint64 { + var DEVNO64 uint64 + DEVNO64 = 0x8000000000000000 + return ((uint64(major) << 32) | (uint64(minor) & 0x00000000FFFFFFFF) | DEVNO64) +} diff --git a/vendor/golang.org/x/sys/unix/dirent.go b/vendor/golang.org/x/sys/unix/dirent.go index 95fd3531..4407c505 100644 --- a/vendor/golang.org/x/sys/unix/dirent.go +++ b/vendor/golang.org/x/sys/unix/dirent.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build darwin dragonfly freebsd linux nacl netbsd openbsd solaris +// +build aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris package unix diff --git a/vendor/golang.org/x/sys/unix/env_unix.go b/vendor/golang.org/x/sys/unix/env_unix.go index 706b3cd1..84178b0a 100644 --- a/vendor/golang.org/x/sys/unix/env_unix.go +++ b/vendor/golang.org/x/sys/unix/env_unix.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build darwin dragonfly freebsd linux netbsd openbsd solaris +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris // Unix environment variables. diff --git a/vendor/golang.org/x/sys/unix/gccgo.go b/vendor/golang.org/x/sys/unix/gccgo.go index 50062e3c..cd6f5a61 100644 --- a/vendor/golang.org/x/sys/unix/gccgo.go +++ b/vendor/golang.org/x/sys/unix/gccgo.go @@ -3,6 +3,7 @@ // license that can be found in the LICENSE file. // +build gccgo +// +build !aix package unix diff --git a/vendor/golang.org/x/sys/unix/gccgo_c.c b/vendor/golang.org/x/sys/unix/gccgo_c.c index 46523ced..c44730c5 100644 --- a/vendor/golang.org/x/sys/unix/gccgo_c.c +++ b/vendor/golang.org/x/sys/unix/gccgo_c.c @@ -3,6 +3,7 @@ // license that can be found in the LICENSE file. // +build gccgo +// +build !aix #include #include diff --git a/vendor/golang.org/x/sys/unix/ioctl.go b/vendor/golang.org/x/sys/unix/ioctl.go new file mode 100644 index 00000000..8c9aaeb2 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ioctl.go @@ -0,0 +1,30 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build darwin dragonfly freebsd linux netbsd openbsd solaris + +package unix + +import "runtime" + +// IoctlSetWinsize performs an ioctl on fd with a *Winsize argument. +// +// To change fd's window size, the req argument should be TIOCSWINSZ. +func IoctlSetWinsize(fd int, req uint, value *Winsize) error { + // TODO: if we get the chance, remove the req parameter and + // hardcode TIOCSWINSZ. + err := ioctlSetWinsize(fd, req, value) + runtime.KeepAlive(value) + return err +} + +// IoctlSetTermios performs an ioctl on fd with a *Termios. +// +// The req value will usually be TCSETA or TIOCSETA. +func IoctlSetTermios(fd int, req uint, value *Termios) error { + // TODO: if we get the chance, remove the req parameter. + err := ioctlSetTermios(fd, req, value) + runtime.KeepAlive(value) + return err +} diff --git a/vendor/golang.org/x/sys/unix/openbsd_pledge.go b/vendor/golang.org/x/sys/unix/openbsd_pledge.go index 9b1e86a1..11388e5d 100644 --- a/vendor/golang.org/x/sys/unix/openbsd_pledge.go +++ b/vendor/golang.org/x/sys/unix/openbsd_pledge.go @@ -8,6 +8,9 @@ package unix import ( + "errors" + "fmt" + "strconv" "syscall" "unsafe" ) @@ -16,23 +19,77 @@ const ( _SYS_PLEDGE = 108 ) -// Pledge implements the pledge syscall. For more information see pledge(2). -func Pledge(promises string, paths []string) error { - promisesPtr, err := syscall.BytePtrFromString(promises) +// Pledge implements the pledge syscall. +// +// The pledge syscall does not accept execpromises on OpenBSD releases +// before 6.3. +// +// execpromises must be empty when Pledge is called on OpenBSD +// releases predating 6.3, otherwise an error will be returned. +// +// For more information see pledge(2). +func Pledge(promises, execpromises string) error { + maj, min, err := majmin() if err != nil { return err } - promisesUnsafe, pathsUnsafe := unsafe.Pointer(promisesPtr), unsafe.Pointer(nil) - if paths != nil { - var pathsPtr []*byte - if pathsPtr, err = syscall.SlicePtrFromStrings(paths); err != nil { + + // If OpenBSD <= 5.9, pledge is not available. + if (maj == 5 && min != 9) || maj < 5 { + return fmt.Errorf("pledge syscall is not available on OpenBSD %d.%d", maj, min) + } + + // If OpenBSD <= 6.2 and execpromises is not empty + // return an error - execpromises is not available before 6.3 + if (maj < 6 || (maj == 6 && min <= 2)) && execpromises != "" { + return fmt.Errorf("cannot use execpromises on OpenBSD %d.%d", maj, min) + } + + pptr, err := syscall.BytePtrFromString(promises) + if err != nil { + return err + } + + // This variable will hold either a nil unsafe.Pointer or + // an unsafe.Pointer to a string (execpromises). + var expr unsafe.Pointer + + // If we're running on OpenBSD > 6.2, pass execpromises to the syscall. + if maj > 6 || (maj == 6 && min > 2) { + exptr, err := syscall.BytePtrFromString(execpromises) + if err != nil { return err } - pathsUnsafe = unsafe.Pointer(&pathsPtr[0]) + expr = unsafe.Pointer(exptr) } - _, _, e := syscall.Syscall(_SYS_PLEDGE, uintptr(promisesUnsafe), uintptr(pathsUnsafe), 0) + + _, _, e := syscall.Syscall(_SYS_PLEDGE, uintptr(unsafe.Pointer(pptr)), uintptr(expr), 0) if e != 0 { return e } + return nil } + +// majmin returns major and minor version number for an OpenBSD system. +func majmin() (major int, minor int, err error) { + var v Utsname + err = Uname(&v) + if err != nil { + return + } + + major, err = strconv.Atoi(string(v.Release[0])) + if err != nil { + err = errors.New("cannot parse major version number returned by uname") + return + } + + minor, err = strconv.Atoi(string(v.Release[2])) + if err != nil { + err = errors.New("cannot parse minor version number returned by uname") + return + } + + return +} diff --git a/vendor/golang.org/x/sys/unix/pagesize_unix.go b/vendor/golang.org/x/sys/unix/pagesize_unix.go index 83c85e01..bc2f3629 100644 --- a/vendor/golang.org/x/sys/unix/pagesize_unix.go +++ b/vendor/golang.org/x/sys/unix/pagesize_unix.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build darwin dragonfly freebsd linux netbsd openbsd solaris +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris // For Unix, get the pagesize from the runtime. diff --git a/vendor/golang.org/x/sys/unix/race0.go b/vendor/golang.org/x/sys/unix/race0.go index dd082043..ad026678 100644 --- a/vendor/golang.org/x/sys/unix/race0.go +++ b/vendor/golang.org/x/sys/unix/race0.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build darwin,!race linux,!race freebsd,!race netbsd openbsd solaris dragonfly +// +build aix darwin,!race linux,!race freebsd,!race netbsd openbsd solaris dragonfly package unix diff --git a/vendor/golang.org/x/sys/unix/sockcmsg_unix.go b/vendor/golang.org/x/sys/unix/sockcmsg_unix.go index bb756ece..f153c067 100644 --- a/vendor/golang.org/x/sys/unix/sockcmsg_unix.go +++ b/vendor/golang.org/x/sys/unix/sockcmsg_unix.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build darwin dragonfly freebsd linux netbsd openbsd solaris +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris // Socket control messages diff --git a/vendor/golang.org/x/sys/unix/str.go b/vendor/golang.org/x/sys/unix/str.go index 35ed6643..17fb6986 100644 --- a/vendor/golang.org/x/sys/unix/str.go +++ b/vendor/golang.org/x/sys/unix/str.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build darwin dragonfly freebsd linux netbsd openbsd solaris +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris package unix diff --git a/vendor/golang.org/x/sys/unix/syscall.go b/vendor/golang.org/x/sys/unix/syscall.go index ef35fce8..0d4b1d7a 100644 --- a/vendor/golang.org/x/sys/unix/syscall.go +++ b/vendor/golang.org/x/sys/unix/syscall.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build darwin dragonfly freebsd linux netbsd openbsd solaris +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris // Package unix contains an interface to the low-level operating system // primitives. OS details vary depending on the underlying system, and diff --git a/vendor/golang.org/x/sys/unix/syscall_aix.go b/vendor/golang.org/x/sys/unix/syscall_aix.go new file mode 100644 index 00000000..86d7c7bd --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_aix.go @@ -0,0 +1,562 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix + +// Aix system calls. +// This file is compiled as ordinary Go code, +// but it is also input to mksyscall, +// which parses the //sys lines and generates system call stubs. +// Note that sometimes we use a lowercase //sys name and +// wrap it in our own nicer implementation. + +package unix + +import ( + "syscall" + "unsafe" +) + +/* + * Wrapped + */ + +//sys utimes(path string, times *[2]Timeval) (err error) +func Utimes(path string, tv []Timeval) error { + if len(tv) != 2 { + return EINVAL + } + return utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0]))) +} + +//sys utimensat(dirfd int, path string, times *[2]Timespec, flag int) (err error) +func UtimesNano(path string, ts []Timespec) error { + if len(ts) != 2 { + return EINVAL + } + return utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0) +} + +func UtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) error { + if ts == nil { + return utimensat(dirfd, path, nil, flags) + } + if len(ts) != 2 { + return EINVAL + } + return utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), flags) +} + +func (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, _Socklen, error) { + if sa.Port < 0 || sa.Port > 0xFFFF { + return nil, 0, EINVAL + } + sa.raw.Family = AF_INET + p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port)) + p[0] = byte(sa.Port >> 8) + p[1] = byte(sa.Port) + for i := 0; i < len(sa.Addr); i++ { + sa.raw.Addr[i] = sa.Addr[i] + } + return unsafe.Pointer(&sa.raw), SizeofSockaddrInet4, nil +} + +func (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, _Socklen, error) { + if sa.Port < 0 || sa.Port > 0xFFFF { + return nil, 0, EINVAL + } + sa.raw.Family = AF_INET6 + p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port)) + p[0] = byte(sa.Port >> 8) + p[1] = byte(sa.Port) + sa.raw.Scope_id = sa.ZoneId + for i := 0; i < len(sa.Addr); i++ { + sa.raw.Addr[i] = sa.Addr[i] + } + return unsafe.Pointer(&sa.raw), SizeofSockaddrInet6, nil +} + +func (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, _Socklen, error) { + name := sa.Name + n := len(name) + if n > len(sa.raw.Path) { + return nil, 0, EINVAL + } + if n == len(sa.raw.Path) && name[0] != '@' { + return nil, 0, EINVAL + } + sa.raw.Family = AF_UNIX + for i := 0; i < n; i++ { + sa.raw.Path[i] = uint8(name[i]) + } + // length is family (uint16), name, NUL. + sl := _Socklen(2) + if n > 0 { + sl += _Socklen(n) + 1 + } + if sa.raw.Path[0] == '@' { + sa.raw.Path[0] = 0 + // Don't count trailing NUL for abstract address. + sl-- + } + + return unsafe.Pointer(&sa.raw), sl, nil +} + +func Getsockname(fd int) (sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + if err = getsockname(fd, &rsa, &len); err != nil { + return + } + return anyToSockaddr(fd, &rsa) +} + +//sys getcwd(buf []byte) (err error) + +const ImplementsGetwd = true + +func Getwd() (ret string, err error) { + for len := uint64(4096); ; len *= 2 { + b := make([]byte, len) + err := getcwd(b) + if err == nil { + i := 0 + for b[i] != 0 { + i++ + } + return string(b[0:i]), nil + } + if err != ERANGE { + return "", err + } + } +} + +func Getcwd(buf []byte) (n int, err error) { + err = getcwd(buf) + if err == nil { + i := 0 + for buf[i] != 0 { + i++ + } + n = i + 1 + } + return +} + +func Getgroups() (gids []int, err error) { + n, err := getgroups(0, nil) + if err != nil { + return nil, err + } + if n == 0 { + return nil, nil + } + + // Sanity check group count. Max is 16 on BSD. + if n < 0 || n > 1000 { + return nil, EINVAL + } + + a := make([]_Gid_t, n) + n, err = getgroups(n, &a[0]) + if err != nil { + return nil, err + } + gids = make([]int, n) + for i, v := range a[0:n] { + gids[i] = int(v) + } + return +} + +func Setgroups(gids []int) (err error) { + if len(gids) == 0 { + return setgroups(0, nil) + } + + a := make([]_Gid_t, len(gids)) + for i, v := range gids { + a[i] = _Gid_t(v) + } + return setgroups(len(a), &a[0]) +} + +/* + * Socket + */ + +//sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) + +func Accept(fd int) (nfd int, sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + nfd, err = accept(fd, &rsa, &len) + if nfd == -1 { + return + } + sa, err = anyToSockaddr(fd, &rsa) + if err != nil { + Close(nfd) + nfd = 0 + } + return +} + +func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from Sockaddr, err error) { + // Recvmsg not implemented on AIX + sa := new(SockaddrUnix) + return -1, -1, -1, sa, ENOSYS +} + +func Sendmsg(fd int, p, oob []byte, to Sockaddr, flags int) (err error) { + _, err = SendmsgN(fd, p, oob, to, flags) + return +} + +func SendmsgN(fd int, p, oob []byte, to Sockaddr, flags int) (n int, err error) { + // SendmsgN not implemented on AIX + return -1, ENOSYS +} + +func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { + switch rsa.Addr.Family { + + case AF_UNIX: + pp := (*RawSockaddrUnix)(unsafe.Pointer(rsa)) + sa := new(SockaddrUnix) + + // Some versions of AIX have a bug in getsockname (see IV78655). + // We can't rely on sa.Len being set correctly. + n := SizeofSockaddrUnix - 3 // substract leading Family, Len, terminating NUL. + for i := 0; i < n; i++ { + if pp.Path[i] == 0 { + n = i + break + } + } + + bytes := (*[10000]byte)(unsafe.Pointer(&pp.Path[0]))[0:n] + sa.Name = string(bytes) + return sa, nil + + case AF_INET: + pp := (*RawSockaddrInet4)(unsafe.Pointer(rsa)) + sa := new(SockaddrInet4) + p := (*[2]byte)(unsafe.Pointer(&pp.Port)) + sa.Port = int(p[0])<<8 + int(p[1]) + for i := 0; i < len(sa.Addr); i++ { + sa.Addr[i] = pp.Addr[i] + } + return sa, nil + + case AF_INET6: + pp := (*RawSockaddrInet6)(unsafe.Pointer(rsa)) + sa := new(SockaddrInet6) + p := (*[2]byte)(unsafe.Pointer(&pp.Port)) + sa.Port = int(p[0])<<8 + int(p[1]) + sa.ZoneId = pp.Scope_id + for i := 0; i < len(sa.Addr); i++ { + sa.Addr[i] = pp.Addr[i] + } + return sa, nil + } + return nil, EAFNOSUPPORT +} + +func Gettimeofday(tv *Timeval) (err error) { + err = gettimeofday(tv, nil) + return +} + +// TODO +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + return -1, ENOSYS +} + +//sys getdirent(fd int, buf []byte) (n int, err error) +func ReadDirent(fd int, buf []byte) (n int, err error) { + return getdirent(fd, buf) +} + +//sys wait4(pid Pid_t, status *_C_int, options int, rusage *Rusage) (wpid Pid_t, err error) +func Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error) { + var status _C_int + var r Pid_t + err = ERESTART + // AIX wait4 may return with ERESTART errno, while the processus is still + // active. + for err == ERESTART { + r, err = wait4(Pid_t(pid), &status, options, rusage) + } + wpid = int(r) + if wstatus != nil { + *wstatus = WaitStatus(status) + } + return +} + +/* + * Wait + */ + +type WaitStatus uint32 + +func (w WaitStatus) Stopped() bool { return w&0x40 != 0 } +func (w WaitStatus) StopSignal() syscall.Signal { + if !w.Stopped() { + return -1 + } + return syscall.Signal(w>>8) & 0xFF +} + +func (w WaitStatus) Exited() bool { return w&0xFF == 0 } +func (w WaitStatus) ExitStatus() int { + if !w.Exited() { + return -1 + } + return int((w >> 8) & 0xFF) +} + +func (w WaitStatus) Signaled() bool { return w&0x40 == 0 && w&0xFF != 0 } +func (w WaitStatus) Signal() syscall.Signal { + if !w.Signaled() { + return -1 + } + return syscall.Signal(w>>16) & 0xFF +} + +func (w WaitStatus) Continued() bool { return w&0x01000000 != 0 } + +func (w WaitStatus) CoreDump() bool { return w&0x200 != 0 } + +func (w WaitStatus) TrapCause() int { return -1 } + +//sys ioctl(fd int, req uint, arg uintptr) (err error) + +// ioctl itself should not be exposed directly, but additional get/set +// functions for specific types are permissible. + +// IoctlSetInt performs an ioctl operation which sets an integer value +// on fd, using the specified request number. +func IoctlSetInt(fd int, req uint, value int) error { + return ioctl(fd, req, uintptr(value)) +} + +func IoctlSetWinsize(fd int, req uint, value *Winsize) error { + return ioctl(fd, req, uintptr(unsafe.Pointer(value))) +} + +func IoctlSetTermios(fd int, req uint, value *Termios) error { + return ioctl(fd, req, uintptr(unsafe.Pointer(value))) +} + +// IoctlGetInt performs an ioctl operation which gets an integer value +// from fd, using the specified request number. +func IoctlGetInt(fd int, req uint) (int, error) { + var value int + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return value, err +} + +func IoctlGetWinsize(fd int, req uint) (*Winsize, error) { + var value Winsize + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return &value, err +} + +func IoctlGetTermios(fd int, req uint) (*Termios, error) { + var value Termios + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return &value, err +} + +// fcntl must never be called with cmd=F_DUP2FD because it doesn't work on AIX +// There is no way to create a custom fcntl and to keep //sys fcntl easily, +// Therefore, the programmer must call dup2 instead of fcntl in this case. + +// FcntlInt performs a fcntl syscall on fd with the provided command and argument. +//sys FcntlInt(fd uintptr, cmd int, arg int) (r int,err error) = fcntl + +// FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command. +//sys FcntlFlock(fd uintptr, cmd int, lk *Flock_t) (err error) = fcntl + +func Flock(fd int, how int) (err error) { + return syscall.Flock(fd, how) +} + +/* + * Direct access + */ + +//sys Acct(path string) (err error) +//sys Chdir(path string) (err error) +//sys Chroot(path string) (err error) +//sys Close(fd int) (err error) +//sys Dup(oldfd int) (fd int, err error) +//sys Dup3(oldfd int, newfd int, flags int) (err error) +//sys Exit(code int) +//sys Faccessat(dirfd int, path string, mode uint32, flags int) (err error) +//sys Fallocate(fd int, mode uint32, off int64, len int64) (err error) +//sys Fchdir(fd int) (err error) +//sys Fchmod(fd int, mode uint32) (err error) +//sys Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) +//sys Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) +//sys fcntl(fd int, cmd int, arg int) (val int, err error) +//sys Fdatasync(fd int) (err error) +//sys Fsync(fd int) (err error) +// readdir_r +//sysnb Getpgid(pid int) (pgid int, err error) + +//sys Getpgrp() (pid int) + +//sysnb Getpid() (pid int) +//sysnb Getppid() (ppid int) +//sys Getpriority(which int, who int) (prio int, err error) +//sysnb Getrusage(who int, rusage *Rusage) (err error) +//sysnb Getsid(pid int) (sid int, err error) +//sysnb Kill(pid int, sig syscall.Signal) (err error) +//sys Klogctl(typ int, buf []byte) (n int, err error) = syslog +//sys Mkdirat(dirfd int, path string, mode uint32) (err error) +//sys Mkfifo(path string, mode uint32) (err error) +//sys Mknodat(dirfd int, path string, mode uint32, dev int) (err error) +//sys Nanosleep(time *Timespec, leftover *Timespec) (err error) +//sys Open(path string, mode int, perm uint32) (fd int, err error) = open64 +//sys Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) +//sys read(fd int, p []byte) (n int, err error) +//sys Readlink(path string, buf []byte) (n int, err error) +//sys Removexattr(path string, attr string) (err error) +//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) +//sys Setdomainname(p []byte) (err error) +//sys Sethostname(p []byte) (err error) +//sysnb Setpgid(pid int, pgid int) (err error) +//sysnb Setsid() (pid int, err error) +//sysnb Settimeofday(tv *Timeval) (err error) + +//sys Setuid(uid int) (err error) +//sys Setgid(uid int) (err error) + +//sys Setpriority(which int, who int, prio int) (err error) +//sys Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) +//sys Sync() +//sys Tee(rfd int, wfd int, len int, flags int) (n int64, err error) +//sysnb Times(tms *Tms) (ticks uintptr, err error) +//sysnb Umask(mask int) (oldmask int) +//sysnb Uname(buf *Utsname) (err error) +//TODO umount +// //sys Unmount(target string, flags int) (err error) = umount +//sys Unlink(path string) (err error) +//sys Unlinkat(dirfd int, path string, flags int) (err error) +//sys Unshare(flags int) (err error) +//sys Ustat(dev int, ubuf *Ustat_t) (err error) +//sys write(fd int, p []byte) (n int, err error) +//sys readlen(fd int, p *byte, np int) (n int, err error) = read +//sys writelen(fd int, p *byte, np int) (n int, err error) = write + +//sys Dup2(oldfd int, newfd int) (err error) +//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = posix_fadvise64 +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fstat(fd int, stat *Stat_t) (err error) +//sys Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = fstatat +//sys Fstatfs(fd int, buf *Statfs_t) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sysnb Getegid() (egid int) +//sysnb Geteuid() (euid int) +//sysnb Getgid() (gid int) +//sysnb Getuid() (uid int) +//sys Lchown(path string, uid int, gid int) (err error) +//sys Listen(s int, n int) (err error) +//sys Lstat(path string, stat *Stat_t) (err error) +//sys Pause() (err error) +//sys Pread(fd int, p []byte, offset int64) (n int, err error) = pread64 +//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = pwrite64 +//TODO Select +// //sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) +//sys Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) +//sysnb Setregid(rgid int, egid int) (err error) +//sysnb Setreuid(ruid int, euid int) (err error) +//sys Shutdown(fd int, how int) (err error) +//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) +//sys Stat(path string, stat *Stat_t) (err error) +//sys Statfs(path string, buf *Statfs_t) (err error) +//sys Truncate(path string, length int64) (err error) + +//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sysnb getgroups(n int, list *_Gid_t) (nn int, err error) +//sysnb setgroups(n int, list *_Gid_t) (err error) +//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) +//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) +//sysnb socket(domain int, typ int, proto int) (fd int, err error) +//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) +//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sysnb getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) +//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) +//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) + +//sys munmap(addr uintptr, length uintptr) (err error) + +var mapper = &mmapper{ + active: make(map[*byte][]byte), + mmap: mmap, + munmap: munmap, +} + +func Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, err error) { + return mapper.Mmap(fd, offset, length, prot, flags) +} + +func Munmap(b []byte) (err error) { + return mapper.Munmap(b) +} + +//sys Madvise(b []byte, advice int) (err error) +//sys Mprotect(b []byte, prot int) (err error) +//sys Mlock(b []byte) (err error) +//sys Mlockall(flags int) (err error) +//sys Msync(b []byte, flags int) (err error) +//sys Munlock(b []byte) (err error) +//sys Munlockall() (err error) + +//sysnb pipe(p *[2]_C_int) (err error) + +func Pipe(p []int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err = pipe(&pp) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +//sysnb pipe2(p *[2]_C_int, flags int) (err error) + +func Pipe2(p []int, flags int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err = pipe2(&pp, flags) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +//sys poll(fds *PollFd, nfds int, timeout int) (n int, err error) + +func Poll(fds []PollFd, timeout int) (n int, err error) { + if len(fds) == 0 { + return poll(nil, 0, timeout) + } + return poll(&fds[0], len(fds), timeout) +} + +//sys gettimeofday(tv *Timeval, tzp *Timezone) (err error) +//sysnb Time(t *Time_t) (tt Time_t, err error) +//sys Utime(path string, buf *Utimbuf) (err error) diff --git a/vendor/golang.org/x/sys/unix/syscall_aix_ppc.go b/vendor/golang.org/x/sys/unix/syscall_aix_ppc.go new file mode 100644 index 00000000..c28af1f8 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_aix_ppc.go @@ -0,0 +1,34 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix +// +build ppc + +package unix + +//sysnb Getrlimit(resource int, rlim *Rlimit) (err error) = getrlimit64 +//sysnb Setrlimit(resource int, rlim *Rlimit) (err error) = setrlimit64 +//sys Seek(fd int, offset int64, whence int) (off int64, err error) = lseek64 + +//sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: int32(sec), Nsec: int32(nsec)} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: int32(sec), Usec: int32(usec)} +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint32(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} diff --git a/vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go b/vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go new file mode 100644 index 00000000..881cacc6 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go @@ -0,0 +1,34 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix +// +build ppc64 + +package unix + +//sysnb Getrlimit(resource int, rlim *Rlimit) (err error) +//sysnb Setrlimit(resource int, rlim *Rlimit) (err error) +//sys Seek(fd int, offset int64, whence int) (off int64, err error) = lseek + +//sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) = mmap64 + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: int64(sec), Usec: int32(usec)} +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin.go b/vendor/golang.org/x/sys/unix/syscall_darwin.go index 79e94767..1aabc560 100644 --- a/vendor/golang.org/x/sys/unix/syscall_darwin.go +++ b/vendor/golang.org/x/sys/unix/syscall_darwin.go @@ -199,7 +199,13 @@ func Lgetxattr(link string, attr string, dest []byte) (sz int, err error) { return getxattr(link, attr, xattrPointer(dest), len(dest), 0, XATTR_NOFOLLOW) } -//sys setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error) +//sys fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) + +func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + return fgetxattr(fd, attr, xattrPointer(dest), len(dest), 0, 0) +} + +//sys setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error) func Setxattr(path string, attr string, data []byte, flags int) (err error) { // The parameters for the OS X implementation vary slightly compared to the @@ -235,7 +241,13 @@ func Lsetxattr(link string, attr string, data []byte, flags int) (err error) { return setxattr(link, attr, xattrPointer(data), len(data), 0, flags|XATTR_NOFOLLOW) } -//sys removexattr(path string, attr string, options int) (err error) +//sys fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error) + +func Fsetxattr(fd int, attr string, data []byte, flags int) (err error) { + return fsetxattr(fd, attr, xattrPointer(data), len(data), 0, 0) +} + +//sys removexattr(path string, attr string, options int) (err error) func Removexattr(path string, attr string) (err error) { // We wrap around and explicitly zero out the options provided to the OS X @@ -248,6 +260,12 @@ func Lremovexattr(link string, attr string) (err error) { return removexattr(link, attr, XATTR_NOFOLLOW) } +//sys fremovexattr(fd int, attr string, options int) (err error) + +func Fremovexattr(fd int, attr string) (err error) { + return fremovexattr(fd, attr, 0) +} + //sys listxattr(path string, dest *byte, size int, options int) (sz int, err error) func Listxattr(path string, dest []byte) (sz int, err error) { @@ -258,6 +276,12 @@ func Llistxattr(link string, dest []byte) (sz int, err error) { return listxattr(link, xattrPointer(dest), len(dest), XATTR_NOFOLLOW) } +//sys flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) + +func Flistxattr(fd int, dest []byte) (sz int, err error) { + return flistxattr(fd, xattrPointer(dest), len(dest), 0) +} + func setattrlistTimes(path string, times []Timespec, flags int) error { _p0, err := BytePtrFromString(path) if err != nil { @@ -313,11 +337,11 @@ func IoctlSetInt(fd int, req uint, value int) error { return ioctl(fd, req, uintptr(value)) } -func IoctlSetWinsize(fd int, req uint, value *Winsize) error { +func ioctlSetWinsize(fd int, req uint, value *Winsize) error { return ioctl(fd, req, uintptr(unsafe.Pointer(value))) } -func IoctlSetTermios(fd int, req uint, value *Termios) error { +func ioctlSetTermios(fd int, req uint, value *Termios) error { return ioctl(fd, req, uintptr(unsafe.Pointer(value))) } @@ -529,10 +553,6 @@ func Uname(uname *Utsname) error { // Watchevent // Waitevent // Modwatch -// Fgetxattr -// Fsetxattr -// Fremovexattr -// Flistxattr // Fsctl // Initgroups // Posix_spawn diff --git a/vendor/golang.org/x/sys/unix/syscall_dragonfly.go b/vendor/golang.org/x/sys/unix/syscall_dragonfly.go index e34abe29..79d125b3 100644 --- a/vendor/golang.org/x/sys/unix/syscall_dragonfly.go +++ b/vendor/golang.org/x/sys/unix/syscall_dragonfly.go @@ -143,11 +143,11 @@ func IoctlSetInt(fd int, req uint, value int) error { return ioctl(fd, req, uintptr(value)) } -func IoctlSetWinsize(fd int, req uint, value *Winsize) error { +func ioctlSetWinsize(fd int, req uint, value *Winsize) error { return ioctl(fd, req, uintptr(unsafe.Pointer(value))) } -func IoctlSetTermios(fd int, req uint, value *Termios) error { +func ioctlSetTermios(fd int, req uint, value *Termios) error { return ioctl(fd, req, uintptr(unsafe.Pointer(value))) } diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd.go b/vendor/golang.org/x/sys/unix/syscall_freebsd.go index 5561a3eb..77a634c7 100644 --- a/vendor/golang.org/x/sys/unix/syscall_freebsd.go +++ b/vendor/golang.org/x/sys/unix/syscall_freebsd.go @@ -13,7 +13,6 @@ package unix import ( - "strings" "unsafe" ) @@ -58,14 +57,21 @@ func nametomib(name string) (mib []_C_int, err error) { return buf[0 : n/siz], nil } -//sysnb pipe() (r int, w int, err error) - func Pipe(p []int) (err error) { + return Pipe2(p, 0) +} + +//sysnb pipe2(p *[2]_C_int, flags int) (err error) + +func Pipe2(p []int, flags int) error { if len(p) != 2 { return EINVAL } - p[0], p[1], err = pipe() - return + var pp [2]_C_int + err := pipe2(&pp, flags) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return err } func GetsockoptIPMreqn(fd, level, opt int) (*IPMreqn, error) { @@ -134,225 +140,6 @@ func setattrlistTimes(path string, times []Timespec, flags int) error { return ENOSYS } -// Derive extattr namespace and attribute name - -func xattrnamespace(fullattr string) (ns int, attr string, err error) { - s := strings.IndexByte(fullattr, '.') - if s == -1 { - return -1, "", ENOATTR - } - - namespace := fullattr[0:s] - attr = fullattr[s+1:] - - switch namespace { - case "user": - return EXTATTR_NAMESPACE_USER, attr, nil - case "system": - return EXTATTR_NAMESPACE_SYSTEM, attr, nil - default: - return -1, "", ENOATTR - } -} - -func initxattrdest(dest []byte, idx int) (d unsafe.Pointer) { - if len(dest) > idx { - return unsafe.Pointer(&dest[idx]) - } else { - return unsafe.Pointer(_zero) - } -} - -// FreeBSD implements its own syscalls to handle extended attributes - -func Getxattr(file string, attr string, dest []byte) (sz int, err error) { - d := initxattrdest(dest, 0) - destsize := len(dest) - - nsid, a, err := xattrnamespace(attr) - if err != nil { - return -1, err - } - - return ExtattrGetFile(file, nsid, a, uintptr(d), destsize) -} - -func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { - d := initxattrdest(dest, 0) - destsize := len(dest) - - nsid, a, err := xattrnamespace(attr) - if err != nil { - return -1, err - } - - return ExtattrGetFd(fd, nsid, a, uintptr(d), destsize) -} - -func Lgetxattr(link string, attr string, dest []byte) (sz int, err error) { - d := initxattrdest(dest, 0) - destsize := len(dest) - - nsid, a, err := xattrnamespace(attr) - if err != nil { - return -1, err - } - - return ExtattrGetLink(link, nsid, a, uintptr(d), destsize) -} - -// flags are unused on FreeBSD - -func Fsetxattr(fd int, attr string, data []byte, flags int) (err error) { - d := unsafe.Pointer(&data[0]) - datasiz := len(data) - - nsid, a, err := xattrnamespace(attr) - if err != nil { - return - } - - _, err = ExtattrSetFd(fd, nsid, a, uintptr(d), datasiz) - return -} - -func Setxattr(file string, attr string, data []byte, flags int) (err error) { - d := unsafe.Pointer(&data[0]) - datasiz := len(data) - - nsid, a, err := xattrnamespace(attr) - if err != nil { - return - } - - _, err = ExtattrSetFile(file, nsid, a, uintptr(d), datasiz) - return -} - -func Lsetxattr(link string, attr string, data []byte, flags int) (err error) { - d := unsafe.Pointer(&data[0]) - datasiz := len(data) - - nsid, a, err := xattrnamespace(attr) - if err != nil { - return - } - - _, err = ExtattrSetLink(link, nsid, a, uintptr(d), datasiz) - return -} - -func Removexattr(file string, attr string) (err error) { - nsid, a, err := xattrnamespace(attr) - if err != nil { - return - } - - err = ExtattrDeleteFile(file, nsid, a) - return -} - -func Fremovexattr(fd int, attr string) (err error) { - nsid, a, err := xattrnamespace(attr) - if err != nil { - return - } - - err = ExtattrDeleteFd(fd, nsid, a) - return -} - -func Lremovexattr(link string, attr string) (err error) { - nsid, a, err := xattrnamespace(attr) - if err != nil { - return - } - - err = ExtattrDeleteLink(link, nsid, a) - return -} - -func Listxattr(file string, dest []byte) (sz int, err error) { - d := initxattrdest(dest, 0) - destsiz := len(dest) - - // FreeBSD won't allow you to list xattrs from multiple namespaces - s := 0 - for _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} { - stmp, e := ExtattrListFile(file, nsid, uintptr(d), destsiz) - - /* Errors accessing system attrs are ignored so that - * we can implement the Linux-like behavior of omitting errors that - * we don't have read permissions on - * - * Linux will still error if we ask for user attributes on a file that - * we don't have read permissions on, so don't ignore those errors - */ - if e != nil && e == EPERM && nsid != EXTATTR_NAMESPACE_USER { - continue - } else if e != nil { - return s, e - } - - s += stmp - destsiz -= s - if destsiz < 0 { - destsiz = 0 - } - d = initxattrdest(dest, s) - } - - return s, nil -} - -func Flistxattr(fd int, dest []byte) (sz int, err error) { - d := initxattrdest(dest, 0) - destsiz := len(dest) - - s := 0 - for _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} { - stmp, e := ExtattrListFd(fd, nsid, uintptr(d), destsiz) - if e != nil && e == EPERM && nsid != EXTATTR_NAMESPACE_USER { - continue - } else if e != nil { - return s, e - } - - s += stmp - destsiz -= s - if destsiz < 0 { - destsiz = 0 - } - d = initxattrdest(dest, s) - } - - return s, nil -} - -func Llistxattr(link string, dest []byte) (sz int, err error) { - d := initxattrdest(dest, 0) - destsiz := len(dest) - - s := 0 - for _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} { - stmp, e := ExtattrListLink(link, nsid, uintptr(d), destsiz) - if e != nil && e == EPERM && nsid != EXTATTR_NAMESPACE_USER { - continue - } else if e != nil { - return s, e - } - - s += stmp - destsiz -= s - if destsiz < 0 { - destsiz = 0 - } - d = initxattrdest(dest, s) - } - - return s, nil -} - //sys ioctl(fd int, req uint, arg uintptr) (err error) // ioctl itself should not be exposed directly, but additional get/set @@ -364,11 +151,11 @@ func IoctlSetInt(fd int, req uint, value int) error { return ioctl(fd, req, uintptr(value)) } -func IoctlSetWinsize(fd int, req uint, value *Winsize) error { +func ioctlSetWinsize(fd int, req uint, value *Winsize) error { return ioctl(fd, req, uintptr(unsafe.Pointer(value))) } -func IoctlSetTermios(fd int, req uint, value *Termios) error { +func ioctlSetTermios(fd int, req uint, value *Termios) error { return ioctl(fd, req, uintptr(unsafe.Pointer(value))) } @@ -602,14 +389,6 @@ func Uname(uname *Utsname) error { // Watchevent // Waitevent // Modwatch -// Getxattr -// Fgetxattr -// Setxattr -// Fsetxattr -// Removexattr -// Fremovexattr -// Listxattr -// Flistxattr // Fsctl // Initgroups // Posix_spawn diff --git a/vendor/golang.org/x/sys/unix/syscall_linux.go b/vendor/golang.org/x/sys/unix/syscall_linux.go index 690c2c87..eb633540 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux.go @@ -61,11 +61,11 @@ func IoctlSetInt(fd int, req uint, value int) error { return ioctl(fd, req, uintptr(value)) } -func IoctlSetWinsize(fd int, req uint, value *Winsize) error { +func ioctlSetWinsize(fd int, req uint, value *Winsize) error { return ioctl(fd, req, uintptr(unsafe.Pointer(value))) } -func IoctlSetTermios(fd int, req uint, value *Termios) error { +func ioctlSetTermios(fd int, req uint, value *Termios) error { return ioctl(fd, req, uintptr(unsafe.Pointer(value))) } @@ -1288,7 +1288,11 @@ func Mount(source string, target string, fstype string, flags uintptr, data stri //sys Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) //sys fcntl(fd int, cmd int, arg int) (val int, err error) //sys Fdatasync(fd int) (err error) +//sys Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) +//sys Flistxattr(fd int, dest []byte) (sz int, err error) //sys Flock(fd int, how int) (err error) +//sys Fremovexattr(fd int, attr string) (err error) +//sys Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) //sys Fsync(fd int) (err error) //sys Getdents(fd int, buf []byte) (n int, err error) = SYS_GETDENTS64 //sysnb Getpgid(pid int) (pgid int, err error) @@ -1327,6 +1331,7 @@ func Getpgrp() (pid int) { //sys read(fd int, p []byte) (n int, err error) //sys Removexattr(path string, attr string) (err error) //sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) +//sys Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) //sys RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) //sys Setdomainname(p []byte) (err error) //sys Sethostname(p []byte) (err error) @@ -1415,10 +1420,70 @@ func Vmsplice(fd int, iovs []Iovec, flags int) (int, error) { func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { if flags & ^(AT_SYMLINK_NOFOLLOW|AT_EACCESS) != 0 { return EINVAL - } else if flags&(AT_SYMLINK_NOFOLLOW|AT_EACCESS) != 0 { - return EOPNOTSUPP } - return faccessat(dirfd, path, mode) + + // The Linux kernel faccessat system call does not take any flags. + // The glibc faccessat implements the flags itself; see + // https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/faccessat.c;hb=HEAD + // Because people naturally expect syscall.Faccessat to act + // like C faccessat, we do the same. + + if flags == 0 { + return faccessat(dirfd, path, mode) + } + + var st Stat_t + if err := Fstatat(dirfd, path, &st, flags&AT_SYMLINK_NOFOLLOW); err != nil { + return err + } + + mode &= 7 + if mode == 0 { + return nil + } + + var uid int + if flags&AT_EACCESS != 0 { + uid = Geteuid() + } else { + uid = Getuid() + } + + if uid == 0 { + if mode&1 == 0 { + // Root can read and write any file. + return nil + } + if st.Mode&0111 != 0 { + // Root can execute any file that anybody can execute. + return nil + } + return EACCES + } + + var fmode uint32 + if uint32(uid) == st.Uid { + fmode = (st.Mode >> 6) & 7 + } else { + var gid int + if flags&AT_EACCESS != 0 { + gid = Getegid() + } else { + gid = Getgid() + } + + if uint32(gid) == st.Gid { + fmode = (st.Mode >> 3) & 7 + } else { + fmode = st.Mode & 7 + } + } + + if fmode&mode == mode { + return nil + } + + return EACCES } /* @@ -1440,11 +1505,7 @@ func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { // EpollPwait // EpollWaitOld // Execve -// Fgetxattr -// Flistxattr // Fork -// Fremovexattr -// Fsetxattr // Futex // GetKernelSyms // GetMempolicy diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go b/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go index 0e059248..99e0e999 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go @@ -124,14 +124,13 @@ func Pipe2(p []int, flags int) (err error) { return } +//sysnb pipe() (p1 int, p2 int, err error) + func Pipe(p []int) (err error) { if len(p) != 2 { return EINVAL } - var pp [2]_C_int - err = pipe2(&pp, 0) - p[0] = int(pp[0]) - p[1] = int(pp[1]) + p[0], p[1], err = pipe() return } diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go b/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go index 8c6720f7..6a38dfd5 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go @@ -44,7 +44,6 @@ package unix //sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) //sys Stat(path string, stat *Stat_t) (err error) //sys Statfs(path string, buf *Statfs_t) (err error) -//sys SyncFileRange(fd int, off int64, n int64, flags int) (err error) = SYS_SYNC_FILE_RANGE2 //sys Truncate(path string, length int64) (err error) //sys Ustat(dev int, ubuf *Ustat_t) (err error) //sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) @@ -129,3 +128,11 @@ func Poll(fds []PollFd, timeout int) (n int, err error) { } return poll(&fds[0], len(fds), timeout) } + +//sys syncFileRange2(fd int, flags int, off int64, n int64) (err error) = SYS_SYNC_FILE_RANGE2 + +func SyncFileRange(fd int, off int64, n int64, flags int) error { + // The sync_file_range and sync_file_range2 syscalls differ only in the + // order of their arguments. + return syncFileRange2(fd, flags, off, n) +} diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go b/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go new file mode 100644 index 00000000..512077fe --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go @@ -0,0 +1,212 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build riscv64,linux + +package unix + +import "unsafe" + +func EpollCreate(size int) (fd int, err error) { + if size <= 0 { + return -1, EINVAL + } + return EpollCreate1(0) +} + +//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) = SYS_EPOLL_PWAIT +//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64 +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fstat(fd int, stat *Stat_t) (err error) +//sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) +//sys Fstatfs(fd int, buf *Statfs_t) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sysnb Getegid() (egid int) +//sysnb Geteuid() (euid int) +//sysnb Getgid() (gid int) +//sysnb Getrlimit(resource int, rlim *Rlimit) (err error) +//sysnb Getuid() (uid int) +//sys Listen(s int, n int) (err error) +//sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 +//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 +//sys Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + var ts *Timespec + if timeout != nil { + ts = &Timespec{Sec: timeout.Sec, Nsec: timeout.Usec * 1000} + } + return Pselect(nfd, r, w, e, ts, nil) +} + +//sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) +//sys Setfsgid(gid int) (err error) +//sys Setfsuid(uid int) (err error) +//sysnb Setregid(rgid int, egid int) (err error) +//sysnb Setresgid(rgid int, egid int, sgid int) (err error) +//sysnb Setresuid(ruid int, euid int, suid int) (err error) +//sysnb Setrlimit(resource int, rlim *Rlimit) (err error) +//sysnb Setreuid(ruid int, euid int) (err error) +//sys Shutdown(fd int, how int) (err error) +//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) + +func Stat(path string, stat *Stat_t) (err error) { + return Fstatat(AT_FDCWD, path, stat, 0) +} + +func Lchown(path string, uid int, gid int) (err error) { + return Fchownat(AT_FDCWD, path, uid, gid, AT_SYMLINK_NOFOLLOW) +} + +func Lstat(path string, stat *Stat_t) (err error) { + return Fstatat(AT_FDCWD, path, stat, AT_SYMLINK_NOFOLLOW) +} + +//sys Statfs(path string, buf *Statfs_t) (err error) +//sys SyncFileRange(fd int, off int64, n int64, flags int) (err error) +//sys Truncate(path string, length int64) (err error) + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + return ENOSYS +} + +//sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) +//sys accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) +//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sysnb getgroups(n int, list *_Gid_t) (nn int, err error) +//sysnb setgroups(n int, list *_Gid_t) (err error) +//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) +//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) +//sysnb socket(domain int, typ int, proto int) (fd int, err error) +//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) +//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sysnb getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) +//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) +//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) + +//sysnb Gettimeofday(tv *Timeval) (err error) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} +} + +func futimesat(dirfd int, path string, tv *[2]Timeval) (err error) { + if tv == nil { + return utimensat(dirfd, path, nil, 0) + } + + ts := []Timespec{ + NsecToTimespec(TimevalToNsec(tv[0])), + NsecToTimespec(TimevalToNsec(tv[1])), + } + return utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0) +} + +func Time(t *Time_t) (Time_t, error) { + var tv Timeval + err := Gettimeofday(&tv) + if err != nil { + return 0, err + } + if t != nil { + *t = Time_t(tv.Sec) + } + return Time_t(tv.Sec), nil +} + +func Utime(path string, buf *Utimbuf) error { + tv := []Timeval{ + {Sec: buf.Actime}, + {Sec: buf.Modtime}, + } + return Utimes(path, tv) +} + +func utimes(path string, tv *[2]Timeval) (err error) { + if tv == nil { + return utimensat(AT_FDCWD, path, nil, 0) + } + + ts := []Timespec{ + NsecToTimespec(TimevalToNsec(tv[0])), + NsecToTimespec(TimevalToNsec(tv[1])), + } + return utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0) +} + +func Pipe(p []int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err = pipe2(&pp, 0) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +//sysnb pipe2(p *[2]_C_int, flags int) (err error) + +func Pipe2(p []int, flags int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err = pipe2(&pp, flags) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +func (r *PtraceRegs) PC() uint64 { return r.Pc } + +func (r *PtraceRegs) SetPC(pc uint64) { r.Pc = pc } + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint64(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint64(length) +} + +func InotifyInit() (fd int, err error) { + return InotifyInit1(0) +} + +func Dup2(oldfd int, newfd int) (err error) { + return Dup3(oldfd, newfd, 0) +} + +func Pause() (err error) { + _, _, e1 := Syscall6(SYS_PPOLL, 0, 0, 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func Poll(fds []PollFd, timeout int) (n int, err error) { + var ts *Timespec + if timeout >= 0 { + ts = new(Timespec) + *ts = NsecToTimespec(int64(timeout) * 1e6) + } + if len(fds) == 0 { + return ppoll(nil, 0, ts, nil) + } + return ppoll(&fds[0], len(fds), ts, nil) +} diff --git a/vendor/golang.org/x/sys/unix/syscall_netbsd.go b/vendor/golang.org/x/sys/unix/syscall_netbsd.go index 369a2be2..6f8ebde3 100644 --- a/vendor/golang.org/x/sys/unix/syscall_netbsd.go +++ b/vendor/golang.org/x/sys/unix/syscall_netbsd.go @@ -145,11 +145,11 @@ func IoctlSetInt(fd int, req uint, value int) error { return ioctl(fd, req, uintptr(value)) } -func IoctlSetWinsize(fd int, req uint, value *Winsize) error { +func ioctlSetWinsize(fd int, req uint, value *Winsize) error { return ioctl(fd, req, uintptr(unsafe.Pointer(value))) } -func IoctlSetTermios(fd int, req uint, value *Termios) error { +func ioctlSetTermios(fd int, req uint, value *Termios) error { return ioctl(fd, req, uintptr(unsafe.Pointer(value))) } @@ -233,6 +233,18 @@ func Uname(uname *Utsname) error { //sys Dup(fd int) (nfd int, err error) //sys Dup2(from int, to int) (err error) //sys Exit(code int) +//sys ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) +//sys ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) +//sys ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) +//sys ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) //sys Faccessat(dirfd int, path string, mode uint32, flags int) (err error) //sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_POSIX_FADVISE //sys Fchdir(fd int) (err error) diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd.go b/vendor/golang.org/x/sys/unix/syscall_openbsd.go index 9fc9c06a..07e6669c 100644 --- a/vendor/golang.org/x/sys/unix/syscall_openbsd.go +++ b/vendor/golang.org/x/sys/unix/syscall_openbsd.go @@ -113,11 +113,11 @@ func IoctlSetInt(fd int, req uint, value int) error { return ioctl(fd, req, uintptr(value)) } -func IoctlSetWinsize(fd int, req uint, value *Winsize) error { +func ioctlSetWinsize(fd int, req uint, value *Winsize) error { return ioctl(fd, req, uintptr(unsafe.Pointer(value))) } -func IoctlSetTermios(fd int, req uint, value *Termios) error { +func ioctlSetTermios(fd int, req uint, value *Termios) error { return ioctl(fd, req, uintptr(unsafe.Pointer(value))) } diff --git a/vendor/golang.org/x/sys/unix/syscall_solaris.go b/vendor/golang.org/x/sys/unix/syscall_solaris.go index a05337d5..53b80782 100644 --- a/vendor/golang.org/x/sys/unix/syscall_solaris.go +++ b/vendor/golang.org/x/sys/unix/syscall_solaris.go @@ -540,11 +540,11 @@ func IoctlSetInt(fd int, req uint, value int) (err error) { return ioctl(fd, req, uintptr(value)) } -func IoctlSetWinsize(fd int, req uint, value *Winsize) (err error) { +func ioctlSetWinsize(fd int, req uint, value *Winsize) (err error) { return ioctl(fd, req, uintptr(unsafe.Pointer(value))) } -func IoctlSetTermios(fd int, req uint, value *Termios) (err error) { +func ioctlSetTermios(fd int, req uint, value *Termios) (err error) { return ioctl(fd, req, uintptr(unsafe.Pointer(value))) } diff --git a/vendor/golang.org/x/sys/unix/syscall_unix.go b/vendor/golang.org/x/sys/unix/syscall_unix.go index 95b2180a..13956b79 100644 --- a/vendor/golang.org/x/sys/unix/syscall_unix.go +++ b/vendor/golang.org/x/sys/unix/syscall_unix.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build darwin dragonfly freebsd linux netbsd openbsd solaris +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris package unix diff --git a/vendor/golang.org/x/sys/unix/timestruct.go b/vendor/golang.org/x/sys/unix/timestruct.go index 47b9011e..4a672f56 100644 --- a/vendor/golang.org/x/sys/unix/timestruct.go +++ b/vendor/golang.org/x/sys/unix/timestruct.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build darwin dragonfly freebsd linux netbsd openbsd solaris +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris package unix diff --git a/vendor/golang.org/x/sys/unix/types_aix.go b/vendor/golang.org/x/sys/unix/types_aix.go new file mode 100644 index 00000000..355ad6cf --- /dev/null +++ b/vendor/golang.org/x/sys/unix/types_aix.go @@ -0,0 +1,229 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore +// +build aix + +/* +Input to cgo -godefs. See also mkerrors.sh and mkall.sh +*/ + +// +godefs map struct_in_addr [4]byte /* in_addr */ +// +godefs map struct_in6_addr [16]byte /* in6_addr */ + +package unix + +/* +#include +#include +#include +#include +#include +#include +#include + +#include + +#include +#include +#include +#include + + +#include +#include +#include + +enum { + sizeofPtr = sizeof(void*), +}; + +union sockaddr_all { + struct sockaddr s1; // this one gets used for fields + struct sockaddr_in s2; // these pad it out + struct sockaddr_in6 s3; + struct sockaddr_un s4; + struct sockaddr_dl s5; +}; + +struct sockaddr_any { + struct sockaddr addr; + char pad[sizeof(union sockaddr_all) - sizeof(struct sockaddr)]; +}; + +*/ +import "C" + +// Machine characteristics; for internal use. + +const ( + sizeofPtr = C.sizeofPtr + sizeofShort = C.sizeof_short + sizeofInt = C.sizeof_int + sizeofLong = C.sizeof_long + sizeofLongLong = C.sizeof_longlong + PathMax = C.PATH_MAX +) + +// Basic types + +type ( + _C_short C.short + _C_int C.int + _C_long C.long + _C_long_long C.longlong +) + +type off64 C.off64_t +type off C.off_t +type Mode_t C.mode_t + +// Time + +type Timespec C.struct_timespec + +type StTimespec C.struct_st_timespec + +type Timeval C.struct_timeval + +type Timeval32 C.struct_timeval32 + +type Timex C.struct_timex + +type Time_t C.time_t + +type Tms C.struct_tms + +type Utimbuf C.struct_utimbuf + +type Timezone C.struct_timezone + +// Processes + +type Rusage C.struct_rusage + +type Rlimit C.struct_rlimit64 + +type Pid_t C.pid_t + +type _Gid_t C.gid_t + +type dev_t C.dev_t + +// Files + +type Stat_t C.struct_stat + +type StatxTimestamp C.struct_statx_timestamp + +type Statx_t C.struct_statx + +type Dirent C.struct_dirent + +// Sockets + +type RawSockaddrInet4 C.struct_sockaddr_in + +type RawSockaddrInet6 C.struct_sockaddr_in6 + +type RawSockaddrUnix C.struct_sockaddr_un + +type RawSockaddr C.struct_sockaddr + +type RawSockaddrAny C.struct_sockaddr_any + +type _Socklen C.socklen_t + +type Cmsghdr C.struct_cmsghdr + +type ICMPv6Filter C.struct_icmp6_filter + +type Iovec C.struct_iovec + +type IPMreq C.struct_ip_mreq + +type IPv6Mreq C.struct_ipv6_mreq + +type IPv6MTUInfo C.struct_ip6_mtuinfo + +type Linger C.struct_linger + +type Msghdr C.struct_msghdr + +const ( + SizeofSockaddrInet4 = C.sizeof_struct_sockaddr_in + SizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 + SizeofSockaddrAny = C.sizeof_struct_sockaddr_any + SizeofSockaddrUnix = C.sizeof_struct_sockaddr_un + SizeofLinger = C.sizeof_struct_linger + SizeofIPMreq = C.sizeof_struct_ip_mreq + SizeofIPv6Mreq = C.sizeof_struct_ipv6_mreq + SizeofIPv6MTUInfo = C.sizeof_struct_ip6_mtuinfo + SizeofMsghdr = C.sizeof_struct_msghdr + SizeofCmsghdr = C.sizeof_struct_cmsghdr + SizeofICMPv6Filter = C.sizeof_struct_icmp6_filter +) + +// Routing and interface messages + +const ( + SizeofIfMsghdr = C.sizeof_struct_if_msghdr +) + +type IfMsgHdr C.struct_if_msghdr + +// Misc + +type FdSet C.fd_set + +type Utsname C.struct_utsname + +type Ustat_t C.struct_ustat + +type Sigset_t C.sigset_t + +const ( + AT_FDCWD = C.AT_FDCWD + AT_REMOVEDIR = C.AT_REMOVEDIR + AT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW +) + +// Terminal handling + +type Termios C.struct_termios + +type Termio C.struct_termio + +type Winsize C.struct_winsize + +//poll + +type PollFd struct { + Fd int32 + Events uint16 + Revents uint16 +} + +const ( + POLLERR = C.POLLERR + POLLHUP = C.POLLHUP + POLLIN = C.POLLIN + POLLNVAL = C.POLLNVAL + POLLOUT = C.POLLOUT + POLLPRI = C.POLLPRI + POLLRDBAND = C.POLLRDBAND + POLLRDNORM = C.POLLRDNORM + POLLWRBAND = C.POLLWRBAND + POLLWRNORM = C.POLLWRNORM +) + +//flock_t + +type Flock_t C.struct_flock64 + +// Statfs + +type Statfs_t C.struct_statfs + +const RNDGETENTCNT = 0x80045200 diff --git a/vendor/golang.org/x/sys/unix/types_dragonfly.go b/vendor/golang.org/x/sys/unix/types_dragonfly.go index 0c633048..386d5f89 100644 --- a/vendor/golang.org/x/sys/unix/types_dragonfly.go +++ b/vendor/golang.org/x/sys/unix/types_dragonfly.go @@ -100,23 +100,6 @@ type _Gid_t C.gid_t // Files -const ( // Directory mode bits - S_IFMT = C.S_IFMT - S_IFIFO = C.S_IFIFO - S_IFCHR = C.S_IFCHR - S_IFDIR = C.S_IFDIR - S_IFBLK = C.S_IFBLK - S_IFREG = C.S_IFREG - S_IFLNK = C.S_IFLNK - S_IFSOCK = C.S_IFSOCK - S_ISUID = C.S_ISUID - S_ISGID = C.S_ISGID - S_ISVTX = C.S_ISVTX - S_IRUSR = C.S_IRUSR - S_IWUSR = C.S_IWUSR - S_IXUSR = C.S_IXUSR -) - type Stat_t C.struct_stat type Statfs_t C.struct_statfs diff --git a/vendor/golang.org/x/sys/unix/types_freebsd.go b/vendor/golang.org/x/sys/unix/types_freebsd.go index 4eb02cd4..e84a892d 100644 --- a/vendor/golang.org/x/sys/unix/types_freebsd.go +++ b/vendor/golang.org/x/sys/unix/types_freebsd.go @@ -189,23 +189,6 @@ type _Gid_t C.gid_t // Files -const ( // Directory mode bits - S_IFMT = C.S_IFMT - S_IFIFO = C.S_IFIFO - S_IFCHR = C.S_IFCHR - S_IFDIR = C.S_IFDIR - S_IFBLK = C.S_IFBLK - S_IFREG = C.S_IFREG - S_IFLNK = C.S_IFLNK - S_IFSOCK = C.S_IFSOCK - S_ISUID = C.S_ISUID - S_ISGID = C.S_ISGID - S_ISVTX = C.S_ISVTX - S_IRUSR = C.S_IRUSR - S_IWUSR = C.S_IWUSR - S_IXUSR = C.S_IXUSR -) - type Stat_t C.struct_stat8 type Statfs_t C.struct_statfs diff --git a/vendor/golang.org/x/sys/unix/types_openbsd.go b/vendor/golang.org/x/sys/unix/types_openbsd.go index 649e5599..8f2fe704 100644 --- a/vendor/golang.org/x/sys/unix/types_openbsd.go +++ b/vendor/golang.org/x/sys/unix/types_openbsd.go @@ -101,23 +101,6 @@ type _Gid_t C.gid_t // Files -const ( // Directory mode bits - S_IFMT = C.S_IFMT - S_IFIFO = C.S_IFIFO - S_IFCHR = C.S_IFCHR - S_IFDIR = C.S_IFDIR - S_IFBLK = C.S_IFBLK - S_IFREG = C.S_IFREG - S_IFLNK = C.S_IFLNK - S_IFSOCK = C.S_IFSOCK - S_ISUID = C.S_ISUID - S_ISGID = C.S_ISGID - S_ISVTX = C.S_ISVTX - S_IRUSR = C.S_IRUSR - S_IWUSR = C.S_IWUSR - S_IXUSR = C.S_IXUSR -) - type Stat_t C.struct_stat type Statfs_t C.struct_statfs diff --git a/vendor/golang.org/x/sys/unix/types_solaris.go b/vendor/golang.org/x/sys/unix/types_solaris.go index f7771554..8cef71bd 100644 --- a/vendor/golang.org/x/sys/unix/types_solaris.go +++ b/vendor/golang.org/x/sys/unix/types_solaris.go @@ -118,23 +118,6 @@ type _Gid_t C.gid_t // Files -const ( // Directory mode bits - S_IFMT = C.S_IFMT - S_IFIFO = C.S_IFIFO - S_IFCHR = C.S_IFCHR - S_IFDIR = C.S_IFDIR - S_IFBLK = C.S_IFBLK - S_IFREG = C.S_IFREG - S_IFLNK = C.S_IFLNK - S_IFSOCK = C.S_IFSOCK - S_ISUID = C.S_ISUID - S_ISGID = C.S_ISGID - S_ISVTX = C.S_ISVTX - S_IRUSR = C.S_IRUSR - S_IWUSR = C.S_IWUSR - S_IXUSR = C.S_IXUSR -) - type Stat_t C.struct_stat type Flock_t C.struct_flock diff --git a/vendor/golang.org/x/sys/unix/xattr_bsd.go b/vendor/golang.org/x/sys/unix/xattr_bsd.go new file mode 100644 index 00000000..93049932 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/xattr_bsd.go @@ -0,0 +1,231 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build freebsd netbsd + +package unix + +import ( + "strings" + "unsafe" +) + +// Derive extattr namespace and attribute name + +func xattrnamespace(fullattr string) (ns int, attr string, err error) { + s := strings.IndexByte(fullattr, '.') + if s == -1 { + return -1, "", ENOATTR + } + + namespace := fullattr[0:s] + attr = fullattr[s+1:] + + switch namespace { + case "user": + return EXTATTR_NAMESPACE_USER, attr, nil + case "system": + return EXTATTR_NAMESPACE_SYSTEM, attr, nil + default: + return -1, "", ENOATTR + } +} + +func initxattrdest(dest []byte, idx int) (d unsafe.Pointer) { + if len(dest) > idx { + return unsafe.Pointer(&dest[idx]) + } else { + return unsafe.Pointer(_zero) + } +} + +// FreeBSD and NetBSD implement their own syscalls to handle extended attributes + +func Getxattr(file string, attr string, dest []byte) (sz int, err error) { + d := initxattrdest(dest, 0) + destsize := len(dest) + + nsid, a, err := xattrnamespace(attr) + if err != nil { + return -1, err + } + + return ExtattrGetFile(file, nsid, a, uintptr(d), destsize) +} + +func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + d := initxattrdest(dest, 0) + destsize := len(dest) + + nsid, a, err := xattrnamespace(attr) + if err != nil { + return -1, err + } + + return ExtattrGetFd(fd, nsid, a, uintptr(d), destsize) +} + +func Lgetxattr(link string, attr string, dest []byte) (sz int, err error) { + d := initxattrdest(dest, 0) + destsize := len(dest) + + nsid, a, err := xattrnamespace(attr) + if err != nil { + return -1, err + } + + return ExtattrGetLink(link, nsid, a, uintptr(d), destsize) +} + +// flags are unused on FreeBSD + +func Fsetxattr(fd int, attr string, data []byte, flags int) (err error) { + d := unsafe.Pointer(&data[0]) + datasiz := len(data) + + nsid, a, err := xattrnamespace(attr) + if err != nil { + return + } + + _, err = ExtattrSetFd(fd, nsid, a, uintptr(d), datasiz) + return +} + +func Setxattr(file string, attr string, data []byte, flags int) (err error) { + d := unsafe.Pointer(&data[0]) + datasiz := len(data) + + nsid, a, err := xattrnamespace(attr) + if err != nil { + return + } + + _, err = ExtattrSetFile(file, nsid, a, uintptr(d), datasiz) + return +} + +func Lsetxattr(link string, attr string, data []byte, flags int) (err error) { + d := unsafe.Pointer(&data[0]) + datasiz := len(data) + + nsid, a, err := xattrnamespace(attr) + if err != nil { + return + } + + _, err = ExtattrSetLink(link, nsid, a, uintptr(d), datasiz) + return +} + +func Removexattr(file string, attr string) (err error) { + nsid, a, err := xattrnamespace(attr) + if err != nil { + return + } + + err = ExtattrDeleteFile(file, nsid, a) + return +} + +func Fremovexattr(fd int, attr string) (err error) { + nsid, a, err := xattrnamespace(attr) + if err != nil { + return + } + + err = ExtattrDeleteFd(fd, nsid, a) + return +} + +func Lremovexattr(link string, attr string) (err error) { + nsid, a, err := xattrnamespace(attr) + if err != nil { + return + } + + err = ExtattrDeleteLink(link, nsid, a) + return +} + +func Listxattr(file string, dest []byte) (sz int, err error) { + d := initxattrdest(dest, 0) + destsiz := len(dest) + + // FreeBSD won't allow you to list xattrs from multiple namespaces + s := 0 + for _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} { + stmp, e := ExtattrListFile(file, nsid, uintptr(d), destsiz) + + /* Errors accessing system attrs are ignored so that + * we can implement the Linux-like behavior of omitting errors that + * we don't have read permissions on + * + * Linux will still error if we ask for user attributes on a file that + * we don't have read permissions on, so don't ignore those errors + */ + if e != nil && e == EPERM && nsid != EXTATTR_NAMESPACE_USER { + continue + } else if e != nil { + return s, e + } + + s += stmp + destsiz -= s + if destsiz < 0 { + destsiz = 0 + } + d = initxattrdest(dest, s) + } + + return s, nil +} + +func Flistxattr(fd int, dest []byte) (sz int, err error) { + d := initxattrdest(dest, 0) + destsiz := len(dest) + + s := 0 + for _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} { + stmp, e := ExtattrListFd(fd, nsid, uintptr(d), destsiz) + if e != nil && e == EPERM && nsid != EXTATTR_NAMESPACE_USER { + continue + } else if e != nil { + return s, e + } + + s += stmp + destsiz -= s + if destsiz < 0 { + destsiz = 0 + } + d = initxattrdest(dest, s) + } + + return s, nil +} + +func Llistxattr(link string, dest []byte) (sz int, err error) { + d := initxattrdest(dest, 0) + destsiz := len(dest) + + s := 0 + for _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} { + stmp, e := ExtattrListLink(link, nsid, uintptr(d), destsiz) + if e != nil && e == EPERM && nsid != EXTATTR_NAMESPACE_USER { + continue + } else if e != nil { + return s, e + } + + s += stmp + destsiz -= s + if destsiz < 0 { + destsiz = 0 + } + d = initxattrdest(dest, s) + } + + return s, nil +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_aix_ppc.go b/vendor/golang.org/x/sys/unix/zerrors_aix_ppc.go new file mode 100644 index 00000000..17c1537f --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_aix_ppc.go @@ -0,0 +1,1360 @@ +// mkerrors.sh -maix32 +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build ppc,aix + +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs -- -maix32 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_BYPASS = 0x19 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x18 + AF_INTF = 0x14 + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x1e + AF_NDD = 0x17 + AF_NETWARE = 0x16 + AF_NS = 0x6 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_RIF = 0x15 + AF_ROUTE = 0x11 + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + ALTWERASE = 0x400000 + ARPHRD_802_3 = 0x6 + ARPHRD_802_5 = 0x6 + ARPHRD_ETHER = 0x1 + ARPHRD_FDDI = 0x1 + B0 = 0x0 + B110 = 0x3 + B1200 = 0x9 + B134 = 0x4 + B150 = 0x5 + B1800 = 0xa + B19200 = 0xe + B200 = 0x6 + B2400 = 0xb + B300 = 0x7 + B38400 = 0xf + B4800 = 0xc + B50 = 0x1 + B600 = 0x8 + B75 = 0x2 + B9600 = 0xd + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x1000 + BSDLY = 0x1000 + CAP_AACCT = 0x6 + CAP_ARM_APPLICATION = 0x5 + CAP_BYPASS_RAC_VMM = 0x3 + CAP_CLEAR = 0x0 + CAP_CREDENTIALS = 0x7 + CAP_EFFECTIVE = 0x1 + CAP_EWLM_AGENT = 0x4 + CAP_INHERITABLE = 0x2 + CAP_MAXIMUM = 0x7 + CAP_NUMA_ATTACH = 0x2 + CAP_PERMITTED = 0x3 + CAP_PROPAGATE = 0x1 + CAP_PROPOGATE = 0x1 + CAP_SET = 0x1 + CBAUD = 0xf + CFLUSH = 0xf + CIBAUD = 0xf0000 + CLOCAL = 0x800 + CLOCK_MONOTONIC = 0xa + CLOCK_PROCESS_CPUTIME_ID = 0xb + CLOCK_REALTIME = 0x9 + CLOCK_THREAD_CPUTIME_ID = 0xc + CR0 = 0x0 + CR1 = 0x100 + CR2 = 0x200 + CR3 = 0x300 + CRDLY = 0x300 + CREAD = 0x80 + CS5 = 0x0 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIOCGIFCONF = -0x3ff796dc + CSIZE = 0x30 + CSMAP_DIR = "/usr/lib/nls/csmap/" + CSTART = '\021' + CSTOP = '\023' + CSTOPB = 0x40 + CSUSP = 0x1a + ECHO = 0x8 + ECHOCTL = 0x20000 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x80000 + ECHONL = 0x40 + ECHOPRT = 0x40000 + ECH_ICMPID = 0x2 + ETHERNET_CSMACD = 0x6 + EVENP = 0x80 + EXCONTINUE = 0x0 + EXDLOK = 0x3 + EXIO = 0x2 + EXPGIO = 0x0 + EXRESUME = 0x2 + EXRETURN = 0x1 + EXSIG = 0x4 + EXTA = 0xe + EXTB = 0xf + EXTRAP = 0x1 + EYEC_RTENTRYA = 0x257274656e747241 + EYEC_RTENTRYF = 0x257274656e747246 + E_ACC = 0x0 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0xfffe + FF0 = 0x0 + FF1 = 0x2000 + FFDLY = 0x2000 + FLUSHBAND = 0x40 + FLUSHLOW = 0x8 + FLUSHO = 0x100000 + FLUSHR = 0x1 + FLUSHRW = 0x3 + FLUSHW = 0x2 + F_CLOSEM = 0xa + F_DUP2FD = 0xe + F_DUPFD = 0x0 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0x5 + F_GETLK64 = 0xb + F_GETOWN = 0x8 + F_LOCK = 0x1 + F_OK = 0x0 + F_RDLCK = 0x1 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x6 + F_SETLK64 = 0xc + F_SETLKW = 0x7 + F_SETLKW64 = 0xd + F_SETOWN = 0x9 + F_TEST = 0x3 + F_TLOCK = 0x2 + F_TSTLK = 0xf + F_ULOCK = 0x0 + F_UNLCK = 0x3 + F_WRLCK = 0x2 + HUPCL = 0x400 + IBSHIFT = 0x10 + ICANON = 0x2 + ICMP6_FILTER = 0x26 + ICMP6_SEC_SEND_DEL = 0x46 + ICMP6_SEC_SEND_GET = 0x47 + ICMP6_SEC_SEND_SET = 0x44 + ICMP6_SEC_SEND_SET_CGA_ADDR = 0x45 + ICRNL = 0x100 + IEXTEN = 0x200000 + IFA_FIRSTALIAS = 0x2000 + IFA_ROUTE = 0x1 + IFF_64BIT = 0x4000000 + IFF_ALLCAST = 0x20000 + IFF_ALLMULTI = 0x200 + IFF_BPF = 0x8000000 + IFF_BRIDGE = 0x40000 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x80c52 + IFF_CHECKSUM_OFFLOAD = 0x10000000 + IFF_D1 = 0x8000 + IFF_D2 = 0x4000 + IFF_D3 = 0x2000 + IFF_D4 = 0x1000 + IFF_DEBUG = 0x4 + IFF_DEVHEALTH = 0x4000 + IFF_DO_HW_LOOPBACK = 0x10000 + IFF_GROUP_ROUTING = 0x2000000 + IFF_IFBUFMGT = 0x800000 + IFF_LINK0 = 0x100000 + IFF_LINK1 = 0x200000 + IFF_LINK2 = 0x400000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x80000 + IFF_NOARP = 0x80 + IFF_NOECHO = 0x800 + IFF_NOTRAILERS = 0x20 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PROMISC = 0x100 + IFF_PSEG = 0x40000000 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_SNAP = 0x8000 + IFF_TCP_DISABLE_CKSUM = 0x20000000 + IFF_TCP_NOCKSUM = 0x1000000 + IFF_UP = 0x1 + IFF_VIPA = 0x80000000 + IFNAMSIZ = 0x10 + IFO_FLUSH = 0x1 + IFT_1822 = 0x2 + IFT_AAL5 = 0x31 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ATM = 0x25 + IFT_CEPT = 0x13 + IFT_CLUSTER = 0x3e + IFT_DS3 = 0x1e + IFT_EON = 0x19 + IFT_ETHER = 0x6 + IFT_FCS = 0x3a + IFT_FDDI = 0xf + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_GIFTUNNEL = 0x3c + IFT_HDH1822 = 0x3 + IFT_HF = 0x3d + IFT_HIPPI = 0x2f + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IB = 0xc7 + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88026 = 0xa + IFT_LAPB = 0x10 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_NSIP = 0x1b + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PPP = 0x17 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PTPSERIAL = 0x16 + IFT_RS232 = 0x21 + IFT_SDLC = 0x11 + IFT_SIP = 0x1f + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SN = 0x38 + IFT_SONET = 0x27 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_SP = 0x39 + IFT_STARLAN = 0xb + IFT_T1 = 0x12 + IFT_TUNNEL = 0x3b + IFT_ULTRA = 0x1d + IFT_V35 = 0x2d + IFT_VIPA = 0x37 + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x10000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IN_USE = 0x1 + IPPROTO_AH = 0x33 + IPPROTO_BIP = 0x53 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GIF = 0x8c + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPIP = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_LOCAL = 0x3f + IPPROTO_MAX = 0x100 + IPPROTO_MH = 0x87 + IPPROTO_NONE = 0x3b + IPPROTO_PUP = 0xc + IPPROTO_QOS = 0x2d + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPV6_ADDRFORM = 0x16 + IPV6_ADDR_PREFERENCES = 0x4a + IPV6_ADD_MEMBERSHIP = 0xc + IPV6_AIXRAWSOCKET = 0x39 + IPV6_CHECKSUM = 0x27 + IPV6_DONTFRAG = 0x2d + IPV6_DROP_MEMBERSHIP = 0xd + IPV6_DSTOPTS = 0x36 + IPV6_FLOWINFO_FLOWLABEL = 0xffffff + IPV6_FLOWINFO_PRIFLOW = 0xfffffff + IPV6_FLOWINFO_PRIORITY = 0xf000000 + IPV6_FLOWINFO_SRFLAG = 0x10000000 + IPV6_FLOWINFO_VERSION = 0xf0000000 + IPV6_HOPLIMIT = 0x28 + IPV6_HOPOPTS = 0x34 + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MIPDSTOPTS = 0x36 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_NOPROBE = 0x1c + IPV6_PATHMTU = 0x2e + IPV6_PKTINFO = 0x21 + IPV6_PKTOPTIONS = 0x24 + IPV6_PRIORITY_10 = 0xa000000 + IPV6_PRIORITY_11 = 0xb000000 + IPV6_PRIORITY_12 = 0xc000000 + IPV6_PRIORITY_13 = 0xd000000 + IPV6_PRIORITY_14 = 0xe000000 + IPV6_PRIORITY_15 = 0xf000000 + IPV6_PRIORITY_8 = 0x8000000 + IPV6_PRIORITY_9 = 0x9000000 + IPV6_PRIORITY_BULK = 0x4000000 + IPV6_PRIORITY_CONTROL = 0x7000000 + IPV6_PRIORITY_FILLER = 0x1000000 + IPV6_PRIORITY_INTERACTIVE = 0x6000000 + IPV6_PRIORITY_RESERVED1 = 0x3000000 + IPV6_PRIORITY_RESERVED2 = 0x5000000 + IPV6_PRIORITY_UNATTENDED = 0x2000000 + IPV6_PRIORITY_UNCHARACTERIZED = 0x0 + IPV6_RECVDSTOPTS = 0x38 + IPV6_RECVHOPLIMIT = 0x29 + IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVHOPS = 0x22 + IPV6_RECVIF = 0x1e + IPV6_RECVPATHMTU = 0x2f + IPV6_RECVPKTINFO = 0x23 + IPV6_RECVRTHDR = 0x33 + IPV6_RECVSRCRT = 0x1d + IPV6_RECVTCLASS = 0x2a + IPV6_RTHDR = 0x32 + IPV6_RTHDRDSTOPTS = 0x37 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_RTHDR_TYPE_2 = 0x2 + IPV6_SENDIF = 0x1f + IPV6_SRFLAG_LOOSE = 0x0 + IPV6_SRFLAG_STRICT = 0x10000000 + IPV6_TCLASS = 0x2b + IPV6_TOKEN_LENGTH = 0x40 + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2c + IPV6_V6ONLY = 0x25 + IPV6_VERSION = 0x60000000 + IP_ADDRFORM = 0x16 + IP_ADD_MEMBERSHIP = 0xc + IP_ADD_SOURCE_MEMBERSHIP = 0x3c + IP_BLOCK_SOURCE = 0x3a + IP_BROADCAST_IF = 0x10 + IP_CACHE_LINE_SIZE = 0x80 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DHCPMODE = 0x11 + IP_DONTFRAG = 0x19 + IP_DROP_MEMBERSHIP = 0xd + IP_DROP_SOURCE_MEMBERSHIP = 0x3d + IP_FINDPMTU = 0x1a + IP_HDRINCL = 0x2 + IP_INC_MEMBERSHIPS = 0x14 + IP_INIT_MEMBERSHIP = 0x14 + IP_MAXPACKET = 0xffff + IP_MF = 0x2000 + IP_MSS = 0x240 + IP_MULTICAST_HOPS = 0xa + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_OPT = 0x1b + IP_OPTIONS = 0x1 + IP_PMTUAGE = 0x1b + IP_RECVDSTADDR = 0x7 + IP_RECVIF = 0x14 + IP_RECVIFINFO = 0xf + IP_RECVINTERFACE = 0x20 + IP_RECVMACHDR = 0xe + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVTTL = 0x22 + IP_RETOPTS = 0x8 + IP_SOURCE_FILTER = 0x48 + IP_TOS = 0x3 + IP_TTL = 0x4 + IP_UNBLOCK_SOURCE = 0x3b + IP_UNICAST_HOPS = 0x4 + ISIG = 0x1 + ISTRIP = 0x20 + IUCLC = 0x800 + IXANY = 0x1000 + IXOFF = 0x400 + IXON = 0x200 + I_FLUSH = 0x20005305 + LNOFLSH = 0x8000 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DONTNEED = 0x4 + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_SPACEAVAIL = 0x5 + MADV_WILLNEED = 0x3 + MAP_ANON = 0x10 + MAP_ANONYMOUS = 0x10 + MAP_FILE = 0x0 + MAP_FIXED = 0x100 + MAP_PRIVATE = 0x2 + MAP_SHARED = 0x1 + MAP_TYPE = 0xf0 + MAP_VARIABLE = 0x0 + MCL_CURRENT = 0x100 + MCL_FUTURE = 0x200 + MSG_ANY = 0x4 + MSG_ARGEXT = 0x400 + MSG_BAND = 0x2 + MSG_COMPAT = 0x8000 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_EOR = 0x8 + MSG_HIPRI = 0x1 + MSG_MAXIOVLEN = 0x10 + MSG_MPEG2 = 0x80 + MSG_NONBLOCK = 0x4000 + MSG_NOSIGNAL = 0x100 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MSG_WAITFORONE = 0x200 + MS_ASYNC = 0x10 + MS_EINTR = 0x80 + MS_INVALIDATE = 0x40 + MS_PER_SEC = 0x3e8 + MS_SYNC = 0x20 + NL0 = 0x0 + NL1 = 0x4000 + NL2 = 0x8000 + NL3 = 0xc000 + NLDLY = 0x4000 + NOFLSH = 0x80 + NOFLUSH = 0x80000000 + OCRNL = 0x8 + OFDEL = 0x80 + OFILL = 0x40 + OLCUC = 0x2 + ONLCR = 0x4 + ONLRET = 0x20 + ONOCR = 0x10 + ONOEOT = 0x80000 + OPOST = 0x1 + OXTABS = 0x40000 + O_ACCMODE = 0x23 + O_APPEND = 0x8 + O_CIO = 0x80 + O_CIOR = 0x800000000 + O_CLOEXEC = 0x800000 + O_CREAT = 0x100 + O_DEFER = 0x2000 + O_DELAY = 0x4000 + O_DIRECT = 0x8000000 + O_DIRECTORY = 0x80000 + O_DSYNC = 0x400000 + O_EFSOFF = 0x400000000 + O_EFSON = 0x200000000 + O_EXCL = 0x400 + O_EXEC = 0x20 + O_LARGEFILE = 0x4000000 + O_NDELAY = 0x8000 + O_NOCACHE = 0x100000 + O_NOCTTY = 0x800 + O_NOFOLLOW = 0x1000000 + O_NONBLOCK = 0x4 + O_NONE = 0x3 + O_NSHARE = 0x10000 + O_RAW = 0x100000000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSHARE = 0x1000 + O_RSYNC = 0x200000 + O_SEARCH = 0x20 + O_SNAPSHOT = 0x40 + O_SYNC = 0x10 + O_TRUNC = 0x200 + O_TTY_INIT = 0x0 + O_WRONLY = 0x1 + PARENB = 0x100 + PAREXT = 0x100000 + PARMRK = 0x8 + PARODD = 0x200 + PENDIN = 0x20000000 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PR_64BIT = 0x20 + PR_ADDR = 0x2 + PR_ARGEXT = 0x400 + PR_ATOMIC = 0x1 + PR_CONNREQUIRED = 0x4 + PR_FASTHZ = 0x5 + PR_INP = 0x40 + PR_INTRLEVEL = 0x8000 + PR_MLS = 0x100 + PR_MLS_1_LABEL = 0x200 + PR_NOEOR = 0x4000 + PR_RIGHTS = 0x10 + PR_SLOWHZ = 0x2 + PR_WANTRCVD = 0x8 + RLIMIT_AS = 0x6 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_NOFILE = 0x7 + RLIMIT_NPROC = 0x9 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x8 + RTAX_NETMASK = 0x2 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DOWNSTREAM = 0x100 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTC_IA64 = 0x3 + RTC_POWER = 0x1 + RTC_POWER_PC = 0x2 + RTF_ACTIVE_DGD = 0x1000000 + RTF_BCE = 0x80000 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_BUL = 0x2000 + RTF_CLONE = 0x10000 + RTF_CLONED = 0x20000 + RTF_CLONING = 0x100 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_FREE_IN_PROG = 0x4000000 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MASK = 0x80 + RTF_MODIFIED = 0x20 + RTF_MULTICAST = 0x800000 + RTF_PERMANENT6 = 0x8000000 + RTF_PINNED = 0x100000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x40000 + RTF_REJECT = 0x8 + RTF_SMALLMTU = 0x40000 + RTF_STATIC = 0x800 + RTF_STOPSRCH = 0x2000000 + RTF_UNREACHABLE = 0x10000000 + RTF_UP = 0x1 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_EXPIRE = 0xf + RTM_GET = 0x4 + RTM_GETNEXT = 0x11 + RTM_IFINFO = 0xe + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_OLDADD = 0x9 + RTM_OLDDEL = 0xa + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTLOST = 0x10 + RTM_RTTUNIT = 0xf4240 + RTM_SAMEADDR = 0x12 + RTM_SET = 0x13 + RTM_VERSION = 0x2 + RTM_VERSION_GR = 0x4 + RTM_VERSION_GR_COMPAT = 0x3 + RTM_VERSION_POLICY = 0x5 + RTM_VERSION_POLICY_EXT = 0x6 + RTM_VERSION_POLICY_PRFN = 0x7 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_RIGHTS = 0x1 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIGMAX64 = 0xff + SIGQUEUE_MAX = 0x20 + SIOCADDIFVIPA = 0x20006942 + SIOCADDMTU = -0x7ffb9690 + SIOCADDMULTI = -0x7fdf96cf + SIOCADDNETID = -0x7fd796a9 + SIOCADDRT = -0x7fcf8df6 + SIOCAIFADDR = -0x7fbf96e6 + SIOCATMARK = 0x40047307 + SIOCDARP = -0x7fb396e0 + SIOCDELIFVIPA = 0x20006943 + SIOCDELMTU = -0x7ffb968f + SIOCDELMULTI = -0x7fdf96ce + SIOCDELPMTU = -0x7fd78ff6 + SIOCDELRT = -0x7fcf8df5 + SIOCDIFADDR = -0x7fd796e7 + SIOCDNETOPT = -0x3ffe9680 + SIOCDX25XLATE = -0x7fd7969b + SIOCFIFADDR = -0x7fdf966d + SIOCGARP = -0x3fb396da + SIOCGETMTUS = 0x2000696f + SIOCGETSGCNT = -0x3feb8acc + SIOCGETVIFCNT = -0x3feb8acd + SIOCGHIWAT = 0x40047301 + SIOCGIFADDR = -0x3fd796df + SIOCGIFADDRS = 0x2000698c + SIOCGIFBAUDRATE = -0x3fd79693 + SIOCGIFBRDADDR = -0x3fd796dd + SIOCGIFCONF = -0x3ff796bb + SIOCGIFCONFGLOB = -0x3ff79670 + SIOCGIFDSTADDR = -0x3fd796de + SIOCGIFFLAGS = -0x3fd796ef + SIOCGIFGIDLIST = 0x20006968 + SIOCGIFHWADDR = -0x3fab966b + SIOCGIFMETRIC = -0x3fd796e9 + SIOCGIFMTU = -0x3fd796aa + SIOCGIFNETMASK = -0x3fd796db + SIOCGIFOPTIONS = -0x3fd796d6 + SIOCGISNO = -0x3fd79695 + SIOCGLOADF = -0x3ffb967e + SIOCGLOWAT = 0x40047303 + SIOCGNETOPT = -0x3ffe96a5 + SIOCGNETOPT1 = -0x3fdf967f + SIOCGNMTUS = 0x2000696e + SIOCGPGRP = 0x40047309 + SIOCGSIZIFCONF = 0x4004696a + SIOCGSRCFILTER = -0x3fe796cb + SIOCGTUNEPHASE = -0x3ffb9676 + SIOCGX25XLATE = -0x3fd7969c + SIOCIFATTACH = -0x7fdf9699 + SIOCIFDETACH = -0x7fdf969a + SIOCIFGETPKEY = -0x7fdf969b + SIOCIF_ATM_DARP = -0x7fdf9683 + SIOCIF_ATM_DUMPARP = -0x7fdf9685 + SIOCIF_ATM_GARP = -0x7fdf9682 + SIOCIF_ATM_IDLE = -0x7fdf9686 + SIOCIF_ATM_SARP = -0x7fdf9681 + SIOCIF_ATM_SNMPARP = -0x7fdf9687 + SIOCIF_ATM_SVC = -0x7fdf9684 + SIOCIF_ATM_UBR = -0x7fdf9688 + SIOCIF_DEVHEALTH = -0x7ffb966c + SIOCIF_IB_ARP_INCOMP = -0x7fdf9677 + SIOCIF_IB_ARP_TIMER = -0x7fdf9678 + SIOCIF_IB_CLEAR_PINFO = -0x3fdf966f + SIOCIF_IB_DEL_ARP = -0x7fdf967f + SIOCIF_IB_DEL_PINFO = -0x3fdf9670 + SIOCIF_IB_DUMP_ARP = -0x7fdf9680 + SIOCIF_IB_GET_ARP = -0x7fdf967e + SIOCIF_IB_GET_INFO = -0x3f879675 + SIOCIF_IB_GET_STATS = -0x3f879672 + SIOCIF_IB_NOTIFY_ADDR_REM = -0x3f87966a + SIOCIF_IB_RESET_STATS = -0x3f879671 + SIOCIF_IB_RESIZE_CQ = -0x7fdf9679 + SIOCIF_IB_SET_ARP = -0x7fdf967d + SIOCIF_IB_SET_PKEY = -0x7fdf967c + SIOCIF_IB_SET_PORT = -0x7fdf967b + SIOCIF_IB_SET_QKEY = -0x7fdf9676 + SIOCIF_IB_SET_QSIZE = -0x7fdf967a + SIOCLISTIFVIPA = 0x20006944 + SIOCSARP = -0x7fb396e2 + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = -0x7fd796f4 + SIOCSIFADDRORI = -0x7fdb9673 + SIOCSIFBRDADDR = -0x7fd796ed + SIOCSIFDSTADDR = -0x7fd796f2 + SIOCSIFFLAGS = -0x7fd796f0 + SIOCSIFGIDLIST = 0x20006969 + SIOCSIFMETRIC = -0x7fd796e8 + SIOCSIFMTU = -0x7fd796a8 + SIOCSIFNETDUMP = -0x7fd796e4 + SIOCSIFNETMASK = -0x7fd796ea + SIOCSIFOPTIONS = -0x7fd796d7 + SIOCSIFSUBCHAN = -0x7fd796e5 + SIOCSISNO = -0x7fd79694 + SIOCSLOADF = -0x3ffb967d + SIOCSLOWAT = 0x80047302 + SIOCSNETOPT = -0x7ffe96a6 + SIOCSPGRP = 0x80047308 + SIOCSX25XLATE = -0x7fd7969d + SOCK_CONN_DGRAM = 0x6 + SOCK_DGRAM = 0x2 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x400 + SO_ACCEPTCONN = 0x2 + SO_AUDIT = 0x8000 + SO_BROADCAST = 0x20 + SO_CKSUMRECV = 0x800 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_KERNACCEPT = 0x2000 + SO_LINGER = 0x80 + SO_NOMULTIPATH = 0x4000 + SO_NOREUSEADDR = 0x1000 + SO_OOBINLINE = 0x100 + SO_PEERID = 0x1009 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_TIMESTAMPNS = 0x100a + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SO_USE_IFBUFS = 0x400 + S_BANDURG = 0x400 + S_EMODFMT = 0x3c000000 + S_ENFMT = 0x400 + S_ERROR = 0x100 + S_HANGUP = 0x200 + S_HIPRI = 0x2 + S_ICRYPTO = 0x80000 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFJOURNAL = 0x10000 + S_IFLNK = 0xa000 + S_IFMPX = 0x2200 + S_IFMT = 0xf000 + S_IFPDIR = 0x4000000 + S_IFPSDIR = 0x8000000 + S_IFPSSDIR = 0xc000000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFSYSEA = 0x30000000 + S_INPUT = 0x1 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_ITCB = 0x1000000 + S_ITP = 0x800000 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXACL = 0x2000000 + S_IXATTR = 0x40000 + S_IXGRP = 0x8 + S_IXINTERFACE = 0x100000 + S_IXMOD = 0x40000000 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + S_MSG = 0x8 + S_OUTPUT = 0x4 + S_RDBAND = 0x20 + S_RDNORM = 0x10 + S_RESERVED1 = 0x20000 + S_RESERVED2 = 0x200000 + S_RESERVED3 = 0x400000 + S_RESERVED4 = 0x80000000 + S_RESFMT1 = 0x10000000 + S_RESFMT10 = 0x34000000 + S_RESFMT11 = 0x38000000 + S_RESFMT12 = 0x3c000000 + S_RESFMT2 = 0x14000000 + S_RESFMT3 = 0x18000000 + S_RESFMT4 = 0x1c000000 + S_RESFMT5 = 0x20000000 + S_RESFMT6 = 0x24000000 + S_RESFMT7 = 0x28000000 + S_RESFMT8 = 0x2c000000 + S_WRBAND = 0x80 + S_WRNORM = 0x40 + TAB0 = 0x0 + TAB1 = 0x400 + TAB2 = 0x800 + TAB3 = 0xc00 + TABDLY = 0xc00 + TCIFLUSH = 0x0 + TCIOFF = 0x2 + TCIOFLUSH = 0x2 + TCION = 0x3 + TCOFLUSH = 0x1 + TCOOFF = 0x0 + TCOON = 0x1 + TCP_24DAYS_WORTH_OF_SLOWTICKS = 0x3f4800 + TCP_ACLADD = 0x23 + TCP_ACLBIND = 0x26 + TCP_ACLCLEAR = 0x22 + TCP_ACLDEL = 0x24 + TCP_ACLDENY = 0x8 + TCP_ACLFLUSH = 0x21 + TCP_ACLGID = 0x1 + TCP_ACLLS = 0x25 + TCP_ACLSUBNET = 0x4 + TCP_ACLUID = 0x2 + TCP_CWND_DF = 0x16 + TCP_CWND_IF = 0x15 + TCP_DELAY_ACK_FIN = 0x2 + TCP_DELAY_ACK_SYN = 0x1 + TCP_FASTNAME = 0x101080a + TCP_KEEPCNT = 0x13 + TCP_KEEPIDLE = 0x11 + TCP_KEEPINTVL = 0x12 + TCP_LSPRIV = 0x29 + TCP_LUID = 0x20 + TCP_MAXBURST = 0x8 + TCP_MAXDF = 0x64 + TCP_MAXIF = 0x64 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAXWINDOWSCALE = 0xe + TCP_MAX_SACK = 0x4 + TCP_MSS = 0x5b4 + TCP_NODELAY = 0x1 + TCP_NODELAYACK = 0x14 + TCP_NOREDUCE_CWND_EXIT_FRXMT = 0x19 + TCP_NOREDUCE_CWND_IN_FRXMT = 0x18 + TCP_NOTENTER_SSTART = 0x17 + TCP_OPT = 0x19 + TCP_RFC1323 = 0x4 + TCP_SETPRIV = 0x27 + TCP_STDURG = 0x10 + TCP_TIMESTAMP_OPTLEN = 0xc + TCP_UNSETPRIV = 0x28 + TCSAFLUSH = 0x2 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCEXCL = 0x2000740d + TIOCFLUSH = 0x80047410 + TIOCGETC = 0x40067412 + TIOCGETD = 0x40047400 + TIOCGETP = 0x40067408 + TIOCGLTC = 0x40067474 + TIOCGPGRP = 0x40047477 + TIOCGSID = 0x40047448 + TIOCGSIZE = 0x40087468 + TIOCGWINSZ = 0x40087468 + TIOCHPCL = 0x20007402 + TIOCLBIC = 0x8004747e + TIOCLBIS = 0x8004747f + TIOCLGET = 0x4004747c + TIOCLSET = 0x8004747d + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGET = 0x4004746a + TIOCMIWAIT = 0x80047464 + TIOCMODG = 0x40047403 + TIOCMODS = 0x80047404 + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCREMOTE = 0x80047469 + TIOCSBRK = 0x2000747b + TIOCSDTR = 0x20007479 + TIOCSETC = 0x80067411 + TIOCSETD = 0x80047401 + TIOCSETN = 0x8006740a + TIOCSETP = 0x80067409 + TIOCSLTC = 0x80067475 + TIOCSPGRP = 0x80047476 + TIOCSSIZE = 0x80087467 + TIOCSTART = 0x2000746e + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCUCNTL = 0x80047466 + TOSTOP = 0x10000 + UTIME_NOW = -0x2 + UTIME_OMIT = -0x3 + VDISCRD = 0xc + VDSUSP = 0xa + VEOF = 0x4 + VEOL = 0x5 + VEOL2 = 0x6 + VERASE = 0x2 + VINTR = 0x0 + VKILL = 0x3 + VLNEXT = 0xe + VMIN = 0x4 + VQUIT = 0x1 + VREPRINT = 0xb + VSTART = 0x7 + VSTOP = 0x8 + VSTRT = 0x7 + VSUSP = 0x9 + VT0 = 0x0 + VT1 = 0x8000 + VTDELAY = 0x2000 + VTDLY = 0x8000 + VTIME = 0x5 + VWERSE = 0xd + WPARSTART = 0x1 + WPARSTOP = 0x2 + WPARTTYNAME = "Global" + XCASE = 0x4 + XTABS = 0xc00 + _FDATAFLUSH = 0x2000000000 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x43) + EADDRNOTAVAIL = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x42) + EAGAIN = syscall.Errno(0xb) + EALREADY = syscall.Errno(0x38) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x78) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x75) + ECHILD = syscall.Errno(0xa) + ECHRNG = syscall.Errno(0x25) + ECLONEME = syscall.Errno(0x52) + ECONNABORTED = syscall.Errno(0x48) + ECONNREFUSED = syscall.Errno(0x4f) + ECONNRESET = syscall.Errno(0x49) + ECORRUPT = syscall.Errno(0x59) + EDEADLK = syscall.Errno(0x2d) + EDESTADDREQ = syscall.Errno(0x3a) + EDESTADDRREQ = syscall.Errno(0x3a) + EDIST = syscall.Errno(0x35) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x58) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFORMAT = syscall.Errno(0x30) + EHOSTDOWN = syscall.Errno(0x50) + EHOSTUNREACH = syscall.Errno(0x51) + EIDRM = syscall.Errno(0x24) + EILSEQ = syscall.Errno(0x74) + EINPROGRESS = syscall.Errno(0x37) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x4b) + EISDIR = syscall.Errno(0x15) + EL2HLT = syscall.Errno(0x2c) + EL2NSYNC = syscall.Errno(0x26) + EL3HLT = syscall.Errno(0x27) + EL3RST = syscall.Errno(0x28) + ELNRNG = syscall.Errno(0x29) + ELOOP = syscall.Errno(0x55) + EMEDIA = syscall.Errno(0x6e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x3b) + EMULTIHOP = syscall.Errno(0x7d) + ENAMETOOLONG = syscall.Errno(0x56) + ENETDOWN = syscall.Errno(0x45) + ENETRESET = syscall.Errno(0x47) + ENETUNREACH = syscall.Errno(0x46) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x70) + ENOBUFS = syscall.Errno(0x4a) + ENOCONNECT = syscall.Errno(0x32) + ENOCSI = syscall.Errno(0x2b) + ENODATA = syscall.Errno(0x7a) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x31) + ENOLINK = syscall.Errno(0x7e) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x23) + ENOPROTOOPT = syscall.Errno(0x3d) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x76) + ENOSTR = syscall.Errno(0x7b) + ENOSYS = syscall.Errno(0x6d) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x4c) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x11) + ENOTREADY = syscall.Errno(0x2e) + ENOTRECOVERABLE = syscall.Errno(0x5e) + ENOTRUST = syscall.Errno(0x72) + ENOTSOCK = syscall.Errno(0x39) + ENOTSUP = syscall.Errno(0x7c) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x40) + EOVERFLOW = syscall.Errno(0x7f) + EOWNERDEAD = syscall.Errno(0x5f) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x41) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x53) + EPROTO = syscall.Errno(0x79) + EPROTONOSUPPORT = syscall.Errno(0x3e) + EPROTOTYPE = syscall.Errno(0x3c) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x5d) + ERESTART = syscall.Errno(0x52) + EROFS = syscall.Errno(0x1e) + ESAD = syscall.Errno(0x71) + ESHUTDOWN = syscall.Errno(0x4d) + ESOCKTNOSUPPORT = syscall.Errno(0x3f) + ESOFT = syscall.Errno(0x6f) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x34) + ESYSERROR = syscall.Errno(0x5a) + ETIME = syscall.Errno(0x77) + ETIMEDOUT = syscall.Errno(0x4e) + ETOOMANYREFS = syscall.Errno(0x73) + ETXTBSY = syscall.Errno(0x1a) + EUNATCH = syscall.Errno(0x2a) + EUSERS = syscall.Errno(0x54) + EWOULDBLOCK = syscall.Errno(0xb) + EWRPROTECT = syscall.Errno(0x2f) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGAIO = syscall.Signal(0x17) + SIGALRM = syscall.Signal(0xe) + SIGALRM1 = syscall.Signal(0x26) + SIGBUS = syscall.Signal(0xa) + SIGCAPI = syscall.Signal(0x31) + SIGCHLD = syscall.Signal(0x14) + SIGCLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGCPUFAIL = syscall.Signal(0x3b) + SIGDANGER = syscall.Signal(0x21) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGGRANT = syscall.Signal(0x3c) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOINT = syscall.Signal(0x10) + SIGIOT = syscall.Signal(0x6) + SIGKAP = syscall.Signal(0x3c) + SIGKILL = syscall.Signal(0x9) + SIGLOST = syscall.Signal(0x6) + SIGMAX = syscall.Signal(0x3f) + SIGMAX32 = syscall.Signal(0x3f) + SIGMIGRATE = syscall.Signal(0x23) + SIGMSG = syscall.Signal(0x1b) + SIGPIPE = syscall.Signal(0xd) + SIGPOLL = syscall.Signal(0x17) + SIGPRE = syscall.Signal(0x24) + SIGPROF = syscall.Signal(0x20) + SIGPTY = syscall.Signal(0x17) + SIGPWR = syscall.Signal(0x1d) + SIGQUIT = syscall.Signal(0x3) + SIGRECONFIG = syscall.Signal(0x3a) + SIGRETRACT = syscall.Signal(0x3d) + SIGSAK = syscall.Signal(0x3f) + SIGSEGV = syscall.Signal(0xb) + SIGSOUND = syscall.Signal(0x3e) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGSYSERROR = syscall.Signal(0x30) + SIGTALRM = syscall.Signal(0x26) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVIRT = syscall.Signal(0x25) + SIGVTALRM = syscall.Signal(0x22) + SIGWAITING = syscall.Signal(0x27) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "not owner"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "I/O error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "arg list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file number"}, + {10, "ECHILD", "no child processes"}, + {11, "EWOULDBLOCK", "resource temporarily unavailable"}, + {12, "ENOMEM", "not enough space"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "ENOTEMPTY", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "file table overflow"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "not a typewriter"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "ENOMSG", "no message of desired type"}, + {36, "EIDRM", "identifier removed"}, + {37, "ECHRNG", "channel number out of range"}, + {38, "EL2NSYNC", "level 2 not synchronized"}, + {39, "EL3HLT", "level 3 halted"}, + {40, "EL3RST", "level 3 reset"}, + {41, "ELNRNG", "link number out of range"}, + {42, "EUNATCH", "protocol driver not attached"}, + {43, "ENOCSI", "no CSI structure available"}, + {44, "EL2HLT", "level 2 halted"}, + {45, "EDEADLK", "deadlock condition if locked"}, + {46, "ENOTREADY", "device not ready"}, + {47, "EWRPROTECT", "write-protected media"}, + {48, "EFORMAT", "unformatted or incompatible media"}, + {49, "ENOLCK", "no locks available"}, + {50, "ENOCONNECT", "cannot Establish Connection"}, + {52, "ESTALE", "missing file or filesystem"}, + {53, "EDIST", "requests blocked by Administrator"}, + {55, "EINPROGRESS", "operation now in progress"}, + {56, "EALREADY", "operation already in progress"}, + {57, "ENOTSOCK", "socket operation on non-socket"}, + {58, "EDESTADDREQ", "destination address required"}, + {59, "EMSGSIZE", "message too long"}, + {60, "EPROTOTYPE", "protocol wrong type for socket"}, + {61, "ENOPROTOOPT", "protocol not available"}, + {62, "EPROTONOSUPPORT", "protocol not supported"}, + {63, "ESOCKTNOSUPPORT", "socket type not supported"}, + {64, "EOPNOTSUPP", "operation not supported on socket"}, + {65, "EPFNOSUPPORT", "protocol family not supported"}, + {66, "EAFNOSUPPORT", "addr family not supported by protocol"}, + {67, "EADDRINUSE", "address already in use"}, + {68, "EADDRNOTAVAIL", "can't assign requested address"}, + {69, "ENETDOWN", "network is down"}, + {70, "ENETUNREACH", "network is unreachable"}, + {71, "ENETRESET", "network dropped connection on reset"}, + {72, "ECONNABORTED", "software caused connection abort"}, + {73, "ECONNRESET", "connection reset by peer"}, + {74, "ENOBUFS", "no buffer space available"}, + {75, "EISCONN", "socket is already connected"}, + {76, "ENOTCONN", "socket is not connected"}, + {77, "ESHUTDOWN", "can't send after socket shutdown"}, + {78, "ETIMEDOUT", "connection timed out"}, + {79, "ECONNREFUSED", "connection refused"}, + {80, "EHOSTDOWN", "host is down"}, + {81, "EHOSTUNREACH", "no route to host"}, + {82, "ERESTART", "restart the system call"}, + {83, "EPROCLIM", "too many processes"}, + {84, "EUSERS", "too many users"}, + {85, "ELOOP", "too many levels of symbolic links"}, + {86, "ENAMETOOLONG", "file name too long"}, + {88, "EDQUOT", "disk quota exceeded"}, + {89, "ECORRUPT", "invalid file system control data detected"}, + {90, "ESYSERROR", "for future use "}, + {93, "EREMOTE", "item is not local to host"}, + {94, "ENOTRECOVERABLE", "state not recoverable "}, + {95, "EOWNERDEAD", "previous owner died "}, + {109, "ENOSYS", "function not implemented"}, + {110, "EMEDIA", "media surface error"}, + {111, "ESOFT", "I/O completed, but needs relocation"}, + {112, "ENOATTR", "no attribute found"}, + {113, "ESAD", "security Authentication Denied"}, + {114, "ENOTRUST", "not a Trusted Program"}, + {115, "ETOOMANYREFS", "too many references: can't splice"}, + {116, "EILSEQ", "invalid wide character"}, + {117, "ECANCELED", "asynchronous I/O cancelled"}, + {118, "ENOSR", "out of STREAMS resources"}, + {119, "ETIME", "system call timed out"}, + {120, "EBADMSG", "next message has wrong type"}, + {121, "EPROTO", "error in protocol"}, + {122, "ENODATA", "no message on stream head read q"}, + {123, "ENOSTR", "fd not associated with a stream"}, + {124, "ENOTSUP", "unsupported attribute value"}, + {125, "EMULTIHOP", "multihop is not allowed"}, + {126, "ENOLINK", "the server link has been severed"}, + {127, "EOVERFLOW", "value too large to be stored in data type"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "IOT/Abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "stopped (signal)"}, + {18, "SIGTSTP", "stopped"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible/complete"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {27, "SIGMSG", "input device data"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGPWR", "power-failure"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGPROF", "profiling timer expired"}, + {33, "SIGDANGER", "paging space low"}, + {34, "SIGVTALRM", "virtual timer expired"}, + {35, "SIGMIGRATE", "signal 35"}, + {36, "SIGPRE", "signal 36"}, + {37, "SIGVIRT", "signal 37"}, + {38, "SIGTALRM", "signal 38"}, + {39, "SIGWAITING", "signal 39"}, + {48, "SIGSYSERROR", "signal 48"}, + {49, "SIGCAPI", "signal 49"}, + {58, "SIGRECONFIG", "signal 58"}, + {59, "SIGCPUFAIL", "CPU Failure Predicted"}, + {60, "SIGKAP", "monitor mode granted"}, + {61, "SIGRETRACT", "monitor mode retracted"}, + {62, "SIGSOUND", "sound completed"}, + {63, "SIGSAK", "secure attention"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_aix_ppc64.go b/vendor/golang.org/x/sys/unix/zerrors_aix_ppc64.go new file mode 100644 index 00000000..fdfd25cc --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_aix_ppc64.go @@ -0,0 +1,1361 @@ +// mkerrors.sh -maix64 +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build ppc64,aix + +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs -- -maix64 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_BYPASS = 0x19 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x18 + AF_INTF = 0x14 + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x1e + AF_NDD = 0x17 + AF_NETWARE = 0x16 + AF_NS = 0x6 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_RIF = 0x15 + AF_ROUTE = 0x11 + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + ALTWERASE = 0x400000 + ARPHRD_802_3 = 0x6 + ARPHRD_802_5 = 0x6 + ARPHRD_ETHER = 0x1 + ARPHRD_FDDI = 0x1 + B0 = 0x0 + B110 = 0x3 + B1200 = 0x9 + B134 = 0x4 + B150 = 0x5 + B1800 = 0xa + B19200 = 0xe + B200 = 0x6 + B2400 = 0xb + B300 = 0x7 + B38400 = 0xf + B4800 = 0xc + B50 = 0x1 + B600 = 0x8 + B75 = 0x2 + B9600 = 0xd + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x1000 + BSDLY = 0x1000 + CAP_AACCT = 0x6 + CAP_ARM_APPLICATION = 0x5 + CAP_BYPASS_RAC_VMM = 0x3 + CAP_CLEAR = 0x0 + CAP_CREDENTIALS = 0x7 + CAP_EFFECTIVE = 0x1 + CAP_EWLM_AGENT = 0x4 + CAP_INHERITABLE = 0x2 + CAP_MAXIMUM = 0x7 + CAP_NUMA_ATTACH = 0x2 + CAP_PERMITTED = 0x3 + CAP_PROPAGATE = 0x1 + CAP_PROPOGATE = 0x1 + CAP_SET = 0x1 + CBAUD = 0xf + CFLUSH = 0xf + CIBAUD = 0xf0000 + CLOCAL = 0x800 + CLOCK_MONOTONIC = 0xa + CLOCK_PROCESS_CPUTIME_ID = 0xb + CLOCK_REALTIME = 0x9 + CLOCK_THREAD_CPUTIME_ID = 0xc + CR0 = 0x0 + CR1 = 0x100 + CR2 = 0x200 + CR3 = 0x300 + CRDLY = 0x300 + CREAD = 0x80 + CS5 = 0x0 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIOCGIFCONF = -0x3fef96dc + CSIZE = 0x30 + CSMAP_DIR = "/usr/lib/nls/csmap/" + CSTART = '\021' + CSTOP = '\023' + CSTOPB = 0x40 + CSUSP = 0x1a + ECHO = 0x8 + ECHOCTL = 0x20000 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x80000 + ECHONL = 0x40 + ECHOPRT = 0x40000 + ECH_ICMPID = 0x2 + ETHERNET_CSMACD = 0x6 + EVENP = 0x80 + EXCONTINUE = 0x0 + EXDLOK = 0x3 + EXIO = 0x2 + EXPGIO = 0x0 + EXRESUME = 0x2 + EXRETURN = 0x1 + EXSIG = 0x4 + EXTA = 0xe + EXTB = 0xf + EXTRAP = 0x1 + EYEC_RTENTRYA = 0x257274656e747241 + EYEC_RTENTRYF = 0x257274656e747246 + E_ACC = 0x0 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0xfffe + FF0 = 0x0 + FF1 = 0x2000 + FFDLY = 0x2000 + FLUSHBAND = 0x40 + FLUSHLOW = 0x8 + FLUSHO = 0x100000 + FLUSHR = 0x1 + FLUSHRW = 0x3 + FLUSHW = 0x2 + F_CLOSEM = 0xa + F_DUP2FD = 0xe + F_DUPFD = 0x0 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0xb + F_GETLK64 = 0xb + F_GETOWN = 0x8 + F_LOCK = 0x1 + F_OK = 0x0 + F_RDLCK = 0x1 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0xc + F_SETLK64 = 0xc + F_SETLKW = 0xd + F_SETLKW64 = 0xd + F_SETOWN = 0x9 + F_TEST = 0x3 + F_TLOCK = 0x2 + F_TSTLK = 0xf + F_ULOCK = 0x0 + F_UNLCK = 0x3 + F_WRLCK = 0x2 + HUPCL = 0x400 + IBSHIFT = 0x10 + ICANON = 0x2 + ICMP6_FILTER = 0x26 + ICMP6_SEC_SEND_DEL = 0x46 + ICMP6_SEC_SEND_GET = 0x47 + ICMP6_SEC_SEND_SET = 0x44 + ICMP6_SEC_SEND_SET_CGA_ADDR = 0x45 + ICRNL = 0x100 + IEXTEN = 0x200000 + IFA_FIRSTALIAS = 0x2000 + IFA_ROUTE = 0x1 + IFF_64BIT = 0x4000000 + IFF_ALLCAST = 0x20000 + IFF_ALLMULTI = 0x200 + IFF_BPF = 0x8000000 + IFF_BRIDGE = 0x40000 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x80c52 + IFF_CHECKSUM_OFFLOAD = 0x10000000 + IFF_D1 = 0x8000 + IFF_D2 = 0x4000 + IFF_D3 = 0x2000 + IFF_D4 = 0x1000 + IFF_DEBUG = 0x4 + IFF_DEVHEALTH = 0x4000 + IFF_DO_HW_LOOPBACK = 0x10000 + IFF_GROUP_ROUTING = 0x2000000 + IFF_IFBUFMGT = 0x800000 + IFF_LINK0 = 0x100000 + IFF_LINK1 = 0x200000 + IFF_LINK2 = 0x400000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x80000 + IFF_NOARP = 0x80 + IFF_NOECHO = 0x800 + IFF_NOTRAILERS = 0x20 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PROMISC = 0x100 + IFF_PSEG = 0x40000000 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_SNAP = 0x8000 + IFF_TCP_DISABLE_CKSUM = 0x20000000 + IFF_TCP_NOCKSUM = 0x1000000 + IFF_UP = 0x1 + IFF_VIPA = 0x80000000 + IFNAMSIZ = 0x10 + IFO_FLUSH = 0x1 + IFT_1822 = 0x2 + IFT_AAL5 = 0x31 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ATM = 0x25 + IFT_CEPT = 0x13 + IFT_CLUSTER = 0x3e + IFT_DS3 = 0x1e + IFT_EON = 0x19 + IFT_ETHER = 0x6 + IFT_FCS = 0x3a + IFT_FDDI = 0xf + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_GIFTUNNEL = 0x3c + IFT_HDH1822 = 0x3 + IFT_HF = 0x3d + IFT_HIPPI = 0x2f + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IB = 0xc7 + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88026 = 0xa + IFT_LAPB = 0x10 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_NSIP = 0x1b + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PPP = 0x17 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PTPSERIAL = 0x16 + IFT_RS232 = 0x21 + IFT_SDLC = 0x11 + IFT_SIP = 0x1f + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SN = 0x38 + IFT_SONET = 0x27 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_SP = 0x39 + IFT_STARLAN = 0xb + IFT_T1 = 0x12 + IFT_TUNNEL = 0x3b + IFT_ULTRA = 0x1d + IFT_V35 = 0x2d + IFT_VIPA = 0x37 + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x10000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IN_USE = 0x1 + IPPROTO_AH = 0x33 + IPPROTO_BIP = 0x53 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GIF = 0x8c + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPIP = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_LOCAL = 0x3f + IPPROTO_MAX = 0x100 + IPPROTO_MH = 0x87 + IPPROTO_NONE = 0x3b + IPPROTO_PUP = 0xc + IPPROTO_QOS = 0x2d + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPV6_ADDRFORM = 0x16 + IPV6_ADDR_PREFERENCES = 0x4a + IPV6_ADD_MEMBERSHIP = 0xc + IPV6_AIXRAWSOCKET = 0x39 + IPV6_CHECKSUM = 0x27 + IPV6_DONTFRAG = 0x2d + IPV6_DROP_MEMBERSHIP = 0xd + IPV6_DSTOPTS = 0x36 + IPV6_FLOWINFO_FLOWLABEL = 0xffffff + IPV6_FLOWINFO_PRIFLOW = 0xfffffff + IPV6_FLOWINFO_PRIORITY = 0xf000000 + IPV6_FLOWINFO_SRFLAG = 0x10000000 + IPV6_FLOWINFO_VERSION = 0xf0000000 + IPV6_HOPLIMIT = 0x28 + IPV6_HOPOPTS = 0x34 + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MIPDSTOPTS = 0x36 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_NOPROBE = 0x1c + IPV6_PATHMTU = 0x2e + IPV6_PKTINFO = 0x21 + IPV6_PKTOPTIONS = 0x24 + IPV6_PRIORITY_10 = 0xa000000 + IPV6_PRIORITY_11 = 0xb000000 + IPV6_PRIORITY_12 = 0xc000000 + IPV6_PRIORITY_13 = 0xd000000 + IPV6_PRIORITY_14 = 0xe000000 + IPV6_PRIORITY_15 = 0xf000000 + IPV6_PRIORITY_8 = 0x8000000 + IPV6_PRIORITY_9 = 0x9000000 + IPV6_PRIORITY_BULK = 0x4000000 + IPV6_PRIORITY_CONTROL = 0x7000000 + IPV6_PRIORITY_FILLER = 0x1000000 + IPV6_PRIORITY_INTERACTIVE = 0x6000000 + IPV6_PRIORITY_RESERVED1 = 0x3000000 + IPV6_PRIORITY_RESERVED2 = 0x5000000 + IPV6_PRIORITY_UNATTENDED = 0x2000000 + IPV6_PRIORITY_UNCHARACTERIZED = 0x0 + IPV6_RECVDSTOPTS = 0x38 + IPV6_RECVHOPLIMIT = 0x29 + IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVHOPS = 0x22 + IPV6_RECVIF = 0x1e + IPV6_RECVPATHMTU = 0x2f + IPV6_RECVPKTINFO = 0x23 + IPV6_RECVRTHDR = 0x33 + IPV6_RECVSRCRT = 0x1d + IPV6_RECVTCLASS = 0x2a + IPV6_RTHDR = 0x32 + IPV6_RTHDRDSTOPTS = 0x37 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_RTHDR_TYPE_2 = 0x2 + IPV6_SENDIF = 0x1f + IPV6_SRFLAG_LOOSE = 0x0 + IPV6_SRFLAG_STRICT = 0x10000000 + IPV6_TCLASS = 0x2b + IPV6_TOKEN_LENGTH = 0x40 + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2c + IPV6_V6ONLY = 0x25 + IPV6_VERSION = 0x60000000 + IP_ADDRFORM = 0x16 + IP_ADD_MEMBERSHIP = 0xc + IP_ADD_SOURCE_MEMBERSHIP = 0x3c + IP_BLOCK_SOURCE = 0x3a + IP_BROADCAST_IF = 0x10 + IP_CACHE_LINE_SIZE = 0x80 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DHCPMODE = 0x11 + IP_DONTFRAG = 0x19 + IP_DROP_MEMBERSHIP = 0xd + IP_DROP_SOURCE_MEMBERSHIP = 0x3d + IP_FINDPMTU = 0x1a + IP_HDRINCL = 0x2 + IP_INC_MEMBERSHIPS = 0x14 + IP_INIT_MEMBERSHIP = 0x14 + IP_MAXPACKET = 0xffff + IP_MF = 0x2000 + IP_MSS = 0x240 + IP_MULTICAST_HOPS = 0xa + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_OPT = 0x1b + IP_OPTIONS = 0x1 + IP_PMTUAGE = 0x1b + IP_RECVDSTADDR = 0x7 + IP_RECVIF = 0x14 + IP_RECVIFINFO = 0xf + IP_RECVINTERFACE = 0x20 + IP_RECVMACHDR = 0xe + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVTTL = 0x22 + IP_RETOPTS = 0x8 + IP_SOURCE_FILTER = 0x48 + IP_TOS = 0x3 + IP_TTL = 0x4 + IP_UNBLOCK_SOURCE = 0x3b + IP_UNICAST_HOPS = 0x4 + ISIG = 0x1 + ISTRIP = 0x20 + IUCLC = 0x800 + IXANY = 0x1000 + IXOFF = 0x400 + IXON = 0x200 + I_FLUSH = 0x20005305 + LNOFLSH = 0x8000 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DONTNEED = 0x4 + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_SPACEAVAIL = 0x5 + MADV_WILLNEED = 0x3 + MAP_ANON = 0x10 + MAP_ANONYMOUS = 0x10 + MAP_FILE = 0x0 + MAP_FIXED = 0x100 + MAP_PRIVATE = 0x2 + MAP_SHARED = 0x1 + MAP_TYPE = 0xf0 + MAP_VARIABLE = 0x0 + MCL_CURRENT = 0x100 + MCL_FUTURE = 0x200 + MSG_ANY = 0x4 + MSG_ARGEXT = 0x400 + MSG_BAND = 0x2 + MSG_COMPAT = 0x8000 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_EOR = 0x8 + MSG_HIPRI = 0x1 + MSG_MAXIOVLEN = 0x10 + MSG_MPEG2 = 0x80 + MSG_NONBLOCK = 0x4000 + MSG_NOSIGNAL = 0x100 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MSG_WAITFORONE = 0x200 + MS_ASYNC = 0x10 + MS_EINTR = 0x80 + MS_INVALIDATE = 0x40 + MS_PER_SEC = 0x3e8 + MS_SYNC = 0x20 + NL0 = 0x0 + NL1 = 0x4000 + NL2 = 0x8000 + NL3 = 0xc000 + NLDLY = 0x4000 + NOFLSH = 0x80 + NOFLUSH = 0x80000000 + OCRNL = 0x8 + OFDEL = 0x80 + OFILL = 0x40 + OLCUC = 0x2 + ONLCR = 0x4 + ONLRET = 0x20 + ONOCR = 0x10 + ONOEOT = 0x80000 + OPOST = 0x1 + OXTABS = 0x40000 + O_ACCMODE = 0x23 + O_APPEND = 0x8 + O_CIO = 0x80 + O_CIOR = 0x800000000 + O_CLOEXEC = 0x800000 + O_CREAT = 0x100 + O_DEFER = 0x2000 + O_DELAY = 0x4000 + O_DIRECT = 0x8000000 + O_DIRECTORY = 0x80000 + O_DSYNC = 0x400000 + O_EFSOFF = 0x400000000 + O_EFSON = 0x200000000 + O_EXCL = 0x400 + O_EXEC = 0x20 + O_LARGEFILE = 0x4000000 + O_NDELAY = 0x8000 + O_NOCACHE = 0x100000 + O_NOCTTY = 0x800 + O_NOFOLLOW = 0x1000000 + O_NONBLOCK = 0x4 + O_NONE = 0x3 + O_NSHARE = 0x10000 + O_RAW = 0x100000000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSHARE = 0x1000 + O_RSYNC = 0x200000 + O_SEARCH = 0x20 + O_SNAPSHOT = 0x40 + O_SYNC = 0x10 + O_TRUNC = 0x200 + O_TTY_INIT = 0x0 + O_WRONLY = 0x1 + PARENB = 0x100 + PAREXT = 0x100000 + PARMRK = 0x8 + PARODD = 0x200 + PENDIN = 0x20000000 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PR_64BIT = 0x20 + PR_ADDR = 0x2 + PR_ARGEXT = 0x400 + PR_ATOMIC = 0x1 + PR_CONNREQUIRED = 0x4 + PR_FASTHZ = 0x5 + PR_INP = 0x40 + PR_INTRLEVEL = 0x8000 + PR_MLS = 0x100 + PR_MLS_1_LABEL = 0x200 + PR_NOEOR = 0x4000 + PR_RIGHTS = 0x10 + PR_SLOWHZ = 0x2 + PR_WANTRCVD = 0x8 + RLIMIT_AS = 0x6 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_NOFILE = 0x7 + RLIMIT_NPROC = 0x9 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x8 + RTAX_NETMASK = 0x2 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DOWNSTREAM = 0x100 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTC_IA64 = 0x3 + RTC_POWER = 0x1 + RTC_POWER_PC = 0x2 + RTF_ACTIVE_DGD = 0x1000000 + RTF_BCE = 0x80000 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_BUL = 0x2000 + RTF_CLONE = 0x10000 + RTF_CLONED = 0x20000 + RTF_CLONING = 0x100 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_FREE_IN_PROG = 0x4000000 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MASK = 0x80 + RTF_MODIFIED = 0x20 + RTF_MULTICAST = 0x800000 + RTF_PERMANENT6 = 0x8000000 + RTF_PINNED = 0x100000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x40000 + RTF_REJECT = 0x8 + RTF_SMALLMTU = 0x40000 + RTF_STATIC = 0x800 + RTF_STOPSRCH = 0x2000000 + RTF_UNREACHABLE = 0x10000000 + RTF_UP = 0x1 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_EXPIRE = 0xf + RTM_GET = 0x4 + RTM_GETNEXT = 0x11 + RTM_IFINFO = 0xe + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_OLDADD = 0x9 + RTM_OLDDEL = 0xa + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTLOST = 0x10 + RTM_RTTUNIT = 0xf4240 + RTM_SAMEADDR = 0x12 + RTM_SET = 0x13 + RTM_VERSION = 0x2 + RTM_VERSION_GR = 0x4 + RTM_VERSION_GR_COMPAT = 0x3 + RTM_VERSION_POLICY = 0x5 + RTM_VERSION_POLICY_EXT = 0x6 + RTM_VERSION_POLICY_PRFN = 0x7 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_RIGHTS = 0x1 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIGMAX64 = 0xff + SIGQUEUE_MAX = 0x20 + SIOCADDIFVIPA = 0x20006942 + SIOCADDMTU = -0x7ffb9690 + SIOCADDMULTI = -0x7fdf96cf + SIOCADDNETID = -0x7fd796a9 + SIOCADDRT = -0x7fc78df6 + SIOCAIFADDR = -0x7fbf96e6 + SIOCATMARK = 0x40047307 + SIOCDARP = -0x7fb396e0 + SIOCDELIFVIPA = 0x20006943 + SIOCDELMTU = -0x7ffb968f + SIOCDELMULTI = -0x7fdf96ce + SIOCDELPMTU = -0x7fd78ff6 + SIOCDELRT = -0x7fc78df5 + SIOCDIFADDR = -0x7fd796e7 + SIOCDNETOPT = -0x3ffe9680 + SIOCDX25XLATE = -0x7fd7969b + SIOCFIFADDR = -0x7fdf966d + SIOCGARP = -0x3fb396da + SIOCGETMTUS = 0x2000696f + SIOCGETSGCNT = -0x3feb8acc + SIOCGETVIFCNT = -0x3feb8acd + SIOCGHIWAT = 0x40047301 + SIOCGIFADDR = -0x3fd796df + SIOCGIFADDRS = 0x2000698c + SIOCGIFBAUDRATE = -0x3fd79693 + SIOCGIFBRDADDR = -0x3fd796dd + SIOCGIFCONF = -0x3fef96bb + SIOCGIFCONFGLOB = -0x3fef9670 + SIOCGIFDSTADDR = -0x3fd796de + SIOCGIFFLAGS = -0x3fd796ef + SIOCGIFGIDLIST = 0x20006968 + SIOCGIFHWADDR = -0x3fab966b + SIOCGIFMETRIC = -0x3fd796e9 + SIOCGIFMTU = -0x3fd796aa + SIOCGIFNETMASK = -0x3fd796db + SIOCGIFOPTIONS = -0x3fd796d6 + SIOCGISNO = -0x3fd79695 + SIOCGLOADF = -0x3ffb967e + SIOCGLOWAT = 0x40047303 + SIOCGNETOPT = -0x3ffe96a5 + SIOCGNETOPT1 = -0x3fdf967f + SIOCGNMTUS = 0x2000696e + SIOCGPGRP = 0x40047309 + SIOCGSIZIFCONF = 0x4004696a + SIOCGSRCFILTER = -0x3fe796cb + SIOCGTUNEPHASE = -0x3ffb9676 + SIOCGX25XLATE = -0x3fd7969c + SIOCIFATTACH = -0x7fdf9699 + SIOCIFDETACH = -0x7fdf969a + SIOCIFGETPKEY = -0x7fdf969b + SIOCIF_ATM_DARP = -0x7fdf9683 + SIOCIF_ATM_DUMPARP = -0x7fdf9685 + SIOCIF_ATM_GARP = -0x7fdf9682 + SIOCIF_ATM_IDLE = -0x7fdf9686 + SIOCIF_ATM_SARP = -0x7fdf9681 + SIOCIF_ATM_SNMPARP = -0x7fdf9687 + SIOCIF_ATM_SVC = -0x7fdf9684 + SIOCIF_ATM_UBR = -0x7fdf9688 + SIOCIF_DEVHEALTH = -0x7ffb966c + SIOCIF_IB_ARP_INCOMP = -0x7fdf9677 + SIOCIF_IB_ARP_TIMER = -0x7fdf9678 + SIOCIF_IB_CLEAR_PINFO = -0x3fdf966f + SIOCIF_IB_DEL_ARP = -0x7fdf967f + SIOCIF_IB_DEL_PINFO = -0x3fdf9670 + SIOCIF_IB_DUMP_ARP = -0x7fdf9680 + SIOCIF_IB_GET_ARP = -0x7fdf967e + SIOCIF_IB_GET_INFO = -0x3f879675 + SIOCIF_IB_GET_STATS = -0x3f879672 + SIOCIF_IB_NOTIFY_ADDR_REM = -0x3f87966a + SIOCIF_IB_RESET_STATS = -0x3f879671 + SIOCIF_IB_RESIZE_CQ = -0x7fdf9679 + SIOCIF_IB_SET_ARP = -0x7fdf967d + SIOCIF_IB_SET_PKEY = -0x7fdf967c + SIOCIF_IB_SET_PORT = -0x7fdf967b + SIOCIF_IB_SET_QKEY = -0x7fdf9676 + SIOCIF_IB_SET_QSIZE = -0x7fdf967a + SIOCLISTIFVIPA = 0x20006944 + SIOCSARP = -0x7fb396e2 + SIOCSHIWAT = 0xffffffff80047300 + SIOCSIFADDR = -0x7fd796f4 + SIOCSIFADDRORI = -0x7fdb9673 + SIOCSIFBRDADDR = -0x7fd796ed + SIOCSIFDSTADDR = -0x7fd796f2 + SIOCSIFFLAGS = -0x7fd796f0 + SIOCSIFGIDLIST = 0x20006969 + SIOCSIFMETRIC = -0x7fd796e8 + SIOCSIFMTU = -0x7fd796a8 + SIOCSIFNETDUMP = -0x7fd796e4 + SIOCSIFNETMASK = -0x7fd796ea + SIOCSIFOPTIONS = -0x7fd796d7 + SIOCSIFSUBCHAN = -0x7fd796e5 + SIOCSISNO = -0x7fd79694 + SIOCSLOADF = -0x3ffb967d + SIOCSLOWAT = 0xffffffff80047302 + SIOCSNETOPT = -0x7ffe96a6 + SIOCSPGRP = 0xffffffff80047308 + SIOCSX25XLATE = -0x7fd7969d + SOCK_CONN_DGRAM = 0x6 + SOCK_DGRAM = 0x2 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x400 + SO_ACCEPTCONN = 0x2 + SO_AUDIT = 0x8000 + SO_BROADCAST = 0x20 + SO_CKSUMRECV = 0x800 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_KERNACCEPT = 0x2000 + SO_LINGER = 0x80 + SO_NOMULTIPATH = 0x4000 + SO_NOREUSEADDR = 0x1000 + SO_OOBINLINE = 0x100 + SO_PEERID = 0x1009 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_TIMESTAMPNS = 0x100a + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SO_USE_IFBUFS = 0x400 + S_BANDURG = 0x400 + S_EMODFMT = 0x3c000000 + S_ENFMT = 0x400 + S_ERROR = 0x100 + S_HANGUP = 0x200 + S_HIPRI = 0x2 + S_ICRYPTO = 0x80000 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFJOURNAL = 0x10000 + S_IFLNK = 0xa000 + S_IFMPX = 0x2200 + S_IFMT = 0xf000 + S_IFPDIR = 0x4000000 + S_IFPSDIR = 0x8000000 + S_IFPSSDIR = 0xc000000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFSYSEA = 0x30000000 + S_INPUT = 0x1 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_ITCB = 0x1000000 + S_ITP = 0x800000 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXACL = 0x2000000 + S_IXATTR = 0x40000 + S_IXGRP = 0x8 + S_IXINTERFACE = 0x100000 + S_IXMOD = 0x40000000 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + S_MSG = 0x8 + S_OUTPUT = 0x4 + S_RDBAND = 0x20 + S_RDNORM = 0x10 + S_RESERVED1 = 0x20000 + S_RESERVED2 = 0x200000 + S_RESERVED3 = 0x400000 + S_RESERVED4 = 0x80000000 + S_RESFMT1 = 0x10000000 + S_RESFMT10 = 0x34000000 + S_RESFMT11 = 0x38000000 + S_RESFMT12 = 0x3c000000 + S_RESFMT2 = 0x14000000 + S_RESFMT3 = 0x18000000 + S_RESFMT4 = 0x1c000000 + S_RESFMT5 = 0x20000000 + S_RESFMT6 = 0x24000000 + S_RESFMT7 = 0x28000000 + S_RESFMT8 = 0x2c000000 + S_WRBAND = 0x80 + S_WRNORM = 0x40 + TAB0 = 0x0 + TAB1 = 0x400 + TAB2 = 0x800 + TAB3 = 0xc00 + TABDLY = 0xc00 + TCIFLUSH = 0x0 + TCIOFF = 0x2 + TCIOFLUSH = 0x2 + TCION = 0x3 + TCOFLUSH = 0x1 + TCOOFF = 0x0 + TCOON = 0x1 + TCP_24DAYS_WORTH_OF_SLOWTICKS = 0x3f4800 + TCP_ACLADD = 0x23 + TCP_ACLBIND = 0x26 + TCP_ACLCLEAR = 0x22 + TCP_ACLDEL = 0x24 + TCP_ACLDENY = 0x8 + TCP_ACLFLUSH = 0x21 + TCP_ACLGID = 0x1 + TCP_ACLLS = 0x25 + TCP_ACLSUBNET = 0x4 + TCP_ACLUID = 0x2 + TCP_CWND_DF = 0x16 + TCP_CWND_IF = 0x15 + TCP_DELAY_ACK_FIN = 0x2 + TCP_DELAY_ACK_SYN = 0x1 + TCP_FASTNAME = 0x101080a + TCP_KEEPCNT = 0x13 + TCP_KEEPIDLE = 0x11 + TCP_KEEPINTVL = 0x12 + TCP_LSPRIV = 0x29 + TCP_LUID = 0x20 + TCP_MAXBURST = 0x8 + TCP_MAXDF = 0x64 + TCP_MAXIF = 0x64 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAXWINDOWSCALE = 0xe + TCP_MAX_SACK = 0x4 + TCP_MSS = 0x5b4 + TCP_NODELAY = 0x1 + TCP_NODELAYACK = 0x14 + TCP_NOREDUCE_CWND_EXIT_FRXMT = 0x19 + TCP_NOREDUCE_CWND_IN_FRXMT = 0x18 + TCP_NOTENTER_SSTART = 0x17 + TCP_OPT = 0x19 + TCP_RFC1323 = 0x4 + TCP_SETPRIV = 0x27 + TCP_STDURG = 0x10 + TCP_TIMESTAMP_OPTLEN = 0xc + TCP_UNSETPRIV = 0x28 + TCSAFLUSH = 0x2 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0xffffffff80047462 + TIOCEXCL = 0x2000740d + TIOCFLUSH = 0xffffffff80047410 + TIOCGETC = 0x40067412 + TIOCGETD = 0x40047400 + TIOCGETP = 0x40067408 + TIOCGLTC = 0x40067474 + TIOCGPGRP = 0x40047477 + TIOCGSID = 0x40047448 + TIOCGSIZE = 0x40087468 + TIOCGWINSZ = 0x40087468 + TIOCHPCL = 0x20007402 + TIOCLBIC = 0xffffffff8004747e + TIOCLBIS = 0xffffffff8004747f + TIOCLGET = 0x4004747c + TIOCLSET = 0xffffffff8004747d + TIOCMBIC = 0xffffffff8004746b + TIOCMBIS = 0xffffffff8004746c + TIOCMGET = 0x4004746a + TIOCMIWAIT = 0xffffffff80047464 + TIOCMODG = 0x40047403 + TIOCMODS = 0xffffffff80047404 + TIOCMSET = 0xffffffff8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0xffffffff80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCREMOTE = 0xffffffff80047469 + TIOCSBRK = 0x2000747b + TIOCSDTR = 0x20007479 + TIOCSETC = 0xffffffff80067411 + TIOCSETD = 0xffffffff80047401 + TIOCSETN = 0xffffffff8006740a + TIOCSETP = 0xffffffff80067409 + TIOCSLTC = 0xffffffff80067475 + TIOCSPGRP = 0xffffffff80047476 + TIOCSSIZE = 0xffffffff80087467 + TIOCSTART = 0x2000746e + TIOCSTI = 0xffffffff80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0xffffffff80087467 + TIOCUCNTL = 0xffffffff80047466 + TOSTOP = 0x10000 + UTIME_NOW = -0x2 + UTIME_OMIT = -0x3 + VDISCRD = 0xc + VDSUSP = 0xa + VEOF = 0x4 + VEOL = 0x5 + VEOL2 = 0x6 + VERASE = 0x2 + VINTR = 0x0 + VKILL = 0x3 + VLNEXT = 0xe + VMIN = 0x4 + VQUIT = 0x1 + VREPRINT = 0xb + VSTART = 0x7 + VSTOP = 0x8 + VSTRT = 0x7 + VSUSP = 0x9 + VT0 = 0x0 + VT1 = 0x8000 + VTDELAY = 0x2000 + VTDLY = 0x8000 + VTIME = 0x5 + VWERSE = 0xd + WPARSTART = 0x1 + WPARSTOP = 0x2 + WPARTTYNAME = "Global" + XCASE = 0x4 + XTABS = 0xc00 + _FDATAFLUSH = 0x2000000000 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x43) + EADDRNOTAVAIL = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x42) + EAGAIN = syscall.Errno(0xb) + EALREADY = syscall.Errno(0x38) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x78) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x75) + ECHILD = syscall.Errno(0xa) + ECHRNG = syscall.Errno(0x25) + ECLONEME = syscall.Errno(0x52) + ECONNABORTED = syscall.Errno(0x48) + ECONNREFUSED = syscall.Errno(0x4f) + ECONNRESET = syscall.Errno(0x49) + ECORRUPT = syscall.Errno(0x59) + EDEADLK = syscall.Errno(0x2d) + EDESTADDREQ = syscall.Errno(0x3a) + EDESTADDRREQ = syscall.Errno(0x3a) + EDIST = syscall.Errno(0x35) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x58) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFORMAT = syscall.Errno(0x30) + EHOSTDOWN = syscall.Errno(0x50) + EHOSTUNREACH = syscall.Errno(0x51) + EIDRM = syscall.Errno(0x24) + EILSEQ = syscall.Errno(0x74) + EINPROGRESS = syscall.Errno(0x37) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x4b) + EISDIR = syscall.Errno(0x15) + EL2HLT = syscall.Errno(0x2c) + EL2NSYNC = syscall.Errno(0x26) + EL3HLT = syscall.Errno(0x27) + EL3RST = syscall.Errno(0x28) + ELNRNG = syscall.Errno(0x29) + ELOOP = syscall.Errno(0x55) + EMEDIA = syscall.Errno(0x6e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x3b) + EMULTIHOP = syscall.Errno(0x7d) + ENAMETOOLONG = syscall.Errno(0x56) + ENETDOWN = syscall.Errno(0x45) + ENETRESET = syscall.Errno(0x47) + ENETUNREACH = syscall.Errno(0x46) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x70) + ENOBUFS = syscall.Errno(0x4a) + ENOCONNECT = syscall.Errno(0x32) + ENOCSI = syscall.Errno(0x2b) + ENODATA = syscall.Errno(0x7a) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x31) + ENOLINK = syscall.Errno(0x7e) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x23) + ENOPROTOOPT = syscall.Errno(0x3d) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x76) + ENOSTR = syscall.Errno(0x7b) + ENOSYS = syscall.Errno(0x6d) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x4c) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x11) + ENOTREADY = syscall.Errno(0x2e) + ENOTRECOVERABLE = syscall.Errno(0x5e) + ENOTRUST = syscall.Errno(0x72) + ENOTSOCK = syscall.Errno(0x39) + ENOTSUP = syscall.Errno(0x7c) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x40) + EOVERFLOW = syscall.Errno(0x7f) + EOWNERDEAD = syscall.Errno(0x5f) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x41) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x53) + EPROTO = syscall.Errno(0x79) + EPROTONOSUPPORT = syscall.Errno(0x3e) + EPROTOTYPE = syscall.Errno(0x3c) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x5d) + ERESTART = syscall.Errno(0x52) + EROFS = syscall.Errno(0x1e) + ESAD = syscall.Errno(0x71) + ESHUTDOWN = syscall.Errno(0x4d) + ESOCKTNOSUPPORT = syscall.Errno(0x3f) + ESOFT = syscall.Errno(0x6f) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x34) + ESYSERROR = syscall.Errno(0x5a) + ETIME = syscall.Errno(0x77) + ETIMEDOUT = syscall.Errno(0x4e) + ETOOMANYREFS = syscall.Errno(0x73) + ETXTBSY = syscall.Errno(0x1a) + EUNATCH = syscall.Errno(0x2a) + EUSERS = syscall.Errno(0x54) + EWOULDBLOCK = syscall.Errno(0xb) + EWRPROTECT = syscall.Errno(0x2f) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGAIO = syscall.Signal(0x17) + SIGALRM = syscall.Signal(0xe) + SIGALRM1 = syscall.Signal(0x26) + SIGBUS = syscall.Signal(0xa) + SIGCAPI = syscall.Signal(0x31) + SIGCHLD = syscall.Signal(0x14) + SIGCLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGCPUFAIL = syscall.Signal(0x3b) + SIGDANGER = syscall.Signal(0x21) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGGRANT = syscall.Signal(0x3c) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOINT = syscall.Signal(0x10) + SIGIOT = syscall.Signal(0x6) + SIGKAP = syscall.Signal(0x3c) + SIGKILL = syscall.Signal(0x9) + SIGLOST = syscall.Signal(0x6) + SIGMAX = syscall.Signal(0xff) + SIGMAX32 = syscall.Signal(0x3f) + SIGMIGRATE = syscall.Signal(0x23) + SIGMSG = syscall.Signal(0x1b) + SIGPIPE = syscall.Signal(0xd) + SIGPOLL = syscall.Signal(0x17) + SIGPRE = syscall.Signal(0x24) + SIGPROF = syscall.Signal(0x20) + SIGPTY = syscall.Signal(0x17) + SIGPWR = syscall.Signal(0x1d) + SIGQUIT = syscall.Signal(0x3) + SIGRECONFIG = syscall.Signal(0x3a) + SIGRETRACT = syscall.Signal(0x3d) + SIGSAK = syscall.Signal(0x3f) + SIGSEGV = syscall.Signal(0xb) + SIGSOUND = syscall.Signal(0x3e) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGSYSERROR = syscall.Signal(0x30) + SIGTALRM = syscall.Signal(0x26) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVIRT = syscall.Signal(0x25) + SIGVTALRM = syscall.Signal(0x22) + SIGWAITING = syscall.Signal(0x27) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "not owner"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "I/O error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "arg list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file number"}, + {10, "ECHILD", "no child processes"}, + {11, "EWOULDBLOCK", "resource temporarily unavailable"}, + {12, "ENOMEM", "not enough space"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "ENOTEMPTY", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "file table overflow"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "not a typewriter"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "ENOMSG", "no message of desired type"}, + {36, "EIDRM", "identifier removed"}, + {37, "ECHRNG", "channel number out of range"}, + {38, "EL2NSYNC", "level 2 not synchronized"}, + {39, "EL3HLT", "level 3 halted"}, + {40, "EL3RST", "level 3 reset"}, + {41, "ELNRNG", "link number out of range"}, + {42, "EUNATCH", "protocol driver not attached"}, + {43, "ENOCSI", "no CSI structure available"}, + {44, "EL2HLT", "level 2 halted"}, + {45, "EDEADLK", "deadlock condition if locked"}, + {46, "ENOTREADY", "device not ready"}, + {47, "EWRPROTECT", "write-protected media"}, + {48, "EFORMAT", "unformatted or incompatible media"}, + {49, "ENOLCK", "no locks available"}, + {50, "ENOCONNECT", "cannot Establish Connection"}, + {52, "ESTALE", "missing file or filesystem"}, + {53, "EDIST", "requests blocked by Administrator"}, + {55, "EINPROGRESS", "operation now in progress"}, + {56, "EALREADY", "operation already in progress"}, + {57, "ENOTSOCK", "socket operation on non-socket"}, + {58, "EDESTADDREQ", "destination address required"}, + {59, "EMSGSIZE", "message too long"}, + {60, "EPROTOTYPE", "protocol wrong type for socket"}, + {61, "ENOPROTOOPT", "protocol not available"}, + {62, "EPROTONOSUPPORT", "protocol not supported"}, + {63, "ESOCKTNOSUPPORT", "socket type not supported"}, + {64, "EOPNOTSUPP", "operation not supported on socket"}, + {65, "EPFNOSUPPORT", "protocol family not supported"}, + {66, "EAFNOSUPPORT", "addr family not supported by protocol"}, + {67, "EADDRINUSE", "address already in use"}, + {68, "EADDRNOTAVAIL", "can't assign requested address"}, + {69, "ENETDOWN", "network is down"}, + {70, "ENETUNREACH", "network is unreachable"}, + {71, "ENETRESET", "network dropped connection on reset"}, + {72, "ECONNABORTED", "software caused connection abort"}, + {73, "ECONNRESET", "connection reset by peer"}, + {74, "ENOBUFS", "no buffer space available"}, + {75, "EISCONN", "socket is already connected"}, + {76, "ENOTCONN", "socket is not connected"}, + {77, "ESHUTDOWN", "can't send after socket shutdown"}, + {78, "ETIMEDOUT", "connection timed out"}, + {79, "ECONNREFUSED", "connection refused"}, + {80, "EHOSTDOWN", "host is down"}, + {81, "EHOSTUNREACH", "no route to host"}, + {82, "ERESTART", "restart the system call"}, + {83, "EPROCLIM", "too many processes"}, + {84, "EUSERS", "too many users"}, + {85, "ELOOP", "too many levels of symbolic links"}, + {86, "ENAMETOOLONG", "file name too long"}, + {88, "EDQUOT", "disk quota exceeded"}, + {89, "ECORRUPT", "invalid file system control data detected"}, + {90, "ESYSERROR", "for future use "}, + {93, "EREMOTE", "item is not local to host"}, + {94, "ENOTRECOVERABLE", "state not recoverable "}, + {95, "EOWNERDEAD", "previous owner died "}, + {109, "ENOSYS", "function not implemented"}, + {110, "EMEDIA", "media surface error"}, + {111, "ESOFT", "I/O completed, but needs relocation"}, + {112, "ENOATTR", "no attribute found"}, + {113, "ESAD", "security Authentication Denied"}, + {114, "ENOTRUST", "not a Trusted Program"}, + {115, "ETOOMANYREFS", "too many references: can't splice"}, + {116, "EILSEQ", "invalid wide character"}, + {117, "ECANCELED", "asynchronous I/O cancelled"}, + {118, "ENOSR", "out of STREAMS resources"}, + {119, "ETIME", "system call timed out"}, + {120, "EBADMSG", "next message has wrong type"}, + {121, "EPROTO", "error in protocol"}, + {122, "ENODATA", "no message on stream head read q"}, + {123, "ENOSTR", "fd not associated with a stream"}, + {124, "ENOTSUP", "unsupported attribute value"}, + {125, "EMULTIHOP", "multihop is not allowed"}, + {126, "ENOLINK", "the server link has been severed"}, + {127, "EOVERFLOW", "value too large to be stored in data type"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "IOT/Abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "stopped (signal)"}, + {18, "SIGTSTP", "stopped"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible/complete"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {27, "SIGMSG", "input device data"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGPWR", "power-failure"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGPROF", "profiling timer expired"}, + {33, "SIGDANGER", "paging space low"}, + {34, "SIGVTALRM", "virtual timer expired"}, + {35, "SIGMIGRATE", "signal 35"}, + {36, "SIGPRE", "signal 36"}, + {37, "SIGVIRT", "signal 37"}, + {38, "SIGTALRM", "signal 38"}, + {39, "SIGWAITING", "signal 39"}, + {48, "SIGSYSERROR", "signal 48"}, + {49, "SIGCAPI", "signal 49"}, + {58, "SIGRECONFIG", "signal 58"}, + {59, "SIGCPUFAIL", "CPU Failure Predicted"}, + {60, "SIGGRANT", "monitor mode granted"}, + {61, "SIGRETRACT", "monitor mode retracted"}, + {62, "SIGSOUND", "sound completed"}, + {63, "SIGMAX32", "secure attention"}, + {255, "SIGMAX", "signal 255"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go index 46a082b6..1de69989 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go @@ -3,7 +3,7 @@ // +build amd64,dragonfly -// Created by cgo -godefs - DO NOT EDIT +// Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- -m64 _const.go package unix @@ -1168,6 +1168,36 @@ const ( SO_TIMESTAMP = 0x400 SO_TYPE = 0x1008 SO_USELOOPBACK = 0x40 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDB = 0x9000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFWHT = 0xe000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 TCIFLUSH = 0x1 TCIOFF = 0x3 TCIOFLUSH = 0x3 diff --git a/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go b/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go index 2947dc03..d2bbaabc 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go +++ b/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go @@ -1345,6 +1345,35 @@ const ( SO_USELOOPBACK = 0x40 SO_USER_COOKIE = 0x1015 SO_VENDOR = 0x80000000 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFWHT = 0xe000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 TAB0 = 0x0 TAB3 = 0x4 TABDLY = 0x4 diff --git a/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go index c600d012..4f8db783 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go @@ -1346,6 +1346,35 @@ const ( SO_USELOOPBACK = 0x40 SO_USER_COOKIE = 0x1015 SO_VENDOR = 0x80000000 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFWHT = 0xe000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 TAB0 = 0x0 TAB3 = 0x4 TABDLY = 0x4 diff --git a/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go b/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go index e8240d23..53e5de60 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go @@ -1354,6 +1354,35 @@ const ( SO_USELOOPBACK = 0x40 SO_USER_COOKIE = 0x1015 SO_VENDOR = 0x80000000 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFWHT = 0xe000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 TAB0 = 0x0 TAB3 = 0x4 TABDLY = 0x4 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_386.go b/vendor/golang.org/x/sys/unix/zerrors_linux_386.go index 2f0091bb..f33613ee 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_386.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_386.go @@ -499,6 +499,8 @@ const ( FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 FS_ENCRYPTION_MODE_AES_256_XTS = 0x1 FS_ENCRYPTION_MODE_INVALID = 0x0 + FS_ENCRYPTION_MODE_SPECK128_256_CTS = 0x8 + FS_ENCRYPTION_MODE_SPECK128_256_XTS = 0x7 FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615 FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614 FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613 @@ -636,7 +638,7 @@ const ( IFA_F_STABLE_PRIVACY = 0x800 IFA_F_TEMPORARY = 0x1 IFA_F_TENTATIVE = 0x40 - IFA_MAX = 0x8 + IFA_MAX = 0x9 IFF_ALLMULTI = 0x200 IFF_ATTACH_QUEUE = 0x200 IFF_AUTOMEDIA = 0x4000 @@ -763,6 +765,7 @@ const ( IPV6_DONTFRAG = 0x3e IPV6_DROP_MEMBERSHIP = 0x15 IPV6_DSTOPTS = 0x3b + IPV6_FREEBIND = 0x4e IPV6_HDRINCL = 0x24 IPV6_HOPLIMIT = 0x34 IPV6_HOPOPTS = 0x36 @@ -956,6 +959,7 @@ const ( MAP_EXECUTABLE = 0x1000 MAP_FILE = 0x0 MAP_FIXED = 0x10 + MAP_FIXED_NOREPLACE = 0x100000 MAP_GROWSDOWN = 0x100 MAP_HUGETLB = 0x40000 MAP_HUGE_MASK = 0x3f @@ -966,7 +970,9 @@ const ( MAP_POPULATE = 0x8000 MAP_PRIVATE = 0x2 MAP_SHARED = 0x1 + MAP_SHARED_VALIDATE = 0x3 MAP_STACK = 0x20000 + MAP_SYNC = 0x80000 MAP_TYPE = 0xf MCL_CURRENT = 0x1 MCL_FUTURE = 0x2 @@ -1076,6 +1082,8 @@ const ( NETLINK_UNUSED = 0x1 NETLINK_USERSOCK = 0x2 NETLINK_XFRM = 0x6 + NETNSA_MAX = 0x3 + NETNSA_NSID_NOT_ASSIGNED = -0x1 NFNETLINK_V0 = 0x0 NFNLGRP_ACCT_QUOTA = 0x8 NFNLGRP_CONNTRACK_DESTROY = 0x3 @@ -1427,6 +1435,9 @@ const ( RAMFS_MAGIC = 0x858458f6 RDTGROUP_SUPER_MAGIC = 0x7655821 REISERFS_SUPER_MAGIC = 0x52654973 + RENAME_EXCHANGE = 0x2 + RENAME_NOREPLACE = 0x1 + RENAME_WHITEOUT = 0x4 RLIMIT_AS = 0x9 RLIMIT_CORE = 0x4 RLIMIT_CPU = 0x0 @@ -1469,7 +1480,7 @@ const ( RTAX_UNSPEC = 0x0 RTAX_WINDOW = 0x3 RTA_ALIGNTO = 0x4 - RTA_MAX = 0x1a + RTA_MAX = 0x1d RTCF_DIRECTSRC = 0x4000000 RTCF_DOREDIRECT = 0x1000000 RTCF_LOG = 0x2000000 @@ -1605,17 +1616,22 @@ const ( RTNH_F_UNRESOLVED = 0x20 RTN_MAX = 0xb RTPROT_BABEL = 0x2a + RTPROT_BGP = 0xba RTPROT_BIRD = 0xc RTPROT_BOOT = 0x3 RTPROT_DHCP = 0x10 RTPROT_DNROUTED = 0xd + RTPROT_EIGRP = 0xc0 RTPROT_GATED = 0x8 + RTPROT_ISIS = 0xbb RTPROT_KERNEL = 0x2 RTPROT_MROUTED = 0x11 RTPROT_MRT = 0xa RTPROT_NTK = 0xf + RTPROT_OSPF = 0xbc RTPROT_RA = 0x9 RTPROT_REDIRECT = 0x1 + RTPROT_RIP = 0xbd RTPROT_STATIC = 0x4 RTPROT_UNSPEC = 0x0 RTPROT_XORP = 0xe @@ -1875,6 +1891,9 @@ const ( STATX_TYPE = 0x1 STATX_UID = 0x8 STATX__RESERVED = 0x80000000 + SYNC_FILE_RANGE_WAIT_AFTER = 0x4 + SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 + SYNC_FILE_RANGE_WRITE = 0x2 SYSFS_MAGIC = 0x62656572 S_BLKSIZE = 0x200 S_IEXEC = 0x40 @@ -1938,6 +1957,8 @@ const ( TCP_DEFER_ACCEPT = 0x9 TCP_FASTOPEN = 0x17 TCP_FASTOPEN_CONNECT = 0x1e + TCP_FASTOPEN_KEY = 0x21 + TCP_FASTOPEN_NO_COOKIE = 0x22 TCP_INFO = 0xb TCP_KEEPCNT = 0x6 TCP_KEEPIDLE = 0x4 @@ -2105,6 +2126,21 @@ const ( TUNSETVNETBE = 0x400454de TUNSETVNETHDRSZ = 0x400454d8 TUNSETVNETLE = 0x400454dc + UBI_IOCATT = 0x40186f40 + UBI_IOCDET = 0x40046f41 + UBI_IOCEBCH = 0x40044f02 + UBI_IOCEBER = 0x40044f01 + UBI_IOCEBISMAP = 0x80044f05 + UBI_IOCEBMAP = 0x40084f03 + UBI_IOCEBUNMAP = 0x40044f04 + UBI_IOCMKVOL = 0x40986f00 + UBI_IOCRMVOL = 0x40046f01 + UBI_IOCRNVOL = 0x51106f03 + UBI_IOCRSVOL = 0x400c6f02 + UBI_IOCSETVOLPROP = 0x40104f06 + UBI_IOCVOLCRBLK = 0x40804f07 + UBI_IOCVOLRMBLK = 0x4f08 + UBI_IOCVOLUP = 0x40084f00 UDF_SUPER_MAGIC = 0x15013346 UMOUNT_NOFOLLOW = 0x8 USBDEVICE_SUPER_MAGIC = 0x9fa2 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go index a80c7ae5..ccdbebf6 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go @@ -499,6 +499,8 @@ const ( FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 FS_ENCRYPTION_MODE_AES_256_XTS = 0x1 FS_ENCRYPTION_MODE_INVALID = 0x0 + FS_ENCRYPTION_MODE_SPECK128_256_CTS = 0x8 + FS_ENCRYPTION_MODE_SPECK128_256_XTS = 0x7 FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615 FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614 FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613 @@ -636,7 +638,7 @@ const ( IFA_F_STABLE_PRIVACY = 0x800 IFA_F_TEMPORARY = 0x1 IFA_F_TENTATIVE = 0x40 - IFA_MAX = 0x8 + IFA_MAX = 0x9 IFF_ALLMULTI = 0x200 IFF_ATTACH_QUEUE = 0x200 IFF_AUTOMEDIA = 0x4000 @@ -763,6 +765,7 @@ const ( IPV6_DONTFRAG = 0x3e IPV6_DROP_MEMBERSHIP = 0x15 IPV6_DSTOPTS = 0x3b + IPV6_FREEBIND = 0x4e IPV6_HDRINCL = 0x24 IPV6_HOPLIMIT = 0x34 IPV6_HOPOPTS = 0x36 @@ -956,6 +959,7 @@ const ( MAP_EXECUTABLE = 0x1000 MAP_FILE = 0x0 MAP_FIXED = 0x10 + MAP_FIXED_NOREPLACE = 0x100000 MAP_GROWSDOWN = 0x100 MAP_HUGETLB = 0x40000 MAP_HUGE_MASK = 0x3f @@ -966,7 +970,9 @@ const ( MAP_POPULATE = 0x8000 MAP_PRIVATE = 0x2 MAP_SHARED = 0x1 + MAP_SHARED_VALIDATE = 0x3 MAP_STACK = 0x20000 + MAP_SYNC = 0x80000 MAP_TYPE = 0xf MCL_CURRENT = 0x1 MCL_FUTURE = 0x2 @@ -1076,6 +1082,8 @@ const ( NETLINK_UNUSED = 0x1 NETLINK_USERSOCK = 0x2 NETLINK_XFRM = 0x6 + NETNSA_MAX = 0x3 + NETNSA_NSID_NOT_ASSIGNED = -0x1 NFNETLINK_V0 = 0x0 NFNLGRP_ACCT_QUOTA = 0x8 NFNLGRP_CONNTRACK_DESTROY = 0x3 @@ -1428,6 +1436,9 @@ const ( RAMFS_MAGIC = 0x858458f6 RDTGROUP_SUPER_MAGIC = 0x7655821 REISERFS_SUPER_MAGIC = 0x52654973 + RENAME_EXCHANGE = 0x2 + RENAME_NOREPLACE = 0x1 + RENAME_WHITEOUT = 0x4 RLIMIT_AS = 0x9 RLIMIT_CORE = 0x4 RLIMIT_CPU = 0x0 @@ -1470,7 +1481,7 @@ const ( RTAX_UNSPEC = 0x0 RTAX_WINDOW = 0x3 RTA_ALIGNTO = 0x4 - RTA_MAX = 0x1a + RTA_MAX = 0x1d RTCF_DIRECTSRC = 0x4000000 RTCF_DOREDIRECT = 0x1000000 RTCF_LOG = 0x2000000 @@ -1606,17 +1617,22 @@ const ( RTNH_F_UNRESOLVED = 0x20 RTN_MAX = 0xb RTPROT_BABEL = 0x2a + RTPROT_BGP = 0xba RTPROT_BIRD = 0xc RTPROT_BOOT = 0x3 RTPROT_DHCP = 0x10 RTPROT_DNROUTED = 0xd + RTPROT_EIGRP = 0xc0 RTPROT_GATED = 0x8 + RTPROT_ISIS = 0xbb RTPROT_KERNEL = 0x2 RTPROT_MROUTED = 0x11 RTPROT_MRT = 0xa RTPROT_NTK = 0xf + RTPROT_OSPF = 0xbc RTPROT_RA = 0x9 RTPROT_REDIRECT = 0x1 + RTPROT_RIP = 0xbd RTPROT_STATIC = 0x4 RTPROT_UNSPEC = 0x0 RTPROT_XORP = 0xe @@ -1876,6 +1892,9 @@ const ( STATX_TYPE = 0x1 STATX_UID = 0x8 STATX__RESERVED = 0x80000000 + SYNC_FILE_RANGE_WAIT_AFTER = 0x4 + SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 + SYNC_FILE_RANGE_WRITE = 0x2 SYSFS_MAGIC = 0x62656572 S_BLKSIZE = 0x200 S_IEXEC = 0x40 @@ -1939,6 +1958,8 @@ const ( TCP_DEFER_ACCEPT = 0x9 TCP_FASTOPEN = 0x17 TCP_FASTOPEN_CONNECT = 0x1e + TCP_FASTOPEN_KEY = 0x21 + TCP_FASTOPEN_NO_COOKIE = 0x22 TCP_INFO = 0xb TCP_KEEPCNT = 0x6 TCP_KEEPIDLE = 0x4 @@ -2106,6 +2127,21 @@ const ( TUNSETVNETBE = 0x400454de TUNSETVNETHDRSZ = 0x400454d8 TUNSETVNETLE = 0x400454dc + UBI_IOCATT = 0x40186f40 + UBI_IOCDET = 0x40046f41 + UBI_IOCEBCH = 0x40044f02 + UBI_IOCEBER = 0x40044f01 + UBI_IOCEBISMAP = 0x80044f05 + UBI_IOCEBMAP = 0x40084f03 + UBI_IOCEBUNMAP = 0x40044f04 + UBI_IOCMKVOL = 0x40986f00 + UBI_IOCRMVOL = 0x40046f01 + UBI_IOCRNVOL = 0x51106f03 + UBI_IOCRSVOL = 0x400c6f02 + UBI_IOCSETVOLPROP = 0x40104f06 + UBI_IOCVOLCRBLK = 0x40804f07 + UBI_IOCVOLRMBLK = 0x4f08 + UBI_IOCVOLUP = 0x40084f00 UDF_SUPER_MAGIC = 0x15013346 UMOUNT_NOFOLLOW = 0x8 USBDEVICE_SUPER_MAGIC = 0x9fa2 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go b/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go index 49a9b013..770d4c73 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go @@ -498,6 +498,8 @@ const ( FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 FS_ENCRYPTION_MODE_AES_256_XTS = 0x1 FS_ENCRYPTION_MODE_INVALID = 0x0 + FS_ENCRYPTION_MODE_SPECK128_256_CTS = 0x8 + FS_ENCRYPTION_MODE_SPECK128_256_XTS = 0x7 FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615 FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614 FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613 @@ -635,7 +637,7 @@ const ( IFA_F_STABLE_PRIVACY = 0x800 IFA_F_TEMPORARY = 0x1 IFA_F_TENTATIVE = 0x40 - IFA_MAX = 0x8 + IFA_MAX = 0x9 IFF_ALLMULTI = 0x200 IFF_ATTACH_QUEUE = 0x200 IFF_AUTOMEDIA = 0x4000 @@ -762,6 +764,7 @@ const ( IPV6_DONTFRAG = 0x3e IPV6_DROP_MEMBERSHIP = 0x15 IPV6_DSTOPTS = 0x3b + IPV6_FREEBIND = 0x4e IPV6_HDRINCL = 0x24 IPV6_HOPLIMIT = 0x34 IPV6_HOPOPTS = 0x36 @@ -954,6 +957,7 @@ const ( MAP_EXECUTABLE = 0x1000 MAP_FILE = 0x0 MAP_FIXED = 0x10 + MAP_FIXED_NOREPLACE = 0x100000 MAP_GROWSDOWN = 0x100 MAP_HUGETLB = 0x40000 MAP_HUGE_MASK = 0x3f @@ -964,7 +968,9 @@ const ( MAP_POPULATE = 0x8000 MAP_PRIVATE = 0x2 MAP_SHARED = 0x1 + MAP_SHARED_VALIDATE = 0x3 MAP_STACK = 0x20000 + MAP_SYNC = 0x80000 MAP_TYPE = 0xf MCL_CURRENT = 0x1 MCL_FUTURE = 0x2 @@ -1074,6 +1080,8 @@ const ( NETLINK_UNUSED = 0x1 NETLINK_USERSOCK = 0x2 NETLINK_XFRM = 0x6 + NETNSA_MAX = 0x3 + NETNSA_NSID_NOT_ASSIGNED = -0x1 NFNETLINK_V0 = 0x0 NFNLGRP_ACCT_QUOTA = 0x8 NFNLGRP_CONNTRACK_DESTROY = 0x3 @@ -1434,6 +1442,9 @@ const ( RAMFS_MAGIC = 0x858458f6 RDTGROUP_SUPER_MAGIC = 0x7655821 REISERFS_SUPER_MAGIC = 0x52654973 + RENAME_EXCHANGE = 0x2 + RENAME_NOREPLACE = 0x1 + RENAME_WHITEOUT = 0x4 RLIMIT_AS = 0x9 RLIMIT_CORE = 0x4 RLIMIT_CPU = 0x0 @@ -1476,7 +1487,7 @@ const ( RTAX_UNSPEC = 0x0 RTAX_WINDOW = 0x3 RTA_ALIGNTO = 0x4 - RTA_MAX = 0x1a + RTA_MAX = 0x1d RTCF_DIRECTSRC = 0x4000000 RTCF_DOREDIRECT = 0x1000000 RTCF_LOG = 0x2000000 @@ -1612,17 +1623,22 @@ const ( RTNH_F_UNRESOLVED = 0x20 RTN_MAX = 0xb RTPROT_BABEL = 0x2a + RTPROT_BGP = 0xba RTPROT_BIRD = 0xc RTPROT_BOOT = 0x3 RTPROT_DHCP = 0x10 RTPROT_DNROUTED = 0xd + RTPROT_EIGRP = 0xc0 RTPROT_GATED = 0x8 + RTPROT_ISIS = 0xbb RTPROT_KERNEL = 0x2 RTPROT_MROUTED = 0x11 RTPROT_MRT = 0xa RTPROT_NTK = 0xf + RTPROT_OSPF = 0xbc RTPROT_RA = 0x9 RTPROT_REDIRECT = 0x1 + RTPROT_RIP = 0xbd RTPROT_STATIC = 0x4 RTPROT_UNSPEC = 0x0 RTPROT_XORP = 0xe @@ -1882,6 +1898,9 @@ const ( STATX_TYPE = 0x1 STATX_UID = 0x8 STATX__RESERVED = 0x80000000 + SYNC_FILE_RANGE_WAIT_AFTER = 0x4 + SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 + SYNC_FILE_RANGE_WRITE = 0x2 SYSFS_MAGIC = 0x62656572 S_BLKSIZE = 0x200 S_IEXEC = 0x40 @@ -1945,6 +1964,8 @@ const ( TCP_DEFER_ACCEPT = 0x9 TCP_FASTOPEN = 0x17 TCP_FASTOPEN_CONNECT = 0x1e + TCP_FASTOPEN_KEY = 0x21 + TCP_FASTOPEN_NO_COOKIE = 0x22 TCP_INFO = 0xb TCP_KEEPCNT = 0x6 TCP_KEEPIDLE = 0x4 @@ -2112,6 +2133,21 @@ const ( TUNSETVNETBE = 0x400454de TUNSETVNETHDRSZ = 0x400454d8 TUNSETVNETLE = 0x400454dc + UBI_IOCATT = 0x40186f40 + UBI_IOCDET = 0x40046f41 + UBI_IOCEBCH = 0x40044f02 + UBI_IOCEBER = 0x40044f01 + UBI_IOCEBISMAP = 0x80044f05 + UBI_IOCEBMAP = 0x40084f03 + UBI_IOCEBUNMAP = 0x40044f04 + UBI_IOCMKVOL = 0x40986f00 + UBI_IOCRMVOL = 0x40046f01 + UBI_IOCRNVOL = 0x51106f03 + UBI_IOCRSVOL = 0x400c6f02 + UBI_IOCSETVOLPROP = 0x40104f06 + UBI_IOCVOLCRBLK = 0x40804f07 + UBI_IOCVOLRMBLK = 0x4f08 + UBI_IOCVOLUP = 0x40084f00 UDF_SUPER_MAGIC = 0x15013346 UMOUNT_NOFOLLOW = 0x8 USBDEVICE_SUPER_MAGIC = 0x9fa2 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go index 8d70233b..c3e311db 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go @@ -501,6 +501,8 @@ const ( FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 FS_ENCRYPTION_MODE_AES_256_XTS = 0x1 FS_ENCRYPTION_MODE_INVALID = 0x0 + FS_ENCRYPTION_MODE_SPECK128_256_CTS = 0x8 + FS_ENCRYPTION_MODE_SPECK128_256_XTS = 0x7 FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615 FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614 FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613 @@ -638,7 +640,7 @@ const ( IFA_F_STABLE_PRIVACY = 0x800 IFA_F_TEMPORARY = 0x1 IFA_F_TENTATIVE = 0x40 - IFA_MAX = 0x8 + IFA_MAX = 0x9 IFF_ALLMULTI = 0x200 IFF_ATTACH_QUEUE = 0x200 IFF_AUTOMEDIA = 0x4000 @@ -765,6 +767,7 @@ const ( IPV6_DONTFRAG = 0x3e IPV6_DROP_MEMBERSHIP = 0x15 IPV6_DSTOPTS = 0x3b + IPV6_FREEBIND = 0x4e IPV6_HDRINCL = 0x24 IPV6_HOPLIMIT = 0x34 IPV6_HOPOPTS = 0x36 @@ -957,6 +960,7 @@ const ( MAP_EXECUTABLE = 0x1000 MAP_FILE = 0x0 MAP_FIXED = 0x10 + MAP_FIXED_NOREPLACE = 0x100000 MAP_GROWSDOWN = 0x100 MAP_HUGETLB = 0x40000 MAP_HUGE_MASK = 0x3f @@ -967,7 +971,9 @@ const ( MAP_POPULATE = 0x8000 MAP_PRIVATE = 0x2 MAP_SHARED = 0x1 + MAP_SHARED_VALIDATE = 0x3 MAP_STACK = 0x20000 + MAP_SYNC = 0x80000 MAP_TYPE = 0xf MCL_CURRENT = 0x1 MCL_FUTURE = 0x2 @@ -1077,6 +1083,8 @@ const ( NETLINK_UNUSED = 0x1 NETLINK_USERSOCK = 0x2 NETLINK_XFRM = 0x6 + NETNSA_MAX = 0x3 + NETNSA_NSID_NOT_ASSIGNED = -0x1 NFNETLINK_V0 = 0x0 NFNLGRP_ACCT_QUOTA = 0x8 NFNLGRP_CONNTRACK_DESTROY = 0x3 @@ -1418,6 +1426,9 @@ const ( RAMFS_MAGIC = 0x858458f6 RDTGROUP_SUPER_MAGIC = 0x7655821 REISERFS_SUPER_MAGIC = 0x52654973 + RENAME_EXCHANGE = 0x2 + RENAME_NOREPLACE = 0x1 + RENAME_WHITEOUT = 0x4 RLIMIT_AS = 0x9 RLIMIT_CORE = 0x4 RLIMIT_CPU = 0x0 @@ -1460,7 +1471,7 @@ const ( RTAX_UNSPEC = 0x0 RTAX_WINDOW = 0x3 RTA_ALIGNTO = 0x4 - RTA_MAX = 0x1a + RTA_MAX = 0x1d RTCF_DIRECTSRC = 0x4000000 RTCF_DOREDIRECT = 0x1000000 RTCF_LOG = 0x2000000 @@ -1596,17 +1607,22 @@ const ( RTNH_F_UNRESOLVED = 0x20 RTN_MAX = 0xb RTPROT_BABEL = 0x2a + RTPROT_BGP = 0xba RTPROT_BIRD = 0xc RTPROT_BOOT = 0x3 RTPROT_DHCP = 0x10 RTPROT_DNROUTED = 0xd + RTPROT_EIGRP = 0xc0 RTPROT_GATED = 0x8 + RTPROT_ISIS = 0xbb RTPROT_KERNEL = 0x2 RTPROT_MROUTED = 0x11 RTPROT_MRT = 0xa RTPROT_NTK = 0xf + RTPROT_OSPF = 0xbc RTPROT_RA = 0x9 RTPROT_REDIRECT = 0x1 + RTPROT_RIP = 0xbd RTPROT_STATIC = 0x4 RTPROT_UNSPEC = 0x0 RTPROT_XORP = 0xe @@ -1867,6 +1883,9 @@ const ( STATX_UID = 0x8 STATX__RESERVED = 0x80000000 SVE_MAGIC = 0x53564501 + SYNC_FILE_RANGE_WAIT_AFTER = 0x4 + SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 + SYNC_FILE_RANGE_WRITE = 0x2 SYSFS_MAGIC = 0x62656572 S_BLKSIZE = 0x200 S_IEXEC = 0x40 @@ -1930,6 +1949,8 @@ const ( TCP_DEFER_ACCEPT = 0x9 TCP_FASTOPEN = 0x17 TCP_FASTOPEN_CONNECT = 0x1e + TCP_FASTOPEN_KEY = 0x21 + TCP_FASTOPEN_NO_COOKIE = 0x22 TCP_INFO = 0xb TCP_KEEPCNT = 0x6 TCP_KEEPIDLE = 0x4 @@ -2097,6 +2118,21 @@ const ( TUNSETVNETBE = 0x400454de TUNSETVNETHDRSZ = 0x400454d8 TUNSETVNETLE = 0x400454dc + UBI_IOCATT = 0x40186f40 + UBI_IOCDET = 0x40046f41 + UBI_IOCEBCH = 0x40044f02 + UBI_IOCEBER = 0x40044f01 + UBI_IOCEBISMAP = 0x80044f05 + UBI_IOCEBMAP = 0x40084f03 + UBI_IOCEBUNMAP = 0x40044f04 + UBI_IOCMKVOL = 0x40986f00 + UBI_IOCRMVOL = 0x40046f01 + UBI_IOCRNVOL = 0x51106f03 + UBI_IOCRSVOL = 0x400c6f02 + UBI_IOCSETVOLPROP = 0x40104f06 + UBI_IOCVOLCRBLK = 0x40804f07 + UBI_IOCVOLRMBLK = 0x4f08 + UBI_IOCVOLUP = 0x40084f00 UDF_SUPER_MAGIC = 0x15013346 UMOUNT_NOFOLLOW = 0x8 USBDEVICE_SUPER_MAGIC = 0x9fa2 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go index 410ab56b..9fee271d 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go @@ -498,6 +498,8 @@ const ( FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 FS_ENCRYPTION_MODE_AES_256_XTS = 0x1 FS_ENCRYPTION_MODE_INVALID = 0x0 + FS_ENCRYPTION_MODE_SPECK128_256_CTS = 0x8 + FS_ENCRYPTION_MODE_SPECK128_256_XTS = 0x7 FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615 FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614 FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613 @@ -635,7 +637,7 @@ const ( IFA_F_STABLE_PRIVACY = 0x800 IFA_F_TEMPORARY = 0x1 IFA_F_TENTATIVE = 0x40 - IFA_MAX = 0x8 + IFA_MAX = 0x9 IFF_ALLMULTI = 0x200 IFF_ATTACH_QUEUE = 0x200 IFF_AUTOMEDIA = 0x4000 @@ -762,6 +764,7 @@ const ( IPV6_DONTFRAG = 0x3e IPV6_DROP_MEMBERSHIP = 0x15 IPV6_DSTOPTS = 0x3b + IPV6_FREEBIND = 0x4e IPV6_HDRINCL = 0x24 IPV6_HOPLIMIT = 0x34 IPV6_HOPOPTS = 0x36 @@ -954,6 +957,7 @@ const ( MAP_EXECUTABLE = 0x4000 MAP_FILE = 0x0 MAP_FIXED = 0x10 + MAP_FIXED_NOREPLACE = 0x100000 MAP_GROWSDOWN = 0x1000 MAP_HUGETLB = 0x80000 MAP_HUGE_MASK = 0x3f @@ -965,6 +969,7 @@ const ( MAP_PRIVATE = 0x2 MAP_RENAME = 0x800 MAP_SHARED = 0x1 + MAP_SHARED_VALIDATE = 0x3 MAP_STACK = 0x40000 MAP_TYPE = 0xf MCL_CURRENT = 0x1 @@ -1075,6 +1080,8 @@ const ( NETLINK_UNUSED = 0x1 NETLINK_USERSOCK = 0x2 NETLINK_XFRM = 0x6 + NETNSA_MAX = 0x3 + NETNSA_NSID_NOT_ASSIGNED = -0x1 NFNETLINK_V0 = 0x0 NFNLGRP_ACCT_QUOTA = 0x8 NFNLGRP_CONNTRACK_DESTROY = 0x3 @@ -1428,6 +1435,9 @@ const ( RAMFS_MAGIC = 0x858458f6 RDTGROUP_SUPER_MAGIC = 0x7655821 REISERFS_SUPER_MAGIC = 0x52654973 + RENAME_EXCHANGE = 0x2 + RENAME_NOREPLACE = 0x1 + RENAME_WHITEOUT = 0x4 RLIMIT_AS = 0x6 RLIMIT_CORE = 0x4 RLIMIT_CPU = 0x0 @@ -1470,7 +1480,7 @@ const ( RTAX_UNSPEC = 0x0 RTAX_WINDOW = 0x3 RTA_ALIGNTO = 0x4 - RTA_MAX = 0x1a + RTA_MAX = 0x1d RTCF_DIRECTSRC = 0x4000000 RTCF_DOREDIRECT = 0x1000000 RTCF_LOG = 0x2000000 @@ -1606,17 +1616,22 @@ const ( RTNH_F_UNRESOLVED = 0x20 RTN_MAX = 0xb RTPROT_BABEL = 0x2a + RTPROT_BGP = 0xba RTPROT_BIRD = 0xc RTPROT_BOOT = 0x3 RTPROT_DHCP = 0x10 RTPROT_DNROUTED = 0xd + RTPROT_EIGRP = 0xc0 RTPROT_GATED = 0x8 + RTPROT_ISIS = 0xbb RTPROT_KERNEL = 0x2 RTPROT_MROUTED = 0x11 RTPROT_MRT = 0xa RTPROT_NTK = 0xf + RTPROT_OSPF = 0xbc RTPROT_RA = 0x9 RTPROT_REDIRECT = 0x1 + RTPROT_RIP = 0xbd RTPROT_STATIC = 0x4 RTPROT_UNSPEC = 0x0 RTPROT_XORP = 0xe @@ -1877,6 +1892,9 @@ const ( STATX_TYPE = 0x1 STATX_UID = 0x8 STATX__RESERVED = 0x80000000 + SYNC_FILE_RANGE_WAIT_AFTER = 0x4 + SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 + SYNC_FILE_RANGE_WRITE = 0x2 SYSFS_MAGIC = 0x62656572 S_BLKSIZE = 0x200 S_IEXEC = 0x40 @@ -1939,6 +1957,8 @@ const ( TCP_DEFER_ACCEPT = 0x9 TCP_FASTOPEN = 0x17 TCP_FASTOPEN_CONNECT = 0x1e + TCP_FASTOPEN_KEY = 0x21 + TCP_FASTOPEN_NO_COOKIE = 0x22 TCP_INFO = 0xb TCP_KEEPCNT = 0x6 TCP_KEEPIDLE = 0x4 @@ -2108,6 +2128,21 @@ const ( TUNSETVNETBE = 0x800454de TUNSETVNETHDRSZ = 0x800454d8 TUNSETVNETLE = 0x800454dc + UBI_IOCATT = 0x80186f40 + UBI_IOCDET = 0x80046f41 + UBI_IOCEBCH = 0x80044f02 + UBI_IOCEBER = 0x80044f01 + UBI_IOCEBISMAP = 0x40044f05 + UBI_IOCEBMAP = 0x80084f03 + UBI_IOCEBUNMAP = 0x80044f04 + UBI_IOCMKVOL = 0x80986f00 + UBI_IOCRMVOL = 0x80046f01 + UBI_IOCRNVOL = 0x91106f03 + UBI_IOCRSVOL = 0x800c6f02 + UBI_IOCSETVOLPROP = 0x80104f06 + UBI_IOCVOLCRBLK = 0x80804f07 + UBI_IOCVOLRMBLK = 0x20004f08 + UBI_IOCVOLUP = 0x80084f00 UDF_SUPER_MAGIC = 0x15013346 UMOUNT_NOFOLLOW = 0x8 USBDEVICE_SUPER_MAGIC = 0x9fa2 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go index dac4d90f..d022427b 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go @@ -498,6 +498,8 @@ const ( FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 FS_ENCRYPTION_MODE_AES_256_XTS = 0x1 FS_ENCRYPTION_MODE_INVALID = 0x0 + FS_ENCRYPTION_MODE_SPECK128_256_CTS = 0x8 + FS_ENCRYPTION_MODE_SPECK128_256_XTS = 0x7 FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615 FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614 FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613 @@ -635,7 +637,7 @@ const ( IFA_F_STABLE_PRIVACY = 0x800 IFA_F_TEMPORARY = 0x1 IFA_F_TENTATIVE = 0x40 - IFA_MAX = 0x8 + IFA_MAX = 0x9 IFF_ALLMULTI = 0x200 IFF_ATTACH_QUEUE = 0x200 IFF_AUTOMEDIA = 0x4000 @@ -762,6 +764,7 @@ const ( IPV6_DONTFRAG = 0x3e IPV6_DROP_MEMBERSHIP = 0x15 IPV6_DSTOPTS = 0x3b + IPV6_FREEBIND = 0x4e IPV6_HDRINCL = 0x24 IPV6_HOPLIMIT = 0x34 IPV6_HOPOPTS = 0x36 @@ -954,6 +957,7 @@ const ( MAP_EXECUTABLE = 0x4000 MAP_FILE = 0x0 MAP_FIXED = 0x10 + MAP_FIXED_NOREPLACE = 0x100000 MAP_GROWSDOWN = 0x1000 MAP_HUGETLB = 0x80000 MAP_HUGE_MASK = 0x3f @@ -965,6 +969,7 @@ const ( MAP_PRIVATE = 0x2 MAP_RENAME = 0x800 MAP_SHARED = 0x1 + MAP_SHARED_VALIDATE = 0x3 MAP_STACK = 0x40000 MAP_TYPE = 0xf MCL_CURRENT = 0x1 @@ -1075,6 +1080,8 @@ const ( NETLINK_UNUSED = 0x1 NETLINK_USERSOCK = 0x2 NETLINK_XFRM = 0x6 + NETNSA_MAX = 0x3 + NETNSA_NSID_NOT_ASSIGNED = -0x1 NFNETLINK_V0 = 0x0 NFNLGRP_ACCT_QUOTA = 0x8 NFNLGRP_CONNTRACK_DESTROY = 0x3 @@ -1428,6 +1435,9 @@ const ( RAMFS_MAGIC = 0x858458f6 RDTGROUP_SUPER_MAGIC = 0x7655821 REISERFS_SUPER_MAGIC = 0x52654973 + RENAME_EXCHANGE = 0x2 + RENAME_NOREPLACE = 0x1 + RENAME_WHITEOUT = 0x4 RLIMIT_AS = 0x6 RLIMIT_CORE = 0x4 RLIMIT_CPU = 0x0 @@ -1470,7 +1480,7 @@ const ( RTAX_UNSPEC = 0x0 RTAX_WINDOW = 0x3 RTA_ALIGNTO = 0x4 - RTA_MAX = 0x1a + RTA_MAX = 0x1d RTCF_DIRECTSRC = 0x4000000 RTCF_DOREDIRECT = 0x1000000 RTCF_LOG = 0x2000000 @@ -1606,17 +1616,22 @@ const ( RTNH_F_UNRESOLVED = 0x20 RTN_MAX = 0xb RTPROT_BABEL = 0x2a + RTPROT_BGP = 0xba RTPROT_BIRD = 0xc RTPROT_BOOT = 0x3 RTPROT_DHCP = 0x10 RTPROT_DNROUTED = 0xd + RTPROT_EIGRP = 0xc0 RTPROT_GATED = 0x8 + RTPROT_ISIS = 0xbb RTPROT_KERNEL = 0x2 RTPROT_MROUTED = 0x11 RTPROT_MRT = 0xa RTPROT_NTK = 0xf + RTPROT_OSPF = 0xbc RTPROT_RA = 0x9 RTPROT_REDIRECT = 0x1 + RTPROT_RIP = 0xbd RTPROT_STATIC = 0x4 RTPROT_UNSPEC = 0x0 RTPROT_XORP = 0xe @@ -1877,6 +1892,9 @@ const ( STATX_TYPE = 0x1 STATX_UID = 0x8 STATX__RESERVED = 0x80000000 + SYNC_FILE_RANGE_WAIT_AFTER = 0x4 + SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 + SYNC_FILE_RANGE_WRITE = 0x2 SYSFS_MAGIC = 0x62656572 S_BLKSIZE = 0x200 S_IEXEC = 0x40 @@ -1939,6 +1957,8 @@ const ( TCP_DEFER_ACCEPT = 0x9 TCP_FASTOPEN = 0x17 TCP_FASTOPEN_CONNECT = 0x1e + TCP_FASTOPEN_KEY = 0x21 + TCP_FASTOPEN_NO_COOKIE = 0x22 TCP_INFO = 0xb TCP_KEEPCNT = 0x6 TCP_KEEPIDLE = 0x4 @@ -2108,6 +2128,21 @@ const ( TUNSETVNETBE = 0x800454de TUNSETVNETHDRSZ = 0x800454d8 TUNSETVNETLE = 0x800454dc + UBI_IOCATT = 0x80186f40 + UBI_IOCDET = 0x80046f41 + UBI_IOCEBCH = 0x80044f02 + UBI_IOCEBER = 0x80044f01 + UBI_IOCEBISMAP = 0x40044f05 + UBI_IOCEBMAP = 0x80084f03 + UBI_IOCEBUNMAP = 0x80044f04 + UBI_IOCMKVOL = 0x80986f00 + UBI_IOCRMVOL = 0x80046f01 + UBI_IOCRNVOL = 0x91106f03 + UBI_IOCRSVOL = 0x800c6f02 + UBI_IOCSETVOLPROP = 0x80104f06 + UBI_IOCVOLCRBLK = 0x80804f07 + UBI_IOCVOLRMBLK = 0x20004f08 + UBI_IOCVOLUP = 0x80084f00 UDF_SUPER_MAGIC = 0x15013346 UMOUNT_NOFOLLOW = 0x8 USBDEVICE_SUPER_MAGIC = 0x9fa2 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go index 1d2f0e63..509faae7 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go @@ -498,6 +498,8 @@ const ( FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 FS_ENCRYPTION_MODE_AES_256_XTS = 0x1 FS_ENCRYPTION_MODE_INVALID = 0x0 + FS_ENCRYPTION_MODE_SPECK128_256_CTS = 0x8 + FS_ENCRYPTION_MODE_SPECK128_256_XTS = 0x7 FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615 FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614 FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613 @@ -635,7 +637,7 @@ const ( IFA_F_STABLE_PRIVACY = 0x800 IFA_F_TEMPORARY = 0x1 IFA_F_TENTATIVE = 0x40 - IFA_MAX = 0x8 + IFA_MAX = 0x9 IFF_ALLMULTI = 0x200 IFF_ATTACH_QUEUE = 0x200 IFF_AUTOMEDIA = 0x4000 @@ -762,6 +764,7 @@ const ( IPV6_DONTFRAG = 0x3e IPV6_DROP_MEMBERSHIP = 0x15 IPV6_DSTOPTS = 0x3b + IPV6_FREEBIND = 0x4e IPV6_HDRINCL = 0x24 IPV6_HOPLIMIT = 0x34 IPV6_HOPOPTS = 0x36 @@ -954,6 +957,7 @@ const ( MAP_EXECUTABLE = 0x4000 MAP_FILE = 0x0 MAP_FIXED = 0x10 + MAP_FIXED_NOREPLACE = 0x100000 MAP_GROWSDOWN = 0x1000 MAP_HUGETLB = 0x80000 MAP_HUGE_MASK = 0x3f @@ -965,6 +969,7 @@ const ( MAP_PRIVATE = 0x2 MAP_RENAME = 0x800 MAP_SHARED = 0x1 + MAP_SHARED_VALIDATE = 0x3 MAP_STACK = 0x40000 MAP_TYPE = 0xf MCL_CURRENT = 0x1 @@ -1075,6 +1080,8 @@ const ( NETLINK_UNUSED = 0x1 NETLINK_USERSOCK = 0x2 NETLINK_XFRM = 0x6 + NETNSA_MAX = 0x3 + NETNSA_NSID_NOT_ASSIGNED = -0x1 NFNETLINK_V0 = 0x0 NFNLGRP_ACCT_QUOTA = 0x8 NFNLGRP_CONNTRACK_DESTROY = 0x3 @@ -1428,6 +1435,9 @@ const ( RAMFS_MAGIC = 0x858458f6 RDTGROUP_SUPER_MAGIC = 0x7655821 REISERFS_SUPER_MAGIC = 0x52654973 + RENAME_EXCHANGE = 0x2 + RENAME_NOREPLACE = 0x1 + RENAME_WHITEOUT = 0x4 RLIMIT_AS = 0x6 RLIMIT_CORE = 0x4 RLIMIT_CPU = 0x0 @@ -1470,7 +1480,7 @@ const ( RTAX_UNSPEC = 0x0 RTAX_WINDOW = 0x3 RTA_ALIGNTO = 0x4 - RTA_MAX = 0x1a + RTA_MAX = 0x1d RTCF_DIRECTSRC = 0x4000000 RTCF_DOREDIRECT = 0x1000000 RTCF_LOG = 0x2000000 @@ -1606,17 +1616,22 @@ const ( RTNH_F_UNRESOLVED = 0x20 RTN_MAX = 0xb RTPROT_BABEL = 0x2a + RTPROT_BGP = 0xba RTPROT_BIRD = 0xc RTPROT_BOOT = 0x3 RTPROT_DHCP = 0x10 RTPROT_DNROUTED = 0xd + RTPROT_EIGRP = 0xc0 RTPROT_GATED = 0x8 + RTPROT_ISIS = 0xbb RTPROT_KERNEL = 0x2 RTPROT_MROUTED = 0x11 RTPROT_MRT = 0xa RTPROT_NTK = 0xf + RTPROT_OSPF = 0xbc RTPROT_RA = 0x9 RTPROT_REDIRECT = 0x1 + RTPROT_RIP = 0xbd RTPROT_STATIC = 0x4 RTPROT_UNSPEC = 0x0 RTPROT_XORP = 0xe @@ -1877,6 +1892,9 @@ const ( STATX_TYPE = 0x1 STATX_UID = 0x8 STATX__RESERVED = 0x80000000 + SYNC_FILE_RANGE_WAIT_AFTER = 0x4 + SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 + SYNC_FILE_RANGE_WRITE = 0x2 SYSFS_MAGIC = 0x62656572 S_BLKSIZE = 0x200 S_IEXEC = 0x40 @@ -1939,6 +1957,8 @@ const ( TCP_DEFER_ACCEPT = 0x9 TCP_FASTOPEN = 0x17 TCP_FASTOPEN_CONNECT = 0x1e + TCP_FASTOPEN_KEY = 0x21 + TCP_FASTOPEN_NO_COOKIE = 0x22 TCP_INFO = 0xb TCP_KEEPCNT = 0x6 TCP_KEEPIDLE = 0x4 @@ -2108,6 +2128,21 @@ const ( TUNSETVNETBE = 0x800454de TUNSETVNETHDRSZ = 0x800454d8 TUNSETVNETLE = 0x800454dc + UBI_IOCATT = 0x80186f40 + UBI_IOCDET = 0x80046f41 + UBI_IOCEBCH = 0x80044f02 + UBI_IOCEBER = 0x80044f01 + UBI_IOCEBISMAP = 0x40044f05 + UBI_IOCEBMAP = 0x80084f03 + UBI_IOCEBUNMAP = 0x80044f04 + UBI_IOCMKVOL = 0x80986f00 + UBI_IOCRMVOL = 0x80046f01 + UBI_IOCRNVOL = 0x91106f03 + UBI_IOCRSVOL = 0x800c6f02 + UBI_IOCSETVOLPROP = 0x80104f06 + UBI_IOCVOLCRBLK = 0x80804f07 + UBI_IOCVOLRMBLK = 0x20004f08 + UBI_IOCVOLUP = 0x80084f00 UDF_SUPER_MAGIC = 0x15013346 UMOUNT_NOFOLLOW = 0x8 USBDEVICE_SUPER_MAGIC = 0x9fa2 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go index 33b99402..340f78af 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go @@ -498,6 +498,8 @@ const ( FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 FS_ENCRYPTION_MODE_AES_256_XTS = 0x1 FS_ENCRYPTION_MODE_INVALID = 0x0 + FS_ENCRYPTION_MODE_SPECK128_256_CTS = 0x8 + FS_ENCRYPTION_MODE_SPECK128_256_XTS = 0x7 FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615 FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614 FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613 @@ -635,7 +637,7 @@ const ( IFA_F_STABLE_PRIVACY = 0x800 IFA_F_TEMPORARY = 0x1 IFA_F_TENTATIVE = 0x40 - IFA_MAX = 0x8 + IFA_MAX = 0x9 IFF_ALLMULTI = 0x200 IFF_ATTACH_QUEUE = 0x200 IFF_AUTOMEDIA = 0x4000 @@ -762,6 +764,7 @@ const ( IPV6_DONTFRAG = 0x3e IPV6_DROP_MEMBERSHIP = 0x15 IPV6_DSTOPTS = 0x3b + IPV6_FREEBIND = 0x4e IPV6_HDRINCL = 0x24 IPV6_HOPLIMIT = 0x34 IPV6_HOPOPTS = 0x36 @@ -954,6 +957,7 @@ const ( MAP_EXECUTABLE = 0x4000 MAP_FILE = 0x0 MAP_FIXED = 0x10 + MAP_FIXED_NOREPLACE = 0x100000 MAP_GROWSDOWN = 0x1000 MAP_HUGETLB = 0x80000 MAP_HUGE_MASK = 0x3f @@ -965,6 +969,7 @@ const ( MAP_PRIVATE = 0x2 MAP_RENAME = 0x800 MAP_SHARED = 0x1 + MAP_SHARED_VALIDATE = 0x3 MAP_STACK = 0x40000 MAP_TYPE = 0xf MCL_CURRENT = 0x1 @@ -1075,6 +1080,8 @@ const ( NETLINK_UNUSED = 0x1 NETLINK_USERSOCK = 0x2 NETLINK_XFRM = 0x6 + NETNSA_MAX = 0x3 + NETNSA_NSID_NOT_ASSIGNED = -0x1 NFNETLINK_V0 = 0x0 NFNLGRP_ACCT_QUOTA = 0x8 NFNLGRP_CONNTRACK_DESTROY = 0x3 @@ -1428,6 +1435,9 @@ const ( RAMFS_MAGIC = 0x858458f6 RDTGROUP_SUPER_MAGIC = 0x7655821 REISERFS_SUPER_MAGIC = 0x52654973 + RENAME_EXCHANGE = 0x2 + RENAME_NOREPLACE = 0x1 + RENAME_WHITEOUT = 0x4 RLIMIT_AS = 0x6 RLIMIT_CORE = 0x4 RLIMIT_CPU = 0x0 @@ -1470,7 +1480,7 @@ const ( RTAX_UNSPEC = 0x0 RTAX_WINDOW = 0x3 RTA_ALIGNTO = 0x4 - RTA_MAX = 0x1a + RTA_MAX = 0x1d RTCF_DIRECTSRC = 0x4000000 RTCF_DOREDIRECT = 0x1000000 RTCF_LOG = 0x2000000 @@ -1606,17 +1616,22 @@ const ( RTNH_F_UNRESOLVED = 0x20 RTN_MAX = 0xb RTPROT_BABEL = 0x2a + RTPROT_BGP = 0xba RTPROT_BIRD = 0xc RTPROT_BOOT = 0x3 RTPROT_DHCP = 0x10 RTPROT_DNROUTED = 0xd + RTPROT_EIGRP = 0xc0 RTPROT_GATED = 0x8 + RTPROT_ISIS = 0xbb RTPROT_KERNEL = 0x2 RTPROT_MROUTED = 0x11 RTPROT_MRT = 0xa RTPROT_NTK = 0xf + RTPROT_OSPF = 0xbc RTPROT_RA = 0x9 RTPROT_REDIRECT = 0x1 + RTPROT_RIP = 0xbd RTPROT_STATIC = 0x4 RTPROT_UNSPEC = 0x0 RTPROT_XORP = 0xe @@ -1877,6 +1892,9 @@ const ( STATX_TYPE = 0x1 STATX_UID = 0x8 STATX__RESERVED = 0x80000000 + SYNC_FILE_RANGE_WAIT_AFTER = 0x4 + SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 + SYNC_FILE_RANGE_WRITE = 0x2 SYSFS_MAGIC = 0x62656572 S_BLKSIZE = 0x200 S_IEXEC = 0x40 @@ -1939,6 +1957,8 @@ const ( TCP_DEFER_ACCEPT = 0x9 TCP_FASTOPEN = 0x17 TCP_FASTOPEN_CONNECT = 0x1e + TCP_FASTOPEN_KEY = 0x21 + TCP_FASTOPEN_NO_COOKIE = 0x22 TCP_INFO = 0xb TCP_KEEPCNT = 0x6 TCP_KEEPIDLE = 0x4 @@ -2108,6 +2128,21 @@ const ( TUNSETVNETBE = 0x800454de TUNSETVNETHDRSZ = 0x800454d8 TUNSETVNETLE = 0x800454dc + UBI_IOCATT = 0x80186f40 + UBI_IOCDET = 0x80046f41 + UBI_IOCEBCH = 0x80044f02 + UBI_IOCEBER = 0x80044f01 + UBI_IOCEBISMAP = 0x40044f05 + UBI_IOCEBMAP = 0x80084f03 + UBI_IOCEBUNMAP = 0x80044f04 + UBI_IOCMKVOL = 0x80986f00 + UBI_IOCRMVOL = 0x80046f01 + UBI_IOCRNVOL = 0x91106f03 + UBI_IOCRSVOL = 0x800c6f02 + UBI_IOCSETVOLPROP = 0x80104f06 + UBI_IOCVOLCRBLK = 0x80804f07 + UBI_IOCVOLRMBLK = 0x20004f08 + UBI_IOCVOLUP = 0x80084f00 UDF_SUPER_MAGIC = 0x15013346 UMOUNT_NOFOLLOW = 0x8 USBDEVICE_SUPER_MAGIC = 0x9fa2 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go index c78d6697..4e80d6aa 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go @@ -498,6 +498,8 @@ const ( FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 FS_ENCRYPTION_MODE_AES_256_XTS = 0x1 FS_ENCRYPTION_MODE_INVALID = 0x0 + FS_ENCRYPTION_MODE_SPECK128_256_CTS = 0x8 + FS_ENCRYPTION_MODE_SPECK128_256_XTS = 0x7 FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615 FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614 FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613 @@ -635,7 +637,7 @@ const ( IFA_F_STABLE_PRIVACY = 0x800 IFA_F_TEMPORARY = 0x1 IFA_F_TENTATIVE = 0x40 - IFA_MAX = 0x8 + IFA_MAX = 0x9 IFF_ALLMULTI = 0x200 IFF_ATTACH_QUEUE = 0x200 IFF_AUTOMEDIA = 0x4000 @@ -762,6 +764,7 @@ const ( IPV6_DONTFRAG = 0x3e IPV6_DROP_MEMBERSHIP = 0x15 IPV6_DSTOPTS = 0x3b + IPV6_FREEBIND = 0x4e IPV6_HDRINCL = 0x24 IPV6_HOPLIMIT = 0x34 IPV6_HOPOPTS = 0x36 @@ -954,6 +957,7 @@ const ( MAP_EXECUTABLE = 0x1000 MAP_FILE = 0x0 MAP_FIXED = 0x10 + MAP_FIXED_NOREPLACE = 0x100000 MAP_GROWSDOWN = 0x100 MAP_HUGETLB = 0x40000 MAP_HUGE_MASK = 0x3f @@ -964,6 +968,7 @@ const ( MAP_POPULATE = 0x8000 MAP_PRIVATE = 0x2 MAP_SHARED = 0x1 + MAP_SHARED_VALIDATE = 0x3 MAP_STACK = 0x20000 MAP_TYPE = 0xf MCL_CURRENT = 0x2000 @@ -1074,6 +1079,8 @@ const ( NETLINK_UNUSED = 0x1 NETLINK_USERSOCK = 0x2 NETLINK_XFRM = 0x6 + NETNSA_MAX = 0x3 + NETNSA_NSID_NOT_ASSIGNED = -0x1 NFNETLINK_V0 = 0x0 NFNLGRP_ACCT_QUOTA = 0x8 NFNLGRP_CONNTRACK_DESTROY = 0x3 @@ -1484,6 +1491,9 @@ const ( RAMFS_MAGIC = 0x858458f6 RDTGROUP_SUPER_MAGIC = 0x7655821 REISERFS_SUPER_MAGIC = 0x52654973 + RENAME_EXCHANGE = 0x2 + RENAME_NOREPLACE = 0x1 + RENAME_WHITEOUT = 0x4 RLIMIT_AS = 0x9 RLIMIT_CORE = 0x4 RLIMIT_CPU = 0x0 @@ -1526,7 +1536,7 @@ const ( RTAX_UNSPEC = 0x0 RTAX_WINDOW = 0x3 RTA_ALIGNTO = 0x4 - RTA_MAX = 0x1a + RTA_MAX = 0x1d RTCF_DIRECTSRC = 0x4000000 RTCF_DOREDIRECT = 0x1000000 RTCF_LOG = 0x2000000 @@ -1662,17 +1672,22 @@ const ( RTNH_F_UNRESOLVED = 0x20 RTN_MAX = 0xb RTPROT_BABEL = 0x2a + RTPROT_BGP = 0xba RTPROT_BIRD = 0xc RTPROT_BOOT = 0x3 RTPROT_DHCP = 0x10 RTPROT_DNROUTED = 0xd + RTPROT_EIGRP = 0xc0 RTPROT_GATED = 0x8 + RTPROT_ISIS = 0xbb RTPROT_KERNEL = 0x2 RTPROT_MROUTED = 0x11 RTPROT_MRT = 0xa RTPROT_NTK = 0xf + RTPROT_OSPF = 0xbc RTPROT_RA = 0x9 RTPROT_REDIRECT = 0x1 + RTPROT_RIP = 0xbd RTPROT_STATIC = 0x4 RTPROT_UNSPEC = 0x0 RTPROT_XORP = 0xe @@ -1932,6 +1947,9 @@ const ( STATX_TYPE = 0x1 STATX_UID = 0x8 STATX__RESERVED = 0x80000000 + SYNC_FILE_RANGE_WAIT_AFTER = 0x4 + SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 + SYNC_FILE_RANGE_WRITE = 0x2 SYSFS_MAGIC = 0x62656572 S_BLKSIZE = 0x200 S_IEXEC = 0x40 @@ -1993,6 +2011,8 @@ const ( TCP_DEFER_ACCEPT = 0x9 TCP_FASTOPEN = 0x17 TCP_FASTOPEN_CONNECT = 0x1e + TCP_FASTOPEN_KEY = 0x21 + TCP_FASTOPEN_NO_COOKIE = 0x22 TCP_INFO = 0xb TCP_KEEPCNT = 0x6 TCP_KEEPIDLE = 0x4 @@ -2166,6 +2186,21 @@ const ( TUNSETVNETBE = 0x800454de TUNSETVNETHDRSZ = 0x800454d8 TUNSETVNETLE = 0x800454dc + UBI_IOCATT = 0x80186f40 + UBI_IOCDET = 0x80046f41 + UBI_IOCEBCH = 0x80044f02 + UBI_IOCEBER = 0x80044f01 + UBI_IOCEBISMAP = 0x40044f05 + UBI_IOCEBMAP = 0x80084f03 + UBI_IOCEBUNMAP = 0x80044f04 + UBI_IOCMKVOL = 0x80986f00 + UBI_IOCRMVOL = 0x80046f01 + UBI_IOCRNVOL = 0x91106f03 + UBI_IOCRSVOL = 0x800c6f02 + UBI_IOCSETVOLPROP = 0x80104f06 + UBI_IOCVOLCRBLK = 0x80804f07 + UBI_IOCVOLRMBLK = 0x20004f08 + UBI_IOCVOLUP = 0x80084f00 UDF_SUPER_MAGIC = 0x15013346 UMOUNT_NOFOLLOW = 0x8 USBDEVICE_SUPER_MAGIC = 0x9fa2 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go index 63493756..f22c0d68 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go @@ -498,6 +498,8 @@ const ( FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 FS_ENCRYPTION_MODE_AES_256_XTS = 0x1 FS_ENCRYPTION_MODE_INVALID = 0x0 + FS_ENCRYPTION_MODE_SPECK128_256_CTS = 0x8 + FS_ENCRYPTION_MODE_SPECK128_256_XTS = 0x7 FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615 FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614 FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613 @@ -635,7 +637,7 @@ const ( IFA_F_STABLE_PRIVACY = 0x800 IFA_F_TEMPORARY = 0x1 IFA_F_TENTATIVE = 0x40 - IFA_MAX = 0x8 + IFA_MAX = 0x9 IFF_ALLMULTI = 0x200 IFF_ATTACH_QUEUE = 0x200 IFF_AUTOMEDIA = 0x4000 @@ -762,6 +764,7 @@ const ( IPV6_DONTFRAG = 0x3e IPV6_DROP_MEMBERSHIP = 0x15 IPV6_DSTOPTS = 0x3b + IPV6_FREEBIND = 0x4e IPV6_HDRINCL = 0x24 IPV6_HOPLIMIT = 0x34 IPV6_HOPOPTS = 0x36 @@ -954,6 +957,7 @@ const ( MAP_EXECUTABLE = 0x1000 MAP_FILE = 0x0 MAP_FIXED = 0x10 + MAP_FIXED_NOREPLACE = 0x100000 MAP_GROWSDOWN = 0x100 MAP_HUGETLB = 0x40000 MAP_HUGE_MASK = 0x3f @@ -964,6 +968,7 @@ const ( MAP_POPULATE = 0x8000 MAP_PRIVATE = 0x2 MAP_SHARED = 0x1 + MAP_SHARED_VALIDATE = 0x3 MAP_STACK = 0x20000 MAP_TYPE = 0xf MCL_CURRENT = 0x2000 @@ -1074,6 +1079,8 @@ const ( NETLINK_UNUSED = 0x1 NETLINK_USERSOCK = 0x2 NETLINK_XFRM = 0x6 + NETNSA_MAX = 0x3 + NETNSA_NSID_NOT_ASSIGNED = -0x1 NFNETLINK_V0 = 0x0 NFNLGRP_ACCT_QUOTA = 0x8 NFNLGRP_CONNTRACK_DESTROY = 0x3 @@ -1484,6 +1491,9 @@ const ( RAMFS_MAGIC = 0x858458f6 RDTGROUP_SUPER_MAGIC = 0x7655821 REISERFS_SUPER_MAGIC = 0x52654973 + RENAME_EXCHANGE = 0x2 + RENAME_NOREPLACE = 0x1 + RENAME_WHITEOUT = 0x4 RLIMIT_AS = 0x9 RLIMIT_CORE = 0x4 RLIMIT_CPU = 0x0 @@ -1526,7 +1536,7 @@ const ( RTAX_UNSPEC = 0x0 RTAX_WINDOW = 0x3 RTA_ALIGNTO = 0x4 - RTA_MAX = 0x1a + RTA_MAX = 0x1d RTCF_DIRECTSRC = 0x4000000 RTCF_DOREDIRECT = 0x1000000 RTCF_LOG = 0x2000000 @@ -1662,17 +1672,22 @@ const ( RTNH_F_UNRESOLVED = 0x20 RTN_MAX = 0xb RTPROT_BABEL = 0x2a + RTPROT_BGP = 0xba RTPROT_BIRD = 0xc RTPROT_BOOT = 0x3 RTPROT_DHCP = 0x10 RTPROT_DNROUTED = 0xd + RTPROT_EIGRP = 0xc0 RTPROT_GATED = 0x8 + RTPROT_ISIS = 0xbb RTPROT_KERNEL = 0x2 RTPROT_MROUTED = 0x11 RTPROT_MRT = 0xa RTPROT_NTK = 0xf + RTPROT_OSPF = 0xbc RTPROT_RA = 0x9 RTPROT_REDIRECT = 0x1 + RTPROT_RIP = 0xbd RTPROT_STATIC = 0x4 RTPROT_UNSPEC = 0x0 RTPROT_XORP = 0xe @@ -1932,6 +1947,9 @@ const ( STATX_TYPE = 0x1 STATX_UID = 0x8 STATX__RESERVED = 0x80000000 + SYNC_FILE_RANGE_WAIT_AFTER = 0x4 + SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 + SYNC_FILE_RANGE_WRITE = 0x2 SYSFS_MAGIC = 0x62656572 S_BLKSIZE = 0x200 S_IEXEC = 0x40 @@ -1993,6 +2011,8 @@ const ( TCP_DEFER_ACCEPT = 0x9 TCP_FASTOPEN = 0x17 TCP_FASTOPEN_CONNECT = 0x1e + TCP_FASTOPEN_KEY = 0x21 + TCP_FASTOPEN_NO_COOKIE = 0x22 TCP_INFO = 0xb TCP_KEEPCNT = 0x6 TCP_KEEPIDLE = 0x4 @@ -2166,6 +2186,21 @@ const ( TUNSETVNETBE = 0x800454de TUNSETVNETHDRSZ = 0x800454d8 TUNSETVNETLE = 0x800454dc + UBI_IOCATT = 0x80186f40 + UBI_IOCDET = 0x80046f41 + UBI_IOCEBCH = 0x80044f02 + UBI_IOCEBER = 0x80044f01 + UBI_IOCEBISMAP = 0x40044f05 + UBI_IOCEBMAP = 0x80084f03 + UBI_IOCEBUNMAP = 0x80044f04 + UBI_IOCMKVOL = 0x80986f00 + UBI_IOCRMVOL = 0x80046f01 + UBI_IOCRNVOL = 0x91106f03 + UBI_IOCRSVOL = 0x800c6f02 + UBI_IOCSETVOLPROP = 0x80104f06 + UBI_IOCVOLCRBLK = 0x80804f07 + UBI_IOCVOLRMBLK = 0x20004f08 + UBI_IOCVOLUP = 0x80084f00 UDF_SUPER_MAGIC = 0x15013346 UMOUNT_NOFOLLOW = 0x8 USBDEVICE_SUPER_MAGIC = 0x9fa2 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go new file mode 100644 index 00000000..0978dba1 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go @@ -0,0 +1,2625 @@ +// mkerrors.sh -Wall -Werror -static -I/tmp/include +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build riscv64,linux + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go + +package unix + +import "syscall" + +const ( + AAFS_MAGIC = 0x5a3c69f0 + ADFS_SUPER_MAGIC = 0xadf5 + AFFS_SUPER_MAGIC = 0xadff + AFS_FS_MAGIC = 0x6b414653 + AFS_SUPER_MAGIC = 0x5346414f + AF_ALG = 0x26 + AF_APPLETALK = 0x5 + AF_ASH = 0x12 + AF_ATMPVC = 0x8 + AF_ATMSVC = 0x14 + AF_AX25 = 0x3 + AF_BLUETOOTH = 0x1f + AF_BRIDGE = 0x7 + AF_CAIF = 0x25 + AF_CAN = 0x1d + AF_DECnet = 0xc + AF_ECONET = 0x13 + AF_FILE = 0x1 + AF_IB = 0x1b + AF_IEEE802154 = 0x24 + AF_INET = 0x2 + AF_INET6 = 0xa + AF_IPX = 0x4 + AF_IRDA = 0x17 + AF_ISDN = 0x22 + AF_IUCV = 0x20 + AF_KCM = 0x29 + AF_KEY = 0xf + AF_LLC = 0x1a + AF_LOCAL = 0x1 + AF_MAX = 0x2c + AF_MPLS = 0x1c + AF_NETBEUI = 0xd + AF_NETLINK = 0x10 + AF_NETROM = 0x6 + AF_NFC = 0x27 + AF_PACKET = 0x11 + AF_PHONET = 0x23 + AF_PPPOX = 0x18 + AF_QIPCRTR = 0x2a + AF_RDS = 0x15 + AF_ROSE = 0xb + AF_ROUTE = 0x10 + AF_RXRPC = 0x21 + AF_SECURITY = 0xe + AF_SMC = 0x2b + AF_SNA = 0x16 + AF_TIPC = 0x1e + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VSOCK = 0x28 + AF_WANPIPE = 0x19 + AF_X25 = 0x9 + ALG_OP_DECRYPT = 0x0 + ALG_OP_ENCRYPT = 0x1 + ALG_SET_AEAD_ASSOCLEN = 0x4 + ALG_SET_AEAD_AUTHSIZE = 0x5 + ALG_SET_IV = 0x2 + ALG_SET_KEY = 0x1 + ALG_SET_OP = 0x3 + ANON_INODE_FS_MAGIC = 0x9041934 + ARPHRD_6LOWPAN = 0x339 + ARPHRD_ADAPT = 0x108 + ARPHRD_APPLETLK = 0x8 + ARPHRD_ARCNET = 0x7 + ARPHRD_ASH = 0x30d + ARPHRD_ATM = 0x13 + ARPHRD_AX25 = 0x3 + ARPHRD_BIF = 0x307 + ARPHRD_CAIF = 0x336 + ARPHRD_CAN = 0x118 + ARPHRD_CHAOS = 0x5 + ARPHRD_CISCO = 0x201 + ARPHRD_CSLIP = 0x101 + ARPHRD_CSLIP6 = 0x103 + ARPHRD_DDCMP = 0x205 + ARPHRD_DLCI = 0xf + ARPHRD_ECONET = 0x30e + ARPHRD_EETHER = 0x2 + ARPHRD_ETHER = 0x1 + ARPHRD_EUI64 = 0x1b + ARPHRD_FCAL = 0x311 + ARPHRD_FCFABRIC = 0x313 + ARPHRD_FCPL = 0x312 + ARPHRD_FCPP = 0x310 + ARPHRD_FDDI = 0x306 + ARPHRD_FRAD = 0x302 + ARPHRD_HDLC = 0x201 + ARPHRD_HIPPI = 0x30c + ARPHRD_HWX25 = 0x110 + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + ARPHRD_IEEE80211 = 0x321 + ARPHRD_IEEE80211_PRISM = 0x322 + ARPHRD_IEEE80211_RADIOTAP = 0x323 + ARPHRD_IEEE802154 = 0x324 + ARPHRD_IEEE802154_MONITOR = 0x325 + ARPHRD_IEEE802_TR = 0x320 + ARPHRD_INFINIBAND = 0x20 + ARPHRD_IP6GRE = 0x337 + ARPHRD_IPDDP = 0x309 + ARPHRD_IPGRE = 0x30a + ARPHRD_IRDA = 0x30f + ARPHRD_LAPB = 0x204 + ARPHRD_LOCALTLK = 0x305 + ARPHRD_LOOPBACK = 0x304 + ARPHRD_METRICOM = 0x17 + ARPHRD_NETLINK = 0x338 + ARPHRD_NETROM = 0x0 + ARPHRD_NONE = 0xfffe + ARPHRD_PHONET = 0x334 + ARPHRD_PHONET_PIPE = 0x335 + ARPHRD_PIMREG = 0x30b + ARPHRD_PPP = 0x200 + ARPHRD_PRONET = 0x4 + ARPHRD_RAWHDLC = 0x206 + ARPHRD_RAWIP = 0x207 + ARPHRD_ROSE = 0x10e + ARPHRD_RSRVD = 0x104 + ARPHRD_SIT = 0x308 + ARPHRD_SKIP = 0x303 + ARPHRD_SLIP = 0x100 + ARPHRD_SLIP6 = 0x102 + ARPHRD_TUNNEL = 0x300 + ARPHRD_TUNNEL6 = 0x301 + ARPHRD_VOID = 0xffff + ARPHRD_VSOCKMON = 0x33a + ARPHRD_X25 = 0x10f + AUTOFS_SUPER_MAGIC = 0x187 + B0 = 0x0 + B1000000 = 0x1008 + B110 = 0x3 + B115200 = 0x1002 + B1152000 = 0x1009 + B1200 = 0x9 + B134 = 0x4 + B150 = 0x5 + B1500000 = 0x100a + B1800 = 0xa + B19200 = 0xe + B200 = 0x6 + B2000000 = 0x100b + B230400 = 0x1003 + B2400 = 0xb + B2500000 = 0x100c + B300 = 0x7 + B3000000 = 0x100d + B3500000 = 0x100e + B38400 = 0xf + B4000000 = 0x100f + B460800 = 0x1004 + B4800 = 0xc + B50 = 0x1 + B500000 = 0x1005 + B57600 = 0x1001 + B576000 = 0x1006 + B600 = 0x8 + B75 = 0x2 + B921600 = 0x1007 + B9600 = 0xd + BALLOON_KVM_MAGIC = 0x13661366 + BDEVFS_MAGIC = 0x62646576 + BINFMTFS_MAGIC = 0x42494e4d + BLKBSZGET = 0x80081270 + BLKBSZSET = 0x40081271 + BLKFLSBUF = 0x1261 + BLKFRAGET = 0x1265 + BLKFRASET = 0x1264 + BLKGETSIZE = 0x1260 + BLKGETSIZE64 = 0x80081272 + BLKPBSZGET = 0x127b + BLKRAGET = 0x1263 + BLKRASET = 0x1262 + BLKROGET = 0x125e + BLKROSET = 0x125d + BLKRRPART = 0x125f + BLKSECTGET = 0x1267 + BLKSECTSET = 0x1266 + BLKSSZGET = 0x1268 + BOTHER = 0x1000 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIV = 0x30 + BPF_FS_MAGIC = 0xcafe4a11 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LL_OFF = -0x200000 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXINSNS = 0x1000 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_NET_OFF = -0x100000 + BPF_OR = 0x40 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x2000 + BSDLY = 0x2000 + BTRFS_SUPER_MAGIC = 0x9123683e + BTRFS_TEST_MAGIC = 0x73727279 + CAN_BCM = 0x2 + CAN_EFF_FLAG = 0x80000000 + CAN_EFF_ID_BITS = 0x1d + CAN_EFF_MASK = 0x1fffffff + CAN_ERR_FLAG = 0x20000000 + CAN_ERR_MASK = 0x1fffffff + CAN_INV_FILTER = 0x20000000 + CAN_ISOTP = 0x6 + CAN_MAX_DLC = 0x8 + CAN_MAX_DLEN = 0x8 + CAN_MCNET = 0x5 + CAN_MTU = 0x10 + CAN_NPROTO = 0x7 + CAN_RAW = 0x1 + CAN_RAW_FILTER_MAX = 0x200 + CAN_RTR_FLAG = 0x40000000 + CAN_SFF_ID_BITS = 0xb + CAN_SFF_MASK = 0x7ff + CAN_TP16 = 0x3 + CAN_TP20 = 0x4 + CBAUD = 0x100f + CBAUDEX = 0x1000 + CFLUSH = 0xf + CGROUP2_SUPER_MAGIC = 0x63677270 + CGROUP_SUPER_MAGIC = 0x27e0eb + CIBAUD = 0x100f0000 + CLOCAL = 0x800 + CLOCK_BOOTTIME = 0x7 + CLOCK_BOOTTIME_ALARM = 0x9 + CLOCK_DEFAULT = 0x0 + CLOCK_EXT = 0x1 + CLOCK_INT = 0x2 + CLOCK_MONOTONIC = 0x1 + CLOCK_MONOTONIC_COARSE = 0x6 + CLOCK_MONOTONIC_RAW = 0x4 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_ALARM = 0x8 + CLOCK_REALTIME_COARSE = 0x5 + CLOCK_TAI = 0xb + CLOCK_THREAD_CPUTIME_ID = 0x3 + CLOCK_TXFROMRX = 0x4 + CLOCK_TXINT = 0x3 + CLONE_CHILD_CLEARTID = 0x200000 + CLONE_CHILD_SETTID = 0x1000000 + CLONE_DETACHED = 0x400000 + CLONE_FILES = 0x400 + CLONE_FS = 0x200 + CLONE_IO = 0x80000000 + CLONE_NEWCGROUP = 0x2000000 + CLONE_NEWIPC = 0x8000000 + CLONE_NEWNET = 0x40000000 + CLONE_NEWNS = 0x20000 + CLONE_NEWPID = 0x20000000 + CLONE_NEWUSER = 0x10000000 + CLONE_NEWUTS = 0x4000000 + CLONE_PARENT = 0x8000 + CLONE_PARENT_SETTID = 0x100000 + CLONE_PTRACE = 0x2000 + CLONE_SETTLS = 0x80000 + CLONE_SIGHAND = 0x800 + CLONE_SYSVSEM = 0x40000 + CLONE_THREAD = 0x10000 + CLONE_UNTRACED = 0x800000 + CLONE_VFORK = 0x4000 + CLONE_VM = 0x100 + CMSPAR = 0x40000000 + CODA_SUPER_MAGIC = 0x73757245 + CR0 = 0x0 + CR1 = 0x200 + CR2 = 0x400 + CR3 = 0x600 + CRAMFS_MAGIC = 0x28cd3d45 + CRDLY = 0x600 + CREAD = 0x80 + CRTSCTS = 0x80000000 + CS5 = 0x0 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIGNAL = 0xff + CSIZE = 0x30 + CSTART = 0x11 + CSTATUS = 0x0 + CSTOP = 0x13 + CSTOPB = 0x40 + CSUSP = 0x1a + DAXFS_MAGIC = 0x64646178 + DEBUGFS_MAGIC = 0x64626720 + DEVPTS_SUPER_MAGIC = 0x1cd1 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x200 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x800 + ECHONL = 0x40 + ECHOPRT = 0x400 + ECRYPTFS_SUPER_MAGIC = 0xf15f + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x800 + EFD_SEMAPHORE = 0x1 + EFIVARFS_MAGIC = 0xde5e81e4 + EFS_SUPER_MAGIC = 0x414a53 + ENCODING_DEFAULT = 0x0 + ENCODING_FM_MARK = 0x3 + ENCODING_FM_SPACE = 0x4 + ENCODING_MANCHESTER = 0x5 + ENCODING_NRZ = 0x1 + ENCODING_NRZI = 0x2 + EPOLLERR = 0x8 + EPOLLET = 0x80000000 + EPOLLEXCLUSIVE = 0x10000000 + EPOLLHUP = 0x10 + EPOLLIN = 0x1 + EPOLLMSG = 0x400 + EPOLLONESHOT = 0x40000000 + EPOLLOUT = 0x4 + EPOLLPRI = 0x2 + EPOLLRDBAND = 0x80 + EPOLLRDHUP = 0x2000 + EPOLLRDNORM = 0x40 + EPOLLWAKEUP = 0x20000000 + EPOLLWRBAND = 0x200 + EPOLLWRNORM = 0x100 + EPOLL_CLOEXEC = 0x80000 + EPOLL_CTL_ADD = 0x1 + EPOLL_CTL_DEL = 0x2 + EPOLL_CTL_MOD = 0x3 + ETH_P_1588 = 0x88f7 + ETH_P_8021AD = 0x88a8 + ETH_P_8021AH = 0x88e7 + ETH_P_8021Q = 0x8100 + ETH_P_80221 = 0x8917 + ETH_P_802_2 = 0x4 + ETH_P_802_3 = 0x1 + ETH_P_802_3_MIN = 0x600 + ETH_P_802_EX1 = 0x88b5 + ETH_P_AARP = 0x80f3 + ETH_P_AF_IUCV = 0xfbfb + ETH_P_ALL = 0x3 + ETH_P_AOE = 0x88a2 + ETH_P_ARCNET = 0x1a + ETH_P_ARP = 0x806 + ETH_P_ATALK = 0x809b + ETH_P_ATMFATE = 0x8884 + ETH_P_ATMMPOA = 0x884c + ETH_P_AX25 = 0x2 + ETH_P_BATMAN = 0x4305 + ETH_P_BPQ = 0x8ff + ETH_P_CAIF = 0xf7 + ETH_P_CAN = 0xc + ETH_P_CANFD = 0xd + ETH_P_CONTROL = 0x16 + ETH_P_CUST = 0x6006 + ETH_P_DDCMP = 0x6 + ETH_P_DEC = 0x6000 + ETH_P_DIAG = 0x6005 + ETH_P_DNA_DL = 0x6001 + ETH_P_DNA_RC = 0x6002 + ETH_P_DNA_RT = 0x6003 + ETH_P_DSA = 0x1b + ETH_P_ECONET = 0x18 + ETH_P_EDSA = 0xdada + ETH_P_ERSPAN = 0x88be + ETH_P_ERSPAN2 = 0x22eb + ETH_P_FCOE = 0x8906 + ETH_P_FIP = 0x8914 + ETH_P_HDLC = 0x19 + ETH_P_HSR = 0x892f + ETH_P_IBOE = 0x8915 + ETH_P_IEEE802154 = 0xf6 + ETH_P_IEEEPUP = 0xa00 + ETH_P_IEEEPUPAT = 0xa01 + ETH_P_IFE = 0xed3e + ETH_P_IP = 0x800 + ETH_P_IPV6 = 0x86dd + ETH_P_IPX = 0x8137 + ETH_P_IRDA = 0x17 + ETH_P_LAT = 0x6004 + ETH_P_LINK_CTL = 0x886c + ETH_P_LOCALTALK = 0x9 + ETH_P_LOOP = 0x60 + ETH_P_LOOPBACK = 0x9000 + ETH_P_MACSEC = 0x88e5 + ETH_P_MAP = 0xf9 + ETH_P_MOBITEX = 0x15 + ETH_P_MPLS_MC = 0x8848 + ETH_P_MPLS_UC = 0x8847 + ETH_P_MVRP = 0x88f5 + ETH_P_NCSI = 0x88f8 + ETH_P_NSH = 0x894f + ETH_P_PAE = 0x888e + ETH_P_PAUSE = 0x8808 + ETH_P_PHONET = 0xf5 + ETH_P_PPPTALK = 0x10 + ETH_P_PPP_DISC = 0x8863 + ETH_P_PPP_MP = 0x8 + ETH_P_PPP_SES = 0x8864 + ETH_P_PREAUTH = 0x88c7 + ETH_P_PRP = 0x88fb + ETH_P_PUP = 0x200 + ETH_P_PUPAT = 0x201 + ETH_P_QINQ1 = 0x9100 + ETH_P_QINQ2 = 0x9200 + ETH_P_QINQ3 = 0x9300 + ETH_P_RARP = 0x8035 + ETH_P_SCA = 0x6007 + ETH_P_SLOW = 0x8809 + ETH_P_SNAP = 0x5 + ETH_P_TDLS = 0x890d + ETH_P_TEB = 0x6558 + ETH_P_TIPC = 0x88ca + ETH_P_TRAILER = 0x1c + ETH_P_TR_802_2 = 0x11 + ETH_P_TSN = 0x22f0 + ETH_P_WAN_PPP = 0x7 + ETH_P_WCCP = 0x883e + ETH_P_X25 = 0x805 + ETH_P_XDSA = 0xf8 + EXABYTE_ENABLE_NEST = 0xf0 + EXT2_SUPER_MAGIC = 0xef53 + EXT3_SUPER_MAGIC = 0xef53 + EXT4_SUPER_MAGIC = 0xef53 + EXTA = 0xe + EXTB = 0xf + EXTPROC = 0x10000 + F2FS_SUPER_MAGIC = 0xf2f52010 + FALLOC_FL_COLLAPSE_RANGE = 0x8 + FALLOC_FL_INSERT_RANGE = 0x20 + FALLOC_FL_KEEP_SIZE = 0x1 + FALLOC_FL_NO_HIDE_STALE = 0x4 + FALLOC_FL_PUNCH_HOLE = 0x2 + FALLOC_FL_UNSHARE_RANGE = 0x40 + FALLOC_FL_ZERO_RANGE = 0x10 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FF0 = 0x0 + FF1 = 0x8000 + FFDLY = 0x8000 + FLUSHO = 0x1000 + FS_ENCRYPTION_MODE_AES_128_CBC = 0x5 + FS_ENCRYPTION_MODE_AES_128_CTS = 0x6 + FS_ENCRYPTION_MODE_AES_256_CBC = 0x3 + FS_ENCRYPTION_MODE_AES_256_CTS = 0x4 + FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 + FS_ENCRYPTION_MODE_AES_256_XTS = 0x1 + FS_ENCRYPTION_MODE_INVALID = 0x0 + FS_ENCRYPTION_MODE_SPECK128_256_CTS = 0x8 + FS_ENCRYPTION_MODE_SPECK128_256_XTS = 0x7 + FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614 + FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613 + FS_KEY_DESCRIPTOR_SIZE = 0x8 + FS_KEY_DESC_PREFIX = "fscrypt:" + FS_KEY_DESC_PREFIX_SIZE = 0x8 + FS_MAX_KEY_SIZE = 0x40 + FS_POLICY_FLAGS_PAD_16 = 0x2 + FS_POLICY_FLAGS_PAD_32 = 0x3 + FS_POLICY_FLAGS_PAD_4 = 0x0 + FS_POLICY_FLAGS_PAD_8 = 0x1 + FS_POLICY_FLAGS_PAD_MASK = 0x3 + FS_POLICY_FLAGS_VALID = 0x3 + FUTEXFS_SUPER_MAGIC = 0xbad1dea + F_ADD_SEALS = 0x409 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x406 + F_EXLCK = 0x4 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLEASE = 0x401 + F_GETLK = 0x5 + F_GETLK64 = 0x5 + F_GETOWN = 0x9 + F_GETOWN_EX = 0x10 + F_GETPIPE_SZ = 0x408 + F_GETSIG = 0xb + F_GET_FILE_RW_HINT = 0x40d + F_GET_RW_HINT = 0x40b + F_GET_SEALS = 0x40a + F_LOCK = 0x1 + F_NOTIFY = 0x402 + F_OFD_GETLK = 0x24 + F_OFD_SETLK = 0x25 + F_OFD_SETLKW = 0x26 + F_OK = 0x0 + F_RDLCK = 0x0 + F_SEAL_GROW = 0x4 + F_SEAL_SEAL = 0x1 + F_SEAL_SHRINK = 0x2 + F_SEAL_WRITE = 0x8 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLEASE = 0x400 + F_SETLK = 0x6 + F_SETLK64 = 0x6 + F_SETLKW = 0x7 + F_SETLKW64 = 0x7 + F_SETOWN = 0x8 + F_SETOWN_EX = 0xf + F_SETPIPE_SZ = 0x407 + F_SETSIG = 0xa + F_SET_FILE_RW_HINT = 0x40e + F_SET_RW_HINT = 0x40c + F_SHLCK = 0x8 + F_TEST = 0x3 + F_TLOCK = 0x2 + F_ULOCK = 0x0 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + GENL_ADMIN_PERM = 0x1 + GENL_CMD_CAP_DO = 0x2 + GENL_CMD_CAP_DUMP = 0x4 + GENL_CMD_CAP_HASPOL = 0x8 + GENL_HDRLEN = 0x4 + GENL_ID_CTRL = 0x10 + GENL_ID_PMCRAID = 0x12 + GENL_ID_VFS_DQUOT = 0x11 + GENL_MAX_ID = 0x3ff + GENL_MIN_ID = 0x10 + GENL_NAMSIZ = 0x10 + GENL_START_ALLOC = 0x13 + GENL_UNS_ADMIN_PERM = 0x10 + GRND_NONBLOCK = 0x1 + GRND_RANDOM = 0x2 + HDIO_DRIVE_CMD = 0x31f + HDIO_DRIVE_CMD_AEB = 0x31e + HDIO_DRIVE_CMD_HDR_SIZE = 0x4 + HDIO_DRIVE_HOB_HDR_SIZE = 0x8 + HDIO_DRIVE_RESET = 0x31c + HDIO_DRIVE_TASK = 0x31e + HDIO_DRIVE_TASKFILE = 0x31d + HDIO_DRIVE_TASK_HDR_SIZE = 0x8 + HDIO_GETGEO = 0x301 + HDIO_GET_32BIT = 0x309 + HDIO_GET_ACOUSTIC = 0x30f + HDIO_GET_ADDRESS = 0x310 + HDIO_GET_BUSSTATE = 0x31a + HDIO_GET_DMA = 0x30b + HDIO_GET_IDENTITY = 0x30d + HDIO_GET_KEEPSETTINGS = 0x308 + HDIO_GET_MULTCOUNT = 0x304 + HDIO_GET_NICE = 0x30c + HDIO_GET_NOWERR = 0x30a + HDIO_GET_QDMA = 0x305 + HDIO_GET_UNMASKINTR = 0x302 + HDIO_GET_WCACHE = 0x30e + HDIO_OBSOLETE_IDENTITY = 0x307 + HDIO_SCAN_HWIF = 0x328 + HDIO_SET_32BIT = 0x324 + HDIO_SET_ACOUSTIC = 0x32c + HDIO_SET_ADDRESS = 0x32f + HDIO_SET_BUSSTATE = 0x32d + HDIO_SET_DMA = 0x326 + HDIO_SET_KEEPSETTINGS = 0x323 + HDIO_SET_MULTCOUNT = 0x321 + HDIO_SET_NICE = 0x329 + HDIO_SET_NOWERR = 0x325 + HDIO_SET_PIO_MODE = 0x327 + HDIO_SET_QDMA = 0x32e + HDIO_SET_UNMASKINTR = 0x322 + HDIO_SET_WCACHE = 0x32b + HDIO_SET_XFER = 0x306 + HDIO_TRISTATE_HWIF = 0x31b + HDIO_UNREGISTER_HWIF = 0x32a + HOSTFS_SUPER_MAGIC = 0xc0ffee + HPFS_SUPER_MAGIC = 0xf995e849 + HUGETLBFS_MAGIC = 0x958458f6 + HUPCL = 0x400 + IBSHIFT = 0x10 + ICANON = 0x2 + ICMPV6_FILTER = 0x1 + ICRNL = 0x100 + IEXTEN = 0x8000 + IFA_F_DADFAILED = 0x8 + IFA_F_DEPRECATED = 0x20 + IFA_F_HOMEADDRESS = 0x10 + IFA_F_MANAGETEMPADDR = 0x100 + IFA_F_MCAUTOJOIN = 0x400 + IFA_F_NODAD = 0x2 + IFA_F_NOPREFIXROUTE = 0x200 + IFA_F_OPTIMISTIC = 0x4 + IFA_F_PERMANENT = 0x80 + IFA_F_SECONDARY = 0x1 + IFA_F_STABLE_PRIVACY = 0x800 + IFA_F_TEMPORARY = 0x1 + IFA_F_TENTATIVE = 0x40 + IFA_MAX = 0x9 + IFF_ALLMULTI = 0x200 + IFF_ATTACH_QUEUE = 0x200 + IFF_AUTOMEDIA = 0x4000 + IFF_BROADCAST = 0x2 + IFF_DEBUG = 0x4 + IFF_DETACH_QUEUE = 0x400 + IFF_DORMANT = 0x20000 + IFF_DYNAMIC = 0x8000 + IFF_ECHO = 0x40000 + IFF_LOOPBACK = 0x8 + IFF_LOWER_UP = 0x10000 + IFF_MASTER = 0x400 + IFF_MULTICAST = 0x1000 + IFF_MULTI_QUEUE = 0x100 + IFF_NAPI = 0x10 + IFF_NAPI_FRAGS = 0x20 + IFF_NOARP = 0x80 + IFF_NOFILTER = 0x1000 + IFF_NOTRAILERS = 0x20 + IFF_NO_PI = 0x1000 + IFF_ONE_QUEUE = 0x2000 + IFF_PERSIST = 0x800 + IFF_POINTOPOINT = 0x10 + IFF_PORTSEL = 0x2000 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SLAVE = 0x800 + IFF_TAP = 0x2 + IFF_TUN = 0x1 + IFF_TUN_EXCL = 0x8000 + IFF_UP = 0x1 + IFF_VNET_HDR = 0x4000 + IFF_VOLATILE = 0x70c5a + IFNAMSIZ = 0x10 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_ACCESS = 0x1 + IN_ALL_EVENTS = 0xfff + IN_ATTRIB = 0x4 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLOEXEC = 0x80000 + IN_CLOSE = 0x18 + IN_CLOSE_NOWRITE = 0x10 + IN_CLOSE_WRITE = 0x8 + IN_CREATE = 0x100 + IN_DELETE = 0x200 + IN_DELETE_SELF = 0x400 + IN_DONT_FOLLOW = 0x2000000 + IN_EXCL_UNLINK = 0x4000000 + IN_IGNORED = 0x8000 + IN_ISDIR = 0x40000000 + IN_LOOPBACKNET = 0x7f + IN_MASK_ADD = 0x20000000 + IN_MODIFY = 0x2 + IN_MOVE = 0xc0 + IN_MOVED_FROM = 0x40 + IN_MOVED_TO = 0x80 + IN_MOVE_SELF = 0x800 + IN_NONBLOCK = 0x800 + IN_ONESHOT = 0x80000000 + IN_ONLYDIR = 0x1000000 + IN_OPEN = 0x20 + IN_Q_OVERFLOW = 0x4000 + IN_UNMOUNT = 0x2000 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9 + IPPROTO_AH = 0x33 + IPPROTO_BEETPH = 0x5e + IPPROTO_COMP = 0x6c + IPPROTO_DCCP = 0x21 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_ESP = 0x32 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPIP = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MH = 0x87 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_NONE = 0x3b + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPV6_2292DSTOPTS = 0x4 + IPV6_2292HOPLIMIT = 0x8 + IPV6_2292HOPOPTS = 0x3 + IPV6_2292PKTINFO = 0x2 + IPV6_2292PKTOPTIONS = 0x6 + IPV6_2292RTHDR = 0x5 + IPV6_ADDRFORM = 0x1 + IPV6_ADDR_PREFERENCES = 0x48 + IPV6_ADD_MEMBERSHIP = 0x14 + IPV6_AUTHHDR = 0xa + IPV6_AUTOFLOWLABEL = 0x46 + IPV6_CHECKSUM = 0x7 + IPV6_DONTFRAG = 0x3e + IPV6_DROP_MEMBERSHIP = 0x15 + IPV6_DSTOPTS = 0x3b + IPV6_FREEBIND = 0x4e + IPV6_HDRINCL = 0x24 + IPV6_HOPLIMIT = 0x34 + IPV6_HOPOPTS = 0x36 + IPV6_IPSEC_POLICY = 0x22 + IPV6_JOIN_ANYCAST = 0x1b + IPV6_JOIN_GROUP = 0x14 + IPV6_LEAVE_ANYCAST = 0x1c + IPV6_LEAVE_GROUP = 0x15 + IPV6_MINHOPCOUNT = 0x49 + IPV6_MTU = 0x18 + IPV6_MTU_DISCOVER = 0x17 + IPV6_MULTICAST_HOPS = 0x12 + IPV6_MULTICAST_IF = 0x11 + IPV6_MULTICAST_LOOP = 0x13 + IPV6_NEXTHOP = 0x9 + IPV6_ORIGDSTADDR = 0x4a + IPV6_PATHMTU = 0x3d + IPV6_PKTINFO = 0x32 + IPV6_PMTUDISC_DO = 0x2 + IPV6_PMTUDISC_DONT = 0x0 + IPV6_PMTUDISC_INTERFACE = 0x4 + IPV6_PMTUDISC_OMIT = 0x5 + IPV6_PMTUDISC_PROBE = 0x3 + IPV6_PMTUDISC_WANT = 0x1 + IPV6_RECVDSTOPTS = 0x3a + IPV6_RECVERR = 0x19 + IPV6_RECVFRAGSIZE = 0x4d + IPV6_RECVHOPLIMIT = 0x33 + IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVORIGDSTADDR = 0x4a + IPV6_RECVPATHMTU = 0x3c + IPV6_RECVPKTINFO = 0x31 + IPV6_RECVRTHDR = 0x38 + IPV6_RECVTCLASS = 0x42 + IPV6_ROUTER_ALERT = 0x16 + IPV6_RTHDR = 0x39 + IPV6_RTHDRDSTOPTS = 0x37 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_RXDSTOPTS = 0x3b + IPV6_RXHOPOPTS = 0x36 + IPV6_TCLASS = 0x43 + IPV6_TRANSPARENT = 0x4b + IPV6_UNICAST_HOPS = 0x10 + IPV6_UNICAST_IF = 0x4c + IPV6_V6ONLY = 0x1a + IPV6_XFRM_POLICY = 0x23 + IP_ADD_MEMBERSHIP = 0x23 + IP_ADD_SOURCE_MEMBERSHIP = 0x27 + IP_BIND_ADDRESS_NO_PORT = 0x18 + IP_BLOCK_SOURCE = 0x26 + IP_CHECKSUM = 0x17 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0x24 + IP_DROP_SOURCE_MEMBERSHIP = 0x28 + IP_FREEBIND = 0xf + IP_HDRINCL = 0x3 + IP_IPSEC_POLICY = 0x10 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINTTL = 0x15 + IP_MSFILTER = 0x29 + IP_MSS = 0x240 + IP_MTU = 0xe + IP_MTU_DISCOVER = 0xa + IP_MULTICAST_ALL = 0x31 + IP_MULTICAST_IF = 0x20 + IP_MULTICAST_LOOP = 0x22 + IP_MULTICAST_TTL = 0x21 + IP_NODEFRAG = 0x16 + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x4 + IP_ORIGDSTADDR = 0x14 + IP_PASSSEC = 0x12 + IP_PKTINFO = 0x8 + IP_PKTOPTIONS = 0x9 + IP_PMTUDISC = 0xa + IP_PMTUDISC_DO = 0x2 + IP_PMTUDISC_DONT = 0x0 + IP_PMTUDISC_INTERFACE = 0x4 + IP_PMTUDISC_OMIT = 0x5 + IP_PMTUDISC_PROBE = 0x3 + IP_PMTUDISC_WANT = 0x1 + IP_RECVERR = 0xb + IP_RECVFRAGSIZE = 0x19 + IP_RECVOPTS = 0x6 + IP_RECVORIGDSTADDR = 0x14 + IP_RECVRETOPTS = 0x7 + IP_RECVTOS = 0xd + IP_RECVTTL = 0xc + IP_RETOPTS = 0x7 + IP_RF = 0x8000 + IP_ROUTER_ALERT = 0x5 + IP_TOS = 0x1 + IP_TRANSPARENT = 0x13 + IP_TTL = 0x2 + IP_UNBLOCK_SOURCE = 0x25 + IP_UNICAST_IF = 0x32 + IP_XFRM_POLICY = 0x11 + ISIG = 0x1 + ISOFS_SUPER_MAGIC = 0x9660 + ISTRIP = 0x20 + IUCLC = 0x200 + IUTF8 = 0x4000 + IXANY = 0x800 + IXOFF = 0x1000 + IXON = 0x400 + JFFS2_SUPER_MAGIC = 0x72b6 + KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CHOWN = 0x4 + KEYCTL_CLEAR = 0x7 + KEYCTL_DESCRIBE = 0x6 + KEYCTL_DH_COMPUTE = 0x17 + KEYCTL_GET_KEYRING_ID = 0x0 + KEYCTL_GET_PERSISTENT = 0x16 + KEYCTL_GET_SECURITY = 0x11 + KEYCTL_INSTANTIATE = 0xc + KEYCTL_INSTANTIATE_IOV = 0x14 + KEYCTL_INVALIDATE = 0x15 + KEYCTL_JOIN_SESSION_KEYRING = 0x1 + KEYCTL_LINK = 0x8 + KEYCTL_NEGATE = 0xd + KEYCTL_READ = 0xb + KEYCTL_REJECT = 0x13 + KEYCTL_RESTRICT_KEYRING = 0x1d + KEYCTL_REVOKE = 0x3 + KEYCTL_SEARCH = 0xa + KEYCTL_SESSION_TO_PARENT = 0x12 + KEYCTL_SETPERM = 0x5 + KEYCTL_SET_REQKEY_KEYRING = 0xe + KEYCTL_SET_TIMEOUT = 0xf + KEYCTL_UNLINK = 0x9 + KEYCTL_UPDATE = 0x2 + KEY_REQKEY_DEFL_DEFAULT = 0x0 + KEY_REQKEY_DEFL_GROUP_KEYRING = 0x6 + KEY_REQKEY_DEFL_NO_CHANGE = -0x1 + KEY_REQKEY_DEFL_PROCESS_KEYRING = 0x2 + KEY_REQKEY_DEFL_REQUESTOR_KEYRING = 0x7 + KEY_REQKEY_DEFL_SESSION_KEYRING = 0x3 + KEY_REQKEY_DEFL_THREAD_KEYRING = 0x1 + KEY_REQKEY_DEFL_USER_KEYRING = 0x4 + KEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5 + KEY_SPEC_GROUP_KEYRING = -0x6 + KEY_SPEC_PROCESS_KEYRING = -0x2 + KEY_SPEC_REQKEY_AUTH_KEY = -0x7 + KEY_SPEC_REQUESTOR_KEYRING = -0x8 + KEY_SPEC_SESSION_KEYRING = -0x3 + KEY_SPEC_THREAD_KEYRING = -0x1 + KEY_SPEC_USER_KEYRING = -0x4 + KEY_SPEC_USER_SESSION_KEYRING = -0x5 + LINUX_REBOOT_CMD_CAD_OFF = 0x0 + LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef + LINUX_REBOOT_CMD_HALT = 0xcdef0123 + LINUX_REBOOT_CMD_KEXEC = 0x45584543 + LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc + LINUX_REBOOT_CMD_RESTART = 0x1234567 + LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4 + LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2 + LINUX_REBOOT_MAGIC1 = 0xfee1dead + LINUX_REBOOT_MAGIC2 = 0x28121969 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DODUMP = 0x11 + MADV_DOFORK = 0xb + MADV_DONTDUMP = 0x10 + MADV_DONTFORK = 0xa + MADV_DONTNEED = 0x4 + MADV_FREE = 0x8 + MADV_HUGEPAGE = 0xe + MADV_HWPOISON = 0x64 + MADV_KEEPONFORK = 0x13 + MADV_MERGEABLE = 0xc + MADV_NOHUGEPAGE = 0xf + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_REMOVE = 0x9 + MADV_SEQUENTIAL = 0x2 + MADV_UNMERGEABLE = 0xd + MADV_WILLNEED = 0x3 + MADV_WIPEONFORK = 0x12 + MAP_ANON = 0x20 + MAP_ANONYMOUS = 0x20 + MAP_DENYWRITE = 0x800 + MAP_EXECUTABLE = 0x1000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_FIXED_NOREPLACE = 0x100000 + MAP_GROWSDOWN = 0x100 + MAP_HUGETLB = 0x40000 + MAP_HUGE_MASK = 0x3f + MAP_HUGE_SHIFT = 0x1a + MAP_LOCKED = 0x2000 + MAP_NONBLOCK = 0x10000 + MAP_NORESERVE = 0x4000 + MAP_POPULATE = 0x8000 + MAP_PRIVATE = 0x2 + MAP_SHARED = 0x1 + MAP_SHARED_VALIDATE = 0x3 + MAP_STACK = 0x20000 + MAP_SYNC = 0x80000 + MAP_TYPE = 0xf + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MCL_ONFAULT = 0x4 + MINIX2_SUPER_MAGIC = 0x2468 + MINIX2_SUPER_MAGIC2 = 0x2478 + MINIX3_SUPER_MAGIC = 0x4d5a + MINIX_SUPER_MAGIC = 0x137f + MINIX_SUPER_MAGIC2 = 0x138f + MNT_DETACH = 0x2 + MNT_EXPIRE = 0x4 + MNT_FORCE = 0x1 + MSDOS_SUPER_MAGIC = 0x4d44 + MSG_BATCH = 0x40000 + MSG_CMSG_CLOEXEC = 0x40000000 + MSG_CONFIRM = 0x800 + MSG_CTRUNC = 0x8 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x40 + MSG_EOR = 0x80 + MSG_ERRQUEUE = 0x2000 + MSG_FASTOPEN = 0x20000000 + MSG_FIN = 0x200 + MSG_MORE = 0x8000 + MSG_NOSIGNAL = 0x4000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_PROXY = 0x10 + MSG_RST = 0x1000 + MSG_SYN = 0x400 + MSG_TRUNC = 0x20 + MSG_TRYHARD = 0x4 + MSG_WAITALL = 0x100 + MSG_WAITFORONE = 0x10000 + MSG_ZEROCOPY = 0x4000000 + MS_ACTIVE = 0x40000000 + MS_ASYNC = 0x1 + MS_BIND = 0x1000 + MS_BORN = 0x20000000 + MS_DIRSYNC = 0x80 + MS_INVALIDATE = 0x2 + MS_I_VERSION = 0x800000 + MS_KERNMOUNT = 0x400000 + MS_LAZYTIME = 0x2000000 + MS_MANDLOCK = 0x40 + MS_MGC_MSK = 0xffff0000 + MS_MGC_VAL = 0xc0ed0000 + MS_MOVE = 0x2000 + MS_NOATIME = 0x400 + MS_NODEV = 0x4 + MS_NODIRATIME = 0x800 + MS_NOEXEC = 0x8 + MS_NOREMOTELOCK = 0x8000000 + MS_NOSEC = 0x10000000 + MS_NOSUID = 0x2 + MS_NOUSER = -0x80000000 + MS_POSIXACL = 0x10000 + MS_PRIVATE = 0x40000 + MS_RDONLY = 0x1 + MS_REC = 0x4000 + MS_RELATIME = 0x200000 + MS_REMOUNT = 0x20 + MS_RMT_MASK = 0x2800051 + MS_SHARED = 0x100000 + MS_SILENT = 0x8000 + MS_SLAVE = 0x80000 + MS_STRICTATIME = 0x1000000 + MS_SUBMOUNT = 0x4000000 + MS_SYNC = 0x4 + MS_SYNCHRONOUS = 0x10 + MS_UNBINDABLE = 0x20000 + MS_VERBOSE = 0x8000 + MTD_INODE_FS_MAGIC = 0x11307854 + NAME_MAX = 0xff + NCP_SUPER_MAGIC = 0x564c + NETLINK_ADD_MEMBERSHIP = 0x1 + NETLINK_AUDIT = 0x9 + NETLINK_BROADCAST_ERROR = 0x4 + NETLINK_CAP_ACK = 0xa + NETLINK_CONNECTOR = 0xb + NETLINK_CRYPTO = 0x15 + NETLINK_DNRTMSG = 0xe + NETLINK_DROP_MEMBERSHIP = 0x2 + NETLINK_ECRYPTFS = 0x13 + NETLINK_EXT_ACK = 0xb + NETLINK_FIB_LOOKUP = 0xa + NETLINK_FIREWALL = 0x3 + NETLINK_GENERIC = 0x10 + NETLINK_INET_DIAG = 0x4 + NETLINK_IP6_FW = 0xd + NETLINK_ISCSI = 0x8 + NETLINK_KOBJECT_UEVENT = 0xf + NETLINK_LISTEN_ALL_NSID = 0x8 + NETLINK_LIST_MEMBERSHIPS = 0x9 + NETLINK_NETFILTER = 0xc + NETLINK_NFLOG = 0x5 + NETLINK_NO_ENOBUFS = 0x5 + NETLINK_PKTINFO = 0x3 + NETLINK_RDMA = 0x14 + NETLINK_ROUTE = 0x0 + NETLINK_RX_RING = 0x6 + NETLINK_SCSITRANSPORT = 0x12 + NETLINK_SELINUX = 0x7 + NETLINK_SMC = 0x16 + NETLINK_SOCK_DIAG = 0x4 + NETLINK_TX_RING = 0x7 + NETLINK_UNUSED = 0x1 + NETLINK_USERSOCK = 0x2 + NETLINK_XFRM = 0x6 + NETNSA_MAX = 0x3 + NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFNETLINK_V0 = 0x0 + NFNLGRP_ACCT_QUOTA = 0x8 + NFNLGRP_CONNTRACK_DESTROY = 0x3 + NFNLGRP_CONNTRACK_EXP_DESTROY = 0x6 + NFNLGRP_CONNTRACK_EXP_NEW = 0x4 + NFNLGRP_CONNTRACK_EXP_UPDATE = 0x5 + NFNLGRP_CONNTRACK_NEW = 0x1 + NFNLGRP_CONNTRACK_UPDATE = 0x2 + NFNLGRP_MAX = 0x9 + NFNLGRP_NFTABLES = 0x7 + NFNLGRP_NFTRACE = 0x9 + NFNLGRP_NONE = 0x0 + NFNL_BATCH_MAX = 0x1 + NFNL_MSG_BATCH_BEGIN = 0x10 + NFNL_MSG_BATCH_END = 0x11 + NFNL_NFA_NEST = 0x8000 + NFNL_SUBSYS_ACCT = 0x7 + NFNL_SUBSYS_COUNT = 0xc + NFNL_SUBSYS_CTHELPER = 0x9 + NFNL_SUBSYS_CTNETLINK = 0x1 + NFNL_SUBSYS_CTNETLINK_EXP = 0x2 + NFNL_SUBSYS_CTNETLINK_TIMEOUT = 0x8 + NFNL_SUBSYS_IPSET = 0x6 + NFNL_SUBSYS_NFTABLES = 0xa + NFNL_SUBSYS_NFT_COMPAT = 0xb + NFNL_SUBSYS_NONE = 0x0 + NFNL_SUBSYS_OSF = 0x5 + NFNL_SUBSYS_QUEUE = 0x3 + NFNL_SUBSYS_ULOG = 0x4 + NFS_SUPER_MAGIC = 0x6969 + NILFS_SUPER_MAGIC = 0x3434 + NL0 = 0x0 + NL1 = 0x100 + NLA_ALIGNTO = 0x4 + NLA_F_NESTED = 0x8000 + NLA_F_NET_BYTEORDER = 0x4000 + NLA_HDRLEN = 0x4 + NLDLY = 0x100 + NLMSG_ALIGNTO = 0x4 + NLMSG_DONE = 0x3 + NLMSG_ERROR = 0x2 + NLMSG_HDRLEN = 0x10 + NLMSG_MIN_TYPE = 0x10 + NLMSG_NOOP = 0x1 + NLMSG_OVERRUN = 0x4 + NLM_F_ACK = 0x4 + NLM_F_ACK_TLVS = 0x200 + NLM_F_APPEND = 0x800 + NLM_F_ATOMIC = 0x400 + NLM_F_CAPPED = 0x100 + NLM_F_CREATE = 0x400 + NLM_F_DUMP = 0x300 + NLM_F_DUMP_FILTERED = 0x20 + NLM_F_DUMP_INTR = 0x10 + NLM_F_ECHO = 0x8 + NLM_F_EXCL = 0x200 + NLM_F_MATCH = 0x200 + NLM_F_MULTI = 0x2 + NLM_F_NONREC = 0x100 + NLM_F_REPLACE = 0x100 + NLM_F_REQUEST = 0x1 + NLM_F_ROOT = 0x100 + NOFLSH = 0x80 + NSFS_MAGIC = 0x6e736673 + OCFS2_SUPER_MAGIC = 0x7461636f + OCRNL = 0x8 + OFDEL = 0x80 + OFILL = 0x40 + OLCUC = 0x2 + ONLCR = 0x4 + ONLRET = 0x20 + ONOCR = 0x10 + OPENPROM_SUPER_MAGIC = 0x9fa1 + OPOST = 0x1 + OVERLAYFS_SUPER_MAGIC = 0x794c7630 + O_ACCMODE = 0x3 + O_APPEND = 0x400 + O_ASYNC = 0x2000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x40 + O_DIRECT = 0x4000 + O_DIRECTORY = 0x10000 + O_DSYNC = 0x1000 + O_EXCL = 0x80 + O_FSYNC = 0x101000 + O_LARGEFILE = 0x0 + O_NDELAY = 0x800 + O_NOATIME = 0x40000 + O_NOCTTY = 0x100 + O_NOFOLLOW = 0x20000 + O_NONBLOCK = 0x800 + O_PATH = 0x200000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x101000 + O_SYNC = 0x101000 + O_TMPFILE = 0x410000 + O_TRUNC = 0x200 + O_WRONLY = 0x1 + PACKET_ADD_MEMBERSHIP = 0x1 + PACKET_AUXDATA = 0x8 + PACKET_BROADCAST = 0x1 + PACKET_COPY_THRESH = 0x7 + PACKET_DROP_MEMBERSHIP = 0x2 + PACKET_FANOUT = 0x12 + PACKET_FANOUT_CBPF = 0x6 + PACKET_FANOUT_CPU = 0x2 + PACKET_FANOUT_DATA = 0x16 + PACKET_FANOUT_EBPF = 0x7 + PACKET_FANOUT_FLAG_DEFRAG = 0x8000 + PACKET_FANOUT_FLAG_ROLLOVER = 0x1000 + PACKET_FANOUT_FLAG_UNIQUEID = 0x2000 + PACKET_FANOUT_HASH = 0x0 + PACKET_FANOUT_LB = 0x1 + PACKET_FANOUT_QM = 0x5 + PACKET_FANOUT_RND = 0x4 + PACKET_FANOUT_ROLLOVER = 0x3 + PACKET_FASTROUTE = 0x6 + PACKET_HDRLEN = 0xb + PACKET_HOST = 0x0 + PACKET_KERNEL = 0x7 + PACKET_LOOPBACK = 0x5 + PACKET_LOSS = 0xe + PACKET_MR_ALLMULTI = 0x2 + PACKET_MR_MULTICAST = 0x0 + PACKET_MR_PROMISC = 0x1 + PACKET_MR_UNICAST = 0x3 + PACKET_MULTICAST = 0x2 + PACKET_ORIGDEV = 0x9 + PACKET_OTHERHOST = 0x3 + PACKET_OUTGOING = 0x4 + PACKET_QDISC_BYPASS = 0x14 + PACKET_RECV_OUTPUT = 0x3 + PACKET_RESERVE = 0xc + PACKET_ROLLOVER_STATS = 0x15 + PACKET_RX_RING = 0x5 + PACKET_STATISTICS = 0x6 + PACKET_TIMESTAMP = 0x11 + PACKET_TX_HAS_OFF = 0x13 + PACKET_TX_RING = 0xd + PACKET_TX_TIMESTAMP = 0x10 + PACKET_USER = 0x6 + PACKET_VERSION = 0xa + PACKET_VNET_HDR = 0xf + PARENB = 0x100 + PARITY_CRC16_PR0 = 0x2 + PARITY_CRC16_PR0_CCITT = 0x4 + PARITY_CRC16_PR1 = 0x3 + PARITY_CRC16_PR1_CCITT = 0x5 + PARITY_CRC32_PR0_CCITT = 0x6 + PARITY_CRC32_PR1_CCITT = 0x7 + PARITY_DEFAULT = 0x0 + PARITY_NONE = 0x1 + PARMRK = 0x8 + PARODD = 0x200 + PENDIN = 0x4000 + PERF_EVENT_IOC_DISABLE = 0x2401 + PERF_EVENT_IOC_ENABLE = 0x2400 + PERF_EVENT_IOC_ID = 0x80082407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4008240b + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x40042409 + PERF_EVENT_IOC_PERIOD = 0x40082404 + PERF_EVENT_IOC_QUERY_BPF = 0xc008240a + PERF_EVENT_IOC_REFRESH = 0x2402 + PERF_EVENT_IOC_RESET = 0x2403 + PERF_EVENT_IOC_SET_BPF = 0x40042408 + PERF_EVENT_IOC_SET_FILTER = 0x40082406 + PERF_EVENT_IOC_SET_OUTPUT = 0x2405 + PIPEFS_MAGIC = 0x50495045 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROC_SUPER_MAGIC = 0x9fa0 + PROT_EXEC = 0x4 + PROT_GROWSDOWN = 0x1000000 + PROT_GROWSUP = 0x2000000 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PR_CAPBSET_DROP = 0x18 + PR_CAPBSET_READ = 0x17 + PR_CAP_AMBIENT = 0x2f + PR_CAP_AMBIENT_CLEAR_ALL = 0x4 + PR_CAP_AMBIENT_IS_SET = 0x1 + PR_CAP_AMBIENT_LOWER = 0x3 + PR_CAP_AMBIENT_RAISE = 0x2 + PR_ENDIAN_BIG = 0x0 + PR_ENDIAN_LITTLE = 0x1 + PR_ENDIAN_PPC_LITTLE = 0x2 + PR_FPEMU_NOPRINT = 0x1 + PR_FPEMU_SIGFPE = 0x2 + PR_FP_EXC_ASYNC = 0x2 + PR_FP_EXC_DISABLED = 0x0 + PR_FP_EXC_DIV = 0x10000 + PR_FP_EXC_INV = 0x100000 + PR_FP_EXC_NONRECOV = 0x1 + PR_FP_EXC_OVF = 0x20000 + PR_FP_EXC_PRECISE = 0x3 + PR_FP_EXC_RES = 0x80000 + PR_FP_EXC_SW_ENABLE = 0x80 + PR_FP_EXC_UND = 0x40000 + PR_FP_MODE_FR = 0x1 + PR_FP_MODE_FRE = 0x2 + PR_GET_CHILD_SUBREAPER = 0x25 + PR_GET_DUMPABLE = 0x3 + PR_GET_ENDIAN = 0x13 + PR_GET_FPEMU = 0x9 + PR_GET_FPEXC = 0xb + PR_GET_FP_MODE = 0x2e + PR_GET_KEEPCAPS = 0x7 + PR_GET_NAME = 0x10 + PR_GET_NO_NEW_PRIVS = 0x27 + PR_GET_PDEATHSIG = 0x2 + PR_GET_SECCOMP = 0x15 + PR_GET_SECUREBITS = 0x1b + PR_GET_SPECULATION_CTRL = 0x34 + PR_GET_THP_DISABLE = 0x2a + PR_GET_TID_ADDRESS = 0x28 + PR_GET_TIMERSLACK = 0x1e + PR_GET_TIMING = 0xd + PR_GET_TSC = 0x19 + PR_GET_UNALIGN = 0x5 + PR_MCE_KILL = 0x21 + PR_MCE_KILL_CLEAR = 0x0 + PR_MCE_KILL_DEFAULT = 0x2 + PR_MCE_KILL_EARLY = 0x1 + PR_MCE_KILL_GET = 0x22 + PR_MCE_KILL_LATE = 0x0 + PR_MCE_KILL_SET = 0x1 + PR_MPX_DISABLE_MANAGEMENT = 0x2c + PR_MPX_ENABLE_MANAGEMENT = 0x2b + PR_SET_CHILD_SUBREAPER = 0x24 + PR_SET_DUMPABLE = 0x4 + PR_SET_ENDIAN = 0x14 + PR_SET_FPEMU = 0xa + PR_SET_FPEXC = 0xc + PR_SET_FP_MODE = 0x2d + PR_SET_KEEPCAPS = 0x8 + PR_SET_MM = 0x23 + PR_SET_MM_ARG_END = 0x9 + PR_SET_MM_ARG_START = 0x8 + PR_SET_MM_AUXV = 0xc + PR_SET_MM_BRK = 0x7 + PR_SET_MM_END_CODE = 0x2 + PR_SET_MM_END_DATA = 0x4 + PR_SET_MM_ENV_END = 0xb + PR_SET_MM_ENV_START = 0xa + PR_SET_MM_EXE_FILE = 0xd + PR_SET_MM_MAP = 0xe + PR_SET_MM_MAP_SIZE = 0xf + PR_SET_MM_START_BRK = 0x6 + PR_SET_MM_START_CODE = 0x1 + PR_SET_MM_START_DATA = 0x3 + PR_SET_MM_START_STACK = 0x5 + PR_SET_NAME = 0xf + PR_SET_NO_NEW_PRIVS = 0x26 + PR_SET_PDEATHSIG = 0x1 + PR_SET_PTRACER = 0x59616d61 + PR_SET_PTRACER_ANY = 0xffffffffffffffff + PR_SET_SECCOMP = 0x16 + PR_SET_SECUREBITS = 0x1c + PR_SET_SPECULATION_CTRL = 0x35 + PR_SET_THP_DISABLE = 0x29 + PR_SET_TIMERSLACK = 0x1d + PR_SET_TIMING = 0xe + PR_SET_TSC = 0x1a + PR_SET_UNALIGN = 0x6 + PR_SPEC_DISABLE = 0x4 + PR_SPEC_ENABLE = 0x2 + PR_SPEC_FORCE_DISABLE = 0x8 + PR_SPEC_NOT_AFFECTED = 0x0 + PR_SPEC_PRCTL = 0x1 + PR_SPEC_STORE_BYPASS = 0x0 + PR_SVE_GET_VL = 0x33 + PR_SVE_SET_VL = 0x32 + PR_SVE_SET_VL_ONEXEC = 0x40000 + PR_SVE_VL_INHERIT = 0x20000 + PR_SVE_VL_LEN_MASK = 0xffff + PR_TASK_PERF_EVENTS_DISABLE = 0x1f + PR_TASK_PERF_EVENTS_ENABLE = 0x20 + PR_TIMING_STATISTICAL = 0x0 + PR_TIMING_TIMESTAMP = 0x1 + PR_TSC_ENABLE = 0x1 + PR_TSC_SIGSEGV = 0x2 + PR_UNALIGN_NOPRINT = 0x1 + PR_UNALIGN_SIGBUS = 0x2 + PSTOREFS_MAGIC = 0x6165676c + PTRACE_ATTACH = 0x10 + PTRACE_CONT = 0x7 + PTRACE_DETACH = 0x11 + PTRACE_EVENT_CLONE = 0x3 + PTRACE_EVENT_EXEC = 0x4 + PTRACE_EVENT_EXIT = 0x6 + PTRACE_EVENT_FORK = 0x1 + PTRACE_EVENT_SECCOMP = 0x7 + PTRACE_EVENT_STOP = 0x80 + PTRACE_EVENT_VFORK = 0x2 + PTRACE_EVENT_VFORK_DONE = 0x5 + PTRACE_GETEVENTMSG = 0x4201 + PTRACE_GETREGS = 0xc + PTRACE_GETREGSET = 0x4204 + PTRACE_GETSIGINFO = 0x4202 + PTRACE_GETSIGMASK = 0x420a + PTRACE_INTERRUPT = 0x4207 + PTRACE_KILL = 0x8 + PTRACE_LISTEN = 0x4208 + PTRACE_O_EXITKILL = 0x100000 + PTRACE_O_MASK = 0x3000ff + PTRACE_O_SUSPEND_SECCOMP = 0x200000 + PTRACE_O_TRACECLONE = 0x8 + PTRACE_O_TRACEEXEC = 0x10 + PTRACE_O_TRACEEXIT = 0x40 + PTRACE_O_TRACEFORK = 0x2 + PTRACE_O_TRACESECCOMP = 0x80 + PTRACE_O_TRACESYSGOOD = 0x1 + PTRACE_O_TRACEVFORK = 0x4 + PTRACE_O_TRACEVFORKDONE = 0x20 + PTRACE_PEEKDATA = 0x2 + PTRACE_PEEKSIGINFO = 0x4209 + PTRACE_PEEKSIGINFO_SHARED = 0x1 + PTRACE_PEEKTEXT = 0x1 + PTRACE_PEEKUSR = 0x3 + PTRACE_POKEDATA = 0x5 + PTRACE_POKETEXT = 0x4 + PTRACE_POKEUSR = 0x6 + PTRACE_SECCOMP_GET_FILTER = 0x420c + PTRACE_SECCOMP_GET_METADATA = 0x420d + PTRACE_SEIZE = 0x4206 + PTRACE_SETOPTIONS = 0x4200 + PTRACE_SETREGS = 0xd + PTRACE_SETREGSET = 0x4205 + PTRACE_SETSIGINFO = 0x4203 + PTRACE_SETSIGMASK = 0x420b + PTRACE_SINGLESTEP = 0x9 + PTRACE_SYSCALL = 0x18 + PTRACE_TRACEME = 0x0 + QNX4_SUPER_MAGIC = 0x2f + QNX6_SUPER_MAGIC = 0x68191122 + RAMFS_MAGIC = 0x858458f6 + RDTGROUP_SUPER_MAGIC = 0x7655821 + REISERFS_SUPER_MAGIC = 0x52654973 + RENAME_EXCHANGE = 0x2 + RENAME_NOREPLACE = 0x1 + RENAME_WHITEOUT = 0x4 + RLIMIT_AS = 0x9 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_LOCKS = 0xa + RLIMIT_MEMLOCK = 0x8 + RLIMIT_MSGQUEUE = 0xc + RLIMIT_NICE = 0xd + RLIMIT_NOFILE = 0x7 + RLIMIT_NPROC = 0x6 + RLIMIT_RSS = 0x5 + RLIMIT_RTPRIO = 0xe + RLIMIT_RTTIME = 0xf + RLIMIT_SIGPENDING = 0xb + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0xffffffffffffffff + RTAX_ADVMSS = 0x8 + RTAX_CC_ALGO = 0x10 + RTAX_CWND = 0x7 + RTAX_FASTOPEN_NO_COOKIE = 0x11 + RTAX_FEATURES = 0xc + RTAX_FEATURE_ALLFRAG = 0x8 + RTAX_FEATURE_ECN = 0x1 + RTAX_FEATURE_MASK = 0xf + RTAX_FEATURE_SACK = 0x2 + RTAX_FEATURE_TIMESTAMP = 0x4 + RTAX_HOPLIMIT = 0xa + RTAX_INITCWND = 0xb + RTAX_INITRWND = 0xe + RTAX_LOCK = 0x1 + RTAX_MAX = 0x11 + RTAX_MTU = 0x2 + RTAX_QUICKACK = 0xf + RTAX_REORDERING = 0x9 + RTAX_RTO_MIN = 0xd + RTAX_RTT = 0x4 + RTAX_RTTVAR = 0x5 + RTAX_SSTHRESH = 0x6 + RTAX_UNSPEC = 0x0 + RTAX_WINDOW = 0x3 + RTA_ALIGNTO = 0x4 + RTA_MAX = 0x1d + RTCF_DIRECTSRC = 0x4000000 + RTCF_DOREDIRECT = 0x1000000 + RTCF_LOG = 0x2000000 + RTCF_MASQ = 0x400000 + RTCF_NAT = 0x800000 + RTCF_VALVE = 0x200000 + RTC_AF = 0x20 + RTC_AIE_OFF = 0x7002 + RTC_AIE_ON = 0x7001 + RTC_ALM_READ = 0x80247008 + RTC_ALM_SET = 0x40247007 + RTC_EPOCH_READ = 0x8008700d + RTC_EPOCH_SET = 0x4008700e + RTC_IRQF = 0x80 + RTC_IRQP_READ = 0x8008700b + RTC_IRQP_SET = 0x4008700c + RTC_MAX_FREQ = 0x2000 + RTC_PF = 0x40 + RTC_PIE_OFF = 0x7006 + RTC_PIE_ON = 0x7005 + RTC_PLL_GET = 0x80207011 + RTC_PLL_SET = 0x40207012 + RTC_RD_TIME = 0x80247009 + RTC_SET_TIME = 0x4024700a + RTC_UF = 0x10 + RTC_UIE_OFF = 0x7004 + RTC_UIE_ON = 0x7003 + RTC_VL_CLR = 0x7014 + RTC_VL_READ = 0x80047013 + RTC_WIE_OFF = 0x7010 + RTC_WIE_ON = 0x700f + RTC_WKALM_RD = 0x80287010 + RTC_WKALM_SET = 0x4028700f + RTF_ADDRCLASSMASK = 0xf8000000 + RTF_ADDRCONF = 0x40000 + RTF_ALLONLINK = 0x20000 + RTF_BROADCAST = 0x10000000 + RTF_CACHE = 0x1000000 + RTF_DEFAULT = 0x10000 + RTF_DYNAMIC = 0x10 + RTF_FLOW = 0x2000000 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_INTERFACE = 0x40000000 + RTF_IRTT = 0x100 + RTF_LINKRT = 0x100000 + RTF_LOCAL = 0x80000000 + RTF_MODIFIED = 0x20 + RTF_MSS = 0x40 + RTF_MTU = 0x40 + RTF_MULTICAST = 0x20000000 + RTF_NAT = 0x8000000 + RTF_NOFORWARD = 0x1000 + RTF_NONEXTHOP = 0x200000 + RTF_NOPMTUDISC = 0x4000 + RTF_POLICY = 0x4000000 + RTF_REINSTATE = 0x8 + RTF_REJECT = 0x200 + RTF_STATIC = 0x400 + RTF_THROW = 0x2000 + RTF_UP = 0x1 + RTF_WINDOW = 0x80 + RTF_XRESOLVE = 0x800 + RTM_BASE = 0x10 + RTM_DELACTION = 0x31 + RTM_DELADDR = 0x15 + RTM_DELADDRLABEL = 0x49 + RTM_DELLINK = 0x11 + RTM_DELMDB = 0x55 + RTM_DELNEIGH = 0x1d + RTM_DELNETCONF = 0x51 + RTM_DELNSID = 0x59 + RTM_DELQDISC = 0x25 + RTM_DELROUTE = 0x19 + RTM_DELRULE = 0x21 + RTM_DELTCLASS = 0x29 + RTM_DELTFILTER = 0x2d + RTM_F_CLONED = 0x200 + RTM_F_EQUALIZE = 0x400 + RTM_F_FIB_MATCH = 0x2000 + RTM_F_LOOKUP_TABLE = 0x1000 + RTM_F_NOTIFY = 0x100 + RTM_F_PREFIX = 0x800 + RTM_GETACTION = 0x32 + RTM_GETADDR = 0x16 + RTM_GETADDRLABEL = 0x4a + RTM_GETANYCAST = 0x3e + RTM_GETDCB = 0x4e + RTM_GETLINK = 0x12 + RTM_GETMDB = 0x56 + RTM_GETMULTICAST = 0x3a + RTM_GETNEIGH = 0x1e + RTM_GETNEIGHTBL = 0x42 + RTM_GETNETCONF = 0x52 + RTM_GETNSID = 0x5a + RTM_GETQDISC = 0x26 + RTM_GETROUTE = 0x1a + RTM_GETRULE = 0x22 + RTM_GETSTATS = 0x5e + RTM_GETTCLASS = 0x2a + RTM_GETTFILTER = 0x2e + RTM_MAX = 0x63 + RTM_NEWACTION = 0x30 + RTM_NEWADDR = 0x14 + RTM_NEWADDRLABEL = 0x48 + RTM_NEWCACHEREPORT = 0x60 + RTM_NEWLINK = 0x10 + RTM_NEWMDB = 0x54 + RTM_NEWNDUSEROPT = 0x44 + RTM_NEWNEIGH = 0x1c + RTM_NEWNEIGHTBL = 0x40 + RTM_NEWNETCONF = 0x50 + RTM_NEWNSID = 0x58 + RTM_NEWPREFIX = 0x34 + RTM_NEWQDISC = 0x24 + RTM_NEWROUTE = 0x18 + RTM_NEWRULE = 0x20 + RTM_NEWSTATS = 0x5c + RTM_NEWTCLASS = 0x28 + RTM_NEWTFILTER = 0x2c + RTM_NR_FAMILIES = 0x15 + RTM_NR_MSGTYPES = 0x54 + RTM_SETDCB = 0x4f + RTM_SETLINK = 0x13 + RTM_SETNEIGHTBL = 0x43 + RTNH_ALIGNTO = 0x4 + RTNH_COMPARE_MASK = 0x19 + RTNH_F_DEAD = 0x1 + RTNH_F_LINKDOWN = 0x10 + RTNH_F_OFFLOAD = 0x8 + RTNH_F_ONLINK = 0x4 + RTNH_F_PERVASIVE = 0x2 + RTNH_F_UNRESOLVED = 0x20 + RTN_MAX = 0xb + RTPROT_BABEL = 0x2a + RTPROT_BGP = 0xba + RTPROT_BIRD = 0xc + RTPROT_BOOT = 0x3 + RTPROT_DHCP = 0x10 + RTPROT_DNROUTED = 0xd + RTPROT_EIGRP = 0xc0 + RTPROT_GATED = 0x8 + RTPROT_ISIS = 0xbb + RTPROT_KERNEL = 0x2 + RTPROT_MROUTED = 0x11 + RTPROT_MRT = 0xa + RTPROT_NTK = 0xf + RTPROT_OSPF = 0xbc + RTPROT_RA = 0x9 + RTPROT_REDIRECT = 0x1 + RTPROT_RIP = 0xbd + RTPROT_STATIC = 0x4 + RTPROT_UNSPEC = 0x0 + RTPROT_XORP = 0xe + RTPROT_ZEBRA = 0xb + RT_CLASS_DEFAULT = 0xfd + RT_CLASS_LOCAL = 0xff + RT_CLASS_MAIN = 0xfe + RT_CLASS_MAX = 0xff + RT_CLASS_UNSPEC = 0x0 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_CREDENTIALS = 0x2 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x1d + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a + SCM_TIMESTAMPNS = 0x23 + SCM_WIFI_STATUS = 0x29 + SECCOMP_MODE_DISABLED = 0x0 + SECCOMP_MODE_FILTER = 0x2 + SECCOMP_MODE_STRICT = 0x1 + SECURITYFS_MAGIC = 0x73636673 + SELINUX_MAGIC = 0xf97cff8c + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDDLCI = 0x8980 + SIOCADDMULTI = 0x8931 + SIOCADDRT = 0x890b + SIOCATMARK = 0x8905 + SIOCBONDCHANGEACTIVE = 0x8995 + SIOCBONDENSLAVE = 0x8990 + SIOCBONDINFOQUERY = 0x8994 + SIOCBONDRELEASE = 0x8991 + SIOCBONDSETHWADDR = 0x8992 + SIOCBONDSLAVEINFOQUERY = 0x8993 + SIOCBRADDBR = 0x89a0 + SIOCBRADDIF = 0x89a2 + SIOCBRDELBR = 0x89a1 + SIOCBRDELIF = 0x89a3 + SIOCDARP = 0x8953 + SIOCDELDLCI = 0x8981 + SIOCDELMULTI = 0x8932 + SIOCDELRT = 0x890c + SIOCDEVPRIVATE = 0x89f0 + SIOCDIFADDR = 0x8936 + SIOCDRARP = 0x8960 + SIOCETHTOOL = 0x8946 + SIOCGARP = 0x8954 + SIOCGHWTSTAMP = 0x89b1 + SIOCGIFADDR = 0x8915 + SIOCGIFBR = 0x8940 + SIOCGIFBRDADDR = 0x8919 + SIOCGIFCONF = 0x8912 + SIOCGIFCOUNT = 0x8938 + SIOCGIFDSTADDR = 0x8917 + SIOCGIFENCAP = 0x8925 + SIOCGIFFLAGS = 0x8913 + SIOCGIFHWADDR = 0x8927 + SIOCGIFINDEX = 0x8933 + SIOCGIFMAP = 0x8970 + SIOCGIFMEM = 0x891f + SIOCGIFMETRIC = 0x891d + SIOCGIFMTU = 0x8921 + SIOCGIFNAME = 0x8910 + SIOCGIFNETMASK = 0x891b + SIOCGIFPFLAGS = 0x8935 + SIOCGIFSLAVE = 0x8929 + SIOCGIFTXQLEN = 0x8942 + SIOCGIFVLAN = 0x8982 + SIOCGMIIPHY = 0x8947 + SIOCGMIIREG = 0x8948 + SIOCGPGRP = 0x8904 + SIOCGRARP = 0x8961 + SIOCGSKNS = 0x894c + SIOCGSTAMP = 0x8906 + SIOCGSTAMPNS = 0x8907 + SIOCINQ = 0x541b + SIOCOUTQ = 0x5411 + SIOCOUTQNSD = 0x894b + SIOCPROTOPRIVATE = 0x89e0 + SIOCRTMSG = 0x890d + SIOCSARP = 0x8955 + SIOCSHWTSTAMP = 0x89b0 + SIOCSIFADDR = 0x8916 + SIOCSIFBR = 0x8941 + SIOCSIFBRDADDR = 0x891a + SIOCSIFDSTADDR = 0x8918 + SIOCSIFENCAP = 0x8926 + SIOCSIFFLAGS = 0x8914 + SIOCSIFHWADDR = 0x8924 + SIOCSIFHWBROADCAST = 0x8937 + SIOCSIFLINK = 0x8911 + SIOCSIFMAP = 0x8971 + SIOCSIFMEM = 0x8920 + SIOCSIFMETRIC = 0x891e + SIOCSIFMTU = 0x8922 + SIOCSIFNAME = 0x8923 + SIOCSIFNETMASK = 0x891c + SIOCSIFPFLAGS = 0x8934 + SIOCSIFSLAVE = 0x8930 + SIOCSIFTXQLEN = 0x8943 + SIOCSIFVLAN = 0x8983 + SIOCSMIIREG = 0x8949 + SIOCSPGRP = 0x8902 + SIOCSRARP = 0x8962 + SIOCWANDEV = 0x894a + SMACK_MAGIC = 0x43415d53 + SMART_AUTOSAVE = 0xd2 + SMART_AUTO_OFFLINE = 0xdb + SMART_DISABLE = 0xd9 + SMART_ENABLE = 0xd8 + SMART_HCYL_PASS = 0xc2 + SMART_IMMEDIATE_OFFLINE = 0xd4 + SMART_LCYL_PASS = 0x4f + SMART_READ_LOG_SECTOR = 0xd5 + SMART_READ_THRESHOLDS = 0xd1 + SMART_READ_VALUES = 0xd0 + SMART_SAVE = 0xd3 + SMART_STATUS = 0xda + SMART_WRITE_LOG_SECTOR = 0xd6 + SMART_WRITE_THRESHOLDS = 0xd7 + SMB_SUPER_MAGIC = 0x517b + SOCKFS_MAGIC = 0x534f434b + SOCK_CLOEXEC = 0x80000 + SOCK_DCCP = 0x6 + SOCK_DGRAM = 0x2 + SOCK_IOC_TYPE = 0x89 + SOCK_NONBLOCK = 0x800 + SOCK_PACKET = 0xa + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_AAL = 0x109 + SOL_ALG = 0x117 + SOL_ATM = 0x108 + SOL_CAIF = 0x116 + SOL_CAN_BASE = 0x64 + SOL_DCCP = 0x10d + SOL_DECNET = 0x105 + SOL_ICMPV6 = 0x3a + SOL_IP = 0x0 + SOL_IPV6 = 0x29 + SOL_IRDA = 0x10a + SOL_IUCV = 0x115 + SOL_KCM = 0x119 + SOL_LLC = 0x10c + SOL_NETBEUI = 0x10b + SOL_NETLINK = 0x10e + SOL_NFC = 0x118 + SOL_PACKET = 0x107 + SOL_PNPIPE = 0x113 + SOL_PPPOL2TP = 0x111 + SOL_RAW = 0xff + SOL_RDS = 0x114 + SOL_RXRPC = 0x110 + SOL_SOCKET = 0x1 + SOL_TCP = 0x6 + SOL_TIPC = 0x10f + SOL_TLS = 0x11a + SOL_X25 = 0x106 + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x1e + SO_ATTACH_BPF = 0x32 + SO_ATTACH_FILTER = 0x1a + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x6 + SO_BSDCOMPAT = 0xe + SO_BUSY_POLL = 0x2e + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DEBUG = 0x1 + SO_DETACH_BPF = 0x1b + SO_DETACH_FILTER = 0x1b + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_ERROR = 0x4 + SO_GET_FILTER = 0x1a + SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 + SO_KEEPALIVE = 0x9 + SO_LINGER = 0xd + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 + SO_NOFCS = 0x2b + SO_NO_CHECK = 0xb + SO_OOBINLINE = 0xa + SO_PASSCRED = 0x10 + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x11 + SO_PEERGROUPS = 0x3b + SO_PEERNAME = 0x1c + SO_PEERSEC = 0x1f + SO_PRIORITY = 0xc + SO_PROTOCOL = 0x26 + SO_RCVBUF = 0x8 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x12 + SO_RCVTIMEO = 0x14 + SO_REUSEADDR = 0x2 + SO_REUSEPORT = 0xf + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x7 + SO_SNDBUFFORCE = 0x20 + SO_SNDLOWAT = 0x13 + SO_SNDTIMEO = 0x15 + SO_TIMESTAMP = 0x1d + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TYPE = 0x3 + SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 + SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1 + SO_VM_SOCKETS_BUFFER_SIZE = 0x0 + SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6 + SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7 + SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3 + SO_VM_SOCKETS_TRUSTED = 0x5 + SO_WIFI_STATUS = 0x29 + SO_ZEROCOPY = 0x3c + SPLICE_F_GIFT = 0x8 + SPLICE_F_MORE = 0x4 + SPLICE_F_MOVE = 0x1 + SPLICE_F_NONBLOCK = 0x2 + SQUASHFS_MAGIC = 0x73717368 + STACK_END_MAGIC = 0x57ac6e9d + STATX_ALL = 0xfff + STATX_ATIME = 0x20 + STATX_ATTR_APPEND = 0x20 + STATX_ATTR_AUTOMOUNT = 0x1000 + STATX_ATTR_COMPRESSED = 0x4 + STATX_ATTR_ENCRYPTED = 0x800 + STATX_ATTR_IMMUTABLE = 0x10 + STATX_ATTR_NODUMP = 0x40 + STATX_BASIC_STATS = 0x7ff + STATX_BLOCKS = 0x400 + STATX_BTIME = 0x800 + STATX_CTIME = 0x80 + STATX_GID = 0x10 + STATX_INO = 0x100 + STATX_MODE = 0x2 + STATX_MTIME = 0x40 + STATX_NLINK = 0x4 + STATX_SIZE = 0x200 + STATX_TYPE = 0x1 + STATX_UID = 0x8 + STATX__RESERVED = 0x80000000 + SYNC_FILE_RANGE_WAIT_AFTER = 0x4 + SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 + SYNC_FILE_RANGE_WRITE = 0x2 + SYSFS_MAGIC = 0x62656572 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB1 = 0x800 + TAB2 = 0x1000 + TAB3 = 0x1800 + TABDLY = 0x1800 + TASKSTATS_CMD_ATTR_MAX = 0x4 + TASKSTATS_CMD_MAX = 0x2 + TASKSTATS_GENL_NAME = "TASKSTATS" + TASKSTATS_GENL_VERSION = 0x1 + TASKSTATS_TYPE_MAX = 0x6 + TASKSTATS_VERSION = 0x8 + TCFLSH = 0x540b + TCGETA = 0x5405 + TCGETS = 0x5401 + TCGETS2 = 0x802c542a + TCGETX = 0x5432 + TCIFLUSH = 0x0 + TCIOFF = 0x2 + TCIOFLUSH = 0x2 + TCION = 0x3 + TCOFLUSH = 0x1 + TCOOFF = 0x0 + TCOON = 0x1 + TCP_CC_INFO = 0x1a + TCP_CONGESTION = 0xd + TCP_COOKIE_IN_ALWAYS = 0x1 + TCP_COOKIE_MAX = 0x10 + TCP_COOKIE_MIN = 0x8 + TCP_COOKIE_OUT_NEVER = 0x2 + TCP_COOKIE_PAIR_SIZE = 0x20 + TCP_COOKIE_TRANSACTIONS = 0xf + TCP_CORK = 0x3 + TCP_DEFER_ACCEPT = 0x9 + TCP_FASTOPEN = 0x17 + TCP_FASTOPEN_CONNECT = 0x1e + TCP_FASTOPEN_KEY = 0x21 + TCP_FASTOPEN_NO_COOKIE = 0x22 + TCP_INFO = 0xb + TCP_KEEPCNT = 0x6 + TCP_KEEPIDLE = 0x4 + TCP_KEEPINTVL = 0x5 + TCP_LINGER2 = 0x8 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0xe + TCP_MD5SIG_EXT = 0x20 + TCP_MD5SIG_FLAG_PREFIX = 0x1 + TCP_MD5SIG_MAXKEYLEN = 0x50 + TCP_MSS = 0x200 + TCP_MSS_DEFAULT = 0x218 + TCP_MSS_DESIRED = 0x4c4 + TCP_NODELAY = 0x1 + TCP_NOTSENT_LOWAT = 0x19 + TCP_QUEUE_SEQ = 0x15 + TCP_QUICKACK = 0xc + TCP_REPAIR = 0x13 + TCP_REPAIR_OPTIONS = 0x16 + TCP_REPAIR_QUEUE = 0x14 + TCP_REPAIR_WINDOW = 0x1d + TCP_SAVED_SYN = 0x1c + TCP_SAVE_SYN = 0x1b + TCP_SYNCNT = 0x7 + TCP_S_DATA_IN = 0x4 + TCP_S_DATA_OUT = 0x8 + TCP_THIN_DUPACK = 0x11 + TCP_THIN_LINEAR_TIMEOUTS = 0x10 + TCP_TIMESTAMP = 0x18 + TCP_ULP = 0x1f + TCP_USER_TIMEOUT = 0x12 + TCP_WINDOW_CLAMP = 0xa + TCSAFLUSH = 0x2 + TCSBRK = 0x5409 + TCSBRKP = 0x5425 + TCSETA = 0x5406 + TCSETAF = 0x5408 + TCSETAW = 0x5407 + TCSETS = 0x5402 + TCSETS2 = 0x402c542b + TCSETSF = 0x5404 + TCSETSF2 = 0x402c542d + TCSETSW = 0x5403 + TCSETSW2 = 0x402c542c + TCSETX = 0x5433 + TCSETXF = 0x5434 + TCSETXW = 0x5435 + TCXONC = 0x540a + TIOCCBRK = 0x5428 + TIOCCONS = 0x541d + TIOCEXCL = 0x540c + TIOCGDEV = 0x80045432 + TIOCGETD = 0x5424 + TIOCGEXCL = 0x80045440 + TIOCGICOUNT = 0x545d + TIOCGLCKTRMIOS = 0x5456 + TIOCGPGRP = 0x540f + TIOCGPKT = 0x80045438 + TIOCGPTLCK = 0x80045439 + TIOCGPTN = 0x80045430 + TIOCGPTPEER = 0x5441 + TIOCGRS485 = 0x542e + TIOCGSERIAL = 0x541e + TIOCGSID = 0x5429 + TIOCGSOFTCAR = 0x5419 + TIOCGWINSZ = 0x5413 + TIOCINQ = 0x541b + TIOCLINUX = 0x541c + TIOCMBIC = 0x5417 + TIOCMBIS = 0x5416 + TIOCMGET = 0x5415 + TIOCMIWAIT = 0x545c + TIOCMSET = 0x5418 + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x5422 + TIOCNXCL = 0x540d + TIOCOUTQ = 0x5411 + TIOCPKT = 0x5420 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x540e + TIOCSERCONFIG = 0x5453 + TIOCSERGETLSR = 0x5459 + TIOCSERGETMULTI = 0x545a + TIOCSERGSTRUCT = 0x5458 + TIOCSERGWILD = 0x5454 + TIOCSERSETMULTI = 0x545b + TIOCSERSWILD = 0x5455 + TIOCSER_TEMT = 0x1 + TIOCSETD = 0x5423 + TIOCSIG = 0x40045436 + TIOCSLCKTRMIOS = 0x5457 + TIOCSPGRP = 0x5410 + TIOCSPTLCK = 0x40045431 + TIOCSRS485 = 0x542f + TIOCSSERIAL = 0x541f + TIOCSSOFTCAR = 0x541a + TIOCSTI = 0x5412 + TIOCSWINSZ = 0x5414 + TIOCVHANGUP = 0x5437 + TMPFS_MAGIC = 0x1021994 + TOSTOP = 0x100 + TPACKET_ALIGNMENT = 0x10 + TPACKET_HDRLEN = 0x34 + TP_STATUS_AVAILABLE = 0x0 + TP_STATUS_BLK_TMO = 0x20 + TP_STATUS_COPY = 0x2 + TP_STATUS_CSUMNOTREADY = 0x8 + TP_STATUS_CSUM_VALID = 0x80 + TP_STATUS_KERNEL = 0x0 + TP_STATUS_LOSING = 0x4 + TP_STATUS_SENDING = 0x2 + TP_STATUS_SEND_REQUEST = 0x1 + TP_STATUS_TS_RAW_HARDWARE = -0x80000000 + TP_STATUS_TS_SOFTWARE = 0x20000000 + TP_STATUS_TS_SYS_HARDWARE = 0x40000000 + TP_STATUS_USER = 0x1 + TP_STATUS_VLAN_TPID_VALID = 0x40 + TP_STATUS_VLAN_VALID = 0x10 + TP_STATUS_WRONG_FORMAT = 0x4 + TRACEFS_MAGIC = 0x74726163 + TS_COMM_LEN = 0x20 + TUNATTACHFILTER = 0x401054d5 + TUNDETACHFILTER = 0x401054d6 + TUNGETFEATURES = 0x800454cf + TUNGETFILTER = 0x801054db + TUNGETIFF = 0x800454d2 + TUNGETSNDBUF = 0x800454d3 + TUNGETVNETBE = 0x800454df + TUNGETVNETHDRSZ = 0x800454d7 + TUNGETVNETLE = 0x800454dd + TUNSETDEBUG = 0x400454c9 + TUNSETFILTEREBPF = 0x800454e1 + TUNSETGROUP = 0x400454ce + TUNSETIFF = 0x400454ca + TUNSETIFINDEX = 0x400454da + TUNSETLINK = 0x400454cd + TUNSETNOCSUM = 0x400454c8 + TUNSETOFFLOAD = 0x400454d0 + TUNSETOWNER = 0x400454cc + TUNSETPERSIST = 0x400454cb + TUNSETQUEUE = 0x400454d9 + TUNSETSNDBUF = 0x400454d4 + TUNSETSTEERINGEBPF = 0x800454e0 + TUNSETTXFILTER = 0x400454d1 + TUNSETVNETBE = 0x400454de + TUNSETVNETHDRSZ = 0x400454d8 + TUNSETVNETLE = 0x400454dc + UBI_IOCATT = 0x40186f40 + UBI_IOCDET = 0x40046f41 + UBI_IOCEBCH = 0x40044f02 + UBI_IOCEBER = 0x40044f01 + UBI_IOCEBISMAP = 0x80044f05 + UBI_IOCEBMAP = 0x40084f03 + UBI_IOCEBUNMAP = 0x40044f04 + UBI_IOCMKVOL = 0x40986f00 + UBI_IOCRMVOL = 0x40046f01 + UBI_IOCRNVOL = 0x51106f03 + UBI_IOCRSVOL = 0x400c6f02 + UBI_IOCSETVOLPROP = 0x40104f06 + UBI_IOCVOLCRBLK = 0x40804f07 + UBI_IOCVOLRMBLK = 0x4f08 + UBI_IOCVOLUP = 0x40084f00 + UDF_SUPER_MAGIC = 0x15013346 + UMOUNT_NOFOLLOW = 0x8 + USBDEVICE_SUPER_MAGIC = 0x9fa2 + UTIME_NOW = 0x3fffffff + UTIME_OMIT = 0x3ffffffe + V9FS_MAGIC = 0x1021997 + VDISCARD = 0xd + VEOF = 0x4 + VEOL = 0xb + VEOL2 = 0x10 + VERASE = 0x2 + VINTR = 0x0 + VKILL = 0x3 + VLNEXT = 0xf + VMADDR_CID_ANY = 0xffffffff + VMADDR_CID_HOST = 0x2 + VMADDR_CID_HYPERVISOR = 0x0 + VMADDR_CID_RESERVED = 0x1 + VMADDR_PORT_ANY = 0xffffffff + VMIN = 0x6 + VM_SOCKETS_INVALID_VERSION = 0xffffffff + VQUIT = 0x1 + VREPRINT = 0xc + VSTART = 0x8 + VSTOP = 0x9 + VSUSP = 0xa + VSWTC = 0x7 + VT0 = 0x0 + VT1 = 0x4000 + VTDLY = 0x4000 + VTIME = 0x5 + VWERASE = 0xe + WALL = 0x40000000 + WCLONE = 0x80000000 + WCONTINUED = 0x8 + WDIOC_GETBOOTSTATUS = 0x80045702 + WDIOC_GETPRETIMEOUT = 0x80045709 + WDIOC_GETSTATUS = 0x80045701 + WDIOC_GETSUPPORT = 0x80285700 + WDIOC_GETTEMP = 0x80045703 + WDIOC_GETTIMELEFT = 0x8004570a + WDIOC_GETTIMEOUT = 0x80045707 + WDIOC_KEEPALIVE = 0x80045705 + WDIOC_SETOPTIONS = 0x80045704 + WDIOC_SETPRETIMEOUT = 0xc0045708 + WDIOC_SETTIMEOUT = 0xc0045706 + WEXITED = 0x4 + WIN_ACKMEDIACHANGE = 0xdb + WIN_CHECKPOWERMODE1 = 0xe5 + WIN_CHECKPOWERMODE2 = 0x98 + WIN_DEVICE_RESET = 0x8 + WIN_DIAGNOSE = 0x90 + WIN_DOORLOCK = 0xde + WIN_DOORUNLOCK = 0xdf + WIN_DOWNLOAD_MICROCODE = 0x92 + WIN_FLUSH_CACHE = 0xe7 + WIN_FLUSH_CACHE_EXT = 0xea + WIN_FORMAT = 0x50 + WIN_GETMEDIASTATUS = 0xda + WIN_IDENTIFY = 0xec + WIN_IDENTIFY_DMA = 0xee + WIN_IDLEIMMEDIATE = 0xe1 + WIN_INIT = 0x60 + WIN_MEDIAEJECT = 0xed + WIN_MULTREAD = 0xc4 + WIN_MULTREAD_EXT = 0x29 + WIN_MULTWRITE = 0xc5 + WIN_MULTWRITE_EXT = 0x39 + WIN_NOP = 0x0 + WIN_PACKETCMD = 0xa0 + WIN_PIDENTIFY = 0xa1 + WIN_POSTBOOT = 0xdc + WIN_PREBOOT = 0xdd + WIN_QUEUED_SERVICE = 0xa2 + WIN_READ = 0x20 + WIN_READDMA = 0xc8 + WIN_READDMA_EXT = 0x25 + WIN_READDMA_ONCE = 0xc9 + WIN_READDMA_QUEUED = 0xc7 + WIN_READDMA_QUEUED_EXT = 0x26 + WIN_READ_BUFFER = 0xe4 + WIN_READ_EXT = 0x24 + WIN_READ_LONG = 0x22 + WIN_READ_LONG_ONCE = 0x23 + WIN_READ_NATIVE_MAX = 0xf8 + WIN_READ_NATIVE_MAX_EXT = 0x27 + WIN_READ_ONCE = 0x21 + WIN_RECAL = 0x10 + WIN_RESTORE = 0x10 + WIN_SECURITY_DISABLE = 0xf6 + WIN_SECURITY_ERASE_PREPARE = 0xf3 + WIN_SECURITY_ERASE_UNIT = 0xf4 + WIN_SECURITY_FREEZE_LOCK = 0xf5 + WIN_SECURITY_SET_PASS = 0xf1 + WIN_SECURITY_UNLOCK = 0xf2 + WIN_SEEK = 0x70 + WIN_SETFEATURES = 0xef + WIN_SETIDLE1 = 0xe3 + WIN_SETIDLE2 = 0x97 + WIN_SETMULT = 0xc6 + WIN_SET_MAX = 0xf9 + WIN_SET_MAX_EXT = 0x37 + WIN_SLEEPNOW1 = 0xe6 + WIN_SLEEPNOW2 = 0x99 + WIN_SMART = 0xb0 + WIN_SPECIFY = 0x91 + WIN_SRST = 0x8 + WIN_STANDBY = 0xe2 + WIN_STANDBY2 = 0x96 + WIN_STANDBYNOW1 = 0xe0 + WIN_STANDBYNOW2 = 0x94 + WIN_VERIFY = 0x40 + WIN_VERIFY_EXT = 0x42 + WIN_VERIFY_ONCE = 0x41 + WIN_WRITE = 0x30 + WIN_WRITEDMA = 0xca + WIN_WRITEDMA_EXT = 0x35 + WIN_WRITEDMA_ONCE = 0xcb + WIN_WRITEDMA_QUEUED = 0xcc + WIN_WRITEDMA_QUEUED_EXT = 0x36 + WIN_WRITE_BUFFER = 0xe8 + WIN_WRITE_EXT = 0x34 + WIN_WRITE_LONG = 0x32 + WIN_WRITE_LONG_ONCE = 0x33 + WIN_WRITE_ONCE = 0x31 + WIN_WRITE_SAME = 0xe9 + WIN_WRITE_VERIFY = 0x3c + WNOHANG = 0x1 + WNOTHREAD = 0x20000000 + WNOWAIT = 0x1000000 + WORDSIZE = 0x40 + WSTOPPED = 0x2 + WUNTRACED = 0x2 + XATTR_CREATE = 0x1 + XATTR_REPLACE = 0x2 + XCASE = 0x4 + XENFS_SUPER_MAGIC = 0xabba1974 + XTABS = 0x1800 + ZSMALLOC_MAGIC = 0x58295829 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x62) + EADDRNOTAVAIL = syscall.Errno(0x63) + EADV = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x61) + EAGAIN = syscall.Errno(0xb) + EALREADY = syscall.Errno(0x72) + EBADE = syscall.Errno(0x34) + EBADF = syscall.Errno(0x9) + EBADFD = syscall.Errno(0x4d) + EBADMSG = syscall.Errno(0x4a) + EBADR = syscall.Errno(0x35) + EBADRQC = syscall.Errno(0x38) + EBADSLT = syscall.Errno(0x39) + EBFONT = syscall.Errno(0x3b) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x7d) + ECHILD = syscall.Errno(0xa) + ECHRNG = syscall.Errno(0x2c) + ECOMM = syscall.Errno(0x46) + ECONNABORTED = syscall.Errno(0x67) + ECONNREFUSED = syscall.Errno(0x6f) + ECONNRESET = syscall.Errno(0x68) + EDEADLK = syscall.Errno(0x23) + EDEADLOCK = syscall.Errno(0x23) + EDESTADDRREQ = syscall.Errno(0x59) + EDOM = syscall.Errno(0x21) + EDOTDOT = syscall.Errno(0x49) + EDQUOT = syscall.Errno(0x7a) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EHOSTDOWN = syscall.Errno(0x70) + EHOSTUNREACH = syscall.Errno(0x71) + EHWPOISON = syscall.Errno(0x85) + EIDRM = syscall.Errno(0x2b) + EILSEQ = syscall.Errno(0x54) + EINPROGRESS = syscall.Errno(0x73) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x6a) + EISDIR = syscall.Errno(0x15) + EISNAM = syscall.Errno(0x78) + EKEYEXPIRED = syscall.Errno(0x7f) + EKEYREJECTED = syscall.Errno(0x81) + EKEYREVOKED = syscall.Errno(0x80) + EL2HLT = syscall.Errno(0x33) + EL2NSYNC = syscall.Errno(0x2d) + EL3HLT = syscall.Errno(0x2e) + EL3RST = syscall.Errno(0x2f) + ELIBACC = syscall.Errno(0x4f) + ELIBBAD = syscall.Errno(0x50) + ELIBEXEC = syscall.Errno(0x53) + ELIBMAX = syscall.Errno(0x52) + ELIBSCN = syscall.Errno(0x51) + ELNRNG = syscall.Errno(0x30) + ELOOP = syscall.Errno(0x28) + EMEDIUMTYPE = syscall.Errno(0x7c) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x5a) + EMULTIHOP = syscall.Errno(0x48) + ENAMETOOLONG = syscall.Errno(0x24) + ENAVAIL = syscall.Errno(0x77) + ENETDOWN = syscall.Errno(0x64) + ENETRESET = syscall.Errno(0x66) + ENETUNREACH = syscall.Errno(0x65) + ENFILE = syscall.Errno(0x17) + ENOANO = syscall.Errno(0x37) + ENOBUFS = syscall.Errno(0x69) + ENOCSI = syscall.Errno(0x32) + ENODATA = syscall.Errno(0x3d) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOKEY = syscall.Errno(0x7e) + ENOLCK = syscall.Errno(0x25) + ENOLINK = syscall.Errno(0x43) + ENOMEDIUM = syscall.Errno(0x7b) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x2a) + ENONET = syscall.Errno(0x40) + ENOPKG = syscall.Errno(0x41) + ENOPROTOOPT = syscall.Errno(0x5c) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x3f) + ENOSTR = syscall.Errno(0x3c) + ENOSYS = syscall.Errno(0x26) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x6b) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x27) + ENOTNAM = syscall.Errno(0x76) + ENOTRECOVERABLE = syscall.Errno(0x83) + ENOTSOCK = syscall.Errno(0x58) + ENOTSUP = syscall.Errno(0x5f) + ENOTTY = syscall.Errno(0x19) + ENOTUNIQ = syscall.Errno(0x4c) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x5f) + EOVERFLOW = syscall.Errno(0x4b) + EOWNERDEAD = syscall.Errno(0x82) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x60) + EPIPE = syscall.Errno(0x20) + EPROTO = syscall.Errno(0x47) + EPROTONOSUPPORT = syscall.Errno(0x5d) + EPROTOTYPE = syscall.Errno(0x5b) + ERANGE = syscall.Errno(0x22) + EREMCHG = syscall.Errno(0x4e) + EREMOTE = syscall.Errno(0x42) + EREMOTEIO = syscall.Errno(0x79) + ERESTART = syscall.Errno(0x55) + ERFKILL = syscall.Errno(0x84) + EROFS = syscall.Errno(0x1e) + ESHUTDOWN = syscall.Errno(0x6c) + ESOCKTNOSUPPORT = syscall.Errno(0x5e) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESRMNT = syscall.Errno(0x45) + ESTALE = syscall.Errno(0x74) + ESTRPIPE = syscall.Errno(0x56) + ETIME = syscall.Errno(0x3e) + ETIMEDOUT = syscall.Errno(0x6e) + ETOOMANYREFS = syscall.Errno(0x6d) + ETXTBSY = syscall.Errno(0x1a) + EUCLEAN = syscall.Errno(0x75) + EUNATCH = syscall.Errno(0x31) + EUSERS = syscall.Errno(0x57) + EWOULDBLOCK = syscall.Errno(0xb) + EXDEV = syscall.Errno(0x12) + EXFULL = syscall.Errno(0x36) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0x7) + SIGCHLD = syscall.Signal(0x11) + SIGCLD = syscall.Signal(0x11) + SIGCONT = syscall.Signal(0x12) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x1d) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPOLL = syscall.Signal(0x1d) + SIGPROF = syscall.Signal(0x1b) + SIGPWR = syscall.Signal(0x1e) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTKFLT = syscall.Signal(0x10) + SIGSTOP = syscall.Signal(0x13) + SIGSYS = syscall.Signal(0x1f) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x14) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x17) + SIGUSR1 = syscall.Signal(0xa) + SIGUSR2 = syscall.Signal(0xc) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "EDEADLK", "resource deadlock avoided"}, + {36, "ENAMETOOLONG", "file name too long"}, + {37, "ENOLCK", "no locks available"}, + {38, "ENOSYS", "function not implemented"}, + {39, "ENOTEMPTY", "directory not empty"}, + {40, "ELOOP", "too many levels of symbolic links"}, + {42, "ENOMSG", "no message of desired type"}, + {43, "EIDRM", "identifier removed"}, + {44, "ECHRNG", "channel number out of range"}, + {45, "EL2NSYNC", "level 2 not synchronized"}, + {46, "EL3HLT", "level 3 halted"}, + {47, "EL3RST", "level 3 reset"}, + {48, "ELNRNG", "link number out of range"}, + {49, "EUNATCH", "protocol driver not attached"}, + {50, "ENOCSI", "no CSI structure available"}, + {51, "EL2HLT", "level 2 halted"}, + {52, "EBADE", "invalid exchange"}, + {53, "EBADR", "invalid request descriptor"}, + {54, "EXFULL", "exchange full"}, + {55, "ENOANO", "no anode"}, + {56, "EBADRQC", "invalid request code"}, + {57, "EBADSLT", "invalid slot"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {72, "EMULTIHOP", "multihop attempted"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EBADMSG", "bad message"}, + {75, "EOVERFLOW", "value too large for defined data type"}, + {76, "ENOTUNIQ", "name not unique on network"}, + {77, "EBADFD", "file descriptor in bad state"}, + {78, "EREMCHG", "remote address changed"}, + {79, "ELIBACC", "can not access a needed shared library"}, + {80, "ELIBBAD", "accessing a corrupted shared library"}, + {81, "ELIBSCN", ".lib section in a.out corrupted"}, + {82, "ELIBMAX", "attempting to link in too many shared libraries"}, + {83, "ELIBEXEC", "cannot exec a shared library directly"}, + {84, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {85, "ERESTART", "interrupted system call should be restarted"}, + {86, "ESTRPIPE", "streams pipe error"}, + {87, "EUSERS", "too many users"}, + {88, "ENOTSOCK", "socket operation on non-socket"}, + {89, "EDESTADDRREQ", "destination address required"}, + {90, "EMSGSIZE", "message too long"}, + {91, "EPROTOTYPE", "protocol wrong type for socket"}, + {92, "ENOPROTOOPT", "protocol not available"}, + {93, "EPROTONOSUPPORT", "protocol not supported"}, + {94, "ESOCKTNOSUPPORT", "socket type not supported"}, + {95, "ENOTSUP", "operation not supported"}, + {96, "EPFNOSUPPORT", "protocol family not supported"}, + {97, "EAFNOSUPPORT", "address family not supported by protocol"}, + {98, "EADDRINUSE", "address already in use"}, + {99, "EADDRNOTAVAIL", "cannot assign requested address"}, + {100, "ENETDOWN", "network is down"}, + {101, "ENETUNREACH", "network is unreachable"}, + {102, "ENETRESET", "network dropped connection on reset"}, + {103, "ECONNABORTED", "software caused connection abort"}, + {104, "ECONNRESET", "connection reset by peer"}, + {105, "ENOBUFS", "no buffer space available"}, + {106, "EISCONN", "transport endpoint is already connected"}, + {107, "ENOTCONN", "transport endpoint is not connected"}, + {108, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {109, "ETOOMANYREFS", "too many references: cannot splice"}, + {110, "ETIMEDOUT", "connection timed out"}, + {111, "ECONNREFUSED", "connection refused"}, + {112, "EHOSTDOWN", "host is down"}, + {113, "EHOSTUNREACH", "no route to host"}, + {114, "EALREADY", "operation already in progress"}, + {115, "EINPROGRESS", "operation now in progress"}, + {116, "ESTALE", "stale file handle"}, + {117, "EUCLEAN", "structure needs cleaning"}, + {118, "ENOTNAM", "not a XENIX named type file"}, + {119, "ENAVAIL", "no XENIX semaphores available"}, + {120, "EISNAM", "is a named type file"}, + {121, "EREMOTEIO", "remote I/O error"}, + {122, "EDQUOT", "disk quota exceeded"}, + {123, "ENOMEDIUM", "no medium found"}, + {124, "EMEDIUMTYPE", "wrong medium type"}, + {125, "ECANCELED", "operation canceled"}, + {126, "ENOKEY", "required key not available"}, + {127, "EKEYEXPIRED", "key has expired"}, + {128, "EKEYREVOKED", "key has been revoked"}, + {129, "EKEYREJECTED", "key was rejected by service"}, + {130, "EOWNERDEAD", "owner died"}, + {131, "ENOTRECOVERABLE", "state not recoverable"}, + {132, "ERFKILL", "operation not possible due to RF-kill"}, + {133, "EHWPOISON", "memory page has hardware error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGBUS", "bus error"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGUSR1", "user defined signal 1"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGUSR2", "user defined signal 2"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGSTKFLT", "stack fault"}, + {17, "SIGCHLD", "child exited"}, + {18, "SIGCONT", "continued"}, + {19, "SIGSTOP", "stopped (signal)"}, + {20, "SIGTSTP", "stopped"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGURG", "urgent I/O condition"}, + {24, "SIGXCPU", "CPU time limit exceeded"}, + {25, "SIGXFSZ", "file size limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window changed"}, + {29, "SIGIO", "I/O possible"}, + {30, "SIGPWR", "power failure"}, + {31, "SIGSYS", "bad system call"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go b/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go index 3814df85..5a057da4 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go @@ -498,6 +498,8 @@ const ( FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 FS_ENCRYPTION_MODE_AES_256_XTS = 0x1 FS_ENCRYPTION_MODE_INVALID = 0x0 + FS_ENCRYPTION_MODE_SPECK128_256_CTS = 0x8 + FS_ENCRYPTION_MODE_SPECK128_256_XTS = 0x7 FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615 FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614 FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613 @@ -635,7 +637,7 @@ const ( IFA_F_STABLE_PRIVACY = 0x800 IFA_F_TEMPORARY = 0x1 IFA_F_TENTATIVE = 0x40 - IFA_MAX = 0x8 + IFA_MAX = 0x9 IFF_ALLMULTI = 0x200 IFF_ATTACH_QUEUE = 0x200 IFF_AUTOMEDIA = 0x4000 @@ -762,6 +764,7 @@ const ( IPV6_DONTFRAG = 0x3e IPV6_DROP_MEMBERSHIP = 0x15 IPV6_DSTOPTS = 0x3b + IPV6_FREEBIND = 0x4e IPV6_HDRINCL = 0x24 IPV6_HOPLIMIT = 0x34 IPV6_HOPOPTS = 0x36 @@ -954,6 +957,7 @@ const ( MAP_EXECUTABLE = 0x1000 MAP_FILE = 0x0 MAP_FIXED = 0x10 + MAP_FIXED_NOREPLACE = 0x100000 MAP_GROWSDOWN = 0x100 MAP_HUGETLB = 0x40000 MAP_HUGE_MASK = 0x3f @@ -964,7 +968,9 @@ const ( MAP_POPULATE = 0x8000 MAP_PRIVATE = 0x2 MAP_SHARED = 0x1 + MAP_SHARED_VALIDATE = 0x3 MAP_STACK = 0x20000 + MAP_SYNC = 0x80000 MAP_TYPE = 0xf MCL_CURRENT = 0x1 MCL_FUTURE = 0x2 @@ -1074,6 +1080,8 @@ const ( NETLINK_UNUSED = 0x1 NETLINK_USERSOCK = 0x2 NETLINK_XFRM = 0x6 + NETNSA_MAX = 0x3 + NETNSA_NSID_NOT_ASSIGNED = -0x1 NFNETLINK_V0 = 0x0 NFNLGRP_ACCT_QUOTA = 0x8 NFNLGRP_CONNTRACK_DESTROY = 0x3 @@ -1488,6 +1496,9 @@ const ( RAMFS_MAGIC = 0x858458f6 RDTGROUP_SUPER_MAGIC = 0x7655821 REISERFS_SUPER_MAGIC = 0x52654973 + RENAME_EXCHANGE = 0x2 + RENAME_NOREPLACE = 0x1 + RENAME_WHITEOUT = 0x4 RLIMIT_AS = 0x9 RLIMIT_CORE = 0x4 RLIMIT_CPU = 0x0 @@ -1530,7 +1541,7 @@ const ( RTAX_UNSPEC = 0x0 RTAX_WINDOW = 0x3 RTA_ALIGNTO = 0x4 - RTA_MAX = 0x1a + RTA_MAX = 0x1d RTCF_DIRECTSRC = 0x4000000 RTCF_DOREDIRECT = 0x1000000 RTCF_LOG = 0x2000000 @@ -1666,17 +1677,22 @@ const ( RTNH_F_UNRESOLVED = 0x20 RTN_MAX = 0xb RTPROT_BABEL = 0x2a + RTPROT_BGP = 0xba RTPROT_BIRD = 0xc RTPROT_BOOT = 0x3 RTPROT_DHCP = 0x10 RTPROT_DNROUTED = 0xd + RTPROT_EIGRP = 0xc0 RTPROT_GATED = 0x8 + RTPROT_ISIS = 0xbb RTPROT_KERNEL = 0x2 RTPROT_MROUTED = 0x11 RTPROT_MRT = 0xa RTPROT_NTK = 0xf + RTPROT_OSPF = 0xbc RTPROT_RA = 0x9 RTPROT_REDIRECT = 0x1 + RTPROT_RIP = 0xbd RTPROT_STATIC = 0x4 RTPROT_UNSPEC = 0x0 RTPROT_XORP = 0xe @@ -1936,6 +1952,9 @@ const ( STATX_TYPE = 0x1 STATX_UID = 0x8 STATX__RESERVED = 0x80000000 + SYNC_FILE_RANGE_WAIT_AFTER = 0x4 + SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 + SYNC_FILE_RANGE_WRITE = 0x2 SYSFS_MAGIC = 0x62656572 S_BLKSIZE = 0x200 S_IEXEC = 0x40 @@ -1999,6 +2018,8 @@ const ( TCP_DEFER_ACCEPT = 0x9 TCP_FASTOPEN = 0x17 TCP_FASTOPEN_CONNECT = 0x1e + TCP_FASTOPEN_KEY = 0x21 + TCP_FASTOPEN_NO_COOKIE = 0x22 TCP_INFO = 0xb TCP_KEEPCNT = 0x6 TCP_KEEPIDLE = 0x4 @@ -2166,6 +2187,21 @@ const ( TUNSETVNETBE = 0x400454de TUNSETVNETHDRSZ = 0x400454d8 TUNSETVNETLE = 0x400454dc + UBI_IOCATT = 0x40186f40 + UBI_IOCDET = 0x40046f41 + UBI_IOCEBCH = 0x40044f02 + UBI_IOCEBER = 0x40044f01 + UBI_IOCEBISMAP = 0x80044f05 + UBI_IOCEBMAP = 0x40084f03 + UBI_IOCEBUNMAP = 0x40044f04 + UBI_IOCMKVOL = 0x40986f00 + UBI_IOCRMVOL = 0x40046f01 + UBI_IOCRNVOL = 0x51106f03 + UBI_IOCRSVOL = 0x400c6f02 + UBI_IOCSETVOLPROP = 0x40104f06 + UBI_IOCVOLCRBLK = 0x40804f07 + UBI_IOCVOLRMBLK = 0x4f08 + UBI_IOCVOLUP = 0x40084f00 UDF_SUPER_MAGIC = 0x15013346 UMOUNT_NOFOLLOW = 0x8 USBDEVICE_SUPER_MAGIC = 0x9fa2 diff --git a/vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go b/vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go index cd93ce0d..19316b1d 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go +++ b/vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go @@ -550,6 +550,10 @@ const ( EV_ONESHOT = 0x10 EV_SYSFLAGS = 0xf000 EXTA = 0x4b00 + EXTATTR_CMD_START = 0x1 + EXTATTR_CMD_STOP = 0x2 + EXTATTR_NAMESPACE_SYSTEM = 0x2 + EXTATTR_NAMESPACE_USER = 0x1 EXTB = 0x9600 EXTPROC = 0x800 FD_CLOEXEC = 0x1 diff --git a/vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go index 071701c4..f2cf500f 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go @@ -540,6 +540,10 @@ const ( EV_ONESHOT = 0x10 EV_SYSFLAGS = 0xf000 EXTA = 0x4b00 + EXTATTR_CMD_START = 0x1 + EXTATTR_CMD_STOP = 0x2 + EXTATTR_NAMESPACE_SYSTEM = 0x2 + EXTATTR_NAMESPACE_USER = 0x1 EXTB = 0x9600 EXTPROC = 0x800 FD_CLOEXEC = 0x1 diff --git a/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go b/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go index 5fe56ae8..858e2999 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go @@ -532,6 +532,10 @@ const ( EV_ONESHOT = 0x10 EV_SYSFLAGS = 0xf000 EXTA = 0x4b00 + EXTATTR_CMD_START = 0x1 + EXTATTR_CMD_STOP = 0x2 + EXTATTR_NAMESPACE_SYSTEM = 0x2 + EXTATTR_NAMESPACE_USER = 0x1 EXTB = 0x9600 EXTPROC = 0x800 FD_CLOEXEC = 0x1 diff --git a/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go b/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go index 0a1c3e7e..7d92f2c5 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go +++ b/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go @@ -1218,6 +1218,34 @@ const ( SO_TIMESTAMP = 0x800 SO_TYPE = 0x1008 SO_USELOOPBACK = 0x40 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 TCIFLUSH = 0x1 TCIOFLUSH = 0x3 TCOFLUSH = 0x2 diff --git a/vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go index acfc6646..b0a7ebaf 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go @@ -472,6 +472,7 @@ const ( F_GETLK = 0x7 F_GETOWN = 0x5 F_ISATTY = 0xb + F_OK = 0x0 F_RDLCK = 0x1 F_SETFD = 0x2 F_SETFL = 0x4 @@ -1296,6 +1297,34 @@ const ( SO_TYPE = 0x1008 SO_USELOOPBACK = 0x40 SO_ZEROIZE = 0x2000 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 TCIFLUSH = 0x1 TCIOFF = 0x3 TCIOFLUSH = 0x3 diff --git a/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go b/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go index 93e37c4b..50c1d9f3 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go @@ -1221,6 +1221,34 @@ const ( SO_TIMESTAMP = 0x800 SO_TYPE = 0x1008 SO_USELOOPBACK = 0x40 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 TCIFLUSH = 0x1 TCIOFLUSH = 0x3 TCOFLUSH = 0x2 diff --git a/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go index be42830c..22569db3 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go @@ -996,6 +996,39 @@ const ( SO_USELOOPBACK = 0x40 SO_VRRP = 0x1017 SO_WROFF = 0x2 + S_ENFMT = 0x400 + S_IAMB = 0x1ff + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFDOOR = 0xd000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFNAM = 0x5000 + S_IFPORT = 0xe000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_INSEM = 0x1 + S_INSHD = 0x2 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 TAB0 = 0x0 TAB1 = 0x800 TAB2 = 0x1000 @@ -1102,6 +1135,8 @@ const ( TIOCSTOP = 0x746f TIOCSWINSZ = 0x5467 TOSTOP = 0x100 + UTIME_NOW = -0x1 + UTIME_OMIT = -0x2 VCEOF = 0x8 VCEOL = 0x9 VDISCARD = 0xd diff --git a/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go new file mode 100644 index 00000000..46d0652f --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go @@ -0,0 +1,1495 @@ +// mksyscall_aix.pl -aix -tags aix,ppc syscall_aix.go syscall_aix_ppc.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build aix,ppc + +package unix + +/* +#include +int utimes(uintptr_t, uintptr_t); +int utimensat(int, uintptr_t, uintptr_t, int); +int getcwd(uintptr_t, size_t); +int accept(int, uintptr_t, uintptr_t); +int getdirent(int, uintptr_t, size_t); +int wait4(int, uintptr_t, int, uintptr_t); +int ioctl(int, int, uintptr_t); +int fcntl(uintptr_t, int, uintptr_t); +int acct(uintptr_t); +int chdir(uintptr_t); +int chroot(uintptr_t); +int close(int); +int dup(int); +int dup3(int, int, int); +void exit(int); +int faccessat(int, uintptr_t, unsigned int, int); +int fallocate(int, unsigned int, long long, long long); +int fchdir(int); +int fchmod(int, unsigned int); +int fchmodat(int, uintptr_t, unsigned int, int); +int fchownat(int, uintptr_t, int, int, int); +int fdatasync(int); +int fsync(int); +int getpgid(int); +int getpgrp(); +int getpid(); +int getppid(); +int getpriority(int, int); +int getrusage(int, uintptr_t); +int getsid(int); +int kill(int, int); +int syslog(int, uintptr_t, size_t); +int mkdirat(int, uintptr_t, unsigned int); +int mkfifo(uintptr_t, unsigned int); +int mknodat(int, uintptr_t, unsigned int, int); +int nanosleep(uintptr_t, uintptr_t); +int open64(uintptr_t, int, unsigned int); +int openat(int, uintptr_t, int, unsigned int); +int read(int, uintptr_t, size_t); +int readlink(uintptr_t, uintptr_t, size_t); +int removexattr(uintptr_t, uintptr_t); +int renameat(int, uintptr_t, int, uintptr_t); +int setdomainname(uintptr_t, size_t); +int sethostname(uintptr_t, size_t); +int setpgid(int, int); +int setsid(); +int settimeofday(uintptr_t); +int setuid(int); +int setgid(int); +int setpriority(int, int, int); +int statx(int, uintptr_t, int, int, uintptr_t); +int sync(); +long long tee(int, int, int, int); +uintptr_t times(uintptr_t); +int umask(int); +int uname(uintptr_t); +int unlink(uintptr_t); +int unlinkat(int, uintptr_t, int); +int unshare(int); +int ustat(int, uintptr_t); +int write(int, uintptr_t, size_t); +int dup2(int, int); +int posix_fadvise64(int, long long, long long, int); +int fchown(int, int, int); +int fstat(int, uintptr_t); +int fstatat(int, uintptr_t, uintptr_t, int); +int fstatfs(int, uintptr_t); +int ftruncate(int, long long); +int getegid(); +int geteuid(); +int getgid(); +int getuid(); +int lchown(uintptr_t, int, int); +int listen(int, int); +int lstat(uintptr_t, uintptr_t); +int pause(); +int pread64(int, uintptr_t, size_t, long long); +int pwrite64(int, uintptr_t, size_t, long long); +int pselect(int, uintptr_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t); +int setregid(int, int); +int setreuid(int, int); +int shutdown(int, int); +long long splice(int, uintptr_t, int, uintptr_t, int, int); +int stat(uintptr_t, uintptr_t); +int statfs(uintptr_t, uintptr_t); +int truncate(uintptr_t, long long); +int bind(int, uintptr_t, uintptr_t); +int connect(int, uintptr_t, uintptr_t); +int getgroups(int, uintptr_t); +int setgroups(int, uintptr_t); +int getsockopt(int, int, int, uintptr_t, uintptr_t); +int setsockopt(int, int, int, uintptr_t, uintptr_t); +int socket(int, int, int); +int socketpair(int, int, int, uintptr_t); +int getpeername(int, uintptr_t, uintptr_t); +int getsockname(int, uintptr_t, uintptr_t); +int recvfrom(int, uintptr_t, size_t, int, uintptr_t, uintptr_t); +int sendto(int, uintptr_t, size_t, int, uintptr_t, uintptr_t); +int recvmsg(int, uintptr_t, int); +int sendmsg(int, uintptr_t, int); +int munmap(uintptr_t, uintptr_t); +int madvise(uintptr_t, size_t, int); +int mprotect(uintptr_t, size_t, int); +int mlock(uintptr_t, size_t); +int mlockall(int); +int msync(uintptr_t, size_t, int); +int munlock(uintptr_t, size_t); +int munlockall(); +int pipe(uintptr_t); +int pipe2(uintptr_t, int); +int poll(uintptr_t, int, int); +int gettimeofday(uintptr_t, uintptr_t); +int time(uintptr_t); +int utime(uintptr_t, uintptr_t); +int getrlimit64(int, uintptr_t); +int setrlimit64(int, uintptr_t); +long long lseek64(int, long long, int); +uintptr_t mmap(uintptr_t, uintptr_t, int, int, int, long long); + +*/ +import "C" +import ( + "syscall" + "unsafe" +) + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.utimes(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(times)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flag int) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.utimensat(C.int(dirfd), C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(times))), C.int(flag)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getcwd(buf []byte) (err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + var _p1 int + _p1 = len(buf) + r0, er := C.getcwd(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, er := C.accept(C.int(s), C.uintptr_t(uintptr(unsafe.Pointer(rsa))), C.uintptr_t(uintptr(unsafe.Pointer(addrlen)))) + fd = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getdirent(fd int, buf []byte) (n int, err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + var _p1 int + _p1 = len(buf) + r0, er := C.getdirent(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid Pid_t, status *_C_int, options int, rusage *Rusage) (wpid Pid_t, err error) { + r0, er := C.wait4(C.int(pid), C.uintptr_t(uintptr(unsafe.Pointer(status))), C.int(options), C.uintptr_t(uintptr(unsafe.Pointer(rusage)))) + wpid = Pid_t(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + r0, er := C.ioctl(C.int(fd), C.int(req), C.uintptr_t(arg)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FcntlInt(fd uintptr, cmd int, arg int) (r int, err error) { + r0, er := C.fcntl(C.uintptr_t(fd), C.int(cmd), C.uintptr_t(arg)) + r = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FcntlFlock(fd uintptr, cmd int, lk *Flock_t) (err error) { + r0, er := C.fcntl(C.uintptr_t(fd), C.int(cmd), C.uintptr_t(uintptr(unsafe.Pointer(lk)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Acct(path string) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.acct(C.uintptr_t(_p0)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.chdir(C.uintptr_t(_p0)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.chroot(C.uintptr_t(_p0)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + r0, er := C.close(C.int(fd)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(oldfd int) (fd int, err error) { + r0, er := C.dup(C.int(oldfd)) + fd = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup3(oldfd int, newfd int, flags int) (err error) { + r0, er := C.dup3(C.int(oldfd), C.int(newfd), C.int(flags)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + C.exit(C.int(code)) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.faccessat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(flags)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + r0, er := C.fallocate(C.int(fd), C.uint(mode), C.longlong(off), C.longlong(len)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + r0, er := C.fchdir(C.int(fd)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + r0, er := C.fchmod(C.int(fd), C.uint(mode)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.fchmodat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(flags)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.fchownat(C.int(dirfd), C.uintptr_t(_p0), C.int(uid), C.int(gid), C.int(flags)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, er := C.fcntl(C.uintptr_t(fd), C.int(cmd), C.uintptr_t(arg)) + val = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fdatasync(fd int) (err error) { + r0, er := C.fdatasync(C.int(fd)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + r0, er := C.fsync(C.int(fd)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, er := C.getpgid(C.int(pid)) + pgid = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pid int) { + r0, _ := C.getpgrp() + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _ := C.getpid() + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _ := C.getppid() + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, er := C.getpriority(C.int(which), C.int(who)) + prio = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + r0, er := C.getrusage(C.int(who), C.uintptr_t(uintptr(unsafe.Pointer(rusage)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, er := C.getsid(C.int(pid)) + sid = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, sig syscall.Signal) (err error) { + r0, er := C.kill(C.int(pid), C.int(sig)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Klogctl(typ int, buf []byte) (n int, err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + var _p1 int + _p1 = len(buf) + r0, er := C.syslog(C.int(typ), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.mkdirat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.mkfifo(C.uintptr_t(_p0), C.uint(mode)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.mknodat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(dev)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + r0, er := C.nanosleep(C.uintptr_t(uintptr(unsafe.Pointer(time))), C.uintptr_t(uintptr(unsafe.Pointer(leftover)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.open64(C.uintptr_t(_p0), C.int(mode), C.uint(perm)) + fd = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.openat(C.int(dirfd), C.uintptr_t(_p0), C.int(flags), C.uint(mode)) + fd = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + var _p1 int + _p1 = len(p) + r0, er := C.read(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + var _p1 *byte + if len(buf) > 0 { + _p1 = &buf[0] + } + var _p2 int + _p2 = len(buf) + r0, er := C.readlink(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(_p1))), C.size_t(_p2)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Removexattr(path string, attr string) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + _p1 := uintptr(unsafe.Pointer(C.CString(attr))) + r0, er := C.removexattr(C.uintptr_t(_p0), C.uintptr_t(_p1)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(oldpath))) + _p1 := uintptr(unsafe.Pointer(C.CString(newpath))) + r0, er := C.renameat(C.int(olddirfd), C.uintptr_t(_p0), C.int(newdirfd), C.uintptr_t(_p1)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setdomainname(p []byte) (err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + var _p1 int + _p1 = len(p) + r0, er := C.setdomainname(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sethostname(p []byte) (err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + var _p1 int + _p1 = len(p) + r0, er := C.sethostname(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + r0, er := C.setpgid(C.int(pid), C.int(pgid)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, er := C.setsid() + pid = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tv *Timeval) (err error) { + r0, er := C.settimeofday(C.uintptr_t(uintptr(unsafe.Pointer(tv)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + r0, er := C.setuid(C.int(uid)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(uid int) (err error) { + r0, er := C.setgid(C.int(uid)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + r0, er := C.setpriority(C.int(which), C.int(who), C.int(prio)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.statx(C.int(dirfd), C.uintptr_t(_p0), C.int(flags), C.int(mask), C.uintptr_t(uintptr(unsafe.Pointer(stat)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() { + C.sync() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, er := C.tee(C.int(rfd), C.int(wfd), C.int(len), C.int(flags)) + n = int64(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Times(tms *Tms) (ticks uintptr, err error) { + r0, er := C.times(C.uintptr_t(uintptr(unsafe.Pointer(tms)))) + ticks = uintptr(r0) + if uintptr(r0) == ^uintptr(0) && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(mask int) (oldmask int) { + r0, _ := C.umask(C.int(mask)) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Uname(buf *Utsname) (err error) { + r0, er := C.uname(C.uintptr_t(uintptr(unsafe.Pointer(buf)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.unlink(C.uintptr_t(_p0)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.unlinkat(C.int(dirfd), C.uintptr_t(_p0), C.int(flags)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unshare(flags int) (err error) { + r0, er := C.unshare(C.int(flags)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + r0, er := C.ustat(C.int(dev), C.uintptr_t(uintptr(unsafe.Pointer(ubuf)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + var _p1 int + _p1 = len(p) + r0, er := C.write(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, p *byte, np int) (n int, err error) { + r0, er := C.read(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(p))), C.size_t(np)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, p *byte, np int) (n int, err error) { + r0, er := C.write(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(p))), C.size_t(np)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(oldfd int, newfd int) (err error) { + r0, er := C.dup2(C.int(oldfd), C.int(newfd)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + r0, er := C.posix_fadvise64(C.int(fd), C.longlong(offset), C.longlong(length), C.int(advice)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + r0, er := C.fchown(C.int(fd), C.int(uid), C.int(gid)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + r0, er := C.fstat(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(stat)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.fstatat(C.int(dirfd), C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(stat))), C.int(flags)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + r0, er := C.fstatfs(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(buf)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + r0, er := C.ftruncate(C.int(fd), C.longlong(length)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := C.getegid() + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := C.geteuid() + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := C.getgid() + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := C.getuid() + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.lchown(C.uintptr_t(_p0), C.int(uid), C.int(gid)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + r0, er := C.listen(C.int(s), C.int(n)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.lstat(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(stat)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + r0, er := C.pause() + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + var _p1 int + _p1 = len(p) + r0, er := C.pread64(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.longlong(offset)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + var _p1 int + _p1 = len(p) + r0, er := C.pwrite64(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.longlong(offset)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, er := C.pselect(C.int(nfd), C.uintptr_t(uintptr(unsafe.Pointer(r))), C.uintptr_t(uintptr(unsafe.Pointer(w))), C.uintptr_t(uintptr(unsafe.Pointer(e))), C.uintptr_t(uintptr(unsafe.Pointer(timeout))), C.uintptr_t(uintptr(unsafe.Pointer(sigmask)))) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + r0, er := C.setregid(C.int(rgid), C.int(egid)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + r0, er := C.setreuid(C.int(ruid), C.int(euid)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + r0, er := C.shutdown(C.int(fd), C.int(how)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) { + r0, er := C.splice(C.int(rfd), C.uintptr_t(uintptr(unsafe.Pointer(roff))), C.int(wfd), C.uintptr_t(uintptr(unsafe.Pointer(woff))), C.int(len), C.int(flags)) + n = int64(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.stat(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(stat)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, buf *Statfs_t) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.statfs(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(buf)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.truncate(C.uintptr_t(_p0), C.longlong(length)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + r0, er := C.bind(C.int(s), C.uintptr_t(uintptr(addr)), C.uintptr_t(uintptr(addrlen))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + r0, er := C.connect(C.int(s), C.uintptr_t(uintptr(addr)), C.uintptr_t(uintptr(addrlen))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, er := C.getgroups(C.int(n), C.uintptr_t(uintptr(unsafe.Pointer(list)))) + nn = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + r0, er := C.setgroups(C.int(n), C.uintptr_t(uintptr(unsafe.Pointer(list)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + r0, er := C.getsockopt(C.int(s), C.int(level), C.int(name), C.uintptr_t(uintptr(val)), C.uintptr_t(uintptr(unsafe.Pointer(vallen)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + r0, er := C.setsockopt(C.int(s), C.int(level), C.int(name), C.uintptr_t(uintptr(val)), C.uintptr_t(vallen)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, er := C.socket(C.int(domain), C.int(typ), C.int(proto)) + fd = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + r0, er := C.socketpair(C.int(domain), C.int(typ), C.int(proto), C.uintptr_t(uintptr(unsafe.Pointer(fd)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + r0, er := C.getpeername(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(rsa))), C.uintptr_t(uintptr(unsafe.Pointer(addrlen)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + r0, er := C.getsockname(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(rsa))), C.uintptr_t(uintptr(unsafe.Pointer(addrlen)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + var _p1 int + _p1 = len(p) + r0, er := C.recvfrom(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(flags), C.uintptr_t(uintptr(unsafe.Pointer(from))), C.uintptr_t(uintptr(unsafe.Pointer(fromlen)))) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + var _p1 int + _p1 = len(buf) + r0, er := C.sendto(C.int(s), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(flags), C.uintptr_t(uintptr(to)), C.uintptr_t(uintptr(addrlen))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, er := C.recvmsg(C.int(s), C.uintptr_t(uintptr(unsafe.Pointer(msg))), C.int(flags)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, er := C.sendmsg(C.int(s), C.uintptr_t(uintptr(unsafe.Pointer(msg))), C.int(flags)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + r0, er := C.munmap(C.uintptr_t(addr), C.uintptr_t(length)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, advice int) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + var _p1 int + _p1 = len(b) + r0, er := C.madvise(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(advice)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + var _p1 int + _p1 = len(b) + r0, er := C.mprotect(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(prot)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + var _p1 int + _p1 = len(b) + r0, er := C.mlock(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + r0, er := C.mlockall(C.int(flags)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + var _p1 int + _p1 = len(b) + r0, er := C.msync(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(flags)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + var _p1 int + _p1 = len(b) + r0, er := C.munlock(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + r0, er := C.munlockall() + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe(p *[2]_C_int) (err error) { + r0, er := C.pipe(C.uintptr_t(uintptr(unsafe.Pointer(p)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + r0, er := C.pipe2(C.uintptr_t(uintptr(unsafe.Pointer(p))), C.int(flags)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, er := C.poll(C.uintptr_t(uintptr(unsafe.Pointer(fds))), C.int(nfds), C.int(timeout)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func gettimeofday(tv *Timeval, tzp *Timezone) (err error) { + r0, er := C.gettimeofday(C.uintptr_t(uintptr(unsafe.Pointer(tv))), C.uintptr_t(uintptr(unsafe.Pointer(tzp)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Time(t *Time_t) (tt Time_t, err error) { + r0, er := C.time(C.uintptr_t(uintptr(unsafe.Pointer(t)))) + tt = Time_t(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, buf *Utimbuf) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.utime(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(buf)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + r0, er := C.getrlimit64(C.int(resource), C.uintptr_t(uintptr(unsafe.Pointer(rlim)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(resource int, rlim *Rlimit) (err error) { + r0, er := C.setrlimit64(C.int(resource), C.uintptr_t(uintptr(unsafe.Pointer(rlim)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (off int64, err error) { + r0, er := C.lseek64(C.int(fd), C.longlong(offset), C.int(whence)) + off = int64(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + r0, er := C.mmap(C.uintptr_t(addr), C.uintptr_t(length), C.int(prot), C.int(flags), C.int(fd), C.longlong(offset)) + xaddr = uintptr(r0) + if uintptr(r0) == ^uintptr(0) && er != nil { + err = er + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go new file mode 100644 index 00000000..b33f9ecc --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go @@ -0,0 +1,1495 @@ +// mksyscall_aix.pl -aix -tags aix,ppc64 syscall_aix.go syscall_aix_ppc64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build aix,ppc64 + +package unix + +/* +#include +int utimes(uintptr_t, uintptr_t); +int utimensat(int, uintptr_t, uintptr_t, int); +int getcwd(uintptr_t, size_t); +int accept(int, uintptr_t, uintptr_t); +int getdirent(int, uintptr_t, size_t); +int wait4(int, uintptr_t, int, uintptr_t); +int ioctl(int, int, uintptr_t); +int fcntl(uintptr_t, int, uintptr_t); +int acct(uintptr_t); +int chdir(uintptr_t); +int chroot(uintptr_t); +int close(int); +int dup(int); +int dup3(int, int, int); +void exit(int); +int faccessat(int, uintptr_t, unsigned int, int); +int fallocate(int, unsigned int, long long, long long); +int fchdir(int); +int fchmod(int, unsigned int); +int fchmodat(int, uintptr_t, unsigned int, int); +int fchownat(int, uintptr_t, int, int, int); +int fdatasync(int); +int fsync(int); +int getpgid(int); +int getpgrp(); +int getpid(); +int getppid(); +int getpriority(int, int); +int getrusage(int, uintptr_t); +int getsid(int); +int kill(int, int); +int syslog(int, uintptr_t, size_t); +int mkdirat(int, uintptr_t, unsigned int); +int mkfifo(uintptr_t, unsigned int); +int mknodat(int, uintptr_t, unsigned int, int); +int nanosleep(uintptr_t, uintptr_t); +int open64(uintptr_t, int, unsigned int); +int openat(int, uintptr_t, int, unsigned int); +int read(int, uintptr_t, size_t); +int readlink(uintptr_t, uintptr_t, size_t); +int removexattr(uintptr_t, uintptr_t); +int renameat(int, uintptr_t, int, uintptr_t); +int setdomainname(uintptr_t, size_t); +int sethostname(uintptr_t, size_t); +int setpgid(int, int); +int setsid(); +int settimeofday(uintptr_t); +int setuid(int); +int setgid(int); +int setpriority(int, int, int); +int statx(int, uintptr_t, int, int, uintptr_t); +int sync(); +long long tee(int, int, int, int); +uintptr_t times(uintptr_t); +int umask(int); +int uname(uintptr_t); +int unlink(uintptr_t); +int unlinkat(int, uintptr_t, int); +int unshare(int); +int ustat(int, uintptr_t); +int write(int, uintptr_t, size_t); +int dup2(int, int); +int posix_fadvise64(int, long long, long long, int); +int fchown(int, int, int); +int fstat(int, uintptr_t); +int fstatat(int, uintptr_t, uintptr_t, int); +int fstatfs(int, uintptr_t); +int ftruncate(int, long long); +int getegid(); +int geteuid(); +int getgid(); +int getuid(); +int lchown(uintptr_t, int, int); +int listen(int, int); +int lstat(uintptr_t, uintptr_t); +int pause(); +int pread64(int, uintptr_t, size_t, long long); +int pwrite64(int, uintptr_t, size_t, long long); +int pselect(int, uintptr_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t); +int setregid(int, int); +int setreuid(int, int); +int shutdown(int, int); +long long splice(int, uintptr_t, int, uintptr_t, int, int); +int stat(uintptr_t, uintptr_t); +int statfs(uintptr_t, uintptr_t); +int truncate(uintptr_t, long long); +int bind(int, uintptr_t, uintptr_t); +int connect(int, uintptr_t, uintptr_t); +int getgroups(int, uintptr_t); +int setgroups(int, uintptr_t); +int getsockopt(int, int, int, uintptr_t, uintptr_t); +int setsockopt(int, int, int, uintptr_t, uintptr_t); +int socket(int, int, int); +int socketpair(int, int, int, uintptr_t); +int getpeername(int, uintptr_t, uintptr_t); +int getsockname(int, uintptr_t, uintptr_t); +int recvfrom(int, uintptr_t, size_t, int, uintptr_t, uintptr_t); +int sendto(int, uintptr_t, size_t, int, uintptr_t, uintptr_t); +int recvmsg(int, uintptr_t, int); +int sendmsg(int, uintptr_t, int); +int munmap(uintptr_t, uintptr_t); +int madvise(uintptr_t, size_t, int); +int mprotect(uintptr_t, size_t, int); +int mlock(uintptr_t, size_t); +int mlockall(int); +int msync(uintptr_t, size_t, int); +int munlock(uintptr_t, size_t); +int munlockall(); +int pipe(uintptr_t); +int pipe2(uintptr_t, int); +int poll(uintptr_t, int, int); +int gettimeofday(uintptr_t, uintptr_t); +int time(uintptr_t); +int utime(uintptr_t, uintptr_t); +int getrlimit(int, uintptr_t); +int setrlimit(int, uintptr_t); +long long lseek(int, long long, int); +uintptr_t mmap64(uintptr_t, uintptr_t, int, int, int, long long); + +*/ +import "C" +import ( + "syscall" + "unsafe" +) + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.utimes(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(times)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flag int) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.utimensat(C.int(dirfd), C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(times))), C.int(flag)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getcwd(buf []byte) (err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + var _p1 int + _p1 = len(buf) + r0, er := C.getcwd(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, er := C.accept(C.int(s), C.uintptr_t(uintptr(unsafe.Pointer(rsa))), C.uintptr_t(uintptr(unsafe.Pointer(addrlen)))) + fd = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getdirent(fd int, buf []byte) (n int, err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + var _p1 int + _p1 = len(buf) + r0, er := C.getdirent(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid Pid_t, status *_C_int, options int, rusage *Rusage) (wpid Pid_t, err error) { + r0, er := C.wait4(C.int(pid), C.uintptr_t(uintptr(unsafe.Pointer(status))), C.int(options), C.uintptr_t(uintptr(unsafe.Pointer(rusage)))) + wpid = Pid_t(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + r0, er := C.ioctl(C.int(fd), C.int(req), C.uintptr_t(arg)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FcntlInt(fd uintptr, cmd int, arg int) (r int, err error) { + r0, er := C.fcntl(C.uintptr_t(fd), C.int(cmd), C.uintptr_t(arg)) + r = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FcntlFlock(fd uintptr, cmd int, lk *Flock_t) (err error) { + r0, er := C.fcntl(C.uintptr_t(fd), C.int(cmd), C.uintptr_t(uintptr(unsafe.Pointer(lk)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Acct(path string) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.acct(C.uintptr_t(_p0)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.chdir(C.uintptr_t(_p0)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.chroot(C.uintptr_t(_p0)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + r0, er := C.close(C.int(fd)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(oldfd int) (fd int, err error) { + r0, er := C.dup(C.int(oldfd)) + fd = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup3(oldfd int, newfd int, flags int) (err error) { + r0, er := C.dup3(C.int(oldfd), C.int(newfd), C.int(flags)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + C.exit(C.int(code)) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.faccessat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(flags)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + r0, er := C.fallocate(C.int(fd), C.uint(mode), C.longlong(off), C.longlong(len)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + r0, er := C.fchdir(C.int(fd)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + r0, er := C.fchmod(C.int(fd), C.uint(mode)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.fchmodat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(flags)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.fchownat(C.int(dirfd), C.uintptr_t(_p0), C.int(uid), C.int(gid), C.int(flags)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, er := C.fcntl(C.uintptr_t(fd), C.int(cmd), C.uintptr_t(arg)) + val = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fdatasync(fd int) (err error) { + r0, er := C.fdatasync(C.int(fd)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + r0, er := C.fsync(C.int(fd)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, er := C.getpgid(C.int(pid)) + pgid = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pid int) { + r0, _ := C.getpgrp() + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _ := C.getpid() + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _ := C.getppid() + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, er := C.getpriority(C.int(which), C.int(who)) + prio = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + r0, er := C.getrusage(C.int(who), C.uintptr_t(uintptr(unsafe.Pointer(rusage)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, er := C.getsid(C.int(pid)) + sid = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, sig syscall.Signal) (err error) { + r0, er := C.kill(C.int(pid), C.int(sig)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Klogctl(typ int, buf []byte) (n int, err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + var _p1 int + _p1 = len(buf) + r0, er := C.syslog(C.int(typ), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.mkdirat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.mkfifo(C.uintptr_t(_p0), C.uint(mode)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.mknodat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(dev)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + r0, er := C.nanosleep(C.uintptr_t(uintptr(unsafe.Pointer(time))), C.uintptr_t(uintptr(unsafe.Pointer(leftover)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.open64(C.uintptr_t(_p0), C.int(mode), C.uint(perm)) + fd = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.openat(C.int(dirfd), C.uintptr_t(_p0), C.int(flags), C.uint(mode)) + fd = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + var _p1 int + _p1 = len(p) + r0, er := C.read(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + var _p1 *byte + if len(buf) > 0 { + _p1 = &buf[0] + } + var _p2 int + _p2 = len(buf) + r0, er := C.readlink(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(_p1))), C.size_t(_p2)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Removexattr(path string, attr string) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + _p1 := uintptr(unsafe.Pointer(C.CString(attr))) + r0, er := C.removexattr(C.uintptr_t(_p0), C.uintptr_t(_p1)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(oldpath))) + _p1 := uintptr(unsafe.Pointer(C.CString(newpath))) + r0, er := C.renameat(C.int(olddirfd), C.uintptr_t(_p0), C.int(newdirfd), C.uintptr_t(_p1)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setdomainname(p []byte) (err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + var _p1 int + _p1 = len(p) + r0, er := C.setdomainname(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sethostname(p []byte) (err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + var _p1 int + _p1 = len(p) + r0, er := C.sethostname(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + r0, er := C.setpgid(C.int(pid), C.int(pgid)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, er := C.setsid() + pid = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tv *Timeval) (err error) { + r0, er := C.settimeofday(C.uintptr_t(uintptr(unsafe.Pointer(tv)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + r0, er := C.setuid(C.int(uid)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(uid int) (err error) { + r0, er := C.setgid(C.int(uid)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + r0, er := C.setpriority(C.int(which), C.int(who), C.int(prio)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.statx(C.int(dirfd), C.uintptr_t(_p0), C.int(flags), C.int(mask), C.uintptr_t(uintptr(unsafe.Pointer(stat)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() { + C.sync() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, er := C.tee(C.int(rfd), C.int(wfd), C.int(len), C.int(flags)) + n = int64(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Times(tms *Tms) (ticks uintptr, err error) { + r0, er := C.times(C.uintptr_t(uintptr(unsafe.Pointer(tms)))) + ticks = uintptr(r0) + if uintptr(r0) == ^uintptr(0) && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(mask int) (oldmask int) { + r0, _ := C.umask(C.int(mask)) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Uname(buf *Utsname) (err error) { + r0, er := C.uname(C.uintptr_t(uintptr(unsafe.Pointer(buf)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.unlink(C.uintptr_t(_p0)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.unlinkat(C.int(dirfd), C.uintptr_t(_p0), C.int(flags)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unshare(flags int) (err error) { + r0, er := C.unshare(C.int(flags)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + r0, er := C.ustat(C.int(dev), C.uintptr_t(uintptr(unsafe.Pointer(ubuf)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + var _p1 int + _p1 = len(p) + r0, er := C.write(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, p *byte, np int) (n int, err error) { + r0, er := C.read(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(p))), C.size_t(np)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, p *byte, np int) (n int, err error) { + r0, er := C.write(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(p))), C.size_t(np)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(oldfd int, newfd int) (err error) { + r0, er := C.dup2(C.int(oldfd), C.int(newfd)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + r0, er := C.posix_fadvise64(C.int(fd), C.longlong(offset), C.longlong(length), C.int(advice)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + r0, er := C.fchown(C.int(fd), C.int(uid), C.int(gid)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + r0, er := C.fstat(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(stat)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.fstatat(C.int(dirfd), C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(stat))), C.int(flags)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + r0, er := C.fstatfs(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(buf)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + r0, er := C.ftruncate(C.int(fd), C.longlong(length)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := C.getegid() + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := C.geteuid() + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := C.getgid() + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := C.getuid() + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.lchown(C.uintptr_t(_p0), C.int(uid), C.int(gid)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + r0, er := C.listen(C.int(s), C.int(n)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.lstat(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(stat)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + r0, er := C.pause() + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + var _p1 int + _p1 = len(p) + r0, er := C.pread64(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.longlong(offset)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + var _p1 int + _p1 = len(p) + r0, er := C.pwrite64(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.longlong(offset)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, er := C.pselect(C.int(nfd), C.uintptr_t(uintptr(unsafe.Pointer(r))), C.uintptr_t(uintptr(unsafe.Pointer(w))), C.uintptr_t(uintptr(unsafe.Pointer(e))), C.uintptr_t(uintptr(unsafe.Pointer(timeout))), C.uintptr_t(uintptr(unsafe.Pointer(sigmask)))) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + r0, er := C.setregid(C.int(rgid), C.int(egid)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + r0, er := C.setreuid(C.int(ruid), C.int(euid)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + r0, er := C.shutdown(C.int(fd), C.int(how)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) { + r0, er := C.splice(C.int(rfd), C.uintptr_t(uintptr(unsafe.Pointer(roff))), C.int(wfd), C.uintptr_t(uintptr(unsafe.Pointer(woff))), C.int(len), C.int(flags)) + n = int64(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.stat(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(stat)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, buf *Statfs_t) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.statfs(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(buf)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.truncate(C.uintptr_t(_p0), C.longlong(length)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + r0, er := C.bind(C.int(s), C.uintptr_t(uintptr(addr)), C.uintptr_t(uintptr(addrlen))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + r0, er := C.connect(C.int(s), C.uintptr_t(uintptr(addr)), C.uintptr_t(uintptr(addrlen))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, er := C.getgroups(C.int(n), C.uintptr_t(uintptr(unsafe.Pointer(list)))) + nn = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + r0, er := C.setgroups(C.int(n), C.uintptr_t(uintptr(unsafe.Pointer(list)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + r0, er := C.getsockopt(C.int(s), C.int(level), C.int(name), C.uintptr_t(uintptr(val)), C.uintptr_t(uintptr(unsafe.Pointer(vallen)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + r0, er := C.setsockopt(C.int(s), C.int(level), C.int(name), C.uintptr_t(uintptr(val)), C.uintptr_t(vallen)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, er := C.socket(C.int(domain), C.int(typ), C.int(proto)) + fd = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + r0, er := C.socketpair(C.int(domain), C.int(typ), C.int(proto), C.uintptr_t(uintptr(unsafe.Pointer(fd)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + r0, er := C.getpeername(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(rsa))), C.uintptr_t(uintptr(unsafe.Pointer(addrlen)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + r0, er := C.getsockname(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(rsa))), C.uintptr_t(uintptr(unsafe.Pointer(addrlen)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + var _p1 int + _p1 = len(p) + r0, er := C.recvfrom(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(flags), C.uintptr_t(uintptr(unsafe.Pointer(from))), C.uintptr_t(uintptr(unsafe.Pointer(fromlen)))) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + var _p1 int + _p1 = len(buf) + r0, er := C.sendto(C.int(s), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(flags), C.uintptr_t(uintptr(to)), C.uintptr_t(uintptr(addrlen))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, er := C.recvmsg(C.int(s), C.uintptr_t(uintptr(unsafe.Pointer(msg))), C.int(flags)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, er := C.sendmsg(C.int(s), C.uintptr_t(uintptr(unsafe.Pointer(msg))), C.int(flags)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + r0, er := C.munmap(C.uintptr_t(addr), C.uintptr_t(length)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, advice int) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + var _p1 int + _p1 = len(b) + r0, er := C.madvise(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(advice)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + var _p1 int + _p1 = len(b) + r0, er := C.mprotect(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(prot)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + var _p1 int + _p1 = len(b) + r0, er := C.mlock(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + r0, er := C.mlockall(C.int(flags)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + var _p1 int + _p1 = len(b) + r0, er := C.msync(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(flags)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + var _p1 int + _p1 = len(b) + r0, er := C.munlock(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + r0, er := C.munlockall() + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe(p *[2]_C_int) (err error) { + r0, er := C.pipe(C.uintptr_t(uintptr(unsafe.Pointer(p)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + r0, er := C.pipe2(C.uintptr_t(uintptr(unsafe.Pointer(p))), C.int(flags)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, er := C.poll(C.uintptr_t(uintptr(unsafe.Pointer(fds))), C.int(nfds), C.int(timeout)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func gettimeofday(tv *Timeval, tzp *Timezone) (err error) { + r0, er := C.gettimeofday(C.uintptr_t(uintptr(unsafe.Pointer(tv))), C.uintptr_t(uintptr(unsafe.Pointer(tzp)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Time(t *Time_t) (tt Time_t, err error) { + r0, er := C.time(C.uintptr_t(uintptr(unsafe.Pointer(t)))) + tt = Time_t(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, buf *Utimbuf) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.utime(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(buf)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + r0, er := C.getrlimit(C.int(resource), C.uintptr_t(uintptr(unsafe.Pointer(rlim)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(resource int, rlim *Rlimit) (err error) { + r0, er := C.setrlimit(C.int(resource), C.uintptr_t(uintptr(unsafe.Pointer(rlim)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (off int64, err error) { + r0, er := C.lseek(C.int(fd), C.longlong(offset), C.int(whence)) + off = int64(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + r0, er := C.mmap64(C.uintptr_t(addr), C.uintptr_t(length), C.int(prot), C.int(flags), C.int(fd), C.longlong(offset)) + xaddr = uintptr(r0) + if uintptr(r0) == ^uintptr(0) && er != nil { + err = er + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go index ac02d4d8..9ce06df6 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go @@ -420,6 +420,22 @@ func getxattr(path string, attr string, dest *byte, size int, position uint32, o // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options)) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -440,6 +456,21 @@ func setxattr(path string, attr string, data *byte, size int, position uint32, o // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func removexattr(path string, attr string, options int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -460,6 +491,21 @@ func removexattr(path string, attr string, options int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func fremovexattr(fd int, attr string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func listxattr(path string, dest *byte, size int, options int) (sz int, err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -476,6 +522,17 @@ func listxattr(path string, dest *byte, size int, options int) (sz int, err erro // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) { + r0, _, e1 := Syscall6(SYS_FLISTXATTR, uintptr(fd), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func kill(pid int, signum int, posix int) (err error) { _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), uintptr(posix)) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go index 1dd3cfa0..de992704 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go @@ -420,6 +420,22 @@ func getxattr(path string, attr string, dest *byte, size int, position uint32, o // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options)) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -440,6 +456,21 @@ func setxattr(path string, attr string, data *byte, size int, position uint32, o // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func removexattr(path string, attr string, options int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -460,6 +491,21 @@ func removexattr(path string, attr string, options int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func fremovexattr(fd int, attr string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func listxattr(path string, dest *byte, size int, options int) (sz int, err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -476,6 +522,17 @@ func listxattr(path string, dest *byte, size int, options int) (sz int, err erro // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) { + r0, _, e1 := Syscall6(SYS_FLISTXATTR, uintptr(fd), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func kill(pid int, signum int, posix int) (err error) { _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), uintptr(posix)) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go index cab46e74..81c4f093 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go @@ -420,6 +420,22 @@ func getxattr(path string, attr string, dest *byte, size int, position uint32, o // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options)) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -440,6 +456,21 @@ func setxattr(path string, attr string, data *byte, size int, position uint32, o // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func removexattr(path string, attr string, options int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -460,6 +491,21 @@ func removexattr(path string, attr string, options int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func fremovexattr(fd int, attr string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func listxattr(path string, dest *byte, size int, options int) (sz int, err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -476,6 +522,17 @@ func listxattr(path string, dest *byte, size int, options int) (sz int, err erro // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) { + r0, _, e1 := Syscall6(SYS_FLISTXATTR, uintptr(fd), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func kill(pid int, signum int, posix int) (err error) { _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), uintptr(posix)) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go index 13478dd0..338c32d4 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go @@ -420,6 +420,22 @@ func getxattr(path string, attr string, dest *byte, size int, position uint32, o // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options)) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -440,6 +456,21 @@ func setxattr(path string, attr string, data *byte, size int, position uint32, o // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func removexattr(path string, attr string, options int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -460,6 +491,21 @@ func removexattr(path string, attr string, options int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func fremovexattr(fd int, attr string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func listxattr(path string, dest *byte, size int, options int) (sz int, err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -476,6 +522,17 @@ func listxattr(path string, dest *byte, size int, options int) (sz int, err erro // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) { + r0, _, e1 := Syscall6(SYS_FLISTXATTR, uintptr(fd), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func kill(pid int, signum int, posix int) (err error) { _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), uintptr(posix)) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go index a86434a7..ad77882b 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go @@ -377,10 +377,8 @@ func Munlockall() (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func pipe() (r int, w int, err error) { - r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0) - r = int(r0) - w = int(r1) +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) if e1 != 0 { err = errnoErr(e1) } diff --git a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go index 040e2f76..d3ba6c46 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go @@ -377,10 +377,8 @@ func Munlockall() (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func pipe() (r int, w int, err error) { - r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0) - r = int(r0) - w = int(r1) +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) if e1 != 0 { err = errnoErr(e1) } diff --git a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go index cddc5e86..9dfd77b6 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go @@ -377,10 +377,8 @@ func Munlockall() (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func pipe() (r int, w int, err error) { - r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0) - r = int(r0) - w = int(r1) +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) if e1 != 0 { err = errnoErr(e1) } diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go index 237e9609..8e8d427d 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go @@ -574,6 +574,45 @@ func Fdatasync(fd int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flistxattr(fd int, dest []byte) (sz int, err error) { + var _p0 unsafe.Pointer + if len(dest) > 0 { + _p0 = unsafe.Pointer(&dest[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Flock(fd int, how int) (err error) { _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) if e1 != 0 { @@ -584,6 +623,42 @@ func Flock(fd int, how int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Fremovexattr(fd int, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Fsync(fd int) (err error) { _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) if e1 != 0 { @@ -1063,6 +1138,26 @@ func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err e // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) { var _p0 *byte _p0, err = BytePtrFromString(keyType) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go index 9b40f580..2f60780c 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go @@ -574,6 +574,45 @@ func Fdatasync(fd int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flistxattr(fd int, dest []byte) (sz int, err error) { + var _p0 unsafe.Pointer + if len(dest) > 0 { + _p0 = unsafe.Pointer(&dest[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Flock(fd int, how int) (err error) { _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) if e1 != 0 { @@ -584,6 +623,42 @@ func Flock(fd int, how int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Fremovexattr(fd int, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Fsync(fd int) (err error) { _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) if e1 != 0 { @@ -1063,6 +1138,26 @@ func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err e // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) { var _p0 *byte _p0, err = BytePtrFromString(keyType) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go index d93cc2f3..d29a11c9 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go @@ -574,6 +574,45 @@ func Fdatasync(fd int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flistxattr(fd int, dest []byte) (sz int, err error) { + var _p0 unsafe.Pointer + if len(dest) > 0 { + _p0 = unsafe.Pointer(&dest[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Flock(fd int, how int) (err error) { _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) if e1 != 0 { @@ -584,6 +623,42 @@ func Flock(fd int, how int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Fremovexattr(fd int, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Fsync(fd int) (err error) { _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) if e1 != 0 { @@ -1063,6 +1138,26 @@ func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err e // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) { var _p0 *byte _p0, err = BytePtrFromString(keyType) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go index 5f7d0213..d03eb296 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go @@ -574,6 +574,45 @@ func Fdatasync(fd int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flistxattr(fd int, dest []byte) (sz int, err error) { + var _p0 unsafe.Pointer + if len(dest) > 0 { + _p0 = unsafe.Pointer(&dest[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Flock(fd int, how int) (err error) { _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) if e1 != 0 { @@ -584,6 +623,42 @@ func Flock(fd int, how int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Fremovexattr(fd int, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Fsync(fd int) (err error) { _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) if e1 != 0 { @@ -1063,6 +1138,26 @@ func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err e // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) { var _p0 *byte _p0, err = BytePtrFromString(keyType) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go index e7617052..dea09328 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go @@ -574,6 +574,45 @@ func Fdatasync(fd int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flistxattr(fd int, dest []byte) (sz int, err error) { + var _p0 unsafe.Pointer + if len(dest) > 0 { + _p0 = unsafe.Pointer(&dest[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Flock(fd int, how int) (err error) { _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) if e1 != 0 { @@ -584,6 +623,42 @@ func Flock(fd int, how int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Fremovexattr(fd int, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Fsync(fd int) (err error) { _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) if e1 != 0 { @@ -1063,6 +1138,26 @@ func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err e // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) { var _p0 *byte _p0, err = BytePtrFromString(keyType) @@ -2137,6 +2232,18 @@ func pipe2(p *[2]_C_int, flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func pipe() (p1 int, p2 int, err error) { + r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0) + p1 = int(r0) + p2 = int(r1) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) { r0, _, e1 := Syscall6(SYS_MMAP2, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(pageOffset)) xaddr = uintptr(r0) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go index 382e072f..31bbcff4 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go @@ -574,6 +574,45 @@ func Fdatasync(fd int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flistxattr(fd int, dest []byte) (sz int, err error) { + var _p0 unsafe.Pointer + if len(dest) > 0 { + _p0 = unsafe.Pointer(&dest[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Flock(fd int, how int) (err error) { _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) if e1 != 0 { @@ -584,6 +623,42 @@ func Flock(fd int, how int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Fremovexattr(fd int, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Fsync(fd int) (err error) { _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) if e1 != 0 { @@ -1063,6 +1138,26 @@ func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err e // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) { var _p0 *byte _p0, err = BytePtrFromString(keyType) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go index da33eb12..e025a33a 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go @@ -574,6 +574,45 @@ func Fdatasync(fd int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flistxattr(fd int, dest []byte) (sz int, err error) { + var _p0 unsafe.Pointer + if len(dest) > 0 { + _p0 = unsafe.Pointer(&dest[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Flock(fd int, how int) (err error) { _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) if e1 != 0 { @@ -584,6 +623,42 @@ func Flock(fd int, how int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Fremovexattr(fd int, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Fsync(fd int) (err error) { _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) if e1 != 0 { @@ -1063,6 +1138,26 @@ func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err e // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) { var _p0 *byte _p0, err = BytePtrFromString(keyType) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go index f6e45189..57d7d931 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go @@ -574,6 +574,45 @@ func Fdatasync(fd int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flistxattr(fd int, dest []byte) (sz int, err error) { + var _p0 unsafe.Pointer + if len(dest) > 0 { + _p0 = unsafe.Pointer(&dest[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Flock(fd int, how int) (err error) { _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) if e1 != 0 { @@ -584,6 +623,42 @@ func Flock(fd int, how int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Fremovexattr(fd int, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Fsync(fd int) (err error) { _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) if e1 != 0 { @@ -1063,6 +1138,26 @@ func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err e // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) { var _p0 *byte _p0, err = BytePtrFromString(keyType) @@ -2137,6 +2232,18 @@ func pipe2(p *[2]_C_int, flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func pipe() (p1 int, p2 int, err error) { + r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0) + p1 = int(r0) + p2 = int(r1) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) { r0, _, e1 := Syscall6(SYS_MMAP2, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(pageOffset)) xaddr = uintptr(r0) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go index 7cc1bfd1..f3fae1d1 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go @@ -574,6 +574,45 @@ func Fdatasync(fd int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flistxattr(fd int, dest []byte) (sz int, err error) { + var _p0 unsafe.Pointer + if len(dest) > 0 { + _p0 = unsafe.Pointer(&dest[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Flock(fd int, how int) (err error) { _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) if e1 != 0 { @@ -584,6 +623,42 @@ func Flock(fd int, how int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Fremovexattr(fd int, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Fsync(fd int) (err error) { _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) if e1 != 0 { @@ -1063,6 +1138,26 @@ func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err e // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) { var _p0 *byte _p0, err = BytePtrFromString(keyType) @@ -1903,16 +1998,6 @@ func Statfs(path string, buf *Statfs_t) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func SyncFileRange(fd int, off int64, n int64, flags int) (err error) { - _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE2, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Truncate(path string, length int64) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -2222,3 +2307,13 @@ func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { } return } + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func syncFileRange2(fd int, flags int, off int64, n int64) (err error) { + _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE2, uintptr(fd), uintptr(flags), uintptr(off), uintptr(n), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go index c3dcb381..011b0a53 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go @@ -574,6 +574,45 @@ func Fdatasync(fd int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flistxattr(fd int, dest []byte) (sz int, err error) { + var _p0 unsafe.Pointer + if len(dest) > 0 { + _p0 = unsafe.Pointer(&dest[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Flock(fd int, how int) (err error) { _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) if e1 != 0 { @@ -584,6 +623,42 @@ func Flock(fd int, how int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Fremovexattr(fd int, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Fsync(fd int) (err error) { _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) if e1 != 0 { @@ -1063,6 +1138,26 @@ func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err e // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) { var _p0 *byte _p0, err = BytePtrFromString(keyType) @@ -1903,16 +1998,6 @@ func Statfs(path string, buf *Statfs_t) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func SyncFileRange(fd int, off int64, n int64, flags int) (err error) { - _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE2, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Truncate(path string, length int64) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -2222,3 +2307,13 @@ func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { } return } + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func syncFileRange2(fd int, flags int, off int64, n int64) (err error) { + _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE2, uintptr(fd), uintptr(flags), uintptr(off), uintptr(n), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go new file mode 100644 index 00000000..b086f7ed --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go @@ -0,0 +1,2114 @@ +// mksyscall.pl -tags linux,riscv64 syscall_linux.go syscall_linux_riscv64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build linux,riscv64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fchmodat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlJoin(cmd int, arg2 string) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg2) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg3) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(arg4) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) { + var _p0 unsafe.Pointer + if len(payload) > 0 { + _p0 = unsafe.Pointer(&payload[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(source) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(target) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(fstype) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Acct(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(payload) > 0 { + _p2 = unsafe.Pointer(&payload[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtimex(buf *Timex) (state int, err error) { + r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0) + state = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { + r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(oldfd int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup3(oldfd int, newfd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate1(flag int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) { + _, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Eventfd(initval uint, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + SyscallNoError(SYS_EXIT_GROUP, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fdatasync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flistxattr(fd int, dest []byte) (sz int, err error) { + var _p0 unsafe.Pointer + if len(dest) > 0 { + _p0 = unsafe.Pointer(&dest[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fremovexattr(fd int, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _ := RawSyscallNoError(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _ := RawSyscallNoError(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrandom(buf []byte, flags int) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettid() (tid int) { + r0, _ := RawSyscallNoError(SYS_GETTID, 0, 0, 0) + tid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathname) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask)) + watchdesc = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyInit1(flags int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0) + success = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Klogctl(typ int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lgetxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Llistxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lremovexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lsetxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_PERF_EVENT_OPEN, uintptr(unsafe.Pointer(attr)), uintptr(pid), uintptr(cpu), uintptr(groupFd), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PivotRoot(newroot string, putold string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(newroot) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(putold) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) { + _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Removexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(callback) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setdomainname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sethostname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setns(fd int, nstype int) (err error) { + _, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_STATX, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mask), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() { + SyscallNoError(SYS_SYNC, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Syncfs(fd int) (err error) { + _, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sysinfo(info *Sysinfo_t) (err error) { + _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Times(tms *Tms) (ticks uintptr, err error) { + r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0) + ticks = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(mask int) (oldmask int) { + r0, _ := RawSyscallNoError(SYS_UMASK, uintptr(mask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Uname(buf *Utsname) (err error) { + _, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(target string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(target) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unshare(flags int) (err error) { + _, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func exitThread(code int) (err error) { + _, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, advice int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func faccessat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_PWAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (off int64, err error) { + r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)) + off = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsgid(gid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsuid(uid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(resource int, rlim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, buf *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func SyncFileRange(fd int, off int64, n int64, flags int) (err error) { + _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset)) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go index 38f903cd..c637da95 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go @@ -574,6 +574,45 @@ func Fdatasync(fd int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flistxattr(fd int, dest []byte) (sz int, err error) { + var _p0 unsafe.Pointer + if len(dest) > 0 { + _p0 = unsafe.Pointer(&dest[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Flock(fd int, how int) (err error) { _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) if e1 != 0 { @@ -584,6 +623,42 @@ func Flock(fd int, how int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Fremovexattr(fd int, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Fsync(fd int) (err error) { _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) if e1 != 0 { @@ -1063,6 +1138,26 @@ func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err e // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) { var _p0 *byte _p0, err = BytePtrFromString(keyType) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go index b3298930..f1874d5a 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go @@ -571,6 +571,220 @@ func Exit(code int) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go index 5096ef07..eb802839 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go @@ -571,6 +571,220 @@ func Exit(code int) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go index b7141c63..7b36499d 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go @@ -571,6 +571,220 @@ func Exit(code int) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go index b64a8122..1ab8780c 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go @@ -7,347 +7,397 @@ package unix const ( // SYS_NOSYS = 0; // { int nosys(void); } syscall nosys_args int - SYS_EXIT = 1 // { void sys_exit(int rval); } exit \ - SYS_FORK = 2 // { int fork(void); } - SYS_READ = 3 // { ssize_t read(int fd, void *buf, \ - SYS_WRITE = 4 // { ssize_t write(int fd, const void *buf, \ - SYS_OPEN = 5 // { int open(char *path, int flags, int mode); } - SYS_CLOSE = 6 // { int close(int fd); } - SYS_WAIT4 = 7 // { int wait4(int pid, int *status, \ - SYS_LINK = 9 // { int link(char *path, char *link); } - SYS_UNLINK = 10 // { int unlink(char *path); } - SYS_CHDIR = 12 // { int chdir(char *path); } - SYS_FCHDIR = 13 // { int fchdir(int fd); } - SYS_MKNOD = 14 // { int mknod(char *path, int mode, int dev); } - SYS_CHMOD = 15 // { int chmod(char *path, int mode); } - SYS_CHOWN = 16 // { int chown(char *path, int uid, int gid); } - SYS_OBREAK = 17 // { int obreak(char *nsize); } break \ - SYS_GETPID = 20 // { pid_t getpid(void); } - SYS_MOUNT = 21 // { int mount(char *type, char *path, \ - SYS_UNMOUNT = 22 // { int unmount(char *path, int flags); } - SYS_SETUID = 23 // { int setuid(uid_t uid); } - SYS_GETUID = 24 // { uid_t getuid(void); } - SYS_GETEUID = 25 // { uid_t geteuid(void); } - SYS_PTRACE = 26 // { int ptrace(int req, pid_t pid, \ - SYS_RECVMSG = 27 // { int recvmsg(int s, struct msghdr *msg, \ - SYS_SENDMSG = 28 // { int sendmsg(int s, struct msghdr *msg, \ - SYS_RECVFROM = 29 // { int recvfrom(int s, caddr_t buf, \ - SYS_ACCEPT = 30 // { int accept(int s, \ - SYS_GETPEERNAME = 31 // { int getpeername(int fdes, \ - SYS_GETSOCKNAME = 32 // { int getsockname(int fdes, \ - SYS_ACCESS = 33 // { int access(char *path, int amode); } - SYS_CHFLAGS = 34 // { int chflags(const char *path, u_long flags); } - SYS_FCHFLAGS = 35 // { int fchflags(int fd, u_long flags); } - SYS_SYNC = 36 // { int sync(void); } - SYS_KILL = 37 // { int kill(int pid, int signum); } - SYS_GETPPID = 39 // { pid_t getppid(void); } - SYS_DUP = 41 // { int dup(u_int fd); } - SYS_PIPE = 42 // { int pipe(void); } - SYS_GETEGID = 43 // { gid_t getegid(void); } - SYS_PROFIL = 44 // { int profil(caddr_t samples, size_t size, \ - SYS_KTRACE = 45 // { int ktrace(const char *fname, int ops, \ - SYS_GETGID = 47 // { gid_t getgid(void); } - SYS_GETLOGIN = 49 // { int getlogin(char *namebuf, u_int \ - SYS_SETLOGIN = 50 // { int setlogin(char *namebuf); } - SYS_ACCT = 51 // { int acct(char *path); } - SYS_SIGALTSTACK = 53 // { int sigaltstack(stack_t *ss, \ - SYS_IOCTL = 54 // { int ioctl(int fd, u_long com, \ - SYS_REBOOT = 55 // { int reboot(int opt); } - SYS_REVOKE = 56 // { int revoke(char *path); } - SYS_SYMLINK = 57 // { int symlink(char *path, char *link); } - SYS_READLINK = 58 // { ssize_t readlink(char *path, char *buf, \ - SYS_EXECVE = 59 // { int execve(char *fname, char **argv, \ - SYS_UMASK = 60 // { int umask(int newmask); } umask umask_args \ - SYS_CHROOT = 61 // { int chroot(char *path); } - SYS_MSYNC = 65 // { int msync(void *addr, size_t len, \ - SYS_VFORK = 66 // { int vfork(void); } - SYS_SBRK = 69 // { int sbrk(int incr); } - SYS_SSTK = 70 // { int sstk(int incr); } - SYS_OVADVISE = 72 // { int ovadvise(int anom); } vadvise \ - SYS_MUNMAP = 73 // { int munmap(void *addr, size_t len); } - SYS_MPROTECT = 74 // { int mprotect(const void *addr, size_t len, \ - SYS_MADVISE = 75 // { int madvise(void *addr, size_t len, \ - SYS_MINCORE = 78 // { int mincore(const void *addr, size_t len, \ - SYS_GETGROUPS = 79 // { int getgroups(u_int gidsetsize, \ - SYS_SETGROUPS = 80 // { int setgroups(u_int gidsetsize, \ - SYS_GETPGRP = 81 // { int getpgrp(void); } - SYS_SETPGID = 82 // { int setpgid(int pid, int pgid); } - SYS_SETITIMER = 83 // { int setitimer(u_int which, struct \ - SYS_SWAPON = 85 // { int swapon(char *name); } - SYS_GETITIMER = 86 // { int getitimer(u_int which, \ - SYS_GETDTABLESIZE = 89 // { int getdtablesize(void); } - SYS_DUP2 = 90 // { int dup2(u_int from, u_int to); } - SYS_FCNTL = 92 // { int fcntl(int fd, int cmd, long arg); } - SYS_SELECT = 93 // { int select(int nd, fd_set *in, fd_set *ou, \ - SYS_FSYNC = 95 // { int fsync(int fd); } - SYS_SETPRIORITY = 96 // { int setpriority(int which, int who, \ - SYS_SOCKET = 97 // { int socket(int domain, int type, \ - SYS_CONNECT = 98 // { int connect(int s, caddr_t name, \ - SYS_GETPRIORITY = 100 // { int getpriority(int which, int who); } - SYS_BIND = 104 // { int bind(int s, caddr_t name, \ - SYS_SETSOCKOPT = 105 // { int setsockopt(int s, int level, int name, \ - SYS_LISTEN = 106 // { int listen(int s, int backlog); } - SYS_GETTIMEOFDAY = 116 // { int gettimeofday(struct timeval *tp, \ - SYS_GETRUSAGE = 117 // { int getrusage(int who, \ - SYS_GETSOCKOPT = 118 // { int getsockopt(int s, int level, int name, \ - SYS_READV = 120 // { int readv(int fd, struct iovec *iovp, \ - SYS_WRITEV = 121 // { int writev(int fd, struct iovec *iovp, \ - SYS_SETTIMEOFDAY = 122 // { int settimeofday(struct timeval *tv, \ - SYS_FCHOWN = 123 // { int fchown(int fd, int uid, int gid); } - SYS_FCHMOD = 124 // { int fchmod(int fd, int mode); } - SYS_SETREUID = 126 // { int setreuid(int ruid, int euid); } - SYS_SETREGID = 127 // { int setregid(int rgid, int egid); } - SYS_RENAME = 128 // { int rename(char *from, char *to); } - SYS_FLOCK = 131 // { int flock(int fd, int how); } - SYS_MKFIFO = 132 // { int mkfifo(char *path, int mode); } - SYS_SENDTO = 133 // { int sendto(int s, caddr_t buf, size_t len, \ - SYS_SHUTDOWN = 134 // { int shutdown(int s, int how); } - SYS_SOCKETPAIR = 135 // { int socketpair(int domain, int type, \ - SYS_MKDIR = 136 // { int mkdir(char *path, int mode); } - SYS_RMDIR = 137 // { int rmdir(char *path); } - SYS_UTIMES = 138 // { int utimes(char *path, \ - SYS_ADJTIME = 140 // { int adjtime(struct timeval *delta, \ - SYS_SETSID = 147 // { int setsid(void); } - SYS_QUOTACTL = 148 // { int quotactl(char *path, int cmd, int uid, \ - SYS_LGETFH = 160 // { int lgetfh(char *fname, \ - SYS_GETFH = 161 // { int getfh(char *fname, \ - SYS_SYSARCH = 165 // { int sysarch(int op, char *parms); } - SYS_RTPRIO = 166 // { int rtprio(int function, pid_t pid, \ - SYS_FREEBSD6_PREAD = 173 // { ssize_t freebsd6_pread(int fd, void *buf, \ - SYS_FREEBSD6_PWRITE = 174 // { ssize_t freebsd6_pwrite(int fd, \ - SYS_SETFIB = 175 // { int setfib(int fibnum); } - SYS_NTP_ADJTIME = 176 // { int ntp_adjtime(struct timex *tp); } - SYS_SETGID = 181 // { int setgid(gid_t gid); } - SYS_SETEGID = 182 // { int setegid(gid_t egid); } - SYS_SETEUID = 183 // { int seteuid(uid_t euid); } - SYS_STAT = 188 // { int stat(char *path, struct stat *ub); } - SYS_FSTAT = 189 // { int fstat(int fd, struct stat *sb); } - SYS_LSTAT = 190 // { int lstat(char *path, struct stat *ub); } - SYS_PATHCONF = 191 // { int pathconf(char *path, int name); } - SYS_FPATHCONF = 192 // { int fpathconf(int fd, int name); } - SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, \ - SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, \ - SYS_GETDIRENTRIES = 196 // { int getdirentries(int fd, char *buf, \ - SYS_FREEBSD6_MMAP = 197 // { caddr_t freebsd6_mmap(caddr_t addr, \ - SYS_FREEBSD6_LSEEK = 199 // { off_t freebsd6_lseek(int fd, int pad, \ - SYS_FREEBSD6_TRUNCATE = 200 // { int freebsd6_truncate(char *path, int pad, \ - SYS_FREEBSD6_FTRUNCATE = 201 // { int freebsd6_ftruncate(int fd, int pad, \ - SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, \ - SYS_MLOCK = 203 // { int mlock(const void *addr, size_t len); } - SYS_MUNLOCK = 204 // { int munlock(const void *addr, size_t len); } - SYS_UNDELETE = 205 // { int undelete(char *path); } - SYS_FUTIMES = 206 // { int futimes(int fd, struct timeval *tptr); } - SYS_GETPGID = 207 // { int getpgid(pid_t pid); } - SYS_POLL = 209 // { int poll(struct pollfd *fds, u_int nfds, \ - SYS_CLOCK_GETTIME = 232 // { int clock_gettime(clockid_t clock_id, \ - SYS_CLOCK_SETTIME = 233 // { int clock_settime( \ - SYS_CLOCK_GETRES = 234 // { int clock_getres(clockid_t clock_id, \ - SYS_KTIMER_CREATE = 235 // { int ktimer_create(clockid_t clock_id, \ - SYS_KTIMER_DELETE = 236 // { int ktimer_delete(int timerid); } - SYS_KTIMER_SETTIME = 237 // { int ktimer_settime(int timerid, int flags, \ - SYS_KTIMER_GETTIME = 238 // { int ktimer_gettime(int timerid, struct \ - SYS_KTIMER_GETOVERRUN = 239 // { int ktimer_getoverrun(int timerid); } - SYS_NANOSLEEP = 240 // { int nanosleep(const struct timespec *rqtp, \ - SYS_FFCLOCK_GETCOUNTER = 241 // { int ffclock_getcounter(ffcounter *ffcount); } - SYS_FFCLOCK_SETESTIMATE = 242 // { int ffclock_setestimate( \ - SYS_FFCLOCK_GETESTIMATE = 243 // { int ffclock_getestimate( \ - SYS_CLOCK_GETCPUCLOCKID2 = 247 // { int clock_getcpuclockid2(id_t id,\ - SYS_NTP_GETTIME = 248 // { int ntp_gettime(struct ntptimeval *ntvp); } - SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, \ - SYS_RFORK = 251 // { int rfork(int flags); } - SYS_OPENBSD_POLL = 252 // { int openbsd_poll(struct pollfd *fds, \ - SYS_ISSETUGID = 253 // { int issetugid(void); } - SYS_LCHOWN = 254 // { int lchown(char *path, int uid, int gid); } - SYS_GETDENTS = 272 // { int getdents(int fd, char *buf, \ - SYS_LCHMOD = 274 // { int lchmod(char *path, mode_t mode); } - SYS_LUTIMES = 276 // { int lutimes(char *path, \ - SYS_NSTAT = 278 // { int nstat(char *path, struct nstat *ub); } - SYS_NFSTAT = 279 // { int nfstat(int fd, struct nstat *sb); } - SYS_NLSTAT = 280 // { int nlstat(char *path, struct nstat *ub); } - SYS_PREADV = 289 // { ssize_t preadv(int fd, struct iovec *iovp, \ - SYS_PWRITEV = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, \ - SYS_FHOPEN = 298 // { int fhopen(const struct fhandle *u_fhp, \ - SYS_FHSTAT = 299 // { int fhstat(const struct fhandle *u_fhp, \ - SYS_MODNEXT = 300 // { int modnext(int modid); } - SYS_MODSTAT = 301 // { int modstat(int modid, \ - SYS_MODFNEXT = 302 // { int modfnext(int modid); } - SYS_MODFIND = 303 // { int modfind(const char *name); } - SYS_KLDLOAD = 304 // { int kldload(const char *file); } - SYS_KLDUNLOAD = 305 // { int kldunload(int fileid); } - SYS_KLDFIND = 306 // { int kldfind(const char *file); } - SYS_KLDNEXT = 307 // { int kldnext(int fileid); } - SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct \ - SYS_KLDFIRSTMOD = 309 // { int kldfirstmod(int fileid); } - SYS_GETSID = 310 // { int getsid(pid_t pid); } - SYS_SETRESUID = 311 // { int setresuid(uid_t ruid, uid_t euid, \ - SYS_SETRESGID = 312 // { int setresgid(gid_t rgid, gid_t egid, \ - SYS_YIELD = 321 // { int yield(void); } - SYS_MLOCKALL = 324 // { int mlockall(int how); } - SYS_MUNLOCKALL = 325 // { int munlockall(void); } - SYS___GETCWD = 326 // { int __getcwd(char *buf, u_int buflen); } - SYS_SCHED_SETPARAM = 327 // { int sched_setparam (pid_t pid, \ - SYS_SCHED_GETPARAM = 328 // { int sched_getparam (pid_t pid, struct \ - SYS_SCHED_SETSCHEDULER = 329 // { int sched_setscheduler (pid_t pid, int \ - SYS_SCHED_GETSCHEDULER = 330 // { int sched_getscheduler (pid_t pid); } - SYS_SCHED_YIELD = 331 // { int sched_yield (void); } - SYS_SCHED_GET_PRIORITY_MAX = 332 // { int sched_get_priority_max (int policy); } - SYS_SCHED_GET_PRIORITY_MIN = 333 // { int sched_get_priority_min (int policy); } - SYS_SCHED_RR_GET_INTERVAL = 334 // { int sched_rr_get_interval (pid_t pid, \ - SYS_UTRACE = 335 // { int utrace(const void *addr, size_t len); } - SYS_KLDSYM = 337 // { int kldsym(int fileid, int cmd, \ - SYS_JAIL = 338 // { int jail(struct jail *jail); } - SYS_SIGPROCMASK = 340 // { int sigprocmask(int how, \ - SYS_SIGSUSPEND = 341 // { int sigsuspend(const sigset_t *sigmask); } - SYS_SIGPENDING = 343 // { int sigpending(sigset_t *set); } - SYS_SIGTIMEDWAIT = 345 // { int sigtimedwait(const sigset_t *set, \ - SYS_SIGWAITINFO = 346 // { int sigwaitinfo(const sigset_t *set, \ - SYS___ACL_GET_FILE = 347 // { int __acl_get_file(const char *path, \ - SYS___ACL_SET_FILE = 348 // { int __acl_set_file(const char *path, \ - SYS___ACL_GET_FD = 349 // { int __acl_get_fd(int filedes, \ - SYS___ACL_SET_FD = 350 // { int __acl_set_fd(int filedes, \ - SYS___ACL_DELETE_FILE = 351 // { int __acl_delete_file(const char *path, \ - SYS___ACL_DELETE_FD = 352 // { int __acl_delete_fd(int filedes, \ - SYS___ACL_ACLCHECK_FILE = 353 // { int __acl_aclcheck_file(const char *path, \ - SYS___ACL_ACLCHECK_FD = 354 // { int __acl_aclcheck_fd(int filedes, \ - SYS_EXTATTRCTL = 355 // { int extattrctl(const char *path, int cmd, \ - SYS_EXTATTR_SET_FILE = 356 // { ssize_t extattr_set_file( \ - SYS_EXTATTR_GET_FILE = 357 // { ssize_t extattr_get_file( \ - SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, \ - SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, \ - SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, \ - SYS_KQUEUE = 362 // { int kqueue(void); } - SYS_KEVENT = 363 // { int kevent(int fd, \ - SYS_EXTATTR_SET_FD = 371 // { ssize_t extattr_set_fd(int fd, \ - SYS_EXTATTR_GET_FD = 372 // { ssize_t extattr_get_fd(int fd, \ - SYS_EXTATTR_DELETE_FD = 373 // { int extattr_delete_fd(int fd, \ - SYS___SETUGID = 374 // { int __setugid(int flag); } - SYS_EACCESS = 376 // { int eaccess(char *path, int amode); } - SYS_NMOUNT = 378 // { int nmount(struct iovec *iovp, \ - SYS___MAC_GET_PROC = 384 // { int __mac_get_proc(struct mac *mac_p); } - SYS___MAC_SET_PROC = 385 // { int __mac_set_proc(struct mac *mac_p); } - SYS___MAC_GET_FD = 386 // { int __mac_get_fd(int fd, \ - SYS___MAC_GET_FILE = 387 // { int __mac_get_file(const char *path_p, \ - SYS___MAC_SET_FD = 388 // { int __mac_set_fd(int fd, \ - SYS___MAC_SET_FILE = 389 // { int __mac_set_file(const char *path_p, \ - SYS_KENV = 390 // { int kenv(int what, const char *name, \ - SYS_LCHFLAGS = 391 // { int lchflags(const char *path, \ - SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, \ - SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, \ - SYS_MAC_SYSCALL = 394 // { int mac_syscall(const char *policy, \ - SYS_GETFSSTAT = 395 // { int getfsstat(struct statfs *buf, \ - SYS_STATFS = 396 // { int statfs(char *path, \ - SYS_FSTATFS = 397 // { int fstatfs(int fd, struct statfs *buf); } - SYS_FHSTATFS = 398 // { int fhstatfs(const struct fhandle *u_fhp, \ - SYS___MAC_GET_PID = 409 // { int __mac_get_pid(pid_t pid, \ - SYS___MAC_GET_LINK = 410 // { int __mac_get_link(const char *path_p, \ - SYS___MAC_SET_LINK = 411 // { int __mac_set_link(const char *path_p, \ - SYS_EXTATTR_SET_LINK = 412 // { ssize_t extattr_set_link( \ - SYS_EXTATTR_GET_LINK = 413 // { ssize_t extattr_get_link( \ - SYS_EXTATTR_DELETE_LINK = 414 // { int extattr_delete_link( \ - SYS___MAC_EXECVE = 415 // { int __mac_execve(char *fname, char **argv, \ - SYS_SIGACTION = 416 // { int sigaction(int sig, \ - SYS_SIGRETURN = 417 // { int sigreturn( \ - SYS_GETCONTEXT = 421 // { int getcontext(struct __ucontext *ucp); } - SYS_SETCONTEXT = 422 // { int setcontext( \ - SYS_SWAPCONTEXT = 423 // { int swapcontext(struct __ucontext *oucp, \ - SYS_SWAPOFF = 424 // { int swapoff(const char *name); } - SYS___ACL_GET_LINK = 425 // { int __acl_get_link(const char *path, \ - SYS___ACL_SET_LINK = 426 // { int __acl_set_link(const char *path, \ - SYS___ACL_DELETE_LINK = 427 // { int __acl_delete_link(const char *path, \ - SYS___ACL_ACLCHECK_LINK = 428 // { int __acl_aclcheck_link(const char *path, \ - SYS_SIGWAIT = 429 // { int sigwait(const sigset_t *set, \ - SYS_THR_CREATE = 430 // { int thr_create(ucontext_t *ctx, long *id, \ - SYS_THR_EXIT = 431 // { void thr_exit(long *state); } - SYS_THR_SELF = 432 // { int thr_self(long *id); } - SYS_THR_KILL = 433 // { int thr_kill(long id, int sig); } - SYS__UMTX_LOCK = 434 // { int _umtx_lock(struct umtx *umtx); } - SYS__UMTX_UNLOCK = 435 // { int _umtx_unlock(struct umtx *umtx); } - SYS_JAIL_ATTACH = 436 // { int jail_attach(int jid); } - SYS_EXTATTR_LIST_FD = 437 // { ssize_t extattr_list_fd(int fd, \ - SYS_EXTATTR_LIST_FILE = 438 // { ssize_t extattr_list_file( \ - SYS_EXTATTR_LIST_LINK = 439 // { ssize_t extattr_list_link( \ - SYS_THR_SUSPEND = 442 // { int thr_suspend( \ - SYS_THR_WAKE = 443 // { int thr_wake(long id); } - SYS_KLDUNLOADF = 444 // { int kldunloadf(int fileid, int flags); } - SYS_AUDIT = 445 // { int audit(const void *record, \ - SYS_AUDITON = 446 // { int auditon(int cmd, void *data, \ - SYS_GETAUID = 447 // { int getauid(uid_t *auid); } - SYS_SETAUID = 448 // { int setauid(uid_t *auid); } - SYS_GETAUDIT = 449 // { int getaudit(struct auditinfo *auditinfo); } - SYS_SETAUDIT = 450 // { int setaudit(struct auditinfo *auditinfo); } - SYS_GETAUDIT_ADDR = 451 // { int getaudit_addr( \ - SYS_SETAUDIT_ADDR = 452 // { int setaudit_addr( \ - SYS_AUDITCTL = 453 // { int auditctl(char *path); } - SYS__UMTX_OP = 454 // { int _umtx_op(void *obj, int op, \ - SYS_THR_NEW = 455 // { int thr_new(struct thr_param *param, \ - SYS_SIGQUEUE = 456 // { int sigqueue(pid_t pid, int signum, void *value); } - SYS_ABORT2 = 463 // { int abort2(const char *why, int nargs, void **args); } - SYS_THR_SET_NAME = 464 // { int thr_set_name(long id, const char *name); } - SYS_RTPRIO_THREAD = 466 // { int rtprio_thread(int function, \ - SYS_PREAD = 475 // { ssize_t pread(int fd, void *buf, \ - SYS_PWRITE = 476 // { ssize_t pwrite(int fd, const void *buf, \ - SYS_MMAP = 477 // { caddr_t mmap(caddr_t addr, size_t len, \ - SYS_LSEEK = 478 // { off_t lseek(int fd, off_t offset, \ - SYS_TRUNCATE = 479 // { int truncate(char *path, off_t length); } - SYS_FTRUNCATE = 480 // { int ftruncate(int fd, off_t length); } - SYS_THR_KILL2 = 481 // { int thr_kill2(pid_t pid, long id, int sig); } - SYS_SHM_OPEN = 482 // { int shm_open(const char *path, int flags, \ - SYS_SHM_UNLINK = 483 // { int shm_unlink(const char *path); } - SYS_CPUSET = 484 // { int cpuset(cpusetid_t *setid); } - SYS_CPUSET_SETID = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, \ - SYS_CPUSET_GETID = 486 // { int cpuset_getid(cpulevel_t level, \ - SYS_CPUSET_GETAFFINITY = 487 // { int cpuset_getaffinity(cpulevel_t level, \ - SYS_CPUSET_SETAFFINITY = 488 // { int cpuset_setaffinity(cpulevel_t level, \ - SYS_FACCESSAT = 489 // { int faccessat(int fd, char *path, int amode, \ - SYS_FCHMODAT = 490 // { int fchmodat(int fd, char *path, mode_t mode, \ - SYS_FCHOWNAT = 491 // { int fchownat(int fd, char *path, uid_t uid, \ - SYS_FEXECVE = 492 // { int fexecve(int fd, char **argv, \ - SYS_FSTATAT = 493 // { int fstatat(int fd, char *path, \ - SYS_FUTIMESAT = 494 // { int futimesat(int fd, char *path, \ - SYS_LINKAT = 495 // { int linkat(int fd1, char *path1, int fd2, \ - SYS_MKDIRAT = 496 // { int mkdirat(int fd, char *path, mode_t mode); } - SYS_MKFIFOAT = 497 // { int mkfifoat(int fd, char *path, mode_t mode); } - SYS_MKNODAT = 498 // { int mknodat(int fd, char *path, mode_t mode, \ - SYS_OPENAT = 499 // { int openat(int fd, char *path, int flag, \ - SYS_READLINKAT = 500 // { int readlinkat(int fd, char *path, char *buf, \ - SYS_RENAMEAT = 501 // { int renameat(int oldfd, char *old, int newfd, \ - SYS_SYMLINKAT = 502 // { int symlinkat(char *path1, int fd, \ - SYS_UNLINKAT = 503 // { int unlinkat(int fd, char *path, int flag); } - SYS_POSIX_OPENPT = 504 // { int posix_openpt(int flags); } - SYS_JAIL_GET = 506 // { int jail_get(struct iovec *iovp, \ - SYS_JAIL_SET = 507 // { int jail_set(struct iovec *iovp, \ - SYS_JAIL_REMOVE = 508 // { int jail_remove(int jid); } - SYS_CLOSEFROM = 509 // { int closefrom(int lowfd); } - SYS_LPATHCONF = 513 // { int lpathconf(char *path, int name); } - SYS___CAP_RIGHTS_GET = 515 // { int __cap_rights_get(int version, \ - SYS_CAP_ENTER = 516 // { int cap_enter(void); } - SYS_CAP_GETMODE = 517 // { int cap_getmode(u_int *modep); } - SYS_PDFORK = 518 // { int pdfork(int *fdp, int flags); } - SYS_PDKILL = 519 // { int pdkill(int fd, int signum); } - SYS_PDGETPID = 520 // { int pdgetpid(int fd, pid_t *pidp); } - SYS_PSELECT = 522 // { int pselect(int nd, fd_set *in, \ - SYS_GETLOGINCLASS = 523 // { int getloginclass(char *namebuf, \ - SYS_SETLOGINCLASS = 524 // { int setloginclass(const char *namebuf); } - SYS_RCTL_GET_RACCT = 525 // { int rctl_get_racct(const void *inbufp, \ - SYS_RCTL_GET_RULES = 526 // { int rctl_get_rules(const void *inbufp, \ - SYS_RCTL_GET_LIMITS = 527 // { int rctl_get_limits(const void *inbufp, \ - SYS_RCTL_ADD_RULE = 528 // { int rctl_add_rule(const void *inbufp, \ - SYS_RCTL_REMOVE_RULE = 529 // { int rctl_remove_rule(const void *inbufp, \ - SYS_POSIX_FALLOCATE = 530 // { int posix_fallocate(int fd, \ - SYS_POSIX_FADVISE = 531 // { int posix_fadvise(int fd, off_t offset, \ - SYS_WAIT6 = 532 // { int wait6(idtype_t idtype, id_t id, \ - SYS_CAP_RIGHTS_LIMIT = 533 // { int cap_rights_limit(int fd, \ - SYS_CAP_IOCTLS_LIMIT = 534 // { int cap_ioctls_limit(int fd, \ - SYS_CAP_IOCTLS_GET = 535 // { ssize_t cap_ioctls_get(int fd, \ - SYS_CAP_FCNTLS_LIMIT = 536 // { int cap_fcntls_limit(int fd, \ - SYS_CAP_FCNTLS_GET = 537 // { int cap_fcntls_get(int fd, \ - SYS_BINDAT = 538 // { int bindat(int fd, int s, caddr_t name, \ - SYS_CONNECTAT = 539 // { int connectat(int fd, int s, caddr_t name, \ - SYS_CHFLAGSAT = 540 // { int chflagsat(int fd, const char *path, \ - SYS_ACCEPT4 = 541 // { int accept4(int s, \ - SYS_PIPE2 = 542 // { int pipe2(int *fildes, int flags); } - SYS_PROCCTL = 544 // { int procctl(idtype_t idtype, id_t id, \ - SYS_PPOLL = 545 // { int ppoll(struct pollfd *fds, u_int nfds, \ - SYS_FUTIMENS = 546 // { int futimens(int fd, \ - SYS_UTIMENSAT = 547 // { int utimensat(int fd, \ + SYS_EXIT = 1 // { void sys_exit(int rval); } exit \ + SYS_FORK = 2 // { int fork(void); } + SYS_READ = 3 // { ssize_t read(int fd, void *buf, \ + SYS_WRITE = 4 // { ssize_t write(int fd, const void *buf, \ + SYS_OPEN = 5 // { int open(char *path, int flags, int mode); } + SYS_CLOSE = 6 // { int close(int fd); } + SYS_WAIT4 = 7 // { int wait4(int pid, int *status, \ + SYS_LINK = 9 // { int link(char *path, char *link); } + SYS_UNLINK = 10 // { int unlink(char *path); } + SYS_CHDIR = 12 // { int chdir(char *path); } + SYS_FCHDIR = 13 // { int fchdir(int fd); } + SYS_MKNOD = 14 // { int mknod(char *path, int mode, int dev); } + SYS_CHMOD = 15 // { int chmod(char *path, int mode); } + SYS_CHOWN = 16 // { int chown(char *path, int uid, int gid); } + SYS_OBREAK = 17 // { int obreak(char *nsize); } break \ + SYS_GETPID = 20 // { pid_t getpid(void); } + SYS_MOUNT = 21 // { int mount(char *type, char *path, \ + SYS_UNMOUNT = 22 // { int unmount(char *path, int flags); } + SYS_SETUID = 23 // { int setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t getuid(void); } + SYS_GETEUID = 25 // { uid_t geteuid(void); } + SYS_PTRACE = 26 // { int ptrace(int req, pid_t pid, \ + SYS_RECVMSG = 27 // { int recvmsg(int s, struct msghdr *msg, \ + SYS_SENDMSG = 28 // { int sendmsg(int s, struct msghdr *msg, \ + SYS_RECVFROM = 29 // { int recvfrom(int s, caddr_t buf, \ + SYS_ACCEPT = 30 // { int accept(int s, \ + SYS_GETPEERNAME = 31 // { int getpeername(int fdes, \ + SYS_GETSOCKNAME = 32 // { int getsockname(int fdes, \ + SYS_ACCESS = 33 // { int access(char *path, int amode); } + SYS_CHFLAGS = 34 // { int chflags(const char *path, u_long flags); } + SYS_FCHFLAGS = 35 // { int fchflags(int fd, u_long flags); } + SYS_SYNC = 36 // { int sync(void); } + SYS_KILL = 37 // { int kill(int pid, int signum); } + SYS_GETPPID = 39 // { pid_t getppid(void); } + SYS_DUP = 41 // { int dup(u_int fd); } + SYS_PIPE = 42 // { int pipe(void); } + SYS_GETEGID = 43 // { gid_t getegid(void); } + SYS_PROFIL = 44 // { int profil(caddr_t samples, size_t size, \ + SYS_KTRACE = 45 // { int ktrace(const char *fname, int ops, \ + SYS_GETGID = 47 // { gid_t getgid(void); } + SYS_GETLOGIN = 49 // { int getlogin(char *namebuf, u_int \ + SYS_SETLOGIN = 50 // { int setlogin(char *namebuf); } + SYS_ACCT = 51 // { int acct(char *path); } + SYS_SIGALTSTACK = 53 // { int sigaltstack(stack_t *ss, \ + SYS_IOCTL = 54 // { int ioctl(int fd, u_long com, \ + SYS_REBOOT = 55 // { int reboot(int opt); } + SYS_REVOKE = 56 // { int revoke(char *path); } + SYS_SYMLINK = 57 // { int symlink(char *path, char *link); } + SYS_READLINK = 58 // { ssize_t readlink(char *path, char *buf, \ + SYS_EXECVE = 59 // { int execve(char *fname, char **argv, \ + SYS_UMASK = 60 // { int umask(int newmask); } umask umask_args \ + SYS_CHROOT = 61 // { int chroot(char *path); } + SYS_MSYNC = 65 // { int msync(void *addr, size_t len, \ + SYS_VFORK = 66 // { int vfork(void); } + SYS_SBRK = 69 // { int sbrk(int incr); } + SYS_SSTK = 70 // { int sstk(int incr); } + SYS_OVADVISE = 72 // { int ovadvise(int anom); } vadvise \ + SYS_MUNMAP = 73 // { int munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int mprotect(const void *addr, size_t len, \ + SYS_MADVISE = 75 // { int madvise(void *addr, size_t len, \ + SYS_MINCORE = 78 // { int mincore(const void *addr, size_t len, \ + SYS_GETGROUPS = 79 // { int getgroups(u_int gidsetsize, \ + SYS_SETGROUPS = 80 // { int setgroups(u_int gidsetsize, \ + SYS_GETPGRP = 81 // { int getpgrp(void); } + SYS_SETPGID = 82 // { int setpgid(int pid, int pgid); } + SYS_SETITIMER = 83 // { int setitimer(u_int which, struct \ + SYS_SWAPON = 85 // { int swapon(char *name); } + SYS_GETITIMER = 86 // { int getitimer(u_int which, \ + SYS_GETDTABLESIZE = 89 // { int getdtablesize(void); } + SYS_DUP2 = 90 // { int dup2(u_int from, u_int to); } + SYS_FCNTL = 92 // { int fcntl(int fd, int cmd, long arg); } + SYS_SELECT = 93 // { int select(int nd, fd_set *in, fd_set *ou, \ + SYS_FSYNC = 95 // { int fsync(int fd); } + SYS_SETPRIORITY = 96 // { int setpriority(int which, int who, \ + SYS_SOCKET = 97 // { int socket(int domain, int type, \ + SYS_CONNECT = 98 // { int connect(int s, caddr_t name, \ + SYS_GETPRIORITY = 100 // { int getpriority(int which, int who); } + SYS_BIND = 104 // { int bind(int s, caddr_t name, \ + SYS_SETSOCKOPT = 105 // { int setsockopt(int s, int level, int name, \ + SYS_LISTEN = 106 // { int listen(int s, int backlog); } + SYS_GETTIMEOFDAY = 116 // { int gettimeofday(struct timeval *tp, \ + SYS_GETRUSAGE = 117 // { int getrusage(int who, \ + SYS_GETSOCKOPT = 118 // { int getsockopt(int s, int level, int name, \ + SYS_READV = 120 // { int readv(int fd, struct iovec *iovp, \ + SYS_WRITEV = 121 // { int writev(int fd, struct iovec *iovp, \ + SYS_SETTIMEOFDAY = 122 // { int settimeofday(struct timeval *tv, \ + SYS_FCHOWN = 123 // { int fchown(int fd, int uid, int gid); } + SYS_FCHMOD = 124 // { int fchmod(int fd, int mode); } + SYS_SETREUID = 126 // { int setreuid(int ruid, int euid); } + SYS_SETREGID = 127 // { int setregid(int rgid, int egid); } + SYS_RENAME = 128 // { int rename(char *from, char *to); } + SYS_FLOCK = 131 // { int flock(int fd, int how); } + SYS_MKFIFO = 132 // { int mkfifo(char *path, int mode); } + SYS_SENDTO = 133 // { int sendto(int s, caddr_t buf, size_t len, \ + SYS_SHUTDOWN = 134 // { int shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int socketpair(int domain, int type, \ + SYS_MKDIR = 136 // { int mkdir(char *path, int mode); } + SYS_RMDIR = 137 // { int rmdir(char *path); } + SYS_UTIMES = 138 // { int utimes(char *path, \ + SYS_ADJTIME = 140 // { int adjtime(struct timeval *delta, \ + SYS_SETSID = 147 // { int setsid(void); } + SYS_QUOTACTL = 148 // { int quotactl(char *path, int cmd, int uid, \ + SYS_NLM_SYSCALL = 154 // { int nlm_syscall(int debug_level, int grace_period, int addr_count, char **addrs); } + SYS_NFSSVC = 155 // { int nfssvc(int flag, caddr_t argp); } + SYS_LGETFH = 160 // { int lgetfh(char *fname, \ + SYS_GETFH = 161 // { int getfh(char *fname, \ + SYS_SYSARCH = 165 // { int sysarch(int op, char *parms); } + SYS_RTPRIO = 166 // { int rtprio(int function, pid_t pid, \ + SYS_SEMSYS = 169 // { int semsys(int which, int a2, int a3, \ + SYS_MSGSYS = 170 // { int msgsys(int which, int a2, int a3, \ + SYS_SHMSYS = 171 // { int shmsys(int which, int a2, int a3, \ + SYS_FREEBSD6_PREAD = 173 // { ssize_t freebsd6_pread(int fd, void *buf, \ + SYS_FREEBSD6_PWRITE = 174 // { ssize_t freebsd6_pwrite(int fd, \ + SYS_SETFIB = 175 // { int setfib(int fibnum); } + SYS_NTP_ADJTIME = 176 // { int ntp_adjtime(struct timex *tp); } + SYS_SETGID = 181 // { int setgid(gid_t gid); } + SYS_SETEGID = 182 // { int setegid(gid_t egid); } + SYS_SETEUID = 183 // { int seteuid(uid_t euid); } + SYS_STAT = 188 // { int stat(char *path, struct stat *ub); } + SYS_FSTAT = 189 // { int fstat(int fd, struct stat *sb); } + SYS_LSTAT = 190 // { int lstat(char *path, struct stat *ub); } + SYS_PATHCONF = 191 // { int pathconf(char *path, int name); } + SYS_FPATHCONF = 192 // { int fpathconf(int fd, int name); } + SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, \ + SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, \ + SYS_GETDIRENTRIES = 196 // { int getdirentries(int fd, char *buf, \ + SYS_FREEBSD6_MMAP = 197 // { caddr_t freebsd6_mmap(caddr_t addr, \ + SYS_FREEBSD6_LSEEK = 199 // { off_t freebsd6_lseek(int fd, int pad, \ + SYS_FREEBSD6_TRUNCATE = 200 // { int freebsd6_truncate(char *path, int pad, \ + SYS_FREEBSD6_FTRUNCATE = 201 // { int freebsd6_ftruncate(int fd, int pad, \ + SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, \ + SYS_MLOCK = 203 // { int mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int munlock(const void *addr, size_t len); } + SYS_UNDELETE = 205 // { int undelete(char *path); } + SYS_FUTIMES = 206 // { int futimes(int fd, struct timeval *tptr); } + SYS_GETPGID = 207 // { int getpgid(pid_t pid); } + SYS_POLL = 209 // { int poll(struct pollfd *fds, u_int nfds, \ + SYS_SEMGET = 221 // { int semget(key_t key, int nsems, \ + SYS_SEMOP = 222 // { int semop(int semid, struct sembuf *sops, \ + SYS_MSGGET = 225 // { int msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int msgsnd(int msqid, const void *msgp, \ + SYS_MSGRCV = 227 // { int msgrcv(int msqid, void *msgp, \ + SYS_SHMAT = 228 // { int shmat(int shmid, const void *shmaddr, \ + SYS_SHMDT = 230 // { int shmdt(const void *shmaddr); } + SYS_SHMGET = 231 // { int shmget(key_t key, size_t size, \ + SYS_CLOCK_GETTIME = 232 // { int clock_gettime(clockid_t clock_id, \ + SYS_CLOCK_SETTIME = 233 // { int clock_settime( \ + SYS_CLOCK_GETRES = 234 // { int clock_getres(clockid_t clock_id, \ + SYS_KTIMER_CREATE = 235 // { int ktimer_create(clockid_t clock_id, \ + SYS_KTIMER_DELETE = 236 // { int ktimer_delete(int timerid); } + SYS_KTIMER_SETTIME = 237 // { int ktimer_settime(int timerid, int flags, \ + SYS_KTIMER_GETTIME = 238 // { int ktimer_gettime(int timerid, struct \ + SYS_KTIMER_GETOVERRUN = 239 // { int ktimer_getoverrun(int timerid); } + SYS_NANOSLEEP = 240 // { int nanosleep(const struct timespec *rqtp, \ + SYS_FFCLOCK_GETCOUNTER = 241 // { int ffclock_getcounter(ffcounter *ffcount); } + SYS_FFCLOCK_SETESTIMATE = 242 // { int ffclock_setestimate( \ + SYS_FFCLOCK_GETESTIMATE = 243 // { int ffclock_getestimate( \ + SYS_CLOCK_GETCPUCLOCKID2 = 247 // { int clock_getcpuclockid2(id_t id,\ + SYS_NTP_GETTIME = 248 // { int ntp_gettime(struct ntptimeval *ntvp); } + SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, \ + SYS_RFORK = 251 // { int rfork(int flags); } + SYS_OPENBSD_POLL = 252 // { int openbsd_poll(struct pollfd *fds, \ + SYS_ISSETUGID = 253 // { int issetugid(void); } + SYS_LCHOWN = 254 // { int lchown(char *path, int uid, int gid); } + SYS_AIO_READ = 255 // { int aio_read(struct aiocb *aiocbp); } + SYS_AIO_WRITE = 256 // { int aio_write(struct aiocb *aiocbp); } + SYS_LIO_LISTIO = 257 // { int lio_listio(int mode, \ + SYS_GETDENTS = 272 // { int getdents(int fd, char *buf, \ + SYS_LCHMOD = 274 // { int lchmod(char *path, mode_t mode); } + SYS_LUTIMES = 276 // { int lutimes(char *path, \ + SYS_NSTAT = 278 // { int nstat(char *path, struct nstat *ub); } + SYS_NFSTAT = 279 // { int nfstat(int fd, struct nstat *sb); } + SYS_NLSTAT = 280 // { int nlstat(char *path, struct nstat *ub); } + SYS_PREADV = 289 // { ssize_t preadv(int fd, struct iovec *iovp, \ + SYS_PWRITEV = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, \ + SYS_FHOPEN = 298 // { int fhopen(const struct fhandle *u_fhp, \ + SYS_FHSTAT = 299 // { int fhstat(const struct fhandle *u_fhp, \ + SYS_MODNEXT = 300 // { int modnext(int modid); } + SYS_MODSTAT = 301 // { int modstat(int modid, \ + SYS_MODFNEXT = 302 // { int modfnext(int modid); } + SYS_MODFIND = 303 // { int modfind(const char *name); } + SYS_KLDLOAD = 304 // { int kldload(const char *file); } + SYS_KLDUNLOAD = 305 // { int kldunload(int fileid); } + SYS_KLDFIND = 306 // { int kldfind(const char *file); } + SYS_KLDNEXT = 307 // { int kldnext(int fileid); } + SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct \ + SYS_KLDFIRSTMOD = 309 // { int kldfirstmod(int fileid); } + SYS_GETSID = 310 // { int getsid(pid_t pid); } + SYS_SETRESUID = 311 // { int setresuid(uid_t ruid, uid_t euid, \ + SYS_SETRESGID = 312 // { int setresgid(gid_t rgid, gid_t egid, \ + SYS_AIO_RETURN = 314 // { int aio_return(struct aiocb *aiocbp); } + SYS_AIO_SUSPEND = 315 // { int aio_suspend( \ + SYS_AIO_CANCEL = 316 // { int aio_cancel(int fd, \ + SYS_AIO_ERROR = 317 // { int aio_error(struct aiocb *aiocbp); } + SYS_OAIO_READ = 318 // { int oaio_read(struct oaiocb *aiocbp); } + SYS_OAIO_WRITE = 319 // { int oaio_write(struct oaiocb *aiocbp); } + SYS_OLIO_LISTIO = 320 // { int olio_listio(int mode, \ + SYS_YIELD = 321 // { int yield(void); } + SYS_MLOCKALL = 324 // { int mlockall(int how); } + SYS_MUNLOCKALL = 325 // { int munlockall(void); } + SYS___GETCWD = 326 // { int __getcwd(char *buf, u_int buflen); } + SYS_SCHED_SETPARAM = 327 // { int sched_setparam (pid_t pid, \ + SYS_SCHED_GETPARAM = 328 // { int sched_getparam (pid_t pid, struct \ + SYS_SCHED_SETSCHEDULER = 329 // { int sched_setscheduler (pid_t pid, int \ + SYS_SCHED_GETSCHEDULER = 330 // { int sched_getscheduler (pid_t pid); } + SYS_SCHED_YIELD = 331 // { int sched_yield (void); } + SYS_SCHED_GET_PRIORITY_MAX = 332 // { int sched_get_priority_max (int policy); } + SYS_SCHED_GET_PRIORITY_MIN = 333 // { int sched_get_priority_min (int policy); } + SYS_SCHED_RR_GET_INTERVAL = 334 // { int sched_rr_get_interval (pid_t pid, \ + SYS_UTRACE = 335 // { int utrace(const void *addr, size_t len); } + SYS_KLDSYM = 337 // { int kldsym(int fileid, int cmd, \ + SYS_JAIL = 338 // { int jail(struct jail *jail); } + SYS_SIGPROCMASK = 340 // { int sigprocmask(int how, \ + SYS_SIGSUSPEND = 341 // { int sigsuspend(const sigset_t *sigmask); } + SYS_SIGPENDING = 343 // { int sigpending(sigset_t *set); } + SYS_SIGTIMEDWAIT = 345 // { int sigtimedwait(const sigset_t *set, \ + SYS_SIGWAITINFO = 346 // { int sigwaitinfo(const sigset_t *set, \ + SYS___ACL_GET_FILE = 347 // { int __acl_get_file(const char *path, \ + SYS___ACL_SET_FILE = 348 // { int __acl_set_file(const char *path, \ + SYS___ACL_GET_FD = 349 // { int __acl_get_fd(int filedes, \ + SYS___ACL_SET_FD = 350 // { int __acl_set_fd(int filedes, \ + SYS___ACL_DELETE_FILE = 351 // { int __acl_delete_file(const char *path, \ + SYS___ACL_DELETE_FD = 352 // { int __acl_delete_fd(int filedes, \ + SYS___ACL_ACLCHECK_FILE = 353 // { int __acl_aclcheck_file(const char *path, \ + SYS___ACL_ACLCHECK_FD = 354 // { int __acl_aclcheck_fd(int filedes, \ + SYS_EXTATTRCTL = 355 // { int extattrctl(const char *path, int cmd, \ + SYS_EXTATTR_SET_FILE = 356 // { ssize_t extattr_set_file( \ + SYS_EXTATTR_GET_FILE = 357 // { ssize_t extattr_get_file( \ + SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, \ + SYS_AIO_WAITCOMPLETE = 359 // { int aio_waitcomplete( \ + SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, \ + SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, \ + SYS_KQUEUE = 362 // { int kqueue(void); } + SYS_KEVENT = 363 // { int kevent(int fd, \ + SYS_EXTATTR_SET_FD = 371 // { ssize_t extattr_set_fd(int fd, \ + SYS_EXTATTR_GET_FD = 372 // { ssize_t extattr_get_fd(int fd, \ + SYS_EXTATTR_DELETE_FD = 373 // { int extattr_delete_fd(int fd, \ + SYS___SETUGID = 374 // { int __setugid(int flag); } + SYS_EACCESS = 376 // { int eaccess(char *path, int amode); } + SYS_NMOUNT = 378 // { int nmount(struct iovec *iovp, \ + SYS___MAC_GET_PROC = 384 // { int __mac_get_proc(struct mac *mac_p); } + SYS___MAC_SET_PROC = 385 // { int __mac_set_proc(struct mac *mac_p); } + SYS___MAC_GET_FD = 386 // { int __mac_get_fd(int fd, \ + SYS___MAC_GET_FILE = 387 // { int __mac_get_file(const char *path_p, \ + SYS___MAC_SET_FD = 388 // { int __mac_set_fd(int fd, \ + SYS___MAC_SET_FILE = 389 // { int __mac_set_file(const char *path_p, \ + SYS_KENV = 390 // { int kenv(int what, const char *name, \ + SYS_LCHFLAGS = 391 // { int lchflags(const char *path, \ + SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, \ + SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, \ + SYS_MAC_SYSCALL = 394 // { int mac_syscall(const char *policy, \ + SYS_GETFSSTAT = 395 // { int getfsstat(struct statfs *buf, \ + SYS_STATFS = 396 // { int statfs(char *path, \ + SYS_FSTATFS = 397 // { int fstatfs(int fd, struct statfs *buf); } + SYS_FHSTATFS = 398 // { int fhstatfs(const struct fhandle *u_fhp, \ + SYS_KSEM_CLOSE = 400 // { int ksem_close(semid_t id); } + SYS_KSEM_POST = 401 // { int ksem_post(semid_t id); } + SYS_KSEM_WAIT = 402 // { int ksem_wait(semid_t id); } + SYS_KSEM_TRYWAIT = 403 // { int ksem_trywait(semid_t id); } + SYS_KSEM_INIT = 404 // { int ksem_init(semid_t *idp, \ + SYS_KSEM_OPEN = 405 // { int ksem_open(semid_t *idp, \ + SYS_KSEM_UNLINK = 406 // { int ksem_unlink(const char *name); } + SYS_KSEM_GETVALUE = 407 // { int ksem_getvalue(semid_t id, int *val); } + SYS_KSEM_DESTROY = 408 // { int ksem_destroy(semid_t id); } + SYS___MAC_GET_PID = 409 // { int __mac_get_pid(pid_t pid, \ + SYS___MAC_GET_LINK = 410 // { int __mac_get_link(const char *path_p, \ + SYS___MAC_SET_LINK = 411 // { int __mac_set_link(const char *path_p, \ + SYS_EXTATTR_SET_LINK = 412 // { ssize_t extattr_set_link( \ + SYS_EXTATTR_GET_LINK = 413 // { ssize_t extattr_get_link( \ + SYS_EXTATTR_DELETE_LINK = 414 // { int extattr_delete_link( \ + SYS___MAC_EXECVE = 415 // { int __mac_execve(char *fname, char **argv, \ + SYS_SIGACTION = 416 // { int sigaction(int sig, \ + SYS_SIGRETURN = 417 // { int sigreturn( \ + SYS_GETCONTEXT = 421 // { int getcontext(struct __ucontext *ucp); } + SYS_SETCONTEXT = 422 // { int setcontext( \ + SYS_SWAPCONTEXT = 423 // { int swapcontext(struct __ucontext *oucp, \ + SYS_SWAPOFF = 424 // { int swapoff(const char *name); } + SYS___ACL_GET_LINK = 425 // { int __acl_get_link(const char *path, \ + SYS___ACL_SET_LINK = 426 // { int __acl_set_link(const char *path, \ + SYS___ACL_DELETE_LINK = 427 // { int __acl_delete_link(const char *path, \ + SYS___ACL_ACLCHECK_LINK = 428 // { int __acl_aclcheck_link(const char *path, \ + SYS_SIGWAIT = 429 // { int sigwait(const sigset_t *set, \ + SYS_THR_CREATE = 430 // { int thr_create(ucontext_t *ctx, long *id, \ + SYS_THR_EXIT = 431 // { void thr_exit(long *state); } + SYS_THR_SELF = 432 // { int thr_self(long *id); } + SYS_THR_KILL = 433 // { int thr_kill(long id, int sig); } + SYS__UMTX_LOCK = 434 // { int _umtx_lock(struct umtx *umtx); } + SYS__UMTX_UNLOCK = 435 // { int _umtx_unlock(struct umtx *umtx); } + SYS_JAIL_ATTACH = 436 // { int jail_attach(int jid); } + SYS_EXTATTR_LIST_FD = 437 // { ssize_t extattr_list_fd(int fd, \ + SYS_EXTATTR_LIST_FILE = 438 // { ssize_t extattr_list_file( \ + SYS_EXTATTR_LIST_LINK = 439 // { ssize_t extattr_list_link( \ + SYS_KSEM_TIMEDWAIT = 441 // { int ksem_timedwait(semid_t id, \ + SYS_THR_SUSPEND = 442 // { int thr_suspend( \ + SYS_THR_WAKE = 443 // { int thr_wake(long id); } + SYS_KLDUNLOADF = 444 // { int kldunloadf(int fileid, int flags); } + SYS_AUDIT = 445 // { int audit(const void *record, \ + SYS_AUDITON = 446 // { int auditon(int cmd, void *data, \ + SYS_GETAUID = 447 // { int getauid(uid_t *auid); } + SYS_SETAUID = 448 // { int setauid(uid_t *auid); } + SYS_GETAUDIT = 449 // { int getaudit(struct auditinfo *auditinfo); } + SYS_SETAUDIT = 450 // { int setaudit(struct auditinfo *auditinfo); } + SYS_GETAUDIT_ADDR = 451 // { int getaudit_addr( \ + SYS_SETAUDIT_ADDR = 452 // { int setaudit_addr( \ + SYS_AUDITCTL = 453 // { int auditctl(char *path); } + SYS__UMTX_OP = 454 // { int _umtx_op(void *obj, int op, \ + SYS_THR_NEW = 455 // { int thr_new(struct thr_param *param, \ + SYS_SIGQUEUE = 456 // { int sigqueue(pid_t pid, int signum, void *value); } + SYS_KMQ_OPEN = 457 // { int kmq_open(const char *path, int flags, \ + SYS_KMQ_SETATTR = 458 // { int kmq_setattr(int mqd, \ + SYS_KMQ_TIMEDRECEIVE = 459 // { int kmq_timedreceive(int mqd, \ + SYS_KMQ_TIMEDSEND = 460 // { int kmq_timedsend(int mqd, \ + SYS_KMQ_NOTIFY = 461 // { int kmq_notify(int mqd, \ + SYS_KMQ_UNLINK = 462 // { int kmq_unlink(const char *path); } + SYS_ABORT2 = 463 // { int abort2(const char *why, int nargs, void **args); } + SYS_THR_SET_NAME = 464 // { int thr_set_name(long id, const char *name); } + SYS_AIO_FSYNC = 465 // { int aio_fsync(int op, struct aiocb *aiocbp); } + SYS_RTPRIO_THREAD = 466 // { int rtprio_thread(int function, \ + SYS_SCTP_PEELOFF = 471 // { int sctp_peeloff(int sd, uint32_t name); } + SYS_SCTP_GENERIC_SENDMSG = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, \ + SYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, \ + SYS_SCTP_GENERIC_RECVMSG = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, \ + SYS_PREAD = 475 // { ssize_t pread(int fd, void *buf, \ + SYS_PWRITE = 476 // { ssize_t pwrite(int fd, const void *buf, \ + SYS_MMAP = 477 // { caddr_t mmap(caddr_t addr, size_t len, \ + SYS_LSEEK = 478 // { off_t lseek(int fd, off_t offset, \ + SYS_TRUNCATE = 479 // { int truncate(char *path, off_t length); } + SYS_FTRUNCATE = 480 // { int ftruncate(int fd, off_t length); } + SYS_THR_KILL2 = 481 // { int thr_kill2(pid_t pid, long id, int sig); } + SYS_SHM_OPEN = 482 // { int shm_open(const char *path, int flags, \ + SYS_SHM_UNLINK = 483 // { int shm_unlink(const char *path); } + SYS_CPUSET = 484 // { int cpuset(cpusetid_t *setid); } + SYS_CPUSET_SETID = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, \ + SYS_CPUSET_GETID = 486 // { int cpuset_getid(cpulevel_t level, \ + SYS_CPUSET_GETAFFINITY = 487 // { int cpuset_getaffinity(cpulevel_t level, \ + SYS_CPUSET_SETAFFINITY = 488 // { int cpuset_setaffinity(cpulevel_t level, \ + SYS_FACCESSAT = 489 // { int faccessat(int fd, char *path, int amode, \ + SYS_FCHMODAT = 490 // { int fchmodat(int fd, char *path, mode_t mode, \ + SYS_FCHOWNAT = 491 // { int fchownat(int fd, char *path, uid_t uid, \ + SYS_FEXECVE = 492 // { int fexecve(int fd, char **argv, \ + SYS_FSTATAT = 493 // { int fstatat(int fd, char *path, \ + SYS_FUTIMESAT = 494 // { int futimesat(int fd, char *path, \ + SYS_LINKAT = 495 // { int linkat(int fd1, char *path1, int fd2, \ + SYS_MKDIRAT = 496 // { int mkdirat(int fd, char *path, mode_t mode); } + SYS_MKFIFOAT = 497 // { int mkfifoat(int fd, char *path, mode_t mode); } + SYS_MKNODAT = 498 // { int mknodat(int fd, char *path, mode_t mode, \ + SYS_OPENAT = 499 // { int openat(int fd, char *path, int flag, \ + SYS_READLINKAT = 500 // { int readlinkat(int fd, char *path, char *buf, \ + SYS_RENAMEAT = 501 // { int renameat(int oldfd, char *old, int newfd, \ + SYS_SYMLINKAT = 502 // { int symlinkat(char *path1, int fd, \ + SYS_UNLINKAT = 503 // { int unlinkat(int fd, char *path, int flag); } + SYS_POSIX_OPENPT = 504 // { int posix_openpt(int flags); } + SYS_GSSD_SYSCALL = 505 // { int gssd_syscall(char *path); } + SYS_JAIL_GET = 506 // { int jail_get(struct iovec *iovp, \ + SYS_JAIL_SET = 507 // { int jail_set(struct iovec *iovp, \ + SYS_JAIL_REMOVE = 508 // { int jail_remove(int jid); } + SYS_CLOSEFROM = 509 // { int closefrom(int lowfd); } + SYS___SEMCTL = 510 // { int __semctl(int semid, int semnum, \ + SYS_MSGCTL = 511 // { int msgctl(int msqid, int cmd, \ + SYS_SHMCTL = 512 // { int shmctl(int shmid, int cmd, \ + SYS_LPATHCONF = 513 // { int lpathconf(char *path, int name); } + SYS___CAP_RIGHTS_GET = 515 // { int __cap_rights_get(int version, \ + SYS_CAP_ENTER = 516 // { int cap_enter(void); } + SYS_CAP_GETMODE = 517 // { int cap_getmode(u_int *modep); } + SYS_PDFORK = 518 // { int pdfork(int *fdp, int flags); } + SYS_PDKILL = 519 // { int pdkill(int fd, int signum); } + SYS_PDGETPID = 520 // { int pdgetpid(int fd, pid_t *pidp); } + SYS_PSELECT = 522 // { int pselect(int nd, fd_set *in, \ + SYS_GETLOGINCLASS = 523 // { int getloginclass(char *namebuf, \ + SYS_SETLOGINCLASS = 524 // { int setloginclass(const char *namebuf); } + SYS_RCTL_GET_RACCT = 525 // { int rctl_get_racct(const void *inbufp, \ + SYS_RCTL_GET_RULES = 526 // { int rctl_get_rules(const void *inbufp, \ + SYS_RCTL_GET_LIMITS = 527 // { int rctl_get_limits(const void *inbufp, \ + SYS_RCTL_ADD_RULE = 528 // { int rctl_add_rule(const void *inbufp, \ + SYS_RCTL_REMOVE_RULE = 529 // { int rctl_remove_rule(const void *inbufp, \ + SYS_POSIX_FALLOCATE = 530 // { int posix_fallocate(int fd, \ + SYS_POSIX_FADVISE = 531 // { int posix_fadvise(int fd, off_t offset, \ + SYS_WAIT6 = 532 // { int wait6(idtype_t idtype, id_t id, \ + SYS_CAP_RIGHTS_LIMIT = 533 // { int cap_rights_limit(int fd, \ + SYS_CAP_IOCTLS_LIMIT = 534 // { int cap_ioctls_limit(int fd, \ + SYS_CAP_IOCTLS_GET = 535 // { ssize_t cap_ioctls_get(int fd, \ + SYS_CAP_FCNTLS_LIMIT = 536 // { int cap_fcntls_limit(int fd, \ + SYS_CAP_FCNTLS_GET = 537 // { int cap_fcntls_get(int fd, \ + SYS_BINDAT = 538 // { int bindat(int fd, int s, caddr_t name, \ + SYS_CONNECTAT = 539 // { int connectat(int fd, int s, caddr_t name, \ + SYS_CHFLAGSAT = 540 // { int chflagsat(int fd, const char *path, \ + SYS_ACCEPT4 = 541 // { int accept4(int s, \ + SYS_PIPE2 = 542 // { int pipe2(int *fildes, int flags); } + SYS_AIO_MLOCK = 543 // { int aio_mlock(struct aiocb *aiocbp); } + SYS_PROCCTL = 544 // { int procctl(idtype_t idtype, id_t id, \ + SYS_PPOLL = 545 // { int ppoll(struct pollfd *fds, u_int nfds, \ + SYS_FUTIMENS = 546 // { int futimens(int fd, \ + SYS_UTIMENSAT = 547 // { int utimensat(int fd, \ ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go index 81722ac9..b66f900d 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go @@ -7,347 +7,397 @@ package unix const ( // SYS_NOSYS = 0; // { int nosys(void); } syscall nosys_args int - SYS_EXIT = 1 // { void sys_exit(int rval); } exit \ - SYS_FORK = 2 // { int fork(void); } - SYS_READ = 3 // { ssize_t read(int fd, void *buf, \ - SYS_WRITE = 4 // { ssize_t write(int fd, const void *buf, \ - SYS_OPEN = 5 // { int open(char *path, int flags, int mode); } - SYS_CLOSE = 6 // { int close(int fd); } - SYS_WAIT4 = 7 // { int wait4(int pid, int *status, \ - SYS_LINK = 9 // { int link(char *path, char *link); } - SYS_UNLINK = 10 // { int unlink(char *path); } - SYS_CHDIR = 12 // { int chdir(char *path); } - SYS_FCHDIR = 13 // { int fchdir(int fd); } - SYS_MKNOD = 14 // { int mknod(char *path, int mode, int dev); } - SYS_CHMOD = 15 // { int chmod(char *path, int mode); } - SYS_CHOWN = 16 // { int chown(char *path, int uid, int gid); } - SYS_OBREAK = 17 // { int obreak(char *nsize); } break \ - SYS_GETPID = 20 // { pid_t getpid(void); } - SYS_MOUNT = 21 // { int mount(char *type, char *path, \ - SYS_UNMOUNT = 22 // { int unmount(char *path, int flags); } - SYS_SETUID = 23 // { int setuid(uid_t uid); } - SYS_GETUID = 24 // { uid_t getuid(void); } - SYS_GETEUID = 25 // { uid_t geteuid(void); } - SYS_PTRACE = 26 // { int ptrace(int req, pid_t pid, \ - SYS_RECVMSG = 27 // { int recvmsg(int s, struct msghdr *msg, \ - SYS_SENDMSG = 28 // { int sendmsg(int s, struct msghdr *msg, \ - SYS_RECVFROM = 29 // { int recvfrom(int s, caddr_t buf, \ - SYS_ACCEPT = 30 // { int accept(int s, \ - SYS_GETPEERNAME = 31 // { int getpeername(int fdes, \ - SYS_GETSOCKNAME = 32 // { int getsockname(int fdes, \ - SYS_ACCESS = 33 // { int access(char *path, int amode); } - SYS_CHFLAGS = 34 // { int chflags(const char *path, u_long flags); } - SYS_FCHFLAGS = 35 // { int fchflags(int fd, u_long flags); } - SYS_SYNC = 36 // { int sync(void); } - SYS_KILL = 37 // { int kill(int pid, int signum); } - SYS_GETPPID = 39 // { pid_t getppid(void); } - SYS_DUP = 41 // { int dup(u_int fd); } - SYS_PIPE = 42 // { int pipe(void); } - SYS_GETEGID = 43 // { gid_t getegid(void); } - SYS_PROFIL = 44 // { int profil(caddr_t samples, size_t size, \ - SYS_KTRACE = 45 // { int ktrace(const char *fname, int ops, \ - SYS_GETGID = 47 // { gid_t getgid(void); } - SYS_GETLOGIN = 49 // { int getlogin(char *namebuf, u_int \ - SYS_SETLOGIN = 50 // { int setlogin(char *namebuf); } - SYS_ACCT = 51 // { int acct(char *path); } - SYS_SIGALTSTACK = 53 // { int sigaltstack(stack_t *ss, \ - SYS_IOCTL = 54 // { int ioctl(int fd, u_long com, \ - SYS_REBOOT = 55 // { int reboot(int opt); } - SYS_REVOKE = 56 // { int revoke(char *path); } - SYS_SYMLINK = 57 // { int symlink(char *path, char *link); } - SYS_READLINK = 58 // { ssize_t readlink(char *path, char *buf, \ - SYS_EXECVE = 59 // { int execve(char *fname, char **argv, \ - SYS_UMASK = 60 // { int umask(int newmask); } umask umask_args \ - SYS_CHROOT = 61 // { int chroot(char *path); } - SYS_MSYNC = 65 // { int msync(void *addr, size_t len, \ - SYS_VFORK = 66 // { int vfork(void); } - SYS_SBRK = 69 // { int sbrk(int incr); } - SYS_SSTK = 70 // { int sstk(int incr); } - SYS_OVADVISE = 72 // { int ovadvise(int anom); } vadvise \ - SYS_MUNMAP = 73 // { int munmap(void *addr, size_t len); } - SYS_MPROTECT = 74 // { int mprotect(const void *addr, size_t len, \ - SYS_MADVISE = 75 // { int madvise(void *addr, size_t len, \ - SYS_MINCORE = 78 // { int mincore(const void *addr, size_t len, \ - SYS_GETGROUPS = 79 // { int getgroups(u_int gidsetsize, \ - SYS_SETGROUPS = 80 // { int setgroups(u_int gidsetsize, \ - SYS_GETPGRP = 81 // { int getpgrp(void); } - SYS_SETPGID = 82 // { int setpgid(int pid, int pgid); } - SYS_SETITIMER = 83 // { int setitimer(u_int which, struct \ - SYS_SWAPON = 85 // { int swapon(char *name); } - SYS_GETITIMER = 86 // { int getitimer(u_int which, \ - SYS_GETDTABLESIZE = 89 // { int getdtablesize(void); } - SYS_DUP2 = 90 // { int dup2(u_int from, u_int to); } - SYS_FCNTL = 92 // { int fcntl(int fd, int cmd, long arg); } - SYS_SELECT = 93 // { int select(int nd, fd_set *in, fd_set *ou, \ - SYS_FSYNC = 95 // { int fsync(int fd); } - SYS_SETPRIORITY = 96 // { int setpriority(int which, int who, \ - SYS_SOCKET = 97 // { int socket(int domain, int type, \ - SYS_CONNECT = 98 // { int connect(int s, caddr_t name, \ - SYS_GETPRIORITY = 100 // { int getpriority(int which, int who); } - SYS_BIND = 104 // { int bind(int s, caddr_t name, \ - SYS_SETSOCKOPT = 105 // { int setsockopt(int s, int level, int name, \ - SYS_LISTEN = 106 // { int listen(int s, int backlog); } - SYS_GETTIMEOFDAY = 116 // { int gettimeofday(struct timeval *tp, \ - SYS_GETRUSAGE = 117 // { int getrusage(int who, \ - SYS_GETSOCKOPT = 118 // { int getsockopt(int s, int level, int name, \ - SYS_READV = 120 // { int readv(int fd, struct iovec *iovp, \ - SYS_WRITEV = 121 // { int writev(int fd, struct iovec *iovp, \ - SYS_SETTIMEOFDAY = 122 // { int settimeofday(struct timeval *tv, \ - SYS_FCHOWN = 123 // { int fchown(int fd, int uid, int gid); } - SYS_FCHMOD = 124 // { int fchmod(int fd, int mode); } - SYS_SETREUID = 126 // { int setreuid(int ruid, int euid); } - SYS_SETREGID = 127 // { int setregid(int rgid, int egid); } - SYS_RENAME = 128 // { int rename(char *from, char *to); } - SYS_FLOCK = 131 // { int flock(int fd, int how); } - SYS_MKFIFO = 132 // { int mkfifo(char *path, int mode); } - SYS_SENDTO = 133 // { int sendto(int s, caddr_t buf, size_t len, \ - SYS_SHUTDOWN = 134 // { int shutdown(int s, int how); } - SYS_SOCKETPAIR = 135 // { int socketpair(int domain, int type, \ - SYS_MKDIR = 136 // { int mkdir(char *path, int mode); } - SYS_RMDIR = 137 // { int rmdir(char *path); } - SYS_UTIMES = 138 // { int utimes(char *path, \ - SYS_ADJTIME = 140 // { int adjtime(struct timeval *delta, \ - SYS_SETSID = 147 // { int setsid(void); } - SYS_QUOTACTL = 148 // { int quotactl(char *path, int cmd, int uid, \ - SYS_LGETFH = 160 // { int lgetfh(char *fname, \ - SYS_GETFH = 161 // { int getfh(char *fname, \ - SYS_SYSARCH = 165 // { int sysarch(int op, char *parms); } - SYS_RTPRIO = 166 // { int rtprio(int function, pid_t pid, \ - SYS_FREEBSD6_PREAD = 173 // { ssize_t freebsd6_pread(int fd, void *buf, \ - SYS_FREEBSD6_PWRITE = 174 // { ssize_t freebsd6_pwrite(int fd, \ - SYS_SETFIB = 175 // { int setfib(int fibnum); } - SYS_NTP_ADJTIME = 176 // { int ntp_adjtime(struct timex *tp); } - SYS_SETGID = 181 // { int setgid(gid_t gid); } - SYS_SETEGID = 182 // { int setegid(gid_t egid); } - SYS_SETEUID = 183 // { int seteuid(uid_t euid); } - SYS_STAT = 188 // { int stat(char *path, struct stat *ub); } - SYS_FSTAT = 189 // { int fstat(int fd, struct stat *sb); } - SYS_LSTAT = 190 // { int lstat(char *path, struct stat *ub); } - SYS_PATHCONF = 191 // { int pathconf(char *path, int name); } - SYS_FPATHCONF = 192 // { int fpathconf(int fd, int name); } - SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, \ - SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, \ - SYS_GETDIRENTRIES = 196 // { int getdirentries(int fd, char *buf, \ - SYS_FREEBSD6_MMAP = 197 // { caddr_t freebsd6_mmap(caddr_t addr, \ - SYS_FREEBSD6_LSEEK = 199 // { off_t freebsd6_lseek(int fd, int pad, \ - SYS_FREEBSD6_TRUNCATE = 200 // { int freebsd6_truncate(char *path, int pad, \ - SYS_FREEBSD6_FTRUNCATE = 201 // { int freebsd6_ftruncate(int fd, int pad, \ - SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, \ - SYS_MLOCK = 203 // { int mlock(const void *addr, size_t len); } - SYS_MUNLOCK = 204 // { int munlock(const void *addr, size_t len); } - SYS_UNDELETE = 205 // { int undelete(char *path); } - SYS_FUTIMES = 206 // { int futimes(int fd, struct timeval *tptr); } - SYS_GETPGID = 207 // { int getpgid(pid_t pid); } - SYS_POLL = 209 // { int poll(struct pollfd *fds, u_int nfds, \ - SYS_CLOCK_GETTIME = 232 // { int clock_gettime(clockid_t clock_id, \ - SYS_CLOCK_SETTIME = 233 // { int clock_settime( \ - SYS_CLOCK_GETRES = 234 // { int clock_getres(clockid_t clock_id, \ - SYS_KTIMER_CREATE = 235 // { int ktimer_create(clockid_t clock_id, \ - SYS_KTIMER_DELETE = 236 // { int ktimer_delete(int timerid); } - SYS_KTIMER_SETTIME = 237 // { int ktimer_settime(int timerid, int flags, \ - SYS_KTIMER_GETTIME = 238 // { int ktimer_gettime(int timerid, struct \ - SYS_KTIMER_GETOVERRUN = 239 // { int ktimer_getoverrun(int timerid); } - SYS_NANOSLEEP = 240 // { int nanosleep(const struct timespec *rqtp, \ - SYS_FFCLOCK_GETCOUNTER = 241 // { int ffclock_getcounter(ffcounter *ffcount); } - SYS_FFCLOCK_SETESTIMATE = 242 // { int ffclock_setestimate( \ - SYS_FFCLOCK_GETESTIMATE = 243 // { int ffclock_getestimate( \ - SYS_CLOCK_GETCPUCLOCKID2 = 247 // { int clock_getcpuclockid2(id_t id,\ - SYS_NTP_GETTIME = 248 // { int ntp_gettime(struct ntptimeval *ntvp); } - SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, \ - SYS_RFORK = 251 // { int rfork(int flags); } - SYS_OPENBSD_POLL = 252 // { int openbsd_poll(struct pollfd *fds, \ - SYS_ISSETUGID = 253 // { int issetugid(void); } - SYS_LCHOWN = 254 // { int lchown(char *path, int uid, int gid); } - SYS_GETDENTS = 272 // { int getdents(int fd, char *buf, \ - SYS_LCHMOD = 274 // { int lchmod(char *path, mode_t mode); } - SYS_LUTIMES = 276 // { int lutimes(char *path, \ - SYS_NSTAT = 278 // { int nstat(char *path, struct nstat *ub); } - SYS_NFSTAT = 279 // { int nfstat(int fd, struct nstat *sb); } - SYS_NLSTAT = 280 // { int nlstat(char *path, struct nstat *ub); } - SYS_PREADV = 289 // { ssize_t preadv(int fd, struct iovec *iovp, \ - SYS_PWRITEV = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, \ - SYS_FHOPEN = 298 // { int fhopen(const struct fhandle *u_fhp, \ - SYS_FHSTAT = 299 // { int fhstat(const struct fhandle *u_fhp, \ - SYS_MODNEXT = 300 // { int modnext(int modid); } - SYS_MODSTAT = 301 // { int modstat(int modid, \ - SYS_MODFNEXT = 302 // { int modfnext(int modid); } - SYS_MODFIND = 303 // { int modfind(const char *name); } - SYS_KLDLOAD = 304 // { int kldload(const char *file); } - SYS_KLDUNLOAD = 305 // { int kldunload(int fileid); } - SYS_KLDFIND = 306 // { int kldfind(const char *file); } - SYS_KLDNEXT = 307 // { int kldnext(int fileid); } - SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct \ - SYS_KLDFIRSTMOD = 309 // { int kldfirstmod(int fileid); } - SYS_GETSID = 310 // { int getsid(pid_t pid); } - SYS_SETRESUID = 311 // { int setresuid(uid_t ruid, uid_t euid, \ - SYS_SETRESGID = 312 // { int setresgid(gid_t rgid, gid_t egid, \ - SYS_YIELD = 321 // { int yield(void); } - SYS_MLOCKALL = 324 // { int mlockall(int how); } - SYS_MUNLOCKALL = 325 // { int munlockall(void); } - SYS___GETCWD = 326 // { int __getcwd(char *buf, u_int buflen); } - SYS_SCHED_SETPARAM = 327 // { int sched_setparam (pid_t pid, \ - SYS_SCHED_GETPARAM = 328 // { int sched_getparam (pid_t pid, struct \ - SYS_SCHED_SETSCHEDULER = 329 // { int sched_setscheduler (pid_t pid, int \ - SYS_SCHED_GETSCHEDULER = 330 // { int sched_getscheduler (pid_t pid); } - SYS_SCHED_YIELD = 331 // { int sched_yield (void); } - SYS_SCHED_GET_PRIORITY_MAX = 332 // { int sched_get_priority_max (int policy); } - SYS_SCHED_GET_PRIORITY_MIN = 333 // { int sched_get_priority_min (int policy); } - SYS_SCHED_RR_GET_INTERVAL = 334 // { int sched_rr_get_interval (pid_t pid, \ - SYS_UTRACE = 335 // { int utrace(const void *addr, size_t len); } - SYS_KLDSYM = 337 // { int kldsym(int fileid, int cmd, \ - SYS_JAIL = 338 // { int jail(struct jail *jail); } - SYS_SIGPROCMASK = 340 // { int sigprocmask(int how, \ - SYS_SIGSUSPEND = 341 // { int sigsuspend(const sigset_t *sigmask); } - SYS_SIGPENDING = 343 // { int sigpending(sigset_t *set); } - SYS_SIGTIMEDWAIT = 345 // { int sigtimedwait(const sigset_t *set, \ - SYS_SIGWAITINFO = 346 // { int sigwaitinfo(const sigset_t *set, \ - SYS___ACL_GET_FILE = 347 // { int __acl_get_file(const char *path, \ - SYS___ACL_SET_FILE = 348 // { int __acl_set_file(const char *path, \ - SYS___ACL_GET_FD = 349 // { int __acl_get_fd(int filedes, \ - SYS___ACL_SET_FD = 350 // { int __acl_set_fd(int filedes, \ - SYS___ACL_DELETE_FILE = 351 // { int __acl_delete_file(const char *path, \ - SYS___ACL_DELETE_FD = 352 // { int __acl_delete_fd(int filedes, \ - SYS___ACL_ACLCHECK_FILE = 353 // { int __acl_aclcheck_file(const char *path, \ - SYS___ACL_ACLCHECK_FD = 354 // { int __acl_aclcheck_fd(int filedes, \ - SYS_EXTATTRCTL = 355 // { int extattrctl(const char *path, int cmd, \ - SYS_EXTATTR_SET_FILE = 356 // { ssize_t extattr_set_file( \ - SYS_EXTATTR_GET_FILE = 357 // { ssize_t extattr_get_file( \ - SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, \ - SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, \ - SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, \ - SYS_KQUEUE = 362 // { int kqueue(void); } - SYS_KEVENT = 363 // { int kevent(int fd, \ - SYS_EXTATTR_SET_FD = 371 // { ssize_t extattr_set_fd(int fd, \ - SYS_EXTATTR_GET_FD = 372 // { ssize_t extattr_get_fd(int fd, \ - SYS_EXTATTR_DELETE_FD = 373 // { int extattr_delete_fd(int fd, \ - SYS___SETUGID = 374 // { int __setugid(int flag); } - SYS_EACCESS = 376 // { int eaccess(char *path, int amode); } - SYS_NMOUNT = 378 // { int nmount(struct iovec *iovp, \ - SYS___MAC_GET_PROC = 384 // { int __mac_get_proc(struct mac *mac_p); } - SYS___MAC_SET_PROC = 385 // { int __mac_set_proc(struct mac *mac_p); } - SYS___MAC_GET_FD = 386 // { int __mac_get_fd(int fd, \ - SYS___MAC_GET_FILE = 387 // { int __mac_get_file(const char *path_p, \ - SYS___MAC_SET_FD = 388 // { int __mac_set_fd(int fd, \ - SYS___MAC_SET_FILE = 389 // { int __mac_set_file(const char *path_p, \ - SYS_KENV = 390 // { int kenv(int what, const char *name, \ - SYS_LCHFLAGS = 391 // { int lchflags(const char *path, \ - SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, \ - SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, \ - SYS_MAC_SYSCALL = 394 // { int mac_syscall(const char *policy, \ - SYS_GETFSSTAT = 395 // { int getfsstat(struct statfs *buf, \ - SYS_STATFS = 396 // { int statfs(char *path, \ - SYS_FSTATFS = 397 // { int fstatfs(int fd, struct statfs *buf); } - SYS_FHSTATFS = 398 // { int fhstatfs(const struct fhandle *u_fhp, \ - SYS___MAC_GET_PID = 409 // { int __mac_get_pid(pid_t pid, \ - SYS___MAC_GET_LINK = 410 // { int __mac_get_link(const char *path_p, \ - SYS___MAC_SET_LINK = 411 // { int __mac_set_link(const char *path_p, \ - SYS_EXTATTR_SET_LINK = 412 // { ssize_t extattr_set_link( \ - SYS_EXTATTR_GET_LINK = 413 // { ssize_t extattr_get_link( \ - SYS_EXTATTR_DELETE_LINK = 414 // { int extattr_delete_link( \ - SYS___MAC_EXECVE = 415 // { int __mac_execve(char *fname, char **argv, \ - SYS_SIGACTION = 416 // { int sigaction(int sig, \ - SYS_SIGRETURN = 417 // { int sigreturn( \ - SYS_GETCONTEXT = 421 // { int getcontext(struct __ucontext *ucp); } - SYS_SETCONTEXT = 422 // { int setcontext( \ - SYS_SWAPCONTEXT = 423 // { int swapcontext(struct __ucontext *oucp, \ - SYS_SWAPOFF = 424 // { int swapoff(const char *name); } - SYS___ACL_GET_LINK = 425 // { int __acl_get_link(const char *path, \ - SYS___ACL_SET_LINK = 426 // { int __acl_set_link(const char *path, \ - SYS___ACL_DELETE_LINK = 427 // { int __acl_delete_link(const char *path, \ - SYS___ACL_ACLCHECK_LINK = 428 // { int __acl_aclcheck_link(const char *path, \ - SYS_SIGWAIT = 429 // { int sigwait(const sigset_t *set, \ - SYS_THR_CREATE = 430 // { int thr_create(ucontext_t *ctx, long *id, \ - SYS_THR_EXIT = 431 // { void thr_exit(long *state); } - SYS_THR_SELF = 432 // { int thr_self(long *id); } - SYS_THR_KILL = 433 // { int thr_kill(long id, int sig); } - SYS__UMTX_LOCK = 434 // { int _umtx_lock(struct umtx *umtx); } - SYS__UMTX_UNLOCK = 435 // { int _umtx_unlock(struct umtx *umtx); } - SYS_JAIL_ATTACH = 436 // { int jail_attach(int jid); } - SYS_EXTATTR_LIST_FD = 437 // { ssize_t extattr_list_fd(int fd, \ - SYS_EXTATTR_LIST_FILE = 438 // { ssize_t extattr_list_file( \ - SYS_EXTATTR_LIST_LINK = 439 // { ssize_t extattr_list_link( \ - SYS_THR_SUSPEND = 442 // { int thr_suspend( \ - SYS_THR_WAKE = 443 // { int thr_wake(long id); } - SYS_KLDUNLOADF = 444 // { int kldunloadf(int fileid, int flags); } - SYS_AUDIT = 445 // { int audit(const void *record, \ - SYS_AUDITON = 446 // { int auditon(int cmd, void *data, \ - SYS_GETAUID = 447 // { int getauid(uid_t *auid); } - SYS_SETAUID = 448 // { int setauid(uid_t *auid); } - SYS_GETAUDIT = 449 // { int getaudit(struct auditinfo *auditinfo); } - SYS_SETAUDIT = 450 // { int setaudit(struct auditinfo *auditinfo); } - SYS_GETAUDIT_ADDR = 451 // { int getaudit_addr( \ - SYS_SETAUDIT_ADDR = 452 // { int setaudit_addr( \ - SYS_AUDITCTL = 453 // { int auditctl(char *path); } - SYS__UMTX_OP = 454 // { int _umtx_op(void *obj, int op, \ - SYS_THR_NEW = 455 // { int thr_new(struct thr_param *param, \ - SYS_SIGQUEUE = 456 // { int sigqueue(pid_t pid, int signum, void *value); } - SYS_ABORT2 = 463 // { int abort2(const char *why, int nargs, void **args); } - SYS_THR_SET_NAME = 464 // { int thr_set_name(long id, const char *name); } - SYS_RTPRIO_THREAD = 466 // { int rtprio_thread(int function, \ - SYS_PREAD = 475 // { ssize_t pread(int fd, void *buf, \ - SYS_PWRITE = 476 // { ssize_t pwrite(int fd, const void *buf, \ - SYS_MMAP = 477 // { caddr_t mmap(caddr_t addr, size_t len, \ - SYS_LSEEK = 478 // { off_t lseek(int fd, off_t offset, \ - SYS_TRUNCATE = 479 // { int truncate(char *path, off_t length); } - SYS_FTRUNCATE = 480 // { int ftruncate(int fd, off_t length); } - SYS_THR_KILL2 = 481 // { int thr_kill2(pid_t pid, long id, int sig); } - SYS_SHM_OPEN = 482 // { int shm_open(const char *path, int flags, \ - SYS_SHM_UNLINK = 483 // { int shm_unlink(const char *path); } - SYS_CPUSET = 484 // { int cpuset(cpusetid_t *setid); } - SYS_CPUSET_SETID = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, \ - SYS_CPUSET_GETID = 486 // { int cpuset_getid(cpulevel_t level, \ - SYS_CPUSET_GETAFFINITY = 487 // { int cpuset_getaffinity(cpulevel_t level, \ - SYS_CPUSET_SETAFFINITY = 488 // { int cpuset_setaffinity(cpulevel_t level, \ - SYS_FACCESSAT = 489 // { int faccessat(int fd, char *path, int amode, \ - SYS_FCHMODAT = 490 // { int fchmodat(int fd, char *path, mode_t mode, \ - SYS_FCHOWNAT = 491 // { int fchownat(int fd, char *path, uid_t uid, \ - SYS_FEXECVE = 492 // { int fexecve(int fd, char **argv, \ - SYS_FSTATAT = 493 // { int fstatat(int fd, char *path, \ - SYS_FUTIMESAT = 494 // { int futimesat(int fd, char *path, \ - SYS_LINKAT = 495 // { int linkat(int fd1, char *path1, int fd2, \ - SYS_MKDIRAT = 496 // { int mkdirat(int fd, char *path, mode_t mode); } - SYS_MKFIFOAT = 497 // { int mkfifoat(int fd, char *path, mode_t mode); } - SYS_MKNODAT = 498 // { int mknodat(int fd, char *path, mode_t mode, \ - SYS_OPENAT = 499 // { int openat(int fd, char *path, int flag, \ - SYS_READLINKAT = 500 // { int readlinkat(int fd, char *path, char *buf, \ - SYS_RENAMEAT = 501 // { int renameat(int oldfd, char *old, int newfd, \ - SYS_SYMLINKAT = 502 // { int symlinkat(char *path1, int fd, \ - SYS_UNLINKAT = 503 // { int unlinkat(int fd, char *path, int flag); } - SYS_POSIX_OPENPT = 504 // { int posix_openpt(int flags); } - SYS_JAIL_GET = 506 // { int jail_get(struct iovec *iovp, \ - SYS_JAIL_SET = 507 // { int jail_set(struct iovec *iovp, \ - SYS_JAIL_REMOVE = 508 // { int jail_remove(int jid); } - SYS_CLOSEFROM = 509 // { int closefrom(int lowfd); } - SYS_LPATHCONF = 513 // { int lpathconf(char *path, int name); } - SYS___CAP_RIGHTS_GET = 515 // { int __cap_rights_get(int version, \ - SYS_CAP_ENTER = 516 // { int cap_enter(void); } - SYS_CAP_GETMODE = 517 // { int cap_getmode(u_int *modep); } - SYS_PDFORK = 518 // { int pdfork(int *fdp, int flags); } - SYS_PDKILL = 519 // { int pdkill(int fd, int signum); } - SYS_PDGETPID = 520 // { int pdgetpid(int fd, pid_t *pidp); } - SYS_PSELECT = 522 // { int pselect(int nd, fd_set *in, \ - SYS_GETLOGINCLASS = 523 // { int getloginclass(char *namebuf, \ - SYS_SETLOGINCLASS = 524 // { int setloginclass(const char *namebuf); } - SYS_RCTL_GET_RACCT = 525 // { int rctl_get_racct(const void *inbufp, \ - SYS_RCTL_GET_RULES = 526 // { int rctl_get_rules(const void *inbufp, \ - SYS_RCTL_GET_LIMITS = 527 // { int rctl_get_limits(const void *inbufp, \ - SYS_RCTL_ADD_RULE = 528 // { int rctl_add_rule(const void *inbufp, \ - SYS_RCTL_REMOVE_RULE = 529 // { int rctl_remove_rule(const void *inbufp, \ - SYS_POSIX_FALLOCATE = 530 // { int posix_fallocate(int fd, \ - SYS_POSIX_FADVISE = 531 // { int posix_fadvise(int fd, off_t offset, \ - SYS_WAIT6 = 532 // { int wait6(idtype_t idtype, id_t id, \ - SYS_CAP_RIGHTS_LIMIT = 533 // { int cap_rights_limit(int fd, \ - SYS_CAP_IOCTLS_LIMIT = 534 // { int cap_ioctls_limit(int fd, \ - SYS_CAP_IOCTLS_GET = 535 // { ssize_t cap_ioctls_get(int fd, \ - SYS_CAP_FCNTLS_LIMIT = 536 // { int cap_fcntls_limit(int fd, \ - SYS_CAP_FCNTLS_GET = 537 // { int cap_fcntls_get(int fd, \ - SYS_BINDAT = 538 // { int bindat(int fd, int s, caddr_t name, \ - SYS_CONNECTAT = 539 // { int connectat(int fd, int s, caddr_t name, \ - SYS_CHFLAGSAT = 540 // { int chflagsat(int fd, const char *path, \ - SYS_ACCEPT4 = 541 // { int accept4(int s, \ - SYS_PIPE2 = 542 // { int pipe2(int *fildes, int flags); } - SYS_PROCCTL = 544 // { int procctl(idtype_t idtype, id_t id, \ - SYS_PPOLL = 545 // { int ppoll(struct pollfd *fds, u_int nfds, \ - SYS_FUTIMENS = 546 // { int futimens(int fd, \ - SYS_UTIMENSAT = 547 // { int utimensat(int fd, \ + SYS_EXIT = 1 // { void sys_exit(int rval); } exit \ + SYS_FORK = 2 // { int fork(void); } + SYS_READ = 3 // { ssize_t read(int fd, void *buf, \ + SYS_WRITE = 4 // { ssize_t write(int fd, const void *buf, \ + SYS_OPEN = 5 // { int open(char *path, int flags, int mode); } + SYS_CLOSE = 6 // { int close(int fd); } + SYS_WAIT4 = 7 // { int wait4(int pid, int *status, \ + SYS_LINK = 9 // { int link(char *path, char *link); } + SYS_UNLINK = 10 // { int unlink(char *path); } + SYS_CHDIR = 12 // { int chdir(char *path); } + SYS_FCHDIR = 13 // { int fchdir(int fd); } + SYS_MKNOD = 14 // { int mknod(char *path, int mode, int dev); } + SYS_CHMOD = 15 // { int chmod(char *path, int mode); } + SYS_CHOWN = 16 // { int chown(char *path, int uid, int gid); } + SYS_OBREAK = 17 // { int obreak(char *nsize); } break \ + SYS_GETPID = 20 // { pid_t getpid(void); } + SYS_MOUNT = 21 // { int mount(char *type, char *path, \ + SYS_UNMOUNT = 22 // { int unmount(char *path, int flags); } + SYS_SETUID = 23 // { int setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t getuid(void); } + SYS_GETEUID = 25 // { uid_t geteuid(void); } + SYS_PTRACE = 26 // { int ptrace(int req, pid_t pid, \ + SYS_RECVMSG = 27 // { int recvmsg(int s, struct msghdr *msg, \ + SYS_SENDMSG = 28 // { int sendmsg(int s, struct msghdr *msg, \ + SYS_RECVFROM = 29 // { int recvfrom(int s, caddr_t buf, \ + SYS_ACCEPT = 30 // { int accept(int s, \ + SYS_GETPEERNAME = 31 // { int getpeername(int fdes, \ + SYS_GETSOCKNAME = 32 // { int getsockname(int fdes, \ + SYS_ACCESS = 33 // { int access(char *path, int amode); } + SYS_CHFLAGS = 34 // { int chflags(const char *path, u_long flags); } + SYS_FCHFLAGS = 35 // { int fchflags(int fd, u_long flags); } + SYS_SYNC = 36 // { int sync(void); } + SYS_KILL = 37 // { int kill(int pid, int signum); } + SYS_GETPPID = 39 // { pid_t getppid(void); } + SYS_DUP = 41 // { int dup(u_int fd); } + SYS_PIPE = 42 // { int pipe(void); } + SYS_GETEGID = 43 // { gid_t getegid(void); } + SYS_PROFIL = 44 // { int profil(caddr_t samples, size_t size, \ + SYS_KTRACE = 45 // { int ktrace(const char *fname, int ops, \ + SYS_GETGID = 47 // { gid_t getgid(void); } + SYS_GETLOGIN = 49 // { int getlogin(char *namebuf, u_int \ + SYS_SETLOGIN = 50 // { int setlogin(char *namebuf); } + SYS_ACCT = 51 // { int acct(char *path); } + SYS_SIGALTSTACK = 53 // { int sigaltstack(stack_t *ss, \ + SYS_IOCTL = 54 // { int ioctl(int fd, u_long com, \ + SYS_REBOOT = 55 // { int reboot(int opt); } + SYS_REVOKE = 56 // { int revoke(char *path); } + SYS_SYMLINK = 57 // { int symlink(char *path, char *link); } + SYS_READLINK = 58 // { ssize_t readlink(char *path, char *buf, \ + SYS_EXECVE = 59 // { int execve(char *fname, char **argv, \ + SYS_UMASK = 60 // { int umask(int newmask); } umask umask_args \ + SYS_CHROOT = 61 // { int chroot(char *path); } + SYS_MSYNC = 65 // { int msync(void *addr, size_t len, \ + SYS_VFORK = 66 // { int vfork(void); } + SYS_SBRK = 69 // { int sbrk(int incr); } + SYS_SSTK = 70 // { int sstk(int incr); } + SYS_OVADVISE = 72 // { int ovadvise(int anom); } vadvise \ + SYS_MUNMAP = 73 // { int munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int mprotect(const void *addr, size_t len, \ + SYS_MADVISE = 75 // { int madvise(void *addr, size_t len, \ + SYS_MINCORE = 78 // { int mincore(const void *addr, size_t len, \ + SYS_GETGROUPS = 79 // { int getgroups(u_int gidsetsize, \ + SYS_SETGROUPS = 80 // { int setgroups(u_int gidsetsize, \ + SYS_GETPGRP = 81 // { int getpgrp(void); } + SYS_SETPGID = 82 // { int setpgid(int pid, int pgid); } + SYS_SETITIMER = 83 // { int setitimer(u_int which, struct \ + SYS_SWAPON = 85 // { int swapon(char *name); } + SYS_GETITIMER = 86 // { int getitimer(u_int which, \ + SYS_GETDTABLESIZE = 89 // { int getdtablesize(void); } + SYS_DUP2 = 90 // { int dup2(u_int from, u_int to); } + SYS_FCNTL = 92 // { int fcntl(int fd, int cmd, long arg); } + SYS_SELECT = 93 // { int select(int nd, fd_set *in, fd_set *ou, \ + SYS_FSYNC = 95 // { int fsync(int fd); } + SYS_SETPRIORITY = 96 // { int setpriority(int which, int who, \ + SYS_SOCKET = 97 // { int socket(int domain, int type, \ + SYS_CONNECT = 98 // { int connect(int s, caddr_t name, \ + SYS_GETPRIORITY = 100 // { int getpriority(int which, int who); } + SYS_BIND = 104 // { int bind(int s, caddr_t name, \ + SYS_SETSOCKOPT = 105 // { int setsockopt(int s, int level, int name, \ + SYS_LISTEN = 106 // { int listen(int s, int backlog); } + SYS_GETTIMEOFDAY = 116 // { int gettimeofday(struct timeval *tp, \ + SYS_GETRUSAGE = 117 // { int getrusage(int who, \ + SYS_GETSOCKOPT = 118 // { int getsockopt(int s, int level, int name, \ + SYS_READV = 120 // { int readv(int fd, struct iovec *iovp, \ + SYS_WRITEV = 121 // { int writev(int fd, struct iovec *iovp, \ + SYS_SETTIMEOFDAY = 122 // { int settimeofday(struct timeval *tv, \ + SYS_FCHOWN = 123 // { int fchown(int fd, int uid, int gid); } + SYS_FCHMOD = 124 // { int fchmod(int fd, int mode); } + SYS_SETREUID = 126 // { int setreuid(int ruid, int euid); } + SYS_SETREGID = 127 // { int setregid(int rgid, int egid); } + SYS_RENAME = 128 // { int rename(char *from, char *to); } + SYS_FLOCK = 131 // { int flock(int fd, int how); } + SYS_MKFIFO = 132 // { int mkfifo(char *path, int mode); } + SYS_SENDTO = 133 // { int sendto(int s, caddr_t buf, size_t len, \ + SYS_SHUTDOWN = 134 // { int shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int socketpair(int domain, int type, \ + SYS_MKDIR = 136 // { int mkdir(char *path, int mode); } + SYS_RMDIR = 137 // { int rmdir(char *path); } + SYS_UTIMES = 138 // { int utimes(char *path, \ + SYS_ADJTIME = 140 // { int adjtime(struct timeval *delta, \ + SYS_SETSID = 147 // { int setsid(void); } + SYS_QUOTACTL = 148 // { int quotactl(char *path, int cmd, int uid, \ + SYS_NLM_SYSCALL = 154 // { int nlm_syscall(int debug_level, int grace_period, int addr_count, char **addrs); } + SYS_NFSSVC = 155 // { int nfssvc(int flag, caddr_t argp); } + SYS_LGETFH = 160 // { int lgetfh(char *fname, \ + SYS_GETFH = 161 // { int getfh(char *fname, \ + SYS_SYSARCH = 165 // { int sysarch(int op, char *parms); } + SYS_RTPRIO = 166 // { int rtprio(int function, pid_t pid, \ + SYS_SEMSYS = 169 // { int semsys(int which, int a2, int a3, \ + SYS_MSGSYS = 170 // { int msgsys(int which, int a2, int a3, \ + SYS_SHMSYS = 171 // { int shmsys(int which, int a2, int a3, \ + SYS_FREEBSD6_PREAD = 173 // { ssize_t freebsd6_pread(int fd, void *buf, \ + SYS_FREEBSD6_PWRITE = 174 // { ssize_t freebsd6_pwrite(int fd, \ + SYS_SETFIB = 175 // { int setfib(int fibnum); } + SYS_NTP_ADJTIME = 176 // { int ntp_adjtime(struct timex *tp); } + SYS_SETGID = 181 // { int setgid(gid_t gid); } + SYS_SETEGID = 182 // { int setegid(gid_t egid); } + SYS_SETEUID = 183 // { int seteuid(uid_t euid); } + SYS_STAT = 188 // { int stat(char *path, struct stat *ub); } + SYS_FSTAT = 189 // { int fstat(int fd, struct stat *sb); } + SYS_LSTAT = 190 // { int lstat(char *path, struct stat *ub); } + SYS_PATHCONF = 191 // { int pathconf(char *path, int name); } + SYS_FPATHCONF = 192 // { int fpathconf(int fd, int name); } + SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, \ + SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, \ + SYS_GETDIRENTRIES = 196 // { int getdirentries(int fd, char *buf, \ + SYS_FREEBSD6_MMAP = 197 // { caddr_t freebsd6_mmap(caddr_t addr, \ + SYS_FREEBSD6_LSEEK = 199 // { off_t freebsd6_lseek(int fd, int pad, \ + SYS_FREEBSD6_TRUNCATE = 200 // { int freebsd6_truncate(char *path, int pad, \ + SYS_FREEBSD6_FTRUNCATE = 201 // { int freebsd6_ftruncate(int fd, int pad, \ + SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, \ + SYS_MLOCK = 203 // { int mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int munlock(const void *addr, size_t len); } + SYS_UNDELETE = 205 // { int undelete(char *path); } + SYS_FUTIMES = 206 // { int futimes(int fd, struct timeval *tptr); } + SYS_GETPGID = 207 // { int getpgid(pid_t pid); } + SYS_POLL = 209 // { int poll(struct pollfd *fds, u_int nfds, \ + SYS_SEMGET = 221 // { int semget(key_t key, int nsems, \ + SYS_SEMOP = 222 // { int semop(int semid, struct sembuf *sops, \ + SYS_MSGGET = 225 // { int msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int msgsnd(int msqid, const void *msgp, \ + SYS_MSGRCV = 227 // { int msgrcv(int msqid, void *msgp, \ + SYS_SHMAT = 228 // { int shmat(int shmid, const void *shmaddr, \ + SYS_SHMDT = 230 // { int shmdt(const void *shmaddr); } + SYS_SHMGET = 231 // { int shmget(key_t key, size_t size, \ + SYS_CLOCK_GETTIME = 232 // { int clock_gettime(clockid_t clock_id, \ + SYS_CLOCK_SETTIME = 233 // { int clock_settime( \ + SYS_CLOCK_GETRES = 234 // { int clock_getres(clockid_t clock_id, \ + SYS_KTIMER_CREATE = 235 // { int ktimer_create(clockid_t clock_id, \ + SYS_KTIMER_DELETE = 236 // { int ktimer_delete(int timerid); } + SYS_KTIMER_SETTIME = 237 // { int ktimer_settime(int timerid, int flags, \ + SYS_KTIMER_GETTIME = 238 // { int ktimer_gettime(int timerid, struct \ + SYS_KTIMER_GETOVERRUN = 239 // { int ktimer_getoverrun(int timerid); } + SYS_NANOSLEEP = 240 // { int nanosleep(const struct timespec *rqtp, \ + SYS_FFCLOCK_GETCOUNTER = 241 // { int ffclock_getcounter(ffcounter *ffcount); } + SYS_FFCLOCK_SETESTIMATE = 242 // { int ffclock_setestimate( \ + SYS_FFCLOCK_GETESTIMATE = 243 // { int ffclock_getestimate( \ + SYS_CLOCK_GETCPUCLOCKID2 = 247 // { int clock_getcpuclockid2(id_t id,\ + SYS_NTP_GETTIME = 248 // { int ntp_gettime(struct ntptimeval *ntvp); } + SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, \ + SYS_RFORK = 251 // { int rfork(int flags); } + SYS_OPENBSD_POLL = 252 // { int openbsd_poll(struct pollfd *fds, \ + SYS_ISSETUGID = 253 // { int issetugid(void); } + SYS_LCHOWN = 254 // { int lchown(char *path, int uid, int gid); } + SYS_AIO_READ = 255 // { int aio_read(struct aiocb *aiocbp); } + SYS_AIO_WRITE = 256 // { int aio_write(struct aiocb *aiocbp); } + SYS_LIO_LISTIO = 257 // { int lio_listio(int mode, \ + SYS_GETDENTS = 272 // { int getdents(int fd, char *buf, \ + SYS_LCHMOD = 274 // { int lchmod(char *path, mode_t mode); } + SYS_LUTIMES = 276 // { int lutimes(char *path, \ + SYS_NSTAT = 278 // { int nstat(char *path, struct nstat *ub); } + SYS_NFSTAT = 279 // { int nfstat(int fd, struct nstat *sb); } + SYS_NLSTAT = 280 // { int nlstat(char *path, struct nstat *ub); } + SYS_PREADV = 289 // { ssize_t preadv(int fd, struct iovec *iovp, \ + SYS_PWRITEV = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, \ + SYS_FHOPEN = 298 // { int fhopen(const struct fhandle *u_fhp, \ + SYS_FHSTAT = 299 // { int fhstat(const struct fhandle *u_fhp, \ + SYS_MODNEXT = 300 // { int modnext(int modid); } + SYS_MODSTAT = 301 // { int modstat(int modid, \ + SYS_MODFNEXT = 302 // { int modfnext(int modid); } + SYS_MODFIND = 303 // { int modfind(const char *name); } + SYS_KLDLOAD = 304 // { int kldload(const char *file); } + SYS_KLDUNLOAD = 305 // { int kldunload(int fileid); } + SYS_KLDFIND = 306 // { int kldfind(const char *file); } + SYS_KLDNEXT = 307 // { int kldnext(int fileid); } + SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct \ + SYS_KLDFIRSTMOD = 309 // { int kldfirstmod(int fileid); } + SYS_GETSID = 310 // { int getsid(pid_t pid); } + SYS_SETRESUID = 311 // { int setresuid(uid_t ruid, uid_t euid, \ + SYS_SETRESGID = 312 // { int setresgid(gid_t rgid, gid_t egid, \ + SYS_AIO_RETURN = 314 // { int aio_return(struct aiocb *aiocbp); } + SYS_AIO_SUSPEND = 315 // { int aio_suspend( \ + SYS_AIO_CANCEL = 316 // { int aio_cancel(int fd, \ + SYS_AIO_ERROR = 317 // { int aio_error(struct aiocb *aiocbp); } + SYS_OAIO_READ = 318 // { int oaio_read(struct oaiocb *aiocbp); } + SYS_OAIO_WRITE = 319 // { int oaio_write(struct oaiocb *aiocbp); } + SYS_OLIO_LISTIO = 320 // { int olio_listio(int mode, \ + SYS_YIELD = 321 // { int yield(void); } + SYS_MLOCKALL = 324 // { int mlockall(int how); } + SYS_MUNLOCKALL = 325 // { int munlockall(void); } + SYS___GETCWD = 326 // { int __getcwd(char *buf, u_int buflen); } + SYS_SCHED_SETPARAM = 327 // { int sched_setparam (pid_t pid, \ + SYS_SCHED_GETPARAM = 328 // { int sched_getparam (pid_t pid, struct \ + SYS_SCHED_SETSCHEDULER = 329 // { int sched_setscheduler (pid_t pid, int \ + SYS_SCHED_GETSCHEDULER = 330 // { int sched_getscheduler (pid_t pid); } + SYS_SCHED_YIELD = 331 // { int sched_yield (void); } + SYS_SCHED_GET_PRIORITY_MAX = 332 // { int sched_get_priority_max (int policy); } + SYS_SCHED_GET_PRIORITY_MIN = 333 // { int sched_get_priority_min (int policy); } + SYS_SCHED_RR_GET_INTERVAL = 334 // { int sched_rr_get_interval (pid_t pid, \ + SYS_UTRACE = 335 // { int utrace(const void *addr, size_t len); } + SYS_KLDSYM = 337 // { int kldsym(int fileid, int cmd, \ + SYS_JAIL = 338 // { int jail(struct jail *jail); } + SYS_SIGPROCMASK = 340 // { int sigprocmask(int how, \ + SYS_SIGSUSPEND = 341 // { int sigsuspend(const sigset_t *sigmask); } + SYS_SIGPENDING = 343 // { int sigpending(sigset_t *set); } + SYS_SIGTIMEDWAIT = 345 // { int sigtimedwait(const sigset_t *set, \ + SYS_SIGWAITINFO = 346 // { int sigwaitinfo(const sigset_t *set, \ + SYS___ACL_GET_FILE = 347 // { int __acl_get_file(const char *path, \ + SYS___ACL_SET_FILE = 348 // { int __acl_set_file(const char *path, \ + SYS___ACL_GET_FD = 349 // { int __acl_get_fd(int filedes, \ + SYS___ACL_SET_FD = 350 // { int __acl_set_fd(int filedes, \ + SYS___ACL_DELETE_FILE = 351 // { int __acl_delete_file(const char *path, \ + SYS___ACL_DELETE_FD = 352 // { int __acl_delete_fd(int filedes, \ + SYS___ACL_ACLCHECK_FILE = 353 // { int __acl_aclcheck_file(const char *path, \ + SYS___ACL_ACLCHECK_FD = 354 // { int __acl_aclcheck_fd(int filedes, \ + SYS_EXTATTRCTL = 355 // { int extattrctl(const char *path, int cmd, \ + SYS_EXTATTR_SET_FILE = 356 // { ssize_t extattr_set_file( \ + SYS_EXTATTR_GET_FILE = 357 // { ssize_t extattr_get_file( \ + SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, \ + SYS_AIO_WAITCOMPLETE = 359 // { int aio_waitcomplete( \ + SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, \ + SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, \ + SYS_KQUEUE = 362 // { int kqueue(void); } + SYS_KEVENT = 363 // { int kevent(int fd, \ + SYS_EXTATTR_SET_FD = 371 // { ssize_t extattr_set_fd(int fd, \ + SYS_EXTATTR_GET_FD = 372 // { ssize_t extattr_get_fd(int fd, \ + SYS_EXTATTR_DELETE_FD = 373 // { int extattr_delete_fd(int fd, \ + SYS___SETUGID = 374 // { int __setugid(int flag); } + SYS_EACCESS = 376 // { int eaccess(char *path, int amode); } + SYS_NMOUNT = 378 // { int nmount(struct iovec *iovp, \ + SYS___MAC_GET_PROC = 384 // { int __mac_get_proc(struct mac *mac_p); } + SYS___MAC_SET_PROC = 385 // { int __mac_set_proc(struct mac *mac_p); } + SYS___MAC_GET_FD = 386 // { int __mac_get_fd(int fd, \ + SYS___MAC_GET_FILE = 387 // { int __mac_get_file(const char *path_p, \ + SYS___MAC_SET_FD = 388 // { int __mac_set_fd(int fd, \ + SYS___MAC_SET_FILE = 389 // { int __mac_set_file(const char *path_p, \ + SYS_KENV = 390 // { int kenv(int what, const char *name, \ + SYS_LCHFLAGS = 391 // { int lchflags(const char *path, \ + SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, \ + SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, \ + SYS_MAC_SYSCALL = 394 // { int mac_syscall(const char *policy, \ + SYS_GETFSSTAT = 395 // { int getfsstat(struct statfs *buf, \ + SYS_STATFS = 396 // { int statfs(char *path, \ + SYS_FSTATFS = 397 // { int fstatfs(int fd, struct statfs *buf); } + SYS_FHSTATFS = 398 // { int fhstatfs(const struct fhandle *u_fhp, \ + SYS_KSEM_CLOSE = 400 // { int ksem_close(semid_t id); } + SYS_KSEM_POST = 401 // { int ksem_post(semid_t id); } + SYS_KSEM_WAIT = 402 // { int ksem_wait(semid_t id); } + SYS_KSEM_TRYWAIT = 403 // { int ksem_trywait(semid_t id); } + SYS_KSEM_INIT = 404 // { int ksem_init(semid_t *idp, \ + SYS_KSEM_OPEN = 405 // { int ksem_open(semid_t *idp, \ + SYS_KSEM_UNLINK = 406 // { int ksem_unlink(const char *name); } + SYS_KSEM_GETVALUE = 407 // { int ksem_getvalue(semid_t id, int *val); } + SYS_KSEM_DESTROY = 408 // { int ksem_destroy(semid_t id); } + SYS___MAC_GET_PID = 409 // { int __mac_get_pid(pid_t pid, \ + SYS___MAC_GET_LINK = 410 // { int __mac_get_link(const char *path_p, \ + SYS___MAC_SET_LINK = 411 // { int __mac_set_link(const char *path_p, \ + SYS_EXTATTR_SET_LINK = 412 // { ssize_t extattr_set_link( \ + SYS_EXTATTR_GET_LINK = 413 // { ssize_t extattr_get_link( \ + SYS_EXTATTR_DELETE_LINK = 414 // { int extattr_delete_link( \ + SYS___MAC_EXECVE = 415 // { int __mac_execve(char *fname, char **argv, \ + SYS_SIGACTION = 416 // { int sigaction(int sig, \ + SYS_SIGRETURN = 417 // { int sigreturn( \ + SYS_GETCONTEXT = 421 // { int getcontext(struct __ucontext *ucp); } + SYS_SETCONTEXT = 422 // { int setcontext( \ + SYS_SWAPCONTEXT = 423 // { int swapcontext(struct __ucontext *oucp, \ + SYS_SWAPOFF = 424 // { int swapoff(const char *name); } + SYS___ACL_GET_LINK = 425 // { int __acl_get_link(const char *path, \ + SYS___ACL_SET_LINK = 426 // { int __acl_set_link(const char *path, \ + SYS___ACL_DELETE_LINK = 427 // { int __acl_delete_link(const char *path, \ + SYS___ACL_ACLCHECK_LINK = 428 // { int __acl_aclcheck_link(const char *path, \ + SYS_SIGWAIT = 429 // { int sigwait(const sigset_t *set, \ + SYS_THR_CREATE = 430 // { int thr_create(ucontext_t *ctx, long *id, \ + SYS_THR_EXIT = 431 // { void thr_exit(long *state); } + SYS_THR_SELF = 432 // { int thr_self(long *id); } + SYS_THR_KILL = 433 // { int thr_kill(long id, int sig); } + SYS__UMTX_LOCK = 434 // { int _umtx_lock(struct umtx *umtx); } + SYS__UMTX_UNLOCK = 435 // { int _umtx_unlock(struct umtx *umtx); } + SYS_JAIL_ATTACH = 436 // { int jail_attach(int jid); } + SYS_EXTATTR_LIST_FD = 437 // { ssize_t extattr_list_fd(int fd, \ + SYS_EXTATTR_LIST_FILE = 438 // { ssize_t extattr_list_file( \ + SYS_EXTATTR_LIST_LINK = 439 // { ssize_t extattr_list_link( \ + SYS_KSEM_TIMEDWAIT = 441 // { int ksem_timedwait(semid_t id, \ + SYS_THR_SUSPEND = 442 // { int thr_suspend( \ + SYS_THR_WAKE = 443 // { int thr_wake(long id); } + SYS_KLDUNLOADF = 444 // { int kldunloadf(int fileid, int flags); } + SYS_AUDIT = 445 // { int audit(const void *record, \ + SYS_AUDITON = 446 // { int auditon(int cmd, void *data, \ + SYS_GETAUID = 447 // { int getauid(uid_t *auid); } + SYS_SETAUID = 448 // { int setauid(uid_t *auid); } + SYS_GETAUDIT = 449 // { int getaudit(struct auditinfo *auditinfo); } + SYS_SETAUDIT = 450 // { int setaudit(struct auditinfo *auditinfo); } + SYS_GETAUDIT_ADDR = 451 // { int getaudit_addr( \ + SYS_SETAUDIT_ADDR = 452 // { int setaudit_addr( \ + SYS_AUDITCTL = 453 // { int auditctl(char *path); } + SYS__UMTX_OP = 454 // { int _umtx_op(void *obj, int op, \ + SYS_THR_NEW = 455 // { int thr_new(struct thr_param *param, \ + SYS_SIGQUEUE = 456 // { int sigqueue(pid_t pid, int signum, void *value); } + SYS_KMQ_OPEN = 457 // { int kmq_open(const char *path, int flags, \ + SYS_KMQ_SETATTR = 458 // { int kmq_setattr(int mqd, \ + SYS_KMQ_TIMEDRECEIVE = 459 // { int kmq_timedreceive(int mqd, \ + SYS_KMQ_TIMEDSEND = 460 // { int kmq_timedsend(int mqd, \ + SYS_KMQ_NOTIFY = 461 // { int kmq_notify(int mqd, \ + SYS_KMQ_UNLINK = 462 // { int kmq_unlink(const char *path); } + SYS_ABORT2 = 463 // { int abort2(const char *why, int nargs, void **args); } + SYS_THR_SET_NAME = 464 // { int thr_set_name(long id, const char *name); } + SYS_AIO_FSYNC = 465 // { int aio_fsync(int op, struct aiocb *aiocbp); } + SYS_RTPRIO_THREAD = 466 // { int rtprio_thread(int function, \ + SYS_SCTP_PEELOFF = 471 // { int sctp_peeloff(int sd, uint32_t name); } + SYS_SCTP_GENERIC_SENDMSG = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, \ + SYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, \ + SYS_SCTP_GENERIC_RECVMSG = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, \ + SYS_PREAD = 475 // { ssize_t pread(int fd, void *buf, \ + SYS_PWRITE = 476 // { ssize_t pwrite(int fd, const void *buf, \ + SYS_MMAP = 477 // { caddr_t mmap(caddr_t addr, size_t len, \ + SYS_LSEEK = 478 // { off_t lseek(int fd, off_t offset, \ + SYS_TRUNCATE = 479 // { int truncate(char *path, off_t length); } + SYS_FTRUNCATE = 480 // { int ftruncate(int fd, off_t length); } + SYS_THR_KILL2 = 481 // { int thr_kill2(pid_t pid, long id, int sig); } + SYS_SHM_OPEN = 482 // { int shm_open(const char *path, int flags, \ + SYS_SHM_UNLINK = 483 // { int shm_unlink(const char *path); } + SYS_CPUSET = 484 // { int cpuset(cpusetid_t *setid); } + SYS_CPUSET_SETID = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, \ + SYS_CPUSET_GETID = 486 // { int cpuset_getid(cpulevel_t level, \ + SYS_CPUSET_GETAFFINITY = 487 // { int cpuset_getaffinity(cpulevel_t level, \ + SYS_CPUSET_SETAFFINITY = 488 // { int cpuset_setaffinity(cpulevel_t level, \ + SYS_FACCESSAT = 489 // { int faccessat(int fd, char *path, int amode, \ + SYS_FCHMODAT = 490 // { int fchmodat(int fd, char *path, mode_t mode, \ + SYS_FCHOWNAT = 491 // { int fchownat(int fd, char *path, uid_t uid, \ + SYS_FEXECVE = 492 // { int fexecve(int fd, char **argv, \ + SYS_FSTATAT = 493 // { int fstatat(int fd, char *path, \ + SYS_FUTIMESAT = 494 // { int futimesat(int fd, char *path, \ + SYS_LINKAT = 495 // { int linkat(int fd1, char *path1, int fd2, \ + SYS_MKDIRAT = 496 // { int mkdirat(int fd, char *path, mode_t mode); } + SYS_MKFIFOAT = 497 // { int mkfifoat(int fd, char *path, mode_t mode); } + SYS_MKNODAT = 498 // { int mknodat(int fd, char *path, mode_t mode, \ + SYS_OPENAT = 499 // { int openat(int fd, char *path, int flag, \ + SYS_READLINKAT = 500 // { int readlinkat(int fd, char *path, char *buf, \ + SYS_RENAMEAT = 501 // { int renameat(int oldfd, char *old, int newfd, \ + SYS_SYMLINKAT = 502 // { int symlinkat(char *path1, int fd, \ + SYS_UNLINKAT = 503 // { int unlinkat(int fd, char *path, int flag); } + SYS_POSIX_OPENPT = 504 // { int posix_openpt(int flags); } + SYS_GSSD_SYSCALL = 505 // { int gssd_syscall(char *path); } + SYS_JAIL_GET = 506 // { int jail_get(struct iovec *iovp, \ + SYS_JAIL_SET = 507 // { int jail_set(struct iovec *iovp, \ + SYS_JAIL_REMOVE = 508 // { int jail_remove(int jid); } + SYS_CLOSEFROM = 509 // { int closefrom(int lowfd); } + SYS___SEMCTL = 510 // { int __semctl(int semid, int semnum, \ + SYS_MSGCTL = 511 // { int msgctl(int msqid, int cmd, \ + SYS_SHMCTL = 512 // { int shmctl(int shmid, int cmd, \ + SYS_LPATHCONF = 513 // { int lpathconf(char *path, int name); } + SYS___CAP_RIGHTS_GET = 515 // { int __cap_rights_get(int version, \ + SYS_CAP_ENTER = 516 // { int cap_enter(void); } + SYS_CAP_GETMODE = 517 // { int cap_getmode(u_int *modep); } + SYS_PDFORK = 518 // { int pdfork(int *fdp, int flags); } + SYS_PDKILL = 519 // { int pdkill(int fd, int signum); } + SYS_PDGETPID = 520 // { int pdgetpid(int fd, pid_t *pidp); } + SYS_PSELECT = 522 // { int pselect(int nd, fd_set *in, \ + SYS_GETLOGINCLASS = 523 // { int getloginclass(char *namebuf, \ + SYS_SETLOGINCLASS = 524 // { int setloginclass(const char *namebuf); } + SYS_RCTL_GET_RACCT = 525 // { int rctl_get_racct(const void *inbufp, \ + SYS_RCTL_GET_RULES = 526 // { int rctl_get_rules(const void *inbufp, \ + SYS_RCTL_GET_LIMITS = 527 // { int rctl_get_limits(const void *inbufp, \ + SYS_RCTL_ADD_RULE = 528 // { int rctl_add_rule(const void *inbufp, \ + SYS_RCTL_REMOVE_RULE = 529 // { int rctl_remove_rule(const void *inbufp, \ + SYS_POSIX_FALLOCATE = 530 // { int posix_fallocate(int fd, \ + SYS_POSIX_FADVISE = 531 // { int posix_fadvise(int fd, off_t offset, \ + SYS_WAIT6 = 532 // { int wait6(idtype_t idtype, id_t id, \ + SYS_CAP_RIGHTS_LIMIT = 533 // { int cap_rights_limit(int fd, \ + SYS_CAP_IOCTLS_LIMIT = 534 // { int cap_ioctls_limit(int fd, \ + SYS_CAP_IOCTLS_GET = 535 // { ssize_t cap_ioctls_get(int fd, \ + SYS_CAP_FCNTLS_LIMIT = 536 // { int cap_fcntls_limit(int fd, \ + SYS_CAP_FCNTLS_GET = 537 // { int cap_fcntls_get(int fd, \ + SYS_BINDAT = 538 // { int bindat(int fd, int s, caddr_t name, \ + SYS_CONNECTAT = 539 // { int connectat(int fd, int s, caddr_t name, \ + SYS_CHFLAGSAT = 540 // { int chflagsat(int fd, const char *path, \ + SYS_ACCEPT4 = 541 // { int accept4(int s, \ + SYS_PIPE2 = 542 // { int pipe2(int *fildes, int flags); } + SYS_AIO_MLOCK = 543 // { int aio_mlock(struct aiocb *aiocbp); } + SYS_PROCCTL = 544 // { int procctl(idtype_t idtype, id_t id, \ + SYS_PPOLL = 545 // { int ppoll(struct pollfd *fds, u_int nfds, \ + SYS_FUTIMENS = 546 // { int futimens(int fd, \ + SYS_UTIMENSAT = 547 // { int utimensat(int fd, \ ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go index 44883141..d61941ba 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go @@ -7,347 +7,397 @@ package unix const ( // SYS_NOSYS = 0; // { int nosys(void); } syscall nosys_args int - SYS_EXIT = 1 // { void sys_exit(int rval); } exit \ - SYS_FORK = 2 // { int fork(void); } - SYS_READ = 3 // { ssize_t read(int fd, void *buf, \ - SYS_WRITE = 4 // { ssize_t write(int fd, const void *buf, \ - SYS_OPEN = 5 // { int open(char *path, int flags, int mode); } - SYS_CLOSE = 6 // { int close(int fd); } - SYS_WAIT4 = 7 // { int wait4(int pid, int *status, \ - SYS_LINK = 9 // { int link(char *path, char *link); } - SYS_UNLINK = 10 // { int unlink(char *path); } - SYS_CHDIR = 12 // { int chdir(char *path); } - SYS_FCHDIR = 13 // { int fchdir(int fd); } - SYS_MKNOD = 14 // { int mknod(char *path, int mode, int dev); } - SYS_CHMOD = 15 // { int chmod(char *path, int mode); } - SYS_CHOWN = 16 // { int chown(char *path, int uid, int gid); } - SYS_OBREAK = 17 // { int obreak(char *nsize); } break \ - SYS_GETPID = 20 // { pid_t getpid(void); } - SYS_MOUNT = 21 // { int mount(char *type, char *path, \ - SYS_UNMOUNT = 22 // { int unmount(char *path, int flags); } - SYS_SETUID = 23 // { int setuid(uid_t uid); } - SYS_GETUID = 24 // { uid_t getuid(void); } - SYS_GETEUID = 25 // { uid_t geteuid(void); } - SYS_PTRACE = 26 // { int ptrace(int req, pid_t pid, \ - SYS_RECVMSG = 27 // { int recvmsg(int s, struct msghdr *msg, \ - SYS_SENDMSG = 28 // { int sendmsg(int s, struct msghdr *msg, \ - SYS_RECVFROM = 29 // { int recvfrom(int s, caddr_t buf, \ - SYS_ACCEPT = 30 // { int accept(int s, \ - SYS_GETPEERNAME = 31 // { int getpeername(int fdes, \ - SYS_GETSOCKNAME = 32 // { int getsockname(int fdes, \ - SYS_ACCESS = 33 // { int access(char *path, int amode); } - SYS_CHFLAGS = 34 // { int chflags(const char *path, u_long flags); } - SYS_FCHFLAGS = 35 // { int fchflags(int fd, u_long flags); } - SYS_SYNC = 36 // { int sync(void); } - SYS_KILL = 37 // { int kill(int pid, int signum); } - SYS_GETPPID = 39 // { pid_t getppid(void); } - SYS_DUP = 41 // { int dup(u_int fd); } - SYS_PIPE = 42 // { int pipe(void); } - SYS_GETEGID = 43 // { gid_t getegid(void); } - SYS_PROFIL = 44 // { int profil(caddr_t samples, size_t size, \ - SYS_KTRACE = 45 // { int ktrace(const char *fname, int ops, \ - SYS_GETGID = 47 // { gid_t getgid(void); } - SYS_GETLOGIN = 49 // { int getlogin(char *namebuf, u_int \ - SYS_SETLOGIN = 50 // { int setlogin(char *namebuf); } - SYS_ACCT = 51 // { int acct(char *path); } - SYS_SIGALTSTACK = 53 // { int sigaltstack(stack_t *ss, \ - SYS_IOCTL = 54 // { int ioctl(int fd, u_long com, \ - SYS_REBOOT = 55 // { int reboot(int opt); } - SYS_REVOKE = 56 // { int revoke(char *path); } - SYS_SYMLINK = 57 // { int symlink(char *path, char *link); } - SYS_READLINK = 58 // { ssize_t readlink(char *path, char *buf, \ - SYS_EXECVE = 59 // { int execve(char *fname, char **argv, \ - SYS_UMASK = 60 // { int umask(int newmask); } umask umask_args \ - SYS_CHROOT = 61 // { int chroot(char *path); } - SYS_MSYNC = 65 // { int msync(void *addr, size_t len, \ - SYS_VFORK = 66 // { int vfork(void); } - SYS_SBRK = 69 // { int sbrk(int incr); } - SYS_SSTK = 70 // { int sstk(int incr); } - SYS_OVADVISE = 72 // { int ovadvise(int anom); } vadvise \ - SYS_MUNMAP = 73 // { int munmap(void *addr, size_t len); } - SYS_MPROTECT = 74 // { int mprotect(const void *addr, size_t len, \ - SYS_MADVISE = 75 // { int madvise(void *addr, size_t len, \ - SYS_MINCORE = 78 // { int mincore(const void *addr, size_t len, \ - SYS_GETGROUPS = 79 // { int getgroups(u_int gidsetsize, \ - SYS_SETGROUPS = 80 // { int setgroups(u_int gidsetsize, \ - SYS_GETPGRP = 81 // { int getpgrp(void); } - SYS_SETPGID = 82 // { int setpgid(int pid, int pgid); } - SYS_SETITIMER = 83 // { int setitimer(u_int which, struct \ - SYS_SWAPON = 85 // { int swapon(char *name); } - SYS_GETITIMER = 86 // { int getitimer(u_int which, \ - SYS_GETDTABLESIZE = 89 // { int getdtablesize(void); } - SYS_DUP2 = 90 // { int dup2(u_int from, u_int to); } - SYS_FCNTL = 92 // { int fcntl(int fd, int cmd, long arg); } - SYS_SELECT = 93 // { int select(int nd, fd_set *in, fd_set *ou, \ - SYS_FSYNC = 95 // { int fsync(int fd); } - SYS_SETPRIORITY = 96 // { int setpriority(int which, int who, \ - SYS_SOCKET = 97 // { int socket(int domain, int type, \ - SYS_CONNECT = 98 // { int connect(int s, caddr_t name, \ - SYS_GETPRIORITY = 100 // { int getpriority(int which, int who); } - SYS_BIND = 104 // { int bind(int s, caddr_t name, \ - SYS_SETSOCKOPT = 105 // { int setsockopt(int s, int level, int name, \ - SYS_LISTEN = 106 // { int listen(int s, int backlog); } - SYS_GETTIMEOFDAY = 116 // { int gettimeofday(struct timeval *tp, \ - SYS_GETRUSAGE = 117 // { int getrusage(int who, \ - SYS_GETSOCKOPT = 118 // { int getsockopt(int s, int level, int name, \ - SYS_READV = 120 // { int readv(int fd, struct iovec *iovp, \ - SYS_WRITEV = 121 // { int writev(int fd, struct iovec *iovp, \ - SYS_SETTIMEOFDAY = 122 // { int settimeofday(struct timeval *tv, \ - SYS_FCHOWN = 123 // { int fchown(int fd, int uid, int gid); } - SYS_FCHMOD = 124 // { int fchmod(int fd, int mode); } - SYS_SETREUID = 126 // { int setreuid(int ruid, int euid); } - SYS_SETREGID = 127 // { int setregid(int rgid, int egid); } - SYS_RENAME = 128 // { int rename(char *from, char *to); } - SYS_FLOCK = 131 // { int flock(int fd, int how); } - SYS_MKFIFO = 132 // { int mkfifo(char *path, int mode); } - SYS_SENDTO = 133 // { int sendto(int s, caddr_t buf, size_t len, \ - SYS_SHUTDOWN = 134 // { int shutdown(int s, int how); } - SYS_SOCKETPAIR = 135 // { int socketpair(int domain, int type, \ - SYS_MKDIR = 136 // { int mkdir(char *path, int mode); } - SYS_RMDIR = 137 // { int rmdir(char *path); } - SYS_UTIMES = 138 // { int utimes(char *path, \ - SYS_ADJTIME = 140 // { int adjtime(struct timeval *delta, \ - SYS_SETSID = 147 // { int setsid(void); } - SYS_QUOTACTL = 148 // { int quotactl(char *path, int cmd, int uid, \ - SYS_LGETFH = 160 // { int lgetfh(char *fname, \ - SYS_GETFH = 161 // { int getfh(char *fname, \ - SYS_SYSARCH = 165 // { int sysarch(int op, char *parms); } - SYS_RTPRIO = 166 // { int rtprio(int function, pid_t pid, \ - SYS_FREEBSD6_PREAD = 173 // { ssize_t freebsd6_pread(int fd, void *buf, \ - SYS_FREEBSD6_PWRITE = 174 // { ssize_t freebsd6_pwrite(int fd, \ - SYS_SETFIB = 175 // { int setfib(int fibnum); } - SYS_NTP_ADJTIME = 176 // { int ntp_adjtime(struct timex *tp); } - SYS_SETGID = 181 // { int setgid(gid_t gid); } - SYS_SETEGID = 182 // { int setegid(gid_t egid); } - SYS_SETEUID = 183 // { int seteuid(uid_t euid); } - SYS_STAT = 188 // { int stat(char *path, struct stat *ub); } - SYS_FSTAT = 189 // { int fstat(int fd, struct stat *sb); } - SYS_LSTAT = 190 // { int lstat(char *path, struct stat *ub); } - SYS_PATHCONF = 191 // { int pathconf(char *path, int name); } - SYS_FPATHCONF = 192 // { int fpathconf(int fd, int name); } - SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, \ - SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, \ - SYS_GETDIRENTRIES = 196 // { int getdirentries(int fd, char *buf, \ - SYS_FREEBSD6_MMAP = 197 // { caddr_t freebsd6_mmap(caddr_t addr, \ - SYS_FREEBSD6_LSEEK = 199 // { off_t freebsd6_lseek(int fd, int pad, \ - SYS_FREEBSD6_TRUNCATE = 200 // { int freebsd6_truncate(char *path, int pad, \ - SYS_FREEBSD6_FTRUNCATE = 201 // { int freebsd6_ftruncate(int fd, int pad, \ - SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, \ - SYS_MLOCK = 203 // { int mlock(const void *addr, size_t len); } - SYS_MUNLOCK = 204 // { int munlock(const void *addr, size_t len); } - SYS_UNDELETE = 205 // { int undelete(char *path); } - SYS_FUTIMES = 206 // { int futimes(int fd, struct timeval *tptr); } - SYS_GETPGID = 207 // { int getpgid(pid_t pid); } - SYS_POLL = 209 // { int poll(struct pollfd *fds, u_int nfds, \ - SYS_CLOCK_GETTIME = 232 // { int clock_gettime(clockid_t clock_id, \ - SYS_CLOCK_SETTIME = 233 // { int clock_settime( \ - SYS_CLOCK_GETRES = 234 // { int clock_getres(clockid_t clock_id, \ - SYS_KTIMER_CREATE = 235 // { int ktimer_create(clockid_t clock_id, \ - SYS_KTIMER_DELETE = 236 // { int ktimer_delete(int timerid); } - SYS_KTIMER_SETTIME = 237 // { int ktimer_settime(int timerid, int flags, \ - SYS_KTIMER_GETTIME = 238 // { int ktimer_gettime(int timerid, struct \ - SYS_KTIMER_GETOVERRUN = 239 // { int ktimer_getoverrun(int timerid); } - SYS_NANOSLEEP = 240 // { int nanosleep(const struct timespec *rqtp, \ - SYS_FFCLOCK_GETCOUNTER = 241 // { int ffclock_getcounter(ffcounter *ffcount); } - SYS_FFCLOCK_SETESTIMATE = 242 // { int ffclock_setestimate( \ - SYS_FFCLOCK_GETESTIMATE = 243 // { int ffclock_getestimate( \ - SYS_CLOCK_GETCPUCLOCKID2 = 247 // { int clock_getcpuclockid2(id_t id,\ - SYS_NTP_GETTIME = 248 // { int ntp_gettime(struct ntptimeval *ntvp); } - SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, \ - SYS_RFORK = 251 // { int rfork(int flags); } - SYS_OPENBSD_POLL = 252 // { int openbsd_poll(struct pollfd *fds, \ - SYS_ISSETUGID = 253 // { int issetugid(void); } - SYS_LCHOWN = 254 // { int lchown(char *path, int uid, int gid); } - SYS_GETDENTS = 272 // { int getdents(int fd, char *buf, \ - SYS_LCHMOD = 274 // { int lchmod(char *path, mode_t mode); } - SYS_LUTIMES = 276 // { int lutimes(char *path, \ - SYS_NSTAT = 278 // { int nstat(char *path, struct nstat *ub); } - SYS_NFSTAT = 279 // { int nfstat(int fd, struct nstat *sb); } - SYS_NLSTAT = 280 // { int nlstat(char *path, struct nstat *ub); } - SYS_PREADV = 289 // { ssize_t preadv(int fd, struct iovec *iovp, \ - SYS_PWRITEV = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, \ - SYS_FHOPEN = 298 // { int fhopen(const struct fhandle *u_fhp, \ - SYS_FHSTAT = 299 // { int fhstat(const struct fhandle *u_fhp, \ - SYS_MODNEXT = 300 // { int modnext(int modid); } - SYS_MODSTAT = 301 // { int modstat(int modid, \ - SYS_MODFNEXT = 302 // { int modfnext(int modid); } - SYS_MODFIND = 303 // { int modfind(const char *name); } - SYS_KLDLOAD = 304 // { int kldload(const char *file); } - SYS_KLDUNLOAD = 305 // { int kldunload(int fileid); } - SYS_KLDFIND = 306 // { int kldfind(const char *file); } - SYS_KLDNEXT = 307 // { int kldnext(int fileid); } - SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct \ - SYS_KLDFIRSTMOD = 309 // { int kldfirstmod(int fileid); } - SYS_GETSID = 310 // { int getsid(pid_t pid); } - SYS_SETRESUID = 311 // { int setresuid(uid_t ruid, uid_t euid, \ - SYS_SETRESGID = 312 // { int setresgid(gid_t rgid, gid_t egid, \ - SYS_YIELD = 321 // { int yield(void); } - SYS_MLOCKALL = 324 // { int mlockall(int how); } - SYS_MUNLOCKALL = 325 // { int munlockall(void); } - SYS___GETCWD = 326 // { int __getcwd(char *buf, u_int buflen); } - SYS_SCHED_SETPARAM = 327 // { int sched_setparam (pid_t pid, \ - SYS_SCHED_GETPARAM = 328 // { int sched_getparam (pid_t pid, struct \ - SYS_SCHED_SETSCHEDULER = 329 // { int sched_setscheduler (pid_t pid, int \ - SYS_SCHED_GETSCHEDULER = 330 // { int sched_getscheduler (pid_t pid); } - SYS_SCHED_YIELD = 331 // { int sched_yield (void); } - SYS_SCHED_GET_PRIORITY_MAX = 332 // { int sched_get_priority_max (int policy); } - SYS_SCHED_GET_PRIORITY_MIN = 333 // { int sched_get_priority_min (int policy); } - SYS_SCHED_RR_GET_INTERVAL = 334 // { int sched_rr_get_interval (pid_t pid, \ - SYS_UTRACE = 335 // { int utrace(const void *addr, size_t len); } - SYS_KLDSYM = 337 // { int kldsym(int fileid, int cmd, \ - SYS_JAIL = 338 // { int jail(struct jail *jail); } - SYS_SIGPROCMASK = 340 // { int sigprocmask(int how, \ - SYS_SIGSUSPEND = 341 // { int sigsuspend(const sigset_t *sigmask); } - SYS_SIGPENDING = 343 // { int sigpending(sigset_t *set); } - SYS_SIGTIMEDWAIT = 345 // { int sigtimedwait(const sigset_t *set, \ - SYS_SIGWAITINFO = 346 // { int sigwaitinfo(const sigset_t *set, \ - SYS___ACL_GET_FILE = 347 // { int __acl_get_file(const char *path, \ - SYS___ACL_SET_FILE = 348 // { int __acl_set_file(const char *path, \ - SYS___ACL_GET_FD = 349 // { int __acl_get_fd(int filedes, \ - SYS___ACL_SET_FD = 350 // { int __acl_set_fd(int filedes, \ - SYS___ACL_DELETE_FILE = 351 // { int __acl_delete_file(const char *path, \ - SYS___ACL_DELETE_FD = 352 // { int __acl_delete_fd(int filedes, \ - SYS___ACL_ACLCHECK_FILE = 353 // { int __acl_aclcheck_file(const char *path, \ - SYS___ACL_ACLCHECK_FD = 354 // { int __acl_aclcheck_fd(int filedes, \ - SYS_EXTATTRCTL = 355 // { int extattrctl(const char *path, int cmd, \ - SYS_EXTATTR_SET_FILE = 356 // { ssize_t extattr_set_file( \ - SYS_EXTATTR_GET_FILE = 357 // { ssize_t extattr_get_file( \ - SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, \ - SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, \ - SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, \ - SYS_KQUEUE = 362 // { int kqueue(void); } - SYS_KEVENT = 363 // { int kevent(int fd, \ - SYS_EXTATTR_SET_FD = 371 // { ssize_t extattr_set_fd(int fd, \ - SYS_EXTATTR_GET_FD = 372 // { ssize_t extattr_get_fd(int fd, \ - SYS_EXTATTR_DELETE_FD = 373 // { int extattr_delete_fd(int fd, \ - SYS___SETUGID = 374 // { int __setugid(int flag); } - SYS_EACCESS = 376 // { int eaccess(char *path, int amode); } - SYS_NMOUNT = 378 // { int nmount(struct iovec *iovp, \ - SYS___MAC_GET_PROC = 384 // { int __mac_get_proc(struct mac *mac_p); } - SYS___MAC_SET_PROC = 385 // { int __mac_set_proc(struct mac *mac_p); } - SYS___MAC_GET_FD = 386 // { int __mac_get_fd(int fd, \ - SYS___MAC_GET_FILE = 387 // { int __mac_get_file(const char *path_p, \ - SYS___MAC_SET_FD = 388 // { int __mac_set_fd(int fd, \ - SYS___MAC_SET_FILE = 389 // { int __mac_set_file(const char *path_p, \ - SYS_KENV = 390 // { int kenv(int what, const char *name, \ - SYS_LCHFLAGS = 391 // { int lchflags(const char *path, \ - SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, \ - SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, \ - SYS_MAC_SYSCALL = 394 // { int mac_syscall(const char *policy, \ - SYS_GETFSSTAT = 395 // { int getfsstat(struct statfs *buf, \ - SYS_STATFS = 396 // { int statfs(char *path, \ - SYS_FSTATFS = 397 // { int fstatfs(int fd, struct statfs *buf); } - SYS_FHSTATFS = 398 // { int fhstatfs(const struct fhandle *u_fhp, \ - SYS___MAC_GET_PID = 409 // { int __mac_get_pid(pid_t pid, \ - SYS___MAC_GET_LINK = 410 // { int __mac_get_link(const char *path_p, \ - SYS___MAC_SET_LINK = 411 // { int __mac_set_link(const char *path_p, \ - SYS_EXTATTR_SET_LINK = 412 // { ssize_t extattr_set_link( \ - SYS_EXTATTR_GET_LINK = 413 // { ssize_t extattr_get_link( \ - SYS_EXTATTR_DELETE_LINK = 414 // { int extattr_delete_link( \ - SYS___MAC_EXECVE = 415 // { int __mac_execve(char *fname, char **argv, \ - SYS_SIGACTION = 416 // { int sigaction(int sig, \ - SYS_SIGRETURN = 417 // { int sigreturn( \ - SYS_GETCONTEXT = 421 // { int getcontext(struct __ucontext *ucp); } - SYS_SETCONTEXT = 422 // { int setcontext( \ - SYS_SWAPCONTEXT = 423 // { int swapcontext(struct __ucontext *oucp, \ - SYS_SWAPOFF = 424 // { int swapoff(const char *name); } - SYS___ACL_GET_LINK = 425 // { int __acl_get_link(const char *path, \ - SYS___ACL_SET_LINK = 426 // { int __acl_set_link(const char *path, \ - SYS___ACL_DELETE_LINK = 427 // { int __acl_delete_link(const char *path, \ - SYS___ACL_ACLCHECK_LINK = 428 // { int __acl_aclcheck_link(const char *path, \ - SYS_SIGWAIT = 429 // { int sigwait(const sigset_t *set, \ - SYS_THR_CREATE = 430 // { int thr_create(ucontext_t *ctx, long *id, \ - SYS_THR_EXIT = 431 // { void thr_exit(long *state); } - SYS_THR_SELF = 432 // { int thr_self(long *id); } - SYS_THR_KILL = 433 // { int thr_kill(long id, int sig); } - SYS__UMTX_LOCK = 434 // { int _umtx_lock(struct umtx *umtx); } - SYS__UMTX_UNLOCK = 435 // { int _umtx_unlock(struct umtx *umtx); } - SYS_JAIL_ATTACH = 436 // { int jail_attach(int jid); } - SYS_EXTATTR_LIST_FD = 437 // { ssize_t extattr_list_fd(int fd, \ - SYS_EXTATTR_LIST_FILE = 438 // { ssize_t extattr_list_file( \ - SYS_EXTATTR_LIST_LINK = 439 // { ssize_t extattr_list_link( \ - SYS_THR_SUSPEND = 442 // { int thr_suspend( \ - SYS_THR_WAKE = 443 // { int thr_wake(long id); } - SYS_KLDUNLOADF = 444 // { int kldunloadf(int fileid, int flags); } - SYS_AUDIT = 445 // { int audit(const void *record, \ - SYS_AUDITON = 446 // { int auditon(int cmd, void *data, \ - SYS_GETAUID = 447 // { int getauid(uid_t *auid); } - SYS_SETAUID = 448 // { int setauid(uid_t *auid); } - SYS_GETAUDIT = 449 // { int getaudit(struct auditinfo *auditinfo); } - SYS_SETAUDIT = 450 // { int setaudit(struct auditinfo *auditinfo); } - SYS_GETAUDIT_ADDR = 451 // { int getaudit_addr( \ - SYS_SETAUDIT_ADDR = 452 // { int setaudit_addr( \ - SYS_AUDITCTL = 453 // { int auditctl(char *path); } - SYS__UMTX_OP = 454 // { int _umtx_op(void *obj, int op, \ - SYS_THR_NEW = 455 // { int thr_new(struct thr_param *param, \ - SYS_SIGQUEUE = 456 // { int sigqueue(pid_t pid, int signum, void *value); } - SYS_ABORT2 = 463 // { int abort2(const char *why, int nargs, void **args); } - SYS_THR_SET_NAME = 464 // { int thr_set_name(long id, const char *name); } - SYS_RTPRIO_THREAD = 466 // { int rtprio_thread(int function, \ - SYS_PREAD = 475 // { ssize_t pread(int fd, void *buf, \ - SYS_PWRITE = 476 // { ssize_t pwrite(int fd, const void *buf, \ - SYS_MMAP = 477 // { caddr_t mmap(caddr_t addr, size_t len, \ - SYS_LSEEK = 478 // { off_t lseek(int fd, off_t offset, \ - SYS_TRUNCATE = 479 // { int truncate(char *path, off_t length); } - SYS_FTRUNCATE = 480 // { int ftruncate(int fd, off_t length); } - SYS_THR_KILL2 = 481 // { int thr_kill2(pid_t pid, long id, int sig); } - SYS_SHM_OPEN = 482 // { int shm_open(const char *path, int flags, \ - SYS_SHM_UNLINK = 483 // { int shm_unlink(const char *path); } - SYS_CPUSET = 484 // { int cpuset(cpusetid_t *setid); } - SYS_CPUSET_SETID = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, \ - SYS_CPUSET_GETID = 486 // { int cpuset_getid(cpulevel_t level, \ - SYS_CPUSET_GETAFFINITY = 487 // { int cpuset_getaffinity(cpulevel_t level, \ - SYS_CPUSET_SETAFFINITY = 488 // { int cpuset_setaffinity(cpulevel_t level, \ - SYS_FACCESSAT = 489 // { int faccessat(int fd, char *path, int amode, \ - SYS_FCHMODAT = 490 // { int fchmodat(int fd, char *path, mode_t mode, \ - SYS_FCHOWNAT = 491 // { int fchownat(int fd, char *path, uid_t uid, \ - SYS_FEXECVE = 492 // { int fexecve(int fd, char **argv, \ - SYS_FSTATAT = 493 // { int fstatat(int fd, char *path, \ - SYS_FUTIMESAT = 494 // { int futimesat(int fd, char *path, \ - SYS_LINKAT = 495 // { int linkat(int fd1, char *path1, int fd2, \ - SYS_MKDIRAT = 496 // { int mkdirat(int fd, char *path, mode_t mode); } - SYS_MKFIFOAT = 497 // { int mkfifoat(int fd, char *path, mode_t mode); } - SYS_MKNODAT = 498 // { int mknodat(int fd, char *path, mode_t mode, \ - SYS_OPENAT = 499 // { int openat(int fd, char *path, int flag, \ - SYS_READLINKAT = 500 // { int readlinkat(int fd, char *path, char *buf, \ - SYS_RENAMEAT = 501 // { int renameat(int oldfd, char *old, int newfd, \ - SYS_SYMLINKAT = 502 // { int symlinkat(char *path1, int fd, \ - SYS_UNLINKAT = 503 // { int unlinkat(int fd, char *path, int flag); } - SYS_POSIX_OPENPT = 504 // { int posix_openpt(int flags); } - SYS_JAIL_GET = 506 // { int jail_get(struct iovec *iovp, \ - SYS_JAIL_SET = 507 // { int jail_set(struct iovec *iovp, \ - SYS_JAIL_REMOVE = 508 // { int jail_remove(int jid); } - SYS_CLOSEFROM = 509 // { int closefrom(int lowfd); } - SYS_LPATHCONF = 513 // { int lpathconf(char *path, int name); } - SYS___CAP_RIGHTS_GET = 515 // { int __cap_rights_get(int version, \ - SYS_CAP_ENTER = 516 // { int cap_enter(void); } - SYS_CAP_GETMODE = 517 // { int cap_getmode(u_int *modep); } - SYS_PDFORK = 518 // { int pdfork(int *fdp, int flags); } - SYS_PDKILL = 519 // { int pdkill(int fd, int signum); } - SYS_PDGETPID = 520 // { int pdgetpid(int fd, pid_t *pidp); } - SYS_PSELECT = 522 // { int pselect(int nd, fd_set *in, \ - SYS_GETLOGINCLASS = 523 // { int getloginclass(char *namebuf, \ - SYS_SETLOGINCLASS = 524 // { int setloginclass(const char *namebuf); } - SYS_RCTL_GET_RACCT = 525 // { int rctl_get_racct(const void *inbufp, \ - SYS_RCTL_GET_RULES = 526 // { int rctl_get_rules(const void *inbufp, \ - SYS_RCTL_GET_LIMITS = 527 // { int rctl_get_limits(const void *inbufp, \ - SYS_RCTL_ADD_RULE = 528 // { int rctl_add_rule(const void *inbufp, \ - SYS_RCTL_REMOVE_RULE = 529 // { int rctl_remove_rule(const void *inbufp, \ - SYS_POSIX_FALLOCATE = 530 // { int posix_fallocate(int fd, \ - SYS_POSIX_FADVISE = 531 // { int posix_fadvise(int fd, off_t offset, \ - SYS_WAIT6 = 532 // { int wait6(idtype_t idtype, id_t id, \ - SYS_CAP_RIGHTS_LIMIT = 533 // { int cap_rights_limit(int fd, \ - SYS_CAP_IOCTLS_LIMIT = 534 // { int cap_ioctls_limit(int fd, \ - SYS_CAP_IOCTLS_GET = 535 // { ssize_t cap_ioctls_get(int fd, \ - SYS_CAP_FCNTLS_LIMIT = 536 // { int cap_fcntls_limit(int fd, \ - SYS_CAP_FCNTLS_GET = 537 // { int cap_fcntls_get(int fd, \ - SYS_BINDAT = 538 // { int bindat(int fd, int s, caddr_t name, \ - SYS_CONNECTAT = 539 // { int connectat(int fd, int s, caddr_t name, \ - SYS_CHFLAGSAT = 540 // { int chflagsat(int fd, const char *path, \ - SYS_ACCEPT4 = 541 // { int accept4(int s, \ - SYS_PIPE2 = 542 // { int pipe2(int *fildes, int flags); } - SYS_PROCCTL = 544 // { int procctl(idtype_t idtype, id_t id, \ - SYS_PPOLL = 545 // { int ppoll(struct pollfd *fds, u_int nfds, \ - SYS_FUTIMENS = 546 // { int futimens(int fd, \ - SYS_UTIMENSAT = 547 // { int utimensat(int fd, \ + SYS_EXIT = 1 // { void sys_exit(int rval); } exit \ + SYS_FORK = 2 // { int fork(void); } + SYS_READ = 3 // { ssize_t read(int fd, void *buf, \ + SYS_WRITE = 4 // { ssize_t write(int fd, const void *buf, \ + SYS_OPEN = 5 // { int open(char *path, int flags, int mode); } + SYS_CLOSE = 6 // { int close(int fd); } + SYS_WAIT4 = 7 // { int wait4(int pid, int *status, \ + SYS_LINK = 9 // { int link(char *path, char *link); } + SYS_UNLINK = 10 // { int unlink(char *path); } + SYS_CHDIR = 12 // { int chdir(char *path); } + SYS_FCHDIR = 13 // { int fchdir(int fd); } + SYS_MKNOD = 14 // { int mknod(char *path, int mode, int dev); } + SYS_CHMOD = 15 // { int chmod(char *path, int mode); } + SYS_CHOWN = 16 // { int chown(char *path, int uid, int gid); } + SYS_OBREAK = 17 // { int obreak(char *nsize); } break \ + SYS_GETPID = 20 // { pid_t getpid(void); } + SYS_MOUNT = 21 // { int mount(char *type, char *path, \ + SYS_UNMOUNT = 22 // { int unmount(char *path, int flags); } + SYS_SETUID = 23 // { int setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t getuid(void); } + SYS_GETEUID = 25 // { uid_t geteuid(void); } + SYS_PTRACE = 26 // { int ptrace(int req, pid_t pid, \ + SYS_RECVMSG = 27 // { int recvmsg(int s, struct msghdr *msg, \ + SYS_SENDMSG = 28 // { int sendmsg(int s, struct msghdr *msg, \ + SYS_RECVFROM = 29 // { int recvfrom(int s, caddr_t buf, \ + SYS_ACCEPT = 30 // { int accept(int s, \ + SYS_GETPEERNAME = 31 // { int getpeername(int fdes, \ + SYS_GETSOCKNAME = 32 // { int getsockname(int fdes, \ + SYS_ACCESS = 33 // { int access(char *path, int amode); } + SYS_CHFLAGS = 34 // { int chflags(const char *path, u_long flags); } + SYS_FCHFLAGS = 35 // { int fchflags(int fd, u_long flags); } + SYS_SYNC = 36 // { int sync(void); } + SYS_KILL = 37 // { int kill(int pid, int signum); } + SYS_GETPPID = 39 // { pid_t getppid(void); } + SYS_DUP = 41 // { int dup(u_int fd); } + SYS_PIPE = 42 // { int pipe(void); } + SYS_GETEGID = 43 // { gid_t getegid(void); } + SYS_PROFIL = 44 // { int profil(caddr_t samples, size_t size, \ + SYS_KTRACE = 45 // { int ktrace(const char *fname, int ops, \ + SYS_GETGID = 47 // { gid_t getgid(void); } + SYS_GETLOGIN = 49 // { int getlogin(char *namebuf, u_int \ + SYS_SETLOGIN = 50 // { int setlogin(char *namebuf); } + SYS_ACCT = 51 // { int acct(char *path); } + SYS_SIGALTSTACK = 53 // { int sigaltstack(stack_t *ss, \ + SYS_IOCTL = 54 // { int ioctl(int fd, u_long com, \ + SYS_REBOOT = 55 // { int reboot(int opt); } + SYS_REVOKE = 56 // { int revoke(char *path); } + SYS_SYMLINK = 57 // { int symlink(char *path, char *link); } + SYS_READLINK = 58 // { ssize_t readlink(char *path, char *buf, \ + SYS_EXECVE = 59 // { int execve(char *fname, char **argv, \ + SYS_UMASK = 60 // { int umask(int newmask); } umask umask_args \ + SYS_CHROOT = 61 // { int chroot(char *path); } + SYS_MSYNC = 65 // { int msync(void *addr, size_t len, \ + SYS_VFORK = 66 // { int vfork(void); } + SYS_SBRK = 69 // { int sbrk(int incr); } + SYS_SSTK = 70 // { int sstk(int incr); } + SYS_OVADVISE = 72 // { int ovadvise(int anom); } vadvise \ + SYS_MUNMAP = 73 // { int munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int mprotect(const void *addr, size_t len, \ + SYS_MADVISE = 75 // { int madvise(void *addr, size_t len, \ + SYS_MINCORE = 78 // { int mincore(const void *addr, size_t len, \ + SYS_GETGROUPS = 79 // { int getgroups(u_int gidsetsize, \ + SYS_SETGROUPS = 80 // { int setgroups(u_int gidsetsize, \ + SYS_GETPGRP = 81 // { int getpgrp(void); } + SYS_SETPGID = 82 // { int setpgid(int pid, int pgid); } + SYS_SETITIMER = 83 // { int setitimer(u_int which, struct \ + SYS_SWAPON = 85 // { int swapon(char *name); } + SYS_GETITIMER = 86 // { int getitimer(u_int which, \ + SYS_GETDTABLESIZE = 89 // { int getdtablesize(void); } + SYS_DUP2 = 90 // { int dup2(u_int from, u_int to); } + SYS_FCNTL = 92 // { int fcntl(int fd, int cmd, long arg); } + SYS_SELECT = 93 // { int select(int nd, fd_set *in, fd_set *ou, \ + SYS_FSYNC = 95 // { int fsync(int fd); } + SYS_SETPRIORITY = 96 // { int setpriority(int which, int who, \ + SYS_SOCKET = 97 // { int socket(int domain, int type, \ + SYS_CONNECT = 98 // { int connect(int s, caddr_t name, \ + SYS_GETPRIORITY = 100 // { int getpriority(int which, int who); } + SYS_BIND = 104 // { int bind(int s, caddr_t name, \ + SYS_SETSOCKOPT = 105 // { int setsockopt(int s, int level, int name, \ + SYS_LISTEN = 106 // { int listen(int s, int backlog); } + SYS_GETTIMEOFDAY = 116 // { int gettimeofday(struct timeval *tp, \ + SYS_GETRUSAGE = 117 // { int getrusage(int who, \ + SYS_GETSOCKOPT = 118 // { int getsockopt(int s, int level, int name, \ + SYS_READV = 120 // { int readv(int fd, struct iovec *iovp, \ + SYS_WRITEV = 121 // { int writev(int fd, struct iovec *iovp, \ + SYS_SETTIMEOFDAY = 122 // { int settimeofday(struct timeval *tv, \ + SYS_FCHOWN = 123 // { int fchown(int fd, int uid, int gid); } + SYS_FCHMOD = 124 // { int fchmod(int fd, int mode); } + SYS_SETREUID = 126 // { int setreuid(int ruid, int euid); } + SYS_SETREGID = 127 // { int setregid(int rgid, int egid); } + SYS_RENAME = 128 // { int rename(char *from, char *to); } + SYS_FLOCK = 131 // { int flock(int fd, int how); } + SYS_MKFIFO = 132 // { int mkfifo(char *path, int mode); } + SYS_SENDTO = 133 // { int sendto(int s, caddr_t buf, size_t len, \ + SYS_SHUTDOWN = 134 // { int shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int socketpair(int domain, int type, \ + SYS_MKDIR = 136 // { int mkdir(char *path, int mode); } + SYS_RMDIR = 137 // { int rmdir(char *path); } + SYS_UTIMES = 138 // { int utimes(char *path, \ + SYS_ADJTIME = 140 // { int adjtime(struct timeval *delta, \ + SYS_SETSID = 147 // { int setsid(void); } + SYS_QUOTACTL = 148 // { int quotactl(char *path, int cmd, int uid, \ + SYS_NLM_SYSCALL = 154 // { int nlm_syscall(int debug_level, int grace_period, int addr_count, char **addrs); } + SYS_NFSSVC = 155 // { int nfssvc(int flag, caddr_t argp); } + SYS_LGETFH = 160 // { int lgetfh(char *fname, \ + SYS_GETFH = 161 // { int getfh(char *fname, \ + SYS_SYSARCH = 165 // { int sysarch(int op, char *parms); } + SYS_RTPRIO = 166 // { int rtprio(int function, pid_t pid, \ + SYS_SEMSYS = 169 // { int semsys(int which, int a2, int a3, \ + SYS_MSGSYS = 170 // { int msgsys(int which, int a2, int a3, \ + SYS_SHMSYS = 171 // { int shmsys(int which, int a2, int a3, \ + SYS_FREEBSD6_PREAD = 173 // { ssize_t freebsd6_pread(int fd, void *buf, \ + SYS_FREEBSD6_PWRITE = 174 // { ssize_t freebsd6_pwrite(int fd, \ + SYS_SETFIB = 175 // { int setfib(int fibnum); } + SYS_NTP_ADJTIME = 176 // { int ntp_adjtime(struct timex *tp); } + SYS_SETGID = 181 // { int setgid(gid_t gid); } + SYS_SETEGID = 182 // { int setegid(gid_t egid); } + SYS_SETEUID = 183 // { int seteuid(uid_t euid); } + SYS_STAT = 188 // { int stat(char *path, struct stat *ub); } + SYS_FSTAT = 189 // { int fstat(int fd, struct stat *sb); } + SYS_LSTAT = 190 // { int lstat(char *path, struct stat *ub); } + SYS_PATHCONF = 191 // { int pathconf(char *path, int name); } + SYS_FPATHCONF = 192 // { int fpathconf(int fd, int name); } + SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, \ + SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, \ + SYS_GETDIRENTRIES = 196 // { int getdirentries(int fd, char *buf, \ + SYS_FREEBSD6_MMAP = 197 // { caddr_t freebsd6_mmap(caddr_t addr, \ + SYS_FREEBSD6_LSEEK = 199 // { off_t freebsd6_lseek(int fd, int pad, \ + SYS_FREEBSD6_TRUNCATE = 200 // { int freebsd6_truncate(char *path, int pad, \ + SYS_FREEBSD6_FTRUNCATE = 201 // { int freebsd6_ftruncate(int fd, int pad, \ + SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, \ + SYS_MLOCK = 203 // { int mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int munlock(const void *addr, size_t len); } + SYS_UNDELETE = 205 // { int undelete(char *path); } + SYS_FUTIMES = 206 // { int futimes(int fd, struct timeval *tptr); } + SYS_GETPGID = 207 // { int getpgid(pid_t pid); } + SYS_POLL = 209 // { int poll(struct pollfd *fds, u_int nfds, \ + SYS_SEMGET = 221 // { int semget(key_t key, int nsems, \ + SYS_SEMOP = 222 // { int semop(int semid, struct sembuf *sops, \ + SYS_MSGGET = 225 // { int msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int msgsnd(int msqid, const void *msgp, \ + SYS_MSGRCV = 227 // { int msgrcv(int msqid, void *msgp, \ + SYS_SHMAT = 228 // { int shmat(int shmid, const void *shmaddr, \ + SYS_SHMDT = 230 // { int shmdt(const void *shmaddr); } + SYS_SHMGET = 231 // { int shmget(key_t key, size_t size, \ + SYS_CLOCK_GETTIME = 232 // { int clock_gettime(clockid_t clock_id, \ + SYS_CLOCK_SETTIME = 233 // { int clock_settime( \ + SYS_CLOCK_GETRES = 234 // { int clock_getres(clockid_t clock_id, \ + SYS_KTIMER_CREATE = 235 // { int ktimer_create(clockid_t clock_id, \ + SYS_KTIMER_DELETE = 236 // { int ktimer_delete(int timerid); } + SYS_KTIMER_SETTIME = 237 // { int ktimer_settime(int timerid, int flags, \ + SYS_KTIMER_GETTIME = 238 // { int ktimer_gettime(int timerid, struct \ + SYS_KTIMER_GETOVERRUN = 239 // { int ktimer_getoverrun(int timerid); } + SYS_NANOSLEEP = 240 // { int nanosleep(const struct timespec *rqtp, \ + SYS_FFCLOCK_GETCOUNTER = 241 // { int ffclock_getcounter(ffcounter *ffcount); } + SYS_FFCLOCK_SETESTIMATE = 242 // { int ffclock_setestimate( \ + SYS_FFCLOCK_GETESTIMATE = 243 // { int ffclock_getestimate( \ + SYS_CLOCK_GETCPUCLOCKID2 = 247 // { int clock_getcpuclockid2(id_t id,\ + SYS_NTP_GETTIME = 248 // { int ntp_gettime(struct ntptimeval *ntvp); } + SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, \ + SYS_RFORK = 251 // { int rfork(int flags); } + SYS_OPENBSD_POLL = 252 // { int openbsd_poll(struct pollfd *fds, \ + SYS_ISSETUGID = 253 // { int issetugid(void); } + SYS_LCHOWN = 254 // { int lchown(char *path, int uid, int gid); } + SYS_AIO_READ = 255 // { int aio_read(struct aiocb *aiocbp); } + SYS_AIO_WRITE = 256 // { int aio_write(struct aiocb *aiocbp); } + SYS_LIO_LISTIO = 257 // { int lio_listio(int mode, \ + SYS_GETDENTS = 272 // { int getdents(int fd, char *buf, \ + SYS_LCHMOD = 274 // { int lchmod(char *path, mode_t mode); } + SYS_LUTIMES = 276 // { int lutimes(char *path, \ + SYS_NSTAT = 278 // { int nstat(char *path, struct nstat *ub); } + SYS_NFSTAT = 279 // { int nfstat(int fd, struct nstat *sb); } + SYS_NLSTAT = 280 // { int nlstat(char *path, struct nstat *ub); } + SYS_PREADV = 289 // { ssize_t preadv(int fd, struct iovec *iovp, \ + SYS_PWRITEV = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, \ + SYS_FHOPEN = 298 // { int fhopen(const struct fhandle *u_fhp, \ + SYS_FHSTAT = 299 // { int fhstat(const struct fhandle *u_fhp, \ + SYS_MODNEXT = 300 // { int modnext(int modid); } + SYS_MODSTAT = 301 // { int modstat(int modid, \ + SYS_MODFNEXT = 302 // { int modfnext(int modid); } + SYS_MODFIND = 303 // { int modfind(const char *name); } + SYS_KLDLOAD = 304 // { int kldload(const char *file); } + SYS_KLDUNLOAD = 305 // { int kldunload(int fileid); } + SYS_KLDFIND = 306 // { int kldfind(const char *file); } + SYS_KLDNEXT = 307 // { int kldnext(int fileid); } + SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct \ + SYS_KLDFIRSTMOD = 309 // { int kldfirstmod(int fileid); } + SYS_GETSID = 310 // { int getsid(pid_t pid); } + SYS_SETRESUID = 311 // { int setresuid(uid_t ruid, uid_t euid, \ + SYS_SETRESGID = 312 // { int setresgid(gid_t rgid, gid_t egid, \ + SYS_AIO_RETURN = 314 // { int aio_return(struct aiocb *aiocbp); } + SYS_AIO_SUSPEND = 315 // { int aio_suspend( \ + SYS_AIO_CANCEL = 316 // { int aio_cancel(int fd, \ + SYS_AIO_ERROR = 317 // { int aio_error(struct aiocb *aiocbp); } + SYS_OAIO_READ = 318 // { int oaio_read(struct oaiocb *aiocbp); } + SYS_OAIO_WRITE = 319 // { int oaio_write(struct oaiocb *aiocbp); } + SYS_OLIO_LISTIO = 320 // { int olio_listio(int mode, \ + SYS_YIELD = 321 // { int yield(void); } + SYS_MLOCKALL = 324 // { int mlockall(int how); } + SYS_MUNLOCKALL = 325 // { int munlockall(void); } + SYS___GETCWD = 326 // { int __getcwd(char *buf, u_int buflen); } + SYS_SCHED_SETPARAM = 327 // { int sched_setparam (pid_t pid, \ + SYS_SCHED_GETPARAM = 328 // { int sched_getparam (pid_t pid, struct \ + SYS_SCHED_SETSCHEDULER = 329 // { int sched_setscheduler (pid_t pid, int \ + SYS_SCHED_GETSCHEDULER = 330 // { int sched_getscheduler (pid_t pid); } + SYS_SCHED_YIELD = 331 // { int sched_yield (void); } + SYS_SCHED_GET_PRIORITY_MAX = 332 // { int sched_get_priority_max (int policy); } + SYS_SCHED_GET_PRIORITY_MIN = 333 // { int sched_get_priority_min (int policy); } + SYS_SCHED_RR_GET_INTERVAL = 334 // { int sched_rr_get_interval (pid_t pid, \ + SYS_UTRACE = 335 // { int utrace(const void *addr, size_t len); } + SYS_KLDSYM = 337 // { int kldsym(int fileid, int cmd, \ + SYS_JAIL = 338 // { int jail(struct jail *jail); } + SYS_SIGPROCMASK = 340 // { int sigprocmask(int how, \ + SYS_SIGSUSPEND = 341 // { int sigsuspend(const sigset_t *sigmask); } + SYS_SIGPENDING = 343 // { int sigpending(sigset_t *set); } + SYS_SIGTIMEDWAIT = 345 // { int sigtimedwait(const sigset_t *set, \ + SYS_SIGWAITINFO = 346 // { int sigwaitinfo(const sigset_t *set, \ + SYS___ACL_GET_FILE = 347 // { int __acl_get_file(const char *path, \ + SYS___ACL_SET_FILE = 348 // { int __acl_set_file(const char *path, \ + SYS___ACL_GET_FD = 349 // { int __acl_get_fd(int filedes, \ + SYS___ACL_SET_FD = 350 // { int __acl_set_fd(int filedes, \ + SYS___ACL_DELETE_FILE = 351 // { int __acl_delete_file(const char *path, \ + SYS___ACL_DELETE_FD = 352 // { int __acl_delete_fd(int filedes, \ + SYS___ACL_ACLCHECK_FILE = 353 // { int __acl_aclcheck_file(const char *path, \ + SYS___ACL_ACLCHECK_FD = 354 // { int __acl_aclcheck_fd(int filedes, \ + SYS_EXTATTRCTL = 355 // { int extattrctl(const char *path, int cmd, \ + SYS_EXTATTR_SET_FILE = 356 // { ssize_t extattr_set_file( \ + SYS_EXTATTR_GET_FILE = 357 // { ssize_t extattr_get_file( \ + SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, \ + SYS_AIO_WAITCOMPLETE = 359 // { int aio_waitcomplete( \ + SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, \ + SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, \ + SYS_KQUEUE = 362 // { int kqueue(void); } + SYS_KEVENT = 363 // { int kevent(int fd, \ + SYS_EXTATTR_SET_FD = 371 // { ssize_t extattr_set_fd(int fd, \ + SYS_EXTATTR_GET_FD = 372 // { ssize_t extattr_get_fd(int fd, \ + SYS_EXTATTR_DELETE_FD = 373 // { int extattr_delete_fd(int fd, \ + SYS___SETUGID = 374 // { int __setugid(int flag); } + SYS_EACCESS = 376 // { int eaccess(char *path, int amode); } + SYS_NMOUNT = 378 // { int nmount(struct iovec *iovp, \ + SYS___MAC_GET_PROC = 384 // { int __mac_get_proc(struct mac *mac_p); } + SYS___MAC_SET_PROC = 385 // { int __mac_set_proc(struct mac *mac_p); } + SYS___MAC_GET_FD = 386 // { int __mac_get_fd(int fd, \ + SYS___MAC_GET_FILE = 387 // { int __mac_get_file(const char *path_p, \ + SYS___MAC_SET_FD = 388 // { int __mac_set_fd(int fd, \ + SYS___MAC_SET_FILE = 389 // { int __mac_set_file(const char *path_p, \ + SYS_KENV = 390 // { int kenv(int what, const char *name, \ + SYS_LCHFLAGS = 391 // { int lchflags(const char *path, \ + SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, \ + SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, \ + SYS_MAC_SYSCALL = 394 // { int mac_syscall(const char *policy, \ + SYS_GETFSSTAT = 395 // { int getfsstat(struct statfs *buf, \ + SYS_STATFS = 396 // { int statfs(char *path, \ + SYS_FSTATFS = 397 // { int fstatfs(int fd, struct statfs *buf); } + SYS_FHSTATFS = 398 // { int fhstatfs(const struct fhandle *u_fhp, \ + SYS_KSEM_CLOSE = 400 // { int ksem_close(semid_t id); } + SYS_KSEM_POST = 401 // { int ksem_post(semid_t id); } + SYS_KSEM_WAIT = 402 // { int ksem_wait(semid_t id); } + SYS_KSEM_TRYWAIT = 403 // { int ksem_trywait(semid_t id); } + SYS_KSEM_INIT = 404 // { int ksem_init(semid_t *idp, \ + SYS_KSEM_OPEN = 405 // { int ksem_open(semid_t *idp, \ + SYS_KSEM_UNLINK = 406 // { int ksem_unlink(const char *name); } + SYS_KSEM_GETVALUE = 407 // { int ksem_getvalue(semid_t id, int *val); } + SYS_KSEM_DESTROY = 408 // { int ksem_destroy(semid_t id); } + SYS___MAC_GET_PID = 409 // { int __mac_get_pid(pid_t pid, \ + SYS___MAC_GET_LINK = 410 // { int __mac_get_link(const char *path_p, \ + SYS___MAC_SET_LINK = 411 // { int __mac_set_link(const char *path_p, \ + SYS_EXTATTR_SET_LINK = 412 // { ssize_t extattr_set_link( \ + SYS_EXTATTR_GET_LINK = 413 // { ssize_t extattr_get_link( \ + SYS_EXTATTR_DELETE_LINK = 414 // { int extattr_delete_link( \ + SYS___MAC_EXECVE = 415 // { int __mac_execve(char *fname, char **argv, \ + SYS_SIGACTION = 416 // { int sigaction(int sig, \ + SYS_SIGRETURN = 417 // { int sigreturn( \ + SYS_GETCONTEXT = 421 // { int getcontext(struct __ucontext *ucp); } + SYS_SETCONTEXT = 422 // { int setcontext( \ + SYS_SWAPCONTEXT = 423 // { int swapcontext(struct __ucontext *oucp, \ + SYS_SWAPOFF = 424 // { int swapoff(const char *name); } + SYS___ACL_GET_LINK = 425 // { int __acl_get_link(const char *path, \ + SYS___ACL_SET_LINK = 426 // { int __acl_set_link(const char *path, \ + SYS___ACL_DELETE_LINK = 427 // { int __acl_delete_link(const char *path, \ + SYS___ACL_ACLCHECK_LINK = 428 // { int __acl_aclcheck_link(const char *path, \ + SYS_SIGWAIT = 429 // { int sigwait(const sigset_t *set, \ + SYS_THR_CREATE = 430 // { int thr_create(ucontext_t *ctx, long *id, \ + SYS_THR_EXIT = 431 // { void thr_exit(long *state); } + SYS_THR_SELF = 432 // { int thr_self(long *id); } + SYS_THR_KILL = 433 // { int thr_kill(long id, int sig); } + SYS__UMTX_LOCK = 434 // { int _umtx_lock(struct umtx *umtx); } + SYS__UMTX_UNLOCK = 435 // { int _umtx_unlock(struct umtx *umtx); } + SYS_JAIL_ATTACH = 436 // { int jail_attach(int jid); } + SYS_EXTATTR_LIST_FD = 437 // { ssize_t extattr_list_fd(int fd, \ + SYS_EXTATTR_LIST_FILE = 438 // { ssize_t extattr_list_file( \ + SYS_EXTATTR_LIST_LINK = 439 // { ssize_t extattr_list_link( \ + SYS_KSEM_TIMEDWAIT = 441 // { int ksem_timedwait(semid_t id, \ + SYS_THR_SUSPEND = 442 // { int thr_suspend( \ + SYS_THR_WAKE = 443 // { int thr_wake(long id); } + SYS_KLDUNLOADF = 444 // { int kldunloadf(int fileid, int flags); } + SYS_AUDIT = 445 // { int audit(const void *record, \ + SYS_AUDITON = 446 // { int auditon(int cmd, void *data, \ + SYS_GETAUID = 447 // { int getauid(uid_t *auid); } + SYS_SETAUID = 448 // { int setauid(uid_t *auid); } + SYS_GETAUDIT = 449 // { int getaudit(struct auditinfo *auditinfo); } + SYS_SETAUDIT = 450 // { int setaudit(struct auditinfo *auditinfo); } + SYS_GETAUDIT_ADDR = 451 // { int getaudit_addr( \ + SYS_SETAUDIT_ADDR = 452 // { int setaudit_addr( \ + SYS_AUDITCTL = 453 // { int auditctl(char *path); } + SYS__UMTX_OP = 454 // { int _umtx_op(void *obj, int op, \ + SYS_THR_NEW = 455 // { int thr_new(struct thr_param *param, \ + SYS_SIGQUEUE = 456 // { int sigqueue(pid_t pid, int signum, void *value); } + SYS_KMQ_OPEN = 457 // { int kmq_open(const char *path, int flags, \ + SYS_KMQ_SETATTR = 458 // { int kmq_setattr(int mqd, \ + SYS_KMQ_TIMEDRECEIVE = 459 // { int kmq_timedreceive(int mqd, \ + SYS_KMQ_TIMEDSEND = 460 // { int kmq_timedsend(int mqd, \ + SYS_KMQ_NOTIFY = 461 // { int kmq_notify(int mqd, \ + SYS_KMQ_UNLINK = 462 // { int kmq_unlink(const char *path); } + SYS_ABORT2 = 463 // { int abort2(const char *why, int nargs, void **args); } + SYS_THR_SET_NAME = 464 // { int thr_set_name(long id, const char *name); } + SYS_AIO_FSYNC = 465 // { int aio_fsync(int op, struct aiocb *aiocbp); } + SYS_RTPRIO_THREAD = 466 // { int rtprio_thread(int function, \ + SYS_SCTP_PEELOFF = 471 // { int sctp_peeloff(int sd, uint32_t name); } + SYS_SCTP_GENERIC_SENDMSG = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, \ + SYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, \ + SYS_SCTP_GENERIC_RECVMSG = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, \ + SYS_PREAD = 475 // { ssize_t pread(int fd, void *buf, \ + SYS_PWRITE = 476 // { ssize_t pwrite(int fd, const void *buf, \ + SYS_MMAP = 477 // { caddr_t mmap(caddr_t addr, size_t len, \ + SYS_LSEEK = 478 // { off_t lseek(int fd, off_t offset, \ + SYS_TRUNCATE = 479 // { int truncate(char *path, off_t length); } + SYS_FTRUNCATE = 480 // { int ftruncate(int fd, off_t length); } + SYS_THR_KILL2 = 481 // { int thr_kill2(pid_t pid, long id, int sig); } + SYS_SHM_OPEN = 482 // { int shm_open(const char *path, int flags, \ + SYS_SHM_UNLINK = 483 // { int shm_unlink(const char *path); } + SYS_CPUSET = 484 // { int cpuset(cpusetid_t *setid); } + SYS_CPUSET_SETID = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, \ + SYS_CPUSET_GETID = 486 // { int cpuset_getid(cpulevel_t level, \ + SYS_CPUSET_GETAFFINITY = 487 // { int cpuset_getaffinity(cpulevel_t level, \ + SYS_CPUSET_SETAFFINITY = 488 // { int cpuset_setaffinity(cpulevel_t level, \ + SYS_FACCESSAT = 489 // { int faccessat(int fd, char *path, int amode, \ + SYS_FCHMODAT = 490 // { int fchmodat(int fd, char *path, mode_t mode, \ + SYS_FCHOWNAT = 491 // { int fchownat(int fd, char *path, uid_t uid, \ + SYS_FEXECVE = 492 // { int fexecve(int fd, char **argv, \ + SYS_FSTATAT = 493 // { int fstatat(int fd, char *path, \ + SYS_FUTIMESAT = 494 // { int futimesat(int fd, char *path, \ + SYS_LINKAT = 495 // { int linkat(int fd1, char *path1, int fd2, \ + SYS_MKDIRAT = 496 // { int mkdirat(int fd, char *path, mode_t mode); } + SYS_MKFIFOAT = 497 // { int mkfifoat(int fd, char *path, mode_t mode); } + SYS_MKNODAT = 498 // { int mknodat(int fd, char *path, mode_t mode, \ + SYS_OPENAT = 499 // { int openat(int fd, char *path, int flag, \ + SYS_READLINKAT = 500 // { int readlinkat(int fd, char *path, char *buf, \ + SYS_RENAMEAT = 501 // { int renameat(int oldfd, char *old, int newfd, \ + SYS_SYMLINKAT = 502 // { int symlinkat(char *path1, int fd, \ + SYS_UNLINKAT = 503 // { int unlinkat(int fd, char *path, int flag); } + SYS_POSIX_OPENPT = 504 // { int posix_openpt(int flags); } + SYS_GSSD_SYSCALL = 505 // { int gssd_syscall(char *path); } + SYS_JAIL_GET = 506 // { int jail_get(struct iovec *iovp, \ + SYS_JAIL_SET = 507 // { int jail_set(struct iovec *iovp, \ + SYS_JAIL_REMOVE = 508 // { int jail_remove(int jid); } + SYS_CLOSEFROM = 509 // { int closefrom(int lowfd); } + SYS___SEMCTL = 510 // { int __semctl(int semid, int semnum, \ + SYS_MSGCTL = 511 // { int msgctl(int msqid, int cmd, \ + SYS_SHMCTL = 512 // { int shmctl(int shmid, int cmd, \ + SYS_LPATHCONF = 513 // { int lpathconf(char *path, int name); } + SYS___CAP_RIGHTS_GET = 515 // { int __cap_rights_get(int version, \ + SYS_CAP_ENTER = 516 // { int cap_enter(void); } + SYS_CAP_GETMODE = 517 // { int cap_getmode(u_int *modep); } + SYS_PDFORK = 518 // { int pdfork(int *fdp, int flags); } + SYS_PDKILL = 519 // { int pdkill(int fd, int signum); } + SYS_PDGETPID = 520 // { int pdgetpid(int fd, pid_t *pidp); } + SYS_PSELECT = 522 // { int pselect(int nd, fd_set *in, \ + SYS_GETLOGINCLASS = 523 // { int getloginclass(char *namebuf, \ + SYS_SETLOGINCLASS = 524 // { int setloginclass(const char *namebuf); } + SYS_RCTL_GET_RACCT = 525 // { int rctl_get_racct(const void *inbufp, \ + SYS_RCTL_GET_RULES = 526 // { int rctl_get_rules(const void *inbufp, \ + SYS_RCTL_GET_LIMITS = 527 // { int rctl_get_limits(const void *inbufp, \ + SYS_RCTL_ADD_RULE = 528 // { int rctl_add_rule(const void *inbufp, \ + SYS_RCTL_REMOVE_RULE = 529 // { int rctl_remove_rule(const void *inbufp, \ + SYS_POSIX_FALLOCATE = 530 // { int posix_fallocate(int fd, \ + SYS_POSIX_FADVISE = 531 // { int posix_fadvise(int fd, off_t offset, \ + SYS_WAIT6 = 532 // { int wait6(idtype_t idtype, id_t id, \ + SYS_CAP_RIGHTS_LIMIT = 533 // { int cap_rights_limit(int fd, \ + SYS_CAP_IOCTLS_LIMIT = 534 // { int cap_ioctls_limit(int fd, \ + SYS_CAP_IOCTLS_GET = 535 // { ssize_t cap_ioctls_get(int fd, \ + SYS_CAP_FCNTLS_LIMIT = 536 // { int cap_fcntls_limit(int fd, \ + SYS_CAP_FCNTLS_GET = 537 // { int cap_fcntls_get(int fd, \ + SYS_BINDAT = 538 // { int bindat(int fd, int s, caddr_t name, \ + SYS_CONNECTAT = 539 // { int connectat(int fd, int s, caddr_t name, \ + SYS_CHFLAGSAT = 540 // { int chflagsat(int fd, const char *path, \ + SYS_ACCEPT4 = 541 // { int accept4(int s, \ + SYS_PIPE2 = 542 // { int pipe2(int *fildes, int flags); } + SYS_AIO_MLOCK = 543 // { int aio_mlock(struct aiocb *aiocbp); } + SYS_PROCCTL = 544 // { int procctl(idtype_t idtype, id_t id, \ + SYS_PPOLL = 545 // { int ppoll(struct pollfd *fds, u_int nfds, \ + SYS_FUTIMENS = 546 // { int futimens(int fd, \ + SYS_UTIMENSAT = 547 // { int utimensat(int fd, \ ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go index 95ab1290..8f33ece7 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go @@ -387,4 +387,6 @@ const ( SYS_PKEY_FREE = 382 SYS_STATX = 383 SYS_ARCH_PRCTL = 384 + SYS_IO_PGETEVENTS = 385 + SYS_RSEQ = 386 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go index c5dabf2e..70c1a2c1 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go @@ -339,4 +339,6 @@ const ( SYS_PKEY_ALLOC = 330 SYS_PKEY_FREE = 331 SYS_STATX = 332 + SYS_IO_PGETEVENTS = 333 + SYS_RSEQ = 334 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go index ab7fa5fd..a1db143f 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go @@ -359,4 +359,5 @@ const ( SYS_PKEY_ALLOC = 395 SYS_PKEY_FREE = 396 SYS_STATX = 397 + SYS_RSEQ = 398 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go index b1c6b4bd..2e4cee70 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go @@ -283,4 +283,5 @@ const ( SYS_PKEY_ALLOC = 289 SYS_PKEY_FREE = 290 SYS_STATX = 291 + SYS_IO_PGETEVENTS = 292 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go index 2e9aa7a3..16714491 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go @@ -372,4 +372,6 @@ const ( SYS_PKEY_ALLOC = 4364 SYS_PKEY_FREE = 4365 SYS_STATX = 4366 + SYS_RSEQ = 4367 + SYS_IO_PGETEVENTS = 4368 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go index 92827635..1270a1c9 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go @@ -332,4 +332,6 @@ const ( SYS_PKEY_ALLOC = 5324 SYS_PKEY_FREE = 5325 SYS_STATX = 5326 + SYS_RSEQ = 5327 + SYS_IO_PGETEVENTS = 5328 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go index 45bd3fd6..93980be1 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go @@ -332,4 +332,6 @@ const ( SYS_PKEY_ALLOC = 5324 SYS_PKEY_FREE = 5325 SYS_STATX = 5326 + SYS_RSEQ = 5327 + SYS_IO_PGETEVENTS = 5328 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go index 62ccac4b..0fc77261 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go @@ -372,4 +372,6 @@ const ( SYS_PKEY_ALLOC = 4364 SYS_PKEY_FREE = 4365 SYS_STATX = 4366 + SYS_RSEQ = 4367 + SYS_IO_PGETEVENTS = 4368 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go index 384d49bf..a5c5f3de 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go @@ -370,4 +370,6 @@ const ( SYS_PKEY_ALLOC = 384 SYS_PKEY_FREE = 385 SYS_PKEY_MPROTECT = 386 + SYS_RSEQ = 387 + SYS_IO_PGETEVENTS = 388 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go index 9623248a..5470eadb 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go @@ -370,4 +370,6 @@ const ( SYS_PKEY_ALLOC = 384 SYS_PKEY_FREE = 385 SYS_PKEY_MPROTECT = 386 + SYS_RSEQ = 387 + SYS_IO_PGETEVENTS = 388 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go new file mode 100644 index 00000000..41e4fd1d --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go @@ -0,0 +1,286 @@ +// linux/mksysnum.pl -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build riscv64,linux + +package unix + +const ( + SYS_IO_SETUP = 0 + SYS_IO_DESTROY = 1 + SYS_IO_SUBMIT = 2 + SYS_IO_CANCEL = 3 + SYS_IO_GETEVENTS = 4 + SYS_SETXATTR = 5 + SYS_LSETXATTR = 6 + SYS_FSETXATTR = 7 + SYS_GETXATTR = 8 + SYS_LGETXATTR = 9 + SYS_FGETXATTR = 10 + SYS_LISTXATTR = 11 + SYS_LLISTXATTR = 12 + SYS_FLISTXATTR = 13 + SYS_REMOVEXATTR = 14 + SYS_LREMOVEXATTR = 15 + SYS_FREMOVEXATTR = 16 + SYS_GETCWD = 17 + SYS_LOOKUP_DCOOKIE = 18 + SYS_EVENTFD2 = 19 + SYS_EPOLL_CREATE1 = 20 + SYS_EPOLL_CTL = 21 + SYS_EPOLL_PWAIT = 22 + SYS_DUP = 23 + SYS_DUP3 = 24 + SYS_FCNTL = 25 + SYS_INOTIFY_INIT1 = 26 + SYS_INOTIFY_ADD_WATCH = 27 + SYS_INOTIFY_RM_WATCH = 28 + SYS_IOCTL = 29 + SYS_IOPRIO_SET = 30 + SYS_IOPRIO_GET = 31 + SYS_FLOCK = 32 + SYS_MKNODAT = 33 + SYS_MKDIRAT = 34 + SYS_UNLINKAT = 35 + SYS_SYMLINKAT = 36 + SYS_LINKAT = 37 + SYS_UMOUNT2 = 39 + SYS_MOUNT = 40 + SYS_PIVOT_ROOT = 41 + SYS_NFSSERVCTL = 42 + SYS_STATFS = 43 + SYS_FSTATFS = 44 + SYS_TRUNCATE = 45 + SYS_FTRUNCATE = 46 + SYS_FALLOCATE = 47 + SYS_FACCESSAT = 48 + SYS_CHDIR = 49 + SYS_FCHDIR = 50 + SYS_CHROOT = 51 + SYS_FCHMOD = 52 + SYS_FCHMODAT = 53 + SYS_FCHOWNAT = 54 + SYS_FCHOWN = 55 + SYS_OPENAT = 56 + SYS_CLOSE = 57 + SYS_VHANGUP = 58 + SYS_PIPE2 = 59 + SYS_QUOTACTL = 60 + SYS_GETDENTS64 = 61 + SYS_LSEEK = 62 + SYS_READ = 63 + SYS_WRITE = 64 + SYS_READV = 65 + SYS_WRITEV = 66 + SYS_PREAD64 = 67 + SYS_PWRITE64 = 68 + SYS_PREADV = 69 + SYS_PWRITEV = 70 + SYS_SENDFILE = 71 + SYS_PSELECT6 = 72 + SYS_PPOLL = 73 + SYS_SIGNALFD4 = 74 + SYS_VMSPLICE = 75 + SYS_SPLICE = 76 + SYS_TEE = 77 + SYS_READLINKAT = 78 + SYS_FSTATAT = 79 + SYS_FSTAT = 80 + SYS_SYNC = 81 + SYS_FSYNC = 82 + SYS_FDATASYNC = 83 + SYS_SYNC_FILE_RANGE = 84 + SYS_TIMERFD_CREATE = 85 + SYS_TIMERFD_SETTIME = 86 + SYS_TIMERFD_GETTIME = 87 + SYS_UTIMENSAT = 88 + SYS_ACCT = 89 + SYS_CAPGET = 90 + SYS_CAPSET = 91 + SYS_PERSONALITY = 92 + SYS_EXIT = 93 + SYS_EXIT_GROUP = 94 + SYS_WAITID = 95 + SYS_SET_TID_ADDRESS = 96 + SYS_UNSHARE = 97 + SYS_FUTEX = 98 + SYS_SET_ROBUST_LIST = 99 + SYS_GET_ROBUST_LIST = 100 + SYS_NANOSLEEP = 101 + SYS_GETITIMER = 102 + SYS_SETITIMER = 103 + SYS_KEXEC_LOAD = 104 + SYS_INIT_MODULE = 105 + SYS_DELETE_MODULE = 106 + SYS_TIMER_CREATE = 107 + SYS_TIMER_GETTIME = 108 + SYS_TIMER_GETOVERRUN = 109 + SYS_TIMER_SETTIME = 110 + SYS_TIMER_DELETE = 111 + SYS_CLOCK_SETTIME = 112 + SYS_CLOCK_GETTIME = 113 + SYS_CLOCK_GETRES = 114 + SYS_CLOCK_NANOSLEEP = 115 + SYS_SYSLOG = 116 + SYS_PTRACE = 117 + SYS_SCHED_SETPARAM = 118 + SYS_SCHED_SETSCHEDULER = 119 + SYS_SCHED_GETSCHEDULER = 120 + SYS_SCHED_GETPARAM = 121 + SYS_SCHED_SETAFFINITY = 122 + SYS_SCHED_GETAFFINITY = 123 + SYS_SCHED_YIELD = 124 + SYS_SCHED_GET_PRIORITY_MAX = 125 + SYS_SCHED_GET_PRIORITY_MIN = 126 + SYS_SCHED_RR_GET_INTERVAL = 127 + SYS_RESTART_SYSCALL = 128 + SYS_KILL = 129 + SYS_TKILL = 130 + SYS_TGKILL = 131 + SYS_SIGALTSTACK = 132 + SYS_RT_SIGSUSPEND = 133 + SYS_RT_SIGACTION = 134 + SYS_RT_SIGPROCMASK = 135 + SYS_RT_SIGPENDING = 136 + SYS_RT_SIGTIMEDWAIT = 137 + SYS_RT_SIGQUEUEINFO = 138 + SYS_RT_SIGRETURN = 139 + SYS_SETPRIORITY = 140 + SYS_GETPRIORITY = 141 + SYS_REBOOT = 142 + SYS_SETREGID = 143 + SYS_SETGID = 144 + SYS_SETREUID = 145 + SYS_SETUID = 146 + SYS_SETRESUID = 147 + SYS_GETRESUID = 148 + SYS_SETRESGID = 149 + SYS_GETRESGID = 150 + SYS_SETFSUID = 151 + SYS_SETFSGID = 152 + SYS_TIMES = 153 + SYS_SETPGID = 154 + SYS_GETPGID = 155 + SYS_GETSID = 156 + SYS_SETSID = 157 + SYS_GETGROUPS = 158 + SYS_SETGROUPS = 159 + SYS_UNAME = 160 + SYS_SETHOSTNAME = 161 + SYS_SETDOMAINNAME = 162 + SYS_GETRLIMIT = 163 + SYS_SETRLIMIT = 164 + SYS_GETRUSAGE = 165 + SYS_UMASK = 166 + SYS_PRCTL = 167 + SYS_GETCPU = 168 + SYS_GETTIMEOFDAY = 169 + SYS_SETTIMEOFDAY = 170 + SYS_ADJTIMEX = 171 + SYS_GETPID = 172 + SYS_GETPPID = 173 + SYS_GETUID = 174 + SYS_GETEUID = 175 + SYS_GETGID = 176 + SYS_GETEGID = 177 + SYS_GETTID = 178 + SYS_SYSINFO = 179 + SYS_MQ_OPEN = 180 + SYS_MQ_UNLINK = 181 + SYS_MQ_TIMEDSEND = 182 + SYS_MQ_TIMEDRECEIVE = 183 + SYS_MQ_NOTIFY = 184 + SYS_MQ_GETSETATTR = 185 + SYS_MSGGET = 186 + SYS_MSGCTL = 187 + SYS_MSGRCV = 188 + SYS_MSGSND = 189 + SYS_SEMGET = 190 + SYS_SEMCTL = 191 + SYS_SEMTIMEDOP = 192 + SYS_SEMOP = 193 + SYS_SHMGET = 194 + SYS_SHMCTL = 195 + SYS_SHMAT = 196 + SYS_SHMDT = 197 + SYS_SOCKET = 198 + SYS_SOCKETPAIR = 199 + SYS_BIND = 200 + SYS_LISTEN = 201 + SYS_ACCEPT = 202 + SYS_CONNECT = 203 + SYS_GETSOCKNAME = 204 + SYS_GETPEERNAME = 205 + SYS_SENDTO = 206 + SYS_RECVFROM = 207 + SYS_SETSOCKOPT = 208 + SYS_GETSOCKOPT = 209 + SYS_SHUTDOWN = 210 + SYS_SENDMSG = 211 + SYS_RECVMSG = 212 + SYS_READAHEAD = 213 + SYS_BRK = 214 + SYS_MUNMAP = 215 + SYS_MREMAP = 216 + SYS_ADD_KEY = 217 + SYS_REQUEST_KEY = 218 + SYS_KEYCTL = 219 + SYS_CLONE = 220 + SYS_EXECVE = 221 + SYS_MMAP = 222 + SYS_FADVISE64 = 223 + SYS_SWAPON = 224 + SYS_SWAPOFF = 225 + SYS_MPROTECT = 226 + SYS_MSYNC = 227 + SYS_MLOCK = 228 + SYS_MUNLOCK = 229 + SYS_MLOCKALL = 230 + SYS_MUNLOCKALL = 231 + SYS_MINCORE = 232 + SYS_MADVISE = 233 + SYS_REMAP_FILE_PAGES = 234 + SYS_MBIND = 235 + SYS_GET_MEMPOLICY = 236 + SYS_SET_MEMPOLICY = 237 + SYS_MIGRATE_PAGES = 238 + SYS_MOVE_PAGES = 239 + SYS_RT_TGSIGQUEUEINFO = 240 + SYS_PERF_EVENT_OPEN = 241 + SYS_ACCEPT4 = 242 + SYS_RECVMMSG = 243 + SYS_ARCH_SPECIFIC_SYSCALL = 244 + SYS_WAIT4 = 260 + SYS_PRLIMIT64 = 261 + SYS_FANOTIFY_INIT = 262 + SYS_FANOTIFY_MARK = 263 + SYS_NAME_TO_HANDLE_AT = 264 + SYS_OPEN_BY_HANDLE_AT = 265 + SYS_CLOCK_ADJTIME = 266 + SYS_SYNCFS = 267 + SYS_SETNS = 268 + SYS_SENDMMSG = 269 + SYS_PROCESS_VM_READV = 270 + SYS_PROCESS_VM_WRITEV = 271 + SYS_KCMP = 272 + SYS_FINIT_MODULE = 273 + SYS_SCHED_SETATTR = 274 + SYS_SCHED_GETATTR = 275 + SYS_RENAMEAT2 = 276 + SYS_SECCOMP = 277 + SYS_GETRANDOM = 278 + SYS_MEMFD_CREATE = 279 + SYS_BPF = 280 + SYS_EXECVEAT = 281 + SYS_USERFAULTFD = 282 + SYS_MEMBARRIER = 283 + SYS_MLOCK2 = 284 + SYS_COPY_FILE_RANGE = 285 + SYS_PREADV2 = 286 + SYS_PWRITEV2 = 287 + SYS_PKEY_MPROTECT = 288 + SYS_PKEY_ALLOC = 289 + SYS_PKEY_FREE = 290 + SYS_STATX = 291 + SYS_IO_PGETEVENTS = 292 +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go index c061d6f1..de0245a9 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go @@ -332,4 +332,6 @@ const ( SYS_STATX = 379 SYS_S390_STHYI = 380 SYS_KEXEC_FILE_LOAD = 381 + SYS_IO_PGETEVENTS = 382 + SYS_RSEQ = 383 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go index 10edff07..bc7fa579 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go @@ -116,6 +116,7 @@ const ( SYS_PSELECT = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, \ SYS_SIGSUSPEND = 111 // { int sys_sigsuspend(int mask); } SYS_SENDSYSLOG = 112 // { int sys_sendsyslog(const char *buf, size_t nbyte, \ + SYS_UNVEIL = 114 // { int sys_unveil(const char *path, \ SYS_GETSOCKOPT = 118 // { int sys_getsockopt(int s, int level, int name, \ SYS_THRKILL = 119 // { int sys_thrkill(pid_t tid, int signum, void *tcb); } SYS_READV = 120 // { ssize_t sys_readv(int fd, \ diff --git a/vendor/golang.org/x/sys/unix/ztypes_aix_ppc.go b/vendor/golang.org/x/sys/unix/ztypes_aix_ppc.go new file mode 100644 index 00000000..ee455365 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_aix_ppc.go @@ -0,0 +1,306 @@ +// cgo -godefs types_aix.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build ppc,aix + +package unix + +const ( + sizeofPtr = 0x4 + sizeofShort = 0x2 + sizeofInt = 0x4 + sizeofLong = 0x4 + sizeofLongLong = 0x8 + PathMax = 0x3ff +) + +type ( + _C_short int16 + _C_int int32 + _C_long int32 + _C_long_long int64 +) + +type off64 int64 +type off int32 +type Mode_t uint32 + +type Timespec struct { + Sec int32 + Nsec int32 +} + +type StTimespec struct { + Sec int32 + Nsec int32 +} + +type Timeval struct { + Sec int32 + Usec int32 +} + +type Timeval32 struct { + Sec int32 + Usec int32 +} + +type Timex struct{} + +type Time_t int32 + +type Tms struct{} + +type Utimbuf struct { + Actime int32 + Modtime int32 +} + +type Timezone struct { + Minuteswest int32 + Dsttime int32 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int32 + Ixrss int32 + Idrss int32 + Isrss int32 + Minflt int32 + Majflt int32 + Nswap int32 + Inblock int32 + Oublock int32 + Msgsnd int32 + Msgrcv int32 + Nsignals int32 + Nvcsw int32 + Nivcsw int32 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type Pid_t int32 + +type _Gid_t uint32 + +type dev_t uint32 + +type Stat_t struct { + Dev uint32 + Ino uint32 + Mode uint32 + Nlink int16 + Flag uint16 + Uid uint32 + Gid uint32 + Rdev uint32 + Size int32 + Atim StTimespec + Mtim StTimespec + Ctim StTimespec + Blksize int32 + Blocks int32 + Vfstype int32 + Vfs uint32 + Type uint32 + Gen uint32 + Reserved [9]uint32 +} + +type StatxTimestamp struct{} + +type Statx_t struct{} + +type Dirent struct { + Offset uint32 + Ino uint32 + Reclen uint16 + Namlen uint16 + Name [256]uint8 +} + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]uint8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [1023]uint8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]uint8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [1012]uint8 +} + +type _Socklen uint32 + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +type Iovec struct { + Base *byte + Len uint32 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen int32 + Control *byte + Controllen uint32 + Flags int32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x404 + SizeofSockaddrUnix = 0x401 + SizeofLinger = 0x8 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofMsghdr = 0x1c + SizeofCmsghdr = 0xc + SizeofICMPv6Filter = 0x20 +) + +const ( + SizeofIfMsghdr = 0x10 +) + +type IfMsgHdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + Addrlen uint8 + _ [1]byte +} + +type FdSet struct { + Bits [2048]int32 +} + +type Utsname struct { + Sysname [32]byte + Nodename [32]byte + Release [32]byte + Version [32]byte + Machine [32]byte +} + +type Ustat_t struct{} + +type Sigset_t struct { + Losigs uint32 + Hisigs uint32 +} + +const ( + AT_FDCWD = -0x2 + AT_REMOVEDIR = 0x1 + AT_SYMLINK_NOFOLLOW = 0x1 +) + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [16]uint8 +} + +type Termio struct{} + +type Winsize struct{} + +type PollFd struct { + Fd int32 + Events uint16 + Revents uint16 +} + +const ( + POLLERR = 0x4000 + POLLHUP = 0x2000 + POLLIN = 0x1 + POLLNVAL = 0x8000 + POLLOUT = 0x2 + POLLPRI = 0x4 + POLLRDBAND = 0x20 + POLLRDNORM = 0x10 + POLLWRBAND = 0x40 + POLLWRNORM = 0x2 +) + +type Flock_t struct { + Type int16 + Whence int16 + Sysid uint32 + Pid int32 + Vfs int32 + Start int64 + Len int64 +} + +type Statfs_t struct{} + +const RNDGETENTCNT = 0x80045200 diff --git a/vendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go b/vendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go new file mode 100644 index 00000000..cdb1699d --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go @@ -0,0 +1,313 @@ +// cgo -godefs types_aix.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build ppc64,aix + +package unix + +const ( + sizeofPtr = 0x8 + sizeofShort = 0x2 + sizeofInt = 0x4 + sizeofLong = 0x8 + sizeofLongLong = 0x8 + PathMax = 0x3ff +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type off64 int64 +type off int64 +type Mode_t uint32 + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type StTimespec struct { + Sec int64 + Nsec int32 + _ [4]byte +} + +type Timeval struct { + Sec int64 + Usec int32 + _ [4]byte +} + +type Timeval32 struct { + Sec int32 + Usec int32 +} + +type Timex struct{} + +type Time_t int64 + +type Tms struct{} + +type Utimbuf struct { + Actime int64 + Modtime int64 +} + +type Timezone struct { + Minuteswest int32 + Dsttime int32 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type Pid_t int32 + +type _Gid_t uint32 + +type dev_t uint64 + +type Stat_t struct { + Dev uint64 + Ino uint64 + Mode uint32 + Nlink int16 + Flag uint16 + Uid uint32 + Gid uint32 + Rdev uint64 + Ssize int32 + _ [4]byte + Atim StTimespec + Mtim StTimespec + Ctim StTimespec + Blksize int64 + Blocks int64 + Vfstype int32 + Vfs uint32 + Type uint32 + Gen uint32 + Reserved [9]uint32 + Padto_ll uint32 + Size int64 +} + +type StatxTimestamp struct{} + +type Statx_t struct{} + +type Dirent struct { + Offset uint64 + Ino uint64 + Reclen uint16 + Namlen uint16 + Name [256]uint8 + _ [4]byte +} + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]uint8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [1023]uint8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]uint8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [1012]uint8 +} + +type _Socklen uint32 + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + _ [4]byte + Iov *Iovec + Iovlen int32 + _ [4]byte + Control *byte + Controllen uint32 + Flags int32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x404 + SizeofSockaddrUnix = 0x401 + SizeofLinger = 0x8 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofMsghdr = 0x30 + SizeofCmsghdr = 0xc + SizeofICMPv6Filter = 0x20 +) + +const ( + SizeofIfMsghdr = 0x10 +) + +type IfMsgHdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + Addrlen uint8 + _ [1]byte +} + +type FdSet struct { + Bits [1024]int64 +} + +type Utsname struct { + Sysname [32]byte + Nodename [32]byte + Release [32]byte + Version [32]byte + Machine [32]byte +} + +type Ustat_t struct{} + +type Sigset_t struct { + Set [4]uint64 +} + +const ( + AT_FDCWD = -0x2 + AT_REMOVEDIR = 0x1 + AT_SYMLINK_NOFOLLOW = 0x1 +) + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [16]uint8 +} + +type Termio struct{} + +type Winsize struct{} + +type PollFd struct { + Fd int32 + Events uint16 + Revents uint16 +} + +const ( + POLLERR = 0x4000 + POLLHUP = 0x2000 + POLLIN = 0x1 + POLLNVAL = 0x8000 + POLLOUT = 0x2 + POLLPRI = 0x4 + POLLRDBAND = 0x20 + POLLRDNORM = 0x10 + POLLWRBAND = 0x40 + POLLWRNORM = 0x2 +) + +type Flock_t struct { + Type int16 + Whence int16 + Sysid uint32 + Pid int32 + Vfs int32 + Start int64 + Len int64 +} + +type Statfs_t struct{} + +const RNDGETENTCNT = 0x80045200 diff --git a/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go index 315a553b..c01ae670 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go @@ -56,23 +56,6 @@ type Rlimit struct { type _Gid_t uint32 -const ( - S_IFMT = 0xf000 - S_IFIFO = 0x1000 - S_IFCHR = 0x2000 - S_IFDIR = 0x4000 - S_IFBLK = 0x6000 - S_IFREG = 0x8000 - S_IFLNK = 0xa000 - S_IFSOCK = 0xc000 - S_ISUID = 0x800 - S_ISGID = 0x400 - S_ISVTX = 0x200 - S_IRUSR = 0x100 - S_IWUSR = 0x80 - S_IXUSR = 0x40 -) - type Stat_t struct { Ino uint64 Nlink uint32 diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go index 878a21ad..8006c563 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go +++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go @@ -56,23 +56,6 @@ type Rlimit struct { type _Gid_t uint32 -const ( - S_IFMT = 0xf000 - S_IFIFO = 0x1000 - S_IFCHR = 0x2000 - S_IFDIR = 0x4000 - S_IFBLK = 0x6000 - S_IFREG = 0x8000 - S_IFLNK = 0xa000 - S_IFSOCK = 0xc000 - S_ISUID = 0x800 - S_ISGID = 0x400 - S_ISVTX = 0x200 - S_IRUSR = 0x100 - S_IWUSR = 0x80 - S_IXUSR = 0x40 -) - type Stat_t struct { Dev uint32 Ino uint32 diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go index 8408af12..716774de 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go @@ -56,23 +56,6 @@ type Rlimit struct { type _Gid_t uint32 -const ( - S_IFMT = 0xf000 - S_IFIFO = 0x1000 - S_IFCHR = 0x2000 - S_IFDIR = 0x4000 - S_IFBLK = 0x6000 - S_IFREG = 0x8000 - S_IFLNK = 0xa000 - S_IFSOCK = 0xc000 - S_ISUID = 0x800 - S_ISGID = 0x400 - S_ISVTX = 0x200 - S_IRUSR = 0x100 - S_IWUSR = 0x80 - S_IXUSR = 0x40 -) - type Stat_t struct { Dev uint32 Ino uint32 diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go index 4b2d9a48..92e07b00 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go +++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go @@ -58,23 +58,6 @@ type Rlimit struct { type _Gid_t uint32 -const ( - S_IFMT = 0xf000 - S_IFIFO = 0x1000 - S_IFCHR = 0x2000 - S_IFDIR = 0x4000 - S_IFBLK = 0x6000 - S_IFREG = 0x8000 - S_IFLNK = 0xa000 - S_IFSOCK = 0xc000 - S_ISUID = 0x800 - S_ISGID = 0x400 - S_ISVTX = 0x200 - S_IRUSR = 0x100 - S_IWUSR = 0x80 - S_IXUSR = 0x40 -) - type Stat_t struct { Dev uint32 Ino uint32 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_386.go b/vendor/golang.org/x/sys/unix/ztypes_linux_386.go index 4c250033..1944dfb1 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_386.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_386.go @@ -441,6 +441,7 @@ const ( IFLA_ADDRESS = 0x1 IFLA_BROADCAST = 0x2 IFLA_IFNAME = 0x3 + IFLA_INFO_KIND = 0x1 IFLA_MTU = 0x4 IFLA_LINK = 0x5 IFLA_QDISC = 0x6 @@ -509,6 +510,13 @@ const ( RTA_FLOW = 0xb RTA_CACHEINFO = 0xc RTA_TABLE = 0xf + RTA_MARK = 0x10 + RTA_MFC_STATS = 0x11 + RTA_VIA = 0x12 + RTA_NEWDST = 0x13 + RTA_PREF = 0x14 + RTA_ENCAP_TYPE = 0x15 + RTA_ENCAP = 0x16 RTN_UNSPEC = 0x0 RTN_UNICAST = 0x1 RTN_LOCAL = 0x2 @@ -1852,3 +1860,32 @@ type RTCPLLInfo struct { Negmult int32 Clock int32 } + +type BlkpgIoctlArg struct { + Op int32 + Flags int32 + Datalen int32 + Data *byte +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 +} + +const ( + BLKPG = 0x1269 + BLKPG_ADD_PARTITION = 0x1 + BLKPG_DEL_PARTITION = 0x2 + BLKPG_RESIZE_PARTITION = 0x3 +) + +const ( + NETNSA_NONE = 0x0 + NETNSA_NSID = 0x1 + NETNSA_PID = 0x2 + NETNSA_FD = 0x3 +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go index 2e4d709b..dd09289d 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go @@ -445,6 +445,7 @@ const ( IFLA_ADDRESS = 0x1 IFLA_BROADCAST = 0x2 IFLA_IFNAME = 0x3 + IFLA_INFO_KIND = 0x1 IFLA_MTU = 0x4 IFLA_LINK = 0x5 IFLA_QDISC = 0x6 @@ -513,6 +514,13 @@ const ( RTA_FLOW = 0xb RTA_CACHEINFO = 0xc RTA_TABLE = 0xf + RTA_MARK = 0x10 + RTA_MFC_STATS = 0x11 + RTA_VIA = 0x12 + RTA_NEWDST = 0x13 + RTA_PREF = 0x14 + RTA_ENCAP_TYPE = 0x15 + RTA_ENCAP = 0x16 RTN_UNSPEC = 0x0 RTN_UNICAST = 0x1 RTN_LOCAL = 0x2 @@ -1872,3 +1880,34 @@ type RTCPLLInfo struct { Negmult int32 Clock int64 } + +type BlkpgIoctlArg struct { + Op int32 + Flags int32 + Datalen int32 + _ [4]byte + Data *byte +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x1269 + BLKPG_ADD_PARTITION = 0x1 + BLKPG_DEL_PARTITION = 0x2 + BLKPG_RESIZE_PARTITION = 0x3 +) + +const ( + NETNSA_NONE = 0x0 + NETNSA_NSID = 0x1 + NETNSA_PID = 0x2 + NETNSA_FD = 0x3 +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go b/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go index bf38e5e2..d9e844d8 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go @@ -444,6 +444,7 @@ const ( IFLA_ADDRESS = 0x1 IFLA_BROADCAST = 0x2 IFLA_IFNAME = 0x3 + IFLA_INFO_KIND = 0x1 IFLA_MTU = 0x4 IFLA_LINK = 0x5 IFLA_QDISC = 0x6 @@ -512,6 +513,13 @@ const ( RTA_FLOW = 0xb RTA_CACHEINFO = 0xc RTA_TABLE = 0xf + RTA_MARK = 0x10 + RTA_MFC_STATS = 0x11 + RTA_VIA = 0x12 + RTA_NEWDST = 0x13 + RTA_PREF = 0x14 + RTA_ENCAP_TYPE = 0x15 + RTA_ENCAP = 0x16 RTN_UNSPEC = 0x0 RTN_UNICAST = 0x1 RTN_LOCAL = 0x2 @@ -1841,3 +1849,33 @@ type RTCPLLInfo struct { Negmult int32 Clock int32 } + +type BlkpgIoctlArg struct { + Op int32 + Flags int32 + Datalen int32 + Data *byte +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x1269 + BLKPG_ADD_PARTITION = 0x1 + BLKPG_DEL_PARTITION = 0x2 + BLKPG_RESIZE_PARTITION = 0x3 +) + +const ( + NETNSA_NONE = 0x0 + NETNSA_NSID = 0x1 + NETNSA_PID = 0x2 + NETNSA_FD = 0x3 +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go index 972c1b87..fd2471a3 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go @@ -446,6 +446,7 @@ const ( IFLA_ADDRESS = 0x1 IFLA_BROADCAST = 0x2 IFLA_IFNAME = 0x3 + IFLA_INFO_KIND = 0x1 IFLA_MTU = 0x4 IFLA_LINK = 0x5 IFLA_QDISC = 0x6 @@ -514,6 +515,13 @@ const ( RTA_FLOW = 0xb RTA_CACHEINFO = 0xc RTA_TABLE = 0xf + RTA_MARK = 0x10 + RTA_MFC_STATS = 0x11 + RTA_VIA = 0x12 + RTA_NEWDST = 0x13 + RTA_PREF = 0x14 + RTA_ENCAP_TYPE = 0x15 + RTA_ENCAP = 0x16 RTN_UNSPEC = 0x0 RTN_UNICAST = 0x1 RTN_LOCAL = 0x2 @@ -1851,3 +1859,34 @@ type RTCPLLInfo struct { Negmult int32 Clock int64 } + +type BlkpgIoctlArg struct { + Op int32 + Flags int32 + Datalen int32 + _ [4]byte + Data *byte +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x1269 + BLKPG_ADD_PARTITION = 0x1 + BLKPG_DEL_PARTITION = 0x2 + BLKPG_RESIZE_PARTITION = 0x3 +) + +const ( + NETNSA_NONE = 0x0 + NETNSA_NSID = 0x1 + NETNSA_PID = 0x2 + NETNSA_FD = 0x3 +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go index 783e70e8..89218d9d 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go @@ -442,6 +442,7 @@ const ( IFLA_ADDRESS = 0x1 IFLA_BROADCAST = 0x2 IFLA_IFNAME = 0x3 + IFLA_INFO_KIND = 0x1 IFLA_MTU = 0x4 IFLA_LINK = 0x5 IFLA_QDISC = 0x6 @@ -510,6 +511,13 @@ const ( RTA_FLOW = 0xb RTA_CACHEINFO = 0xc RTA_TABLE = 0xf + RTA_MARK = 0x10 + RTA_MFC_STATS = 0x11 + RTA_VIA = 0x12 + RTA_NEWDST = 0x13 + RTA_PREF = 0x14 + RTA_ENCAP_TYPE = 0x15 + RTA_ENCAP = 0x16 RTN_UNSPEC = 0x0 RTN_UNICAST = 0x1 RTN_LOCAL = 0x2 @@ -1846,3 +1854,33 @@ type RTCPLLInfo struct { Negmult int32 Clock int32 } + +type BlkpgIoctlArg struct { + Op int32 + Flags int32 + Datalen int32 + Data *byte +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x20001269 + BLKPG_ADD_PARTITION = 0x1 + BLKPG_DEL_PARTITION = 0x2 + BLKPG_RESIZE_PARTITION = 0x3 +) + +const ( + NETNSA_NONE = 0x0 + NETNSA_NSID = 0x1 + NETNSA_PID = 0x2 + NETNSA_FD = 0x3 +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go index 5c6ea719..05990397 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go @@ -446,6 +446,7 @@ const ( IFLA_ADDRESS = 0x1 IFLA_BROADCAST = 0x2 IFLA_IFNAME = 0x3 + IFLA_INFO_KIND = 0x1 IFLA_MTU = 0x4 IFLA_LINK = 0x5 IFLA_QDISC = 0x6 @@ -514,6 +515,13 @@ const ( RTA_FLOW = 0xb RTA_CACHEINFO = 0xc RTA_TABLE = 0xf + RTA_MARK = 0x10 + RTA_MFC_STATS = 0x11 + RTA_VIA = 0x12 + RTA_NEWDST = 0x13 + RTA_PREF = 0x14 + RTA_ENCAP_TYPE = 0x15 + RTA_ENCAP = 0x16 RTN_UNSPEC = 0x0 RTN_UNICAST = 0x1 RTN_LOCAL = 0x2 @@ -1853,3 +1861,34 @@ type RTCPLLInfo struct { Negmult int32 Clock int64 } + +type BlkpgIoctlArg struct { + Op int32 + Flags int32 + Datalen int32 + _ [4]byte + Data *byte +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x20001269 + BLKPG_ADD_PARTITION = 0x1 + BLKPG_DEL_PARTITION = 0x2 + BLKPG_RESIZE_PARTITION = 0x3 +) + +const ( + NETNSA_NONE = 0x0 + NETNSA_NSID = 0x1 + NETNSA_PID = 0x2 + NETNSA_FD = 0x3 +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go index 93effc8e..c933cea6 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go @@ -446,6 +446,7 @@ const ( IFLA_ADDRESS = 0x1 IFLA_BROADCAST = 0x2 IFLA_IFNAME = 0x3 + IFLA_INFO_KIND = 0x1 IFLA_MTU = 0x4 IFLA_LINK = 0x5 IFLA_QDISC = 0x6 @@ -514,6 +515,13 @@ const ( RTA_FLOW = 0xb RTA_CACHEINFO = 0xc RTA_TABLE = 0xf + RTA_MARK = 0x10 + RTA_MFC_STATS = 0x11 + RTA_VIA = 0x12 + RTA_NEWDST = 0x13 + RTA_PREF = 0x14 + RTA_ENCAP_TYPE = 0x15 + RTA_ENCAP = 0x16 RTN_UNSPEC = 0x0 RTN_UNICAST = 0x1 RTN_LOCAL = 0x2 @@ -1853,3 +1861,34 @@ type RTCPLLInfo struct { Negmult int32 Clock int64 } + +type BlkpgIoctlArg struct { + Op int32 + Flags int32 + Datalen int32 + _ [4]byte + Data *byte +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x20001269 + BLKPG_ADD_PARTITION = 0x1 + BLKPG_DEL_PARTITION = 0x2 + BLKPG_RESIZE_PARTITION = 0x3 +) + +const ( + NETNSA_NONE = 0x0 + NETNSA_NSID = 0x1 + NETNSA_PID = 0x2 + NETNSA_FD = 0x3 +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go index cc5ca242..92d358ae 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go @@ -442,6 +442,7 @@ const ( IFLA_ADDRESS = 0x1 IFLA_BROADCAST = 0x2 IFLA_IFNAME = 0x3 + IFLA_INFO_KIND = 0x1 IFLA_MTU = 0x4 IFLA_LINK = 0x5 IFLA_QDISC = 0x6 @@ -510,6 +511,13 @@ const ( RTA_FLOW = 0xb RTA_CACHEINFO = 0xc RTA_TABLE = 0xf + RTA_MARK = 0x10 + RTA_MFC_STATS = 0x11 + RTA_VIA = 0x12 + RTA_NEWDST = 0x13 + RTA_PREF = 0x14 + RTA_ENCAP_TYPE = 0x15 + RTA_ENCAP = 0x16 RTN_UNSPEC = 0x0 RTN_UNICAST = 0x1 RTN_LOCAL = 0x2 @@ -1846,3 +1854,33 @@ type RTCPLLInfo struct { Negmult int32 Clock int32 } + +type BlkpgIoctlArg struct { + Op int32 + Flags int32 + Datalen int32 + Data *byte +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x20001269 + BLKPG_ADD_PARTITION = 0x1 + BLKPG_DEL_PARTITION = 0x2 + BLKPG_RESIZE_PARTITION = 0x3 +) + +const ( + NETNSA_NONE = 0x0 + NETNSA_NSID = 0x1 + NETNSA_PID = 0x2 + NETNSA_FD = 0x3 +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go index 712f6402..2dbda843 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go @@ -447,6 +447,7 @@ const ( IFLA_ADDRESS = 0x1 IFLA_BROADCAST = 0x2 IFLA_IFNAME = 0x3 + IFLA_INFO_KIND = 0x1 IFLA_MTU = 0x4 IFLA_LINK = 0x5 IFLA_QDISC = 0x6 @@ -515,6 +516,13 @@ const ( RTA_FLOW = 0xb RTA_CACHEINFO = 0xc RTA_TABLE = 0xf + RTA_MARK = 0x10 + RTA_MFC_STATS = 0x11 + RTA_VIA = 0x12 + RTA_NEWDST = 0x13 + RTA_PREF = 0x14 + RTA_ENCAP_TYPE = 0x15 + RTA_ENCAP = 0x16 RTN_UNSPEC = 0x0 RTN_UNICAST = 0x1 RTN_LOCAL = 0x2 @@ -1861,3 +1869,34 @@ type RTCPLLInfo struct { Negmult int32 Clock int64 } + +type BlkpgIoctlArg struct { + Op int32 + Flags int32 + Datalen int32 + _ [4]byte + Data *byte +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x20001269 + BLKPG_ADD_PARTITION = 0x1 + BLKPG_DEL_PARTITION = 0x2 + BLKPG_RESIZE_PARTITION = 0x3 +) + +const ( + NETNSA_NONE = 0x0 + NETNSA_NSID = 0x1 + NETNSA_PID = 0x2 + NETNSA_FD = 0x3 +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go index 1be45320..b1d23570 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go @@ -447,6 +447,7 @@ const ( IFLA_ADDRESS = 0x1 IFLA_BROADCAST = 0x2 IFLA_IFNAME = 0x3 + IFLA_INFO_KIND = 0x1 IFLA_MTU = 0x4 IFLA_LINK = 0x5 IFLA_QDISC = 0x6 @@ -515,6 +516,13 @@ const ( RTA_FLOW = 0xb RTA_CACHEINFO = 0xc RTA_TABLE = 0xf + RTA_MARK = 0x10 + RTA_MFC_STATS = 0x11 + RTA_VIA = 0x12 + RTA_NEWDST = 0x13 + RTA_PREF = 0x14 + RTA_ENCAP_TYPE = 0x15 + RTA_ENCAP = 0x16 RTN_UNSPEC = 0x0 RTN_UNICAST = 0x1 RTN_LOCAL = 0x2 @@ -1861,3 +1869,34 @@ type RTCPLLInfo struct { Negmult int32 Clock int64 } + +type BlkpgIoctlArg struct { + Op int32 + Flags int32 + Datalen int32 + _ [4]byte + Data *byte +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x20001269 + BLKPG_ADD_PARTITION = 0x1 + BLKPG_DEL_PARTITION = 0x2 + BLKPG_RESIZE_PARTITION = 0x3 +) + +const ( + NETNSA_NONE = 0x0 + NETNSA_NSID = 0x1 + NETNSA_PID = 0x2 + NETNSA_FD = 0x3 +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go new file mode 100644 index 00000000..0a34ccdd --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go @@ -0,0 +1,1919 @@ +// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build riscv64,linux + +package unix + +const ( + sizeofPtr = 0x8 + sizeofShort = 0x2 + sizeofInt = 0x4 + sizeofLong = 0x8 + sizeofLongLong = 0x8 + PathMax = 0x1000 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Timex struct { + Modes uint32 + _ [4]byte + Offset int64 + Freq int64 + Maxerror int64 + Esterror int64 + Status int32 + _ [4]byte + Constant int64 + Precision int64 + Tolerance int64 + Time Timeval + Tick int64 + Ppsfreq int64 + Jitter int64 + Shift int32 + _ [4]byte + Stabil int64 + Jitcnt int64 + Calcnt int64 + Errcnt int64 + Stbcnt int64 + Tai int32 + _ [44]byte +} + +type Time_t int64 + +type Tms struct { + Utime int64 + Stime int64 + Cutime int64 + Cstime int64 +} + +type Utimbuf struct { + Actime int64 + Modtime int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev uint64 + Ino uint64 + Mode uint32 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev uint64 + _ uint64 + Size int64 + Blksize int32 + _ int32 + Blocks int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + _ [2]int32 +} + +type StatxTimestamp struct { + Sec int64 + Nsec uint32 + _ int32 +} + +type Statx_t struct { + Mask uint32 + Blksize uint32 + Attributes uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Mode uint16 + _ [1]uint16 + Ino uint64 + Size uint64 + Blocks uint64 + Attributes_mask uint64 + Atime StatxTimestamp + Btime StatxTimestamp + Ctime StatxTimestamp + Mtime StatxTimestamp + Rdev_major uint32 + Rdev_minor uint32 + Dev_major uint32 + Dev_minor uint32 + _ [14]uint64 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Type uint8 + Name [256]uint8 + _ [5]byte +} + +type Fsid struct { + Val [2]int32 +} + +type Flock_t struct { + Type int16 + Whence int16 + _ [4]byte + Start int64 + Len int64 + Pid int32 + _ [4]byte +} + +type FscryptPolicy struct { + Version uint8 + Contents_encryption_mode uint8 + Filenames_encryption_mode uint8 + Flags uint8 + Master_key_descriptor [8]uint8 +} + +type FscryptKey struct { + Mode uint32 + Raw [64]uint8 + Size uint32 +} + +type KeyctlDHParams struct { + Private int32 + Prime int32 + Base int32 +} + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]uint8 +} + +type RawSockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Family uint16 + Path [108]uint8 +} + +type RawSockaddrLinklayer struct { + Family uint16 + Protocol uint16 + Ifindex int32 + Hatype uint16 + Pkttype uint8 + Halen uint8 + Addr [8]uint8 +} + +type RawSockaddrNetlink struct { + Family uint16 + Pad uint16 + Pid uint32 + Groups uint32 +} + +type RawSockaddrHCI struct { + Family uint16 + Dev uint16 + Channel uint16 +} + +type RawSockaddrL2 struct { + Family uint16 + Psm uint16 + Bdaddr [6]uint8 + Cid uint16 + Bdaddr_type uint8 + _ [1]byte +} + +type RawSockaddrRFCOMM struct { + Family uint16 + Bdaddr [6]uint8 + Channel uint8 + _ [1]byte +} + +type RawSockaddrCAN struct { + Family uint16 + _ [2]byte + Ifindex int32 + Addr [8]byte +} + +type RawSockaddrALG struct { + Family uint16 + Type [14]uint8 + Feat uint32 + Mask uint32 + Name [64]uint8 +} + +type RawSockaddrVM struct { + Family uint16 + Reserved1 uint16 + Port uint32 + Cid uint32 + Zero [4]uint8 +} + +type RawSockaddr struct { + Family uint16 + Data [14]uint8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [96]uint8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type PacketMreq struct { + Ifindex int32 + Type uint16 + Alen uint16 + Address [8]uint8 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + _ [4]byte + Iov *Iovec + Iovlen uint64 + Control *byte + Controllen uint64 + Flags int32 + _ [4]byte +} + +type Cmsghdr struct { + Len uint64 + Level int32 + Type int32 +} + +type Inet4Pktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Data [8]uint32 +} + +type Ucred struct { + Pid int32 + Uid uint32 + Gid uint32 +} + +type TCPInfo struct { + State uint8 + Ca_state uint8 + Retransmits uint8 + Probes uint8 + Backoff uint8 + Options uint8 + _ [2]byte + Rto uint32 + Ato uint32 + Snd_mss uint32 + Rcv_mss uint32 + Unacked uint32 + Sacked uint32 + Lost uint32 + Retrans uint32 + Fackets uint32 + Last_data_sent uint32 + Last_ack_sent uint32 + Last_data_recv uint32 + Last_ack_recv uint32 + Pmtu uint32 + Rcv_ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Snd_ssthresh uint32 + Snd_cwnd uint32 + Advmss uint32 + Reordering uint32 + Rcv_rtt uint32 + Rcv_space uint32 + Total_retrans uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x70 + SizeofSockaddrUnix = 0x6e + SizeofSockaddrLinklayer = 0x14 + SizeofSockaddrNetlink = 0xc + SizeofSockaddrHCI = 0x6 + SizeofSockaddrL2 = 0xe + SizeofSockaddrRFCOMM = 0xa + SizeofSockaddrCAN = 0x10 + SizeofSockaddrALG = 0x58 + SizeofSockaddrVM = 0x10 + SizeofLinger = 0x8 + SizeofIovec = 0x10 + SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc + SizeofIPv6Mreq = 0x14 + SizeofPacketMreq = 0x10 + SizeofMsghdr = 0x38 + SizeofCmsghdr = 0x10 + SizeofInet4Pktinfo = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 + SizeofUcred = 0xc + SizeofTCPInfo = 0x68 +) + +const ( + IFA_UNSPEC = 0x0 + IFA_ADDRESS = 0x1 + IFA_LOCAL = 0x2 + IFA_LABEL = 0x3 + IFA_BROADCAST = 0x4 + IFA_ANYCAST = 0x5 + IFA_CACHEINFO = 0x6 + IFA_MULTICAST = 0x7 + IFLA_UNSPEC = 0x0 + IFLA_ADDRESS = 0x1 + IFLA_BROADCAST = 0x2 + IFLA_IFNAME = 0x3 + IFLA_INFO_KIND = 0x1 + IFLA_MTU = 0x4 + IFLA_LINK = 0x5 + IFLA_QDISC = 0x6 + IFLA_STATS = 0x7 + IFLA_COST = 0x8 + IFLA_PRIORITY = 0x9 + IFLA_MASTER = 0xa + IFLA_WIRELESS = 0xb + IFLA_PROTINFO = 0xc + IFLA_TXQLEN = 0xd + IFLA_MAP = 0xe + IFLA_WEIGHT = 0xf + IFLA_OPERSTATE = 0x10 + IFLA_LINKMODE = 0x11 + IFLA_LINKINFO = 0x12 + IFLA_NET_NS_PID = 0x13 + IFLA_IFALIAS = 0x14 + IFLA_NUM_VF = 0x15 + IFLA_VFINFO_LIST = 0x16 + IFLA_STATS64 = 0x17 + IFLA_VF_PORTS = 0x18 + IFLA_PORT_SELF = 0x19 + IFLA_AF_SPEC = 0x1a + IFLA_GROUP = 0x1b + IFLA_NET_NS_FD = 0x1c + IFLA_EXT_MASK = 0x1d + IFLA_PROMISCUITY = 0x1e + IFLA_NUM_TX_QUEUES = 0x1f + IFLA_NUM_RX_QUEUES = 0x20 + IFLA_CARRIER = 0x21 + IFLA_PHYS_PORT_ID = 0x22 + IFLA_CARRIER_CHANGES = 0x23 + IFLA_PHYS_SWITCH_ID = 0x24 + IFLA_LINK_NETNSID = 0x25 + IFLA_PHYS_PORT_NAME = 0x26 + IFLA_PROTO_DOWN = 0x27 + IFLA_GSO_MAX_SEGS = 0x28 + IFLA_GSO_MAX_SIZE = 0x29 + IFLA_PAD = 0x2a + IFLA_XDP = 0x2b + IFLA_EVENT = 0x2c + IFLA_NEW_NETNSID = 0x2d + IFLA_IF_NETNSID = 0x2e + IFLA_MAX = 0x31 + RT_SCOPE_UNIVERSE = 0x0 + RT_SCOPE_SITE = 0xc8 + RT_SCOPE_LINK = 0xfd + RT_SCOPE_HOST = 0xfe + RT_SCOPE_NOWHERE = 0xff + RT_TABLE_UNSPEC = 0x0 + RT_TABLE_COMPAT = 0xfc + RT_TABLE_DEFAULT = 0xfd + RT_TABLE_MAIN = 0xfe + RT_TABLE_LOCAL = 0xff + RT_TABLE_MAX = 0xffffffff + RTA_UNSPEC = 0x0 + RTA_DST = 0x1 + RTA_SRC = 0x2 + RTA_IIF = 0x3 + RTA_OIF = 0x4 + RTA_GATEWAY = 0x5 + RTA_PRIORITY = 0x6 + RTA_PREFSRC = 0x7 + RTA_METRICS = 0x8 + RTA_MULTIPATH = 0x9 + RTA_FLOW = 0xb + RTA_CACHEINFO = 0xc + RTA_TABLE = 0xf + RTA_MARK = 0x10 + RTA_MFC_STATS = 0x11 + RTA_VIA = 0x12 + RTA_NEWDST = 0x13 + RTA_PREF = 0x14 + RTA_ENCAP_TYPE = 0x15 + RTA_ENCAP = 0x16 + RTN_UNSPEC = 0x0 + RTN_UNICAST = 0x1 + RTN_LOCAL = 0x2 + RTN_BROADCAST = 0x3 + RTN_ANYCAST = 0x4 + RTN_MULTICAST = 0x5 + RTN_BLACKHOLE = 0x6 + RTN_UNREACHABLE = 0x7 + RTN_PROHIBIT = 0x8 + RTN_THROW = 0x9 + RTN_NAT = 0xa + RTN_XRESOLVE = 0xb + RTNLGRP_NONE = 0x0 + RTNLGRP_LINK = 0x1 + RTNLGRP_NOTIFY = 0x2 + RTNLGRP_NEIGH = 0x3 + RTNLGRP_TC = 0x4 + RTNLGRP_IPV4_IFADDR = 0x5 + RTNLGRP_IPV4_MROUTE = 0x6 + RTNLGRP_IPV4_ROUTE = 0x7 + RTNLGRP_IPV4_RULE = 0x8 + RTNLGRP_IPV6_IFADDR = 0x9 + RTNLGRP_IPV6_MROUTE = 0xa + RTNLGRP_IPV6_ROUTE = 0xb + RTNLGRP_IPV6_IFINFO = 0xc + RTNLGRP_IPV6_PREFIX = 0x12 + RTNLGRP_IPV6_RULE = 0x13 + RTNLGRP_ND_USEROPT = 0x14 + SizeofNlMsghdr = 0x10 + SizeofNlMsgerr = 0x14 + SizeofRtGenmsg = 0x1 + SizeofNlAttr = 0x4 + SizeofRtAttr = 0x4 + SizeofIfInfomsg = 0x10 + SizeofIfAddrmsg = 0x8 + SizeofRtMsg = 0xc + SizeofRtNexthop = 0x8 +) + +type NlMsghdr struct { + Len uint32 + Type uint16 + Flags uint16 + Seq uint32 + Pid uint32 +} + +type NlMsgerr struct { + Error int32 + Msg NlMsghdr +} + +type RtGenmsg struct { + Family uint8 +} + +type NlAttr struct { + Len uint16 + Type uint16 +} + +type RtAttr struct { + Len uint16 + Type uint16 +} + +type IfInfomsg struct { + Family uint8 + _ uint8 + Type uint16 + Index int32 + Flags uint32 + Change uint32 +} + +type IfAddrmsg struct { + Family uint8 + Prefixlen uint8 + Flags uint8 + Scope uint8 + Index uint32 +} + +type RtMsg struct { + Family uint8 + Dst_len uint8 + Src_len uint8 + Tos uint8 + Table uint8 + Protocol uint8 + Scope uint8 + Type uint8 + Flags uint32 +} + +type RtNexthop struct { + Len uint16 + Flags uint8 + Hops uint8 + Ifindex int32 +} + +const ( + SizeofSockFilter = 0x8 + SizeofSockFprog = 0x10 +) + +type SockFilter struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type SockFprog struct { + Len uint16 + _ [6]byte + Filter *SockFilter +} + +type InotifyEvent struct { + Wd int32 + Mask uint32 + Cookie uint32 + Len uint32 +} + +const SizeofInotifyEvent = 0x10 + +type PtraceRegs struct { + Pc uint64 + Ra uint64 + Sp uint64 + Gp uint64 + Tp uint64 + T0 uint64 + T1 uint64 + T2 uint64 + S0 uint64 + S1 uint64 + A0 uint64 + A1 uint64 + A2 uint64 + A3 uint64 + A4 uint64 + A5 uint64 + A6 uint64 + A7 uint64 + S2 uint64 + S3 uint64 + S4 uint64 + S5 uint64 + S6 uint64 + S7 uint64 + S8 uint64 + S9 uint64 + S10 uint64 + S11 uint64 + T3 uint64 + T4 uint64 + T5 uint64 + T6 uint64 +} + +type FdSet struct { + Bits [16]int64 +} + +type Sysinfo_t struct { + Uptime int64 + Loads [3]uint64 + Totalram uint64 + Freeram uint64 + Sharedram uint64 + Bufferram uint64 + Totalswap uint64 + Freeswap uint64 + Procs uint16 + Pad uint16 + _ [4]byte + Totalhigh uint64 + Freehigh uint64 + Unit uint32 + _ [0]uint8 + _ [4]byte +} + +type Utsname struct { + Sysname [65]byte + Nodename [65]byte + Release [65]byte + Version [65]byte + Machine [65]byte + Domainname [65]byte +} + +type Ustat_t struct { + Tfree int32 + _ [4]byte + Tinode uint64 + Fname [6]uint8 + Fpack [6]uint8 + _ [4]byte +} + +type EpollEvent struct { + Events uint32 + Fd int32 + Pad int32 +} + +const ( + AT_EMPTY_PATH = 0x1000 + AT_FDCWD = -0x64 + AT_NO_AUTOMOUNT = 0x800 + AT_REMOVEDIR = 0x200 + + AT_STATX_SYNC_AS_STAT = 0x0 + AT_STATX_FORCE_SYNC = 0x2000 + AT_STATX_DONT_SYNC = 0x4000 + + AT_SYMLINK_FOLLOW = 0x400 + AT_SYMLINK_NOFOLLOW = 0x100 + + AT_EACCESS = 0x200 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLIN = 0x1 + POLLPRI = 0x2 + POLLOUT = 0x4 + POLLRDHUP = 0x2000 + POLLERR = 0x8 + POLLHUP = 0x10 + POLLNVAL = 0x20 +) + +type Sigset_t struct { + Val [16]uint64 +} + +const RNDGETENTCNT = 0x80045200 + +const PERF_IOC_FLAG_GROUP = 0x1 + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Line uint8 + Cc [19]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type Taskstats struct { + Version uint16 + _ [2]byte + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + _ [6]byte + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]uint8 + Ac_sched uint8 + Ac_pad [3]uint8 + _ [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + _ [4]byte + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 +} + +const ( + TASKSTATS_CMD_UNSPEC = 0x0 + TASKSTATS_CMD_GET = 0x1 + TASKSTATS_CMD_NEW = 0x2 + TASKSTATS_TYPE_UNSPEC = 0x0 + TASKSTATS_TYPE_PID = 0x1 + TASKSTATS_TYPE_TGID = 0x2 + TASKSTATS_TYPE_STATS = 0x3 + TASKSTATS_TYPE_AGGR_PID = 0x4 + TASKSTATS_TYPE_AGGR_TGID = 0x5 + TASKSTATS_TYPE_NULL = 0x6 + TASKSTATS_CMD_ATTR_UNSPEC = 0x0 + TASKSTATS_CMD_ATTR_PID = 0x1 + TASKSTATS_CMD_ATTR_TGID = 0x2 + TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 0x3 + TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4 +) + +type CGroupStats struct { + Sleeping uint64 + Running uint64 + Stopped uint64 + Uninterruptible uint64 + Io_wait uint64 +} + +const ( + CGROUPSTATS_CMD_UNSPEC = 0x3 + CGROUPSTATS_CMD_GET = 0x4 + CGROUPSTATS_CMD_NEW = 0x5 + CGROUPSTATS_TYPE_UNSPEC = 0x0 + CGROUPSTATS_TYPE_CGROUP_STATS = 0x1 + CGROUPSTATS_CMD_ATTR_UNSPEC = 0x0 + CGROUPSTATS_CMD_ATTR_FD = 0x1 +) + +type Genlmsghdr struct { + Cmd uint8 + Version uint8 + Reserved uint16 +} + +const ( + CTRL_CMD_UNSPEC = 0x0 + CTRL_CMD_NEWFAMILY = 0x1 + CTRL_CMD_DELFAMILY = 0x2 + CTRL_CMD_GETFAMILY = 0x3 + CTRL_CMD_NEWOPS = 0x4 + CTRL_CMD_DELOPS = 0x5 + CTRL_CMD_GETOPS = 0x6 + CTRL_CMD_NEWMCAST_GRP = 0x7 + CTRL_CMD_DELMCAST_GRP = 0x8 + CTRL_CMD_GETMCAST_GRP = 0x9 + CTRL_ATTR_UNSPEC = 0x0 + CTRL_ATTR_FAMILY_ID = 0x1 + CTRL_ATTR_FAMILY_NAME = 0x2 + CTRL_ATTR_VERSION = 0x3 + CTRL_ATTR_HDRSIZE = 0x4 + CTRL_ATTR_MAXATTR = 0x5 + CTRL_ATTR_OPS = 0x6 + CTRL_ATTR_MCAST_GROUPS = 0x7 + CTRL_ATTR_OP_UNSPEC = 0x0 + CTRL_ATTR_OP_ID = 0x1 + CTRL_ATTR_OP_FLAGS = 0x2 + CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0 + CTRL_ATTR_MCAST_GRP_NAME = 0x1 + CTRL_ATTR_MCAST_GRP_ID = 0x2 +) + +type cpuMask uint64 + +const ( + _CPU_SETSIZE = 0x400 + _NCPUBITS = 0x40 +) + +const ( + BDADDR_BREDR = 0x0 + BDADDR_LE_PUBLIC = 0x1 + BDADDR_LE_RANDOM = 0x2 +) + +type PerfEventAttr struct { + Type uint32 + Size uint32 + Config uint64 + Sample uint64 + Sample_type uint64 + Read_format uint64 + Bits uint64 + Wakeup uint32 + Bp_type uint32 + Ext1 uint64 + Ext2 uint64 + Branch_sample_type uint64 + Sample_regs_user uint64 + Sample_stack_user uint32 + Clockid int32 + Sample_regs_intr uint64 + Aux_watermark uint32 + _ uint32 +} + +type PerfEventMmapPage struct { + Version uint32 + Compat_version uint32 + Lock uint32 + Index uint32 + Offset int64 + Time_enabled uint64 + Time_running uint64 + Capabilities uint64 + Pmc_width uint16 + Time_shift uint16 + Time_mult uint32 + Time_offset uint64 + Time_zero uint64 + Size uint32 + _ [948]uint8 + Data_head uint64 + Data_tail uint64 + Data_offset uint64 + Data_size uint64 + Aux_head uint64 + Aux_tail uint64 + Aux_offset uint64 + Aux_size uint64 +} + +const ( + PerfBitDisabled uint64 = CBitFieldMaskBit0 + PerfBitInherit = CBitFieldMaskBit1 + PerfBitPinned = CBitFieldMaskBit2 + PerfBitExclusive = CBitFieldMaskBit3 + PerfBitExcludeUser = CBitFieldMaskBit4 + PerfBitExcludeKernel = CBitFieldMaskBit5 + PerfBitExcludeHv = CBitFieldMaskBit6 + PerfBitExcludeIdle = CBitFieldMaskBit7 + PerfBitMmap = CBitFieldMaskBit8 + PerfBitComm = CBitFieldMaskBit9 + PerfBitFreq = CBitFieldMaskBit10 + PerfBitInheritStat = CBitFieldMaskBit11 + PerfBitEnableOnExec = CBitFieldMaskBit12 + PerfBitTask = CBitFieldMaskBit13 + PerfBitWatermark = CBitFieldMaskBit14 + PerfBitPreciseIPBit1 = CBitFieldMaskBit15 + PerfBitPreciseIPBit2 = CBitFieldMaskBit16 + PerfBitMmapData = CBitFieldMaskBit17 + PerfBitSampleIDAll = CBitFieldMaskBit18 + PerfBitExcludeHost = CBitFieldMaskBit19 + PerfBitExcludeGuest = CBitFieldMaskBit20 + PerfBitExcludeCallchainKernel = CBitFieldMaskBit21 + PerfBitExcludeCallchainUser = CBitFieldMaskBit22 + PerfBitMmap2 = CBitFieldMaskBit23 + PerfBitCommExec = CBitFieldMaskBit24 + PerfBitUseClockID = CBitFieldMaskBit25 + PerfBitContextSwitch = CBitFieldMaskBit26 +) + +const ( + PERF_TYPE_HARDWARE = 0x0 + PERF_TYPE_SOFTWARE = 0x1 + PERF_TYPE_TRACEPOINT = 0x2 + PERF_TYPE_HW_CACHE = 0x3 + PERF_TYPE_RAW = 0x4 + PERF_TYPE_BREAKPOINT = 0x5 + + PERF_COUNT_HW_CPU_CYCLES = 0x0 + PERF_COUNT_HW_INSTRUCTIONS = 0x1 + PERF_COUNT_HW_CACHE_REFERENCES = 0x2 + PERF_COUNT_HW_CACHE_MISSES = 0x3 + PERF_COUNT_HW_BRANCH_INSTRUCTIONS = 0x4 + PERF_COUNT_HW_BRANCH_MISSES = 0x5 + PERF_COUNT_HW_BUS_CYCLES = 0x6 + PERF_COUNT_HW_STALLED_CYCLES_FRONTEND = 0x7 + PERF_COUNT_HW_STALLED_CYCLES_BACKEND = 0x8 + PERF_COUNT_HW_REF_CPU_CYCLES = 0x9 + + PERF_COUNT_HW_CACHE_L1D = 0x0 + PERF_COUNT_HW_CACHE_L1I = 0x1 + PERF_COUNT_HW_CACHE_LL = 0x2 + PERF_COUNT_HW_CACHE_DTLB = 0x3 + PERF_COUNT_HW_CACHE_ITLB = 0x4 + PERF_COUNT_HW_CACHE_BPU = 0x5 + PERF_COUNT_HW_CACHE_NODE = 0x6 + + PERF_COUNT_HW_CACHE_OP_READ = 0x0 + PERF_COUNT_HW_CACHE_OP_WRITE = 0x1 + PERF_COUNT_HW_CACHE_OP_PREFETCH = 0x2 + + PERF_COUNT_HW_CACHE_RESULT_ACCESS = 0x0 + PERF_COUNT_HW_CACHE_RESULT_MISS = 0x1 + + PERF_COUNT_SW_CPU_CLOCK = 0x0 + PERF_COUNT_SW_TASK_CLOCK = 0x1 + PERF_COUNT_SW_PAGE_FAULTS = 0x2 + PERF_COUNT_SW_CONTEXT_SWITCHES = 0x3 + PERF_COUNT_SW_CPU_MIGRATIONS = 0x4 + PERF_COUNT_SW_PAGE_FAULTS_MIN = 0x5 + PERF_COUNT_SW_PAGE_FAULTS_MAJ = 0x6 + PERF_COUNT_SW_ALIGNMENT_FAULTS = 0x7 + PERF_COUNT_SW_EMULATION_FAULTS = 0x8 + PERF_COUNT_SW_DUMMY = 0x9 + + PERF_SAMPLE_IP = 0x1 + PERF_SAMPLE_TID = 0x2 + PERF_SAMPLE_TIME = 0x4 + PERF_SAMPLE_ADDR = 0x8 + PERF_SAMPLE_READ = 0x10 + PERF_SAMPLE_CALLCHAIN = 0x20 + PERF_SAMPLE_ID = 0x40 + PERF_SAMPLE_CPU = 0x80 + PERF_SAMPLE_PERIOD = 0x100 + PERF_SAMPLE_STREAM_ID = 0x200 + PERF_SAMPLE_RAW = 0x400 + PERF_SAMPLE_BRANCH_STACK = 0x800 + + PERF_SAMPLE_BRANCH_USER = 0x1 + PERF_SAMPLE_BRANCH_KERNEL = 0x2 + PERF_SAMPLE_BRANCH_HV = 0x4 + PERF_SAMPLE_BRANCH_ANY = 0x8 + PERF_SAMPLE_BRANCH_ANY_CALL = 0x10 + PERF_SAMPLE_BRANCH_ANY_RETURN = 0x20 + PERF_SAMPLE_BRANCH_IND_CALL = 0x40 + + PERF_FORMAT_TOTAL_TIME_ENABLED = 0x1 + PERF_FORMAT_TOTAL_TIME_RUNNING = 0x2 + PERF_FORMAT_ID = 0x4 + PERF_FORMAT_GROUP = 0x8 + + PERF_RECORD_MMAP = 0x1 + PERF_RECORD_LOST = 0x2 + PERF_RECORD_COMM = 0x3 + PERF_RECORD_EXIT = 0x4 + PERF_RECORD_THROTTLE = 0x5 + PERF_RECORD_UNTHROTTLE = 0x6 + PERF_RECORD_FORK = 0x7 + PERF_RECORD_READ = 0x8 + PERF_RECORD_SAMPLE = 0x9 + + PERF_CONTEXT_HV = -0x20 + PERF_CONTEXT_KERNEL = -0x80 + PERF_CONTEXT_USER = -0x200 + + PERF_CONTEXT_GUEST = -0x800 + PERF_CONTEXT_GUEST_KERNEL = -0x880 + PERF_CONTEXT_GUEST_USER = -0xa00 + + PERF_FLAG_FD_NO_GROUP = 0x1 + PERF_FLAG_FD_OUTPUT = 0x2 + PERF_FLAG_PID_CGROUP = 0x4 +) + +const ( + CBitFieldMaskBit0 = 0x1 + CBitFieldMaskBit1 = 0x2 + CBitFieldMaskBit2 = 0x4 + CBitFieldMaskBit3 = 0x8 + CBitFieldMaskBit4 = 0x10 + CBitFieldMaskBit5 = 0x20 + CBitFieldMaskBit6 = 0x40 + CBitFieldMaskBit7 = 0x80 + CBitFieldMaskBit8 = 0x100 + CBitFieldMaskBit9 = 0x200 + CBitFieldMaskBit10 = 0x400 + CBitFieldMaskBit11 = 0x800 + CBitFieldMaskBit12 = 0x1000 + CBitFieldMaskBit13 = 0x2000 + CBitFieldMaskBit14 = 0x4000 + CBitFieldMaskBit15 = 0x8000 + CBitFieldMaskBit16 = 0x10000 + CBitFieldMaskBit17 = 0x20000 + CBitFieldMaskBit18 = 0x40000 + CBitFieldMaskBit19 = 0x80000 + CBitFieldMaskBit20 = 0x100000 + CBitFieldMaskBit21 = 0x200000 + CBitFieldMaskBit22 = 0x400000 + CBitFieldMaskBit23 = 0x800000 + CBitFieldMaskBit24 = 0x1000000 + CBitFieldMaskBit25 = 0x2000000 + CBitFieldMaskBit26 = 0x4000000 + CBitFieldMaskBit27 = 0x8000000 + CBitFieldMaskBit28 = 0x10000000 + CBitFieldMaskBit29 = 0x20000000 + CBitFieldMaskBit30 = 0x40000000 + CBitFieldMaskBit31 = 0x80000000 + CBitFieldMaskBit32 = 0x100000000 + CBitFieldMaskBit33 = 0x200000000 + CBitFieldMaskBit34 = 0x400000000 + CBitFieldMaskBit35 = 0x800000000 + CBitFieldMaskBit36 = 0x1000000000 + CBitFieldMaskBit37 = 0x2000000000 + CBitFieldMaskBit38 = 0x4000000000 + CBitFieldMaskBit39 = 0x8000000000 + CBitFieldMaskBit40 = 0x10000000000 + CBitFieldMaskBit41 = 0x20000000000 + CBitFieldMaskBit42 = 0x40000000000 + CBitFieldMaskBit43 = 0x80000000000 + CBitFieldMaskBit44 = 0x100000000000 + CBitFieldMaskBit45 = 0x200000000000 + CBitFieldMaskBit46 = 0x400000000000 + CBitFieldMaskBit47 = 0x800000000000 + CBitFieldMaskBit48 = 0x1000000000000 + CBitFieldMaskBit49 = 0x2000000000000 + CBitFieldMaskBit50 = 0x4000000000000 + CBitFieldMaskBit51 = 0x8000000000000 + CBitFieldMaskBit52 = 0x10000000000000 + CBitFieldMaskBit53 = 0x20000000000000 + CBitFieldMaskBit54 = 0x40000000000000 + CBitFieldMaskBit55 = 0x80000000000000 + CBitFieldMaskBit56 = 0x100000000000000 + CBitFieldMaskBit57 = 0x200000000000000 + CBitFieldMaskBit58 = 0x400000000000000 + CBitFieldMaskBit59 = 0x800000000000000 + CBitFieldMaskBit60 = 0x1000000000000000 + CBitFieldMaskBit61 = 0x2000000000000000 + CBitFieldMaskBit62 = 0x4000000000000000 + CBitFieldMaskBit63 = 0x8000000000000000 +) + +type SockaddrStorage struct { + Family uint16 + _ [118]uint8 + _ uint64 +} + +type TCPMD5Sig struct { + Addr SockaddrStorage + Flags uint8 + Prefixlen uint8 + Keylen uint16 + _ uint32 + Key [80]uint8 +} + +type HDDriveCmdHdr struct { + Command uint8 + Number uint8 + Feature uint8 + Count uint8 +} + +type HDGeometry struct { + Heads uint8 + Sectors uint8 + Cylinders uint16 + _ [4]byte + Start uint64 +} + +type HDDriveID struct { + Config uint16 + Cyls uint16 + Reserved2 uint16 + Heads uint16 + Track_bytes uint16 + Sector_bytes uint16 + Sectors uint16 + Vendor0 uint16 + Vendor1 uint16 + Vendor2 uint16 + Serial_no [20]uint8 + Buf_type uint16 + Buf_size uint16 + Ecc_bytes uint16 + Fw_rev [8]uint8 + Model [40]uint8 + Max_multsect uint8 + Vendor3 uint8 + Dword_io uint16 + Vendor4 uint8 + Capability uint8 + Reserved50 uint16 + Vendor5 uint8 + TPIO uint8 + Vendor6 uint8 + TDMA uint8 + Field_valid uint16 + Cur_cyls uint16 + Cur_heads uint16 + Cur_sectors uint16 + Cur_capacity0 uint16 + Cur_capacity1 uint16 + Multsect uint8 + Multsect_valid uint8 + Lba_capacity uint32 + Dma_1word uint16 + Dma_mword uint16 + Eide_pio_modes uint16 + Eide_dma_min uint16 + Eide_dma_time uint16 + Eide_pio uint16 + Eide_pio_iordy uint16 + Words69_70 [2]uint16 + Words71_74 [4]uint16 + Queue_depth uint16 + Words76_79 [4]uint16 + Major_rev_num uint16 + Minor_rev_num uint16 + Command_set_1 uint16 + Command_set_2 uint16 + Cfsse uint16 + Cfs_enable_1 uint16 + Cfs_enable_2 uint16 + Csf_default uint16 + Dma_ultra uint16 + Trseuc uint16 + TrsEuc uint16 + CurAPMvalues uint16 + Mprc uint16 + Hw_config uint16 + Acoustic uint16 + Msrqs uint16 + Sxfert uint16 + Sal uint16 + Spg uint32 + Lba_capacity_2 uint64 + Words104_125 [22]uint16 + Last_lun uint16 + Word127 uint16 + Dlf uint16 + Csfo uint16 + Words130_155 [26]uint16 + Word156 uint16 + Words157_159 [3]uint16 + Cfa_power uint16 + Words161_175 [15]uint16 + Words176_205 [30]uint16 + Words206_254 [49]uint16 + Integrity_word uint16 +} + +type Statfs_t struct { + Type int64 + Bsize int64 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid + Namelen int64 + Frsize int64 + Flags int64 + Spare [4]int64 +} + +const ( + ST_MANDLOCK = 0x40 + ST_NOATIME = 0x400 + ST_NODEV = 0x4 + ST_NODIRATIME = 0x800 + ST_NOEXEC = 0x8 + ST_NOSUID = 0x2 + ST_RDONLY = 0x1 + ST_RELATIME = 0x1000 + ST_SYNCHRONOUS = 0x10 +) + +type TpacketHdr struct { + Status uint64 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 + _ [4]byte +} + +type Tpacket2Hdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Nsec uint32 + Vlan_tci uint16 + Vlan_tpid uint16 + _ [4]uint8 +} + +type Tpacket3Hdr struct { + Next_offset uint32 + Sec uint32 + Nsec uint32 + Snaplen uint32 + Len uint32 + Status uint32 + Mac uint16 + Net uint16 + Hv1 TpacketHdrVariant1 + _ [8]uint8 +} + +type TpacketHdrVariant1 struct { + Rxhash uint32 + Vlan_tci uint32 + Vlan_tpid uint16 + _ uint16 +} + +type TpacketBlockDesc struct { + Version uint32 + To_priv uint32 + Hdr [40]byte +} + +type TpacketReq struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 +} + +type TpacketReq3 struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 + Retire_blk_tov uint32 + Sizeof_priv uint32 + Feature_req_word uint32 +} + +type TpacketStats struct { + Packets uint32 + Drops uint32 +} + +type TpacketStatsV3 struct { + Packets uint32 + Drops uint32 + Freeze_q_cnt uint32 +} + +type TpacketAuxdata struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Vlan_tci uint16 + Vlan_tpid uint16 +} + +const ( + TPACKET_V1 = 0x0 + TPACKET_V2 = 0x1 + TPACKET_V3 = 0x2 +) + +const ( + SizeofTpacketHdr = 0x20 + SizeofTpacket2Hdr = 0x20 + SizeofTpacket3Hdr = 0x30 +) + +const ( + NF_INET_PRE_ROUTING = 0x0 + NF_INET_LOCAL_IN = 0x1 + NF_INET_FORWARD = 0x2 + NF_INET_LOCAL_OUT = 0x3 + NF_INET_POST_ROUTING = 0x4 + NF_INET_NUMHOOKS = 0x5 +) + +const ( + NF_NETDEV_INGRESS = 0x0 + NF_NETDEV_NUMHOOKS = 0x1 +) + +const ( + NFPROTO_UNSPEC = 0x0 + NFPROTO_INET = 0x1 + NFPROTO_IPV4 = 0x2 + NFPROTO_ARP = 0x3 + NFPROTO_NETDEV = 0x5 + NFPROTO_BRIDGE = 0x7 + NFPROTO_IPV6 = 0xa + NFPROTO_DECNET = 0xc + NFPROTO_NUMPROTO = 0xd +) + +type Nfgenmsg struct { + Nfgen_family uint8 + Version uint8 + Res_id uint16 +} + +const ( + NFNL_BATCH_UNSPEC = 0x0 + NFNL_BATCH_GENID = 0x1 +) + +const ( + NFT_REG_VERDICT = 0x0 + NFT_REG_1 = 0x1 + NFT_REG_2 = 0x2 + NFT_REG_3 = 0x3 + NFT_REG_4 = 0x4 + NFT_REG32_00 = 0x8 + NFT_REG32_01 = 0x9 + NFT_REG32_02 = 0xa + NFT_REG32_03 = 0xb + NFT_REG32_04 = 0xc + NFT_REG32_05 = 0xd + NFT_REG32_06 = 0xe + NFT_REG32_07 = 0xf + NFT_REG32_08 = 0x10 + NFT_REG32_09 = 0x11 + NFT_REG32_10 = 0x12 + NFT_REG32_11 = 0x13 + NFT_REG32_12 = 0x14 + NFT_REG32_13 = 0x15 + NFT_REG32_14 = 0x16 + NFT_REG32_15 = 0x17 + NFT_CONTINUE = -0x1 + NFT_BREAK = -0x2 + NFT_JUMP = -0x3 + NFT_GOTO = -0x4 + NFT_RETURN = -0x5 + NFT_MSG_NEWTABLE = 0x0 + NFT_MSG_GETTABLE = 0x1 + NFT_MSG_DELTABLE = 0x2 + NFT_MSG_NEWCHAIN = 0x3 + NFT_MSG_GETCHAIN = 0x4 + NFT_MSG_DELCHAIN = 0x5 + NFT_MSG_NEWRULE = 0x6 + NFT_MSG_GETRULE = 0x7 + NFT_MSG_DELRULE = 0x8 + NFT_MSG_NEWSET = 0x9 + NFT_MSG_GETSET = 0xa + NFT_MSG_DELSET = 0xb + NFT_MSG_NEWSETELEM = 0xc + NFT_MSG_GETSETELEM = 0xd + NFT_MSG_DELSETELEM = 0xe + NFT_MSG_NEWGEN = 0xf + NFT_MSG_GETGEN = 0x10 + NFT_MSG_TRACE = 0x11 + NFT_MSG_NEWOBJ = 0x12 + NFT_MSG_GETOBJ = 0x13 + NFT_MSG_DELOBJ = 0x14 + NFT_MSG_GETOBJ_RESET = 0x15 + NFT_MSG_MAX = 0x19 + NFTA_LIST_UNPEC = 0x0 + NFTA_LIST_ELEM = 0x1 + NFTA_HOOK_UNSPEC = 0x0 + NFTA_HOOK_HOOKNUM = 0x1 + NFTA_HOOK_PRIORITY = 0x2 + NFTA_HOOK_DEV = 0x3 + NFT_TABLE_F_DORMANT = 0x1 + NFTA_TABLE_UNSPEC = 0x0 + NFTA_TABLE_NAME = 0x1 + NFTA_TABLE_FLAGS = 0x2 + NFTA_TABLE_USE = 0x3 + NFTA_CHAIN_UNSPEC = 0x0 + NFTA_CHAIN_TABLE = 0x1 + NFTA_CHAIN_HANDLE = 0x2 + NFTA_CHAIN_NAME = 0x3 + NFTA_CHAIN_HOOK = 0x4 + NFTA_CHAIN_POLICY = 0x5 + NFTA_CHAIN_USE = 0x6 + NFTA_CHAIN_TYPE = 0x7 + NFTA_CHAIN_COUNTERS = 0x8 + NFTA_CHAIN_PAD = 0x9 + NFTA_RULE_UNSPEC = 0x0 + NFTA_RULE_TABLE = 0x1 + NFTA_RULE_CHAIN = 0x2 + NFTA_RULE_HANDLE = 0x3 + NFTA_RULE_EXPRESSIONS = 0x4 + NFTA_RULE_COMPAT = 0x5 + NFTA_RULE_POSITION = 0x6 + NFTA_RULE_USERDATA = 0x7 + NFTA_RULE_PAD = 0x8 + NFTA_RULE_ID = 0x9 + NFT_RULE_COMPAT_F_INV = 0x2 + NFT_RULE_COMPAT_F_MASK = 0x2 + NFTA_RULE_COMPAT_UNSPEC = 0x0 + NFTA_RULE_COMPAT_PROTO = 0x1 + NFTA_RULE_COMPAT_FLAGS = 0x2 + NFT_SET_ANONYMOUS = 0x1 + NFT_SET_CONSTANT = 0x2 + NFT_SET_INTERVAL = 0x4 + NFT_SET_MAP = 0x8 + NFT_SET_TIMEOUT = 0x10 + NFT_SET_EVAL = 0x20 + NFT_SET_OBJECT = 0x40 + NFT_SET_POL_PERFORMANCE = 0x0 + NFT_SET_POL_MEMORY = 0x1 + NFTA_SET_DESC_UNSPEC = 0x0 + NFTA_SET_DESC_SIZE = 0x1 + NFTA_SET_UNSPEC = 0x0 + NFTA_SET_TABLE = 0x1 + NFTA_SET_NAME = 0x2 + NFTA_SET_FLAGS = 0x3 + NFTA_SET_KEY_TYPE = 0x4 + NFTA_SET_KEY_LEN = 0x5 + NFTA_SET_DATA_TYPE = 0x6 + NFTA_SET_DATA_LEN = 0x7 + NFTA_SET_POLICY = 0x8 + NFTA_SET_DESC = 0x9 + NFTA_SET_ID = 0xa + NFTA_SET_TIMEOUT = 0xb + NFTA_SET_GC_INTERVAL = 0xc + NFTA_SET_USERDATA = 0xd + NFTA_SET_PAD = 0xe + NFTA_SET_OBJ_TYPE = 0xf + NFT_SET_ELEM_INTERVAL_END = 0x1 + NFTA_SET_ELEM_UNSPEC = 0x0 + NFTA_SET_ELEM_KEY = 0x1 + NFTA_SET_ELEM_DATA = 0x2 + NFTA_SET_ELEM_FLAGS = 0x3 + NFTA_SET_ELEM_TIMEOUT = 0x4 + NFTA_SET_ELEM_EXPIRATION = 0x5 + NFTA_SET_ELEM_USERDATA = 0x6 + NFTA_SET_ELEM_EXPR = 0x7 + NFTA_SET_ELEM_PAD = 0x8 + NFTA_SET_ELEM_OBJREF = 0x9 + NFTA_SET_ELEM_LIST_UNSPEC = 0x0 + NFTA_SET_ELEM_LIST_TABLE = 0x1 + NFTA_SET_ELEM_LIST_SET = 0x2 + NFTA_SET_ELEM_LIST_ELEMENTS = 0x3 + NFTA_SET_ELEM_LIST_SET_ID = 0x4 + NFT_DATA_VALUE = 0x0 + NFT_DATA_VERDICT = 0xffffff00 + NFTA_DATA_UNSPEC = 0x0 + NFTA_DATA_VALUE = 0x1 + NFTA_DATA_VERDICT = 0x2 + NFTA_VERDICT_UNSPEC = 0x0 + NFTA_VERDICT_CODE = 0x1 + NFTA_VERDICT_CHAIN = 0x2 + NFTA_EXPR_UNSPEC = 0x0 + NFTA_EXPR_NAME = 0x1 + NFTA_EXPR_DATA = 0x2 + NFTA_IMMEDIATE_UNSPEC = 0x0 + NFTA_IMMEDIATE_DREG = 0x1 + NFTA_IMMEDIATE_DATA = 0x2 + NFTA_BITWISE_UNSPEC = 0x0 + NFTA_BITWISE_SREG = 0x1 + NFTA_BITWISE_DREG = 0x2 + NFTA_BITWISE_LEN = 0x3 + NFTA_BITWISE_MASK = 0x4 + NFTA_BITWISE_XOR = 0x5 + NFT_BYTEORDER_NTOH = 0x0 + NFT_BYTEORDER_HTON = 0x1 + NFTA_BYTEORDER_UNSPEC = 0x0 + NFTA_BYTEORDER_SREG = 0x1 + NFTA_BYTEORDER_DREG = 0x2 + NFTA_BYTEORDER_OP = 0x3 + NFTA_BYTEORDER_LEN = 0x4 + NFTA_BYTEORDER_SIZE = 0x5 + NFT_CMP_EQ = 0x0 + NFT_CMP_NEQ = 0x1 + NFT_CMP_LT = 0x2 + NFT_CMP_LTE = 0x3 + NFT_CMP_GT = 0x4 + NFT_CMP_GTE = 0x5 + NFTA_CMP_UNSPEC = 0x0 + NFTA_CMP_SREG = 0x1 + NFTA_CMP_OP = 0x2 + NFTA_CMP_DATA = 0x3 + NFT_RANGE_EQ = 0x0 + NFT_RANGE_NEQ = 0x1 + NFTA_RANGE_UNSPEC = 0x0 + NFTA_RANGE_SREG = 0x1 + NFTA_RANGE_OP = 0x2 + NFTA_RANGE_FROM_DATA = 0x3 + NFTA_RANGE_TO_DATA = 0x4 + NFT_LOOKUP_F_INV = 0x1 + NFTA_LOOKUP_UNSPEC = 0x0 + NFTA_LOOKUP_SET = 0x1 + NFTA_LOOKUP_SREG = 0x2 + NFTA_LOOKUP_DREG = 0x3 + NFTA_LOOKUP_SET_ID = 0x4 + NFTA_LOOKUP_FLAGS = 0x5 + NFT_DYNSET_OP_ADD = 0x0 + NFT_DYNSET_OP_UPDATE = 0x1 + NFT_DYNSET_F_INV = 0x1 + NFTA_DYNSET_UNSPEC = 0x0 + NFTA_DYNSET_SET_NAME = 0x1 + NFTA_DYNSET_SET_ID = 0x2 + NFTA_DYNSET_OP = 0x3 + NFTA_DYNSET_SREG_KEY = 0x4 + NFTA_DYNSET_SREG_DATA = 0x5 + NFTA_DYNSET_TIMEOUT = 0x6 + NFTA_DYNSET_EXPR = 0x7 + NFTA_DYNSET_PAD = 0x8 + NFTA_DYNSET_FLAGS = 0x9 + NFT_PAYLOAD_LL_HEADER = 0x0 + NFT_PAYLOAD_NETWORK_HEADER = 0x1 + NFT_PAYLOAD_TRANSPORT_HEADER = 0x2 + NFT_PAYLOAD_CSUM_NONE = 0x0 + NFT_PAYLOAD_CSUM_INET = 0x1 + NFT_PAYLOAD_L4CSUM_PSEUDOHDR = 0x1 + NFTA_PAYLOAD_UNSPEC = 0x0 + NFTA_PAYLOAD_DREG = 0x1 + NFTA_PAYLOAD_BASE = 0x2 + NFTA_PAYLOAD_OFFSET = 0x3 + NFTA_PAYLOAD_LEN = 0x4 + NFTA_PAYLOAD_SREG = 0x5 + NFTA_PAYLOAD_CSUM_TYPE = 0x6 + NFTA_PAYLOAD_CSUM_OFFSET = 0x7 + NFTA_PAYLOAD_CSUM_FLAGS = 0x8 + NFT_EXTHDR_F_PRESENT = 0x1 + NFT_EXTHDR_OP_IPV6 = 0x0 + NFT_EXTHDR_OP_TCPOPT = 0x1 + NFTA_EXTHDR_UNSPEC = 0x0 + NFTA_EXTHDR_DREG = 0x1 + NFTA_EXTHDR_TYPE = 0x2 + NFTA_EXTHDR_OFFSET = 0x3 + NFTA_EXTHDR_LEN = 0x4 + NFTA_EXTHDR_FLAGS = 0x5 + NFTA_EXTHDR_OP = 0x6 + NFTA_EXTHDR_SREG = 0x7 + NFT_META_LEN = 0x0 + NFT_META_PROTOCOL = 0x1 + NFT_META_PRIORITY = 0x2 + NFT_META_MARK = 0x3 + NFT_META_IIF = 0x4 + NFT_META_OIF = 0x5 + NFT_META_IIFNAME = 0x6 + NFT_META_OIFNAME = 0x7 + NFT_META_IIFTYPE = 0x8 + NFT_META_OIFTYPE = 0x9 + NFT_META_SKUID = 0xa + NFT_META_SKGID = 0xb + NFT_META_NFTRACE = 0xc + NFT_META_RTCLASSID = 0xd + NFT_META_SECMARK = 0xe + NFT_META_NFPROTO = 0xf + NFT_META_L4PROTO = 0x10 + NFT_META_BRI_IIFNAME = 0x11 + NFT_META_BRI_OIFNAME = 0x12 + NFT_META_PKTTYPE = 0x13 + NFT_META_CPU = 0x14 + NFT_META_IIFGROUP = 0x15 + NFT_META_OIFGROUP = 0x16 + NFT_META_CGROUP = 0x17 + NFT_META_PRANDOM = 0x18 + NFT_RT_CLASSID = 0x0 + NFT_RT_NEXTHOP4 = 0x1 + NFT_RT_NEXTHOP6 = 0x2 + NFT_RT_TCPMSS = 0x3 + NFT_HASH_JENKINS = 0x0 + NFT_HASH_SYM = 0x1 + NFTA_HASH_UNSPEC = 0x0 + NFTA_HASH_SREG = 0x1 + NFTA_HASH_DREG = 0x2 + NFTA_HASH_LEN = 0x3 + NFTA_HASH_MODULUS = 0x4 + NFTA_HASH_SEED = 0x5 + NFTA_HASH_OFFSET = 0x6 + NFTA_HASH_TYPE = 0x7 + NFTA_META_UNSPEC = 0x0 + NFTA_META_DREG = 0x1 + NFTA_META_KEY = 0x2 + NFTA_META_SREG = 0x3 + NFTA_RT_UNSPEC = 0x0 + NFTA_RT_DREG = 0x1 + NFTA_RT_KEY = 0x2 + NFT_CT_STATE = 0x0 + NFT_CT_DIRECTION = 0x1 + NFT_CT_STATUS = 0x2 + NFT_CT_MARK = 0x3 + NFT_CT_SECMARK = 0x4 + NFT_CT_EXPIRATION = 0x5 + NFT_CT_HELPER = 0x6 + NFT_CT_L3PROTOCOL = 0x7 + NFT_CT_SRC = 0x8 + NFT_CT_DST = 0x9 + NFT_CT_PROTOCOL = 0xa + NFT_CT_PROTO_SRC = 0xb + NFT_CT_PROTO_DST = 0xc + NFT_CT_LABELS = 0xd + NFT_CT_PKTS = 0xe + NFT_CT_BYTES = 0xf + NFT_CT_AVGPKT = 0x10 + NFT_CT_ZONE = 0x11 + NFT_CT_EVENTMASK = 0x12 + NFTA_CT_UNSPEC = 0x0 + NFTA_CT_DREG = 0x1 + NFTA_CT_KEY = 0x2 + NFTA_CT_DIRECTION = 0x3 + NFTA_CT_SREG = 0x4 + NFT_LIMIT_PKTS = 0x0 + NFT_LIMIT_PKT_BYTES = 0x1 + NFT_LIMIT_F_INV = 0x1 + NFTA_LIMIT_UNSPEC = 0x0 + NFTA_LIMIT_RATE = 0x1 + NFTA_LIMIT_UNIT = 0x2 + NFTA_LIMIT_BURST = 0x3 + NFTA_LIMIT_TYPE = 0x4 + NFTA_LIMIT_FLAGS = 0x5 + NFTA_LIMIT_PAD = 0x6 + NFTA_COUNTER_UNSPEC = 0x0 + NFTA_COUNTER_BYTES = 0x1 + NFTA_COUNTER_PACKETS = 0x2 + NFTA_COUNTER_PAD = 0x3 + NFTA_LOG_UNSPEC = 0x0 + NFTA_LOG_GROUP = 0x1 + NFTA_LOG_PREFIX = 0x2 + NFTA_LOG_SNAPLEN = 0x3 + NFTA_LOG_QTHRESHOLD = 0x4 + NFTA_LOG_LEVEL = 0x5 + NFTA_LOG_FLAGS = 0x6 + NFTA_QUEUE_UNSPEC = 0x0 + NFTA_QUEUE_NUM = 0x1 + NFTA_QUEUE_TOTAL = 0x2 + NFTA_QUEUE_FLAGS = 0x3 + NFTA_QUEUE_SREG_QNUM = 0x4 + NFT_QUOTA_F_INV = 0x1 + NFT_QUOTA_F_DEPLETED = 0x2 + NFTA_QUOTA_UNSPEC = 0x0 + NFTA_QUOTA_BYTES = 0x1 + NFTA_QUOTA_FLAGS = 0x2 + NFTA_QUOTA_PAD = 0x3 + NFTA_QUOTA_CONSUMED = 0x4 + NFT_REJECT_ICMP_UNREACH = 0x0 + NFT_REJECT_TCP_RST = 0x1 + NFT_REJECT_ICMPX_UNREACH = 0x2 + NFT_REJECT_ICMPX_NO_ROUTE = 0x0 + NFT_REJECT_ICMPX_PORT_UNREACH = 0x1 + NFT_REJECT_ICMPX_HOST_UNREACH = 0x2 + NFT_REJECT_ICMPX_ADMIN_PROHIBITED = 0x3 + NFTA_REJECT_UNSPEC = 0x0 + NFTA_REJECT_TYPE = 0x1 + NFTA_REJECT_ICMP_CODE = 0x2 + NFT_NAT_SNAT = 0x0 + NFT_NAT_DNAT = 0x1 + NFTA_NAT_UNSPEC = 0x0 + NFTA_NAT_TYPE = 0x1 + NFTA_NAT_FAMILY = 0x2 + NFTA_NAT_REG_ADDR_MIN = 0x3 + NFTA_NAT_REG_ADDR_MAX = 0x4 + NFTA_NAT_REG_PROTO_MIN = 0x5 + NFTA_NAT_REG_PROTO_MAX = 0x6 + NFTA_NAT_FLAGS = 0x7 + NFTA_MASQ_UNSPEC = 0x0 + NFTA_MASQ_FLAGS = 0x1 + NFTA_MASQ_REG_PROTO_MIN = 0x2 + NFTA_MASQ_REG_PROTO_MAX = 0x3 + NFTA_REDIR_UNSPEC = 0x0 + NFTA_REDIR_REG_PROTO_MIN = 0x1 + NFTA_REDIR_REG_PROTO_MAX = 0x2 + NFTA_REDIR_FLAGS = 0x3 + NFTA_DUP_UNSPEC = 0x0 + NFTA_DUP_SREG_ADDR = 0x1 + NFTA_DUP_SREG_DEV = 0x2 + NFTA_FWD_UNSPEC = 0x0 + NFTA_FWD_SREG_DEV = 0x1 + NFTA_OBJREF_UNSPEC = 0x0 + NFTA_OBJREF_IMM_TYPE = 0x1 + NFTA_OBJREF_IMM_NAME = 0x2 + NFTA_OBJREF_SET_SREG = 0x3 + NFTA_OBJREF_SET_NAME = 0x4 + NFTA_OBJREF_SET_ID = 0x5 + NFTA_GEN_UNSPEC = 0x0 + NFTA_GEN_ID = 0x1 + NFTA_GEN_PROC_PID = 0x2 + NFTA_GEN_PROC_NAME = 0x3 + NFTA_FIB_UNSPEC = 0x0 + NFTA_FIB_DREG = 0x1 + NFTA_FIB_RESULT = 0x2 + NFTA_FIB_FLAGS = 0x3 + NFT_FIB_RESULT_UNSPEC = 0x0 + NFT_FIB_RESULT_OIF = 0x1 + NFT_FIB_RESULT_OIFNAME = 0x2 + NFT_FIB_RESULT_ADDRTYPE = 0x3 + NFTA_FIB_F_SADDR = 0x1 + NFTA_FIB_F_DADDR = 0x2 + NFTA_FIB_F_MARK = 0x4 + NFTA_FIB_F_IIF = 0x8 + NFTA_FIB_F_OIF = 0x10 + NFTA_FIB_F_PRESENT = 0x20 + NFTA_CT_HELPER_UNSPEC = 0x0 + NFTA_CT_HELPER_NAME = 0x1 + NFTA_CT_HELPER_L3PROTO = 0x2 + NFTA_CT_HELPER_L4PROTO = 0x3 + NFTA_OBJ_UNSPEC = 0x0 + NFTA_OBJ_TABLE = 0x1 + NFTA_OBJ_NAME = 0x2 + NFTA_OBJ_TYPE = 0x3 + NFTA_OBJ_DATA = 0x4 + NFTA_OBJ_USE = 0x5 + NFTA_TRACE_UNSPEC = 0x0 + NFTA_TRACE_TABLE = 0x1 + NFTA_TRACE_CHAIN = 0x2 + NFTA_TRACE_RULE_HANDLE = 0x3 + NFTA_TRACE_TYPE = 0x4 + NFTA_TRACE_VERDICT = 0x5 + NFTA_TRACE_ID = 0x6 + NFTA_TRACE_LL_HEADER = 0x7 + NFTA_TRACE_NETWORK_HEADER = 0x8 + NFTA_TRACE_TRANSPORT_HEADER = 0x9 + NFTA_TRACE_IIF = 0xa + NFTA_TRACE_IIFTYPE = 0xb + NFTA_TRACE_OIF = 0xc + NFTA_TRACE_OIFTYPE = 0xd + NFTA_TRACE_MARK = 0xe + NFTA_TRACE_NFPROTO = 0xf + NFTA_TRACE_POLICY = 0x10 + NFTA_TRACE_PAD = 0x11 + NFT_TRACETYPE_UNSPEC = 0x0 + NFT_TRACETYPE_POLICY = 0x1 + NFT_TRACETYPE_RETURN = 0x2 + NFT_TRACETYPE_RULE = 0x3 + NFTA_NG_UNSPEC = 0x0 + NFTA_NG_DREG = 0x1 + NFTA_NG_MODULUS = 0x2 + NFTA_NG_TYPE = 0x3 + NFTA_NG_OFFSET = 0x4 + NFT_NG_INCREMENTAL = 0x0 + NFT_NG_RANDOM = 0x1 +) + +type RTCTime struct { + Sec int32 + Min int32 + Hour int32 + Mday int32 + Mon int32 + Year int32 + Wday int32 + Yday int32 + Isdst int32 +} + +type RTCWkAlrm struct { + Enabled uint8 + Pending uint8 + _ [2]byte + Time RTCTime +} + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int64 +} + +type BlkpgIoctlArg struct { + Op int32 + Flags int32 + Datalen int32 + _ [4]byte + Data *byte +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x1269 + BLKPG_ADD_PARTITION = 0x1 + BLKPG_DEL_PARTITION = 0x2 + BLKPG_RESIZE_PARTITION = 0x3 +) + +const ( + NETNSA_NONE = 0x0 + NETNSA_NSID = 0x1 + NETNSA_PID = 0x2 + NETNSA_FD = 0x3 +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go b/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go index 932b655f..0c790546 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go @@ -445,6 +445,7 @@ const ( IFLA_ADDRESS = 0x1 IFLA_BROADCAST = 0x2 IFLA_IFNAME = 0x3 + IFLA_INFO_KIND = 0x1 IFLA_MTU = 0x4 IFLA_LINK = 0x5 IFLA_QDISC = 0x6 @@ -513,6 +514,13 @@ const ( RTA_FLOW = 0xb RTA_CACHEINFO = 0xc RTA_TABLE = 0xf + RTA_MARK = 0x10 + RTA_MFC_STATS = 0x11 + RTA_VIA = 0x12 + RTA_NEWDST = 0x13 + RTA_PREF = 0x14 + RTA_ENCAP_TYPE = 0x15 + RTA_ENCAP = 0x16 RTN_UNSPEC = 0x0 RTN_UNICAST = 0x1 RTN_LOCAL = 0x2 @@ -1878,3 +1886,34 @@ type RTCPLLInfo struct { Negmult int32 Clock int64 } + +type BlkpgIoctlArg struct { + Op int32 + Flags int32 + Datalen int32 + _ [4]byte + Data *byte +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x1269 + BLKPG_ADD_PARTITION = 0x1 + BLKPG_DEL_PARTITION = 0x2 + BLKPG_RESIZE_PARTITION = 0x3 +) + +const ( + NETNSA_NONE = 0x0 + NETNSA_NSID = 0x1 + NETNSA_PID = 0x2 + NETNSA_FD = 0x3 +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go b/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go index d5a2d75d..231f4e8e 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go +++ b/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go @@ -56,23 +56,6 @@ type Rlimit struct { type _Gid_t uint32 -const ( - S_IFMT = 0xf000 - S_IFIFO = 0x1000 - S_IFCHR = 0x2000 - S_IFDIR = 0x4000 - S_IFBLK = 0x6000 - S_IFREG = 0x8000 - S_IFLNK = 0xa000 - S_IFSOCK = 0xc000 - S_ISUID = 0x800 - S_ISGID = 0x400 - S_ISVTX = 0x200 - S_IRUSR = 0x100 - S_IWUSR = 0x80 - S_IXUSR = 0x40 -) - type Stat_t struct { Mode uint32 Dev int32 diff --git a/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go index 5a9c8184..bb2c4488 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go @@ -56,23 +56,6 @@ type Rlimit struct { type _Gid_t uint32 -const ( - S_IFMT = 0xf000 - S_IFIFO = 0x1000 - S_IFCHR = 0x2000 - S_IFDIR = 0x4000 - S_IFBLK = 0x6000 - S_IFREG = 0x8000 - S_IFLNK = 0xa000 - S_IFSOCK = 0xc000 - S_ISUID = 0x800 - S_ISGID = 0x400 - S_ISVTX = 0x200 - S_IRUSR = 0x100 - S_IWUSR = 0x80 - S_IXUSR = 0x40 -) - type Stat_t struct { Mode uint32 Dev int32 diff --git a/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go b/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go index e35b13b6..941367ca 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go @@ -56,23 +56,6 @@ type Rlimit struct { type _Gid_t uint32 -const ( - S_IFMT = 0xf000 - S_IFIFO = 0x1000 - S_IFCHR = 0x2000 - S_IFDIR = 0x4000 - S_IFBLK = 0x6000 - S_IFREG = 0x8000 - S_IFLNK = 0xa000 - S_IFSOCK = 0xc000 - S_ISUID = 0x800 - S_ISGID = 0x400 - S_ISVTX = 0x200 - S_IRUSR = 0x100 - S_IWUSR = 0x80 - S_IXUSR = 0x40 -) - type Stat_t struct { Mode uint32 Dev int32 diff --git a/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go index 2248598d..0543e1a4 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go @@ -75,23 +75,6 @@ type Rlimit struct { type _Gid_t uint32 -const ( - S_IFMT = 0xf000 - S_IFIFO = 0x1000 - S_IFCHR = 0x2000 - S_IFDIR = 0x4000 - S_IFBLK = 0x6000 - S_IFREG = 0x8000 - S_IFLNK = 0xa000 - S_IFSOCK = 0xc000 - S_ISUID = 0x800 - S_ISGID = 0x400 - S_ISVTX = 0x200 - S_IRUSR = 0x100 - S_IWUSR = 0x80 - S_IXUSR = 0x40 -) - type Stat_t struct { Dev uint64 Ino uint64 diff --git a/vendor/golang.org/x/sys/windows/aliases.go b/vendor/golang.org/x/sys/windows/aliases.go new file mode 100644 index 00000000..af3af60d --- /dev/null +++ b/vendor/golang.org/x/sys/windows/aliases.go @@ -0,0 +1,13 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build windows +// +build go1.9 + +package windows + +import "syscall" + +type Errno = syscall.Errno +type SysProcAttr = syscall.SysProcAttr diff --git a/vendor/golang.org/x/sys/windows/syscall_windows.go b/vendor/golang.org/x/sys/windows/syscall_windows.go index 1e9f4bb4..8a00b71f 100644 --- a/vendor/golang.org/x/sys/windows/syscall_windows.go +++ b/vendor/golang.org/x/sys/windows/syscall_windows.go @@ -112,12 +112,14 @@ func Getpagesize() int { return 4096 } // NewCallback converts a Go function to a function pointer conforming to the stdcall calling convention. // This is useful when interoperating with Windows code requiring callbacks. +// The argument is expected to be a function with with one uintptr-sized result. The function must not have arguments with size larger than the size of uintptr. func NewCallback(fn interface{}) uintptr { return syscall.NewCallback(fn) } // NewCallbackCDecl converts a Go function to a function pointer conforming to the cdecl calling convention. // This is useful when interoperating with Windows code requiring callbacks. +// The argument is expected to be a function with with one uintptr-sized result. The function must not have arguments with size larger than the size of uintptr. func NewCallbackCDecl(fn interface{}) uintptr { return syscall.NewCallbackCDecl(fn) } @@ -653,7 +655,7 @@ type RawSockaddr struct { type RawSockaddrAny struct { Addr RawSockaddr - Pad [96]int8 + Pad [100]int8 } type Sockaddr interface { @@ -702,19 +704,69 @@ func (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, int32, error) { return unsafe.Pointer(&sa.raw), int32(unsafe.Sizeof(sa.raw)), nil } +type RawSockaddrUnix struct { + Family uint16 + Path [UNIX_PATH_MAX]int8 +} + type SockaddrUnix struct { Name string + raw RawSockaddrUnix } func (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, int32, error) { - // TODO(brainman): implement SockaddrUnix.sockaddr() - return nil, 0, syscall.EWINDOWS + name := sa.Name + n := len(name) + if n > len(sa.raw.Path) { + return nil, 0, syscall.EINVAL + } + if n == len(sa.raw.Path) && name[0] != '@' { + return nil, 0, syscall.EINVAL + } + sa.raw.Family = AF_UNIX + for i := 0; i < n; i++ { + sa.raw.Path[i] = int8(name[i]) + } + // length is family (uint16), name, NUL. + sl := int32(2) + if n > 0 { + sl += int32(n) + 1 + } + if sa.raw.Path[0] == '@' { + sa.raw.Path[0] = 0 + // Don't count trailing NUL for abstract address. + sl-- + } + + return unsafe.Pointer(&sa.raw), sl, nil } func (rsa *RawSockaddrAny) Sockaddr() (Sockaddr, error) { switch rsa.Addr.Family { case AF_UNIX: - return nil, syscall.EWINDOWS + pp := (*RawSockaddrUnix)(unsafe.Pointer(rsa)) + sa := new(SockaddrUnix) + if pp.Path[0] == 0 { + // "Abstract" Unix domain socket. + // Rewrite leading NUL as @ for textual display. + // (This is the standard convention.) + // Not friendly to overwrite in place, + // but the callers below don't care. + pp.Path[0] = '@' + } + + // Assume path ends at NUL. + // This is not technically the Linux semantics for + // abstract Unix domain sockets--they are supposed + // to be uninterpreted fixed-size binary blobs--but + // everyone uses this convention. + n := 0 + for n < len(pp.Path) && pp.Path[n] != 0 { + n++ + } + bytes := (*[10000]byte)(unsafe.Pointer(&pp.Path[0]))[0:n] + sa.Name = string(bytes) + return sa, nil case AF_INET: pp := (*RawSockaddrInet4)(unsafe.Pointer(rsa)) diff --git a/vendor/golang.org/x/sys/windows/types_windows.go b/vendor/golang.org/x/sys/windows/types_windows.go index 7d2a6794..141ca81b 100644 --- a/vendor/golang.org/x/sys/windows/types_windows.go +++ b/vendor/golang.org/x/sys/windows/types_windows.go @@ -270,15 +270,87 @@ const ( USAGE_MATCH_TYPE_AND = 0 USAGE_MATCH_TYPE_OR = 1 + /* msgAndCertEncodingType values for CertOpenStore function */ X509_ASN_ENCODING = 0x00000001 PKCS_7_ASN_ENCODING = 0x00010000 - CERT_STORE_PROV_MEMORY = 2 - - CERT_STORE_ADD_ALWAYS = 4 + /* storeProvider values for CertOpenStore function */ + CERT_STORE_PROV_MSG = 1 + CERT_STORE_PROV_MEMORY = 2 + CERT_STORE_PROV_FILE = 3 + CERT_STORE_PROV_REG = 4 + CERT_STORE_PROV_PKCS7 = 5 + CERT_STORE_PROV_SERIALIZED = 6 + CERT_STORE_PROV_FILENAME_A = 7 + CERT_STORE_PROV_FILENAME_W = 8 + CERT_STORE_PROV_FILENAME = CERT_STORE_PROV_FILENAME_W + CERT_STORE_PROV_SYSTEM_A = 9 + CERT_STORE_PROV_SYSTEM_W = 10 + CERT_STORE_PROV_SYSTEM = CERT_STORE_PROV_SYSTEM_W + CERT_STORE_PROV_COLLECTION = 11 + CERT_STORE_PROV_SYSTEM_REGISTRY_A = 12 + CERT_STORE_PROV_SYSTEM_REGISTRY_W = 13 + CERT_STORE_PROV_SYSTEM_REGISTRY = CERT_STORE_PROV_SYSTEM_REGISTRY_W + CERT_STORE_PROV_PHYSICAL_W = 14 + CERT_STORE_PROV_PHYSICAL = CERT_STORE_PROV_PHYSICAL_W + CERT_STORE_PROV_SMART_CARD_W = 15 + CERT_STORE_PROV_SMART_CARD = CERT_STORE_PROV_SMART_CARD_W + CERT_STORE_PROV_LDAP_W = 16 + CERT_STORE_PROV_LDAP = CERT_STORE_PROV_LDAP_W + CERT_STORE_PROV_PKCS12 = 17 + /* store characteristics (low WORD of flag) for CertOpenStore function */ + CERT_STORE_NO_CRYPT_RELEASE_FLAG = 0x00000001 + CERT_STORE_SET_LOCALIZED_NAME_FLAG = 0x00000002 CERT_STORE_DEFER_CLOSE_UNTIL_LAST_FREE_FLAG = 0x00000004 + CERT_STORE_DELETE_FLAG = 0x00000010 + CERT_STORE_UNSAFE_PHYSICAL_FLAG = 0x00000020 + CERT_STORE_SHARE_STORE_FLAG = 0x00000040 + CERT_STORE_SHARE_CONTEXT_FLAG = 0x00000080 + CERT_STORE_MANIFOLD_FLAG = 0x00000100 + CERT_STORE_ENUM_ARCHIVED_FLAG = 0x00000200 + CERT_STORE_UPDATE_KEYID_FLAG = 0x00000400 + CERT_STORE_BACKUP_RESTORE_FLAG = 0x00000800 + CERT_STORE_MAXIMUM_ALLOWED_FLAG = 0x00001000 + CERT_STORE_CREATE_NEW_FLAG = 0x00002000 + CERT_STORE_OPEN_EXISTING_FLAG = 0x00004000 + CERT_STORE_READONLY_FLAG = 0x00008000 + /* store locations (high WORD of flag) for CertOpenStore function */ + CERT_SYSTEM_STORE_CURRENT_USER = 0x00010000 + CERT_SYSTEM_STORE_LOCAL_MACHINE = 0x00020000 + CERT_SYSTEM_STORE_CURRENT_SERVICE = 0x00040000 + CERT_SYSTEM_STORE_SERVICES = 0x00050000 + CERT_SYSTEM_STORE_USERS = 0x00060000 + CERT_SYSTEM_STORE_CURRENT_USER_GROUP_POLICY = 0x00070000 + CERT_SYSTEM_STORE_LOCAL_MACHINE_GROUP_POLICY = 0x00080000 + CERT_SYSTEM_STORE_LOCAL_MACHINE_ENTERPRISE = 0x00090000 + CERT_SYSTEM_STORE_UNPROTECTED_FLAG = 0x40000000 + CERT_SYSTEM_STORE_RELOCATE_FLAG = 0x80000000 + + /* Miscellaneous high-WORD flags for CertOpenStore function */ + CERT_REGISTRY_STORE_REMOTE_FLAG = 0x00010000 + CERT_REGISTRY_STORE_SERIALIZED_FLAG = 0x00020000 + CERT_REGISTRY_STORE_ROAMING_FLAG = 0x00040000 + CERT_REGISTRY_STORE_MY_IE_DIRTY_FLAG = 0x00080000 + CERT_REGISTRY_STORE_LM_GPT_FLAG = 0x01000000 + CERT_REGISTRY_STORE_CLIENT_GPT_FLAG = 0x80000000 + CERT_FILE_STORE_COMMIT_ENABLE_FLAG = 0x00010000 + CERT_LDAP_STORE_SIGN_FLAG = 0x00010000 + CERT_LDAP_STORE_AREC_EXCLUSIVE_FLAG = 0x00020000 + CERT_LDAP_STORE_OPENED_FLAG = 0x00040000 + CERT_LDAP_STORE_UNBIND_FLAG = 0x00080000 + + /* addDisposition values for CertAddCertificateContextToStore function */ + CERT_STORE_ADD_NEW = 1 + CERT_STORE_ADD_USE_EXISTING = 2 + CERT_STORE_ADD_REPLACE_EXISTING = 3 + CERT_STORE_ADD_ALWAYS = 4 + CERT_STORE_ADD_REPLACE_EXISTING_INHERIT_PROPERTIES = 5 + CERT_STORE_ADD_NEWER = 6 + CERT_STORE_ADD_NEWER_INHERIT_PROPERTIES = 7 + + /* ErrorStatus values for CertTrustStatus struct */ CERT_TRUST_NO_ERROR = 0x00000000 CERT_TRUST_IS_NOT_TIME_VALID = 0x00000001 CERT_TRUST_IS_REVOKED = 0x00000004 @@ -295,11 +367,31 @@ const ( CERT_TRUST_HAS_NOT_DEFINED_NAME_CONSTRAINT = 0x00002000 CERT_TRUST_HAS_NOT_PERMITTED_NAME_CONSTRAINT = 0x00004000 CERT_TRUST_HAS_EXCLUDED_NAME_CONSTRAINT = 0x00008000 + CERT_TRUST_IS_PARTIAL_CHAIN = 0x00010000 + CERT_TRUST_CTL_IS_NOT_TIME_VALID = 0x00020000 + CERT_TRUST_CTL_IS_NOT_SIGNATURE_VALID = 0x00040000 + CERT_TRUST_CTL_IS_NOT_VALID_FOR_USAGE = 0x00080000 + CERT_TRUST_HAS_WEAK_SIGNATURE = 0x00100000 CERT_TRUST_IS_OFFLINE_REVOCATION = 0x01000000 CERT_TRUST_NO_ISSUANCE_CHAIN_POLICY = 0x02000000 CERT_TRUST_IS_EXPLICIT_DISTRUST = 0x04000000 CERT_TRUST_HAS_NOT_SUPPORTED_CRITICAL_EXT = 0x08000000 + /* InfoStatus values for CertTrustStatus struct */ + CERT_TRUST_HAS_EXACT_MATCH_ISSUER = 0x00000001 + CERT_TRUST_HAS_KEY_MATCH_ISSUER = 0x00000002 + CERT_TRUST_HAS_NAME_MATCH_ISSUER = 0x00000004 + CERT_TRUST_IS_SELF_SIGNED = 0x00000008 + CERT_TRUST_HAS_PREFERRED_ISSUER = 0x00000100 + CERT_TRUST_HAS_ISSUANCE_CHAIN_POLICY = 0x00000400 + CERT_TRUST_HAS_VALID_NAME_CONSTRAINTS = 0x00000400 + CERT_TRUST_IS_PEER_TRUSTED = 0x00000800 + CERT_TRUST_HAS_CRL_VALIDITY_EXTENDED = 0x00001000 + CERT_TRUST_IS_FROM_EXCLUSIVE_TRUST_STORE = 0x00002000 + CERT_TRUST_IS_CA_TRUSTED = 0x00004000 + CERT_TRUST_IS_COMPLEX_CHAIN = 0x00010000 + + /* policyOID values for CertVerifyCertificateChainPolicy function */ CERT_CHAIN_POLICY_BASE = 1 CERT_CHAIN_POLICY_AUTHENTICODE = 2 CERT_CHAIN_POLICY_AUTHENTICODE_TS = 3 @@ -308,6 +400,7 @@ const ( CERT_CHAIN_POLICY_NT_AUTH = 6 CERT_CHAIN_POLICY_MICROSOFT_ROOT = 7 CERT_CHAIN_POLICY_EV = 8 + CERT_CHAIN_POLICY_SSL_F12 = 9 CERT_E_EXPIRED = 0x800B0101 CERT_E_ROLE = 0x800B0103 @@ -315,8 +408,16 @@ const ( CERT_E_UNTRUSTEDROOT = 0x800B0109 CERT_E_CN_NO_MATCH = 0x800B010F + /* AuthType values for SSLExtraCertChainPolicyPara struct */ AUTHTYPE_CLIENT = 1 AUTHTYPE_SERVER = 2 + + /* Checks values for SSLExtraCertChainPolicyPara struct */ + SECURITY_FLAG_IGNORE_REVOCATION = 0x00000080 + SECURITY_FLAG_IGNORE_UNKNOWN_CA = 0x00000100 + SECURITY_FLAG_IGNORE_WRONG_USAGE = 0x00000200 + SECURITY_FLAG_IGNORE_CERT_CN_INVALID = 0x00001000 + SECURITY_FLAG_IGNORE_CERT_DATE_INVALID = 0x00002000 ) var ( @@ -1352,7 +1453,7 @@ type SmallRect struct { Bottom int16 } -// Used with GetConsoleScreenBuffer to retreive information about a console +// Used with GetConsoleScreenBuffer to retrieve information about a console // screen buffer. See // https://docs.microsoft.com/en-us/windows/console/console-screen-buffer-info-str // for details. @@ -1364,3 +1465,5 @@ type ConsoleScreenBufferInfo struct { Window SmallRect MaximumWindowSize Coord } + +const UNIX_PATH_MAX = 108 // defined in afunix.h diff --git a/vendor/google.golang.org/genproto/googleapis/api/annotations/annotations.pb.go b/vendor/google.golang.org/genproto/googleapis/api/annotations/annotations.pb.go index c5a54b3d..7e9e63c4 100644 --- a/vendor/google.golang.org/genproto/googleapis/api/annotations/annotations.pb.go +++ b/vendor/google.golang.org/genproto/googleapis/api/annotations/annotations.pb.go @@ -1,12 +1,14 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // source: google/api/annotations.proto -package annotations // import "google.golang.org/genproto/googleapis/api/annotations" +package annotations -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import descriptor "github.com/golang/protobuf/protoc-gen-go/descriptor" +import ( + fmt "fmt" + proto "github.com/golang/protobuf/proto" + descriptor "github.com/golang/protobuf/protoc-gen-go/descriptor" + math "math" +) // Reference imports to suppress errors if they are not otherwise used. var _ = proto.Marshal @@ -32,11 +34,9 @@ func init() { proto.RegisterExtension(E_Http) } -func init() { - proto.RegisterFile("google/api/annotations.proto", fileDescriptor_annotations_7782c41cc734273a) -} +func init() { proto.RegisterFile("google/api/annotations.proto", fileDescriptor_c591c5aa9fb79aab) } -var fileDescriptor_annotations_7782c41cc734273a = []byte{ +var fileDescriptor_c591c5aa9fb79aab = []byte{ // 208 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x49, 0xcf, 0xcf, 0x4f, 0xcf, 0x49, 0xd5, 0x4f, 0x2c, 0xc8, 0xd4, 0x4f, 0xcc, 0xcb, 0xcb, 0x2f, 0x49, 0x2c, 0xc9, 0xcc, diff --git a/vendor/google.golang.org/genproto/googleapis/api/annotations/http.pb.go b/vendor/google.golang.org/genproto/googleapis/api/annotations/http.pb.go index 9d57e058..0408184b 100644 --- a/vendor/google.golang.org/genproto/googleapis/api/annotations/http.pb.go +++ b/vendor/google.golang.org/genproto/googleapis/api/annotations/http.pb.go @@ -1,11 +1,13 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // source: google/api/http.proto -package annotations // import "google.golang.org/genproto/googleapis/api/annotations" +package annotations -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" +import ( + fmt "fmt" + proto "github.com/golang/protobuf/proto" + math "math" +) // Reference imports to suppress errors if they are not otherwise used. var _ = proto.Marshal @@ -42,7 +44,7 @@ func (m *Http) Reset() { *m = Http{} } func (m *Http) String() string { return proto.CompactTextString(m) } func (*Http) ProtoMessage() {} func (*Http) Descriptor() ([]byte, []int) { - return fileDescriptor_http_9c97bbd8b94894d4, []int{0} + return fileDescriptor_ff9994be407cdcc9, []int{0} } func (m *Http) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Http.Unmarshal(m, b) @@ -50,8 +52,8 @@ func (m *Http) XXX_Unmarshal(b []byte) error { func (m *Http) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_Http.Marshal(b, m, deterministic) } -func (dst *Http) XXX_Merge(src proto.Message) { - xxx_messageInfo_Http.Merge(dst, src) +func (m *Http) XXX_Merge(src proto.Message) { + xxx_messageInfo_Http.Merge(m, src) } func (m *Http) XXX_Size() int { return xxx_messageInfo_Http.Size(m) @@ -315,6 +317,10 @@ type HttpRule struct { // body. NOTE: the referred field must not be a repeated field and must be // present at the top-level of request message type. Body string `protobuf:"bytes,7,opt,name=body,proto3" json:"body,omitempty"` + // Optional. The name of the response field whose value is mapped to the HTTP + // body of response. Other response fields are ignored. When + // not set, the response message will be used as HTTP body of response. + ResponseBody string `protobuf:"bytes,12,opt,name=response_body,json=responseBody,proto3" json:"response_body,omitempty"` // Additional HTTP bindings for the selector. Nested bindings must // not contain an `additional_bindings` field themselves (that is, // the nesting may only be one level deep). @@ -328,7 +334,7 @@ func (m *HttpRule) Reset() { *m = HttpRule{} } func (m *HttpRule) String() string { return proto.CompactTextString(m) } func (*HttpRule) ProtoMessage() {} func (*HttpRule) Descriptor() ([]byte, []int) { - return fileDescriptor_http_9c97bbd8b94894d4, []int{1} + return fileDescriptor_ff9994be407cdcc9, []int{1} } func (m *HttpRule) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_HttpRule.Unmarshal(m, b) @@ -336,8 +342,8 @@ func (m *HttpRule) XXX_Unmarshal(b []byte) error { func (m *HttpRule) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_HttpRule.Marshal(b, m, deterministic) } -func (dst *HttpRule) XXX_Merge(src proto.Message) { - xxx_messageInfo_HttpRule.Merge(dst, src) +func (m *HttpRule) XXX_Merge(src proto.Message) { + xxx_messageInfo_HttpRule.Merge(m, src) } func (m *HttpRule) XXX_Size() int { return xxx_messageInfo_HttpRule.Size(m) @@ -348,6 +354,13 @@ func (m *HttpRule) XXX_DiscardUnknown() { var xxx_messageInfo_HttpRule proto.InternalMessageInfo +func (m *HttpRule) GetSelector() string { + if m != nil { + return m.Selector + } + return "" +} + type isHttpRule_Pattern interface { isHttpRule_Pattern() } @@ -355,27 +368,37 @@ type isHttpRule_Pattern interface { type HttpRule_Get struct { Get string `protobuf:"bytes,2,opt,name=get,proto3,oneof"` } + type HttpRule_Put struct { Put string `protobuf:"bytes,3,opt,name=put,proto3,oneof"` } + type HttpRule_Post struct { Post string `protobuf:"bytes,4,opt,name=post,proto3,oneof"` } + type HttpRule_Delete struct { Delete string `protobuf:"bytes,5,opt,name=delete,proto3,oneof"` } + type HttpRule_Patch struct { Patch string `protobuf:"bytes,6,opt,name=patch,proto3,oneof"` } + type HttpRule_Custom struct { Custom *CustomHttpPattern `protobuf:"bytes,8,opt,name=custom,proto3,oneof"` } -func (*HttpRule_Get) isHttpRule_Pattern() {} -func (*HttpRule_Put) isHttpRule_Pattern() {} -func (*HttpRule_Post) isHttpRule_Pattern() {} +func (*HttpRule_Get) isHttpRule_Pattern() {} + +func (*HttpRule_Put) isHttpRule_Pattern() {} + +func (*HttpRule_Post) isHttpRule_Pattern() {} + func (*HttpRule_Delete) isHttpRule_Pattern() {} -func (*HttpRule_Patch) isHttpRule_Pattern() {} + +func (*HttpRule_Patch) isHttpRule_Pattern() {} + func (*HttpRule_Custom) isHttpRule_Pattern() {} func (m *HttpRule) GetPattern() isHttpRule_Pattern { @@ -385,13 +408,6 @@ func (m *HttpRule) GetPattern() isHttpRule_Pattern { return nil } -func (m *HttpRule) GetSelector() string { - if m != nil { - return m.Selector - } - return "" -} - func (m *HttpRule) GetGet() string { if x, ok := m.GetPattern().(*HttpRule_Get); ok { return x.Get @@ -441,6 +457,13 @@ func (m *HttpRule) GetBody() string { return "" } +func (m *HttpRule) GetResponseBody() string { + if m != nil { + return m.ResponseBody + } + return "" +} + func (m *HttpRule) GetAdditionalBindings() []*HttpRule { if m != nil { return m.AdditionalBindings @@ -593,7 +616,7 @@ func (m *CustomHttpPattern) Reset() { *m = CustomHttpPattern{} } func (m *CustomHttpPattern) String() string { return proto.CompactTextString(m) } func (*CustomHttpPattern) ProtoMessage() {} func (*CustomHttpPattern) Descriptor() ([]byte, []int) { - return fileDescriptor_http_9c97bbd8b94894d4, []int{2} + return fileDescriptor_ff9994be407cdcc9, []int{2} } func (m *CustomHttpPattern) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CustomHttpPattern.Unmarshal(m, b) @@ -601,8 +624,8 @@ func (m *CustomHttpPattern) XXX_Unmarshal(b []byte) error { func (m *CustomHttpPattern) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_CustomHttpPattern.Marshal(b, m, deterministic) } -func (dst *CustomHttpPattern) XXX_Merge(src proto.Message) { - xxx_messageInfo_CustomHttpPattern.Merge(dst, src) +func (m *CustomHttpPattern) XXX_Merge(src proto.Message) { + xxx_messageInfo_CustomHttpPattern.Merge(m, src) } func (m *CustomHttpPattern) XXX_Size() int { return xxx_messageInfo_CustomHttpPattern.Size(m) @@ -633,34 +656,35 @@ func init() { proto.RegisterType((*CustomHttpPattern)(nil), "google.api.CustomHttpPattern") } -func init() { proto.RegisterFile("google/api/http.proto", fileDescriptor_http_9c97bbd8b94894d4) } +func init() { proto.RegisterFile("google/api/http.proto", fileDescriptor_ff9994be407cdcc9) } -var fileDescriptor_http_9c97bbd8b94894d4 = []byte{ - // 401 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x92, 0x41, 0xab, 0x13, 0x31, - 0x10, 0xc7, 0xdd, 0x76, 0xdb, 0xd7, 0x4e, 0x41, 0x30, 0x3e, 0x25, 0x88, 0x62, 0xe9, 0xa9, 0x78, - 0xd8, 0xc2, 0xf3, 0xe0, 0xe1, 0x9d, 0x5e, 0xb5, 0xf8, 0xbc, 0x95, 0x3d, 0x7a, 0x29, 0xe9, 0x66, - 0x4c, 0xa3, 0x79, 0x49, 0xd8, 0xcc, 0x8a, 0xfd, 0x3a, 0x7e, 0x07, 0xbf, 0x9b, 0x47, 0x49, 0x36, - 0xb5, 0x05, 0xc1, 0xdb, 0xfc, 0xff, 0xf3, 0xcb, 0xcc, 0x64, 0x18, 0x78, 0xa6, 0x9c, 0x53, 0x06, - 0x57, 0xc2, 0xeb, 0xd5, 0x81, 0xc8, 0x57, 0xbe, 0x75, 0xe4, 0x18, 0xf4, 0x76, 0x25, 0xbc, 0x5e, - 0x1c, 0xa1, 0xbc, 0x27, 0xf2, 0xec, 0x0d, 0x8c, 0xda, 0xce, 0x60, 0xe0, 0xc5, 0x7c, 0xb8, 0x9c, - 0xdd, 0x5c, 0x57, 0x67, 0xa6, 0x8a, 0x40, 0xdd, 0x19, 0xac, 0x7b, 0x84, 0x6d, 0xe0, 0xf5, 0x97, - 0xce, 0x98, 0xe3, 0x4e, 0x62, 0xe3, 0x24, 0xee, 0x5a, 0x0c, 0xd8, 0x7e, 0x47, 0xb9, 0xc3, 0x1f, - 0x5e, 0xd8, 0xa0, 0x9d, 0xe5, 0x83, 0x79, 0xb1, 0x9c, 0xd4, 0x2f, 0x13, 0xf6, 0x21, 0x51, 0x75, - 0x86, 0x36, 0x27, 0x66, 0xf1, 0x6b, 0x00, 0x93, 0x53, 0x69, 0xf6, 0x02, 0x26, 0x01, 0x0d, 0x36, - 0xe4, 0x5a, 0x5e, 0xcc, 0x8b, 0xe5, 0xb4, 0xfe, 0xab, 0x19, 0x83, 0xa1, 0x42, 0x4a, 0x35, 0xa7, - 0xf7, 0x8f, 0xea, 0x28, 0xa2, 0xe7, 0x3b, 0xe2, 0xc3, 0x93, 0xe7, 0x3b, 0x62, 0xd7, 0x50, 0x7a, - 0x17, 0x88, 0x97, 0xd9, 0x4c, 0x8a, 0x71, 0x18, 0x4b, 0x34, 0x48, 0xc8, 0x47, 0xd9, 0xcf, 0x9a, - 0x3d, 0x87, 0x91, 0x17, 0xd4, 0x1c, 0xf8, 0x38, 0x27, 0x7a, 0xc9, 0xde, 0xc1, 0xb8, 0xe9, 0x02, - 0xb9, 0x07, 0x3e, 0x99, 0x17, 0xcb, 0xd9, 0xcd, 0xab, 0xcb, 0x65, 0xbc, 0x4f, 0x99, 0x38, 0xf7, - 0x56, 0x10, 0x61, 0x6b, 0x63, 0xc1, 0x1e, 0x67, 0x0c, 0xca, 0xbd, 0x93, 0x47, 0x7e, 0x95, 0x3e, - 0x90, 0x62, 0xb6, 0x81, 0xa7, 0x42, 0x4a, 0x4d, 0xda, 0x59, 0x61, 0x76, 0x7b, 0x6d, 0xa5, 0xb6, - 0x2a, 0xf0, 0xd9, 0x7f, 0xd6, 0xcc, 0xce, 0x0f, 0xd6, 0x99, 0x5f, 0x4f, 0xe1, 0xca, 0xf7, 0xfd, - 0x16, 0xb7, 0xf0, 0xe4, 0x9f, 0x21, 0x62, 0xeb, 0x6f, 0xda, 0xca, 0xbc, 0xbb, 0x14, 0x47, 0xcf, - 0x0b, 0x3a, 0xf4, 0x8b, 0xab, 0x53, 0xbc, 0xfe, 0x0a, 0x8f, 0x1b, 0xf7, 0x70, 0xd1, 0x76, 0x3d, - 0x4d, 0x65, 0xe2, 0x61, 0x6c, 0x8b, 0xcf, 0x77, 0x39, 0xa1, 0x9c, 0x11, 0x56, 0x55, 0xae, 0x55, - 0x2b, 0x85, 0x36, 0x9d, 0xcd, 0xaa, 0x4f, 0x09, 0xaf, 0x43, 0x3a, 0x28, 0x61, 0xad, 0x23, 0x11, - 0xc7, 0x0c, 0xb7, 0x17, 0xf1, 0xef, 0xa2, 0xf8, 0x39, 0x28, 0x3f, 0xde, 0x6d, 0x3f, 0xed, 0xc7, - 0xe9, 0xdd, 0xdb, 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x73, 0x2c, 0xed, 0xfb, 0x87, 0x02, 0x00, - 0x00, +var fileDescriptor_ff9994be407cdcc9 = []byte{ + // 419 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x92, 0xc1, 0x8e, 0xd3, 0x30, + 0x10, 0x86, 0x49, 0x9b, 0x76, 0xdb, 0xe9, 0x82, 0x84, 0x59, 0x90, 0x85, 0x40, 0x54, 0xe5, 0x52, + 0x71, 0x48, 0xa5, 0xe5, 0xc0, 0x61, 0x4f, 0x1b, 0xa8, 0x58, 0x6e, 0x55, 0x8e, 0x5c, 0x22, 0x37, + 0x1e, 0x52, 0x83, 0xd7, 0xb6, 0xe2, 0x09, 0xa2, 0xaf, 0xc3, 0x63, 0xf1, 0x24, 0x1c, 0x91, 0x9d, + 0x84, 0x56, 0x42, 0xe2, 0x36, 0xf3, 0xff, 0x9f, 0xa7, 0x7f, 0x27, 0x03, 0x4f, 0x6b, 0x6b, 0x6b, + 0x8d, 0x1b, 0xe1, 0xd4, 0xe6, 0x40, 0xe4, 0x32, 0xd7, 0x58, 0xb2, 0x0c, 0x3a, 0x39, 0x13, 0x4e, + 0xad, 0x8e, 0x90, 0xde, 0x11, 0x39, 0xf6, 0x06, 0x26, 0x4d, 0xab, 0xd1, 0xf3, 0x64, 0x39, 0x5e, + 0x2f, 0xae, 0xaf, 0xb2, 0x13, 0x93, 0x05, 0xa0, 0x68, 0x35, 0x16, 0x1d, 0xc2, 0xb6, 0xf0, 0xea, + 0x4b, 0xab, 0xf5, 0xb1, 0x94, 0x58, 0x59, 0x89, 0x65, 0x83, 0x1e, 0x9b, 0xef, 0x28, 0x4b, 0xfc, + 0xe1, 0x84, 0xf1, 0xca, 0x1a, 0x3e, 0x5a, 0x26, 0xeb, 0x59, 0xf1, 0x22, 0x62, 0x1f, 0x22, 0x55, + 0xf4, 0xd0, 0x76, 0x60, 0x56, 0xbf, 0x46, 0x30, 0x1b, 0x46, 0xb3, 0xe7, 0x30, 0xf3, 0xa8, 0xb1, + 0x22, 0xdb, 0xf0, 0x64, 0x99, 0xac, 0xe7, 0xc5, 0xdf, 0x9e, 0x31, 0x18, 0xd7, 0x48, 0x71, 0xe6, + 0xfc, 0xee, 0x41, 0x11, 0x9a, 0xa0, 0xb9, 0x96, 0xf8, 0x78, 0xd0, 0x5c, 0x4b, 0xec, 0x0a, 0x52, + 0x67, 0x3d, 0xf1, 0xb4, 0x17, 0x63, 0xc7, 0x38, 0x4c, 0x25, 0x6a, 0x24, 0xe4, 0x93, 0x5e, 0xef, + 0x7b, 0xf6, 0x0c, 0x26, 0x4e, 0x50, 0x75, 0xe0, 0xd3, 0xde, 0xe8, 0x5a, 0xf6, 0x0e, 0xa6, 0x55, + 0xeb, 0xc9, 0xde, 0xf3, 0xd9, 0x32, 0x59, 0x2f, 0xae, 0x5f, 0x9e, 0x2f, 0xe3, 0x7d, 0x74, 0x42, + 0xee, 0x9d, 0x20, 0xc2, 0xc6, 0x84, 0x81, 0x1d, 0xce, 0x18, 0xa4, 0x7b, 0x2b, 0x8f, 0xfc, 0x22, + 0xfe, 0x81, 0x58, 0xb3, 0xd7, 0xf0, 0xb0, 0x41, 0xef, 0xac, 0xf1, 0x58, 0x46, 0xf3, 0x32, 0x9a, + 0x97, 0x83, 0x98, 0x07, 0x68, 0x0b, 0x4f, 0x84, 0x94, 0x8a, 0x94, 0x35, 0x42, 0x97, 0x7b, 0x65, + 0xa4, 0x32, 0xb5, 0xe7, 0x8b, 0xff, 0x7c, 0x0b, 0x76, 0x7a, 0x90, 0xf7, 0x7c, 0x3e, 0x87, 0x0b, + 0xd7, 0x85, 0x5a, 0xdd, 0xc0, 0xe3, 0x7f, 0x92, 0x86, 0x7c, 0xdf, 0x94, 0x91, 0xfd, 0x82, 0x63, + 0x1d, 0x34, 0x27, 0xe8, 0xd0, 0x6d, 0xb7, 0x88, 0x75, 0xfe, 0x15, 0x1e, 0x55, 0xf6, 0xfe, 0xec, + 0x67, 0xf3, 0x79, 0x1c, 0x13, 0xae, 0x67, 0x97, 0x7c, 0xbe, 0xed, 0x8d, 0xda, 0x6a, 0x61, 0xea, + 0xcc, 0x36, 0xf5, 0xa6, 0x46, 0x13, 0x6f, 0x6b, 0xd3, 0x59, 0xc2, 0x29, 0x1f, 0xaf, 0x4e, 0x18, + 0x63, 0x49, 0x84, 0x98, 0xfe, 0xe6, 0xac, 0xfe, 0x9d, 0x24, 0x3f, 0x47, 0xe9, 0xc7, 0xdb, 0xdd, + 0xa7, 0xfd, 0x34, 0xbe, 0x7b, 0xfb, 0x27, 0x00, 0x00, 0xff, 0xff, 0xae, 0xde, 0xa1, 0xd0, 0xac, + 0x02, 0x00, 0x00, } diff --git a/vendor/google.golang.org/genproto/googleapis/rpc/status/status.pb.go b/vendor/google.golang.org/genproto/googleapis/rpc/status/status.pb.go index 3b07a25b..f256afe5 100644 --- a/vendor/google.golang.org/genproto/googleapis/rpc/status/status.pb.go +++ b/vendor/google.golang.org/genproto/googleapis/rpc/status/status.pb.go @@ -1,12 +1,14 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // source: google/rpc/status.proto -package status // import "google.golang.org/genproto/googleapis/rpc/status" +package status -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import any "github.com/golang/protobuf/ptypes/any" +import ( + fmt "fmt" + proto "github.com/golang/protobuf/proto" + any "github.com/golang/protobuf/ptypes/any" + math "math" +) // Reference imports to suppress errors if they are not otherwise used. var _ = proto.Marshal @@ -90,7 +92,7 @@ func (m *Status) Reset() { *m = Status{} } func (m *Status) String() string { return proto.CompactTextString(m) } func (*Status) ProtoMessage() {} func (*Status) Descriptor() ([]byte, []int) { - return fileDescriptor_status_c656c685916bdf47, []int{0} + return fileDescriptor_24d244abaf643bfe, []int{0} } func (m *Status) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Status.Unmarshal(m, b) @@ -98,8 +100,8 @@ func (m *Status) XXX_Unmarshal(b []byte) error { func (m *Status) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_Status.Marshal(b, m, deterministic) } -func (dst *Status) XXX_Merge(src proto.Message) { - xxx_messageInfo_Status.Merge(dst, src) +func (m *Status) XXX_Merge(src proto.Message) { + xxx_messageInfo_Status.Merge(m, src) } func (m *Status) XXX_Size() int { return xxx_messageInfo_Status.Size(m) @@ -135,9 +137,9 @@ func init() { proto.RegisterType((*Status)(nil), "google.rpc.Status") } -func init() { proto.RegisterFile("google/rpc/status.proto", fileDescriptor_status_c656c685916bdf47) } +func init() { proto.RegisterFile("google/rpc/status.proto", fileDescriptor_24d244abaf643bfe) } -var fileDescriptor_status_c656c685916bdf47 = []byte{ +var fileDescriptor_24d244abaf643bfe = []byte{ // 209 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0x4f, 0xcf, 0xcf, 0x4f, 0xcf, 0x49, 0xd5, 0x2f, 0x2a, 0x48, 0xd6, 0x2f, 0x2e, 0x49, 0x2c, 0x29, 0x2d, 0xd6, 0x2b, 0x28, diff --git a/vendor/google.golang.org/grpc/balancer.go b/vendor/google.golang.org/grpc/balancer.go index e1730166..5aeb646d 100644 --- a/vendor/google.golang.org/grpc/balancer.go +++ b/vendor/google.golang.org/grpc/balancer.go @@ -19,7 +19,6 @@ package grpc import ( - "fmt" "net" "sync" @@ -118,26 +117,6 @@ type Balancer interface { Close() error } -// downErr implements net.Error. It is constructed by gRPC internals and passed to the down -// call of Balancer. -type downErr struct { - timeout bool - temporary bool - desc string -} - -func (e downErr) Error() string { return e.desc } -func (e downErr) Timeout() bool { return e.timeout } -func (e downErr) Temporary() bool { return e.temporary } - -func downErrorf(timeout, temporary bool, format string, a ...interface{}) downErr { - return downErr{ - timeout: timeout, - temporary: temporary, - desc: fmt.Sprintf(format, a...), - } -} - // RoundRobin returns a Balancer that selects addresses round-robin. It uses r to watch // the name resolution updates and updates the addresses available correspondingly. // @@ -410,7 +389,3 @@ func (rr *roundRobin) Close() error { type pickFirst struct { *roundRobin } - -func pickFirstBalancerV1(r naming.Resolver) Balancer { - return &pickFirst{&roundRobin{r: r}} -} diff --git a/vendor/google.golang.org/grpc/balancer/balancer.go b/vendor/google.golang.org/grpc/balancer/balancer.go index f9d83c2f..069feb1e 100644 --- a/vendor/google.golang.org/grpc/balancer/balancer.go +++ b/vendor/google.golang.org/grpc/balancer/balancer.go @@ -143,7 +143,11 @@ type Builder interface { } // PickOptions contains addition information for the Pick operation. -type PickOptions struct{} +type PickOptions struct { + // FullMethodName is the method name that NewClientStream() is called + // with. The canonical format is /service/Method. + FullMethodName string +} // DoneInfo contains additional information for done. type DoneInfo struct { diff --git a/vendor/google.golang.org/grpc/call.go b/vendor/google.golang.org/grpc/call.go index f73b7d55..180d79d0 100644 --- a/vendor/google.golang.org/grpc/call.go +++ b/vendor/google.golang.org/grpc/call.go @@ -63,31 +63,12 @@ func Invoke(ctx context.Context, method string, args, reply interface{}, cc *Cli var unaryStreamDesc = &StreamDesc{ServerStreams: false, ClientStreams: false} func invoke(ctx context.Context, method string, req, reply interface{}, cc *ClientConn, opts ...CallOption) error { - // TODO: implement retries in clientStream and make this simply - // newClientStream, SendMsg, RecvMsg. - firstAttempt := true - for { - csInt, err := newClientStream(ctx, unaryStreamDesc, cc, method, opts...) - if err != nil { - return err - } - cs := csInt.(*clientStream) - if err := cs.SendMsg(req); err != nil { - if !cs.c.failFast && cs.attempt.s.Unprocessed() && firstAttempt { - // TODO: Add a field to header for grpc-transparent-retry-attempts - firstAttempt = false - continue - } - return err - } - if err := cs.RecvMsg(reply); err != nil { - if !cs.c.failFast && cs.attempt.s.Unprocessed() && firstAttempt { - // TODO: Add a field to header for grpc-transparent-retry-attempts - firstAttempt = false - continue - } - return err - } - return nil + cs, err := newClientStream(ctx, unaryStreamDesc, cc, method, opts...) + if err != nil { + return err } + if err := cs.SendMsg(req); err != nil { + return err + } + return cs.RecvMsg(reply) } diff --git a/vendor/google.golang.org/grpc/clientconn.go b/vendor/google.golang.org/grpc/clientconn.go index 84ba9e5a..318ac407 100644 --- a/vendor/google.golang.org/grpc/clientconn.go +++ b/vendor/google.golang.org/grpc/clientconn.go @@ -26,6 +26,7 @@ import ( "reflect" "strings" "sync" + "sync/atomic" "time" "golang.org/x/net/context" @@ -36,16 +37,14 @@ import ( "google.golang.org/grpc/connectivity" "google.golang.org/grpc/credentials" "google.golang.org/grpc/grpclog" - "google.golang.org/grpc/internal" "google.golang.org/grpc/internal/backoff" "google.golang.org/grpc/internal/channelz" + "google.golang.org/grpc/internal/transport" "google.golang.org/grpc/keepalive" "google.golang.org/grpc/resolver" _ "google.golang.org/grpc/resolver/dns" // To register dns resolver. _ "google.golang.org/grpc/resolver/passthrough" // To register passthrough resolver. - "google.golang.org/grpc/stats" "google.golang.org/grpc/status" - "google.golang.org/grpc/transport" ) const ( @@ -66,8 +65,6 @@ var ( errConnDrain = errors.New("grpc: the connection is drained") // errConnClosing indicates that the connection is closing. errConnClosing = errors.New("grpc: the connection is closing") - // errConnUnavailable indicates that the connection is unavailable. - errConnUnavailable = errors.New("grpc: the connection is unavailable") // errBalancerClosed indicates that the balancer is closed. errBalancerClosed = errors.New("grpc: balancer is closed") // We use an accessor so that minConnectTimeout can be @@ -90,351 +87,16 @@ var ( // errCredentialsConflict indicates that grpc.WithTransportCredentials() // and grpc.WithInsecure() are both called for a connection. errCredentialsConflict = errors.New("grpc: transport credentials are set for an insecure connection (grpc.WithTransportCredentials() and grpc.WithInsecure() are both called)") - // errNetworkIO indicates that the connection is down due to some network I/O error. - errNetworkIO = errors.New("grpc: failed with network I/O error") ) -// dialOptions configure a Dial call. dialOptions are set by the DialOption -// values passed to Dial. -type dialOptions struct { - unaryInt UnaryClientInterceptor - streamInt StreamClientInterceptor - cp Compressor - dc Decompressor - bs backoff.Strategy - block bool - insecure bool - timeout time.Duration - scChan <-chan ServiceConfig - copts transport.ConnectOptions - callOptions []CallOption - // This is used by v1 balancer dial option WithBalancer to support v1 - // balancer, and also by WithBalancerName dial option. - balancerBuilder balancer.Builder - // This is to support grpclb. - resolverBuilder resolver.Builder - waitForHandshake bool - channelzParentID int64 - disableServiceConfig bool -} - const ( defaultClientMaxReceiveMessageSize = 1024 * 1024 * 4 defaultClientMaxSendMessageSize = math.MaxInt32 + // http2IOBufSize specifies the buffer size for sending frames. + defaultWriteBufSize = 32 * 1024 + defaultReadBufSize = 32 * 1024 ) -// RegisterChannelz turns on channelz service. -// This is an EXPERIMENTAL API. -func RegisterChannelz() { - channelz.TurnOn() -} - -// DialOption configures how we set up the connection. -type DialOption func(*dialOptions) - -// WithWaitForHandshake blocks until the initial settings frame is received from the -// server before assigning RPCs to the connection. -// Experimental API. -func WithWaitForHandshake() DialOption { - return func(o *dialOptions) { - o.waitForHandshake = true - } -} - -// WithWriteBufferSize lets you set the size of write buffer, this determines how much data can be batched -// before doing a write on the wire. -func WithWriteBufferSize(s int) DialOption { - return func(o *dialOptions) { - o.copts.WriteBufferSize = s - } -} - -// WithReadBufferSize lets you set the size of read buffer, this determines how much data can be read at most -// for each read syscall. -func WithReadBufferSize(s int) DialOption { - return func(o *dialOptions) { - o.copts.ReadBufferSize = s - } -} - -// WithInitialWindowSize returns a DialOption which sets the value for initial window size on a stream. -// The lower bound for window size is 64K and any value smaller than that will be ignored. -func WithInitialWindowSize(s int32) DialOption { - return func(o *dialOptions) { - o.copts.InitialWindowSize = s - } -} - -// WithInitialConnWindowSize returns a DialOption which sets the value for initial window size on a connection. -// The lower bound for window size is 64K and any value smaller than that will be ignored. -func WithInitialConnWindowSize(s int32) DialOption { - return func(o *dialOptions) { - o.copts.InitialConnWindowSize = s - } -} - -// WithMaxMsgSize returns a DialOption which sets the maximum message size the client can receive. -// -// Deprecated: use WithDefaultCallOptions(MaxCallRecvMsgSize(s)) instead. -func WithMaxMsgSize(s int) DialOption { - return WithDefaultCallOptions(MaxCallRecvMsgSize(s)) -} - -// WithDefaultCallOptions returns a DialOption which sets the default CallOptions for calls over the connection. -func WithDefaultCallOptions(cos ...CallOption) DialOption { - return func(o *dialOptions) { - o.callOptions = append(o.callOptions, cos...) - } -} - -// WithCodec returns a DialOption which sets a codec for message marshaling and unmarshaling. -// -// Deprecated: use WithDefaultCallOptions(CallCustomCodec(c)) instead. -func WithCodec(c Codec) DialOption { - return WithDefaultCallOptions(CallCustomCodec(c)) -} - -// WithCompressor returns a DialOption which sets a Compressor to use for -// message compression. It has lower priority than the compressor set by -// the UseCompressor CallOption. -// -// Deprecated: use UseCompressor instead. -func WithCompressor(cp Compressor) DialOption { - return func(o *dialOptions) { - o.cp = cp - } -} - -// WithDecompressor returns a DialOption which sets a Decompressor to use for -// incoming message decompression. If incoming response messages are encoded -// using the decompressor's Type(), it will be used. Otherwise, the message -// encoding will be used to look up the compressor registered via -// encoding.RegisterCompressor, which will then be used to decompress the -// message. If no compressor is registered for the encoding, an Unimplemented -// status error will be returned. -// -// Deprecated: use encoding.RegisterCompressor instead. -func WithDecompressor(dc Decompressor) DialOption { - return func(o *dialOptions) { - o.dc = dc - } -} - -// WithBalancer returns a DialOption which sets a load balancer with the v1 API. -// Name resolver will be ignored if this DialOption is specified. -// -// Deprecated: use the new balancer APIs in balancer package and WithBalancerName. -func WithBalancer(b Balancer) DialOption { - return func(o *dialOptions) { - o.balancerBuilder = &balancerWrapperBuilder{ - b: b, - } - } -} - -// WithBalancerName sets the balancer that the ClientConn will be initialized -// with. Balancer registered with balancerName will be used. This function -// panics if no balancer was registered by balancerName. -// -// The balancer cannot be overridden by balancer option specified by service -// config. -// -// This is an EXPERIMENTAL API. -func WithBalancerName(balancerName string) DialOption { - builder := balancer.Get(balancerName) - if builder == nil { - panic(fmt.Sprintf("grpc.WithBalancerName: no balancer is registered for name %v", balancerName)) - } - return func(o *dialOptions) { - o.balancerBuilder = builder - } -} - -// withResolverBuilder is only for grpclb. -func withResolverBuilder(b resolver.Builder) DialOption { - return func(o *dialOptions) { - o.resolverBuilder = b - } -} - -// WithServiceConfig returns a DialOption which has a channel to read the service configuration. -// -// Deprecated: service config should be received through name resolver, as specified here. -// https://github.com/grpc/grpc/blob/master/doc/service_config.md -func WithServiceConfig(c <-chan ServiceConfig) DialOption { - return func(o *dialOptions) { - o.scChan = c - } -} - -// WithBackoffMaxDelay configures the dialer to use the provided maximum delay -// when backing off after failed connection attempts. -func WithBackoffMaxDelay(md time.Duration) DialOption { - return WithBackoffConfig(BackoffConfig{MaxDelay: md}) -} - -// WithBackoffConfig configures the dialer to use the provided backoff -// parameters after connection failures. -// -// Use WithBackoffMaxDelay until more parameters on BackoffConfig are opened up -// for use. -func WithBackoffConfig(b BackoffConfig) DialOption { - - return withBackoff(backoff.Exponential{ - MaxDelay: b.MaxDelay, - }) -} - -// withBackoff sets the backoff strategy used for connectRetryNum after a -// failed connection attempt. -// -// This can be exported if arbitrary backoff strategies are allowed by gRPC. -func withBackoff(bs backoff.Strategy) DialOption { - return func(o *dialOptions) { - o.bs = bs - } -} - -// WithBlock returns a DialOption which makes caller of Dial blocks until the underlying -// connection is up. Without this, Dial returns immediately and connecting the server -// happens in background. -func WithBlock() DialOption { - return func(o *dialOptions) { - o.block = true - } -} - -// WithInsecure returns a DialOption which disables transport security for this ClientConn. -// Note that transport security is required unless WithInsecure is set. -func WithInsecure() DialOption { - return func(o *dialOptions) { - o.insecure = true - } -} - -// WithTransportCredentials returns a DialOption which configures a -// connection level security credentials (e.g., TLS/SSL). -func WithTransportCredentials(creds credentials.TransportCredentials) DialOption { - return func(o *dialOptions) { - o.copts.TransportCredentials = creds - } -} - -// WithPerRPCCredentials returns a DialOption which sets -// credentials and places auth state on each outbound RPC. -func WithPerRPCCredentials(creds credentials.PerRPCCredentials) DialOption { - return func(o *dialOptions) { - o.copts.PerRPCCredentials = append(o.copts.PerRPCCredentials, creds) - } -} - -// WithTimeout returns a DialOption that configures a timeout for dialing a ClientConn -// initially. This is valid if and only if WithBlock() is present. -// -// Deprecated: use DialContext and context.WithTimeout instead. -func WithTimeout(d time.Duration) DialOption { - return func(o *dialOptions) { - o.timeout = d - } -} - -func withContextDialer(f func(context.Context, string) (net.Conn, error)) DialOption { - return func(o *dialOptions) { - o.copts.Dialer = f - } -} - -func init() { - internal.WithContextDialer = withContextDialer - internal.WithResolverBuilder = withResolverBuilder -} - -// WithDialer returns a DialOption that specifies a function to use for dialing network addresses. -// If FailOnNonTempDialError() is set to true, and an error is returned by f, gRPC checks the error's -// Temporary() method to decide if it should try to reconnect to the network address. -func WithDialer(f func(string, time.Duration) (net.Conn, error)) DialOption { - return withContextDialer( - func(ctx context.Context, addr string) (net.Conn, error) { - if deadline, ok := ctx.Deadline(); ok { - return f(addr, deadline.Sub(time.Now())) - } - return f(addr, 0) - }) -} - -// WithStatsHandler returns a DialOption that specifies the stats handler -// for all the RPCs and underlying network connections in this ClientConn. -func WithStatsHandler(h stats.Handler) DialOption { - return func(o *dialOptions) { - o.copts.StatsHandler = h - } -} - -// FailOnNonTempDialError returns a DialOption that specifies if gRPC fails on non-temporary dial errors. -// If f is true, and dialer returns a non-temporary error, gRPC will fail the connection to the network -// address and won't try to reconnect. -// The default value of FailOnNonTempDialError is false. -// This is an EXPERIMENTAL API. -func FailOnNonTempDialError(f bool) DialOption { - return func(o *dialOptions) { - o.copts.FailOnNonTempDialError = f - } -} - -// WithUserAgent returns a DialOption that specifies a user agent string for all the RPCs. -func WithUserAgent(s string) DialOption { - return func(o *dialOptions) { - o.copts.UserAgent = s - } -} - -// WithKeepaliveParams returns a DialOption that specifies keepalive parameters for the client transport. -func WithKeepaliveParams(kp keepalive.ClientParameters) DialOption { - return func(o *dialOptions) { - o.copts.KeepaliveParams = kp - } -} - -// WithUnaryInterceptor returns a DialOption that specifies the interceptor for unary RPCs. -func WithUnaryInterceptor(f UnaryClientInterceptor) DialOption { - return func(o *dialOptions) { - o.unaryInt = f - } -} - -// WithStreamInterceptor returns a DialOption that specifies the interceptor for streaming RPCs. -func WithStreamInterceptor(f StreamClientInterceptor) DialOption { - return func(o *dialOptions) { - o.streamInt = f - } -} - -// WithAuthority returns a DialOption that specifies the value to be used as -// the :authority pseudo-header. This value only works with WithInsecure and -// has no effect if TransportCredentials are present. -func WithAuthority(a string) DialOption { - return func(o *dialOptions) { - o.copts.Authority = a - } -} - -// WithChannelzParentID returns a DialOption that specifies the channelz ID of current ClientConn's -// parent. This function is used in nested channel creation (e.g. grpclb dial). -func WithChannelzParentID(id int64) DialOption { - return func(o *dialOptions) { - o.channelzParentID = id - } -} - -// WithDisableServiceConfig returns a DialOption that causes grpc to ignore any -// service config provided by the resolver and provides a hint to the resolver -// to not fetch service configs. -func WithDisableServiceConfig() DialOption { - return func(o *dialOptions) { - o.disableServiceConfig = true - } -} - // Dial creates a client connection to the given target. func Dial(target string, opts ...DialOption) (*ClientConn, error) { return DialContext(context.Background(), target, opts...) @@ -458,23 +120,25 @@ func Dial(target string, opts ...DialOption) (*ClientConn, error) { // e.g. to use dns resolver, a "dns:///" prefix should be applied to the target. func DialContext(ctx context.Context, target string, opts ...DialOption) (conn *ClientConn, err error) { cc := &ClientConn{ - target: target, - csMgr: &connectivityStateManager{}, - conns: make(map[*addrConn]struct{}), - + target: target, + csMgr: &connectivityStateManager{}, + conns: make(map[*addrConn]struct{}), + dopts: defaultDialOptions(), blockingpicker: newPickerWrapper(), + czData: new(channelzData), } + cc.retryThrottler.Store((*retryThrottler)(nil)) cc.ctx, cc.cancel = context.WithCancel(context.Background()) for _, opt := range opts { - opt(&cc.dopts) + opt.apply(&cc.dopts) } if channelz.IsOn() { if cc.dopts.channelzParentID != 0 { - cc.channelzID = channelz.RegisterChannel(cc, cc.dopts.channelzParentID, target) + cc.channelzID = channelz.RegisterChannel(&channelzChannel{cc}, cc.dopts.channelzParentID, target) } else { - cc.channelzID = channelz.RegisterChannel(cc, 0, target) + cc.channelzID = channelz.RegisterChannel(&channelzChannel{cc}, 0, target) } } @@ -567,8 +231,8 @@ func DialContext(ctx context.Context, target string, opts ...DialOption) (conn * creds := cc.dopts.copts.TransportCredentials if creds != nil && creds.Info().ServerName != "" { cc.authority = creds.Info().ServerName - } else if cc.dopts.insecure && cc.dopts.copts.Authority != "" { - cc.authority = cc.dopts.copts.Authority + } else if cc.dopts.insecure && cc.dopts.authority != "" { + cc.authority = cc.dopts.authority } else { // Use endpoint from "scheme://authority/endpoint" as the default // authority for ClientConn. @@ -620,6 +284,13 @@ func DialContext(ctx context.Context, target string, opts ...DialOption) (conn * s := cc.GetState() if s == connectivity.Ready { break + } else if cc.dopts.copts.FailOnNonTempDialError && s == connectivity.TransientFailure { + if err = cc.blockingpicker.connectionError(); err != nil { + terr, ok := err.(interface{ Temporary() bool }) + if ok && !terr.Temporary() { + return nil, err + } + } } if !cc.WaitForStateChange(ctx, s) { // ctx got timeout or canceled. @@ -699,13 +370,10 @@ type ClientConn struct { preBalancerName string // previous balancer name. curAddresses []resolver.Address balancerWrapper *ccBalancerWrapper + retryThrottler atomic.Value - channelzID int64 // channelz unique identification number - czmu sync.RWMutex - callsStarted int64 - callsSucceeded int64 - callsFailed int64 - lastCallStartedTime time.Time + channelzID int64 // channelz unique identification number + czData *channelzData } // WaitForStateChange waits until the connectivity.State of ClientConn changes from sourceState or @@ -830,8 +498,6 @@ func (cc *ClientConn) switchBalancer(name string) { if cc.balancerWrapper != nil { cc.balancerWrapper.close() } - // Clear all stickiness state. - cc.blockingpicker.clearStickinessState() builder := balancer.Get(name) if builder == nil { @@ -860,9 +526,11 @@ func (cc *ClientConn) handleSubConnStateChange(sc balancer.SubConn, s connectivi // Caller needs to make sure len(addrs) > 0. func (cc *ClientConn) newAddrConn(addrs []resolver.Address) (*addrConn, error) { ac := &addrConn{ - cc: cc, - addrs: addrs, - dopts: cc.dopts, + cc: cc, + addrs: addrs, + dopts: cc.dopts, + czData: new(channelzData), + resetBackoff: make(chan struct{}), } ac.ctx, ac.cancel = context.WithCancel(cc.ctx) // Track ac in cc. This needs to be done before any getTransport(...) is called. @@ -892,40 +560,34 @@ func (cc *ClientConn) removeAddrConn(ac *addrConn, err error) { ac.tearDown(err) } -// ChannelzMetric returns ChannelInternalMetric of current ClientConn. -// This is an EXPERIMENTAL API. -func (cc *ClientConn) ChannelzMetric() *channelz.ChannelInternalMetric { - state := cc.GetState() - cc.czmu.RLock() - defer cc.czmu.RUnlock() +func (cc *ClientConn) channelzMetric() *channelz.ChannelInternalMetric { return &channelz.ChannelInternalMetric{ - State: state, + State: cc.GetState(), Target: cc.target, - CallsStarted: cc.callsStarted, - CallsSucceeded: cc.callsSucceeded, - CallsFailed: cc.callsFailed, - LastCallStartedTimestamp: cc.lastCallStartedTime, + CallsStarted: atomic.LoadInt64(&cc.czData.callsStarted), + CallsSucceeded: atomic.LoadInt64(&cc.czData.callsSucceeded), + CallsFailed: atomic.LoadInt64(&cc.czData.callsFailed), + LastCallStartedTimestamp: time.Unix(0, atomic.LoadInt64(&cc.czData.lastCallStartedTime)), } } +// Target returns the target string of the ClientConn. +// This is an EXPERIMENTAL API. +func (cc *ClientConn) Target() string { + return cc.target +} + func (cc *ClientConn) incrCallsStarted() { - cc.czmu.Lock() - cc.callsStarted++ - // TODO(yuxuanli): will make this a time.Time pointer improve performance? - cc.lastCallStartedTime = time.Now() - cc.czmu.Unlock() + atomic.AddInt64(&cc.czData.callsStarted, 1) + atomic.StoreInt64(&cc.czData.lastCallStartedTime, time.Now().UnixNano()) } func (cc *ClientConn) incrCallsSucceeded() { - cc.czmu.Lock() - cc.callsSucceeded++ - cc.czmu.Unlock() + atomic.AddInt64(&cc.czData.callsSucceeded, 1) } func (cc *ClientConn) incrCallsFailed() { - cc.czmu.Lock() - cc.callsFailed++ - cc.czmu.Unlock() + atomic.AddInt64(&cc.czData.callsFailed, 1) } // connect starts to creating transport and also starts the transport monitor @@ -1012,8 +674,10 @@ func (cc *ClientConn) GetMethodConfig(method string) MethodConfig { return m } -func (cc *ClientConn) getTransport(ctx context.Context, failfast bool) (transport.ClientTransport, func(balancer.DoneInfo), error) { - t, done, err := cc.blockingpicker.pick(ctx, failfast, balancer.PickOptions{}) +func (cc *ClientConn) getTransport(ctx context.Context, failfast bool, method string) (transport.ClientTransport, func(balancer.DoneInfo), error) { + t, done, err := cc.blockingpicker.pick(ctx, failfast, balancer.PickOptions{ + FullMethodName: method, + }) if err != nil { return nil, nil, toRPCErr(err) } @@ -1033,6 +697,19 @@ func (cc *ClientConn) handleServiceConfig(js string) error { cc.mu.Lock() cc.scRaw = js cc.sc = sc + + if sc.retryThrottling != nil { + newThrottler := &retryThrottler{ + tokens: sc.retryThrottling.MaxTokens, + max: sc.retryThrottling.MaxTokens, + thresh: sc.retryThrottling.MaxTokens / 2, + ratio: sc.retryThrottling.TokenRatio, + } + cc.retryThrottler.Store(newThrottler) + } else { + cc.retryThrottler.Store((*retryThrottler)(nil)) + } + if sc.LB != nil && *sc.LB != grpclbName { // "grpclb" is not a valid balancer option in service config. if cc.curBalancerName == grpclbName { // If current balancer is grpclb, there's at least one grpclb @@ -1047,17 +724,6 @@ func (cc *ClientConn) handleServiceConfig(js string) error { } } - if envConfigStickinessOn { - var newStickinessMDKey string - if sc.stickinessMetadataKey != nil && *sc.stickinessMetadataKey != "" { - newStickinessMDKey = *sc.stickinessMetadataKey - } - // newStickinessMDKey is "" if one of the following happens: - // - stickinessMetadataKey is set to "" - // - stickinessMetadataKey field doesn't exist in service config - cc.blockingpicker.updateStickinessMDKey(strings.ToLower(newStickinessMDKey)) - } - cc.mu.Unlock() return nil } @@ -1072,6 +738,24 @@ func (cc *ClientConn) resolveNow(o resolver.ResolveNowOption) { go r.resolveNow(o) } +// ResetConnectBackoff wakes up all subchannels in transient failure and causes +// them to attempt another connection immediately. It also resets the backoff +// times used for subsequent attempts regardless of the current state. +// +// In general, this function should not be used. Typical service or network +// outages result in a reasonable client reconnection strategy by default. +// However, if a previously unavailable network becomes available, this may be +// used to trigger an immediate reconnect. +// +// This API is EXPERIMENTAL. +func (cc *ClientConn) ResetConnectBackoff() { + cc.mu.Lock() + defer cc.mu.Unlock() + for ac := range cc.conns { + ac.resetConnectBackoff() + } +} + // Close tears down the ClientConn and all underlying connections. func (cc *ClientConn) Close() error { defer cc.cancel() @@ -1140,12 +824,10 @@ type addrConn struct { // negotiations must complete. connectDeadline time.Time - channelzID int64 // channelz unique identification number - czmu sync.RWMutex - callsStarted int64 - callsSucceeded int64 - callsFailed int64 - lastCallStartedTime time.Time + resetBackoff chan struct{} + + channelzID int64 // channelz unique identification number + czData *channelzData } // adjustParams updates parameters used to create transports upon @@ -1170,14 +852,6 @@ func (ac *addrConn) printf(format string, a ...interface{}) { } } -// errorf records an error in ac's event log, unless ac has been closed. -// REQUIRES ac.mu is held. -func (ac *addrConn) errorf(format string, a ...interface{}) { - if ac.events != nil { - ac.events.Errorf(format, a...) - } -} - // resetTransport recreates a transport to the address for ac. The old // transport will close itself on error or when the clientconn is closed. // The created transport must receive initial settings frame from the server. @@ -1208,6 +882,7 @@ func (ac *addrConn) resetTransport() error { ac.dopts.copts.KeepaliveParams = ac.cc.mkp ac.cc.mu.RUnlock() var backoffDeadline, connectDeadline time.Time + var resetBackoff chan struct{} for connectRetryNum := 0; ; connectRetryNum++ { ac.mu.Lock() if ac.backoffDeadline.IsZero() { @@ -1215,6 +890,7 @@ func (ac *addrConn) resetTransport() error { // or this is the first time this addrConn is trying to establish a // connection. backoffFor := ac.dopts.bs.Backoff(connectRetryNum) // time.Duration. + resetBackoff = ac.resetBackoff // This will be the duration that dial gets to finish. dialDuration := getMinConnectTimeout() if backoffFor > dialDuration { @@ -1248,7 +924,7 @@ func (ac *addrConn) resetTransport() error { copy(addrsIter, ac.addrs) copts := ac.dopts.copts ac.mu.Unlock() - connected, err := ac.createTransport(connectRetryNum, ridx, backoffDeadline, connectDeadline, addrsIter, copts) + connected, err := ac.createTransport(connectRetryNum, ridx, backoffDeadline, connectDeadline, addrsIter, copts, resetBackoff) if err != nil { return err } @@ -1260,7 +936,7 @@ func (ac *addrConn) resetTransport() error { // createTransport creates a connection to one of the backends in addrs. // It returns true if a connection was established. -func (ac *addrConn) createTransport(connectRetryNum, ridx int, backoffDeadline, connectDeadline time.Time, addrs []resolver.Address, copts transport.ConnectOptions) (bool, error) { +func (ac *addrConn) createTransport(connectRetryNum, ridx int, backoffDeadline, connectDeadline time.Time, addrs []resolver.Address, copts transport.ConnectOptions, resetBackoff chan struct{}) (bool, error) { for i := ridx; i < len(addrs); i++ { addr := addrs[i] target := transport.TargetInfo{ @@ -1311,7 +987,7 @@ func (ac *addrConn) createTransport(connectRetryNum, ridx int, backoffDeadline, // Didn't receive server preface, must kill this new transport now. grpclog.Warningf("grpc: addrConn.createTransport failed to receive server preface before deadline.") newTr.Close() - break + continue case <-ac.ctx.Done(): } } @@ -1360,6 +1036,8 @@ func (ac *addrConn) createTransport(connectRetryNum, ridx int, backoffDeadline, timer := time.NewTimer(backoffDeadline.Sub(time.Now())) select { case <-timer.C: + case <-resetBackoff: + timer.Stop() case <-ac.ctx.Done(): timer.Stop() return false, ac.ctx.Err() @@ -1367,6 +1045,14 @@ func (ac *addrConn) createTransport(connectRetryNum, ridx int, backoffDeadline, return false, nil } +func (ac *addrConn) resetConnectBackoff() { + ac.mu.Lock() + close(ac.resetBackoff) + ac.resetBackoff = make(chan struct{}) + ac.connectRetryNum = 0 + ac.mu.Unlock() +} + // Run in a goroutine to track the error in transport and create the // new transport if an error happens. It returns when the channel is closing. func (ac *addrConn) transportMonitor() { @@ -1447,46 +1133,6 @@ func (ac *addrConn) transportMonitor() { } } -// wait blocks until i) the new transport is up or ii) ctx is done or iii) ac is closed or -// iv) transport is in connectivity.TransientFailure and there is a balancer/failfast is true. -func (ac *addrConn) wait(ctx context.Context, hasBalancer, failfast bool) (transport.ClientTransport, error) { - for { - ac.mu.Lock() - switch { - case ac.state == connectivity.Shutdown: - if failfast || !hasBalancer { - // RPC is failfast or balancer is nil. This RPC should fail with ac.tearDownErr. - err := ac.tearDownErr - ac.mu.Unlock() - return nil, err - } - ac.mu.Unlock() - return nil, errConnClosing - case ac.state == connectivity.Ready: - ct := ac.transport - ac.mu.Unlock() - return ct, nil - case ac.state == connectivity.TransientFailure: - if failfast || hasBalancer { - ac.mu.Unlock() - return nil, errConnUnavailable - } - } - ready := ac.ready - if ready == nil { - ready = make(chan struct{}) - ac.ready = ready - } - ac.mu.Unlock() - select { - case <-ctx.Done(): - return nil, toRPCErr(ctx.Err()) - // Wait until the new transport is ready or failed. - case <-ready: - } - } -} - // getReadyTransport returns the transport if ac's state is READY. // Otherwise it returns nil, false. // If ac's state is IDLE, it will trigger ac to connect. @@ -1551,47 +1197,76 @@ func (ac *addrConn) getState() connectivity.State { return ac.state } -func (ac *addrConn) getCurAddr() (ret resolver.Address) { - ac.mu.Lock() - ret = ac.curAddr - ac.mu.Unlock() - return -} - func (ac *addrConn) ChannelzMetric() *channelz.ChannelInternalMetric { ac.mu.Lock() addr := ac.curAddr.Addr ac.mu.Unlock() - state := ac.getState() - ac.czmu.RLock() - defer ac.czmu.RUnlock() return &channelz.ChannelInternalMetric{ - State: state, + State: ac.getState(), Target: addr, - CallsStarted: ac.callsStarted, - CallsSucceeded: ac.callsSucceeded, - CallsFailed: ac.callsFailed, - LastCallStartedTimestamp: ac.lastCallStartedTime, + CallsStarted: atomic.LoadInt64(&ac.czData.callsStarted), + CallsSucceeded: atomic.LoadInt64(&ac.czData.callsSucceeded), + CallsFailed: atomic.LoadInt64(&ac.czData.callsFailed), + LastCallStartedTimestamp: time.Unix(0, atomic.LoadInt64(&ac.czData.lastCallStartedTime)), } } func (ac *addrConn) incrCallsStarted() { - ac.czmu.Lock() - ac.callsStarted++ - ac.lastCallStartedTime = time.Now() - ac.czmu.Unlock() + atomic.AddInt64(&ac.czData.callsStarted, 1) + atomic.StoreInt64(&ac.czData.lastCallStartedTime, time.Now().UnixNano()) } func (ac *addrConn) incrCallsSucceeded() { - ac.czmu.Lock() - ac.callsSucceeded++ - ac.czmu.Unlock() + atomic.AddInt64(&ac.czData.callsSucceeded, 1) } func (ac *addrConn) incrCallsFailed() { - ac.czmu.Lock() - ac.callsFailed++ - ac.czmu.Unlock() + atomic.AddInt64(&ac.czData.callsFailed, 1) +} + +type retryThrottler struct { + max float64 + thresh float64 + ratio float64 + + mu sync.Mutex + tokens float64 // TODO(dfawley): replace with atomic and remove lock. +} + +// throttle subtracts a retry token from the pool and returns whether a retry +// should be throttled (disallowed) based upon the retry throttling policy in +// the service config. +func (rt *retryThrottler) throttle() bool { + if rt == nil { + return false + } + rt.mu.Lock() + defer rt.mu.Unlock() + rt.tokens-- + if rt.tokens < 0 { + rt.tokens = 0 + } + return rt.tokens <= rt.thresh +} + +func (rt *retryThrottler) successfulRPC() { + if rt == nil { + return + } + rt.mu.Lock() + defer rt.mu.Unlock() + rt.tokens += rt.ratio + if rt.tokens > rt.max { + rt.tokens = rt.max + } +} + +type channelzChannel struct { + cc *ClientConn +} + +func (c *channelzChannel) ChannelzMetric() *channelz.ChannelInternalMetric { + return c.cc.channelzMetric() } // ErrClientConnTimeout indicates that the ClientConn cannot establish the diff --git a/vendor/google.golang.org/grpc/credentials/credentials.go b/vendor/google.golang.org/grpc/credentials/credentials.go index 3351bf0e..1dae57ab 100644 --- a/vendor/google.golang.org/grpc/credentials/credentials.go +++ b/vendor/google.golang.org/grpc/credentials/credentials.go @@ -31,6 +31,7 @@ import ( "net" "strings" + "github.com/golang/protobuf/proto" "golang.org/x/net/context" ) @@ -118,6 +119,18 @@ func (t TLSInfo) AuthType() string { return "tls" } +// GetChannelzSecurityValue returns security info requested by channelz. +func (t TLSInfo) GetChannelzSecurityValue() ChannelzSecurityValue { + v := &TLSChannelzSecurityValue{ + StandardName: cipherSuiteLookup[t.State.CipherSuite], + } + // Currently there's no way to get LocalCertificate info from tls package. + if len(t.State.PeerCertificates) > 0 { + v.RemoteCertificate = t.State.PeerCertificates[0].Raw + } + return v +} + // tlsCreds is the credentials required for authenticating a connection using TLS. type tlsCreds struct { // TLS configuration @@ -155,7 +168,7 @@ func (c *tlsCreds) ClientHandshake(ctx context.Context, authority string, rawCon case <-ctx.Done(): return nil, nil, ctx.Err() } - return conn, TLSInfo{conn.ConnectionState()}, nil + return tlsConn{Conn: conn, rawConn: rawConn}, TLSInfo{conn.ConnectionState()}, nil } func (c *tlsCreds) ServerHandshake(rawConn net.Conn) (net.Conn, AuthInfo, error) { @@ -163,7 +176,7 @@ func (c *tlsCreds) ServerHandshake(rawConn net.Conn) (net.Conn, AuthInfo, error) if err := conn.Handshake(); err != nil { return nil, nil, err } - return conn, TLSInfo{conn.ConnectionState()}, nil + return tlsConn{Conn: conn, rawConn: rawConn}, TLSInfo{conn.ConnectionState()}, nil } func (c *tlsCreds) Clone() TransportCredentials { @@ -218,3 +231,63 @@ func NewServerTLSFromFile(certFile, keyFile string) (TransportCredentials, error } return NewTLS(&tls.Config{Certificates: []tls.Certificate{cert}}), nil } + +// ChannelzSecurityInfo defines the interface that security protocols should implement +// in order to provide security info to channelz. +type ChannelzSecurityInfo interface { + GetSecurityValue() ChannelzSecurityValue +} + +// ChannelzSecurityValue defines the interface that GetSecurityValue() return value +// should satisfy. This interface should only be satisfied by *TLSChannelzSecurityValue +// and *OtherChannelzSecurityValue. +type ChannelzSecurityValue interface { + isChannelzSecurityValue() +} + +// TLSChannelzSecurityValue defines the struct that TLS protocol should return +// from GetSecurityValue(), containing security info like cipher and certificate used. +type TLSChannelzSecurityValue struct { + StandardName string + LocalCertificate []byte + RemoteCertificate []byte +} + +func (*TLSChannelzSecurityValue) isChannelzSecurityValue() {} + +// OtherChannelzSecurityValue defines the struct that non-TLS protocol should return +// from GetSecurityValue(), which contains protocol specific security info. Note +// the Value field will be sent to users of channelz requesting channel info, and +// thus sensitive info should better be avoided. +type OtherChannelzSecurityValue struct { + Name string + Value proto.Message +} + +func (*OtherChannelzSecurityValue) isChannelzSecurityValue() {} + +type tlsConn struct { + *tls.Conn + rawConn net.Conn +} + +var cipherSuiteLookup = map[uint16]string{ + tls.TLS_RSA_WITH_RC4_128_SHA: "TLS_RSA_WITH_RC4_128_SHA", + tls.TLS_RSA_WITH_3DES_EDE_CBC_SHA: "TLS_RSA_WITH_3DES_EDE_CBC_SHA", + tls.TLS_RSA_WITH_AES_128_CBC_SHA: "TLS_RSA_WITH_AES_128_CBC_SHA", + tls.TLS_RSA_WITH_AES_256_CBC_SHA: "TLS_RSA_WITH_AES_256_CBC_SHA", + tls.TLS_RSA_WITH_AES_128_GCM_SHA256: "TLS_RSA_WITH_AES_128_GCM_SHA256", + tls.TLS_RSA_WITH_AES_256_GCM_SHA384: "TLS_RSA_WITH_AES_256_GCM_SHA384", + tls.TLS_ECDHE_ECDSA_WITH_RC4_128_SHA: "TLS_ECDHE_ECDSA_WITH_RC4_128_SHA", + tls.TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA: "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA", + tls.TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA: "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA", + tls.TLS_ECDHE_RSA_WITH_RC4_128_SHA: "TLS_ECDHE_RSA_WITH_RC4_128_SHA", + tls.TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA: "TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA", + tls.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA: "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA", + tls.TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA: "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA", + tls.TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256: "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256", + tls.TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256: "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256", + tls.TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384: "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384", + tls.TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384: "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384", + tls.TLS_FALLBACK_SCSV: "TLS_FALLBACK_SCSV", +} diff --git a/vendor/google.golang.org/grpc/credentials/credentials_util_pre_go17.go b/vendor/google.golang.org/grpc/credentials/go16.go similarity index 100% rename from vendor/google.golang.org/grpc/credentials/credentials_util_pre_go17.go rename to vendor/google.golang.org/grpc/credentials/go16.go diff --git a/vendor/google.golang.org/grpc/credentials/credentials_util_go17.go b/vendor/google.golang.org/grpc/credentials/go17.go similarity index 98% rename from vendor/google.golang.org/grpc/credentials/credentials_util_go17.go rename to vendor/google.golang.org/grpc/credentials/go17.go index 60409aac..fbd50000 100644 --- a/vendor/google.golang.org/grpc/credentials/credentials_util_go17.go +++ b/vendor/google.golang.org/grpc/credentials/go17.go @@ -1,5 +1,4 @@ -// +build go1.7 -// +build !go1.8 +// +build go1.7,!go1.8 /* * diff --git a/vendor/google.golang.org/grpc/credentials/credentials_util_go18.go b/vendor/google.golang.org/grpc/credentials/go18.go similarity index 65% rename from vendor/google.golang.org/grpc/credentials/credentials_util_go18.go rename to vendor/google.golang.org/grpc/credentials/go18.go index 93f0e1d8..db30d46c 100644 --- a/vendor/google.golang.org/grpc/credentials/credentials_util_go18.go +++ b/vendor/google.golang.org/grpc/credentials/go18.go @@ -24,6 +24,14 @@ import ( "crypto/tls" ) +func init() { + cipherSuiteLookup[tls.TLS_RSA_WITH_AES_128_CBC_SHA256] = "TLS_RSA_WITH_AES_128_CBC_SHA256" + cipherSuiteLookup[tls.TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256] = "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256" + cipherSuiteLookup[tls.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256] = "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256" + cipherSuiteLookup[tls.TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305] = "TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305" + cipherSuiteLookup[tls.TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305] = "TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305" +} + // cloneTLSConfig returns a shallow clone of the exported // fields of cfg, ignoring the unexported sync.Once, which // contains a mutex and must not be copied. diff --git a/vendor/google.golang.org/grpc/credentials/go19.go b/vendor/google.golang.org/grpc/credentials/go19.go new file mode 100644 index 00000000..2a4ca1a5 --- /dev/null +++ b/vendor/google.golang.org/grpc/credentials/go19.go @@ -0,0 +1,35 @@ +// +build go1.9,!appengine + +/* + * + * Copyright 2018 gRPC authors. + * + * Licensed 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. + * + */ + +package credentials + +import ( + "errors" + "syscall" +) + +// implements the syscall.Conn interface +func (c tlsConn) SyscallConn() (syscall.RawConn, error) { + conn, ok := c.rawConn.(syscall.Conn) + if !ok { + return nil, errors.New("RawConn does not implement syscall.Conn") + } + return conn.SyscallConn() +} diff --git a/vendor/google.golang.org/grpc/dialoptions.go b/vendor/google.golang.org/grpc/dialoptions.go new file mode 100644 index 00000000..3d3c9e23 --- /dev/null +++ b/vendor/google.golang.org/grpc/dialoptions.go @@ -0,0 +1,453 @@ +/* + * + * Copyright 2018 gRPC authors. + * + * Licensed 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. + * + */ + +package grpc + +import ( + "fmt" + "net" + "time" + + "golang.org/x/net/context" + "google.golang.org/grpc/balancer" + "google.golang.org/grpc/credentials" + "google.golang.org/grpc/internal" + "google.golang.org/grpc/internal/backoff" + "google.golang.org/grpc/internal/envconfig" + "google.golang.org/grpc/internal/transport" + "google.golang.org/grpc/keepalive" + "google.golang.org/grpc/resolver" + "google.golang.org/grpc/stats" +) + +// dialOptions configure a Dial call. dialOptions are set by the DialOption +// values passed to Dial. +type dialOptions struct { + unaryInt UnaryClientInterceptor + streamInt StreamClientInterceptor + cp Compressor + dc Decompressor + bs backoff.Strategy + block bool + insecure bool + timeout time.Duration + scChan <-chan ServiceConfig + authority string + copts transport.ConnectOptions + callOptions []CallOption + // This is used by v1 balancer dial option WithBalancer to support v1 + // balancer, and also by WithBalancerName dial option. + balancerBuilder balancer.Builder + // This is to support grpclb. + resolverBuilder resolver.Builder + waitForHandshake bool + channelzParentID int64 + disableServiceConfig bool + disableRetry bool +} + +// DialOption configures how we set up the connection. +type DialOption interface { + apply(*dialOptions) +} + +// EmptyDialOption does not alter the dial configuration. It can be embedded in +// another structure to build custom dial options. +// +// This API is EXPERIMENTAL. +type EmptyDialOption struct{} + +func (EmptyDialOption) apply(*dialOptions) {} + +// funcDialOption wraps a function that modifies dialOptions into an +// implementation of the DialOption interface. +type funcDialOption struct { + f func(*dialOptions) +} + +func (fdo *funcDialOption) apply(do *dialOptions) { + fdo.f(do) +} + +func newFuncDialOption(f func(*dialOptions)) *funcDialOption { + return &funcDialOption{ + f: f, + } +} + +// WithWaitForHandshake blocks until the initial settings frame is received from +// the server before assigning RPCs to the connection. Experimental API. +func WithWaitForHandshake() DialOption { + return newFuncDialOption(func(o *dialOptions) { + o.waitForHandshake = true + }) +} + +// WithWriteBufferSize determines how much data can be batched before doing a +// write on the wire. The corresponding memory allocation for this buffer will +// be twice the size to keep syscalls low. The default value for this buffer is +// 32KB. +// +// Zero will disable the write buffer such that each write will be on underlying +// connection. Note: A Send call may not directly translate to a write. +func WithWriteBufferSize(s int) DialOption { + return newFuncDialOption(func(o *dialOptions) { + o.copts.WriteBufferSize = s + }) +} + +// WithReadBufferSize lets you set the size of read buffer, this determines how +// much data can be read at most for each read syscall. +// +// The default value for this buffer is 32KB. Zero will disable read buffer for +// a connection so data framer can access the underlying conn directly. +func WithReadBufferSize(s int) DialOption { + return newFuncDialOption(func(o *dialOptions) { + o.copts.ReadBufferSize = s + }) +} + +// WithInitialWindowSize returns a DialOption which sets the value for initial +// window size on a stream. The lower bound for window size is 64K and any value +// smaller than that will be ignored. +func WithInitialWindowSize(s int32) DialOption { + return newFuncDialOption(func(o *dialOptions) { + o.copts.InitialWindowSize = s + }) +} + +// WithInitialConnWindowSize returns a DialOption which sets the value for +// initial window size on a connection. The lower bound for window size is 64K +// and any value smaller than that will be ignored. +func WithInitialConnWindowSize(s int32) DialOption { + return newFuncDialOption(func(o *dialOptions) { + o.copts.InitialConnWindowSize = s + }) +} + +// WithMaxMsgSize returns a DialOption which sets the maximum message size the +// client can receive. +// +// Deprecated: use WithDefaultCallOptions(MaxCallRecvMsgSize(s)) instead. +func WithMaxMsgSize(s int) DialOption { + return WithDefaultCallOptions(MaxCallRecvMsgSize(s)) +} + +// WithDefaultCallOptions returns a DialOption which sets the default +// CallOptions for calls over the connection. +func WithDefaultCallOptions(cos ...CallOption) DialOption { + return newFuncDialOption(func(o *dialOptions) { + o.callOptions = append(o.callOptions, cos...) + }) +} + +// WithCodec returns a DialOption which sets a codec for message marshaling and +// unmarshaling. +// +// Deprecated: use WithDefaultCallOptions(CallCustomCodec(c)) instead. +func WithCodec(c Codec) DialOption { + return WithDefaultCallOptions(CallCustomCodec(c)) +} + +// WithCompressor returns a DialOption which sets a Compressor to use for +// message compression. It has lower priority than the compressor set by the +// UseCompressor CallOption. +// +// Deprecated: use UseCompressor instead. +func WithCompressor(cp Compressor) DialOption { + return newFuncDialOption(func(o *dialOptions) { + o.cp = cp + }) +} + +// WithDecompressor returns a DialOption which sets a Decompressor to use for +// incoming message decompression. If incoming response messages are encoded +// using the decompressor's Type(), it will be used. Otherwise, the message +// encoding will be used to look up the compressor registered via +// encoding.RegisterCompressor, which will then be used to decompress the +// message. If no compressor is registered for the encoding, an Unimplemented +// status error will be returned. +// +// Deprecated: use encoding.RegisterCompressor instead. +func WithDecompressor(dc Decompressor) DialOption { + return newFuncDialOption(func(o *dialOptions) { + o.dc = dc + }) +} + +// WithBalancer returns a DialOption which sets a load balancer with the v1 API. +// Name resolver will be ignored if this DialOption is specified. +// +// Deprecated: use the new balancer APIs in balancer package and +// WithBalancerName. +func WithBalancer(b Balancer) DialOption { + return newFuncDialOption(func(o *dialOptions) { + o.balancerBuilder = &balancerWrapperBuilder{ + b: b, + } + }) +} + +// WithBalancerName sets the balancer that the ClientConn will be initialized +// with. Balancer registered with balancerName will be used. This function +// panics if no balancer was registered by balancerName. +// +// The balancer cannot be overridden by balancer option specified by service +// config. +// +// This is an EXPERIMENTAL API. +func WithBalancerName(balancerName string) DialOption { + builder := balancer.Get(balancerName) + if builder == nil { + panic(fmt.Sprintf("grpc.WithBalancerName: no balancer is registered for name %v", balancerName)) + } + return newFuncDialOption(func(o *dialOptions) { + o.balancerBuilder = builder + }) +} + +// withResolverBuilder is only for grpclb. +func withResolverBuilder(b resolver.Builder) DialOption { + return newFuncDialOption(func(o *dialOptions) { + o.resolverBuilder = b + }) +} + +// WithServiceConfig returns a DialOption which has a channel to read the +// service configuration. +// +// Deprecated: service config should be received through name resolver, as +// specified here. +// https://github.com/grpc/grpc/blob/master/doc/service_config.md +func WithServiceConfig(c <-chan ServiceConfig) DialOption { + return newFuncDialOption(func(o *dialOptions) { + o.scChan = c + }) +} + +// WithBackoffMaxDelay configures the dialer to use the provided maximum delay +// when backing off after failed connection attempts. +func WithBackoffMaxDelay(md time.Duration) DialOption { + return WithBackoffConfig(BackoffConfig{MaxDelay: md}) +} + +// WithBackoffConfig configures the dialer to use the provided backoff +// parameters after connection failures. +// +// Use WithBackoffMaxDelay until more parameters on BackoffConfig are opened up +// for use. +func WithBackoffConfig(b BackoffConfig) DialOption { + return withBackoff(backoff.Exponential{ + MaxDelay: b.MaxDelay, + }) +} + +// withBackoff sets the backoff strategy used for connectRetryNum after a failed +// connection attempt. +// +// This can be exported if arbitrary backoff strategies are allowed by gRPC. +func withBackoff(bs backoff.Strategy) DialOption { + return newFuncDialOption(func(o *dialOptions) { + o.bs = bs + }) +} + +// WithBlock returns a DialOption which makes caller of Dial blocks until the +// underlying connection is up. Without this, Dial returns immediately and +// connecting the server happens in background. +func WithBlock() DialOption { + return newFuncDialOption(func(o *dialOptions) { + o.block = true + }) +} + +// WithInsecure returns a DialOption which disables transport security for this +// ClientConn. Note that transport security is required unless WithInsecure is +// set. +func WithInsecure() DialOption { + return newFuncDialOption(func(o *dialOptions) { + o.insecure = true + }) +} + +// WithTransportCredentials returns a DialOption which configures a connection +// level security credentials (e.g., TLS/SSL). +func WithTransportCredentials(creds credentials.TransportCredentials) DialOption { + return newFuncDialOption(func(o *dialOptions) { + o.copts.TransportCredentials = creds + }) +} + +// WithPerRPCCredentials returns a DialOption which sets credentials and places +// auth state on each outbound RPC. +func WithPerRPCCredentials(creds credentials.PerRPCCredentials) DialOption { + return newFuncDialOption(func(o *dialOptions) { + o.copts.PerRPCCredentials = append(o.copts.PerRPCCredentials, creds) + }) +} + +// WithTimeout returns a DialOption that configures a timeout for dialing a +// ClientConn initially. This is valid if and only if WithBlock() is present. +// +// Deprecated: use DialContext and context.WithTimeout instead. +func WithTimeout(d time.Duration) DialOption { + return newFuncDialOption(func(o *dialOptions) { + o.timeout = d + }) +} + +func withContextDialer(f func(context.Context, string) (net.Conn, error)) DialOption { + return newFuncDialOption(func(o *dialOptions) { + o.copts.Dialer = f + }) +} + +func init() { + internal.WithContextDialer = withContextDialer + internal.WithResolverBuilder = withResolverBuilder +} + +// WithDialer returns a DialOption that specifies a function to use for dialing +// network addresses. If FailOnNonTempDialError() is set to true, and an error +// is returned by f, gRPC checks the error's Temporary() method to decide if it +// should try to reconnect to the network address. +func WithDialer(f func(string, time.Duration) (net.Conn, error)) DialOption { + return withContextDialer( + func(ctx context.Context, addr string) (net.Conn, error) { + if deadline, ok := ctx.Deadline(); ok { + return f(addr, deadline.Sub(time.Now())) + } + return f(addr, 0) + }) +} + +// WithStatsHandler returns a DialOption that specifies the stats handler for +// all the RPCs and underlying network connections in this ClientConn. +func WithStatsHandler(h stats.Handler) DialOption { + return newFuncDialOption(func(o *dialOptions) { + o.copts.StatsHandler = h + }) +} + +// FailOnNonTempDialError returns a DialOption that specifies if gRPC fails on +// non-temporary dial errors. If f is true, and dialer returns a non-temporary +// error, gRPC will fail the connection to the network address and won't try to +// reconnect. The default value of FailOnNonTempDialError is false. +// +// FailOnNonTempDialError only affects the initial dial, and does not do +// anything useful unless you are also using WithBlock(). +// +// This is an EXPERIMENTAL API. +func FailOnNonTempDialError(f bool) DialOption { + return newFuncDialOption(func(o *dialOptions) { + o.copts.FailOnNonTempDialError = f + }) +} + +// WithUserAgent returns a DialOption that specifies a user agent string for all +// the RPCs. +func WithUserAgent(s string) DialOption { + return newFuncDialOption(func(o *dialOptions) { + o.copts.UserAgent = s + }) +} + +// WithKeepaliveParams returns a DialOption that specifies keepalive parameters +// for the client transport. +func WithKeepaliveParams(kp keepalive.ClientParameters) DialOption { + return newFuncDialOption(func(o *dialOptions) { + o.copts.KeepaliveParams = kp + }) +} + +// WithUnaryInterceptor returns a DialOption that specifies the interceptor for +// unary RPCs. +func WithUnaryInterceptor(f UnaryClientInterceptor) DialOption { + return newFuncDialOption(func(o *dialOptions) { + o.unaryInt = f + }) +} + +// WithStreamInterceptor returns a DialOption that specifies the interceptor for +// streaming RPCs. +func WithStreamInterceptor(f StreamClientInterceptor) DialOption { + return newFuncDialOption(func(o *dialOptions) { + o.streamInt = f + }) +} + +// WithAuthority returns a DialOption that specifies the value to be used as the +// :authority pseudo-header. This value only works with WithInsecure and has no +// effect if TransportCredentials are present. +func WithAuthority(a string) DialOption { + return newFuncDialOption(func(o *dialOptions) { + o.authority = a + }) +} + +// WithChannelzParentID returns a DialOption that specifies the channelz ID of +// current ClientConn's parent. This function is used in nested channel creation +// (e.g. grpclb dial). +func WithChannelzParentID(id int64) DialOption { + return newFuncDialOption(func(o *dialOptions) { + o.channelzParentID = id + }) +} + +// WithDisableServiceConfig returns a DialOption that causes grpc to ignore any +// service config provided by the resolver and provides a hint to the resolver +// to not fetch service configs. +func WithDisableServiceConfig() DialOption { + return newFuncDialOption(func(o *dialOptions) { + o.disableServiceConfig = true + }) +} + +// WithDisableRetry returns a DialOption that disables retries, even if the +// service config enables them. This does not impact transparent retries, which +// will happen automatically if no data is written to the wire or if the RPC is +// unprocessed by the remote server. +// +// Retry support is currently disabled by default, but will be enabled by +// default in the future. Until then, it may be enabled by setting the +// environment variable "GRPC_GO_RETRY" to "on". +// +// This API is EXPERIMENTAL. +func WithDisableRetry() DialOption { + return newFuncDialOption(func(o *dialOptions) { + o.disableRetry = true + }) +} + +// WithMaxHeaderListSize returns a DialOption that specifies the maximum +// (uncompressed) size of header list that the client is prepared to accept. +func WithMaxHeaderListSize(s uint32) DialOption { + return newFuncDialOption(func(o *dialOptions) { + o.copts.MaxHeaderListSize = &s + }) +} + +func defaultDialOptions() dialOptions { + return dialOptions{ + disableRetry: !envconfig.Retry, + copts: transport.ConnectOptions{ + WriteBufferSize: defaultWriteBufSize, + ReadBufferSize: defaultReadBufSize, + }, + } +} diff --git a/vendor/google.golang.org/grpc/go16.go b/vendor/google.golang.org/grpc/go16.go index 535ee935..b1db21af 100644 --- a/vendor/google.golang.org/grpc/go16.go +++ b/vendor/google.golang.org/grpc/go16.go @@ -28,8 +28,8 @@ import ( "golang.org/x/net/context" "google.golang.org/grpc/codes" + "google.golang.org/grpc/internal/transport" "google.golang.org/grpc/status" - "google.golang.org/grpc/transport" ) // dialContext connects to the address on the named network. @@ -50,12 +50,13 @@ func toRPCErr(err error) error { if err == nil || err == io.EOF { return err } + if err == io.ErrUnexpectedEOF { + return status.Error(codes.Internal, err.Error()) + } if _, ok := status.FromError(err); ok { return err } switch e := err.(type) { - case transport.StreamError: - return status.Error(e.Code, e.Desc) case transport.ConnectionError: return status.Error(codes.Unavailable, e.Desc) default: diff --git a/vendor/google.golang.org/grpc/go17.go b/vendor/google.golang.org/grpc/go17.go index ec676a93..71a72e8f 100644 --- a/vendor/google.golang.org/grpc/go17.go +++ b/vendor/google.golang.org/grpc/go17.go @@ -29,8 +29,8 @@ import ( netctx "golang.org/x/net/context" "google.golang.org/grpc/codes" + "google.golang.org/grpc/internal/transport" "google.golang.org/grpc/status" - "google.golang.org/grpc/transport" ) // dialContext connects to the address on the named network. @@ -51,12 +51,13 @@ func toRPCErr(err error) error { if err == nil || err == io.EOF { return err } + if err == io.ErrUnexpectedEOF { + return status.Error(codes.Internal, err.Error()) + } if _, ok := status.FromError(err); ok { return err } switch e := err.(type) { - case transport.StreamError: - return status.Error(e.Code, e.Desc) case transport.ConnectionError: return status.Error(codes.Unavailable, e.Desc) default: diff --git a/vendor/google.golang.org/grpc/internal/channelz/types.go b/vendor/google.golang.org/grpc/internal/channelz/types.go index 153d7534..6fd6bb38 100644 --- a/vendor/google.golang.org/grpc/internal/channelz/types.go +++ b/vendor/google.golang.org/grpc/internal/channelz/types.go @@ -23,6 +23,7 @@ import ( "time" "google.golang.org/grpc/connectivity" + "google.golang.org/grpc/credentials" "google.golang.org/grpc/grpclog" ) @@ -281,9 +282,9 @@ type SocketInternalMetric struct { RemoteAddr net.Addr // Optional, represents the name of the remote endpoint, if different than // the original target name. - RemoteName string - //TODO: socket options - //TODO: Security + RemoteName string + SocketOptions *SocketOptionData + Security credentials.ChannelzSecurityValue } // Socket is the interface that should be satisfied in order to be tracked by diff --git a/vendor/google.golang.org/grpc/internal/channelz/types_linux.go b/vendor/google.golang.org/grpc/internal/channelz/types_linux.go new file mode 100644 index 00000000..07215396 --- /dev/null +++ b/vendor/google.golang.org/grpc/internal/channelz/types_linux.go @@ -0,0 +1,53 @@ +// +build !appengine,go1.7 + +/* + * + * Copyright 2018 gRPC authors. + * + * Licensed 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. + * + */ + +package channelz + +import ( + "syscall" + + "golang.org/x/sys/unix" +) + +// SocketOptionData defines the struct to hold socket option data, and related +// getter function to obtain info from fd. +type SocketOptionData struct { + Linger *unix.Linger + RecvTimeout *unix.Timeval + SendTimeout *unix.Timeval + TCPInfo *unix.TCPInfo +} + +// Getsockopt defines the function to get socket options requested by channelz. +// It is to be passed to syscall.RawConn.Control(). +func (s *SocketOptionData) Getsockopt(fd uintptr) { + if v, err := unix.GetsockoptLinger(int(fd), syscall.SOL_SOCKET, syscall.SO_LINGER); err == nil { + s.Linger = v + } + if v, err := unix.GetsockoptTimeval(int(fd), syscall.SOL_SOCKET, syscall.SO_RCVTIMEO); err == nil { + s.RecvTimeout = v + } + if v, err := unix.GetsockoptTimeval(int(fd), syscall.SOL_SOCKET, syscall.SO_SNDTIMEO); err == nil { + s.SendTimeout = v + } + if v, err := unix.GetsockoptTCPInfo(int(fd), syscall.SOL_TCP, syscall.TCP_INFO); err == nil { + s.TCPInfo = v + } +} diff --git a/vendor/google.golang.org/grpc/internal/channelz/types_nonlinux.go b/vendor/google.golang.org/grpc/internal/channelz/types_nonlinux.go new file mode 100644 index 00000000..884910c4 --- /dev/null +++ b/vendor/google.golang.org/grpc/internal/channelz/types_nonlinux.go @@ -0,0 +1,38 @@ +// +build !linux appengine !go1.7 + +/* + * + * Copyright 2018 gRPC authors. + * + * Licensed 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. + * + */ + +package channelz + +import "google.golang.org/grpc/grpclog" + +func init() { + grpclog.Infof("Channelz: socket options are not supported on non-linux os and appengine.") +} + +// SocketOptionData defines the struct to hold socket option data, and related +// getter function to obtain info from fd. +// Windows OS doesn't support Socket Option +type SocketOptionData struct { +} + +// Getsockopt defines the function to get socket options requested by channelz. +// It is to be passed to syscall.RawConn.Control(). +// Windows OS doesn't support Socket Option +func (s *SocketOptionData) Getsockopt(fd uintptr) {} diff --git a/vendor/google.golang.org/grpc/internal/channelz/util_linux_go19.go b/vendor/google.golang.org/grpc/internal/channelz/util_linux_go19.go new file mode 100644 index 00000000..e1e9e32d --- /dev/null +++ b/vendor/google.golang.org/grpc/internal/channelz/util_linux_go19.go @@ -0,0 +1,39 @@ +// +build linux,go1.9,!appengine + +/* + * + * Copyright 2018 gRPC authors. + * + * Licensed 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. + * + */ + +package channelz + +import ( + "syscall" +) + +// GetSocketOption gets the socket option info of the conn. +func GetSocketOption(socket interface{}) *SocketOptionData { + c, ok := socket.(syscall.Conn) + if !ok { + return nil + } + data := &SocketOptionData{} + if rawConn, err := c.SyscallConn(); err == nil { + rawConn.Control(data.Getsockopt) + return data + } + return nil +} diff --git a/vendor/google.golang.org/grpc/internal/channelz/util_nonlinux_pre_go19.go b/vendor/google.golang.org/grpc/internal/channelz/util_nonlinux_pre_go19.go new file mode 100644 index 00000000..1d4da952 --- /dev/null +++ b/vendor/google.golang.org/grpc/internal/channelz/util_nonlinux_pre_go19.go @@ -0,0 +1,26 @@ +// +build !linux !go1.9 appengine + +/* + * + * Copyright 2018 gRPC authors. + * + * Licensed 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. + * + */ + +package channelz + +// GetSocketOption gets the socket option info of the conn. +func GetSocketOption(c interface{}) *SocketOptionData { + return nil +} diff --git a/vendor/google.golang.org/grpc/envconfig.go b/vendor/google.golang.org/grpc/internal/envconfig/envconfig.go similarity index 70% rename from vendor/google.golang.org/grpc/envconfig.go rename to vendor/google.golang.org/grpc/internal/envconfig/envconfig.go index d50178e5..3ee8740f 100644 --- a/vendor/google.golang.org/grpc/envconfig.go +++ b/vendor/google.golang.org/grpc/internal/envconfig/envconfig.go @@ -16,7 +16,8 @@ * */ -package grpc +// Package envconfig contains grpc settings configured by environment variables. +package envconfig import ( "os" @@ -24,14 +25,11 @@ import ( ) const ( - envConfigPrefix = "GRPC_GO_" - envConfigStickinessStr = envConfigPrefix + "STICKINESS" + prefix = "GRPC_GO_" + retryStr = prefix + "RETRY" ) var ( - envConfigStickinessOn bool + // Retry is set if retry is explicitly enabled via "GRPC_GO_RETRY=on". + Retry = strings.EqualFold(os.Getenv(retryStr), "on") ) - -func init() { - envConfigStickinessOn = strings.EqualFold(os.Getenv(envConfigStickinessStr), "on") -} diff --git a/vendor/google.golang.org/grpc/internal/internal.go b/vendor/google.golang.org/grpc/internal/internal.go index cd34267f..c35afb05 100644 --- a/vendor/google.golang.org/grpc/internal/internal.go +++ b/vendor/google.golang.org/grpc/internal/internal.go @@ -21,14 +21,6 @@ package internal var ( - - // TestingUseHandlerImpl enables the http.Handler-based server implementation. - // It must be called before Serve and requires TLS credentials. - // - // The provided grpcServer must be of type *grpc.Server. It is untyped - // for circular dependency reasons. - TestingUseHandlerImpl func(grpcServer interface{}) - // WithContextDialer is exported by clientconn.go WithContextDialer interface{} // func(context.Context, string) (net.Conn, error) grpc.DialOption // WithResolverBuilder is exported by clientconn.go diff --git a/vendor/google.golang.org/grpc/transport/bdp_estimator.go b/vendor/google.golang.org/grpc/internal/transport/bdp_estimator.go similarity index 100% rename from vendor/google.golang.org/grpc/transport/bdp_estimator.go rename to vendor/google.golang.org/grpc/internal/transport/bdp_estimator.go diff --git a/vendor/google.golang.org/grpc/transport/controlbuf.go b/vendor/google.golang.org/grpc/internal/transport/controlbuf.go similarity index 81% rename from vendor/google.golang.org/grpc/transport/controlbuf.go rename to vendor/google.golang.org/grpc/internal/transport/controlbuf.go index 5c5891a1..204ba158 100644 --- a/vendor/google.golang.org/grpc/transport/controlbuf.go +++ b/vendor/google.golang.org/grpc/internal/transport/controlbuf.go @@ -104,7 +104,6 @@ type headerFrame struct { type cleanupStream struct { streamID uint32 - idPtr *uint32 rst bool rstCode http2.ErrCode onWrite func() @@ -138,9 +137,6 @@ type outgoingSettings struct { ss []http2.Setting } -type settingsAck struct { -} - type incomingGoAway struct { } @@ -229,6 +225,12 @@ func (l *outStreamList) dequeue() *outStream { return b } +// controlBuffer is a way to pass information to loopy. +// Information is passed as specific struct types called control frames. +// A control frame not only represents data, messages or headers to be sent out +// but can also be used to instruct loopy to update its internal state. +// It shouldn't be confused with an HTTP2 frame, although some of the control frames +// like dataFrame and headerFrame do go out on wire as HTTP2 frames. type controlBuffer struct { ch chan struct{} done <-chan struct{} @@ -279,6 +281,21 @@ func (c *controlBuffer) executeAndPut(f func(it interface{}) bool, it interface{ return true, nil } +// Note argument f should never be nil. +func (c *controlBuffer) execute(f func(it interface{}) bool, it interface{}) (bool, error) { + c.mu.Lock() + if c.err != nil { + c.mu.Unlock() + return false, c.err + } + if !f(it) { // f wasn't successful + c.mu.Unlock() + return false, nil + } + c.mu.Unlock() + return true, nil +} + func (c *controlBuffer) get(block bool) (interface{}, error) { for { c.mu.Lock() @@ -335,13 +352,29 @@ const ( serverSide ) +// Loopy receives frames from the control buffer. +// Each frame is handled individually; most of the work done by loopy goes +// into handling data frames. Loopy maintains a queue of active streams, and each +// stream maintains a queue of data frames; as loopy receives data frames +// it gets added to the queue of the relevant stream. +// Loopy goes over this list of active streams by processing one node every iteration, +// thereby closely resemebling to a round-robin scheduling over all streams. While +// processing a stream, loopy writes out data bytes from this stream capped by the min +// of http2MaxFrameLen, connection-level flow control and stream-level flow control. type loopyWriter struct { - side side - cbuf *controlBuffer - sendQuota uint32 - oiws uint32 // outbound initial window size. - estdStreams map[uint32]*outStream // Established streams. - activeStreams *outStreamList // Streams that are sending data. + side side + cbuf *controlBuffer + sendQuota uint32 + oiws uint32 // outbound initial window size. + // estdStreams is map of all established streams that are not cleaned-up yet. + // On client-side, this is all streams whose headers were sent out. + // On server-side, this is all streams whose headers were received. + estdStreams map[uint32]*outStream // Established streams. + // activeStreams is a linked-list of all streams that have data to send and some + // stream-level flow control quota. + // Each of these streams internally have a list of data items(and perhaps trailers + // on the server-side) to be sent out. + activeStreams *outStreamList framer *framer hBuf *bytes.Buffer // The buffer for HPACK encoding. hEnc *hpack.Encoder // HPACK encoder. @@ -372,6 +405,21 @@ func newLoopyWriter(s side, fr *framer, cbuf *controlBuffer, bdpEst *bdpEstimato const minBatchSize = 1000 // run should be run in a separate goroutine. +// It reads control frames from controlBuf and processes them by: +// 1. Updating loopy's internal state, or/and +// 2. Writing out HTTP2 frames on the wire. +// +// Loopy keeps all active streams with data to send in a linked-list. +// All streams in the activeStreams linked-list must have both: +// 1. Data to send, and +// 2. Stream level flow control quota available. +// +// In each iteration of run loop, other than processing the incoming control +// frame, loopy calls processData, which processes one node from the activeStreams linked-list. +// This results in writing of HTTP2 frames into an underlying write buffer. +// When there's no more control frames to read from controlBuf, loopy flushes the write buffer. +// As an optimization, to increase the batch size for each flush, loopy yields the processor, once +// if the batch size is too low to give stream goroutines a chance to fill it up. func (l *loopyWriter) run() (err error) { defer func() { if err == ErrConnClosing { @@ -696,21 +744,30 @@ func (l *loopyWriter) applySettings(ss []http2.Setting) error { return nil } +// processData removes the first stream from active streams, writes out at most 16KB +// of its data and then puts it at the end of activeStreams if there's still more data +// to be sent and stream has some stream-level flow control. func (l *loopyWriter) processData() (bool, error) { if l.sendQuota == 0 { return true, nil } - str := l.activeStreams.dequeue() + str := l.activeStreams.dequeue() // Remove the first stream. if str == nil { return true, nil } - dataItem := str.itl.peek().(*dataFrame) - if len(dataItem.h) == 0 && len(dataItem.d) == 0 { + dataItem := str.itl.peek().(*dataFrame) // Peek at the first data item this stream. + // A data item is represented by a dataFrame, since it later translates into + // multiple HTTP2 data frames. + // Every dataFrame has two buffers; h that keeps grpc-message header and d that is acutal data. + // As an optimization to keep wire traffic low, data from d is copied to h to make as big as the + // maximum possilbe HTTP2 frame size. + + if len(dataItem.h) == 0 && len(dataItem.d) == 0 { // Empty data frame // Client sends out empty data frame with endStream = true if err := l.framer.fr.WriteData(dataItem.streamID, dataItem.endStream, nil); err != nil { return false, err } - str.itl.dequeue() + str.itl.dequeue() // remove the empty data item from stream if str.itl.isEmpty() { str.state = empty } else if trailer, ok := str.itl.peek().(*headerFrame); ok { // the next item is trailers. @@ -739,21 +796,20 @@ func (l *loopyWriter) processData() (bool, error) { if len(buf) < size { size = len(buf) } - if strQuota := int(l.oiws) - str.bytesOutStanding; strQuota <= 0 { + if strQuota := int(l.oiws) - str.bytesOutStanding; strQuota <= 0 { // stream-level flow control. str.state = waitingOnStreamQuota return false, nil } else if strQuota < size { size = strQuota } - if l.sendQuota < uint32(size) { + if l.sendQuota < uint32(size) { // connection-level flow control. size = int(l.sendQuota) } // Now that outgoing flow controls are checked we can replenish str's write quota str.wq.replenish(size) var endStream bool - // This last data message on this stream and all - // of it can be written in this go. + // If this is the last data message on this stream and all of it can be written in this iteration. if dataItem.endStream && size == len(buf) { // buf contains either data or it contains header but data is empty. if idx == 1 || len(dataItem.d) == 0 { diff --git a/vendor/google.golang.org/grpc/internal/transport/defaults.go b/vendor/google.golang.org/grpc/internal/transport/defaults.go new file mode 100644 index 00000000..9fa306b2 --- /dev/null +++ b/vendor/google.golang.org/grpc/internal/transport/defaults.go @@ -0,0 +1,49 @@ +/* + * + * Copyright 2018 gRPC authors. + * + * Licensed 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. + * + */ + +package transport + +import ( + "math" + "time" +) + +const ( + // The default value of flow control window size in HTTP2 spec. + defaultWindowSize = 65535 + // The initial window size for flow control. + initialWindowSize = defaultWindowSize // for an RPC + infinity = time.Duration(math.MaxInt64) + defaultClientKeepaliveTime = infinity + defaultClientKeepaliveTimeout = 20 * time.Second + defaultMaxStreamsClient = 100 + defaultMaxConnectionIdle = infinity + defaultMaxConnectionAge = infinity + defaultMaxConnectionAgeGrace = infinity + defaultServerKeepaliveTime = 2 * time.Hour + defaultServerKeepaliveTimeout = 20 * time.Second + defaultKeepalivePolicyMinTime = 5 * time.Minute + // max window limit set by HTTP2 Specs. + maxWindowSize = math.MaxInt32 + // defaultWriteQuota is the default value for number of data + // bytes that each stream can schedule before some of it being + // flushed out. + defaultWriteQuota = 64 * 1024 + defaultClientMaxHeaderListSize = uint32(16 << 20) + defaultServerMaxHeaderListSize = uint32(16 << 20) +) diff --git a/vendor/google.golang.org/grpc/transport/flowcontrol.go b/vendor/google.golang.org/grpc/internal/transport/flowcontrol.go similarity index 86% rename from vendor/google.golang.org/grpc/transport/flowcontrol.go rename to vendor/google.golang.org/grpc/internal/transport/flowcontrol.go index bbf98b6f..5ea997a7 100644 --- a/vendor/google.golang.org/grpc/transport/flowcontrol.go +++ b/vendor/google.golang.org/grpc/internal/transport/flowcontrol.go @@ -23,30 +23,6 @@ import ( "math" "sync" "sync/atomic" - "time" -) - -const ( - // The default value of flow control window size in HTTP2 spec. - defaultWindowSize = 65535 - // The initial window size for flow control. - initialWindowSize = defaultWindowSize // for an RPC - infinity = time.Duration(math.MaxInt64) - defaultClientKeepaliveTime = infinity - defaultClientKeepaliveTimeout = 20 * time.Second - defaultMaxStreamsClient = 100 - defaultMaxConnectionIdle = infinity - defaultMaxConnectionAge = infinity - defaultMaxConnectionAgeGrace = infinity - defaultServerKeepaliveTime = 2 * time.Hour - defaultServerKeepaliveTimeout = 20 * time.Second - defaultKeepalivePolicyMinTime = 5 * time.Minute - // max window limit set by HTTP2 Specs. - maxWindowSize = math.MaxInt32 - // defaultWriteQuota is the default value for number of data - // bytes that each stream can schedule before some of it being - // flushed out. - defaultWriteQuota = 64 * 1024 ) // writeQuota is a soft limit on the amount of data a stream can diff --git a/vendor/google.golang.org/grpc/transport/go16.go b/vendor/google.golang.org/grpc/internal/transport/go16.go similarity index 77% rename from vendor/google.golang.org/grpc/transport/go16.go rename to vendor/google.golang.org/grpc/internal/transport/go16.go index 5babcf9b..e0d00115 100644 --- a/vendor/google.golang.org/grpc/transport/go16.go +++ b/vendor/google.golang.org/grpc/internal/transport/go16.go @@ -25,6 +25,7 @@ import ( "net/http" "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" "golang.org/x/net/context" ) @@ -34,15 +35,15 @@ func dialContext(ctx context.Context, network, address string) (net.Conn, error) return (&net.Dialer{Cancel: ctx.Done()}).Dial(network, address) } -// ContextErr converts the error from context package into a StreamError. -func ContextErr(err error) StreamError { +// ContextErr converts the error from context package into a status error. +func ContextErr(err error) error { switch err { case context.DeadlineExceeded: - return streamErrorf(codes.DeadlineExceeded, "%v", err) + return status.Error(codes.DeadlineExceeded, err.Error()) case context.Canceled: - return streamErrorf(codes.Canceled, "%v", err) + return status.Error(codes.Canceled, err.Error()) } - return streamErrorf(codes.Internal, "Unexpected error from context packet: %v", err) + return status.Errorf(codes.Internal, "Unexpected error from context packet: %v", err) } // contextFromRequest returns a background context. diff --git a/vendor/google.golang.org/grpc/transport/go17.go b/vendor/google.golang.org/grpc/internal/transport/go17.go similarity index 78% rename from vendor/google.golang.org/grpc/transport/go17.go rename to vendor/google.golang.org/grpc/internal/transport/go17.go index b7fa6bdb..4d515b00 100644 --- a/vendor/google.golang.org/grpc/transport/go17.go +++ b/vendor/google.golang.org/grpc/internal/transport/go17.go @@ -26,6 +26,7 @@ import ( "net/http" "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" netctx "golang.org/x/net/context" ) @@ -35,15 +36,15 @@ func dialContext(ctx context.Context, network, address string) (net.Conn, error) return (&net.Dialer{}).DialContext(ctx, network, address) } -// ContextErr converts the error from context package into a StreamError. -func ContextErr(err error) StreamError { +// ContextErr converts the error from context package into a status error. +func ContextErr(err error) error { switch err { case context.DeadlineExceeded, netctx.DeadlineExceeded: - return streamErrorf(codes.DeadlineExceeded, "%v", err) + return status.Error(codes.DeadlineExceeded, err.Error()) case context.Canceled, netctx.Canceled: - return streamErrorf(codes.Canceled, "%v", err) + return status.Error(codes.Canceled, err.Error()) } - return streamErrorf(codes.Internal, "Unexpected error from context packet: %v", err) + return status.Errorf(codes.Internal, "Unexpected error from context packet: %v", err) } // contextFromRequest returns a context from the HTTP Request. diff --git a/vendor/google.golang.org/grpc/transport/handler_server.go b/vendor/google.golang.org/grpc/internal/transport/handler_server.go similarity index 96% rename from vendor/google.golang.org/grpc/transport/handler_server.go rename to vendor/google.golang.org/grpc/internal/transport/handler_server.go index f71b7482..c6fb4b9c 100644 --- a/vendor/google.golang.org/grpc/transport/handler_server.go +++ b/vendor/google.golang.org/grpc/internal/transport/handler_server.go @@ -80,7 +80,7 @@ func NewServerHandlerTransport(w http.ResponseWriter, r *http.Request, stats sta if v := r.Header.Get("grpc-timeout"); v != "" { to, err := decodeTimeout(v) if err != nil { - return nil, streamErrorf(codes.Internal, "malformed time-out: %v", err) + return nil, status.Errorf(codes.Internal, "malformed time-out: %v", err) } st.timeoutSet = true st.timeout = to @@ -98,7 +98,7 @@ func NewServerHandlerTransport(w http.ResponseWriter, r *http.Request, stats sta for _, v := range vv { v, err := decodeMetadataHeader(k, v) if err != nil { - return nil, streamErrorf(codes.Internal, "malformed binary metadata: %v", err) + return nil, status.Errorf(codes.Internal, "malformed binary metadata: %v", err) } metakv = append(metakv, k, v) } @@ -237,9 +237,9 @@ func (ht *serverHandlerTransport) WriteStatus(s *Stream, st *status.Status) erro if ht.stats != nil { ht.stats.HandleRPC(s.Context(), &stats.OutTrailer{}) } - ht.Close() close(ht.writes) } + ht.Close() return err } @@ -274,9 +274,7 @@ func (ht *serverHandlerTransport) Write(s *Stream, hdr []byte, data []byte, opts ht.writeCommonHeaders(s) ht.rw.Write(hdr) ht.rw.Write(data) - if !opts.Delay { - ht.rw.(http.Flusher).Flush() - } + ht.rw.(http.Flusher).Flush() }) } @@ -328,11 +326,11 @@ func (ht *serverHandlerTransport) HandleStreams(startStream func(*Stream), trace go func() { select { case <-requestOver: - return case <-ht.closedCh: case <-clientGone: } cancel() + ht.Close() }() req := ht.req @@ -434,18 +432,18 @@ func (ht *serverHandlerTransport) Drain() { // * io.EOF // * io.ErrUnexpectedEOF // * of type transport.ConnectionError -// * of type transport.StreamError +// * an error from the status package func mapRecvMsgError(err error) error { if err == io.EOF || err == io.ErrUnexpectedEOF { return err } if se, ok := err.(http2.StreamError); ok { if code, ok := http2ErrConvTab[se.Code]; ok { - return StreamError{ - Code: code, - Desc: se.Error(), - } + return status.Error(code, se.Error()) } } + if strings.Contains(err.Error(), "body closed by handler") { + return status.Error(codes.Canceled, err.Error()) + } return connectionErrorf(true, err, err.Error()) } diff --git a/vendor/google.golang.org/grpc/transport/http2_client.go b/vendor/google.golang.org/grpc/internal/transport/http2_client.go similarity index 87% rename from vendor/google.golang.org/grpc/transport/http2_client.go rename to vendor/google.golang.org/grpc/internal/transport/http2_client.go index eaf007eb..904e790c 100644 --- a/vendor/google.golang.org/grpc/transport/http2_client.go +++ b/vendor/google.golang.org/grpc/internal/transport/http2_client.go @@ -22,6 +22,7 @@ import ( "io" "math" "net" + "strconv" "strings" "sync" "sync/atomic" @@ -84,6 +85,9 @@ type http2Client struct { initialWindowSize int32 + // configured by peer through SETTINGS_MAX_HEADER_LIST_SIZE + maxSendHeaderListSize *uint32 + bdpEst *bdpEstimator // onSuccess is a callback that client transport calls upon // receiving server preface to signal that a succefull HTTP2 @@ -107,19 +111,7 @@ type http2Client struct { // Fields below are for channelz metric collection. channelzID int64 // channelz unique identification number - czmu sync.RWMutex - kpCount int64 - // The number of streams that have started, including already finished ones. - streamsStarted int64 - // The number of streams that have ended successfully by receiving EoS bit set - // frame from server. - streamsSucceeded int64 - streamsFailed int64 - lastStreamCreated time.Time - msgSent int64 - msgRecv int64 - lastMsgSent time.Time - lastMsgRecv time.Time + czData *channelzData } func dial(ctx context.Context, fn func(context.Context, string) (net.Conn, error), addr string) (net.Conn, error) { @@ -148,7 +140,7 @@ func isTemporary(err error) bool { // newHTTP2Client constructs a connected ClientTransport to addr based on HTTP2 // and starts to receive messages on it. Non-nil error returns if construction // fails. -func newHTTP2Client(connectCtx, ctx context.Context, addr TargetInfo, opts ConnectOptions, onSuccess func()) (_ ClientTransport, err error) { +func newHTTP2Client(connectCtx, ctx context.Context, addr TargetInfo, opts ConnectOptions, onSuccess func()) (_ *http2Client, err error) { scheme := "http" ctx, cancel := context.WithCancel(ctx) defer func() { @@ -196,13 +188,11 @@ func newHTTP2Client(connectCtx, ctx context.Context, addr TargetInfo, opts Conne icwz = opts.InitialConnWindowSize dynamicWindow = false } - writeBufSize := defaultWriteBufSize - if opts.WriteBufferSize > 0 { - writeBufSize = opts.WriteBufferSize - } - readBufSize := defaultReadBufSize - if opts.ReadBufferSize > 0 { - readBufSize = opts.ReadBufferSize + writeBufSize := opts.WriteBufferSize + readBufSize := opts.ReadBufferSize + maxHeaderListSize := defaultClientMaxHeaderListSize + if opts.MaxHeaderListSize != nil { + maxHeaderListSize = *opts.MaxHeaderListSize } t := &http2Client{ ctx: ctx, @@ -218,7 +208,7 @@ func newHTTP2Client(connectCtx, ctx context.Context, addr TargetInfo, opts Conne writerDone: make(chan struct{}), goAway: make(chan struct{}), awakenKeepalive: make(chan struct{}, 1), - framer: newFramer(conn, writeBufSize, readBufSize), + framer: newFramer(conn, writeBufSize, readBufSize, maxHeaderListSize), fc: &trInFlow{limit: uint32(icwz)}, scheme: scheme, activeStreams: make(map[uint32]*Stream), @@ -232,6 +222,7 @@ func newHTTP2Client(connectCtx, ctx context.Context, addr TargetInfo, opts Conne maxConcurrentStreams: defaultMaxStreamsClient, streamQuota: defaultMaxStreamsClient, streamsQuotaAvailable: make(chan struct{}, 1), + czData: new(channelzData), } t.controlBuf = newControlBuffer(t.ctxDone) if opts.InitialWindowSize >= defaultWindowSize { @@ -278,14 +269,21 @@ func newHTTP2Client(connectCtx, ctx context.Context, addr TargetInfo, opts Conne t.Close() return nil, connectionErrorf(true, err, "transport: preface mismatch, wrote %d bytes; want %d", n, len(clientPreface)) } + var ss []http2.Setting + if t.initialWindowSize != defaultWindowSize { - err = t.framer.fr.WriteSettings(http2.Setting{ + ss = append(ss, http2.Setting{ ID: http2.SettingInitialWindowSize, Val: uint32(t.initialWindowSize), }) - } else { - err = t.framer.fr.WriteSettings() } + if opts.MaxHeaderListSize != nil { + ss = append(ss, http2.Setting{ + ID: http2.SettingMaxHeaderListSize, + Val: *opts.MaxHeaderListSize, + }) + } + err = t.framer.fr.WriteSettings(ss...) if err != nil { t.Close() return nil, connectionErrorf(true, err, "transport: failed to write initial settings frame: %v", err) @@ -379,6 +377,9 @@ func (t *http2Client) createHeaderFields(ctx context.Context, callHdr *CallHdr) headerFields = append(headerFields, hpack.HeaderField{Name: "content-type", Value: contentType(callHdr.ContentSubtype)}) headerFields = append(headerFields, hpack.HeaderField{Name: "user-agent", Value: t.userAgent}) headerFields = append(headerFields, hpack.HeaderField{Name: "te", Value: "trailers"}) + if callHdr.PreviousAttempts > 0 { + headerFields = append(headerFields, hpack.HeaderField{Name: "grpc-previous-rpc-attempts", Value: strconv.Itoa(callHdr.PreviousAttempts)}) + } if callHdr.SendCompress != "" { headerFields = append(headerFields, hpack.HeaderField{Name: "grpc-encoding", Value: callHdr.SendCompress}) @@ -464,7 +465,7 @@ func (t *http2Client) getTrAuthData(ctx context.Context, audience string) (map[s return nil, err } - return nil, streamErrorf(codes.Unauthenticated, "transport: %v", err) + return nil, status.Errorf(codes.Unauthenticated, "transport: %v", err) } for k, v := range data { // Capital header names are illegal in HTTP/2. @@ -482,11 +483,11 @@ func (t *http2Client) getCallAuthData(ctx context.Context, audience string, call // options, then both sets of credentials will be applied. if callCreds := callHdr.Creds; callCreds != nil { if !t.isSecure && callCreds.RequireTransportSecurity() { - return nil, streamErrorf(codes.Unauthenticated, "transport: cannot send secure credentials on an insecure connection") + return nil, status.Error(codes.Unauthenticated, "transport: cannot send secure credentials on an insecure connection") } data, err := callCreds.GetRequestMetadata(ctx, audience) if err != nil { - return nil, streamErrorf(codes.Internal, "transport: %v", err) + return nil, status.Errorf(codes.Internal, "transport: %v", err) } for k, v := range data { // Capital header names are illegal in HTTP/2 @@ -538,10 +539,8 @@ func (t *http2Client) NewStream(ctx context.Context, callHdr *CallHdr) (_ *Strea } t.activeStreams[id] = s if channelz.IsOn() { - t.czmu.Lock() - t.streamsStarted++ - t.lastStreamCreated = time.Now() - t.czmu.Unlock() + atomic.AddInt64(&t.czData.streamsStarted, 1) + atomic.StoreInt64(&t.czData.lastStreamCreatedTime, time.Now().UnixNano()) } var sendPing bool // If the number of active streams change from 0 to 1, then check if keepalive @@ -590,14 +589,40 @@ func (t *http2Client) NewStream(ctx context.Context, callHdr *CallHdr) (_ *Strea } return true } + var hdrListSizeErr error + checkForHeaderListSize := func(it interface{}) bool { + if t.maxSendHeaderListSize == nil { + return true + } + hdrFrame := it.(*headerFrame) + var sz int64 + for _, f := range hdrFrame.hf { + if sz += int64(f.Size()); sz > int64(*t.maxSendHeaderListSize) { + hdrListSizeErr = status.Errorf(codes.Internal, "header list size to send violates the maximum size (%d bytes) set by server", *t.maxSendHeaderListSize) + return false + } + } + return true + } for { - success, err := t.controlBuf.executeAndPut(checkForStreamQuota, hdr) + success, err := t.controlBuf.executeAndPut(func(it interface{}) bool { + if !checkForStreamQuota(it) { + return false + } + if !checkForHeaderListSize(it) { + return false + } + return true + }, hdr) if err != nil { return nil, err } if success { break } + if hdrListSizeErr != nil { + return nil, hdrListSizeErr + } firstTry = false select { case <-ch: @@ -633,7 +658,7 @@ func (t *http2Client) CloseStream(s *Stream, err error) { rst = true rstCode = http2.ErrCodeCancel } - t.closeStream(s, err, rst, rstCode, nil, nil, false) + t.closeStream(s, err, rst, rstCode, status.Convert(err), nil, false) } func (t *http2Client) closeStream(s *Stream, err error, rst bool, rstCode http2.ErrCode, st *status.Status, mdata map[string][]string, eosReceived bool) { @@ -657,6 +682,7 @@ func (t *http2Client) closeStream(s *Stream, err error, rst bool, rstCode http2. close(s.done) // If headerChan isn't closed, then close it. if atomic.SwapUint32(&s.headerDone, 1) == 0 { + s.noHeaders = true close(s.headerChan) } cleanup := &cleanupStream{ @@ -668,13 +694,11 @@ func (t *http2Client) closeStream(s *Stream, err error, rst bool, rstCode http2. } t.mu.Unlock() if channelz.IsOn() { - t.czmu.Lock() if eosReceived { - t.streamsSucceeded++ + atomic.AddInt64(&t.czData.streamsSucceeded, 1) } else { - t.streamsFailed++ + atomic.AddInt64(&t.czData.streamsFailed, 1) } - t.czmu.Unlock() } }, rst: rst, @@ -715,7 +739,7 @@ func (t *http2Client) Close() error { } // Notify all active streams. for _, s := range streams { - t.closeStream(s, ErrConnClosing, false, http2.ErrCodeNo, nil, nil, false) + t.closeStream(s, ErrConnClosing, false, http2.ErrCodeNo, status.New(codes.Unavailable, ErrConnClosing.Desc), nil, false) } if t.statsHandler != nil { connEnd := &stats.ConnEnd{ @@ -909,6 +933,13 @@ func (t *http2Client) handleRSTStream(f *http2.RSTStreamFrame) { warningf("transport: http2Client.handleRSTStream found no mapped gRPC status for the received http2 error %v", f.ErrCode) statusCode = codes.Unknown } + if statusCode == codes.Canceled { + // Our deadline was already exceeded, and that was likely the cause of + // this cancelation. Alter the status code accordingly. + if d, ok := s.ctx.Deadline(); ok && d.After(time.Now()) { + statusCode = codes.DeadlineExceeded + } + } t.closeStream(s, io.EOF, false, http2.ErrCodeNo, status.Newf(statusCode, "stream terminated by RST_STREAM with error code: %v", f.ErrCode), nil, false) } @@ -918,13 +949,20 @@ func (t *http2Client) handleSettings(f *http2.SettingsFrame, isFirst bool) { } var maxStreams *uint32 var ss []http2.Setting + var updateFuncs []func() f.ForeachSetting(func(s http2.Setting) error { - if s.ID == http2.SettingMaxConcurrentStreams { + switch s.ID { + case http2.SettingMaxConcurrentStreams: maxStreams = new(uint32) *maxStreams = s.Val - return nil + case http2.SettingMaxHeaderListSize: + updateFuncs = append(updateFuncs, func() { + t.maxSendHeaderListSize = new(uint32) + *t.maxSendHeaderListSize = s.Val + }) + default: + ss = append(ss, s) } - ss = append(ss, s) return nil }) if isFirst && maxStreams == nil { @@ -934,21 +972,24 @@ func (t *http2Client) handleSettings(f *http2.SettingsFrame, isFirst bool) { sf := &incomingSettings{ ss: ss, } - if maxStreams == nil { - t.controlBuf.put(sf) - return + if maxStreams != nil { + updateStreamQuota := func() { + delta := int64(*maxStreams) - int64(t.maxConcurrentStreams) + t.maxConcurrentStreams = *maxStreams + t.streamQuota += delta + if delta > 0 && t.waitingStreams > 0 { + close(t.streamsQuotaAvailable) // wake all of them up. + t.streamsQuotaAvailable = make(chan struct{}, 1) + } + } + updateFuncs = append(updateFuncs, updateStreamQuota) } - updateStreamQuota := func(interface{}) bool { - delta := int64(*maxStreams) - int64(t.maxConcurrentStreams) - t.maxConcurrentStreams = *maxStreams - t.streamQuota += delta - if delta > 0 && t.waitingStreams > 0 { - close(t.streamsQuotaAvailable) // wake all of them up. - t.streamsQuotaAvailable = make(chan struct{}, 1) + t.controlBuf.executeAndPut(func(interface{}) bool { + for _, f := range updateFuncs { + f() } return true - } - t.controlBuf.executeAndPut(updateStreamQuota, sf) + }, sf) } func (t *http2Client) handlePing(f *http2.PingFrame) { @@ -1059,8 +1100,8 @@ func (t *http2Client) operateHeaders(frame *http2.MetaHeadersFrame) { } atomic.StoreUint32(&s.bytesReceived, 1) var state decodeState - if err := state.decodeResponseHeader(frame); err != nil { - t.closeStream(s, err, true, http2.ErrCodeProtocol, nil, nil, false) + if err := state.decodeHeader(frame); err != nil { + t.closeStream(s, err, true, http2.ErrCodeProtocol, status.New(codes.Internal, err.Error()), nil, false) // Something wrong. Stops reading even when there is remaining. return } @@ -1096,6 +1137,8 @@ func (t *http2Client) operateHeaders(frame *http2.MetaHeadersFrame) { if len(state.mdata) > 0 { s.header = state.mdata } + } else { + s.noHeaders = true } close(s.headerChan) } @@ -1146,7 +1189,9 @@ func (t *http2Client) reader() { t.mu.Unlock() if s != nil { // use error detail to provide better err message - t.closeStream(s, streamErrorf(http2ErrConvTab[se.Code], "%v", t.framer.fr.ErrorDetail()), true, http2.ErrCodeProtocol, nil, nil, false) + code := http2ErrConvTab[se.Code] + msg := t.framer.fr.ErrorDetail().Error() + t.closeStream(s, status.Error(code, msg), true, http2.ErrCodeProtocol, status.New(code, msg), nil, false) } continue } else { @@ -1203,9 +1248,7 @@ func (t *http2Client) keepalive() { } else { t.mu.Unlock() if channelz.IsOn() { - t.czmu.Lock() - t.kpCount++ - t.czmu.Unlock() + atomic.AddInt64(&t.czData.kpCount, 1) } // Send ping. t.controlBuf.put(p) @@ -1245,41 +1288,37 @@ func (t *http2Client) GoAway() <-chan struct{} { } func (t *http2Client) ChannelzMetric() *channelz.SocketInternalMetric { - t.czmu.RLock() s := channelz.SocketInternalMetric{ - StreamsStarted: t.streamsStarted, - StreamsSucceeded: t.streamsSucceeded, - StreamsFailed: t.streamsFailed, - MessagesSent: t.msgSent, - MessagesReceived: t.msgRecv, - KeepAlivesSent: t.kpCount, - LastLocalStreamCreatedTimestamp: t.lastStreamCreated, - LastMessageSentTimestamp: t.lastMsgSent, - LastMessageReceivedTimestamp: t.lastMsgRecv, + StreamsStarted: atomic.LoadInt64(&t.czData.streamsStarted), + StreamsSucceeded: atomic.LoadInt64(&t.czData.streamsSucceeded), + StreamsFailed: atomic.LoadInt64(&t.czData.streamsFailed), + MessagesSent: atomic.LoadInt64(&t.czData.msgSent), + MessagesReceived: atomic.LoadInt64(&t.czData.msgRecv), + KeepAlivesSent: atomic.LoadInt64(&t.czData.kpCount), + LastLocalStreamCreatedTimestamp: time.Unix(0, atomic.LoadInt64(&t.czData.lastStreamCreatedTime)), + LastMessageSentTimestamp: time.Unix(0, atomic.LoadInt64(&t.czData.lastMsgSentTime)), + LastMessageReceivedTimestamp: time.Unix(0, atomic.LoadInt64(&t.czData.lastMsgRecvTime)), LocalFlowControlWindow: int64(t.fc.getSize()), - //socket options - LocalAddr: t.localAddr, - RemoteAddr: t.remoteAddr, - // Security + SocketOptions: channelz.GetSocketOption(t.conn), + LocalAddr: t.localAddr, + RemoteAddr: t.remoteAddr, // RemoteName : } - t.czmu.RUnlock() + if au, ok := t.authInfo.(credentials.ChannelzSecurityInfo); ok { + s.Security = au.GetSecurityValue() + } s.RemoteFlowControlWindow = t.getOutFlowWindow() return &s } func (t *http2Client) IncrMsgSent() { - t.czmu.Lock() - t.msgSent++ - t.lastMsgSent = time.Now() - t.czmu.Unlock() + atomic.AddInt64(&t.czData.msgSent, 1) + atomic.StoreInt64(&t.czData.lastMsgSentTime, time.Now().UnixNano()) } func (t *http2Client) IncrMsgRecv() { - t.czmu.Lock() - t.msgRecv++ - t.lastMsgRecv = time.Now() - t.czmu.Unlock() + atomic.AddInt64(&t.czData.msgRecv, 1) + atomic.StoreInt64(&t.czData.lastMsgRecvTime, time.Now().UnixNano()) } func (t *http2Client) getOutFlowWindow() int64 { diff --git a/vendor/google.golang.org/grpc/transport/http2_server.go b/vendor/google.golang.org/grpc/internal/transport/http2_server.go similarity index 87% rename from vendor/google.golang.org/grpc/transport/http2_server.go rename to vendor/google.golang.org/grpc/internal/transport/http2_server.go index 19acedb2..efb7f53f 100644 --- a/vendor/google.golang.org/grpc/transport/http2_server.go +++ b/vendor/google.golang.org/grpc/internal/transport/http2_server.go @@ -48,9 +48,14 @@ import ( "google.golang.org/grpc/tap" ) -// ErrIllegalHeaderWrite indicates that setting header is illegal because of -// the stream's state. -var ErrIllegalHeaderWrite = errors.New("transport: the stream is done or WriteHeader was already called") +var ( + // ErrIllegalHeaderWrite indicates that setting header is illegal because of + // the stream's state. + ErrIllegalHeaderWrite = errors.New("transport: the stream is done or WriteHeader was already called") + // ErrHeaderListSizeLimitViolation indicates that the header list size is larger + // than the limit set by peer. + ErrHeaderListSizeLimitViolation = errors.New("transport: trying to send header list size larger than the limit set by peer") +) // http2Server implements the ServerTransport interface with HTTP2. type http2Server struct { @@ -89,9 +94,10 @@ type http2Server struct { // Flag to signify that number of ping strikes should be reset to 0. // This is set whenever data or header frames are sent. // 1 means yes. - resetPingStrikes uint32 // Accessed atomically. - initialWindowSize int32 - bdpEst *bdpEstimator + resetPingStrikes uint32 // Accessed atomically. + initialWindowSize int32 + bdpEst *bdpEstimator + maxSendHeaderListSize *uint32 mu sync.Mutex // guard the following @@ -112,33 +118,19 @@ type http2Server struct { // Fields below are for channelz metric collection. channelzID int64 // channelz unique identification number - czmu sync.RWMutex - kpCount int64 - // The number of streams that have started, including already finished ones. - streamsStarted int64 - // The number of streams that have ended successfully by sending frame with - // EoS bit set. - streamsSucceeded int64 - streamsFailed int64 - lastStreamCreated time.Time - msgSent int64 - msgRecv int64 - lastMsgSent time.Time - lastMsgRecv time.Time + czData *channelzData } // newHTTP2Server constructs a ServerTransport based on HTTP2. ConnectionError is // returned if something goes wrong. func newHTTP2Server(conn net.Conn, config *ServerConfig) (_ ServerTransport, err error) { - writeBufSize := defaultWriteBufSize - if config.WriteBufferSize > 0 { - writeBufSize = config.WriteBufferSize + writeBufSize := config.WriteBufferSize + readBufSize := config.ReadBufferSize + maxHeaderListSize := defaultServerMaxHeaderListSize + if config.MaxHeaderListSize != nil { + maxHeaderListSize = *config.MaxHeaderListSize } - readBufSize := defaultReadBufSize - if config.ReadBufferSize > 0 { - readBufSize = config.ReadBufferSize - } - framer := newFramer(conn, writeBufSize, readBufSize) + framer := newFramer(conn, writeBufSize, readBufSize, maxHeaderListSize) // Send initial settings as connection preface to client. var isettings []http2.Setting // TODO(zhaoq): Have a better way to signal "no limit" because 0 is @@ -168,6 +160,12 @@ func newHTTP2Server(conn net.Conn, config *ServerConfig) (_ ServerTransport, err ID: http2.SettingInitialWindowSize, Val: uint32(iwz)}) } + if config.MaxHeaderListSize != nil { + isettings = append(isettings, http2.Setting{ + ID: http2.SettingMaxHeaderListSize, + Val: *config.MaxHeaderListSize, + }) + } if err := framer.fr.WriteSettings(isettings...); err != nil { return nil, connectionErrorf(false, err, "transport: %v", err) } @@ -221,6 +219,7 @@ func newHTTP2Server(conn net.Conn, config *ServerConfig) (_ ServerTransport, err idle: time.Now(), kep: kep, initialWindowSize: iwz, + czData: new(channelzData), } t.controlBuf = newControlBuffer(t.ctxDone) if dynamicWindow { @@ -285,21 +284,19 @@ func newHTTP2Server(conn net.Conn, config *ServerConfig) (_ ServerTransport, err } // operateHeader takes action on the decoded headers. -func (t *http2Server) operateHeaders(frame *http2.MetaHeadersFrame, handle func(*Stream), traceCtx func(context.Context, string) context.Context) (close bool) { +func (t *http2Server) operateHeaders(frame *http2.MetaHeadersFrame, handle func(*Stream), traceCtx func(context.Context, string) context.Context) (fatal bool) { streamID := frame.Header().StreamID - var state decodeState - for _, hf := range frame.Fields { - if err := state.processHeaderField(hf); err != nil { - if se, ok := err.(StreamError); ok { - t.controlBuf.put(&cleanupStream{ - streamID: streamID, - rst: true, - rstCode: statusCodeConvTab[se.Code], - onWrite: func() {}, - }) - } - return + state := decodeState{serverSide: true} + if err := state.decodeHeader(frame); err != nil { + if se, ok := status.FromError(err); ok { + t.controlBuf.put(&cleanupStream{ + streamID: streamID, + rst: true, + rstCode: statusCodeConvTab[se.Code()], + onWrite: func() {}, + }) } + return false } buf := newRecvBuffer() @@ -353,13 +350,13 @@ func (t *http2Server) operateHeaders(frame *http2.MetaHeadersFrame, handle func( rstCode: http2.ErrCodeRefusedStream, onWrite: func() {}, }) - return + return false } } t.mu.Lock() if t.state != reachable { t.mu.Unlock() - return + return false } if uint32(len(t.activeStreams)) >= t.maxStreams { t.mu.Unlock() @@ -369,7 +366,7 @@ func (t *http2Server) operateHeaders(frame *http2.MetaHeadersFrame, handle func( rstCode: http2.ErrCodeRefusedStream, onWrite: func() {}, }) - return + return false } if streamID%2 != 1 || streamID <= t.maxStreamID { t.mu.Unlock() @@ -384,10 +381,8 @@ func (t *http2Server) operateHeaders(frame *http2.MetaHeadersFrame, handle func( } t.mu.Unlock() if channelz.IsOn() { - t.czmu.Lock() - t.streamsStarted++ - t.lastStreamCreated = time.Now() - t.czmu.Unlock() + atomic.AddInt64(&t.czData.streamsStarted, 1) + atomic.StoreInt64(&t.czData.lastStreamCreatedTime, time.Now().UnixNano()) } s.requestRead = func(n int) { t.adjustWindow(s, uint32(n)) @@ -422,7 +417,7 @@ func (t *http2Server) operateHeaders(frame *http2.MetaHeadersFrame, handle func( wq: s.wq, }) handle(s) - return + return false } // HandleStreams receives incoming streams using the given handler. This is @@ -619,11 +614,25 @@ func (t *http2Server) handleSettings(f *http2.SettingsFrame) { return } var ss []http2.Setting + var updateFuncs []func() f.ForeachSetting(func(s http2.Setting) error { - ss = append(ss, s) + switch s.ID { + case http2.SettingMaxHeaderListSize: + updateFuncs = append(updateFuncs, func() { + t.maxSendHeaderListSize = new(uint32) + *t.maxSendHeaderListSize = s.Val + }) + default: + ss = append(ss, s) + } return nil }) - t.controlBuf.put(&incomingSettings{ + t.controlBuf.executeAndPut(func(interface{}) bool { + for _, f := range updateFuncs { + f() + } + return true + }, &incomingSettings{ ss: ss, }) } @@ -703,6 +712,21 @@ func appendHeaderFieldsFromMD(headerFields []hpack.HeaderField, md metadata.MD) return headerFields } +func (t *http2Server) checkForHeaderListSize(it interface{}) bool { + if t.maxSendHeaderListSize == nil { + return true + } + hdrFrame := it.(*headerFrame) + var sz int64 + for _, f := range hdrFrame.hf { + if sz += int64(f.Size()); sz > int64(*t.maxSendHeaderListSize) { + errorf("header list size to send violates the maximum size (%d bytes) set by client", *t.maxSendHeaderListSize) + return false + } + } + return true +} + // WriteHeader sends the header metedata md back to the client. func (t *http2Server) WriteHeader(s *Stream, md metadata.MD) error { if s.updateHeaderSent() || s.getState() == streamDone { @@ -716,12 +740,15 @@ func (t *http2Server) WriteHeader(s *Stream, md metadata.MD) error { s.header = md } } - t.writeHeaderLocked(s) + if err := t.writeHeaderLocked(s); err != nil { + s.hdrMu.Unlock() + return err + } s.hdrMu.Unlock() return nil } -func (t *http2Server) writeHeaderLocked(s *Stream) { +func (t *http2Server) writeHeaderLocked(s *Stream) error { // TODO(mmukhi): Benchmark if the performance gets better if count the metadata and other header fields // first and create a slice of that exact size. headerFields := make([]hpack.HeaderField, 0, 2) // at least :status, content-type will be there if none else. @@ -731,7 +758,7 @@ func (t *http2Server) writeHeaderLocked(s *Stream) { headerFields = append(headerFields, hpack.HeaderField{Name: "grpc-encoding", Value: s.sendCompress}) } headerFields = appendHeaderFieldsFromMD(headerFields, s.header) - t.controlBuf.put(&headerFrame{ + success, err := t.controlBuf.executeAndPut(t.checkForHeaderListSize, &headerFrame{ streamID: s.id, hf: headerFields, endStream: false, @@ -739,12 +766,20 @@ func (t *http2Server) writeHeaderLocked(s *Stream) { atomic.StoreUint32(&t.resetPingStrikes, 1) }, }) + if !success { + if err != nil { + return err + } + t.closeStream(s, true, http2.ErrCodeInternal, nil, false) + return ErrHeaderListSizeLimitViolation + } if t.stats != nil { // Note: WireLength is not set in outHeader. // TODO(mmukhi): Revisit this later, if needed. outHeader := &stats.OutHeader{} t.stats.HandleRPC(s.Context(), outHeader) } + return nil } // WriteStatus sends stream status to the client and terminates the stream. @@ -761,7 +796,10 @@ func (t *http2Server) WriteStatus(s *Stream, st *status.Status) error { headerFields := make([]hpack.HeaderField, 0, 2) // grpc-status and grpc-message will be there if none else. if !s.updateHeaderSent() { // No headers have been sent. if len(s.header) > 0 { // Send a separate header frame. - t.writeHeaderLocked(s) + if err := t.writeHeaderLocked(s); err != nil { + s.hdrMu.Unlock() + return err + } } else { // Send a trailer only response. headerFields = append(headerFields, hpack.HeaderField{Name: ":status", Value: "200"}) headerFields = append(headerFields, hpack.HeaderField{Name: "content-type", Value: contentType(s.contentSubtype)}) @@ -791,6 +829,14 @@ func (t *http2Server) WriteStatus(s *Stream, st *status.Status) error { }, } s.hdrMu.Unlock() + success, err := t.controlBuf.execute(t.checkForHeaderListSize, trailingHeader) + if !success { + if err != nil { + return err + } + t.closeStream(s, true, http2.ErrCodeInternal, nil, false) + return ErrHeaderListSizeLimitViolation + } t.closeStream(s, false, 0, trailingHeader, true) if t.stats != nil { t.stats.HandleRPC(s.Context(), &stats.OutTrailer{}) @@ -804,7 +850,7 @@ func (t *http2Server) Write(s *Stream, hdr []byte, data []byte, opts *Options) e if !s.isHeaderSent() { // Headers haven't been written yet. if err := t.WriteHeader(s, nil); err != nil { // TODO(mmukhi, dfawley): Make sure this is the right code to return. - return streamErrorf(codes.Internal, "transport: %v", err) + return status.Errorf(codes.Internal, "transport: %v", err) } } else { // Writing headers checks for this condition. @@ -918,9 +964,7 @@ func (t *http2Server) keepalive() { } pingSent = true if channelz.IsOn() { - t.czmu.Lock() - t.kpCount++ - t.czmu.Unlock() + atomic.AddInt64(&t.czData.kpCount, 1) } t.controlBuf.put(p) keepalive.Reset(t.kp.Timeout) @@ -985,13 +1029,11 @@ func (t *http2Server) closeStream(s *Stream, rst bool, rstCode http2.ErrCode, hd } t.mu.Unlock() if channelz.IsOn() { - t.czmu.Lock() if eosReceived { - t.streamsSucceeded++ + atomic.AddInt64(&t.czData.streamsSucceeded, 1) } else { - t.streamsFailed++ + atomic.AddInt64(&t.czData.streamsFailed, 1) } - t.czmu.Unlock() } }, } @@ -1079,41 +1121,37 @@ func (t *http2Server) outgoingGoAwayHandler(g *goAway) (bool, error) { } func (t *http2Server) ChannelzMetric() *channelz.SocketInternalMetric { - t.czmu.RLock() s := channelz.SocketInternalMetric{ - StreamsStarted: t.streamsStarted, - StreamsSucceeded: t.streamsSucceeded, - StreamsFailed: t.streamsFailed, - MessagesSent: t.msgSent, - MessagesReceived: t.msgRecv, - KeepAlivesSent: t.kpCount, - LastRemoteStreamCreatedTimestamp: t.lastStreamCreated, - LastMessageSentTimestamp: t.lastMsgSent, - LastMessageReceivedTimestamp: t.lastMsgRecv, + StreamsStarted: atomic.LoadInt64(&t.czData.streamsStarted), + StreamsSucceeded: atomic.LoadInt64(&t.czData.streamsSucceeded), + StreamsFailed: atomic.LoadInt64(&t.czData.streamsFailed), + MessagesSent: atomic.LoadInt64(&t.czData.msgSent), + MessagesReceived: atomic.LoadInt64(&t.czData.msgRecv), + KeepAlivesSent: atomic.LoadInt64(&t.czData.kpCount), + LastRemoteStreamCreatedTimestamp: time.Unix(0, atomic.LoadInt64(&t.czData.lastStreamCreatedTime)), + LastMessageSentTimestamp: time.Unix(0, atomic.LoadInt64(&t.czData.lastMsgSentTime)), + LastMessageReceivedTimestamp: time.Unix(0, atomic.LoadInt64(&t.czData.lastMsgRecvTime)), LocalFlowControlWindow: int64(t.fc.getSize()), - //socket options - LocalAddr: t.localAddr, - RemoteAddr: t.remoteAddr, - // Security + SocketOptions: channelz.GetSocketOption(t.conn), + LocalAddr: t.localAddr, + RemoteAddr: t.remoteAddr, // RemoteName : } - t.czmu.RUnlock() + if au, ok := t.authInfo.(credentials.ChannelzSecurityInfo); ok { + s.Security = au.GetSecurityValue() + } s.RemoteFlowControlWindow = t.getOutFlowWindow() return &s } func (t *http2Server) IncrMsgSent() { - t.czmu.Lock() - t.msgSent++ - t.lastMsgSent = time.Now() - t.czmu.Unlock() + atomic.AddInt64(&t.czData.msgSent, 1) + atomic.StoreInt64(&t.czData.lastMsgSentTime, time.Now().UnixNano()) } func (t *http2Server) IncrMsgRecv() { - t.czmu.Lock() - t.msgRecv++ - t.lastMsgRecv = time.Now() - t.czmu.Unlock() + atomic.AddInt64(&t.czData.msgRecv, 1) + atomic.StoreInt64(&t.czData.lastMsgRecvTime, time.Now().UnixNano()) } func (t *http2Server) getOutFlowWindow() int64 { diff --git a/vendor/google.golang.org/grpc/transport/http_util.go b/vendor/google.golang.org/grpc/internal/transport/http_util.go similarity index 89% rename from vendor/google.golang.org/grpc/transport/http_util.go rename to vendor/google.golang.org/grpc/internal/transport/http_util.go index 7d15c7d7..21da6e80 100644 --- a/vendor/google.golang.org/grpc/transport/http_util.go +++ b/vendor/google.golang.org/grpc/internal/transport/http_util.go @@ -23,6 +23,7 @@ import ( "bytes" "encoding/base64" "fmt" + "io" "net" "net/http" "strconv" @@ -43,9 +44,6 @@ const ( http2MaxFrameLen = 16384 // 16KB frame // http://http2.github.io/http2-spec/#SettingValues http2InitHeaderTableSize = 4096 - // http2IOBufSize specifies the buffer size for sending frames. - defaultWriteBufSize = 32 * 1024 - defaultReadBufSize = 32 * 1024 // baseContentType is the base content-type for gRPC. This is a valid // content-type on it's own, but can also include a content-subtype such as // "proto" as a suffix after "+" or ";". See @@ -121,6 +119,8 @@ type decodeState struct { statsTags []byte statsTrace []byte contentSubtype string + // whether decoding on server side or not + serverSide bool } // isReservedHeader checks whether hdr belongs to HTTP2 headers @@ -139,6 +139,9 @@ func isReservedHeader(hdr string) bool { "grpc-status", "grpc-timeout", "grpc-status-details-bin", + // Intentionally exclude grpc-previous-rpc-attempts and + // grpc-retry-pushback-ms, which are "reserved", but their API + // intentionally works via metadata. "te": return true default: @@ -146,8 +149,8 @@ func isReservedHeader(hdr string) bool { } } -// isWhitelistedHeader checks whether hdr should be propagated -// into metadata visible to users. +// isWhitelistedHeader checks whether hdr should be propagated into metadata +// visible to users, even though it is classified as "reserved", above. func isWhitelistedHeader(hdr string) bool { switch hdr { case ":authority", "user-agent": @@ -234,13 +237,22 @@ func decodeMetadataHeader(k, v string) (string, error) { return v, nil } -func (d *decodeState) decodeResponseHeader(frame *http2.MetaHeadersFrame) error { +func (d *decodeState) decodeHeader(frame *http2.MetaHeadersFrame) error { + // frame.Truncated is set to true when framer detects that the current header + // list size hits MaxHeaderListSize limit. + if frame.Truncated { + return status.Error(codes.Internal, "peer header list size exceeded limit") + } for _, hf := range frame.Fields { if err := d.processHeaderField(hf); err != nil { return err } } + if d.serverSide { + return nil + } + // If grpc status exists, no need to check further. if d.rawStatusCode != nil || d.statusGen != nil { return nil @@ -249,7 +261,7 @@ func (d *decodeState) decodeResponseHeader(frame *http2.MetaHeadersFrame) error // If grpc status doesn't exist and http status doesn't exist, // then it's a malformed header. if d.httpStatus == nil { - return streamErrorf(codes.Internal, "malformed header: doesn't contain status(gRPC or HTTP)") + return status.Error(codes.Internal, "malformed header: doesn't contain status(gRPC or HTTP)") } if *(d.httpStatus) != http.StatusOK { @@ -257,7 +269,7 @@ func (d *decodeState) decodeResponseHeader(frame *http2.MetaHeadersFrame) error if !ok { code = codes.Unknown } - return streamErrorf(code, http.StatusText(*(d.httpStatus))) + return status.Error(code, http.StatusText(*(d.httpStatus))) } // gRPC status doesn't exist and http status is OK. @@ -269,7 +281,6 @@ func (d *decodeState) decodeResponseHeader(frame *http2.MetaHeadersFrame) error code := int(codes.Unknown) d.rawStatusCode = &code return nil - } func (d *decodeState) addMetadata(k, v string) { @@ -284,7 +295,7 @@ func (d *decodeState) processHeaderField(f hpack.HeaderField) error { case "content-type": contentSubtype, validContentType := contentSubtype(f.Value) if !validContentType { - return streamErrorf(codes.Internal, "transport: received the unexpected content-type %q", f.Value) + return status.Errorf(codes.Internal, "transport: received the unexpected content-type %q", f.Value) } d.contentSubtype = contentSubtype // TODO: do we want to propagate the whole content-type in the metadata, @@ -297,7 +308,7 @@ func (d *decodeState) processHeaderField(f hpack.HeaderField) error { case "grpc-status": code, err := strconv.Atoi(f.Value) if err != nil { - return streamErrorf(codes.Internal, "transport: malformed grpc-status: %v", err) + return status.Errorf(codes.Internal, "transport: malformed grpc-status: %v", err) } d.rawStatusCode = &code case "grpc-message": @@ -305,38 +316,38 @@ func (d *decodeState) processHeaderField(f hpack.HeaderField) error { case "grpc-status-details-bin": v, err := decodeBinHeader(f.Value) if err != nil { - return streamErrorf(codes.Internal, "transport: malformed grpc-status-details-bin: %v", err) + return status.Errorf(codes.Internal, "transport: malformed grpc-status-details-bin: %v", err) } s := &spb.Status{} if err := proto.Unmarshal(v, s); err != nil { - return streamErrorf(codes.Internal, "transport: malformed grpc-status-details-bin: %v", err) + return status.Errorf(codes.Internal, "transport: malformed grpc-status-details-bin: %v", err) } d.statusGen = status.FromProto(s) case "grpc-timeout": d.timeoutSet = true var err error if d.timeout, err = decodeTimeout(f.Value); err != nil { - return streamErrorf(codes.Internal, "transport: malformed time-out: %v", err) + return status.Errorf(codes.Internal, "transport: malformed time-out: %v", err) } case ":path": d.method = f.Value case ":status": code, err := strconv.Atoi(f.Value) if err != nil { - return streamErrorf(codes.Internal, "transport: malformed http-status: %v", err) + return status.Errorf(codes.Internal, "transport: malformed http-status: %v", err) } d.httpStatus = &code case "grpc-tags-bin": v, err := decodeBinHeader(f.Value) if err != nil { - return streamErrorf(codes.Internal, "transport: malformed grpc-tags-bin: %v", err) + return status.Errorf(codes.Internal, "transport: malformed grpc-tags-bin: %v", err) } d.statsTags = v d.addMetadata(f.Name, string(v)) case "grpc-trace-bin": v, err := decodeBinHeader(f.Value) if err != nil { - return streamErrorf(codes.Internal, "transport: malformed grpc-trace-bin: %v", err) + return status.Errorf(codes.Internal, "transport: malformed grpc-trace-bin: %v", err) } d.statsTrace = v d.addMetadata(f.Name, string(v)) @@ -545,6 +556,9 @@ func (w *bufWriter) Write(b []byte) (n int, err error) { if w.err != nil { return 0, w.err } + if w.batchSize == 0 { // Buffer has been disabled. + return w.conn.Write(b) + } for len(b) > 0 { nn := copy(w.buf[w.offset:], b) b = b[nn:] @@ -577,8 +591,14 @@ type framer struct { fr *http2.Framer } -func newFramer(conn net.Conn, writeBufferSize, readBufferSize int) *framer { - r := bufio.NewReaderSize(conn, readBufferSize) +func newFramer(conn net.Conn, writeBufferSize, readBufferSize int, maxHeaderListSize uint32) *framer { + if writeBufferSize < 0 { + writeBufferSize = 0 + } + var r io.Reader = conn + if readBufferSize > 0 { + r = bufio.NewReaderSize(r, readBufferSize) + } w := newBufWriter(conn, writeBufferSize) f := &framer{ writer: w, @@ -587,6 +607,7 @@ func newFramer(conn net.Conn, writeBufferSize, readBufferSize int) *framer { // Opt-in to Frame reuse API on framer to reduce garbage. // Frames aren't safe to read from after a subsequent call to ReadFrame. f.fr.SetReuseFrames() + f.fr.MaxHeaderListSize = maxHeaderListSize f.fr.ReadMetaHeaders = hpack.NewDecoder(http2InitHeaderTableSize, nil) return f } diff --git a/vendor/google.golang.org/grpc/transport/log.go b/vendor/google.golang.org/grpc/internal/transport/log.go similarity index 90% rename from vendor/google.golang.org/grpc/transport/log.go rename to vendor/google.golang.org/grpc/internal/transport/log.go index ac8e358c..879df80c 100644 --- a/vendor/google.golang.org/grpc/transport/log.go +++ b/vendor/google.golang.org/grpc/internal/transport/log.go @@ -42,9 +42,3 @@ func errorf(format string, args ...interface{}) { grpclog.Errorf(format, args...) } } - -func fatalf(format string, args ...interface{}) { - if grpclog.V(logLevel) { - grpclog.Fatalf(format, args...) - } -} diff --git a/vendor/google.golang.org/grpc/transport/transport.go b/vendor/google.golang.org/grpc/internal/transport/transport.go similarity index 90% rename from vendor/google.golang.org/grpc/transport/transport.go rename to vendor/google.golang.org/grpc/internal/transport/transport.go index f51f8788..fdf8ad68 100644 --- a/vendor/google.golang.org/grpc/transport/transport.go +++ b/vendor/google.golang.org/grpc/internal/transport/transport.go @@ -19,7 +19,7 @@ // Package transport defines and implements message oriented communication // channel to complete various transactions (e.g., an RPC). It is meant for // grpc-internal usage and is not intended to be imported directly by users. -package transport // externally used as import "google.golang.org/grpc/transport" +package transport import ( "errors" @@ -176,7 +176,6 @@ type Stream struct { buf *recvBuffer trReader io.Reader fc *inFlow - recvQuota uint32 wq *writeQuota // Callback to state application's intentions to read data. This @@ -191,6 +190,8 @@ type Stream struct { header metadata.MD // the received header metadata. trailer metadata.MD // the key-value map of trailer metadata. + noHeaders bool // set if the client never received headers (set only after the stream is done). + // On the server-side, headerSent is atomically set to 1 when the headers are sent out. headerSent uint32 @@ -259,7 +260,7 @@ func (s *Stream) SetSendCompress(str string) { s.sendCompress = str } -// Done returns a chanel which is closed when it receives the final status +// Done returns a channel which is closed when it receives the final status // from the server. func (s *Stream) Done() <-chan struct{} { return s.done @@ -282,6 +283,19 @@ func (s *Stream) Header() (metadata.MD, error) { return nil, err } +// TrailersOnly blocks until a header or trailers-only frame is received and +// then returns true if the stream was trailers-only. If the stream ends +// before headers are received, returns true, nil. If a context error happens +// first, returns it as a status error. Client-side only. +func (s *Stream) TrailersOnly() (bool, error) { + err := s.waitOnHeader() + if err != nil { + return false, err + } + // if !headerDone, some other connection error occurred. + return s.noHeaders && atomic.LoadUint32(&s.headerDone) == 1, nil +} + // Trailer returns the cached trailer metedata. Note that if it is not called // after the entire stream is done, it could return an empty MD. Client // side only. @@ -292,12 +306,6 @@ func (s *Stream) Trailer() metadata.MD { return c } -// ServerTransport returns the underlying ServerTransport for the stream. -// The client side stream always returns nil. -func (s *Stream) ServerTransport() ServerTransport { - return s.st -} - // ContentSubtype returns the content-subtype for a request. For example, a // content-subtype of "proto" will result in a content-type of // "application/grpc+proto". This will always be lowercase. See @@ -319,7 +327,7 @@ func (s *Stream) Method() string { // Status returns the status received from the server. // Status can be read safely only after the stream has ended, -// that is, read or write has returned io.EOF. +// that is, after Done() is closed. func (s *Stream) Status() *status.Status { return s.status } @@ -344,8 +352,7 @@ func (s *Stream) SetHeader(md metadata.MD) error { // combined with any metadata set by previous calls to SetHeader and // then written to the transport stream. func (s *Stream) SendHeader(md metadata.MD) error { - t := s.ServerTransport() - return t.WriteHeader(s, md) + return s.st.WriteHeader(s, md) } // SetTrailer sets the trailer metadata which will be sent with the RPC status @@ -439,6 +446,7 @@ type ServerConfig struct { WriteBufferSize int ReadBufferSize int ChannelzParentID int64 + MaxHeaderListSize *uint32 } // NewServerTransport creates a ServerTransport with conn or non-nil error @@ -451,9 +459,6 @@ func NewServerTransport(protocol string, conn net.Conn, config *ServerConfig) (S type ConnectOptions struct { // UserAgent is the application user agent. UserAgent string - // Authority is the :authority pseudo-header to use. This field has no effect if - // TransportCredentials is set. - Authority string // Dialer specifies how to dial a network address. Dialer func(context.Context, string) (net.Conn, error) // FailOnNonTempDialError specifies if gRPC fails on non-temporary dial errors. @@ -476,6 +481,8 @@ type ConnectOptions struct { ReadBufferSize int // ChannelzParentID sets the addrConn id which initiate the creation of this client transport. ChannelzParentID int64 + // MaxHeaderListSize sets the max (uncompressed) size of header list that is prepared to be received. + MaxHeaderListSize *uint32 } // TargetInfo contains the information of the target such as network address and metadata. @@ -497,11 +504,6 @@ type Options struct { // Last indicates whether this write is the last piece for // this stream. Last bool - - // Delay is a hint to the transport implementation for whether - // the data could be buffered for a batching write. The - // transport implementation may ignore the hint. - Delay bool } // CallHdr carries the information of a particular RPC. @@ -519,14 +521,6 @@ type CallHdr struct { // Creds specifies credentials.PerRPCCredentials for a call. Creds credentials.PerRPCCredentials - // Flush indicates whether a new stream command should be sent - // to the peer without waiting for the first data. This is - // only a hint. - // If it's true, the transport may modify the flush decision - // for performance purposes. - // If it's false, new stream will never be flushed. - Flush bool - // ContentSubtype specifies the content-subtype for a request. For example, a // content-subtype of "proto" will result in a content-type of // "application/grpc+proto". The value of ContentSubtype must be all @@ -534,6 +528,8 @@ type CallHdr struct { // https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md#requests // for more details. ContentSubtype string + + PreviousAttempts int // value of grpc-previous-rpc-attempts header to set } // ClientTransport is the common interface for all gRPC client-side transport @@ -622,14 +618,6 @@ type ServerTransport interface { IncrMsgRecv() } -// streamErrorf creates an StreamError with the specified error code and description. -func streamErrorf(c codes.Code, format string, a ...interface{}) StreamError { - return StreamError{ - Code: c, - Desc: fmt.Sprintf(format, a...), - } -} - // connectionErrorf creates an ConnectionError with the specified error description. func connectionErrorf(temp bool, e error, format string, a ...interface{}) ConnectionError { return ConnectionError{ @@ -672,7 +660,7 @@ var ( // errStreamDrain indicates that the stream is rejected because the // connection is draining. This could be caused by goaway or balancer // removing the address. - errStreamDrain = streamErrorf(codes.Unavailable, "the connection is draining") + errStreamDrain = status.Error(codes.Unavailable, "the connection is draining") // errStreamDone is returned from write at the client side to indiacte application // layer of an error. errStreamDone = errors.New("the stream is done") @@ -681,18 +669,6 @@ var ( statusGoAway = status.New(codes.Unavailable, "the stream is rejected because server is draining the connection") ) -// TODO: See if we can replace StreamError with status package errors. - -// StreamError is an error that only affects one stream within a connection. -type StreamError struct { - Code codes.Code - Desc string -} - -func (e StreamError) Error() string { - return fmt.Sprintf("stream error: code = %s desc = %q", e.Code, e.Desc) -} - // GoAwayReason contains the reason for the GoAway frame received. type GoAwayReason uint8 @@ -706,3 +682,27 @@ const ( // "too_many_pings". GoAwayTooManyPings GoAwayReason = 2 ) + +// channelzData is used to store channelz related data for http2Client and http2Server. +// These fields cannot be embedded in the original structs (e.g. http2Client), since to do atomic +// operation on int64 variable on 32-bit machine, user is responsible to enforce memory alignment. +// Here, by grouping those int64 fields inside a struct, we are enforcing the alignment. +type channelzData struct { + kpCount int64 + // The number of streams that have started, including already finished ones. + streamsStarted int64 + // Client side: The number of streams that have ended successfully by receiving + // EoS bit set frame from server. + // Server side: The number of streams that have ended successfully by sending + // frame with EoS bit set. + streamsSucceeded int64 + streamsFailed int64 + // lastStreamCreatedTime stores the timestamp that the last stream gets created. It is of int64 type + // instead of time.Time since it's more costly to atomically update time.Time variable than int64 + // variable. The same goes for lastMsgSentTime and lastMsgRecvTime. + lastStreamCreatedTime int64 + msgSent int64 + msgRecv int64 + lastMsgSentTime int64 + lastMsgRecvTime int64 +} diff --git a/vendor/google.golang.org/grpc/picker_wrapper.go b/vendor/google.golang.org/grpc/picker_wrapper.go index 019e6580..76cc456a 100644 --- a/vendor/google.golang.org/grpc/picker_wrapper.go +++ b/vendor/google.golang.org/grpc/picker_wrapper.go @@ -21,17 +21,14 @@ package grpc import ( "io" "sync" - "sync/atomic" "golang.org/x/net/context" "google.golang.org/grpc/balancer" "google.golang.org/grpc/codes" "google.golang.org/grpc/grpclog" "google.golang.org/grpc/internal/channelz" - "google.golang.org/grpc/metadata" - "google.golang.org/grpc/resolver" + "google.golang.org/grpc/internal/transport" "google.golang.org/grpc/status" - "google.golang.org/grpc/transport" ) // pickerWrapper is a wrapper of balancer.Picker. It blocks on certain pick @@ -45,16 +42,10 @@ type pickerWrapper struct { // The latest connection happened. connErrMu sync.Mutex connErr error - - stickinessMDKey atomic.Value - stickiness *stickyStore } func newPickerWrapper() *pickerWrapper { - bp := &pickerWrapper{ - blockingCh: make(chan struct{}), - stickiness: newStickyStore(), - } + bp := &pickerWrapper{blockingCh: make(chan struct{})} return bp } @@ -71,27 +62,6 @@ func (bp *pickerWrapper) connectionError() error { return err } -func (bp *pickerWrapper) updateStickinessMDKey(newKey string) { - // No need to check ok because mdKey == "" if ok == false. - if oldKey, _ := bp.stickinessMDKey.Load().(string); oldKey != newKey { - bp.stickinessMDKey.Store(newKey) - bp.stickiness.reset(newKey) - } -} - -func (bp *pickerWrapper) getStickinessMDKey() string { - // No need to check ok because mdKey == "" if ok == false. - mdKey, _ := bp.stickinessMDKey.Load().(string) - return mdKey -} - -func (bp *pickerWrapper) clearStickinessState() { - if oldKey := bp.getStickinessMDKey(); oldKey != "" { - // There's no need to reset store if mdKey was "". - bp.stickiness.reset(oldKey) - } -} - // updatePicker is called by UpdateBalancerState. It unblocks all blocked pick. func (bp *pickerWrapper) updatePicker(p balancer.Picker) { bp.mu.Lock() @@ -131,27 +101,6 @@ func doneChannelzWrapper(acw *acBalancerWrapper, done func(balancer.DoneInfo)) f // - the subConn returned by the current picker is not READY // When one of these situations happens, pick blocks until the picker gets updated. func (bp *pickerWrapper) pick(ctx context.Context, failfast bool, opts balancer.PickOptions) (transport.ClientTransport, func(balancer.DoneInfo), error) { - - mdKey := bp.getStickinessMDKey() - stickyKey, isSticky := stickyKeyFromContext(ctx, mdKey) - - // Potential race here: if stickinessMDKey is updated after the above two - // lines, and this pick is a sticky pick, the following put could add an - // entry to sticky store with an outdated sticky key. - // - // The solution: keep the current md key in sticky store, and at the - // beginning of each get/put, check the mdkey against store.curMDKey. - // - Cons: one more string comparing for each get/put. - // - Pros: the string matching happens inside get/put, so the overhead for - // non-sticky RPCs will be minimal. - - if isSticky { - if t, ok := bp.stickiness.get(mdKey, stickyKey); ok { - // Done function returned is always nil. - return t, nil, nil - } - } - var ( p balancer.Picker ch chan struct{} @@ -207,9 +156,6 @@ func (bp *pickerWrapper) pick(ctx context.Context, failfast bool, opts balancer. continue } if t, ok := acw.getAddrConn().getReadyTransport(); ok { - if isSticky { - bp.stickiness.put(mdKey, stickyKey, acw) - } if channelz.IsOn() { return t, doneChannelzWrapper(acw, done), nil } @@ -232,105 +178,3 @@ func (bp *pickerWrapper) close() { bp.done = true close(bp.blockingCh) } - -const stickinessKeyCountLimit = 1000 - -type stickyStoreEntry struct { - acw *acBalancerWrapper - addr resolver.Address -} - -type stickyStore struct { - mu sync.Mutex - // curMDKey is check before every get/put to avoid races. The operation will - // abort immediately when the given mdKey is different from the curMDKey. - curMDKey string - store *linkedMap -} - -func newStickyStore() *stickyStore { - return &stickyStore{ - store: newLinkedMap(), - } -} - -// reset clears the map in stickyStore, and set the currentMDKey to newMDKey. -func (ss *stickyStore) reset(newMDKey string) { - ss.mu.Lock() - ss.curMDKey = newMDKey - ss.store.clear() - ss.mu.Unlock() -} - -// stickyKey is the key to look up in store. mdKey will be checked against -// curMDKey to avoid races. -func (ss *stickyStore) put(mdKey, stickyKey string, acw *acBalancerWrapper) { - ss.mu.Lock() - defer ss.mu.Unlock() - if mdKey != ss.curMDKey { - return - } - // TODO(stickiness): limit the total number of entries. - ss.store.put(stickyKey, &stickyStoreEntry{ - acw: acw, - addr: acw.getAddrConn().getCurAddr(), - }) - if ss.store.len() > stickinessKeyCountLimit { - ss.store.removeOldest() - } -} - -// stickyKey is the key to look up in store. mdKey will be checked against -// curMDKey to avoid races. -func (ss *stickyStore) get(mdKey, stickyKey string) (transport.ClientTransport, bool) { - ss.mu.Lock() - defer ss.mu.Unlock() - if mdKey != ss.curMDKey { - return nil, false - } - entry, ok := ss.store.get(stickyKey) - if !ok { - return nil, false - } - ac := entry.acw.getAddrConn() - if ac.getCurAddr() != entry.addr { - ss.store.remove(stickyKey) - return nil, false - } - t, ok := ac.getReadyTransport() - if !ok { - ss.store.remove(stickyKey) - return nil, false - } - return t, true -} - -// Get one value from metadata in ctx with key stickinessMDKey. -// -// It returns "", false if stickinessMDKey is an empty string. -func stickyKeyFromContext(ctx context.Context, stickinessMDKey string) (string, bool) { - if stickinessMDKey == "" { - return "", false - } - - md, added, ok := metadata.FromOutgoingContextRaw(ctx) - if !ok { - return "", false - } - - if vv, ok := md[stickinessMDKey]; ok { - if len(vv) > 0 { - return vv[0], true - } - } - - for _, ss := range added { - for i := 0; i < len(ss)-1; i += 2 { - if ss[i] == stickinessMDKey { - return ss[i+1], true - } - } - } - - return "", false -} diff --git a/vendor/google.golang.org/grpc/resolver/dns/dns_resolver.go b/vendor/google.golang.org/grpc/resolver/dns/dns_resolver.go index 048fde67..4ce81671 100644 --- a/vendor/google.golang.org/grpc/resolver/dns/dns_resolver.go +++ b/vendor/google.golang.org/grpc/resolver/dns/dns_resolver.go @@ -33,6 +33,7 @@ import ( "golang.org/x/net/context" "google.golang.org/grpc/grpclog" + "google.golang.org/grpc/internal/backoff" "google.golang.org/grpc/internal/grpcrand" "google.golang.org/grpc/resolver" ) @@ -51,23 +52,29 @@ const ( ) var ( - errMissingAddr = errors.New("missing address") + errMissingAddr = errors.New("dns resolver: missing address") + + // Addresses ending with a colon that is supposed to be the separator + // between host and port is not allowed. E.g. "::" is a valid address as + // it is an IPv6 address (host only) and "[::]:" is invalid as it ends with + // a colon as the host and port separator + errEndsWithColon = errors.New("dns resolver: missing port after port-separator colon") ) // NewBuilder creates a dnsBuilder which is used to factory DNS resolvers. func NewBuilder() resolver.Builder { - return &dnsBuilder{freq: defaultFreq} + return &dnsBuilder{minFreq: defaultFreq} } type dnsBuilder struct { - // frequency of polling the DNS server. - freq time.Duration + // minimum frequency of polling the DNS server. + minFreq time.Duration } // Build creates and starts a DNS resolver that watches the name resolution of the target. func (b *dnsBuilder) Build(target resolver.Target, cc resolver.ClientConn, opts resolver.BuildOption) (resolver.Resolver, error) { if target.Authority != "" { - return nil, fmt.Errorf("Default DNS resolver does not support custom DNS server") + return nil, fmt.Errorf("default DNS resolver does not support custom DNS server") } host, port, err := parseTarget(target.Endpoint) if err != nil { @@ -92,7 +99,8 @@ func (b *dnsBuilder) Build(target resolver.Target, cc resolver.ClientConn, opts // DNS address (non-IP). ctx, cancel := context.WithCancel(context.Background()) d := &dnsResolver{ - freq: b.freq, + freq: b.minFreq, + backoff: backoff.Exponential{MaxDelay: b.minFreq}, host: host, port: port, ctx: ctx, @@ -148,12 +156,14 @@ func (i *ipResolver) watcher() { // dnsResolver watches for the name resolution update for a non-IP target. type dnsResolver struct { - freq time.Duration - host string - port string - ctx context.Context - cancel context.CancelFunc - cc resolver.ClientConn + freq time.Duration + backoff backoff.Exponential + retryCount int + host string + port string + ctx context.Context + cancel context.CancelFunc + cc resolver.ClientConn // rn channel is used by ResolveNow() to force an immediate resolution of the target. rn chan struct{} t *time.Timer @@ -192,8 +202,15 @@ func (d *dnsResolver) watcher() { case <-d.rn: } result, sc := d.lookup() - // Next lookup should happen after an interval defined by d.freq. - d.t.Reset(d.freq) + // Next lookup should happen within an interval defined by d.freq. It may be + // more often due to exponential retry on empty address list. + if len(result) == 0 { + d.retryCount++ + d.t.Reset(d.backoff.Backoff(d.retryCount)) + } else { + d.retryCount = 0 + d.t.Reset(d.freq) + } d.cc.NewServiceConfig(sc) d.cc.NewAddress(result) } @@ -297,7 +314,6 @@ func formatIP(addr string) (addrIP string, ok bool) { // target: "ipv4-host:80" returns host: "ipv4-host", port: "80" // target: "[ipv6-host]" returns host: "ipv6-host", port: "443" // target: ":80" returns host: "localhost", port: "80" -// target: ":" returns host: "localhost", port: "443" func parseTarget(target string) (host, port string, err error) { if target == "" { return "", "", errMissingAddr @@ -307,15 +323,15 @@ func parseTarget(target string) (host, port string, err error) { return target, defaultPort, nil } if host, port, err = net.SplitHostPort(target); err == nil { + if port == "" { + // If the port field is empty (target ends with colon), e.g. "[::1]:", this is an error. + return "", "", errEndsWithColon + } // target has port, i.e ipv4-host:port, [ipv6-host]:port, host-name:port if host == "" { // Keep consistent with net.Dial(): If the host is empty, as in ":80", the local system is assumed. host = "localhost" } - if port == "" { - // If the port field is empty(target ends with colon), e.g. "[::1]:", defaultPort is used. - port = defaultPort - } return host, port, nil } if host, port, err = net.SplitHostPort(target + ":" + defaultPort); err == nil { diff --git a/vendor/google.golang.org/grpc/resolver/resolver.go b/vendor/google.golang.org/grpc/resolver/resolver.go index 506afac8..145cf477 100644 --- a/vendor/google.golang.org/grpc/resolver/resolver.go +++ b/vendor/google.golang.org/grpc/resolver/resolver.go @@ -49,8 +49,12 @@ func Get(scheme string) Builder { return nil } -// SetDefaultScheme sets the default scheme that will be used. -// The default default scheme is "passthrough". +// SetDefaultScheme sets the default scheme that will be used. The default +// default scheme is "passthrough". +// +// NOTE: this function must only be called during initialization time (i.e. in +// an init() function), and is not thread-safe. The scheme set last overrides +// previously set values. func SetDefaultScheme(scheme string) { defaultScheme = scheme } diff --git a/vendor/google.golang.org/grpc/rpc_util.go b/vendor/google.golang.org/grpc/rpc_util.go index 033801f3..fa056830 100644 --- a/vendor/google.golang.org/grpc/rpc_util.go +++ b/vendor/google.golang.org/grpc/rpc_util.go @@ -36,11 +36,11 @@ import ( "google.golang.org/grpc/credentials" "google.golang.org/grpc/encoding" "google.golang.org/grpc/encoding/proto" + "google.golang.org/grpc/internal/transport" "google.golang.org/grpc/metadata" "google.golang.org/grpc/peer" "google.golang.org/grpc/stats" "google.golang.org/grpc/status" - "google.golang.org/grpc/transport" ) // Compressor defines the interface gRPC uses to compress a message. @@ -156,16 +156,19 @@ type callInfo struct { compressorType string failFast bool stream *clientStream - traceInfo traceInfo // in trace.go maxReceiveMessageSize *int maxSendMessageSize *int creds credentials.PerRPCCredentials contentSubtype string codec baseCodec + maxRetryRPCBufferSize int } func defaultCallInfo() *callInfo { - return &callInfo{failFast: true} + return &callInfo{ + failFast: true, + maxRetryRPCBufferSize: 256 * 1024, // 256KB + } } // CallOption configures a Call before it starts or extracts information from @@ -415,6 +418,27 @@ func (o CustomCodecCallOption) before(c *callInfo) error { } func (o CustomCodecCallOption) after(c *callInfo) {} +// MaxRetryRPCBufferSize returns a CallOption that limits the amount of memory +// used for buffering this RPC's requests for retry purposes. +// +// This API is EXPERIMENTAL. +func MaxRetryRPCBufferSize(bytes int) CallOption { + return MaxRetryRPCBufferSizeCallOption{bytes} +} + +// MaxRetryRPCBufferSizeCallOption is a CallOption indicating the amount of +// memory to be used for caching this RPC for retry purposes. +// This is an EXPERIMENTAL API. +type MaxRetryRPCBufferSizeCallOption struct { + MaxRetryRPCBufferSize int +} + +func (o MaxRetryRPCBufferSizeCallOption) before(c *callInfo) error { + c.maxRetryRPCBufferSize = o.MaxRetryRPCBufferSize + return nil +} +func (o MaxRetryRPCBufferSizeCallOption) after(c *callInfo) {} + // The format of the payload: compressed or not? type payloadFormat uint8 @@ -444,7 +468,7 @@ type parser struct { // * io.EOF, when no messages remain // * io.ErrUnexpectedEOF // * of type transport.ConnectionError -// * of type transport.StreamError +// * an error from the status package // No other error values or types must be returned, which also means // that the underlying io.Reader must not return an incompatible // error. @@ -724,6 +748,19 @@ func parseDialTarget(target string) (net string, addr string) { return net, target } +// channelzData is used to store channelz related data for ClientConn, addrConn and Server. +// These fields cannot be embedded in the original structs (e.g. ClientConn), since to do atomic +// operation on int64 variable on 32-bit machine, user is responsible to enforce memory alignment. +// Here, by grouping those int64 fields inside a struct, we are enforcing the alignment. +type channelzData struct { + callsStarted int64 + callsFailed int64 + callsSucceeded int64 + // lastCallStartedTime stores the timestamp that last call starts. It is of int64 type instead of + // time.Time since it's more costly to atomically update time.Time variable than int64 variable. + lastCallStartedTime int64 +} + // The SupportPackageIsVersion variables are referenced from generated protocol // buffer files to ensure compatibility with the gRPC version used. The latest // support package version is 5. diff --git a/vendor/google.golang.org/grpc/server.go b/vendor/google.golang.org/grpc/server.go index 014c72b3..5c7d5b63 100644 --- a/vendor/google.golang.org/grpc/server.go +++ b/vendor/google.golang.org/grpc/server.go @@ -30,12 +30,12 @@ import ( "runtime" "strings" "sync" + "sync/atomic" "time" "io/ioutil" "golang.org/x/net/context" - "golang.org/x/net/http2" "golang.org/x/net/trace" "google.golang.org/grpc/codes" @@ -43,14 +43,13 @@ import ( "google.golang.org/grpc/encoding" "google.golang.org/grpc/encoding/proto" "google.golang.org/grpc/grpclog" - "google.golang.org/grpc/internal" "google.golang.org/grpc/internal/channelz" + "google.golang.org/grpc/internal/transport" "google.golang.org/grpc/keepalive" "google.golang.org/grpc/metadata" "google.golang.org/grpc/stats" "google.golang.org/grpc/status" "google.golang.org/grpc/tap" - "google.golang.org/grpc/transport" ) const ( @@ -106,12 +105,8 @@ type Server struct { channelzRemoveOnce sync.Once serveWG sync.WaitGroup // counts active Serve goroutines for GracefulStop - channelzID int64 // channelz unique identification number - czmu sync.RWMutex - callsStarted int64 - callsFailed int64 - callsSucceeded int64 - lastCallStartedTime time.Time + channelzID int64 // channelz unique identification number + czData *channelzData } type options struct { @@ -126,7 +121,6 @@ type options struct { maxConcurrentStreams uint32 maxReceiveMessageSize int maxSendMessageSize int - useHandlerImpl bool // use http.Handler-based server unknownStreamDesc *StreamDesc keepaliveParams keepalive.ServerParameters keepalivePolicy keepalive.EnforcementPolicy @@ -135,19 +129,25 @@ type options struct { writeBufferSize int readBufferSize int connectionTimeout time.Duration + maxHeaderListSize *uint32 } var defaultServerOptions = options{ maxReceiveMessageSize: defaultServerMaxReceiveMessageSize, maxSendMessageSize: defaultServerMaxSendMessageSize, connectionTimeout: 120 * time.Second, + writeBufferSize: defaultWriteBufSize, + readBufferSize: defaultReadBufSize, } // A ServerOption sets options such as credentials, codec and keepalive parameters, etc. type ServerOption func(*options) -// WriteBufferSize lets you set the size of write buffer, this determines how much data can be batched -// before doing a write on the wire. +// WriteBufferSize determines how much data can be batched before doing a write on the wire. +// The corresponding memory allocation for this buffer will be twice the size to keep syscalls low. +// The default value for this buffer is 32KB. +// Zero will disable the write buffer such that each write will be on underlying connection. +// Note: A Send call may not directly translate to a write. func WriteBufferSize(s int) ServerOption { return func(o *options) { o.writeBufferSize = s @@ -156,6 +156,9 @@ func WriteBufferSize(s int) ServerOption { // ReadBufferSize lets you set the size of read buffer, this determines how much data can be read at most // for one read syscall. +// The default value for this buffer is 32KB. +// Zero will disable read buffer for a connection so data framer can access the underlying +// conn directly. func ReadBufferSize(s int) ServerOption { return func(o *options) { o.readBufferSize = s @@ -335,6 +338,14 @@ func ConnectionTimeout(d time.Duration) ServerOption { } } +// MaxHeaderListSize returns a ServerOption that sets the max (uncompressed) size +// of header list that the server is prepared to accept. +func MaxHeaderListSize(s uint32) ServerOption { + return func(o *options) { + o.maxHeaderListSize = &s + } +} + // NewServer creates a gRPC server which has no service registered and has not // started to accept requests yet. func NewServer(opt ...ServerOption) *Server { @@ -343,12 +354,13 @@ func NewServer(opt ...ServerOption) *Server { o(&opts) } s := &Server{ - lis: make(map[net.Listener]bool), - opts: opts, - conns: make(map[io.Closer]bool), - m: make(map[string]*service), - quit: make(chan struct{}), - done: make(chan struct{}), + lis: make(map[net.Listener]bool), + opts: opts, + conns: make(map[io.Closer]bool), + m: make(map[string]*service), + quit: make(chan struct{}), + done: make(chan struct{}), + czData: new(channelzData), } s.cv = sync.NewCond(&s.mu) if EnableTracing { @@ -357,7 +369,7 @@ func NewServer(opt ...ServerOption) *Server { } if channelz.IsOn() { - s.channelzID = channelz.RegisterServer(s, "") + s.channelzID = channelz.RegisterServer(&channelzServer{s}, "") } return s } @@ -481,7 +493,8 @@ type listenSocket struct { func (l *listenSocket) ChannelzMetric() *channelz.SocketInternalMetric { return &channelz.SocketInternalMetric{ - LocalAddr: l.Listener.Addr(), + SocketOptions: channelz.GetSocketOption(l.Listener), + LocalAddr: l.Listener.Addr(), } } @@ -617,27 +630,19 @@ func (s *Server) handleRawConn(rawConn net.Conn) { } s.mu.Unlock() - var serve func() - c := conn.(io.Closer) - if s.opts.useHandlerImpl { - serve = func() { s.serveUsingHandler(conn) } - } else { - // Finish handshaking (HTTP2) - st := s.newHTTP2Transport(conn, authInfo) - if st == nil { - return - } - c = st - serve = func() { s.serveStreams(st) } + // Finish handshaking (HTTP2) + st := s.newHTTP2Transport(conn, authInfo) + if st == nil { + return } rawConn.SetDeadline(time.Time{}) - if !s.addConn(c) { + if !s.addConn(st) { return } go func() { - serve() - s.removeConn(c) + s.serveStreams(st) + s.removeConn(st) }() } @@ -656,6 +661,7 @@ func (s *Server) newHTTP2Transport(c net.Conn, authInfo credentials.AuthInfo) tr WriteBufferSize: s.opts.writeBufferSize, ReadBufferSize: s.opts.readBufferSize, ChannelzParentID: s.channelzID, + MaxHeaderListSize: s.opts.maxHeaderListSize, } st, err := transport.NewServerTransport("http2", c, config) if err != nil { @@ -691,27 +697,6 @@ func (s *Server) serveStreams(st transport.ServerTransport) { var _ http.Handler = (*Server)(nil) -// serveUsingHandler is called from handleRawConn when s is configured -// to handle requests via the http.Handler interface. It sets up a -// net/http.Server to handle the just-accepted conn. The http.Server -// is configured to route all incoming requests (all HTTP/2 streams) -// to ServeHTTP, which creates a new ServerTransport for each stream. -// serveUsingHandler blocks until conn closes. -// -// This codepath is only used when Server.TestingUseHandlerImpl has -// been configured. This lets the end2end tests exercise the ServeHTTP -// method as one of the environment types. -// -// conn is the *tls.Conn that's already been authenticated. -func (s *Server) serveUsingHandler(conn net.Conn) { - h2s := &http2.Server{ - MaxConcurrentStreams: s.opts.maxConcurrentStreams, - } - h2s.ServeConn(conn, &http2.ServeConnOpts{ - Handler: s, - }) -} - // ServeHTTP implements the Go standard library's http.Handler // interface by responding to the gRPC request r, by looking up // the requested gRPC method in the gRPC server s. @@ -794,36 +779,26 @@ func (s *Server) removeConn(c io.Closer) { } } -// ChannelzMetric returns ServerInternalMetric of current server. -// This is an EXPERIMENTAL API. -func (s *Server) ChannelzMetric() *channelz.ServerInternalMetric { - s.czmu.RLock() - defer s.czmu.RUnlock() +func (s *Server) channelzMetric() *channelz.ServerInternalMetric { return &channelz.ServerInternalMetric{ - CallsStarted: s.callsStarted, - CallsSucceeded: s.callsSucceeded, - CallsFailed: s.callsFailed, - LastCallStartedTimestamp: s.lastCallStartedTime, + CallsStarted: atomic.LoadInt64(&s.czData.callsStarted), + CallsSucceeded: atomic.LoadInt64(&s.czData.callsSucceeded), + CallsFailed: atomic.LoadInt64(&s.czData.callsFailed), + LastCallStartedTimestamp: time.Unix(0, atomic.LoadInt64(&s.czData.lastCallStartedTime)), } } func (s *Server) incrCallsStarted() { - s.czmu.Lock() - s.callsStarted++ - s.lastCallStartedTime = time.Now() - s.czmu.Unlock() + atomic.AddInt64(&s.czData.callsStarted, 1) + atomic.StoreInt64(&s.czData.lastCallStartedTime, time.Now().UnixNano()) } func (s *Server) incrCallsSucceeded() { - s.czmu.Lock() - s.callsSucceeded++ - s.czmu.Unlock() + atomic.AddInt64(&s.czData.callsSucceeded, 1) } func (s *Server) incrCallsFailed() { - s.czmu.Lock() - s.callsFailed++ - s.czmu.Unlock() + atomic.AddInt64(&s.czData.callsFailed, 1) } func (s *Server) sendResponse(t transport.ServerTransport, stream *transport.Stream, msg interface{}, cp Compressor, opts *transport.Options, comp encoding.Compressor) error { @@ -944,10 +919,6 @@ func (s *Server) processUnaryRPC(t transport.ServerTransport, stream *transport. switch st := err.(type) { case transport.ConnectionError: // Nothing to do here. - case transport.StreamError: - if e := t.WriteStatus(stream, status.New(st.Code, st.Desc)); e != nil { - grpclog.Warningf("grpc: Server.processUnaryRPC failed to write status %v", e) - } default: panic(fmt.Sprintf("grpc: Unexpected error (%T) from recvMsg: %v", st, st)) } @@ -1028,10 +999,7 @@ func (s *Server) processUnaryRPC(t transport.ServerTransport, stream *transport. if trInfo != nil { trInfo.tr.LazyLog(stringer("OK"), false) } - opts := &transport.Options{ - Last: true, - Delay: false, - } + opts := &transport.Options{Last: true} if err := s.sendResponse(t, stream, reply, cp, opts, comp); err != nil { if err == io.EOF { @@ -1046,10 +1014,6 @@ func (s *Server) processUnaryRPC(t transport.ServerTransport, stream *transport. switch st := err.(type) { case transport.ConnectionError: // Nothing to do here. - case transport.StreamError: - if e := t.WriteStatus(stream, status.New(st.Code, st.Desc)); e != nil { - grpclog.Warningf("grpc: Server.processUnaryRPC failed to write status %v", e) - } default: panic(fmt.Sprintf("grpc: Unexpected error (%T) from sendResponse: %v", st, st)) } @@ -1099,11 +1063,11 @@ func (s *Server) processStreamingRPC(t transport.ServerTransport, stream *transp } ctx := NewContextWithServerTransportStream(stream.Context(), stream) ss := &serverStream{ - ctx: ctx, - t: t, - s: stream, - p: &parser{r: stream}, - codec: s.getCodec(stream.ContentSubtype()), + ctx: ctx, + t: t, + s: stream, + p: &parser{r: stream}, + codec: s.getCodec(stream.ContentSubtype()), maxReceiveMessageSize: s.opts.maxReceiveMessageSize, maxSendMessageSize: s.opts.maxSendMessageSize, trInfo: trInfo, @@ -1169,12 +1133,7 @@ func (s *Server) processStreamingRPC(t transport.ServerTransport, stream *transp if appErr != nil { appStatus, ok := status.FromError(appErr) if !ok { - switch err := appErr.(type) { - case transport.StreamError: - appStatus = status.New(err.Code, err.Desc) - default: - appStatus = status.New(codes.Unknown, appErr.Error()) - } + appStatus = status.New(codes.Unknown, appErr.Error()) appErr = appStatus.Err() } if trInfo != nil { @@ -1410,12 +1369,6 @@ func (s *Server) GracefulStop() { s.mu.Unlock() } -func init() { - internal.TestingUseHandlerImpl = func(arg interface{}) { - arg.(*Server).opts.useHandlerImpl = true - } -} - // contentSubtype must be lowercase // cannot return nil func (s *Server) getCodec(contentSubtype string) baseCodec { @@ -1484,3 +1437,11 @@ func Method(ctx context.Context) (string, bool) { } return s.Method(), true } + +type channelzServer struct { + s *Server +} + +func (c *channelzServer) ChannelzMetric() *channelz.ServerInternalMetric { + return c.s.channelzMetric() +} diff --git a/vendor/google.golang.org/grpc/service_config.go b/vendor/google.golang.org/grpc/service_config.go index 015631d8..e0d73526 100644 --- a/vendor/google.golang.org/grpc/service_config.go +++ b/vendor/google.golang.org/grpc/service_config.go @@ -25,6 +25,7 @@ import ( "strings" "time" + "google.golang.org/grpc/codes" "google.golang.org/grpc/grpclog" ) @@ -56,6 +57,8 @@ type MethodConfig struct { // MaxRespSize is the maximum allowed payload size for an individual response in a // stream (server->client) in bytes. MaxRespSize *int + // RetryPolicy configures retry options for the method. + retryPolicy *retryPolicy } // ServiceConfig is provided by the service provider and contains parameters for how @@ -68,13 +71,84 @@ type ServiceConfig struct { // LB is the load balancer the service providers recommends. The balancer specified // via grpc.WithBalancer will override this. LB *string - // Methods contains a map for the methods in this service. - // If there is an exact match for a method (i.e. /service/method) in the map, use the corresponding MethodConfig. - // If there's no exact match, look for the default config for the service (/service/) and use the corresponding MethodConfig if it exists. - // Otherwise, the method has no MethodConfig to use. + + // Methods contains a map for the methods in this service. If there is an + // exact match for a method (i.e. /service/method) in the map, use the + // corresponding MethodConfig. If there's no exact match, look for the + // default config for the service (/service/) and use the corresponding + // MethodConfig if it exists. Otherwise, the method has no MethodConfig to + // use. Methods map[string]MethodConfig - stickinessMetadataKey *string + // If a retryThrottlingPolicy is provided, gRPC will automatically throttle + // retry attempts and hedged RPCs when the client’s ratio of failures to + // successes exceeds a threshold. + // + // For each server name, the gRPC client will maintain a token_count which is + // initially set to maxTokens, and can take values between 0 and maxTokens. + // + // Every outgoing RPC (regardless of service or method invoked) will change + // token_count as follows: + // + // - Every failed RPC will decrement the token_count by 1. + // - Every successful RPC will increment the token_count by tokenRatio. + // + // If token_count is less than or equal to maxTokens / 2, then RPCs will not + // be retried and hedged RPCs will not be sent. + retryThrottling *retryThrottlingPolicy +} + +// retryPolicy defines the go-native version of the retry policy defined by the +// service config here: +// https://github.com/grpc/proposal/blob/master/A6-client-retries.md#integration-with-service-config +type retryPolicy struct { + // MaxAttempts is the maximum number of attempts, including the original RPC. + // + // This field is required and must be two or greater. + maxAttempts int + + // Exponential backoff parameters. The initial retry attempt will occur at + // random(0, initialBackoffMS). In general, the nth attempt will occur at + // random(0, + // min(initialBackoffMS*backoffMultiplier**(n-1), maxBackoffMS)). + // + // These fields are required and must be greater than zero. + initialBackoff time.Duration + maxBackoff time.Duration + backoffMultiplier float64 + + // The set of status codes which may be retried. + // + // Status codes are specified as strings, e.g., "UNAVAILABLE". + // + // This field is required and must be non-empty. + // Note: a set is used to store this for easy lookup. + retryableStatusCodes map[codes.Code]bool +} + +type jsonRetryPolicy struct { + MaxAttempts int + InitialBackoff string + MaxBackoff string + BackoffMultiplier float64 + RetryableStatusCodes []codes.Code +} + +// retryThrottlingPolicy defines the go-native version of the retry throttling +// policy defined by the service config here: +// https://github.com/grpc/proposal/blob/master/A6-client-retries.md#integration-with-service-config +type retryThrottlingPolicy struct { + // The number of tokens starts at maxTokens. The token_count will always be + // between 0 and maxTokens. + // + // This field is required and must be greater than zero. + MaxTokens float64 + // The amount of tokens to add on each successful RPC. Typically this will + // be some number between 0 and 1, e.g., 0.1. + // + // This field is required and must be greater than zero. Up to 3 decimal + // places are supported. + TokenRatio float64 } func parseDuration(s *string) (*time.Duration, error) { @@ -144,13 +218,14 @@ type jsonMC struct { Timeout *string MaxRequestMessageBytes *int64 MaxResponseMessageBytes *int64 + RetryPolicy *jsonRetryPolicy } // TODO(lyuxuan): delete this struct after cleaning up old service config implementation. type jsonSC struct { - LoadBalancingPolicy *string - StickinessMetadataKey *string - MethodConfig *[]jsonMC + LoadBalancingPolicy *string + MethodConfig *[]jsonMC + RetryThrottling *retryThrottlingPolicy } func parseServiceConfig(js string) (ServiceConfig, error) { @@ -161,10 +236,9 @@ func parseServiceConfig(js string) (ServiceConfig, error) { return ServiceConfig{}, err } sc := ServiceConfig{ - LB: rsc.LoadBalancingPolicy, - Methods: make(map[string]MethodConfig), - - stickinessMetadataKey: rsc.StickinessMetadataKey, + LB: rsc.LoadBalancingPolicy, + Methods: make(map[string]MethodConfig), + retryThrottling: rsc.RetryThrottling, } if rsc.MethodConfig == nil { return sc, nil @@ -184,6 +258,10 @@ func parseServiceConfig(js string) (ServiceConfig, error) { WaitForReady: m.WaitForReady, Timeout: d, } + if mc.retryPolicy, err = convertRetryPolicy(m.RetryPolicy); err != nil { + grpclog.Warningf("grpc: parseServiceConfig error unmarshaling %s due to %v", js, err) + return ServiceConfig{}, err + } if m.MaxRequestMessageBytes != nil { if *m.MaxRequestMessageBytes > int64(maxInt) { mc.MaxReqSize = newInt(maxInt) @@ -205,9 +283,56 @@ func parseServiceConfig(js string) (ServiceConfig, error) { } } + if sc.retryThrottling != nil { + if sc.retryThrottling.MaxTokens <= 0 || + sc.retryThrottling.MaxTokens >= 1000 || + sc.retryThrottling.TokenRatio <= 0 { + // Illegal throttling config; disable throttling. + sc.retryThrottling = nil + } + } return sc, nil } +func convertRetryPolicy(jrp *jsonRetryPolicy) (p *retryPolicy, err error) { + if jrp == nil { + return nil, nil + } + ib, err := parseDuration(&jrp.InitialBackoff) + if err != nil { + return nil, err + } + mb, err := parseDuration(&jrp.MaxBackoff) + if err != nil { + return nil, err + } + + if jrp.MaxAttempts <= 1 || + *ib <= 0 || + *mb <= 0 || + jrp.BackoffMultiplier <= 0 || + len(jrp.RetryableStatusCodes) == 0 { + grpclog.Warningf("grpc: ignoring retry policy %v due to illegal configuration", jrp) + return nil, nil + } + + rp := &retryPolicy{ + maxAttempts: jrp.MaxAttempts, + initialBackoff: *ib, + maxBackoff: *mb, + backoffMultiplier: jrp.BackoffMultiplier, + retryableStatusCodes: make(map[codes.Code]bool), + } + if rp.maxAttempts > 5 { + // TODO(retry): Make the max maxAttempts configurable. + rp.maxAttempts = 5 + } + for _, code := range jrp.RetryableStatusCodes { + rp.retryableStatusCodes[code] = true + } + return rp, nil +} + func min(a, b *int) *int { if *a < *b { return a diff --git a/vendor/google.golang.org/grpc/stickiness_linkedmap.go b/vendor/google.golang.org/grpc/stickiness_linkedmap.go deleted file mode 100644 index 1c726af1..00000000 --- a/vendor/google.golang.org/grpc/stickiness_linkedmap.go +++ /dev/null @@ -1,97 +0,0 @@ -/* - * - * Copyright 2018 gRPC authors. - * - * Licensed 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. - * - */ - -package grpc - -import ( - "container/list" -) - -type linkedMapKVPair struct { - key string - value *stickyStoreEntry -} - -// linkedMap is an implementation of a map that supports removing the oldest -// entry. -// -// linkedMap is NOT thread safe. -// -// It's for use of stickiness only! -type linkedMap struct { - m map[string]*list.Element - l *list.List // Head of the list is the oldest element. -} - -// newLinkedMap returns a new LinkedMap. -func newLinkedMap() *linkedMap { - return &linkedMap{ - m: make(map[string]*list.Element), - l: list.New(), - } -} - -// put adds entry (key, value) to the map. Existing key will be overridden. -func (m *linkedMap) put(key string, value *stickyStoreEntry) { - if oldE, ok := m.m[key]; ok { - // Remove existing entry. - m.l.Remove(oldE) - } - e := m.l.PushBack(&linkedMapKVPair{key: key, value: value}) - m.m[key] = e -} - -// get returns the value of the given key. -func (m *linkedMap) get(key string) (*stickyStoreEntry, bool) { - e, ok := m.m[key] - if !ok { - return nil, false - } - m.l.MoveToBack(e) - return e.Value.(*linkedMapKVPair).value, true -} - -// remove removes key from the map, and returns the value. The map is not -// modified if key is not in the map. -func (m *linkedMap) remove(key string) (*stickyStoreEntry, bool) { - e, ok := m.m[key] - if !ok { - return nil, false - } - delete(m.m, key) - m.l.Remove(e) - return e.Value.(*linkedMapKVPair).value, true -} - -// len returns the len of the map. -func (m *linkedMap) len() int { - return len(m.m) -} - -// clear removes all elements from the map. -func (m *linkedMap) clear() { - m.m = make(map[string]*list.Element) - m.l = list.New() -} - -// removeOldest removes the oldest key from the map. -func (m *linkedMap) removeOldest() { - e := m.l.Front() - m.l.Remove(e) - delete(m.m, e.Value.(*linkedMapKVPair).key) -} diff --git a/vendor/google.golang.org/grpc/stream.go b/vendor/google.golang.org/grpc/stream.go index 152d9ecc..65d45a1d 100644 --- a/vendor/google.golang.org/grpc/stream.go +++ b/vendor/google.golang.org/grpc/stream.go @@ -21,6 +21,8 @@ package grpc import ( "errors" "io" + "math" + "strconv" "sync" "time" @@ -29,11 +31,13 @@ import ( "google.golang.org/grpc/balancer" "google.golang.org/grpc/codes" "google.golang.org/grpc/encoding" + "google.golang.org/grpc/grpclog" "google.golang.org/grpc/internal/channelz" + "google.golang.org/grpc/internal/grpcrand" + "google.golang.org/grpc/internal/transport" "google.golang.org/grpc/metadata" "google.golang.org/grpc/stats" "google.golang.org/grpc/status" - "google.golang.org/grpc/transport" ) // StreamHandler defines the handler called by gRPC server to complete the @@ -55,31 +59,20 @@ type StreamDesc struct { // Stream defines the common interface a client or server stream has to satisfy. // -// All errors returned from Stream are compatible with the status package. +// Deprecated: See ClientStream and ServerStream documentation instead. type Stream interface { - // Context returns the context for this stream. + // Deprecated: See ClientStream and ServerStream documentation instead. Context() context.Context - // SendMsg blocks until it sends m, the stream is done or the stream - // breaks. - // On error, it aborts the stream and returns an RPC status on client - // side. On server side, it simply returns the error to the caller. - // SendMsg is called by generated code. Also Users can call SendMsg - // directly when it is really needed in their use cases. - // It's safe to have a goroutine calling SendMsg and another goroutine calling - // recvMsg on the same stream at the same time. - // But it is not safe to call SendMsg on the same stream in different goroutines. + // Deprecated: See ClientStream and ServerStream documentation instead. SendMsg(m interface{}) error - // RecvMsg blocks until it receives a message or the stream is - // done. On client side, it returns io.EOF when the stream is done. On - // any other error, it aborts the stream and returns an RPC status. On - // server side, it simply returns the error to the caller. - // It's safe to have a goroutine calling SendMsg and another goroutine calling - // recvMsg on the same stream at the same time. - // But it is not safe to call RecvMsg on the same stream in different goroutines. + // Deprecated: See ClientStream and ServerStream documentation instead. RecvMsg(m interface{}) error } -// ClientStream defines the interface a client stream has to satisfy. +// ClientStream defines the client-side behavior of a streaming RPC. +// +// All errors returned from ClientStream methods are compatible with the +// status package. type ClientStream interface { // Header returns the header metadata received from the server if there // is any. It blocks if the metadata is not ready to read. @@ -91,13 +84,38 @@ type ClientStream interface { // CloseSend closes the send direction of the stream. It closes the stream // when non-nil error is met. CloseSend() error - // Stream.SendMsg() may return a non-nil error when something wrong happens sending - // the request. The returned error indicates the status of this sending, not the final - // status of the RPC. + // Context returns the context for this stream. // - // Always call Stream.RecvMsg() to drain the stream and get the final - // status, otherwise there could be leaked resources. - Stream + // It should not be called until after Header or RecvMsg has returned. Once + // called, subsequent client-side retries are disabled. + Context() context.Context + // SendMsg is generally called by generated code. On error, SendMsg aborts + // the stream. If the error was generated by the client, the status is + // returned directly; otherwise, io.EOF is returned and the status of + // the stream may be discovered using RecvMsg. + // + // SendMsg blocks until: + // - There is sufficient flow control to schedule m with the transport, or + // - The stream is done, or + // - The stream breaks. + // + // SendMsg does not wait until the message is received by the server. An + // untimely stream closure may result in lost messages. To ensure delivery, + // users should ensure the RPC completed successfully using RecvMsg. + // + // It is safe to have a goroutine calling SendMsg and another goroutine + // calling RecvMsg on the same stream at the same time, but it is not safe + // to call SendMsg on the same stream in different goroutines. + SendMsg(m interface{}) error + // RecvMsg blocks until it receives a message into m or the stream is + // done. It returns io.EOF when the stream completes successfully. On + // any other error, the stream is aborted and the error contains the RPC + // status. + // + // It is safe to have a goroutine calling SendMsg and another goroutine + // calling RecvMsg on the same stream at the same time, but it is not + // safe to call RecvMsg on the same stream in different goroutines. + RecvMsg(m interface{}) error } // NewStream creates a new Stream for the client side. This is typically @@ -128,8 +146,6 @@ func (cc *ClientConn) NewStream(ctx context.Context, desc *StreamDesc, method st } // NewClientStream is a wrapper for ClientConn.NewStream. -// -// DEPRECATED: Use ClientConn.NewStream instead. func NewClientStream(ctx context.Context, desc *StreamDesc, cc *ClientConn, method string, opts ...CallOption) (ClientStream, error) { return cc.NewStream(ctx, desc, method, opts...) } @@ -178,13 +194,8 @@ func newClientStream(ctx context.Context, desc *StreamDesc, cc *ClientConn, meth } callHdr := &transport.CallHdr{ - Host: cc.authority, - Method: method, - // If it's not client streaming, we should already have the request to be sent, - // so we don't flush the header. - // If it's client streaming, the user may never send a request or send it any - // time soon, so we ask the transport to flush the header. - Flush: desc.ClientStreams, + Host: cc.authority, + Method: method, ContentSubtype: c.contentSubtype, } @@ -218,15 +229,6 @@ func newClientStream(ctx context.Context, desc *StreamDesc, cc *ClientConn, meth } trInfo.tr.LazyLog(&trInfo.firstLine, false) ctx = trace.NewContext(ctx, trInfo.tr) - defer func() { - if err != nil { - // Need to call tr.finish() if error is returned. - // Because tr will not be returned to caller. - trInfo.tr.LazyPrintf("RPC: [%v]", err) - trInfo.tr.SetError() - trInfo.tr.Finish() - } - }() } ctx = newContextWithRPCInfo(ctx, c.failFast) sh := cc.dopts.copts.StatsHandler @@ -240,80 +242,41 @@ func newClientStream(ctx context.Context, desc *StreamDesc, cc *ClientConn, meth FailFast: c.failFast, } sh.HandleRPC(ctx, begin) - defer func() { - if err != nil { - // Only handle end stats if err != nil. - end := &stats.End{ - Client: true, - Error: err, - BeginTime: beginTime, - EndTime: time.Now(), - } - sh.HandleRPC(ctx, end) - } - }() - } - - var ( - t transport.ClientTransport - s *transport.Stream - done func(balancer.DoneInfo) - ) - for { - // Check to make sure the context has expired. This will prevent us from - // looping forever if an error occurs for wait-for-ready RPCs where no data - // is sent on the wire. - select { - case <-ctx.Done(): - return nil, toRPCErr(ctx.Err()) - default: - } - - t, done, err = cc.getTransport(ctx, c.failFast) - if err != nil { - return nil, err - } - - s, err = t.NewStream(ctx, callHdr) - if err != nil { - if done != nil { - done(balancer.DoneInfo{Err: err}) - done = nil - } - // In the event of any error from NewStream, we never attempted to write - // anything to the wire, so we can retry indefinitely for non-fail-fast - // RPCs. - if !c.failFast { - continue - } - return nil, toRPCErr(err) - } - break } cs := &clientStream{ - opts: opts, - c: c, - cc: cc, - desc: desc, - codec: c.codec, - cp: cp, - comp: comp, - cancel: cancel, - attempt: &csAttempt{ - t: t, - s: s, - p: &parser{r: s}, - done: done, - dc: cc.dopts.dc, - ctx: ctx, - trInfo: trInfo, - statsHandler: sh, - beginTime: beginTime, - }, + callHdr: callHdr, + ctx: ctx, + methodConfig: &mc, + opts: opts, + callInfo: c, + cc: cc, + desc: desc, + codec: c.codec, + cp: cp, + comp: comp, + cancel: cancel, + beginTime: beginTime, + firstAttempt: true, } - cs.c.stream = cs - cs.attempt.cs = cs + if !cc.dopts.disableRetry { + cs.retryThrottler = cc.retryThrottler.Load().(*retryThrottler) + } + + cs.callInfo.stream = cs + // Only this initial attempt has stats/tracing. + // TODO(dfawley): move to newAttempt when per-attempt stats are implemented. + if err := cs.newAttemptLocked(sh, trInfo); err != nil { + cs.finish(err) + return nil, err + } + + op := func(a *csAttempt) error { return a.newStream() } + if err := cs.withRetry(op, func() { cs.bufferForRetryLocked(0, op) }); err != nil { + cs.finish(err) + return nil, err + } + if desc != unaryStreamDesc { // Listen on cc and stream contexts to cleanup when the user closes the // ClientConn or cancels the stream context. In all other cases, an error @@ -332,12 +295,45 @@ func newClientStream(ctx context.Context, desc *StreamDesc, cc *ClientConn, meth return cs, nil } +func (cs *clientStream) newAttemptLocked(sh stats.Handler, trInfo traceInfo) error { + cs.attempt = &csAttempt{ + cs: cs, + dc: cs.cc.dopts.dc, + statsHandler: sh, + trInfo: trInfo, + } + + if err := cs.ctx.Err(); err != nil { + return toRPCErr(err) + } + t, done, err := cs.cc.getTransport(cs.ctx, cs.callInfo.failFast, cs.callHdr.Method) + if err != nil { + return err + } + cs.attempt.t = t + cs.attempt.done = done + return nil +} + +func (a *csAttempt) newStream() error { + cs := a.cs + cs.callHdr.PreviousAttempts = cs.numRetries + s, err := a.t.NewStream(cs.ctx, cs.callHdr) + if err != nil { + return toRPCErr(err) + } + cs.attempt.s = s + cs.attempt.p = &parser{r: s} + return nil +} + // clientStream implements a client side Stream. type clientStream struct { - opts []CallOption - c *callInfo - cc *ClientConn - desc *StreamDesc + callHdr *transport.CallHdr + opts []CallOption + callInfo *callInfo + cc *ClientConn + desc *StreamDesc codec baseCodec cp Compressor @@ -345,13 +341,25 @@ type clientStream struct { cancel context.CancelFunc // cancels all attempts - sentLast bool // sent an end stream + sentLast bool // sent an end stream + beginTime time.Time - mu sync.Mutex // guards finished - finished bool // TODO: replace with atomic cmpxchg or sync.Once? + methodConfig *MethodConfig - attempt *csAttempt // the active client stream attempt + ctx context.Context // the application's context, wrapped by stats/tracing + + retryThrottler *retryThrottler // The throttler active when the RPC began. + + mu sync.Mutex + firstAttempt bool // if true, transparent retry is valid + numRetries int // exclusive of transparent retry attempt(s) + numRetriesSincePushback int // retries since pushback; to reset backoff + finished bool // TODO: replace with atomic cmpxchg or sync.Once? + attempt *csAttempt // the active client stream attempt // TODO(hedging): hedging will have multiple attempts simultaneously. + committed bool // active attempt committed for retry? + buffer []func(a *csAttempt) error // operations to replay on retry + bufferSize int // current size of buffer } // csAttempt implements a single transport stream attempt within a @@ -363,53 +371,298 @@ type csAttempt struct { p *parser done func(balancer.DoneInfo) + finished bool dc Decompressor decomp encoding.Compressor decompSet bool - ctx context.Context // the application's context, wrapped by stats/tracing - mu sync.Mutex // guards trInfo.tr // trInfo.tr is set when created (if EnableTracing is true), // and cleared when the finish method is called. trInfo traceInfo statsHandler stats.Handler - beginTime time.Time +} + +func (cs *clientStream) commitAttemptLocked() { + cs.committed = true + cs.buffer = nil +} + +func (cs *clientStream) commitAttempt() { + cs.mu.Lock() + cs.commitAttemptLocked() + cs.mu.Unlock() +} + +// shouldRetry returns nil if the RPC should be retried; otherwise it returns +// the error that should be returned by the operation. +func (cs *clientStream) shouldRetry(err error) error { + if cs.attempt.s == nil && !cs.callInfo.failFast { + // In the event of any error from NewStream (attempt.s == nil), we + // never attempted to write anything to the wire, so we can retry + // indefinitely for non-fail-fast RPCs. + return nil + } + if cs.finished || cs.committed { + // RPC is finished or committed; cannot retry. + return err + } + // Wait for the trailers. + if cs.attempt.s != nil { + <-cs.attempt.s.Done() + } + if cs.firstAttempt && !cs.callInfo.failFast && (cs.attempt.s == nil || cs.attempt.s.Unprocessed()) { + // First attempt, wait-for-ready, stream unprocessed: transparently retry. + cs.firstAttempt = false + return nil + } + cs.firstAttempt = false + if cs.cc.dopts.disableRetry { + return err + } + + pushback := 0 + hasPushback := false + if cs.attempt.s != nil { + if to, toErr := cs.attempt.s.TrailersOnly(); toErr != nil { + // Context error; stop now. + return toErr + } else if !to { + return err + } + + // TODO(retry): Move down if the spec changes to not check server pushback + // before considering this a failure for throttling. + sps := cs.attempt.s.Trailer()["grpc-retry-pushback-ms"] + if len(sps) == 1 { + var e error + if pushback, e = strconv.Atoi(sps[0]); e != nil || pushback < 0 { + grpclog.Infof("Server retry pushback specified to abort (%q).", sps[0]) + cs.retryThrottler.throttle() // This counts as a failure for throttling. + return err + } + hasPushback = true + } else if len(sps) > 1 { + grpclog.Warningf("Server retry pushback specified multiple values (%q); not retrying.", sps) + cs.retryThrottler.throttle() // This counts as a failure for throttling. + return err + } + } + + var code codes.Code + if cs.attempt.s != nil { + code = cs.attempt.s.Status().Code() + } else { + code = status.Convert(err).Code() + } + + rp := cs.methodConfig.retryPolicy + if rp == nil || !rp.retryableStatusCodes[code] { + return err + } + + // Note: the ordering here is important; we count this as a failure + // only if the code matched a retryable code. + if cs.retryThrottler.throttle() { + return err + } + if cs.numRetries+1 >= rp.maxAttempts { + return err + } + + var dur time.Duration + if hasPushback { + dur = time.Millisecond * time.Duration(pushback) + cs.numRetriesSincePushback = 0 + } else { + fact := math.Pow(rp.backoffMultiplier, float64(cs.numRetriesSincePushback)) + cur := float64(rp.initialBackoff) * fact + if max := float64(rp.maxBackoff); cur > max { + cur = max + } + dur = time.Duration(grpcrand.Int63n(int64(cur))) + cs.numRetriesSincePushback++ + } + + // TODO(dfawley): we could eagerly fail here if dur puts us past the + // deadline, but unsure if it is worth doing. + t := time.NewTimer(dur) + select { + case <-t.C: + cs.numRetries++ + return nil + case <-cs.ctx.Done(): + t.Stop() + return status.FromContextError(cs.ctx.Err()).Err() + } +} + +// Returns nil if a retry was performed and succeeded; error otherwise. +func (cs *clientStream) retryLocked(lastErr error) error { + for { + cs.attempt.finish(lastErr) + if err := cs.shouldRetry(lastErr); err != nil { + cs.commitAttemptLocked() + return err + } + if err := cs.newAttemptLocked(nil, traceInfo{}); err != nil { + return err + } + if lastErr = cs.replayBufferLocked(); lastErr == nil { + return nil + } + } } func (cs *clientStream) Context() context.Context { - // TODO(retry): commit the current attempt (the context has peer-aware data). - return cs.attempt.context() + cs.commitAttempt() + // No need to lock before using attempt, since we know it is committed and + // cannot change. + return cs.attempt.s.Context() +} + +func (cs *clientStream) withRetry(op func(a *csAttempt) error, onSuccess func()) error { + cs.mu.Lock() + for { + if cs.committed { + cs.mu.Unlock() + return op(cs.attempt) + } + a := cs.attempt + cs.mu.Unlock() + err := op(a) + cs.mu.Lock() + if a != cs.attempt { + // We started another attempt already. + continue + } + if err == io.EOF { + <-a.s.Done() + } + if err == nil || (err == io.EOF && a.s.Status().Code() == codes.OK) { + onSuccess() + cs.mu.Unlock() + return err + } + if err := cs.retryLocked(err); err != nil { + cs.mu.Unlock() + return err + } + } } func (cs *clientStream) Header() (metadata.MD, error) { - m, err := cs.attempt.header() + var m metadata.MD + err := cs.withRetry(func(a *csAttempt) error { + var err error + m, err = a.s.Header() + return toRPCErr(err) + }, cs.commitAttemptLocked) if err != nil { - // TODO(retry): maybe retry on error or commit attempt on success. - err = toRPCErr(err) cs.finish(err) } return m, err } func (cs *clientStream) Trailer() metadata.MD { - // TODO(retry): on error, maybe retry (trailers-only). - return cs.attempt.trailer() + // On RPC failure, we never need to retry, because usage requires that + // RecvMsg() returned a non-nil error before calling this function is valid. + // We would have retried earlier if necessary. + // + // Commit the attempt anyway, just in case users are not following those + // directions -- it will prevent races and should not meaningfully impact + // performance. + cs.commitAttempt() + if cs.attempt.s == nil { + return nil + } + return cs.attempt.s.Trailer() +} + +func (cs *clientStream) replayBufferLocked() error { + a := cs.attempt + for _, f := range cs.buffer { + if err := f(a); err != nil { + return err + } + } + return nil +} + +func (cs *clientStream) bufferForRetryLocked(sz int, op func(a *csAttempt) error) { + // Note: we still will buffer if retry is disabled (for transparent retries). + if cs.committed { + return + } + cs.bufferSize += sz + if cs.bufferSize > cs.callInfo.maxRetryRPCBufferSize { + cs.commitAttemptLocked() + return + } + cs.buffer = append(cs.buffer, op) } func (cs *clientStream) SendMsg(m interface{}) (err error) { - // TODO(retry): buffer message for replaying if not committed. - return cs.attempt.sendMsg(m) + defer func() { + if err != nil && err != io.EOF { + // Call finish on the client stream for errors generated by this SendMsg + // call, as these indicate problems created by this client. (Transport + // errors are converted to an io.EOF error in csAttempt.sendMsg; the real + // error will be returned from RecvMsg eventually in that case, or be + // retried.) + cs.finish(err) + } + }() + if cs.sentLast { + return status.Errorf(codes.Internal, "SendMsg called after CloseSend") + } + if !cs.desc.ClientStreams { + cs.sentLast = true + } + data, err := encode(cs.codec, m) + if err != nil { + return err + } + compData, err := compress(data, cs.cp, cs.comp) + if err != nil { + return err + } + hdr, payload := msgHeader(data, compData) + // TODO(dfawley): should we be checking len(data) instead? + if len(payload) > *cs.callInfo.maxSendMessageSize { + return status.Errorf(codes.ResourceExhausted, "trying to send message larger than max (%d vs. %d)", len(payload), *cs.callInfo.maxSendMessageSize) + } + op := func(a *csAttempt) error { + err := a.sendMsg(m, hdr, payload, data) + // nil out the message and uncomp when replaying; they are only needed for + // stats which is disabled for subsequent attempts. + m, data = nil, nil + return err + } + return cs.withRetry(op, func() { cs.bufferForRetryLocked(len(hdr)+len(payload), op) }) } -func (cs *clientStream) RecvMsg(m interface{}) (err error) { - // TODO(retry): maybe retry on error or commit attempt on success. - return cs.attempt.recvMsg(m) +func (cs *clientStream) RecvMsg(m interface{}) error { + err := cs.withRetry(func(a *csAttempt) error { + return a.recvMsg(m) + }, cs.commitAttemptLocked) + if err != nil || !cs.desc.ServerStreams { + // err != nil or non-server-streaming indicates end of stream. + cs.finish(err) + } + return err } func (cs *clientStream) CloseSend() error { - cs.attempt.closeSend() + if cs.sentLast { + // TODO: return an error and finish the stream instead, due to API misuse? + return nil + } + cs.sentLast = true + op := func(a *csAttempt) error { return a.t.Write(a.s, nil, nil, &transport.Options{Last: true}) } + cs.withRetry(op, func() { cs.bufferForRetryLocked(0, op) }) + // We never returned an error here for reasons. return nil } @@ -424,7 +677,11 @@ func (cs *clientStream) finish(err error) { return } cs.finished = true + cs.commitAttemptLocked() cs.mu.Unlock() + if err == nil { + cs.retryThrottler.successfulRPC() + } if channelz.IsOn() { if err != nil { cs.cc.incrCallsFailed() @@ -432,46 +689,20 @@ func (cs *clientStream) finish(err error) { cs.cc.incrCallsSucceeded() } } - // TODO(retry): commit current attempt if necessary. - cs.attempt.finish(err) - for _, o := range cs.opts { - o.after(cs.c) + if cs.attempt != nil { + cs.attempt.finish(err) + } + // after functions all rely upon having a stream. + if cs.attempt.s != nil { + for _, o := range cs.opts { + o.after(cs.callInfo) + } } cs.cancel() } -func (a *csAttempt) context() context.Context { - return a.s.Context() -} - -func (a *csAttempt) header() (metadata.MD, error) { - return a.s.Header() -} - -func (a *csAttempt) trailer() metadata.MD { - return a.s.Trailer() -} - -func (a *csAttempt) sendMsg(m interface{}) (err error) { - // TODO Investigate how to signal the stats handling party. - // generate error stats if err != nil && err != io.EOF? +func (a *csAttempt) sendMsg(m interface{}, hdr, payld, data []byte) error { cs := a.cs - defer func() { - // For non-client-streaming RPCs, we return nil instead of EOF on success - // because the generated code requires it. finish is not called; RecvMsg() - // will call it with the stream's status independently. - if err == io.EOF && !cs.desc.ClientStreams { - err = nil - } - if err != nil && err != io.EOF { - // Call finish on the client stream for errors generated by this SendMsg - // call, as these indicate problems created by this client. (Transport - // errors are converted to an io.EOF error below; the real error will be - // returned from RecvMsg eventually in that case, or be retried.) - cs.finish(err) - } - }() - // TODO: Check cs.sentLast and error if we already ended the stream. if EnableTracing { a.mu.Lock() if a.trInfo.tr != nil { @@ -479,44 +710,26 @@ func (a *csAttempt) sendMsg(m interface{}) (err error) { } a.mu.Unlock() } - data, err := encode(cs.codec, m) - if err != nil { - return err - } - compData, err := compress(data, cs.cp, cs.comp) - if err != nil { - return err - } - hdr, payload := msgHeader(data, compData) - // TODO(dfawley): should we be checking len(data) instead? - if len(payload) > *cs.c.maxSendMessageSize { - return status.Errorf(codes.ResourceExhausted, "trying to send message larger than max (%d vs. %d)", len(payload), *cs.c.maxSendMessageSize) - } - - if !cs.desc.ClientStreams { - cs.sentLast = true - } - err = a.t.Write(a.s, hdr, payload, &transport.Options{Last: !cs.desc.ClientStreams}) - if err == nil { - if a.statsHandler != nil { - a.statsHandler.HandleRPC(a.ctx, outPayload(true, m, data, payload, time.Now())) + if err := a.t.Write(a.s, hdr, payld, &transport.Options{Last: !cs.desc.ClientStreams}); err != nil { + if !cs.desc.ClientStreams { + // For non-client-streaming RPCs, we return nil instead of EOF on error + // because the generated code requires it. finish is not called; RecvMsg() + // will call it with the stream's status independently. + return nil } - if channelz.IsOn() { - a.t.IncrMsgSent() - } - return nil + return io.EOF } - return io.EOF + if a.statsHandler != nil { + a.statsHandler.HandleRPC(cs.ctx, outPayload(true, m, data, payld, time.Now())) + } + if channelz.IsOn() { + a.t.IncrMsgSent() + } + return nil } func (a *csAttempt) recvMsg(m interface{}) (err error) { cs := a.cs - defer func() { - if err != nil || !cs.desc.ServerStreams { - // err != nil or non-server-streaming indicates end of stream. - cs.finish(err) - } - }() var inPayload *stats.InPayload if a.statsHandler != nil { inPayload = &stats.InPayload{ @@ -539,7 +752,7 @@ func (a *csAttempt) recvMsg(m interface{}) (err error) { // Only initialize this state once per stream. a.decompSet = true } - err = recv(a.p, cs.codec, a.s, a.dc, m, *cs.c.maxReceiveMessageSize, inPayload, a.decomp) + err = recv(a.p, cs.codec, a.s, a.dc, m, *cs.callInfo.maxReceiveMessageSize, inPayload, a.decomp) if err != nil { if err == io.EOF { if statusErr := a.s.Status().Err(); statusErr != nil { @@ -557,7 +770,7 @@ func (a *csAttempt) recvMsg(m interface{}) (err error) { a.mu.Unlock() } if inPayload != nil { - a.statsHandler.HandleRPC(a.ctx, inPayload) + a.statsHandler.HandleRPC(cs.ctx, inPayload) } if channelz.IsOn() { a.t.IncrMsgRecv() @@ -569,7 +782,7 @@ func (a *csAttempt) recvMsg(m interface{}) (err error) { // Special handling for non-server-stream rpcs. // This recv expects EOF or errors, so we don't collect inPayload. - err = recv(a.p, cs.codec, a.s, a.dc, m, *cs.c.maxReceiveMessageSize, nil, a.decomp) + err = recv(a.p, cs.codec, a.s, a.dc, m, *cs.callInfo.maxReceiveMessageSize, nil, a.decomp) if err == nil { return toRPCErr(errors.New("grpc: client streaming protocol violation: get , want ")) } @@ -579,37 +792,40 @@ func (a *csAttempt) recvMsg(m interface{}) (err error) { return toRPCErr(err) } -func (a *csAttempt) closeSend() { - cs := a.cs - if cs.sentLast { - return - } - cs.sentLast = true - cs.attempt.t.Write(cs.attempt.s, nil, nil, &transport.Options{Last: true}) - // We ignore errors from Write. Any error it would return would also be - // returned by a subsequent RecvMsg call, and the user is supposed to always - // finish the stream by calling RecvMsg until it returns err != nil. -} - func (a *csAttempt) finish(err error) { a.mu.Lock() - a.t.CloseStream(a.s, err) + if a.finished { + a.mu.Unlock() + return + } + a.finished = true + if err == io.EOF { + // Ending a stream with EOF indicates a success. + err = nil + } + if a.s != nil { + a.t.CloseStream(a.s, err) + } if a.done != nil { + br := false + if a.s != nil { + br = a.s.BytesReceived() + } a.done(balancer.DoneInfo{ Err: err, - BytesSent: true, - BytesReceived: a.s.BytesReceived(), + BytesSent: a.s != nil, + BytesReceived: br, }) } if a.statsHandler != nil { end := &stats.End{ Client: true, - BeginTime: a.beginTime, + BeginTime: a.cs.beginTime, EndTime: time.Now(), Error: err, } - a.statsHandler.HandleRPC(a.ctx, end) + a.statsHandler.HandleRPC(a.cs.ctx, end) } if a.trInfo.tr != nil { if err == nil { @@ -624,7 +840,10 @@ func (a *csAttempt) finish(err error) { a.mu.Unlock() } -// ServerStream defines the interface a server stream has to satisfy. +// ServerStream defines the server-side behavior of a streaming RPC. +// +// All errors returned from ServerStream methods are compatible with the +// status package. type ServerStream interface { // SetHeader sets the header metadata. It may be called multiple times. // When call multiple times, all the provided metadata will be merged. @@ -640,7 +859,32 @@ type ServerStream interface { // SetTrailer sets the trailer metadata which will be sent with the RPC status. // When called more than once, all the provided metadata will be merged. SetTrailer(metadata.MD) - Stream + // Context returns the context for this stream. + Context() context.Context + // SendMsg sends a message. On error, SendMsg aborts the stream and the + // error is returned directly. + // + // SendMsg blocks until: + // - There is sufficient flow control to schedule m with the transport, or + // - The stream is done, or + // - The stream breaks. + // + // SendMsg does not wait until the message is received by the client. An + // untimely stream closure may result in lost messages. + // + // It is safe to have a goroutine calling SendMsg and another goroutine + // calling RecvMsg on the same stream at the same time, but it is not safe + // to call SendMsg on the same stream in different goroutines. + SendMsg(m interface{}) error + // RecvMsg blocks until it receives a message into m or the stream is + // done. It returns io.EOF when the client has performed a CloseSend. On + // any non-EOF error, the stream is aborted and the error contains the + // RPC status. + // + // It is safe to have a goroutine calling SendMsg and another goroutine + // calling RecvMsg on the same stream at the same time, but it is not + // safe to call RecvMsg on the same stream in different goroutines. + RecvMsg(m interface{}) error } // serverStream implements a server side Stream. diff --git a/vendor/google.golang.org/grpc/version.go b/vendor/google.golang.org/grpc/version.go index 7f124fbd..8ee619bf 100644 --- a/vendor/google.golang.org/grpc/version.go +++ b/vendor/google.golang.org/grpc/version.go @@ -19,4 +19,4 @@ package grpc // Version is the current grpc version. -const Version = "1.13.0" +const Version = "1.15.0"