From baa0e09ad25e69952f7cde6d1f4819ad7e53c1bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=B4=8D=E1=B4=8F=E1=B4=8F=C9=B4D4=CA=80=E1=B4=8B?= Date: Fri, 19 Jan 2024 15:45:24 +0800 Subject: [PATCH] dev: Remove CGO go-sqlite3 with pure go driver (#292) * chore: Resize logo and update browser support in READMEs (#284) * chore: Resize logo and update browser support in READMEs * docs: Update Coverage Status badge URL * chore: add typos check linter in github actions (#285) * refactor: Disable JSON handling in logger/logger.go. * chore: Standardize spelling and add typos check workflows. * refactor: Update SQLite driver import for browsing data package. * refactor: Refactor browsing data package to use SQLite driver instead of SQLite3. * docs: Add contribution guidelines to README file (#289) * chore: Refactor file and directory names for improved organization and consistency --- .github/workflows/lint.yml | 2 +- .gitignore | 2 +- .typos.toml | 7 +++ README.md | 6 +++ browsingdata/bookmark/bookmark.go | 5 +- browsingdata/cookie/cookie.go | 6 +-- browsingdata/creditcard/creditcard.go | 6 +-- browsingdata/download/download.go | 7 ++- browsingdata/history/history.go | 6 +-- browsingdata/localstorage/localstorage.go | 2 +- browsingdata/password/password.go | 9 ++-- browsingdata/sessionstorage/sessionstorage.go | 2 +- go.mod | 18 ++++++- go.sum | 51 ++++++++++++++++++- 14 files changed, 101 insertions(+), 28 deletions(-) create mode 100644 .typos.toml diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 2a9893d..1e05365 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -20,7 +20,7 @@ jobs: - name: Check spelling with custom config file uses: crate-ci/typos@master with: - config: ./typos.toml + config: ./.typos.toml - name: Lint uses: golangci/golangci-lint-action@v3 diff --git a/.gitignore b/.gitignore index 496dde1..2a3b2a7 100644 --- a/.gitignore +++ b/.gitignore @@ -204,4 +204,4 @@ hack-browser-data !CONTRIBUTING.md # CICD Config -!typos.toml \ No newline at end of file +!.typos.toml diff --git a/.typos.toml b/.typos.toml new file mode 100644 index 0000000..65fa5e3 --- /dev/null +++ b/.typos.toml @@ -0,0 +1,7 @@ +# See https://github.com/crate-ci/typos/blob/master/docs/reference.md to configure typos +[default.extend-words] +Readed = "Readed" +Sie = "Sie" +OT = "OT" +[files] +extend-exclude = ["go.mod", "go.sum"] \ No newline at end of file diff --git a/README.md b/README.md index b280fb2..b0ec88e 100644 --- a/README.md +++ b/README.md @@ -184,6 +184,12 @@ PS C:\Users\User\Desktop> .\hack-browser-data.exe -b chrome -p "C:\Users\User\Ap [Reflective-HackBrowserData](https://github.com/idiotc4t/Reflective-HackBrowserData) +## Contributing + +We welcome and appreciate any contributions made by the community (GitHub issues/pull requests, email feedback, etc.). + +Please see the [Contribution Guide](CONTRIBUTING.md) before contributing. + ## Contributors diff --git a/browsingdata/bookmark/bookmark.go b/browsingdata/bookmark/bookmark.go index 9f6a6bc..fe70d8c 100644 --- a/browsingdata/bookmark/bookmark.go +++ b/browsingdata/bookmark/bookmark.go @@ -7,9 +7,8 @@ import ( "sort" "time" - // import sqlite3 driver - _ "github.com/mattn/go-sqlite3" "github.com/tidwall/gjson" + _ "modernc.org/sqlite" // import sqlite3 driver "github.com/moond4rk/hackbrowserdata/item" "github.com/moond4rk/hackbrowserdata/utils/fileutil" @@ -94,7 +93,7 @@ const ( ) func (f *FirefoxBookmark) Parse(_ []byte) error { - db, err := sql.Open("sqlite3", item.FirefoxBookmark.TempFilename()) + db, err := sql.Open("sqlite", item.FirefoxBookmark.TempFilename()) if err != nil { return err } diff --git a/browsingdata/cookie/cookie.go b/browsingdata/cookie/cookie.go index a9f3c8a..b0141a4 100644 --- a/browsingdata/cookie/cookie.go +++ b/browsingdata/cookie/cookie.go @@ -8,7 +8,7 @@ import ( "time" // import sqlite3 driver - _ "github.com/mattn/go-sqlite3" + _ "modernc.org/sqlite" "github.com/moond4rk/hackbrowserdata/crypto" "github.com/moond4rk/hackbrowserdata/item" @@ -36,7 +36,7 @@ const ( ) func (c *ChromiumCookie) Parse(masterKey []byte) error { - db, err := sql.Open("sqlite3", item.ChromiumCookie.TempFilename()) + db, err := sql.Open("sqlite", item.ChromiumCookie.TempFilename()) if err != nil { return err } @@ -104,7 +104,7 @@ const ( ) func (f *FirefoxCookie) Parse(_ []byte) error { - db, err := sql.Open("sqlite3", item.FirefoxCookie.TempFilename()) + db, err := sql.Open("sqlite", item.FirefoxCookie.TempFilename()) if err != nil { return err } diff --git a/browsingdata/creditcard/creditcard.go b/browsingdata/creditcard/creditcard.go index 3487b5b..f893aea 100644 --- a/browsingdata/creditcard/creditcard.go +++ b/browsingdata/creditcard/creditcard.go @@ -6,7 +6,7 @@ import ( "os" // import sqlite3 driver - _ "github.com/mattn/go-sqlite3" + _ "modernc.org/sqlite" "github.com/moond4rk/hackbrowserdata/crypto" "github.com/moond4rk/hackbrowserdata/item" @@ -29,7 +29,7 @@ const ( ) func (c *ChromiumCreditCard) Parse(masterKey []byte) error { - db, err := sql.Open("sqlite3", item.ChromiumCreditCard.TempFilename()) + db, err := sql.Open("sqlite", item.ChromiumCreditCard.TempFilename()) if err != nil { return err } @@ -85,7 +85,7 @@ func (c *ChromiumCreditCard) Len() int { type YandexCreditCard []card func (c *YandexCreditCard) Parse(masterKey []byte) error { - db, err := sql.Open("sqlite3", item.YandexCreditCard.TempFilename()) + db, err := sql.Open("sqlite", item.YandexCreditCard.TempFilename()) if err != nil { return err } diff --git a/browsingdata/download/download.go b/browsingdata/download/download.go index 2bb1c3a..02bf183 100644 --- a/browsingdata/download/download.go +++ b/browsingdata/download/download.go @@ -8,9 +8,8 @@ import ( "strings" "time" - // import sqlite3 driver - _ "github.com/mattn/go-sqlite3" "github.com/tidwall/gjson" + _ "modernc.org/sqlite" // import sqlite3 driver "github.com/moond4rk/hackbrowserdata/item" "github.com/moond4rk/hackbrowserdata/utils/typeutil" @@ -32,7 +31,7 @@ const ( ) func (c *ChromiumDownload) Parse(_ []byte) error { - db, err := sql.Open("sqlite3", item.ChromiumDownload.TempFilename()) + db, err := sql.Open("sqlite", item.ChromiumDownload.TempFilename()) if err != nil { return err } @@ -83,7 +82,7 @@ const ( ) func (f *FirefoxDownload) Parse(_ []byte) error { - db, err := sql.Open("sqlite3", item.FirefoxDownload.TempFilename()) + db, err := sql.Open("sqlite", item.FirefoxDownload.TempFilename()) if err != nil { return err } diff --git a/browsingdata/history/history.go b/browsingdata/history/history.go index d881e1c..fb2cbbf 100644 --- a/browsingdata/history/history.go +++ b/browsingdata/history/history.go @@ -8,7 +8,7 @@ import ( "time" // import sqlite3 driver - _ "github.com/mattn/go-sqlite3" + _ "modernc.org/sqlite" "github.com/moond4rk/hackbrowserdata/item" "github.com/moond4rk/hackbrowserdata/utils/typeutil" @@ -28,7 +28,7 @@ const ( ) func (c *ChromiumHistory) Parse(_ []byte) error { - db, err := sql.Open("sqlite3", item.ChromiumHistory.TempFilename()) + db, err := sql.Open("sqlite", item.ChromiumHistory.TempFilename()) if err != nil { return err } @@ -79,7 +79,7 @@ const ( ) func (f *FirefoxHistory) Parse(_ []byte) error { - db, err := sql.Open("sqlite3", item.FirefoxHistory.TempFilename()) + db, err := sql.Open("sqlite", item.FirefoxHistory.TempFilename()) if err != nil { return err } diff --git a/browsingdata/localstorage/localstorage.go b/browsingdata/localstorage/localstorage.go index fdf7394..f8a25d8 100644 --- a/browsingdata/localstorage/localstorage.go +++ b/browsingdata/localstorage/localstorage.go @@ -106,7 +106,7 @@ const ( ) func (f *FirefoxLocalStorage) Parse(_ []byte) error { - db, err := sql.Open("sqlite3", item.FirefoxLocalStorage.TempFilename()) + db, err := sql.Open("sqlite", item.FirefoxLocalStorage.TempFilename()) if err != nil { return err } diff --git a/browsingdata/password/password.go b/browsingdata/password/password.go index e6277d8..2915e8f 100644 --- a/browsingdata/password/password.go +++ b/browsingdata/password/password.go @@ -9,9 +9,8 @@ import ( "sort" "time" - // import sqlite3 driver - _ "github.com/mattn/go-sqlite3" "github.com/tidwall/gjson" + _ "modernc.org/sqlite" // import sqlite3 driver "github.com/moond4rk/hackbrowserdata/crypto" "github.com/moond4rk/hackbrowserdata/item" @@ -34,7 +33,7 @@ const ( ) func (c *ChromiumPassword) Parse(masterKey []byte) error { - db, err := sql.Open("sqlite3", item.ChromiumPassword.TempFilename()) + db, err := sql.Open("sqlite", item.ChromiumPassword.TempFilename()) if err != nil { return err } @@ -101,7 +100,7 @@ const ( ) func (c *YandexPassword) Parse(masterKey []byte) error { - db, err := sql.Open("sqlite3", item.YandexPassword.TempFilename()) + db, err := sql.Open("sqlite", item.YandexPassword.TempFilename()) if err != nil { return err } @@ -234,7 +233,7 @@ func (f *FirefoxPassword) Parse(masterKey []byte) error { } func getFirefoxDecryptKey(key4file string) (item1, item2, a11, a102 []byte, err error) { - keyDB, err := sql.Open("sqlite3", key4file) + keyDB, err := sql.Open("sqlite", key4file) if err != nil { return nil, nil, nil, nil, err } diff --git a/browsingdata/sessionstorage/sessionstorage.go b/browsingdata/sessionstorage/sessionstorage.go index 106ba3d..a8cf31d 100644 --- a/browsingdata/sessionstorage/sessionstorage.go +++ b/browsingdata/sessionstorage/sessionstorage.go @@ -114,7 +114,7 @@ const ( ) func (f *FirefoxSessionStorage) Parse(_ []byte) error { - db, err := sql.Open("sqlite3", item.FirefoxSessionStorage.TempFilename()) + db, err := sql.Open("sqlite", item.FirefoxSessionStorage.TempFilename()) if err != nil { return err } diff --git a/go.mod b/go.mod index cf65553..c75893a 100644 --- a/go.mod +++ b/go.mod @@ -5,7 +5,6 @@ go 1.21 require ( github.com/gocarina/gocsv v0.0.0-20231116093920-b87c2d0e983a github.com/godbus/dbus/v5 v5.1.0 - github.com/mattn/go-sqlite3 v1.14.19 github.com/otiai10/copy v1.14.0 github.com/ppacher/go-dbus-keyring v1.0.1 github.com/stretchr/testify v1.8.4 @@ -14,18 +13,35 @@ require ( github.com/urfave/cli/v2 v2.27.1 golang.org/x/crypto v0.18.0 golang.org/x/text v0.14.0 + modernc.org/sqlite v1.28.0 ) require ( github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect + github.com/dustin/go-humanize v1.0.1 // indirect github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db // indirect + github.com/google/uuid v1.3.0 // indirect + github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect + github.com/mattn/go-isatty v0.0.16 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/tidwall/match v1.1.1 // indirect github.com/tidwall/pretty v1.2.0 // indirect github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect + golang.org/x/mod v0.8.0 // indirect golang.org/x/sync v0.3.0 // indirect golang.org/x/sys v0.16.0 // indirect + golang.org/x/tools v0.6.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect + lukechampine.com/uint128 v1.2.0 // indirect + modernc.org/cc/v3 v3.40.0 // indirect + modernc.org/ccgo/v3 v3.16.13 // indirect + modernc.org/libc v1.29.0 // indirect + modernc.org/mathutil v1.6.0 // indirect + modernc.org/memory v1.7.2 // indirect + modernc.org/opt v0.1.3 // indirect + modernc.org/strutil v1.1.3 // indirect + modernc.org/token v1.0.1 // indirect ) diff --git a/go.sum b/go.sum index 195d518..c4f10d9 100644 --- a/go.sum +++ b/go.sum @@ -2,6 +2,8 @@ github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHH github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= +github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/gocarina/gocsv v0.0.0-20231116093920-b87c2d0e983a h1:RYfmiM0zluBJOiPDJseKLEN4BapJ42uSi9SZBQ2YyiA= github.com/gocarina/gocsv v0.0.0-20231116093920-b87c2d0e983a/go.mod h1:5YoVOkjYAQumqlV356Hj3xeYh4BdZuLE0/nRkf2NKkI= @@ -11,10 +13,20 @@ github.com/godbus/dbus/v5 v5.1.0/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5x github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db h1:woRePGFeVFfLKN/pOkfl+p/TAqKOfFu+7KPlMVpok/w= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/pprof v0.0.0-20221118152302-e6195bd50e26 h1:Xim43kblpZXfIBQsbuBVKCudVG457BR2GZFIz3uw3hQ= +github.com/google/pprof v0.0.0-20221118152302-e6195bd50e26/go.mod h1:dDKJzRmX4S37WGHujM7tX//fmj1uioxKzKxz3lo4HJo= +github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= +github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= -github.com/mattn/go-sqlite3 v1.14.19 h1:fhGleo2h1p8tVChob4I9HpmVFIAkKGpiukdrgQbWfGI= -github.com/mattn/go-sqlite3 v1.14.19/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg= +github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs= +github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= +github.com/mattn/go-isatty v0.0.16 h1:bq3VjFmv/sOjHtdEhmkEV4x1AJtvUvOJ2PFAZ5+peKQ= +github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-sqlite3 v1.14.16 h1:yOQRA0RpS5PFz/oikGwBEqvAWhWg5ufRz4ETLjwpU1Y= +github.com/mattn/go-sqlite3 v1.14.16/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.7.0 h1:WSHQ+IS43OoUrWtD1/bbclrwK8TTH5hzp+umCiuxHgs= github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= @@ -28,6 +40,8 @@ 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/ppacher/go-dbus-keyring v1.0.1 h1:dM4dMfP5w9MxY+foFHCQiN7izEGpFdKr3tZeMGmvqD0= github.com/ppacher/go-dbus-keyring v1.0.1/go.mod h1:JEmkRwBVPBFkOHedAsoZALWmhNJxR/R/ykkFpbEHtGE= +github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE= +github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= @@ -46,6 +60,8 @@ github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRT github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8= golang.org/x/crypto v0.18.0 h1:PGVlW0xEltQnzFZ55hkuX5+KLyrMYhHld1YHO4AKcdc= golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg= +golang.org/x/mod v0.8.0 h1:LUYupSeNrTNCGzR/hVBk2NHZO4hXcVaW1k4Qx7rjPx8= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.10.0 h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= @@ -53,11 +69,14 @@ golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E= golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.16.0 h1:xWw16ngr6ZMtmxDyKyIgsE93KNKz5HKmMa3b8ALHidU= golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/tools v0.6.0 h1:BOw41kyTf3PuCW1pVQf8+Cyg8pMlkYB1oo9iJ6D/lKM= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4= @@ -68,3 +87,31 @@ gopkg.in/yaml.v2 v2.2.1 h1:mUhvW9EsL+naU5Q3cakzfE91YhliOondGd6ZrsDBHQE= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +lukechampine.com/uint128 v1.2.0 h1:mBi/5l91vocEN8otkC5bDLhi2KdCticRiwbdB0O+rjI= +lukechampine.com/uint128 v1.2.0/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk= +modernc.org/cc/v3 v3.40.0 h1:P3g79IUS/93SYhtoeaHW+kRCIrYaxJ27MFPv+7kaTOw= +modernc.org/cc/v3 v3.40.0/go.mod h1:/bTg4dnWkSXowUO6ssQKnOV0yMVxDYNIsIrzqTFDGH0= +modernc.org/ccgo/v3 v3.16.13 h1:Mkgdzl46i5F/CNR/Kj80Ri59hC8TKAhZrYSaqvkwzUw= +modernc.org/ccgo/v3 v3.16.13/go.mod h1:2Quk+5YgpImhPjv2Qsob1DnZ/4som1lJTodubIcoUkY= +modernc.org/ccorpus v1.11.6 h1:J16RXiiqiCgua6+ZvQot4yUuUy8zxgqbqEEUuGPlISk= +modernc.org/ccorpus v1.11.6/go.mod h1:2gEUTrWqdpH2pXsmTM1ZkjeSrUWDpjMu2T6m29L/ErQ= +modernc.org/httpfs v1.0.6 h1:AAgIpFZRXuYnkjftxTAZwMIiwEqAfk8aVB2/oA6nAeM= +modernc.org/httpfs v1.0.6/go.mod h1:7dosgurJGp0sPaRanU53W4xZYKh14wfzX420oZADeHM= +modernc.org/libc v1.29.0 h1:tTFRFq69YKCF2QyGNuRUQxKBm1uZZLubf6Cjh/pVHXs= +modernc.org/libc v1.29.0/go.mod h1:DaG/4Q3LRRdqpiLyP0C2m1B8ZMGkQ+cCgOIjEtQlYhQ= +modernc.org/mathutil v1.6.0 h1:fRe9+AmYlaej+64JsEEhoWuAYBkOtQiMEU7n/XgfYi4= +modernc.org/mathutil v1.6.0/go.mod h1:Ui5Q9q1TR2gFm0AQRqQUaBWFLAhQpCwNcuhBOSedWPo= +modernc.org/memory v1.7.2 h1:Klh90S215mmH8c9gO98QxQFsY+W451E8AnzjoE2ee1E= +modernc.org/memory v1.7.2/go.mod h1:NO4NVCQy0N7ln+T9ngWqOQfi7ley4vpwvARR+Hjw95E= +modernc.org/opt v0.1.3 h1:3XOZf2yznlhC+ibLltsDGzABUGVx8J6pnFMS3E4dcq4= +modernc.org/opt v0.1.3/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0= +modernc.org/sqlite v1.28.0 h1:Zx+LyDDmXczNnEQdvPuEfcFVA2ZPyaD7UCZDjef3BHQ= +modernc.org/sqlite v1.28.0/go.mod h1:Qxpazz0zH8Z1xCFyi5GSL3FzbtZ3fvbjmywNogldEW0= +modernc.org/strutil v1.1.3 h1:fNMm+oJklMGYfU9Ylcywl0CO5O6nTfaowNsh2wpPjzY= +modernc.org/strutil v1.1.3/go.mod h1:MEHNA7PdEnEwLvspRMtWTNnp2nnyvMfkimT1NKNAGbw= +modernc.org/tcl v1.15.2 h1:C4ybAYCGJw968e+Me18oW55kD/FexcHbqH2xak1ROSY= +modernc.org/tcl v1.15.2/go.mod h1:3+k/ZaEbKrC8ePv8zJWPtBSW0V7Gg9g8rkmhI1Kfs3c= +modernc.org/token v1.0.1 h1:A3qvTqOwexpfZZeyI0FeGPDlSWX5pjZu9hF4lU+EKWg= +modernc.org/token v1.0.1/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM= +modernc.org/z v1.7.3 h1:zDJf6iHjrnB+WRD88stbXokugjyc0/pB91ri1gO6LZY= +modernc.org/z v1.7.3/go.mod h1:Ipv4tsdxZRbQyLq9Q1M6gdbkxYzdlrciF2Hi/lS7nWE=