Skip to content

Commit

Permalink
Merge pull request #56 from FactomWyomingEntity/develop
Browse files Browse the repository at this point in the history
Develop
  • Loading branch information
Emyrk authored Jan 24, 2020
2 parents c685782 + 811a24e commit c36e4c1
Show file tree
Hide file tree
Showing 14 changed files with 374 additions and 33 deletions.
66 changes: 52 additions & 14 deletions accounting/share.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,15 +44,8 @@ func (p *OwedPayouts) Payouts(work ShareMap, remaining int64) {
prop := decimal.NewFromFloat(work.TotalDifficulty).Div(decimal.NewFromFloat(p.PoolDifficuty))
prop = prop.Truncate(AccountingPrecision)

// Estimate user hashrate
last := 20
if work.TotalShares < 20 {
last = work.TotalShares
}

target := work.Targets[last-1]
hashrate := difficulty.EffectiveHashRate(target, last, work.LastShare.Sub(work.FirstShare).Seconds())

// Last hashrate is the best guess
hashrate := work.LastHashrate()
if work.TotalShares < 5 {
// If there is too few shares, don't bother trying to calc a hashrate
hashrate = 0
Expand Down Expand Up @@ -160,14 +153,18 @@ func (m *ShareMap) AddShare(key string, s Share) {
m.Sums[key].AddShare(s)
}

const (
TargetsKept = 30
)

// ShareSum is the sum of shares for a given job
type ShareSum struct {
TotalDifficulty float64
TotalShares int

FirstShare time.Time
LastShare time.Time
Targets [20]uint64
Targets [TargetsKept]uint64
}

func (sum *ShareSum) AddShare(s Share) {
Expand All @@ -181,12 +178,53 @@ func (sum *ShareSum) AddShare(s Share) {
InsertTarget(s.Target, &sum.Targets, sum.TotalShares)
}

func InsertTarget(t uint64, a *[20]uint64, total int) {
if total > 20 {
total = 20
func (sum ShareSum) LastHashrate() float64 {
// Estimate user hashrate
last := TargetsKept
if sum.TotalShares < TargetsKept {
last = sum.TotalShares
}

target := sum.Targets[last-1]
hashrate := difficulty.EffectiveHashRate(target, last, sum.LastShare.Sub(sum.FirstShare).Seconds())
return hashrate
}

// WeightedAverageHashrate weighs hashes according to their place
func (sum ShareSum) WeightedAverageHashrate() float64 {
last := TargetsKept
if sum.TotalShares < TargetsKept {
last = sum.TotalShares
}

hashrate := float64(0)
totalFactor := float64(0)
for j := 0; j < last; j++ {
totalFactor += float64(j) + 1
hashrate += (float64(j) + 1) * difficulty.EffectiveHashRate(sum.Targets[j], j+1, sum.LastShare.Sub(sum.FirstShare).Seconds())
}
return hashrate / float64(totalFactor)
}

func (sum ShareSum) AverageHashrate() float64 {
last := TargetsKept
if sum.TotalShares < TargetsKept {
last = sum.TotalShares
}

hashrate := float64(0)
for j := 0; j < last; j++ {
hashrate += difficulty.EffectiveHashRate(sum.Targets[j], j+1, sum.LastShare.Sub(sum.FirstShare).Seconds())
}
return hashrate / float64(last)
}

func InsertTarget(t uint64, a *[TargetsKept]uint64, total int) {
if total > TargetsKept {
total = TargetsKept
}
index := sort.Search(total, func(i int) bool { return a[i] < t })
if index == 20 {
if index == TargetsKept {
return
}
// Move things down
Expand Down
2 changes: 1 addition & 1 deletion accounting/share_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,7 @@ func TestNewPayout(t *testing.T) {
}

func TestInsertTarget(t *testing.T) {
var a [20]uint64
var a [TargetsKept]uint64
for i := 0; i < 10000; i++ {
InsertTarget(rand.Uint64(), &a, i)
}
Expand Down
1 change: 1 addition & 0 deletions accounting/simulation/esthashrate/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
*.csv
113 changes: 113 additions & 0 deletions accounting/simulation/esthashrate/main.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
package main

import (
crand "crypto/rand"
"encoding/csv"
"fmt"
"math/rand"
"os"
"sync"
"time"

"github.com/FactomWyomingEntity/prosper-pool/accounting"
"github.com/FactomWyomingEntity/prosper-pool/difficulty"
)

var _ = crand.Int

type Vector struct {
TargetHashrate float64
Duration time.Duration
}

var Vectors = []Vector{
{9000, time.Second * 60},
{9000, time.Second * 60},
{9000, time.Second * 60},
{9000, time.Second * 60},
{9000, time.Second * 60},
{9000, time.Second * 60},
{9000, time.Second * 60},
{9000, time.Second * 60},
{9000, time.Second * 60},
{9000, time.Second * 60},
{9000, time.Second * 60},
{9000, time.Second * 60},
}

func main() {
rand.Seed(time.Now().UnixNano())
var writer *csv.Writer
filename := "data.csv"
_, err := os.Stat(filename)
if os.IsNotExist(err) {
file, err := os.OpenFile(filename, os.O_CREATE|os.O_RDWR, 0777)
if err != nil {
panic(err)
}
defer file.Close()

writer = csv.NewWriter(file)
panicErr(writer.Write([]string{"ID", "actual hr", "duration(s)", "avghr", "last", "weightedavg", "kept"}))
} else {
file, err := os.OpenFile(filename, os.O_APPEND|os.O_WRONLY, 0777)
panicErr(err)
defer file.Close()
writer = csv.NewWriter(file)
}

var wl sync.Mutex
var wg sync.WaitGroup
for i := range Vectors {
wg.Add(1)
go func() {
now := time.Now()
sums := accounting.NewShareMap()
computeShares(sums, "key", Vectors[i].TargetHashrate, Vectors[i].Duration)
wl.Lock()
panicErr(writer.Write([]string{
fmt.Sprintf("%d", i),
fmt.Sprintf("%.2f", Vectors[i].TargetHashrate),
fmt.Sprintf("%.2f", Vectors[i].Duration.Seconds()),
fmt.Sprintf("%.2f", sums.Sums["key"].AverageHashrate()),
fmt.Sprintf("%.2f", sums.Sums["key"].LastHashrate()),
fmt.Sprintf("%.2f", sums.Sums["key"].WeightedAverageHashrate()),
fmt.Sprintf("%d", accounting.TargetsKept),
}))
wl.Unlock()
wg.Done()
fmt.Printf("%d finished in %s\n", i, time.Since(now))
}()
}
wg.Wait()
writer.Flush()

}

func panicErr(err error) {
if err != nil {
panic(err)
}
}

func computeShares(shareMap *accounting.ShareMap, key string, hashrate float64, duration time.Duration) {
for i := float64(0); i < hashrate*duration.Seconds(); i++ {
//x := make([]byte, 8)
//_, _ = crand.Read(x)
//target := binary.BigEndian.Uint64(x)
target := rand.Uint64()
if target > difficulty.PDiff {
shareMap.AddShare(key, accounting.Share{
JobID: 0,
Nonce: []byte{},
Difficulty: 0,
Target: target,
Accepted: true,
MinerID: "100K",
UserID: "100K",
})
}
}
shareMap.Sums[key].FirstShare = time.Now().Add(-1 * duration)
shareMap.Sums[key].LastShare = shareMap.Sums[key].FirstShare.Add(duration)
}
23 changes: 20 additions & 3 deletions cmd/root.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package cmd
import (
"bufio"
"context"
"encoding/json"
"fmt"
"math/rand"
"net/http"
Expand Down Expand Up @@ -38,6 +39,7 @@ func init() {
rootCmd.AddCommand(testStratum)
rootCmd.AddCommand(getConfig)
rootCmd.AddCommand(datasources)
rootCmd.AddCommand(datasourcesPull)

rootCmd.PersistentFlags().Bool("profile", false, "Turn on profiling")
rootCmd.PersistentFlags().String("config", "$HOME/.prosper/prosper-pool.toml", "Location to config")
Expand Down Expand Up @@ -366,6 +368,24 @@ var testAuth = &cobra.Command{
},
}

var datasourcesPull = &cobra.Command{
Use: "pullsources",
Short: "Runs through all configured datasources",
PreRun: SoftReadConfig,
RunE: func(cmd *cobra.Command, args []string) error {
// Default to printing everything
d := polling.NewDataSources(viper.GetViper(), false)
all := d.PullAllSources()
j, err := json.Marshal(all)
if err != nil {
return err
}
fmt.Println(string(j))

return nil
},
}

// Direct copy from Pegnet
var datasources = &cobra.Command{
Use: "datasources [assets or datasource]",
Expand Down Expand Up @@ -426,9 +446,6 @@ var datasources = &cobra.Command{
fmt.Println()
fmt.Println("Assets and their data source order. The order left to right is the fallback order.")
for _, asset := range opr.V2Assets {
if asset == "PEG" {
continue
}
str := d.AssetPriorityString(asset)
fmt.Printf("\t%4s (%d) : %s\n", asset, len(d.AssetSources[asset]), str)
}
Expand Down
8 changes: 3 additions & 5 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -11,17 +11,15 @@ require (
github.com/cenkalti/backoff v2.1.1+incompatible
github.com/disintegration/imaging v1.6.1 // indirect
github.com/dustin/go-humanize v1.0.0
github.com/fatih/color v1.7.0 // indirect
github.com/fatih/color v1.9.0 // indirect
github.com/gorilla/rpc v1.2.0
github.com/gorilla/sessions v1.2.0 // indirect
github.com/gosimple/slug v1.8.0 // indirect
github.com/jinzhu/configor v1.1.1 // indirect
github.com/jinzhu/copier v0.0.0-20190924061706-b57f9002281a // indirect
github.com/jinzhu/gorm v1.9.11
github.com/mattn/go-colorable v0.1.4 // indirect
github.com/mattn/go-isatty v0.0.10 // indirect
github.com/microcosm-cc/bluemonday v1.0.2 // indirect
github.com/pegnet/LXRHash v0.0.0-20191028162532-138fe8d191a2
github.com/pegnet/LXRHash v0.0.0-20200110181620-43fadce8a901
github.com/pegnet/pegnet v0.2.3-0.20191203221152-328fdbaacef3
github.com/pegnet/pegnetd v0.1.2-0.20191011183044-5eca2d08a5e8
github.com/prometheus/client_golang v1.0.0
Expand All @@ -47,7 +45,7 @@ require (
github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24
github.com/sirupsen/logrus v1.4.2
github.com/spf13/cobra v0.0.5
github.com/spf13/viper v1.4.0
github.com/spf13/viper v1.5.0
github.com/stretchr/testify v1.4.0
github.com/theplant/cldr v0.0.0-20190423050709-9f76f7ce4ee8 // indirect
github.com/theplant/htmltestingutils v0.0.0-20190423050759-0e06de7b6967 // indirect
Expand Down
24 changes: 18 additions & 6 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -136,8 +136,8 @@ github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1
github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I=
github.com/erikstmartin/go-testdb v0.0.0-20160219214506-8d10e4a1bae5 h1:Yzb9+7DPaBjB8zlTR87/ElzFsnQfuHnVUVqpZZIcV5Y=
github.com/erikstmartin/go-testdb v0.0.0-20160219214506-8d10e4a1bae5/go.mod h1:a2zkGnVExMxdzMo3M0Hi/3sEU+cWnZpSni0O6/Yb/P0=
github.com/fatih/color v1.7.0 h1:DkWD4oS2D8LGGgTQ6IvwJJXSL5Vp2ffcQg58nFV38Ys=
github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
github.com/fatih/color v1.9.0 h1:8xPHl4/q1VyqGIPif1F+1V3Y3lSmrq01EabUW3CoW5s=
github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU=
github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I=
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk=
Expand Down Expand Up @@ -248,17 +248,20 @@ github.com/lib/pq v1.1.1 h1:sJZmqHoEaY7f+NPP8pgLB/WxulyR3fewgCM2qaSlBb4=
github.com/lib/pq v1.1.1/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
github.com/magiconair/properties v1.8.0 h1:LLgXmsheXeRoUOBOjtwPQCWIYqM/LU1ayDtDePerRcY=
github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
github.com/magiconair/properties v1.8.1 h1:ZC2Vc7/ZFkGmsVC9KvOjumD+G5lXy2RtTKyzRKO2BQ4=
github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
github.com/mattn/go-colorable v0.1.4 h1:snbPLB8fVfU9iwbbo30TPtbLRzwWu6aJS6Xh4eaaviA=
github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
github.com/mattn/go-isatty v0.0.10 h1:qxFzApOv4WsAL965uUPIsXzAKCZxN2p9UqdhFS4ZW10=
github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84=
github.com/mattn/go-isatty v0.0.11 h1:FxPOTFNqGkuDUGi3H/qkUbQO4ZiBa2brKq5r0l8TGeM=
github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE=
github.com/mattn/go-sqlite3 v1.11.0 h1:LDdKkqtYlom37fkvqs8rMPFKAMe8+SgjbwZ6ex1/A/Q=
github.com/mattn/go-sqlite3 v1.11.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc=
github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU=
github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
github.com/microcosm-cc/bluemonday v1.0.2 h1:5lPfLTTAvAbtS0VqT+94yOtFnGfUWYyx0+iToC3Os3s=
github.com/microcosm-cc/bluemonday v1.0.2/go.mod h1:iVP4YcDBq+n/5fb23BhYFvIMq/leAFZyRl6bYmGDlGc=
github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
github.com/mitchellh/go-testing-interface v0.0.0-20171004221916-a61a99592b77 h1:7GoSOOW2jpsfkntVKaS2rAr1TJqfcxotyaUcuxoZSzg=
github.com/mitchellh/go-testing-interface v0.0.0-20171004221916-a61a99592b77/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI=
Expand All @@ -284,6 +287,8 @@ github.com/pegnet/LXRHash v0.0.0-20190913134745-ca3b8b65a729 h1:LNv5Hz+Ydu+CzU+D
github.com/pegnet/LXRHash v0.0.0-20190913134745-ca3b8b65a729/go.mod h1:0zBp9GFy9F77zuQbPkAmdUBRiptMaJ1V96eVFdMnXZA=
github.com/pegnet/LXRHash v0.0.0-20191028162532-138fe8d191a2 h1:ec8NDi02ydYYKw/RpzFZypAh8rvyxZAvkeVVDBo+lxA=
github.com/pegnet/LXRHash v0.0.0-20191028162532-138fe8d191a2/go.mod h1:0zBp9GFy9F77zuQbPkAmdUBRiptMaJ1V96eVFdMnXZA=
github.com/pegnet/LXRHash v0.0.0-20200110181620-43fadce8a901 h1:gYivfXd8hsiI7HyZuoG6LuCc0BAmbGFBdHr9wYqzDzs=
github.com/pegnet/LXRHash v0.0.0-20200110181620-43fadce8a901/go.mod h1:0zBp9GFy9F77zuQbPkAmdUBRiptMaJ1V96eVFdMnXZA=
github.com/pegnet/OracleRecord v0.0.2/go.mod h1:VrY7Shn4oSCli47CsUYBFjH68IenGYtnLaXaaivepu4=
github.com/pegnet/pegnet v0.0.2/go.mod h1:FUyEs8fyLOzPXZgyqXcqiOhQi58loNtujykIbxxoKbQ=
github.com/pegnet/pegnet v0.1.0-rc4.0.20191002204629-5a6fd621ca60 h1:LhihCN5xwqmWoZqt3Hd34njIbXe7d6jNP2K8MJinI+U=
Expand Down Expand Up @@ -388,13 +393,17 @@ github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnIn
github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s=
github.com/spf13/viper v1.4.0 h1:yXHLWeravcrgGyFSyCgdYpXQ9dR9c/WED3pg1RhxqEU=
github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE=
github.com/spf13/viper v1.5.0 h1:GpsTwfsQ27oS/Aha/6d1oD7tpKIqWnOA6tgOX9HHkt4=
github.com/spf13/viper v1.5.0/go.mod h1:AkYRkVJF8TkSG/xet6PzXX+l39KhhXa2pdqVSxnTcn4=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.3.1-0.20190311161405-34c6fa2dc709/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk=
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s=
github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw=
github.com/syndtr/goleveldb v1.0.0 h1:fBdIW9lB4Iz0n9khmH8w27SJ3QEJ7+IgjPEwGSZiFdE=
github.com/syndtr/goleveldb v1.0.0/go.mod h1:ZVVdQEZoIme9iO1Ch2Jdy24qqXrMMOU6lpPAyBWyWuQ=
github.com/theplant/cldr v0.0.0-20190423050709-9f76f7ce4ee8 h1:di0cR5qqo2DllBMwmP75kZpUX6dAXhsn1O2dshQfMaA=
Expand Down Expand Up @@ -475,8 +484,8 @@ golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190911201528-7ad0cfa0b7b5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191008105621-543471e840be h1:QAcqgptGM8IQBC9K/RC4o+O9YmqEm0diQn9QmZw/0mU=
golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191026070338-33540a1f6037 h1:YyJpGZS1sBuBCzLAR1VEpK193GlqGZbnPFnPV/5Rsb4=
golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs=
Expand Down Expand Up @@ -518,6 +527,7 @@ gopkg.in/gcfg.v1 v1.2.3 h1:m8OOJ4ccYHnx2f4gQwpno8nAX5OGOh7RLaaz0pj3Ogs=
gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o=
gopkg.in/ini.v1 v1.42.0 h1:7N3gPTt50s8GuLortA00n8AqRTk75qOP98+mTPpgzRk=
gopkg.in/ini.v1 v1.42.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/resty.v1 v1.12.0 h1:CuXP0Pjfw9rOuY6EP+UvtNvt5DSqHpIxILZKT/quCZI=
gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo=
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
Expand All @@ -527,6 +537,8 @@ gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bl
gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.4 h1:/eiJrUcujPVeJ3xlSWaiNi3uSVmDGBK1pDHUHAnao1I=
gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
Expand Down
Loading

0 comments on commit c36e4c1

Please sign in to comment.