- name: Build
run: |
sudo apt-get install libgtk-3-dev libcairo2-dev libglib2.0-dev
- go build -v -o demo/demo.run -i demo/main.go
+ go build -v -buildmode=exe -o demo/demo.run -i demo/main.go
- name: zip
run: zip -q -r release_ubuntu.zip *
- name: Build
run: |
sudo apt-get install libgtk-3-dev libcairo2-dev libglib2.0-dev
- go build -v -o demo/demo.run -i demo/main.go
+ go build -v -buildmode=exe -o demo/demo.run -i demo/main.go
- name: zip
run: zip -q -r release_ubuntu.zip *
"strings"
c "github.com/qydysky/bili_danmu/CV"
+ g "github.com/qydysky/part/get"
p "github.com/qydysky/part"
)
}
Roomid := strconv.Itoa(o.Roomid)
- r := p.Get(p.Rval{
+ r := g.Get(p.Rval{
Url:"https://live.bilibili.com/" + Roomid,
})
//uid
req := p.Req()
if err := req.Reqf(p.Rval{
Url:"https://api.live.bilibili.com/room/v1/Room/room_init?id=" + Roomid,
- Referer:"https://live.bilibili.com/" + Roomid,
+ Header:map[string]string{
+ `Referer`:"https://live.bilibili.com/" + Roomid,
+ },
Timeout:10,
Retry:2,
});err != nil {
}
if len(qn) == 0 || qn[0] == "0" || qn[0] == "" {//html获取
- r := p.Get(p.Rval{
+ r := g.Get(p.Rval{
Url:"https://live.bilibili.com/" + strconv.Itoa(o.Roomid),
- Cookie:Cookie,
+ Header:map[string]string{
+ `Cookie`:Cookie,
+ },
})
if e := r.S(`"durl":[`, `]`, 0, 0).Err;e == nil {
if urls := p.Json().GetArrayFrom("[" + r.RS + "]", "url");urls != nil {
req := p.Req()
if err := req.Reqf(p.Rval{
Url:"https://api.live.bilibili.com/xlive/web-room/v1/index/getRoomPlayInfo?play_url=1&mask=1&qn=0&platform=web&ptype=16&room_id=" + strconv.Itoa(o.Roomid),
- Referer:"https://live.bilibili.com/" + strconv.Itoa(o.Roomid),
+ Header:map[string]string{
+ `Referer`:"https://live.bilibili.com/" + strconv.Itoa(o.Roomid),
+ `Cookie`:Cookie,
+ },
Timeout:10,
- Cookie:Cookie,
Retry:2,
});err != nil {
apilog.E(err)
}
if err := req.Reqf(p.Rval{
Url:"https://api.live.bilibili.com/xlive/web-room/v1/playUrl/playUrl?cid=" + strconv.Itoa(o.Roomid) + "&qn=" + qn[0] + "&platform=web&https_url_req=1&ptype=16",
- Referer:"https://live.bilibili.com/" + strconv.Itoa(o.Roomid),
+ Header:map[string]string{
+ `Cookie`:Cookie,
+ `Referer`:"https://live.bilibili.com/" + strconv.Itoa(o.Roomid),
+ },
Timeout:10,
- Cookie:Cookie,
Retry:2,
});err != nil {
apilog.E(err)
req := p.Req()
if err := req.Reqf(p.Rval{
Url:"https://api.live.bilibili.com/xlive/web-room/v1/index/getDanmuInfo?type=0&id=" + Roomid,
- Referer:"https://live.bilibili.com/" + Roomid,
+ Header:map[string]string{
+ `Referer`:"https://live.bilibili.com/" + Roomid,
+ },
Timeout:10,
Retry:2,
});err != nil {
req := p.Req()
if err := req.Reqf(p.Rval{
Url:"https://api.live.bilibili.com/xlive/web-room/v1/index/getDanmuMedalAnchorInfo?ruid=" + uid,
- Referer:"https://live.bilibili.com/" + strconv.Itoa(c.Roomid),
+ Header:map[string]string{
+ `Referer`:"https://live.bilibili.com/" + strconv.Itoa(c.Roomid),
+ },
Timeout:10,
Retry:2,
});err != nil {
F "github.com/qydysky/bili_danmu/F"
"github.com/christopher-dG/go-obs-websocket"
p "github.com/qydysky/part"
- s "github.com/qydysky/part/setting"
+ s "github.com/qydysky/part/buf"
)
/*
Url:c.Live[cuLinkIndex],
Retry:10,
SleepTime:5,
- Cookie:Cookie,
+ Header:map[string]string{
+ `Cookie`:Cookie,
+ },
Timeout:5,
JustResponseCode:true,
}); e != nil{l.W(e)}
- if rr.ResponseCode != 200 {
+ if rr.Response.StatusCode != 200 {
saveflv.wait.Done()
saveflv.cancel.Done()
cuLinkIndex += 1
Url:c.Live[cuLinkIndex],
Retry:10,
SleepTime:5,
- Cookie:Cookie,
+ Header:map[string]string{
+ `Cookie`:Cookie,
+ },
SaveToPath:saveflv.path + ".flv",
Timeout:-1,
}); e != nil{l.W(e)}
//Msg类型数据处理方法map
var Msg_map = map[string]func(replyF, string) {
+ `ONLINE_RANK_COUNT`:nil,
+ `ONLINE_RANK_V2`:nil,
"TRADING_SCORE":nil,//每日任务
"MATCH_ROOM_CONF":nil,//赛事房间配置
"HOT_ROOM_NOTIFY":nil,//热点房间
Url:"https://api.live.bilibili.com/msg/send",
PostStr:PostStr,
Timeout:5,
- Referer:"https://live.bilibili.com/" + strconv.Itoa(roomid),
- Cookie:Cookie,
+ Header:map[string]string{
+ `Referer`:"https://live.bilibili.com/" + strconv.Itoa(roomid),
+ `Cookie`:Cookie,
+ },
})
if err != nil {
l.E(err)
-202011110547
\ No newline at end of file
+202011120727
\ No newline at end of file
--- /dev/null
+[
+ {
+ "cmd": "ONLINE_RANK_V2",
+ "data": {
+ "list": [
+ {
+ "uid": 272619,
+ "face": "http://i1.hdslb.com/bfs/face/1b1f2f166339fee6e8e3de3b449b67773c64dce8.jpg",
+ "score": "50",
+ "uname": "菌丝奶液",
+ "rank": 1,
+ "guard_level": 3
+ },
+ {
+ "uid": 1401978,
+ "face": "http://i2.hdslb.com/bfs/face/663084232e9a70545995913eaeb8c224e8eec469.jpg",
+ "score": "20",
+ "uname": "阿虫虫虫虫",
+ "rank": 2,
+ "guard_level": 0
+ },
+ {
+ "uid": 8660095,
+ "face": "http://i1.hdslb.com/bfs/face/13a0007fb179db139511b087acf4d583c9454d0b.jpg",
+ "score": "10",
+ "uname": "有妹才有汁",
+ "rank": 3,
+ "guard_level": 0
+ },
+ {
+ "uid": 1470771,
+ "face": "http://i0.hdslb.com/bfs/face/ecee99ecf772b31e17eb62ccf68842426a429603.jpg",
+ "score": "2",
+ "uname": "ロリコン板载",
+ "rank": 4,
+ "guard_level": 0
+ },
+ {
+ "uid": 458981,
+ "face": "http://i1.hdslb.com/bfs/face/b3e4970a1c9023e019fd46b8cc3a02c34b431cfa.jpg",
+ "score": "1",
+ "uname": "海鲜王琴键",
+ "rank": 5,
+ "guard_level": 0
+ }
+ ],
+ "rank_type": "gold-rank"
+ }
+ },
+ {
+ "cmd": "ONLINE_RANK_COUNT",
+ "data": {
+ "count": 5
+ }
+ }
+]
\ No newline at end of file
require (
github.com/christopher-dG/go-obs-websocket v0.0.0-20200720193653-c4fed10356a5 // indirect
github.com/gopherjs/gopherjs v0.0.0-20200217142428-fce0ec30dd00 // indirect
- github.com/gotk3/gotk3 v0.5.1-0.20201028052159-952547abf55a // indirect
- github.com/klauspost/compress v1.11.1 // indirect
+ github.com/gotk3/gotk3 v0.5.1-0.20201111061058-cdb396edc76f // indirect
+ github.com/klauspost/compress v1.11.2 // indirect
+ github.com/miekg/dns v1.1.35 // indirect
github.com/mitchellh/mapstructure v1.3.3 // indirect
- github.com/qydysky/bili_danmu v0.0.0
- github.com/qydysky/part v0.0.8 // indirect
- github.com/shirou/gopsutil v2.20.9+incompatible // indirect
+ github.com/qydysky/bili_danmu v0.4.0
+ github.com/qydysky/gotk3 v0.0.0-20201111221012-59dd0e7ec2d7 // indirect
+ github.com/qydysky/part v0.2.1 // indirect
+ github.com/shirou/gopsutil v3.20.10+incompatible // indirect
github.com/therecipe/env_darwin_amd64_513 v0.0.0-20190626001412-d8e92e8db4d0 // indirect
github.com/therecipe/env_linux_amd64_513 v0.0.0-20190626000307-e137a3934da6 // indirect
github.com/therecipe/env_windows_amd64_513 v0.0.0-20190626000028-79ec8bd06fb2 // indirect
github.com/therecipe/qt v0.0.0-20200904063919-c0c124a5770d // indirect
github.com/therecipe/qt/internal/binding/files/docs/5.12.0 v0.0.0-20200904063919-c0c124a5770d // indirect
github.com/therecipe/qt/internal/binding/files/docs/5.13.0 v0.0.0-20200904063919-c0c124a5770d // indirect
- golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0 // indirect
- golang.org/x/net v0.0.0-20201002202402-0a1ea396d57c // indirect
+ golang.org/x/crypto v0.0.0-20201016220609-9e8e0b390897 // indirect
+ golang.org/x/net v0.0.0-20201110031124-69a78807bb2b // indirect
+ golang.org/x/sys v0.0.0-20201110211018-35f3e6cf4a65 // indirect
)
replace github.com/qydysky/bili_danmu => ../
github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d h1:G0m3OIz70MZUWq3EgK3CesDbo8upS2Vm9/P3FtgI+Jk=
github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg=
+github.com/andybalholm/brotli v1.0.1 h1:KqhlKozYbRtJvsPrrEeXcO+N2l6NYT5A2QAFmSULpEc=
+github.com/andybalholm/brotli v1.0.1/go.mod h1:loMXtMfwqflxFJPmdbJO0a3KNoPuLBgiu3qAvBg8x/Y=
github.com/christopher-dG/go-obs-websocket v0.0.0-20200720193653-c4fed10356a5 h1:UFBgEMSPv6a2vgzowHOPphVit+ZBNQ3+4Q+dEBgwIww=
github.com/christopher-dG/go-obs-websocket v0.0.0-20200720193653-c4fed10356a5/go.mod h1:P5w+dDqQEbCMFAkmucNcEQ6xgAt/NP+Aw58OQfY/H/o=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/gotk3/gotk3 v0.5.0/go.mod h1:/hqFpkNa9T3JgNAE2fLvCdov7c5bw//FHNZrZ3Uv9/Q=
github.com/gotk3/gotk3 v0.5.1-0.20201028052159-952547abf55a h1:9O8VeGmNRqh8UPYLfjYc+W3Gu7vSVTo2uEswq4FO9xI=
github.com/gotk3/gotk3 v0.5.1-0.20201028052159-952547abf55a/go.mod h1:/hqFpkNa9T3JgNAE2fLvCdov7c5bw//FHNZrZ3Uv9/Q=
+github.com/gotk3/gotk3 v0.5.1-0.20201111061058-cdb396edc76f h1:pqE4gan8c1ZSjo32V9QD5P41pM5Tlas9gzI+rcYUaI8=
+github.com/gotk3/gotk3 v0.5.1-0.20201111061058-cdb396edc76f/go.mod h1:/hqFpkNa9T3JgNAE2fLvCdov7c5bw//FHNZrZ3Uv9/Q=
github.com/klauspost/compress v1.10.10/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=
github.com/klauspost/compress v1.11.0 h1:wJbzvpYMVGG9iTI9VxpnNZfd4DzMPoCWze3GgSqz8yg=
github.com/klauspost/compress v1.11.0/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=
github.com/klauspost/compress v1.11.1 h1:bPb7nMRdOZYDrpPMTA3EInUQrdgoBinqUuSwlGdKDdE=
github.com/klauspost/compress v1.11.1/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=
+github.com/klauspost/compress v1.11.2 h1:MiK62aErc3gIiVEtyzKfeOHgW7atJb5g/KNX5m3c2nQ=
+github.com/klauspost/compress v1.11.2/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=
+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=
github.com/konsorten/go-windows-terminal-sequences v1.0.2 h1:DB17ag19krx9CFsz4o3enTrPXyIXCl+2iCXH/aMAp9s=
github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
github.com/miekg/dns v1.1.31 h1:sJFOl9BgwbYAWOGEwr61FU28pqsBNdpRBnhGXtO06Oo=
github.com/miekg/dns v1.1.31/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM=
+github.com/miekg/dns v1.1.35 h1:oTfOaDH+mZkdcgdIjH6yBajRGtIwcwcaR+rt23ZSrJs=
+github.com/miekg/dns v1.1.35/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM=
github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE=
github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
github.com/mitchellh/mapstructure v1.3.3 h1:SzB1nHZ2Xi+17FP0zVQBHIZqvwRN9408fJO8h+eeNA8=
github.com/qydysky/bili_danmu v0.0.0-20200914141357-762a9f0d89cb/go.mod h1:hejetn5M5YL0dZpEBtswTWEOwS9Rq8eRiN3SFco3JXA=
github.com/qydysky/bili_danmu v0.0.0-20200914143111-fe17ba7dd5a9 h1:85K/6r/1qlW5UZ8xC4S3DoNTyF4uuHf2KNxa2Ybairo=
github.com/qydysky/bili_danmu v0.0.0-20200914143111-fe17ba7dd5a9/go.mod h1:hejetn5M5YL0dZpEBtswTWEOwS9Rq8eRiN3SFco3JXA=
+github.com/qydysky/gotk3 v0.0.0-20201111220213-8c2f6f1efb6c h1:UDB78VOhwSTkmL+fpONkbeKx7LWFYT5sZ97/YGI5KTo=
+github.com/qydysky/gotk3 v0.0.0-20201111220213-8c2f6f1efb6c/go.mod h1:Aj03GBFp7Oa1YVWjjQLdz48wkzpfjIKARse4flQ39JY=
+github.com/qydysky/gotk3 v0.0.0-20201111221012-59dd0e7ec2d7 h1:I7B69M6Bx3Cr1LfcRSPajoxaeXOeweGhKz59fLf6bXE=
+github.com/qydysky/gotk3 v0.0.0-20201111221012-59dd0e7ec2d7/go.mod h1:Aj03GBFp7Oa1YVWjjQLdz48wkzpfjIKARse4flQ39JY=
github.com/qydysky/part v0.0.0-20200914123330-afade058e33d h1:um1WzsGzwD6h+1W3jqGcWJPVr4kT5gmRRaXXVwO7nb4=
github.com/qydysky/part v0.0.0-20200914123330-afade058e33d/go.mod h1:+8N3UgJBVyJj8ar31eZtucwrKpLpay854Y5qq0xk3x0=
github.com/qydysky/part v0.0.0-20200914222559-436abc80976a h1:Wurgg5wiPemdfbO9lzOywZWst0DyEI610gUo3HV/ros=
github.com/qydysky/part v0.0.7/go.mod h1:+8N3UgJBVyJj8ar31eZtucwrKpLpay854Y5qq0xk3x0=
github.com/qydysky/part v0.0.8 h1:W7icXUo22y1hewPev0u/H+DL+Ks0zP58HjrhVBaRgco=
github.com/qydysky/part v0.0.8/go.mod h1:+8N3UgJBVyJj8ar31eZtucwrKpLpay854Y5qq0xk3x0=
+github.com/qydysky/part v0.2.1 h1:D/ZZzKPYA9yFbudzu0HtR7RffEzdacvGr/D4hGNggRI=
+github.com/qydysky/part v0.2.1/go.mod h1:93s9ohLtzULet5ZPEUUWrT9BELC30oDZgRpgGSiDye4=
github.com/shirou/gopsutil v2.20.7+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
github.com/shirou/gopsutil v2.20.8+incompatible h1:8c7Atn0FAUZJo+f4wYbN0iVpdWniCQk7IYwGtgdh1mY=
github.com/shirou/gopsutil v2.20.8+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
github.com/shirou/gopsutil v2.20.9+incompatible h1:msXs2frUV+O/JLva9EDLpuJ84PrFsdCTCQex8PUdtkQ=
github.com/shirou/gopsutil v2.20.9+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
+github.com/shirou/gopsutil v3.20.10+incompatible h1:kQuRhh6h6y4luXvnmtu/lJEGtdJ3q8lbu9NQY99GP+o=
+github.com/shirou/gopsutil v3.20.10+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
github.com/sirupsen/logrus v1.4.1 h1:GL2rEmy6nsikmW0r8opw9JIRScdMF5hA8cOYLH7In1k=
github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0 h1:hb9wdF1z5waM+dSIICn1l0DkLVDT3hqhhQsDNUmHPRE=
golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
+golang.org/x/crypto v0.0.0-20201016220609-9e8e0b390897 h1:pLI5jrR7OSLijeIDcmRxNmw2api+jEfxLoykJVice/E=
+golang.org/x/crypto v0.0.0-20201016220609-9e8e0b390897/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20200927032502-5d4f70055728/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
golang.org/x/net v0.0.0-20201002202402-0a1ea396d57c h1:dk0ukUIHmGHqASjP0iue2261isepFCC6XRCSd1nHgDw=
golang.org/x/net v0.0.0-20201002202402-0a1ea396d57c/go.mod h1:iQL9McJNjoIa5mjH6nYTCTZXUN6RP+XW3eib7Ya3XcI=
+golang.org/x/net v0.0.0-20201110031124-69a78807bb2b h1:uwuIcX0g4Yl1NC5XAz37xsr2lTtcqevgzYNVt49waME=
+golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20200926100807-9d91bd62050c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f h1:+Nyd8tzPX9R7BWHguqsrbFdRx3WQ/1ib8I44HXV5yTA=
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20201110211018-35f3e6cf4a65 h1:Qo9oJ566/Sq7N4hrGftVXs8GI2CXBCuOd4S2wHE/e0M=
+golang.org/x/sys v0.0.0-20201110211018-35f3e6cf4a65/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190420181800-aa740d480789/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20191216052735-49a3e744a425 h1:VvQyQJN0tSuecqgcIxMWnnfG5kSmgy9KZR9sW3W5QeA=
golang.org/x/tools v0.0.0-20191216052735-49a3e744a425/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=