diff --git a/go.sum b/go.sum index a6a8189..21a694d 100644 --- a/go.sum +++ b/go.sum @@ -22,6 +22,7 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +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/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= diff --git a/log/custom_save_money_event.go b/log/custom_save_money_event.go new file mode 100644 index 0000000..b37fa58 --- /dev/null +++ b/log/custom_save_money_event.go @@ -0,0 +1,439 @@ +package log + +import ( + "bytes" + "context" + "net/http" + "net/url" + "os" + "sync" + "time" + + "github.com/ONSdigital/go-ns/common" +) + +// Each SaveMoneyEvent... need their own sync.Pool +var eventBufPool4 = sync.Pool{ + New: func() interface{} { + return &bytes.Buffer{} // this is the same as return new(bytes.Buffer) + }, +} + +var eventBufPool5 = sync.Pool{ + New: func() interface{} { + return &bytes.Buffer{} // this is the same as return new(bytes.Buffer) + }, +} + +var eventBufPool6 = sync.Pool{ + New: func() interface{} { + return &bytes.Buffer{} // this is the same as return new(bytes.Buffer) + }, +} + +// CustomSaveMoneyEvent1 for use in middleware to replace the log.Event +func CustomSaveMoneyEvent1(ctx context.Context, event string, + req *http.Request, statusCode int, responseContentLength int64, + startedAt, endedAt *time.Time) { + + buf := eventBufPool4.Get().(*bytes.Buffer) // with casting on the end + buf.Reset() // Must reset before each block of usage + + buf.WriteByte('{') + unrollCreatedAt(buf, time.Now().UTC()) + + if Namespace != "" { + buf.WriteByte(',') + unrollNamespace(buf, Namespace) + } + + if event != "" { + buf.WriteByte(',') + unrollEvent(buf, event) + } + + if ctx != nil { + buf.WriteByte(',') + unrollTraceID(buf, common.GetRequestId(ctx)) + } + + if req != nil { + + // We know what the '*req' is, so its contents can be directly + // extracted ... + buf.WriteString(",\"http\":{\"status_code\":") + unrollInt(buf, statusCode) + + if req.Method != "" { + buf.WriteString(",\"method\":\"") + buf.WriteString(req.Method) + buf.WriteByte('"') + } + + if req.URL.Path != "" { + buf.WriteString(",\"path\":\"") + buf.WriteString(req.URL.Path) + buf.WriteByte('"') + } + + if req.URL.RawQuery != "" { + buf.WriteString(",\"query\":\"") + buf.WriteString(req.URL.RawQuery) + buf.WriteByte('"') + } + + if startedAt != nil { + buf.WriteString(",\"started_at\":\"") + unrollTimeToBuf(buf, *startedAt) + buf.WriteByte('"') + } + + if endedAt != nil { + buf.WriteString(",\"ended_at\":\"") + unrollTimeToBuf(buf, *endedAt) + buf.WriteByte('"') + } + + if startedAt != nil && endedAt != nil { + d := endedAt.Sub(*startedAt) + + buf.WriteString(",\"duration\":") + unrollInt64(buf, int64(d)) + } + + // We can not easily determine if ResponseContentLength has been assigned a value + // without doing some sort of reflect which will then create allocs. + // But if ResponseContentLength is 0, then there is no point showing it. + if responseContentLength != 0 { + buf.WriteString(",\"response_content_length\":") + unrollInt64(buf, responseContentLength) + } + + buf.WriteByte('}') + } + + buf.WriteByte('}') + buf.WriteByte(10) + + l := int64(buf.Len()) // cast to same type as returned by WriteTo() + + // try and write to stdout + if n, err := buf.WriteTo(destination); n != l || err != nil { + // if that fails, try and write to stderr + if n, err := buf.WriteTo(fallbackDestination); n != l || err != nil { + // if that fails, panic! + // + // also defer an os.Exit since the panic might be captured in a recover + // block in the caller, but we always want to exit in this scenario + // + // Note: deferring an os.Exit makes this particular block untestable + // using conventional `go test`. But it's a narrow enough edge case that + // it probably isn't worth trying, and only occurs in extreme circumstances + // (os.Stdout and os.Stderr both being closed) where unpredictable + // behaviour is expected. It's not clear what a panic or os.Exit would do + // in this scenario, or if our process is even still alive to get this far. + defer os.Exit(1) + panic("error writing log data: " + err.Error()) + } + } + + eventBufPool4.Put(buf) +} + +func unrollProproxyURL(buf *bytes.Buffer, proproxyURL *url.URL) { + // This function does the equivalent of: json.NewEncoder(buf).Encode(*proproxyURL) + // but without putting any allocations on the HEAP. + + ////////////////////////////////////////////////////////////////////////////// + // The following comments were copied from go/src/net/url/url.go for reference + // + + // A URL represents a parsed URL (technically, a URI reference). + // + // The general form represented is: + // + // [scheme:][//[userinfo@]host][/]path[?query][#fragment] + // + // URLs that do not start with a slash after the scheme are interpreted as: + // + // scheme:opaque[?query][#fragment] + // + // Note that the Path field is stored in decoded form: /%47%6f%2f becomes /Go/. + // A consequence is that it is impossible to tell which slashes in the Path were + // slashes in the raw URL and which were %2f. This distinction is rarely important, + // but when it is, the code should use RawPath, an optional field which only gets + // set if the default encoding is different from Path. + // + // URL's String method uses the EscapedPath method to obtain the path. See the + // EscapedPath method for more details. + /*type URL struct { + Scheme string + Opaque string // encoded opaque data + User *Userinfo // username and password information + Host string // host or host:port + Path string // path (relative paths may omit leading slash) + RawPath string // encoded path hint (see EscapedPath method) + ForceQuery bool // append a query ('?') even if RawQuery is empty + RawQuery string // encoded query values, without '?' + Fragment string // fragment for references, without '#' + }*/ + // The Userinfo type is an immutable encapsulation of username and + // password details for a URL. An existing Userinfo value is guaranteed + // to have a username set (potentially empty, as allowed by RFC 2396), + // and optionally a password. + /*type Userinfo struct { + username string + password string + passwordSet bool + }*/ + + buf.WriteString("{\"Scheme\":\"") + if proproxyURL.Scheme != "" { + buf.WriteString(proproxyURL.Scheme) + } + buf.WriteString("\",\"Opaque\":\"") + if proproxyURL.Opaque != "" { + buf.WriteString(proproxyURL.Opaque) + } + buf.WriteString("\",\"User\":") + if proproxyURL.User == nil { + buf.WriteString("null") + } else { + // this section's output format is based on the structure variable names, + // as i've not seen any examples of how these fields are printed. + buf.WriteString("{\"Name\":\"") + buf.WriteString(proproxyURL.User.Username()) + buf.WriteString("\",\"Pass\":\"") + pass, set := proproxyURL.User.Password() + buf.WriteString(pass) + buf.WriteString("\",\"Set\":") + if set { + buf.WriteString("true") + } else { + buf.WriteString("false") + } + buf.WriteByte('}') + } + buf.WriteString(",\"Host\":\"") + if proproxyURL.Host != "" { + buf.WriteString(proproxyURL.Host) + } + buf.WriteString("\",\"Path\":\"") + if proproxyURL.Path != "" { + buf.WriteString(proproxyURL.Path) + } + buf.WriteString("\",\"RawPath\":\"") + if proproxyURL.RawPath != "" { + buf.WriteString(proproxyURL.RawPath) + } + buf.WriteString("\",\"ForceQuery\":") + if proproxyURL.ForceQuery { + buf.WriteString("true") + } else { + buf.WriteString("false") + } + buf.WriteString(",\"RawQuery\":\"") + if proproxyURL.RawQuery != "" { + buf.WriteString(proproxyURL.RawQuery) + } + buf.WriteString("\",\"Fragment\":\"") + if proproxyURL.Fragment != "" { + buf.WriteString(proproxyURL.Fragment) + } + buf.WriteString("\"}") +} + +// CustomSaveMoneyEvent2 for use in dp-frontend-router createReverseProxy() +// to replace the log.Event +func CustomSaveMoneyEvent2(ctx context.Context, event string, info severity, + req *http.Request, statusCode int, responseContentLength int64, + urlName string, proproxyURL *url.URL, + proxName string, proxyName string) { + + buf := eventBufPool5.Get().(*bytes.Buffer) // with casting on the end + buf.Reset() // Must reset before each block of usage + + buf.WriteByte('{') + unrollCreatedAt(buf, time.Now().UTC()) + + if event != "" { + buf.WriteByte(',') + unrollEvent(buf, event) + } + + if ctx != nil { + buf.WriteByte(',') + unrollTraceID(buf, common.GetRequestId(ctx)) + } + + buf.WriteByte(',') + unrollSeverity(buf, int(info)) + + if req != nil { + + // We know what the '*req' is, so its contents can be directly + // extracted ... + buf.WriteString(",\"http\":{\"status_code\":") + unrollInt(buf, statusCode) + + if req.URL.RawQuery != "" { + buf.WriteString(",\"query\":\"") + buf.WriteString(req.URL.RawQuery) + buf.WriteByte('"') + } + + // We can not easily determine if ResponseContentLength has been assigned a value + // without doing some sort of reflect which will then create allocs. + // But if ResponseContentLength is 0, then there is no point showing it. + if responseContentLength != 0 { + buf.WriteString(",\"response_content_length\":") + unrollInt64(buf, responseContentLength) + } + + buf.WriteByte('}') + } + + if urlName != "" || proxName != "" { + buf.WriteString(",\"data\":{") + var somethingWritten bool + + if urlName != "" { + somethingWritten = true + buf.WriteByte('"') + buf.WriteString(urlName) + buf.WriteString("\":") + // inline expand the Encode() to save final 128 bytes + // (as per the commented out structures in unrollProproxyURL() ) + unrollProproxyURL(buf, proproxyURL) + // json.NewEncoder(buf).Encode(*proproxyURL) + // buf.Truncate(buf.Len() - 1) // remove the 'new line', as there is more to append + } + + if proxName != "" { + if somethingWritten { + buf.WriteByte(',') + } + somethingWritten = true + buf.WriteByte('"') + buf.WriteString(proxName) + buf.WriteString("\":\"") + buf.WriteString(proxyName) + buf.WriteByte('"') + + } + buf.WriteByte('}') + } + + buf.WriteByte('}') + buf.WriteByte(10) + + l := int64(buf.Len()) // cast to same type as returned by WriteTo() + + // try and write to stdout + if n, err := buf.WriteTo(destination); n != l || err != nil { + // if that fails, try and write to stderr + if n, err := buf.WriteTo(fallbackDestination); n != l || err != nil { + // if that fails, panic! + // + // also defer an os.Exit since the panic might be captured in a recover + // block in the caller, but we always want to exit in this scenario + // + // Note: deferring an os.Exit makes this particular block untestable + // using conventional `go test`. But it's a narrow enough edge case that + // it probably isn't worth trying, and only occurs in extreme circumstances + // (os.Stdout and os.Stderr both being closed) where unpredictable + // behaviour is expected. It's not clear what a panic or os.Exit would do + // in this scenario, or if our process is even still alive to get this far. + defer os.Exit(1) + panic("error writing log data: " + err.Error()) + } + } + + eventBufPool5.Put(buf) +} + +// CustomSaveMoneyEvent3 for use in middleware to replace the 2nd log.Event +func CustomSaveMoneyEvent3(ctx context.Context, event string, + req *http.Request, statusCode int, responseContentLength int64, + startedAt, endedAt *time.Time) { + + buf := eventBufPool6.Get().(*bytes.Buffer) // with casting on the end + buf.Reset() // Must reset before each block of usage + + buf.WriteByte('{') + unrollCreatedAt(buf, time.Now().UTC()) + + if event != "" { + buf.WriteByte(',') + unrollEvent(buf, event) + } + + if ctx != nil { + buf.WriteByte(',') + unrollTraceID(buf, common.GetRequestId(ctx)) + } + + if req != nil { + + // We know what the '*req' is, so its contents can be directly + // extracted ... + buf.WriteString(",\"http\":{\"status_code\":") + unrollInt(buf, statusCode) + + if startedAt != nil { + buf.WriteString(",\"started_at\":\"") + unrollTimeToBuf(buf, *startedAt) + buf.WriteByte('"') + } + + if endedAt != nil { + buf.WriteString(",\"ended_at\":\"") + unrollTimeToBuf(buf, *endedAt) + buf.WriteByte('"') + } + + if startedAt != nil && endedAt != nil { + d := endedAt.Sub(*startedAt) + + buf.WriteString(",\"duration\":") + unrollInt64(buf, int64(d)) + } + + // We can not easily determine if ResponseContentLength has been assigned a value + // without doing some sort of reflect which will then create allocs. + // But if ResponseContentLength is 0, then there is no point showing it. + if responseContentLength != 0 { + buf.WriteString(",\"response_content_length\":") + unrollInt64(buf, responseContentLength) + } + + buf.WriteByte('}') + } + + buf.WriteByte('}') + buf.WriteByte(10) + + l := int64(buf.Len()) // cast to same type as returned by WriteTo() + + // try and write to stdout + if n, err := buf.WriteTo(destination); n != l || err != nil { + // if that fails, try and write to stderr + if n, err := buf.WriteTo(fallbackDestination); n != l || err != nil { + // if that fails, panic! + // + // also defer an os.Exit since the panic might be captured in a recover + // block in the caller, but we always want to exit in this scenario + // + // Note: deferring an os.Exit makes this particular block untestable + // using conventional `go test`. But it's a narrow enough edge case that + // it probably isn't worth trying, and only occurs in extreme circumstances + // (os.Stdout and os.Stderr both being closed) where unpredictable + // behaviour is expected. It's not clear what a panic or os.Exit would do + // in this scenario, or if our process is even still alive to get this far. + defer os.Exit(1) + panic("error writing log data: " + err.Error()) + } + } + + eventBufPool6.Put(buf) +} diff --git a/log/custom_save_money_event_benchmark_test.go b/log/custom_save_money_event_benchmark_test.go new file mode 100644 index 0000000..31f7dbc --- /dev/null +++ b/log/custom_save_money_event_benchmark_test.go @@ -0,0 +1,78 @@ +package log + +import ( + "context" + "fmt" + "net/http" + "net/url" + "testing" + "time" + + "github.com/ONSdigital/go-ns/common" +) + +func BenchmarkLogCustomSave(b *testing.B) { + oldNamespace := Namespace + defer func() { + Namespace = oldNamespace // this needed for other test functions + }() + + fmt.Println("Benchmarking: 'Log'") + req, err := http.NewRequest("GET", "http://localhost:20000/embed/visualisations/peoplepopulationandcommunity/populationandmigration/internationalmigration/qmis/shortterminternationalmigrationestimatesforlocalauthoritiesqmi", nil) + if err != nil { + fmt.Println(err) + return + } + + // NOTE: The gorilla library function registerVars() in pat.go V1.0.1 + // adds in the the resulting path that is reverse proxied to. + // SO: The following replicates that so that this test more closely + // matches what is seen in dp-frontend-router. + req2, err := http.NewRequest("GET", "http://localhost:20000/embed/visualisations/peoplepopulationandcommunity/populationandmigration/internationalmigration/qmis/shortterminternationalmigrationestimatesforlocalauthoritiesqmi", nil) + if err != nil { + fmt.Println(err) + return + } + q := req2.URL.Query() // Get a copy of the query values. + q.Add(":uri", "embed/visualisations/peoplepopulationandcommunity/populationandmigration/internationalmigration/qmis/shortterminternationalmigrationestimatesforlocalauthoritiesqmi") // Add a new value to the set. + req2.URL.RawQuery = q.Encode() // Encode and assign back to the original query. + + requestID := newRequestID(16) + ctx := context.WithValue(context.Background(), common.RequestIdKey, requestID) + start := time.Now().UTC() + end := time.Now().UTC() + babbageURL, err := url.Parse("http://localhost:8080") + + Namespace = "BenchmarkLog" // force a fixed value as sometimes during testing this changes and does not help when comparing to other tests + + isMinimalAllocations = true // use new Event() code, for minimum memory allocations + + b.ReportAllocs() + // The sequence of these 3 events is about worst case length that dp-frontend-router can do + // Using the THREE new events also drops bytes allocated from ~ 850 to 769 + // (before dropping items) + for i := 0; i < b.N; i++ { + // 1st Event is like the first one in Middleware() + //SaveMoneyEvent1(ctx, "http request received", HTTP(req, 0, 0, &start, nil)) + CustomSaveMoneyEvent1(ctx, "http request received", + req, 0, 0, + &start, nil) + + // 2nd event is 'similar in length' to one in createReverseProxy() + // BUT with items dropped, see file: log_line_length_Optimization-2.odt + /*SaveMoneyEvent2(ctx, "proxying request", INFO, HTTP(req2, 0, 0, nil, nil), + Data{"destination": babbageURL, + "proxy_name": "babbage"})*/ + CustomSaveMoneyEvent2(ctx, "proxying request", INFO, + req2, 0, 0, + "destination", babbageURL, + "proxy_name", "babbage") + + // 3rd Event is like the second one in Middleware() + // BUT with items dropped, see file: log_line_length_Optimization-2.odt + //SaveMoneyEvent3(ctx, "http request completed", HTTP(req2, 200, 4, nil, &end)) + CustomSaveMoneyEvent3(ctx, "http request completed", + req2, 200, 4, + nil, &end) + } +} diff --git a/log/custom_save_money_event_test.go b/log/custom_save_money_event_test.go new file mode 100644 index 0000000..1fec800 --- /dev/null +++ b/log/custom_save_money_event_test.go @@ -0,0 +1,175 @@ +package log + +import ( + "context" + "fmt" + "net/http" + "net/url" + "testing" + "time" + + "github.com/ONSdigital/go-ns/common" +) + +func TestLogCustomSaveMoneyEvents(t *testing.T) { + // Create 3 events that look like what dp-frontend-router issues on the HAPPY HOT-PATH + // The purpose of this test is to get the events and show their lengths. + // They should be the same, appart from the 'created_at' timestamp whose length + // can also not be that same. + // Over a few runs the lengths of the fields will sometimes be equal or typically one + // or two counts different - any more then do a visual inspection of the output and + // fix the code until output matches. + // Thus demonstrating that the CustomSaveMoneyEvents code generates the same output + // as the SaveMoneyEvents code, but using less HEAP allocation - as demonstrated in + // the Benchmark code : BenchmarkLogCustomSave() + // The 3 old events are captured first and copied to buffers and then the + // 3 new events are captured and copied to buffers to ensure no mistakes in + // what one 'thinks' is in a particular buffer. + + oldNamespace := Namespace + defer func() { + Namespace = oldNamespace // this needed for other test functions + }() + + isTestMode = false + + oldDestination := destination + oldFallbackDestination := fallbackDestination + + defer func() { + destination = oldDestination + fallbackDestination = oldFallbackDestination + isMinimalAllocations = false // put back to use old events, so as to not damage existing tests + }() + + fmt.Println("Testing: 'New Log 3 Events in dp-frontend-router HAPPY HOT-PATH'") + req, err := http.NewRequest("GET", "http://localhost:20000/embed/visualisations/peoplepopulationandcommunity/populationandmigration/internationalmigration/qmis/shortterminternationalmigrationestimatesforlocalauthoritiesqmi", nil) + if err != nil { + t.Errorf("%v", err) + } + + // NOTE: The gorilla library function registerVars() in pat.go V1.0.1 + // adds in the the resulting path that is reverse proxied to. + // SO: The following replicates that so that this test more closely + // matches what is seen in dp-frontend-router. + req2, err := http.NewRequest("GET", "http://localhost:20000/embed/visualisations/peoplepopulationandcommunity/populationandmigration/internationalmigration/qmis/shortterminternationalmigrationestimatesforlocalauthoritiesqmi", nil) + if err != nil { + t.Errorf("%v", err) + } + q := req2.URL.Query() // Get a copy of the query values. + q.Add(":uri", "embed/visualisations/peoplepopulationandcommunity/populationandmigration/internationalmigration/qmis/shortterminternationalmigrationestimatesforlocalauthoritiesqmi") // Add a new value to the set. + req2.URL.RawQuery = q.Encode() // Encode and assign back to the original query. + + requestID := newRequestID(16) + ctx := context.WithValue(context.Background(), common.RequestIdKey, requestID) + start := time.Now().UTC() + end := time.Now().UTC() + babbageURL, err := url.Parse("http://localhost:8080") + + Namespace = "BenchmarkLog" // force a fixed value as sometimes during testing this changes and does not help when comparing to other tests + + var oldLength1, oldLength2, oldLength3 int + + //////////////////////////// + // Capture save money events + + isMinimalAllocations = false // use existing Event() code + + // 1st Event is like the first one in Middleware() + // Capture the output of the call to SaveMoneyEvent1() + var bytesWritten []byte + destination = &writer{func(b []byte) (n int, err error) { + bytesWritten = b + return len(b), nil + }} + SaveMoneyEvent1(ctx, "http request received", HTTP(req, 0, 0, &start, nil)) + + // Converting what has been captured in bytesWritten with string() + // puts : !F(MISSING) + // into the output, so we do the following: + // We have to copy the result into a new buffer because the Fprintln over-writes + // the result (what a pain). + oldLength1 = len(bytesWritten) + oldBuffer1 := make([]byte, 0, 2000) + for i := 0; i < oldLength1; i++ { + oldBuffer1 = append(oldBuffer1, bytesWritten[i]) + } + + // 2nd Event is 'similar in length' to one in createReverseProxy() + SaveMoneyEvent2(ctx, "proxying request", INFO, HTTP(req2, 0, 0, nil, nil), + Data{"destination": babbageURL, + "proxy_name": "babbage"}) + + oldLength2 = len(bytesWritten) + oldBuffer2 := make([]byte, 0, 2000) + for i := 0; i < oldLength2; i++ { + oldBuffer2 = append(oldBuffer2, bytesWritten[i]) + } + + // 3rd Event is like the second one in Middleware() + SaveMoneyEvent3(ctx, "http request completed", HTTP(req2, 200, 4, nil, &end)) + + oldLength3 = len(bytesWritten) + oldBuffer3 := make([]byte, 0, 2000) + for i := 0; i < oldLength3; i++ { + oldBuffer3 = append(oldBuffer3, bytesWritten[i]) + } + + /////////////////////////////////// + // Capture custom save money events + + var newLength1, newLength2, newLength3 int + isMinimalAllocations = true // use new CustomSaveMoneyEvent1() code, for minimum memory allocations + + // 1st Event is like the first one in Middleware() + CustomSaveMoneyEvent1(ctx, "http request received", + req, 0, 0, + &start, nil) + + newLength1 = len(bytesWritten) + newBuffer1 := make([]byte, 0, 2000) + for i := 0; i < newLength1; i++ { + newBuffer1 = append(newBuffer1, bytesWritten[i]) + } + + // 2nd event is 'similar in length' to one in createReverseProxy() + CustomSaveMoneyEvent2(ctx, "proxying request", INFO, + req2, 0, 0, + "destination", babbageURL, + "proxy_name", "babbage") + + newLength2 = len(bytesWritten) + newBuffer2 := make([]byte, 0, 2000) + for i := 0; i < newLength2; i++ { + newBuffer2 = append(newBuffer2, bytesWritten[i]) + } + + // 3rd Event is like the second one in Middleware() + // NOTE: &start is not passed as part of the savings + CustomSaveMoneyEvent3(ctx, "http request completed", + req2, 200, 4, + nil, &end) + + newLength3 = len(bytesWritten) + newBuffer3 := make([]byte, 0, 2000) + for i := 0; i < newLength3; i++ { + newBuffer3 = append(newBuffer3, bytesWritten[i]) + } + + ///////////////////////////// + // Show what the savings are: + + fmt.Printf("Event 1 : old Length: %d, new Length: %d\n", oldLength1, newLength1) + fmt.Printf("OLD 1:\n%v\n", string(oldBuffer1)) + fmt.Printf("NEW 1:\n%v\n", string(newBuffer1)) + fmt.Printf("Event 2 : old Length: %d, new Length: %d\n", oldLength2, newLength2) + fmt.Printf("OLD 2:\n%v\n", string(oldBuffer2)) + fmt.Printf("NEW 2:\n%v\n", string(newBuffer2)) + fmt.Printf("Event 2 : old Length: %d, new Length: %d\n", oldLength3, newLength3) + fmt.Printf("OLD 3:\n%v\n", string(oldBuffer3)) + fmt.Printf("NEW 3:\n%v\n", string(newBuffer3)) + + oldTotal := oldLength1 + oldLength2 + oldLength3 + newTotal := newLength1 + newLength2 + newLength3 + fmt.Printf("Totals old: %d, new %d\n", oldTotal, newTotal) +} diff --git a/log/e-new-gc10.pdf b/log/e-new-gc10.pdf new file mode 100644 index 0000000..5d55166 Binary files /dev/null and b/log/e-new-gc10.pdf differ diff --git a/log/e-new-gc100.pdf b/log/e-new-gc100.pdf new file mode 100644 index 0000000..226d956 Binary files /dev/null and b/log/e-new-gc100.pdf differ diff --git a/log/e-old-gc10.pdf b/log/e-old-gc10.pdf new file mode 100644 index 0000000..6ea1c29 Binary files /dev/null and b/log/e-old-gc10.pdf differ diff --git a/log/e-old-gc100.pdf b/log/e-old-gc100.pdf new file mode 100644 index 0000000..62b245c Binary files /dev/null and b/log/e-old-gc100.pdf differ diff --git a/log/f-new-gc10.pdf b/log/f-new-gc10.pdf new file mode 100644 index 0000000..2f79c5f Binary files /dev/null and b/log/f-new-gc10.pdf differ diff --git a/log/f-old-gc10.pdf b/log/f-old-gc10.pdf new file mode 100644 index 0000000..fb2e367 Binary files /dev/null and b/log/f-old-gc10.pdf differ diff --git a/log/f-save-gc10.pdf b/log/f-save-gc10.pdf new file mode 100644 index 0000000..4670122 Binary files /dev/null and b/log/f-save-gc10.pdf differ diff --git a/log/f-save-gc40.pdf b/log/f-save-gc40.pdf new file mode 100644 index 0000000..402958a Binary files /dev/null and b/log/f-save-gc40.pdf differ diff --git a/log/less allocations impact on dp-frontend-router.ods b/log/less allocations impact on dp-frontend-router.ods new file mode 100644 index 0000000..768a73a Binary files /dev/null and b/log/less allocations impact on dp-frontend-router.ods differ diff --git a/log/log.go b/log/log.go index 0d2a2b3..3b68746 100644 --- a/log/log.go +++ b/log/log.go @@ -1,6 +1,7 @@ package log import ( + "bytes" "context" "encoding/json" "flag" @@ -25,6 +26,7 @@ var destination io.Writer = os.Stdout var fallbackDestination io.Writer = os.Stderr var isTestMode bool +var isMinimalAllocations bool var eventWithOptionsCheckFunc = &eventFunc{eventWithOptionsCheck} var eventWithoutOptionsCheckFunc = &eventFunc{eventWithoutOptionsCheck} @@ -68,10 +70,166 @@ var styleForMachineFunc = &styleFunc{styleForMachine} // // data.a = 2 // func Event(ctx context.Context, event string, opts ...option) { - eventFuncInst.f(ctx, event, opts...) + if isMinimalAllocations == false { + eventFuncInst.f(ctx, event, opts...) + return + } + + // Minimum Allocations Event code ... + e := EventData2{ + CreatedAt: time.Now().UTC(), + Namespace: Namespace, + Event: event, + } + + if ctx != nil { + e.TraceID = common.GetRequestId(ctx) + } + + // loop around each log option and attach each option + // directly into EventData2 struct + for _, o := range opts { + // Doing typical pattern : `object.attach(thing)` + switch v := o.(type) { + case severity: + e.Severity = &v + case *severity: // added to match o.attach(e) code for completness (may never be used) + e.Severity = v + case Data: + e.Data = &v + case *Data: // added to match o.attach(e) code for completness (may never be used) + e.Data = v + case *EventHTTP: + e.HTTP = v + case *EventError: + e.Error = v + case *eventAuth: + e.Auth = v + default: + fmt.Printf("option: %v, %v, %T", o, v, v) + panic("unknown option") + } + } + + //fmt.Fprintf(destination, "%+v\n", e) + + //var err error = nil + + //err := json.NewEncoder(destination).Encode(e) + + // The following is an 'inline' unrolling of: + // err := json.NewEncoder(destination).Encode(e) + // to eliminate allocations leaking to the HEAP by using a + // sync.Pool bytes.Buffer + + var somethingWritten bool + + buf := eventBufPool.Get().(*bytes.Buffer) // with casting on the end + buf.Reset() // Must reset before each block of usage + + buf.WriteByte('{') + if !e.CreatedAt.IsZero() { + somethingWritten = true + unrollCreatedAt(buf, e.CreatedAt) + } + + if e.Namespace != "" { + if somethingWritten { + buf.WriteByte(',') + } + somethingWritten = true + unrollNamespace(buf, e.Namespace) + } + + if e.Event != "" { + if somethingWritten { + buf.WriteByte(',') + } + somethingWritten = true + unrollEvent(buf, e.Event) + } + + if e.TraceID != "" { + if somethingWritten { + buf.WriteByte(',') + } + somethingWritten = true + unrollTraceID(buf, e.TraceID) + } + + if e.Severity != nil { + if somethingWritten { + buf.WriteByte(',') + } + somethingWritten = true + unrollSeverity(buf, int(*e.Severity)) + } + + if e.HTTP != nil { + if somethingWritten { + buf.WriteByte(',') + } + somethingWritten = true + unrollHTTPToBuf(buf, e.HTTP, true, true, true, true, true, true) + } + + if e.Auth != nil { + unrollAuthToBuf(somethingWritten, buf, e.Auth) + somethingWritten = true + } + + if e.Data != nil { + if somethingWritten { + buf.WriteByte(',') + } + somethingWritten = true + unrollDataToBuf(buf, e.Data) + } + + if e.Error != nil { + if somethingWritten { + buf.WriteByte(',') + } + unrollErrorToBuf(buf, e.Error) + } + + buf.WriteByte('}') + buf.WriteByte(10) + + l := int64(buf.Len()) // cast to same type as returned by WriteTo() + + // try and write to stdout + if n, err := buf.WriteTo(destination); n != l || err != nil { + // if that fails, try and write to stderr + if n, err := buf.WriteTo(fallbackDestination); n != l || err != nil { + // if that fails, panic! + // + // also defer an os.Exit since the panic might be captured in a recover + // block in the caller, but we always want to exit in this scenario + // + // Note: deferring an os.Exit makes this particular block untestable + // using conventional `go test`. But it's a narrow enough edge case that + // it probably isn't worth trying, and only occurs in extreme circumstances + // (os.Stdout and os.Stderr both being closed) where unpredictable + // behaviour is expected. It's not clear what a panic or os.Exit would do + // in this scenario, or if our process is even still alive to get this far. + defer os.Exit(1) + panic("error writing log data: " + err.Error()) + } + } + + eventBufPool.Put(buf) } +// this is called before main() func initEvent() *eventFunc { + if flag.Lookup("minimumAllocs") != nil { + isMinimalAllocations = true + } + if b, _ := strconv.ParseBool(os.Getenv("MINIMUM_ALLOC")); b { + isMinimalAllocations = true + } + // If we're in test mode, replace the Event function with one // that has additional checks to find repeated event option types // @@ -90,6 +248,7 @@ func initEvent() *eventFunc { return eventWithoutOptionsCheckFunc } +// this is called before main() var styler = initStyler() func initStyler() *styleFunc { @@ -145,6 +304,26 @@ type EventData struct { Error *EventError `json:"error,omitempty"` } +// EventData2 - this version of 'EventData' has "SpanID" removed to reduce memory allocation in the HOT-PATH +type EventData2 struct { + // Required fields + CreatedAt time.Time `json:"created_at"` + Namespace string `json:"namespace"` + Event string `json:"event"` + + // Optional fields + TraceID string `json:"trace_id,omitempty"` + Severity *severity `json:"severity,omitempty"` + + // Optional nested data + HTTP *EventHTTP `json:"http,omitempty"` + Auth *eventAuth `json:"auth,omitempty"` + Data *Data `json:"data,omitempty"` + + // Error data + Error *EventError `json:"error,omitempty"` +} + // eventWithOptionsCheck is the event function used when running tests, and // will panic if the same log option is passed in multiple times // @@ -153,6 +332,10 @@ func eventWithOptionsCheck(ctx context.Context, event string, opts ...option) { var optMap = make(map[string]struct{}) for _, o := range opts { t := reflect.TypeOf(o) + if t.Kind() == reflect.Ptr { // this needed to test calls from Event() + t = t.Elem() + } + p := fmt.Sprintf("%s.%s", t.PkgPath(), t.Name()) if _, ok := optMap[p]; ok { panic("can't pass in the same parameter type multiple times: " + p) @@ -239,6 +422,7 @@ func print(b []byte) { return } + // b = append(b, 55) // used to break test, just to check that test is working // try and write to stdout if n, err := fmt.Fprintln(destination, string(b)); n != len(b)+1 || err != nil { // if that fails, try and write to stderr diff --git a/log/log_line_length_Optimization-2.odt b/log/log_line_length_Optimization-2.odt new file mode 100644 index 0000000..2362cee Binary files /dev/null and b/log/log_line_length_Optimization-2.odt differ diff --git a/log/log_test.go b/log/log_test.go index 3be3591..685ab40 100644 --- a/log/log_test.go +++ b/log/log_test.go @@ -26,6 +26,11 @@ func (w writer) Write(b []byte) (n int, err error) { } func TestLog(t *testing.T) { + oldEventFuncInst := eventFuncInst + defer func() { + eventFuncInst = oldEventFuncInst // this needed for other test functions + }() + Convey("Package defaults are right", t, func() { Convey("Namespace defaults to os.Args[0]", func() { So(Namespace, ShouldEqual, os.Args[0]) @@ -334,9 +339,11 @@ func TestLog(t *testing.T) { Convey("eventWithoutOptionsCheck calls print with the output of the selected styler", t, func() { oldDestination := destination + oldStyler := styler defer func() { destination = oldDestination + styler = oldStyler }() styler = &struct { diff --git a/log/memory-allocations.txt b/log/memory-allocations.txt new file mode 100644 index 0000000..e2e30fa --- /dev/null +++ b/log/memory-allocations.txt @@ -0,0 +1,844 @@ +12th July 2020 + +1. + +Re-introduced BenchmarkLog as BenchmarkLog1() and improved it to have the trace_id + +Output of one benchmark loop iteration is: + +With all fields filled: (1027 chars) + +{"created_at":"2020-07-12T14:17:08.326636414Z","namespace":"/tmp/go-build355120080/b001/log.test","event":"Benchmark test","trace_id":"CkeeltJJFsQYykrr","severity":3,"http":{"status_code":0,"method":"GET","scheme":"ttp","host":"localhost","port":20000,"path":"/embed/visualisations/peoplepopulationandcommunity/populationandmigration/internationalmigration/qmis/shortterminternationalmigrationestimatesforlocalauthoritiesqmi"},"auth":{"identity":"tester-1","identity_type":"user"},"data":{"data_1":"d1","data_2":"d2","data_3":"d3","data_4":"d4"},"error":{"error":"test error","stack_trace":[{"file":"/home/rhys/gobook/src/github.com/ONSdigital/log.go/log/log_test.go","line":414,"function":"github.com/ONSdigital/log.go/log.BenchmarkLog1"},{"file":"/usr/local/go/src/testing/benchmark.go","line":191,"function":"testing.(*B).runN"},{"file":"/usr/local/go/src/testing/benchmark.go","line":321,"function":"testing.(*B).launch"},{"file":"/usr/local/go/src/runtime/asm_amd64.s","line":1373,"function":"runtime.goexit"}],"data":{}}} + + +Without Error: (546 chars) + +{"created_at":"2020-07-12T14:20:42.051331146Z","namespace":"/tmp/go-build468832792/b001/log.test","event":"Benchmark test","trace_id":"CkeeltJJFsQYykrr","severity":3,"http":{"status_code":0,"method":"GET","scheme":"ttp","host":"localhost","port":20000,"path":"/embed/visualisations/peoplepopulationandcommunity/populationandmigration/internationalmigration/qmis/shortterminternationalmigrationestimatesforlocalauthoritiesqmi"},"auth":{"identity":"tester-1","identity_type":"user"},"data":{"data_1":"d1","data_2":"d2","data_3":"d3","data_4":"d4"}} + +-=- + +Run the benchmark in a terminal with: + + go test -run=log_test.go -bench=Log1 -memprofile=mem0.out + +produces an output of: + + 12724 103233 ns/op 4547 B/op 38 allocs/op + +to look into the result file: + + go tool pprof --alloc_space log.test mem0.out + +enter command: + + top30 + +produces: + +Showing nodes accounting for 90.56MB, 100% of 90.56MB total + flat flat% sum% cum cum% + 23.03MB 25.43% 25.43% 31.53MB 34.81% encoding/json.Marshal + 23.03MB 25.43% 50.85% 23.03MB 25.43% github.com/ONSdigital/log.go/log.print + 15.50MB 17.12% 67.97% 15.50MB 17.12% github.com/ONSdigital/log.go/log.Error + 10.50MB 11.60% 79.57% 90.56MB 100% github.com/ONSdigital/log.go/log.BenchmarkLog1 + 4MB 4.42% 83.99% 4MB 4.42% github.com/ONSdigital/log.go/log.createEvent + 3MB 3.31% 87.30% 3MB 3.31% github.com/ONSdigital/log.go/log.HTTP + 3MB 3.31% 90.61% 3MB 3.31% reflect.mapiterinit + 2.50MB 2.76% 93.37% 34.03MB 37.57% github.com/ONSdigital/log.go/log.styleForMachine + 2MB 2.21% 95.58% 8.50MB 9.39% encoding/json.mapEncoder.encode + 1.50MB 1.66% 97.24% 5.50MB 6.07% reflect.Value.MapKeys + 1MB 1.10% 98.34% 1MB 1.10% internal/reflectlite.Swapper + 1MB 1.10% 99.45% 1MB 1.10% reflect.copyVal + 0.50MB 0.55% 100% 0.50MB 0.55% github.com/ONSdigital/log.go/log.Auth (inline) + 0 0% 100% 8.50MB 9.39% encoding/json.(*encodeState).marshal + 0 0% 100% 8.50MB 9.39% encoding/json.(*encodeState).reflectValue + 0 0% 100% 8.50MB 9.39% encoding/json.ptrEncoder.encode + 0 0% 100% 8.50MB 9.39% encoding/json.structEncoder.encode + 0 0% 100% 61.05MB 67.42% github.com/ONSdigital/log.go/log.Event (inline) + 0 0% 100% 61.05MB 67.42% github.com/ONSdigital/log.go/log.eventWithoutOptionsCheck + 0 0% 100% 1MB 1.10% sort.Slice + 0 0% 100% 90.56MB 100% testing.(*B).launch + 0 0% 100% 90.56MB 100% testing.(*B).runN +(pprof) + +-=- + +To get out of pprof, type: + + exit + +-=-=- + +13th July 2020 + +Improving memory allocation doing direct io.Write() to save the memory allocated in converting from a []byte to string. + +In log.go print() has a little re-write and it has been tested with the tests and a new Benchmark : BenchmarkLog4 in log_test.go + +BenchmarkLog4 creates 3 Events that are very similar to the ones that are on the HOT PATH for every request that +dp-frontend-router receives. +The length of the request URL has been chossen for its maximum length as found in the cfg for dp-frontend-router. + +For ALL 3 events - BenchmarkLog4: + + with original code shows (approx'): 5771 bytes allocated over 45 allocations + + with new code shows (approx'): (4021 to 4055) bytes allocated over 39 allocations + +Thats a saving of just over 29% in memory allocated which is a nice reduction in pressure on the garbage collector +over 1000's of requests per second. + +-=-=- + +Had to tweak the TestLog() to cope with the way carriage return is added to the result of Marshal. + +-=-=- + +In all of the ONS repo's the log EventData field : SpanID is not used, so removing this and further adjusting the TestLog() +reduced the number of bytes allocated to : (3926 to 3957) over 39 allocations. Almost another 100 bytes ... +probably due to the size of the allocation falling below some number that is a power of 2 + +This increases the saving to approx': 31% + +The output from one iteration of BenchmarkLog4() for this change is: + +{"created_at":"2020-07-13T16:57:02.625278996Z","namespace":"/tmp/go-build936354334/b001/log.test","event":"http request received","trace_id":"CkeeltJJFsQYykrr","http":{"status_code":0,"method":"GET","scheme":"ttp","host":"localhost","port":20000,"path":"/embed/visualisations/peoplepopulationandcommunity/populationandmigration/internationalmigration/qmis/shortterminternationalmigrationestimatesforlocalauthoritiesqmi","started_at":"2020-07-13T16:57:01.346817962Z"}} +{"created_at":"2020-07-13T16:57:02.625296777Z","namespace":"/tmp/go-build936354334/b001/log.test","event":"proxying request","trace_id":"CkeeltJJFsQYykrr","severity":3,"http":{"status_code":0,"method":"GET","scheme":"ttp","host":"localhost","port":20000,"path":"/embed/visualisations/peoplepopulationandcommunity/populationandmigration/internationalmigration/qmis/shortterminternationalmigrationestimatesforlocalauthoritiesqmi"},"data":{"destination":{"Scheme":"http","Opaque":"","User":null,"Host":"localhost:8080","Path":"","RawPath":"","ForceQuery":false,"RawQuery":"","Fragment":""},"proxy_name":"babbage"}} +{"created_at":"2020-07-13T16:57:02.625320366Z","namespace":"/tmp/go-build936354334/b001/log.test","event":"http request completed","http":{"status_code":200,"method":"GET","scheme":"ttp","host":"localhost","port":20000,"path":"/embed/visualisations/peoplepopulationandcommunity/populationandmigration/internationalmigration/qmis/shortterminternationalmigrationestimatesforlocalauthoritiesqmi","started_at":"2020-07-13T16:57:01.346817962Z","ended_at":"2020-07-13T16:57:01.346818943Z","duration":981,"response_content_length":4}} + +-=-=- + +Temporarily changing : styleForMachine() to: + +func styleForMachine(ctx context.Context, e EventData, ef eventFunc) []byte { + err := json.NewEncoder(destination).Encode(e) + + var b []byte = []byte{0} // /this line, just to get code to compile + + return handleStyleError(ctx, e, ef, b, err) +} + +and commenting out the code in the print() function ... + +to directly encode to the output, reduces the bytes allocated to: + + 2251 + +which saves another ~ : 1675 bytes which as a total percentage saving from the starting point is + +2251 / 5771 = 0.39% which is a saving of 61% ... thats looking very good. + +The memory saving is achieved by virtue of the way "json.Marshal()" works internally ... it returns its result by copying +the marshal'd result from its internal sync.Pool into a newly allocated return array. +Using the json.NewEncoder() does not do this allocation for the returned array (because there isn't one). + +This temporary change does break a lot of the tests. They would need re-writting, together with other parts of the code +to utilise this optimisation. + +The output from one iteration of BenchmarkLog4() for this change is: + +{"created_at":"2020-07-13T16:54:23.169678416Z","namespace":"/home/rhys/gobook/src/github.com/ONSdigital/log.go/log/log.test","event":"http request received","trace_id":"CkeeltJJFsQYykrr","http":{"status_code":0,"method":"GET","scheme":"ttp","host":"localhost","port":20000,"path":"/embed/visualisations/peoplepopulationandcommunity/populationandmigration/internationalmigration/qmis/shortterminternationalmigrationestimatesforlocalauthoritiesqmi","started_at":"2020-07-13T16:54:22.042497738Z"}} +{"created_at":"2020-07-13T16:54:23.169695818Z","namespace":"/home/rhys/gobook/src/github.com/ONSdigital/log.go/log/log.test","event":"proxying request","trace_id":"CkeeltJJFsQYykrr","severity":3,"http":{"status_code":0,"method":"GET","scheme":"ttp","host":"localhost","port":20000,"path":"/embed/visualisations/peoplepopulationandcommunity/populationandmigration/internationalmigration/qmis/shortterminternationalmigrationestimatesforlocalauthoritiesqmi"},"data":{"destination":{"Scheme":"http","Opaque":"","User":null,"Host":"localhost:8080","Path":"","RawPath":"","ForceQuery":false,"RawQuery":"","Fragment":""},"proxy_name":"babbage"}} +{"created_at":"2020-07-13T16:54:23.169717016Z","namespace":"/home/rhys/gobook/src/github.com/ONSdigital/log.go/log/log.test","event":"http request completed","http":{"status_code":200,"method":"GET","scheme":"ttp","host":"localhost","port":20000,"path":"/embed/visualisations/peoplepopulationandcommunity/populationandmigration/internationalmigration/qmis/shortterminternationalmigrationestimatesforlocalauthoritiesqmi","started_at":"2020-07-13T16:54:22.042497738Z","ended_at":"2020-07-13T16:54:22.042498136Z","duration":398,"response_content_length":4}} + + +In the above, the namespace has changed (not sure why) ... hmmm + +-=-=- + +To further optimise the code with a view to achieving ZERO allocations, a MAJOR rewrite of the log.go function Event() +would be needed. + +To achieve this, 'escape analysis' is needed to see what allocations escape to the HEAP. + +Within the log folder, use the following to get a list of the lines that need considering: + + go build -gcflags='-m -m' log.go severity.go data.go error.go auth.go http.go + +which produces over 400 lines of 'challenging' output ... + +Game on ... + +-=-=- + +14th July 2020 + +Stage 1: + +The previous temporary changes have been cleaned out. + +To implement first part of optimisation a new feature flag has been added to make testing and benchmarking easy. +For production code this could be changed to an environment variable. + +The flag is called "minimumAllocs". + +When this flag is used, the function Event() in log.go uses inlined code. + +BenchmarkLog4() runs the new code, with command: go test -run=log_test.go -bench=Log4 -memprofile=mem0.out + +BenchmarkLog5() runs the original code, with command: go test -run=log_test.go -bench=Log5 -memprofile=mem0.out + +The outputs look nominally the same apart from the time stamp. + +The new code allocates 1889 bytes over 33 allocations in 1.572 seconds. + +The original code allocates 5578 bytes over 45 allocations in 1.659 seconds + +1889 / 5578 = 0.34% which is a saving of 66% ... and the new code generates (when adjusted for time) almost 50% more events. + +BenchmarkLog1() is to test all events with original code. + +BenchmarkLog6() is to test all events with new code. + +-=-=- + +To run the tests: + +go test -count=1 ./... + +where the "-count=1" is to avoid cached tests + +-=-=- + +15th July 2020 + +Stage 2: + +Escape Analysis shows that the EventHTTP struct escapes to the HEAP by virtue to the fact that it gets filled with pointers +to information that is elsewhere on the HEAP. +And similarly for the eventAuth and EventError struct's. + +The log.go package is easy to use, which is a strength, but with a hidden weakness ... how much memory allocations it puts +to the HEAP. + +Overcoming these would only be warranted if there is a need for a high performance dp-frontend-router. + +One way then of overcoming these 'SPECIFICALLY' for dp-frontend-router is to to have a new log package where one splits +out the 3 Event() functions into a sequence of calls to 'helper' functions that write into a sync.Pool of byte.Buffer +and this is then written to the destination channel in one io.Write action. + +This sequence of new functions would replace the specific 3 calls the the Event() function in dp-frontend-router. + +This would end up looking something similar to zerolog, but tailored to maintain an output format that matches the +existing log.go + +-=-=- + +Doing: + go test -run=log_test.go -bench=Log4 -memprofile=mem0.out + +and then: + go tool pprof --alloc_space log.test mem0.out + +and then entering: + top30 + +gives: + +Showing nodes accounting for 17410.12kB, 100% of 17410.12kB total + flat flat% sum% cum cum% + 5120.57kB 29.41% 29.41% 5120.57kB 29.41% github.com/ONSdigital/log.go/log.HTTP + 3072.84kB 17.65% 47.06% 17410.12kB 100% github.com/ONSdigital/log.go/log.BenchmarkLog4 + 3072.33kB 17.65% 64.71% 9216.71kB 52.94% github.com/ONSdigital/log.go/log.Event + 2048.09kB 11.76% 76.47% 2048.09kB 11.76% time.Time.MarshalJSON + 1536.14kB 8.82% 85.30% 1536.14kB 8.82% reflect.mapiterinit + 1024.08kB 5.88% 91.18% 4096.29kB 23.53% encoding/json.mapEncoder.encode + 1024.05kB 5.88% 97.06% 2560.19kB 14.71% reflect.Value.MapKeys + 512.02kB 2.94% 100% 512.02kB 2.94% internal/reflectlite.Swapper + 0 0% 100% 6144.38kB 35.29% encoding/json.(*Encoder).Encode + 0 0% 100% 6144.38kB 35.29% encoding/json.(*encodeState).marshal + 0 0% 100% 6144.38kB 35.29% encoding/json.(*encodeState).reflectValue + 0 0% 100% 1024.05kB 5.88% encoding/json.condAddrEncoder.encode + 0 0% 100% 2048.09kB 11.76% encoding/json.marshalerEncoder + 0 0% 100% 5120.34kB 29.41% encoding/json.ptrEncoder.encode + 0 0% 100% 6144.38kB 35.29% encoding/json.structEncoder.encode + 0 0% 100% 512.02kB 2.94% sort.Slice + 0 0% 100% 17410.12kB 100% testing.(*B).launch + 0 0% 100% 17410.12kB 100% testing.(*B).runN + +-=-=- + +The above shows that the encoding seems to be leaking a lot ... hmmm + +With the line: + + err := json.NewEncoder(destination).Encode(e) + +in the code, the bytes allocated is ~= 1890 for the 3 events. + +if this line is replaced with: + + var err error = nil + +the bytes allocated comes down to ~= 848 for the 3 events. + +So, the encoding i putting onto the HEAP ~= 1890 - 848 ~= 1042 bytes + +-=-=- + +Replacing the Encode(e) with a simple print: + + fmt.Fprintf(destination, "%+v\n", e) + +the bytes allocated is ~= 1544 + +and the output becomes: + +{CreatedAt:2020-07-15 15:02:31.445058464 +0000 UTC Namespace:BenchmarkLog Event:http request received TraceID:CkeeltJJFsQYykrr Severity: HTTP:0xc000369900 Auth: Data: Error:} +{CreatedAt:2020-07-15 15:02:31.445066127 +0000 UTC Namespace:BenchmarkLog Event:proxying request TraceID:CkeeltJJFsQYykrr Severity:0xc000370658 HTTP:0xc000369980 Auth: Data:0xc00019b748 Error:} +{CreatedAt:2020-07-15 15:02:31.445072792 +0000 UTC Namespace:BenchmarkLog Event:http request completed TraceID: Severity: HTTP:0xc000369a00 Auth: Data: Error:} + +As comparred to the Encode'd output of: + +{"created_at":"2020-07-15T15:07:46.505143999Z","namespace":"BenchmarkLog","event":"http request received","trace_id":"WtxsVMtiiEXEBxDQ","http":{"status_code":0,"method":"GET","scheme":"ttp","host":"localhost","port":20000,"path":"/embed/visualisations/peoplepopulationandcommunity/populationandmigration/internationalmigration/qmis/shortterminternationalmigrationestimatesforlocalauthoritiesqmi","started_at":"2020-07-15T15:07:45.306035434Z"}} +{"created_at":"2020-07-15T15:07:46.505155952Z","namespace":"BenchmarkLog","event":"proxying request","trace_id":"WtxsVMtiiEXEBxDQ","severity":3,"http":{"status_code":0,"method":"GET","scheme":"ttp","host":"localhost","port":20000,"path":"/embed/visualisations/peoplepopulationandcommunity/populationandmigration/internationalmigration/qmis/shortterminternationalmigrationestimatesforlocalauthoritiesqmi"},"data":{"destination":{"Scheme":"http","Opaque":"","User":null,"Host":"localhost:8080","Path":"","RawPath":"","ForceQuery":false,"RawQuery":"","Fragment":""},"proxy_name":"babbage"}} +{"created_at":"2020-07-15T15:07:46.505170204Z","namespace":"BenchmarkLog","event":"http request completed","http":{"status_code":200,"method":"GET","scheme":"ttp","host":"localhost","port":20000,"path":"/embed/visualisations/peoplepopulationandcommunity/populationandmigration/internationalmigration/qmis/shortterminternationalmigrationestimatesforlocalauthoritiesqmi","started_at":"2020-07-15T15:07:45.306035434Z","ended_at":"2020-07-15T15:07:45.30603599Z","duration":556,"response_content_length":4}} + +-=-=- + +As we know what is in all of the struct's, we could pick the items out in a specific order to ALWAYS get the same order as +comparred to what the json package might do (according to some comments in the existing log.go package). + +We would thus inline the 'Encode' function with the advantage of not having to do any 'reflection' to determine the data types. + +-=-=- + +Inline expansion started (more to do). + +Memory allocations on HEAP now down to 1412 over 27 allocations. + +Still using BenchmarkLog4(): + +1412 / 5578 = 0.25% which is a saving of 75% + +The pprof top30 is: + +Showing nodes accounting for 15361.66kB, 100% of 15361.66kB total + flat flat% sum% cum cum% + 4608.91kB 30.00% 30.00% 15361.66kB 100% github.com/ONSdigital/log.go/log.BenchmarkLog4 + 3584.27kB 23.33% 53.34% 3584.27kB 23.33% github.com/ONSdigital/log.go/log.HTTP + 2560.20kB 16.67% 70.00% 5632.41kB 36.67% encoding/json.mapEncoder.encode + 1536.14kB 10.00% 80.00% 1536.14kB 10.00% reflect.mapiterinit + 1536.07kB 10.00% 90.00% 1536.07kB 10.00% time.Time.MarshalJSON + 1024.05kB 6.67% 96.67% 1024.05kB 6.67% internal/reflectlite.Swapper + 512.02kB 3.33% 100% 2048.16kB 13.33% reflect.Value.MapKeys + 0 0% 100% 7168.48kB 46.66% encoding/json.(*Encoder).Encode + 0 0% 100% 7168.48kB 46.66% encoding/json.(*encodeState).marshal + 0 0% 100% 7168.48kB 46.66% encoding/json.(*encodeState).reflectValue + 0 0% 100% 1536.07kB 10.00% encoding/json.marshalerEncoder + 0 0% 100% 7168.48kB 46.66% encoding/json.ptrEncoder.encode + 0 0% 100% 1536.07kB 10.00% encoding/json.structEncoder.encode + 0 0% 100% 7168.48kB 46.66% github.com/ONSdigital/log.go/log.Event + 0 0% 100% 5632.41kB 36.67% github.com/ONSdigital/log.go/log.expandDataToBuf (inline) + 0 0% 100% 1536.07kB 10.00% github.com/ONSdigital/log.go/log.expandHTTPToBuf (inline) + 0 0% 100% 1024.05kB 6.67% sort.Slice + 0 0% 100% 15361.66kB 100% testing.(*B).launch + 0 0% 100% 15361.66kB 100% testing.(*B).runN + +-=-=- + +16th July 2020 + +Stage 3: + +Inline expansion, of function: expandDataToBuf() + +Memory allocations on HEAP now down to 994 over 17 allocations. + +Still using BenchmarkLog4(): + +994 / 5578 = 0.18% which is a saving of 82% + +The pprof top30 is: + +Showing nodes accounting for 7MB, 100% of 7MB total + flat flat% sum% cum cum% + 4.50MB 64.28% 64.28% 4.50MB 64.28% github.com/ONSdigital/log.go/log.HTTP + 2.50MB 35.72% 100% 7MB 100% github.com/ONSdigital/log.go/log.BenchmarkLog4 + 0 0% 100% 7MB 100% testing.(*B).launch + 0 0% 100% 7MB 100% testing.(*B).runN + +That's a big change. + +(more to do) + +-=-=- + +Stage 4: + +Inline expansion, of function: expandHTTPToBuf() + +Memory allocations on HEAP now down to 881 over 19 allocations. + +Still using BenchmarkLog4(): + +881 / 5578 = 0.16% which is a saving of 84% + +The pprof top30 is: + +Showing nodes accounting for 2560.62kB, 100% of 2560.62kB total + flat flat% sum% cum cum% + 2048.56kB 80.00% 80.00% 2560.62kB 100% github.com/ONSdigital/log.go/log.BenchmarkLog4 + 512.06kB 20.00% 100% 512.06kB 20.00% github.com/ONSdigital/log.go/log.HTTP + 0 0% 100% 2560.62kB 100% testing.(*B).launch + 0 0% 100% 2560.62kB 100% testing.(*B).runN + +(more to do) + +-=-=- + +17th July 2020 + +Stage 5: + +Add and use optimized conversion functions. + +Memory allocations on HEAP now down to 850 over 14 allocations. + +Still using BenchmarkLog4(): + +850 / 5578 = 0.15% which is a saving of 85% + +The pprof top30 is: + +Showing nodes accounting for 9729.41kB, 100% of 9729.41kB total + flat flat% sum% cum cum% + 5632.96kB 57.90% 57.90% 9729.41kB 100% github.com/ONSdigital/log.go/log.BenchmarkLog4 + 3584.44kB 36.84% 94.74% 3584.44kB 36.84% github.com/ONSdigital/log.go/log.HTTP + 512.01kB 5.26% 100% 512.01kB 5.26% sync.(*Map).LoadOrStore + 0 0% 100% 512.01kB 5.26% encoding/json.(*Encoder).Encode + 0 0% 100% 512.01kB 5.26% encoding/json.(*encodeState).marshal + 0 0% 100% 512.01kB 5.26% encoding/json.(*encodeState).reflectValue + 0 0% 100% 512.01kB 5.26% encoding/json.typeEncoder + 0 0% 100% 512.01kB 5.26% encoding/json.valueEncoder + 0 0% 100% 512.01kB 5.26% github.com/ONSdigital/log.go/log.Event + 0 0% 100% 512.01kB 5.26% github.com/ONSdigital/log.go/log.expandDataToBuf + 0 0% 100% 9217.40kB 94.74% testing.(*B).launch + 0 0% 100% 512.01kB 5.26% testing.(*B).run1.func1 + 0 0% 100% 9729.41kB 100% testing.(*B).runN + +-=-=- + +*** However, after noticing i was missing the "query" field that gets added in the depths of the + reverse proxying and adding it ... + +Re-running BenchmarkLog5() ... which uses the original Event() code path ... + + the Total bytes allocated for the 3 events is 6866 over 45 allocations. + +So, the savings figures change to: + +850 / 6866 = 0.124% which is a saving of 87.6% (thats ~ 6016 bytes saved per request). + +-=-=- + +Stage 6: + +To achieve any further optimisations, things now get messy ... + +The log.go makes passing the info to be logged very easy, neat and clean which is good and optimising any further +risks making easy mistakes in initialising the data to be logged and makes the code less easy to maintain. + +So it is probably best to stop at Stage 5 and use the code there. + +That said, the following is done just to show the things that can be done to further reduce allocations on the HEAP: + +BenchmarkLog7() added which inlines the EventHTTP struct onto the stack of BenchmarkLog7() + +BenchmarkLog7() was derived from BenchmarkLog4() and produces the same output, demonstrating that the structures +are being initialised and adjusted correctly for each of the three Event()'s that are logged. + +So if there is ever a need to apply what is done for the savings that these create, hopefully copying the specifics +of what is done into log's middleware.go and the reverse proxy code in dp-frontend-router ... +the structures will stay on the stack and not LEAK to the HEAP. + +You would have to run your own Benchmarking of the changes to verify that there is a benefit. + +The results for Benchmark7() are: + +Memory allocations on HEAP now down to 577 over 10 allocations. + +577 / 6866 = 0.084% which is a saving of 91.6% + +The pprof top30 is: + +Showing nodes accounting for 7MB, 100% of 7MB total + flat flat% sum% cum cum% + 7MB 100% 100% 7MB 100% github.com/ONSdigital/log.go/log.BenchmarkLog7 + 0 0% 100% 7MB 100% testing.(*B).launch + 0 0% 100% 7MB 100% testing.(*B).runN + +-=-=- + +In pprov, entering: list BenchmarkLog7 produces: + + 5.50MB 5.50MB (flat, cum) 100% of Total + . . 696: var duration *time.Duration + . . 697: + . . 698: // inline the the setting up of the "EventHTTP" to save doing the HTTP(...) + . . 699: // thing as this escapes to the heap, whereas doing the following stays within + . . 700: // the stack of this calling function. + 512.06kB 512.06kB 701: e := EventHTTP{ + . . 702: StatusCode: &statusCode, + . . 703: Method: req.Method, + . . 704: + . . 705: Scheme: req.URL.Scheme, + . . 706: Host: req.URL.Hostname(), + . . 707: Port: port, + . . 708: Path: req.URL.Path, + . . 709: Query: req.URL.RawQuery, + . . 710: + . . 711: StartedAt: &start, + . . 712: EndedAt: nil, + . . 713: Duration: duration, + . . 714: ResponseContentLength: 0, + . . 715: } + . . 716: + . . 717: //Event(ctx, "http request received", HTTP(req, 0, 0, &start, nil)) + . . 718: Event(ctx, "http request received", &e) + . . 719: + . . 720: port = 0 + . . 721: if p := req2.URL.Port(); len(p) > 0 { + . . 722: port, _ = strconv.Atoi(p) + . . 723: } + . . 724: + . . 725: e.Method = req2.Method + . . 726: e.Scheme = req2.URL.Scheme + . . 727: e.Host = req2.URL.Hostname() + . . 728: e.Port = port + . . 729: e.Path = req2.URL.Path + . . 730: e.Query = req2.URL.RawQuery + . . 731: e.StartedAt = nil + . . 732: + . . 733: // 2nd event is 'similar in length' to one in createReverseProxy() + . . 734: // Event(ctx, "proxying request", INFO, HTTP(req2, 0, 0, nil, nil), + 512.02kB 512.02kB 735: Event(ctx, "proxying request", INFO, &e, + 4.50MB 4.50MB 736: Data{"destination": babbageURL, + . . 737: "proxy_name": "babbage"}) + . . 738: + . . 739: port = 0 + . . 740: if p := req2.URL.Port(); len(p) > 0 { + . . 741: port, _ = strconv.Atoi(p) + +-=-=- + +And the above shows that on line 736 the initialising of Data{...} is leaking to the stack ... if it could be eliminated +or done in a way such that one only extracts just what is needed from 'babbageURL' then more savings could be found. + +Just commenting out the Data{...} and babbageURL items gets the saving to: + +216 bytes allocated over 7 allocations. + +pushing the percentage saved up to : 96.8% + +but the EventHTTP struct is still leaking to the stack. + +So, to have any chance of getting from Stage 5's 87.6% savings to 100% saving in allocations for the 3 events on the HOT-PATH +for dp-frontend-router ... some new custom Event() functions would be needed that are implemented using sync.Pool +These functions would then take all the individual parameters needed and not any struct's that leak to the heap. +And hopefully none of the parameters passed leak to the heap. + +-=-=- + +18th July 2020 + +Stage 7: + +Analysis of effect of Stage 5 code which has 87.6% savings on memory allocations for the 3 events on the HOT-PATH +in dp-frontend-router. +(Actual code used has a bug fix and new code to read environment variable 'MINIMUM_ALLOC'). + +Test dp-front-endrouter with new log.go with race detector with: + + export MINIMUM_ALLOC=1 [ to use new log.go code ] + + go build -race main.go + +end run it with : + ./main + +and stress testing it with autocannon, by running: + + ./autocannon --pipelining=1000 --connections=1000 --duration=30 --uri=http://localhost:20000/embed/visualisations/peoplepopulationandcommunity/populationandmigration/internationalmigration/qmis/shortterminternationalmigrationestimatesforlocalauthoritiesqmi + +and having babbage_nano running (a mock). + +No race problems found. + +-=-=- + +Without race detecotor in effect and running built versions of dp-frontend-router, autocannon and babbage_nano +TEN runs of each of the following configurations were run and the total number of completed requests recorded in +file: less allocations impact on dp-frontend-router.ods + +The output from dp-frontend-router was processed to generate a number of PDF plots. + + requests per new gain over old +config 1: result plot second % more requests Average mem allocated +old log.go, garbage collection @10 e-old-gc10.pdf 12.5K ~ 20 Mega Bytes + +config 2: +old log.go, garbage collection @100 e-old-gc100.pdf 15.2K ~ 28 Mega Bytes + +config 3: +New log.go, garbage collection @10 e-new-gc10.pdf 14.1K 12.4% ~ 20 Mega Bytes + +config 4: +New log.go, garbage collection @100 e-new-gc100.pdf 16.3K 7.1% ~ 27 Mega Bytes + + +Observations: +============= +1. Running the Garbage collector at 10 has a big impact on the average memory allocated. + +2. The new log code with less allocations runs faster allowing more requests per second and when the Garbage Collector + is at 10, the new log code has only slightly less requests per second (on this test setup) than the original + unmodified code, but brings the average memory allocated down by about 8 Mega Bytes and this could be of great help. + +3. The default "ulimit of 1024" on my Ubuntu 18.04LTS is clamping the maximum number of go routines that are active to + what looks like 1017 (that are servicing connections). + (I'm using a modified version of serve'go to count the number of go routines active - no limit clamping is being done). + +Action: +======= +1. Has anyone logged into the container that is running dp-frontend-router and checked what 'ulimit -n' is ??? + (if it is more than 1024, then that will allow more server connections to be established and more memory allocated ...). + +-=-=- + +19th July 2020 + +Stage 8: + +Add Test function : TestLogNew1() + +run it with: + + go test -v -run TestLogNew1 + +This showed some differences when visually inspecting the output of this test. + +These are new fixed. + +The library routine that prints the time does not output trailing zero's, so new log code adjusted to do the same. + +There is more work todo inside this function to programmatically compare the old events against the new ones. + +The changes now show that the original three events allocates ~6995 bytes and the new is ~850 + +so the actual savings are now: + +850 / 6995 = 0.122% which is a saving of 87.8% + +-=-=- + +20th July 2020 + +Fix bug in log.go and fix some mistakes in test code. + +Temporary debug print from : TestLogNew1() (where just the time stamps are different) + +BUT, in this example OLD 2 and NEW 2 have the data for 'proxy_name' and 'destination' swapped. + +(which won't help in writting comparison code). + +-=-=- +Testing: 'New Log 1' +Captured Event OLD 1: +{"created_at":"2020-07-20T10:47:45.642782503Z","namespace":"BenchmarkLog","event":"http request received","trace_id":"LZEMktPSfWETgvVt","http":{"status_code":0,"method":"GET","scheme":"http","host":"localhost","port":20000,"path":"/embed/visualisations/peoplepopulationandcommunity/populationandmigration/internationalmigration/qmis/shortterminternationalmigrationestimatesforlocalauthoritiesqmi","started_at":"2020-07-20T10:47:45.642777528Z"}} +Captured Event OLD 2: +{"created_at":"2020-07-20T10:47:45.643210833Z","namespace":"BenchmarkLog","event":"proxying request","trace_id":"LZEMktPSfWETgvVt","severity":3,"http":{"status_code":0,"method":"GET","scheme":"http","host":"localhost","port":20000,"path":"/embed/visualisations/peoplepopulationandcommunity/populationandmigration/internationalmigration/qmis/shortterminternationalmigrationestimatesforlocalauthoritiesqmi","query":"%3Auri=embed%2Fvisualisations%2Fpeoplepopulationandcommunity%2Fpopulationandmigration%2Finternationalmigration%2Fqmis%2Fshortterminternationalmigrationestimatesforlocalauthoritiesqmi"},"data":{"destination":{"Scheme":"http","Opaque":"","User":null,"Host":"localhost:8080","Path":"","RawPath":"","ForceQuery":false,"RawQuery":"","Fragment":""},"proxy_name":"babbage"}} +Captured Event OLD 3: +{"created_at":"2020-07-20T10:47:45.643319905Z","namespace":"BenchmarkLog","event":"http request completed","trace_id":"LZEMktPSfWETgvVt","http":{"status_code":200,"method":"GET","scheme":"http","host":"localhost","port":20000,"path":"/embed/visualisations/peoplepopulationandcommunity/populationandmigration/internationalmigration/qmis/shortterminternationalmigrationestimatesforlocalauthoritiesqmi","query":"%3Auri=embed%2Fvisualisations%2Fpeoplepopulationandcommunity%2Fpopulationandmigration%2Finternationalmigration%2Fqmis%2Fshortterminternationalmigrationestimatesforlocalauthoritiesqmi","started_at":"2020-07-20T10:47:45.642777528Z","ended_at":"2020-07-20T10:47:45.642777823Z","duration":295,"response_content_length":4}} +Captured Event NEW 1: +{"created_at":"2020-07-20T10:47:45.643355175Z","namespace":"BenchmarkLog","event":"http request received","trace_id":"LZEMktPSfWETgvVt","http":{"status_code":0,"method":"GET","scheme":"http","host":"localhost","port":20000,"path":"/embed/visualisations/peoplepopulationandcommunity/populationandmigration/internationalmigration/qmis/shortterminternationalmigrationestimatesforlocalauthoritiesqmi","started_at":"2020-07-20T10:47:45.642777528Z"}} +Captured Event NEW 2: +{"created_at":"2020-07-20T10:47:45.643387638Z","namespace":"BenchmarkLog","event":"proxying request","trace_id":"LZEMktPSfWETgvVt","severity":3,"http":{"status_code":0,"method":"GET","scheme":"http","host":"localhost","port":20000,"path":"/embed/visualisations/peoplepopulationandcommunity/populationandmigration/internationalmigration/qmis/shortterminternationalmigrationestimatesforlocalauthoritiesqmi","query":"%3Auri=embed%2Fvisualisations%2Fpeoplepopulationandcommunity%2Fpopulationandmigration%2Finternationalmigration%2Fqmis%2Fshortterminternationalmigrationestimatesforlocalauthoritiesqmi"},"data":{"proxy_name":"babbage","destination":{"Scheme":"http","Opaque":"","User":null,"Host":"localhost:8080","Path":"","RawPath":"","ForceQuery":false,"RawQuery":"","Fragment":""}}} +Captured Event NEW 3: +{"created_at":"2020-07-20T10:47:45.643420794Z","namespace":"BenchmarkLog","event":"http request completed","trace_id":"LZEMktPSfWETgvVt","http":{"status_code":200,"method":"GET","scheme":"http","host":"localhost","port":20000,"path":"/embed/visualisations/peoplepopulationandcommunity/populationandmigration/internationalmigration/qmis/shortterminternationalmigrationestimatesforlocalauthoritiesqmi","query":"%3Auri=embed%2Fvisualisations%2Fpeoplepopulationandcommunity%2Fpopulationandmigration%2Finternationalmigration%2Fqmis%2Fshortterminternationalmigrationestimatesforlocalauthoritiesqmi","started_at":"2020-07-20T10:47:45.642777528Z","ended_at":"2020-07-20T10:47:45.642777823Z","duration":295,"response_content_length":4}} + +-=-=- + +This shortens the original amount of allocations to 6610 and adjusts the savings to be: + +850 / 6610 = 0.129% which is a saving of 87.1% + +-=-=- + +21st July 2020 + +upgraded to go1.14.6 at 2PM + +-=-=- + +22nd July 2020 + +Add tests, refactor, have hassle with Travis (looks like its using g1.12 & i'm using go1.14.6 and there is some differences when +testing - see commit comments for fix). + +-=-=- + +23rd July 2020 + +Stage 9: + +dp-frontend-router: shorten Log => Save Money + +New code added and applied to log/middleware.go and the following needs adding to dp-frontend-router's main.go: + +Just before main(): + +var isMinimalAllocations bool = checkMinimumAlloc() + +func checkMinimumAlloc() bool { + if b, _ := strconv.ParseBool(os.Getenv("MINIMUM_ALLOC")); b { + return true + } + return false +} + +and in function createReverseProxy() change code to: + + if isMinimalAllocations == false { + log.Event(req.Context(), "proxying request", log.INFO, log.HTTP(req, 0, 0, nil, nil), log.Data{ + "destination": proxyURL, + "proxy_name": proxyName, + }) + } else { + log.SaveMoneyEvent2(req.Context(), "proxying request", log.INFO, log.HTTP(req, 0, 0, nil, nil), log.Data{ + "destination": proxyURL, + "proxy_name": "babbage"}) + } + +-=- + +Build dp-frontend-router with the new log library and the above changes and test as per "stage 2" + +You will find PDF's showing results of various runs of dp-frontend-router. + +f-old-gc10.pdf - old event code with Garbage Collector set to 10 + +f-new-gc10.pdf - new event code with Garbage Collector set to 10 + +f-save-gc10.pdf - using SaveMoneyEvent's event code with Garbage Collector set to 10 + +f-save-gc40.pdf - using SaveMoneyEvent's event code with Garbage Collector set to 40 + +Comparing these to the PDF's whose name starts with the letter 'e' ... they look quite different. + +I suspect the garbage collector has been changed in go1.14.6 and is now working a lot harder because the latest code +also looks like it is servicing about half the number of requests per second (still a lot). + +This reduction in the amount of requests may be down to something else all together that has changed in the latest version +of go and it's libraries. + +-=- + +Benchmarking the new SaveMoneyEvents with: + + go test -run=unroll_event_benchmark_test.go -bench=LogSave -memprofile=mem0.out + +shows the overall bytes allocated has dropped further to 762, which makes the savings: + +762 / 6610 = 0.115% which is a saving of 88.5% + +-=-=- + +Running a test function that is set up to show the amount of characters saved from writting to the log file with: + + go test -v -count=1 -race -cover -run TestLogSaveMoneyEventSavings ./... + +Gives the following output: + +-=-=- + +=== RUN TestLogSaveMoneyEventSavings +Testing: 'New Log 3 Events in dp-frontend-router HAPPY HOT-PATH' +Event 1 : old Length: 445, new Length: 397 +OLD 1: +{"created_at":"2020-07-23T16:48:20.803704833Z","namespace":"BenchmarkLog","event":"http request received","trace_id":"LZEMktPSfWETgvVt","http":{"status_code":0,"method":"GET","scheme":"http","host":"localhost","port":20000,"path":"/embed/visualisations/peoplepopulationandcommunity/populationandmigration/internationalmigration/qmis/shortterminternationalmigrationestimatesforlocalauthoritiesqmi","started_at":"2020-07-23T16:48:20.803677687Z"}} + +NEW 1: +{"created_at":"2020-07-23T16:48:20.806229973Z","namespace":"BenchmarkLog","event":"http request received","trace_id":"LZEMktPSfWETgvVt","http":{"status_code":0,"method":"GET","path":"/embed/visualisations/peoplepopulationandcommunity/populationandmigration/internationalmigration/qmis/shortterminternationalmigrationestimatesforlocalauthoritiesqmi","started_at":"2020-07-23T16:48:20.803677687Z"}} + +Event 2 : old Length: 782, new Length: 518 +OLD 2: +{"created_at":"2020-07-23T16:48:20.805436509Z","namespace":"BenchmarkLog","event":"proxying request","trace_id":"LZEMktPSfWETgvVt","severity":3,"http":{"status_code":0,"method":"GET","scheme":"http","host":"localhost","port":20000,"path":"/embed/visualisations/peoplepopulationandcommunity/populationandmigration/internationalmigration/qmis/shortterminternationalmigrationestimatesforlocalauthoritiesqmi","query":"%3Auri=embed%2Fvisualisations%2Fpeoplepopulationandcommunity%2Fpopulationandmigration%2Finternationalmigration%2Fqmis%2Fshortterminternationalmigrationestimatesforlocalauthoritiesqmi"},"data":{"destination":{"Scheme":"http","Opaque":"","User":null,"Host":"localhost:8080","Path":"","RawPath":"","ForceQuery":false,"RawQuery":"","Fragment":""},"proxy_name":"babbage"}} + +NEW 2: +{"created_at":"2020-07-23T16:48:20.806400956Z","event":"proxying request","trace_id":"LZEMktPSfWETgvVt","severity":3,"http":{"status_code":0,"query":"%3Auri=embed%2Fvisualisations%2Fpeoplepopulationandcommunity%2Fpopulationandmigration%2Finternationalmigration%2Fqmis%2Fshortterminternationalmigrationestimatesforlocalauthoritiesqmi"},"data":{"destination":{"Scheme":"http","Opaque":"","User":null,"Host":"localhost:8080","Path":"","RawPath":"","ForceQuery":false,"RawQuery":"","Fragment":""},"proxy_name":"babbage"}} + +Event 2 : old Length: 727, new Length: 208 +OLD 3: +{"created_at":"2020-07-23T16:48:20.805979238Z","namespace":"BenchmarkLog","event":"http request completed","trace_id":"LZEMktPSfWETgvVt","http":{"status_code":200,"method":"GET","scheme":"http","host":"localhost","port":20000,"path":"/embed/visualisations/peoplepopulationandcommunity/populationandmigration/internationalmigration/qmis/shortterminternationalmigrationestimatesforlocalauthoritiesqmi","query":"%3Auri=embed%2Fvisualisations%2Fpeoplepopulationandcommunity%2Fpopulationandmigration%2Finternationalmigration%2Fqmis%2Fshortterminternationalmigrationestimatesforlocalauthoritiesqmi","started_at":"2020-07-23T16:48:20.803677687Z","ended_at":"2020-07-23T16:48:20.8036788Z","duration":1113,"response_content_length":4}} + +NEW 3: +{"created_at":"2020-07-23T16:48:20.806607904Z","event":"http request completed","trace_id":"LZEMktPSfWETgvVt","http":{"status_code":200,"ended_at":"2020-07-23T16:48:20.8036788Z","response_content_length":4}} + +Initial totals old: 1954, new 1123 +In these tests, unfortunately the following appears in the old events: +"scheme":"http","host":"localhost","port":20000 + which may not be in the logs from dp-frontend-router.So, removing the length of the 'extra' info from the old events ... +FINAL totals old: 1813, new 1123 + + **** Thats a saving of 38.1% **** + +--- PASS: TestLogSaveMoneyEventSavings (0.00s) + + +-=-=- + +4th Aug 2020 + +Stage 10: Custom Events to achieve 100% reduction in HEAP Allocations + +Add CustomSaveMoney functions to eliminate ALL HEAP Allocations from the 3 log functions that are on the HAPPY HOT-PATH +of dp-frontend-router. + +Add BenchmarkLogCustomSave() to demonstrate no Allocations, run with: + + go test -run=unroll_event_benchmark_test.go -bench=LogCustomSave -memprofile=mem0.out + +This has a FINAL output report of: + + 14152 77910 ns/op 0 B/op 0 allocs/op + +And the original code can be benchmarked with: + + go test -run=unroll_event_benchmark_test.go -bench=Log5 -memprofile=mem0.out + +And this reports: + + 7453 168863 ns/op 6611 B/op 45 allocs/op + + +Which shows that the final code runs somewhat faster than the original code - enabling more requests per second to be handled. + + +Add TestLogCustomSaveMoneyEvents() to test SaveMoneyEvent functions agains new CustomSaveMoneyEvent functions, run with: + + go test -v -count=1 -cover -run TestLogCustomSaveMoneyEvents ./... + +-=-=- + +Running this new code in dp-frontend-router does not show any further noticable improvement in reducing average +Heap allocations during stress load tests. + +In dp-frontend-router's main.go, replace the previous call to new function: SaveMoneyEvent2() + +with: + + log.CustomSaveMoneyEvent2(req.Context(), "proxying request", log.INFO, + req, 0, 0, + "destination", proxyURL, + "proxy_name", "proxyName") + +-=-=- + + +The FINAL code with logging ~38% less runs over twice as fast. + + +Should this ever be used in production, it will need full testing and possibly some adjustments to for any +specific requirements. + diff --git a/log/middleware.go b/log/middleware.go index 2d0b893..8942cf3 100644 --- a/log/middleware.go +++ b/log/middleware.go @@ -30,8 +30,14 @@ func Middleware(f http.Handler) http.Handler { rc := &responseCapture{w, nil, 0} start := time.Now().UTC() - Event(req.Context(), "http request received", HTTP(req, 0, 0, &start, nil)) - + if isMinimalAllocations == false { + Event(req.Context(), "http request received", HTTP(req, 0, 0, &start, nil)) + } else { + //SaveMoneyEvent1(req.Context(), "http request received", HTTP(req, 0, 0, &start, nil)) + CustomSaveMoneyEvent1(req.Context(), "http request received", + req, 0, 0, + &start, nil) + } defer func() { end := time.Now().UTC() @@ -39,8 +45,15 @@ func Middleware(f http.Handler) http.Handler { if rc.statusCode != nil { statusCode = *rc.statusCode } - - Event(req.Context(), "http request completed", HTTP(req, statusCode, rc.bytesWritten, &start, &end)) + if isMinimalAllocations == false { + Event(req.Context(), "http request completed", HTTP(req, statusCode, rc.bytesWritten, &start, &end)) + } else { + // NOTE: &start is not passed as part of the savings + //SaveMoneyEvent3(req.Context(), "http request completed", HTTP(req, statusCode, rc.bytesWritten, nil, &end)) + CustomSaveMoneyEvent3(req.Context(), "http request completed", + req, statusCode, rc.bytesWritten, + nil, &end) + } }() f.ServeHTTP(rc, req) diff --git a/log/save_money_event.go b/log/save_money_event.go new file mode 100644 index 0000000..a88d250 --- /dev/null +++ b/log/save_money_event.go @@ -0,0 +1,444 @@ +package log + +import ( + "bytes" + "context" + "fmt" + "os" + "sync" + "time" + + "github.com/ONSdigital/go-ns/common" +) + +// Each SaveMoneyEvent... need their own sync.Pool +var eventBufPool1 = sync.Pool{ + New: func() interface{} { + return &bytes.Buffer{} // this is the same as return new(bytes.Buffer) + }, +} + +var eventBufPool2 = sync.Pool{ + New: func() interface{} { + return &bytes.Buffer{} // this is the same as return new(bytes.Buffer) + }, +} + +var eventBufPool3 = sync.Pool{ + New: func() interface{} { + return &bytes.Buffer{} // this is the same as return new(bytes.Buffer) + }, +} + +// SaveMoneyEvent1 for use in middleware to replace the 1st log.Event +func SaveMoneyEvent1(ctx context.Context, event string, opts ...option) { + // Minimum Allocations Event code ... + e := EventData2{ + CreatedAt: time.Now().UTC(), + Namespace: Namespace, + Event: event, + } + + if ctx != nil { + e.TraceID = common.GetRequestId(ctx) + } + + // loop around each log option and attach each option + // directly into EventData2 struct + for _, o := range opts { + // Doing typical pattern : `object.attach(thing)` + switch v := o.(type) { + case severity: + e.Severity = &v + case *severity: // added to match o.attach(e) code for completness (may never be used) + e.Severity = v + case Data: + e.Data = &v + case *Data: // added to match o.attach(e) code for completness (may never be used) + e.Data = v + case *EventHTTP: + e.HTTP = v + case *EventError: + e.Error = v + case *eventAuth: + e.Auth = v + default: + fmt.Printf("option: %v, %v, %T", o, v, v) + panic("unknown option") + } + } + + var somethingWritten bool + + buf := eventBufPool1.Get().(*bytes.Buffer) // with casting on the end + buf.Reset() // Must reset before each block of usage + + buf.WriteByte('{') + if !e.CreatedAt.IsZero() { + somethingWritten = true + unrollCreatedAt(buf, e.CreatedAt) + } + + if e.Namespace != "" { + if somethingWritten { + buf.WriteByte(',') + } + somethingWritten = true + unrollNamespace(buf, e.Namespace) + } + + if e.Event != "" { + if somethingWritten { + buf.WriteByte(',') + } + somethingWritten = true + unrollEvent(buf, e.Event) + } + + if e.TraceID != "" { + if somethingWritten { + buf.WriteByte(',') + } + somethingWritten = true + unrollTraceID(buf, e.TraceID) + } + + if e.Severity != nil { + if somethingWritten { + buf.WriteByte(',') + } + somethingWritten = true + unrollSeverity(buf, int(*e.Severity)) + } + + if e.HTTP != nil { + if somethingWritten { + buf.WriteByte(',') + } + somethingWritten = true + unrollHTTPToBuf(buf, e.HTTP, true, false, false, false, true, true) + } + + if e.Auth != nil { + unrollAuthToBuf(somethingWritten, buf, e.Auth) + somethingWritten = true + } + + if e.Data != nil { + if somethingWritten { + buf.WriteByte(',') + } + somethingWritten = true + unrollDataToBuf(buf, e.Data) + } + + if e.Error != nil { + if somethingWritten { + buf.WriteByte(',') + } + unrollErrorToBuf(buf, e.Error) + } + + buf.WriteByte('}') + buf.WriteByte(10) + + l := int64(buf.Len()) // cast to same type as returned by WriteTo() + + // try and write to stdout + if n, err := buf.WriteTo(destination); n != l || err != nil { + // if that fails, try and write to stderr + if n, err := buf.WriteTo(fallbackDestination); n != l || err != nil { + // if that fails, panic! + // + // also defer an os.Exit since the panic might be captured in a recover + // block in the caller, but we always want to exit in this scenario + // + // Note: deferring an os.Exit makes this particular block untestable + // using conventional `go test`. But it's a narrow enough edge case that + // it probably isn't worth trying, and only occurs in extreme circumstances + // (os.Stdout and os.Stderr both being closed) where unpredictable + // behaviour is expected. It's not clear what a panic or os.Exit would do + // in this scenario, or if our process is even still alive to get this far. + defer os.Exit(1) + panic("error writing log data: " + err.Error()) + } + } + + eventBufPool1.Put(buf) +} + +// SaveMoneyEvent2 for use in dp-frontend-router to replace log.Event in +// function: createReverseProxy() +func SaveMoneyEvent2(ctx context.Context, event string, opts ...option) { + // Minimum Allocations Event code ... + e := EventData2{ + CreatedAt: time.Now().UTC(), + Namespace: Namespace, + Event: event, + } + + if ctx != nil { + e.TraceID = common.GetRequestId(ctx) + } + + // loop around each log option and attach each option + // directly into EventData2 struct + for _, o := range opts { + // Doing typical pattern : `object.attach(thing)` + switch v := o.(type) { + case severity: + e.Severity = &v + case *severity: // added to match o.attach(e) code for completness (may never be used) + e.Severity = v + case Data: + e.Data = &v + case *Data: // added to match o.attach(e) code for completness (may never be used) + e.Data = v + case *EventHTTP: + e.HTTP = v + case *EventError: + e.Error = v + case *eventAuth: + e.Auth = v + default: + fmt.Printf("option: %v, %v, %T", o, v, v) + panic("unknown option") + } + } + + var somethingWritten bool + + buf := eventBufPool2.Get().(*bytes.Buffer) // with casting on the end + buf.Reset() // Must reset before each block of usage + + buf.WriteByte('{') + if !e.CreatedAt.IsZero() { + somethingWritten = true + unrollCreatedAt(buf, e.CreatedAt) + } + + if e.Namespace != "" { + /*if somethingWritten { + buf.WriteByte(',') + } + somethingWritten = true + unrollNamespace(buf, e.Namespace)*/ + } + + if e.Event != "" { + if somethingWritten { + buf.WriteByte(',') + } + somethingWritten = true + unrollEvent(buf, e.Event) + } + + if e.TraceID != "" { + if somethingWritten { + buf.WriteByte(',') + } + somethingWritten = true + unrollTraceID(buf, e.TraceID) + } + + if e.Severity != nil { + if somethingWritten { + buf.WriteByte(',') + } + somethingWritten = true + unrollSeverity(buf, int(*e.Severity)) + } + + if e.HTTP != nil { + if somethingWritten { + buf.WriteByte(',') + } + somethingWritten = true + // keep query + unrollHTTPToBuf(buf, e.HTTP, false, false, false, false, false, true) + } + + if e.Auth != nil { + unrollAuthToBuf(somethingWritten, buf, e.Auth) + somethingWritten = true + } + + if e.Data != nil { + if somethingWritten { + buf.WriteByte(',') + } + somethingWritten = true + unrollDataToBuf(buf, e.Data) + } + + if e.Error != nil { + if somethingWritten { + buf.WriteByte(',') + } + unrollErrorToBuf(buf, e.Error) + } + + buf.WriteByte('}') + buf.WriteByte(10) + + l := int64(buf.Len()) // cast to same type as returned by WriteTo() + + // try and write to stdout + if n, err := buf.WriteTo(destination); n != l || err != nil { + // if that fails, try and write to stderr + if n, err := buf.WriteTo(fallbackDestination); n != l || err != nil { + // if that fails, panic! + // + // also defer an os.Exit since the panic might be captured in a recover + // block in the caller, but we always want to exit in this scenario + // + // Note: deferring an os.Exit makes this particular block untestable + // using conventional `go test`. But it's a narrow enough edge case that + // it probably isn't worth trying, and only occurs in extreme circumstances + // (os.Stdout and os.Stderr both being closed) where unpredictable + // behaviour is expected. It's not clear what a panic or os.Exit would do + // in this scenario, or if our process is even still alive to get this far. + defer os.Exit(1) + panic("error writing log data: " + err.Error()) + } + } + + eventBufPool2.Put(buf) +} + +// SaveMoneyEvent3 for use in middleware to replace the 2nd log.Event +func SaveMoneyEvent3(ctx context.Context, event string, opts ...option) { + // Minimum Allocations Event code ... + e := EventData2{ + CreatedAt: time.Now().UTC(), + Namespace: Namespace, + Event: event, + } + + if ctx != nil { + e.TraceID = common.GetRequestId(ctx) + } + + // loop around each log option and attach each option + // directly into EventData2 struct + for _, o := range opts { + // Doing typical pattern : `object.attach(thing)` + switch v := o.(type) { + case severity: + e.Severity = &v + case *severity: // added to match o.attach(e) code for completness (may never be used) + e.Severity = v + case Data: + e.Data = &v + case *Data: // added to match o.attach(e) code for completness (may never be used) + e.Data = v + case *EventHTTP: + e.HTTP = v + case *EventError: + e.Error = v + case *eventAuth: + e.Auth = v + default: + fmt.Printf("option: %v, %v, %T", o, v, v) + panic("unknown option") + } + } + + var somethingWritten bool + + buf := eventBufPool3.Get().(*bytes.Buffer) // with casting on the end + buf.Reset() // Must reset before each block of usage + + buf.WriteByte('{') + if !e.CreatedAt.IsZero() { + somethingWritten = true + unrollCreatedAt(buf, e.CreatedAt) + } + + if e.Namespace != "" { + /*if somethingWritten { + buf.WriteByte(',') + } + somethingWritten = true + unrollNamespace(buf, e.Namespace)*/ + } + + if e.Event != "" { + if somethingWritten { + buf.WriteByte(',') + } + somethingWritten = true + unrollEvent(buf, e.Event) + } + + if e.TraceID != "" { + if somethingWritten { + buf.WriteByte(',') + } + somethingWritten = true + unrollTraceID(buf, e.TraceID) + } + + if e.Severity != nil { + if somethingWritten { + buf.WriteByte(',') + } + somethingWritten = true + unrollSeverity(buf, int(*e.Severity)) + } + + if e.HTTP != nil { + if somethingWritten { + buf.WriteByte(',') + } + somethingWritten = true + unrollHTTPToBuf(buf, e.HTTP, false, false, false, false, false, false) + } + + if e.Auth != nil { + unrollAuthToBuf(somethingWritten, buf, e.Auth) + somethingWritten = true + } + + if e.Data != nil { + if somethingWritten { + buf.WriteByte(',') + } + somethingWritten = true + unrollDataToBuf(buf, e.Data) + } + + if e.Error != nil { + if somethingWritten { + buf.WriteByte(',') + } + unrollErrorToBuf(buf, e.Error) + } + + buf.WriteByte('}') + buf.WriteByte(10) + + l := int64(buf.Len()) // cast to same type as returned by WriteTo() + + // try and write to stdout + if n, err := buf.WriteTo(destination); n != l || err != nil { + // if that fails, try and write to stderr + if n, err := buf.WriteTo(fallbackDestination); n != l || err != nil { + // if that fails, panic! + // + // also defer an os.Exit since the panic might be captured in a recover + // block in the caller, but we always want to exit in this scenario + // + // Note: deferring an os.Exit makes this particular block untestable + // using conventional `go test`. But it's a narrow enough edge case that + // it probably isn't worth trying, and only occurs in extreme circumstances + // (os.Stdout and os.Stderr both being closed) where unpredictable + // behaviour is expected. It's not clear what a panic or os.Exit would do + // in this scenario, or if our process is even still alive to get this far. + defer os.Exit(1) + panic("error writing log data: " + err.Error()) + } + } + + eventBufPool3.Put(buf) +} diff --git a/log/save_money_event_benchmark_test.go b/log/save_money_event_benchmark_test.go new file mode 100644 index 0000000..8a91426 --- /dev/null +++ b/log/save_money_event_benchmark_test.go @@ -0,0 +1,68 @@ +package log + +import ( + "context" + "fmt" + "net/http" + "net/url" + "testing" + "time" + + "github.com/ONSdigital/go-ns/common" +) + +func BenchmarkLogSave(b *testing.B) { + oldNamespace := Namespace + defer func() { + Namespace = oldNamespace // this needed for other test functions + }() + + fmt.Println("Benchmarking: 'Log'") + req, err := http.NewRequest("GET", "http://localhost:20000/embed/visualisations/peoplepopulationandcommunity/populationandmigration/internationalmigration/qmis/shortterminternationalmigrationestimatesforlocalauthoritiesqmi", nil) + if err != nil { + fmt.Println(err) + return + } + + // NOTE: The gorilla library function registerVars() in pat.go V1.0.1 + // adds in the the resulting path that is reverse proxied to. + // SO: The following replicates that so that this test more closely + // matches what is seen in dp-frontend-router. + req2, err := http.NewRequest("GET", "http://localhost:20000/embed/visualisations/peoplepopulationandcommunity/populationandmigration/internationalmigration/qmis/shortterminternationalmigrationestimatesforlocalauthoritiesqmi", nil) + if err != nil { + fmt.Println(err) + return + } + q := req2.URL.Query() // Get a copy of the query values. + q.Add(":uri", "embed/visualisations/peoplepopulationandcommunity/populationandmigration/internationalmigration/qmis/shortterminternationalmigrationestimatesforlocalauthoritiesqmi") // Add a new value to the set. + req2.URL.RawQuery = q.Encode() // Encode and assign back to the original query. + + requestID := newRequestID(16) + ctx := context.WithValue(context.Background(), common.RequestIdKey, requestID) + start := time.Now().UTC() + end := time.Now().UTC() + babbageURL, err := url.Parse("http://localhost:8080") + + Namespace = "BenchmarkLog" // force a fixed value as sometimes during testing this changes and does not help when comparing to other tests + + isMinimalAllocations = true // use new Event() code, for minimum memory allocations + + b.ReportAllocs() + // The sequence of these 3 events is about worst case length that dp-frontend-router can do + // Using the THREE new events also drops bytes allocated from ~ 850 to 769 + // (before dropping items) + for i := 0; i < b.N; i++ { + // 1st Event is like the first one in Middleware() + SaveMoneyEvent1(ctx, "http request received", HTTP(req, 0, 0, &start, nil)) + + // 2nd event is 'similar in length' to one in createReverseProxy() + // BUT with items dropped, see file: log_line_length_Optimization-2.odt + SaveMoneyEvent2(ctx, "proxying request", INFO, HTTP(req2, 0, 0, nil, nil), + Data{"destination": babbageURL, + "proxy_name": "babbage"}) + + // 3rd Event is like the second one in Middleware() + // BUT with items dropped, see file: log_line_length_Optimization-2.odt + SaveMoneyEvent3(ctx, "http request completed", HTTP(req2, 200, 4, nil, &end)) + } +} diff --git a/log/save_money_event_test.go b/log/save_money_event_test.go new file mode 100644 index 0000000..5ccc498 --- /dev/null +++ b/log/save_money_event_test.go @@ -0,0 +1,173 @@ +package log + +import ( + "context" + "fmt" + "net/http" + "net/url" + "testing" + "time" + + "github.com/ONSdigital/go-ns/common" +) + +func TestLogSaveMoneyEventSavings(t *testing.T) { + // Create 3 events that look like what dp-frontend-router issues on the HAPPY HOT-PATH + // Get the Lengths for the 3 old events for the 3 new events and print savings. + // The 3 old events are captured first and copied to buffers and then the + // 3 new events are captured and copied to buffers to ensure no mistakes in + // what one 'thinks' is in a particular buffer. + + oldNamespace := Namespace + defer func() { + Namespace = oldNamespace // this needed for other test functions + }() + + isTestMode = false + + oldDestination := destination + oldFallbackDestination := fallbackDestination + + defer func() { + destination = oldDestination + fallbackDestination = oldFallbackDestination + isMinimalAllocations = false // put back to use old events, so as to not damage existing tests + }() + + fmt.Println("Testing: 'New Log 3 Events in dp-frontend-router HAPPY HOT-PATH'") + req, err := http.NewRequest("GET", "http://localhost:20000/embed/visualisations/peoplepopulationandcommunity/populationandmigration/internationalmigration/qmis/shortterminternationalmigrationestimatesforlocalauthoritiesqmi", nil) + if err != nil { + t.Errorf("%v", err) + } + + // NOTE: The gorilla library function registerVars() in pat.go V1.0.1 + // adds in the the resulting path that is reverse proxied to. + // SO: The following replicates that so that this test more closely + // matches what is seen in dp-frontend-router. + req2, err := http.NewRequest("GET", "http://localhost:20000/embed/visualisations/peoplepopulationandcommunity/populationandmigration/internationalmigration/qmis/shortterminternationalmigrationestimatesforlocalauthoritiesqmi", nil) + if err != nil { + t.Errorf("%v", err) + } + q := req2.URL.Query() // Get a copy of the query values. + q.Add(":uri", "embed/visualisations/peoplepopulationandcommunity/populationandmigration/internationalmigration/qmis/shortterminternationalmigrationestimatesforlocalauthoritiesqmi") // Add a new value to the set. + req2.URL.RawQuery = q.Encode() // Encode and assign back to the original query. + + requestID := newRequestID(16) + ctx := context.WithValue(context.Background(), common.RequestIdKey, requestID) + start := time.Now().UTC() + end := time.Now().UTC() + babbageURL, err := url.Parse("http://localhost:8080") + + Namespace = "BenchmarkLog" // force a fixed value as sometimes during testing this changes and does not help when comparing to other tests + + var oldLength1, oldLength2, oldLength3 int + + ////////////////////// + // Capture old events + + isMinimalAllocations = false // use existing Event() code + + // 1st Event is like the first one in Middleware() + // Capture the output of the call to Event() + var bytesWritten []byte + destination = &writer{func(b []byte) (n int, err error) { + bytesWritten = b + return len(b), nil + }} + Event(ctx, "http request received", HTTP(req, 0, 0, &start, nil)) + + // Converting what has been captured in bytesWritten with string() + // puts : !F(MISSING) + // into the output, so we do the following: + // We have to copy the result into a new buffer because the Fprintln over-writes + // the result (what a pain). + oldLength1 = len(bytesWritten) + oldBuffer1 := make([]byte, 0, 2000) + for i := 0; i < oldLength1; i++ { + oldBuffer1 = append(oldBuffer1, bytesWritten[i]) + } + + // 2nd event is 'similar in length' to one in createReverseProxy() + Event(ctx, "proxying request", INFO, HTTP(req2, 0, 0, nil, nil), + Data{"destination": babbageURL, + "proxy_name": "babbage"}) + + oldLength2 = len(bytesWritten) + oldBuffer2 := make([]byte, 0, 2000) + for i := 0; i < oldLength2; i++ { + oldBuffer2 = append(oldBuffer2, bytesWritten[i]) + } + + // 3rd Event is like the second one in Middleware() + Event(ctx, "http request completed", HTTP(req2, 200, 4, &start, &end)) + + oldLength3 = len(bytesWritten) + oldBuffer3 := make([]byte, 0, 2000) + for i := 0; i < oldLength3; i++ { + oldBuffer3 = append(oldBuffer3, bytesWritten[i]) + } + + ////////////////////// + // Capture NEW events + + var newLength1, newLength2, newLength3 int + isMinimalAllocations = true // use new Event() code, for minimum memory allocations + + // 1st Event is like the first one in Middleware() + SaveMoneyEvent1(ctx, "http request received", HTTP(req, 0, 0, &start, nil)) + + newLength1 = len(bytesWritten) + newBuffer1 := make([]byte, 0, 2000) + for i := 0; i < newLength1; i++ { + newBuffer1 = append(newBuffer1, bytesWritten[i]) + } + + // 2nd event is 'similar in length' to one in createReverseProxy() + SaveMoneyEvent2(ctx, "proxying request", INFO, HTTP(req2, 0, 0, nil, nil), + Data{"destination": babbageURL, + "proxy_name": "babbage"}) + + newLength2 = len(bytesWritten) + newBuffer2 := make([]byte, 0, 2000) + for i := 0; i < newLength2; i++ { + newBuffer2 = append(newBuffer2, bytesWritten[i]) + } + + // 3rd Event is like the second one in Middleware() + // NOTE: &start is not passed as part of the savings + SaveMoneyEvent3(ctx, "http request completed", HTTP(req2, 200, 4, nil, &end)) + + newLength3 = len(bytesWritten) + newBuffer3 := make([]byte, 0, 2000) + for i := 0; i < newLength3; i++ { + newBuffer3 = append(newBuffer3, bytesWritten[i]) + } + + ///////////////////////////// + // Show what the savings are: + + fmt.Printf("Event 1 : old Length: %d, new Length: %d\n", oldLength1, newLength1) + fmt.Printf("OLD 1:\n%v\n", string(oldBuffer1)) + fmt.Printf("NEW 1:\n%v\n", string(newBuffer1)) + fmt.Printf("Event 2 : old Length: %d, new Length: %d\n", oldLength2, newLength2) + fmt.Printf("OLD 2:\n%v\n", string(oldBuffer2)) + fmt.Printf("NEW 2:\n%v\n", string(newBuffer2)) + fmt.Printf("Event 2 : old Length: %d, new Length: %d\n", oldLength3, newLength3) + fmt.Printf("OLD 3:\n%v\n", string(oldBuffer3)) + fmt.Printf("NEW 3:\n%v\n", string(newBuffer3)) + + oldTotal := oldLength1 + oldLength2 + oldLength3 + newTotal := newLength1 + newLength2 + newLength3 + fmt.Printf("Initial totals old: %d, new %d\n", oldTotal, newTotal) + + var extra string = "\"scheme\":\"http\",\"host\":\"localhost\",\"port\":20000" + fmt.Printf("In these tests, unfortunately the following appears in the old events:\n%s\n", extra) + fmt.Printf(" which may not be in the logs from dp-frontend-router.") + fmt.Printf("So, removing the length of the 'extra' info from the old events ...\n") + + oldTotal = oldTotal - (3 * len(extra)) + fmt.Printf("FINAL totals old: %d, new %d\n", oldTotal, newTotal) + + savings := (1.0 - (float32(newTotal) / float32(oldTotal))) * 100.0 + fmt.Printf("\n **** Thats a saving of %0.1f%% ****\n\n", savings) +} diff --git a/log/unroll_event.go b/log/unroll_event.go new file mode 100644 index 0000000..eaea728 --- /dev/null +++ b/log/unroll_event.go @@ -0,0 +1,457 @@ +package log + +import ( + "bytes" + "encoding/json" + "sync" + "time" +) + +var eventBufPool = sync.Pool{ + New: func() interface{} { + return &bytes.Buffer{} // this is the same as return new(bytes.Buffer) + }, +} + +// unrollIntToBuf2 writes lowest 2 characters of int to buffer +func unrollIntToBuf2(buf *bytes.Buffer, value int) { + c1 := byte((value % 10) + '0') + c2 := byte(((value / 10) % 10) + '0') + buf.WriteByte(c2) + buf.WriteByte(c1) +} + +// unrollIntToBuf4 writes lowest 4 characters of int to buffer +func unrollIntToBuf4(buf *bytes.Buffer, value int) { + c1 := byte((value % 10) + '0') + value = value / 10 + c2 := byte((value % 10) + '0') + value = value / 10 + c3 := byte((value % 10) + '0') + value = value / 10 + c4 := byte((value % 10) + '0') + buf.WriteByte(c4) + buf.WriteByte(c3) + buf.WriteByte(c2) + buf.WriteByte(c1) +} + +// unrollIntToBuf9 converts int to upto 9 digit string with trailling zero's dropped +// but leaving one zero if the number is zero, and tags a 'Z' on the end. +// Assumes the number is positive. +func unrollIntToBuf9(buf *bytes.Buffer, value int) { + var out [11]byte + + out[8] = byte((value % 10) + '0') + value = value / 10 + out[7] = byte((value % 10) + '0') + value = value / 10 + out[6] = byte((value % 10) + '0') + value = value / 10 + out[5] = byte((value % 10) + '0') + value = value / 10 + out[4] = byte((value % 10) + '0') + value = value / 10 + out[3] = byte((value % 10) + '0') + value = value / 10 + out[2] = byte((value % 10) + '0') + value = value / 10 + out[1] = byte((value % 10) + '0') + value = value / 10 + out[0] = byte((value % 10) + '0') + + var last int = 0 + for i := 8; i >= 0; i-- { + if out[i] != '0' { + last = i + break + } + } + // now output all digits, except for any trailing zero's + for i := 0; i <= last; i++ { + buf.WriteByte(out[i]) + } + buf.WriteByte('Z') +} + +func unrollTimeToBuf(buf *bytes.Buffer, value time.Time) { + unrollIntToBuf4(buf, value.Year()) + buf.WriteByte('-') + unrollIntToBuf2(buf, int(value.Month())) + buf.WriteByte('-') + unrollIntToBuf2(buf, int(value.Day())) + buf.WriteByte('T') + unrollIntToBuf2(buf, int(value.Hour())) + buf.WriteByte(':') + unrollIntToBuf2(buf, int(value.Minute())) + buf.WriteByte(':') + unrollIntToBuf2(buf, int(value.Second())) + buf.WriteByte('.') + unrollIntToBuf9(buf, int(value.Nanosecond())) +} + +// unrollInt writes character version of int to buffer +func unrollInt(buf *bytes.Buffer, n int) { + var out [15]byte + var c int + + if n < 0 { + n = -n + buf.WriteByte('-') + } + for { + out[c] = byte((n % 10) + '0') + c++ + n = n / 10 + if n == 0 { + break + } + } + + c-- + for { + buf.WriteByte(out[c]) + if c == 0 { + break + } + c-- + } +} + +// unrollInt64 writes character version of int64 to buffer +func unrollInt64(buf *bytes.Buffer, n int64) { + var out [25]byte + var c int + + if n < 0 { + n = -n + buf.WriteByte('-') + } + for { + out[c] = byte((n % 10) + '0') + c++ + n = n / 10 + if n == 0 { + break + } + } + + c-- + for { + buf.WriteByte(out[c]) + if c == 0 { + break + } + c-- + } +} + +func unrollCreatedAt(buf *bytes.Buffer, value time.Time) { + buf.WriteByte('"') + buf.WriteString("created_at") + buf.WriteByte('"') + buf.WriteByte(':') + buf.WriteByte('"') + unrollTimeToBuf(buf, value) + buf.WriteByte('"') +} + +func unrollNamespace(buf *bytes.Buffer, value string) { + buf.WriteByte('"') + buf.WriteString("namespace") + buf.WriteByte('"') + buf.WriteByte(':') + buf.WriteByte('"') + buf.WriteString(value) + buf.WriteByte('"') +} + +func unrollEvent(buf *bytes.Buffer, value string) { + buf.WriteByte('"') + buf.WriteString("event") + buf.WriteByte('"') + buf.WriteByte(':') + buf.WriteByte('"') + buf.WriteString(value) + buf.WriteByte('"') +} + +func unrollTraceID(buf *bytes.Buffer, value string) { + buf.WriteByte('"') + buf.WriteString("trace_id") + buf.WriteByte('"') + buf.WriteByte(':') + buf.WriteByte('"') + buf.WriteString(value) + buf.WriteByte('"') +} + +func unrollSeverity(buf *bytes.Buffer, value int) { + buf.WriteByte('"') + buf.WriteString("severity") + buf.WriteByte('"') + buf.WriteByte(':') + unrollInt(buf, value) +} + +func unrollHTTPToBuf(buf *bytes.Buffer, value *EventHTTP, + showMethod bool, showScheme bool, showHost bool, + showPort bool, showPath bool, showQuery bool) { + // We know what the '*EventHTTP' is, so its contents can be directly + // extracted ... + buf.WriteByte('"') + buf.WriteString("http") + buf.WriteByte('"') + buf.WriteByte(':') + + buf.WriteByte('{') + + var somethingWritten bool + if value.StatusCode != nil { + buf.WriteByte('"') + buf.WriteString("status_code") + buf.WriteByte('"') + buf.WriteByte(':') + unrollInt(buf, *value.StatusCode) + somethingWritten = true + } + + if showMethod && value.Method != "" { + if somethingWritten { + buf.WriteByte(',') + } + somethingWritten = true + buf.WriteByte('"') + buf.WriteString("method") + buf.WriteByte('"') + buf.WriteByte(':') + buf.WriteByte('"') + buf.WriteString(value.Method) + buf.WriteByte('"') + } + + if showScheme && value.Scheme != "" { + if somethingWritten { + buf.WriteByte(',') + } + somethingWritten = true + buf.WriteByte('"') + buf.WriteString("scheme") + buf.WriteByte('"') + buf.WriteByte(':') + buf.WriteByte('"') + buf.WriteString(value.Scheme) + buf.WriteByte('"') + } + + if showHost && value.Host != "" { + if somethingWritten { + buf.WriteByte(',') + } + somethingWritten = true + buf.WriteByte('"') + buf.WriteString("host") + buf.WriteByte('"') + buf.WriteByte(':') + buf.WriteByte('"') + buf.WriteString(value.Host) + buf.WriteByte('"') + } + + if showPort { + // port will always have some value ... + if somethingWritten { + buf.WriteByte(',') + } + somethingWritten = true + buf.WriteByte('"') + buf.WriteString("port") + buf.WriteByte('"') + buf.WriteByte(':') + unrollInt(buf, value.Port) + } + + if showPath && value.Path != "" { + if somethingWritten { + buf.WriteByte(',') + } + somethingWritten = true + buf.WriteByte('"') + buf.WriteString("path") + buf.WriteByte('"') + buf.WriteByte(':') + buf.WriteByte('"') + buf.WriteString(value.Path) + buf.WriteByte('"') + } + + if showQuery && value.Query != "" { + if somethingWritten { + buf.WriteByte(',') + } + somethingWritten = true + buf.WriteByte('"') + buf.WriteString("query") + buf.WriteByte('"') + buf.WriteByte(':') + buf.WriteByte('"') + buf.WriteString(value.Query) + buf.WriteByte('"') + } + + if value.StartedAt != nil { + if somethingWritten { + buf.WriteByte(',') + } + somethingWritten = true + buf.WriteByte('"') + buf.WriteString("started_at") + buf.WriteByte('"') + buf.WriteByte(':') + buf.WriteByte('"') + unrollTimeToBuf(buf, *value.StartedAt) + buf.WriteByte('"') + } + + if value.EndedAt != nil { + if somethingWritten { + buf.WriteByte(',') + } + somethingWritten = true + buf.WriteByte('"') + buf.WriteString("ended_at") + buf.WriteByte('"') + buf.WriteByte(':') + buf.WriteByte('"') + unrollTimeToBuf(buf, *value.EndedAt) + buf.WriteByte('"') + } + + if value.Duration != nil { + if somethingWritten { + buf.WriteByte(',') + } + somethingWritten = true + buf.WriteByte('"') + buf.WriteString("duration") + buf.WriteByte('"') + buf.WriteByte(':') + unrollInt64(buf, int64(*value.Duration)) + } + + // We can not easily determine if ResponseContentLength has been assigned a value + // without doing some sort of reflect which will then create allocs. + // But if ResponseContentLength is 0, then there is no point showing it. + if value.ResponseContentLength != 0 { + if somethingWritten { + buf.WriteByte(',') + } + buf.WriteByte('"') + buf.WriteString("response_content_length") + buf.WriteByte('"') + buf.WriteByte(':') + unrollInt64(buf, int64(value.ResponseContentLength)) + } + + buf.WriteByte('}') +} + +func unrollAuthToBuf(somethingWritten bool, buf *bytes.Buffer, value *eventAuth) { + if somethingWritten { + buf.WriteByte(',') + } + if value.Identity != "" || value.IdentityType != "" { + var somethingNew bool + + buf.WriteByte('"') + buf.WriteString("auth") + buf.WriteByte('"') + buf.WriteByte(':') + buf.WriteByte('{') + + if value.Identity != "" { + + buf.WriteByte('"') + buf.WriteString("identity") + buf.WriteByte('"') + buf.WriteByte(':') + buf.WriteByte('"') + buf.WriteString(value.Identity) + buf.WriteByte('"') + + somethingNew = true + } + if value.IdentityType != "" { + if somethingNew { + buf.WriteByte(',') + } + + buf.WriteByte('"') + buf.WriteString("identity_type") + buf.WriteByte('"') + buf.WriteByte(':') + buf.WriteByte('"') + buf.WriteString(string(value.IdentityType)) + buf.WriteByte('"') + } + buf.WriteByte('}') + } else { + buf.WriteByte('{') + buf.WriteByte('}') + } +} + +func unrollDataToBuf(buf *bytes.Buffer, value *Data) { + // We know what the '*Data' is 'map[string]interface{}' + // and we know that the three Event() calls on the HOT-PATH in dp-frontend-router + // only pass a string or URL for the value ... so with this prior knowledge ... + // to achieve the goal of minimum memory allocations, this function will + // decode our 'knowns' in an allocation optimum way. + // It will deal with unknowns with an inefficient "json.NewEncoder(buf).Encode(value)" + // ... that said, it appears that the Encode does not create any allocations on + // the HEAP for the URL (possibly because it has no sub structure structures or + // interface{} ?) + // ODD'ly: sometimes the 'proxy_name' is output before the 'destination' - go figure ? + var somethingWritten bool + + buf.WriteByte('"') + buf.WriteString("data") + buf.WriteByte('"') + buf.WriteByte(':') + + buf.WriteByte('{') + for k, v := range *value { + if somethingWritten { + buf.WriteByte(',') + } + somethingWritten = true + + buf.WriteByte('"') + buf.WriteString(k) // add the key + buf.WriteByte('"') + buf.WriteByte(':') + switch n := v.(type) { + case string: + buf.WriteByte('"') + buf.WriteString(n) // add the 'known' value type of 'string' + buf.WriteByte('"') + default: // too many other possibilities, so use Encode() + json.NewEncoder(buf).Encode(v) + buf.Truncate(buf.Len() - 1) // remove the 'new line', as there is more to append + } + } + buf.WriteByte('}') +} + +func unrollErrorToBuf(buf *bytes.Buffer, value *EventError) { + // Error's are not on the HAPPY HOT-PATH of dp-frontend-router, so + // they don't need unrolling - just use the library function. + // Also Error's should only be seen outside of production server ... + buf.WriteByte('"') + buf.WriteString("error") + buf.WriteByte('"') + buf.WriteByte(':') + + json.NewEncoder(buf).Encode(value) + buf.Truncate(buf.Len() - 1) // remove the 'new line', as there is more to append +} diff --git a/log/unroll_event_benchmark_test.go b/log/unroll_event_benchmark_test.go new file mode 100644 index 0000000..f0c63df --- /dev/null +++ b/log/unroll_event_benchmark_test.go @@ -0,0 +1,464 @@ +package log + +import ( + "context" + "errors" + "fmt" + "math/rand" + "net/http" + "net/url" + "strconv" + "sync" + "testing" + "time" + + "github.com/ONSdigital/go-ns/common" +) + +// run with: +// go test -run=log_test.go -bench=Log -benchtime=100x + +// contextKey is a value for use with context.WithValue. It's used as +// a pointer so it fits in an interface{} without allocation. +type contextKey struct { + name string +} + +var letters = []rune("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ") + +//var requestIDRandom = rand.New(rand.NewSource(time.Now().UnixNano())) +var requestIDRandom = rand.New(rand.NewSource(99)) // seed with constant to get same sequence out output for every benchmar run +var randMutex sync.Mutex + +// NewRequestID generates a random string of requested length +func newRequestID(size int) string { + b := make([]rune, size) + randMutex.Lock() + for i := range b { + b[i] = letters[requestIDRandom.Intn(len(letters))] + } + randMutex.Unlock() + return string(b) +} + +func BenchmarkLog1(b *testing.B) { + oldNamespace := Namespace + defer func() { + Namespace = oldNamespace // this needed for other test functions + }() + + fmt.Println("Benchmarking: 'Log'") + errToLog := errors.New("test error") + message1 := "Benchmark test" + data1 := "d1" + data2 := "d2" + data3 := "d3" + data4 := "d4" + req, err := http.NewRequest("GET", "http://localhost:20000/embed/visualisations/peoplepopulationandcommunity/populationandmigration/internationalmigration/qmis/shortterminternationalmigrationestimatesforlocalauthoritiesqmi", nil) + if err != nil { + fmt.Println(err) + return + } + fmt.Printf("req: %v\n", req) + + requestID := newRequestID(16) + ctx := context.WithValue(context.Background(), common.RequestIdKey, requestID) + + Namespace = "BenchmarkLog" // force a fixed value as sometimes during testing this changes and does not help when comparing to other tests + + isMinimalAllocations = false // use existing Event() code + + b.ReportAllocs() + + // test all event types + for i := 0; i < b.N; i++ { + Event(ctx, + message1, + INFO, + Data{"data_1": data1, "data_2": data2, "data_3": data3, "data_4": data4}, + Error(errToLog), + HTTP(req, 0, 0, nil, nil), + Auth(USER, "tester-1")) + } +} + +// run with: +// go test -run=log_test.go -bench=. -benchtime=1000000000x + +// on 1st May 2020 gave results: +/* + +Benchmarking: 'Log - o.attach' +goos: linux +goarch: amd64 +pkg: github.com/ONSdigital/log.go/log +BenchmarkLog2-12 Benchmarking: 'Log - o.attach' +1000000000 142 ns/op +Benchmarking: 'Log - switch' +BenchmarkLog3-12 Benchmarking: 'Log - switch' +1000000000 141 ns/op +PASS +ok github.com/ONSdigital/log.go/log 282.637s + +*/ + +func BenchmarkLog2(b *testing.B) { + oldNamespace := Namespace + defer func() { + Namespace = oldNamespace // this needed for other test functions + }() + + fmt.Println("Benchmarking: 'Log - o.attach'") + err := errors.New("test error") + message1 := "m1" + data1 := "d1" + data2 := "d2" + data3 := "d3" + data4 := "d4" + + var opts [4]option + + opts[0] = INFO + opts[1] = Data{"data_1": data1, "data_2": data2, "data_3": data3, "data_4": data4} + opts[2] = Error(err) + opts[3] = Data{"data_4": data4, "data_2": data2} + + e := EventData{ + CreatedAt: time.Now().UTC(), + Namespace: Namespace, + Event: message1, + } + + Namespace = "BenchmarkLog" // force a fixed value as sometimes during testing this changes and does not help when comparing to other tests + + for i := 0; i < b.N; i++ { + // loop around each log option and call its attach method, which takes care + // of the association with the EventData struct + for _, o := range opts { + // Using rare pattern : `thing.attach(toObject)` + // this handles both cases where: + // the receiver can be called either `dataThing.attach(...)` or `ptrToDataThing.attach(...) + o.attach(&e) + } + } +} + +func BenchmarkLog3(b *testing.B) { + oldNamespace := Namespace + defer func() { + Namespace = oldNamespace // this needed for other test functions + }() + + fmt.Println("Benchmarking: 'Log - switch'") + err := errors.New("test error") + message1 := "m1" + data1 := "d1" + data2 := "d2" + data3 := "d3" + data4 := "d4" + + var opts [4]option + + opts[0] = INFO + opts[1] = Data{"data_1": data1, "data_2": data2, "data_3": data3, "data_4": data4} + opts[2] = Error(err) + opts[3] = Data{"data_4": data4, "data_2": data2} + + e := EventData{ + CreatedAt: time.Now().UTC(), + Namespace: Namespace, + Event: message1, + } + + Namespace = "BenchmarkLog" // force a fixed value as sometimes during testing this changes and does not help when comparing to other tests + + for i := 0; i < b.N; i++ { + // loop around each log option and attach each option + // directly into EventData struct + for _, o := range opts { + // Doing typical pattern : `object.attach(thing)` + switch v := o.(type) { + case severity: + e.Severity = &v + case *severity: // added to match o.attach(e) code for completness (may never be used) + e.Severity = v + case Data: + e.Data = &v + case *Data: // added to match o.attach(e) code for completness (may never be used) + e.Data = v + case *EventHTTP: + e.HTTP = v + case *EventError: + e.Error = v + case *eventAuth: + e.Auth = v + default: + fmt.Printf("option: %v, %v, %T", o, v, v) + panic("unknown option") + } + } + } +} + +func BenchmarkLog4(b *testing.B) { + oldNamespace := Namespace + defer func() { + Namespace = oldNamespace // this needed for other test functions + }() + + fmt.Println("Benchmarking: 'Log'") + req, err := http.NewRequest("GET", "http://localhost:20000/embed/visualisations/peoplepopulationandcommunity/populationandmigration/internationalmigration/qmis/shortterminternationalmigrationestimatesforlocalauthoritiesqmi", nil) + if err != nil { + fmt.Println(err) + return + } + + // NOTE: The gorilla library function registerVars() in pat.go V1.0.1 + // adds in the the resulting path that is reverse proxied to. + // SO: The following replicates that so that this test more closely + // matches what is seen in dp-frontend-router. + req2, err := http.NewRequest("GET", "http://localhost:20000/embed/visualisations/peoplepopulationandcommunity/populationandmigration/internationalmigration/qmis/shortterminternationalmigrationestimatesforlocalauthoritiesqmi", nil) + if err != nil { + fmt.Println(err) + return + } + q := req2.URL.Query() // Get a copy of the query values. + q.Add(":uri", "embed/visualisations/peoplepopulationandcommunity/populationandmigration/internationalmigration/qmis/shortterminternationalmigrationestimatesforlocalauthoritiesqmi") // Add a new value to the set. + req2.URL.RawQuery = q.Encode() // Encode and assign back to the original query. + + requestID := newRequestID(16) + ctx := context.WithValue(context.Background(), common.RequestIdKey, requestID) + start := time.Now().UTC() + end := time.Now().UTC() + babbageURL, err := url.Parse("http://localhost:8080") + + Namespace = "BenchmarkLog" // force a fixed value as sometimes during testing this changes and does not help when comparing to other tests + + isMinimalAllocations = true // use new Event() code, for minimum memory allocations + + b.ReportAllocs() + // The sequence of these 3 events is about worst case length that dp-frontend-router can do + for i := 0; i < b.N; i++ { + // 1st Event is like the first one in Middleware() + Event(ctx, "http request received", HTTP(req, 0, 0, &start, nil)) + + // 2nd event is 'similar in length' to one in createReverseProxy() + Event(ctx, "proxying request", INFO, HTTP(req2, 0, 0, nil, nil), + Data{"destination": babbageURL, + "proxy_name": "babbage"}) + + // 3rd Event is like the second one in Middleware() + Event(ctx, "http request completed", HTTP(req2, 200, 4, &start, &end)) + } +} + +func BenchmarkLog5(b *testing.B) { + oldNamespace := Namespace + defer func() { + Namespace = oldNamespace // this needed for other test functions + }() + + fmt.Println("Benchmarking: 'Log'") + req, err := http.NewRequest("GET", "http://localhost:20000/embed/visualisations/peoplepopulationandcommunity/populationandmigration/internationalmigration/qmis/shortterminternationalmigrationestimatesforlocalauthoritiesqmi", nil) + if err != nil { + fmt.Println(err) + return + } + + // NOTE: The gorilla library function registerVars() in pat.go V1.0.1 + // adds in the the resulting path that is reverse proxied to. + // SO: The following replicates that so that this test more closely + // matches what is seen in dp-frontend-router. + req2, err := http.NewRequest("GET", "http://localhost:20000/embed/visualisations/peoplepopulationandcommunity/populationandmigration/internationalmigration/qmis/shortterminternationalmigrationestimatesforlocalauthoritiesqmi", nil) + if err != nil { + fmt.Println(err) + return + } + q := req2.URL.Query() // Get a copy of the query values. + q.Add(":uri", "embed/visualisations/peoplepopulationandcommunity/populationandmigration/internationalmigration/qmis/shortterminternationalmigrationestimatesforlocalauthoritiesqmi") // Add a new value to the set. + req2.URL.RawQuery = q.Encode() // Encode and assign back to the original query. + + requestID := newRequestID(16) + ctx := context.WithValue(context.Background(), common.RequestIdKey, requestID) + start := time.Now().UTC() + end := time.Now().UTC() + babbageURL, err := url.Parse("http://localhost:8080") + + Namespace = "BenchmarkLog" // force a fixed value as sometimes during testing this changes and does not help when comparing to other tests + + isMinimalAllocations = false // use existing Event() code + + b.ReportAllocs() + // The sequence of these 3 events is about worst case length that dp-frontend-router can do + for i := 0; i < b.N; i++ { + // 1st Event is like the first one in Middleware() + Event(ctx, "http request received", HTTP(req, 0, 0, &start, nil)) + + // 2nd event is 'similar in length' to one in createReverseProxy() + Event(ctx, "proxying request", INFO, HTTP(req2, 0, 0, nil, nil), + Data{"destination": babbageURL, + "proxy_name": "babbage"}) + + // 3rd Event is like the second one in Middleware() + Event(ctx, "http request completed", HTTP(req2, 200, 4, &start, &end)) + } +} + +func BenchmarkLog6(b *testing.B) { + oldNamespace := Namespace + defer func() { + Namespace = oldNamespace // this needed for other test functions + }() + + fmt.Println("Benchmarking: 'Log'") + errToLog := errors.New("test error") + message1 := "Benchmark test" + data1 := "d1" + data2 := "d2" + data3 := "d3" + data4 := "d4" + req, err := http.NewRequest("GET", "http://localhost:20000/embed/visualisations/peoplepopulationandcommunity/populationandmigration/internationalmigration/qmis/shortterminternationalmigrationestimatesforlocalauthoritiesqmi", nil) + if err != nil { + fmt.Println(err) + return + } + fmt.Printf("req: %v\n", req) + + requestID := newRequestID(16) + ctx := context.WithValue(context.Background(), common.RequestIdKey, requestID) + + Namespace = "BenchmarkLog" // force a fixed value as sometimes during testing this changes and does not help when comparing to other tests + + isMinimalAllocations = true // use new Event() code, for minimum memory allocations + + b.ReportAllocs() + + // test all event types + for i := 0; i < b.N; i++ { + Event(ctx, + message1, + INFO, + Data{"data_1": data1, "data_2": data2, "data_3": data3, "data_4": data4}, + Error(errToLog), + HTTP(req, 0, 0, nil, nil), + Auth(USER, "tester-1")) + } +} + +func BenchmarkLog7(b *testing.B) { + oldNamespace := Namespace + defer func() { + Namespace = oldNamespace // this needed for other test functions + }() + + fmt.Println("Benchmarking: 'Log'") + req, err := http.NewRequest("GET", "http://localhost:20000/embed/visualisations/peoplepopulationandcommunity/populationandmigration/internationalmigration/qmis/shortterminternationalmigrationestimatesforlocalauthoritiesqmi", nil) + if err != nil { + fmt.Println(err) + return + } + + // NOTE: The gorilla library function registerVars() in pat.go V1.0.1 + // adds in the the resulting path that is revere proxied to. + // SO: The following replicates that so that this test more closely + // matches what is seen in dp-frontend-router. + req2, err := http.NewRequest("GET", "http://localhost:20000/embed/visualisations/peoplepopulationandcommunity/populationandmigration/internationalmigration/qmis/shortterminternationalmigrationestimatesforlocalauthoritiesqmi", nil) + if err != nil { + fmt.Println(err) + return + } + q := req2.URL.Query() // Get a copy of the query values. + q.Add(":uri", "embed/visualisations/peoplepopulationandcommunity/populationandmigration/internationalmigration/qmis/shortterminternationalmigrationestimatesforlocalauthoritiesqmi") // Add a new value to the set. + req2.URL.RawQuery = q.Encode() // Encode and assign back to the original query. + + requestID := newRequestID(16) + ctx := context.WithValue(context.Background(), common.RequestIdKey, requestID) + start := time.Now().UTC() + end := time.Now().UTC() + babbageURL, err := url.Parse("http://localhost:8080") + + Namespace = "BenchmarkLog" // force a fixed value as sometimes during testing this changes and does not help when comparing to other tests + + isMinimalAllocations = true // use new Event() code, for minimum memory allocations + + b.ReportAllocs() + // The sequence of these 3 events is about worst case length that dp-frontend-router can do + for i := 0; i < b.N; i++ { + // 1st Event is like the first one in Middleware() + var statusCode int = 0 + + port := 0 + if p := req.URL.Port(); len(p) > 0 { + port, _ = strconv.Atoi(p) + } + + var duration *time.Duration + + // inline the the setting up of the "EventHTTP" to save doing the HTTP(...) + // thing as this escapes to the heap, whereas doing the following stays within + // the stack of this calling function. + e := EventHTTP{ + StatusCode: &statusCode, + Method: req.Method, + + Scheme: req.URL.Scheme, + Host: req.URL.Hostname(), + Port: port, + Path: req.URL.Path, + Query: req.URL.RawQuery, + + StartedAt: &start, + EndedAt: nil, + Duration: duration, + ResponseContentLength: 0, + } + + //Event(ctx, "http request received", HTTP(req, 0, 0, &start, nil)) + Event(ctx, "http request received", &e) + + port = 0 + if p := req2.URL.Port(); len(p) > 0 { + port, _ = strconv.Atoi(p) + } + + e.Method = req2.Method + e.Scheme = req2.URL.Scheme + e.Host = req2.URL.Hostname() + e.Port = port + e.Path = req2.URL.Path + e.Query = req2.URL.RawQuery + e.StartedAt = nil + + // 2nd event is 'similar in length' to one in createReverseProxy() + // Event(ctx, "proxying request", INFO, HTTP(req2, 0, 0, nil, nil), + Event(ctx, "proxying request", INFO, &e, + Data{"destination": babbageURL, + "proxy_name": "babbage"}) + + port = 0 + if p := req2.URL.Port(); len(p) > 0 { + port, _ = strconv.Atoi(p) + } + port = 20000 + + d := end.Sub(start) + + e.Port = port + e.StartedAt = &start + e.EndedAt = &end + e.Duration = &d + e.ResponseContentLength = 4 + statusCode = 200 + + e.Method = req2.Method + e.Scheme = req2.URL.Scheme + e.Host = req2.URL.Hostname() + e.Port = port + e.Path = req2.URL.Path + e.Query = req2.URL.RawQuery + + // 3rd Event is like the second one in Middleware() + // Event(req.Context(), "http request completed", HTTP(req2, 200, 4, &start, &end)) + Event(ctx, "http request completed", &e) + } +} diff --git a/log/unroll_event_test.go b/log/unroll_event_test.go new file mode 100644 index 0000000..ad9d43f --- /dev/null +++ b/log/unroll_event_test.go @@ -0,0 +1,579 @@ +package log + +import ( + "bytes" + "context" + "encoding/json" + "errors" + "flag" + "fmt" + "net/http" + "net/url" + "reflect" + "testing" + "time" + + "github.com/ONSdigital/go-ns/common" + . "github.com/smartystreets/goconvey/convey" +) + +func TestLogNewUnrollFuncs(t *testing.T) { + buf := &bytes.Buffer{} + Convey("unrollIntToBuf2", t, func() { + type nums struct { + Number int + Text string + } + + array := []nums{ + {0, "00"}, {1, "01"}, {2, "02"}, {3, "03"}, {4, "04"}, + {5, "05"}, {6, "06"}, {7, "07"}, {8, "08"}, {9, "09"}, + {10, "10"}, {11, "11"}, {23, "23"}, {34, "34"}, {45, "45"}, + {56, "56"}, {67, "67"}, {78, "78"}, {89, "89"}, {99, "99"}, + {100, "00"}, + } + for _, v := range array { + unrollIntToBuf2(buf, v.Number) + So(buf.String(), ShouldEqual, v.Text) + buf.Reset() + } + }) + + Convey("unrollIntToBuf4", t, func() { + type nums struct { + Number int + Text string + } + + array := []nums{ + {0, "0000"}, {1, "0001"}, {2, "0002"}, {3, "0003"}, {4, "0004"}, + {5, "0005"}, {6, "0006"}, {7, "0007"}, {8, "0008"}, {9, "0009"}, + {10, "0010"}, {11, "0011"}, {23, "0023"}, {34, "0034"}, {45, "0045"}, + {56, "0056"}, {67, "0067"}, {78, "0078"}, {89, "0089"}, {99, "0099"}, + {100, "0100"}, {203, "0203"}, {1100, "1100"}, {8765, "8765"}, {9999, "9999"}, + {10000, "0000"}, + } + for _, v := range array { + unrollIntToBuf4(buf, v.Number) + So(buf.String(), ShouldEqual, v.Text) + buf.Reset() + } + }) + + Convey("unrollIntToBuf9", t, func() { + type nums struct { + Number int + Text string + } + + array := []nums{ + {123456789, "123456789Z"}, + {123456780, "12345678Z"}, + {123456700, "1234567Z"}, + {123456000, "123456Z"}, + {123450000, "12345Z"}, + {123400000, "1234Z"}, + {123000000, "123Z"}, + {120000000, "12Z"}, + {100000000, "1Z"}, + {000000000, "0Z"}, + {000000001, "000000001Z"}, + } + buf.Reset() + for _, v := range array { + unrollIntToBuf9(buf, v.Number) + So(buf.String(), ShouldEqual, v.Text) + buf.Reset() + } + }) + + Convey("unrollInt", t, func() { + type nums struct { + Number int + Text string + } + + array := []nums{ + {0, "0"}, {1, "1"}, {2, "2"}, {3, "3"}, {4, "4"}, + {5, "5"}, {6, "6"}, {7, "7"}, {8, "8"}, {9, "9"}, + {10, "10"}, {11, "11"}, {23, "23"}, {34, "34"}, {45, "45"}, + {56, "56"}, {67, "67"}, {78, "78"}, {89, "89"}, {99, "99"}, + {100, "100"}, {-1, "-1"}, {-9923, "-9923"}, + {1234567890, "1234567890"}, + } + for _, v := range array { + unrollInt(buf, v.Number) + So(buf.String(), ShouldEqual, v.Text) + buf.Reset() + } + }) + + Convey("unrollInt64", t, func() { + type nums struct { + Number int64 + Text string + } + + array := []nums{ + {0, "0"}, {1, "1"}, {2, "2"}, {3, "3"}, {4, "4"}, + {5, "5"}, {6, "6"}, {7, "7"}, {8, "8"}, {9, "9"}, + {10, "10"}, {11, "11"}, {23, "23"}, {34, "34"}, {45, "45"}, + {56, "56"}, {67, "67"}, {78, "78"}, {89, "89"}, {99, "99"}, + {100, "100"}, {-1, "-1"}, {-9923, "-9923"}, + {1234567890, "1234567890"}, {1234567890123456789, "1234567890123456789"}, + } + for _, v := range array { + unrollInt64(buf, v.Number) + So(buf.String(), ShouldEqual, v.Text) + buf.Reset() + } + }) + +} + +func TestLogNew3eventsRouter(t *testing.T) { + // Test 3 events that look like what dp-frontend-router issues on the HAPPY HOT-PATH + // Get the old events for the 3 and the new events for 3 and compare ... + // The 3 old events are captured first and copied to buffers and then the + // 3 new events are captured and copied to buffers to ensure no mistakes in + // what one 'thinks' is in a particular buffer. + + oldNamespace := Namespace + defer func() { + Namespace = oldNamespace // this needed for other test functions + }() + + isTestMode = false + + oldDestination := destination + oldFallbackDestination := fallbackDestination + + defer func() { + destination = oldDestination + fallbackDestination = oldFallbackDestination + isMinimalAllocations = false // put back to use old events, so as to not damage existing tests + }() + + fmt.Println("Testing: 'New Log 3 Events in dp-frontend-router HAPPY HOT-PATH'") + req, err := http.NewRequest("GET", "http://localhost:20000/embed/visualisations/peoplepopulationandcommunity/populationandmigration/internationalmigration/qmis/shortterminternationalmigrationestimatesforlocalauthoritiesqmi", nil) + if err != nil { + t.Errorf("%v", err) + } + + // NOTE: The gorilla library function registerVars() in pat.go V1.0.1 + // adds in the the resulting path that is reverse proxied to. + // SO: The following replicates that so that this test more closely + // matches what is seen in dp-frontend-router. + req2, err := http.NewRequest("GET", "http://localhost:20000/embed/visualisations/peoplepopulationandcommunity/populationandmigration/internationalmigration/qmis/shortterminternationalmigrationestimatesforlocalauthoritiesqmi", nil) + if err != nil { + t.Errorf("%v", err) + } + q := req2.URL.Query() // Get a copy of the query values. + q.Add(":uri", "embed/visualisations/peoplepopulationandcommunity/populationandmigration/internationalmigration/qmis/shortterminternationalmigrationestimatesforlocalauthoritiesqmi") // Add a new value to the set. + req2.URL.RawQuery = q.Encode() // Encode and assign back to the original query. + + requestID := newRequestID(16) + ctx := context.WithValue(context.Background(), common.RequestIdKey, requestID) + start := time.Now().UTC() + end := time.Now().UTC() + babbageURL, err := url.Parse("http://localhost:8080") + + Namespace = "BenchmarkLog" // force a fixed value as sometimes during testing this changes and does not help when comparing to other tests + + ////////////////////// + // Capture old events + + isMinimalAllocations = false // use existing Event() code + + // 1st Event is like the first one in Middleware() + // Capture the output of the call to Event() + var bytesWritten []byte + destination = &writer{func(b []byte) (n int, err error) { + bytesWritten = b + return len(b), nil + }} + Event(ctx, "http request received", HTTP(req, 0, 0, &start, nil)) + + // Converting what has been captured in bytesWritten with string() + // puts : !F(MISSING) + // into the output, so we do the following: + // We have to copy the result into a new buffer because the Fprintln over-writes + // the result (what a pain). + oldBuffer1 := make([]byte, 0, 2000) + for i := 0; i < len(bytesWritten); i++ { + oldBuffer1 = append(oldBuffer1, bytesWritten[i]) + } + + // 2nd event is 'similar in length' to one in createReverseProxy() + Event(ctx, "proxying request", INFO, HTTP(req2, 0, 0, nil, nil), + Data{"destination": babbageURL, + "proxy_name": "babbage"}) + + oldBuffer2 := make([]byte, 0, 2000) + for i := 0; i < len(bytesWritten); i++ { + oldBuffer2 = append(oldBuffer2, bytesWritten[i]) + } + + // 3rd Event is like the second one in Middleware() + Event(ctx, "http request completed", HTTP(req2, 200, 4, &start, &end)) + + oldBuffer3 := make([]byte, 0, 2000) + for i := 0; i < len(bytesWritten); i++ { + oldBuffer3 = append(oldBuffer3, bytesWritten[i]) + } + + ////////////////////// + // Capture NEW events + + isMinimalAllocations = true // use new Event() code, for minimum memory allocations + + // 1st Event is like the first one in Middleware() + Event(ctx, "http request received", HTTP(req, 0, 0, &start, nil)) + + newBuffer1 := make([]byte, 0, 2000) + for i := 0; i < len(bytesWritten); i++ { + newBuffer1 = append(newBuffer1, bytesWritten[i]) + } + + // 2nd event is 'similar in length' to one in createReverseProxy() + Event(ctx, "proxying request", INFO, HTTP(req2, 0, 0, nil, nil), + Data{"destination": babbageURL, + "proxy_name": "babbage"}) + + newBuffer2 := make([]byte, 0, 2000) + for i := 0; i < len(bytesWritten); i++ { + newBuffer2 = append(newBuffer2, bytesWritten[i]) + } + + // 3rd Event is like the second one in Middleware() + Event(ctx, "http request completed", HTTP(req2, 200, 4, &start, &end)) + + newBuffer3 := make([]byte, 0, 2000) + for i := 0; i < len(bytesWritten); i++ { + newBuffer3 = append(newBuffer3, bytesWritten[i]) + } + + ////////////////////// + // Compare old to new + + // The only difference should be in the 'created_at' timestamps + + if err := compareEvents("Event 1", oldBuffer1, newBuffer1); err != nil { + o1 := bytes.NewBuffer(oldBuffer1) + fmt.Fprintln(oldDestination, "Captured Event OLD 1:") + o1.WriteTo(oldDestination) // ignore any error from this as it is not important + + n1 := bytes.NewBuffer(newBuffer1) + fmt.Fprintln(oldDestination, "Captured Event NEW 1:") + n1.WriteTo(oldDestination) + + t.Errorf("%v", err) + } + + if err := compareEvents("Event 2", oldBuffer2, newBuffer2); err != nil { + o2 := bytes.NewBuffer(oldBuffer2) + fmt.Fprintln(oldDestination, "Captured Event OLD 2:") + o2.WriteTo(oldDestination) + + n2 := bytes.NewBuffer(newBuffer2) + fmt.Fprintln(oldDestination, "Captured Event NEW 2:") + n2.WriteTo(oldDestination) + + t.Errorf("%v", err) + } + + if err := compareEvents("Event 3", oldBuffer3, newBuffer3); err != nil { + o3 := bytes.NewBuffer(oldBuffer3) + fmt.Fprintln(oldDestination, "Captured Event OLD 3:") + o3.WriteTo(oldDestination) + + n3 := bytes.NewBuffer(newBuffer3) + fmt.Fprintln(oldDestination, "Captured Event NEW 3:") + n3.WriteTo(oldDestination) + + t.Errorf("%v", err) + } +} + +func compareEvents(eventNumber string, eventOld []byte, eventNew []byte) error { + //eventOld = append(eventOld, byte(10)) // add termination for json Unmarshal to know when to stop + //eventNew = append(eventNew, byte(10)) // add termination for json Unmarshal to know when to stop + + var to1, tn1 EventData2 + + err := json.Unmarshal(eventOld, &to1) + if err != nil { + fmt.Printf("Problem with Old %s\n", eventNumber) + return err + } + err = json.Unmarshal(eventNew, &tn1) + if err != nil { + fmt.Printf("Problem with New %s\n", eventNumber) + return err + } + + if to1.CreatedAt == tn1.CreatedAt { + es := eventNumber + ": 'created_at' should not be the same" + return errors.New(es) + } + + if to1.Namespace != tn1.Namespace { + es := eventNumber + ": 'namespace' should be the same" + return errors.New(es) + } + + if to1.Event != tn1.Event { + es := eventNumber + ": 'event' should be the same" + return errors.New(es) + } + + if to1.TraceID != tn1.TraceID { + es := eventNumber + ": 'trace_id' should be the same" + return errors.New(es) + } + + if to1.Severity != nil && tn1.Severity != nil { + if *to1.Severity != *tn1.Severity { + es := eventNumber + ": 'severity' should be the same" + return errors.New(es) + } + } + + if to1.HTTP != nil && tn1.HTTP != nil { + if to1.HTTP.StatusCode != nil && tn1.HTTP.StatusCode != nil { + if *to1.HTTP.StatusCode != *tn1.HTTP.StatusCode { + es := eventNumber + ": 'status_code' should be the same" + return errors.New(es) + } + } + + if to1.HTTP.Method != tn1.HTTP.Method { + es := eventNumber + ": 'method' should be the same" + return errors.New(es) + } + if to1.HTTP.Scheme != tn1.HTTP.Scheme { + es := eventNumber + ": 'scheme' should be the same" + return errors.New(es) + } + if to1.HTTP.Host != tn1.HTTP.Host { + es := eventNumber + ": 'host' should be the same" + return errors.New(es) + } + if to1.HTTP.Port != tn1.HTTP.Port { + es := eventNumber + ": 'port' should be the same" + return errors.New(es) + } + if to1.HTTP.Path != tn1.HTTP.Path { + es := eventNumber + ": 'path' should be the same" + return errors.New(es) + } + if to1.HTTP.Query != tn1.HTTP.Query { + es := eventNumber + ": 'query' should be the same" + return errors.New(es) + } + + if to1.HTTP.StartedAt != nil && tn1.HTTP.StartedAt != nil { + if *to1.HTTP.StartedAt != *tn1.HTTP.StartedAt { + es := eventNumber + ": 'started_at' should be the same" + return errors.New(es) + } + } + + if to1.HTTP.EndedAt != nil && tn1.HTTP.EndedAt != nil { + if *to1.HTTP.EndedAt != *tn1.HTTP.EndedAt { + es := eventNumber + ": 'ended_at' should be the same" + return errors.New(es) + } + } + + if to1.HTTP.Duration != nil && tn1.HTTP.Duration != nil { + if *to1.HTTP.Duration != *tn1.HTTP.Duration { + es := eventNumber + ": 'duration' should be the same" + return errors.New(es) + } + } + + if to1.HTTP.ResponseContentLength != tn1.HTTP.ResponseContentLength { + es := eventNumber + ": 'response_content_length' should be the same" + return errors.New(es) + } + } + + if to1.Auth != nil && tn1.Auth != nil { + //tn1.Auth.Identity = "" // put this in to 'test' test code + eq := reflect.DeepEqual(to1.Auth, tn1.Auth) + if !eq { + fmt.Printf("old: %+v\n", to1.Auth) + fmt.Printf("new: %+v\n", tn1.Auth) + + es := eventNumber + ": 'auth' should be the same" + return errors.New(es) + } + } + + if to1.Data != nil && tn1.Data != nil { + // Extract data to map[] for easy printing if there is a problem. + oldData := make(map[string]string) + + for k, v := range *to1.Data { + oldData[k] = fmt.Sprintf("%+v", v) + } + + newData := make(map[string]string) + + for k, v := range *tn1.Data { + newData[k] = fmt.Sprintf("%+v", v) + } + + //newData["proxy_name"] = "test" // put this in to 'test' test code + eq := reflect.DeepEqual(oldData, newData) + if !eq { + for k, v := range oldData { + fmt.Printf("old: %s, %+v\n", k, v) + } + for k, v := range newData { + fmt.Printf("new: %s, %+v\n", k, v) + } + + es := eventNumber + ": 'data' should be the same" + return errors.New(es) + } + } + + if to1.Error != nil && tn1.Error != nil { + //tn1.Error.Error = "" // put this in to 'test' test code + eq := reflect.DeepEqual(to1.Error, tn1.Error) + if !eq { + fmt.Printf("old: %+v\n", to1.Error) + fmt.Printf("new: %+v\n", tn1.Error) + + es := eventNumber + ": 'error' should be the same" + return errors.New(es) + } + } + + return nil +} + +func TestLogNew1eventAll(t *testing.T) { + // Test 1 event with all options passed. + // Get the old event1 and the new event and compare ... + + oldNamespace := Namespace + defer func() { + Namespace = oldNamespace // this needed for other test functions + }() + + isTestMode = false + + oldDestination := destination + oldFallbackDestination := fallbackDestination + + defer func() { + destination = oldDestination + fallbackDestination = oldFallbackDestination + isMinimalAllocations = false // put back to use old events, so as to not damage existing tests + }() + + fmt.Println("Testing: 'New Log 1 All options") + req, err := http.NewRequest("GET", "http://localhost:20000/embed/visualisations/peoplepopulationandcommunity/populationandmigration/internationalmigration/qmis/shortterminternationalmigrationestimatesforlocalauthoritiesqmi", nil) + if err != nil { + t.Errorf("%v", err) + } + + // NOTE: The gorilla library function registerVars() in pat.go V1.0.1 + // adds in the the resulting path that is reverse proxied to. + // SO: The following replicates that so that this test more closely + // matches what is seen in dp-frontend-router. + req2, err := http.NewRequest("GET", "http://localhost:20000/embed/visualisations/peoplepopulationandcommunity/populationandmigration/internationalmigration/qmis/shortterminternationalmigrationestimatesforlocalauthoritiesqmi", nil) + if err != nil { + t.Errorf("%v", err) + } + q := req2.URL.Query() // Get a copy of the query values. + q.Add(":uri", "embed/visualisations/peoplepopulationandcommunity/populationandmigration/internationalmigration/qmis/shortterminternationalmigrationestimatesforlocalauthoritiesqmi") // Add a new value to the set. + req2.URL.RawQuery = q.Encode() // Encode and assign back to the original query. + + requestID := newRequestID(16) + ctx := context.WithValue(context.Background(), common.RequestIdKey, requestID) + + errToLog := errors.New("test error") + + // start := time.Now().UTC() + // end := time.Now().UTC() + babbageURL, err := url.Parse("http://localhost:8080") + + Namespace = "BenchmarkLog" // force a fixed value as sometimes during testing this changes and does not help when comparing to other tests + + ////////////////////// + // Capture old event + + isMinimalAllocations = false // use existing Event() code + + eventError := Error(errToLog) // pull this out here to have same 'Line number' in stack trace + + // 1st Event is like the first one in Middleware() + // Capture the output of the call to Event() + var bytesWritten []byte + destination = &writer{func(b []byte) (n int, err error) { + bytesWritten = b + return len(b), nil + }} + + // Compiler go1.12 manages to call initEvent() when test code is run with the + // 'test.v' flag set ... + // BUT go1.14.6 does not have the flag 'test.v' set before initEvent() is called + // so ... in order for the following call to Event() to utilise the + // function eventWithOptionsCheck() we need to do the check again ... + if flag.Lookup("test.v") != nil { + eventFuncInst = initEvent() + } + Event(ctx, "http request received", INFO, + eventError, + HTTP(req, 0, 0, nil, nil), + Data{"destination": babbageURL, "proxy_name": "babbage"}, + Auth(USER, "tester-1")) + + // Converting what has been captured in bytesWritten with string() + // puts : !F(MISSING) + // into the output, so we do the following: + // We have to copy the result into a new buffer because the Fprintln over-writes + // the result (what a pain). + oldBuffer1 := make([]byte, 0, 2000) + for i := 0; i < len(bytesWritten); i++ { + oldBuffer1 = append(oldBuffer1, bytesWritten[i]) + } + + ////////////////////// + // Capture NEW events + + isMinimalAllocations = true // use new Event() code, for minimum memory allocations + + // 1st Event is like the first one in Middleware() + Event(ctx, "http request received", INFO, + eventError, + HTTP(req, 0, 0, nil, nil), + Data{"destination": babbageURL, "proxy_name": "babbage"}, + Auth(USER, "tester-1")) + + newBuffer1 := make([]byte, 0, 2000) + for i := 0; i < len(bytesWritten); i++ { + newBuffer1 = append(newBuffer1, bytesWritten[i]) + } + + ////////////////////// + // Compare old to new + + // The only difference should be in the 'created_at' timestamps + + if err := compareEvents("Event 1", oldBuffer1, newBuffer1); err != nil { + o1 := bytes.NewBuffer(oldBuffer1) + fmt.Fprintln(oldDestination, "Captured Event OLD 1:") + o1.WriteTo(oldDestination) // ignore any error from this as it is not important + + n1 := bytes.NewBuffer(newBuffer1) + fmt.Fprintln(oldDestination, "Captured Event NEW 1:") + n1.WriteTo(oldDestination) + + t.Errorf("%v", err) + } +} diff --git a/main.go b/main.go new file mode 100644 index 0000000..03ebe6c --- /dev/null +++ b/main.go @@ -0,0 +1,34 @@ +package main + +import ( + "context" + "errors" + "fmt" + "net/http" + + "github.com/ONSdigital/log.go/log" +) + +func main() { + fmt.Println("Check, before: Benchmarking: 'Log'") + ctx := context.Background() + errToLog := errors.New("test error") + message1 := "m1" + data1 := "d1" + data2 := "d2" + data3 := "d3" + data4 := "d4" + req, err := http.NewRequest("GET", "https://httpbin.org/get", nil) + if err != nil { + fmt.Println(err) + return + } + + log.Event(ctx, + message1, + log.INFO, + log.Data{"data_1": data1, "data_2": data2, "data_3": data3, "data_4": data4}, + log.Error(errToLog), + log.HTTP(req, 0, 0, nil, nil), + log.Auth(log.USER, "tester-1")) +} diff --git a/main_assembler/main.asm b/main_assembler/main.asm new file mode 100644 index 0000000..6354762 --- /dev/null +++ b/main_assembler/main.asm @@ -0,0 +1,11151 @@ +os.(*File).close STEXT dupok nosplit size=26 args=0x18 locals=0x0 + 0x0000 00000 (:1) TEXT os.(*File).close(SB), DUPOK|NOSPLIT|ABIInternal, $0-24 + 0x0000 00000 (:1) PCDATA $0, $-2 + 0x0000 00000 (:1) PCDATA $1, $-2 + 0x0000 00000 (:1) FUNCDATA $0, gclocals·e6397a44f8e1b6e77d0f200b4fba5269(SB) + 0x0000 00000 (:1) FUNCDATA $1, gclocals·69c1753bd5f81501d95132d08af04464(SB) + 0x0000 00000 (:1) FUNCDATA $2, gclocals·9fb7f0986f647f17cb53dda1484e0f7a(SB) + 0x0000 00000 (:1) PCDATA $0, $1 + 0x0000 00000 (:1) PCDATA $1, $1 + 0x0000 00000 (:1) MOVQ ""..this+8(SP), AX + 0x0005 00005 (:1) MOVQ (AX), AX + 0x0008 00008 (:1) PCDATA $0, $0 + 0x0008 00008 (:1) PCDATA $1, $0 + 0x0008 00008 (:1) MOVQ AX, ""..this+8(SP) + 0x000d 00013 (:1) XORPS X0, X0 + 0x0010 00016 (:1) MOVUPS X0, "".~r0+16(SP) + 0x0015 00021 (:1) JMP os.(*file).close(SB) + 0x0000 48 8b 44 24 08 48 8b 00 48 89 44 24 08 0f 57 c0 H.D$.H..H.D$..W. + 0x0010 0f 11 44 24 10 e9 00 00 00 00 ..D$...... + rel 22+4 t=8 os.(*file).close+0 +"".option.attach STEXT dupok size=100 args=0x18 locals=0x18 + 0x0000 00000 (:1) TEXT "".option.attach(SB), DUPOK|WRAPPER|ABIInternal, $24-24 + 0x0000 00000 (:1) MOVQ (TLS), CX + 0x0009 00009 (:1) CMPQ SP, 16(CX) + 0x000d 00013 (:1) PCDATA $0, $-2 + 0x000d 00013 (:1) JLS 78 + 0x000f 00015 (:1) PCDATA $0, $-1 + 0x000f 00015 (:1) SUBQ $24, SP + 0x0013 00019 (:1) MOVQ BP, 16(SP) + 0x0018 00024 (:1) LEAQ 16(SP), BP + 0x001d 00029 (:1) MOVQ 32(CX), BX + 0x0021 00033 (:1) TESTQ BX, BX + 0x0024 00036 (:1) JNE 85 + 0x0026 00038 (:1) NOP + 0x0026 00038 (:1) PCDATA $0, $-2 + 0x0026 00038 (:1) PCDATA $1, $-2 + 0x0026 00038 (:1) FUNCDATA $0, gclocals·119a6e611587191e0df24b4c94b6db11(SB) + 0x0026 00038 (:1) FUNCDATA $1, gclocals·7d2d5fca80364273fb07d5820a76fef4(SB) + 0x0026 00038 (:1) FUNCDATA $2, gclocals·568470801006e5c0dc3947ea998fe279(SB) + 0x0026 00038 (:1) PCDATA $0, $0 + 0x0026 00038 (:1) PCDATA $1, $0 + 0x0026 00038 (:1) MOVQ ""..this+32(SP), AX + 0x002b 00043 (:1) MOVQ 24(AX), AX + 0x002f 00047 (:1) PCDATA $0, $1 + 0x002f 00047 (:1) PCDATA $1, $1 + 0x002f 00047 (:1) MOVQ ""..this+40(SP), CX + 0x0034 00052 (:1) PCDATA $0, $0 + 0x0034 00052 (:1) MOVQ CX, (SP) + 0x0038 00056 (:1) PCDATA $0, $1 + 0x0038 00056 (:1) PCDATA $1, $2 + 0x0038 00056 (:1) MOVQ ""..anon0+48(SP), CX + 0x003d 00061 (:1) PCDATA $0, $0 + 0x003d 00061 (:1) MOVQ CX, 8(SP) + 0x0042 00066 (:1) CALL AX + 0x0044 00068 (:1) MOVQ 16(SP), BP + 0x0049 00073 (:1) ADDQ $24, SP + 0x004d 00077 (:1) RET + 0x004e 00078 (:1) NOP + 0x004e 00078 (:1) PCDATA $1, $-1 + 0x004e 00078 (:1) PCDATA $0, $-2 + 0x004e 00078 (:1) CALL runtime.morestack_noctxt(SB) + 0x0053 00083 (:1) PCDATA $0, $-1 + 0x0053 00083 (:1) JMP 0 + 0x0055 00085 (:1) LEAQ 32(SP), DI + 0x005a 00090 (:1) CMPQ (BX), DI + 0x005d 00093 (:1) JNE 38 + 0x005f 00095 (:1) MOVQ SP, (BX) + 0x0062 00098 (:1) JMP 38 + 0x0000 64 48 8b 0c 25 00 00 00 00 48 3b 61 10 76 3f 48 dH..%....H;a.v?H + 0x0010 83 ec 18 48 89 6c 24 10 48 8d 6c 24 10 48 8b 59 ...H.l$.H.l$.H.Y + 0x0020 20 48 85 db 75 2f 48 8b 44 24 20 48 8b 40 18 48 H..u/H.D$ H.@.H + 0x0030 8b 4c 24 28 48 89 0c 24 48 8b 4c 24 30 48 89 4c .L$(H..$H.L$0H.L + 0x0040 24 08 ff d0 48 8b 6c 24 10 48 83 c4 18 c3 e8 00 $...H.l$.H...... + 0x0050 00 00 00 eb ab 48 8d 7c 24 20 48 39 3b 75 c7 48 .....H.|$ H9;u.H + 0x0060 89 23 eb c2 .#.. + rel 5+4 t=17 TLS+0 + rel 66+0 t=11 +0 + rel 79+4 t=8 runtime.morestack_noctxt+0 +go.builtin.error.Error STEXT dupok size=110 args=0x20 locals=0x20 + 0x0000 00000 (:1) TEXT go.builtin.error.Error(SB), DUPOK|WRAPPER|ABIInternal, $32-32 + 0x0000 00000 (:1) MOVQ (TLS), CX + 0x0009 00009 (:1) CMPQ SP, 16(CX) + 0x000d 00013 (:1) PCDATA $0, $-2 + 0x000d 00013 (:1) JLS 88 + 0x000f 00015 (:1) PCDATA $0, $-1 + 0x000f 00015 (:1) SUBQ $32, SP + 0x0013 00019 (:1) MOVQ BP, 24(SP) + 0x0018 00024 (:1) LEAQ 24(SP), BP + 0x001d 00029 (:1) MOVQ 32(CX), BX + 0x0021 00033 (:1) TESTQ BX, BX + 0x0024 00036 (:1) JNE 95 + 0x0026 00038 (:1) NOP + 0x0026 00038 (:1) PCDATA $0, $-2 + 0x0026 00038 (:1) PCDATA $1, $-2 + 0x0026 00038 (:1) FUNCDATA $0, gclocals·e0f6dd6ffe13df6eefebd78fb394216d(SB) + 0x0026 00038 (:1) FUNCDATA $1, gclocals·7d2d5fca80364273fb07d5820a76fef4(SB) + 0x0026 00038 (:1) FUNCDATA $2, gclocals·568470801006e5c0dc3947ea998fe279(SB) + 0x0026 00038 (:1) PCDATA $0, $0 + 0x0026 00038 (:1) PCDATA $1, $0 + 0x0026 00038 (:1) MOVQ ""..this+40(SP), AX + 0x002b 00043 (:1) MOVQ 24(AX), AX + 0x002f 00047 (:1) PCDATA $0, $1 + 0x002f 00047 (:1) PCDATA $1, $1 + 0x002f 00047 (:1) MOVQ ""..this+48(SP), CX + 0x0034 00052 (:1) PCDATA $0, $0 + 0x0034 00052 (:1) MOVQ CX, (SP) + 0x0038 00056 (:1) CALL AX + 0x003a 00058 (:1) MOVQ 16(SP), AX + 0x003f 00063 (:1) PCDATA $0, $1 + 0x003f 00063 (:1) MOVQ 8(SP), CX + 0x0044 00068 (:1) PCDATA $0, $0 + 0x0044 00068 (:1) PCDATA $1, $2 + 0x0044 00068 (:1) MOVQ CX, "".~r0+56(SP) + 0x0049 00073 (:1) MOVQ AX, "".~r0+64(SP) + 0x004e 00078 (:1) MOVQ 24(SP), BP + 0x0053 00083 (:1) ADDQ $32, SP + 0x0057 00087 (:1) RET + 0x0058 00088 (:1) NOP + 0x0058 00088 (:1) PCDATA $1, $-1 + 0x0058 00088 (:1) PCDATA $0, $-2 + 0x0058 00088 (:1) CALL runtime.morestack_noctxt(SB) + 0x005d 00093 (:1) PCDATA $0, $-1 + 0x005d 00093 (:1) JMP 0 + 0x005f 00095 (:1) LEAQ 40(SP), DI + 0x0064 00100 (:1) CMPQ (BX), DI + 0x0067 00103 (:1) JNE 38 + 0x0069 00105 (:1) MOVQ SP, (BX) + 0x006c 00108 (:1) JMP 38 + 0x0000 64 48 8b 0c 25 00 00 00 00 48 3b 61 10 76 49 48 dH..%....H;a.vIH + 0x0010 83 ec 20 48 89 6c 24 18 48 8d 6c 24 18 48 8b 59 .. H.l$.H.l$.H.Y + 0x0020 20 48 85 db 75 39 48 8b 44 24 28 48 8b 40 18 48 H..u9H.D$(H.@.H + 0x0030 8b 4c 24 30 48 89 0c 24 ff d0 48 8b 44 24 10 48 .L$0H..$..H.D$.H + 0x0040 8b 4c 24 08 48 89 4c 24 38 48 89 44 24 40 48 8b .L$.H.L$8H.D$@H. + 0x0050 6c 24 18 48 83 c4 20 c3 e8 00 00 00 00 eb a1 48 l$.H.. ........H + 0x0060 8d 7c 24 28 48 39 3b 75 bd 48 89 23 eb b8 .|$(H9;u.H.#.. + rel 5+4 t=17 TLS+0 + rel 56+0 t=11 +0 + rel 89+4 t=8 runtime.morestack_noctxt+0 +"".main STEXT size=53 args=0x0 locals=0x8 + 0x0000 00000 (main.go:70) TEXT "".main(SB), ABIInternal, $8-0 + 0x0000 00000 (main.go:70) MOVQ (TLS), CX + 0x0009 00009 (main.go:70) CMPQ SP, 16(CX) + 0x000d 00013 (main.go:70) PCDATA $0, $-2 + 0x000d 00013 (main.go:70) JLS 46 + 0x000f 00015 (main.go:70) PCDATA $0, $-1 + 0x000f 00015 (main.go:70) SUBQ $8, SP + 0x0013 00019 (main.go:70) MOVQ BP, (SP) + 0x0017 00023 (main.go:70) LEAQ (SP), BP + 0x001b 00027 (main.go:70) PCDATA $0, $-2 + 0x001b 00027 (main.go:70) PCDATA $1, $-2 + 0x001b 00027 (main.go:70) FUNCDATA $0, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB) + 0x001b 00027 (main.go:70) FUNCDATA $1, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB) + 0x001b 00027 (main.go:70) FUNCDATA $2, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB) + 0x001b 00027 (main.go:71) PCDATA $0, $0 + 0x001b 00027 (main.go:71) PCDATA $1, $0 + 0x001b 00027 (main.go:71) CALL "".BenchmarkLog2(SB) + 0x0020 00032 (main.go:72) CALL "".BenchmarkLog3(SB) + 0x0025 00037 (main.go:73) MOVQ (SP), BP + 0x0029 00041 (main.go:73) ADDQ $8, SP + 0x002d 00045 (main.go:73) RET + 0x002e 00046 (main.go:73) NOP + 0x002e 00046 (main.go:70) PCDATA $1, $-1 + 0x002e 00046 (main.go:70) PCDATA $0, $-2 + 0x002e 00046 (main.go:70) CALL runtime.morestack_noctxt(SB) + 0x0033 00051 (main.go:70) PCDATA $0, $-1 + 0x0033 00051 (main.go:70) JMP 0 + 0x0000 64 48 8b 0c 25 00 00 00 00 48 3b 61 10 76 1f 48 dH..%....H;a.v.H + 0x0010 83 ec 08 48 89 2c 24 48 8d 2c 24 e8 00 00 00 00 ...H.,$H.,$..... + 0x0020 e8 00 00 00 00 48 8b 2c 24 48 83 c4 08 c3 e8 00 .....H.,$H...... + 0x0030 00 00 00 eb cb ..... + rel 5+4 t=17 TLS+0 + rel 28+4 t=8 "".BenchmarkLog2+0 + rel 33+4 t=8 "".BenchmarkLog3+0 + rel 47+4 t=8 runtime.morestack_noctxt+0 +"".BenchmarkLog2 STEXT size=1723 args=0x0 locals=0x1a0 + 0x0000 00000 (main.go:75) TEXT "".BenchmarkLog2(SB), ABIInternal, $416-0 + 0x0000 00000 (main.go:75) MOVQ (TLS), CX + 0x0009 00009 (main.go:75) LEAQ -288(SP), AX + 0x0011 00017 (main.go:75) CMPQ AX, 16(CX) + 0x0015 00021 (main.go:75) PCDATA $0, $-2 + 0x0015 00021 (main.go:75) JLS 1713 + 0x001b 00027 (main.go:75) PCDATA $0, $-1 + 0x001b 00027 (main.go:75) SUBQ $416, SP + 0x0022 00034 (main.go:75) MOVQ BP, 408(SP) + 0x002a 00042 (main.go:75) LEAQ 408(SP), BP + 0x0032 00050 (main.go:75) PCDATA $0, $-2 + 0x0032 00050 (main.go:75) PCDATA $1, $-2 + 0x0032 00050 (main.go:75) FUNCDATA $0, gclocals·e27b7e84a11c17d15d9903cbcdbcadf5(SB) + 0x0032 00050 (main.go:75) FUNCDATA $1, gclocals·c8631183b8c7ed17c993b092e2aa2338(SB) + 0x0032 00050 (main.go:75) FUNCDATA $2, gclocals·8ba91b37e36d29983c4f81e9de4babea(SB) + 0x0032 00050 (main.go:75) FUNCDATA $3, "".BenchmarkLog2.stkobj(SB) + 0x0032 00050 (main.go:76) PCDATA $0, $0 + 0x0032 00050 (main.go:76) PCDATA $1, $1 + 0x0032 00050 (main.go:76) XORPS X0, X0 + 0x0035 00053 (main.go:76) MOVUPS X0, ""..autotmp_35+112(SP) + 0x003a 00058 (main.go:76) PCDATA $0, $1 + 0x003a 00058 (main.go:76) LEAQ type.string(SB), AX + 0x0041 00065 (main.go:76) PCDATA $0, $0 + 0x0041 00065 (main.go:76) MOVQ AX, ""..autotmp_35+112(SP) + 0x0046 00070 (main.go:76) PCDATA $0, $2 + 0x0046 00070 (main.go:76) LEAQ ""..stmp_0(SB), CX + 0x004d 00077 (main.go:76) PCDATA $0, $0 + 0x004d 00077 (main.go:76) MOVQ CX, ""..autotmp_35+120(SP) + 0x0052 00082 () NOP + 0x0052 00082 ($GOROOT/src/fmt/print.go:274) PCDATA $0, $2 + 0x0052 00082 ($GOROOT/src/fmt/print.go:274) MOVQ os.Stdout(SB), CX + 0x0059 00089 ($GOROOT/src/fmt/print.go:274) PCDATA $0, $3 + 0x0059 00089 ($GOROOT/src/fmt/print.go:274) LEAQ go.itab.*os.File,io.Writer(SB), DX + 0x0060 00096 ($GOROOT/src/fmt/print.go:274) PCDATA $0, $2 + 0x0060 00096 ($GOROOT/src/fmt/print.go:274) MOVQ DX, (SP) + 0x0064 00100 ($GOROOT/src/fmt/print.go:274) PCDATA $0, $0 + 0x0064 00100 ($GOROOT/src/fmt/print.go:274) MOVQ CX, 8(SP) + 0x0069 00105 ($GOROOT/src/fmt/print.go:274) PCDATA $0, $2 + 0x0069 00105 ($GOROOT/src/fmt/print.go:274) PCDATA $1, $0 + 0x0069 00105 ($GOROOT/src/fmt/print.go:274) LEAQ ""..autotmp_35+112(SP), CX + 0x006e 00110 ($GOROOT/src/fmt/print.go:274) PCDATA $0, $0 + 0x006e 00110 ($GOROOT/src/fmt/print.go:274) MOVQ CX, 16(SP) + 0x0073 00115 ($GOROOT/src/fmt/print.go:274) MOVQ $1, 24(SP) + 0x007c 00124 ($GOROOT/src/fmt/print.go:274) MOVQ $1, 32(SP) + 0x0085 00133 ($GOROOT/src/fmt/print.go:274) CALL fmt.Fprintln(SB) + 0x008a 00138 (main.go:77) XCHGL AX, AX + 0x008b 00139 ($GOROOT/src/errors/errors.go:59) PCDATA $0, $1 + 0x008b 00139 ($GOROOT/src/errors/errors.go:59) LEAQ type.errors.errorString(SB), AX + 0x0092 00146 ($GOROOT/src/errors/errors.go:59) PCDATA $0, $0 + 0x0092 00146 ($GOROOT/src/errors/errors.go:59) MOVQ AX, (SP) + 0x0096 00150 ($GOROOT/src/errors/errors.go:59) CALL runtime.newobject(SB) + 0x009b 00155 ($GOROOT/src/errors/errors.go:59) PCDATA $0, $1 + 0x009b 00155 ($GOROOT/src/errors/errors.go:59) MOVQ 8(SP), AX + 0x00a0 00160 ($GOROOT/src/errors/errors.go:59) PCDATA $1, $2 + 0x00a0 00160 ($GOROOT/src/errors/errors.go:59) MOVQ AX, ""..autotmp_86+96(SP) + 0x00a5 00165 ($GOROOT/src/errors/errors.go:59) MOVQ $10, 8(AX) + 0x00ad 00173 ($GOROOT/src/errors/errors.go:59) PCDATA $0, $4 + 0x00ad 00173 ($GOROOT/src/errors/errors.go:59) LEAQ go.string."test error"(SB), CX + 0x00b4 00180 ($GOROOT/src/errors/errors.go:59) PCDATA $0, $0 + 0x00b4 00180 ($GOROOT/src/errors/errors.go:59) MOVQ CX, (AX) + 0x00b7 00183 (main.go:84) PCDATA $1, $3 + 0x00b7 00183 (main.go:84) XORPS X0, X0 + 0x00ba 00186 (main.go:84) MOVUPS X0, "".opts+152(SP) + 0x00c2 00194 (main.go:84) MOVUPS X0, "".opts+168(SP) + 0x00ca 00202 (main.go:84) MOVUPS X0, "".opts+184(SP) + 0x00d2 00210 (main.go:84) MOVUPS X0, "".opts+200(SP) + 0x00da 00218 (main.go:86) PCDATA $0, $2 + 0x00da 00218 (main.go:86) LEAQ go.itab."".severity,"".option(SB), CX + 0x00e1 00225 (main.go:86) PCDATA $0, $0 + 0x00e1 00225 (main.go:86) MOVQ CX, "".opts+152(SP) + 0x00e9 00233 (main.go:86) PCDATA $0, $2 + 0x00e9 00233 (main.go:86) LEAQ ""..stmp_1(SB), CX + 0x00f0 00240 (main.go:86) PCDATA $0, $0 + 0x00f0 00240 (main.go:86) MOVQ CX, "".opts+160(SP) + 0x00f8 00248 (main.go:87) CALL runtime.makemap_small(SB) + 0x00fd 00253 (main.go:87) PCDATA $0, $1 + 0x00fd 00253 (main.go:87) MOVQ (SP), AX + 0x0101 00257 (main.go:87) PCDATA $0, $0 + 0x0101 00257 (main.go:87) PCDATA $1, $4 + 0x0101 00257 (main.go:87) MOVQ AX, ""..autotmp_87+88(SP) + 0x0106 00262 (main.go:87) PCDATA $0, $2 + 0x0106 00262 (main.go:87) LEAQ go.string."d1"(SB), CX + 0x010d 00269 (main.go:87) PCDATA $0, $0 + 0x010d 00269 (main.go:87) MOVQ CX, (SP) + 0x0111 00273 (main.go:87) MOVQ $2, 8(SP) + 0x011a 00282 (main.go:87) CALL runtime.convTstring(SB) + 0x011f 00287 (main.go:87) PCDATA $0, $1 + 0x011f 00287 (main.go:87) MOVQ 16(SP), AX + 0x0124 00292 (main.go:87) PCDATA $0, $0 + 0x0124 00292 (main.go:87) PCDATA $1, $5 + 0x0124 00292 (main.go:87) MOVQ AX, ""..autotmp_88+80(SP) + 0x0129 00297 (main.go:87) PCDATA $0, $2 + 0x0129 00297 (main.go:87) LEAQ type."".Data(SB), CX + 0x0130 00304 (main.go:87) PCDATA $0, $0 + 0x0130 00304 (main.go:87) MOVQ CX, (SP) + 0x0134 00308 (main.go:87) PCDATA $0, $5 + 0x0134 00308 (main.go:87) MOVQ ""..autotmp_87+88(SP), DX + 0x0139 00313 (main.go:87) PCDATA $0, $0 + 0x0139 00313 (main.go:87) MOVQ DX, 8(SP) + 0x013e 00318 (main.go:87) PCDATA $0, $6 + 0x013e 00318 (main.go:87) LEAQ go.string."data_1"(SB), BX + 0x0145 00325 (main.go:87) PCDATA $0, $0 + 0x0145 00325 (main.go:87) MOVQ BX, 16(SP) + 0x014a 00330 (main.go:87) MOVQ $6, 24(SP) + 0x0153 00339 (main.go:87) CALL runtime.mapassign_faststr(SB) + 0x0158 00344 (main.go:87) PCDATA $0, $1 + 0x0158 00344 (main.go:87) MOVQ 32(SP), AX + 0x015d 00349 (main.go:87) PCDATA $0, $4 + 0x015d 00349 (main.go:87) LEAQ type.string(SB), CX + 0x0164 00356 (main.go:87) PCDATA $0, $1 + 0x0164 00356 (main.go:87) MOVQ CX, (AX) + 0x0167 00359 (main.go:87) PCDATA $0, $-2 + 0x0167 00359 (main.go:87) PCDATA $1, $-2 + 0x0167 00359 (main.go:87) CMPL runtime.writeBarrier(SB), $0 + 0x016e 00366 (main.go:87) JNE 1694 + 0x0174 00372 (main.go:87) MOVQ ""..autotmp_88+80(SP), DX + 0x0179 00377 (main.go:87) MOVQ DX, 8(AX) + 0x017d 00381 (main.go:87) PCDATA $0, $1 + 0x017d 00381 (main.go:87) PCDATA $1, $4 + 0x017d 00381 (main.go:87) LEAQ go.string."d2"(SB), AX + 0x0184 00388 (main.go:87) PCDATA $0, $0 + 0x0184 00388 (main.go:87) MOVQ AX, (SP) + 0x0188 00392 (main.go:87) MOVQ $2, 8(SP) + 0x0191 00401 (main.go:87) CALL runtime.convTstring(SB) + 0x0196 00406 (main.go:87) PCDATA $0, $1 + 0x0196 00406 (main.go:87) MOVQ 16(SP), AX + 0x019b 00411 (main.go:87) PCDATA $0, $0 + 0x019b 00411 (main.go:87) PCDATA $1, $5 + 0x019b 00411 (main.go:87) MOVQ AX, ""..autotmp_88+80(SP) + 0x01a0 00416 (main.go:87) PCDATA $0, $2 + 0x01a0 00416 (main.go:87) LEAQ type."".Data(SB), CX + 0x01a7 00423 (main.go:87) PCDATA $0, $0 + 0x01a7 00423 (main.go:87) MOVQ CX, (SP) + 0x01ab 00427 (main.go:87) PCDATA $0, $5 + 0x01ab 00427 (main.go:87) MOVQ ""..autotmp_87+88(SP), DX + 0x01b0 00432 (main.go:87) PCDATA $0, $0 + 0x01b0 00432 (main.go:87) MOVQ DX, 8(SP) + 0x01b5 00437 (main.go:87) PCDATA $0, $6 + 0x01b5 00437 (main.go:87) LEAQ go.string."data_2"(SB), BX + 0x01bc 00444 (main.go:87) PCDATA $0, $0 + 0x01bc 00444 (main.go:87) MOVQ BX, 16(SP) + 0x01c1 00449 (main.go:87) MOVQ $6, 24(SP) + 0x01ca 00458 (main.go:87) CALL runtime.mapassign_faststr(SB) + 0x01cf 00463 (main.go:87) PCDATA $0, $1 + 0x01cf 00463 (main.go:87) MOVQ 32(SP), AX + 0x01d4 00468 (main.go:87) PCDATA $0, $4 + 0x01d4 00468 (main.go:87) LEAQ type.string(SB), CX + 0x01db 00475 (main.go:87) PCDATA $0, $1 + 0x01db 00475 (main.go:87) MOVQ CX, (AX) + 0x01de 00478 (main.go:87) PCDATA $0, $-2 + 0x01de 00478 (main.go:87) PCDATA $1, $-2 + 0x01de 00478 (main.go:87) CMPL runtime.writeBarrier(SB), $0 + 0x01e5 00485 (main.go:87) JNE 1675 + 0x01eb 00491 (main.go:87) MOVQ ""..autotmp_88+80(SP), DX + 0x01f0 00496 (main.go:87) MOVQ DX, 8(AX) + 0x01f4 00500 (main.go:87) PCDATA $0, $1 + 0x01f4 00500 (main.go:87) PCDATA $1, $4 + 0x01f4 00500 (main.go:87) LEAQ go.string."d3"(SB), AX + 0x01fb 00507 (main.go:87) PCDATA $0, $0 + 0x01fb 00507 (main.go:87) MOVQ AX, (SP) + 0x01ff 00511 (main.go:87) MOVQ $2, 8(SP) + 0x0208 00520 (main.go:87) CALL runtime.convTstring(SB) + 0x020d 00525 (main.go:87) PCDATA $0, $1 + 0x020d 00525 (main.go:87) MOVQ 16(SP), AX + 0x0212 00530 (main.go:87) PCDATA $0, $0 + 0x0212 00530 (main.go:87) PCDATA $1, $5 + 0x0212 00530 (main.go:87) MOVQ AX, ""..autotmp_88+80(SP) + 0x0217 00535 (main.go:87) PCDATA $0, $2 + 0x0217 00535 (main.go:87) LEAQ type."".Data(SB), CX + 0x021e 00542 (main.go:87) PCDATA $0, $0 + 0x021e 00542 (main.go:87) MOVQ CX, (SP) + 0x0222 00546 (main.go:87) PCDATA $0, $5 + 0x0222 00546 (main.go:87) MOVQ ""..autotmp_87+88(SP), DX + 0x0227 00551 (main.go:87) PCDATA $0, $0 + 0x0227 00551 (main.go:87) MOVQ DX, 8(SP) + 0x022c 00556 (main.go:87) PCDATA $0, $6 + 0x022c 00556 (main.go:87) LEAQ go.string."data_3"(SB), BX + 0x0233 00563 (main.go:87) PCDATA $0, $0 + 0x0233 00563 (main.go:87) MOVQ BX, 16(SP) + 0x0238 00568 (main.go:87) MOVQ $6, 24(SP) + 0x0241 00577 (main.go:87) CALL runtime.mapassign_faststr(SB) + 0x0246 00582 (main.go:87) PCDATA $0, $1 + 0x0246 00582 (main.go:87) MOVQ 32(SP), AX + 0x024b 00587 (main.go:87) PCDATA $0, $4 + 0x024b 00587 (main.go:87) LEAQ type.string(SB), CX + 0x0252 00594 (main.go:87) PCDATA $0, $1 + 0x0252 00594 (main.go:87) MOVQ CX, (AX) + 0x0255 00597 (main.go:87) PCDATA $0, $-2 + 0x0255 00597 (main.go:87) PCDATA $1, $-2 + 0x0255 00597 (main.go:87) CMPL runtime.writeBarrier(SB), $0 + 0x025c 00604 (main.go:87) JNE 1656 + 0x0262 00610 (main.go:87) MOVQ ""..autotmp_88+80(SP), DX + 0x0267 00615 (main.go:87) MOVQ DX, 8(AX) + 0x026b 00619 (main.go:87) PCDATA $0, $1 + 0x026b 00619 (main.go:87) PCDATA $1, $4 + 0x026b 00619 (main.go:87) LEAQ go.string."d4"(SB), AX + 0x0272 00626 (main.go:87) PCDATA $0, $0 + 0x0272 00626 (main.go:87) MOVQ AX, (SP) + 0x0276 00630 (main.go:87) MOVQ $2, 8(SP) + 0x027f 00639 (main.go:87) CALL runtime.convTstring(SB) + 0x0284 00644 (main.go:87) PCDATA $0, $1 + 0x0284 00644 (main.go:87) MOVQ 16(SP), AX + 0x0289 00649 (main.go:87) PCDATA $0, $0 + 0x0289 00649 (main.go:87) PCDATA $1, $5 + 0x0289 00649 (main.go:87) MOVQ AX, ""..autotmp_88+80(SP) + 0x028e 00654 (main.go:87) PCDATA $0, $2 + 0x028e 00654 (main.go:87) LEAQ type."".Data(SB), CX + 0x0295 00661 (main.go:87) PCDATA $0, $0 + 0x0295 00661 (main.go:87) MOVQ CX, (SP) + 0x0299 00665 (main.go:87) PCDATA $0, $5 + 0x0299 00665 (main.go:87) MOVQ ""..autotmp_87+88(SP), DX + 0x029e 00670 (main.go:87) PCDATA $0, $0 + 0x029e 00670 (main.go:87) MOVQ DX, 8(SP) + 0x02a3 00675 (main.go:87) PCDATA $0, $6 + 0x02a3 00675 (main.go:87) LEAQ go.string."data_4"(SB), BX + 0x02aa 00682 (main.go:87) PCDATA $0, $0 + 0x02aa 00682 (main.go:87) MOVQ BX, 16(SP) + 0x02af 00687 (main.go:87) MOVQ $6, 24(SP) + 0x02b8 00696 (main.go:87) CALL runtime.mapassign_faststr(SB) + 0x02bd 00701 (main.go:87) PCDATA $0, $1 + 0x02bd 00701 (main.go:87) MOVQ 32(SP), AX + 0x02c2 00706 (main.go:87) PCDATA $0, $4 + 0x02c2 00706 (main.go:87) LEAQ type.string(SB), CX + 0x02c9 00713 (main.go:87) PCDATA $0, $1 + 0x02c9 00713 (main.go:87) MOVQ CX, (AX) + 0x02cc 00716 (main.go:87) PCDATA $0, $-2 + 0x02cc 00716 (main.go:87) PCDATA $1, $-2 + 0x02cc 00716 (main.go:87) CMPL runtime.writeBarrier(SB), $0 + 0x02d3 00723 (main.go:87) JNE 1637 + 0x02d9 00729 (main.go:87) MOVQ ""..autotmp_88+80(SP), DX + 0x02de 00734 (main.go:87) MOVQ DX, 8(AX) + 0x02e2 00738 (main.go:87) PCDATA $0, $1 + 0x02e2 00738 (main.go:87) PCDATA $1, $4 + 0x02e2 00738 (main.go:87) LEAQ go.itab."".Data,"".option(SB), AX + 0x02e9 00745 (main.go:87) PCDATA $0, $0 + 0x02e9 00745 (main.go:87) MOVQ AX, "".opts+168(SP) + 0x02f1 00753 (main.go:87) PCDATA $0, $2 + 0x02f1 00753 (main.go:87) PCDATA $1, $3 + 0x02f1 00753 (main.go:87) MOVQ ""..autotmp_87+88(SP), CX + 0x02f6 00758 (main.go:87) PCDATA $0, $0 + 0x02f6 00758 (main.go:87) MOVQ CX, "".opts+176(SP) + 0x02fe 00766 (main.go:88) PCDATA $0, $2 + 0x02fe 00766 (main.go:88) LEAQ go.itab.*errors.errorString,error(SB), CX + 0x0305 00773 (main.go:88) PCDATA $0, $0 + 0x0305 00773 (main.go:88) MOVQ CX, (SP) + 0x0309 00777 (main.go:88) PCDATA $0, $2 + 0x0309 00777 (main.go:88) PCDATA $1, $6 + 0x0309 00777 (main.go:88) MOVQ ""..autotmp_86+96(SP), CX + 0x030e 00782 (main.go:88) PCDATA $0, $0 + 0x030e 00782 (main.go:88) MOVQ CX, 8(SP) + 0x0313 00787 (main.go:88) CALL "".Error(SB) + 0x0318 00792 (main.go:88) PCDATA $0, $1 + 0x0318 00792 (main.go:88) MOVQ 24(SP), AX + 0x031d 00797 (main.go:88) MOVQ 16(SP), CX + 0x0322 00802 (main.go:88) MOVQ CX, "".opts+184(SP) + 0x032a 00810 (main.go:88) PCDATA $0, $0 + 0x032a 00810 (main.go:88) MOVQ AX, "".opts+192(SP) + 0x0332 00818 (main.go:89) CALL runtime.makemap_small(SB) + 0x0337 00823 (main.go:89) PCDATA $0, $1 + 0x0337 00823 (main.go:89) MOVQ (SP), AX + 0x033b 00827 (main.go:89) PCDATA $0, $0 + 0x033b 00827 (main.go:89) PCDATA $1, $7 + 0x033b 00827 (main.go:89) MOVQ AX, ""..autotmp_87+88(SP) + 0x0340 00832 (main.go:89) PCDATA $0, $2 + 0x0340 00832 (main.go:89) LEAQ go.string."d4"(SB), CX + 0x0347 00839 (main.go:89) PCDATA $0, $0 + 0x0347 00839 (main.go:89) MOVQ CX, (SP) + 0x034b 00843 (main.go:89) MOVQ $2, 8(SP) + 0x0354 00852 (main.go:89) CALL runtime.convTstring(SB) + 0x0359 00857 (main.go:89) PCDATA $0, $1 + 0x0359 00857 (main.go:89) MOVQ 16(SP), AX + 0x035e 00862 (main.go:89) PCDATA $0, $0 + 0x035e 00862 (main.go:89) PCDATA $1, $8 + 0x035e 00862 (main.go:89) MOVQ AX, ""..autotmp_88+80(SP) + 0x0363 00867 (main.go:89) PCDATA $0, $2 + 0x0363 00867 (main.go:89) LEAQ type."".Data(SB), CX + 0x036a 00874 (main.go:89) PCDATA $0, $0 + 0x036a 00874 (main.go:89) MOVQ CX, (SP) + 0x036e 00878 (main.go:89) PCDATA $0, $5 + 0x036e 00878 (main.go:89) MOVQ ""..autotmp_87+88(SP), DX + 0x0373 00883 (main.go:89) PCDATA $0, $0 + 0x0373 00883 (main.go:89) MOVQ DX, 8(SP) + 0x0378 00888 (main.go:89) PCDATA $0, $6 + 0x0378 00888 (main.go:89) LEAQ go.string."data_4"(SB), BX + 0x037f 00895 (main.go:89) PCDATA $0, $0 + 0x037f 00895 (main.go:89) MOVQ BX, 16(SP) + 0x0384 00900 (main.go:89) MOVQ $6, 24(SP) + 0x038d 00909 (main.go:89) CALL runtime.mapassign_faststr(SB) + 0x0392 00914 (main.go:89) PCDATA $0, $1 + 0x0392 00914 (main.go:89) MOVQ 32(SP), AX + 0x0397 00919 (main.go:89) PCDATA $0, $4 + 0x0397 00919 (main.go:89) LEAQ type.string(SB), CX + 0x039e 00926 (main.go:89) PCDATA $0, $1 + 0x039e 00926 (main.go:89) MOVQ CX, (AX) + 0x03a1 00929 (main.go:89) PCDATA $0, $-2 + 0x03a1 00929 (main.go:89) PCDATA $1, $-2 + 0x03a1 00929 (main.go:89) CMPL runtime.writeBarrier(SB), $0 + 0x03a8 00936 (main.go:89) JNE 1618 + 0x03ae 00942 (main.go:89) MOVQ ""..autotmp_88+80(SP), DX + 0x03b3 00947 (main.go:89) MOVQ DX, 8(AX) + 0x03b7 00951 (main.go:89) PCDATA $0, $1 + 0x03b7 00951 (main.go:89) PCDATA $1, $7 + 0x03b7 00951 (main.go:89) LEAQ go.string."d2"(SB), AX + 0x03be 00958 (main.go:89) PCDATA $0, $0 + 0x03be 00958 (main.go:89) MOVQ AX, (SP) + 0x03c2 00962 (main.go:89) MOVQ $2, 8(SP) + 0x03cb 00971 (main.go:89) CALL runtime.convTstring(SB) + 0x03d0 00976 (main.go:89) PCDATA $0, $1 + 0x03d0 00976 (main.go:89) MOVQ 16(SP), AX + 0x03d5 00981 (main.go:89) PCDATA $0, $0 + 0x03d5 00981 (main.go:89) PCDATA $1, $8 + 0x03d5 00981 (main.go:89) MOVQ AX, ""..autotmp_88+80(SP) + 0x03da 00986 (main.go:89) PCDATA $0, $2 + 0x03da 00986 (main.go:89) LEAQ type."".Data(SB), CX + 0x03e1 00993 (main.go:89) PCDATA $0, $0 + 0x03e1 00993 (main.go:89) MOVQ CX, (SP) + 0x03e5 00997 (main.go:89) PCDATA $0, $2 + 0x03e5 00997 (main.go:89) MOVQ ""..autotmp_87+88(SP), CX + 0x03ea 01002 (main.go:89) PCDATA $0, $0 + 0x03ea 01002 (main.go:89) MOVQ CX, 8(SP) + 0x03ef 01007 (main.go:89) PCDATA $0, $5 + 0x03ef 01007 (main.go:89) LEAQ go.string."data_2"(SB), DX + 0x03f6 01014 (main.go:89) PCDATA $0, $0 + 0x03f6 01014 (main.go:89) MOVQ DX, 16(SP) + 0x03fb 01019 (main.go:89) MOVQ $6, 24(SP) + 0x0404 01028 (main.go:89) CALL runtime.mapassign_faststr(SB) + 0x0409 01033 (main.go:89) PCDATA $0, $1 + 0x0409 01033 (main.go:89) MOVQ 32(SP), AX + 0x040e 01038 (main.go:89) PCDATA $0, $4 + 0x040e 01038 (main.go:89) LEAQ type.string(SB), CX + 0x0415 01045 (main.go:89) PCDATA $0, $1 + 0x0415 01045 (main.go:89) MOVQ CX, (AX) + 0x0418 01048 (main.go:89) PCDATA $0, $-2 + 0x0418 01048 (main.go:89) PCDATA $1, $-2 + 0x0418 01048 (main.go:89) CMPL runtime.writeBarrier(SB), $0 + 0x041f 01055 (main.go:89) JNE 1599 + 0x0425 01061 (main.go:89) MOVQ ""..autotmp_88+80(SP), CX + 0x042a 01066 (main.go:89) MOVQ CX, 8(AX) + 0x042e 01070 (main.go:89) PCDATA $0, $1 + 0x042e 01070 (main.go:89) PCDATA $1, $7 + 0x042e 01070 (main.go:89) LEAQ go.itab."".Data,"".option(SB), AX + 0x0435 01077 (main.go:89) PCDATA $0, $0 + 0x0435 01077 (main.go:89) MOVQ AX, "".opts+200(SP) + 0x043d 01085 (main.go:89) PCDATA $0, $1 + 0x043d 01085 (main.go:89) PCDATA $1, $6 + 0x043d 01085 (main.go:89) MOVQ ""..autotmp_87+88(SP), AX + 0x0442 01090 (main.go:89) PCDATA $0, $0 + 0x0442 01090 (main.go:89) MOVQ AX, "".opts+208(SP) + 0x044a 01098 (main.go:91) PCDATA $0, $1 + 0x044a 01098 (main.go:91) LEAQ type."".EventData(SB), AX + 0x0451 01105 (main.go:91) PCDATA $0, $0 + 0x0451 01105 (main.go:91) MOVQ AX, (SP) + 0x0455 01109 (main.go:91) CALL runtime.newobject(SB) + 0x045a 01114 (main.go:91) PCDATA $0, $1 + 0x045a 01114 (main.go:91) MOVQ 8(SP), AX + 0x045f 01119 (main.go:91) PCDATA $0, $0 + 0x045f 01119 (main.go:91) PCDATA $1, $9 + 0x045f 01119 (main.go:91) MOVQ AX, "".&e+104(SP) + 0x0464 01124 (main.go:92) CALL time.Now(SB) + 0x0469 01129 (main.go:92) MOVQ 8(SP), AX + 0x046e 01134 (main.go:92) MOVQ (SP), CX + 0x0472 01138 (main.go:92) PCDATA $0, $5 + 0x0472 01138 (main.go:92) MOVQ 16(SP), DX + 0x0477 01143 (main.go:92) PCDATA $1, $10 + 0x0477 01143 (main.go:92) MOVQ CX, time.t+128(SP) + 0x047f 01151 (main.go:92) MOVQ AX, time.t+136(SP) + 0x0487 01159 (main.go:92) PCDATA $0, $0 + 0x0487 01159 (main.go:92) MOVQ DX, time.t+144(SP) + 0x048f 01167 () NOP + 0x048f 01167 ($GOROOT/src/time/time.go:1109) XCHGL AX, AX + 0x0490 01168 ($GOROOT/src/time/time.go:201) XCHGL AX, AX + 0x0491 01169 ($GOROOT/src/time/time.go:207) BTQ $63, CX + 0x0496 01174 ($GOROOT/src/time/time.go:207) JCC 1221 + 0x0498 01176 ($GOROOT/src/time/time.go:208) PCDATA $0, $-1 + 0x0498 01176 ($GOROOT/src/time/time.go:208) PCDATA $1, $-1 + 0x0498 01176 () NOP + 0x0498 01176 ($GOROOT/src/time/time.go:170) PCDATA $0, $0 + 0x0498 01176 ($GOROOT/src/time/time.go:170) PCDATA $1, $10 + 0x0498 01176 ($GOROOT/src/time/time.go:170) MOVQ CX, AX + 0x049b 01179 ($GOROOT/src/time/time.go:170) SHLQ $1, CX + 0x049e 01182 ($GOROOT/src/time/time.go:170) SHRQ $31, CX + 0x04a2 01186 ($GOROOT/src/time/time.go:170) MOVQ $59453308800, DX + 0x04ac 01196 ($GOROOT/src/time/time.go:170) ADDQ DX, CX + 0x04af 01199 ($GOROOT/src/time/time.go:208) MOVQ CX, time.t+136(SP) + 0x04b7 01207 ($GOROOT/src/time/time.go:209) ANDQ $1073741823, AX + 0x04bd 01213 ($GOROOT/src/time/time.go:209) MOVQ AX, time.t+128(SP) + 0x04c5 01221 ($GOROOT/src/time/time.go:202) MOVQ $0, time.t+144(SP) + 0x04d1 01233 (main.go:92) MOVQ time.t+128(SP), AX + 0x04d9 01241 (main.go:92) PCDATA $1, $9 + 0x04d9 01241 (main.go:92) MOVQ time.t+136(SP), CX + 0x04e1 01249 (main.go:91) PCDATA $0, $7 + 0x04e1 01249 (main.go:91) PCDATA $1, $11 + 0x04e1 01249 (main.go:91) LEAQ ""..autotmp_56+280(SP), DI + 0x04e9 01257 (main.go:91) XORPS X0, X0 + 0x04ec 01260 (main.go:91) PCDATA $0, $0 + 0x04ec 01260 (main.go:91) DUFFZERO $266 + 0x04ff 01279 (main.go:92) MOVQ AX, ""..autotmp_56+280(SP) + 0x0507 01287 (main.go:92) MOVQ CX, ""..autotmp_56+288(SP) + 0x050f 01295 (main.go:93) MOVQ "".Namespace+8(SB), AX + 0x0516 01302 (main.go:93) PCDATA $0, $2 + 0x0516 01302 (main.go:93) MOVQ "".Namespace(SB), CX + 0x051d 01309 (main.go:93) PCDATA $0, $0 + 0x051d 01309 (main.go:93) MOVQ CX, ""..autotmp_56+304(SP) + 0x0525 01317 (main.go:93) MOVQ AX, ""..autotmp_56+312(SP) + 0x052d 01325 (main.go:94) PCDATA $0, $1 + 0x052d 01325 (main.go:94) LEAQ go.string."m1"(SB), AX + 0x0534 01332 (main.go:94) PCDATA $0, $0 + 0x0534 01332 (main.go:94) MOVQ AX, ""..autotmp_56+320(SP) + 0x053c 01340 (main.go:94) MOVQ $2, ""..autotmp_56+328(SP) + 0x0548 01352 (main.go:91) PCDATA $0, $-2 + 0x0548 01352 (main.go:91) PCDATA $1, $-2 + 0x0548 01352 (main.go:91) CMPL runtime.writeBarrier(SB), $0 + 0x054f 01359 (main.go:91) JNE 1555 + 0x0555 01365 (main.go:91) MOVQ "".&e+104(SP), DI + 0x055a 01370 (main.go:91) LEAQ ""..autotmp_56+280(SP), SI + 0x0562 01378 (main.go:91) DUFFCOPY $784 + 0x0575 01397 (main.go:99) PCDATA $0, $0 + 0x0575 01397 (main.go:99) PCDATA $1, $12 + 0x0575 01397 (main.go:99) MOVUPS "".opts+152(SP), X0 + 0x057d 01405 (main.go:99) MOVUPS X0, ""..autotmp_31+216(SP) + 0x0585 01413 (main.go:99) MOVUPS "".opts+168(SP), X0 + 0x058d 01421 (main.go:99) MOVUPS X0, ""..autotmp_31+232(SP) + 0x0595 01429 (main.go:99) MOVUPS "".opts+184(SP), X0 + 0x059d 01437 (main.go:99) MOVUPS X0, ""..autotmp_31+248(SP) + 0x05a5 01445 (main.go:99) PCDATA $1, $13 + 0x05a5 01445 (main.go:99) MOVUPS "".opts+200(SP), X0 + 0x05ad 01453 (main.go:99) MOVUPS X0, ""..autotmp_31+264(SP) + 0x05b5 01461 (main.go:99) PCDATA $0, $1 + 0x05b5 01461 (main.go:99) PCDATA $1, $14 + 0x05b5 01461 (main.go:99) LEAQ ""..autotmp_31+216(SP), AX + 0x05bd 01469 (main.go:99) XORL CX, CX + 0x05bf 01471 (main.go:99) JMP 1488 + 0x05c1 01473 (main.go:99) PCDATA $0, $5 + 0x05c1 01473 (main.go:99) MOVQ ""..autotmp_89+72(SP), DX + 0x05c6 01478 (main.go:99) ADDQ $16, DX + 0x05ca 01482 (main.go:99) MOVQ AX, CX + 0x05cd 01485 (main.go:99) PCDATA $0, $1 + 0x05cd 01485 (main.go:99) MOVQ DX, AX + 0x05d0 01488 (main.go:99) PCDATA $1, $15 + 0x05d0 01488 (main.go:99) MOVQ AX, ""..autotmp_89+72(SP) + 0x05d5 01493 (main.go:99) MOVQ CX, ""..autotmp_90+64(SP) + 0x05da 01498 (main.go:99) MOVQ (AX), DX + 0x05dd 01501 (main.go:99) PCDATA $0, $6 + 0x05dd 01501 (main.go:99) MOVQ 8(AX), BX + 0x05e1 01505 (main.go:103) MOVQ 24(DX), DX + 0x05e5 01509 (main.go:103) PCDATA $0, $0 + 0x05e5 01509 (main.go:103) MOVQ BX, (SP) + 0x05e9 01513 (main.go:103) PCDATA $0, $6 + 0x05e9 01513 (main.go:103) MOVQ "".&e+104(SP), BX + 0x05ee 01518 (main.go:103) PCDATA $0, $0 + 0x05ee 01518 (main.go:103) MOVQ BX, 8(SP) + 0x05f3 01523 (main.go:103) CALL DX + 0x05f5 01525 (main.go:99) MOVQ ""..autotmp_90+64(SP), AX + 0x05fa 01530 (main.go:99) INCQ AX + 0x05fd 01533 (main.go:99) CMPQ AX, $4 + 0x0601 01537 (main.go:99) JLT 1473 + 0x0603 01539 (main.go:99) PCDATA $0, $-1 + 0x0603 01539 (main.go:99) PCDATA $1, $-1 + 0x0603 01539 (main.go:99) MOVQ 408(SP), BP + 0x060b 01547 (main.go:99) ADDQ $416, SP + 0x0612 01554 (main.go:99) RET + 0x0613 01555 (main.go:91) PCDATA $0, $-2 + 0x0613 01555 (main.go:91) PCDATA $1, $-2 + 0x0613 01555 (main.go:91) LEAQ type."".EventData(SB), AX + 0x061a 01562 (main.go:91) MOVQ AX, (SP) + 0x061e 01566 (main.go:91) MOVQ "".&e+104(SP), AX + 0x0623 01571 (main.go:91) MOVQ AX, 8(SP) + 0x0628 01576 (main.go:91) LEAQ ""..autotmp_56+280(SP), CX + 0x0630 01584 (main.go:91) MOVQ CX, 16(SP) + 0x0635 01589 (main.go:91) CALL runtime.typedmemmove(SB) + 0x063a 01594 (main.go:91) JMP 1397 + 0x063f 01599 (main.go:89) LEAQ 8(AX), DI + 0x0643 01603 (main.go:89) MOVQ ""..autotmp_88+80(SP), AX + 0x0648 01608 (main.go:89) CALL runtime.gcWriteBarrier(SB) + 0x064d 01613 (main.go:89) JMP 1070 + 0x0652 01618 (main.go:89) LEAQ 8(AX), DI + 0x0656 01622 (main.go:89) MOVQ ""..autotmp_88+80(SP), AX + 0x065b 01627 (main.go:89) CALL runtime.gcWriteBarrier(SB) + 0x0660 01632 (main.go:89) JMP 951 + 0x0665 01637 (main.go:87) LEAQ 8(AX), DI + 0x0669 01641 (main.go:87) MOVQ ""..autotmp_88+80(SP), AX + 0x066e 01646 (main.go:87) CALL runtime.gcWriteBarrier(SB) + 0x0673 01651 (main.go:87) JMP 738 + 0x0678 01656 (main.go:87) LEAQ 8(AX), DI + 0x067c 01660 (main.go:87) MOVQ ""..autotmp_88+80(SP), AX + 0x0681 01665 (main.go:87) CALL runtime.gcWriteBarrier(SB) + 0x0686 01670 (main.go:87) JMP 619 + 0x068b 01675 (main.go:87) LEAQ 8(AX), DI + 0x068f 01679 (main.go:87) MOVQ ""..autotmp_88+80(SP), AX + 0x0694 01684 (main.go:87) CALL runtime.gcWriteBarrier(SB) + 0x0699 01689 (main.go:87) JMP 500 + 0x069e 01694 (main.go:87) LEAQ 8(AX), DI + 0x06a2 01698 (main.go:87) MOVQ ""..autotmp_88+80(SP), AX + 0x06a7 01703 (main.go:87) CALL runtime.gcWriteBarrier(SB) + 0x06ac 01708 (main.go:87) JMP 381 + 0x06b1 01713 (main.go:87) NOP + 0x06b1 01713 (main.go:75) PCDATA $1, $-1 + 0x06b1 01713 (main.go:75) PCDATA $0, $-2 + 0x06b1 01713 (main.go:75) CALL runtime.morestack_noctxt(SB) + 0x06b6 01718 (main.go:75) PCDATA $0, $-1 + 0x06b6 01718 (main.go:75) JMP 0 + 0x0000 64 48 8b 0c 25 00 00 00 00 48 8d 84 24 e0 fe ff dH..%....H..$... + 0x0010 ff 48 3b 41 10 0f 86 96 06 00 00 48 81 ec a0 01 .H;A.......H.... + 0x0020 00 00 48 89 ac 24 98 01 00 00 48 8d ac 24 98 01 ..H..$....H..$.. + 0x0030 00 00 0f 57 c0 0f 11 44 24 70 48 8d 05 00 00 00 ...W...D$pH..... + 0x0040 00 48 89 44 24 70 48 8d 0d 00 00 00 00 48 89 4c .H.D$pH......H.L + 0x0050 24 78 48 8b 0d 00 00 00 00 48 8d 15 00 00 00 00 $xH......H...... + 0x0060 48 89 14 24 48 89 4c 24 08 48 8d 4c 24 70 48 89 H..$H.L$.H.L$pH. + 0x0070 4c 24 10 48 c7 44 24 18 01 00 00 00 48 c7 44 24 L$.H.D$.....H.D$ + 0x0080 20 01 00 00 00 e8 00 00 00 00 90 48 8d 05 00 00 ..........H.... + 0x0090 00 00 48 89 04 24 e8 00 00 00 00 48 8b 44 24 08 ..H..$.....H.D$. + 0x00a0 48 89 44 24 60 48 c7 40 08 0a 00 00 00 48 8d 0d H.D$`H.@.....H.. + 0x00b0 00 00 00 00 48 89 08 0f 57 c0 0f 11 84 24 98 00 ....H...W....$.. + 0x00c0 00 00 0f 11 84 24 a8 00 00 00 0f 11 84 24 b8 00 .....$.......$.. + 0x00d0 00 00 0f 11 84 24 c8 00 00 00 48 8d 0d 00 00 00 .....$....H..... + 0x00e0 00 48 89 8c 24 98 00 00 00 48 8d 0d 00 00 00 00 .H..$....H...... + 0x00f0 48 89 8c 24 a0 00 00 00 e8 00 00 00 00 48 8b 04 H..$.........H.. + 0x0100 24 48 89 44 24 58 48 8d 0d 00 00 00 00 48 89 0c $H.D$XH......H.. + 0x0110 24 48 c7 44 24 08 02 00 00 00 e8 00 00 00 00 48 $H.D$..........H + 0x0120 8b 44 24 10 48 89 44 24 50 48 8d 0d 00 00 00 00 .D$.H.D$PH...... + 0x0130 48 89 0c 24 48 8b 54 24 58 48 89 54 24 08 48 8d H..$H.T$XH.T$.H. + 0x0140 1d 00 00 00 00 48 89 5c 24 10 48 c7 44 24 18 06 .....H.\$.H.D$.. + 0x0150 00 00 00 e8 00 00 00 00 48 8b 44 24 20 48 8d 0d ........H.D$ H.. + 0x0160 00 00 00 00 48 89 08 83 3d 00 00 00 00 00 0f 85 ....H...=....... + 0x0170 2a 05 00 00 48 8b 54 24 50 48 89 50 08 48 8d 05 *...H.T$PH.P.H.. + 0x0180 00 00 00 00 48 89 04 24 48 c7 44 24 08 02 00 00 ....H..$H.D$.... + 0x0190 00 e8 00 00 00 00 48 8b 44 24 10 48 89 44 24 50 ......H.D$.H.D$P + 0x01a0 48 8d 0d 00 00 00 00 48 89 0c 24 48 8b 54 24 58 H......H..$H.T$X + 0x01b0 48 89 54 24 08 48 8d 1d 00 00 00 00 48 89 5c 24 H.T$.H......H.\$ + 0x01c0 10 48 c7 44 24 18 06 00 00 00 e8 00 00 00 00 48 .H.D$..........H + 0x01d0 8b 44 24 20 48 8d 0d 00 00 00 00 48 89 08 83 3d .D$ H......H...= + 0x01e0 00 00 00 00 00 0f 85 a0 04 00 00 48 8b 54 24 50 ...........H.T$P + 0x01f0 48 89 50 08 48 8d 05 00 00 00 00 48 89 04 24 48 H.P.H......H..$H + 0x0200 c7 44 24 08 02 00 00 00 e8 00 00 00 00 48 8b 44 .D$..........H.D + 0x0210 24 10 48 89 44 24 50 48 8d 0d 00 00 00 00 48 89 $.H.D$PH......H. + 0x0220 0c 24 48 8b 54 24 58 48 89 54 24 08 48 8d 1d 00 .$H.T$XH.T$.H... + 0x0230 00 00 00 48 89 5c 24 10 48 c7 44 24 18 06 00 00 ...H.\$.H.D$.... + 0x0240 00 e8 00 00 00 00 48 8b 44 24 20 48 8d 0d 00 00 ......H.D$ H.... + 0x0250 00 00 48 89 08 83 3d 00 00 00 00 00 0f 85 16 04 ..H...=......... + 0x0260 00 00 48 8b 54 24 50 48 89 50 08 48 8d 05 00 00 ..H.T$PH.P.H.... + 0x0270 00 00 48 89 04 24 48 c7 44 24 08 02 00 00 00 e8 ..H..$H.D$...... + 0x0280 00 00 00 00 48 8b 44 24 10 48 89 44 24 50 48 8d ....H.D$.H.D$PH. + 0x0290 0d 00 00 00 00 48 89 0c 24 48 8b 54 24 58 48 89 .....H..$H.T$XH. + 0x02a0 54 24 08 48 8d 1d 00 00 00 00 48 89 5c 24 10 48 T$.H......H.\$.H + 0x02b0 c7 44 24 18 06 00 00 00 e8 00 00 00 00 48 8b 44 .D$..........H.D + 0x02c0 24 20 48 8d 0d 00 00 00 00 48 89 08 83 3d 00 00 $ H......H...=.. + 0x02d0 00 00 00 0f 85 8c 03 00 00 48 8b 54 24 50 48 89 .........H.T$PH. + 0x02e0 50 08 48 8d 05 00 00 00 00 48 89 84 24 a8 00 00 P.H......H..$... + 0x02f0 00 48 8b 4c 24 58 48 89 8c 24 b0 00 00 00 48 8d .H.L$XH..$....H. + 0x0300 0d 00 00 00 00 48 89 0c 24 48 8b 4c 24 60 48 89 .....H..$H.L$`H. + 0x0310 4c 24 08 e8 00 00 00 00 48 8b 44 24 18 48 8b 4c L$......H.D$.H.L + 0x0320 24 10 48 89 8c 24 b8 00 00 00 48 89 84 24 c0 00 $.H..$....H..$.. + 0x0330 00 00 e8 00 00 00 00 48 8b 04 24 48 89 44 24 58 .......H..$H.D$X + 0x0340 48 8d 0d 00 00 00 00 48 89 0c 24 48 c7 44 24 08 H......H..$H.D$. + 0x0350 02 00 00 00 e8 00 00 00 00 48 8b 44 24 10 48 89 .........H.D$.H. + 0x0360 44 24 50 48 8d 0d 00 00 00 00 48 89 0c 24 48 8b D$PH......H..$H. + 0x0370 54 24 58 48 89 54 24 08 48 8d 1d 00 00 00 00 48 T$XH.T$.H......H + 0x0380 89 5c 24 10 48 c7 44 24 18 06 00 00 00 e8 00 00 .\$.H.D$........ + 0x0390 00 00 48 8b 44 24 20 48 8d 0d 00 00 00 00 48 89 ..H.D$ H......H. + 0x03a0 08 83 3d 00 00 00 00 00 0f 85 a4 02 00 00 48 8b ..=...........H. + 0x03b0 54 24 50 48 89 50 08 48 8d 05 00 00 00 00 48 89 T$PH.P.H......H. + 0x03c0 04 24 48 c7 44 24 08 02 00 00 00 e8 00 00 00 00 .$H.D$.......... + 0x03d0 48 8b 44 24 10 48 89 44 24 50 48 8d 0d 00 00 00 H.D$.H.D$PH..... + 0x03e0 00 48 89 0c 24 48 8b 4c 24 58 48 89 4c 24 08 48 .H..$H.L$XH.L$.H + 0x03f0 8d 15 00 00 00 00 48 89 54 24 10 48 c7 44 24 18 ......H.T$.H.D$. + 0x0400 06 00 00 00 e8 00 00 00 00 48 8b 44 24 20 48 8d .........H.D$ H. + 0x0410 0d 00 00 00 00 48 89 08 83 3d 00 00 00 00 00 0f .....H...=...... + 0x0420 85 1a 02 00 00 48 8b 4c 24 50 48 89 48 08 48 8d .....H.L$PH.H.H. + 0x0430 05 00 00 00 00 48 89 84 24 c8 00 00 00 48 8b 44 .....H..$....H.D + 0x0440 24 58 48 89 84 24 d0 00 00 00 48 8d 05 00 00 00 $XH..$....H..... + 0x0450 00 48 89 04 24 e8 00 00 00 00 48 8b 44 24 08 48 .H..$.....H.D$.H + 0x0460 89 44 24 68 e8 00 00 00 00 48 8b 44 24 08 48 8b .D$h.....H.D$.H. + 0x0470 0c 24 48 8b 54 24 10 48 89 8c 24 80 00 00 00 48 .$H.T$.H..$....H + 0x0480 89 84 24 88 00 00 00 48 89 94 24 90 00 00 00 90 ..$....H..$..... + 0x0490 90 48 0f ba e1 3f 73 2d 48 89 c8 48 d1 e1 48 c1 .H...?s-H..H..H. + 0x04a0 e9 1f 48 ba 80 7f b1 d7 0d 00 00 00 48 01 d1 48 ..H.........H..H + 0x04b0 89 8c 24 88 00 00 00 48 25 ff ff ff 3f 48 89 84 ..$....H%...?H.. + 0x04c0 24 80 00 00 00 48 c7 84 24 90 00 00 00 00 00 00 $....H..$....... + 0x04d0 00 48 8b 84 24 80 00 00 00 48 8b 8c 24 88 00 00 .H..$....H..$... + 0x04e0 00 48 8d bc 24 18 01 00 00 0f 57 c0 48 89 6c 24 .H..$.....W.H.l$ + 0x04f0 f0 48 8d 6c 24 f0 e8 00 00 00 00 48 8b 6d 00 48 .H.l$......H.m.H + 0x0500 89 84 24 18 01 00 00 48 89 8c 24 20 01 00 00 48 ..$....H..$ ...H + 0x0510 8b 05 00 00 00 00 48 8b 0d 00 00 00 00 48 89 8c ......H......H.. + 0x0520 24 30 01 00 00 48 89 84 24 38 01 00 00 48 8d 05 $0...H..$8...H.. + 0x0530 00 00 00 00 48 89 84 24 40 01 00 00 48 c7 84 24 ....H..$@...H..$ + 0x0540 48 01 00 00 02 00 00 00 83 3d 00 00 00 00 00 0f H........=...... + 0x0550 85 be 00 00 00 48 8b 7c 24 68 48 8d b4 24 18 01 .....H.|$hH..$.. + 0x0560 00 00 48 89 6c 24 f0 48 8d 6c 24 f0 e8 00 00 00 ..H.l$.H.l$..... + 0x0570 00 48 8b 6d 00 0f 10 84 24 98 00 00 00 0f 11 84 .H.m....$....... + 0x0580 24 d8 00 00 00 0f 10 84 24 a8 00 00 00 0f 11 84 $.......$....... + 0x0590 24 e8 00 00 00 0f 10 84 24 b8 00 00 00 0f 11 84 $.......$....... + 0x05a0 24 f8 00 00 00 0f 10 84 24 c8 00 00 00 0f 11 84 $.......$....... + 0x05b0 24 08 01 00 00 48 8d 84 24 d8 00 00 00 31 c9 eb $....H..$....1.. + 0x05c0 0f 48 8b 54 24 48 48 83 c2 10 48 89 c1 48 89 d0 .H.T$HH...H..H.. + 0x05d0 48 89 44 24 48 48 89 4c 24 40 48 8b 10 48 8b 58 H.D$HH.L$@H..H.X + 0x05e0 08 48 8b 52 18 48 89 1c 24 48 8b 5c 24 68 48 89 .H.R.H..$H.\$hH. + 0x05f0 5c 24 08 ff d2 48 8b 44 24 40 48 ff c0 48 83 f8 \$...H.D$@H..H.. + 0x0600 04 7c be 48 8b ac 24 98 01 00 00 48 81 c4 a0 01 .|.H..$....H.... + 0x0610 00 00 c3 48 8d 05 00 00 00 00 48 89 04 24 48 8b ...H......H..$H. + 0x0620 44 24 68 48 89 44 24 08 48 8d 8c 24 18 01 00 00 D$hH.D$.H..$.... + 0x0630 48 89 4c 24 10 e8 00 00 00 00 e9 36 ff ff ff 48 H.L$.......6...H + 0x0640 8d 78 08 48 8b 44 24 50 e8 00 00 00 00 e9 dc fd .x.H.D$P........ + 0x0650 ff ff 48 8d 78 08 48 8b 44 24 50 e8 00 00 00 00 ..H.x.H.D$P..... + 0x0660 e9 52 fd ff ff 48 8d 78 08 48 8b 44 24 50 e8 00 .R...H.x.H.D$P.. + 0x0670 00 00 00 e9 6a fc ff ff 48 8d 78 08 48 8b 44 24 ....j...H.x.H.D$ + 0x0680 50 e8 00 00 00 00 e9 e0 fb ff ff 48 8d 78 08 48 P..........H.x.H + 0x0690 8b 44 24 50 e8 00 00 00 00 e9 56 fb ff ff 48 8d .D$P......V...H. + 0x06a0 78 08 48 8b 44 24 50 e8 00 00 00 00 e9 cc fa ff x.H.D$P......... + 0x06b0 ff e8 00 00 00 00 e9 45 f9 ff ff .......E... + rel 5+4 t=17 TLS+0 + rel 61+4 t=16 type.string+0 + rel 73+4 t=16 ""..stmp_0+0 + rel 85+4 t=16 os.Stdout+0 + rel 92+4 t=16 go.itab.*os.File,io.Writer+0 + rel 134+4 t=8 fmt.Fprintln+0 + rel 142+4 t=16 type.errors.errorString+0 + rel 151+4 t=8 runtime.newobject+0 + rel 176+4 t=16 go.string."test error"+0 + rel 221+4 t=16 go.itab."".severity,"".option+0 + rel 236+4 t=16 ""..stmp_1+0 + rel 249+4 t=8 runtime.makemap_small+0 + rel 265+4 t=16 go.string."d1"+0 + rel 283+4 t=8 runtime.convTstring+0 + rel 300+4 t=16 type."".Data+0 + rel 321+4 t=16 go.string."data_1"+0 + rel 340+4 t=8 runtime.mapassign_faststr+0 + rel 352+4 t=16 type.string+0 + rel 361+4 t=16 runtime.writeBarrier+-1 + rel 384+4 t=16 go.string."d2"+0 + rel 402+4 t=8 runtime.convTstring+0 + rel 419+4 t=16 type."".Data+0 + rel 440+4 t=16 go.string."data_2"+0 + rel 459+4 t=8 runtime.mapassign_faststr+0 + rel 471+4 t=16 type.string+0 + rel 480+4 t=16 runtime.writeBarrier+-1 + rel 503+4 t=16 go.string."d3"+0 + rel 521+4 t=8 runtime.convTstring+0 + rel 538+4 t=16 type."".Data+0 + rel 559+4 t=16 go.string."data_3"+0 + rel 578+4 t=8 runtime.mapassign_faststr+0 + rel 590+4 t=16 type.string+0 + rel 599+4 t=16 runtime.writeBarrier+-1 + rel 622+4 t=16 go.string."d4"+0 + rel 640+4 t=8 runtime.convTstring+0 + rel 657+4 t=16 type."".Data+0 + rel 678+4 t=16 go.string."data_4"+0 + rel 697+4 t=8 runtime.mapassign_faststr+0 + rel 709+4 t=16 type.string+0 + rel 718+4 t=16 runtime.writeBarrier+-1 + rel 741+4 t=16 go.itab."".Data,"".option+0 + rel 769+4 t=16 go.itab.*errors.errorString,error+0 + rel 788+4 t=8 "".Error+0 + rel 819+4 t=8 runtime.makemap_small+0 + rel 835+4 t=16 go.string."d4"+0 + rel 853+4 t=8 runtime.convTstring+0 + rel 870+4 t=16 type."".Data+0 + rel 891+4 t=16 go.string."data_4"+0 + rel 910+4 t=8 runtime.mapassign_faststr+0 + rel 922+4 t=16 type.string+0 + rel 931+4 t=16 runtime.writeBarrier+-1 + rel 954+4 t=16 go.string."d2"+0 + rel 972+4 t=8 runtime.convTstring+0 + rel 989+4 t=16 type."".Data+0 + rel 1010+4 t=16 go.string."data_2"+0 + rel 1029+4 t=8 runtime.mapassign_faststr+0 + rel 1041+4 t=16 type.string+0 + rel 1050+4 t=16 runtime.writeBarrier+-1 + rel 1073+4 t=16 go.itab."".Data,"".option+0 + rel 1101+4 t=16 type."".EventData+0 + rel 1110+4 t=8 runtime.newobject+0 + rel 1125+4 t=8 time.Now+0 + rel 1271+4 t=8 runtime.duffzero+266 + rel 1298+4 t=16 "".Namespace+8 + rel 1305+4 t=16 "".Namespace+0 + rel 1328+4 t=16 go.string."m1"+0 + rel 1354+4 t=16 runtime.writeBarrier+-1 + rel 1389+4 t=8 runtime.duffcopy+784 + rel 1523+0 t=11 +0 + rel 1558+4 t=16 type."".EventData+0 + rel 1590+4 t=8 runtime.typedmemmove+0 + rel 1609+4 t=8 runtime.gcWriteBarrier+0 + rel 1628+4 t=8 runtime.gcWriteBarrier+0 + rel 1647+4 t=8 runtime.gcWriteBarrier+0 + rel 1666+4 t=8 runtime.gcWriteBarrier+0 + rel 1685+4 t=8 runtime.gcWriteBarrier+0 + rel 1704+4 t=8 runtime.gcWriteBarrier+0 + rel 1714+4 t=8 runtime.morestack_noctxt+0 +"".(*severity).attach STEXT dupok size=153 args=0x10 locals=0x18 + 0x0000 00000 (:1) TEXT "".(*severity).attach(SB), DUPOK|WRAPPER|ABIInternal, $24-16 + 0x0000 00000 (:1) MOVQ (TLS), CX + 0x0009 00009 (:1) CMPQ SP, 16(CX) + 0x000d 00013 (:1) PCDATA $0, $-2 + 0x000d 00013 (:1) JLS 128 + 0x000f 00015 (:1) PCDATA $0, $-1 + 0x000f 00015 (:1) SUBQ $24, SP + 0x0013 00019 (:1) MOVQ BP, 16(SP) + 0x0018 00024 (:1) LEAQ 16(SP), BP + 0x001d 00029 (:1) MOVQ 32(CX), BX + 0x0021 00033 (:1) TESTQ BX, BX + 0x0024 00036 (:1) JNE 138 + 0x0026 00038 (:1) NOP + 0x0026 00038 (:1) PCDATA $0, $-2 + 0x0026 00038 (:1) PCDATA $1, $-2 + 0x0026 00038 (:1) FUNCDATA $0, gclocals·fdbf1f5761f6d17e8ae3f0aaecb6a3c5(SB) + 0x0026 00038 (:1) FUNCDATA $1, gclocals·7d2d5fca80364273fb07d5820a76fef4(SB) + 0x0026 00038 (:1) FUNCDATA $2, gclocals·6e8d7ea4abad763909b26991048ee1fe(SB) + 0x0026 00038 (:1) PCDATA $0, $0 + 0x0026 00038 (:1) PCDATA $1, $0 + 0x0026 00038 (:1) CMPQ ""..this+32(SP), $0 + 0x002c 00044 (:1) JEQ 122 + 0x002e 00046 (:1) PCDATA $0, $1 + 0x002e 00046 (:1) LEAQ type."".severity(SB), AX + 0x0035 00053 (:1) PCDATA $0, $0 + 0x0035 00053 (:1) MOVQ AX, (SP) + 0x0039 00057 (:1) CALL runtime.newobject(SB) + 0x003e 00062 (:1) PCDATA $0, $1 + 0x003e 00062 (:1) PCDATA $1, $1 + 0x003e 00062 (:1) MOVQ ""..this+32(SP), AX + 0x0043 00067 (:1) PCDATA $0, $2 + 0x0043 00067 (:1) MOVQ 8(SP), CX + 0x0048 00072 (:1) PCDATA $0, $3 + 0x0048 00072 (:1) MOVQ (AX), AX + 0x004b 00075 (:1) MOVQ AX, (CX) + 0x004e 00078 (main.go:635) PCDATA $0, $2 + 0x004e 00078 (main.go:635) PCDATA $1, $2 + 0x004e 00078 (main.go:635) MOVQ "".le+40(SP), AX + 0x0053 00083 (main.go:635) TESTB AL, (AX) + 0x0055 00085 () NOP + 0x0055 00085 (main.go:635) PCDATA $0, $-2 + 0x0055 00085 (main.go:635) PCDATA $1, $-2 + 0x0055 00085 (main.go:635) CMPL runtime.writeBarrier(SB), $0 + 0x005c 00092 (main.go:635) JNE 108 + 0x005e 00094 (main.go:635) MOVQ CX, 88(AX) + 0x0062 00098 (:1) PCDATA $0, $-1 + 0x0062 00098 (:1) PCDATA $1, $-1 + 0x0062 00098 (:1) MOVQ 16(SP), BP + 0x0067 00103 (:1) ADDQ $24, SP + 0x006b 00107 (:1) RET + 0x006c 00108 (main.go:635) PCDATA $0, $-2 + 0x006c 00108 (main.go:635) PCDATA $1, $-2 + 0x006c 00108 (main.go:635) LEAQ 88(AX), DI + 0x0070 00112 (main.go:635) MOVQ CX, AX + 0x0073 00115 (main.go:635) CALL runtime.gcWriteBarrier(SB) + 0x0078 00120 (main.go:635) JMP 98 + 0x007a 00122 (:1) PCDATA $0, $0 + 0x007a 00122 (:1) PCDATA $1, $2 + 0x007a 00122 (:1) CALL runtime.panicwrap(SB) + 0x007f 00127 (:1) XCHGL AX, AX + 0x0080 00128 (:1) NOP + 0x0080 00128 (:1) PCDATA $1, $-1 + 0x0080 00128 (:1) PCDATA $0, $-2 + 0x0080 00128 (:1) CALL runtime.morestack_noctxt(SB) + 0x0085 00133 (:1) PCDATA $0, $-1 + 0x0085 00133 (:1) JMP 0 + 0x008a 00138 (:1) LEAQ 32(SP), DI + 0x008f 00143 (:1) CMPQ (BX), DI + 0x0092 00146 (:1) JNE 38 + 0x0094 00148 (:1) MOVQ SP, (BX) + 0x0097 00151 (:1) JMP 38 + 0x0000 64 48 8b 0c 25 00 00 00 00 48 3b 61 10 76 71 48 dH..%....H;a.vqH + 0x0010 83 ec 18 48 89 6c 24 10 48 8d 6c 24 10 48 8b 59 ...H.l$.H.l$.H.Y + 0x0020 20 48 85 db 75 64 48 83 7c 24 20 00 74 4c 48 8d H..udH.|$ .tLH. + 0x0030 05 00 00 00 00 48 89 04 24 e8 00 00 00 00 48 8b .....H..$.....H. + 0x0040 44 24 20 48 8b 4c 24 08 48 8b 00 48 89 01 48 8b D$ H.L$.H..H..H. + 0x0050 44 24 28 84 00 83 3d 00 00 00 00 00 75 0e 48 89 D$(...=.....u.H. + 0x0060 48 58 48 8b 6c 24 10 48 83 c4 18 c3 48 8d 78 58 HXH.l$.H....H.xX + 0x0070 48 89 c8 e8 00 00 00 00 eb e8 e8 00 00 00 00 90 H............... + 0x0080 e8 00 00 00 00 e9 76 ff ff ff 48 8d 7c 24 20 48 ......v...H.|$ H + 0x0090 39 3b 75 92 48 89 23 eb 8d 9;u.H.#.. + rel 5+4 t=17 TLS+0 + rel 49+4 t=16 type."".severity+0 + rel 58+4 t=8 runtime.newobject+0 + rel 87+4 t=16 runtime.writeBarrier+-1 + rel 116+4 t=8 runtime.gcWriteBarrier+0 + rel 123+4 t=8 runtime.panicwrap+0 + rel 129+4 t=8 runtime.morestack_noctxt+0 +type..eq."".EventHTTP STEXT dupok size=508 args=0x18 locals=0x28 + 0x0000 00000 (:1) TEXT type..eq."".EventHTTP(SB), DUPOK|ABIInternal, $40-24 + 0x0000 00000 (:1) MOVQ (TLS), CX + 0x0009 00009 (:1) CMPQ SP, 16(CX) + 0x000d 00013 (:1) PCDATA $0, $-2 + 0x000d 00013 (:1) JLS 498 + 0x0013 00019 (:1) PCDATA $0, $-1 + 0x0013 00019 (:1) SUBQ $40, SP + 0x0017 00023 (:1) MOVQ BP, 32(SP) + 0x001c 00028 (:1) LEAQ 32(SP), BP + 0x0021 00033 (:1) PCDATA $0, $-2 + 0x0021 00033 (:1) PCDATA $1, $-2 + 0x0021 00033 (:1) FUNCDATA $0, gclocals·bc41a5648be0e22a9555dec75d49ff55(SB) + 0x0021 00033 (:1) FUNCDATA $1, gclocals·7d2d5fca80364273fb07d5820a76fef4(SB) + 0x0021 00033 (:1) FUNCDATA $2, gclocals·d07539170cfe70ec0221d8dd6595c247(SB) + 0x0021 00033 (:1) PCDATA $0, $1 + 0x0021 00033 (:1) PCDATA $1, $0 + 0x0021 00033 (:1) MOVQ "".q+56(SP), AX + 0x0026 00038 (:1) PCDATA $0, $2 + 0x0026 00038 (:1) MOVQ (AX), CX + 0x0029 00041 (:1) PCDATA $0, $3 + 0x0029 00041 (:1) MOVQ "".p+48(SP), DX + 0x002e 00046 (:1) PCDATA $0, $4 + 0x002e 00046 (:1) CMPQ (DX), CX + 0x0031 00049 (:1) JNE 491 + 0x0037 00055 (:1) PCDATA $0, $3 + 0x0037 00055 (:1) MOVQ 8(AX), CX + 0x003b 00059 (:1) MOVQ 16(DX), BX + 0x003f 00063 (:1) PCDATA $0, $5 + 0x003f 00063 (:1) MOVQ 8(DX), SI + 0x0043 00067 (:1) CMPQ 16(AX), BX + 0x0047 00071 (:1) JEQ 452 + 0x004d 00077 (:1) PCDATA $0, $4 + 0x004d 00077 (:1) XORL CX, CX + 0x004f 00079 (:1) TESTB CL, CL + 0x0051 00081 (:1) JEQ 445 + 0x0057 00087 (:1) PCDATA $0, $3 + 0x0057 00087 (:1) MOVQ 24(AX), CX + 0x005b 00091 (:1) PCDATA $0, $6 + 0x005b 00091 (:1) MOVQ 24(DX), BX + 0x005f 00095 (:1) MOVQ 32(DX), SI + 0x0063 00099 (:1) CMPQ 32(AX), SI + 0x0067 00103 (:1) JEQ 406 + 0x006d 00109 (:1) PCDATA $0, $4 + 0x006d 00109 (:1) XORL CX, CX + 0x006f 00111 (:1) TESTB CL, CL + 0x0071 00113 (:1) JEQ 399 + 0x0077 00119 (:1) PCDATA $0, $3 + 0x0077 00119 (:1) MOVQ 40(AX), CX + 0x007b 00123 (:1) MOVQ 48(DX), BX + 0x007f 00127 (:1) PCDATA $0, $5 + 0x007f 00127 (:1) MOVQ 40(DX), SI + 0x0083 00131 (:1) CMPQ 48(AX), BX + 0x0087 00135 (:1) JEQ 360 + 0x008d 00141 (:1) PCDATA $0, $4 + 0x008d 00141 (:1) XORL CX, CX + 0x008f 00143 (:1) TESTB CL, CL + 0x0091 00145 (:1) JEQ 353 + 0x0097 00151 (:1) MOVQ 56(AX), CX + 0x009b 00155 (:1) CMPQ 56(DX), CX + 0x009f 00159 (:1) JNE 346 + 0x00a5 00165 (:1) MOVQ 72(DX), CX + 0x00a9 00169 (:1) PCDATA $0, $7 + 0x00a9 00169 (:1) MOVQ 64(AX), BX + 0x00ad 00173 (:1) PCDATA $0, $8 + 0x00ad 00173 (:1) MOVQ 64(DX), SI + 0x00b1 00177 (:1) CMPQ 72(AX), CX + 0x00b5 00181 (:1) JEQ 307 + 0x00b7 00183 (:1) PCDATA $0, $4 + 0x00b7 00183 (:1) XORL CX, CX + 0x00b9 00185 (:1) TESTB CL, CL + 0x00bb 00187 (:1) JEQ 303 + 0x00bd 00189 (:1) PCDATA $0, $3 + 0x00bd 00189 (:1) MOVQ 80(AX), CX + 0x00c1 00193 (:1) MOVQ 88(DX), BX + 0x00c5 00197 (:1) PCDATA $0, $5 + 0x00c5 00197 (:1) MOVQ 80(DX), SI + 0x00c9 00201 (:1) CMPQ 88(AX), BX + 0x00cd 00205 (:1) JEQ 267 + 0x00cf 00207 (:1) PCDATA $0, $4 + 0x00cf 00207 (:1) PCDATA $1, $1 + 0x00cf 00207 (:1) XORL CX, CX + 0x00d1 00209 (:1) TESTB CL, CL + 0x00d3 00211 (:1) JNE 229 + 0x00d5 00213 (:1) PCDATA $0, $0 + 0x00d5 00213 (:1) XORL AX, AX + 0x00d7 00215 (:1) MOVB AL, "".~r2+64(SP) + 0x00db 00219 (:1) MOVQ 32(SP), BP + 0x00e0 00224 (:1) ADDQ $40, SP + 0x00e4 00228 (:1) RET + 0x00e5 00229 (:1) PCDATA $0, $2 + 0x00e5 00229 (:1) LEAQ 96(DX), CX + 0x00e9 00233 (:1) PCDATA $0, $1 + 0x00e9 00233 (:1) MOVQ CX, (SP) + 0x00ed 00237 (:1) ADDQ $96, AX + 0x00f1 00241 (:1) PCDATA $0, $0 + 0x00f1 00241 (:1) MOVQ AX, 8(SP) + 0x00f6 00246 (:1) MOVQ $32, 16(SP) + 0x00ff 00255 (:1) CALL runtime.memequal(SB) + 0x0104 00260 (:1) MOVBLZX 24(SP), AX + 0x0109 00265 (:1) JMP 215 + 0x010b 00267 (:1) PCDATA $0, $9 + 0x010b 00267 (:1) PCDATA $1, $0 + 0x010b 00267 (:1) MOVQ SI, (SP) + 0x010f 00271 (:1) PCDATA $0, $0 + 0x010f 00271 (:1) MOVQ CX, 8(SP) + 0x0114 00276 (:1) MOVQ BX, 16(SP) + 0x0119 00281 (:1) CALL runtime.memequal(SB) + 0x011e 00286 (:1) MOVBLZX 24(SP), CX + 0x0123 00291 (:1) PCDATA $0, $1 + 0x0123 00291 (:1) PCDATA $1, $2 + 0x0123 00291 (:1) MOVQ "".q+56(SP), AX + 0x0128 00296 (:1) PCDATA $0, $4 + 0x0128 00296 (:1) PCDATA $1, $1 + 0x0128 00296 (:1) MOVQ "".p+48(SP), DX + 0x012d 00301 (:1) JMP 209 + 0x012f 00303 (:1) XORL CX, CX + 0x0131 00305 (:1) JMP 209 + 0x0133 00307 (:1) PCDATA $0, $10 + 0x0133 00307 (:1) PCDATA $1, $0 + 0x0133 00307 (:1) MOVQ SI, (SP) + 0x0137 00311 (:1) PCDATA $0, $0 + 0x0137 00311 (:1) MOVQ BX, 8(SP) + 0x013c 00316 (:1) MOVQ CX, 16(SP) + 0x0141 00321 (:1) CALL runtime.memequal(SB) + 0x0146 00326 (:1) MOVBLZX 24(SP), CX + 0x014b 00331 (:1) PCDATA $0, $1 + 0x014b 00331 (:1) MOVQ "".q+56(SP), AX + 0x0150 00336 (:1) PCDATA $0, $4 + 0x0150 00336 (:1) MOVQ "".p+48(SP), DX + 0x0155 00341 (:1) JMP 185 + 0x015a 00346 (:1) XORL CX, CX + 0x015c 00348 (:1) JMP 185 + 0x0161 00353 (:1) XORL CX, CX + 0x0163 00355 (:1) JMP 185 + 0x0168 00360 (:1) PCDATA $0, $9 + 0x0168 00360 (:1) MOVQ SI, (SP) + 0x016c 00364 (:1) PCDATA $0, $0 + 0x016c 00364 (:1) MOVQ CX, 8(SP) + 0x0171 00369 (:1) MOVQ BX, 16(SP) + 0x0176 00374 (:1) CALL runtime.memequal(SB) + 0x017b 00379 (:1) MOVBLZX 24(SP), CX + 0x0180 00384 (:1) PCDATA $0, $1 + 0x0180 00384 (:1) MOVQ "".q+56(SP), AX + 0x0185 00389 (:1) PCDATA $0, $4 + 0x0185 00389 (:1) MOVQ "".p+48(SP), DX + 0x018a 00394 (:1) JMP 143 + 0x018f 00399 (:1) XORL CX, CX + 0x0191 00401 (:1) JMP 143 + 0x0196 00406 (:1) PCDATA $0, $9 + 0x0196 00406 (:1) MOVQ BX, (SP) + 0x019a 00410 (:1) PCDATA $0, $0 + 0x019a 00410 (:1) MOVQ CX, 8(SP) + 0x019f 00415 (:1) MOVQ SI, 16(SP) + 0x01a4 00420 (:1) CALL runtime.memequal(SB) + 0x01a9 00425 (:1) MOVBLZX 24(SP), CX + 0x01ae 00430 (:1) PCDATA $0, $1 + 0x01ae 00430 (:1) MOVQ "".q+56(SP), AX + 0x01b3 00435 (:1) PCDATA $0, $4 + 0x01b3 00435 (:1) MOVQ "".p+48(SP), DX + 0x01b8 00440 (:1) JMP 111 + 0x01bd 00445 (:1) XORL CX, CX + 0x01bf 00447 (:1) JMP 111 + 0x01c4 00452 (:1) PCDATA $0, $9 + 0x01c4 00452 (:1) MOVQ SI, (SP) + 0x01c8 00456 (:1) PCDATA $0, $0 + 0x01c8 00456 (:1) MOVQ CX, 8(SP) + 0x01cd 00461 (:1) MOVQ BX, 16(SP) + 0x01d2 00466 (:1) CALL runtime.memequal(SB) + 0x01d7 00471 (:1) MOVBLZX 24(SP), CX + 0x01dc 00476 (:1) PCDATA $0, $1 + 0x01dc 00476 (:1) MOVQ "".q+56(SP), AX + 0x01e1 00481 (:1) PCDATA $0, $4 + 0x01e1 00481 (:1) MOVQ "".p+48(SP), DX + 0x01e6 00486 (:1) JMP 79 + 0x01eb 00491 (:1) XORL CX, CX + 0x01ed 00493 (:1) JMP 79 + 0x01f2 00498 (:1) NOP + 0x01f2 00498 (:1) PCDATA $1, $-1 + 0x01f2 00498 (:1) PCDATA $0, $-2 + 0x01f2 00498 (:1) CALL runtime.morestack_noctxt(SB) + 0x01f7 00503 (:1) PCDATA $0, $-1 + 0x01f7 00503 (:1) JMP 0 + 0x0000 64 48 8b 0c 25 00 00 00 00 48 3b 61 10 0f 86 df dH..%....H;a.... + 0x0010 01 00 00 48 83 ec 28 48 89 6c 24 20 48 8d 6c 24 ...H..(H.l$ H.l$ + 0x0020 20 48 8b 44 24 38 48 8b 08 48 8b 54 24 30 48 39 H.D$8H..H.T$0H9 + 0x0030 0a 0f 85 b4 01 00 00 48 8b 48 08 48 8b 5a 10 48 .......H.H.H.Z.H + 0x0040 8b 72 08 48 39 58 10 0f 84 77 01 00 00 31 c9 84 .r.H9X...w...1.. + 0x0050 c9 0f 84 66 01 00 00 48 8b 48 18 48 8b 5a 18 48 ...f...H.H.H.Z.H + 0x0060 8b 72 20 48 39 70 20 0f 84 29 01 00 00 31 c9 84 .r H9p ..)...1.. + 0x0070 c9 0f 84 18 01 00 00 48 8b 48 28 48 8b 5a 30 48 .......H.H(H.Z0H + 0x0080 8b 72 28 48 39 58 30 0f 84 db 00 00 00 31 c9 84 .r(H9X0......1.. + 0x0090 c9 0f 84 ca 00 00 00 48 8b 48 38 48 39 4a 38 0f .......H.H8H9J8. + 0x00a0 85 b5 00 00 00 48 8b 4a 48 48 8b 58 40 48 8b 72 .....H.JHH.X@H.r + 0x00b0 40 48 39 48 48 74 7c 31 c9 84 c9 74 72 48 8b 48 @H9HHt|1...trH.H + 0x00c0 50 48 8b 5a 58 48 8b 72 50 48 39 58 58 74 3c 31 PH.ZXH.rPH9XXt<1 + 0x00d0 c9 84 c9 75 10 31 c0 88 44 24 40 48 8b 6c 24 20 ...u.1..D$@H.l$ + 0x00e0 48 83 c4 28 c3 48 8d 4a 60 48 89 0c 24 48 83 c0 H..(.H.J`H..$H.. + 0x00f0 60 48 89 44 24 08 48 c7 44 24 10 20 00 00 00 e8 `H.D$.H.D$. .... + 0x0100 00 00 00 00 0f b6 44 24 18 eb cc 48 89 34 24 48 ......D$...H.4$H + 0x0110 89 4c 24 08 48 89 5c 24 10 e8 00 00 00 00 0f b6 .L$.H.\$........ + 0x0120 4c 24 18 48 8b 44 24 38 48 8b 54 24 30 eb a2 31 L$.H.D$8H.T$0..1 + 0x0130 c9 eb 9e 48 89 34 24 48 89 5c 24 08 48 89 4c 24 ...H.4$H.\$.H.L$ + 0x0140 10 e8 00 00 00 00 0f b6 4c 24 18 48 8b 44 24 38 ........L$.H.D$8 + 0x0150 48 8b 54 24 30 e9 5f ff ff ff 31 c9 e9 58 ff ff H.T$0._...1..X.. + 0x0160 ff 31 c9 e9 51 ff ff ff 48 89 34 24 48 89 4c 24 .1..Q...H.4$H.L$ + 0x0170 08 48 89 5c 24 10 e8 00 00 00 00 0f b6 4c 24 18 .H.\$........L$. + 0x0180 48 8b 44 24 38 48 8b 54 24 30 e9 00 ff ff ff 31 H.D$8H.T$0.....1 + 0x0190 c9 e9 f9 fe ff ff 48 89 1c 24 48 89 4c 24 08 48 ......H..$H.L$.H + 0x01a0 89 74 24 10 e8 00 00 00 00 0f b6 4c 24 18 48 8b .t$........L$.H. + 0x01b0 44 24 38 48 8b 54 24 30 e9 b2 fe ff ff 31 c9 e9 D$8H.T$0.....1.. + 0x01c0 ab fe ff ff 48 89 34 24 48 89 4c 24 08 48 89 5c ....H.4$H.L$.H.\ + 0x01d0 24 10 e8 00 00 00 00 0f b6 4c 24 18 48 8b 44 24 $........L$.H.D$ + 0x01e0 38 48 8b 54 24 30 e9 64 fe ff ff 31 c9 e9 5d fe 8H.T$0.d...1..]. + 0x01f0 ff ff e8 00 00 00 00 e9 04 fe ff ff ............ + rel 5+4 t=17 TLS+0 + rel 256+4 t=8 runtime.memequal+0 + rel 282+4 t=8 runtime.memequal+0 + rel 322+4 t=8 runtime.memequal+0 + rel 375+4 t=8 runtime.memequal+0 + rel 421+4 t=8 runtime.memequal+0 + rel 467+4 t=8 runtime.memequal+0 + rel 499+4 t=8 runtime.morestack_noctxt+0 +type..eq."".eventAuth STEXT dupok size=175 args=0x18 locals=0x28 + 0x0000 00000 (:1) TEXT type..eq."".eventAuth(SB), DUPOK|ABIInternal, $40-24 + 0x0000 00000 (:1) MOVQ (TLS), CX + 0x0009 00009 (:1) CMPQ SP, 16(CX) + 0x000d 00013 (:1) PCDATA $0, $-2 + 0x000d 00013 (:1) JLS 165 + 0x0013 00019 (:1) PCDATA $0, $-1 + 0x0013 00019 (:1) SUBQ $40, SP + 0x0017 00023 (:1) MOVQ BP, 32(SP) + 0x001c 00028 (:1) LEAQ 32(SP), BP + 0x0021 00033 (:1) PCDATA $0, $-2 + 0x0021 00033 (:1) PCDATA $1, $-2 + 0x0021 00033 (:1) FUNCDATA $0, gclocals·ef6c193a450e4116e290c9970add59e0(SB) + 0x0021 00033 (:1) FUNCDATA $1, gclocals·7d2d5fca80364273fb07d5820a76fef4(SB) + 0x0021 00033 (:1) FUNCDATA $2, gclocals·e877a9ecd51e3dd7b5904c7a30d3955b(SB) + 0x0021 00033 (:1) PCDATA $0, $1 + 0x0021 00033 (:1) PCDATA $1, $0 + 0x0021 00033 (:1) MOVQ "".p+48(SP), AX + 0x0026 00038 (:1) PCDATA $0, $2 + 0x0026 00038 (:1) MOVQ (AX), CX + 0x0029 00041 (:1) PCDATA $0, $3 + 0x0029 00041 (:1) MOVQ "".q+56(SP), DX + 0x002e 00046 (:1) PCDATA $0, $4 + 0x002e 00046 (:1) MOVQ (DX), BX + 0x0031 00049 (:1) MOVQ 8(AX), SI + 0x0035 00053 (:1) CMPQ 8(DX), SI + 0x0039 00057 (:1) JEQ 129 + 0x003b 00059 (:1) PCDATA $0, $5 + 0x003b 00059 (:1) PCDATA $1, $1 + 0x003b 00059 (:1) XORL CX, CX + 0x003d 00061 (:1) TESTB CL, CL + 0x003f 00063 (:1) JEQ 125 + 0x0041 00065 (:1) PCDATA $0, $3 + 0x0041 00065 (:1) MOVQ 16(DX), CX + 0x0045 00069 (:1) MOVQ 24(AX), BX + 0x0049 00073 (:1) MOVQ 16(AX), AX + 0x004d 00077 (:1) PCDATA $0, $2 + 0x004d 00077 (:1) CMPQ 24(DX), BX + 0x0051 00081 (:1) JEQ 99 + 0x0053 00083 (:1) PCDATA $0, $0 + 0x0053 00083 (:1) XORL AX, AX + 0x0055 00085 (:1) MOVB AL, "".~r2+64(SP) + 0x0059 00089 (:1) MOVQ 32(SP), BP + 0x005e 00094 (:1) ADDQ $40, SP + 0x0062 00098 (:1) RET + 0x0063 00099 (:1) PCDATA $0, $6 + 0x0063 00099 (:1) MOVQ AX, (SP) + 0x0067 00103 (:1) PCDATA $0, $0 + 0x0067 00103 (:1) MOVQ CX, 8(SP) + 0x006c 00108 (:1) MOVQ BX, 16(SP) + 0x0071 00113 (:1) CALL runtime.memequal(SB) + 0x0076 00118 (:1) MOVBLZX 24(SP), AX + 0x007b 00123 (:1) JMP 85 + 0x007d 00125 (:1) XORL AX, AX + 0x007f 00127 (:1) JMP 85 + 0x0081 00129 (:1) PCDATA $0, $7 + 0x0081 00129 (:1) PCDATA $1, $0 + 0x0081 00129 (:1) MOVQ CX, (SP) + 0x0085 00133 (:1) PCDATA $0, $0 + 0x0085 00133 (:1) MOVQ BX, 8(SP) + 0x008a 00138 (:1) MOVQ SI, 16(SP) + 0x008f 00143 (:1) CALL runtime.memequal(SB) + 0x0094 00148 (:1) MOVBLZX 24(SP), CX + 0x0099 00153 (:1) PCDATA $0, $1 + 0x0099 00153 (:1) PCDATA $1, $2 + 0x0099 00153 (:1) MOVQ "".p+48(SP), AX + 0x009e 00158 (:1) PCDATA $0, $5 + 0x009e 00158 (:1) PCDATA $1, $1 + 0x009e 00158 (:1) MOVQ "".q+56(SP), DX + 0x00a3 00163 (:1) JMP 61 + 0x00a5 00165 (:1) NOP + 0x00a5 00165 (:1) PCDATA $1, $-1 + 0x00a5 00165 (:1) PCDATA $0, $-2 + 0x00a5 00165 (:1) CALL runtime.morestack_noctxt(SB) + 0x00aa 00170 (:1) PCDATA $0, $-1 + 0x00aa 00170 (:1) JMP 0 + 0x0000 64 48 8b 0c 25 00 00 00 00 48 3b 61 10 0f 86 92 dH..%....H;a.... + 0x0010 00 00 00 48 83 ec 28 48 89 6c 24 20 48 8d 6c 24 ...H..(H.l$ H.l$ + 0x0020 20 48 8b 44 24 30 48 8b 08 48 8b 54 24 38 48 8b H.D$0H..H.T$8H. + 0x0030 1a 48 8b 70 08 48 39 72 08 74 46 31 c9 84 c9 74 .H.p.H9r.tF1...t + 0x0040 3c 48 8b 4a 10 48 8b 58 18 48 8b 40 10 48 39 5a :1) TEXT "".(*Data).attach(SB), DUPOK|WRAPPER|ABIInternal, $24-16 + 0x0000 00000 (:1) MOVQ (TLS), CX + 0x0009 00009 (:1) CMPQ SP, 16(CX) + 0x000d 00013 (:1) PCDATA $0, $-2 + 0x000d 00013 (:1) JLS 151 + 0x0013 00019 (:1) PCDATA $0, $-1 + 0x0013 00019 (:1) SUBQ $24, SP + 0x0017 00023 (:1) MOVQ BP, 16(SP) + 0x001c 00028 (:1) LEAQ 16(SP), BP + 0x0021 00033 (:1) MOVQ 32(CX), BX + 0x0025 00037 (:1) TESTQ BX, BX + 0x0028 00040 (:1) JNE 161 + 0x002a 00042 (:1) NOP + 0x002a 00042 (:1) PCDATA $0, $-2 + 0x002a 00042 (:1) PCDATA $1, $-2 + 0x002a 00042 (:1) FUNCDATA $0, gclocals·fdbf1f5761f6d17e8ae3f0aaecb6a3c5(SB) + 0x002a 00042 (:1) FUNCDATA $1, gclocals·7d2d5fca80364273fb07d5820a76fef4(SB) + 0x002a 00042 (:1) FUNCDATA $2, gclocals·1ae2a11c5a98452068a251f0f00a87f5(SB) + 0x002a 00042 (:1) PCDATA $0, $0 + 0x002a 00042 (:1) PCDATA $1, $0 + 0x002a 00042 (:1) CMPQ ""..this+32(SP), $0 + 0x0030 00048 (:1) JEQ 145 + 0x0032 00050 (:1) PCDATA $0, $1 + 0x0032 00050 (:1) LEAQ type."".Data(SB), AX + 0x0039 00057 (:1) PCDATA $0, $0 + 0x0039 00057 (:1) MOVQ AX, (SP) + 0x003d 00061 (:1) CALL runtime.newobject(SB) + 0x0042 00066 (:1) PCDATA $0, $1 + 0x0042 00066 (:1) PCDATA $1, $1 + 0x0042 00066 (:1) MOVQ ""..this+32(SP), AX + 0x0047 00071 (:1) PCDATA $0, $2 + 0x0047 00071 (:1) MOVQ 8(SP), DI + 0x004c 00076 (:1) MOVQ (AX), AX + 0x004f 00079 (:1) PCDATA $0, $-2 + 0x004f 00079 (:1) PCDATA $1, $-2 + 0x004f 00079 (:1) CMPL runtime.writeBarrier(SB), $0 + 0x0056 00086 (:1) JNE 138 + 0x0058 00088 (:1) MOVQ AX, (DI) + 0x005b 00091 (main.go:198) PCDATA $0, $3 + 0x005b 00091 (main.go:198) PCDATA $1, $2 + 0x005b 00091 (main.go:198) MOVQ "".le+40(SP), CX + 0x0060 00096 (main.go:198) TESTB AL, (CX) + 0x0062 00098 () NOP + 0x0062 00098 (main.go:198) PCDATA $0, $-2 + 0x0062 00098 (main.go:198) PCDATA $1, $-2 + 0x0062 00098 (main.go:198) CMPL runtime.writeBarrier(SB), $0 + 0x0069 00105 (main.go:198) JNE 121 + 0x006b 00107 (main.go:198) MOVQ DI, 112(CX) + 0x006f 00111 (:1) PCDATA $0, $-1 + 0x006f 00111 (:1) PCDATA $1, $-1 + 0x006f 00111 (:1) MOVQ 16(SP), BP + 0x0074 00116 (:1) ADDQ $24, SP + 0x0078 00120 (:1) RET + 0x0079 00121 (main.go:198) PCDATA $0, $-2 + 0x0079 00121 (main.go:198) PCDATA $1, $-2 + 0x0079 00121 (main.go:198) ADDQ $112, CX + 0x007d 00125 (:1) MOVQ DI, AX + 0x0080 00128 (main.go:198) MOVQ CX, DI + 0x0083 00131 (main.go:198) CALL runtime.gcWriteBarrier(SB) + 0x0088 00136 (main.go:198) JMP 111 + 0x008a 00138 (:1) CALL runtime.gcWriteBarrier(SB) + 0x008f 00143 (:1) JMP 91 + 0x0091 00145 (:1) PCDATA $0, $0 + 0x0091 00145 (:1) PCDATA $1, $2 + 0x0091 00145 (:1) CALL runtime.panicwrap(SB) + 0x0096 00150 (:1) XCHGL AX, AX + 0x0097 00151 (:1) NOP + 0x0097 00151 (:1) PCDATA $1, $-1 + 0x0097 00151 (:1) PCDATA $0, $-2 + 0x0097 00151 (:1) CALL runtime.morestack_noctxt(SB) + 0x009c 00156 (:1) PCDATA $0, $-1 + 0x009c 00156 (:1) JMP 0 + 0x00a1 00161 (:1) LEAQ 32(SP), DI + 0x00a6 00166 (:1) CMPQ (BX), DI + 0x00a9 00169 (:1) JNE 42 + 0x00af 00175 (:1) MOVQ SP, (BX) + 0x00b2 00178 (:1) JMP 42 + 0x0000 64 48 8b 0c 25 00 00 00 00 48 3b 61 10 0f 86 84 dH..%....H;a.... + 0x0010 00 00 00 48 83 ec 18 48 89 6c 24 10 48 8d 6c 24 ...H...H.l$.H.l$ + 0x0020 10 48 8b 59 20 48 85 db 75 77 48 83 7c 24 20 00 .H.Y H..uwH.|$ . + 0x0030 74 5f 48 8d 05 00 00 00 00 48 89 04 24 e8 00 00 t_H......H..$... + 0x0040 00 00 48 8b 44 24 20 48 8b 7c 24 08 48 8b 00 83 ..H.D$ H.|$.H... + 0x0050 3d 00 00 00 00 00 75 32 48 89 07 48 8b 4c 24 28 =.....u2H..H.L$( + 0x0060 84 01 83 3d 00 00 00 00 00 75 0e 48 89 79 70 48 ...=.....u.H.ypH + 0x0070 8b 6c 24 10 48 83 c4 18 c3 48 83 c1 70 48 89 f8 .l$.H....H..pH.. + 0x0080 48 89 cf e8 00 00 00 00 eb e5 e8 00 00 00 00 eb H............... + 0x0090 ca e8 00 00 00 00 90 e8 00 00 00 00 e9 5f ff ff ............._.. + 0x00a0 ff 48 8d 7c 24 20 48 39 3b 0f 85 7b ff ff ff 48 .H.|$ H9;..{...H + 0x00b0 89 23 e9 73 ff ff ff .#.s... + rel 5+4 t=17 TLS+0 + rel 53+4 t=16 type."".Data+0 + rel 62+4 t=8 runtime.newobject+0 + rel 81+4 t=16 runtime.writeBarrier+-1 + rel 100+4 t=16 runtime.writeBarrier+-1 + rel 132+4 t=8 runtime.gcWriteBarrier+0 + rel 139+4 t=8 runtime.gcWriteBarrier+0 + rel 146+4 t=8 runtime.panicwrap+0 + rel 152+4 t=8 runtime.morestack_noctxt+0 +type..eq."".EventStackTrace STEXT dupok size=189 args=0x18 locals=0x28 + 0x0000 00000 (:1) TEXT type..eq."".EventStackTrace(SB), DUPOK|ABIInternal, $40-24 + 0x0000 00000 (:1) MOVQ (TLS), CX + 0x0009 00009 (:1) CMPQ SP, 16(CX) + 0x000d 00013 (:1) PCDATA $0, $-2 + 0x000d 00013 (:1) JLS 179 + 0x0013 00019 (:1) PCDATA $0, $-1 + 0x0013 00019 (:1) SUBQ $40, SP + 0x0017 00023 (:1) MOVQ BP, 32(SP) + 0x001c 00028 (:1) LEAQ 32(SP), BP + 0x0021 00033 (:1) PCDATA $0, $-2 + 0x0021 00033 (:1) PCDATA $1, $-2 + 0x0021 00033 (:1) FUNCDATA $0, gclocals·ef6c193a450e4116e290c9970add59e0(SB) + 0x0021 00033 (:1) FUNCDATA $1, gclocals·7d2d5fca80364273fb07d5820a76fef4(SB) + 0x0021 00033 (:1) FUNCDATA $2, gclocals·0d96ff65c729132c997f18eeb5213780(SB) + 0x0021 00033 (:1) PCDATA $0, $1 + 0x0021 00033 (:1) PCDATA $1, $0 + 0x0021 00033 (:1) MOVQ "".p+48(SP), AX + 0x0026 00038 (:1) PCDATA $0, $2 + 0x0026 00038 (:1) MOVQ (AX), CX + 0x0029 00041 (:1) MOVQ 8(AX), DX + 0x002d 00045 (:1) PCDATA $0, $3 + 0x002d 00045 (:1) MOVQ "".q+56(SP), BX + 0x0032 00050 (:1) PCDATA $0, $4 + 0x0032 00050 (:1) MOVQ (BX), SI + 0x0035 00053 (:1) CMPQ 8(BX), DX + 0x0039 00057 (:1) JEQ 143 + 0x003b 00059 (:1) PCDATA $0, $5 + 0x003b 00059 (:1) PCDATA $1, $1 + 0x003b 00059 (:1) XORL CX, CX + 0x003d 00061 (:1) TESTB CL, CL + 0x003f 00063 (:1) JEQ 139 + 0x0041 00065 (:1) MOVQ 16(BX), CX + 0x0045 00069 (:1) CMPQ 16(AX), CX + 0x0049 00073 (:1) JNE 135 + 0x004b 00075 (:1) PCDATA $0, $3 + 0x004b 00075 (:1) MOVQ 24(BX), CX + 0x004f 00079 (:1) MOVQ 32(AX), DX + 0x0053 00083 (:1) MOVQ 24(AX), AX + 0x0057 00087 (:1) PCDATA $0, $2 + 0x0057 00087 (:1) CMPQ 32(BX), DX + 0x005b 00091 (:1) JEQ 109 + 0x005d 00093 (:1) PCDATA $0, $0 + 0x005d 00093 (:1) XORL AX, AX + 0x005f 00095 (:1) MOVB AL, "".~r2+64(SP) + 0x0063 00099 (:1) MOVQ 32(SP), BP + 0x0068 00104 (:1) ADDQ $40, SP + 0x006c 00108 (:1) RET + 0x006d 00109 (:1) PCDATA $0, $6 + 0x006d 00109 (:1) MOVQ AX, (SP) + 0x0071 00113 (:1) PCDATA $0, $0 + 0x0071 00113 (:1) MOVQ CX, 8(SP) + 0x0076 00118 (:1) MOVQ DX, 16(SP) + 0x007b 00123 (:1) CALL runtime.memequal(SB) + 0x0080 00128 (:1) MOVBLZX 24(SP), AX + 0x0085 00133 (:1) JMP 95 + 0x0087 00135 (:1) XORL AX, AX + 0x0089 00137 (:1) JMP 95 + 0x008b 00139 (:1) XORL AX, AX + 0x008d 00141 (:1) JMP 95 + 0x008f 00143 (:1) PCDATA $0, $7 + 0x008f 00143 (:1) PCDATA $1, $0 + 0x008f 00143 (:1) MOVQ CX, (SP) + 0x0093 00147 (:1) PCDATA $0, $0 + 0x0093 00147 (:1) MOVQ SI, 8(SP) + 0x0098 00152 (:1) MOVQ DX, 16(SP) + 0x009d 00157 (:1) CALL runtime.memequal(SB) + 0x00a2 00162 (:1) MOVBLZX 24(SP), CX + 0x00a7 00167 (:1) PCDATA $0, $1 + 0x00a7 00167 (:1) PCDATA $1, $2 + 0x00a7 00167 (:1) MOVQ "".p+48(SP), AX + 0x00ac 00172 (:1) PCDATA $0, $5 + 0x00ac 00172 (:1) PCDATA $1, $1 + 0x00ac 00172 (:1) MOVQ "".q+56(SP), BX + 0x00b1 00177 (:1) JMP 61 + 0x00b3 00179 (:1) NOP + 0x00b3 00179 (:1) PCDATA $1, $-1 + 0x00b3 00179 (:1) PCDATA $0, $-2 + 0x00b3 00179 (:1) CALL runtime.morestack_noctxt(SB) + 0x00b8 00184 (:1) PCDATA $0, $-1 + 0x00b8 00184 (:1) JMP 0 + 0x0000 64 48 8b 0c 25 00 00 00 00 48 3b 61 10 0f 86 a0 dH..%....H;a.... + 0x0010 00 00 00 48 83 ec 28 48 89 6c 24 20 48 8d 6c 24 ...H..(H.l$ H.l$ + 0x0020 20 48 8b 44 24 30 48 8b 08 48 8b 50 08 48 8b 5c H.D$0H..H.P.H.\ + 0x0030 24 38 48 8b 33 48 39 53 08 74 54 31 c9 84 c9 74 $8H.3H9S.tT1...t + 0x0040 4a 48 8b 4b 10 48 39 48 10 75 3c 48 8b 4b 18 48 JH.K.H9H.u:1) TEXT type..eq."".EventData(SB), DUPOK|ABIInternal, $40-24 + 0x0000 00000 (:1) MOVQ (TLS), CX + 0x0009 00009 (:1) CMPQ SP, 16(CX) + 0x000d 00013 (:1) PCDATA $0, $-2 + 0x000d 00013 (:1) JLS 441 + 0x0013 00019 (:1) PCDATA $0, $-1 + 0x0013 00019 (:1) SUBQ $40, SP + 0x0017 00023 (:1) MOVQ BP, 32(SP) + 0x001c 00028 (:1) LEAQ 32(SP), BP + 0x0021 00033 (:1) PCDATA $0, $-2 + 0x0021 00033 (:1) PCDATA $1, $-2 + 0x0021 00033 (:1) FUNCDATA $0, gclocals·bc41a5648be0e22a9555dec75d49ff55(SB) + 0x0021 00033 (:1) FUNCDATA $1, gclocals·7d2d5fca80364273fb07d5820a76fef4(SB) + 0x0021 00033 (:1) FUNCDATA $2, gclocals·44c2eefc543ac60499f503ce6118b0f2(SB) + 0x0021 00033 (:1) PCDATA $0, $1 + 0x0021 00033 (:1) PCDATA $1, $0 + 0x0021 00033 (:1) MOVQ "".q+56(SP), AX + 0x0026 00038 (:1) MOVQ (AX), CX + 0x0029 00041 (:1) PCDATA $0, $2 + 0x0029 00041 (:1) MOVQ "".p+48(SP), DX + 0x002e 00046 (:1) CMPQ (DX), CX + 0x0031 00049 (:1) JNE 434 + 0x0037 00055 (:1) MOVQ 8(AX), CX + 0x003b 00059 (:1) CMPQ 8(DX), CX + 0x003f 00063 (:1) JNE 427 + 0x0045 00069 (:1) PCDATA $0, $3 + 0x0045 00069 (:1) MOVQ 16(AX), CX + 0x0049 00073 (:1) PCDATA $0, $2 + 0x0049 00073 (:1) CMPQ 16(DX), CX + 0x004d 00077 (:1) JNE 420 + 0x0053 00083 (:1) PCDATA $0, $3 + 0x0053 00083 (:1) MOVQ 24(AX), CX + 0x0057 00087 (:1) MOVQ 32(DX), BX + 0x005b 00091 (:1) PCDATA $0, $4 + 0x005b 00091 (:1) MOVQ 24(DX), SI + 0x005f 00095 (:1) CMPQ 32(AX), BX + 0x0063 00099 (:1) JEQ 381 + 0x0069 00105 (:1) PCDATA $0, $2 + 0x0069 00105 (:1) XORL CX, CX + 0x006b 00107 (:1) TESTB CL, CL + 0x006d 00109 (:1) JEQ 374 + 0x0073 00115 (:1) MOVQ 48(DX), CX + 0x0077 00119 (:1) PCDATA $0, $5 + 0x0077 00119 (:1) MOVQ 40(DX), BX + 0x007b 00123 (:1) PCDATA $0, $6 + 0x007b 00123 (:1) MOVQ 40(AX), SI + 0x007f 00127 (:1) CMPQ 48(AX), CX + 0x0083 00131 (:1) JEQ 335 + 0x0089 00137 (:1) PCDATA $0, $2 + 0x0089 00137 (:1) XORL CX, CX + 0x008b 00139 (:1) TESTB CL, CL + 0x008d 00141 (:1) JEQ 328 + 0x0093 00147 (:1) PCDATA $0, $3 + 0x0093 00147 (:1) MOVQ 56(AX), CX + 0x0097 00151 (:1) PCDATA $0, $7 + 0x0097 00151 (:1) MOVQ 56(DX), BX + 0x009b 00155 (:1) MOVQ 64(DX), SI + 0x009f 00159 (:1) CMPQ 64(AX), SI + 0x00a3 00163 (:1) JEQ 289 + 0x00a5 00165 (:1) PCDATA $0, $2 + 0x00a5 00165 (:1) XORL CX, CX + 0x00a7 00167 (:1) TESTB CL, CL + 0x00a9 00169 (:1) JEQ 285 + 0x00ab 00171 (:1) PCDATA $0, $3 + 0x00ab 00171 (:1) MOVQ 72(AX), CX + 0x00af 00175 (:1) MOVQ 80(DX), BX + 0x00b3 00179 (:1) PCDATA $0, $4 + 0x00b3 00179 (:1) MOVQ 72(DX), SI + 0x00b7 00183 (:1) CMPQ 80(AX), BX + 0x00bb 00187 (:1) JEQ 249 + 0x00bd 00189 (:1) PCDATA $0, $2 + 0x00bd 00189 (:1) PCDATA $1, $1 + 0x00bd 00189 (:1) XORL CX, CX + 0x00bf 00191 (:1) TESTB CL, CL + 0x00c1 00193 (:1) JNE 211 + 0x00c3 00195 (:1) PCDATA $0, $0 + 0x00c3 00195 (:1) XORL AX, AX + 0x00c5 00197 (:1) MOVB AL, "".~r2+64(SP) + 0x00c9 00201 (:1) MOVQ 32(SP), BP + 0x00ce 00206 (:1) ADDQ $40, SP + 0x00d2 00210 (:1) RET + 0x00d3 00211 (:1) PCDATA $0, $8 + 0x00d3 00211 (:1) LEAQ 88(DX), CX + 0x00d7 00215 (:1) PCDATA $0, $1 + 0x00d7 00215 (:1) MOVQ CX, (SP) + 0x00db 00219 (:1) ADDQ $88, AX + 0x00df 00223 (:1) PCDATA $0, $0 + 0x00df 00223 (:1) MOVQ AX, 8(SP) + 0x00e4 00228 (:1) MOVQ $40, 16(SP) + 0x00ed 00237 (:1) CALL runtime.memequal(SB) + 0x00f2 00242 (:1) MOVBLZX 24(SP), AX + 0x00f7 00247 (:1) JMP 197 + 0x00f9 00249 (:1) PCDATA $0, $9 + 0x00f9 00249 (:1) PCDATA $1, $0 + 0x00f9 00249 (:1) MOVQ SI, (SP) + 0x00fd 00253 (:1) PCDATA $0, $0 + 0x00fd 00253 (:1) MOVQ CX, 8(SP) + 0x0102 00258 (:1) MOVQ BX, 16(SP) + 0x0107 00263 (:1) CALL runtime.memequal(SB) + 0x010c 00268 (:1) MOVBLZX 24(SP), CX + 0x0111 00273 (:1) PCDATA $0, $1 + 0x0111 00273 (:1) PCDATA $1, $2 + 0x0111 00273 (:1) MOVQ "".q+56(SP), AX + 0x0116 00278 (:1) PCDATA $0, $2 + 0x0116 00278 (:1) PCDATA $1, $1 + 0x0116 00278 (:1) MOVQ "".p+48(SP), DX + 0x011b 00283 (:1) JMP 191 + 0x011d 00285 (:1) XORL CX, CX + 0x011f 00287 (:1) JMP 191 + 0x0121 00289 (:1) PCDATA $0, $9 + 0x0121 00289 (:1) PCDATA $1, $0 + 0x0121 00289 (:1) MOVQ BX, (SP) + 0x0125 00293 (:1) PCDATA $0, $0 + 0x0125 00293 (:1) MOVQ CX, 8(SP) + 0x012a 00298 (:1) MOVQ SI, 16(SP) + 0x012f 00303 (:1) CALL runtime.memequal(SB) + 0x0134 00308 (:1) MOVBLZX 24(SP), CX + 0x0139 00313 (:1) PCDATA $0, $1 + 0x0139 00313 (:1) MOVQ "".q+56(SP), AX + 0x013e 00318 (:1) PCDATA $0, $2 + 0x013e 00318 (:1) MOVQ "".p+48(SP), DX + 0x0143 00323 (:1) JMP 167 + 0x0148 00328 (:1) XORL CX, CX + 0x014a 00330 (:1) JMP 167 + 0x014f 00335 (:1) PCDATA $0, $10 + 0x014f 00335 (:1) MOVQ BX, (SP) + 0x0153 00339 (:1) PCDATA $0, $0 + 0x0153 00339 (:1) MOVQ SI, 8(SP) + 0x0158 00344 (:1) MOVQ CX, 16(SP) + 0x015d 00349 (:1) CALL runtime.memequal(SB) + 0x0162 00354 (:1) MOVBLZX 24(SP), CX + 0x0167 00359 (:1) PCDATA $0, $1 + 0x0167 00359 (:1) MOVQ "".q+56(SP), AX + 0x016c 00364 (:1) PCDATA $0, $2 + 0x016c 00364 (:1) MOVQ "".p+48(SP), DX + 0x0171 00369 (:1) JMP 139 + 0x0176 00374 (:1) XORL CX, CX + 0x0178 00376 (:1) JMP 139 + 0x017d 00381 (:1) PCDATA $0, $9 + 0x017d 00381 (:1) MOVQ SI, (SP) + 0x0181 00385 (:1) PCDATA $0, $0 + 0x0181 00385 (:1) MOVQ CX, 8(SP) + 0x0186 00390 (:1) MOVQ BX, 16(SP) + 0x018b 00395 (:1) CALL runtime.memequal(SB) + 0x0190 00400 (:1) MOVBLZX 24(SP), CX + 0x0195 00405 (:1) PCDATA $0, $1 + 0x0195 00405 (:1) MOVQ "".q+56(SP), AX + 0x019a 00410 (:1) PCDATA $0, $2 + 0x019a 00410 (:1) MOVQ "".p+48(SP), DX + 0x019f 00415 (:1) JMP 107 + 0x01a4 00420 (:1) XORL CX, CX + 0x01a6 00422 (:1) JMP 107 + 0x01ab 00427 (:1) XORL CX, CX + 0x01ad 00429 (:1) JMP 107 + 0x01b2 00434 (:1) XORL CX, CX + 0x01b4 00436 (:1) JMP 107 + 0x01b9 00441 (:1) NOP + 0x01b9 00441 (:1) PCDATA $1, $-1 + 0x01b9 00441 (:1) PCDATA $0, $-2 + 0x01b9 00441 (:1) CALL runtime.morestack_noctxt(SB) + 0x01be 00446 (:1) PCDATA $0, $-1 + 0x01be 00446 (:1) JMP 0 + 0x0000 64 48 8b 0c 25 00 00 00 00 48 3b 61 10 0f 86 a6 dH..%....H;a.... + 0x0010 01 00 00 48 83 ec 28 48 89 6c 24 20 48 8d 6c 24 ...H..(H.l$ H.l$ + 0x0020 20 48 8b 44 24 38 48 8b 08 48 8b 54 24 30 48 39 H.D$8H..H.T$0H9 + 0x0030 0a 0f 85 7b 01 00 00 48 8b 48 08 48 39 4a 08 0f ...{...H.H.H9J.. + 0x0040 85 66 01 00 00 48 8b 48 10 48 39 4a 10 0f 85 51 .f...H.H.H9J...Q + 0x0050 01 00 00 48 8b 48 18 48 8b 5a 20 48 8b 72 18 48 ...H.H.H.Z H.r.H + 0x0060 39 58 20 0f 84 14 01 00 00 31 c9 84 c9 0f 84 03 9X ......1...... + 0x0070 01 00 00 48 8b 4a 30 48 8b 5a 28 48 8b 70 28 48 ...H.J0H.Z(H.p(H + 0x0080 39 48 30 0f 84 c6 00 00 00 31 c9 84 c9 0f 84 b5 9H0......1...... + 0x0090 00 00 00 48 8b 48 38 48 8b 5a 38 48 8b 72 40 48 ...H.H8H.Z8H.r@H + 0x00a0 39 70 40 74 7c 31 c9 84 c9 74 72 48 8b 48 48 48 9p@t|1...trH.HHH + 0x00b0 8b 5a 50 48 8b 72 48 48 39 58 50 74 3c 31 c9 84 .ZPH.rHH9XPt<1.. + 0x00c0 c9 75 10 31 c0 88 44 24 40 48 8b 6c 24 20 48 83 .u.1..D$@H.l$ H. + 0x00d0 c4 28 c3 48 8d 4a 58 48 89 0c 24 48 83 c0 58 48 .(.H.JXH..$H..XH + 0x00e0 89 44 24 08 48 c7 44 24 10 28 00 00 00 e8 00 00 .D$.H.D$.(...... + 0x00f0 00 00 0f b6 44 24 18 eb cc 48 89 34 24 48 89 4c ....D$...H.4$H.L + 0x0100 24 08 48 89 5c 24 10 e8 00 00 00 00 0f b6 4c 24 $.H.\$........L$ + 0x0110 18 48 8b 44 24 38 48 8b 54 24 30 eb a2 31 c9 eb .H.D$8H.T$0..1.. + 0x0120 9e 48 89 1c 24 48 89 4c 24 08 48 89 74 24 10 e8 .H..$H.L$.H.t$.. + 0x0130 00 00 00 00 0f b6 4c 24 18 48 8b 44 24 38 48 8b ......L$.H.D$8H. + 0x0140 54 24 30 e9 5f ff ff ff 31 c9 e9 58 ff ff ff 48 T$0._...1..X...H + 0x0150 89 1c 24 48 89 74 24 08 48 89 4c 24 10 e8 00 00 ..$H.t$.H.L$.... + 0x0160 00 00 0f b6 4c 24 18 48 8b 44 24 38 48 8b 54 24 ....L$.H.D$8H.T$ + 0x0170 30 e9 15 ff ff ff 31 c9 e9 0e ff ff ff 48 89 34 0.....1......H.4 + 0x0180 24 48 89 4c 24 08 48 89 5c 24 10 e8 00 00 00 00 $H.L$.H.\$...... + 0x0190 0f b6 4c 24 18 48 8b 44 24 38 48 8b 54 24 30 e9 ..L$.H.D$8H.T$0. + 0x01a0 c7 fe ff ff 31 c9 e9 c0 fe ff ff 31 c9 e9 b9 fe ....1......1.... + 0x01b0 ff ff 31 c9 e9 b2 fe ff ff e8 00 00 00 00 e9 3d ..1............= + 0x01c0 fe ff ff ... + rel 5+4 t=17 TLS+0 + rel 238+4 t=8 runtime.memequal+0 + rel 264+4 t=8 runtime.memequal+0 + rel 304+4 t=8 runtime.memequal+0 + rel 350+4 t=8 runtime.memequal+0 + rel 396+4 t=8 runtime.memequal+0 + rel 442+4 t=8 runtime.morestack_noctxt+0 +type..eq.[4]"".option STEXT dupok size=179 args=0x18 locals=0x30 + 0x0000 00000 (:1) TEXT type..eq.[4]"".option(SB), DUPOK|ABIInternal, $48-24 + 0x0000 00000 (:1) MOVQ (TLS), CX + 0x0009 00009 (:1) CMPQ SP, 16(CX) + 0x000d 00013 (:1) PCDATA $0, $-2 + 0x000d 00013 (:1) JLS 169 + 0x0013 00019 (:1) PCDATA $0, $-1 + 0x0013 00019 (:1) SUBQ $48, SP + 0x0017 00023 (:1) MOVQ BP, 40(SP) + 0x001c 00028 (:1) LEAQ 40(SP), BP + 0x0021 00033 (:1) PCDATA $0, $-2 + 0x0021 00033 (:1) PCDATA $1, $-2 + 0x0021 00033 (:1) FUNCDATA $0, gclocals·dc9b0298814590ca3ffc3a889546fc8b(SB) + 0x0021 00033 (:1) FUNCDATA $1, gclocals·69c1753bd5f81501d95132d08af04464(SB) + 0x0021 00033 (:1) FUNCDATA $2, gclocals·313a5bdbfadc4f007c002a3a3588596d(SB) + 0x0021 00033 (:1) PCDATA $0, $1 + 0x0021 00033 (:1) PCDATA $1, $0 + 0x0021 00033 (:1) MOVQ "".p+56(SP), AX + 0x0026 00038 (:1) PCDATA $0, $2 + 0x0026 00038 (:1) MOVQ "".q+64(SP), CX + 0x002b 00043 (:1) XORL DX, DX + 0x002d 00045 (:1) JMP 72 + 0x002f 00047 (:1) PCDATA $0, $0 + 0x002f 00047 (:1) MOVQ ""..autotmp_8+32(SP), BX + 0x0034 00052 (:1) LEAQ 1(BX), DX + 0x0038 00056 (:1) PCDATA $0, $3 + 0x0038 00056 (:1) MOVQ "".p+56(SP), BX + 0x003d 00061 (:1) PCDATA $0, $4 + 0x003d 00061 (:1) MOVQ "".q+64(SP), SI + 0x0042 00066 (:1) PCDATA $0, $5 + 0x0042 00066 (:1) MOVQ BX, AX + 0x0045 00069 (:1) PCDATA $0, $2 + 0x0045 00069 (:1) MOVQ SI, CX + 0x0048 00072 (:1) CMPQ DX, $4 + 0x004c 00076 (:1) JGE 154 + 0x004e 00078 (:1) MOVQ DX, BX + 0x0051 00081 (:1) SHLQ $4, DX + 0x0055 00085 (:1) PCDATA $0, $6 + 0x0055 00085 (:1) MOVQ 8(DX)(AX*1), SI + 0x005a 00090 (:1) PCDATA $0, $7 + 0x005a 00090 (:1) MOVQ (DX)(AX*1), DI + 0x005e 00094 (:1) MOVQ (DX)(CX*1), R8 + 0x0062 00098 (:1) PCDATA $0, $8 + 0x0062 00098 (:1) MOVQ 8(DX)(CX*1), DX + 0x0067 00103 (:1) CMPQ DI, R8 + 0x006a 00106 (:1) JNE 139 + 0x006c 00108 (:1) MOVQ BX, ""..autotmp_8+32(SP) + 0x0071 00113 (:1) MOVQ DI, (SP) + 0x0075 00117 (:1) PCDATA $0, $9 + 0x0075 00117 (:1) MOVQ SI, 8(SP) + 0x007a 00122 (:1) PCDATA $0, $0 + 0x007a 00122 (:1) MOVQ DX, 16(SP) + 0x007f 00127 (:1) CALL runtime.ifaceeq(SB) + 0x0084 00132 (:1) CMPB 24(SP), $0 + 0x0089 00137 (:1) JNE 47 + 0x008b 00139 (:1) PCDATA $1, $1 + 0x008b 00139 (:1) MOVB $0, "".~r2+72(SP) + 0x0090 00144 (:1) MOVQ 40(SP), BP + 0x0095 00149 (:1) ADDQ $48, SP + 0x0099 00153 (:1) RET + 0x009a 00154 (:1) MOVB $1, "".~r2+72(SP) + 0x009f 00159 (:1) MOVQ 40(SP), BP + 0x00a4 00164 (:1) ADDQ $48, SP + 0x00a8 00168 (:1) RET + 0x00a9 00169 (:1) NOP + 0x00a9 00169 (:1) PCDATA $1, $-1 + 0x00a9 00169 (:1) PCDATA $0, $-2 + 0x00a9 00169 (:1) CALL runtime.morestack_noctxt(SB) + 0x00ae 00174 (:1) PCDATA $0, $-1 + 0x00ae 00174 (:1) JMP 0 + 0x0000 64 48 8b 0c 25 00 00 00 00 48 3b 61 10 0f 86 96 dH..%....H;a.... + 0x0010 00 00 00 48 83 ec 30 48 89 6c 24 28 48 8d 6c 24 ...H..0H.l$(H.l$ + 0x0020 28 48 8b 44 24 38 48 8b 4c 24 40 31 d2 eb 19 48 (H.D$8H.L$@1...H + 0x0030 8b 5c 24 20 48 8d 53 01 48 8b 5c 24 38 48 8b 74 .\$ H.S.H.\$8H.t + 0x0040 24 40 48 89 d8 48 89 f1 48 83 fa 04 7d 4c 48 89 $@H..H..H...}LH. + 0x0050 d3 48 c1 e2 04 48 8b 74 02 08 48 8b 3c 02 4c 8b .H...H.t..H.<.L. + 0x0060 04 0a 48 8b 54 0a 08 4c 39 c7 75 1f 48 89 5c 24 ..H.T..L9.u.H.\$ + 0x0070 20 48 89 3c 24 48 89 74 24 08 48 89 54 24 10 e8 H.<$H.t$.H.T$.. + 0x0080 00 00 00 00 80 7c 24 18 00 75 a4 c6 44 24 48 00 .....|$..u..D$H. + 0x0090 48 8b 6c 24 28 48 83 c4 30 c3 c6 44 24 48 01 48 H.l$(H..0..D$H.H + 0x00a0 8b 6c 24 28 48 83 c4 30 c3 e8 00 00 00 00 e9 4d .l$(H..0.......M + 0x00b0 ff ff ff ... + rel 5+4 t=17 TLS+0 + rel 128+4 t=8 runtime.ifaceeq+0 + rel 170+4 t=8 runtime.morestack_noctxt+0 +"".BenchmarkLog3 STEXT size=1994 args=0x0 locals=0x150 + 0x0000 00000 (main.go:107) TEXT "".BenchmarkLog3(SB), ABIInternal, $336-0 + 0x0000 00000 (main.go:107) MOVQ (TLS), CX + 0x0009 00009 (main.go:107) LEAQ -208(SP), AX + 0x0011 00017 (main.go:107) CMPQ AX, 16(CX) + 0x0015 00021 (main.go:107) PCDATA $0, $-2 + 0x0015 00021 (main.go:107) JLS 1984 + 0x001b 00027 (main.go:107) PCDATA $0, $-1 + 0x001b 00027 (main.go:107) SUBQ $336, SP + 0x0022 00034 (main.go:107) MOVQ BP, 328(SP) + 0x002a 00042 (main.go:107) LEAQ 328(SP), BP + 0x0032 00050 (main.go:107) PCDATA $0, $-2 + 0x0032 00050 (main.go:107) PCDATA $1, $-2 + 0x0032 00050 (main.go:107) FUNCDATA $0, gclocals·77290df25e841177bba194c18c385853(SB) + 0x0032 00050 (main.go:107) FUNCDATA $1, gclocals·60a9e1a2785891ce997ce56166417af3(SB) + 0x0032 00050 (main.go:107) FUNCDATA $2, gclocals·abab27e7e9c1b87ef3036112b9cffd5f(SB) + 0x0032 00050 (main.go:107) FUNCDATA $3, "".BenchmarkLog3.stkobj(SB) + 0x0032 00050 (main.go:108) PCDATA $0, $0 + 0x0032 00050 (main.go:108) PCDATA $1, $1 + 0x0032 00050 (main.go:108) XORPS X0, X0 + 0x0035 00053 (main.go:108) MOVUPS X0, ""..autotmp_51+136(SP) + 0x003d 00061 (main.go:108) PCDATA $0, $1 + 0x003d 00061 (main.go:108) LEAQ type.string(SB), AX + 0x0044 00068 (main.go:108) PCDATA $0, $0 + 0x0044 00068 (main.go:108) MOVQ AX, ""..autotmp_51+136(SP) + 0x004c 00076 (main.go:108) PCDATA $0, $2 + 0x004c 00076 (main.go:108) LEAQ ""..stmp_2(SB), CX + 0x0053 00083 (main.go:108) PCDATA $0, $0 + 0x0053 00083 (main.go:108) MOVQ CX, ""..autotmp_51+144(SP) + 0x005b 00091 () NOP + 0x005b 00091 ($GOROOT/src/fmt/print.go:274) PCDATA $0, $2 + 0x005b 00091 ($GOROOT/src/fmt/print.go:274) MOVQ os.Stdout(SB), CX + 0x0062 00098 ($GOROOT/src/fmt/print.go:274) PCDATA $0, $3 + 0x0062 00098 ($GOROOT/src/fmt/print.go:274) LEAQ go.itab.*os.File,io.Writer(SB), DX + 0x0069 00105 ($GOROOT/src/fmt/print.go:274) PCDATA $0, $2 + 0x0069 00105 ($GOROOT/src/fmt/print.go:274) MOVQ DX, (SP) + 0x006d 00109 ($GOROOT/src/fmt/print.go:274) PCDATA $0, $0 + 0x006d 00109 ($GOROOT/src/fmt/print.go:274) MOVQ CX, 8(SP) + 0x0072 00114 ($GOROOT/src/fmt/print.go:274) PCDATA $0, $2 + 0x0072 00114 ($GOROOT/src/fmt/print.go:274) PCDATA $1, $0 + 0x0072 00114 ($GOROOT/src/fmt/print.go:274) LEAQ ""..autotmp_51+136(SP), CX + 0x007a 00122 ($GOROOT/src/fmt/print.go:274) PCDATA $0, $0 + 0x007a 00122 ($GOROOT/src/fmt/print.go:274) MOVQ CX, 16(SP) + 0x007f 00127 ($GOROOT/src/fmt/print.go:274) MOVQ $1, 24(SP) + 0x0088 00136 ($GOROOT/src/fmt/print.go:274) MOVQ $1, 32(SP) + 0x0091 00145 ($GOROOT/src/fmt/print.go:274) CALL fmt.Fprintln(SB) + 0x0096 00150 (main.go:109) XCHGL AX, AX + 0x0097 00151 ($GOROOT/src/errors/errors.go:59) PCDATA $0, $1 + 0x0097 00151 ($GOROOT/src/errors/errors.go:59) LEAQ type.errors.errorString(SB), AX + 0x009e 00158 ($GOROOT/src/errors/errors.go:59) PCDATA $0, $0 + 0x009e 00158 ($GOROOT/src/errors/errors.go:59) MOVQ AX, (SP) + 0x00a2 00162 ($GOROOT/src/errors/errors.go:59) CALL runtime.newobject(SB) + 0x00a7 00167 ($GOROOT/src/errors/errors.go:59) PCDATA $0, $1 + 0x00a7 00167 ($GOROOT/src/errors/errors.go:59) MOVQ 8(SP), AX + 0x00ac 00172 ($GOROOT/src/errors/errors.go:59) PCDATA $1, $2 + 0x00ac 00172 ($GOROOT/src/errors/errors.go:59) MOVQ AX, ""..autotmp_128+128(SP) + 0x00b4 00180 ($GOROOT/src/errors/errors.go:59) MOVQ $10, 8(AX) + 0x00bc 00188 ($GOROOT/src/errors/errors.go:59) PCDATA $0, $4 + 0x00bc 00188 ($GOROOT/src/errors/errors.go:59) LEAQ go.string."test error"(SB), CX + 0x00c3 00195 ($GOROOT/src/errors/errors.go:59) PCDATA $0, $0 + 0x00c3 00195 ($GOROOT/src/errors/errors.go:59) MOVQ CX, (AX) + 0x00c6 00198 (main.go:116) PCDATA $1, $3 + 0x00c6 00198 (main.go:116) XORPS X0, X0 + 0x00c9 00201 (main.go:116) MOVUPS X0, "".opts+200(SP) + 0x00d1 00209 (main.go:116) MOVUPS X0, "".opts+216(SP) + 0x00d9 00217 (main.go:116) MOVUPS X0, "".opts+232(SP) + 0x00e1 00225 (main.go:116) MOVUPS X0, "".opts+248(SP) + 0x00e9 00233 (main.go:118) PCDATA $0, $2 + 0x00e9 00233 (main.go:118) LEAQ go.itab."".severity,"".option(SB), CX + 0x00f0 00240 (main.go:118) PCDATA $0, $0 + 0x00f0 00240 (main.go:118) MOVQ CX, "".opts+200(SP) + 0x00f8 00248 (main.go:118) PCDATA $0, $5 + 0x00f8 00248 (main.go:118) LEAQ ""..stmp_3(SB), DX + 0x00ff 00255 (main.go:118) PCDATA $0, $0 + 0x00ff 00255 (main.go:118) MOVQ DX, "".opts+208(SP) + 0x0107 00263 (main.go:119) CALL runtime.makemap_small(SB) + 0x010c 00268 (main.go:119) PCDATA $0, $1 + 0x010c 00268 (main.go:119) MOVQ (SP), AX + 0x0110 00272 (main.go:119) PCDATA $0, $0 + 0x0110 00272 (main.go:119) PCDATA $1, $4 + 0x0110 00272 (main.go:119) MOVQ AX, ""..autotmp_129+120(SP) + 0x0115 00277 (main.go:119) PCDATA $0, $2 + 0x0115 00277 (main.go:119) LEAQ go.string."d1"(SB), CX + 0x011c 00284 (main.go:119) PCDATA $0, $0 + 0x011c 00284 (main.go:119) MOVQ CX, (SP) + 0x0120 00288 (main.go:119) MOVQ $2, 8(SP) + 0x0129 00297 (main.go:119) CALL runtime.convTstring(SB) + 0x012e 00302 (main.go:119) PCDATA $0, $1 + 0x012e 00302 (main.go:119) MOVQ 16(SP), AX + 0x0133 00307 (main.go:119) PCDATA $0, $0 + 0x0133 00307 (main.go:119) PCDATA $1, $5 + 0x0133 00307 (main.go:119) MOVQ AX, ""..autotmp_130+112(SP) + 0x0138 00312 (main.go:119) PCDATA $0, $2 + 0x0138 00312 (main.go:119) LEAQ type."".Data(SB), CX + 0x013f 00319 (main.go:119) PCDATA $0, $0 + 0x013f 00319 (main.go:119) MOVQ CX, (SP) + 0x0143 00323 (main.go:119) PCDATA $0, $5 + 0x0143 00323 (main.go:119) MOVQ ""..autotmp_129+120(SP), DX + 0x0148 00328 (main.go:119) PCDATA $0, $0 + 0x0148 00328 (main.go:119) MOVQ DX, 8(SP) + 0x014d 00333 (main.go:119) PCDATA $0, $6 + 0x014d 00333 (main.go:119) LEAQ go.string."data_1"(SB), BX + 0x0154 00340 (main.go:119) PCDATA $0, $0 + 0x0154 00340 (main.go:119) MOVQ BX, 16(SP) + 0x0159 00345 (main.go:119) MOVQ $6, 24(SP) + 0x0162 00354 (main.go:119) CALL runtime.mapassign_faststr(SB) + 0x0167 00359 (main.go:119) PCDATA $0, $1 + 0x0167 00359 (main.go:119) MOVQ 32(SP), AX + 0x016c 00364 (main.go:119) PCDATA $0, $4 + 0x016c 00364 (main.go:119) LEAQ type.string(SB), CX + 0x0173 00371 (main.go:119) PCDATA $0, $1 + 0x0173 00371 (main.go:119) MOVQ CX, (AX) + 0x0176 00374 (main.go:119) PCDATA $0, $-2 + 0x0176 00374 (main.go:119) PCDATA $1, $-2 + 0x0176 00374 (main.go:119) CMPL runtime.writeBarrier(SB), $0 + 0x017d 00381 (main.go:119) JNE 1781 + 0x0183 00387 (main.go:119) MOVQ ""..autotmp_130+112(SP), DX + 0x0188 00392 (main.go:119) MOVQ DX, 8(AX) + 0x018c 00396 (main.go:119) PCDATA $0, $1 + 0x018c 00396 (main.go:119) PCDATA $1, $4 + 0x018c 00396 (main.go:119) LEAQ go.string."d2"(SB), AX + 0x0193 00403 (main.go:119) PCDATA $0, $0 + 0x0193 00403 (main.go:119) MOVQ AX, (SP) + 0x0197 00407 (main.go:119) MOVQ $2, 8(SP) + 0x01a0 00416 (main.go:119) CALL runtime.convTstring(SB) + 0x01a5 00421 (main.go:119) PCDATA $0, $1 + 0x01a5 00421 (main.go:119) MOVQ 16(SP), AX + 0x01aa 00426 (main.go:119) PCDATA $0, $0 + 0x01aa 00426 (main.go:119) PCDATA $1, $5 + 0x01aa 00426 (main.go:119) MOVQ AX, ""..autotmp_130+112(SP) + 0x01af 00431 (main.go:119) PCDATA $0, $2 + 0x01af 00431 (main.go:119) LEAQ type."".Data(SB), CX + 0x01b6 00438 (main.go:119) PCDATA $0, $0 + 0x01b6 00438 (main.go:119) MOVQ CX, (SP) + 0x01ba 00442 (main.go:119) PCDATA $0, $5 + 0x01ba 00442 (main.go:119) MOVQ ""..autotmp_129+120(SP), DX + 0x01bf 00447 (main.go:119) PCDATA $0, $0 + 0x01bf 00447 (main.go:119) MOVQ DX, 8(SP) + 0x01c4 00452 (main.go:119) PCDATA $0, $6 + 0x01c4 00452 (main.go:119) LEAQ go.string."data_2"(SB), BX + 0x01cb 00459 (main.go:119) PCDATA $0, $0 + 0x01cb 00459 (main.go:119) MOVQ BX, 16(SP) + 0x01d0 00464 (main.go:119) MOVQ $6, 24(SP) + 0x01d9 00473 (main.go:119) CALL runtime.mapassign_faststr(SB) + 0x01de 00478 (main.go:119) PCDATA $0, $1 + 0x01de 00478 (main.go:119) MOVQ 32(SP), AX + 0x01e3 00483 (main.go:119) PCDATA $0, $4 + 0x01e3 00483 (main.go:119) LEAQ type.string(SB), CX + 0x01ea 00490 (main.go:119) PCDATA $0, $1 + 0x01ea 00490 (main.go:119) MOVQ CX, (AX) + 0x01ed 00493 (main.go:119) PCDATA $0, $-2 + 0x01ed 00493 (main.go:119) PCDATA $1, $-2 + 0x01ed 00493 (main.go:119) CMPL runtime.writeBarrier(SB), $0 + 0x01f4 00500 (main.go:119) JNE 1762 + 0x01fa 00506 (main.go:119) MOVQ ""..autotmp_130+112(SP), DX + 0x01ff 00511 (main.go:119) MOVQ DX, 8(AX) + 0x0203 00515 (main.go:119) PCDATA $0, $1 + 0x0203 00515 (main.go:119) PCDATA $1, $4 + 0x0203 00515 (main.go:119) LEAQ go.string."d3"(SB), AX + 0x020a 00522 (main.go:119) PCDATA $0, $0 + 0x020a 00522 (main.go:119) MOVQ AX, (SP) + 0x020e 00526 (main.go:119) MOVQ $2, 8(SP) + 0x0217 00535 (main.go:119) CALL runtime.convTstring(SB) + 0x021c 00540 (main.go:119) PCDATA $0, $1 + 0x021c 00540 (main.go:119) MOVQ 16(SP), AX + 0x0221 00545 (main.go:119) PCDATA $0, $0 + 0x0221 00545 (main.go:119) PCDATA $1, $5 + 0x0221 00545 (main.go:119) MOVQ AX, ""..autotmp_130+112(SP) + 0x0226 00550 (main.go:119) PCDATA $0, $2 + 0x0226 00550 (main.go:119) LEAQ type."".Data(SB), CX + 0x022d 00557 (main.go:119) PCDATA $0, $0 + 0x022d 00557 (main.go:119) MOVQ CX, (SP) + 0x0231 00561 (main.go:119) PCDATA $0, $5 + 0x0231 00561 (main.go:119) MOVQ ""..autotmp_129+120(SP), DX + 0x0236 00566 (main.go:119) PCDATA $0, $0 + 0x0236 00566 (main.go:119) MOVQ DX, 8(SP) + 0x023b 00571 (main.go:119) PCDATA $0, $6 + 0x023b 00571 (main.go:119) LEAQ go.string."data_3"(SB), BX + 0x0242 00578 (main.go:119) PCDATA $0, $0 + 0x0242 00578 (main.go:119) MOVQ BX, 16(SP) + 0x0247 00583 (main.go:119) MOVQ $6, 24(SP) + 0x0250 00592 (main.go:119) CALL runtime.mapassign_faststr(SB) + 0x0255 00597 (main.go:119) PCDATA $0, $1 + 0x0255 00597 (main.go:119) MOVQ 32(SP), AX + 0x025a 00602 (main.go:119) PCDATA $0, $4 + 0x025a 00602 (main.go:119) LEAQ type.string(SB), CX + 0x0261 00609 (main.go:119) PCDATA $0, $1 + 0x0261 00609 (main.go:119) MOVQ CX, (AX) + 0x0264 00612 (main.go:119) PCDATA $0, $-2 + 0x0264 00612 (main.go:119) PCDATA $1, $-2 + 0x0264 00612 (main.go:119) CMPL runtime.writeBarrier(SB), $0 + 0x026b 00619 (main.go:119) JNE 1743 + 0x0271 00625 (main.go:119) MOVQ ""..autotmp_130+112(SP), DX + 0x0276 00630 (main.go:119) MOVQ DX, 8(AX) + 0x027a 00634 (main.go:119) PCDATA $0, $1 + 0x027a 00634 (main.go:119) PCDATA $1, $4 + 0x027a 00634 (main.go:119) LEAQ go.string."d4"(SB), AX + 0x0281 00641 (main.go:119) PCDATA $0, $0 + 0x0281 00641 (main.go:119) MOVQ AX, (SP) + 0x0285 00645 (main.go:119) MOVQ $2, 8(SP) + 0x028e 00654 (main.go:119) CALL runtime.convTstring(SB) + 0x0293 00659 (main.go:119) PCDATA $0, $1 + 0x0293 00659 (main.go:119) MOVQ 16(SP), AX + 0x0298 00664 (main.go:119) PCDATA $0, $0 + 0x0298 00664 (main.go:119) PCDATA $1, $5 + 0x0298 00664 (main.go:119) MOVQ AX, ""..autotmp_130+112(SP) + 0x029d 00669 (main.go:119) PCDATA $0, $2 + 0x029d 00669 (main.go:119) LEAQ type."".Data(SB), CX + 0x02a4 00676 (main.go:119) PCDATA $0, $0 + 0x02a4 00676 (main.go:119) MOVQ CX, (SP) + 0x02a8 00680 (main.go:119) PCDATA $0, $5 + 0x02a8 00680 (main.go:119) MOVQ ""..autotmp_129+120(SP), DX + 0x02ad 00685 (main.go:119) PCDATA $0, $0 + 0x02ad 00685 (main.go:119) MOVQ DX, 8(SP) + 0x02b2 00690 (main.go:119) PCDATA $0, $6 + 0x02b2 00690 (main.go:119) LEAQ go.string."data_4"(SB), BX + 0x02b9 00697 (main.go:119) PCDATA $0, $0 + 0x02b9 00697 (main.go:119) MOVQ BX, 16(SP) + 0x02be 00702 (main.go:119) MOVQ $6, 24(SP) + 0x02c7 00711 (main.go:119) CALL runtime.mapassign_faststr(SB) + 0x02cc 00716 (main.go:119) PCDATA $0, $1 + 0x02cc 00716 (main.go:119) MOVQ 32(SP), AX + 0x02d1 00721 (main.go:119) PCDATA $0, $4 + 0x02d1 00721 (main.go:119) LEAQ type.string(SB), CX + 0x02d8 00728 (main.go:119) PCDATA $0, $1 + 0x02d8 00728 (main.go:119) MOVQ CX, (AX) + 0x02db 00731 (main.go:119) PCDATA $0, $-2 + 0x02db 00731 (main.go:119) PCDATA $1, $-2 + 0x02db 00731 (main.go:119) CMPL runtime.writeBarrier(SB), $0 + 0x02e2 00738 (main.go:119) JNE 1724 + 0x02e8 00744 (main.go:119) MOVQ ""..autotmp_130+112(SP), DX + 0x02ed 00749 (main.go:119) MOVQ DX, 8(AX) + 0x02f1 00753 (main.go:119) PCDATA $0, $1 + 0x02f1 00753 (main.go:119) PCDATA $1, $4 + 0x02f1 00753 (main.go:119) LEAQ go.itab."".Data,"".option(SB), AX + 0x02f8 00760 (main.go:119) PCDATA $0, $0 + 0x02f8 00760 (main.go:119) MOVQ AX, "".opts+216(SP) + 0x0300 00768 (main.go:119) PCDATA $0, $2 + 0x0300 00768 (main.go:119) PCDATA $1, $3 + 0x0300 00768 (main.go:119) MOVQ ""..autotmp_129+120(SP), CX + 0x0305 00773 (main.go:119) PCDATA $0, $0 + 0x0305 00773 (main.go:119) MOVQ CX, "".opts+224(SP) + 0x030d 00781 (main.go:120) PCDATA $0, $2 + 0x030d 00781 (main.go:120) LEAQ go.itab.*errors.errorString,error(SB), CX + 0x0314 00788 (main.go:120) PCDATA $0, $0 + 0x0314 00788 (main.go:120) MOVQ CX, (SP) + 0x0318 00792 (main.go:120) PCDATA $0, $2 + 0x0318 00792 (main.go:120) PCDATA $1, $6 + 0x0318 00792 (main.go:120) MOVQ ""..autotmp_128+128(SP), CX + 0x0320 00800 (main.go:120) PCDATA $0, $0 + 0x0320 00800 (main.go:120) MOVQ CX, 8(SP) + 0x0325 00805 (main.go:120) CALL "".Error(SB) + 0x032a 00810 (main.go:120) PCDATA $0, $1 + 0x032a 00810 (main.go:120) MOVQ 24(SP), AX + 0x032f 00815 (main.go:120) MOVQ 16(SP), CX + 0x0334 00820 (main.go:120) MOVQ CX, "".opts+232(SP) + 0x033c 00828 (main.go:120) PCDATA $0, $0 + 0x033c 00828 (main.go:120) MOVQ AX, "".opts+240(SP) + 0x0344 00836 (main.go:121) CALL runtime.makemap_small(SB) + 0x0349 00841 (main.go:121) PCDATA $0, $1 + 0x0349 00841 (main.go:121) MOVQ (SP), AX + 0x034d 00845 (main.go:121) PCDATA $0, $0 + 0x034d 00845 (main.go:121) PCDATA $1, $7 + 0x034d 00845 (main.go:121) MOVQ AX, ""..autotmp_129+120(SP) + 0x0352 00850 (main.go:121) PCDATA $0, $2 + 0x0352 00850 (main.go:121) LEAQ go.string."d4"(SB), CX + 0x0359 00857 (main.go:121) PCDATA $0, $0 + 0x0359 00857 (main.go:121) MOVQ CX, (SP) + 0x035d 00861 (main.go:121) MOVQ $2, 8(SP) + 0x0366 00870 (main.go:121) CALL runtime.convTstring(SB) + 0x036b 00875 (main.go:121) PCDATA $0, $1 + 0x036b 00875 (main.go:121) MOVQ 16(SP), AX + 0x0370 00880 (main.go:121) PCDATA $0, $0 + 0x0370 00880 (main.go:121) PCDATA $1, $8 + 0x0370 00880 (main.go:121) MOVQ AX, ""..autotmp_130+112(SP) + 0x0375 00885 (main.go:121) PCDATA $0, $2 + 0x0375 00885 (main.go:121) LEAQ type."".Data(SB), CX + 0x037c 00892 (main.go:121) PCDATA $0, $0 + 0x037c 00892 (main.go:121) MOVQ CX, (SP) + 0x0380 00896 (main.go:121) PCDATA $0, $5 + 0x0380 00896 (main.go:121) MOVQ ""..autotmp_129+120(SP), DX + 0x0385 00901 (main.go:121) PCDATA $0, $0 + 0x0385 00901 (main.go:121) MOVQ DX, 8(SP) + 0x038a 00906 (main.go:121) PCDATA $0, $6 + 0x038a 00906 (main.go:121) LEAQ go.string."data_4"(SB), BX + 0x0391 00913 (main.go:121) PCDATA $0, $0 + 0x0391 00913 (main.go:121) MOVQ BX, 16(SP) + 0x0396 00918 (main.go:121) MOVQ $6, 24(SP) + 0x039f 00927 (main.go:121) CALL runtime.mapassign_faststr(SB) + 0x03a4 00932 (main.go:121) PCDATA $0, $1 + 0x03a4 00932 (main.go:121) MOVQ 32(SP), AX + 0x03a9 00937 (main.go:121) PCDATA $0, $4 + 0x03a9 00937 (main.go:121) LEAQ type.string(SB), CX + 0x03b0 00944 (main.go:121) PCDATA $0, $1 + 0x03b0 00944 (main.go:121) MOVQ CX, (AX) + 0x03b3 00947 (main.go:121) PCDATA $0, $-2 + 0x03b3 00947 (main.go:121) PCDATA $1, $-2 + 0x03b3 00947 (main.go:121) CMPL runtime.writeBarrier(SB), $0 + 0x03ba 00954 (main.go:121) JNE 1705 + 0x03c0 00960 (main.go:121) MOVQ ""..autotmp_130+112(SP), DX + 0x03c5 00965 (main.go:121) MOVQ DX, 8(AX) + 0x03c9 00969 (main.go:121) PCDATA $0, $1 + 0x03c9 00969 (main.go:121) PCDATA $1, $7 + 0x03c9 00969 (main.go:121) LEAQ go.string."d2"(SB), AX + 0x03d0 00976 (main.go:121) PCDATA $0, $0 + 0x03d0 00976 (main.go:121) MOVQ AX, (SP) + 0x03d4 00980 (main.go:121) MOVQ $2, 8(SP) + 0x03dd 00989 (main.go:121) CALL runtime.convTstring(SB) + 0x03e2 00994 (main.go:121) PCDATA $0, $1 + 0x03e2 00994 (main.go:121) MOVQ 16(SP), AX + 0x03e7 00999 (main.go:121) PCDATA $0, $0 + 0x03e7 00999 (main.go:121) PCDATA $1, $8 + 0x03e7 00999 (main.go:121) MOVQ AX, ""..autotmp_130+112(SP) + 0x03ec 01004 (main.go:121) PCDATA $0, $2 + 0x03ec 01004 (main.go:121) LEAQ type."".Data(SB), CX + 0x03f3 01011 (main.go:121) PCDATA $0, $0 + 0x03f3 01011 (main.go:121) MOVQ CX, (SP) + 0x03f7 01015 (main.go:121) PCDATA $0, $5 + 0x03f7 01015 (main.go:121) MOVQ ""..autotmp_129+120(SP), DX + 0x03fc 01020 (main.go:121) PCDATA $0, $0 + 0x03fc 01020 (main.go:121) MOVQ DX, 8(SP) + 0x0401 01025 (main.go:121) PCDATA $0, $6 + 0x0401 01025 (main.go:121) LEAQ go.string."data_2"(SB), BX + 0x0408 01032 (main.go:121) PCDATA $0, $0 + 0x0408 01032 (main.go:121) MOVQ BX, 16(SP) + 0x040d 01037 (main.go:121) MOVQ $6, 24(SP) + 0x0416 01046 (main.go:121) CALL runtime.mapassign_faststr(SB) + 0x041b 01051 (main.go:121) PCDATA $0, $1 + 0x041b 01051 (main.go:121) MOVQ 32(SP), AX + 0x0420 01056 (main.go:121) PCDATA $0, $4 + 0x0420 01056 (main.go:121) LEAQ type.string(SB), CX + 0x0427 01063 (main.go:121) PCDATA $0, $1 + 0x0427 01063 (main.go:121) MOVQ CX, (AX) + 0x042a 01066 (main.go:121) PCDATA $0, $-2 + 0x042a 01066 (main.go:121) PCDATA $1, $-2 + 0x042a 01066 (main.go:121) CMPL runtime.writeBarrier(SB), $0 + 0x0431 01073 (main.go:121) JNE 1686 + 0x0437 01079 (main.go:121) MOVQ ""..autotmp_130+112(SP), DX + 0x043c 01084 (main.go:121) MOVQ DX, 8(AX) + 0x0440 01088 (main.go:121) PCDATA $0, $1 + 0x0440 01088 (main.go:121) PCDATA $1, $7 + 0x0440 01088 (main.go:121) LEAQ go.itab."".Data,"".option(SB), AX + 0x0447 01095 (main.go:121) PCDATA $0, $0 + 0x0447 01095 (main.go:121) MOVQ AX, "".opts+248(SP) + 0x044f 01103 (main.go:121) PCDATA $0, $2 + 0x044f 01103 (main.go:121) PCDATA $1, $6 + 0x044f 01103 (main.go:121) MOVQ ""..autotmp_129+120(SP), CX + 0x0454 01108 (main.go:121) PCDATA $0, $0 + 0x0454 01108 (main.go:121) MOVQ CX, "".opts+256(SP) + 0x045c 01116 (main.go:124) CALL time.Now(SB) + 0x0461 01121 (main.go:124) MOVQ (SP), AX + 0x0465 01125 () NOP + 0x0465 01125 ($GOROOT/src/time/time.go:1109) XCHGL AX, AX + 0x0466 01126 ($GOROOT/src/time/time.go:201) XCHGL AX, AX + 0x0467 01127 ($GOROOT/src/time/time.go:207) BTQ $63, AX + 0x046c 01132 ($GOROOT/src/time/time.go:207) JCC 1134 + 0x046e 01134 (main.go:131) PCDATA $1, $9 + 0x046e 01134 (main.go:131) MOVUPS "".opts+200(SP), X0 + 0x0476 01142 (main.go:131) MOVUPS X0, ""..autotmp_47+264(SP) + 0x047e 01150 (main.go:131) MOVUPS "".opts+216(SP), X0 + 0x0486 01158 (main.go:131) MOVUPS X0, ""..autotmp_47+280(SP) + 0x048e 01166 (main.go:131) MOVUPS "".opts+232(SP), X0 + 0x0496 01174 (main.go:131) MOVUPS X0, ""..autotmp_47+296(SP) + 0x049e 01182 (main.go:131) PCDATA $1, $10 + 0x049e 01182 (main.go:131) MOVUPS "".opts+248(SP), X0 + 0x04a6 01190 (main.go:131) MOVUPS X0, ""..autotmp_47+312(SP) + 0x04ae 01198 (main.go:131) PCDATA $0, $1 + 0x04ae 01198 (main.go:131) PCDATA $1, $0 + 0x04ae 01198 (main.go:131) LEAQ ""..autotmp_47+264(SP), AX + 0x04b6 01206 (main.go:131) XORL CX, CX + 0x04b8 01208 (main.go:131) JMP 1214 + 0x04ba 01210 (main.go:131) ADDQ $16, AX + 0x04be 01214 (main.go:131) PCDATA $0, $7 + 0x04be 01214 (main.go:131) MOVQ 8(AX), DX + 0x04c2 01218 (main.go:131) PCDATA $0, $8 + 0x04c2 01218 (main.go:131) MOVQ (AX), BX + 0x04c5 01221 (main.go:133) TESTQ BX, BX + 0x04c8 01224 (main.go:133) JEQ 1309 + 0x04ca 01226 (main.go:131) PCDATA $1, $11 + 0x04ca 01226 (main.go:131) MOVQ DX, "".~arg3.data+96(SP) + 0x04cf 01231 (main.go:131) MOVQ BX, "".v.itab+80(SP) + 0x04d4 01236 (main.go:131) PCDATA $1, $12 + 0x04d4 01236 (main.go:131) MOVQ AX, ""..autotmp_131+104(SP) + 0x04d9 01241 (main.go:131) MOVQ CX, ""..autotmp_132+88(SP) + 0x04de 01246 (main.go:133) MOVL 16(BX), SI + 0x04e1 01249 (main.go:133) CMPL SI, $1683611827 + 0x04e7 01255 (main.go:133) JHI 1468 + 0x04ed 01261 (main.go:133) CMPL SI, $1182499154 + 0x04f3 01267 (main.go:133) JNE 1346 + 0x04f5 01269 (main.go:133) PCDATA $0, $9 + 0x04f5 01269 (main.go:133) PCDATA $1, $0 + 0x04f5 01269 (main.go:133) LEAQ go.itab.*"".eventAuth,"".option(SB), SI + 0x04fc 01276 (main.go:133) PCDATA $0, $8 + 0x04fc 01276 (main.go:133) CMPQ SI, BX + 0x04ff 01279 (main.go:133) JNE 1306 + 0x0501 01281 (main.go:131) PCDATA $0, $1 + 0x0501 01281 (main.go:131) INCQ CX + 0x0504 01284 (main.go:131) CMPQ CX, $4 + 0x0508 01288 (main.go:131) JLT 1210 + 0x050a 01290 (main.go:131) PCDATA $0, $-1 + 0x050a 01290 (main.go:131) PCDATA $1, $-1 + 0x050a 01290 (main.go:131) MOVQ 328(SP), BP + 0x0512 01298 (main.go:131) ADDQ $336, SP + 0x0519 01305 (main.go:131) RET + 0x051a 01306 (main.go:133) PCDATA $0, $10 + 0x051a 01306 (main.go:133) PCDATA $1, $0 + 0x051a 01306 (main.go:133) TESTQ BX, BX + 0x051d 01309 (main.go:145) PCDATA $0, $-1 + 0x051d 01309 (main.go:145) PCDATA $1, $-1 + 0x051d 01309 (main.go:145) JEQ 1341 + 0x051f 01311 (main.go:145) PCDATA $0, $8 + 0x051f 01311 (main.go:145) PCDATA $1, $0 + 0x051f 01311 (main.go:145) MOVQ 8(BX), AX + 0x0523 01315 (main.go:145) PCDATA $0, $-1 + 0x0523 01315 (main.go:145) PCDATA $1, $-1 + 0x0523 01315 (main.go:145) JEQ 1336 + 0x0525 01317 (main.go:145) PCDATA $0, $11 + 0x0525 01317 (main.go:145) PCDATA $1, $0 + 0x0525 01317 (main.go:145) MOVQ 8(BX), CX + 0x0529 01321 (main.go:145) PCDATA $0, $-1 + 0x0529 01321 (main.go:145) PCDATA $1, $-1 + 0x0529 01321 (main.go:145) JEQ 1800 + 0x052f 01327 (main.go:145) PCDATA $0, $11 + 0x052f 01327 (main.go:145) PCDATA $1, $0 + 0x052f 01327 (main.go:145) MOVQ 8(BX), BX + 0x0533 01331 (main.go:145) JMP 1800 + 0x0538 01336 (main.go:145) MOVQ BX, CX + 0x053b 01339 (main.go:145) JMP 1321 + 0x053d 01341 (main.go:145) PCDATA $0, $8 + 0x053d 01341 (main.go:145) MOVQ BX, AX + 0x0540 01344 (main.go:145) JMP 1315 + 0x0542 01346 (main.go:133) PCDATA $0, $5 + 0x0542 01346 (main.go:133) PCDATA $1, $12 + 0x0542 01346 (main.go:133) CMPL SI, $1683611827 + 0x0548 01352 (main.go:133) JNE 1455 + 0x054a 01354 (main.go:133) PCDATA $0, $1 + 0x054a 01354 (main.go:133) LEAQ type."".severity(SB), AX + 0x0551 01361 (main.go:133) PCDATA $0, $0 + 0x0551 01361 (main.go:133) MOVQ AX, (SP) + 0x0555 01365 (main.go:133) CALL runtime.newobject(SB) + 0x055a 01370 (main.go:133) PCDATA $0, $1 + 0x055a 01370 (main.go:133) MOVQ 8(SP), AX + 0x055f 01375 (main.go:133) PCDATA $0, $4 + 0x055f 01375 (main.go:133) LEAQ go.itab."".severity,"".option(SB), CX + 0x0566 01382 (main.go:133) MOVQ "".v.itab+80(SP), DX + 0x056b 01387 (main.go:133) PCDATA $0, $1 + 0x056b 01387 (main.go:133) CMPQ CX, DX + 0x056e 01390 (main.go:133) JNE 1443 + 0x0570 01392 (main.go:133) PCDATA $0, $12 + 0x0570 01392 (main.go:133) PCDATA $1, $13 + 0x0570 01392 (main.go:133) MOVQ "".~arg3.data+96(SP), BX + 0x0575 01397 (main.go:133) MOVQ (BX), SI + 0x0578 01400 (main.go:133) PCDATA $0, $6 + 0x0578 01400 (main.go:133) MOVQ SI, (AX) + 0x057b 01403 (main.go:133) JNE 1427 + 0x057d 01405 (main.go:131) PCDATA $0, $1 + 0x057d 01405 (main.go:131) PCDATA $1, $0 + 0x057d 01405 (main.go:131) MOVQ ""..autotmp_131+104(SP), AX + 0x0582 01410 (main.go:131) MOVQ ""..autotmp_132+88(SP), CX + 0x0587 01415 (main.go:131) LEAQ go.itab.*"".eventAuth,"".option(SB), SI + 0x058e 01422 (main.go:133) JMP 1281 + 0x0593 01427 (main.go:133) PCDATA $0, $6 + 0x0593 01427 (main.go:133) TESTQ DX, DX + 0x0596 01430 (main.go:145) PCDATA $0, $5 + 0x0596 01430 (main.go:145) MOVQ BX, DX + 0x0599 01433 (main.go:145) PCDATA $0, $10 + 0x0599 01433 (main.go:145) MOVQ "".v.itab+80(SP), BX + 0x059e 01438 (main.go:144) JMP 1309 + 0x05a3 01443 (main.go:145) PCDATA $0, $12 + 0x05a3 01443 (main.go:145) PCDATA $1, $13 + 0x05a3 01443 (main.go:145) MOVQ "".~arg3.data+96(SP), BX + 0x05a8 01448 (main.go:145) MOVL $0, SI + 0x05ad 01453 (main.go:133) JMP 1400 + 0x05af 01455 (main.go:133) PCDATA $0, $5 + 0x05af 01455 (main.go:133) PCDATA $1, $0 + 0x05af 01455 (main.go:133) TESTQ BX, BX + 0x05b2 01458 (main.go:145) PCDATA $0, $6 + 0x05b2 01458 (main.go:145) MOVQ DX, BX + 0x05b5 01461 (main.go:145) MOVQ "".v.itab+80(SP), DX + 0x05ba 01466 (main.go:133) JMP 1430 + 0x05bc 01468 (main.go:133) PCDATA $0, $8 + 0x05bc 01468 (main.go:133) PCDATA $1, $12 + 0x05bc 01468 (main.go:133) CMPL SI, $-2140036810 + 0x05c2 01474 (main.go:133) JNE 1508 + 0x05c4 01476 (main.go:133) PCDATA $0, $9 + 0x05c4 01476 (main.go:133) PCDATA $1, $0 + 0x05c4 01476 (main.go:133) LEAQ go.itab.*"".EventHTTP,"".option(SB), SI + 0x05cb 01483 (main.go:133) PCDATA $0, $8 + 0x05cb 01483 (main.go:133) CMPQ SI, BX + 0x05ce 01486 (main.go:133) JNE 1500 + 0x05d0 01488 (main.go:133) PCDATA $0, $1 + 0x05d0 01488 (main.go:133) LEAQ go.itab.*"".eventAuth,"".option(SB), SI + 0x05d7 01495 (main.go:133) JMP 1281 + 0x05dc 01500 (main.go:133) PCDATA $0, $10 + 0x05dc 01500 (main.go:133) TESTQ BX, BX + 0x05df 01503 (main.go:144) JMP 1309 + 0x05e4 01508 (main.go:133) PCDATA $0, $8 + 0x05e4 01508 (main.go:133) PCDATA $1, $12 + 0x05e4 01508 (main.go:133) CMPL SI, $-1811802282 + 0x05ea 01514 (main.go:133) JEQ 1564 + 0x05ec 01516 (main.go:133) PCDATA $1, $0 + 0x05ec 01516 (main.go:133) CMPL SI, $-202822140 + 0x05f2 01522 (main.go:133) JNE 1556 + 0x05f4 01524 (main.go:133) PCDATA $0, $9 + 0x05f4 01524 (main.go:133) LEAQ go.itab.*"".EventError,"".option(SB), SI + 0x05fb 01531 (main.go:133) PCDATA $0, $8 + 0x05fb 01531 (main.go:133) CMPQ SI, BX + 0x05fe 01534 (main.go:133) JNE 1548 + 0x0600 01536 (main.go:133) PCDATA $0, $1 + 0x0600 01536 (main.go:133) LEAQ go.itab.*"".eventAuth,"".option(SB), SI + 0x0607 01543 (main.go:133) JMP 1281 + 0x060c 01548 (main.go:133) PCDATA $0, $10 + 0x060c 01548 (main.go:133) TESTQ BX, BX + 0x060f 01551 (main.go:144) JMP 1309 + 0x0614 01556 (main.go:133) TESTQ BX, BX + 0x0617 01559 (main.go:133) JMP 1309 + 0x061c 01564 (main.go:133) PCDATA $0, $1 + 0x061c 01564 (main.go:133) PCDATA $1, $12 + 0x061c 01564 (main.go:133) LEAQ type."".Data(SB), AX + 0x0623 01571 (main.go:133) PCDATA $0, $0 + 0x0623 01571 (main.go:133) MOVQ AX, (SP) + 0x0627 01575 (main.go:133) CALL runtime.newobject(SB) + 0x062c 01580 (main.go:133) PCDATA $0, $13 + 0x062c 01580 (main.go:133) MOVQ 8(SP), DI + 0x0631 01585 (main.go:133) PCDATA $0, $14 + 0x0631 01585 (main.go:133) LEAQ go.itab."".Data,"".option(SB), AX + 0x0638 01592 (main.go:133) MOVQ "".v.itab+80(SP), CX + 0x063d 01597 (main.go:133) CMPQ AX, CX + 0x0640 01600 (main.go:133) JNE 1682 + 0x0642 01602 (main.go:133) PCDATA $0, $15 + 0x0642 01602 (main.go:133) MOVQ "".~arg3.data+96(SP), DX + 0x0647 01607 (main.go:133) PCDATA $0, $-2 + 0x0647 01607 (main.go:133) PCDATA $1, $-2 + 0x0647 01607 (main.go:133) CMPL runtime.writeBarrier(SB), $0 + 0x064e 01614 (main.go:133) JNE 1662 + 0x0650 01616 (main.go:133) MOVQ DX, (DI) + 0x0653 01619 (main.go:133) CMPQ AX, CX + 0x0656 01622 (main.go:133) PCDATA $0, $-1 + 0x0656 01622 (main.go:133) PCDATA $1, $-1 + 0x0656 01622 (main.go:133) JNE 1646 + 0x0658 01624 (main.go:131) PCDATA $0, $1 + 0x0658 01624 (main.go:131) PCDATA $1, $0 + 0x0658 01624 (main.go:131) MOVQ ""..autotmp_131+104(SP), AX + 0x065d 01629 (main.go:131) MOVQ ""..autotmp_132+88(SP), CX + 0x0662 01634 (main.go:131) LEAQ go.itab.*"".eventAuth,"".option(SB), SI + 0x0669 01641 (main.go:133) JMP 1281 + 0x066e 01646 (main.go:133) PCDATA $0, $0 + 0x066e 01646 (main.go:133) PCDATA $1, $11 + 0x066e 01646 (main.go:133) TESTQ CX, CX + 0x0671 01649 (main.go:145) PCDATA $0, $5 + 0x0671 01649 (main.go:145) PCDATA $1, $0 + 0x0671 01649 (main.go:145) MOVQ "".~arg3.data+96(SP), DX + 0x0676 01654 (main.go:145) PCDATA $0, $10 + 0x0676 01654 (main.go:145) MOVQ CX, BX + 0x0679 01657 (main.go:144) JMP 1309 + 0x067e 01662 (main.go:133) PCDATA $0, $-2 + 0x067e 01662 (main.go:133) PCDATA $1, $-2 + 0x067e 01662 (main.go:133) MOVQ DX, AX + 0x0681 01665 (main.go:133) CALL runtime.gcWriteBarrier(SB) + 0x0686 01670 (main.go:133) LEAQ go.itab."".Data,"".option(SB), AX + 0x068d 01677 (main.go:133) CMPQ AX, CX + 0x0690 01680 (main.go:133) JMP 1622 + 0x0692 01682 (main.go:133) PCDATA $0, $15 + 0x0692 01682 (main.go:133) PCDATA $1, $12 + 0x0692 01682 (main.go:133) XORL DX, DX + 0x0694 01684 (main.go:133) JMP 1607 + 0x0696 01686 (main.go:121) PCDATA $0, $-2 + 0x0696 01686 (main.go:121) PCDATA $1, $-2 + 0x0696 01686 (main.go:121) LEAQ 8(AX), DI + 0x069a 01690 (main.go:121) MOVQ ""..autotmp_130+112(SP), AX + 0x069f 01695 (main.go:121) CALL runtime.gcWriteBarrier(SB) + 0x06a4 01700 (main.go:121) JMP 1088 + 0x06a9 01705 (main.go:121) LEAQ 8(AX), DI + 0x06ad 01709 (main.go:121) MOVQ ""..autotmp_130+112(SP), AX + 0x06b2 01714 (main.go:121) CALL runtime.gcWriteBarrier(SB) + 0x06b7 01719 (main.go:121) JMP 969 + 0x06bc 01724 (main.go:119) LEAQ 8(AX), DI + 0x06c0 01728 (main.go:119) MOVQ ""..autotmp_130+112(SP), AX + 0x06c5 01733 (main.go:119) CALL runtime.gcWriteBarrier(SB) + 0x06ca 01738 (main.go:119) JMP 753 + 0x06cf 01743 (main.go:119) LEAQ 8(AX), DI + 0x06d3 01747 (main.go:119) MOVQ ""..autotmp_130+112(SP), AX + 0x06d8 01752 (main.go:119) CALL runtime.gcWriteBarrier(SB) + 0x06dd 01757 (main.go:119) JMP 634 + 0x06e2 01762 (main.go:119) LEAQ 8(AX), DI + 0x06e6 01766 (main.go:119) MOVQ ""..autotmp_130+112(SP), AX + 0x06eb 01771 (main.go:119) CALL runtime.gcWriteBarrier(SB) + 0x06f0 01776 (main.go:119) JMP 515 + 0x06f5 01781 (main.go:119) LEAQ 8(AX), DI + 0x06f9 01785 (main.go:119) MOVQ ""..autotmp_130+112(SP), AX + 0x06fe 01790 (main.go:119) CALL runtime.gcWriteBarrier(SB) + 0x0703 01795 (main.go:119) JMP 396 + 0x0708 01800 (main.go:145) PCDATA $0, $11 + 0x0708 01800 (main.go:145) PCDATA $1, $14 + 0x0708 01800 (main.go:145) XORPS X0, X0 + 0x070b 01803 (main.go:145) MOVUPS X0, ""..autotmp_90+152(SP) + 0x0713 01811 (main.go:145) MOVUPS X0, ""..autotmp_90+168(SP) + 0x071b 01819 (main.go:145) MOVUPS X0, ""..autotmp_90+184(SP) + 0x0723 01827 (main.go:145) PCDATA $0, $16 + 0x0723 01827 (main.go:145) MOVQ AX, ""..autotmp_90+152(SP) + 0x072b 01835 (main.go:145) MOVQ DX, ""..autotmp_90+160(SP) + 0x0733 01843 (main.go:145) PCDATA $0, $10 + 0x0733 01843 (main.go:145) MOVQ CX, ""..autotmp_90+168(SP) + 0x073b 01851 (main.go:145) MOVQ DX, ""..autotmp_90+176(SP) + 0x0743 01859 (main.go:145) PCDATA $0, $5 + 0x0743 01859 (main.go:145) MOVQ BX, ""..autotmp_90+184(SP) + 0x074b 01867 (main.go:145) PCDATA $0, $0 + 0x074b 01867 (main.go:145) MOVQ DX, ""..autotmp_90+192(SP) + 0x0753 01875 () NOP + 0x0753 01875 ($GOROOT/src/fmt/print.go:213) PCDATA $0, $1 + 0x0753 01875 ($GOROOT/src/fmt/print.go:213) MOVQ os.Stdout(SB), AX + 0x075a 01882 ($GOROOT/src/fmt/print.go:213) PCDATA $0, $4 + 0x075a 01882 ($GOROOT/src/fmt/print.go:213) LEAQ go.itab.*os.File,io.Writer(SB), CX + 0x0761 01889 ($GOROOT/src/fmt/print.go:213) PCDATA $0, $1 + 0x0761 01889 ($GOROOT/src/fmt/print.go:213) MOVQ CX, (SP) + 0x0765 01893 ($GOROOT/src/fmt/print.go:213) PCDATA $0, $0 + 0x0765 01893 ($GOROOT/src/fmt/print.go:213) MOVQ AX, 8(SP) + 0x076a 01898 ($GOROOT/src/fmt/print.go:213) PCDATA $0, $1 + 0x076a 01898 ($GOROOT/src/fmt/print.go:213) LEAQ go.string."option: %v, %v, %T"(SB), AX + 0x0771 01905 ($GOROOT/src/fmt/print.go:213) PCDATA $0, $0 + 0x0771 01905 ($GOROOT/src/fmt/print.go:213) MOVQ AX, 16(SP) + 0x0776 01910 ($GOROOT/src/fmt/print.go:213) MOVQ $18, 24(SP) + 0x077f 01919 ($GOROOT/src/fmt/print.go:213) PCDATA $0, $1 + 0x077f 01919 ($GOROOT/src/fmt/print.go:213) PCDATA $1, $0 + 0x077f 01919 ($GOROOT/src/fmt/print.go:213) LEAQ ""..autotmp_90+152(SP), AX + 0x0787 01927 ($GOROOT/src/fmt/print.go:213) PCDATA $0, $0 + 0x0787 01927 ($GOROOT/src/fmt/print.go:213) MOVQ AX, 32(SP) + 0x078c 01932 ($GOROOT/src/fmt/print.go:213) MOVQ $3, 40(SP) + 0x0795 01941 ($GOROOT/src/fmt/print.go:213) MOVQ $3, 48(SP) + 0x079e 01950 ($GOROOT/src/fmt/print.go:213) CALL fmt.Fprintf(SB) + 0x07a3 01955 (main.go:146) PCDATA $0, $1 + 0x07a3 01955 (main.go:146) LEAQ type.string(SB), AX + 0x07aa 01962 (main.go:146) PCDATA $0, $0 + 0x07aa 01962 (main.go:146) MOVQ AX, (SP) + 0x07ae 01966 (main.go:146) PCDATA $0, $1 + 0x07ae 01966 (main.go:146) LEAQ ""..stmp_4(SB), AX + 0x07b5 01973 (main.go:146) PCDATA $0, $0 + 0x07b5 01973 (main.go:146) MOVQ AX, 8(SP) + 0x07ba 01978 (main.go:146) CALL runtime.gopanic(SB) + 0x07bf 01983 (main.go:146) XCHGL AX, AX + 0x07c0 01984 (main.go:146) NOP + 0x07c0 01984 (main.go:107) PCDATA $1, $-1 + 0x07c0 01984 (main.go:107) PCDATA $0, $-2 + 0x07c0 01984 (main.go:107) CALL runtime.morestack_noctxt(SB) + 0x07c5 01989 (main.go:107) PCDATA $0, $-1 + 0x07c5 01989 (main.go:107) JMP 0 + 0x0000 64 48 8b 0c 25 00 00 00 00 48 8d 84 24 30 ff ff dH..%....H..$0.. + 0x0010 ff 48 3b 41 10 0f 86 a5 07 00 00 48 81 ec 50 01 .H;A.......H..P. + 0x0020 00 00 48 89 ac 24 48 01 00 00 48 8d ac 24 48 01 ..H..$H...H..$H. + 0x0030 00 00 0f 57 c0 0f 11 84 24 88 00 00 00 48 8d 05 ...W....$....H.. + 0x0040 00 00 00 00 48 89 84 24 88 00 00 00 48 8d 0d 00 ....H..$....H... + 0x0050 00 00 00 48 89 8c 24 90 00 00 00 48 8b 0d 00 00 ...H..$....H.... + 0x0060 00 00 48 8d 15 00 00 00 00 48 89 14 24 48 89 4c ..H......H..$H.L + 0x0070 24 08 48 8d 8c 24 88 00 00 00 48 89 4c 24 10 48 $.H..$....H.L$.H + 0x0080 c7 44 24 18 01 00 00 00 48 c7 44 24 20 01 00 00 .D$.....H.D$ ... + 0x0090 00 e8 00 00 00 00 90 48 8d 05 00 00 00 00 48 89 .......H......H. + 0x00a0 04 24 e8 00 00 00 00 48 8b 44 24 08 48 89 84 24 .$.....H.D$.H..$ + 0x00b0 80 00 00 00 48 c7 40 08 0a 00 00 00 48 8d 0d 00 ....H.@.....H... + 0x00c0 00 00 00 48 89 08 0f 57 c0 0f 11 84 24 c8 00 00 ...H...W....$... + 0x00d0 00 0f 11 84 24 d8 00 00 00 0f 11 84 24 e8 00 00 ....$.......$... + 0x00e0 00 0f 11 84 24 f8 00 00 00 48 8d 0d 00 00 00 00 ....$....H...... + 0x00f0 48 89 8c 24 c8 00 00 00 48 8d 15 00 00 00 00 48 H..$....H......H + 0x0100 89 94 24 d0 00 00 00 e8 00 00 00 00 48 8b 04 24 ..$.........H..$ + 0x0110 48 89 44 24 78 48 8d 0d 00 00 00 00 48 89 0c 24 H.D$xH......H..$ + 0x0120 48 c7 44 24 08 02 00 00 00 e8 00 00 00 00 48 8b H.D$..........H. + 0x0130 44 24 10 48 89 44 24 70 48 8d 0d 00 00 00 00 48 D$.H.D$pH......H + 0x0140 89 0c 24 48 8b 54 24 78 48 89 54 24 08 48 8d 1d ..$H.T$xH.T$.H.. + 0x0150 00 00 00 00 48 89 5c 24 10 48 c7 44 24 18 06 00 ....H.\$.H.D$... + 0x0160 00 00 e8 00 00 00 00 48 8b 44 24 20 48 8d 0d 00 .......H.D$ H... + 0x0170 00 00 00 48 89 08 83 3d 00 00 00 00 00 0f 85 72 ...H...=.......r + 0x0180 05 00 00 48 8b 54 24 70 48 89 50 08 48 8d 05 00 ...H.T$pH.P.H... + 0x0190 00 00 00 48 89 04 24 48 c7 44 24 08 02 00 00 00 ...H..$H.D$..... + 0x01a0 e8 00 00 00 00 48 8b 44 24 10 48 89 44 24 70 48 .....H.D$.H.D$pH + 0x01b0 8d 0d 00 00 00 00 48 89 0c 24 48 8b 54 24 78 48 ......H..$H.T$xH + 0x01c0 89 54 24 08 48 8d 1d 00 00 00 00 48 89 5c 24 10 .T$.H......H.\$. + 0x01d0 48 c7 44 24 18 06 00 00 00 e8 00 00 00 00 48 8b H.D$..........H. + 0x01e0 44 24 20 48 8d 0d 00 00 00 00 48 89 08 83 3d 00 D$ H......H...=. + 0x01f0 00 00 00 00 0f 85 e8 04 00 00 48 8b 54 24 70 48 ..........H.T$pH + 0x0200 89 50 08 48 8d 05 00 00 00 00 48 89 04 24 48 c7 .P.H......H..$H. + 0x0210 44 24 08 02 00 00 00 e8 00 00 00 00 48 8b 44 24 D$..........H.D$ + 0x0220 10 48 89 44 24 70 48 8d 0d 00 00 00 00 48 89 0c .H.D$pH......H.. + 0x0230 24 48 8b 54 24 78 48 89 54 24 08 48 8d 1d 00 00 $H.T$xH.T$.H.... + 0x0240 00 00 48 89 5c 24 10 48 c7 44 24 18 06 00 00 00 ..H.\$.H.D$..... + 0x0250 e8 00 00 00 00 48 8b 44 24 20 48 8d 0d 00 00 00 .....H.D$ H..... + 0x0260 00 48 89 08 83 3d 00 00 00 00 00 0f 85 5e 04 00 .H...=.......^.. + 0x0270 00 48 8b 54 24 70 48 89 50 08 48 8d 05 00 00 00 .H.T$pH.P.H..... + 0x0280 00 48 89 04 24 48 c7 44 24 08 02 00 00 00 e8 00 .H..$H.D$....... + 0x0290 00 00 00 48 8b 44 24 10 48 89 44 24 70 48 8d 0d ...H.D$.H.D$pH.. + 0x02a0 00 00 00 00 48 89 0c 24 48 8b 54 24 78 48 89 54 ....H..$H.T$xH.T + 0x02b0 24 08 48 8d 1d 00 00 00 00 48 89 5c 24 10 48 c7 $.H......H.\$.H. + 0x02c0 44 24 18 06 00 00 00 e8 00 00 00 00 48 8b 44 24 D$..........H.D$ + 0x02d0 20 48 8d 0d 00 00 00 00 48 89 08 83 3d 00 00 00 H......H...=... + 0x02e0 00 00 0f 85 d4 03 00 00 48 8b 54 24 70 48 89 50 ........H.T$pH.P + 0x02f0 08 48 8d 05 00 00 00 00 48 89 84 24 d8 00 00 00 .H......H..$.... + 0x0300 48 8b 4c 24 78 48 89 8c 24 e0 00 00 00 48 8d 0d H.L$xH..$....H.. + 0x0310 00 00 00 00 48 89 0c 24 48 8b 8c 24 80 00 00 00 ....H..$H..$.... + 0x0320 48 89 4c 24 08 e8 00 00 00 00 48 8b 44 24 18 48 H.L$......H.D$.H + 0x0330 8b 4c 24 10 48 89 8c 24 e8 00 00 00 48 89 84 24 .L$.H..$....H..$ + 0x0340 f0 00 00 00 e8 00 00 00 00 48 8b 04 24 48 89 44 .........H..$H.D + 0x0350 24 78 48 8d 0d 00 00 00 00 48 89 0c 24 48 c7 44 $xH......H..$H.D + 0x0360 24 08 02 00 00 00 e8 00 00 00 00 48 8b 44 24 10 $..........H.D$. + 0x0370 48 89 44 24 70 48 8d 0d 00 00 00 00 48 89 0c 24 H.D$pH......H..$ + 0x0380 48 8b 54 24 78 48 89 54 24 08 48 8d 1d 00 00 00 H.T$xH.T$.H..... + 0x0390 00 48 89 5c 24 10 48 c7 44 24 18 06 00 00 00 e8 .H.\$.H.D$...... + 0x03a0 00 00 00 00 48 8b 44 24 20 48 8d 0d 00 00 00 00 ....H.D$ H...... + 0x03b0 48 89 08 83 3d 00 00 00 00 00 0f 85 e9 02 00 00 H...=........... + 0x03c0 48 8b 54 24 70 48 89 50 08 48 8d 05 00 00 00 00 H.T$pH.P.H...... + 0x03d0 48 89 04 24 48 c7 44 24 08 02 00 00 00 e8 00 00 H..$H.D$........ + 0x03e0 00 00 48 8b 44 24 10 48 89 44 24 70 48 8d 0d 00 ..H.D$.H.D$pH... + 0x03f0 00 00 00 48 89 0c 24 48 8b 54 24 78 48 89 54 24 ...H..$H.T$xH.T$ + 0x0400 08 48 8d 1d 00 00 00 00 48 89 5c 24 10 48 c7 44 .H......H.\$.H.D + 0x0410 24 18 06 00 00 00 e8 00 00 00 00 48 8b 44 24 20 $..........H.D$ + 0x0420 48 8d 0d 00 00 00 00 48 89 08 83 3d 00 00 00 00 H......H...=.... + 0x0430 00 0f 85 5f 02 00 00 48 8b 54 24 70 48 89 50 08 ..._...H.T$pH.P. + 0x0440 48 8d 05 00 00 00 00 48 89 84 24 f8 00 00 00 48 H......H..$....H + 0x0450 8b 4c 24 78 48 89 8c 24 00 01 00 00 e8 00 00 00 .L$xH..$........ + 0x0460 00 48 8b 04 24 90 90 48 0f ba e0 3f 73 00 0f 10 .H..$..H...?s... + 0x0470 84 24 c8 00 00 00 0f 11 84 24 08 01 00 00 0f 10 .$.......$...... + 0x0480 84 24 d8 00 00 00 0f 11 84 24 18 01 00 00 0f 10 .$.......$...... + 0x0490 84 24 e8 00 00 00 0f 11 84 24 28 01 00 00 0f 10 .$.......$(..... + 0x04a0 84 24 f8 00 00 00 0f 11 84 24 38 01 00 00 48 8d .$.......$8...H. + 0x04b0 84 24 08 01 00 00 31 c9 eb 04 48 83 c0 10 48 8b .$....1...H...H. + 0x04c0 50 08 48 8b 18 48 85 db 74 53 48 89 54 24 60 48 P.H..H..tSH.T$`H + 0x04d0 89 5c 24 50 48 89 44 24 68 48 89 4c 24 58 8b 73 .\$PH.D$hH.L$X.s + 0x04e0 10 81 fe b3 e0 59 64 0f 87 cf 00 00 00 81 fe 52 .....Yd........R + 0x04f0 81 7b 46 75 4d 48 8d 35 00 00 00 00 48 39 de 75 .{FuMH.5....H9.u + 0x0500 19 48 ff c1 48 83 f9 04 7c b0 48 8b ac 24 48 01 .H..H...|.H..$H. + 0x0510 00 00 48 81 c4 50 01 00 00 c3 48 85 db 74 1e 48 ..H..P....H..t.H + 0x0520 8b 43 08 74 13 48 8b 4b 08 0f 84 d9 01 00 00 48 .C.t.H.K.......H + 0x0530 8b 5b 08 e9 d0 01 00 00 48 89 d9 eb ec 48 89 d8 .[......H....H.. + 0x0540 eb e1 81 fe b3 e0 59 64 75 65 48 8d 05 00 00 00 ......YdueH..... + 0x0550 00 48 89 04 24 e8 00 00 00 00 48 8b 44 24 08 48 .H..$.....H.D$.H + 0x0560 8d 0d 00 00 00 00 48 8b 54 24 50 48 39 d1 75 33 ......H.T$PH9.u3 + 0x0570 48 8b 5c 24 60 48 8b 33 48 89 30 75 16 48 8b 44 H.\$`H.3H.0u.H.D + 0x0580 24 68 48 8b 4c 24 58 48 8d 35 00 00 00 00 e9 6e $hH.L$XH.5.....n + 0x0590 ff ff ff 48 85 d2 48 89 da 48 8b 5c 24 50 e9 7a ...H..H..H.\$P.z + 0x05a0 ff ff ff 48 8b 5c 24 60 be 00 00 00 00 eb c9 48 ...H.\$`.......H + 0x05b0 85 db 48 89 d3 48 8b 54 24 50 eb da 81 fe 36 a1 ..H..H.T$P....6. + 0x05c0 71 80 75 20 48 8d 35 00 00 00 00 48 39 de 75 0c q.u H.5....H9.u. + 0x05d0 48 8d 35 00 00 00 00 e9 25 ff ff ff 48 85 db e9 H.5.....%...H... + 0x05e0 39 ff ff ff 81 fe 56 17 02 94 74 30 81 fe 04 2e 9.....V...t0.... + 0x05f0 e9 f3 75 20 48 8d 35 00 00 00 00 48 39 de 75 0c ..u H.5....H9.u. + 0x0600 48 8d 35 00 00 00 00 e9 f5 fe ff ff 48 85 db e9 H.5.........H... + 0x0610 09 ff ff ff 48 85 db e9 01 ff ff ff 48 8d 05 00 ....H.......H... + 0x0620 00 00 00 48 89 04 24 e8 00 00 00 00 48 8b 7c 24 ...H..$.....H.|$ + 0x0630 08 48 8d 05 00 00 00 00 48 8b 4c 24 50 48 39 c8 .H......H.L$PH9. + 0x0640 75 50 48 8b 54 24 60 83 3d 00 00 00 00 00 75 2e uPH.T$`.=.....u. + 0x0650 48 89 17 48 39 c8 75 16 48 8b 44 24 68 48 8b 4c H..H9.u.H.D$hH.L + 0x0660 24 58 48 8d 35 00 00 00 00 e9 93 fe ff ff 48 85 $XH.5.........H. + 0x0670 c9 48 8b 54 24 60 48 89 cb e9 9f fe ff ff 48 89 .H.T$`H.......H. + 0x0680 d0 e8 00 00 00 00 48 8d 05 00 00 00 00 48 39 c8 ......H......H9. + 0x0690 eb c4 31 d2 eb b1 48 8d 78 08 48 8b 44 24 70 e8 ..1...H.x.H.D$p. + 0x06a0 00 00 00 00 e9 97 fd ff ff 48 8d 78 08 48 8b 44 .........H.x.H.D + 0x06b0 24 70 e8 00 00 00 00 e9 0d fd ff ff 48 8d 78 08 $p..........H.x. + 0x06c0 48 8b 44 24 70 e8 00 00 00 00 e9 22 fc ff ff 48 H.D$p......"...H + 0x06d0 8d 78 08 48 8b 44 24 70 e8 00 00 00 00 e9 98 fb .x.H.D$p........ + 0x06e0 ff ff 48 8d 78 08 48 8b 44 24 70 e8 00 00 00 00 ..H.x.H.D$p..... + 0x06f0 e9 0e fb ff ff 48 8d 78 08 48 8b 44 24 70 e8 00 .....H.x.H.D$p.. + 0x0700 00 00 00 e9 84 fa ff ff 0f 57 c0 0f 11 84 24 98 .........W....$. + 0x0710 00 00 00 0f 11 84 24 a8 00 00 00 0f 11 84 24 b8 ......$.......$. + 0x0720 00 00 00 48 89 84 24 98 00 00 00 48 89 94 24 a0 ...H..$....H..$. + 0x0730 00 00 00 48 89 8c 24 a8 00 00 00 48 89 94 24 b0 ...H..$....H..$. + 0x0740 00 00 00 48 89 9c 24 b8 00 00 00 48 89 94 24 c0 ...H..$....H..$. + 0x0750 00 00 00 48 8b 05 00 00 00 00 48 8d 0d 00 00 00 ...H......H..... + 0x0760 00 48 89 0c 24 48 89 44 24 08 48 8d 05 00 00 00 .H..$H.D$.H..... + 0x0770 00 48 89 44 24 10 48 c7 44 24 18 12 00 00 00 48 .H.D$.H.D$.....H + 0x0780 8d 84 24 98 00 00 00 48 89 44 24 20 48 c7 44 24 ..$....H.D$ H.D$ + 0x0790 28 03 00 00 00 48 c7 44 24 30 03 00 00 00 e8 00 (....H.D$0...... + 0x07a0 00 00 00 48 8d 05 00 00 00 00 48 89 04 24 48 8d ...H......H..$H. + 0x07b0 05 00 00 00 00 48 89 44 24 08 e8 00 00 00 00 90 .....H.D$....... + 0x07c0 e8 00 00 00 00 e9 36 f8 ff ff ......6... + rel 5+4 t=17 TLS+0 + rel 64+4 t=16 type.string+0 + rel 79+4 t=16 ""..stmp_2+0 + rel 94+4 t=16 os.Stdout+0 + rel 101+4 t=16 go.itab.*os.File,io.Writer+0 + rel 146+4 t=8 fmt.Fprintln+0 + rel 154+4 t=16 type.errors.errorString+0 + rel 163+4 t=8 runtime.newobject+0 + rel 191+4 t=16 go.string."test error"+0 + rel 236+4 t=16 go.itab."".severity,"".option+0 + rel 251+4 t=16 ""..stmp_3+0 + rel 264+4 t=8 runtime.makemap_small+0 + rel 280+4 t=16 go.string."d1"+0 + rel 298+4 t=8 runtime.convTstring+0 + rel 315+4 t=16 type."".Data+0 + rel 336+4 t=16 go.string."data_1"+0 + rel 355+4 t=8 runtime.mapassign_faststr+0 + rel 367+4 t=16 type.string+0 + rel 376+4 t=16 runtime.writeBarrier+-1 + rel 399+4 t=16 go.string."d2"+0 + rel 417+4 t=8 runtime.convTstring+0 + rel 434+4 t=16 type."".Data+0 + rel 455+4 t=16 go.string."data_2"+0 + rel 474+4 t=8 runtime.mapassign_faststr+0 + rel 486+4 t=16 type.string+0 + rel 495+4 t=16 runtime.writeBarrier+-1 + rel 518+4 t=16 go.string."d3"+0 + rel 536+4 t=8 runtime.convTstring+0 + rel 553+4 t=16 type."".Data+0 + rel 574+4 t=16 go.string."data_3"+0 + rel 593+4 t=8 runtime.mapassign_faststr+0 + rel 605+4 t=16 type.string+0 + rel 614+4 t=16 runtime.writeBarrier+-1 + rel 637+4 t=16 go.string."d4"+0 + rel 655+4 t=8 runtime.convTstring+0 + rel 672+4 t=16 type."".Data+0 + rel 693+4 t=16 go.string."data_4"+0 + rel 712+4 t=8 runtime.mapassign_faststr+0 + rel 724+4 t=16 type.string+0 + rel 733+4 t=16 runtime.writeBarrier+-1 + rel 756+4 t=16 go.itab."".Data,"".option+0 + rel 784+4 t=16 go.itab.*errors.errorString,error+0 + rel 806+4 t=8 "".Error+0 + rel 837+4 t=8 runtime.makemap_small+0 + rel 853+4 t=16 go.string."d4"+0 + rel 871+4 t=8 runtime.convTstring+0 + rel 888+4 t=16 type."".Data+0 + rel 909+4 t=16 go.string."data_4"+0 + rel 928+4 t=8 runtime.mapassign_faststr+0 + rel 940+4 t=16 type.string+0 + rel 949+4 t=16 runtime.writeBarrier+-1 + rel 972+4 t=16 go.string."d2"+0 + rel 990+4 t=8 runtime.convTstring+0 + rel 1007+4 t=16 type."".Data+0 + rel 1028+4 t=16 go.string."data_2"+0 + rel 1047+4 t=8 runtime.mapassign_faststr+0 + rel 1059+4 t=16 type.string+0 + rel 1068+4 t=16 runtime.writeBarrier+-1 + rel 1091+4 t=16 go.itab."".Data,"".option+0 + rel 1117+4 t=8 time.Now+0 + rel 1272+4 t=16 go.itab.*"".eventAuth,"".option+0 + rel 1357+4 t=16 type."".severity+0 + rel 1366+4 t=8 runtime.newobject+0 + rel 1378+4 t=16 go.itab."".severity,"".option+0 + rel 1418+4 t=16 go.itab.*"".eventAuth,"".option+0 + rel 1479+4 t=16 go.itab.*"".EventHTTP,"".option+0 + rel 1491+4 t=16 go.itab.*"".eventAuth,"".option+0 + rel 1527+4 t=16 go.itab.*"".EventError,"".option+0 + rel 1539+4 t=16 go.itab.*"".eventAuth,"".option+0 + rel 1567+4 t=16 type."".Data+0 + rel 1576+4 t=8 runtime.newobject+0 + rel 1588+4 t=16 go.itab."".Data,"".option+0 + rel 1609+4 t=16 runtime.writeBarrier+-1 + rel 1637+4 t=16 go.itab.*"".eventAuth,"".option+0 + rel 1666+4 t=8 runtime.gcWriteBarrier+0 + rel 1673+4 t=16 go.itab."".Data,"".option+0 + rel 1696+4 t=8 runtime.gcWriteBarrier+0 + rel 1715+4 t=8 runtime.gcWriteBarrier+0 + rel 1734+4 t=8 runtime.gcWriteBarrier+0 + rel 1753+4 t=8 runtime.gcWriteBarrier+0 + rel 1772+4 t=8 runtime.gcWriteBarrier+0 + rel 1791+4 t=8 runtime.gcWriteBarrier+0 + rel 1878+4 t=16 os.Stdout+0 + rel 1885+4 t=16 go.itab.*os.File,io.Writer+0 + rel 1901+4 t=16 go.string."option: %v, %v, %T"+0 + rel 1951+4 t=8 fmt.Fprintf+0 + rel 1958+4 t=16 type.string+0 + rel 1969+4 t=16 ""..stmp_4+0 + rel 1979+4 t=8 runtime.gopanic+0 + rel 1985+4 t=8 runtime.morestack_noctxt+0 +type..eq.[3]interface {} STEXT dupok size=179 args=0x18 locals=0x30 + 0x0000 00000 (:1) TEXT type..eq.[3]interface {}(SB), DUPOK|ABIInternal, $48-24 + 0x0000 00000 (:1) MOVQ (TLS), CX + 0x0009 00009 (:1) CMPQ SP, 16(CX) + 0x000d 00013 (:1) PCDATA $0, $-2 + 0x000d 00013 (:1) JLS 169 + 0x0013 00019 (:1) PCDATA $0, $-1 + 0x0013 00019 (:1) SUBQ $48, SP + 0x0017 00023 (:1) MOVQ BP, 40(SP) + 0x001c 00028 (:1) LEAQ 40(SP), BP + 0x0021 00033 (:1) PCDATA $0, $-2 + 0x0021 00033 (:1) PCDATA $1, $-2 + 0x0021 00033 (:1) FUNCDATA $0, gclocals·dc9b0298814590ca3ffc3a889546fc8b(SB) + 0x0021 00033 (:1) FUNCDATA $1, gclocals·69c1753bd5f81501d95132d08af04464(SB) + 0x0021 00033 (:1) FUNCDATA $2, gclocals·313a5bdbfadc4f007c002a3a3588596d(SB) + 0x0021 00033 (:1) PCDATA $0, $1 + 0x0021 00033 (:1) PCDATA $1, $0 + 0x0021 00033 (:1) MOVQ "".p+56(SP), AX + 0x0026 00038 (:1) PCDATA $0, $2 + 0x0026 00038 (:1) MOVQ "".q+64(SP), CX + 0x002b 00043 (:1) XORL DX, DX + 0x002d 00045 (:1) JMP 72 + 0x002f 00047 (:1) PCDATA $0, $0 + 0x002f 00047 (:1) MOVQ ""..autotmp_8+32(SP), BX + 0x0034 00052 (:1) LEAQ 1(BX), DX + 0x0038 00056 (:1) PCDATA $0, $3 + 0x0038 00056 (:1) MOVQ "".p+56(SP), BX + 0x003d 00061 (:1) PCDATA $0, $4 + 0x003d 00061 (:1) MOVQ "".q+64(SP), SI + 0x0042 00066 (:1) PCDATA $0, $5 + 0x0042 00066 (:1) MOVQ BX, AX + 0x0045 00069 (:1) PCDATA $0, $2 + 0x0045 00069 (:1) MOVQ SI, CX + 0x0048 00072 (:1) CMPQ DX, $3 + 0x004c 00076 (:1) JGE 154 + 0x004e 00078 (:1) MOVQ DX, BX + 0x0051 00081 (:1) SHLQ $4, DX + 0x0055 00085 (:1) PCDATA $0, $6 + 0x0055 00085 (:1) MOVQ 8(DX)(AX*1), SI + 0x005a 00090 (:1) PCDATA $0, $7 + 0x005a 00090 (:1) MOVQ (DX)(AX*1), DI + 0x005e 00094 (:1) MOVQ (DX)(CX*1), R8 + 0x0062 00098 (:1) PCDATA $0, $8 + 0x0062 00098 (:1) MOVQ 8(DX)(CX*1), DX + 0x0067 00103 (:1) CMPQ DI, R8 + 0x006a 00106 (:1) JNE 139 + 0x006c 00108 (:1) MOVQ BX, ""..autotmp_8+32(SP) + 0x0071 00113 (:1) MOVQ DI, (SP) + 0x0075 00117 (:1) PCDATA $0, $9 + 0x0075 00117 (:1) MOVQ SI, 8(SP) + 0x007a 00122 (:1) PCDATA $0, $0 + 0x007a 00122 (:1) MOVQ DX, 16(SP) + 0x007f 00127 (:1) CALL runtime.efaceeq(SB) + 0x0084 00132 (:1) CMPB 24(SP), $0 + 0x0089 00137 (:1) JNE 47 + 0x008b 00139 (:1) PCDATA $1, $1 + 0x008b 00139 (:1) MOVB $0, "".~r2+72(SP) + 0x0090 00144 (:1) MOVQ 40(SP), BP + 0x0095 00149 (:1) ADDQ $48, SP + 0x0099 00153 (:1) RET + 0x009a 00154 (:1) MOVB $1, "".~r2+72(SP) + 0x009f 00159 (:1) MOVQ 40(SP), BP + 0x00a4 00164 (:1) ADDQ $48, SP + 0x00a8 00168 (:1) RET + 0x00a9 00169 (:1) NOP + 0x00a9 00169 (:1) PCDATA $1, $-1 + 0x00a9 00169 (:1) PCDATA $0, $-2 + 0x00a9 00169 (:1) CALL runtime.morestack_noctxt(SB) + 0x00ae 00174 (:1) PCDATA $0, $-1 + 0x00ae 00174 (:1) JMP 0 + 0x0000 64 48 8b 0c 25 00 00 00 00 48 3b 61 10 0f 86 96 dH..%....H;a.... + 0x0010 00 00 00 48 83 ec 30 48 89 6c 24 28 48 8d 6c 24 ...H..0H.l$(H.l$ + 0x0020 28 48 8b 44 24 38 48 8b 4c 24 40 31 d2 eb 19 48 (H.D$8H.L$@1...H + 0x0030 8b 5c 24 20 48 8d 53 01 48 8b 5c 24 38 48 8b 74 .\$ H.S.H.\$8H.t + 0x0040 24 40 48 89 d8 48 89 f1 48 83 fa 03 7d 4c 48 89 $@H..H..H...}LH. + 0x0050 d3 48 c1 e2 04 48 8b 74 02 08 48 8b 3c 02 4c 8b .H...H.t..H.<.L. + 0x0060 04 0a 48 8b 54 0a 08 4c 39 c7 75 1f 48 89 5c 24 ..H.T..L9.u.H.\$ + 0x0070 20 48 89 3c 24 48 89 74 24 08 48 89 54 24 10 e8 H.<$H.t$.H.T$.. + 0x0080 00 00 00 00 80 7c 24 18 00 75 a4 c6 44 24 48 00 .....|$..u..D$H. + 0x0090 48 8b 6c 24 28 48 83 c4 30 c3 c6 44 24 48 01 48 H.l$(H..0..D$H.H + 0x00a0 8b 6c 24 28 48 83 c4 30 c3 e8 00 00 00 00 e9 4d .l$(H..0.......M + 0x00b0 ff ff ff ... + rel 5+4 t=17 TLS+0 + rel 128+4 t=8 runtime.efaceeq+0 + rel 170+4 t=8 runtime.morestack_noctxt+0 +"".(*eventAuth).attach STEXT size=84 args=0x10 locals=0x8 + 0x0000 00000 (main.go:169) TEXT "".(*eventAuth).attach(SB), ABIInternal, $8-16 + 0x0000 00000 (main.go:169) MOVQ (TLS), CX + 0x0009 00009 (main.go:169) CMPQ SP, 16(CX) + 0x000d 00013 (main.go:169) PCDATA $0, $-2 + 0x000d 00013 (main.go:169) JLS 77 + 0x000f 00015 (main.go:169) PCDATA $0, $-1 + 0x000f 00015 (main.go:169) SUBQ $8, SP + 0x0013 00019 (main.go:169) MOVQ BP, (SP) + 0x0017 00023 (main.go:169) LEAQ (SP), BP + 0x001b 00027 (main.go:169) PCDATA $0, $-2 + 0x001b 00027 (main.go:169) PCDATA $1, $-2 + 0x001b 00027 (main.go:169) FUNCDATA $0, gclocals·96482af6bb866125b0892c5f1bd43b54(SB) + 0x001b 00027 (main.go:169) FUNCDATA $1, gclocals·69c1753bd5f81501d95132d08af04464(SB) + 0x001b 00027 (main.go:169) FUNCDATA $2, gclocals·568470801006e5c0dc3947ea998fe279(SB) + 0x001b 00027 (main.go:170) PCDATA $0, $1 + 0x001b 00027 (main.go:170) PCDATA $1, $1 + 0x001b 00027 (main.go:170) MOVQ "".le+24(SP), CX + 0x0020 00032 (main.go:170) TESTB AL, (CX) + 0x0022 00034 (main.go:170) PCDATA $0, $-2 + 0x0022 00034 (main.go:170) PCDATA $1, $-2 + 0x0022 00034 (main.go:170) CMPL runtime.writeBarrier(SB), $0 + 0x0029 00041 (main.go:170) JNE 61 + 0x002b 00043 (main.go:170) MOVQ "".l+16(SP), AX + 0x0030 00048 (main.go:170) MOVQ AX, 104(CX) + 0x0034 00052 (main.go:171) PCDATA $0, $-1 + 0x0034 00052 (main.go:171) PCDATA $1, $-1 + 0x0034 00052 (main.go:171) MOVQ (SP), BP + 0x0038 00056 (main.go:171) ADDQ $8, SP + 0x003c 00060 (main.go:171) RET + 0x003d 00061 (main.go:170) PCDATA $0, $-2 + 0x003d 00061 (main.go:170) PCDATA $1, $-2 + 0x003d 00061 (main.go:170) LEAQ 104(CX), DI + 0x0041 00065 (main.go:170) MOVQ "".l+16(SP), AX + 0x0046 00070 (main.go:170) CALL runtime.gcWriteBarrier(SB) + 0x004b 00075 (main.go:170) JMP 52 + 0x004d 00077 (main.go:170) NOP + 0x004d 00077 (main.go:169) PCDATA $1, $-1 + 0x004d 00077 (main.go:169) PCDATA $0, $-2 + 0x004d 00077 (main.go:169) CALL runtime.morestack_noctxt(SB) + 0x0052 00082 (main.go:169) PCDATA $0, $-1 + 0x0052 00082 (main.go:169) JMP 0 + 0x0000 64 48 8b 0c 25 00 00 00 00 48 3b 61 10 76 3e 48 dH..%....H;a.v>H + 0x0010 83 ec 08 48 89 2c 24 48 8d 2c 24 48 8b 4c 24 18 ...H.,$H.,$H.L$. + 0x0020 84 01 83 3d 00 00 00 00 00 75 12 48 8b 44 24 10 ...=.....u.H.D$. + 0x0030 48 89 41 68 48 8b 2c 24 48 83 c4 08 c3 48 8d 79 H.AhH.,$H....H.y + 0x0040 68 48 8b 44 24 10 e8 00 00 00 00 eb e7 e8 00 00 hH.D$........... + 0x0050 00 00 eb ac .... + rel 5+4 t=17 TLS+0 + rel 36+4 t=16 runtime.writeBarrier+-1 + rel 71+4 t=8 runtime.gcWriteBarrier+0 + rel 78+4 t=8 runtime.morestack_noctxt+0 +"".Auth STEXT size=184 args=0x30 locals=0x18 + 0x0000 00000 (main.go:175) TEXT "".Auth(SB), ABIInternal, $24-48 + 0x0000 00000 (main.go:175) MOVQ (TLS), CX + 0x0009 00009 (main.go:175) CMPQ SP, 16(CX) + 0x000d 00013 (main.go:175) PCDATA $0, $-2 + 0x000d 00013 (main.go:175) JLS 174 + 0x0013 00019 (main.go:175) PCDATA $0, $-1 + 0x0013 00019 (main.go:175) SUBQ $24, SP + 0x0017 00023 (main.go:175) MOVQ BP, 16(SP) + 0x001c 00028 (main.go:175) LEAQ 16(SP), BP + 0x0021 00033 (main.go:175) PCDATA $0, $-2 + 0x0021 00033 (main.go:175) PCDATA $1, $-2 + 0x0021 00033 (main.go:175) FUNCDATA $0, gclocals·67725a25a73912be1e4a2d972d9633f1(SB) + 0x0021 00033 (main.go:175) FUNCDATA $1, gclocals·7d2d5fca80364273fb07d5820a76fef4(SB) + 0x0021 00033 (main.go:175) FUNCDATA $2, gclocals·7b8536b40bc5b5558bfde945dd0a5306(SB) + 0x0021 00033 (main.go:176) PCDATA $0, $1 + 0x0021 00033 (main.go:176) PCDATA $1, $0 + 0x0021 00033 (main.go:176) LEAQ type."".eventAuth(SB), AX + 0x0028 00040 (main.go:176) PCDATA $0, $0 + 0x0028 00040 (main.go:176) MOVQ AX, (SP) + 0x002c 00044 (main.go:176) CALL runtime.newobject(SB) + 0x0031 00049 (main.go:176) PCDATA $0, $2 + 0x0031 00049 (main.go:176) MOVQ 8(SP), DI + 0x0036 00054 (main.go:177) MOVQ "".identity+56(SP), AX + 0x003b 00059 (main.go:177) MOVQ AX, 8(DI) + 0x003f 00063 (main.go:177) PCDATA $0, $-2 + 0x003f 00063 (main.go:177) PCDATA $1, $-2 + 0x003f 00063 (main.go:177) CMPL runtime.writeBarrier(SB), $0 + 0x0046 00070 (main.go:177) JNE 162 + 0x0048 00072 (main.go:177) MOVQ "".identity+48(SP), CX + 0x004d 00077 (main.go:177) MOVQ CX, (DI) + 0x0050 00080 (main.go:178) PCDATA $0, $2 + 0x0050 00080 (main.go:178) PCDATA $1, $1 + 0x0050 00080 (main.go:178) MOVQ "".identityType+40(SP), CX + 0x0055 00085 (main.go:178) MOVQ CX, 24(DI) + 0x0059 00089 (main.go:178) PCDATA $0, $-2 + 0x0059 00089 (main.go:178) PCDATA $1, $-2 + 0x0059 00089 (main.go:178) CMPL runtime.writeBarrier(SB), $0 + 0x0060 00096 (main.go:178) JNE 134 + 0x0062 00098 (main.go:178) MOVQ "".identityType+32(SP), AX + 0x0067 00103 (main.go:178) MOVQ AX, 16(DI) + 0x006b 00107 (main.go:176) PCDATA $0, $3 + 0x006b 00107 (main.go:176) PCDATA $1, $2 + 0x006b 00107 (main.go:176) LEAQ go.itab.*"".eventAuth,"".option(SB), AX + 0x0072 00114 (main.go:176) PCDATA $0, $2 + 0x0072 00114 (main.go:176) MOVQ AX, "".~r2+64(SP) + 0x0077 00119 (main.go:176) PCDATA $0, $0 + 0x0077 00119 (main.go:176) MOVQ DI, "".~r2+72(SP) + 0x007c 00124 (main.go:176) MOVQ 16(SP), BP + 0x0081 00129 (main.go:176) ADDQ $24, SP + 0x0085 00133 (main.go:176) RET + 0x0086 00134 (main.go:178) PCDATA $0, $-2 + 0x0086 00134 (main.go:178) PCDATA $1, $-2 + 0x0086 00134 (main.go:178) LEAQ 16(DI), CX + 0x008a 00138 (main.go:176) MOVQ DI, AX + 0x008d 00141 (main.go:178) MOVQ CX, DI + 0x0090 00144 (main.go:176) MOVQ AX, DX + 0x0093 00147 (main.go:178) MOVQ "".identityType+32(SP), AX + 0x0098 00152 (main.go:178) CALL runtime.gcWriteBarrier(SB) + 0x009d 00157 (main.go:176) MOVQ DX, DI + 0x00a0 00160 (main.go:178) JMP 107 + 0x00a2 00162 (main.go:177) MOVQ "".identity+48(SP), AX + 0x00a7 00167 (main.go:177) CALL runtime.gcWriteBarrier(SB) + 0x00ac 00172 (main.go:177) JMP 80 + 0x00ae 00174 (main.go:177) NOP + 0x00ae 00174 (main.go:175) PCDATA $1, $-1 + 0x00ae 00174 (main.go:175) PCDATA $0, $-2 + 0x00ae 00174 (main.go:175) CALL runtime.morestack_noctxt(SB) + 0x00b3 00179 (main.go:175) PCDATA $0, $-1 + 0x00b3 00179 (main.go:175) JMP 0 + 0x0000 64 48 8b 0c 25 00 00 00 00 48 3b 61 10 0f 86 9b dH..%....H;a.... + 0x0010 00 00 00 48 83 ec 18 48 89 6c 24 10 48 8d 6c 24 ...H...H.l$.H.l$ + 0x0020 10 48 8d 05 00 00 00 00 48 89 04 24 e8 00 00 00 .H......H..$.... + 0x0030 00 48 8b 7c 24 08 48 8b 44 24 38 48 89 47 08 83 .H.|$.H.D$8H.G.. + 0x0040 3d 00 00 00 00 00 75 5a 48 8b 4c 24 30 48 89 0f =.....uZH.L$0H.. + 0x0050 48 8b 4c 24 28 48 89 4f 18 83 3d 00 00 00 00 00 H.L$(H.O..=..... + 0x0060 75 24 48 8b 44 24 20 48 89 47 10 48 8d 05 00 00 u$H.D$ H.G.H.... + 0x0070 00 00 48 89 44 24 40 48 89 7c 24 48 48 8b 6c 24 ..H.D$@H.|$HH.l$ + 0x0080 10 48 83 c4 18 c3 48 8d 4f 10 48 89 f8 48 89 cf .H....H.O.H..H.. + 0x0090 48 89 c2 48 8b 44 24 20 e8 00 00 00 00 48 89 d7 H..H.D$ .....H.. + 0x00a0 eb c9 48 8b 44 24 30 e8 00 00 00 00 eb a2 e8 00 ..H.D$0......... + 0x00b0 00 00 00 e9 48 ff ff ff ....H... + rel 5+4 t=17 TLS+0 + rel 36+4 t=16 type."".eventAuth+0 + rel 45+4 t=8 runtime.newobject+0 + rel 65+4 t=16 runtime.writeBarrier+-1 + rel 91+4 t=16 runtime.writeBarrier+-1 + rel 110+4 t=16 go.itab.*"".eventAuth,"".option+0 + rel 153+4 t=8 runtime.gcWriteBarrier+0 + rel 168+4 t=8 runtime.gcWriteBarrier+0 + rel 175+4 t=8 runtime.morestack_noctxt+0 +"".Data.attach STEXT size=136 args=0x10 locals=0x18 + 0x0000 00000 (main.go:197) TEXT "".Data.attach(SB), ABIInternal, $24-16 + 0x0000 00000 (main.go:197) MOVQ (TLS), CX + 0x0009 00009 (main.go:197) CMPQ SP, 16(CX) + 0x000d 00013 (main.go:197) PCDATA $0, $-2 + 0x000d 00013 (main.go:197) JLS 126 + 0x000f 00015 (main.go:197) PCDATA $0, $-1 + 0x000f 00015 (main.go:197) SUBQ $24, SP + 0x0013 00019 (main.go:197) MOVQ BP, 16(SP) + 0x0018 00024 (main.go:197) LEAQ 16(SP), BP + 0x001d 00029 (main.go:197) PCDATA $0, $-2 + 0x001d 00029 (main.go:197) PCDATA $1, $-2 + 0x001d 00029 (main.go:197) FUNCDATA $0, gclocals·dc9b0298814590ca3ffc3a889546fc8b(SB) + 0x001d 00029 (main.go:197) FUNCDATA $1, gclocals·69c1753bd5f81501d95132d08af04464(SB) + 0x001d 00029 (main.go:197) FUNCDATA $2, gclocals·bfec7e55b3f043d1941c093912808913(SB) + 0x001d 00029 (main.go:197) PCDATA $0, $1 + 0x001d 00029 (main.go:197) PCDATA $1, $0 + 0x001d 00029 (main.go:197) LEAQ type."".Data(SB), AX + 0x0024 00036 (main.go:197) PCDATA $0, $0 + 0x0024 00036 (main.go:197) MOVQ AX, (SP) + 0x0028 00040 (main.go:197) CALL runtime.newobject(SB) + 0x002d 00045 (main.go:197) PCDATA $0, $1 + 0x002d 00045 (main.go:197) MOVQ 8(SP), AX + 0x0032 00050 (main.go:197) PCDATA $0, $-2 + 0x0032 00050 (main.go:197) PCDATA $1, $-2 + 0x0032 00050 (main.go:197) CMPL runtime.writeBarrier(SB), $0 + 0x0039 00057 (main.go:197) JNE 108 + 0x003b 00059 (main.go:197) MOVQ "".d+32(SP), CX + 0x0040 00064 (main.go:197) MOVQ CX, (AX) + 0x0043 00067 (main.go:198) PCDATA $0, $2 + 0x0043 00067 (main.go:198) PCDATA $1, $1 + 0x0043 00067 (main.go:198) MOVQ "".le+40(SP), CX + 0x0048 00072 (main.go:198) TESTB AL, (CX) + 0x004a 00074 (main.go:198) PCDATA $0, $-2 + 0x004a 00074 (main.go:198) PCDATA $1, $-2 + 0x004a 00074 (main.go:198) CMPL runtime.writeBarrier(SB), $0 + 0x0051 00081 (main.go:198) JNE 97 + 0x0053 00083 (main.go:198) MOVQ AX, 112(CX) + 0x0057 00087 (main.go:199) PCDATA $0, $-1 + 0x0057 00087 (main.go:199) PCDATA $1, $-1 + 0x0057 00087 (main.go:199) MOVQ 16(SP), BP + 0x005c 00092 (main.go:199) ADDQ $24, SP + 0x0060 00096 (main.go:199) RET + 0x0061 00097 (main.go:198) PCDATA $0, $-2 + 0x0061 00097 (main.go:198) PCDATA $1, $-2 + 0x0061 00097 (main.go:198) LEAQ 112(CX), DI + 0x0065 00101 (main.go:198) CALL runtime.gcWriteBarrier(SB) + 0x006a 00106 (main.go:198) JMP 87 + 0x006c 00108 (main.go:197) MOVQ AX, DI + 0x006f 00111 (main.go:197) MOVQ "".d+32(SP), AX + 0x0074 00116 (main.go:197) CALL runtime.gcWriteBarrier(SB) + 0x0079 00121 (main.go:198) MOVQ DI, AX + 0x007c 00124 (main.go:197) JMP 67 + 0x007e 00126 (main.go:197) NOP + 0x007e 00126 (main.go:197) PCDATA $1, $-1 + 0x007e 00126 (main.go:197) PCDATA $0, $-2 + 0x007e 00126 (main.go:197) CALL runtime.morestack_noctxt(SB) + 0x0083 00131 (main.go:197) PCDATA $0, $-1 + 0x0083 00131 (main.go:197) JMP 0 + 0x0000 64 48 8b 0c 25 00 00 00 00 48 3b 61 10 76 6f 48 dH..%....H;a.voH + 0x0010 83 ec 18 48 89 6c 24 10 48 8d 6c 24 10 48 8d 05 ...H.l$.H.l$.H.. + 0x0020 00 00 00 00 48 89 04 24 e8 00 00 00 00 48 8b 44 ....H..$.....H.D + 0x0030 24 08 83 3d 00 00 00 00 00 75 31 48 8b 4c 24 20 $..=.....u1H.L$ + 0x0040 48 89 08 48 8b 4c 24 28 84 01 83 3d 00 00 00 00 H..H.L$(...=.... + 0x0050 00 75 0e 48 89 41 70 48 8b 6c 24 10 48 83 c4 18 .u.H.ApH.l$.H... + 0x0060 c3 48 8d 79 70 e8 00 00 00 00 eb eb 48 89 c7 48 .H.yp.......H..H + 0x0070 8b 44 24 20 e8 00 00 00 00 48 89 f8 eb c5 e8 00 .D$ .....H...... + 0x0080 00 00 00 e9 78 ff ff ff ....x... + rel 5+4 t=17 TLS+0 + rel 32+4 t=16 type."".Data+0 + rel 41+4 t=8 runtime.newobject+0 + rel 52+4 t=16 runtime.writeBarrier+-1 + rel 76+4 t=16 runtime.writeBarrier+-1 + rel 102+4 t=8 runtime.gcWriteBarrier+0 + rel 117+4 t=8 runtime.gcWriteBarrier+0 + rel 127+4 t=8 runtime.morestack_noctxt+0 +"".(*EventError).attach STEXT size=84 args=0x10 locals=0x8 + 0x0000 00000 (main.go:226) TEXT "".(*EventError).attach(SB), ABIInternal, $8-16 + 0x0000 00000 (main.go:226) MOVQ (TLS), CX + 0x0009 00009 (main.go:226) CMPQ SP, 16(CX) + 0x000d 00013 (main.go:226) PCDATA $0, $-2 + 0x000d 00013 (main.go:226) JLS 77 + 0x000f 00015 (main.go:226) PCDATA $0, $-1 + 0x000f 00015 (main.go:226) SUBQ $8, SP + 0x0013 00019 (main.go:226) MOVQ BP, (SP) + 0x0017 00023 (main.go:226) LEAQ (SP), BP + 0x001b 00027 (main.go:226) PCDATA $0, $-2 + 0x001b 00027 (main.go:226) PCDATA $1, $-2 + 0x001b 00027 (main.go:226) FUNCDATA $0, gclocals·96482af6bb866125b0892c5f1bd43b54(SB) + 0x001b 00027 (main.go:226) FUNCDATA $1, gclocals·69c1753bd5f81501d95132d08af04464(SB) + 0x001b 00027 (main.go:226) FUNCDATA $2, gclocals·568470801006e5c0dc3947ea998fe279(SB) + 0x001b 00027 (main.go:227) PCDATA $0, $1 + 0x001b 00027 (main.go:227) PCDATA $1, $1 + 0x001b 00027 (main.go:227) MOVQ "".le+24(SP), CX + 0x0020 00032 (main.go:227) TESTB AL, (CX) + 0x0022 00034 (main.go:227) PCDATA $0, $-2 + 0x0022 00034 (main.go:227) PCDATA $1, $-2 + 0x0022 00034 (main.go:227) CMPL runtime.writeBarrier(SB), $0 + 0x0029 00041 (main.go:227) JNE 61 + 0x002b 00043 (main.go:227) MOVQ "".l+16(SP), AX + 0x0030 00048 (main.go:227) MOVQ AX, 120(CX) + 0x0034 00052 (main.go:228) PCDATA $0, $-1 + 0x0034 00052 (main.go:228) PCDATA $1, $-1 + 0x0034 00052 (main.go:228) MOVQ (SP), BP + 0x0038 00056 (main.go:228) ADDQ $8, SP + 0x003c 00060 (main.go:228) RET + 0x003d 00061 (main.go:227) PCDATA $0, $-2 + 0x003d 00061 (main.go:227) PCDATA $1, $-2 + 0x003d 00061 (main.go:227) LEAQ 120(CX), DI + 0x0041 00065 (main.go:227) MOVQ "".l+16(SP), AX + 0x0046 00070 (main.go:227) CALL runtime.gcWriteBarrier(SB) + 0x004b 00075 (main.go:227) JMP 52 + 0x004d 00077 (main.go:227) NOP + 0x004d 00077 (main.go:226) PCDATA $1, $-1 + 0x004d 00077 (main.go:226) PCDATA $0, $-2 + 0x004d 00077 (main.go:226) CALL runtime.morestack_noctxt(SB) + 0x0052 00082 (main.go:226) PCDATA $0, $-1 + 0x0052 00082 (main.go:226) JMP 0 + 0x0000 64 48 8b 0c 25 00 00 00 00 48 3b 61 10 76 3e 48 dH..%....H;a.v>H + 0x0010 83 ec 08 48 89 2c 24 48 8d 2c 24 48 8b 4c 24 18 ...H.,$H.,$H.L$. + 0x0020 84 01 83 3d 00 00 00 00 00 75 12 48 8b 44 24 10 ...=.....u.H.D$. + 0x0030 48 89 41 78 48 8b 2c 24 48 83 c4 08 c3 48 8d 79 H.AxH.,$H....H.y + 0x0040 78 48 8b 44 24 10 e8 00 00 00 00 eb e7 e8 00 00 xH.D$........... + 0x0050 00 00 eb ac .... + rel 5+4 t=17 TLS+0 + rel 36+4 t=16 runtime.writeBarrier+-1 + rel 71+4 t=8 runtime.gcWriteBarrier+0 + rel 78+4 t=8 runtime.morestack_noctxt+0 +"".Error STEXT size=1700 args=0x20 locals=0x138 + 0x0000 00000 (main.go:242) TEXT "".Error(SB), ABIInternal, $312-32 + 0x0000 00000 (main.go:242) MOVQ (TLS), CX + 0x0009 00009 (main.go:242) LEAQ -184(SP), AX + 0x0011 00017 (main.go:242) CMPQ AX, 16(CX) + 0x0015 00021 (main.go:242) PCDATA $0, $-2 + 0x0015 00021 (main.go:242) JLS 1690 + 0x001b 00027 (main.go:242) PCDATA $0, $-1 + 0x001b 00027 (main.go:242) SUBQ $312, SP + 0x0022 00034 (main.go:242) MOVQ BP, 304(SP) + 0x002a 00042 (main.go:242) LEAQ 304(SP), BP + 0x0032 00050 (main.go:242) PCDATA $0, $-2 + 0x0032 00050 (main.go:242) PCDATA $1, $-2 + 0x0032 00050 (main.go:242) FUNCDATA $0, gclocals·077ffb9bbe9f13d75a63ab4dbd295766(SB) + 0x0032 00050 (main.go:242) FUNCDATA $1, gclocals·0fc9bef872272fcdedc36040c666558e(SB) + 0x0032 00050 (main.go:242) FUNCDATA $2, gclocals·d3d2895a216e4f8a19961333031692c5(SB) + 0x0032 00050 (main.go:242) FUNCDATA $3, "".Error.stkobj(SB) + 0x0032 00050 (main.go:244) PCDATA $0, $0 + 0x0032 00050 (main.go:244) PCDATA $1, $0 + 0x0032 00050 (main.go:244) MOVQ "".err+320(SP), AX + 0x003a 00058 (main.go:244) MOVQ 24(AX), CX + 0x003e 00062 (main.go:244) PCDATA $0, $1 + 0x003e 00062 (main.go:244) MOVQ "".err+328(SP), DX + 0x0046 00070 (main.go:244) PCDATA $0, $0 + 0x0046 00070 (main.go:244) MOVQ DX, (SP) + 0x004a 00074 (main.go:244) CALL CX + 0x004c 00076 (main.go:244) PCDATA $0, $2 + 0x004c 00076 (main.go:244) MOVQ 8(SP), AX + 0x0051 00081 (main.go:244) PCDATA $0, $0 + 0x0051 00081 (main.go:244) PCDATA $1, $1 + 0x0051 00081 (main.go:244) MOVQ AX, ""..autotmp_96+152(SP) + 0x0059 00089 (main.go:244) MOVQ 16(SP), CX + 0x005e 00094 (main.go:244) MOVQ CX, ""..autotmp_97+112(SP) + 0x0063 00099 (main.go:245) PCDATA $0, $1 + 0x0063 00099 (main.go:245) LEAQ type."".EventStackTrace(SB), DX + 0x006a 00106 (main.go:245) PCDATA $0, $0 + 0x006a 00106 (main.go:245) MOVQ DX, (SP) + 0x006e 00110 (main.go:245) XORPS X0, X0 + 0x0071 00113 (main.go:245) MOVUPS X0, 8(SP) + 0x0076 00118 (main.go:245) CALL runtime.makeslice(SB) + 0x007b 00123 (main.go:245) PCDATA $0, $2 + 0x007b 00123 (main.go:245) MOVQ 24(SP), AX + 0x0080 00128 (main.go:245) PCDATA $0, $0 + 0x0080 00128 (main.go:245) PCDATA $1, $2 + 0x0080 00128 (main.go:245) MOVQ AX, ""..autotmp_98+144(SP) + 0x0088 00136 (main.go:243) PCDATA $0, $3 + 0x0088 00136 (main.go:243) LEAQ type."".EventError(SB), CX + 0x008f 00143 (main.go:243) PCDATA $0, $0 + 0x008f 00143 (main.go:243) MOVQ CX, (SP) + 0x0093 00147 (main.go:243) CALL runtime.newobject(SB) + 0x0098 00152 (main.go:243) PCDATA $0, $4 + 0x0098 00152 (main.go:243) MOVQ 8(SP), DI + 0x009d 00157 (main.go:244) MOVQ ""..autotmp_97+112(SP), AX + 0x00a2 00162 (main.go:244) MOVQ AX, 8(DI) + 0x00a6 00166 (main.go:244) PCDATA $0, $-2 + 0x00a6 00166 (main.go:244) PCDATA $1, $-2 + 0x00a6 00166 (main.go:244) CMPL runtime.writeBarrier(SB), $0 + 0x00ad 00173 (main.go:244) JNE 1661 + 0x00b3 00179 (main.go:244) MOVQ ""..autotmp_96+152(SP), CX + 0x00bb 00187 (main.go:244) MOVQ CX, (DI) + 0x00be 00190 (main.go:245) PCDATA $0, $4 + 0x00be 00190 (main.go:245) PCDATA $1, $3 + 0x00be 00190 (main.go:245) XORPS X0, X0 + 0x00c1 00193 (main.go:245) MOVUPS X0, 24(DI) + 0x00c5 00197 (main.go:245) PCDATA $0, $5 + 0x00c5 00197 (main.go:245) LEAQ 16(DI), CX + 0x00c9 00201 (main.go:245) PCDATA $0, $-2 + 0x00c9 00201 (main.go:245) PCDATA $1, $-2 + 0x00c9 00201 (main.go:245) CMPL runtime.writeBarrier(SB), $0 + 0x00d0 00208 (main.go:245) JNE 1628 + 0x00d6 00214 (main.go:245) MOVQ ""..autotmp_98+144(SP), DX + 0x00de 00222 (main.go:245) MOVQ DX, 16(DI) + 0x00e2 00226 (main.go:248) PCDATA $0, $5 + 0x00e2 00226 (main.go:248) PCDATA $1, $0 + 0x00e2 00226 (main.go:248) MOVQ "".err+320(SP), DX + 0x00ea 00234 (main.go:248) TESTQ DX, DX + 0x00ed 00237 (main.go:248) JEQ 1620 + 0x00f3 00243 (main.go:248) PCDATA $0, $6 + 0x00f3 00243 (main.go:248) MOVQ 8(DX), BX + 0x00f7 00247 (main.go:248) PCDATA $0, $-1 + 0x00f7 00247 (main.go:248) PCDATA $1, $-1 + 0x00f7 00247 () NOP + 0x00f7 00247 ($GOROOT/src/reflect/value.go:2317) PCDATA $0, $6 + 0x00f7 00247 ($GOROOT/src/reflect/value.go:2317) PCDATA $1, $0 + 0x00f7 00247 ($GOROOT/src/reflect/value.go:2317) TESTQ BX, BX + 0x00fa 00250 (:0) JEQ 1600 + 0x0100 00256 ($GOROOT/src/reflect/value.go:2325) PCDATA $0, $-1 + 0x0100 00256 ($GOROOT/src/reflect/value.go:2325) PCDATA $1, $-1 + 0x0100 00256 ($GOROOT/src/reflect/value.go:2325) XCHGL AX, AX + 0x0101 00257 ($GOROOT/src/reflect/value.go:2780) PCDATA $0, $6 + 0x0101 00257 ($GOROOT/src/reflect/value.go:2780) PCDATA $1, $0 + 0x0101 00257 ($GOROOT/src/reflect/value.go:2780) CMPB reflect.dummy(SB), $0 + 0x0108 00264 ($GOROOT/src/reflect/value.go:2780) JEQ 1587 + 0x010e 00270 ($GOROOT/src/reflect/value.go:2781) MOVQ BX, reflect.dummy+8(SB) + 0x0115 00277 ($GOROOT/src/reflect/value.go:2781) PCDATA $0, $-2 + 0x0115 00277 ($GOROOT/src/reflect/value.go:2781) PCDATA $1, $-2 + 0x0115 00277 ($GOROOT/src/reflect/value.go:2781) CMPL runtime.writeBarrier(SB), $0 + 0x011c 00284 ($GOROOT/src/reflect/value.go:2781) JNE 1550 + 0x0122 00290 ($GOROOT/src/reflect/value.go:2781) MOVQ "".err+328(SP), AX + 0x012a 00298 ($GOROOT/src/reflect/value.go:2781) MOVQ AX, reflect.dummy+16(SB) + 0x0131 00305 ($GOROOT/src/reflect/value.go:2327) PCDATA $0, $7 + 0x0131 00305 ($GOROOT/src/reflect/value.go:2327) PCDATA $1, $4 + 0x0131 00305 ($GOROOT/src/reflect/value.go:2327) MOVQ BX, reflect.i+168(SP) + 0x0139 00313 ($GOROOT/src/reflect/value.go:2327) MOVQ AX, reflect.i+176(SP) + 0x0141 00321 () NOP + 0x0141 00321 ($GOROOT/src/reflect/value.go:143) PCDATA $0, $8 + 0x0141 00321 ($GOROOT/src/reflect/value.go:143) PCDATA $1, $0 + 0x0141 00321 ($GOROOT/src/reflect/value.go:143) MOVQ reflect.i+168(SP), BX + 0x0149 00329 ($GOROOT/src/reflect/value.go:144) TESTQ BX, BX + 0x014c 00332 (:0) JEQ 1535 + 0x0152 00338 ($GOROOT/src/reflect/type.go:777) MOVBLZX 23(BX), SI + 0x0156 00342 ($GOROOT/src/reflect/type.go:777) MOVL SI, R8 + 0x0159 00345 ($GOROOT/src/reflect/type.go:777) ANDL $31, SI + 0x015c 00348 ($GOROOT/src/reflect/value.go:149) MOVQ SI, R9 + 0x015f 00351 ($GOROOT/src/reflect/value.go:149) BTSQ $7, SI + 0x0164 00356 ($GOROOT/src/reflect/type.go:3067) TESTB $32, R8B + 0x0168 00360 ($GOROOT/src/reflect/value.go:151) CMOVQEQ SI, R9 + 0x016c 00364 ($GOROOT/src/reflect/value.go:147) XCHGL AX, AX + 0x016d 00365 ($GOROOT/src/reflect/value.go:148) XCHGL AX, AX + 0x016e 00366 (main.go:242) MOVQ AX, SI + 0x0171 00369 (main.go:243) PCDATA $0, $9 + 0x0171 00369 (main.go:243) PCDATA $1, $5 + 0x0171 00369 (main.go:243) MOVQ DI, "".e+128(SP) + 0x0179 00377 (main.go:245) PCDATA $0, $10 + 0x0179 00377 (main.go:245) PCDATA $1, $6 + 0x0179 00377 (main.go:245) MOVQ CX, ""..autotmp_99+136(SP) + 0x0181 00385 () NOP + 0x0181 00385 () NOP + 0x0181 00385 ($GOROOT/src/reflect/value.go:1118) XCHGL AX, AX + 0x0182 00386 ($GOROOT/src/reflect/value.go:80) MOVQ R9, R8 + 0x0185 00389 ($GOROOT/src/reflect/value.go:80) ANDQ $31, R9 + 0x0189 00393 ($GOROOT/src/reflect/value.go:2308) CMPQ R9, $22 + 0x018d 00397 ($GOROOT/src/reflect/type.go:254) JEQ 1496 + 0x0193 00403 (main.go:248) PCDATA $0, $2 + 0x0193 00403 (main.go:248) MOVQ BX, (SP) + 0x0197 00407 (main.go:248) PCDATA $0, $0 + 0x0197 00407 (main.go:248) MOVQ AX, 8(SP) + 0x019c 00412 (main.go:248) MOVQ R8, 16(SP) + 0x01a1 00417 (main.go:248) CALL reflect.Value.Type(SB) + 0x01a6 00422 (main.go:248) MOVQ 24(SP), AX + 0x01ab 00427 (main.go:248) PCDATA $0, $3 + 0x01ab 00427 (main.go:248) MOVQ 32(SP), CX + 0x01b0 00432 (main.go:248) MOVQ 152(AX), AX + 0x01b7 00439 (main.go:248) PCDATA $0, $0 + 0x01b7 00439 (main.go:248) MOVQ CX, (SP) + 0x01bb 00443 (main.go:248) CALL AX + 0x01bd 00445 (main.go:248) CMPQ 8(SP), $25 + 0x01c3 00451 (main.go:250) JNE 1289 + 0x01c9 00457 (main.go:248) PCDATA $0, $3 + 0x01c9 00457 (main.go:248) MOVQ "".err+320(SP), CX + 0x01d1 00465 (main.go:248) TESTQ CX, CX + 0x01d4 00468 (main.go:252) JEQ 474 + 0x01d6 00470 (main.go:252) MOVQ 8(CX), CX + 0x01da 00474 (main.go:252) PCDATA $0, $11 + 0x01da 00474 (main.go:252) MOVQ "".e+128(SP), DX + 0x01e2 00482 (main.go:252) PCDATA $0, $1 + 0x01e2 00482 (main.go:252) MOVQ CX, 40(DX) + 0x01e6 00486 (main.go:252) PCDATA $0, $-2 + 0x01e6 00486 (main.go:252) PCDATA $1, $-2 + 0x01e6 00486 (main.go:252) CMPL runtime.writeBarrier(SB), $0 + 0x01ed 00493 (main.go:252) JNE 1267 + 0x01f3 00499 (main.go:252) MOVQ "".err+328(SP), AX + 0x01fb 00507 (main.go:252) MOVQ AX, 48(DX) + 0x01ff 00511 (main.go:258) PCDATA $0, $2 + 0x01ff 00511 (main.go:258) PCDATA $1, $7 + 0x01ff 00511 (main.go:258) LEAQ type.uintptr(SB), AX + 0x0206 00518 (main.go:258) PCDATA $0, $0 + 0x0206 00518 (main.go:258) MOVQ AX, (SP) + 0x020a 00522 (main.go:258) MOVQ $10, 8(SP) + 0x0213 00531 (main.go:258) MOVQ $10, 16(SP) + 0x021c 00540 (main.go:258) CALL runtime.makeslice(SB) + 0x0221 00545 (main.go:258) PCDATA $0, $2 + 0x0221 00545 (main.go:258) MOVQ 24(SP), AX + 0x0226 00550 (main.go:258) PCDATA $1, $8 + 0x0226 00550 (main.go:258) MOVQ AX, ""..autotmp_98+144(SP) + 0x022e 00558 (main.go:259) XCHGL AX, AX + 0x022f 00559 ($GOROOT/src/runtime/extern.go:215) MOVQ $2, (SP) + 0x0237 00567 ($GOROOT/src/runtime/extern.go:215) PCDATA $0, $0 + 0x0237 00567 ($GOROOT/src/runtime/extern.go:215) MOVQ AX, 8(SP) + 0x023c 00572 ($GOROOT/src/runtime/extern.go:215) MOVQ $10, 16(SP) + 0x0245 00581 ($GOROOT/src/runtime/extern.go:215) MOVQ $10, 24(SP) + 0x024e 00590 ($GOROOT/src/runtime/extern.go:215) CALL runtime.callers(SB) + 0x0253 00595 ($GOROOT/src/runtime/extern.go:215) MOVQ 32(SP), CX + 0x0258 00600 (main.go:260) TESTQ CX, CX + 0x025b 00603 (main.go:260) JLE 1254 + 0x0261 00609 (main.go:261) CMPQ CX, $10 + 0x0265 00613 (main.go:261) JHI 1679 + 0x026b 00619 ($GOROOT/src/runtime/extern.go:215) MOVQ CX, "".callers.len+104(SP) + 0x0270 00624 () NOP + 0x0270 00624 ($GOROOT/src/runtime/symtab.go:66) PCDATA $0, $2 + 0x0270 00624 ($GOROOT/src/runtime/symtab.go:66) LEAQ type.runtime.Frames(SB), AX + 0x0277 00631 ($GOROOT/src/runtime/symtab.go:66) PCDATA $0, $0 + 0x0277 00631 ($GOROOT/src/runtime/symtab.go:66) MOVQ AX, (SP) + 0x027b 00635 ($GOROOT/src/runtime/symtab.go:66) CALL runtime.newobject(SB) + 0x0280 00640 ($GOROOT/src/runtime/symtab.go:66) PCDATA $0, $4 + 0x0280 00640 ($GOROOT/src/runtime/symtab.go:66) MOVQ 8(SP), DI + 0x0285 00645 ($GOROOT/src/runtime/symtab.go:66) MOVQ "".callers.len+104(SP), AX + 0x028a 00650 ($GOROOT/src/runtime/symtab.go:66) MOVQ AX, 8(DI) + 0x028e 00654 ($GOROOT/src/runtime/symtab.go:66) MOVQ $10, 16(DI) + 0x0296 00662 ($GOROOT/src/runtime/symtab.go:66) PCDATA $0, $-2 + 0x0296 00662 ($GOROOT/src/runtime/symtab.go:66) PCDATA $1, $-2 + 0x0296 00662 ($GOROOT/src/runtime/symtab.go:66) CMPL runtime.writeBarrier(SB), $0 + 0x029d 00669 ($GOROOT/src/runtime/symtab.go:66) JNE 1236 + 0x02a3 00675 ($GOROOT/src/runtime/symtab.go:66) MOVQ ""..autotmp_98+144(SP), CX + 0x02ab 00683 ($GOROOT/src/runtime/symtab.go:66) MOVQ CX, (DI) + 0x02ae 00686 ($GOROOT/src/runtime/symtab.go:67) PCDATA $0, $4 + 0x02ae 00686 ($GOROOT/src/runtime/symtab.go:67) PCDATA $1, $7 + 0x02ae 00686 ($GOROOT/src/runtime/symtab.go:67) MOVQ $0, 32(DI) + 0x02b6 00694 ($GOROOT/src/runtime/symtab.go:67) MOVQ $2, 40(DI) + 0x02be 00702 ($GOROOT/src/runtime/symtab.go:67) PCDATA $0, $12 + 0x02be 00702 ($GOROOT/src/runtime/symtab.go:67) LEAQ 48(DI), AX + 0x02c2 00706 ($GOROOT/src/runtime/symtab.go:67) PCDATA $0, $-2 + 0x02c2 00706 ($GOROOT/src/runtime/symtab.go:67) PCDATA $1, $-2 + 0x02c2 00706 ($GOROOT/src/runtime/symtab.go:67) CMPL runtime.writeBarrier(SB), $0 + 0x02c9 00713 ($GOROOT/src/runtime/symtab.go:67) JNE 1213 + 0x02cf 00719 ($GOROOT/src/runtime/symtab.go:67) MOVQ AX, 24(DI) + 0x02d3 00723 ($GOROOT/src/runtime/symtab.go:66) PCDATA $0, $4 + 0x02d3 00723 ($GOROOT/src/runtime/symtab.go:66) PCDATA $1, $9 + 0x02d3 00723 ($GOROOT/src/runtime/symtab.go:66) MOVQ DI, "".frames+120(SP) + 0x02d8 00728 (main.go:263) JMP 735 + 0x02da 00730 (main.go:264) MOVQ "".frames+120(SP), DI + 0x02df 00735 (main.go:264) PCDATA $0, $0 + 0x02df 00735 (main.go:264) MOVQ DI, (SP) + 0x02e3 00739 (main.go:264) CALL runtime.(*Frames).Next(SB) + 0x02e8 00744 (main.go:264) MOVBLZX 88(SP), AX + 0x02ed 00749 (main.go:264) MOVB AL, ""..autotmp_100+103(SP) + 0x02f1 00753 (main.go:264) CMPB AL, $0 + 0x02f3 00755 (main.go:264) PCDATA $0, $4 + 0x02f3 00755 (main.go:264) PCDATA $1, $10 + 0x02f3 00755 (main.go:264) LEAQ "".frame+224(SP), DI + 0x02fb 00763 (main.go:264) PCDATA $0, $13 + 0x02fb 00763 (main.go:264) LEAQ 8(SP), SI + 0x0300 00768 (main.go:264) PCDATA $0, $0 + 0x0300 00768 (main.go:264) DUFFCOPY $826 + 0x0313 00787 (main.go:266) PCDATA $1, $11 + 0x0313 00787 (main.go:266) MOVQ $0, ""..autotmp_67+184(SP) + 0x031f 00799 (main.go:266) XORPS X0, X0 + 0x0322 00802 (main.go:266) MOVUPS X0, ""..autotmp_67+192(SP) + 0x032a 00810 (main.go:266) MOVUPS X0, ""..autotmp_67+208(SP) + 0x0332 00818 (main.go:267) MOVQ "".frame+264(SP), CX + 0x033a 00826 (main.go:267) PCDATA $0, $1 + 0x033a 00826 (main.go:267) MOVQ "".frame+256(SP), DX + 0x0342 00834 (main.go:267) PCDATA $0, $0 + 0x0342 00834 (main.go:267) MOVQ DX, ""..autotmp_67+184(SP) + 0x034a 00842 (main.go:267) MOVQ CX, ""..autotmp_67+192(SP) + 0x0352 00850 (main.go:268) MOVQ "".frame+272(SP), CX + 0x035a 00858 (main.go:268) MOVQ CX, ""..autotmp_67+200(SP) + 0x0362 00866 (main.go:269) MOVQ "".frame+248(SP), CX + 0x036a 00874 (main.go:269) PCDATA $0, $1 + 0x036a 00874 (main.go:269) PCDATA $1, $12 + 0x036a 00874 (main.go:269) MOVQ "".frame+240(SP), DX + 0x0372 00882 (main.go:269) PCDATA $0, $0 + 0x0372 00882 (main.go:269) MOVQ DX, ""..autotmp_67+208(SP) + 0x037a 00890 (main.go:269) MOVQ CX, ""..autotmp_67+216(SP) + 0x0382 00898 (main.go:266) PCDATA $0, $3 + 0x0382 00898 (main.go:266) MOVQ "".e+128(SP), CX + 0x038a 00906 (main.go:266) MOVQ 24(CX), DX + 0x038e 00910 (main.go:266) LEAQ 1(DX), BX + 0x0392 00914 (main.go:266) MOVQ 32(CX), SI + 0x0396 00918 (main.go:266) PCDATA $0, $5 + 0x0396 00918 (main.go:266) MOVQ 16(CX), DI + 0x039a 00922 (main.go:266) CMPQ BX, SI + 0x039d 00925 (main.go:266) JHI 1100 + 0x03a3 00931 (main.go:266) LEAQ 1(DX), BX + 0x03a7 00935 (main.go:266) MOVQ BX, 24(CX) + 0x03ab 00939 (main.go:266) LEAQ (DX)(DX*4), DX + 0x03af 00943 (main.go:266) PCDATA $0, $6 + 0x03af 00943 (main.go:266) LEAQ (DI)(DX*8), BX + 0x03b3 00947 (main.go:266) PCDATA $0, $-2 + 0x03b3 00947 (main.go:266) PCDATA $1, $-2 + 0x03b3 00947 (main.go:266) CMPL runtime.writeBarrier(SB), $0 + 0x03ba 00954 (main.go:266) JNE 1046 + 0x03bc 00956 (main.go:266) MOVQ ""..autotmp_67+184(SP), BX + 0x03c4 00964 (main.go:266) MOVQ BX, (DI)(DX*8) + 0x03c8 00968 (main.go:266) MOVUPS ""..autotmp_67+192(SP), X1 + 0x03d0 00976 (main.go:266) LEAQ (DI)(DX*8), DX + 0x03d4 00980 (main.go:266) LEAQ 8(DX), DX + 0x03d8 00984 (main.go:266) MOVUPS X1, (DX) + 0x03db 00987 (main.go:266) MOVUPS ""..autotmp_67+208(SP), X1 + 0x03e3 00995 (main.go:266) MOVUPS X1, 16(DX) + 0x03e7 00999 (main.go:264) CMPB AL, $0 + 0x03e9 01001 (main.go:272) PCDATA $0, $-1 + 0x03e9 01001 (main.go:272) PCDATA $1, $-1 + 0x03e9 01001 (main.go:272) JNE 730 + 0x03ef 01007 (main.go:278) PCDATA $0, $14 + 0x03ef 01007 (main.go:278) PCDATA $1, $13 + 0x03ef 01007 (main.go:278) LEAQ go.itab.*"".EventError,"".option(SB), AX + 0x03f6 01014 (main.go:278) PCDATA $0, $3 + 0x03f6 01014 (main.go:278) MOVQ AX, "".~r1+336(SP) + 0x03fe 01022 (main.go:278) PCDATA $0, $0 + 0x03fe 01022 (main.go:278) MOVQ CX, "".~r1+344(SP) + 0x0406 01030 (main.go:278) MOVQ 304(SP), BP + 0x040e 01038 (main.go:278) ADDQ $312, SP + 0x0415 01045 (main.go:278) RET + 0x0416 01046 (main.go:266) PCDATA $0, $-2 + 0x0416 01046 (main.go:266) PCDATA $1, $-2 + 0x0416 01046 (main.go:266) LEAQ type."".EventStackTrace(SB), AX + 0x041d 01053 (main.go:266) MOVQ AX, (SP) + 0x0421 01057 (main.go:266) MOVQ BX, 8(SP) + 0x0426 01062 (main.go:266) LEAQ ""..autotmp_67+184(SP), AX + 0x042e 01070 (main.go:266) MOVQ AX, 16(SP) + 0x0433 01075 (main.go:266) CALL runtime.typedmemmove(SB) + 0x0438 01080 (main.go:264) MOVBLZX ""..autotmp_100+103(SP), AX + 0x043d 01085 (main.go:264) CMPB AL, $0 + 0x043f 01087 (main.go:278) MOVQ "".e+128(SP), CX + 0x0447 01095 (main.go:245) XORPS X0, X0 + 0x044a 01098 (main.go:266) JMP 1001 + 0x044c 01100 (main.go:266) PCDATA $0, $12 + 0x044c 01100 (main.go:266) PCDATA $1, $12 + 0x044c 01100 (main.go:266) LEAQ type."".EventStackTrace(SB), AX + 0x0453 01107 (main.go:266) PCDATA $0, $4 + 0x0453 01107 (main.go:266) MOVQ AX, (SP) + 0x0457 01111 (main.go:266) PCDATA $0, $0 + 0x0457 01111 (main.go:266) MOVQ DI, 8(SP) + 0x045c 01116 (main.go:266) MOVQ DX, 16(SP) + 0x0461 01121 (main.go:266) MOVQ SI, 24(SP) + 0x0466 01126 (main.go:266) MOVQ BX, 32(SP) + 0x046b 01131 (main.go:266) CALL runtime.growslice(SB) + 0x0470 01136 (main.go:266) PCDATA $0, $2 + 0x0470 01136 (main.go:266) MOVQ 40(SP), AX + 0x0475 01141 (main.go:266) MOVQ 48(SP), CX + 0x047a 01146 (main.go:266) MOVQ 56(SP), DX + 0x047f 01151 (main.go:266) PCDATA $0, $10 + 0x047f 01151 (main.go:266) MOVQ "".e+128(SP), BX + 0x0487 01159 (main.go:266) MOVQ DX, 32(BX) + 0x048b 01163 (main.go:266) PCDATA $0, $-2 + 0x048b 01163 (main.go:266) PCDATA $1, $-2 + 0x048b 01163 (main.go:266) CMPL runtime.writeBarrier(SB), $0 + 0x0492 01170 (main.go:266) JNE 1198 + 0x0494 01172 (main.go:266) MOVQ AX, 16(BX) + 0x0498 01176 (main.go:245) PCDATA $0, $10 + 0x0498 01176 (main.go:245) PCDATA $1, $12 + 0x0498 01176 (main.go:245) XORPS X0, X0 + 0x049b 01179 (main.go:266) MOVQ CX, DX + 0x049e 01182 (main.go:266) PCDATA $0, $15 + 0x049e 01182 (main.go:266) MOVQ AX, DI + 0x04a1 01185 (main.go:264) MOVBLZX ""..autotmp_100+103(SP), AX + 0x04a6 01190 (main.go:266) PCDATA $0, $5 + 0x04a6 01190 (main.go:266) MOVQ BX, CX + 0x04a9 01193 (main.go:266) JMP 931 + 0x04ae 01198 (main.go:266) PCDATA $0, $-2 + 0x04ae 01198 (main.go:266) PCDATA $1, $-2 + 0x04ae 01198 (main.go:266) MOVQ ""..autotmp_99+136(SP), DI + 0x04b6 01206 (main.go:266) CALL runtime.gcWriteBarrier(SB) + 0x04bb 01211 (main.go:266) JMP 1176 + 0x04bd 01213 ($GOROOT/src/runtime/symtab.go:67) LEAQ 24(DI), CX + 0x04c1 01217 ($GOROOT/src/runtime/symtab.go:66) MOVQ DI, DX + 0x04c4 01220 ($GOROOT/src/runtime/symtab.go:67) MOVQ CX, DI + 0x04c7 01223 ($GOROOT/src/runtime/symtab.go:67) CALL runtime.gcWriteBarrier(SB) + 0x04cc 01228 (main.go:264) MOVQ DX, DI + 0x04cf 01231 ($GOROOT/src/runtime/symtab.go:67) JMP 723 + 0x04d4 01236 ($GOROOT/src/runtime/symtab.go:66) MOVQ ""..autotmp_98+144(SP), AX + 0x04dc 01244 ($GOROOT/src/runtime/symtab.go:66) CALL runtime.gcWriteBarrier(SB) + 0x04e1 01249 ($GOROOT/src/runtime/symtab.go:66) JMP 686 + 0x04e6 01254 (main.go:278) PCDATA $0, $3 + 0x04e6 01254 (main.go:278) PCDATA $1, $14 + 0x04e6 01254 (main.go:278) MOVQ "".e+128(SP), CX + 0x04ee 01262 (main.go:260) JMP 1007 + 0x04f3 01267 (main.go:252) PCDATA $0, $-2 + 0x04f3 01267 (main.go:252) PCDATA $1, $-2 + 0x04f3 01267 (main.go:252) LEAQ 48(DX), DI + 0x04f7 01271 (main.go:252) MOVQ "".err+328(SP), AX + 0x04ff 01279 (main.go:252) CALL runtime.gcWriteBarrier(SB) + 0x0504 01284 (main.go:252) JMP 511 + 0x0509 01289 (main.go:255) PCDATA $0, $0 + 0x0509 01289 (main.go:255) PCDATA $1, $6 + 0x0509 01289 (main.go:255) CALL runtime.makemap_small(SB) + 0x050e 01294 (main.go:255) PCDATA $0, $2 + 0x050e 01294 (main.go:255) MOVQ (SP), AX + 0x0512 01298 (main.go:248) PCDATA $0, $14 + 0x0512 01298 (main.go:248) MOVQ "".err+320(SP), CX + 0x051a 01306 (main.go:248) TESTQ CX, CX + 0x051d 01309 (main.go:255) JEQ 1315 + 0x051f 01311 (main.go:255) MOVQ 8(CX), CX + 0x0523 01315 (main.go:255) PCDATA $1, $15 + 0x0523 01315 (main.go:255) MOVQ AX, ""..autotmp_101+160(SP) + 0x052b 01323 (main.go:255) PCDATA $0, $2 + 0x052b 01323 (main.go:255) PCDATA $1, $16 + 0x052b 01323 (main.go:255) MOVQ CX, ""..autotmp_96+152(SP) + 0x0533 01331 (main.go:255) PCDATA $0, $16 + 0x0533 01331 (main.go:255) LEAQ type."".Data(SB), DX + 0x053a 01338 (main.go:255) PCDATA $0, $2 + 0x053a 01338 (main.go:255) MOVQ DX, (SP) + 0x053e 01342 (main.go:255) PCDATA $0, $0 + 0x053e 01342 (main.go:255) MOVQ AX, 8(SP) + 0x0543 01347 (main.go:255) PCDATA $0, $17 + 0x0543 01347 (main.go:255) LEAQ go.string."value"(SB), BX + 0x054a 01354 (main.go:255) PCDATA $0, $0 + 0x054a 01354 (main.go:255) MOVQ BX, 16(SP) + 0x054f 01359 (main.go:255) MOVQ $5, 24(SP) + 0x0558 01368 (main.go:255) CALL runtime.mapassign_faststr(SB) + 0x055d 01373 (main.go:255) PCDATA $0, $2 + 0x055d 01373 (main.go:255) MOVQ 32(SP), AX + 0x0562 01378 (main.go:255) PCDATA $0, $14 + 0x0562 01378 (main.go:255) PCDATA $1, $15 + 0x0562 01378 (main.go:255) MOVQ ""..autotmp_96+152(SP), CX + 0x056a 01386 (main.go:255) PCDATA $0, $2 + 0x056a 01386 (main.go:255) MOVQ CX, (AX) + 0x056d 01389 (main.go:255) PCDATA $0, $-2 + 0x056d 01389 (main.go:255) PCDATA $1, $-2 + 0x056d 01389 (main.go:255) CMPL runtime.writeBarrier(SB), $0 + 0x0574 01396 (main.go:255) JNE 1477 + 0x0576 01398 (main.go:255) MOVQ "".err+328(SP), CX + 0x057e 01406 (main.go:255) MOVQ CX, 8(AX) + 0x0582 01410 (main.go:255) PCDATA $0, $3 + 0x0582 01410 (main.go:255) PCDATA $1, $17 + 0x0582 01410 (main.go:255) LEAQ type."".Data(SB), CX + 0x0589 01417 (main.go:255) PCDATA $0, $11 + 0x0589 01417 (main.go:255) MOVQ "".e+128(SP), DX + 0x0591 01425 (main.go:255) PCDATA $0, $1 + 0x0591 01425 (main.go:255) MOVQ CX, 40(DX) + 0x0595 01429 (main.go:255) PCDATA $0, $-2 + 0x0595 01429 (main.go:255) PCDATA $1, $-2 + 0x0595 01429 (main.go:255) CMPL runtime.writeBarrier(SB), $0 + 0x059c 01436 (main.go:255) JNE 1455 + 0x059e 01438 (main.go:255) MOVQ ""..autotmp_101+160(SP), AX + 0x05a6 01446 (main.go:255) MOVQ AX, 48(DX) + 0x05aa 01450 (main.go:255) JMP 511 + 0x05af 01455 (main.go:255) LEAQ 48(DX), DI + 0x05b3 01459 (main.go:255) MOVQ ""..autotmp_101+160(SP), AX + 0x05bb 01467 (main.go:255) CALL runtime.gcWriteBarrier(SB) + 0x05c0 01472 (main.go:255) JMP 511 + 0x05c5 01477 (main.go:255) LEAQ 8(AX), DI + 0x05c9 01481 (main.go:255) MOVQ "".err+328(SP), AX + 0x05d1 01489 (main.go:255) CALL runtime.gcWriteBarrier(SB) + 0x05d6 01494 (main.go:255) JMP 1410 + 0x05d8 01496 ($GOROOT/src/reflect/value.go:2311) PCDATA $0, $2 + 0x05d8 01496 ($GOROOT/src/reflect/value.go:2311) PCDATA $1, $6 + 0x05d8 01496 ($GOROOT/src/reflect/value.go:2311) MOVQ BX, (SP) + 0x05dc 01500 ($GOROOT/src/reflect/value.go:2311) PCDATA $0, $0 + 0x05dc 01500 ($GOROOT/src/reflect/value.go:2311) MOVQ AX, 8(SP) + 0x05e1 01505 ($GOROOT/src/reflect/value.go:2311) MOVQ R8, 16(SP) + 0x05e6 01510 ($GOROOT/src/reflect/value.go:2311) CALL reflect.Value.Elem(SB) + 0x05eb 01515 ($GOROOT/src/reflect/value.go:2311) PCDATA $0, $17 + 0x05eb 01515 ($GOROOT/src/reflect/value.go:2311) MOVQ 24(SP), BX + 0x05f0 01520 ($GOROOT/src/reflect/value.go:2311) PCDATA $0, $10 + 0x05f0 01520 ($GOROOT/src/reflect/value.go:2311) MOVQ 32(SP), AX + 0x05f5 01525 ($GOROOT/src/reflect/value.go:2311) MOVQ 40(SP), R8 + 0x05fa 01530 (main.go:248) JMP 403 + 0x05ff 01535 (main.go:252) PCDATA $0, $5 + 0x05ff 01535 (main.go:252) PCDATA $1, $0 + 0x05ff 01535 (main.go:252) MOVQ AX, SI + 0x0602 01538 (main.go:252) XORL R9, R9 + 0x0605 01541 (main.go:252) PCDATA $0, $7 + 0x0605 01541 (main.go:252) XORL AX, AX + 0x0607 01543 (main.go:252) PCDATA $0, $8 + 0x0607 01543 (main.go:252) XORL BX, BX + 0x0609 01545 ($GOROOT/src/reflect/value.go:2327) JMP 369 + 0x060e 01550 (main.go:243) PCDATA $0, $-2 + 0x060e 01550 (main.go:243) PCDATA $1, $-2 + 0x060e 01550 (main.go:243) MOVQ DI, AX + 0x0611 01553 ($GOROOT/src/reflect/value.go:2781) LEAQ reflect.dummy+16(SB), DI + 0x0618 01560 (main.go:243) MOVQ AX, SI + 0x061b 01563 ($GOROOT/src/reflect/value.go:2781) MOVQ "".err+328(SP), AX + 0x0623 01571 ($GOROOT/src/reflect/value.go:2781) CALL runtime.gcWriteBarrier(SB) + 0x0628 01576 (main.go:252) MOVQ SI, DI + 0x062b 01579 (main.go:245) XORPS X0, X0 + 0x062e 01582 ($GOROOT/src/reflect/value.go:2781) JMP 305 + 0x0633 01587 ($GOROOT/src/reflect/value.go:2327) PCDATA $0, $8 + 0x0633 01587 ($GOROOT/src/reflect/value.go:2327) PCDATA $1, $0 + 0x0633 01587 ($GOROOT/src/reflect/value.go:2327) MOVQ "".err+328(SP), AX + 0x063b 01595 ($GOROOT/src/reflect/value.go:2780) JMP 305 + 0x0640 01600 (main.go:252) PCDATA $0, $5 + 0x0640 01600 (main.go:252) MOVQ "".err+328(SP), SI + 0x0648 01608 (main.go:252) PCDATA $0, $6 + 0x0648 01608 (main.go:252) XORL BX, BX + 0x064a 01610 (main.go:252) XORL R9, R9 + 0x064d 01613 (main.go:252) PCDATA $0, $8 + 0x064d 01613 (main.go:252) XORL AX, AX + 0x064f 01615 (main.go:248) JMP 369 + 0x0654 01620 (main.go:248) PCDATA $0, $6 + 0x0654 01620 (main.go:248) MOVQ DX, BX + 0x0657 01623 (main.go:248) JMP 247 + 0x065c 01628 (main.go:243) PCDATA $0, $-2 + 0x065c 01628 (main.go:243) PCDATA $1, $-2 + 0x065c 01628 (main.go:243) MOVQ DI, AX + 0x065f 01631 (main.go:245) MOVQ CX, DI + 0x0662 01634 (main.go:243) MOVQ AX, DX + 0x0665 01637 (main.go:245) MOVQ ""..autotmp_98+144(SP), AX + 0x066d 01645 (main.go:245) CALL runtime.gcWriteBarrier(SB) + 0x0672 01650 (main.go:252) MOVQ DX, DI + 0x0675 01653 (main.go:245) XORPS X0, X0 + 0x0678 01656 (main.go:245) JMP 226 + 0x067d 01661 (main.go:244) MOVQ ""..autotmp_96+152(SP), AX + 0x0685 01669 (main.go:244) CALL runtime.gcWriteBarrier(SB) + 0x068a 01674 (main.go:244) JMP 190 + 0x068f 01679 (main.go:261) PCDATA $0, $0 + 0x068f 01679 (main.go:261) PCDATA $1, $14 + 0x068f 01679 (main.go:261) MOVL $10, DX + 0x0694 01684 (main.go:261) CALL runtime.panicSliceAcap(SB) + 0x0699 01689 (main.go:261) XCHGL AX, AX + 0x069a 01690 (main.go:261) NOP + 0x069a 01690 (main.go:242) PCDATA $1, $-1 + 0x069a 01690 (main.go:242) PCDATA $0, $-2 + 0x069a 01690 (main.go:242) CALL runtime.morestack_noctxt(SB) + 0x069f 01695 (main.go:242) PCDATA $0, $-1 + 0x069f 01695 (main.go:242) JMP 0 + 0x0000 64 48 8b 0c 25 00 00 00 00 48 8d 84 24 48 ff ff dH..%....H..$H.. + 0x0010 ff 48 3b 41 10 0f 86 7f 06 00 00 48 81 ec 38 01 .H;A.......H..8. + 0x0020 00 00 48 89 ac 24 30 01 00 00 48 8d ac 24 30 01 ..H..$0...H..$0. + 0x0030 00 00 48 8b 84 24 40 01 00 00 48 8b 48 18 48 8b ..H..$@...H.H.H. + 0x0040 94 24 48 01 00 00 48 89 14 24 ff d1 48 8b 44 24 .$H...H..$..H.D$ + 0x0050 08 48 89 84 24 98 00 00 00 48 8b 4c 24 10 48 89 .H..$....H.L$.H. + 0x0060 4c 24 70 48 8d 15 00 00 00 00 48 89 14 24 0f 57 L$pH......H..$.W + 0x0070 c0 0f 11 44 24 08 e8 00 00 00 00 48 8b 44 24 18 ...D$......H.D$. + 0x0080 48 89 84 24 90 00 00 00 48 8d 0d 00 00 00 00 48 H..$....H......H + 0x0090 89 0c 24 e8 00 00 00 00 48 8b 7c 24 08 48 8b 44 ..$.....H.|$.H.D + 0x00a0 24 70 48 89 47 08 83 3d 00 00 00 00 00 0f 85 ca $pH.G..=........ + 0x00b0 05 00 00 48 8b 8c 24 98 00 00 00 48 89 0f 0f 57 ...H..$....H...W + 0x00c0 c0 0f 11 47 18 48 8d 4f 10 83 3d 00 00 00 00 00 ...G.H.O..=..... + 0x00d0 0f 85 86 05 00 00 48 8b 94 24 90 00 00 00 48 89 ......H..$....H. + 0x00e0 57 10 48 8b 94 24 40 01 00 00 48 85 d2 0f 84 61 W.H..$@...H....a + 0x00f0 05 00 00 48 8b 5a 08 48 85 db 0f 84 40 05 00 00 ...H.Z.H....@... + 0x0100 90 80 3d 00 00 00 00 00 0f 84 25 05 00 00 48 89 ..=.......%...H. + 0x0110 1d 00 00 00 00 83 3d 00 00 00 00 00 0f 85 ec 04 ......=......... + 0x0120 00 00 48 8b 84 24 48 01 00 00 48 89 05 00 00 00 ..H..$H...H..... + 0x0130 00 48 89 9c 24 a8 00 00 00 48 89 84 24 b0 00 00 .H..$....H..$... + 0x0140 00 48 8b 9c 24 a8 00 00 00 48 85 db 0f 84 ad 04 .H..$....H...... + 0x0150 00 00 0f b6 73 17 41 89 f0 83 e6 1f 49 89 f1 48 ....s.A.....I..H + 0x0160 0f ba ee 07 41 f6 c0 20 4c 0f 44 ce 90 90 48 89 ....A.. L.D...H. + 0x0170 c6 48 89 bc 24 80 00 00 00 48 89 8c 24 88 00 00 .H..$....H..$... + 0x0180 00 90 4d 89 c8 49 83 e1 1f 49 83 f9 16 0f 84 45 ..M..I...I.....E + 0x0190 04 00 00 48 89 1c 24 48 89 44 24 08 4c 89 44 24 ...H..$H.D$.L.D$ + 0x01a0 10 e8 00 00 00 00 48 8b 44 24 18 48 8b 4c 24 20 ......H.D$.H.L$ + 0x01b0 48 8b 80 98 00 00 00 48 89 0c 24 ff d0 48 83 7c H......H..$..H.| + 0x01c0 24 08 19 0f 85 40 03 00 00 48 8b 8c 24 40 01 00 $....@...H..$@.. + 0x01d0 00 48 85 c9 74 04 48 8b 49 08 48 8b 94 24 80 00 .H..t.H.I.H..$.. + 0x01e0 00 00 48 89 4a 28 83 3d 00 00 00 00 00 0f 85 00 ..H.J(.=........ + 0x01f0 03 00 00 48 8b 84 24 48 01 00 00 48 89 42 30 48 ...H..$H...H.B0H + 0x0200 8d 05 00 00 00 00 48 89 04 24 48 c7 44 24 08 0a ......H..$H.D$.. + 0x0210 00 00 00 48 c7 44 24 10 0a 00 00 00 e8 00 00 00 ...H.D$......... + 0x0220 00 48 8b 44 24 18 48 89 84 24 90 00 00 00 90 48 .H.D$.H..$.....H + 0x0230 c7 04 24 02 00 00 00 48 89 44 24 08 48 c7 44 24 ..$....H.D$.H.D$ + 0x0240 10 0a 00 00 00 48 c7 44 24 18 0a 00 00 00 e8 00 .....H.D$....... + 0x0250 00 00 00 48 8b 4c 24 20 48 85 c9 0f 8e 85 02 00 ...H.L$ H....... + 0x0260 00 48 83 f9 0a 0f 87 24 04 00 00 48 89 4c 24 68 .H.....$...H.L$h + 0x0270 48 8d 05 00 00 00 00 48 89 04 24 e8 00 00 00 00 H......H..$..... + 0x0280 48 8b 7c 24 08 48 8b 44 24 68 48 89 47 08 48 c7 H.|$.H.D$hH.G.H. + 0x0290 47 10 0a 00 00 00 83 3d 00 00 00 00 00 0f 85 31 G......=.......1 + 0x02a0 02 00 00 48 8b 8c 24 90 00 00 00 48 89 0f 48 c7 ...H..$....H..H. + 0x02b0 47 20 00 00 00 00 48 c7 47 28 02 00 00 00 48 8d G ....H.G(....H. + 0x02c0 47 30 83 3d 00 00 00 00 00 0f 85 ee 01 00 00 48 G0.=...........H + 0x02d0 89 47 18 48 89 7c 24 78 eb 05 48 8b 7c 24 78 48 .G.H.|$x..H.|$xH + 0x02e0 89 3c 24 e8 00 00 00 00 0f b6 44 24 58 88 44 24 .<$.......D$X.D$ + 0x02f0 67 3c 00 48 8d bc 24 e0 00 00 00 48 8d 74 24 08 g<.H..$....H.t$. + 0x0300 48 89 6c 24 f0 48 8d 6c 24 f0 e8 00 00 00 00 48 H.l$.H.l$......H + 0x0310 8b 6d 00 48 c7 84 24 b8 00 00 00 00 00 00 00 0f .m.H..$......... + 0x0320 57 c0 0f 11 84 24 c0 00 00 00 0f 11 84 24 d0 00 W....$.......$.. + 0x0330 00 00 48 8b 8c 24 08 01 00 00 48 8b 94 24 00 01 ..H..$....H..$.. + 0x0340 00 00 48 89 94 24 b8 00 00 00 48 89 8c 24 c0 00 ..H..$....H..$.. + 0x0350 00 00 48 8b 8c 24 10 01 00 00 48 89 8c 24 c8 00 ..H..$....H..$.. + 0x0360 00 00 48 8b 8c 24 f8 00 00 00 48 8b 94 24 f0 00 ..H..$....H..$.. + 0x0370 00 00 48 89 94 24 d0 00 00 00 48 89 8c 24 d8 00 ..H..$....H..$.. + 0x0380 00 00 48 8b 8c 24 80 00 00 00 48 8b 51 18 48 8d ..H..$....H.Q.H. + 0x0390 5a 01 48 8b 71 20 48 8b 79 10 48 39 f3 0f 87 a9 Z.H.q H.y.H9.... + 0x03a0 00 00 00 48 8d 5a 01 48 89 59 18 48 8d 14 92 48 ...H.Z.H.Y.H...H + 0x03b0 8d 1c d7 83 3d 00 00 00 00 00 75 5a 48 8b 9c 24 ....=.....uZH..$ + 0x03c0 b8 00 00 00 48 89 1c d7 0f 10 8c 24 c0 00 00 00 ....H......$.... + 0x03d0 48 8d 14 d7 48 8d 52 08 0f 11 0a 0f 10 8c 24 d0 H...H.R.......$. + 0x03e0 00 00 00 0f 11 4a 10 3c 00 0f 85 eb fe ff ff 48 .....J.<.......H + 0x03f0 8d 05 00 00 00 00 48 89 84 24 50 01 00 00 48 89 ......H..$P...H. + 0x0400 8c 24 58 01 00 00 48 8b ac 24 30 01 00 00 48 81 .$X...H..$0...H. + 0x0410 c4 38 01 00 00 c3 48 8d 05 00 00 00 00 48 89 04 .8....H......H.. + 0x0420 24 48 89 5c 24 08 48 8d 84 24 b8 00 00 00 48 89 $H.\$.H..$....H. + 0x0430 44 24 10 e8 00 00 00 00 0f b6 44 24 67 3c 00 48 D$........D$g<.H + 0x0440 8b 8c 24 80 00 00 00 0f 57 c0 eb 9d 48 8d 05 00 ..$.....W...H... + 0x0450 00 00 00 48 89 04 24 48 89 7c 24 08 48 89 54 24 ...H..$H.|$.H.T$ + 0x0460 10 48 89 74 24 18 48 89 5c 24 20 e8 00 00 00 00 .H.t$.H.\$ ..... + 0x0470 48 8b 44 24 28 48 8b 4c 24 30 48 8b 54 24 38 48 H.D$(H.L$0H.T$8H + 0x0480 8b 9c 24 80 00 00 00 48 89 53 20 83 3d 00 00 00 ..$....H.S .=... + 0x0490 00 00 75 1a 48 89 43 10 0f 57 c0 48 89 ca 48 89 ..u.H.C..W.H..H. + 0x04a0 c7 0f b6 44 24 67 48 89 d9 e9 f5 fe ff ff 48 8b ...D$gH.......H. + 0x04b0 bc 24 88 00 00 00 e8 00 00 00 00 eb db 48 8d 4f .$...........H.O + 0x04c0 18 48 89 fa 48 89 cf e8 00 00 00 00 48 89 d7 e9 .H..H.......H... + 0x04d0 ff fd ff ff 48 8b 84 24 90 00 00 00 e8 00 00 00 ....H..$........ + 0x04e0 00 e9 c8 fd ff ff 48 8b 8c 24 80 00 00 00 e9 fc ......H..$...... + 0x04f0 fe ff ff 48 8d 7a 30 48 8b 84 24 48 01 00 00 e8 ...H.z0H..$H.... + 0x0500 00 00 00 00 e9 f6 fc ff ff e8 00 00 00 00 48 8b ..............H. + 0x0510 04 24 48 8b 8c 24 40 01 00 00 48 85 c9 74 04 48 .$H..$@...H..t.H + 0x0520 8b 49 08 48 89 84 24 a0 00 00 00 48 89 8c 24 98 .I.H..$....H..$. + 0x0530 00 00 00 48 8d 15 00 00 00 00 48 89 14 24 48 89 ...H......H..$H. + 0x0540 44 24 08 48 8d 1d 00 00 00 00 48 89 5c 24 10 48 D$.H......H.\$.H + 0x0550 c7 44 24 18 05 00 00 00 e8 00 00 00 00 48 8b 44 .D$..........H.D + 0x0560 24 20 48 8b 8c 24 98 00 00 00 48 89 08 83 3d 00 $ H..$....H...=. + 0x0570 00 00 00 00 75 4f 48 8b 8c 24 48 01 00 00 48 89 ....uOH..$H...H. + 0x0580 48 08 48 8d 0d 00 00 00 00 48 8b 94 24 80 00 00 H.H......H..$... + 0x0590 00 48 89 4a 28 83 3d 00 00 00 00 00 75 11 48 8b .H.J(.=.....u.H. + 0x05a0 84 24 a0 00 00 00 48 89 42 30 e9 50 fc ff ff 48 .$....H.B0.P...H + 0x05b0 8d 7a 30 48 8b 84 24 a0 00 00 00 e8 00 00 00 00 .z0H..$......... + 0x05c0 e9 3a fc ff ff 48 8d 78 08 48 8b 84 24 48 01 00 .:...H.x.H..$H.. + 0x05d0 00 e8 00 00 00 00 eb aa 48 89 1c 24 48 89 44 24 ........H..$H.D$ + 0x05e0 08 4c 89 44 24 10 e8 00 00 00 00 48 8b 5c 24 18 .L.D$......H.\$. + 0x05f0 48 8b 44 24 20 4c 8b 44 24 28 e9 94 fb ff ff 48 H.D$ L.D$(.....H + 0x0600 89 c6 45 31 c9 31 c0 31 db e9 63 fb ff ff 48 89 ..E1.1.1..c...H. + 0x0610 f8 48 8d 3d 00 00 00 00 48 89 c6 48 8b 84 24 48 .H.=....H..H..$H + 0x0620 01 00 00 e8 00 00 00 00 48 89 f7 0f 57 c0 e9 fe ........H...W... + 0x0630 fa ff ff 48 8b 84 24 48 01 00 00 e9 f1 fa ff ff ...H..$H........ + 0x0640 48 8b b4 24 48 01 00 00 31 db 45 31 c9 31 c0 e9 H..$H...1.E1.1.. + 0x0650 1d fb ff ff 48 89 d3 e9 9b fa ff ff 48 89 f8 48 ....H.......H..H + 0x0660 89 cf 48 89 c2 48 8b 84 24 90 00 00 00 e8 00 00 ..H..H..$....... + 0x0670 00 00 48 89 d7 0f 57 c0 e9 65 fa ff ff 48 8b 84 ..H...W..e...H.. + 0x0680 24 98 00 00 00 e8 00 00 00 00 e9 2f fa ff ff ba $........../.... + 0x0690 0a 00 00 00 e8 00 00 00 00 90 e8 00 00 00 00 e9 ................ + 0x06a0 5c f9 ff ff \... + rel 5+4 t=17 TLS+0 + rel 74+0 t=11 +0 + rel 102+4 t=16 type."".EventStackTrace+0 + rel 119+4 t=8 runtime.makeslice+0 + rel 139+4 t=16 type."".EventError+0 + rel 148+4 t=8 runtime.newobject+0 + rel 168+4 t=16 runtime.writeBarrier+-1 + rel 203+4 t=16 runtime.writeBarrier+-1 + rel 259+4 t=16 reflect.dummy+-1 + rel 273+4 t=16 reflect.dummy+8 + rel 279+4 t=16 runtime.writeBarrier+-1 + rel 301+4 t=16 reflect.dummy+16 + rel 418+4 t=8 reflect.Value.Type+0 + rel 443+0 t=11 +0 + rel 488+4 t=16 runtime.writeBarrier+-1 + rel 514+4 t=16 type.uintptr+0 + rel 541+4 t=8 runtime.makeslice+0 + rel 591+4 t=8 runtime.callers+0 + rel 627+4 t=16 type.runtime.Frames+0 + rel 636+4 t=8 runtime.newobject+0 + rel 664+4 t=16 runtime.writeBarrier+-1 + rel 708+4 t=16 runtime.writeBarrier+-1 + rel 740+4 t=8 runtime.(*Frames).Next+0 + rel 779+4 t=8 runtime.duffcopy+826 + rel 949+4 t=16 runtime.writeBarrier+-1 + rel 1010+4 t=16 go.itab.*"".EventError,"".option+0 + rel 1049+4 t=16 type."".EventStackTrace+0 + rel 1076+4 t=8 runtime.typedmemmove+0 + rel 1103+4 t=16 type."".EventStackTrace+0 + rel 1132+4 t=8 runtime.growslice+0 + rel 1165+4 t=16 runtime.writeBarrier+-1 + rel 1207+4 t=8 runtime.gcWriteBarrier+0 + rel 1224+4 t=8 runtime.gcWriteBarrier+0 + rel 1245+4 t=8 runtime.gcWriteBarrier+0 + rel 1280+4 t=8 runtime.gcWriteBarrier+0 + rel 1290+4 t=8 runtime.makemap_small+0 + rel 1334+4 t=16 type."".Data+0 + rel 1350+4 t=16 go.string."value"+0 + rel 1369+4 t=8 runtime.mapassign_faststr+0 + rel 1391+4 t=16 runtime.writeBarrier+-1 + rel 1413+4 t=16 type."".Data+0 + rel 1431+4 t=16 runtime.writeBarrier+-1 + rel 1468+4 t=8 runtime.gcWriteBarrier+0 + rel 1490+4 t=8 runtime.gcWriteBarrier+0 + rel 1511+4 t=8 reflect.Value.Elem+0 + rel 1556+4 t=16 reflect.dummy+16 + rel 1572+4 t=8 runtime.gcWriteBarrier+0 + rel 1646+4 t=8 runtime.gcWriteBarrier+0 + rel 1670+4 t=8 runtime.gcWriteBarrier+0 + rel 1685+4 t=8 runtime.panicSliceAcap+0 + rel 1691+4 t=8 runtime.morestack_noctxt+0 +"".(*EventHTTP).attach STEXT size=84 args=0x10 locals=0x8 + 0x0000 00000 (main.go:305) TEXT "".(*EventHTTP).attach(SB), ABIInternal, $8-16 + 0x0000 00000 (main.go:305) MOVQ (TLS), CX + 0x0009 00009 (main.go:305) CMPQ SP, 16(CX) + 0x000d 00013 (main.go:305) PCDATA $0, $-2 + 0x000d 00013 (main.go:305) JLS 77 + 0x000f 00015 (main.go:305) PCDATA $0, $-1 + 0x000f 00015 (main.go:305) SUBQ $8, SP + 0x0013 00019 (main.go:305) MOVQ BP, (SP) + 0x0017 00023 (main.go:305) LEAQ (SP), BP + 0x001b 00027 (main.go:305) PCDATA $0, $-2 + 0x001b 00027 (main.go:305) PCDATA $1, $-2 + 0x001b 00027 (main.go:305) FUNCDATA $0, gclocals·96482af6bb866125b0892c5f1bd43b54(SB) + 0x001b 00027 (main.go:305) FUNCDATA $1, gclocals·69c1753bd5f81501d95132d08af04464(SB) + 0x001b 00027 (main.go:305) FUNCDATA $2, gclocals·568470801006e5c0dc3947ea998fe279(SB) + 0x001b 00027 (main.go:306) PCDATA $0, $1 + 0x001b 00027 (main.go:306) PCDATA $1, $1 + 0x001b 00027 (main.go:306) MOVQ "".le+24(SP), CX + 0x0020 00032 (main.go:306) TESTB AL, (CX) + 0x0022 00034 (main.go:306) PCDATA $0, $-2 + 0x0022 00034 (main.go:306) PCDATA $1, $-2 + 0x0022 00034 (main.go:306) CMPL runtime.writeBarrier(SB), $0 + 0x0029 00041 (main.go:306) JNE 61 + 0x002b 00043 (main.go:306) MOVQ "".l+16(SP), AX + 0x0030 00048 (main.go:306) MOVQ AX, 96(CX) + 0x0034 00052 (main.go:307) PCDATA $0, $-1 + 0x0034 00052 (main.go:307) PCDATA $1, $-1 + 0x0034 00052 (main.go:307) MOVQ (SP), BP + 0x0038 00056 (main.go:307) ADDQ $8, SP + 0x003c 00060 (main.go:307) RET + 0x003d 00061 (main.go:306) PCDATA $0, $-2 + 0x003d 00061 (main.go:306) PCDATA $1, $-2 + 0x003d 00061 (main.go:306) LEAQ 96(CX), DI + 0x0041 00065 (main.go:306) MOVQ "".l+16(SP), AX + 0x0046 00070 (main.go:306) CALL runtime.gcWriteBarrier(SB) + 0x004b 00075 (main.go:306) JMP 52 + 0x004d 00077 (main.go:306) NOP + 0x004d 00077 (main.go:305) PCDATA $1, $-1 + 0x004d 00077 (main.go:305) PCDATA $0, $-2 + 0x004d 00077 (main.go:305) CALL runtime.morestack_noctxt(SB) + 0x0052 00082 (main.go:305) PCDATA $0, $-1 + 0x0052 00082 (main.go:305) JMP 0 + 0x0000 64 48 8b 0c 25 00 00 00 00 48 3b 61 10 76 3e 48 dH..%....H;a.v>H + 0x0010 83 ec 08 48 89 2c 24 48 8d 2c 24 48 8b 4c 24 18 ...H.,$H.,$H.L$. + 0x0020 84 01 83 3d 00 00 00 00 00 75 12 48 8b 44 24 10 ...=.....u.H.D$. + 0x0030 48 89 41 60 48 8b 2c 24 48 83 c4 08 c3 48 8d 79 H.A`H.,$H....H.y + 0x0040 60 48 8b 44 24 10 e8 00 00 00 00 eb e7 e8 00 00 `H.D$........... + 0x0050 00 00 eb ac .... + rel 5+4 t=17 TLS+0 + rel 36+4 t=16 runtime.writeBarrier+-1 + rel 71+4 t=8 runtime.gcWriteBarrier+0 + rel 78+4 t=8 runtime.morestack_noctxt+0 +"".HTTP STEXT size=852 args=0x38 locals=0x70 + 0x0000 00000 (main.go:320) TEXT "".HTTP(SB), ABIInternal, $112-56 + 0x0000 00000 (main.go:320) MOVQ (TLS), CX + 0x0009 00009 (main.go:320) CMPQ SP, 16(CX) + 0x000d 00013 (main.go:320) PCDATA $0, $-2 + 0x000d 00013 (main.go:320) JLS 842 + 0x0013 00019 (main.go:320) PCDATA $0, $-1 + 0x0013 00019 (main.go:320) SUBQ $112, SP + 0x0017 00023 (main.go:320) MOVQ BP, 104(SP) + 0x001c 00028 (main.go:320) LEAQ 104(SP), BP + 0x0021 00033 (main.go:320) PCDATA $0, $-2 + 0x0021 00033 (main.go:320) PCDATA $1, $-2 + 0x0021 00033 (main.go:320) FUNCDATA $0, gclocals·9226cc1448ef485ef7ebdf64b59c75ad(SB) + 0x0021 00033 (main.go:320) FUNCDATA $1, gclocals·56c21be735251dfd83aedeefec888d57(SB) + 0x0021 00033 (main.go:320) FUNCDATA $2, gclocals·b7cdce2e93bc7a4c25ad692eb04c9efe(SB) + 0x0021 00033 (main.go:320) PCDATA $0, $1 + 0x0021 00033 (main.go:320) PCDATA $1, $0 + 0x0021 00033 (main.go:320) LEAQ type.int(SB), AX + 0x0028 00040 (main.go:320) PCDATA $0, $0 + 0x0028 00040 (main.go:320) MOVQ AX, (SP) + 0x002c 00044 (main.go:320) CALL runtime.newobject(SB) + 0x0031 00049 (main.go:320) PCDATA $0, $1 + 0x0031 00049 (main.go:320) MOVQ 8(SP), AX + 0x0036 00054 (main.go:320) PCDATA $1, $1 + 0x0036 00054 (main.go:320) MOVQ AX, "".&statusCode+88(SP) + 0x003b 00059 (main.go:320) MOVQ "".statusCode+128(SP), CX + 0x0043 00067 (main.go:320) PCDATA $0, $0 + 0x0043 00067 (main.go:320) MOVQ CX, (AX) + 0x0046 00070 (main.go:322) PCDATA $0, $2 + 0x0046 00070 (main.go:322) MOVQ "".req+120(SP), CX + 0x004b 00075 (main.go:322) PCDATA $0, $3 + 0x004b 00075 (main.go:322) MOVQ 16(CX), DX + 0x004f 00079 () NOP + 0x004f 00079 ($GOROOT/src/net/url/url.go:1069) MOVQ 48(DX), BX + 0x0053 00083 ($GOROOT/src/net/url/url.go:1069) MOVQ 40(DX), DX + 0x0057 00087 ($GOROOT/src/net/url/url.go:1069) PCDATA $0, $0 + 0x0057 00087 ($GOROOT/src/net/url/url.go:1069) MOVQ DX, (SP) + 0x005b 00091 ($GOROOT/src/net/url/url.go:1069) MOVQ BX, 8(SP) + 0x0060 00096 ($GOROOT/src/net/url/url.go:1069) CALL net/url.splitHostPort(SB) + 0x0065 00101 ($GOROOT/src/net/url/url.go:1069) PCDATA $0, $1 + 0x0065 00101 ($GOROOT/src/net/url/url.go:1069) MOVQ 32(SP), AX + 0x006a 00106 ($GOROOT/src/net/url/url.go:1069) MOVQ 40(SP), CX + 0x006f 00111 (main.go:322) TESTQ CX, CX + 0x0072 00114 (main.go:322) JGT 818 + 0x0078 00120 (main.go:322) PCDATA $0, $0 + 0x0078 00120 (main.go:322) XORL AX, AX + 0x007a 00122 (main.go:338) MOVQ AX, "".port+56(SP) + 0x007f 00127 (main.go:327) PCDATA $0, $2 + 0x007f 00127 (main.go:327) MOVQ "".startedAt+144(SP), CX + 0x0087 00135 (main.go:327) PCDATA $0, $0 + 0x0087 00135 (main.go:327) TESTQ CX, CX + 0x008a 00138 (main.go:327) JEQ 805 + 0x0090 00144 (main.go:327) PCDATA $0, $3 + 0x0090 00144 (main.go:327) MOVQ "".endedAt+152(SP), DX + 0x0098 00152 (main.go:327) PCDATA $0, $0 + 0x0098 00152 (main.go:327) TESTQ DX, DX + 0x009b 00155 (main.go:327) JNE 689 + 0x00a1 00161 (main.go:327) PCDATA $0, $4 + 0x00a1 00161 (main.go:327) XORL BX, BX + 0x00a3 00163 (main.go:344) PCDATA $0, $0 + 0x00a3 00163 (main.go:344) PCDATA $1, $2 + 0x00a3 00163 (main.go:344) MOVQ BX, "".duration+80(SP) + 0x00a8 00168 (main.go:337) PCDATA $0, $1 + 0x00a8 00168 (main.go:337) MOVQ "".req+120(SP), AX + 0x00ad 00173 (main.go:337) PCDATA $0, $2 + 0x00ad 00173 (main.go:337) MOVQ 16(AX), CX + 0x00b1 00177 () NOP + 0x00b1 00177 ($GOROOT/src/net/url/url.go:1061) MOVQ 48(CX), DX + 0x00b5 00181 ($GOROOT/src/net/url/url.go:1061) MOVQ 40(CX), CX + 0x00b9 00185 ($GOROOT/src/net/url/url.go:1061) PCDATA $0, $0 + 0x00b9 00185 ($GOROOT/src/net/url/url.go:1061) MOVQ CX, (SP) + 0x00bd 00189 ($GOROOT/src/net/url/url.go:1061) MOVQ DX, 8(SP) + 0x00c2 00194 ($GOROOT/src/net/url/url.go:1061) CALL net/url.splitHostPort(SB) + 0x00c7 00199 ($GOROOT/src/net/url/url.go:1061) MOVQ 24(SP), AX + 0x00cc 00204 ($GOROOT/src/net/url/url.go:1061) MOVQ AX, "".host·3.len+64(SP) + 0x00d1 00209 ($GOROOT/src/net/url/url.go:1061) PCDATA $0, $2 + 0x00d1 00209 ($GOROOT/src/net/url/url.go:1061) MOVQ 16(SP), CX + 0x00d6 00214 ($GOROOT/src/net/url/url.go:1061) PCDATA $0, $0 + 0x00d6 00214 ($GOROOT/src/net/url/url.go:1061) PCDATA $1, $3 + 0x00d6 00214 ($GOROOT/src/net/url/url.go:1061) MOVQ CX, "".host·3.ptr+72(SP) + 0x00db 00219 (main.go:332) PCDATA $0, $3 + 0x00db 00219 (main.go:332) LEAQ type."".EventHTTP(SB), DX + 0x00e2 00226 (main.go:332) PCDATA $0, $0 + 0x00e2 00226 (main.go:332) MOVQ DX, (SP) + 0x00e6 00230 (main.go:332) CALL runtime.newobject(SB) + 0x00eb 00235 (main.go:332) PCDATA $0, $5 + 0x00eb 00235 (main.go:332) MOVQ 8(SP), DI + 0x00f0 00240 (main.go:333) PCDATA $0, $-2 + 0x00f0 00240 (main.go:333) PCDATA $1, $-2 + 0x00f0 00240 (main.go:333) CMPL runtime.writeBarrier(SB), $0 + 0x00f7 00247 (main.go:333) JNE 674 + 0x00fd 00253 (main.go:333) MOVQ "".&statusCode+88(SP), CX + 0x0102 00258 (main.go:333) MOVQ CX, (DI) + 0x0105 00261 (main.go:334) PCDATA $0, $6 + 0x0105 00261 (main.go:334) PCDATA $1, $4 + 0x0105 00261 (main.go:334) MOVQ "".req+120(SP), CX + 0x010a 00266 (main.go:334) MOVQ 8(CX), DX + 0x010e 00270 (main.go:334) PCDATA $0, $7 + 0x010e 00270 (main.go:334) MOVQ (CX), AX + 0x0111 00273 (main.go:334) MOVQ DX, 16(DI) + 0x0115 00277 (main.go:334) PCDATA $0, $-2 + 0x0115 00277 (main.go:334) PCDATA $1, $-2 + 0x0115 00277 (main.go:334) CMPL runtime.writeBarrier(SB), $0 + 0x011c 00284 (main.go:334) JNE 651 + 0x0122 00290 (main.go:334) MOVQ AX, 8(DI) + 0x0126 00294 (main.go:336) PCDATA $0, $8 + 0x0126 00294 (main.go:336) PCDATA $1, $4 + 0x0126 00294 (main.go:336) MOVQ 16(CX), DX + 0x012a 00298 (main.go:336) PCDATA $0, $9 + 0x012a 00298 (main.go:336) MOVQ (DX), AX + 0x012d 00301 (main.go:336) PCDATA $0, $7 + 0x012d 00301 (main.go:336) MOVQ 8(DX), DX + 0x0131 00305 (main.go:336) MOVQ DX, 32(DI) + 0x0135 00309 (main.go:336) PCDATA $0, $-2 + 0x0135 00309 (main.go:336) PCDATA $1, $-2 + 0x0135 00309 (main.go:336) CMPL runtime.writeBarrier(SB), $0 + 0x013c 00316 (main.go:336) JNE 628 + 0x0142 00322 (main.go:336) MOVQ AX, 24(DI) + 0x0146 00326 (main.go:337) PCDATA $0, $6 + 0x0146 00326 (main.go:337) PCDATA $1, $4 + 0x0146 00326 (main.go:337) MOVQ "".host·3.len+64(SP), DX + 0x014b 00331 (main.go:337) MOVQ DX, 48(DI) + 0x014f 00335 (main.go:337) PCDATA $0, $-2 + 0x014f 00335 (main.go:337) PCDATA $1, $-2 + 0x014f 00335 (main.go:337) CMPL runtime.writeBarrier(SB), $0 + 0x0156 00342 (main.go:337) JNE 597 + 0x015c 00348 (main.go:337) MOVQ "".host·3.ptr+72(SP), DX + 0x0161 00353 (main.go:337) MOVQ DX, 40(DI) + 0x0165 00357 (main.go:338) PCDATA $0, $6 + 0x0165 00357 (main.go:338) PCDATA $1, $5 + 0x0165 00357 (main.go:338) MOVQ "".port+56(SP), DX + 0x016a 00362 (main.go:338) MOVQ DX, 56(DI) + 0x016e 00366 (main.go:339) PCDATA $0, $8 + 0x016e 00366 (main.go:339) MOVQ 16(CX), DX + 0x0172 00370 (main.go:339) PCDATA $0, $9 + 0x0172 00370 (main.go:339) MOVQ 56(DX), AX + 0x0176 00374 (main.go:339) PCDATA $0, $7 + 0x0176 00374 (main.go:339) MOVQ 64(DX), DX + 0x017a 00378 (main.go:339) MOVQ DX, 72(DI) + 0x017e 00382 (main.go:339) PCDATA $0, $-2 + 0x017e 00382 (main.go:339) PCDATA $1, $-2 + 0x017e 00382 (main.go:339) CMPL runtime.writeBarrier(SB), $0 + 0x0185 00389 (main.go:339) JNE 574 + 0x018b 00395 (main.go:339) MOVQ AX, 64(DI) + 0x018f 00399 (main.go:340) PCDATA $0, $6 + 0x018f 00399 (main.go:340) PCDATA $1, $5 + 0x018f 00399 (main.go:340) MOVQ 16(CX), CX + 0x0193 00403 (main.go:340) PCDATA $0, $7 + 0x0193 00403 (main.go:340) MOVQ 96(CX), AX + 0x0197 00407 (main.go:340) PCDATA $0, $10 + 0x0197 00407 (main.go:340) MOVQ 104(CX), CX + 0x019b 00411 (main.go:340) MOVQ CX, 88(DI) + 0x019f 00415 (main.go:340) PCDATA $0, $-2 + 0x019f 00415 (main.go:340) PCDATA $1, $-2 + 0x019f 00415 (main.go:340) CMPL runtime.writeBarrier(SB), $0 + 0x01a6 00422 (main.go:340) JNE 506 + 0x01a8 00424 (main.go:340) MOVQ AX, 80(DI) + 0x01ac 00428 (main.go:342) MOVQ "".startedAt+144(SP), AX + 0x01b4 00436 (main.go:342) MOVQ AX, 96(DI) + 0x01b8 00440 (main.go:343) MOVQ "".endedAt+152(SP), AX + 0x01c0 00448 (main.go:343) MOVQ AX, 104(DI) + 0x01c4 00452 (main.go:344) MOVQ "".duration+80(SP), AX + 0x01c9 00457 (main.go:344) MOVQ AX, 112(DI) + 0x01cd 00461 (main.go:345) PCDATA $0, $5 + 0x01cd 00461 (main.go:345) PCDATA $1, $6 + 0x01cd 00461 (main.go:345) MOVQ "".responseContentLength+136(SP), AX + 0x01d5 00469 (main.go:345) MOVQ AX, 120(DI) + 0x01d9 00473 (main.go:332) PCDATA $0, $10 + 0x01d9 00473 (main.go:332) PCDATA $1, $7 + 0x01d9 00473 (main.go:332) LEAQ go.itab.*"".EventHTTP,"".option(SB), AX + 0x01e0 00480 (main.go:332) PCDATA $0, $5 + 0x01e0 00480 (main.go:332) MOVQ AX, "".~r5+160(SP) + 0x01e8 00488 (main.go:332) PCDATA $0, $0 + 0x01e8 00488 (main.go:332) MOVQ DI, "".~r5+168(SP) + 0x01f0 00496 (main.go:332) MOVQ 104(SP), BP + 0x01f5 00501 (main.go:332) ADDQ $112, SP + 0x01f9 00505 (main.go:332) RET + 0x01fa 00506 (main.go:340) PCDATA $0, $-2 + 0x01fa 00506 (main.go:340) PCDATA $1, $-2 + 0x01fa 00506 (main.go:340) LEAQ 80(DI), CX + 0x01fe 00510 (main.go:332) MOVQ DI, DX + 0x0201 00513 (main.go:340) MOVQ CX, DI + 0x0204 00516 (main.go:340) CALL runtime.gcWriteBarrier(SB) + 0x0209 00521 (main.go:342) LEAQ 96(DX), DI + 0x020d 00525 (main.go:342) MOVQ "".startedAt+144(SP), AX + 0x0215 00533 (main.go:342) CALL runtime.gcWriteBarrier(SB) + 0x021a 00538 (main.go:343) LEAQ 104(DX), DI + 0x021e 00542 (main.go:343) MOVQ "".endedAt+152(SP), AX + 0x0226 00550 (main.go:343) CALL runtime.gcWriteBarrier(SB) + 0x022b 00555 (main.go:344) LEAQ 112(DX), DI + 0x022f 00559 (main.go:344) MOVQ "".duration+80(SP), AX + 0x0234 00564 (main.go:344) CALL runtime.gcWriteBarrier(SB) + 0x0239 00569 (main.go:345) MOVQ DX, DI + 0x023c 00572 (main.go:340) JMP 461 + 0x023e 00574 (main.go:339) LEAQ 64(DI), DX + 0x0242 00578 (main.go:332) MOVQ DI, BX + 0x0245 00581 (main.go:339) MOVQ DX, DI + 0x0248 00584 (main.go:339) CALL runtime.gcWriteBarrier(SB) + 0x024d 00589 (main.go:340) MOVQ BX, DI + 0x0250 00592 (main.go:339) JMP 399 + 0x0255 00597 (main.go:337) LEAQ 40(DI), DX + 0x0259 00601 (main.go:332) MOVQ DI, AX + 0x025c 00604 (main.go:337) MOVQ DX, DI + 0x025f 00607 (main.go:332) MOVQ AX, BX + 0x0262 00610 (main.go:337) MOVQ "".host·3.ptr+72(SP), AX + 0x0267 00615 (main.go:337) CALL runtime.gcWriteBarrier(SB) + 0x026c 00620 (main.go:338) MOVQ BX, DI + 0x026f 00623 (main.go:337) JMP 357 + 0x0274 00628 (main.go:336) LEAQ 24(DI), DX + 0x0278 00632 (main.go:332) MOVQ DI, BX + 0x027b 00635 (main.go:336) MOVQ DX, DI + 0x027e 00638 (main.go:336) CALL runtime.gcWriteBarrier(SB) + 0x0283 00643 (main.go:337) MOVQ BX, DI + 0x0286 00646 (main.go:336) JMP 326 + 0x028b 00651 (main.go:334) LEAQ 8(DI), DX + 0x028f 00655 (main.go:332) MOVQ DI, BX + 0x0292 00658 (main.go:334) MOVQ DX, DI + 0x0295 00661 (main.go:334) CALL runtime.gcWriteBarrier(SB) + 0x029a 00666 (main.go:336) MOVQ BX, DI + 0x029d 00669 (main.go:334) JMP 294 + 0x02a2 00674 (main.go:333) MOVQ "".&statusCode+88(SP), AX + 0x02a7 00679 (main.go:333) CALL runtime.gcWriteBarrier(SB) + 0x02ac 00684 (main.go:333) JMP 261 + 0x02b1 00689 (main.go:328) PCDATA $0, $1 + 0x02b1 00689 (main.go:328) PCDATA $1, $1 + 0x02b1 00689 (main.go:328) LEAQ type.time.Duration(SB), AX + 0x02b8 00696 (main.go:328) PCDATA $0, $0 + 0x02b8 00696 (main.go:328) MOVQ AX, (SP) + 0x02bc 00700 (main.go:328) CALL runtime.newobject(SB) + 0x02c1 00705 (main.go:328) PCDATA $0, $1 + 0x02c1 00705 (main.go:328) MOVQ 8(SP), AX + 0x02c6 00710 (main.go:328) PCDATA $0, $0 + 0x02c6 00710 (main.go:328) PCDATA $1, $8 + 0x02c6 00710 (main.go:328) MOVQ AX, "".&d+96(SP) + 0x02cb 00715 (main.go:328) PCDATA $0, $2 + 0x02cb 00715 (main.go:328) MOVQ "".endedAt+152(SP), CX + 0x02d3 00723 (main.go:328) MOVQ (CX), DX + 0x02d6 00726 (main.go:328) PCDATA $0, $11 + 0x02d6 00726 (main.go:328) MOVQ 16(CX), BX + 0x02da 00730 (main.go:328) PCDATA $0, $4 + 0x02da 00730 (main.go:328) MOVQ 8(CX), SI + 0x02de 00734 (main.go:328) PCDATA $0, $12 + 0x02de 00734 (main.go:328) MOVQ "".startedAt+144(SP), DI + 0x02e6 00742 (main.go:328) PCDATA $0, $13 + 0x02e6 00742 (main.go:328) MOVQ 16(DI), R8 + 0x02ea 00746 (main.go:328) MOVQ 8(DI), R9 + 0x02ee 00750 (main.go:328) PCDATA $0, $14 + 0x02ee 00750 (main.go:328) MOVQ (DI), R10 + 0x02f1 00753 (main.go:328) MOVQ DX, (SP) + 0x02f5 00757 (main.go:328) MOVQ SI, 8(SP) + 0x02fa 00762 (main.go:328) PCDATA $0, $15 + 0x02fa 00762 (main.go:328) MOVQ BX, 16(SP) + 0x02ff 00767 (main.go:328) MOVQ R10, 24(SP) + 0x0304 00772 (main.go:328) MOVQ R9, 32(SP) + 0x0309 00777 (main.go:328) PCDATA $0, $0 + 0x0309 00777 (main.go:328) MOVQ R8, 40(SP) + 0x030e 00782 (main.go:328) CALL time.Time.Sub(SB) + 0x0313 00787 (main.go:328) MOVQ 48(SP), AX + 0x0318 00792 (main.go:328) PCDATA $0, $4 + 0x0318 00792 (main.go:328) PCDATA $1, $1 + 0x0318 00792 (main.go:328) MOVQ "".&d+96(SP), BX + 0x031d 00797 (main.go:328) MOVQ AX, (BX) + 0x0320 00800 (main.go:329) JMP 163 + 0x0325 00805 (main.go:343) PCDATA $0, $0 + 0x0325 00805 (main.go:343) MOVQ "".endedAt+152(SP), DX + 0x032d 00813 (main.go:327) JMP 161 + 0x0332 00818 (main.go:323) MOVQ AX, (SP) + 0x0336 00822 (main.go:323) MOVQ CX, 8(SP) + 0x033b 00827 (main.go:323) CALL strconv.Atoi(SB) + 0x0340 00832 (main.go:323) MOVQ 16(SP), AX + 0x0345 00837 (main.go:323) JMP 122 + 0x034a 00842 (main.go:323) NOP + 0x034a 00842 (main.go:320) PCDATA $1, $-1 + 0x034a 00842 (main.go:320) PCDATA $0, $-2 + 0x034a 00842 (main.go:320) CALL runtime.morestack_noctxt(SB) + 0x034f 00847 (main.go:320) PCDATA $0, $-1 + 0x034f 00847 (main.go:320) JMP 0 + 0x0000 64 48 8b 0c 25 00 00 00 00 48 3b 61 10 0f 86 37 dH..%....H;a...7 + 0x0010 03 00 00 48 83 ec 70 48 89 6c 24 68 48 8d 6c 24 ...H..pH.l$hH.l$ + 0x0020 68 48 8d 05 00 00 00 00 48 89 04 24 e8 00 00 00 hH......H..$.... + 0x0030 00 48 8b 44 24 08 48 89 44 24 58 48 8b 8c 24 80 .H.D$.H.D$XH..$. + 0x0040 00 00 00 48 89 08 48 8b 4c 24 78 48 8b 51 10 48 ...H..H.L$xH.Q.H + 0x0050 8b 5a 30 48 8b 52 28 48 89 14 24 48 89 5c 24 08 .Z0H.R(H..$H.\$. + 0x0060 e8 00 00 00 00 48 8b 44 24 20 48 8b 4c 24 28 48 .....H.D$ H.L$(H + 0x0070 85 c9 0f 8f ba 02 00 00 31 c0 48 89 44 24 38 48 ........1.H.D$8H + 0x0080 8b 8c 24 90 00 00 00 48 85 c9 0f 84 95 02 00 00 ..$....H........ + 0x0090 48 8b 94 24 98 00 00 00 48 85 d2 0f 85 10 02 00 H..$....H....... + 0x00a0 00 31 db 48 89 5c 24 50 48 8b 44 24 78 48 8b 48 .1.H.\$PH.D$xH.H + 0x00b0 10 48 8b 51 30 48 8b 49 28 48 89 0c 24 48 89 54 .H.Q0H.I(H..$H.T + 0x00c0 24 08 e8 00 00 00 00 48 8b 44 24 18 48 89 44 24 $......H.D$.H.D$ + 0x00d0 40 48 8b 4c 24 10 48 89 4c 24 48 48 8d 15 00 00 @H.L$.H.L$HH.... + 0x00e0 00 00 48 89 14 24 e8 00 00 00 00 48 8b 7c 24 08 ..H..$.....H.|$. + 0x00f0 83 3d 00 00 00 00 00 0f 85 a5 01 00 00 48 8b 4c .=...........H.L + 0x0100 24 58 48 89 0f 48 8b 4c 24 78 48 8b 51 08 48 8b $XH..H.L$xH.Q.H. + 0x0110 01 48 89 57 10 83 3d 00 00 00 00 00 0f 85 69 01 .H.W..=.......i. + 0x0120 00 00 48 89 47 08 48 8b 51 10 48 8b 02 48 8b 52 ..H.G.H.Q.H..H.R + 0x0130 08 48 89 57 20 83 3d 00 00 00 00 00 0f 85 32 01 .H.W .=.......2. + 0x0140 00 00 48 89 47 18 48 8b 54 24 40 48 89 57 30 83 ..H.G.H.T$@H.W0. + 0x0150 3d 00 00 00 00 00 0f 85 f9 00 00 00 48 8b 54 24 =...........H.T$ + 0x0160 48 48 89 57 28 48 8b 54 24 38 48 89 57 38 48 8b HH.W(H.T$8H.W8H. + 0x0170 51 10 48 8b 42 38 48 8b 52 40 48 89 57 48 83 3d Q.H.B8H.R@H.WH.= + 0x0180 00 00 00 00 00 0f 85 b3 00 00 00 48 89 47 40 48 ...........H.G@H + 0x0190 8b 49 10 48 8b 41 60 48 8b 49 68 48 89 4f 58 83 .I.H.A`H.IhH.OX. + 0x01a0 3d 00 00 00 00 00 75 52 48 89 47 50 48 8b 84 24 =.....uRH.GPH..$ + 0x01b0 90 00 00 00 48 89 47 60 48 8b 84 24 98 00 00 00 ....H.G`H..$.... + 0x01c0 48 89 47 68 48 8b 44 24 50 48 89 47 70 48 8b 84 H.GhH.D$PH.GpH.. + 0x01d0 24 88 00 00 00 48 89 47 78 48 8d 05 00 00 00 00 $....H.GxH...... + 0x01e0 48 89 84 24 a0 00 00 00 48 89 bc 24 a8 00 00 00 H..$....H..$.... + 0x01f0 48 8b 6c 24 68 48 83 c4 70 c3 48 8d 4f 50 48 89 H.l$hH..p.H.OPH. + 0x0200 fa 48 89 cf e8 00 00 00 00 48 8d 7a 60 48 8b 84 .H.......H.z`H.. + 0x0210 24 90 00 00 00 e8 00 00 00 00 48 8d 7a 68 48 8b $.........H.zhH. + 0x0220 84 24 98 00 00 00 e8 00 00 00 00 48 8d 7a 70 48 .$.........H.zpH + 0x0230 8b 44 24 50 e8 00 00 00 00 48 89 d7 eb 8f 48 8d .D$P.....H....H. + 0x0240 57 40 48 89 fb 48 89 d7 e8 00 00 00 00 48 89 df W@H..H.......H.. + 0x0250 e9 3a ff ff ff 48 8d 57 28 48 89 f8 48 89 d7 48 .:...H.W(H..H..H + 0x0260 89 c3 48 8b 44 24 48 e8 00 00 00 00 48 89 df e9 ..H.D$H.....H... + 0x0270 f1 fe ff ff 48 8d 57 18 48 89 fb 48 89 d7 e8 00 ....H.W.H..H.... + 0x0280 00 00 00 48 89 df e9 bb fe ff ff 48 8d 57 08 48 ...H.......H.W.H + 0x0290 89 fb 48 89 d7 e8 00 00 00 00 48 89 df e9 84 fe ..H.......H..... + 0x02a0 ff ff 48 8b 44 24 58 e8 00 00 00 00 e9 54 fe ff ..H.D$X......T.. + 0x02b0 ff 48 8d 05 00 00 00 00 48 89 04 24 e8 00 00 00 .H......H..$.... + 0x02c0 00 48 8b 44 24 08 48 89 44 24 60 48 8b 8c 24 98 .H.D$.H.D$`H..$. + 0x02d0 00 00 00 48 8b 11 48 8b 59 10 48 8b 71 08 48 8b ...H..H.Y.H.q.H. + 0x02e0 bc 24 90 00 00 00 4c 8b 47 10 4c 8b 4f 08 4c 8b .$....L.G.L.O.L. + 0x02f0 17 48 89 14 24 48 89 74 24 08 48 89 5c 24 10 4c .H..$H.t$.H.\$.L + 0x0300 89 54 24 18 4c 89 4c 24 20 4c 89 44 24 28 e8 00 .T$.L.L$ L.D$(.. + 0x0310 00 00 00 48 8b 44 24 30 48 8b 5c 24 60 48 89 03 ...H.D$0H.\$`H.. + 0x0320 e9 7e fd ff ff 48 8b 94 24 98 00 00 00 e9 6f fd .~...H..$.....o. + 0x0330 ff ff 48 89 04 24 48 89 4c 24 08 e8 00 00 00 00 ..H..$H.L$...... + 0x0340 48 8b 44 24 10 e9 30 fd ff ff e8 00 00 00 00 e9 H.D$..0......... + 0x0350 ac fc ff ff .... + rel 5+4 t=17 TLS+0 + rel 36+4 t=16 type.int+0 + rel 45+4 t=8 runtime.newobject+0 + rel 97+4 t=8 net/url.splitHostPort+0 + rel 195+4 t=8 net/url.splitHostPort+0 + rel 222+4 t=16 type."".EventHTTP+0 + rel 231+4 t=8 runtime.newobject+0 + rel 242+4 t=16 runtime.writeBarrier+-1 + rel 279+4 t=16 runtime.writeBarrier+-1 + rel 311+4 t=16 runtime.writeBarrier+-1 + rel 337+4 t=16 runtime.writeBarrier+-1 + rel 384+4 t=16 runtime.writeBarrier+-1 + rel 417+4 t=16 runtime.writeBarrier+-1 + rel 476+4 t=16 go.itab.*"".EventHTTP,"".option+0 + rel 517+4 t=8 runtime.gcWriteBarrier+0 + rel 534+4 t=8 runtime.gcWriteBarrier+0 + rel 551+4 t=8 runtime.gcWriteBarrier+0 + rel 565+4 t=8 runtime.gcWriteBarrier+0 + rel 585+4 t=8 runtime.gcWriteBarrier+0 + rel 616+4 t=8 runtime.gcWriteBarrier+0 + rel 639+4 t=8 runtime.gcWriteBarrier+0 + rel 662+4 t=8 runtime.gcWriteBarrier+0 + rel 680+4 t=8 runtime.gcWriteBarrier+0 + rel 692+4 t=16 type.time.Duration+0 + rel 701+4 t=8 runtime.newobject+0 + rel 783+4 t=8 time.Time.Sub+0 + rel 828+4 t=8 strconv.Atoi+0 + rel 843+4 t=8 runtime.morestack_noctxt+0 +"".Event STEXT size=133 args=0x38 locals=0x40 + 0x0000 00000 (main.go:403) TEXT "".Event(SB), ABIInternal, $64-56 + 0x0000 00000 (main.go:403) MOVQ (TLS), CX + 0x0009 00009 (main.go:403) CMPQ SP, 16(CX) + 0x000d 00013 (main.go:403) PCDATA $0, $-2 + 0x000d 00013 (main.go:403) JLS 123 + 0x000f 00015 (main.go:403) PCDATA $0, $-1 + 0x000f 00015 (main.go:403) SUBQ $64, SP + 0x0013 00019 (main.go:403) MOVQ BP, 56(SP) + 0x0018 00024 (main.go:403) LEAQ 56(SP), BP + 0x001d 00029 (main.go:403) PCDATA $0, $-2 + 0x001d 00029 (main.go:403) PCDATA $1, $-2 + 0x001d 00029 (main.go:403) FUNCDATA $0, gclocals·a8fa8e0058c6007696f59d9bbb670b62(SB) + 0x001d 00029 (main.go:403) FUNCDATA $1, gclocals·f6bd6b3389b872033d462029172c8612(SB) + 0x001d 00029 (main.go:403) FUNCDATA $2, gclocals·ad7b914f16aa3dbacefedffd39a798f4(SB) + 0x001d 00029 (main.go:404) PCDATA $0, $1 + 0x001d 00029 (main.go:404) PCDATA $1, $0 + 0x001d 00029 (main.go:404) MOVQ "".eventFuncInst(SB), AX + 0x0024 00036 (main.go:404) PCDATA $0, $2 + 0x0024 00036 (main.go:404) MOVQ (AX), DX + 0x0027 00039 (main.go:404) MOVQ "".ctx+72(SP), AX + 0x002c 00044 (main.go:404) MOVQ AX, (SP) + 0x0030 00048 (main.go:404) PCDATA $0, $3 + 0x0030 00048 (main.go:404) PCDATA $1, $1 + 0x0030 00048 (main.go:404) MOVQ "".ctx+80(SP), AX + 0x0035 00053 (main.go:404) PCDATA $0, $2 + 0x0035 00053 (main.go:404) MOVQ AX, 8(SP) + 0x003a 00058 (main.go:404) PCDATA $0, $3 + 0x003a 00058 (main.go:404) MOVQ "".event+88(SP), AX + 0x003f 00063 (main.go:404) PCDATA $0, $2 + 0x003f 00063 (main.go:404) MOVQ AX, 16(SP) + 0x0044 00068 (main.go:404) PCDATA $1, $2 + 0x0044 00068 (main.go:404) MOVQ "".event+96(SP), AX + 0x0049 00073 (main.go:404) MOVQ AX, 24(SP) + 0x004e 00078 (main.go:404) PCDATA $0, $3 + 0x004e 00078 (main.go:404) MOVQ "".opts+104(SP), AX + 0x0053 00083 (main.go:404) PCDATA $0, $2 + 0x0053 00083 (main.go:404) MOVQ AX, 32(SP) + 0x0058 00088 (main.go:404) MOVQ "".opts+112(SP), AX + 0x005d 00093 (main.go:404) MOVQ AX, 40(SP) + 0x0062 00098 (main.go:404) PCDATA $1, $3 + 0x0062 00098 (main.go:404) MOVQ "".opts+120(SP), AX + 0x0067 00103 (main.go:404) MOVQ AX, 48(SP) + 0x006c 00108 (main.go:404) MOVQ (DX), AX + 0x006f 00111 (main.go:404) PCDATA $0, $0 + 0x006f 00111 (main.go:404) CALL AX + 0x0071 00113 (main.go:405) MOVQ 56(SP), BP + 0x0076 00118 (main.go:405) ADDQ $64, SP + 0x007a 00122 (main.go:405) RET + 0x007b 00123 (main.go:405) NOP + 0x007b 00123 (main.go:403) PCDATA $1, $-1 + 0x007b 00123 (main.go:403) PCDATA $0, $-2 + 0x007b 00123 (main.go:403) CALL runtime.morestack_noctxt(SB) + 0x0080 00128 (main.go:403) PCDATA $0, $-1 + 0x0080 00128 (main.go:403) JMP 0 + 0x0000 64 48 8b 0c 25 00 00 00 00 48 3b 61 10 76 6c 48 dH..%....H;a.vlH + 0x0010 83 ec 40 48 89 6c 24 38 48 8d 6c 24 38 48 8b 05 ..@H.l$8H.l$8H.. + 0x0020 00 00 00 00 48 8b 10 48 8b 44 24 48 48 89 04 24 ....H..H.D$HH..$ + 0x0030 48 8b 44 24 50 48 89 44 24 08 48 8b 44 24 58 48 H.D$PH.D$.H.D$XH + 0x0040 89 44 24 10 48 8b 44 24 60 48 89 44 24 18 48 8b .D$.H.D$`H.D$.H. + 0x0050 44 24 68 48 89 44 24 20 48 8b 44 24 70 48 89 44 D$hH.D$ H.D$pH.D + 0x0060 24 28 48 8b 44 24 78 48 89 44 24 30 48 8b 02 ff $(H.D$xH.D$0H... + 0x0070 d0 48 8b 6c 24 38 48 83 c4 40 c3 e8 00 00 00 00 .H.l$8H..@...... + 0x0080 e9 7b ff ff ff .{... + rel 5+4 t=17 TLS+0 + rel 32+4 t=16 "".eventFuncInst+0 + rel 111+0 t=11 +0 + rel 124+4 t=8 runtime.morestack_noctxt+0 +"".initEvent STEXT size=165 args=0x8 locals=0x30 + 0x0000 00000 (main.go:407) TEXT "".initEvent(SB), ABIInternal, $48-8 + 0x0000 00000 (main.go:407) MOVQ (TLS), CX + 0x0009 00009 (main.go:407) CMPQ SP, 16(CX) + 0x000d 00013 (main.go:407) PCDATA $0, $-2 + 0x000d 00013 (main.go:407) JLS 155 + 0x0013 00019 (main.go:407) PCDATA $0, $-1 + 0x0013 00019 (main.go:407) SUBQ $48, SP + 0x0017 00023 (main.go:407) MOVQ BP, 40(SP) + 0x001c 00028 (main.go:407) LEAQ 40(SP), BP + 0x0021 00033 (main.go:407) PCDATA $0, $-2 + 0x0021 00033 (main.go:407) PCDATA $1, $-2 + 0x0021 00033 (main.go:407) FUNCDATA $0, gclocals·9fb7f0986f647f17cb53dda1484e0f7a(SB) + 0x0021 00033 (main.go:407) FUNCDATA $1, gclocals·69c1753bd5f81501d95132d08af04464(SB) + 0x0021 00033 (main.go:407) FUNCDATA $2, gclocals·bfec7e55b3f043d1941c093912808913(SB) + 0x0021 00033 ($GOROOT/src/flag/flag.go:420) PCDATA $0, $1 + 0x0021 00033 ($GOROOT/src/flag/flag.go:420) PCDATA $1, $0 + 0x0021 00033 ($GOROOT/src/flag/flag.go:420) MOVQ flag.CommandLine(SB), AX + 0x0028 00040 () NOP + 0x0028 00040 ($GOROOT/src/flag/flag.go:420) MOVQ 40(AX), AX + 0x002c 00044 ($GOROOT/src/flag/flag.go:420) PCDATA $0, $2 + 0x002c 00044 ($GOROOT/src/flag/flag.go:420) LEAQ type.map[string]*flag.Flag(SB), CX + 0x0033 00051 ($GOROOT/src/flag/flag.go:420) PCDATA $0, $1 + 0x0033 00051 ($GOROOT/src/flag/flag.go:420) MOVQ CX, (SP) + 0x0037 00055 ($GOROOT/src/flag/flag.go:420) PCDATA $0, $0 + 0x0037 00055 ($GOROOT/src/flag/flag.go:420) MOVQ AX, 8(SP) + 0x003c 00060 ($GOROOT/src/flag/flag.go:420) PCDATA $0, $1 + 0x003c 00060 ($GOROOT/src/flag/flag.go:420) LEAQ go.string."test.v"(SB), AX + 0x0043 00067 ($GOROOT/src/flag/flag.go:420) PCDATA $0, $0 + 0x0043 00067 ($GOROOT/src/flag/flag.go:420) MOVQ AX, 16(SP) + 0x0048 00072 ($GOROOT/src/flag/flag.go:420) MOVQ $6, 24(SP) + 0x0051 00081 ($GOROOT/src/flag/flag.go:420) CALL runtime.mapaccess1_faststr(SB) + 0x0056 00086 ($GOROOT/src/flag/flag.go:420) PCDATA $0, $1 + 0x0056 00086 ($GOROOT/src/flag/flag.go:420) MOVQ 32(SP), AX + 0x005b 00091 ($GOROOT/src/flag/flag.go:420) PCDATA $0, $0 + 0x005b 00091 ($GOROOT/src/flag/flag.go:420) CMPQ (AX), $0 + 0x005f 00095 (main.go:417) JEQ 126 + 0x0061 00097 (main.go:418) MOVB $1, "".isTestMode(SB) + 0x0068 00104 (main.go:419) PCDATA $0, $1 + 0x0068 00104 (main.go:419) MOVQ "".eventWithOptionsCheckFunc(SB), AX + 0x006f 00111 (main.go:419) PCDATA $0, $0 + 0x006f 00111 (main.go:419) PCDATA $1, $1 + 0x006f 00111 (main.go:419) MOVQ AX, "".~r0+56(SP) + 0x0074 00116 (main.go:419) MOVQ 40(SP), BP + 0x0079 00121 (main.go:419) ADDQ $48, SP + 0x007d 00125 (main.go:419) RET + 0x007e 00126 (main.go:422) PCDATA $1, $0 + 0x007e 00126 (main.go:422) MOVB $0, "".isTestMode(SB) + 0x0085 00133 (main.go:423) PCDATA $0, $1 + 0x0085 00133 (main.go:423) MOVQ "".eventWithoutOptionsCheckFunc(SB), AX + 0x008c 00140 (main.go:423) PCDATA $0, $0 + 0x008c 00140 (main.go:423) PCDATA $1, $1 + 0x008c 00140 (main.go:423) MOVQ AX, "".~r0+56(SP) + 0x0091 00145 (main.go:423) MOVQ 40(SP), BP + 0x0096 00150 (main.go:423) ADDQ $48, SP + 0x009a 00154 (main.go:423) RET + 0x009b 00155 (main.go:423) NOP + 0x009b 00155 (main.go:407) PCDATA $1, $-1 + 0x009b 00155 (main.go:407) PCDATA $0, $-2 + 0x009b 00155 (main.go:407) CALL runtime.morestack_noctxt(SB) + 0x00a0 00160 (main.go:407) PCDATA $0, $-1 + 0x00a0 00160 (main.go:407) JMP 0 + 0x0000 64 48 8b 0c 25 00 00 00 00 48 3b 61 10 0f 86 88 dH..%....H;a.... + 0x0010 00 00 00 48 83 ec 30 48 89 6c 24 28 48 8d 6c 24 ...H..0H.l$(H.l$ + 0x0020 28 48 8b 05 00 00 00 00 48 8b 40 28 48 8d 0d 00 (H......H.@(H... + 0x0030 00 00 00 48 89 0c 24 48 89 44 24 08 48 8d 05 00 ...H..$H.D$.H... + 0x0040 00 00 00 48 89 44 24 10 48 c7 44 24 18 06 00 00 ...H.D$.H.D$.... + 0x0050 00 e8 00 00 00 00 48 8b 44 24 20 48 83 38 00 74 ......H.D$ H.8.t + 0x0060 1d c6 05 00 00 00 00 01 48 8b 05 00 00 00 00 48 ........H......H + 0x0070 89 44 24 38 48 8b 6c 24 28 48 83 c4 30 c3 c6 05 .D$8H.l$(H..0... + 0x0080 00 00 00 00 00 48 8b 05 00 00 00 00 48 89 44 24 .....H......H.D$ + 0x0090 38 48 8b 6c 24 28 48 83 c4 30 c3 e8 00 00 00 00 8H.l$(H..0...... + 0x00a0 e9 5b ff ff ff .[... + rel 5+4 t=17 TLS+0 + rel 36+4 t=16 flag.CommandLine+0 + rel 47+4 t=16 type.map[string]*flag.Flag+0 + rel 63+4 t=16 go.string."test.v"+0 + rel 82+4 t=8 runtime.mapaccess1_faststr+0 + rel 99+4 t=16 "".isTestMode+-1 + rel 107+4 t=16 "".eventWithOptionsCheckFunc+0 + rel 128+4 t=16 "".isTestMode+-1 + rel 136+4 t=16 "".eventWithoutOptionsCheckFunc+0 + rel 156+4 t=8 runtime.morestack_noctxt+0 +"".initStyler STEXT size=343 args=0x8 locals=0x38 + 0x0000 00000 (main.go:428) TEXT "".initStyler(SB), ABIInternal, $56-8 + 0x0000 00000 (main.go:428) MOVQ (TLS), CX + 0x0009 00009 (main.go:428) CMPQ SP, 16(CX) + 0x000d 00013 (main.go:428) PCDATA $0, $-2 + 0x000d 00013 (main.go:428) JLS 333 + 0x0013 00019 (main.go:428) PCDATA $0, $-1 + 0x0013 00019 (main.go:428) SUBQ $56, SP + 0x0017 00023 (main.go:428) MOVQ BP, 48(SP) + 0x001c 00028 (main.go:428) LEAQ 48(SP), BP + 0x0021 00033 (main.go:428) PCDATA $0, $-2 + 0x0021 00033 (main.go:428) PCDATA $1, $-2 + 0x0021 00033 (main.go:428) FUNCDATA $0, gclocals·663f8c6bfa83aa777198789ce63d9ab4(SB) + 0x0021 00033 (main.go:428) FUNCDATA $1, gclocals·9783710103695d7171ee820ce562d18d(SB) + 0x0021 00033 (main.go:428) FUNCDATA $2, gclocals·1cf923758aae2e428391d1783fe59973(SB) + 0x0021 00033 (main.go:431) PCDATA $0, $1 + 0x0021 00033 (main.go:431) PCDATA $1, $0 + 0x0021 00033 (main.go:431) LEAQ go.string."HUMAN_LOG"(SB), AX + 0x0028 00040 (main.go:431) PCDATA $0, $0 + 0x0028 00040 (main.go:431) MOVQ AX, (SP) + 0x002c 00044 (main.go:431) MOVQ $9, 8(SP) + 0x0035 00053 (main.go:431) CALL os.Getenv(SB) + 0x003a 00058 () NOP + 0x003a 00058 (main.go:431) MOVQ 24(SP), AX + 0x003f 00063 (main.go:431) PCDATA $0, $2 + 0x003f 00063 (main.go:431) MOVQ 16(SP), CX + 0x0044 00068 ($GOROOT/src/strconv/atob.go:11) CMPQ AX, $1 + 0x0048 00072 ($GOROOT/src/strconv/atob.go:11) JEQ 219 + 0x004e 00078 ($GOROOT/src/strconv/atob.go:11) CMPQ AX, $4 + 0x0052 00082 ($GOROOT/src/strconv/atob.go:11) JNE 165 + 0x0054 00084 ($GOROOT/src/strconv/atob.go:12) CMPL (CX), $1163219540 + 0x005a 00090 ($GOROOT/src/strconv/atob.go:12) JNE 145 + 0x005c 00092 (main.go:432) PCDATA $0, $0 + 0x005c 00092 (main.go:432) MOVL $1, AX + 0x0061 00097 (main.go:431) TESTB AL, AL + 0x0063 00099 (main.go:431) JEQ 123 + 0x0065 00101 (main.go:432) PCDATA $0, $1 + 0x0065 00101 (main.go:432) MOVQ "".styleForHumanFunc(SB), AX + 0x006c 00108 (main.go:432) PCDATA $0, $0 + 0x006c 00108 (main.go:432) PCDATA $1, $1 + 0x006c 00108 (main.go:432) MOVQ AX, "".~r0+64(SP) + 0x0071 00113 (main.go:432) MOVQ 48(SP), BP + 0x0076 00118 (main.go:432) ADDQ $56, SP + 0x007a 00122 (main.go:432) RET + 0x007b 00123 (main.go:435) PCDATA $0, $1 + 0x007b 00123 (main.go:435) PCDATA $1, $0 + 0x007b 00123 (main.go:435) MOVQ "".styleForMachineFunc(SB), AX + 0x0082 00130 (main.go:435) PCDATA $0, $0 + 0x0082 00130 (main.go:435) PCDATA $1, $1 + 0x0082 00130 (main.go:435) MOVQ AX, "".~r0+64(SP) + 0x0087 00135 (main.go:435) MOVQ 48(SP), BP + 0x008c 00140 (main.go:435) ADDQ $56, SP + 0x0090 00144 (main.go:435) RET + 0x0091 00145 ($GOROOT/src/strconv/atob.go:12) PCDATA $0, $2 + 0x0091 00145 ($GOROOT/src/strconv/atob.go:12) PCDATA $1, $0 + 0x0091 00145 ($GOROOT/src/strconv/atob.go:12) CMPL (CX), $1702195796 + 0x0097 00151 ($GOROOT/src/strconv/atob.go:12) JEQ 92 + 0x0099 00153 ($GOROOT/src/strconv/atob.go:12) PCDATA $0, $0 + 0x0099 00153 ($GOROOT/src/strconv/atob.go:12) CMPL (CX), $1702195828 + 0x009f 00159 ($GOROOT/src/strconv/atob.go:12) JEQ 92 + 0x00a1 00161 ($GOROOT/src/strconv/atob.go:17) XORL AX, AX + 0x00a3 00163 (main.go:431) JMP 97 + 0x00a5 00165 ($GOROOT/src/strconv/atob.go:11) PCDATA $0, $2 + 0x00a5 00165 ($GOROOT/src/strconv/atob.go:11) CMPQ AX, $5 + 0x00a9 00169 ($GOROOT/src/strconv/atob.go:11) JNE 161 + 0x00ab 00171 ($GOROOT/src/strconv/atob.go:14) CMPL (CX), $1397506374 + 0x00b1 00177 ($GOROOT/src/strconv/atob.go:14) JNE 189 + 0x00b3 00179 ($GOROOT/src/strconv/atob.go:14) CMPB 4(CX), $69 + 0x00b7 00183 ($GOROOT/src/strconv/atob.go:14) JNE 189 + 0x00b9 00185 (main.go:432) PCDATA $0, $0 + 0x00b9 00185 (main.go:432) XORL AX, AX + 0x00bb 00187 (main.go:431) JMP 97 + 0x00bd 00189 ($GOROOT/src/strconv/atob.go:14) PCDATA $0, $2 + 0x00bd 00189 ($GOROOT/src/strconv/atob.go:14) CMPL (CX), $1936482630 + 0x00c3 00195 ($GOROOT/src/strconv/atob.go:14) JNE 203 + 0x00c5 00197 ($GOROOT/src/strconv/atob.go:14) CMPB 4(CX), $101 + 0x00c9 00201 ($GOROOT/src/strconv/atob.go:14) JEQ 185 + 0x00cb 00203 ($GOROOT/src/strconv/atob.go:14) CMPL (CX), $1936482662 + 0x00d1 00209 ($GOROOT/src/strconv/atob.go:14) JNE 161 + 0x00d3 00211 ($GOROOT/src/strconv/atob.go:14) PCDATA $0, $0 + 0x00d3 00211 ($GOROOT/src/strconv/atob.go:14) CMPB 4(CX), $101 + 0x00d7 00215 ($GOROOT/src/strconv/atob.go:14) JEQ 185 + 0x00d9 00217 ($GOROOT/src/strconv/atob.go:14) JMP 161 + 0x00db 00219 (main.go:431) PCDATA $0, $2 + 0x00db 00219 (main.go:431) PCDATA $1, $2 + 0x00db 00219 (main.go:431) MOVQ CX, "".str.ptr+40(SP) + 0x00e0 00224 ($GOROOT/src/strconv/atob.go:11) PCDATA $0, $0 + 0x00e0 00224 ($GOROOT/src/strconv/atob.go:11) MOVQ CX, (SP) + 0x00e4 00228 ($GOROOT/src/strconv/atob.go:11) MOVQ AX, 8(SP) + 0x00e9 00233 ($GOROOT/src/strconv/atob.go:11) PCDATA $0, $1 + 0x00e9 00233 ($GOROOT/src/strconv/atob.go:11) LEAQ go.string."F"(SB), AX + 0x00f0 00240 ($GOROOT/src/strconv/atob.go:11) PCDATA $0, $0 + 0x00f0 00240 ($GOROOT/src/strconv/atob.go:11) MOVQ AX, 16(SP) + 0x00f5 00245 ($GOROOT/src/strconv/atob.go:11) MOVQ $1, 24(SP) + 0x00fe 00254 ($GOROOT/src/strconv/atob.go:11) CALL runtime.cmpstring(SB) + 0x0103 00259 ($GOROOT/src/strconv/atob.go:11) CMPQ 32(SP), $0 + 0x0109 00265 ($GOROOT/src/strconv/atob.go:11) JGT 296 + 0x010b 00267 ($GOROOT/src/strconv/atob.go:14) PCDATA $0, $1 + 0x010b 00267 ($GOROOT/src/strconv/atob.go:14) PCDATA $1, $0 + 0x010b 00267 ($GOROOT/src/strconv/atob.go:14) MOVQ "".str.ptr+40(SP), AX + 0x0110 00272 ($GOROOT/src/strconv/atob.go:14) CMPB (AX), $48 + 0x0113 00275 ($GOROOT/src/strconv/atob.go:14) JEQ 185 + 0x0115 00277 ($GOROOT/src/strconv/atob.go:12) CMPB (AX), $49 + 0x0118 00280 ($GOROOT/src/strconv/atob.go:12) JEQ 92 + 0x011e 00286 ($GOROOT/src/strconv/atob.go:14) PCDATA $0, $0 + 0x011e 00286 ($GOROOT/src/strconv/atob.go:14) CMPB (AX), $70 + 0x0121 00289 ($GOROOT/src/strconv/atob.go:14) JEQ 185 + 0x0123 00291 ($GOROOT/src/strconv/atob.go:14) JMP 161 + 0x0128 00296 ($GOROOT/src/strconv/atob.go:12) PCDATA $0, $1 + 0x0128 00296 ($GOROOT/src/strconv/atob.go:12) MOVQ "".str.ptr+40(SP), AX + 0x012d 00301 ($GOROOT/src/strconv/atob.go:12) CMPB (AX), $84 + 0x0130 00304 ($GOROOT/src/strconv/atob.go:12) JEQ 92 + 0x0136 00310 ($GOROOT/src/strconv/atob.go:14) CMPB (AX), $102 + 0x0139 00313 ($GOROOT/src/strconv/atob.go:14) JEQ 185 + 0x013f 00319 ($GOROOT/src/strconv/atob.go:12) PCDATA $0, $0 + 0x013f 00319 ($GOROOT/src/strconv/atob.go:12) CMPB (AX), $116 + 0x0142 00322 ($GOROOT/src/strconv/atob.go:12) JEQ 92 + 0x0148 00328 ($GOROOT/src/strconv/atob.go:12) JMP 161 + 0x014d 00333 ($GOROOT/src/strconv/atob.go:12) NOP + 0x014d 00333 (main.go:428) PCDATA $1, $-1 + 0x014d 00333 (main.go:428) PCDATA $0, $-2 + 0x014d 00333 (main.go:428) CALL runtime.morestack_noctxt(SB) + 0x0152 00338 (main.go:428) PCDATA $0, $-1 + 0x0152 00338 (main.go:428) JMP 0 + 0x0000 64 48 8b 0c 25 00 00 00 00 48 3b 61 10 0f 86 3a dH..%....H;a...: + 0x0010 01 00 00 48 83 ec 38 48 89 6c 24 30 48 8d 6c 24 ...H..8H.l$0H.l$ + 0x0020 30 48 8d 05 00 00 00 00 48 89 04 24 48 c7 44 24 0H......H..$H.D$ + 0x0030 08 09 00 00 00 e8 00 00 00 00 48 8b 44 24 18 48 ..........H.D$.H + 0x0040 8b 4c 24 10 48 83 f8 01 0f 84 8d 00 00 00 48 83 .L$.H.........H. + 0x0050 f8 04 75 51 81 39 54 52 55 45 75 35 b8 01 00 00 ..uQ.9TRUEu5.... + 0x0060 00 84 c0 74 16 48 8b 05 00 00 00 00 48 89 44 24 ...t.H......H.D$ + 0x0070 40 48 8b 6c 24 30 48 83 c4 38 c3 48 8b 05 00 00 @H.l$0H..8.H.... + 0x0080 00 00 48 89 44 24 40 48 8b 6c 24 30 48 83 c4 38 ..H.D$@H.l$0H..8 + 0x0090 c3 81 39 54 72 75 65 74 c3 81 39 74 72 75 65 74 ..9Truet..9truet + 0x00a0 bb 31 c0 eb bc 48 83 f8 05 75 f6 81 39 46 41 4c .1...H...u..9FAL + 0x00b0 53 75 0a 80 79 04 45 75 04 31 c0 eb a4 81 39 46 Su..y.Eu.1....9F + 0x00c0 61 6c 73 75 06 80 79 04 65 74 ee 81 39 66 61 6c alsu..y.et..9fal + 0x00d0 73 75 ce 80 79 04 65 74 e0 eb c6 48 89 4c 24 28 su..y.et...H.L$( + 0x00e0 48 89 0c 24 48 89 44 24 08 48 8d 05 00 00 00 00 H..$H.D$.H...... + 0x00f0 48 89 44 24 10 48 c7 44 24 18 01 00 00 00 e8 00 H.D$.H.D$....... + 0x0100 00 00 00 48 83 7c 24 20 00 7f 1d 48 8b 44 24 28 ...H.|$ ...H.D$( + 0x0110 80 38 30 74 a4 80 38 31 0f 84 3e ff ff ff 80 38 .80t..81..>....8 + 0x0120 46 74 96 e9 79 ff ff ff 48 8b 44 24 28 80 38 54 Ft..y...H.D$(.8T + 0x0130 0f 84 26 ff ff ff 80 38 66 0f 84 7a ff ff ff 80 ..&....8f..z.... + 0x0140 38 74 0f 84 14 ff ff ff e9 54 ff ff ff e8 00 00 8t.......T...... + 0x0150 00 00 e9 a9 fe ff ff ....... + rel 5+4 t=17 TLS+0 + rel 36+4 t=16 go.string."HUMAN_LOG"+0 + rel 54+4 t=8 os.Getenv+0 + rel 104+4 t=16 "".styleForHumanFunc+0 + rel 126+4 t=16 "".styleForMachineFunc+0 + rel 236+4 t=16 go.string."F"+0 + rel 255+4 t=8 runtime.cmpstring+0 + rel 334+4 t=8 runtime.morestack_noctxt+0 +"".eventWithOptionsCheck STEXT size=925 args=0x38 locals=0x188 + 0x0000 00000 (main.go:485) TEXT "".eventWithOptionsCheck(SB), ABIInternal, $392-56 + 0x0000 00000 (main.go:485) MOVQ (TLS), CX + 0x0009 00009 (main.go:485) LEAQ -264(SP), AX + 0x0011 00017 (main.go:485) CMPQ AX, 16(CX) + 0x0015 00021 (main.go:485) PCDATA $0, $-2 + 0x0015 00021 (main.go:485) JLS 915 + 0x001b 00027 (main.go:485) PCDATA $0, $-1 + 0x001b 00027 (main.go:485) SUBQ $392, SP + 0x0022 00034 (main.go:485) MOVQ BP, 384(SP) + 0x002a 00042 (main.go:485) LEAQ 384(SP), BP + 0x0032 00050 (main.go:485) PCDATA $0, $-2 + 0x0032 00050 (main.go:485) PCDATA $1, $-2 + 0x0032 00050 (main.go:485) FUNCDATA $0, gclocals·8fcbe76b16f0e8f09cbaf18979301789(SB) + 0x0032 00050 (main.go:485) FUNCDATA $1, gclocals·8ecccb61eb268598c0d6811fbc4c2e5f(SB) + 0x0032 00050 (main.go:485) FUNCDATA $2, gclocals·c13531a48b550a26cc70bd9663ff5c3f(SB) + 0x0032 00050 (main.go:485) FUNCDATA $3, "".eventWithOptionsCheck.stkobj(SB) + 0x0032 00050 (main.go:486) PCDATA $0, $0 + 0x0032 00050 (main.go:486) PCDATA $1, $1 + 0x0032 00050 (main.go:486) XORPS X0, X0 + 0x0035 00053 (main.go:486) MOVUPS X0, ""..autotmp_20+192(SP) + 0x003d 00061 (main.go:486) MOVUPS X0, ""..autotmp_20+208(SP) + 0x0045 00069 (main.go:486) MOVUPS X0, ""..autotmp_20+224(SP) + 0x004d 00077 (main.go:486) PCDATA $0, $1 + 0x004d 00077 (main.go:486) PCDATA $1, $2 + 0x004d 00077 (main.go:486) LEAQ ""..autotmp_21+240(SP), DI + 0x0055 00085 (main.go:486) PCDATA $0, $0 + 0x0055 00085 (main.go:486) LEAQ -48(DI), DI + 0x0059 00089 (main.go:486) DUFFZERO $258 + 0x006c 00108 (main.go:486) PCDATA $0, $2 + 0x006c 00108 (main.go:486) PCDATA $1, $1 + 0x006c 00108 (main.go:486) LEAQ ""..autotmp_21+240(SP), AX + 0x0074 00116 (main.go:486) PCDATA $0, $0 + 0x0074 00116 (main.go:486) MOVQ AX, ""..autotmp_20+208(SP) + 0x007c 00124 (main.go:486) CALL runtime.fastrand(SB) + 0x0081 00129 (main.go:486) MOVL (SP), AX + 0x0084 00132 (main.go:486) MOVL AX, ""..autotmp_20+204(SP) + 0x008b 00139 (main.go:487) MOVQ "".opts+440(SP), AX + 0x0093 00147 (main.go:487) TESTQ AX, AX + 0x0096 00150 (main.go:487) JGT 265 + 0x0098 00152 (main.go:496) PCDATA $0, $3 + 0x0098 00152 (main.go:496) PCDATA $1, $0 + 0x0098 00152 (main.go:496) MOVQ "".eventWithoutOptionsCheckFunc(SB), CX + 0x009f 00159 (main.go:496) PCDATA $0, $4 + 0x009f 00159 (main.go:496) MOVQ (CX), DX + 0x00a2 00162 (main.go:496) MOVQ "".ctx+400(SP), CX + 0x00aa 00170 (main.go:496) MOVQ CX, (SP) + 0x00ae 00174 (main.go:496) PCDATA $0, $5 + 0x00ae 00174 (main.go:496) PCDATA $1, $3 + 0x00ae 00174 (main.go:496) MOVQ "".ctx+408(SP), CX + 0x00b6 00182 (main.go:496) PCDATA $0, $4 + 0x00b6 00182 (main.go:496) MOVQ CX, 8(SP) + 0x00bb 00187 (main.go:496) PCDATA $0, $5 + 0x00bb 00187 (main.go:496) MOVQ "".event+416(SP), CX + 0x00c3 00195 (main.go:496) PCDATA $0, $4 + 0x00c3 00195 (main.go:496) MOVQ CX, 16(SP) + 0x00c8 00200 (main.go:496) PCDATA $1, $4 + 0x00c8 00200 (main.go:496) MOVQ "".event+424(SP), CX + 0x00d0 00208 (main.go:496) MOVQ CX, 24(SP) + 0x00d5 00213 (main.go:496) PCDATA $0, $5 + 0x00d5 00213 (main.go:496) MOVQ "".opts+432(SP), CX + 0x00dd 00221 (main.go:496) PCDATA $0, $4 + 0x00dd 00221 (main.go:496) MOVQ CX, 32(SP) + 0x00e2 00226 (main.go:496) MOVQ AX, 40(SP) + 0x00e7 00231 (main.go:496) PCDATA $1, $5 + 0x00e7 00231 (main.go:496) MOVQ "".opts+448(SP), AX + 0x00ef 00239 (main.go:496) MOVQ AX, 48(SP) + 0x00f4 00244 (main.go:496) MOVQ (DX), AX + 0x00f7 00247 (main.go:496) PCDATA $0, $0 + 0x00f7 00247 (main.go:496) CALL AX + 0x00f9 00249 (main.go:497) MOVQ 384(SP), BP + 0x0101 00257 (main.go:497) ADDQ $392, SP + 0x0108 00264 (main.go:497) RET + 0x0109 00265 (main.go:487) PCDATA $0, $3 + 0x0109 00265 (main.go:487) PCDATA $1, $1 + 0x0109 00265 (main.go:487) MOVQ "".opts+432(SP), CX + 0x0111 00273 (main.go:487) XORL DX, DX + 0x0113 00275 (main.go:487) JMP 303 + 0x0115 00277 (main.go:487) PCDATA $0, $6 + 0x0115 00277 (main.go:487) MOVQ ""..autotmp_50+136(SP), BX + 0x011d 00285 (main.go:487) ADDQ $16, BX + 0x0121 00289 (main.go:487) PCDATA $0, $3 + 0x0121 00289 (main.go:487) MOVQ BX, CX + 0x0124 00292 (main.go:487) MOVQ AX, DX + 0x0127 00295 (main.go:487) MOVQ "".opts+440(SP), AX + 0x012f 00303 (main.go:487) PCDATA $0, $7 + 0x012f 00303 (main.go:487) MOVQ (CX), BX + 0x0132 00306 (main.go:487) PCDATA $0, $8 + 0x0132 00306 (main.go:487) MOVQ 8(CX), SI + 0x0136 00310 (main.go:488) TESTQ BX, BX + 0x0139 00313 (main.go:488) JEQ 319 + 0x013b 00315 (main.go:488) MOVQ 8(BX), BX + 0x013f 00319 (main.go:487) PCDATA $0, $9 + 0x013f 00319 (main.go:487) PCDATA $1, $6 + 0x013f 00319 (main.go:487) MOVQ CX, ""..autotmp_50+136(SP) + 0x0147 00327 (main.go:487) MOVQ DX, ""..autotmp_51+88(SP) + 0x014c 00332 (main.go:488) PCDATA $0, $10 + 0x014c 00332 (main.go:488) PCDATA $1, $7 + 0x014c 00332 (main.go:488) MOVQ BX, reflect.i+144(SP) + 0x0154 00340 (main.go:488) PCDATA $0, $0 + 0x0154 00340 (main.go:488) MOVQ SI, reflect.i+152(SP) + 0x015c 00348 () NOP + 0x015c 00348 ($GOROOT/src/reflect/type.go:1366) PCDATA $0, $6 + 0x015c 00348 ($GOROOT/src/reflect/type.go:1366) PCDATA $1, $6 + 0x015c 00348 ($GOROOT/src/reflect/type.go:1366) MOVQ reflect.i+144(SP), BX + 0x0164 00356 () NOP + 0x0164 00356 ($GOROOT/src/reflect/type.go:2963) TESTQ BX, BX + 0x0167 00359 (:0) JEQ 801 + 0x016d 00365 (:0) LEAQ go.itab.*reflect.rtype,reflect.Type(SB), SI + 0x0174 00372 (main.go:488) PCDATA $1, $8 + 0x0174 00372 (main.go:488) MOVQ BX, "".t.data+96(SP) + 0x0179 00377 (main.go:488) MOVQ SI, "".t.itab+56(SP) + 0x017e 00382 (main.go:489) MOVQ 232(SI), AX + 0x0185 00389 (main.go:489) PCDATA $0, $0 + 0x0185 00389 (main.go:489) MOVQ BX, (SP) + 0x0189 00393 (main.go:489) CALL AX + 0x018b 00395 (main.go:489) PCDATA $0, $2 + 0x018b 00395 (main.go:489) MOVQ 8(SP), AX + 0x0190 00400 (main.go:489) PCDATA $0, $0 + 0x0190 00400 (main.go:489) PCDATA $1, $9 + 0x0190 00400 (main.go:489) MOVQ AX, ""..autotmp_52+128(SP) + 0x0198 00408 (main.go:489) MOVQ 16(SP), CX + 0x019d 00413 (main.go:489) MOVQ CX, ""..autotmp_53+80(SP) + 0x01a2 00418 (main.go:489) MOVQ "".t.itab+56(SP), DX + 0x01a7 00423 (main.go:489) MOVQ 184(DX), DX + 0x01ae 00430 (main.go:489) PCDATA $0, $6 + 0x01ae 00430 (main.go:489) PCDATA $1, $10 + 0x01ae 00430 (main.go:489) MOVQ "".t.data+96(SP), BX + 0x01b3 00435 (main.go:489) PCDATA $0, $0 + 0x01b3 00435 (main.go:489) MOVQ BX, (SP) + 0x01b7 00439 (main.go:489) CALL DX + 0x01b9 00441 (main.go:489) PCDATA $0, $2 + 0x01b9 00441 (main.go:489) MOVQ 8(SP), AX + 0x01be 00446 (main.go:489) PCDATA $0, $0 + 0x01be 00446 (main.go:489) PCDATA $1, $11 + 0x01be 00446 (main.go:489) MOVQ AX, ""..autotmp_54+120(SP) + 0x01c3 00451 (main.go:489) MOVQ 16(SP), CX + 0x01c8 00456 (main.go:489) MOVQ CX, ""..autotmp_55+72(SP) + 0x01cd 00461 (main.go:489) PCDATA $0, $4 + 0x01cd 00461 (main.go:489) PCDATA $1, $12 + 0x01cd 00461 (main.go:489) MOVQ ""..autotmp_52+128(SP), DX + 0x01d5 00469 (main.go:489) PCDATA $0, $0 + 0x01d5 00469 (main.go:489) MOVQ DX, (SP) + 0x01d9 00473 (main.go:489) MOVQ ""..autotmp_53+80(SP), DX + 0x01de 00478 (main.go:489) MOVQ DX, 8(SP) + 0x01e3 00483 (main.go:489) CALL runtime.convTstring(SB) + 0x01e8 00488 (main.go:489) PCDATA $0, $2 + 0x01e8 00488 (main.go:489) MOVQ 16(SP), AX + 0x01ed 00493 (main.go:489) PCDATA $0, $0 + 0x01ed 00493 (main.go:489) PCDATA $1, $13 + 0x01ed 00493 (main.go:489) MOVQ AX, ""..autotmp_56+112(SP) + 0x01f2 00498 (main.go:489) PCDATA $0, $3 + 0x01f2 00498 (main.go:489) PCDATA $1, $14 + 0x01f2 00498 (main.go:489) MOVQ ""..autotmp_54+120(SP), CX + 0x01f7 00503 (main.go:489) PCDATA $0, $0 + 0x01f7 00503 (main.go:489) MOVQ CX, (SP) + 0x01fb 00507 (main.go:489) MOVQ ""..autotmp_55+72(SP), CX + 0x0200 00512 (main.go:489) MOVQ CX, 8(SP) + 0x0205 00517 (main.go:489) CALL runtime.convTstring(SB) + 0x020a 00522 (main.go:489) PCDATA $0, $2 + 0x020a 00522 (main.go:489) MOVQ 16(SP), AX + 0x020f 00527 (main.go:489) PCDATA $1, $15 + 0x020f 00527 (main.go:489) XORPS X0, X0 + 0x0212 00530 (main.go:489) MOVUPS X0, ""..autotmp_15+160(SP) + 0x021a 00538 (main.go:489) MOVUPS X0, ""..autotmp_15+176(SP) + 0x0222 00546 (main.go:489) PCDATA $0, $11 + 0x0222 00546 (main.go:489) LEAQ type.string(SB), CX + 0x0229 00553 (main.go:489) MOVQ CX, ""..autotmp_15+160(SP) + 0x0231 00561 (main.go:489) PCDATA $0, $12 + 0x0231 00561 (main.go:489) PCDATA $1, $16 + 0x0231 00561 (main.go:489) MOVQ ""..autotmp_56+112(SP), DX + 0x0236 00566 (main.go:489) PCDATA $0, $11 + 0x0236 00566 (main.go:489) MOVQ DX, ""..autotmp_15+168(SP) + 0x023e 00574 (main.go:489) PCDATA $0, $2 + 0x023e 00574 (main.go:489) MOVQ CX, ""..autotmp_15+176(SP) + 0x0246 00582 (main.go:489) PCDATA $0, $0 + 0x0246 00582 (main.go:489) MOVQ AX, ""..autotmp_15+184(SP) + 0x024e 00590 (main.go:489) PCDATA $0, $2 + 0x024e 00590 (main.go:489) LEAQ go.string."%s.%s"(SB), AX + 0x0255 00597 (main.go:489) PCDATA $0, $0 + 0x0255 00597 (main.go:489) MOVQ AX, (SP) + 0x0259 00601 (main.go:489) MOVQ $5, 8(SP) + 0x0262 00610 (main.go:489) PCDATA $0, $4 + 0x0262 00610 (main.go:489) PCDATA $1, $6 + 0x0262 00610 (main.go:489) LEAQ ""..autotmp_15+160(SP), DX + 0x026a 00618 (main.go:489) PCDATA $0, $0 + 0x026a 00618 (main.go:489) MOVQ DX, 16(SP) + 0x026f 00623 (main.go:489) MOVQ $2, 24(SP) + 0x0278 00632 (main.go:489) MOVQ $2, 32(SP) + 0x0281 00641 (main.go:489) CALL fmt.Sprintf(SB) + 0x0286 00646 (main.go:489) MOVQ 48(SP), AX + 0x028b 00651 (main.go:489) MOVQ AX, "".p.len+64(SP) + 0x0290 00656 (main.go:489) PCDATA $0, $3 + 0x0290 00656 (main.go:489) MOVQ 40(SP), CX + 0x0295 00661 (main.go:489) PCDATA $1, $17 + 0x0295 00661 (main.go:489) MOVQ CX, "".p.ptr+104(SP) + 0x029a 00666 (main.go:490) PCDATA $0, $5 + 0x029a 00666 (main.go:490) LEAQ type.map[string]struct {}(SB), DX + 0x02a1 00673 (main.go:490) PCDATA $0, $3 + 0x02a1 00673 (main.go:490) MOVQ DX, (SP) + 0x02a5 00677 (main.go:490) PCDATA $0, $7 + 0x02a5 00677 (main.go:490) LEAQ ""..autotmp_20+192(SP), BX + 0x02ad 00685 (main.go:490) PCDATA $0, $3 + 0x02ad 00685 (main.go:490) MOVQ BX, 8(SP) + 0x02b2 00690 (main.go:490) PCDATA $0, $0 + 0x02b2 00690 (main.go:490) MOVQ CX, 16(SP) + 0x02b7 00695 (main.go:490) MOVQ AX, 24(SP) + 0x02bc 00700 (main.go:490) CALL runtime.mapaccess2_faststr(SB) + 0x02c1 00705 (main.go:490) CMPB 40(SP), $0 + 0x02c6 00710 (main.go:490) JNE 810 + 0x02c8 00712 (main.go:493) PCDATA $0, $2 + 0x02c8 00712 (main.go:493) LEAQ type.map[string]struct {}(SB), AX + 0x02cf 00719 (main.go:493) PCDATA $0, $0 + 0x02cf 00719 (main.go:493) MOVQ AX, (SP) + 0x02d3 00723 (main.go:493) PCDATA $0, $3 + 0x02d3 00723 (main.go:493) LEAQ ""..autotmp_20+192(SP), CX + 0x02db 00731 (main.go:493) PCDATA $0, $0 + 0x02db 00731 (main.go:493) MOVQ CX, 8(SP) + 0x02e0 00736 (main.go:493) PCDATA $0, $4 + 0x02e0 00736 (main.go:493) PCDATA $1, $6 + 0x02e0 00736 (main.go:493) MOVQ "".p.ptr+104(SP), DX + 0x02e5 00741 (main.go:493) PCDATA $0, $0 + 0x02e5 00741 (main.go:493) MOVQ DX, 16(SP) + 0x02ea 00746 (main.go:493) MOVQ "".p.len+64(SP), DX + 0x02ef 00751 (main.go:493) MOVQ DX, 24(SP) + 0x02f4 00756 (main.go:493) CALL runtime.mapassign_faststr(SB) + 0x02f9 00761 (main.go:493) PCDATA $0, $2 + 0x02f9 00761 (main.go:493) MOVQ 32(SP), AX + 0x02fe 00766 (main.go:493) PCDATA $0, $0 + 0x02fe 00766 (main.go:493) TESTB AL, (AX) + 0x0300 00768 (main.go:487) MOVQ ""..autotmp_51+88(SP), AX + 0x0305 00773 (main.go:487) INCQ AX + 0x0308 00776 (main.go:487) MOVQ "".opts+440(SP), CX + 0x0310 00784 (main.go:487) CMPQ AX, CX + 0x0313 00787 (main.go:487) JLT 277 + 0x0319 00793 (main.go:496) PCDATA $1, $0 + 0x0319 00793 (main.go:496) MOVQ CX, AX + 0x031c 00796 (main.go:496) JMP 152 + 0x0321 00801 (main.go:496) PCDATA $0, $6 + 0x0321 00801 (main.go:496) PCDATA $1, $6 + 0x0321 00801 (main.go:496) XORL BX, BX + 0x0323 00803 (main.go:496) XORL SI, SI + 0x0325 00805 ($GOROOT/src/reflect/type.go:1367) JMP 372 + 0x032a 00810 (main.go:491) PCDATA $0, $0 + 0x032a 00810 (main.go:491) PCDATA $1, $18 + 0x032a 00810 (main.go:491) MOVQ $0, (SP) + 0x0332 00818 (main.go:491) PCDATA $0, $2 + 0x0332 00818 (main.go:491) LEAQ go.string."can't pass in the same parameter type multiple times: "(SB), AX + 0x0339 00825 (main.go:491) PCDATA $0, $0 + 0x0339 00825 (main.go:491) MOVQ AX, 8(SP) + 0x033e 00830 (main.go:491) MOVQ $54, 16(SP) + 0x0347 00839 (main.go:491) PCDATA $0, $2 + 0x0347 00839 (main.go:491) PCDATA $1, $5 + 0x0347 00839 (main.go:491) MOVQ "".p.ptr+104(SP), AX + 0x034c 00844 (main.go:491) PCDATA $0, $0 + 0x034c 00844 (main.go:491) MOVQ AX, 24(SP) + 0x0351 00849 (main.go:491) MOVQ "".p.len+64(SP), AX + 0x0356 00854 (main.go:491) MOVQ AX, 32(SP) + 0x035b 00859 (main.go:491) CALL runtime.concatstring2(SB) + 0x0360 00864 (main.go:491) MOVQ 48(SP), AX + 0x0365 00869 (main.go:491) PCDATA $0, $3 + 0x0365 00869 (main.go:491) MOVQ 40(SP), CX + 0x036a 00874 (main.go:491) PCDATA $0, $0 + 0x036a 00874 (main.go:491) MOVQ CX, (SP) + 0x036e 00878 (main.go:491) MOVQ AX, 8(SP) + 0x0373 00883 (main.go:491) CALL runtime.convTstring(SB) + 0x0378 00888 (main.go:491) PCDATA $0, $2 + 0x0378 00888 (main.go:491) MOVQ 16(SP), AX + 0x037d 00893 (main.go:491) PCDATA $0, $11 + 0x037d 00893 (main.go:491) LEAQ type.string(SB), CX + 0x0384 00900 (main.go:491) PCDATA $0, $2 + 0x0384 00900 (main.go:491) MOVQ CX, (SP) + 0x0388 00904 (main.go:491) PCDATA $0, $0 + 0x0388 00904 (main.go:491) MOVQ AX, 8(SP) + 0x038d 00909 (main.go:491) CALL runtime.gopanic(SB) + 0x0392 00914 (main.go:491) XCHGL AX, AX + 0x0393 00915 (main.go:491) NOP + 0x0393 00915 (main.go:485) PCDATA $1, $-1 + 0x0393 00915 (main.go:485) PCDATA $0, $-2 + 0x0393 00915 (main.go:485) CALL runtime.morestack_noctxt(SB) + 0x0398 00920 (main.go:485) PCDATA $0, $-1 + 0x0398 00920 (main.go:485) JMP 0 + 0x0000 64 48 8b 0c 25 00 00 00 00 48 8d 84 24 f8 fe ff dH..%....H..$... + 0x0010 ff 48 3b 41 10 0f 86 78 03 00 00 48 81 ec 88 01 .H;A...x...H.... + 0x0020 00 00 48 89 ac 24 80 01 00 00 48 8d ac 24 80 01 ..H..$....H..$.. + 0x0030 00 00 0f 57 c0 0f 11 84 24 c0 00 00 00 0f 11 84 ...W....$....... + 0x0040 24 d0 00 00 00 0f 11 84 24 e0 00 00 00 48 8d bc $.......$....H.. + 0x0050 24 f0 00 00 00 48 8d 7f d0 48 89 6c 24 f0 48 8d $....H...H.l$.H. + 0x0060 6c 24 f0 e8 00 00 00 00 48 8b 6d 00 48 8d 84 24 l$......H.m.H..$ + 0x0070 f0 00 00 00 48 89 84 24 d0 00 00 00 e8 00 00 00 ....H..$........ + 0x0080 00 8b 04 24 89 84 24 cc 00 00 00 48 8b 84 24 b8 ...$..$....H..$. + 0x0090 01 00 00 48 85 c0 7f 71 48 8b 0d 00 00 00 00 48 ...H...qH......H + 0x00a0 8b 11 48 8b 8c 24 90 01 00 00 48 89 0c 24 48 8b ..H..$....H..$H. + 0x00b0 8c 24 98 01 00 00 48 89 4c 24 08 48 8b 8c 24 a0 .$....H.L$.H..$. + 0x00c0 01 00 00 48 89 4c 24 10 48 8b 8c 24 a8 01 00 00 ...H.L$.H..$.... + 0x00d0 48 89 4c 24 18 48 8b 8c 24 b0 01 00 00 48 89 4c H.L$.H..$....H.L + 0x00e0 24 20 48 89 44 24 28 48 8b 84 24 c0 01 00 00 48 $ H.D$(H..$....H + 0x00f0 89 44 24 30 48 8b 02 ff d0 48 8b ac 24 80 01 00 .D$0H....H..$... + 0x0100 00 48 81 c4 88 01 00 00 c3 48 8b 8c 24 b0 01 00 .H.......H..$... + 0x0110 00 31 d2 eb 1a 48 8b 9c 24 88 00 00 00 48 83 c3 .1...H..$....H.. + 0x0120 10 48 89 d9 48 89 c2 48 8b 84 24 b8 01 00 00 48 .H..H..H..$....H + 0x0130 8b 19 48 8b 71 08 48 85 db 74 04 48 8b 5b 08 48 ..H.q.H..t.H.[.H + 0x0140 89 8c 24 88 00 00 00 48 89 54 24 58 48 89 9c 24 ..$....H.T$XH..$ + 0x0150 90 00 00 00 48 89 b4 24 98 00 00 00 48 8b 9c 24 ....H..$....H..$ + 0x0160 90 00 00 00 48 85 db 0f 84 b4 01 00 00 48 8d 35 ....H........H.5 + 0x0170 00 00 00 00 48 89 5c 24 60 48 89 74 24 38 48 8b ....H.\$`H.t$8H. + 0x0180 86 e8 00 00 00 48 89 1c 24 ff d0 48 8b 44 24 08 .....H..$..H.D$. + 0x0190 48 89 84 24 80 00 00 00 48 8b 4c 24 10 48 89 4c H..$....H.L$.H.L + 0x01a0 24 50 48 8b 54 24 38 48 8b 92 b8 00 00 00 48 8b $PH.T$8H......H. + 0x01b0 5c 24 60 48 89 1c 24 ff d2 48 8b 44 24 08 48 89 \$`H..$..H.D$.H. + 0x01c0 44 24 78 48 8b 4c 24 10 48 89 4c 24 48 48 8b 94 D$xH.L$.H.L$HH.. + 0x01d0 24 80 00 00 00 48 89 14 24 48 8b 54 24 50 48 89 $....H..$H.T$PH. + 0x01e0 54 24 08 e8 00 00 00 00 48 8b 44 24 10 48 89 44 T$......H.D$.H.D + 0x01f0 24 70 48 8b 4c 24 78 48 89 0c 24 48 8b 4c 24 48 $pH.L$xH..$H.L$H + 0x0200 48 89 4c 24 08 e8 00 00 00 00 48 8b 44 24 10 0f H.L$......H.D$.. + 0x0210 57 c0 0f 11 84 24 a0 00 00 00 0f 11 84 24 b0 00 W....$.......$.. + 0x0220 00 00 48 8d 0d 00 00 00 00 48 89 8c 24 a0 00 00 ..H......H..$... + 0x0230 00 48 8b 54 24 70 48 89 94 24 a8 00 00 00 48 89 .H.T$pH..$....H. + 0x0240 8c 24 b0 00 00 00 48 89 84 24 b8 00 00 00 48 8d .$....H..$....H. + 0x0250 05 00 00 00 00 48 89 04 24 48 c7 44 24 08 05 00 .....H..$H.D$... + 0x0260 00 00 48 8d 94 24 a0 00 00 00 48 89 54 24 10 48 ..H..$....H.T$.H + 0x0270 c7 44 24 18 02 00 00 00 48 c7 44 24 20 02 00 00 .D$.....H.D$ ... + 0x0280 00 e8 00 00 00 00 48 8b 44 24 30 48 89 44 24 40 ......H.D$0H.D$@ + 0x0290 48 8b 4c 24 28 48 89 4c 24 68 48 8d 15 00 00 00 H.L$(H.L$hH..... + 0x02a0 00 48 89 14 24 48 8d 9c 24 c0 00 00 00 48 89 5c .H..$H..$....H.\ + 0x02b0 24 08 48 89 4c 24 10 48 89 44 24 18 e8 00 00 00 $.H.L$.H.D$..... + 0x02c0 00 80 7c 24 28 00 75 62 48 8d 05 00 00 00 00 48 ..|$(.ubH......H + 0x02d0 89 04 24 48 8d 8c 24 c0 00 00 00 48 89 4c 24 08 ..$H..$....H.L$. + 0x02e0 48 8b 54 24 68 48 89 54 24 10 48 8b 54 24 40 48 H.T$hH.T$.H.T$@H + 0x02f0 89 54 24 18 e8 00 00 00 00 48 8b 44 24 20 84 00 .T$......H.D$ .. + 0x0300 48 8b 44 24 58 48 ff c0 48 8b 8c 24 b8 01 00 00 H.D$XH..H..$.... + 0x0310 48 39 c8 0f 8c fc fd ff ff 48 89 c8 e9 77 fd ff H9.......H...w.. + 0x0320 ff 31 db 31 f6 e9 4a fe ff ff 48 c7 04 24 00 00 .1.1..J...H..$.. + 0x0330 00 00 48 8d 05 00 00 00 00 48 89 44 24 08 48 c7 ..H......H.D$.H. + 0x0340 44 24 10 36 00 00 00 48 8b 44 24 68 48 89 44 24 D$.6...H.D$hH.D$ + 0x0350 18 48 8b 44 24 40 48 89 44 24 20 e8 00 00 00 00 .H.D$@H.D$ ..... + 0x0360 48 8b 44 24 30 48 8b 4c 24 28 48 89 0c 24 48 89 H.D$0H.L$(H..$H. + 0x0370 44 24 08 e8 00 00 00 00 48 8b 44 24 10 48 8d 0d D$......H.D$.H.. + 0x0380 00 00 00 00 48 89 0c 24 48 89 44 24 08 e8 00 00 ....H..$H.D$.... + 0x0390 00 00 90 e8 00 00 00 00 e9 63 fc ff ff .........c... + rel 5+4 t=17 TLS+0 + rel 100+4 t=8 runtime.duffzero+258 + rel 125+4 t=8 runtime.fastrand+0 + rel 155+4 t=16 "".eventWithoutOptionsCheckFunc+0 + rel 247+0 t=11 +0 + rel 368+4 t=16 go.itab.*reflect.rtype,reflect.Type+0 + rel 393+0 t=11 +0 + rel 439+0 t=11 +0 + rel 484+4 t=8 runtime.convTstring+0 + rel 518+4 t=8 runtime.convTstring+0 + rel 549+4 t=16 type.string+0 + rel 593+4 t=16 go.string."%s.%s"+0 + rel 642+4 t=8 fmt.Sprintf+0 + rel 669+4 t=16 type.map[string]struct {}+0 + rel 701+4 t=8 runtime.mapaccess2_faststr+0 + rel 715+4 t=16 type.map[string]struct {}+0 + rel 757+4 t=8 runtime.mapassign_faststr+0 + rel 821+4 t=16 go.string."can't pass in the same parameter type multiple times: "+0 + rel 860+4 t=8 runtime.concatstring2+0 + rel 884+4 t=8 runtime.convTstring+0 + rel 896+4 t=16 type.string+0 + rel 910+4 t=8 runtime.gopanic+0 + rel 916+4 t=8 runtime.morestack_noctxt+0 +type..eq.[2]interface {} STEXT dupok size=179 args=0x18 locals=0x30 + 0x0000 00000 (:1) TEXT type..eq.[2]interface {}(SB), DUPOK|ABIInternal, $48-24 + 0x0000 00000 (:1) MOVQ (TLS), CX + 0x0009 00009 (:1) CMPQ SP, 16(CX) + 0x000d 00013 (:1) PCDATA $0, $-2 + 0x000d 00013 (:1) JLS 169 + 0x0013 00019 (:1) PCDATA $0, $-1 + 0x0013 00019 (:1) SUBQ $48, SP + 0x0017 00023 (:1) MOVQ BP, 40(SP) + 0x001c 00028 (:1) LEAQ 40(SP), BP + 0x0021 00033 (:1) PCDATA $0, $-2 + 0x0021 00033 (:1) PCDATA $1, $-2 + 0x0021 00033 (:1) FUNCDATA $0, gclocals·dc9b0298814590ca3ffc3a889546fc8b(SB) + 0x0021 00033 (:1) FUNCDATA $1, gclocals·69c1753bd5f81501d95132d08af04464(SB) + 0x0021 00033 (:1) FUNCDATA $2, gclocals·313a5bdbfadc4f007c002a3a3588596d(SB) + 0x0021 00033 (:1) PCDATA $0, $1 + 0x0021 00033 (:1) PCDATA $1, $0 + 0x0021 00033 (:1) MOVQ "".p+56(SP), AX + 0x0026 00038 (:1) PCDATA $0, $2 + 0x0026 00038 (:1) MOVQ "".q+64(SP), CX + 0x002b 00043 (:1) XORL DX, DX + 0x002d 00045 (:1) JMP 72 + 0x002f 00047 (:1) PCDATA $0, $0 + 0x002f 00047 (:1) MOVQ ""..autotmp_8+32(SP), BX + 0x0034 00052 (:1) LEAQ 1(BX), DX + 0x0038 00056 (:1) PCDATA $0, $3 + 0x0038 00056 (:1) MOVQ "".p+56(SP), BX + 0x003d 00061 (:1) PCDATA $0, $4 + 0x003d 00061 (:1) MOVQ "".q+64(SP), SI + 0x0042 00066 (:1) PCDATA $0, $5 + 0x0042 00066 (:1) MOVQ BX, AX + 0x0045 00069 (:1) PCDATA $0, $2 + 0x0045 00069 (:1) MOVQ SI, CX + 0x0048 00072 (:1) CMPQ DX, $2 + 0x004c 00076 (:1) JGE 154 + 0x004e 00078 (:1) MOVQ DX, BX + 0x0051 00081 (:1) SHLQ $4, DX + 0x0055 00085 (:1) PCDATA $0, $6 + 0x0055 00085 (:1) MOVQ 8(DX)(AX*1), SI + 0x005a 00090 (:1) PCDATA $0, $7 + 0x005a 00090 (:1) MOVQ (DX)(AX*1), DI + 0x005e 00094 (:1) MOVQ (DX)(CX*1), R8 + 0x0062 00098 (:1) PCDATA $0, $8 + 0x0062 00098 (:1) MOVQ 8(DX)(CX*1), DX + 0x0067 00103 (:1) CMPQ DI, R8 + 0x006a 00106 (:1) JNE 139 + 0x006c 00108 (:1) MOVQ BX, ""..autotmp_8+32(SP) + 0x0071 00113 (:1) MOVQ DI, (SP) + 0x0075 00117 (:1) PCDATA $0, $9 + 0x0075 00117 (:1) MOVQ SI, 8(SP) + 0x007a 00122 (:1) PCDATA $0, $0 + 0x007a 00122 (:1) MOVQ DX, 16(SP) + 0x007f 00127 (:1) CALL runtime.efaceeq(SB) + 0x0084 00132 (:1) CMPB 24(SP), $0 + 0x0089 00137 (:1) JNE 47 + 0x008b 00139 (:1) PCDATA $1, $1 + 0x008b 00139 (:1) MOVB $0, "".~r2+72(SP) + 0x0090 00144 (:1) MOVQ 40(SP), BP + 0x0095 00149 (:1) ADDQ $48, SP + 0x0099 00153 (:1) RET + 0x009a 00154 (:1) MOVB $1, "".~r2+72(SP) + 0x009f 00159 (:1) MOVQ 40(SP), BP + 0x00a4 00164 (:1) ADDQ $48, SP + 0x00a8 00168 (:1) RET + 0x00a9 00169 (:1) NOP + 0x00a9 00169 (:1) PCDATA $1, $-1 + 0x00a9 00169 (:1) PCDATA $0, $-2 + 0x00a9 00169 (:1) CALL runtime.morestack_noctxt(SB) + 0x00ae 00174 (:1) PCDATA $0, $-1 + 0x00ae 00174 (:1) JMP 0 + 0x0000 64 48 8b 0c 25 00 00 00 00 48 3b 61 10 0f 86 96 dH..%....H;a.... + 0x0010 00 00 00 48 83 ec 30 48 89 6c 24 28 48 8d 6c 24 ...H..0H.l$(H.l$ + 0x0020 28 48 8b 44 24 38 48 8b 4c 24 40 31 d2 eb 19 48 (H.D$8H.L$@1...H + 0x0030 8b 5c 24 20 48 8d 53 01 48 8b 5c 24 38 48 8b 74 .\$ H.S.H.\$8H.t + 0x0040 24 40 48 89 d8 48 89 f1 48 83 fa 02 7d 4c 48 89 $@H..H..H...}LH. + 0x0050 d3 48 c1 e2 04 48 8b 74 02 08 48 8b 3c 02 4c 8b .H...H.t..H.<.L. + 0x0060 04 0a 48 8b 54 0a 08 4c 39 c7 75 1f 48 89 5c 24 ..H.T..L9.u.H.\$ + 0x0070 20 48 89 3c 24 48 89 74 24 08 48 89 54 24 10 e8 H.<$H.t$.H.T$.. + 0x0080 00 00 00 00 80 7c 24 18 00 75 a4 c6 44 24 48 00 .....|$..u..D$H. + 0x0090 48 8b 6c 24 28 48 83 c4 30 c3 c6 44 24 48 01 48 H.l$(H..0..D$H.H + 0x00a0 8b 6c 24 28 48 83 c4 30 c3 e8 00 00 00 00 e9 4d .l$(H..0.......M + 0x00b0 ff ff ff ... + rel 5+4 t=17 TLS+0 + rel 128+4 t=8 runtime.efaceeq+0 + rel 170+4 t=8 runtime.morestack_noctxt+0 +"".eventWithoutOptionsCheck STEXT size=335 args=0x38 locals=0x138 + 0x0000 00000 (main.go:504) TEXT "".eventWithoutOptionsCheck(SB), ABIInternal, $312-56 + 0x0000 00000 (main.go:504) MOVQ (TLS), CX + 0x0009 00009 (main.go:504) LEAQ -184(SP), AX + 0x0011 00017 (main.go:504) CMPQ AX, 16(CX) + 0x0015 00021 (main.go:504) PCDATA $0, $-2 + 0x0015 00021 (main.go:504) JLS 325 + 0x001b 00027 (main.go:504) PCDATA $0, $-1 + 0x001b 00027 (main.go:504) SUBQ $312, SP + 0x0022 00034 (main.go:504) MOVQ BP, 304(SP) + 0x002a 00042 (main.go:504) LEAQ 304(SP), BP + 0x0032 00050 (main.go:504) PCDATA $0, $-2 + 0x0032 00050 (main.go:504) PCDATA $1, $-2 + 0x0032 00050 (main.go:504) FUNCDATA $0, gclocals·25f5c6875a96cf91d085ed7be15cbf1f(SB) + 0x0032 00050 (main.go:504) FUNCDATA $1, gclocals·0dba15cd530f46f555e5a19b4c02ffeb(SB) + 0x0032 00050 (main.go:504) FUNCDATA $2, gclocals·a46a0bb636e511f60de86e92163c49e2(SB) + 0x0032 00050 (main.go:506) PCDATA $0, $0 + 0x0032 00050 (main.go:506) PCDATA $1, $0 + 0x0032 00050 (main.go:506) MOVQ "".ctx+320(SP), AX + 0x003a 00058 (main.go:506) MOVQ AX, (SP) + 0x003e 00062 (main.go:506) PCDATA $0, $1 + 0x003e 00062 (main.go:506) MOVQ "".ctx+328(SP), CX + 0x0046 00070 (main.go:506) PCDATA $0, $0 + 0x0046 00070 (main.go:506) MOVQ CX, 8(SP) + 0x004b 00075 (main.go:506) PCDATA $0, $2 + 0x004b 00075 (main.go:506) MOVQ "".event+336(SP), DX + 0x0053 00083 (main.go:506) PCDATA $0, $0 + 0x0053 00083 (main.go:506) MOVQ DX, 16(SP) + 0x0058 00088 (main.go:506) PCDATA $1, $1 + 0x0058 00088 (main.go:506) MOVQ "".event+344(SP), DX + 0x0060 00096 (main.go:506) MOVQ DX, 24(SP) + 0x0065 00101 (main.go:506) PCDATA $0, $2 + 0x0065 00101 (main.go:506) MOVQ "".opts+352(SP), DX + 0x006d 00109 (main.go:506) PCDATA $0, $0 + 0x006d 00109 (main.go:506) MOVQ DX, 32(SP) + 0x0072 00114 (main.go:506) MOVQ "".opts+360(SP), DX + 0x007a 00122 (main.go:506) MOVQ DX, 40(SP) + 0x007f 00127 (main.go:506) PCDATA $1, $2 + 0x007f 00127 (main.go:506) MOVQ "".opts+368(SP), DX + 0x0087 00135 (main.go:506) MOVQ DX, 48(SP) + 0x008c 00140 (main.go:506) CALL "".createEvent(SB) + 0x0091 00145 (main.go:506) PCDATA $0, $3 + 0x0091 00145 (main.go:506) MOVQ "".styler(SB), AX + 0x0098 00152 (main.go:506) PCDATA $0, $4 + 0x0098 00152 (main.go:506) MOVQ 56(SP), SI + 0x009d 00157 (main.go:506) TESTB AL, (SI) + 0x009f 00159 (main.go:506) PCDATA $0, $5 + 0x009f 00159 (main.go:506) MOVQ (AX), DX + 0x00a2 00162 (main.go:506) PCDATA $0, $6 + 0x00a2 00162 (main.go:506) PCDATA $1, $3 + 0x00a2 00162 (main.go:506) LEAQ ""..autotmp_6+176(SP), DI + 0x00aa 00170 (main.go:506) PCDATA $0, $2 + 0x00aa 00170 (main.go:506) DUFFCOPY $784 + 0x00bd 00189 (main.go:506) MOVQ "".ctx+320(SP), AX + 0x00c5 00197 (main.go:506) MOVQ AX, (SP) + 0x00c9 00201 (main.go:506) PCDATA $0, $7 + 0x00c9 00201 (main.go:506) PCDATA $1, $4 + 0x00c9 00201 (main.go:506) MOVQ "".ctx+328(SP), AX + 0x00d1 00209 (main.go:506) PCDATA $0, $2 + 0x00d1 00209 (main.go:506) MOVQ AX, 8(SP) + 0x00d6 00214 (main.go:506) PCDATA $0, $8 + 0x00d6 00214 (main.go:506) LEAQ 16(SP), DI + 0x00db 00219 (main.go:506) PCDATA $0, $6 + 0x00db 00219 (main.go:506) PCDATA $1, $5 + 0x00db 00219 (main.go:506) LEAQ ""..autotmp_6+176(SP), SI + 0x00e3 00227 (main.go:506) PCDATA $0, $2 + 0x00e3 00227 (main.go:506) DUFFCOPY $784 + 0x00f6 00246 (main.go:506) PCDATA $0, $7 + 0x00f6 00246 (main.go:506) LEAQ "".eventWithoutOptionsCheck·f(SB), AX + 0x00fd 00253 (main.go:506) PCDATA $0, $2 + 0x00fd 00253 (main.go:506) MOVQ AX, 144(SP) + 0x0105 00261 (main.go:506) MOVQ (DX), AX + 0x0108 00264 (main.go:506) PCDATA $0, $0 + 0x0108 00264 (main.go:506) CALL AX + 0x010a 00266 (main.go:506) PCDATA $0, $3 + 0x010a 00266 (main.go:506) MOVQ 152(SP), AX + 0x0112 00274 (main.go:506) MOVQ 160(SP), CX + 0x011a 00282 (main.go:506) MOVQ 168(SP), DX + 0x0122 00290 (main.go:506) PCDATA $0, $0 + 0x0122 00290 (main.go:506) MOVQ AX, (SP) + 0x0126 00294 (main.go:506) MOVQ CX, 8(SP) + 0x012b 00299 (main.go:506) MOVQ DX, 16(SP) + 0x0130 00304 (main.go:506) CALL "".print(SB) + 0x0135 00309 (main.go:508) MOVQ 304(SP), BP + 0x013d 00317 (main.go:508) ADDQ $312, SP + 0x0144 00324 (main.go:508) RET + 0x0145 00325 (main.go:508) NOP + 0x0145 00325 (main.go:504) PCDATA $1, $-1 + 0x0145 00325 (main.go:504) PCDATA $0, $-2 + 0x0145 00325 (main.go:504) CALL runtime.morestack_noctxt(SB) + 0x014a 00330 (main.go:504) PCDATA $0, $-1 + 0x014a 00330 (main.go:504) JMP 0 + 0x0000 64 48 8b 0c 25 00 00 00 00 48 8d 84 24 48 ff ff dH..%....H..$H.. + 0x0010 ff 48 3b 41 10 0f 86 2a 01 00 00 48 81 ec 38 01 .H;A...*...H..8. + 0x0020 00 00 48 89 ac 24 30 01 00 00 48 8d ac 24 30 01 ..H..$0...H..$0. + 0x0030 00 00 48 8b 84 24 40 01 00 00 48 89 04 24 48 8b ..H..$@...H..$H. + 0x0040 8c 24 48 01 00 00 48 89 4c 24 08 48 8b 94 24 50 .$H...H.L$.H..$P + 0x0050 01 00 00 48 89 54 24 10 48 8b 94 24 58 01 00 00 ...H.T$.H..$X... + 0x0060 48 89 54 24 18 48 8b 94 24 60 01 00 00 48 89 54 H.T$.H..$`...H.T + 0x0070 24 20 48 8b 94 24 68 01 00 00 48 89 54 24 28 48 $ H..$h...H.T$(H + 0x0080 8b 94 24 70 01 00 00 48 89 54 24 30 e8 00 00 00 ..$p...H.T$0.... + 0x0090 00 48 8b 05 00 00 00 00 48 8b 74 24 38 84 06 48 .H......H.t$8..H + 0x00a0 8b 10 48 8d bc 24 b0 00 00 00 48 89 6c 24 f0 48 ..H..$....H.l$.H + 0x00b0 8d 6c 24 f0 e8 00 00 00 00 48 8b 6d 00 48 8b 84 .l$......H.m.H.. + 0x00c0 24 40 01 00 00 48 89 04 24 48 8b 84 24 48 01 00 $@...H..$H..$H.. + 0x00d0 00 48 89 44 24 08 48 8d 7c 24 10 48 8d b4 24 b0 .H.D$.H.|$.H..$. + 0x00e0 00 00 00 48 89 6c 24 f0 48 8d 6c 24 f0 e8 00 00 ...H.l$.H.l$.... + 0x00f0 00 00 48 8b 6d 00 48 8d 05 00 00 00 00 48 89 84 ..H.m.H......H.. + 0x0100 24 90 00 00 00 48 8b 02 ff d0 48 8b 84 24 98 00 $....H....H..$.. + 0x0110 00 00 48 8b 8c 24 a0 00 00 00 48 8b 94 24 a8 00 ..H..$....H..$.. + 0x0120 00 00 48 89 04 24 48 89 4c 24 08 48 89 54 24 10 ..H..$H.L$.H.T$. + 0x0130 e8 00 00 00 00 48 8b ac 24 30 01 00 00 48 81 c4 .....H..$0...H.. + 0x0140 38 01 00 00 c3 e8 00 00 00 00 e9 b1 fe ff ff 8.............. + rel 5+4 t=17 TLS+0 + rel 141+4 t=8 "".createEvent+0 + rel 148+4 t=16 "".styler+0 + rel 181+4 t=8 runtime.duffcopy+784 + rel 238+4 t=8 runtime.duffcopy+784 + rel 249+4 t=16 "".eventWithoutOptionsCheck·f+0 + rel 264+0 t=11 +0 + rel 305+4 t=8 "".print+0 + rel 326+4 t=8 runtime.morestack_noctxt+0 +"".createEvent STEXT size=1260 args=0x40 locals=0xf0 + 0x0000 00000 (main.go:511) TEXT "".createEvent(SB), ABIInternal, $240-64 + 0x0000 00000 (main.go:511) MOVQ (TLS), CX + 0x0009 00009 (main.go:511) LEAQ -112(SP), AX + 0x000e 00014 (main.go:511) CMPQ AX, 16(CX) + 0x0012 00018 (main.go:511) PCDATA $0, $-2 + 0x0012 00018 (main.go:511) JLS 1250 + 0x0018 00024 (main.go:511) PCDATA $0, $-1 + 0x0018 00024 (main.go:511) SUBQ $240, SP + 0x001f 00031 (main.go:511) MOVQ BP, 232(SP) + 0x0027 00039 (main.go:511) LEAQ 232(SP), BP + 0x002f 00047 (main.go:511) PCDATA $0, $-2 + 0x002f 00047 (main.go:511) PCDATA $1, $-2 + 0x002f 00047 (main.go:511) FUNCDATA $0, gclocals·22c882573580c59d5b621d44639322c2(SB) + 0x002f 00047 (main.go:511) FUNCDATA $1, gclocals·baeb51a9ad6e78505f2c544c3df4b02b(SB) + 0x002f 00047 (main.go:511) FUNCDATA $2, gclocals·64187bcf8fbd7a241fb43fd9263cbdd0(SB) + 0x002f 00047 (main.go:511) FUNCDATA $3, "".createEvent.stkobj(SB) + 0x002f 00047 (main.go:512) PCDATA $0, $1 + 0x002f 00047 (main.go:512) PCDATA $1, $0 + 0x002f 00047 (main.go:512) LEAQ type."".EventData(SB), AX + 0x0036 00054 (main.go:512) PCDATA $0, $0 + 0x0036 00054 (main.go:512) MOVQ AX, (SP) + 0x003a 00058 (main.go:512) CALL runtime.newobject(SB) + 0x003f 00063 (main.go:512) PCDATA $0, $1 + 0x003f 00063 (main.go:512) MOVQ 8(SP), AX + 0x0044 00068 (main.go:512) PCDATA $0, $0 + 0x0044 00068 (main.go:512) PCDATA $1, $1 + 0x0044 00068 (main.go:512) MOVQ AX, "".&e+72(SP) + 0x0049 00073 (main.go:513) CALL time.Now(SB) + 0x004e 00078 (main.go:513) MOVQ (SP), AX + 0x0052 00082 (main.go:513) PCDATA $0, $2 + 0x0052 00082 (main.go:513) MOVQ 16(SP), CX + 0x0057 00087 (main.go:513) MOVQ 8(SP), DX + 0x005c 00092 (main.go:513) PCDATA $1, $2 + 0x005c 00092 (main.go:513) MOVQ AX, time.t+80(SP) + 0x0061 00097 (main.go:513) MOVQ DX, time.t+88(SP) + 0x0066 00102 (main.go:513) PCDATA $0, $0 + 0x0066 00102 (main.go:513) MOVQ CX, time.t+96(SP) + 0x006b 00107 () NOP + 0x006b 00107 ($GOROOT/src/time/time.go:1109) XCHGL AX, AX + 0x006c 00108 ($GOROOT/src/time/time.go:201) XCHGL AX, AX + 0x006d 00109 ($GOROOT/src/time/time.go:207) BTQ $63, AX + 0x0072 00114 ($GOROOT/src/time/time.go:207) JCC 156 + 0x0074 00116 ($GOROOT/src/time/time.go:208) PCDATA $0, $-1 + 0x0074 00116 ($GOROOT/src/time/time.go:208) PCDATA $1, $-1 + 0x0074 00116 () NOP + 0x0074 00116 ($GOROOT/src/time/time.go:170) PCDATA $0, $0 + 0x0074 00116 ($GOROOT/src/time/time.go:170) PCDATA $1, $2 + 0x0074 00116 ($GOROOT/src/time/time.go:170) MOVQ AX, CX + 0x0077 00119 ($GOROOT/src/time/time.go:170) SHLQ $1, AX + 0x007a 00122 ($GOROOT/src/time/time.go:170) SHRQ $31, AX + 0x007e 00126 ($GOROOT/src/time/time.go:170) MOVQ $59453308800, DX + 0x0088 00136 ($GOROOT/src/time/time.go:170) ADDQ AX, DX + 0x008b 00139 ($GOROOT/src/time/time.go:208) MOVQ DX, time.t+88(SP) + 0x0090 00144 ($GOROOT/src/time/time.go:209) ANDQ $1073741823, CX + 0x0097 00151 ($GOROOT/src/time/time.go:209) MOVQ CX, time.t+80(SP) + 0x009c 00156 ($GOROOT/src/time/time.go:202) MOVQ $0, time.t+96(SP) + 0x00a5 00165 (main.go:513) MOVQ time.t+88(SP), CX + 0x00aa 00170 (main.go:513) PCDATA $1, $1 + 0x00aa 00170 (main.go:513) MOVQ time.t+80(SP), DX + 0x00af 00175 (main.go:512) PCDATA $0, $3 + 0x00af 00175 (main.go:512) PCDATA $1, $3 + 0x00af 00175 (main.go:512) LEAQ ""..autotmp_29+104(SP), DI + 0x00b4 00180 (main.go:512) XORPS X0, X0 + 0x00b7 00183 (main.go:512) PCDATA $0, $0 + 0x00b7 00183 (main.go:512) DUFFZERO $266 + 0x00ca 00202 (main.go:513) MOVQ DX, ""..autotmp_29+104(SP) + 0x00cf 00207 (main.go:513) MOVQ CX, ""..autotmp_29+112(SP) + 0x00d4 00212 (main.go:514) MOVQ "".Namespace+8(SB), CX + 0x00db 00219 (main.go:514) PCDATA $0, $4 + 0x00db 00219 (main.go:514) MOVQ "".Namespace(SB), DX + 0x00e2 00226 (main.go:514) PCDATA $0, $0 + 0x00e2 00226 (main.go:514) MOVQ DX, ""..autotmp_29+128(SP) + 0x00ea 00234 (main.go:514) MOVQ CX, ""..autotmp_29+136(SP) + 0x00f2 00242 (main.go:515) PCDATA $0, $2 + 0x00f2 00242 (main.go:515) MOVQ "".event+264(SP), CX + 0x00fa 00250 (main.go:515) PCDATA $0, $0 + 0x00fa 00250 (main.go:515) MOVQ CX, ""..autotmp_29+144(SP) + 0x0102 00258 (main.go:515) PCDATA $1, $4 + 0x0102 00258 (main.go:515) MOVQ "".event+272(SP), CX + 0x010a 00266 (main.go:515) MOVQ CX, ""..autotmp_29+152(SP) + 0x0112 00274 (main.go:512) PCDATA $0, $-2 + 0x0112 00274 (main.go:512) PCDATA $1, $-2 + 0x0112 00274 (main.go:512) CMPL runtime.writeBarrier(SB), $0 + 0x0119 00281 (main.go:512) JNE 1209 + 0x011f 00287 (main.go:512) MOVQ "".&e+72(SP), DI + 0x0124 00292 (main.go:512) LEAQ ""..autotmp_29+104(SP), SI + 0x0129 00297 (main.go:512) DUFFCOPY $784 + 0x013c 00316 (main.go:518) PCDATA $0, $0 + 0x013c 00316 (main.go:518) PCDATA $1, $5 + 0x013c 00316 (main.go:518) MOVQ "".ctx+248(SP), CX + 0x0144 00324 (main.go:518) TESTQ CX, CX + 0x0147 00327 (main.go:518) JNE 1091 + 0x014d 00333 (main.go:524) PCDATA $1, $6 + 0x014d 00333 (main.go:524) MOVQ "".opts+288(SP), CX + 0x0155 00341 (main.go:524) TESTQ CX, CX + 0x0158 00344 (main.go:524) JLE 1081 + 0x015e 00350 (main.go:524) PCDATA $0, $4 + 0x015e 00350 (main.go:524) MOVQ "".&e+72(SP), DX + 0x0163 00355 (main.go:524) PCDATA $0, $5 + 0x0163 00355 (main.go:524) MOVQ "".opts+280(SP), BX + 0x016b 00363 (main.go:524) XORL AX, AX + 0x016d 00365 (main.go:524) JMP 374 + 0x016f 00367 (main.go:524) ADDQ $16, BX + 0x0173 00371 (main.go:524) MOVQ SI, AX + 0x0176 00374 (main.go:524) PCDATA $0, $6 + 0x0176 00374 (main.go:524) MOVQ 8(BX), SI + 0x017a 00378 (main.go:524) MOVQ (BX), R8 + 0x017d 00381 (main.go:526) TESTQ R8, R8 + 0x0180 00384 (main.go:526) JEQ 1069 + 0x0186 00390 (main.go:524) PCDATA $1, $7 + 0x0186 00390 (main.go:524) MOVQ BX, ""..autotmp_48+64(SP) + 0x018b 00395 (main.go:524) MOVQ AX, ""..autotmp_49+48(SP) + 0x0190 00400 (main.go:524) PCDATA $1, $8 + 0x0190 00400 (main.go:524) MOVQ SI, "".o.data+56(SP) + 0x0195 00405 (main.go:524) MOVQ R8, "".o.itab+40(SP) + 0x019a 00410 (main.go:526) MOVL 16(R8), R9 + 0x019e 00414 (main.go:526) CMPL R9, $1683611827 + 0x01a5 00421 (main.go:526) JHI 691 + 0x01ab 00427 (main.go:526) CMPL R9, $1182499154 + 0x01b2 00434 (main.go:526) JNE 523 + 0x01b4 00436 (main.go:526) PCDATA $0, $7 + 0x01b4 00436 (main.go:526) PCDATA $1, $6 + 0x01b4 00436 (main.go:526) LEAQ go.itab.*"".eventAuth,"".option(SB), R9 + 0x01bb 00443 (main.go:526) PCDATA $0, $6 + 0x01bb 00443 (main.go:526) CMPQ R9, R8 + 0x01be 00446 (main.go:526) JNE 516 + 0x01c0 00448 (main.go:526) PCDATA $0, $-1 + 0x01c0 00448 (main.go:526) PCDATA $1, $-1 + 0x01c0 00448 (main.go:526) JNE 463 + 0x01c2 00450 (main.go:536) PCDATA $0, $-2 + 0x01c2 00450 (main.go:536) PCDATA $1, $-2 + 0x01c2 00450 (main.go:536) CMPL runtime.writeBarrier(SB), $0 + 0x01c9 00457 (main.go:536) JNE 496 + 0x01cb 00459 (main.go:536) MOVQ SI, 104(DX) + 0x01cf 00463 (main.go:524) PCDATA $0, $5 + 0x01cf 00463 (main.go:524) PCDATA $1, $6 + 0x01cf 00463 (main.go:524) LEAQ 1(AX), SI + 0x01d3 00467 (main.go:524) CMPQ SI, CX + 0x01d6 00470 (main.go:524) JLT 367 + 0x01d8 00472 (main.go:543) PCDATA $0, $0 + 0x01d8 00472 (main.go:543) PCDATA $1, $9 + 0x01d8 00472 (main.go:543) MOVQ DX, "".~r3+304(SP) + 0x01e0 00480 (main.go:543) MOVQ 232(SP), BP + 0x01e8 00488 (main.go:543) ADDQ $240, SP + 0x01ef 00495 (main.go:543) RET + 0x01f0 00496 (main.go:536) PCDATA $0, $-2 + 0x01f0 00496 (main.go:536) PCDATA $1, $-2 + 0x01f0 00496 (main.go:536) LEAQ 104(DX), DI + 0x01f4 00500 (main.go:524) MOVQ AX, R8 + 0x01f7 00503 (main.go:536) MOVQ SI, AX + 0x01fa 00506 (main.go:536) CALL runtime.gcWriteBarrier(SB) + 0x01ff 00511 (main.go:524) MOVQ R8, AX + 0x0202 00514 (main.go:536) JMP 463 + 0x0204 00516 (main.go:536) PCDATA $0, $6 + 0x0204 00516 (main.go:536) PCDATA $1, $6 + 0x0204 00516 (main.go:536) MOVL $0, SI + 0x0209 00521 (main.go:526) JMP 448 + 0x020b 00523 (main.go:526) PCDATA $0, $5 + 0x020b 00523 (main.go:526) PCDATA $1, $8 + 0x020b 00523 (main.go:526) CMPL R9, $1683611827 + 0x0212 00530 (main.go:526) JEQ 541 + 0x0214 00532 (main.go:524) PCDATA $1, $6 + 0x0214 00532 (main.go:524) LEAQ go.itab.*"".eventAuth,"".option(SB), R9 + 0x021b 00539 (main.go:526) JMP 463 + 0x021d 00541 (main.go:526) PCDATA $0, $1 + 0x021d 00541 (main.go:526) PCDATA $1, $8 + 0x021d 00541 (main.go:526) LEAQ type."".severity(SB), AX + 0x0224 00548 (main.go:526) PCDATA $0, $0 + 0x0224 00548 (main.go:526) MOVQ AX, (SP) + 0x0228 00552 (main.go:526) CALL runtime.newobject(SB) + 0x022d 00557 (main.go:526) PCDATA $0, $1 + 0x022d 00557 (main.go:526) MOVQ 8(SP), AX + 0x0232 00562 (main.go:526) PCDATA $0, $8 + 0x0232 00562 (main.go:526) LEAQ go.itab."".severity,"".option(SB), CX + 0x0239 00569 (main.go:526) MOVQ "".o.itab+40(SP), DX + 0x023e 00574 (main.go:526) PCDATA $0, $1 + 0x023e 00574 (main.go:526) CMPQ CX, DX + 0x0241 00577 (main.go:526) JNE 684 + 0x0243 00579 (main.go:526) PCDATA $0, $9 + 0x0243 00579 (main.go:526) PCDATA $1, $7 + 0x0243 00579 (main.go:526) MOVQ "".o.data+56(SP), DX + 0x0248 00584 (main.go:526) PCDATA $0, $1 + 0x0248 00584 (main.go:526) MOVQ (DX), DX + 0x024b 00587 (main.go:526) MOVQ DX, (AX) + 0x024e 00590 (main.go:526) JNE 656 + 0x0250 00592 (main.go:528) PCDATA $0, $-2 + 0x0250 00592 (main.go:528) PCDATA $1, $-2 + 0x0250 00592 (main.go:528) CMPL runtime.writeBarrier(SB), $0 + 0x0257 00599 (main.go:528) JNE 640 + 0x0259 00601 (main.go:528) MOVQ "".&e+72(SP), DX + 0x025e 00606 (main.go:528) MOVQ AX, 88(DX) + 0x0262 00610 (main.go:524) PCDATA $0, $4 + 0x0262 00610 (main.go:524) PCDATA $1, $7 + 0x0262 00610 (main.go:524) MOVQ ""..autotmp_49+48(SP), AX + 0x0267 00615 (main.go:524) MOVQ "".opts+288(SP), CX + 0x026f 00623 (main.go:524) PCDATA $0, $5 + 0x026f 00623 (main.go:524) PCDATA $1, $6 + 0x026f 00623 (main.go:524) MOVQ ""..autotmp_48+64(SP), BX + 0x0274 00628 (main.go:524) LEAQ go.itab.*"".eventAuth,"".option(SB), R9 + 0x027b 00635 (main.go:526) JMP 463 + 0x0280 00640 (main.go:528) PCDATA $0, $-2 + 0x0280 00640 (main.go:528) PCDATA $1, $-2 + 0x0280 00640 (main.go:528) MOVQ "".&e+72(SP), DX + 0x0285 00645 (main.go:528) LEAQ 88(DX), DI + 0x0289 00649 (main.go:528) CALL runtime.gcWriteBarrier(SB) + 0x028e 00654 (main.go:528) JMP 610 + 0x0290 00656 (main.go:524) PCDATA $0, $0 + 0x0290 00656 (main.go:524) PCDATA $1, $7 + 0x0290 00656 (main.go:524) MOVQ ""..autotmp_49+48(SP), AX + 0x0295 00661 (main.go:524) MOVQ "".opts+288(SP), CX + 0x029d 00669 (main.go:536) PCDATA $0, $4 + 0x029d 00669 (main.go:536) MOVQ "".&e+72(SP), DX + 0x02a2 00674 (main.go:524) PCDATA $0, $5 + 0x02a2 00674 (main.go:524) PCDATA $1, $6 + 0x02a2 00674 (main.go:524) MOVQ ""..autotmp_48+64(SP), BX + 0x02a7 00679 (main.go:526) JMP 532 + 0x02ac 00684 (main.go:526) PCDATA $0, $1 + 0x02ac 00684 (main.go:526) PCDATA $1, $7 + 0x02ac 00684 (main.go:526) MOVL $0, DX + 0x02b1 00689 (main.go:526) JMP 587 + 0x02b3 00691 (main.go:526) PCDATA $0, $6 + 0x02b3 00691 (main.go:526) PCDATA $1, $8 + 0x02b3 00691 (main.go:526) CMPL R9, $-2140036810 + 0x02ba 00698 (main.go:526) JNE 778 + 0x02bc 00700 (main.go:526) PCDATA $0, $7 + 0x02bc 00700 (main.go:526) PCDATA $1, $6 + 0x02bc 00700 (main.go:526) LEAQ go.itab.*"".EventHTTP,"".option(SB), R9 + 0x02c3 00707 (main.go:526) PCDATA $0, $6 + 0x02c3 00707 (main.go:526) CMPQ R9, R8 + 0x02c6 00710 (main.go:526) JNE 771 + 0x02c8 00712 (main.go:526) PCDATA $0, $-1 + 0x02c8 00712 (main.go:526) PCDATA $1, $-1 + 0x02c8 00712 (main.go:526) JNE 759 + 0x02ca 00714 (main.go:532) PCDATA $0, $-2 + 0x02ca 00714 (main.go:532) PCDATA $1, $-2 + 0x02ca 00714 (main.go:532) CMPL runtime.writeBarrier(SB), $0 + 0x02d1 00721 (main.go:532) JNE 739 + 0x02d3 00723 (main.go:532) MOVQ SI, 96(DX) + 0x02d7 00727 (main.go:532) PCDATA $0, $5 + 0x02d7 00727 (main.go:532) PCDATA $1, $6 + 0x02d7 00727 (main.go:532) LEAQ go.itab.*"".eventAuth,"".option(SB), R9 + 0x02de 00734 (main.go:526) JMP 463 + 0x02e3 00739 (main.go:532) PCDATA $0, $-2 + 0x02e3 00739 (main.go:532) PCDATA $1, $-2 + 0x02e3 00739 (main.go:532) LEAQ 96(DX), DI + 0x02e7 00743 (main.go:524) MOVQ AX, R8 + 0x02ea 00746 (main.go:532) MOVQ SI, AX + 0x02ed 00749 (main.go:532) CALL runtime.gcWriteBarrier(SB) + 0x02f2 00754 (main.go:524) MOVQ R8, AX + 0x02f5 00757 (main.go:532) JMP 727 + 0x02f7 00759 (main.go:524) PCDATA $0, $5 + 0x02f7 00759 (main.go:524) PCDATA $1, $6 + 0x02f7 00759 (main.go:524) LEAQ go.itab.*"".eventAuth,"".option(SB), R9 + 0x02fe 00766 (main.go:526) JMP 463 + 0x0303 00771 (main.go:526) PCDATA $0, $6 + 0x0303 00771 (main.go:526) MOVL $0, SI + 0x0308 00776 (main.go:526) JMP 712 + 0x030a 00778 (main.go:526) PCDATA $1, $8 + 0x030a 00778 (main.go:526) CMPL R9, $-1811802282 + 0x0311 00785 (main.go:526) JEQ 880 + 0x0313 00787 (main.go:526) PCDATA $1, $6 + 0x0313 00787 (main.go:526) CMPL R9, $-202822140 + 0x031a 00794 (main.go:526) JNE 871 + 0x031c 00796 (main.go:526) PCDATA $0, $7 + 0x031c 00796 (main.go:526) LEAQ go.itab.*"".EventError,"".option(SB), R9 + 0x0323 00803 (main.go:526) PCDATA $0, $6 + 0x0323 00803 (main.go:526) CMPQ R9, R8 + 0x0326 00806 (main.go:526) JNE 864 + 0x0328 00808 (main.go:526) PCDATA $0, $-1 + 0x0328 00808 (main.go:526) PCDATA $1, $-1 + 0x0328 00808 (main.go:526) JNE 855 + 0x032a 00810 (main.go:534) PCDATA $0, $-2 + 0x032a 00810 (main.go:534) PCDATA $1, $-2 + 0x032a 00810 (main.go:534) CMPL runtime.writeBarrier(SB), $0 + 0x0331 00817 (main.go:534) JNE 835 + 0x0333 00819 (main.go:534) MOVQ SI, 120(DX) + 0x0337 00823 (main.go:534) PCDATA $0, $5 + 0x0337 00823 (main.go:534) PCDATA $1, $6 + 0x0337 00823 (main.go:534) LEAQ go.itab.*"".eventAuth,"".option(SB), R9 + 0x033e 00830 (main.go:526) JMP 463 + 0x0343 00835 (main.go:534) PCDATA $0, $-2 + 0x0343 00835 (main.go:534) PCDATA $1, $-2 + 0x0343 00835 (main.go:534) LEAQ 120(DX), DI + 0x0347 00839 (main.go:524) MOVQ AX, R8 + 0x034a 00842 (main.go:534) MOVQ SI, AX + 0x034d 00845 (main.go:534) CALL runtime.gcWriteBarrier(SB) + 0x0352 00850 (main.go:524) MOVQ R8, AX + 0x0355 00853 (main.go:534) JMP 823 + 0x0357 00855 (main.go:524) PCDATA $0, $5 + 0x0357 00855 (main.go:524) PCDATA $1, $6 + 0x0357 00855 (main.go:524) LEAQ go.itab.*"".EventHTTP,"".option(SB), R9 + 0x035e 00862 (main.go:526) JMP 759 + 0x0360 00864 (main.go:526) PCDATA $0, $6 + 0x0360 00864 (main.go:526) MOVL $0, SI + 0x0365 00869 (main.go:526) JMP 808 + 0x0367 00871 (main.go:526) PCDATA $0, $5 + 0x0367 00871 (main.go:526) LEAQ go.itab.*"".EventError,"".option(SB), R9 + 0x036e 00878 (main.go:526) JMP 855 + 0x0370 00880 (main.go:526) PCDATA $0, $1 + 0x0370 00880 (main.go:526) PCDATA $1, $8 + 0x0370 00880 (main.go:526) LEAQ type."".Data(SB), AX + 0x0377 00887 (main.go:526) PCDATA $0, $0 + 0x0377 00887 (main.go:526) MOVQ AX, (SP) + 0x037b 00891 (main.go:526) CALL runtime.newobject(SB) + 0x0380 00896 (main.go:526) PCDATA $0, $1 + 0x0380 00896 (main.go:526) MOVQ 8(SP), AX + 0x0385 00901 (main.go:526) PCDATA $0, $8 + 0x0385 00901 (main.go:526) LEAQ go.itab."".Data,"".option(SB), CX + 0x038c 00908 (main.go:526) MOVQ "".o.itab+40(SP), DX + 0x0391 00913 (main.go:526) CMPQ CX, DX + 0x0394 00916 (main.go:526) JNE 1062 + 0x039a 00922 (main.go:526) PCDATA $0, $10 + 0x039a 00922 (main.go:526) PCDATA $1, $7 + 0x039a 00922 (main.go:526) MOVQ "".o.data+56(SP), BX + 0x039f 00927 (main.go:526) PCDATA $0, $-2 + 0x039f 00927 (main.go:526) PCDATA $1, $-2 + 0x039f 00927 (main.go:526) CMPL runtime.writeBarrier(SB), $0 + 0x03a6 00934 (main.go:526) JNE 1043 + 0x03a8 00936 (main.go:526) MOVQ BX, (AX) + 0x03ab 00939 (main.go:526) CMPQ CX, DX + 0x03ae 00942 (main.go:526) PCDATA $0, $-1 + 0x03ae 00942 (main.go:526) PCDATA $1, $-1 + 0x03ae 00942 (main.go:526) JNE 1008 + 0x03b0 00944 (main.go:530) PCDATA $0, $-2 + 0x03b0 00944 (main.go:530) PCDATA $1, $-2 + 0x03b0 00944 (main.go:530) CMPL runtime.writeBarrier(SB), $0 + 0x03b7 00951 (main.go:530) JNE 992 + 0x03b9 00953 (main.go:530) MOVQ "".&e+72(SP), DX + 0x03be 00958 (main.go:530) MOVQ AX, 112(DX) + 0x03c2 00962 (main.go:524) PCDATA $0, $4 + 0x03c2 00962 (main.go:524) PCDATA $1, $7 + 0x03c2 00962 (main.go:524) MOVQ ""..autotmp_49+48(SP), AX + 0x03c7 00967 (main.go:524) MOVQ "".opts+288(SP), CX + 0x03cf 00975 (main.go:524) PCDATA $0, $5 + 0x03cf 00975 (main.go:524) PCDATA $1, $6 + 0x03cf 00975 (main.go:524) MOVQ ""..autotmp_48+64(SP), BX + 0x03d4 00980 (main.go:524) LEAQ go.itab.*"".eventAuth,"".option(SB), R9 + 0x03db 00987 (main.go:526) JMP 463 + 0x03e0 00992 (main.go:530) PCDATA $0, $-2 + 0x03e0 00992 (main.go:530) PCDATA $1, $-2 + 0x03e0 00992 (main.go:530) MOVQ "".&e+72(SP), DX + 0x03e5 00997 (main.go:530) LEAQ 112(DX), DI + 0x03e9 01001 (main.go:530) CALL runtime.gcWriteBarrier(SB) + 0x03ee 01006 (main.go:530) JMP 962 + 0x03f0 01008 (main.go:524) PCDATA $0, $0 + 0x03f0 01008 (main.go:524) PCDATA $1, $7 + 0x03f0 01008 (main.go:524) MOVQ ""..autotmp_49+48(SP), AX + 0x03f5 01013 (main.go:524) MOVQ "".opts+288(SP), CX + 0x03fd 01021 (main.go:536) PCDATA $0, $4 + 0x03fd 01021 (main.go:536) MOVQ "".&e+72(SP), DX + 0x0402 01026 (main.go:524) PCDATA $0, $5 + 0x0402 01026 (main.go:524) PCDATA $1, $6 + 0x0402 01026 (main.go:524) MOVQ ""..autotmp_48+64(SP), BX + 0x0407 01031 (main.go:524) LEAQ go.itab.*"".EventError,"".option(SB), R9 + 0x040e 01038 (main.go:526) JMP 855 + 0x0413 01043 (main.go:526) PCDATA $0, $-2 + 0x0413 01043 (main.go:526) PCDATA $1, $-2 + 0x0413 01043 (main.go:526) MOVQ AX, DI + 0x0416 01046 (main.go:526) MOVQ BX, AX + 0x0419 01049 (main.go:526) CALL runtime.gcWriteBarrier(SB) + 0x041e 01054 (main.go:526) CMPQ CX, DX + 0x0421 01057 (main.go:530) MOVQ DI, AX + 0x0424 01060 (main.go:526) JMP 942 + 0x0426 01062 (main.go:526) PCDATA $0, $10 + 0x0426 01062 (main.go:526) PCDATA $1, $7 + 0x0426 01062 (main.go:526) XORL BX, BX + 0x0428 01064 (main.go:526) JMP 927 + 0x042d 01069 (main.go:526) PCDATA $0, $5 + 0x042d 01069 (main.go:526) PCDATA $1, $6 + 0x042d 01069 (main.go:526) LEAQ go.itab.*"".eventAuth,"".option(SB), R9 + 0x0434 01076 (main.go:526) JMP 463 + 0x0439 01081 (main.go:543) PCDATA $0, $4 + 0x0439 01081 (main.go:543) PCDATA $1, $10 + 0x0439 01081 (main.go:543) MOVQ "".&e+72(SP), DX + 0x043e 01086 (main.go:524) JMP 472 + 0x0443 01091 (main.go:519) PCDATA $0, $-1 + 0x0443 01091 (main.go:519) PCDATA $1, $-1 + 0x0443 01091 () NOP + 0x0443 01091 (/home/rhys/gobook/src/github.com/ONSdigital/go-ns/common/identity.go:146) PCDATA $0, $0 + 0x0443 01091 (/home/rhys/gobook/src/github.com/ONSdigital/go-ns/common/identity.go:146) PCDATA $1, $5 + 0x0443 01091 (/home/rhys/gobook/src/github.com/ONSdigital/go-ns/common/identity.go:146) MOVQ 48(CX), AX + 0x0447 01095 (/home/rhys/gobook/src/github.com/ONSdigital/go-ns/common/identity.go:146) PCDATA $0, $2 + 0x0447 01095 (/home/rhys/gobook/src/github.com/ONSdigital/go-ns/common/identity.go:146) PCDATA $1, $6 + 0x0447 01095 (/home/rhys/gobook/src/github.com/ONSdigital/go-ns/common/identity.go:146) MOVQ "".ctx+256(SP), CX + 0x044f 01103 (/home/rhys/gobook/src/github.com/ONSdigital/go-ns/common/identity.go:146) PCDATA $0, $0 + 0x044f 01103 (/home/rhys/gobook/src/github.com/ONSdigital/go-ns/common/identity.go:146) MOVQ CX, (SP) + 0x0453 01107 (/home/rhys/gobook/src/github.com/ONSdigital/go-ns/common/identity.go:146) PCDATA $0, $2 + 0x0453 01107 (/home/rhys/gobook/src/github.com/ONSdigital/go-ns/common/identity.go:146) LEAQ type.github.com/ONSdigital/go-ns/common.ContextKey(SB), CX + 0x045a 01114 (/home/rhys/gobook/src/github.com/ONSdigital/go-ns/common/identity.go:146) PCDATA $0, $0 + 0x045a 01114 (/home/rhys/gobook/src/github.com/ONSdigital/go-ns/common/identity.go:146) MOVQ CX, 8(SP) + 0x045f 01119 (/home/rhys/gobook/src/github.com/ONSdigital/go-ns/common/identity.go:146) PCDATA $0, $2 + 0x045f 01119 (/home/rhys/gobook/src/github.com/ONSdigital/go-ns/common/identity.go:146) LEAQ ""..stmp_5(SB), CX + 0x0466 01126 (/home/rhys/gobook/src/github.com/ONSdigital/go-ns/common/identity.go:146) PCDATA $0, $0 + 0x0466 01126 (/home/rhys/gobook/src/github.com/ONSdigital/go-ns/common/identity.go:146) MOVQ CX, 16(SP) + 0x046b 01131 (/home/rhys/gobook/src/github.com/ONSdigital/go-ns/common/identity.go:146) CALL AX + 0x046d 01133 (/home/rhys/gobook/src/github.com/ONSdigital/go-ns/common/identity.go:146) PCDATA $0, $1 + 0x046d 01133 (/home/rhys/gobook/src/github.com/ONSdigital/go-ns/common/identity.go:146) MOVQ 32(SP), AX + 0x0472 01138 (/home/rhys/gobook/src/github.com/ONSdigital/go-ns/common/identity.go:146) PCDATA $0, $8 + 0x0472 01138 (/home/rhys/gobook/src/github.com/ONSdigital/go-ns/common/identity.go:146) LEAQ type.string(SB), CX + 0x0479 01145 (/home/rhys/gobook/src/github.com/ONSdigital/go-ns/common/identity.go:146) PCDATA $0, $1 + 0x0479 01145 (/home/rhys/gobook/src/github.com/ONSdigital/go-ns/common/identity.go:146) CMPQ 24(SP), CX + 0x047e 01150 (/home/rhys/gobook/src/github.com/ONSdigital/go-ns/common/identity.go:146) JNE 1203 + 0x0480 01152 (/home/rhys/gobook/src/github.com/ONSdigital/go-ns/common/identity.go:146) MOVQ 8(AX), CX + 0x0484 01156 (/home/rhys/gobook/src/github.com/ONSdigital/go-ns/common/identity.go:146) PCDATA $0, $4 + 0x0484 01156 (/home/rhys/gobook/src/github.com/ONSdigital/go-ns/common/identity.go:146) MOVQ (AX), DX + 0x0487 01159 (main.go:519) PCDATA $0, $5 + 0x0487 01159 (main.go:519) MOVQ "".&e+72(SP), BX + 0x048c 01164 (main.go:519) MOVQ CX, 64(BX) + 0x0490 01168 (main.go:519) PCDATA $0, $-2 + 0x0490 01168 (main.go:519) PCDATA $1, $-2 + 0x0490 01168 (main.go:519) CMPL runtime.writeBarrier(SB), $0 + 0x0497 01175 (main.go:519) JNE 1186 + 0x0499 01177 (main.go:519) MOVQ DX, 56(BX) + 0x049d 01181 (main.go:519) JMP 333 + 0x04a2 01186 (main.go:519) LEAQ 56(BX), DI + 0x04a6 01190 (main.go:519) MOVQ DX, AX + 0x04a9 01193 (main.go:519) CALL runtime.gcWriteBarrier(SB) + 0x04ae 01198 (main.go:519) JMP 333 + 0x04b3 01203 (main.go:519) PCDATA $0, $0 + 0x04b3 01203 (main.go:519) PCDATA $1, $6 + 0x04b3 01203 (main.go:519) XORL CX, CX + 0x04b5 01205 (main.go:519) PCDATA $0, $4 + 0x04b5 01205 (main.go:519) XORL DX, DX + 0x04b7 01207 (/home/rhys/gobook/src/github.com/ONSdigital/go-ns/common/identity.go:146) JMP 1159 + 0x04b9 01209 (main.go:512) PCDATA $0, $-2 + 0x04b9 01209 (main.go:512) PCDATA $1, $-2 + 0x04b9 01209 (main.go:512) LEAQ type."".EventData(SB), AX + 0x04c0 01216 (main.go:512) MOVQ AX, (SP) + 0x04c4 01220 (main.go:512) MOVQ "".&e+72(SP), AX + 0x04c9 01225 (main.go:512) MOVQ AX, 8(SP) + 0x04ce 01230 (main.go:512) LEAQ ""..autotmp_29+104(SP), CX + 0x04d3 01235 (main.go:512) MOVQ CX, 16(SP) + 0x04d8 01240 (main.go:512) CALL runtime.typedmemmove(SB) + 0x04dd 01245 (main.go:512) JMP 316 + 0x04e2 01250 (main.go:512) NOP + 0x04e2 01250 (main.go:511) PCDATA $1, $-1 + 0x04e2 01250 (main.go:511) PCDATA $0, $-2 + 0x04e2 01250 (main.go:511) CALL runtime.morestack_noctxt(SB) + 0x04e7 01255 (main.go:511) PCDATA $0, $-1 + 0x04e7 01255 (main.go:511) JMP 0 + 0x0000 64 48 8b 0c 25 00 00 00 00 48 8d 44 24 90 48 3b dH..%....H.D$.H; + 0x0010 41 10 0f 86 ca 04 00 00 48 81 ec f0 00 00 00 48 A.......H......H + 0x0020 89 ac 24 e8 00 00 00 48 8d ac 24 e8 00 00 00 48 ..$....H..$....H + 0x0030 8d 05 00 00 00 00 48 89 04 24 e8 00 00 00 00 48 ......H..$.....H + 0x0040 8b 44 24 08 48 89 44 24 48 e8 00 00 00 00 48 8b .D$.H.D$H.....H. + 0x0050 04 24 48 8b 4c 24 10 48 8b 54 24 08 48 89 44 24 .$H.L$.H.T$.H.D$ + 0x0060 50 48 89 54 24 58 48 89 4c 24 60 90 90 48 0f ba PH.T$XH.L$`..H.. + 0x0070 e0 3f 73 28 48 89 c1 48 d1 e0 48 c1 e8 1f 48 ba .?s(H..H..H...H. + 0x0080 80 7f b1 d7 0d 00 00 00 48 01 c2 48 89 54 24 58 ........H..H.T$X + 0x0090 48 81 e1 ff ff ff 3f 48 89 4c 24 50 48 c7 44 24 H.....?H.L$PH.D$ + 0x00a0 60 00 00 00 00 48 8b 4c 24 58 48 8b 54 24 50 48 `....H.L$XH.T$PH + 0x00b0 8d 7c 24 68 0f 57 c0 48 89 6c 24 f0 48 8d 6c 24 .|$h.W.H.l$.H.l$ + 0x00c0 f0 e8 00 00 00 00 48 8b 6d 00 48 89 54 24 68 48 ......H.m.H.T$hH + 0x00d0 89 4c 24 70 48 8b 0d 00 00 00 00 48 8b 15 00 00 .L$pH......H.... + 0x00e0 00 00 48 89 94 24 80 00 00 00 48 89 8c 24 88 00 ..H..$....H..$.. + 0x00f0 00 00 48 8b 8c 24 08 01 00 00 48 89 8c 24 90 00 ..H..$....H..$.. + 0x0100 00 00 48 8b 8c 24 10 01 00 00 48 89 8c 24 98 00 ..H..$....H..$.. + 0x0110 00 00 83 3d 00 00 00 00 00 0f 85 9a 03 00 00 48 ...=...........H + 0x0120 8b 7c 24 48 48 8d 74 24 68 48 89 6c 24 f0 48 8d .|$HH.t$hH.l$.H. + 0x0130 6c 24 f0 e8 00 00 00 00 48 8b 6d 00 48 8b 8c 24 l$......H.m.H..$ + 0x0140 f8 00 00 00 48 85 c9 0f 85 f6 02 00 00 48 8b 8c ....H........H.. + 0x0150 24 20 01 00 00 48 85 c9 0f 8e db 02 00 00 48 8b $ ...H........H. + 0x0160 54 24 48 48 8b 9c 24 18 01 00 00 31 c0 eb 07 48 T$HH..$....1...H + 0x0170 83 c3 10 48 89 f0 48 8b 73 08 4c 8b 03 4d 85 c0 ...H..H.s.L..M.. + 0x0180 0f 84 a7 02 00 00 48 89 5c 24 40 48 89 44 24 30 ......H.\$@H.D$0 + 0x0190 48 89 74 24 38 4c 89 44 24 28 45 8b 48 10 41 81 H.t$8L.D$(E.H.A. + 0x01a0 f9 b3 e0 59 64 0f 87 08 01 00 00 41 81 f9 52 81 ...Yd......A..R. + 0x01b0 7b 46 75 57 4c 8d 0d 00 00 00 00 4d 39 c1 75 44 {FuWL......M9.uD + 0x01c0 75 0d 83 3d 00 00 00 00 00 75 25 48 89 72 68 48 u..=.....u%H.rhH + 0x01d0 8d 70 01 48 39 ce 7c 97 48 89 94 24 30 01 00 00 .p.H9.|.H..$0... + 0x01e0 48 8b ac 24 e8 00 00 00 48 81 c4 f0 00 00 00 c3 H..$....H....... + 0x01f0 48 8d 7a 68 49 89 c0 48 89 f0 e8 00 00 00 00 4c H.zhI..H.......L + 0x0200 89 c0 eb cb be 00 00 00 00 eb b5 41 81 f9 b3 e0 ...........A.... + 0x0210 59 64 74 09 4c 8d 0d 00 00 00 00 eb b2 48 8d 05 Ydt.L........H.. + 0x0220 00 00 00 00 48 89 04 24 e8 00 00 00 00 48 8b 44 ....H..$.....H.D + 0x0230 24 08 48 8d 0d 00 00 00 00 48 8b 54 24 28 48 39 $.H......H.T$(H9 + 0x0240 d1 75 69 48 8b 54 24 38 48 8b 12 48 89 10 75 40 .uiH.T$8H..H..u@ + 0x0250 83 3d 00 00 00 00 00 75 27 48 8b 54 24 48 48 89 .=.....u'H.T$HH. + 0x0260 42 58 48 8b 44 24 30 48 8b 8c 24 20 01 00 00 48 BXH.D$0H..$ ...H + 0x0270 8b 5c 24 40 4c 8d 0d 00 00 00 00 e9 4f ff ff ff .\$@L.......O... + 0x0280 48 8b 54 24 48 48 8d 7a 58 e8 00 00 00 00 eb d2 H.T$HH.zX....... + 0x0290 48 8b 44 24 30 48 8b 8c 24 20 01 00 00 48 8b 54 H.D$0H..$ ...H.T + 0x02a0 24 48 48 8b 5c 24 40 e9 68 ff ff ff ba 00 00 00 $HH.\$@.h....... + 0x02b0 00 eb 98 41 81 f9 36 a1 71 80 75 4e 4c 8d 0d 00 ...A..6.q.uNL... + 0x02c0 00 00 00 4d 39 c1 75 3b 75 2d 83 3d 00 00 00 00 ...M9.u;u-.=.... + 0x02d0 00 75 10 48 89 72 60 4c 8d 0d 00 00 00 00 e9 ec .u.H.r`L........ + 0x02e0 fe ff ff 48 8d 7a 60 49 89 c0 48 89 f0 e8 00 00 ...H.z`I..H..... + 0x02f0 00 00 4c 89 c0 eb e0 4c 8d 0d 00 00 00 00 e9 cc ..L....L........ + 0x0300 fe ff ff be 00 00 00 00 eb be 41 81 f9 56 17 02 ..........A..V.. + 0x0310 94 74 5d 41 81 f9 04 2e e9 f3 75 4b 4c 8d 0d 00 .t]A......uKL... + 0x0320 00 00 00 4d 39 c1 75 38 75 2d 83 3d 00 00 00 00 ...M9.u8u-.=.... + 0x0330 00 75 10 48 89 72 78 4c 8d 0d 00 00 00 00 e9 8c .u.H.rxL........ + 0x0340 fe ff ff 48 8d 7a 78 49 89 c0 48 89 f0 e8 00 00 ...H.zxI..H..... + 0x0350 00 00 4c 89 c0 eb e0 4c 8d 0d 00 00 00 00 eb 97 ..L....L........ + 0x0360 be 00 00 00 00 eb c1 4c 8d 0d 00 00 00 00 eb e7 .......L........ + 0x0370 48 8d 05 00 00 00 00 48 89 04 24 e8 00 00 00 00 H......H..$..... + 0x0380 48 8b 44 24 08 48 8d 0d 00 00 00 00 48 8b 54 24 H.D$.H......H.T$ + 0x0390 28 48 39 d1 0f 85 8c 00 00 00 48 8b 5c 24 38 83 (H9.......H.\$8. + 0x03a0 3d 00 00 00 00 00 75 6b 48 89 18 48 39 d1 75 40 =.....ukH..H9.u@ + 0x03b0 83 3d 00 00 00 00 00 75 27 48 8b 54 24 48 48 89 .=.....u'H.T$HH. + 0x03c0 42 70 48 8b 44 24 30 48 8b 8c 24 20 01 00 00 48 BpH.D$0H..$ ...H + 0x03d0 8b 5c 24 40 4c 8d 0d 00 00 00 00 e9 ef fd ff ff .\$@L........... + 0x03e0 48 8b 54 24 48 48 8d 7a 70 e8 00 00 00 00 eb d2 H.T$HH.zp....... + 0x03f0 48 8b 44 24 30 48 8b 8c 24 20 01 00 00 48 8b 54 H.D$0H..$ ...H.T + 0x0400 24 48 48 8b 5c 24 40 4c 8d 0d 00 00 00 00 e9 44 $HH.\$@L.......D + 0x0410 ff ff ff 48 89 c7 48 89 d8 e8 00 00 00 00 48 39 ...H..H.......H9 + 0x0420 d1 48 89 f8 eb 88 31 db e9 72 ff ff ff 4c 8d 0d .H....1..r...L.. + 0x0430 00 00 00 00 e9 96 fd ff ff 48 8b 54 24 48 e9 95 .........H.T$H.. + 0x0440 fd ff ff 48 8b 41 30 48 8b 8c 24 00 01 00 00 48 ...H.A0H..$....H + 0x0450 89 0c 24 48 8d 0d 00 00 00 00 48 89 4c 24 08 48 ..$H......H.L$.H + 0x0460 8d 0d 00 00 00 00 48 89 4c 24 10 ff d0 48 8b 44 ......H.L$...H.D + 0x0470 24 20 48 8d 0d 00 00 00 00 48 39 4c 24 18 75 33 $ H......H9L$.u3 + 0x0480 48 8b 48 08 48 8b 10 48 8b 5c 24 48 48 89 4b 40 H.H.H..H.\$HH.K@ + 0x0490 83 3d 00 00 00 00 00 75 09 48 89 53 38 e9 ab fc .=.....u.H.S8... + 0x04a0 ff ff 48 8d 7b 38 48 89 d0 e8 00 00 00 00 e9 9a ..H.{8H......... + 0x04b0 fc ff ff 31 c9 31 d2 eb ce 48 8d 05 00 00 00 00 ...1.1...H...... + 0x04c0 48 89 04 24 48 8b 44 24 48 48 89 44 24 08 48 8d H..$H.D$HH.D$.H. + 0x04d0 4c 24 68 48 89 4c 24 10 e8 00 00 00 00 e9 5a fc L$hH.L$.......Z. + 0x04e0 ff ff e8 00 00 00 00 e9 14 fb ff ff ............ + rel 5+4 t=17 TLS+0 + rel 50+4 t=16 type."".EventData+0 + rel 59+4 t=8 runtime.newobject+0 + rel 74+4 t=8 time.Now+0 + rel 194+4 t=8 runtime.duffzero+266 + rel 215+4 t=16 "".Namespace+8 + rel 222+4 t=16 "".Namespace+0 + rel 276+4 t=16 runtime.writeBarrier+-1 + rel 308+4 t=8 runtime.duffcopy+784 + rel 439+4 t=16 go.itab.*"".eventAuth,"".option+0 + rel 452+4 t=16 runtime.writeBarrier+-1 + rel 507+4 t=8 runtime.gcWriteBarrier+0 + rel 535+4 t=16 go.itab.*"".eventAuth,"".option+0 + rel 544+4 t=16 type."".severity+0 + rel 553+4 t=8 runtime.newobject+0 + rel 565+4 t=16 go.itab."".severity,"".option+0 + rel 594+4 t=16 runtime.writeBarrier+-1 + rel 631+4 t=16 go.itab.*"".eventAuth,"".option+0 + rel 650+4 t=8 runtime.gcWriteBarrier+0 + rel 703+4 t=16 go.itab.*"".EventHTTP,"".option+0 + rel 716+4 t=16 runtime.writeBarrier+-1 + rel 730+4 t=16 go.itab.*"".eventAuth,"".option+0 + rel 750+4 t=8 runtime.gcWriteBarrier+0 + rel 762+4 t=16 go.itab.*"".eventAuth,"".option+0 + rel 799+4 t=16 go.itab.*"".EventError,"".option+0 + rel 812+4 t=16 runtime.writeBarrier+-1 + rel 826+4 t=16 go.itab.*"".eventAuth,"".option+0 + rel 846+4 t=8 runtime.gcWriteBarrier+0 + rel 858+4 t=16 go.itab.*"".EventHTTP,"".option+0 + rel 874+4 t=16 go.itab.*"".EventError,"".option+0 + rel 883+4 t=16 type."".Data+0 + rel 892+4 t=8 runtime.newobject+0 + rel 904+4 t=16 go.itab."".Data,"".option+0 + rel 929+4 t=16 runtime.writeBarrier+-1 + rel 946+4 t=16 runtime.writeBarrier+-1 + rel 983+4 t=16 go.itab.*"".eventAuth,"".option+0 + rel 1002+4 t=8 runtime.gcWriteBarrier+0 + rel 1034+4 t=16 go.itab.*"".EventError,"".option+0 + rel 1050+4 t=8 runtime.gcWriteBarrier+0 + rel 1072+4 t=16 go.itab.*"".eventAuth,"".option+0 + rel 1110+4 t=16 type.github.com/ONSdigital/go-ns/common.ContextKey+0 + rel 1122+4 t=16 ""..stmp_5+0 + rel 1131+0 t=11 +0 + rel 1141+4 t=16 type.string+0 + rel 1170+4 t=16 runtime.writeBarrier+-1 + rel 1194+4 t=8 runtime.gcWriteBarrier+0 + rel 1212+4 t=16 type."".EventData+0 + rel 1241+4 t=8 runtime.typedmemmove+0 + rel 1251+4 t=8 runtime.morestack_noctxt+0 +"".handleStyleError STEXT size=977 args=0xd8 locals=0xf0 + 0x0000 00000 (main.go:547) TEXT "".handleStyleError(SB), ABIInternal, $240-216 + 0x0000 00000 (main.go:547) MOVQ (TLS), CX + 0x0009 00009 (main.go:547) LEAQ -112(SP), AX + 0x000e 00014 (main.go:547) CMPQ AX, 16(CX) + 0x0012 00018 (main.go:547) PCDATA $0, $-2 + 0x0012 00018 (main.go:547) JLS 967 + 0x0018 00024 (main.go:547) PCDATA $0, $-1 + 0x0018 00024 (main.go:547) SUBQ $240, SP + 0x001f 00031 (main.go:547) MOVQ BP, 232(SP) + 0x0027 00039 (main.go:547) LEAQ 232(SP), BP + 0x002f 00047 (main.go:547) PCDATA $0, $-2 + 0x002f 00047 (main.go:547) PCDATA $1, $-2 + 0x002f 00047 (main.go:547) FUNCDATA $0, gclocals·900b6239b44cfc46f9e1896d18dd2c90(SB) + 0x002f 00047 (main.go:547) FUNCDATA $1, gclocals·fa652c4ffa7b101f0526303cef79f0fe(SB) + 0x002f 00047 (main.go:547) FUNCDATA $2, gclocals·823756ff9e990d2d734deaef9cf4c02a(SB) + 0x002f 00047 (main.go:547) FUNCDATA $3, "".handleStyleError.stkobj(SB) + 0x002f 00047 (main.go:548) PCDATA $0, $0 + 0x002f 00047 (main.go:548) PCDATA $1, $0 + 0x002f 00047 (main.go:548) MOVQ "".err+424(SP), AX + 0x0037 00055 (main.go:548) TESTQ AX, AX + 0x003a 00058 (main.go:548) JNE 124 + 0x003c 00060 (main.go:572) PCDATA $0, $1 + 0x003c 00060 (main.go:572) PCDATA $1, $1 + 0x003c 00060 (main.go:572) MOVQ "".b+400(SP), AX + 0x0044 00068 (main.go:572) PCDATA $0, $0 + 0x0044 00068 (main.go:572) MOVQ AX, "".~r5+440(SP) + 0x004c 00076 (main.go:572) MOVQ "".b+408(SP), AX + 0x0054 00084 (main.go:572) MOVQ AX, "".~r5+448(SP) + 0x005c 00092 (main.go:572) PCDATA $1, $2 + 0x005c 00092 (main.go:572) MOVQ "".b+416(SP), AX + 0x0064 00100 (main.go:572) MOVQ AX, "".~r5+456(SP) + 0x006c 00108 (main.go:572) MOVQ 232(SP), BP + 0x0074 00116 (main.go:572) ADDQ $240, SP + 0x007b 00123 (main.go:572) RET + 0x007c 00124 (main.go:560) PCDATA $1, $3 + 0x007c 00124 (main.go:560) MOVQ AX, (SP) + 0x0080 00128 (main.go:560) PCDATA $0, $1 + 0x0080 00128 (main.go:560) PCDATA $1, $4 + 0x0080 00128 (main.go:560) MOVQ "".err+432(SP), AX + 0x0088 00136 (main.go:560) PCDATA $0, $0 + 0x0088 00136 (main.go:560) MOVQ AX, 8(SP) + 0x008d 00141 (main.go:560) CALL "".Error(SB) + 0x0092 00146 (main.go:560) PCDATA $0, $1 + 0x0092 00146 (main.go:560) MOVQ 24(SP), AX + 0x0097 00151 (main.go:560) PCDATA $0, $0 + 0x0097 00151 (main.go:560) PCDATA $1, $5 + 0x0097 00151 (main.go:560) MOVQ AX, ""..autotmp_28+80(SP) + 0x009c 00156 (main.go:560) MOVQ 16(SP), CX + 0x00a1 00161 (main.go:560) MOVQ CX, ""..autotmp_29+56(SP) + 0x00a6 00166 (main.go:560) CALL runtime.makemap_small(SB) + 0x00ab 00171 (main.go:560) PCDATA $0, $1 + 0x00ab 00171 (main.go:560) MOVQ (SP), AX + 0x00af 00175 (main.go:560) PCDATA $0, $0 + 0x00af 00175 (main.go:560) PCDATA $1, $6 + 0x00af 00175 (main.go:560) MOVQ AX, ""..autotmp_30+72(SP) + 0x00b4 00180 (main.go:560) PCDATA $0, $2 + 0x00b4 00180 (main.go:560) PCDATA $1, $7 + 0x00b4 00180 (main.go:560) LEAQ ""..autotmp_9+104(SP), DI + 0x00b9 00185 (main.go:560) PCDATA $0, $3 + 0x00b9 00185 (main.go:560) LEAQ "".e+264(SP), SI + 0x00c1 00193 (main.go:560) PCDATA $0, $0 + 0x00c1 00193 (main.go:560) DUFFCOPY $784 + 0x00d4 00212 (main.go:560) PCDATA $1, $8 + 0x00d4 00212 (main.go:560) XORPS X0, X0 + 0x00d7 00215 (main.go:560) MOVUPS X0, ""..autotmp_8+88(SP) + 0x00dc 00220 (main.go:560) PCDATA $0, $4 + 0x00dc 00220 (main.go:560) LEAQ type."".EventData(SB), CX + 0x00e3 00227 (main.go:560) PCDATA $0, $0 + 0x00e3 00227 (main.go:560) MOVQ CX, (SP) + 0x00e7 00231 (main.go:560) PCDATA $0, $5 + 0x00e7 00231 (main.go:560) PCDATA $1, $9 + 0x00e7 00231 (main.go:560) LEAQ ""..autotmp_9+104(SP), DX + 0x00ec 00236 (main.go:560) PCDATA $0, $0 + 0x00ec 00236 (main.go:560) MOVQ DX, 8(SP) + 0x00f1 00241 (main.go:560) CALL runtime.convT2E(SB) + 0x00f6 00246 (main.go:560) MOVQ 16(SP), AX + 0x00fb 00251 (main.go:560) PCDATA $0, $4 + 0x00fb 00251 (main.go:560) MOVQ 24(SP), CX + 0x0100 00256 (main.go:560) MOVQ AX, ""..autotmp_8+88(SP) + 0x0105 00261 (main.go:560) PCDATA $0, $0 + 0x0105 00261 (main.go:560) MOVQ CX, ""..autotmp_8+96(SP) + 0x010a 00266 (main.go:560) PCDATA $0, $1 + 0x010a 00266 (main.go:560) LEAQ go.string."%+v"(SB), AX + 0x0111 00273 (main.go:560) PCDATA $0, $0 + 0x0111 00273 (main.go:560) MOVQ AX, (SP) + 0x0115 00277 (main.go:560) MOVQ $3, 8(SP) + 0x011e 00286 (main.go:560) PCDATA $0, $4 + 0x011e 00286 (main.go:560) PCDATA $1, $6 + 0x011e 00286 (main.go:560) LEAQ ""..autotmp_8+88(SP), CX + 0x0123 00291 (main.go:560) PCDATA $0, $0 + 0x0123 00291 (main.go:560) MOVQ CX, 16(SP) + 0x0128 00296 (main.go:560) MOVQ $1, 24(SP) + 0x0131 00305 (main.go:560) MOVQ $1, 32(SP) + 0x013a 00314 (main.go:560) CALL fmt.Sprintf(SB) + 0x013f 00319 (main.go:560) MOVQ 48(SP), AX + 0x0144 00324 (main.go:560) PCDATA $0, $4 + 0x0144 00324 (main.go:560) MOVQ 40(SP), CX + 0x0149 00329 (main.go:560) PCDATA $0, $0 + 0x0149 00329 (main.go:560) MOVQ CX, (SP) + 0x014d 00333 (main.go:560) MOVQ AX, 8(SP) + 0x0152 00338 (main.go:560) CALL runtime.convTstring(SB) + 0x0157 00343 (main.go:560) PCDATA $0, $1 + 0x0157 00343 (main.go:560) MOVQ 16(SP), AX + 0x015c 00348 (main.go:560) PCDATA $0, $0 + 0x015c 00348 (main.go:560) PCDATA $1, $10 + 0x015c 00348 (main.go:560) MOVQ AX, ""..autotmp_31+64(SP) + 0x0161 00353 (main.go:560) PCDATA $0, $4 + 0x0161 00353 (main.go:560) LEAQ type."".Data(SB), CX + 0x0168 00360 (main.go:560) PCDATA $0, $0 + 0x0168 00360 (main.go:560) MOVQ CX, (SP) + 0x016c 00364 (main.go:560) PCDATA $0, $4 + 0x016c 00364 (main.go:560) MOVQ ""..autotmp_30+72(SP), CX + 0x0171 00369 (main.go:560) PCDATA $0, $0 + 0x0171 00369 (main.go:560) MOVQ CX, 8(SP) + 0x0176 00374 (main.go:560) PCDATA $0, $5 + 0x0176 00374 (main.go:560) LEAQ go.string."event_data"(SB), DX + 0x017d 00381 (main.go:560) PCDATA $0, $0 + 0x017d 00381 (main.go:560) MOVQ DX, 16(SP) + 0x0182 00386 (main.go:560) MOVQ $10, 24(SP) + 0x018b 00395 (main.go:560) CALL runtime.mapassign_faststr(SB) + 0x0190 00400 (main.go:560) PCDATA $0, $1 + 0x0190 00400 (main.go:560) MOVQ 32(SP), AX + 0x0195 00405 (main.go:560) PCDATA $0, $6 + 0x0195 00405 (main.go:560) LEAQ type.string(SB), CX + 0x019c 00412 (main.go:560) PCDATA $0, $1 + 0x019c 00412 (main.go:560) MOVQ CX, (AX) + 0x019f 00415 (main.go:560) PCDATA $0, $-2 + 0x019f 00415 (main.go:560) PCDATA $1, $-2 + 0x019f 00415 (main.go:560) CMPL runtime.writeBarrier(SB), $0 + 0x01a6 00422 (main.go:560) JNE 704 + 0x01ac 00428 (main.go:560) MOVQ ""..autotmp_31+64(SP), DX + 0x01b1 00433 (main.go:560) MOVQ DX, 8(AX) + 0x01b5 00437 (main.go:560) PCDATA $0, $1 + 0x01b5 00437 (main.go:560) PCDATA $1, $6 + 0x01b5 00437 (main.go:560) LEAQ type.[2]"".option(SB), AX + 0x01bc 00444 (main.go:560) PCDATA $0, $0 + 0x01bc 00444 (main.go:560) MOVQ AX, (SP) + 0x01c0 00448 (main.go:560) CALL runtime.newobject(SB) + 0x01c5 00453 (main.go:560) PCDATA $0, $1 + 0x01c5 00453 (main.go:560) MOVQ 8(SP), AX + 0x01ca 00458 (main.go:560) MOVQ ""..autotmp_29+56(SP), CX + 0x01cf 00463 (main.go:560) MOVQ CX, (AX) + 0x01d2 00466 (main.go:560) PCDATA $0, $-2 + 0x01d2 00466 (main.go:560) PCDATA $1, $-2 + 0x01d2 00466 (main.go:560) CMPL runtime.writeBarrier(SB), $0 + 0x01d9 00473 (main.go:560) JNE 679 + 0x01df 00479 (main.go:560) MOVQ ""..autotmp_28+80(SP), CX + 0x01e4 00484 (main.go:560) MOVQ CX, 8(AX) + 0x01e8 00488 (main.go:560) PCDATA $0, $6 + 0x01e8 00488 (main.go:560) PCDATA $1, $11 + 0x01e8 00488 (main.go:560) LEAQ go.itab."".Data,"".option(SB), CX + 0x01ef 00495 (main.go:560) PCDATA $0, $1 + 0x01ef 00495 (main.go:560) MOVQ CX, 16(AX) + 0x01f3 00499 (main.go:560) PCDATA $0, $-2 + 0x01f3 00499 (main.go:560) PCDATA $1, $-2 + 0x01f3 00499 (main.go:560) CMPL runtime.writeBarrier(SB), $0 + 0x01fa 00506 (main.go:560) JNE 654 + 0x0200 00512 (main.go:560) MOVQ ""..autotmp_30+72(SP), CX + 0x0205 00517 (main.go:560) MOVQ CX, 24(AX) + 0x0209 00521 (main.go:560) PCDATA $0, $1 + 0x0209 00521 (main.go:560) PCDATA $1, $4 + 0x0209 00521 (main.go:560) MOVQ "".ctx+248(SP), CX + 0x0211 00529 (main.go:560) MOVQ CX, (SP) + 0x0215 00533 (main.go:560) PCDATA $0, $6 + 0x0215 00533 (main.go:560) PCDATA $1, $12 + 0x0215 00533 (main.go:560) MOVQ "".ctx+256(SP), CX + 0x021d 00541 (main.go:560) PCDATA $0, $1 + 0x021d 00541 (main.go:560) MOVQ CX, 8(SP) + 0x0222 00546 (main.go:560) PCDATA $0, $6 + 0x0222 00546 (main.go:560) LEAQ go.string."error marshalling event data"(SB), CX + 0x0229 00553 (main.go:560) PCDATA $0, $1 + 0x0229 00553 (main.go:560) MOVQ CX, 16(SP) + 0x022e 00558 (main.go:560) MOVQ $28, 24(SP) + 0x0237 00567 (main.go:560) PCDATA $0, $0 + 0x0237 00567 (main.go:560) MOVQ AX, 32(SP) + 0x023c 00572 (main.go:560) MOVQ $2, 40(SP) + 0x0245 00581 (main.go:560) MOVQ $2, 48(SP) + 0x024e 00590 (main.go:560) PCDATA $0, $5 + 0x024e 00590 (main.go:560) PCDATA $1, $13 + 0x024e 00590 (main.go:560) MOVQ "".ef+392(SP), DX + 0x0256 00598 (main.go:560) MOVQ (DX), AX + 0x0259 00601 (main.go:560) PCDATA $0, $0 + 0x0259 00601 (main.go:560) CALL AX + 0x025b 00603 (main.go:563) CMPB "".isTestMode(SB), $0 + 0x0262 00610 (main.go:563) JNE 723 + 0x0264 00612 (main.go:569) PCDATA $0, $1 + 0x0264 00612 (main.go:569) PCDATA $1, $2 + 0x0264 00612 (main.go:569) LEAQ runtime.zerobase(SB), AX + 0x026b 00619 (main.go:569) PCDATA $0, $0 + 0x026b 00619 (main.go:569) MOVQ AX, "".~r5+440(SP) + 0x0273 00627 (main.go:569) XORPS X0, X0 + 0x0276 00630 (main.go:569) MOVUPS X0, "".~r5+448(SP) + 0x027e 00638 (main.go:569) MOVQ 232(SP), BP + 0x0286 00646 (main.go:569) ADDQ $240, SP + 0x028d 00653 (main.go:569) RET + 0x028e 00654 (main.go:560) PCDATA $0, $-2 + 0x028e 00654 (main.go:560) PCDATA $1, $-2 + 0x028e 00654 (main.go:560) LEAQ 24(AX), DI + 0x0292 00658 (main.go:560) MOVQ AX, CX + 0x0295 00661 (main.go:560) MOVQ ""..autotmp_30+72(SP), AX + 0x029a 00666 (main.go:560) CALL runtime.gcWriteBarrier(SB) + 0x029f 00671 (main.go:560) MOVQ CX, AX + 0x02a2 00674 (main.go:560) JMP 521 + 0x02a7 00679 (main.go:560) LEAQ 8(AX), DI + 0x02ab 00683 (main.go:560) MOVQ AX, CX + 0x02ae 00686 (main.go:560) MOVQ ""..autotmp_28+80(SP), AX + 0x02b3 00691 (main.go:560) CALL runtime.gcWriteBarrier(SB) + 0x02b8 00696 (main.go:560) MOVQ CX, AX + 0x02bb 00699 (main.go:560) JMP 488 + 0x02c0 00704 (main.go:560) LEAQ 8(AX), DI + 0x02c4 00708 (main.go:560) MOVQ ""..autotmp_31+64(SP), AX + 0x02c9 00713 (main.go:560) CALL runtime.gcWriteBarrier(SB) + 0x02ce 00718 (main.go:560) JMP 437 + 0x02d3 00723 (main.go:566) PCDATA $0, $2 + 0x02d3 00723 (main.go:566) PCDATA $1, $14 + 0x02d3 00723 (main.go:566) LEAQ ""..autotmp_9+104(SP), DI + 0x02d8 00728 (main.go:566) PCDATA $0, $3 + 0x02d8 00728 (main.go:566) PCDATA $1, $15 + 0x02d8 00728 (main.go:566) LEAQ "".e+264(SP), SI + 0x02e0 00736 (main.go:566) PCDATA $0, $0 + 0x02e0 00736 (main.go:566) DUFFCOPY $784 + 0x02f3 00755 (main.go:566) PCDATA $1, $16 + 0x02f3 00755 (main.go:566) XORPS X0, X0 + 0x02f6 00758 (main.go:566) MOVUPS X0, ""..autotmp_8+88(SP) + 0x02fb 00763 (main.go:566) PCDATA $0, $1 + 0x02fb 00763 (main.go:566) LEAQ type."".EventData(SB), AX + 0x0302 00770 (main.go:566) PCDATA $0, $0 + 0x0302 00770 (main.go:566) MOVQ AX, (SP) + 0x0306 00774 (main.go:566) PCDATA $0, $1 + 0x0306 00774 (main.go:566) PCDATA $1, $17 + 0x0306 00774 (main.go:566) LEAQ ""..autotmp_9+104(SP), AX + 0x030b 00779 (main.go:566) PCDATA $0, $0 + 0x030b 00779 (main.go:566) MOVQ AX, 8(SP) + 0x0310 00784 (main.go:566) CALL runtime.convT2E(SB) + 0x0315 00789 (main.go:566) PCDATA $0, $1 + 0x0315 00789 (main.go:566) MOVQ 24(SP), AX + 0x031a 00794 (main.go:566) MOVQ 16(SP), CX + 0x031f 00799 (main.go:566) MOVQ CX, ""..autotmp_8+88(SP) + 0x0324 00804 (main.go:566) PCDATA $0, $0 + 0x0324 00804 (main.go:566) MOVQ AX, ""..autotmp_8+96(SP) + 0x0329 00809 (main.go:566) PCDATA $0, $1 + 0x0329 00809 (main.go:566) LEAQ go.string."%+v"(SB), AX + 0x0330 00816 (main.go:566) PCDATA $0, $0 + 0x0330 00816 (main.go:566) MOVQ AX, (SP) + 0x0334 00820 (main.go:566) MOVQ $3, 8(SP) + 0x033d 00829 (main.go:566) PCDATA $0, $1 + 0x033d 00829 (main.go:566) PCDATA $1, $18 + 0x033d 00829 (main.go:566) LEAQ ""..autotmp_8+88(SP), AX + 0x0342 00834 (main.go:566) PCDATA $0, $0 + 0x0342 00834 (main.go:566) MOVQ AX, 16(SP) + 0x0347 00839 (main.go:566) MOVQ $1, 24(SP) + 0x0350 00848 (main.go:566) MOVQ $1, 32(SP) + 0x0359 00857 (main.go:566) CALL fmt.Sprintf(SB) + 0x035e 00862 (main.go:566) PCDATA $0, $1 + 0x035e 00862 (main.go:566) MOVQ 40(SP), AX + 0x0363 00867 (main.go:566) MOVQ 48(SP), CX + 0x0368 00872 (main.go:566) MOVQ $0, (SP) + 0x0370 00880 (main.go:566) PCDATA $0, $7 + 0x0370 00880 (main.go:566) LEAQ go.string."error marshalling event data: "(SB), DX + 0x0377 00887 (main.go:566) PCDATA $0, $1 + 0x0377 00887 (main.go:566) MOVQ DX, 8(SP) + 0x037c 00892 (main.go:566) MOVQ $30, 16(SP) + 0x0385 00901 (main.go:566) PCDATA $0, $0 + 0x0385 00901 (main.go:566) MOVQ AX, 24(SP) + 0x038a 00906 (main.go:566) MOVQ CX, 32(SP) + 0x038f 00911 (main.go:566) CALL runtime.concatstring2(SB) + 0x0394 00916 (main.go:566) PCDATA $0, $1 + 0x0394 00916 (main.go:566) MOVQ 40(SP), AX + 0x0399 00921 (main.go:566) MOVQ 48(SP), CX + 0x039e 00926 (main.go:566) PCDATA $0, $0 + 0x039e 00926 (main.go:566) MOVQ AX, (SP) + 0x03a2 00930 (main.go:566) MOVQ CX, 8(SP) + 0x03a7 00935 (main.go:566) CALL runtime.convTstring(SB) + 0x03ac 00940 (main.go:566) PCDATA $0, $1 + 0x03ac 00940 (main.go:566) MOVQ 16(SP), AX + 0x03b1 00945 (main.go:566) PCDATA $0, $6 + 0x03b1 00945 (main.go:566) LEAQ type.string(SB), CX + 0x03b8 00952 (main.go:566) PCDATA $0, $1 + 0x03b8 00952 (main.go:566) MOVQ CX, (SP) + 0x03bc 00956 (main.go:566) PCDATA $0, $0 + 0x03bc 00956 (main.go:566) MOVQ AX, 8(SP) + 0x03c1 00961 (main.go:566) CALL runtime.gopanic(SB) + 0x03c6 00966 (main.go:566) XCHGL AX, AX + 0x03c7 00967 (main.go:566) NOP + 0x03c7 00967 (main.go:547) PCDATA $1, $-1 + 0x03c7 00967 (main.go:547) PCDATA $0, $-2 + 0x03c7 00967 (main.go:547) CALL runtime.morestack_noctxt(SB) + 0x03cc 00972 (main.go:547) PCDATA $0, $-1 + 0x03cc 00972 (main.go:547) JMP 0 + 0x0000 64 48 8b 0c 25 00 00 00 00 48 8d 44 24 90 48 3b dH..%....H.D$.H; + 0x0010 41 10 0f 86 af 03 00 00 48 81 ec f0 00 00 00 48 A.......H......H + 0x0020 89 ac 24 e8 00 00 00 48 8d ac 24 e8 00 00 00 48 ..$....H..$....H + 0x0030 8b 84 24 a8 01 00 00 48 85 c0 75 40 48 8b 84 24 ..$....H..u@H..$ + 0x0040 90 01 00 00 48 89 84 24 b8 01 00 00 48 8b 84 24 ....H..$....H..$ + 0x0050 98 01 00 00 48 89 84 24 c0 01 00 00 48 8b 84 24 ....H..$....H..$ + 0x0060 a0 01 00 00 48 89 84 24 c8 01 00 00 48 8b ac 24 ....H..$....H..$ + 0x0070 e8 00 00 00 48 81 c4 f0 00 00 00 c3 48 89 04 24 ....H.......H..$ + 0x0080 48 8b 84 24 b0 01 00 00 48 89 44 24 08 e8 00 00 H..$....H.D$.... + 0x0090 00 00 48 8b 44 24 18 48 89 44 24 50 48 8b 4c 24 ..H.D$.H.D$PH.L$ + 0x00a0 10 48 89 4c 24 38 e8 00 00 00 00 48 8b 04 24 48 .H.L$8.....H..$H + 0x00b0 89 44 24 48 48 8d 7c 24 68 48 8d b4 24 08 01 00 .D$HH.|$hH..$... + 0x00c0 00 48 89 6c 24 f0 48 8d 6c 24 f0 e8 00 00 00 00 .H.l$.H.l$...... + 0x00d0 48 8b 6d 00 0f 57 c0 0f 11 44 24 58 48 8d 0d 00 H.m..W...D$XH... + 0x00e0 00 00 00 48 89 0c 24 48 8d 54 24 68 48 89 54 24 ...H..$H.T$hH.T$ + 0x00f0 08 e8 00 00 00 00 48 8b 44 24 10 48 8b 4c 24 18 ......H.D$.H.L$. + 0x0100 48 89 44 24 58 48 89 4c 24 60 48 8d 05 00 00 00 H.D$XH.L$`H..... + 0x0110 00 48 89 04 24 48 c7 44 24 08 03 00 00 00 48 8d .H..$H.D$.....H. + 0x0120 4c 24 58 48 89 4c 24 10 48 c7 44 24 18 01 00 00 L$XH.L$.H.D$.... + 0x0130 00 48 c7 44 24 20 01 00 00 00 e8 00 00 00 00 48 .H.D$ .........H + 0x0140 8b 44 24 30 48 8b 4c 24 28 48 89 0c 24 48 89 44 .D$0H.L$(H..$H.D + 0x0150 24 08 e8 00 00 00 00 48 8b 44 24 10 48 89 44 24 $......H.D$.H.D$ + 0x0160 40 48 8d 0d 00 00 00 00 48 89 0c 24 48 8b 4c 24 @H......H..$H.L$ + 0x0170 48 48 89 4c 24 08 48 8d 15 00 00 00 00 48 89 54 HH.L$.H......H.T + 0x0180 24 10 48 c7 44 24 18 0a 00 00 00 e8 00 00 00 00 $.H.D$.......... + 0x0190 48 8b 44 24 20 48 8d 0d 00 00 00 00 48 89 08 83 H.D$ H......H... + 0x01a0 3d 00 00 00 00 00 0f 85 14 01 00 00 48 8b 54 24 =...........H.T$ + 0x01b0 40 48 89 50 08 48 8d 05 00 00 00 00 48 89 04 24 @H.P.H......H..$ + 0x01c0 e8 00 00 00 00 48 8b 44 24 08 48 8b 4c 24 38 48 .....H.D$.H.L$8H + 0x01d0 89 08 83 3d 00 00 00 00 00 0f 85 c8 00 00 00 48 ...=...........H + 0x01e0 8b 4c 24 50 48 89 48 08 48 8d 0d 00 00 00 00 48 .L$PH.H.H......H + 0x01f0 89 48 10 83 3d 00 00 00 00 00 0f 85 8e 00 00 00 .H..=........... + 0x0200 48 8b 4c 24 48 48 89 48 18 48 8b 8c 24 f8 00 00 H.L$HH.H.H..$... + 0x0210 00 48 89 0c 24 48 8b 8c 24 00 01 00 00 48 89 4c .H..$H..$....H.L + 0x0220 24 08 48 8d 0d 00 00 00 00 48 89 4c 24 10 48 c7 $.H......H.L$.H. + 0x0230 44 24 18 1c 00 00 00 48 89 44 24 20 48 c7 44 24 D$.....H.D$ H.D$ + 0x0240 28 02 00 00 00 48 c7 44 24 30 02 00 00 00 48 8b (....H.D$0....H. + 0x0250 94 24 88 01 00 00 48 8b 02 ff d0 80 3d 00 00 00 .$....H.....=... + 0x0260 00 00 75 6f 48 8d 05 00 00 00 00 48 89 84 24 b8 ..uoH......H..$. + 0x0270 01 00 00 0f 57 c0 0f 11 84 24 c0 01 00 00 48 8b ....W....$....H. + 0x0280 ac 24 e8 00 00 00 48 81 c4 f0 00 00 00 c3 48 8d .$....H.......H. + 0x0290 78 18 48 89 c1 48 8b 44 24 48 e8 00 00 00 00 48 x.H..H.D$H.....H + 0x02a0 89 c8 e9 62 ff ff ff 48 8d 78 08 48 89 c1 48 8b ...b...H.x.H..H. + 0x02b0 44 24 50 e8 00 00 00 00 48 89 c8 e9 28 ff ff ff D$P.....H...(... + 0x02c0 48 8d 78 08 48 8b 44 24 40 e8 00 00 00 00 e9 e2 H.x.H.D$@....... + 0x02d0 fe ff ff 48 8d 7c 24 68 48 8d b4 24 08 01 00 00 ...H.|$hH..$.... + 0x02e0 48 89 6c 24 f0 48 8d 6c 24 f0 e8 00 00 00 00 48 H.l$.H.l$......H + 0x02f0 8b 6d 00 0f 57 c0 0f 11 44 24 58 48 8d 05 00 00 .m..W...D$XH.... + 0x0300 00 00 48 89 04 24 48 8d 44 24 68 48 89 44 24 08 ..H..$H.D$hH.D$. + 0x0310 e8 00 00 00 00 48 8b 44 24 18 48 8b 4c 24 10 48 .....H.D$.H.L$.H + 0x0320 89 4c 24 58 48 89 44 24 60 48 8d 05 00 00 00 00 .L$XH.D$`H...... + 0x0330 48 89 04 24 48 c7 44 24 08 03 00 00 00 48 8d 44 H..$H.D$.....H.D + 0x0340 24 58 48 89 44 24 10 48 c7 44 24 18 01 00 00 00 $XH.D$.H.D$..... + 0x0350 48 c7 44 24 20 01 00 00 00 e8 00 00 00 00 48 8b H.D$ .........H. + 0x0360 44 24 28 48 8b 4c 24 30 48 c7 04 24 00 00 00 00 D$(H.L$0H..$.... + 0x0370 48 8d 15 00 00 00 00 48 89 54 24 08 48 c7 44 24 H......H.T$.H.D$ + 0x0380 10 1e 00 00 00 48 89 44 24 18 48 89 4c 24 20 e8 .....H.D$.H.L$ . + 0x0390 00 00 00 00 48 8b 44 24 28 48 8b 4c 24 30 48 89 ....H.D$(H.L$0H. + 0x03a0 04 24 48 89 4c 24 08 e8 00 00 00 00 48 8b 44 24 .$H.L$......H.D$ + 0x03b0 10 48 8d 0d 00 00 00 00 48 89 0c 24 48 89 44 24 .H......H..$H.D$ + 0x03c0 08 e8 00 00 00 00 90 e8 00 00 00 00 e9 2f fc ff ............./.. + 0x03d0 ff . + rel 5+4 t=17 TLS+0 + rel 142+4 t=8 "".Error+0 + rel 167+4 t=8 runtime.makemap_small+0 + rel 204+4 t=8 runtime.duffcopy+784 + rel 223+4 t=16 type."".EventData+0 + rel 242+4 t=8 runtime.convT2E+0 + rel 269+4 t=16 go.string."%+v"+0 + rel 315+4 t=8 fmt.Sprintf+0 + rel 339+4 t=8 runtime.convTstring+0 + rel 356+4 t=16 type."".Data+0 + rel 377+4 t=16 go.string."event_data"+0 + rel 396+4 t=8 runtime.mapassign_faststr+0 + rel 408+4 t=16 type.string+0 + rel 417+4 t=16 runtime.writeBarrier+-1 + rel 440+4 t=16 type.[2]"".option+0 + rel 449+4 t=8 runtime.newobject+0 + rel 468+4 t=16 runtime.writeBarrier+-1 + rel 491+4 t=16 go.itab."".Data,"".option+0 + rel 501+4 t=16 runtime.writeBarrier+-1 + rel 549+4 t=16 go.string."error marshalling event data"+0 + rel 601+0 t=11 +0 + rel 605+4 t=16 "".isTestMode+-1 + rel 615+4 t=16 runtime.zerobase+0 + rel 667+4 t=8 runtime.gcWriteBarrier+0 + rel 692+4 t=8 runtime.gcWriteBarrier+0 + rel 714+4 t=8 runtime.gcWriteBarrier+0 + rel 747+4 t=8 runtime.duffcopy+784 + rel 766+4 t=16 type."".EventData+0 + rel 785+4 t=8 runtime.convT2E+0 + rel 812+4 t=16 go.string."%+v"+0 + rel 858+4 t=8 fmt.Sprintf+0 + rel 883+4 t=16 go.string."error marshalling event data: "+0 + rel 912+4 t=8 runtime.concatstring2+0 + rel 936+4 t=8 runtime.convTstring+0 + rel 948+4 t=16 type.string+0 + rel 962+4 t=8 runtime.gopanic+0 + rel 968+4 t=8 runtime.morestack_noctxt+0 +"".styleForMachine STEXT size=355 args=0xb0 locals=0x160 + 0x0000 00000 (main.go:576) TEXT "".styleForMachine(SB), ABIInternal, $352-176 + 0x0000 00000 (main.go:576) MOVQ (TLS), CX + 0x0009 00009 (main.go:576) LEAQ -224(SP), AX + 0x0011 00017 (main.go:576) CMPQ AX, 16(CX) + 0x0015 00021 (main.go:576) PCDATA $0, $-2 + 0x0015 00021 (main.go:576) JLS 345 + 0x001b 00027 (main.go:576) PCDATA $0, $-1 + 0x001b 00027 (main.go:576) SUBQ $352, SP + 0x0022 00034 (main.go:576) MOVQ BP, 344(SP) + 0x002a 00042 (main.go:576) LEAQ 344(SP), BP + 0x0032 00050 (main.go:576) PCDATA $0, $-2 + 0x0032 00050 (main.go:576) PCDATA $1, $-2 + 0x0032 00050 (main.go:576) FUNCDATA $0, gclocals·6244c9d580b9767a07e5781209477991(SB) + 0x0032 00050 (main.go:576) FUNCDATA $1, gclocals·94618776347a3eaec579421b33bdf4b6(SB) + 0x0032 00050 (main.go:576) FUNCDATA $2, gclocals·22af34315935272476cc5da3823dbfde(SB) + 0x0032 00050 (main.go:576) FUNCDATA $3, "".styleForMachine.stkobj(SB) + 0x0032 00050 (main.go:577) PCDATA $0, $1 + 0x0032 00050 (main.go:577) PCDATA $1, $1 + 0x0032 00050 (main.go:577) LEAQ ""..autotmp_6+216(SP), DI + 0x003a 00058 (main.go:577) PCDATA $0, $2 + 0x003a 00058 (main.go:577) LEAQ "".e+376(SP), SI + 0x0042 00066 (main.go:577) PCDATA $0, $0 + 0x0042 00066 (main.go:577) DUFFCOPY $784 + 0x0055 00085 (main.go:577) PCDATA $0, $3 + 0x0055 00085 (main.go:577) LEAQ type."".EventData(SB), AX + 0x005c 00092 (main.go:577) PCDATA $0, $0 + 0x005c 00092 (main.go:577) MOVQ AX, (SP) + 0x0060 00096 (main.go:577) PCDATA $0, $3 + 0x0060 00096 (main.go:577) PCDATA $1, $0 + 0x0060 00096 (main.go:577) LEAQ ""..autotmp_6+216(SP), AX + 0x0068 00104 (main.go:577) PCDATA $0, $0 + 0x0068 00104 (main.go:577) MOVQ AX, 8(SP) + 0x006d 00109 (main.go:577) CALL runtime.convT2E(SB) + 0x0072 00114 (main.go:577) MOVQ 16(SP), AX + 0x0077 00119 (main.go:577) PCDATA $0, $4 + 0x0077 00119 (main.go:577) MOVQ 24(SP), CX + 0x007c 00124 (main.go:577) MOVQ AX, (SP) + 0x0080 00128 (main.go:577) PCDATA $0, $0 + 0x0080 00128 (main.go:577) MOVQ CX, 8(SP) + 0x0085 00133 (main.go:577) CALL encoding/json.Marshal(SB) + 0x008a 00138 (main.go:577) PCDATA $0, $3 + 0x008a 00138 (main.go:577) MOVQ 16(SP), AX + 0x008f 00143 (main.go:577) MOVQ 24(SP), CX + 0x0094 00148 (main.go:577) MOVQ 32(SP), DX + 0x0099 00153 (main.go:577) MOVQ 40(SP), BX + 0x009e 00158 (main.go:577) PCDATA $0, $5 + 0x009e 00158 (main.go:577) MOVQ 48(SP), R8 + 0x00a3 00163 (main.go:579) MOVQ "".ctx+360(SP), R9 + 0x00ab 00171 (main.go:579) MOVQ R9, (SP) + 0x00af 00175 (main.go:579) PCDATA $0, $6 + 0x00af 00175 (main.go:579) PCDATA $1, $2 + 0x00af 00175 (main.go:579) MOVQ "".ctx+368(SP), R9 + 0x00b7 00183 (main.go:579) PCDATA $0, $5 + 0x00b7 00183 (main.go:579) MOVQ R9, 8(SP) + 0x00bc 00188 (main.go:579) PCDATA $0, $7 + 0x00bc 00188 (main.go:579) LEAQ 16(SP), DI + 0x00c1 00193 (main.go:579) PCDATA $0, $8 + 0x00c1 00193 (main.go:579) PCDATA $1, $3 + 0x00c1 00193 (main.go:579) LEAQ "".e+376(SP), SI + 0x00c9 00201 (main.go:579) PCDATA $0, $5 + 0x00c9 00201 (main.go:579) DUFFCOPY $784 + 0x00dc 00220 (main.go:579) PCDATA $0, $6 + 0x00dc 00220 (main.go:579) PCDATA $1, $4 + 0x00dc 00220 (main.go:579) MOVQ "".ef+504(SP), R9 + 0x00e4 00228 (main.go:579) PCDATA $0, $5 + 0x00e4 00228 (main.go:579) MOVQ R9, 144(SP) + 0x00ec 00236 (main.go:579) PCDATA $0, $9 + 0x00ec 00236 (main.go:579) MOVQ AX, 152(SP) + 0x00f4 00244 (main.go:579) MOVQ CX, 160(SP) + 0x00fc 00252 (main.go:579) MOVQ DX, 168(SP) + 0x0104 00260 (main.go:579) MOVQ BX, 176(SP) + 0x010c 00268 (main.go:579) PCDATA $0, $0 + 0x010c 00268 (main.go:579) MOVQ R8, 184(SP) + 0x0114 00276 (main.go:579) CALL "".handleStyleError(SB) + 0x0119 00281 (main.go:579) PCDATA $0, $3 + 0x0119 00281 (main.go:579) MOVQ 192(SP), AX + 0x0121 00289 (main.go:579) MOVQ 200(SP), CX + 0x0129 00297 (main.go:579) MOVQ 208(SP), DX + 0x0131 00305 (main.go:579) PCDATA $0, $0 + 0x0131 00305 (main.go:579) PCDATA $1, $5 + 0x0131 00305 (main.go:579) MOVQ AX, "".~r3+512(SP) + 0x0139 00313 (main.go:579) MOVQ CX, "".~r3+520(SP) + 0x0141 00321 (main.go:579) MOVQ DX, "".~r3+528(SP) + 0x0149 00329 (main.go:579) MOVQ 344(SP), BP + 0x0151 00337 (main.go:579) ADDQ $352, SP + 0x0158 00344 (main.go:579) RET + 0x0159 00345 (main.go:579) NOP + 0x0159 00345 (main.go:576) PCDATA $1, $-1 + 0x0159 00345 (main.go:576) PCDATA $0, $-2 + 0x0159 00345 (main.go:576) CALL runtime.morestack_noctxt(SB) + 0x015e 00350 (main.go:576) PCDATA $0, $-1 + 0x015e 00350 (main.go:576) JMP 0 + 0x0000 64 48 8b 0c 25 00 00 00 00 48 8d 84 24 20 ff ff dH..%....H..$ .. + 0x0010 ff 48 3b 41 10 0f 86 3e 01 00 00 48 81 ec 60 01 .H;A...>...H..`. + 0x0020 00 00 48 89 ac 24 58 01 00 00 48 8d ac 24 58 01 ..H..$X...H..$X. + 0x0030 00 00 48 8d bc 24 d8 00 00 00 48 8d b4 24 78 01 ..H..$....H..$x. + 0x0040 00 00 48 89 6c 24 f0 48 8d 6c 24 f0 e8 00 00 00 ..H.l$.H.l$..... + 0x0050 00 48 8b 6d 00 48 8d 05 00 00 00 00 48 89 04 24 .H.m.H......H..$ + 0x0060 48 8d 84 24 d8 00 00 00 48 89 44 24 08 e8 00 00 H..$....H.D$.... + 0x0070 00 00 48 8b 44 24 10 48 8b 4c 24 18 48 89 04 24 ..H.D$.H.L$.H..$ + 0x0080 48 89 4c 24 08 e8 00 00 00 00 48 8b 44 24 10 48 H.L$......H.D$.H + 0x0090 8b 4c 24 18 48 8b 54 24 20 48 8b 5c 24 28 4c 8b .L$.H.T$ H.\$(L. + 0x00a0 44 24 30 4c 8b 8c 24 68 01 00 00 4c 89 0c 24 4c D$0L..$h...L..$L + 0x00b0 8b 8c 24 70 01 00 00 4c 89 4c 24 08 48 8d 7c 24 ..$p...L.L$.H.|$ + 0x00c0 10 48 8d b4 24 78 01 00 00 48 89 6c 24 f0 48 8d .H..$x...H.l$.H. + 0x00d0 6c 24 f0 e8 00 00 00 00 48 8b 6d 00 4c 8b 8c 24 l$......H.m.L..$ + 0x00e0 f8 01 00 00 4c 89 8c 24 90 00 00 00 48 89 84 24 ....L..$....H..$ + 0x00f0 98 00 00 00 48 89 8c 24 a0 00 00 00 48 89 94 24 ....H..$....H..$ + 0x0100 a8 00 00 00 48 89 9c 24 b0 00 00 00 4c 89 84 24 ....H..$....L..$ + 0x0110 b8 00 00 00 e8 00 00 00 00 48 8b 84 24 c0 00 00 .........H..$... + 0x0120 00 48 8b 8c 24 c8 00 00 00 48 8b 94 24 d0 00 00 .H..$....H..$... + 0x0130 00 48 89 84 24 00 02 00 00 48 89 8c 24 08 02 00 .H..$....H..$... + 0x0140 00 48 89 94 24 10 02 00 00 48 8b ac 24 58 01 00 .H..$....H..$X.. + 0x0150 00 48 81 c4 60 01 00 00 c3 e8 00 00 00 00 e9 9d .H..`........... + 0x0160 fe ff ff ... + rel 5+4 t=17 TLS+0 + rel 77+4 t=8 runtime.duffcopy+784 + rel 88+4 t=16 type."".EventData+0 + rel 110+4 t=8 runtime.convT2E+0 + rel 134+4 t=8 encoding/json.Marshal+0 + rel 212+4 t=8 runtime.duffcopy+784 + rel 277+4 t=8 "".handleStyleError+0 + rel 346+4 t=8 runtime.morestack_noctxt+0 +"".styleForHuman STEXT size=355 args=0xb0 locals=0x160 + 0x0000 00000 (main.go:583) TEXT "".styleForHuman(SB), ABIInternal, $352-176 + 0x0000 00000 (main.go:583) MOVQ (TLS), CX + 0x0009 00009 (main.go:583) LEAQ -224(SP), AX + 0x0011 00017 (main.go:583) CMPQ AX, 16(CX) + 0x0015 00021 (main.go:583) PCDATA $0, $-2 + 0x0015 00021 (main.go:583) JLS 345 + 0x001b 00027 (main.go:583) PCDATA $0, $-1 + 0x001b 00027 (main.go:583) SUBQ $352, SP + 0x0022 00034 (main.go:583) MOVQ BP, 344(SP) + 0x002a 00042 (main.go:583) LEAQ 344(SP), BP + 0x0032 00050 (main.go:583) PCDATA $0, $-2 + 0x0032 00050 (main.go:583) PCDATA $1, $-2 + 0x0032 00050 (main.go:583) FUNCDATA $0, gclocals·6244c9d580b9767a07e5781209477991(SB) + 0x0032 00050 (main.go:583) FUNCDATA $1, gclocals·94618776347a3eaec579421b33bdf4b6(SB) + 0x0032 00050 (main.go:583) FUNCDATA $2, gclocals·22af34315935272476cc5da3823dbfde(SB) + 0x0032 00050 (main.go:583) FUNCDATA $3, "".styleForHuman.stkobj(SB) + 0x0032 00050 (main.go:584) PCDATA $0, $1 + 0x0032 00050 (main.go:584) PCDATA $1, $1 + 0x0032 00050 (main.go:584) LEAQ ""..autotmp_6+216(SP), DI + 0x003a 00058 (main.go:584) PCDATA $0, $2 + 0x003a 00058 (main.go:584) LEAQ "".e+376(SP), SI + 0x0042 00066 (main.go:584) PCDATA $0, $0 + 0x0042 00066 (main.go:584) DUFFCOPY $784 + 0x0055 00085 (main.go:584) PCDATA $0, $3 + 0x0055 00085 (main.go:584) LEAQ type."".EventData(SB), AX + 0x005c 00092 (main.go:584) PCDATA $0, $0 + 0x005c 00092 (main.go:584) MOVQ AX, (SP) + 0x0060 00096 (main.go:584) PCDATA $0, $3 + 0x0060 00096 (main.go:584) PCDATA $1, $0 + 0x0060 00096 (main.go:584) LEAQ ""..autotmp_6+216(SP), AX + 0x0068 00104 (main.go:584) PCDATA $0, $0 + 0x0068 00104 (main.go:584) MOVQ AX, 8(SP) + 0x006d 00109 (main.go:584) CALL runtime.convT2E(SB) + 0x0072 00114 (main.go:584) MOVQ 16(SP), AX + 0x0077 00119 (main.go:584) PCDATA $0, $4 + 0x0077 00119 (main.go:584) MOVQ 24(SP), CX + 0x007c 00124 (main.go:584) MOVQ AX, (SP) + 0x0080 00128 (main.go:584) PCDATA $0, $0 + 0x0080 00128 (main.go:584) MOVQ CX, 8(SP) + 0x0085 00133 (main.go:584) CALL github.com/hokaccha/go-prettyjson.Marshal(SB) + 0x008a 00138 (main.go:584) PCDATA $0, $3 + 0x008a 00138 (main.go:584) MOVQ 16(SP), AX + 0x008f 00143 (main.go:584) MOVQ 24(SP), CX + 0x0094 00148 (main.go:584) MOVQ 32(SP), DX + 0x0099 00153 (main.go:584) MOVQ 40(SP), BX + 0x009e 00158 (main.go:584) PCDATA $0, $5 + 0x009e 00158 (main.go:584) MOVQ 48(SP), R8 + 0x00a3 00163 (main.go:586) MOVQ "".ctx+360(SP), R9 + 0x00ab 00171 (main.go:586) MOVQ R9, (SP) + 0x00af 00175 (main.go:586) PCDATA $0, $6 + 0x00af 00175 (main.go:586) PCDATA $1, $2 + 0x00af 00175 (main.go:586) MOVQ "".ctx+368(SP), R9 + 0x00b7 00183 (main.go:586) PCDATA $0, $5 + 0x00b7 00183 (main.go:586) MOVQ R9, 8(SP) + 0x00bc 00188 (main.go:586) PCDATA $0, $7 + 0x00bc 00188 (main.go:586) LEAQ 16(SP), DI + 0x00c1 00193 (main.go:586) PCDATA $0, $8 + 0x00c1 00193 (main.go:586) PCDATA $1, $3 + 0x00c1 00193 (main.go:586) LEAQ "".e+376(SP), SI + 0x00c9 00201 (main.go:586) PCDATA $0, $5 + 0x00c9 00201 (main.go:586) DUFFCOPY $784 + 0x00dc 00220 (main.go:586) PCDATA $0, $6 + 0x00dc 00220 (main.go:586) PCDATA $1, $4 + 0x00dc 00220 (main.go:586) MOVQ "".ef+504(SP), R9 + 0x00e4 00228 (main.go:586) PCDATA $0, $5 + 0x00e4 00228 (main.go:586) MOVQ R9, 144(SP) + 0x00ec 00236 (main.go:586) PCDATA $0, $9 + 0x00ec 00236 (main.go:586) MOVQ AX, 152(SP) + 0x00f4 00244 (main.go:586) MOVQ CX, 160(SP) + 0x00fc 00252 (main.go:586) MOVQ DX, 168(SP) + 0x0104 00260 (main.go:586) MOVQ BX, 176(SP) + 0x010c 00268 (main.go:586) PCDATA $0, $0 + 0x010c 00268 (main.go:586) MOVQ R8, 184(SP) + 0x0114 00276 (main.go:586) CALL "".handleStyleError(SB) + 0x0119 00281 (main.go:586) PCDATA $0, $3 + 0x0119 00281 (main.go:586) MOVQ 192(SP), AX + 0x0121 00289 (main.go:586) MOVQ 200(SP), CX + 0x0129 00297 (main.go:586) MOVQ 208(SP), DX + 0x0131 00305 (main.go:586) PCDATA $0, $0 + 0x0131 00305 (main.go:586) PCDATA $1, $5 + 0x0131 00305 (main.go:586) MOVQ AX, "".~r3+512(SP) + 0x0139 00313 (main.go:586) MOVQ CX, "".~r3+520(SP) + 0x0141 00321 (main.go:586) MOVQ DX, "".~r3+528(SP) + 0x0149 00329 (main.go:586) MOVQ 344(SP), BP + 0x0151 00337 (main.go:586) ADDQ $352, SP + 0x0158 00344 (main.go:586) RET + 0x0159 00345 (main.go:586) NOP + 0x0159 00345 (main.go:583) PCDATA $1, $-1 + 0x0159 00345 (main.go:583) PCDATA $0, $-2 + 0x0159 00345 (main.go:583) CALL runtime.morestack_noctxt(SB) + 0x015e 00350 (main.go:583) PCDATA $0, $-1 + 0x015e 00350 (main.go:583) JMP 0 + 0x0000 64 48 8b 0c 25 00 00 00 00 48 8d 84 24 20 ff ff dH..%....H..$ .. + 0x0010 ff 48 3b 41 10 0f 86 3e 01 00 00 48 81 ec 60 01 .H;A...>...H..`. + 0x0020 00 00 48 89 ac 24 58 01 00 00 48 8d ac 24 58 01 ..H..$X...H..$X. + 0x0030 00 00 48 8d bc 24 d8 00 00 00 48 8d b4 24 78 01 ..H..$....H..$x. + 0x0040 00 00 48 89 6c 24 f0 48 8d 6c 24 f0 e8 00 00 00 ..H.l$.H.l$..... + 0x0050 00 48 8b 6d 00 48 8d 05 00 00 00 00 48 89 04 24 .H.m.H......H..$ + 0x0060 48 8d 84 24 d8 00 00 00 48 89 44 24 08 e8 00 00 H..$....H.D$.... + 0x0070 00 00 48 8b 44 24 10 48 8b 4c 24 18 48 89 04 24 ..H.D$.H.L$.H..$ + 0x0080 48 89 4c 24 08 e8 00 00 00 00 48 8b 44 24 10 48 H.L$......H.D$.H + 0x0090 8b 4c 24 18 48 8b 54 24 20 48 8b 5c 24 28 4c 8b .L$.H.T$ H.\$(L. + 0x00a0 44 24 30 4c 8b 8c 24 68 01 00 00 4c 89 0c 24 4c D$0L..$h...L..$L + 0x00b0 8b 8c 24 70 01 00 00 4c 89 4c 24 08 48 8d 7c 24 ..$p...L.L$.H.|$ + 0x00c0 10 48 8d b4 24 78 01 00 00 48 89 6c 24 f0 48 8d .H..$x...H.l$.H. + 0x00d0 6c 24 f0 e8 00 00 00 00 48 8b 6d 00 4c 8b 8c 24 l$......H.m.L..$ + 0x00e0 f8 01 00 00 4c 89 8c 24 90 00 00 00 48 89 84 24 ....L..$....H..$ + 0x00f0 98 00 00 00 48 89 8c 24 a0 00 00 00 48 89 94 24 ....H..$....H..$ + 0x0100 a8 00 00 00 48 89 9c 24 b0 00 00 00 4c 89 84 24 ....H..$....L..$ + 0x0110 b8 00 00 00 e8 00 00 00 00 48 8b 84 24 c0 00 00 .........H..$... + 0x0120 00 48 8b 8c 24 c8 00 00 00 48 8b 94 24 d0 00 00 .H..$....H..$... + 0x0130 00 48 89 84 24 00 02 00 00 48 89 8c 24 08 02 00 .H..$....H..$... + 0x0140 00 48 89 94 24 10 02 00 00 48 8b ac 24 58 01 00 .H..$....H..$X.. + 0x0150 00 48 81 c4 60 01 00 00 c3 e8 00 00 00 00 e9 9d .H..`........... + 0x0160 fe ff ff ... + rel 5+4 t=17 TLS+0 + rel 77+4 t=8 runtime.duffcopy+784 + rel 88+4 t=16 type."".EventData+0 + rel 110+4 t=8 runtime.convT2E+0 + rel 134+4 t=8 github.com/hokaccha/go-prettyjson.Marshal+0 + rel 212+4 t=8 runtime.duffcopy+784 + rel 277+4 t=8 "".handleStyleError+0 + rel 346+4 t=8 runtime.morestack_noctxt+0 +"".print STEXT size=627 args=0x18 locals=0x78 + 0x0000 00000 (main.go:589) TEXT "".print(SB), ABIInternal, $120-24 + 0x0000 00000 (main.go:589) MOVQ (TLS), CX + 0x0009 00009 (main.go:589) CMPQ SP, 16(CX) + 0x000d 00013 (main.go:589) PCDATA $0, $-2 + 0x000d 00013 (main.go:589) JLS 617 + 0x0013 00019 (main.go:589) PCDATA $0, $-1 + 0x0013 00019 (main.go:589) SUBQ $120, SP + 0x0017 00023 (main.go:589) MOVQ BP, 112(SP) + 0x001c 00028 (main.go:589) LEAQ 112(SP), BP + 0x0021 00033 (main.go:589) MOVQ $0, AX + 0x0028 00040 (main.go:589) MOVQ AX, 104(SP) + 0x002d 00045 (main.go:589) PCDATA $0, $-2 + 0x002d 00045 (main.go:589) PCDATA $1, $-2 + 0x002d 00045 (main.go:589) FUNCDATA $0, gclocals·30dc4a1cf5d268fcef4a8ccf2243acc1(SB) + 0x002d 00045 (main.go:589) FUNCDATA $1, gclocals·139bb4c7abf5fbe2c48c5e3f8e038ff2(SB) + 0x002d 00045 (main.go:589) FUNCDATA $2, gclocals·7fc30601da81e27b0382f65a8d424ad8(SB) + 0x002d 00045 (main.go:589) FUNCDATA $3, "".print.stkobj(SB) + 0x002d 00045 (main.go:589) FUNCDATA $5, "".print.opendefer(SB) + 0x002d 00045 (main.go:589) PCDATA $0, $0 + 0x002d 00045 (main.go:589) PCDATA $1, $0 + 0x002d 00045 (main.go:589) MOVB $0, ""..autotmp_20+71(SP) + 0x0032 00050 (main.go:590) MOVQ "".b+136(SP), AX + 0x003a 00058 (main.go:590) TESTQ AX, AX + 0x003d 00061 (main.go:590) JNE 73 + 0x003f 00063 (main.go:591) PCDATA $0, $-1 + 0x003f 00063 (main.go:591) PCDATA $1, $-1 + 0x003f 00063 (main.go:591) MOVQ 112(SP), BP + 0x0044 00068 (main.go:591) ADDQ $120, SP + 0x0048 00072 (main.go:591) RET + 0x0049 00073 (main.go:595) PCDATA $0, $0 + 0x0049 00073 (main.go:595) PCDATA $1, $0 + 0x0049 00073 (main.go:595) MOVQ $0, (SP) + 0x0051 00081 (main.go:595) PCDATA $0, $1 + 0x0051 00081 (main.go:595) MOVQ "".b+128(SP), CX + 0x0059 00089 (main.go:595) PCDATA $0, $0 + 0x0059 00089 (main.go:595) MOVQ CX, 8(SP) + 0x005e 00094 (main.go:595) MOVQ AX, 16(SP) + 0x0063 00099 (main.go:595) MOVQ "".b+144(SP), DX + 0x006b 00107 (main.go:595) MOVQ DX, 24(SP) + 0x0070 00112 (main.go:595) CALL runtime.slicebytetostring(SB) + 0x0075 00117 (main.go:595) MOVQ 40(SP), AX + 0x007a 00122 (main.go:595) PCDATA $0, $1 + 0x007a 00122 (main.go:595) MOVQ 32(SP), CX + 0x007f 00127 (main.go:595) PCDATA $0, $0 + 0x007f 00127 (main.go:595) MOVQ CX, (SP) + 0x0083 00131 (main.go:595) MOVQ AX, 8(SP) + 0x0088 00136 (main.go:595) CALL runtime.convTstring(SB) + 0x008d 00141 (main.go:595) PCDATA $0, $2 + 0x008d 00141 (main.go:595) MOVQ 16(SP), AX + 0x0092 00146 (main.go:595) PCDATA $1, $1 + 0x0092 00146 (main.go:595) XORPS X0, X0 + 0x0095 00149 (main.go:595) MOVUPS X0, ""..autotmp_6+88(SP) + 0x009a 00154 (main.go:595) PCDATA $0, $3 + 0x009a 00154 (main.go:595) LEAQ type.string(SB), CX + 0x00a1 00161 (main.go:595) PCDATA $0, $2 + 0x00a1 00161 (main.go:595) MOVQ CX, ""..autotmp_6+88(SP) + 0x00a6 00166 (main.go:595) PCDATA $0, $0 + 0x00a6 00166 (main.go:595) MOVQ AX, ""..autotmp_6+96(SP) + 0x00ab 00171 (main.go:595) MOVQ "".destination(SB), AX + 0x00b2 00178 (main.go:595) PCDATA $0, $4 + 0x00b2 00178 (main.go:595) MOVQ "".destination+8(SB), DX + 0x00b9 00185 (main.go:595) MOVQ AX, (SP) + 0x00bd 00189 (main.go:595) PCDATA $0, $0 + 0x00bd 00189 (main.go:595) MOVQ DX, 8(SP) + 0x00c2 00194 (main.go:595) PCDATA $0, $2 + 0x00c2 00194 (main.go:595) PCDATA $1, $0 + 0x00c2 00194 (main.go:595) LEAQ ""..autotmp_6+88(SP), AX + 0x00c7 00199 (main.go:595) PCDATA $0, $0 + 0x00c7 00199 (main.go:595) MOVQ AX, 16(SP) + 0x00cc 00204 (main.go:595) MOVQ $1, 24(SP) + 0x00d5 00213 (main.go:595) MOVQ $1, 32(SP) + 0x00de 00222 (main.go:595) CALL fmt.Fprintln(SB) + 0x00e3 00227 (main.go:595) MOVQ "".b+136(SP), AX + 0x00eb 00235 (main.go:595) LEAQ 1(AX), CX + 0x00ef 00239 (main.go:595) MOVQ CX, ""..autotmp_27+72(SP) + 0x00f4 00244 (main.go:595) MOVQ 48(SP), DX + 0x00f9 00249 (main.go:595) CMPQ DX, $0 + 0x00fd 00253 (main.go:595) CMPQ 40(SP), CX + 0x0102 00258 (main.go:595) JNE 276 + 0x0104 00260 (main.go:595) CMPQ DX, $0 + 0x0108 00264 (main.go:595) JNE 276 + 0x010a 00266 (main.go:613) PCDATA $0, $-1 + 0x010a 00266 (main.go:613) PCDATA $1, $-1 + 0x010a 00266 (main.go:613) MOVQ 112(SP), BP + 0x010f 00271 (main.go:613) ADDQ $120, SP + 0x0113 00275 (main.go:613) RET + 0x0114 00276 (main.go:597) PCDATA $0, $0 + 0x0114 00276 (main.go:597) PCDATA $1, $0 + 0x0114 00276 (main.go:597) MOVQ $0, (SP) + 0x011c 00284 (main.go:597) PCDATA $0, $1 + 0x011c 00284 (main.go:597) MOVQ "".b+128(SP), CX + 0x0124 00292 (main.go:597) PCDATA $0, $0 + 0x0124 00292 (main.go:597) MOVQ CX, 8(SP) + 0x0129 00297 (main.go:597) MOVQ AX, 16(SP) + 0x012e 00302 (main.go:597) PCDATA $1, $2 + 0x012e 00302 (main.go:597) MOVQ "".b+144(SP), AX + 0x0136 00310 (main.go:597) MOVQ AX, 24(SP) + 0x013b 00315 (main.go:597) CALL runtime.slicebytetostring(SB) + 0x0140 00320 (main.go:597) MOVQ 40(SP), AX + 0x0145 00325 (main.go:597) PCDATA $0, $1 + 0x0145 00325 (main.go:597) MOVQ 32(SP), CX + 0x014a 00330 (main.go:597) PCDATA $0, $0 + 0x014a 00330 (main.go:597) MOVQ CX, (SP) + 0x014e 00334 (main.go:597) MOVQ AX, 8(SP) + 0x0153 00339 (main.go:597) CALL runtime.convTstring(SB) + 0x0158 00344 (main.go:597) PCDATA $0, $2 + 0x0158 00344 (main.go:597) MOVQ 16(SP), AX + 0x015d 00349 (main.go:597) PCDATA $1, $3 + 0x015d 00349 (main.go:597) XORPS X0, X0 + 0x0160 00352 (main.go:597) MOVUPS X0, ""..autotmp_6+88(SP) + 0x0165 00357 (main.go:597) PCDATA $0, $3 + 0x0165 00357 (main.go:597) LEAQ type.string(SB), CX + 0x016c 00364 (main.go:597) PCDATA $0, $2 + 0x016c 00364 (main.go:597) MOVQ CX, ""..autotmp_6+88(SP) + 0x0171 00369 (main.go:597) PCDATA $0, $0 + 0x0171 00369 (main.go:597) MOVQ AX, ""..autotmp_6+96(SP) + 0x0176 00374 (main.go:597) PCDATA $0, $2 + 0x0176 00374 (main.go:597) MOVQ "".fallbackDestination+8(SB), AX + 0x017d 00381 (main.go:597) MOVQ "".fallbackDestination(SB), DX + 0x0184 00388 (main.go:597) MOVQ DX, (SP) + 0x0188 00392 (main.go:597) PCDATA $0, $0 + 0x0188 00392 (main.go:597) MOVQ AX, 8(SP) + 0x018d 00397 (main.go:597) PCDATA $0, $2 + 0x018d 00397 (main.go:597) PCDATA $1, $2 + 0x018d 00397 (main.go:597) LEAQ ""..autotmp_6+88(SP), AX + 0x0192 00402 (main.go:597) PCDATA $0, $0 + 0x0192 00402 (main.go:597) MOVQ AX, 16(SP) + 0x0197 00407 (main.go:597) MOVQ $1, 24(SP) + 0x01a0 00416 (main.go:597) MOVQ $1, 32(SP) + 0x01a9 00425 (main.go:597) CALL fmt.Fprintln(SB) + 0x01ae 00430 (main.go:597) PCDATA $0, $2 + 0x01ae 00430 (main.go:597) MOVQ 56(SP), AX + 0x01b3 00435 (main.go:597) MOVQ 48(SP), CX + 0x01b8 00440 (main.go:597) MOVQ ""..autotmp_27+72(SP), DX + 0x01bd 00445 (main.go:597) CMPQ 40(SP), DX + 0x01c2 00450 (main.go:597) JNE 461 + 0x01c4 00452 (main.go:597) TESTQ CX, CX + 0x01c7 00455 (main.go:597) JEQ 266 + 0x01cd 00461 (main.go:609) PCDATA $0, $5 + 0x01cd 00461 (main.go:609) LEAQ os.Exit·f(SB), DX + 0x01d4 00468 (main.go:609) PCDATA $0, $2 + 0x01d4 00468 (main.go:609) PCDATA $1, $4 + 0x01d4 00468 (main.go:609) MOVQ DX, ""..autotmp_21+104(SP) + 0x01d9 00473 (main.go:609) MOVQ $1, ""..autotmp_22+80(SP) + 0x01e2 00482 (main.go:609) MOVB $1, ""..autotmp_20+71(SP) + 0x01e7 00487 (main.go:610) MOVQ 24(CX), CX + 0x01eb 00491 (main.go:610) PCDATA $0, $0 + 0x01eb 00491 (main.go:610) MOVQ AX, (SP) + 0x01ef 00495 (main.go:610) CALL CX + 0x01f1 00497 (main.go:610) PCDATA $0, $2 + 0x01f1 00497 (main.go:610) MOVQ 8(SP), AX + 0x01f6 00502 (main.go:610) MOVQ 16(SP), CX + 0x01fb 00507 (main.go:610) MOVQ $0, (SP) + 0x0203 00515 (main.go:610) PCDATA $0, $5 + 0x0203 00515 (main.go:610) LEAQ go.string."error writing log data: "(SB), DX + 0x020a 00522 (main.go:610) PCDATA $0, $2 + 0x020a 00522 (main.go:610) MOVQ DX, 8(SP) + 0x020f 00527 (main.go:610) MOVQ $24, 16(SP) + 0x0218 00536 (main.go:610) PCDATA $0, $0 + 0x0218 00536 (main.go:610) MOVQ AX, 24(SP) + 0x021d 00541 (main.go:610) MOVQ CX, 32(SP) + 0x0222 00546 (main.go:610) CALL runtime.concatstring2(SB) + 0x0227 00551 (main.go:610) PCDATA $0, $2 + 0x0227 00551 (main.go:610) MOVQ 40(SP), AX + 0x022c 00556 (main.go:610) MOVQ 48(SP), CX + 0x0231 00561 (main.go:610) PCDATA $0, $0 + 0x0231 00561 (main.go:610) MOVQ AX, (SP) + 0x0235 00565 (main.go:610) MOVQ CX, 8(SP) + 0x023a 00570 (main.go:610) CALL runtime.convTstring(SB) + 0x023f 00575 (main.go:610) PCDATA $0, $2 + 0x023f 00575 (main.go:610) MOVQ 16(SP), AX + 0x0244 00580 (main.go:610) PCDATA $0, $3 + 0x0244 00580 (main.go:610) LEAQ type.string(SB), CX + 0x024b 00587 (main.go:610) PCDATA $0, $2 + 0x024b 00587 (main.go:610) MOVQ CX, (SP) + 0x024f 00591 (main.go:610) PCDATA $0, $0 + 0x024f 00591 (main.go:610) MOVQ AX, 8(SP) + 0x0254 00596 (main.go:610) CALL runtime.gopanic(SB) + 0x0259 00601 (main.go:610) XCHGL AX, AX + 0x025a 00602 (main.go:610) PCDATA $1, $0 + 0x025a 00602 (main.go:610) CALL runtime.deferreturn(SB) + 0x025f 00607 (main.go:610) MOVQ 112(SP), BP + 0x0264 00612 (main.go:610) ADDQ $120, SP + 0x0268 00616 (main.go:610) RET + 0x0269 00617 (main.go:610) NOP + 0x0269 00617 (main.go:589) PCDATA $1, $-1 + 0x0269 00617 (main.go:589) PCDATA $0, $-2 + 0x0269 00617 (main.go:589) CALL runtime.morestack_noctxt(SB) + 0x026e 00622 (main.go:589) PCDATA $0, $-1 + 0x026e 00622 (main.go:589) JMP 0 + 0x0000 64 48 8b 0c 25 00 00 00 00 48 3b 61 10 0f 86 56 dH..%....H;a...V + 0x0010 02 00 00 48 83 ec 78 48 89 6c 24 70 48 8d 6c 24 ...H..xH.l$pH.l$ + 0x0020 70 48 c7 c0 00 00 00 00 48 89 44 24 68 c6 44 24 pH......H.D$h.D$ + 0x0030 47 00 48 8b 84 24 88 00 00 00 48 85 c0 75 0a 48 G.H..$....H..u.H + 0x0040 8b 6c 24 70 48 83 c4 78 c3 48 c7 04 24 00 00 00 .l$pH..x.H..$... + 0x0050 00 48 8b 8c 24 80 00 00 00 48 89 4c 24 08 48 89 .H..$....H.L$.H. + 0x0060 44 24 10 48 8b 94 24 90 00 00 00 48 89 54 24 18 D$.H..$....H.T$. + 0x0070 e8 00 00 00 00 48 8b 44 24 28 48 8b 4c 24 20 48 .....H.D$(H.L$ H + 0x0080 89 0c 24 48 89 44 24 08 e8 00 00 00 00 48 8b 44 ..$H.D$......H.D + 0x0090 24 10 0f 57 c0 0f 11 44 24 58 48 8d 0d 00 00 00 $..W...D$XH..... + 0x00a0 00 48 89 4c 24 58 48 89 44 24 60 48 8b 05 00 00 .H.L$XH.D$`H.... + 0x00b0 00 00 48 8b 15 00 00 00 00 48 89 04 24 48 89 54 ..H......H..$H.T + 0x00c0 24 08 48 8d 44 24 58 48 89 44 24 10 48 c7 44 24 $.H.D$XH.D$.H.D$ + 0x00d0 18 01 00 00 00 48 c7 44 24 20 01 00 00 00 e8 00 .....H.D$ ...... + 0x00e0 00 00 00 48 8b 84 24 88 00 00 00 48 8d 48 01 48 ...H..$....H.H.H + 0x00f0 89 4c 24 48 48 8b 54 24 30 48 83 fa 00 48 39 4c .L$HH.T$0H...H9L + 0x0100 24 28 75 10 48 83 fa 00 75 0a 48 8b 6c 24 70 48 $(u.H...u.H.l$pH + 0x0110 83 c4 78 c3 48 c7 04 24 00 00 00 00 48 8b 8c 24 ..x.H..$....H..$ + 0x0120 80 00 00 00 48 89 4c 24 08 48 89 44 24 10 48 8b ....H.L$.H.D$.H. + 0x0130 84 24 90 00 00 00 48 89 44 24 18 e8 00 00 00 00 .$....H.D$...... + 0x0140 48 8b 44 24 28 48 8b 4c 24 20 48 89 0c 24 48 89 H.D$(H.L$ H..$H. + 0x0150 44 24 08 e8 00 00 00 00 48 8b 44 24 10 0f 57 c0 D$......H.D$..W. + 0x0160 0f 11 44 24 58 48 8d 0d 00 00 00 00 48 89 4c 24 ..D$XH......H.L$ + 0x0170 58 48 89 44 24 60 48 8b 05 00 00 00 00 48 8b 15 XH.D$`H......H.. + 0x0180 00 00 00 00 48 89 14 24 48 89 44 24 08 48 8d 44 ....H..$H.D$.H.D + 0x0190 24 58 48 89 44 24 10 48 c7 44 24 18 01 00 00 00 $XH.D$.H.D$..... + 0x01a0 48 c7 44 24 20 01 00 00 00 e8 00 00 00 00 48 8b H.D$ .........H. + 0x01b0 44 24 38 48 8b 4c 24 30 48 8b 54 24 48 48 39 54 D$8H.L$0H.T$HH9T + 0x01c0 24 28 75 09 48 85 c9 0f 84 3d ff ff ff 48 8d 15 $(u.H....=...H.. + 0x01d0 00 00 00 00 48 89 54 24 68 48 c7 44 24 50 01 00 ....H.T$hH.D$P.. + 0x01e0 00 00 c6 44 24 47 01 48 8b 49 18 48 89 04 24 ff ...D$G.H.I.H..$. + 0x01f0 d1 48 8b 44 24 08 48 8b 4c 24 10 48 c7 04 24 00 .H.D$.H.L$.H..$. + 0x0200 00 00 00 48 8d 15 00 00 00 00 48 89 54 24 08 48 ...H......H.T$.H + 0x0210 c7 44 24 10 18 00 00 00 48 89 44 24 18 48 89 4c .D$.....H.D$.H.L + 0x0220 24 20 e8 00 00 00 00 48 8b 44 24 28 48 8b 4c 24 $ .....H.D$(H.L$ + 0x0230 30 48 89 04 24 48 89 4c 24 08 e8 00 00 00 00 48 0H..$H.L$......H + 0x0240 8b 44 24 10 48 8d 0d 00 00 00 00 48 89 0c 24 48 .D$.H......H..$H + 0x0250 89 44 24 08 e8 00 00 00 00 90 e8 00 00 00 00 48 .D$............H + 0x0260 8b 6c 24 70 48 83 c4 78 c3 e8 00 00 00 00 e9 8d .l$pH..x........ + 0x0270 fd ff ff ... + rel 5+4 t=17 TLS+0 + rel 113+4 t=8 runtime.slicebytetostring+0 + rel 137+4 t=8 runtime.convTstring+0 + rel 157+4 t=16 type.string+0 + rel 174+4 t=16 "".destination+0 + rel 181+4 t=16 "".destination+8 + rel 223+4 t=8 fmt.Fprintln+0 + rel 316+4 t=8 runtime.slicebytetostring+0 + rel 340+4 t=8 runtime.convTstring+0 + rel 360+4 t=16 type.string+0 + rel 377+4 t=16 "".fallbackDestination+8 + rel 384+4 t=16 "".fallbackDestination+0 + rel 426+4 t=8 fmt.Fprintln+0 + rel 464+4 t=16 os.Exit·f+0 + rel 495+0 t=11 +0 + rel 518+4 t=16 go.string."error writing log data: "+0 + rel 547+4 t=8 runtime.concatstring2+0 + rel 571+4 t=8 runtime.convTstring+0 + rel 583+4 t=16 type.string+0 + rel 597+4 t=8 runtime.gopanic+0 + rel 603+4 t=8 runtime.deferreturn+0 + rel 618+4 t=8 runtime.morestack_noctxt+0 +"".severity.attach STEXT size=106 args=0x10 locals=0x18 + 0x0000 00000 (main.go:634) TEXT "".severity.attach(SB), ABIInternal, $24-16 + 0x0000 00000 (main.go:634) MOVQ (TLS), CX + 0x0009 00009 (main.go:634) CMPQ SP, 16(CX) + 0x000d 00013 (main.go:634) PCDATA $0, $-2 + 0x000d 00013 (main.go:634) JLS 99 + 0x000f 00015 (main.go:634) PCDATA $0, $-1 + 0x000f 00015 (main.go:634) SUBQ $24, SP + 0x0013 00019 (main.go:634) MOVQ BP, 16(SP) + 0x0018 00024 (main.go:634) LEAQ 16(SP), BP + 0x001d 00029 (main.go:634) PCDATA $0, $-2 + 0x001d 00029 (main.go:634) PCDATA $1, $-2 + 0x001d 00029 (main.go:634) FUNCDATA $0, gclocals·09cf9819fc716118c209c2d2155a3632(SB) + 0x001d 00029 (main.go:634) FUNCDATA $1, gclocals·69c1753bd5f81501d95132d08af04464(SB) + 0x001d 00029 (main.go:634) FUNCDATA $2, gclocals·bfec7e55b3f043d1941c093912808913(SB) + 0x001d 00029 (main.go:634) PCDATA $0, $1 + 0x001d 00029 (main.go:634) PCDATA $1, $0 + 0x001d 00029 (main.go:634) LEAQ type."".severity(SB), AX + 0x0024 00036 (main.go:634) PCDATA $0, $0 + 0x0024 00036 (main.go:634) MOVQ AX, (SP) + 0x0028 00040 (main.go:634) CALL runtime.newobject(SB) + 0x002d 00045 (main.go:634) PCDATA $0, $1 + 0x002d 00045 (main.go:634) MOVQ 8(SP), AX + 0x0032 00050 (main.go:634) MOVQ "".s+32(SP), CX + 0x0037 00055 (main.go:634) MOVQ CX, (AX) + 0x003a 00058 (main.go:635) PCDATA $0, $2 + 0x003a 00058 (main.go:635) PCDATA $1, $1 + 0x003a 00058 (main.go:635) MOVQ "".le+40(SP), CX + 0x003f 00063 (main.go:635) TESTB AL, (CX) + 0x0041 00065 (main.go:635) PCDATA $0, $-2 + 0x0041 00065 (main.go:635) PCDATA $1, $-2 + 0x0041 00065 (main.go:635) CMPL runtime.writeBarrier(SB), $0 + 0x0048 00072 (main.go:635) JNE 88 + 0x004a 00074 (main.go:635) MOVQ AX, 88(CX) + 0x004e 00078 (main.go:636) PCDATA $0, $-1 + 0x004e 00078 (main.go:636) PCDATA $1, $-1 + 0x004e 00078 (main.go:636) MOVQ 16(SP), BP + 0x0053 00083 (main.go:636) ADDQ $24, SP + 0x0057 00087 (main.go:636) RET + 0x0058 00088 (main.go:635) PCDATA $0, $-2 + 0x0058 00088 (main.go:635) PCDATA $1, $-2 + 0x0058 00088 (main.go:635) LEAQ 88(CX), DI + 0x005c 00092 (main.go:635) CALL runtime.gcWriteBarrier(SB) + 0x0061 00097 (main.go:635) JMP 78 + 0x0063 00099 (main.go:635) NOP + 0x0063 00099 (main.go:634) PCDATA $1, $-1 + 0x0063 00099 (main.go:634) PCDATA $0, $-2 + 0x0063 00099 (main.go:634) CALL runtime.morestack_noctxt(SB) + 0x0068 00104 (main.go:634) PCDATA $0, $-1 + 0x0068 00104 (main.go:634) JMP 0 + 0x0000 64 48 8b 0c 25 00 00 00 00 48 3b 61 10 76 54 48 dH..%....H;a.vTH + 0x0010 83 ec 18 48 89 6c 24 10 48 8d 6c 24 10 48 8d 05 ...H.l$.H.l$.H.. + 0x0020 00 00 00 00 48 89 04 24 e8 00 00 00 00 48 8b 44 ....H..$.....H.D + 0x0030 24 08 48 8b 4c 24 20 48 89 08 48 8b 4c 24 28 84 $.H.L$ H..H.L$(. + 0x0040 01 83 3d 00 00 00 00 00 75 0e 48 89 41 58 48 8b ..=.....u.H.AXH. + 0x0050 6c 24 10 48 83 c4 18 c3 48 8d 79 58 e8 00 00 00 l$.H....H.yX.... + 0x0060 00 eb eb e8 00 00 00 00 eb 96 .......... + rel 5+4 t=17 TLS+0 + rel 32+4 t=16 type."".severity+0 + rel 41+4 t=8 runtime.newobject+0 + rel 67+4 t=16 runtime.writeBarrier+-1 + rel 93+4 t=8 runtime.gcWriteBarrier+0 + rel 100+4 t=8 runtime.morestack_noctxt+0 +"".init STEXT size=294 args=0x0 locals=0x18 + 0x0000 00000 (main.go:355) TEXT "".init(SB), ABIInternal, $24-0 + 0x0000 00000 (main.go:355) MOVQ (TLS), CX + 0x0009 00009 (main.go:355) CMPQ SP, 16(CX) + 0x000d 00013 (main.go:355) PCDATA $0, $-2 + 0x000d 00013 (main.go:355) JLS 284 + 0x0013 00019 (main.go:355) PCDATA $0, $-1 + 0x0013 00019 (main.go:355) SUBQ $24, SP + 0x0017 00023 (main.go:355) MOVQ BP, 16(SP) + 0x001c 00028 (main.go:355) LEAQ 16(SP), BP + 0x0021 00033 (main.go:355) PCDATA $0, $-2 + 0x0021 00033 (main.go:355) PCDATA $1, $-2 + 0x0021 00033 (main.go:355) FUNCDATA $0, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB) + 0x0021 00033 (main.go:355) FUNCDATA $1, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB) + 0x0021 00033 (main.go:355) FUNCDATA $2, gclocals·765d2c6c57b3d0518b46743a0bf65e42(SB) + 0x0021 00033 (main.go:355) PCDATA $0, $0 + 0x0021 00033 (main.go:355) PCDATA $1, $0 + 0x0021 00033 (main.go:355) MOVQ os.Args+8(SB), CX + 0x0028 00040 (main.go:355) PCDATA $0, $1 + 0x0028 00040 (main.go:355) MOVQ os.Args(SB), DX + 0x002f 00047 (main.go:355) TESTQ CX, CX + 0x0032 00050 (main.go:355) JLS 276 + 0x0038 00056 (main.go:355) PCDATA $0, $2 + 0x0038 00056 (main.go:355) MOVQ (DX), AX + 0x003b 00059 (main.go:355) PCDATA $0, $3 + 0x003b 00059 (main.go:355) MOVQ 8(DX), CX + 0x003f 00063 (main.go:355) MOVQ CX, "".Namespace+8(SB) + 0x0046 00070 (main.go:355) PCDATA $0, $-2 + 0x0046 00070 (main.go:355) PCDATA $1, $-2 + 0x0046 00070 (main.go:355) CMPL runtime.writeBarrier(SB), $0 + 0x004d 00077 (main.go:355) JNE 259 + 0x0053 00083 (main.go:355) MOVQ AX, "".Namespace(SB) + 0x005a 00090 (main.go:357) PCDATA $0, $3 + 0x005a 00090 (main.go:357) PCDATA $1, $0 + 0x005a 00090 (main.go:357) MOVQ os.Stdout(SB), AX + 0x0061 00097 (main.go:357) PCDATA $0, $-2 + 0x0061 00097 (main.go:357) PCDATA $1, $-2 + 0x0061 00097 (main.go:357) CMPL runtime.writeBarrier(SB), $0 + 0x0068 00104 (main.go:357) JNE 242 + 0x006e 00110 (main.go:357) MOVQ AX, "".destination+8(SB) + 0x0075 00117 (main.go:358) PCDATA $0, $3 + 0x0075 00117 (main.go:358) PCDATA $1, $0 + 0x0075 00117 (main.go:358) MOVQ os.Stderr(SB), AX + 0x007c 00124 (main.go:358) PCDATA $0, $-2 + 0x007c 00124 (main.go:358) PCDATA $1, $-2 + 0x007c 00124 (main.go:358) CMPL runtime.writeBarrier(SB), $0 + 0x0083 00131 (main.go:358) JNE 228 + 0x0085 00133 (main.go:358) MOVQ AX, "".fallbackDestination+8(SB) + 0x008c 00140 (main.go:426) PCDATA $0, $0 + 0x008c 00140 (main.go:426) PCDATA $1, $0 + 0x008c 00140 (main.go:426) CALL "".initStyler(SB) + 0x0091 00145 (main.go:426) PCDATA $0, $3 + 0x0091 00145 (main.go:426) MOVQ (SP), AX + 0x0095 00149 (main.go:426) PCDATA $0, $-2 + 0x0095 00149 (main.go:426) PCDATA $1, $-2 + 0x0095 00149 (main.go:426) CMPL runtime.writeBarrier(SB), $0 + 0x009c 00156 (main.go:426) JNE 214 + 0x009e 00158 (main.go:426) MOVQ AX, "".styler(SB) + 0x00a5 00165 (main.go:364) PCDATA $0, $0 + 0x00a5 00165 (main.go:364) PCDATA $1, $0 + 0x00a5 00165 (main.go:364) CALL "".initEvent(SB) + 0x00aa 00170 (main.go:364) PCDATA $0, $3 + 0x00aa 00170 (main.go:364) MOVQ (SP), AX + 0x00ae 00174 (main.go:364) PCDATA $0, $-2 + 0x00ae 00174 (main.go:364) PCDATA $1, $-2 + 0x00ae 00174 (main.go:364) CMPL runtime.writeBarrier(SB), $0 + 0x00b5 00181 (main.go:364) JNE 200 + 0x00b7 00183 (main.go:364) MOVQ AX, "".eventFuncInst(SB) + 0x00be 00190 (main.go:364) PCDATA $0, $-1 + 0x00be 00190 (main.go:364) PCDATA $1, $-1 + 0x00be 00190 (main.go:364) MOVQ 16(SP), BP + 0x00c3 00195 (main.go:364) ADDQ $24, SP + 0x00c7 00199 (main.go:364) RET + 0x00c8 00200 (main.go:364) PCDATA $0, $-2 + 0x00c8 00200 (main.go:364) PCDATA $1, $-2 + 0x00c8 00200 (main.go:364) LEAQ "".eventFuncInst(SB), DI + 0x00cf 00207 (main.go:364) CALL runtime.gcWriteBarrier(SB) + 0x00d4 00212 (main.go:364) JMP 190 + 0x00d6 00214 (main.go:426) LEAQ "".styler(SB), DI + 0x00dd 00221 (main.go:426) CALL runtime.gcWriteBarrier(SB) + 0x00e2 00226 (main.go:426) JMP 165 + 0x00e4 00228 (main.go:358) LEAQ "".fallbackDestination+8(SB), DI + 0x00eb 00235 (main.go:358) CALL runtime.gcWriteBarrier(SB) + 0x00f0 00240 (main.go:358) JMP 140 + 0x00f2 00242 (main.go:357) LEAQ "".destination+8(SB), DI + 0x00f9 00249 (main.go:357) CALL runtime.gcWriteBarrier(SB) + 0x00fe 00254 (main.go:357) JMP 117 + 0x0103 00259 (main.go:355) LEAQ "".Namespace(SB), DI + 0x010a 00266 (main.go:355) CALL runtime.gcWriteBarrier(SB) + 0x010f 00271 (main.go:355) JMP 90 + 0x0114 00276 (main.go:355) PCDATA $0, $0 + 0x0114 00276 (main.go:355) PCDATA $1, $0 + 0x0114 00276 (main.go:355) XORL AX, AX + 0x0116 00278 (main.go:355) CALL runtime.panicIndex(SB) + 0x011b 00283 (main.go:355) XCHGL AX, AX + 0x011c 00284 (main.go:355) NOP + 0x011c 00284 (main.go:355) PCDATA $1, $-1 + 0x011c 00284 (main.go:355) PCDATA $0, $-2 + 0x011c 00284 (main.go:355) CALL runtime.morestack_noctxt(SB) + 0x0121 00289 (main.go:355) PCDATA $0, $-1 + 0x0121 00289 (main.go:355) JMP 0 + 0x0000 64 48 8b 0c 25 00 00 00 00 48 3b 61 10 0f 86 09 dH..%....H;a.... + 0x0010 01 00 00 48 83 ec 18 48 89 6c 24 10 48 8d 6c 24 ...H...H.l$.H.l$ + 0x0020 10 48 8b 0d 00 00 00 00 48 8b 15 00 00 00 00 48 .H......H......H + 0x0030 85 c9 0f 86 dc 00 00 00 48 8b 02 48 8b 4a 08 48 ........H..H.J.H + 0x0040 89 0d 00 00 00 00 83 3d 00 00 00 00 00 0f 85 b0 .......=........ + 0x0050 00 00 00 48 89 05 00 00 00 00 48 8b 05 00 00 00 ...H......H..... + 0x0060 00 83 3d 00 00 00 00 00 0f 85 84 00 00 00 48 89 ..=...........H. + 0x0070 05 00 00 00 00 48 8b 05 00 00 00 00 83 3d 00 00 .....H.......=.. + 0x0080 00 00 00 75 5f 48 89 05 00 00 00 00 e8 00 00 00 ...u_H.......... + 0x0090 00 48 8b 04 24 83 3d 00 00 00 00 00 75 38 48 89 .H..$.=.....u8H. + 0x00a0 05 00 00 00 00 e8 00 00 00 00 48 8b 04 24 83 3d ..........H..$.= + 0x00b0 00 00 00 00 00 75 11 48 89 05 00 00 00 00 48 8b .....u.H......H. + 0x00c0 6c 24 10 48 83 c4 18 c3 48 8d 3d 00 00 00 00 e8 l$.H....H.=..... + 0x00d0 00 00 00 00 eb e8 48 8d 3d 00 00 00 00 e8 00 00 ......H.=....... + 0x00e0 00 00 eb c1 48 8d 3d 00 00 00 00 e8 00 00 00 00 ....H.=......... + 0x00f0 eb 9a 48 8d 3d 00 00 00 00 e8 00 00 00 00 e9 72 ..H.=..........r + 0x0100 ff ff ff 48 8d 3d 00 00 00 00 e8 00 00 00 00 e9 ...H.=.......... + 0x0110 46 ff ff ff 31 c0 e8 00 00 00 00 90 e8 00 00 00 F...1........... + 0x0120 00 e9 da fe ff ff ...... + rel 5+4 t=17 TLS+0 + rel 36+4 t=16 os.Args+8 + rel 43+4 t=16 os.Args+0 + rel 66+4 t=16 "".Namespace+8 + rel 72+4 t=16 runtime.writeBarrier+-1 + rel 86+4 t=16 "".Namespace+0 + rel 93+4 t=16 os.Stdout+0 + rel 99+4 t=16 runtime.writeBarrier+-1 + rel 113+4 t=16 "".destination+8 + rel 120+4 t=16 os.Stderr+0 + rel 126+4 t=16 runtime.writeBarrier+-1 + rel 136+4 t=16 "".fallbackDestination+8 + rel 141+4 t=8 "".initStyler+0 + rel 151+4 t=16 runtime.writeBarrier+-1 + rel 161+4 t=16 "".styler+0 + rel 166+4 t=8 "".initEvent+0 + rel 176+4 t=16 runtime.writeBarrier+-1 + rel 186+4 t=16 "".eventFuncInst+0 + rel 203+4 t=16 "".eventFuncInst+0 + rel 208+4 t=8 runtime.gcWriteBarrier+0 + rel 217+4 t=16 "".styler+0 + rel 222+4 t=8 runtime.gcWriteBarrier+0 + rel 231+4 t=16 "".fallbackDestination+8 + rel 236+4 t=8 runtime.gcWriteBarrier+0 + rel 245+4 t=16 "".destination+8 + rel 250+4 t=8 runtime.gcWriteBarrier+0 + rel 262+4 t=16 "".Namespace+0 + rel 267+4 t=8 runtime.gcWriteBarrier+0 + rel 279+4 t=8 runtime.panicIndex+0 + rel 285+4 t=8 runtime.morestack_noctxt+0 +type..eq.[2]"".option STEXT dupok size=179 args=0x18 locals=0x30 + 0x0000 00000 (:1) TEXT type..eq.[2]"".option(SB), DUPOK|ABIInternal, $48-24 + 0x0000 00000 (:1) MOVQ (TLS), CX + 0x0009 00009 (:1) CMPQ SP, 16(CX) + 0x000d 00013 (:1) PCDATA $0, $-2 + 0x000d 00013 (:1) JLS 169 + 0x0013 00019 (:1) PCDATA $0, $-1 + 0x0013 00019 (:1) SUBQ $48, SP + 0x0017 00023 (:1) MOVQ BP, 40(SP) + 0x001c 00028 (:1) LEAQ 40(SP), BP + 0x0021 00033 (:1) PCDATA $0, $-2 + 0x0021 00033 (:1) PCDATA $1, $-2 + 0x0021 00033 (:1) FUNCDATA $0, gclocals·dc9b0298814590ca3ffc3a889546fc8b(SB) + 0x0021 00033 (:1) FUNCDATA $1, gclocals·69c1753bd5f81501d95132d08af04464(SB) + 0x0021 00033 (:1) FUNCDATA $2, gclocals·313a5bdbfadc4f007c002a3a3588596d(SB) + 0x0021 00033 (:1) PCDATA $0, $1 + 0x0021 00033 (:1) PCDATA $1, $0 + 0x0021 00033 (:1) MOVQ "".p+56(SP), AX + 0x0026 00038 (:1) PCDATA $0, $2 + 0x0026 00038 (:1) MOVQ "".q+64(SP), CX + 0x002b 00043 (:1) XORL DX, DX + 0x002d 00045 (:1) JMP 72 + 0x002f 00047 (:1) PCDATA $0, $0 + 0x002f 00047 (:1) MOVQ ""..autotmp_8+32(SP), BX + 0x0034 00052 (:1) LEAQ 1(BX), DX + 0x0038 00056 (:1) PCDATA $0, $3 + 0x0038 00056 (:1) MOVQ "".p+56(SP), BX + 0x003d 00061 (:1) PCDATA $0, $4 + 0x003d 00061 (:1) MOVQ "".q+64(SP), SI + 0x0042 00066 (:1) PCDATA $0, $5 + 0x0042 00066 (:1) MOVQ BX, AX + 0x0045 00069 (:1) PCDATA $0, $2 + 0x0045 00069 (:1) MOVQ SI, CX + 0x0048 00072 (:1) CMPQ DX, $2 + 0x004c 00076 (:1) JGE 154 + 0x004e 00078 (:1) MOVQ DX, BX + 0x0051 00081 (:1) SHLQ $4, DX + 0x0055 00085 (:1) PCDATA $0, $6 + 0x0055 00085 (:1) MOVQ 8(DX)(AX*1), SI + 0x005a 00090 (:1) PCDATA $0, $7 + 0x005a 00090 (:1) MOVQ (DX)(AX*1), DI + 0x005e 00094 (:1) MOVQ (DX)(CX*1), R8 + 0x0062 00098 (:1) PCDATA $0, $8 + 0x0062 00098 (:1) MOVQ 8(DX)(CX*1), DX + 0x0067 00103 (:1) CMPQ DI, R8 + 0x006a 00106 (:1) JNE 139 + 0x006c 00108 (:1) MOVQ BX, ""..autotmp_8+32(SP) + 0x0071 00113 (:1) MOVQ DI, (SP) + 0x0075 00117 (:1) PCDATA $0, $9 + 0x0075 00117 (:1) MOVQ SI, 8(SP) + 0x007a 00122 (:1) PCDATA $0, $0 + 0x007a 00122 (:1) MOVQ DX, 16(SP) + 0x007f 00127 (:1) CALL runtime.ifaceeq(SB) + 0x0084 00132 (:1) CMPB 24(SP), $0 + 0x0089 00137 (:1) JNE 47 + 0x008b 00139 (:1) PCDATA $1, $1 + 0x008b 00139 (:1) MOVB $0, "".~r2+72(SP) + 0x0090 00144 (:1) MOVQ 40(SP), BP + 0x0095 00149 (:1) ADDQ $48, SP + 0x0099 00153 (:1) RET + 0x009a 00154 (:1) MOVB $1, "".~r2+72(SP) + 0x009f 00159 (:1) MOVQ 40(SP), BP + 0x00a4 00164 (:1) ADDQ $48, SP + 0x00a8 00168 (:1) RET + 0x00a9 00169 (:1) NOP + 0x00a9 00169 (:1) PCDATA $1, $-1 + 0x00a9 00169 (:1) PCDATA $0, $-2 + 0x00a9 00169 (:1) CALL runtime.morestack_noctxt(SB) + 0x00ae 00174 (:1) PCDATA $0, $-1 + 0x00ae 00174 (:1) JMP 0 + 0x0000 64 48 8b 0c 25 00 00 00 00 48 3b 61 10 0f 86 96 dH..%....H;a.... + 0x0010 00 00 00 48 83 ec 30 48 89 6c 24 28 48 8d 6c 24 ...H..0H.l$(H.l$ + 0x0020 28 48 8b 44 24 38 48 8b 4c 24 40 31 d2 eb 19 48 (H.D$8H.L$@1...H + 0x0030 8b 5c 24 20 48 8d 53 01 48 8b 5c 24 38 48 8b 74 .\$ H.S.H.\$8H.t + 0x0040 24 40 48 89 d8 48 89 f1 48 83 fa 02 7d 4c 48 89 $@H..H..H...}LH. + 0x0050 d3 48 c1 e2 04 48 8b 74 02 08 48 8b 3c 02 4c 8b .H...H.t..H.<.L. + 0x0060 04 0a 48 8b 54 0a 08 4c 39 c7 75 1f 48 89 5c 24 ..H.T..L9.u.H.\$ + 0x0070 20 48 89 3c 24 48 89 74 24 08 48 89 54 24 10 e8 H.<$H.t$.H.T$.. + 0x0080 00 00 00 00 80 7c 24 18 00 75 a4 c6 44 24 48 00 .....|$..u..D$H. + 0x0090 48 8b 6c 24 28 48 83 c4 30 c3 c6 44 24 48 01 48 H.l$(H..0..D$H.H + 0x00a0 8b 6c 24 28 48 83 c4 30 c3 e8 00 00 00 00 e9 4d .l$(H..0.......M + 0x00b0 ff ff ff ... + rel 5+4 t=17 TLS+0 + rel 128+4 t=8 runtime.ifaceeq+0 + rel 170+4 t=8 runtime.morestack_noctxt+0 +go.cuinfo.packagename. SDWARFINFO dupok size=0 + 0x0000 6d 61 69 6e main +go.info.reflect.ValueOf$abstract SDWARFINFO dupok size=28 + 0x0000 04 72 65 66 6c 65 63 74 2e 56 61 6c 75 65 4f 66 .reflect.ValueOf + 0x0010 00 01 01 11 69 00 00 00 00 00 00 00 ....i....... + rel 0+0 t=24 type.interface {}+0 + rel 23+4 t=29 go.info.interface {}+0 +go.info.reflect.escapes$abstract SDWARFINFO dupok size=28 + 0x0000 04 72 65 66 6c 65 63 74 2e 65 73 63 61 70 65 73 .reflect.escapes + 0x0010 00 01 01 11 78 00 00 00 00 00 00 00 ....x....... + rel 0+0 t=24 type.interface {}+0 + rel 23+4 t=29 go.info.interface {}+0 +go.info.reflect.unpackEface$abstract SDWARFINFO dupok size=59 + 0x0000 04 72 65 66 6c 65 63 74 2e 75 6e 70 61 63 6b 45 .reflect.unpackE + 0x0010 66 61 63 65 00 01 01 11 69 00 00 00 00 00 00 0c face....i....... + 0x0020 65 00 8d 01 00 00 00 00 0c 74 00 8f 01 00 00 00 e........t...... + 0x0030 00 0c 66 00 93 01 00 00 00 00 00 ..f........ + rel 0+0 t=24 type.*reflect.emptyInterface+0 + rel 0+0 t=24 type.*reflect.rtype+0 + rel 0+0 t=24 type.interface {}+0 + rel 0+0 t=24 type.reflect.flag+0 + rel 27+4 t=29 go.info.interface {}+0 + rel 36+4 t=29 go.info.*reflect.emptyInterface+0 + rel 45+4 t=29 go.info.*reflect.rtype+0 + rel 54+4 t=29 go.info.reflect.flag+0 +go.info.reflect.(*rtype).Kind$abstract SDWARFINFO dupok size=34 + 0x0000 04 72 65 66 6c 65 63 74 2e 28 2a 72 74 79 70 65 .reflect.(*rtype + 0x0010 29 2e 4b 69 6e 64 00 01 01 11 74 00 00 00 00 00 ).Kind....t..... + 0x0020 00 00 .. + rel 0+0 t=24 type.*reflect.rtype+0 + rel 29+4 t=29 go.info.*reflect.rtype+0 +go.info.reflect.ifaceIndir$abstract SDWARFINFO dupok size=31 + 0x0000 04 72 65 66 6c 65 63 74 2e 69 66 61 63 65 49 6e .reflect.ifaceIn + 0x0010 64 69 72 00 01 01 11 74 00 00 00 00 00 00 00 dir....t....... + rel 0+0 t=24 type.*reflect.rtype+0 + rel 26+4 t=29 go.info.*reflect.rtype+0 +go.info.reflect.Indirect$abstract SDWARFINFO dupok size=29 + 0x0000 04 72 65 66 6c 65 63 74 2e 49 6e 64 69 72 65 63 .reflect.Indirec + 0x0010 74 00 01 01 11 76 00 00 00 00 00 00 00 t....v....... + rel 0+0 t=24 type.reflect.Value+0 + rel 24+4 t=29 go.info.reflect.Value+0 +go.info.reflect.Value.Kind$abstract SDWARFINFO dupok size=31 + 0x0000 04 72 65 66 6c 65 63 74 2e 56 61 6c 75 65 2e 4b .reflect.Value.K + 0x0010 69 6e 64 00 01 01 11 76 00 00 00 00 00 00 00 ind....v....... + rel 0+0 t=24 type.reflect.Value+0 + rel 26+4 t=29 go.info.reflect.Value+0 +go.info.reflect.flag.kind$abstract SDWARFINFO dupok size=30 + 0x0000 04 72 65 66 6c 65 63 74 2e 66 6c 61 67 2e 6b 69 .reflect.flag.ki + 0x0010 6e 64 00 01 01 11 66 00 00 00 00 00 00 00 nd....f....... + rel 0+0 t=24 type.reflect.flag+0 + rel 25+4 t=29 go.info.reflect.flag+0 +go.info.runtime.Callers$abstract SDWARFINFO dupok size=40 + 0x0000 04 72 75 6e 74 69 6d 65 2e 43 61 6c 6c 65 72 73 .runtime.Callers + 0x0010 00 01 01 11 73 6b 69 70 00 00 00 00 00 00 11 70 ....skip.......p + 0x0020 63 00 00 00 00 00 00 00 c....... + rel 0+0 t=24 type.[]uintptr+0 + rel 0+0 t=24 type.int+0 + rel 26+4 t=29 go.info.int+0 + rel 35+4 t=29 go.info.[]uintptr+0 +go.info.runtime.CallersFrames$abstract SDWARFINFO dupok size=48 + 0x0000 04 72 75 6e 74 69 6d 65 2e 43 61 6c 6c 65 72 73 .runtime.Callers + 0x0010 46 72 61 6d 65 73 00 01 01 11 63 61 6c 6c 65 72 Frames....caller + 0x0020 73 00 00 00 00 00 00 0c 66 00 42 00 00 00 00 00 s.......f.B..... + rel 0+0 t=24 type.*runtime.Frames+0 + rel 0+0 t=24 type.[]uintptr+0 + rel 35+4 t=29 go.info.[]uintptr+0 + rel 43+4 t=29 go.info.*runtime.Frames+0 +go.info.fmt.Println$abstract SDWARFINFO dupok size=42 + 0x0000 04 66 6d 74 2e 50 72 69 6e 74 6c 6e 00 01 01 11 .fmt.Println.... + 0x0010 61 00 00 00 00 00 00 11 6e 00 01 00 00 00 00 11 a.......n....... + 0x0020 65 72 72 00 01 00 00 00 00 00 err....... + rel 0+0 t=24 type.[]interface {}+0 + rel 0+0 t=24 type.error+0 + rel 0+0 t=24 type.int+0 + rel 19+4 t=29 go.info.[]interface {}+0 + rel 27+4 t=29 go.info.int+0 + rel 37+4 t=29 go.info.error+0 +go.info.errors.New$abstract SDWARFINFO dupok size=26 + 0x0000 04 65 72 72 6f 72 73 2e 4e 65 77 00 01 01 11 74 .errors.New....t + 0x0010 65 78 74 00 00 00 00 00 00 00 ext....... + rel 0+0 t=24 type.string+0 + rel 21+4 t=29 go.info.string+0 +go.info.time.Time.UTC$abstract SDWARFINFO dupok size=26 + 0x0000 04 74 69 6d 65 2e 54 69 6d 65 2e 55 54 43 00 01 .time.Time.UTC.. + 0x0010 01 11 74 00 00 00 00 00 00 00 ..t....... + rel 0+0 t=24 type.time.Time+0 + rel 21+4 t=29 go.info.time.Time+0 +go.info.time.(*Time).setLoc$abstract SDWARFINFO dupok size=42 + 0x0000 04 74 69 6d 65 2e 28 2a 54 69 6d 65 29 2e 73 65 .time.(*Time).se + 0x0010 74 4c 6f 63 00 01 01 11 74 00 00 00 00 00 00 11 tLoc....t....... + 0x0020 6c 6f 63 00 00 00 00 00 00 00 loc....... + rel 0+0 t=24 type.*time.Location+0 + rel 0+0 t=24 type.*time.Time+0 + rel 27+4 t=29 go.info.*time.Time+0 + rel 37+4 t=29 go.info.*time.Location+0 +go.info.time.(*Time).stripMono$abstract SDWARFINFO dupok size=35 + 0x0000 04 74 69 6d 65 2e 28 2a 54 69 6d 65 29 2e 73 74 .time.(*Time).st + 0x0010 72 69 70 4d 6f 6e 6f 00 01 01 11 74 00 00 00 00 ripMono....t.... + 0x0020 00 00 00 ... + rel 0+0 t=24 type.*time.Time+0 + rel 30+4 t=29 go.info.*time.Time+0 +go.info.time.(*Time).sec$abstract SDWARFINFO dupok size=29 + 0x0000 04 74 69 6d 65 2e 28 2a 54 69 6d 65 29 2e 73 65 .time.(*Time).se + 0x0010 63 00 01 01 11 74 00 00 00 00 00 00 00 c....t....... + rel 0+0 t=24 type.*time.Time+0 + rel 24+4 t=29 go.info.*time.Time+0 +go.info.fmt.Printf$abstract SDWARFINFO dupok size=54 + 0x0000 04 66 6d 74 2e 50 72 69 6e 74 66 00 01 01 11 66 .fmt.Printf....f + 0x0010 6f 72 6d 61 74 00 00 00 00 00 00 11 61 00 00 00 ormat.......a... + 0x0020 00 00 00 11 6e 00 01 00 00 00 00 11 65 72 72 00 ....n.......err. + 0x0030 01 00 00 00 00 00 ...... + rel 0+0 t=24 type.[]interface {}+0 + rel 0+0 t=24 type.error+0 + rel 0+0 t=24 type.int+0 + rel 0+0 t=24 type.string+0 + rel 23+4 t=29 go.info.string+0 + rel 31+4 t=29 go.info.[]interface {}+0 + rel 39+4 t=29 go.info.int+0 + rel 49+4 t=29 go.info.error+0 +go.info.net/url.(*URL).Port$abstract SDWARFINFO dupok size=44 + 0x0000 04 6e 65 74 2f 75 72 6c 2e 28 2a 55 52 4c 29 2e .net/url.(*URL). + 0x0010 50 6f 72 74 00 01 01 11 75 00 00 00 00 00 00 0c Port....u....... + 0x0020 70 6f 72 74 00 ad 08 00 00 00 00 00 port........ + rel 0+0 t=24 type.*net/url.URL+0 + rel 0+0 t=24 type.string+0 + rel 27+4 t=29 go.info.*net/url.URL+0 + rel 39+4 t=29 go.info.string+0 +go.info.net/url.(*URL).Hostname$abstract SDWARFINFO dupok size=48 + 0x0000 04 6e 65 74 2f 75 72 6c 2e 28 2a 55 52 4c 29 2e .net/url.(*URL). + 0x0010 48 6f 73 74 6e 61 6d 65 00 01 01 11 75 00 00 00 Hostname....u... + 0x0020 00 00 00 0c 68 6f 73 74 00 a5 08 00 00 00 00 00 ....host........ + rel 0+0 t=24 type.*net/url.URL+0 + rel 0+0 t=24 type.string+0 + rel 31+4 t=29 go.info.*net/url.URL+0 + rel 43+4 t=29 go.info.string+0 +go.info.flag.Lookup$abstract SDWARFINFO dupok size=27 + 0x0000 04 66 6c 61 67 2e 4c 6f 6f 6b 75 70 00 01 01 11 .flag.Lookup.... + 0x0010 6e 61 6d 65 00 00 00 00 00 00 00 name....... + rel 0+0 t=24 type.string+0 + rel 22+4 t=29 go.info.string+0 +go.info.strconv.ParseBool$abstract SDWARFINFO dupok size=32 + 0x0000 04 73 74 72 63 6f 6e 76 2e 50 61 72 73 65 42 6f .strconv.ParseBo + 0x0010 6f 6c 00 01 01 11 73 74 72 00 00 00 00 00 00 00 ol....str....... + rel 0+0 t=24 type.string+0 + rel 27+4 t=29 go.info.string+0 +go.info.strconv.syntaxError$abstract SDWARFINFO dupok size=43 + 0x0000 04 73 74 72 63 6f 6e 76 2e 73 79 6e 74 61 78 45 .strconv.syntaxE + 0x0010 72 72 6f 72 00 01 01 11 66 6e 00 00 00 00 00 00 rror....fn...... + 0x0020 11 73 74 72 00 00 00 00 00 00 00 .str....... + rel 0+0 t=24 type.string+0 + rel 28+4 t=29 go.info.string+0 + rel 38+4 t=29 go.info.string+0 +go.info.reflect.TypeOf$abstract SDWARFINFO dupok size=40 + 0x0000 04 72 65 66 6c 65 63 74 2e 54 79 70 65 4f 66 00 .reflect.TypeOf. + 0x0010 01 01 11 69 00 00 00 00 00 00 0c 65 66 61 63 65 ...i.......eface + 0x0020 00 d6 0a 00 00 00 00 00 ........ + rel 0+0 t=24 type.interface {}+0 + rel 0+0 t=24 type.reflect.emptyInterface+0 + rel 22+4 t=29 go.info.interface {}+0 + rel 35+4 t=29 go.info.reflect.emptyInterface+0 +go.info.reflect.toType$abstract SDWARFINFO dupok size=27 + 0x0000 04 72 65 66 6c 65 63 74 2e 74 6f 54 79 70 65 00 .reflect.toType. + 0x0010 01 01 11 74 00 00 00 00 00 00 00 ...t....... + rel 0+0 t=24 type.*reflect.rtype+0 + rel 22+4 t=29 go.info.*reflect.rtype+0 +go.info.github.com/ONSdigital/go-ns/common.GetRequestId$abstract SDWARFINFO dupok size=83 + 0x0000 04 67 69 74 68 75 62 2e 63 6f 6d 2f 4f 4e 53 64 .github.com/ONSd + 0x0010 69 67 69 74 61 6c 2f 67 6f 2d 6e 73 2f 63 6f 6d igital/go-ns/com + 0x0020 6d 6f 6e 2e 47 65 74 52 65 71 75 65 73 74 49 64 mon.GetRequestId + 0x0030 00 01 01 11 63 74 78 00 00 00 00 00 00 0c 63 6f ....ctx.......co + 0x0040 72 72 65 6c 61 74 69 6f 6e 49 64 00 92 01 00 00 rrelationId..... + 0x0050 00 00 00 ... + rel 0+0 t=24 type.context.Context+0 + rel 0+0 t=24 type.string+0 + rel 57+4 t=29 go.info.context.Context+0 + rel 78+4 t=29 go.info.string+0 +go.loc.os.(*File).close SDWARFLOC dupok size=0 +go.info.os.(*File).close SDWARFINFO dupok size=55 + 0x0000 03 6f 73 2e 28 2a 46 69 6c 65 29 2e 63 6c 6f 73 .os.(*File).clos + 0x0010 65 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 e............... + 0x0020 00 00 01 9c 00 00 00 00 01 0f 7e 72 30 00 01 f0 ..........~r0... + 0x0030 01 00 00 00 00 00 00 ....... + rel 0+0 t=24 type.*os.File+0 + rel 0+0 t=24 type.error+0 + rel 18+8 t=1 os.(*File).close+0 + rel 26+8 t=1 os.(*File).close+26 + rel 36+4 t=30 gofile..+0 + rel 49+4 t=29 go.info.error+0 +go.range.os.(*File).close SDWARFRANGE dupok size=0 +go.debuglines.os.(*File).close SDWARFMISC dupok size=12 + 0x0000 04 01 0f 06 41 06 af 04 01 03 00 01 ....A....... +go.loc."".option.attach SDWARFLOC dupok size=0 +go.info."".option.attach SDWARFINFO dupok size=42 + 0x0000 03 22 22 2e 6f 70 74 69 6f 6e 2e 61 74 74 61 63 ."".option.attac + 0x0010 68 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 h............... + 0x0020 00 00 01 9c 00 00 00 00 01 00 .......... + rel 0+0 t=24 type."".option+0 + rel 0+0 t=24 type.*"".EventData+0 + rel 18+8 t=1 "".option.attach+0 + rel 26+8 t=1 "".option.attach+100 + rel 36+4 t=30 gofile..+0 +go.range."".option.attach SDWARFRANGE dupok size=0 +go.debuglines."".option.attach SDWARFMISC dupok size=16 + 0x0000 04 01 0f 0a a5 06 08 37 06 08 19 04 01 03 00 01 .......7........ +go.loc.go.builtin.error.Error SDWARFLOC dupok size=0 +go.info.go.builtin.error.Error SDWARFINFO dupok size=60 + 0x0000 03 67 6f 2e 62 75 69 6c 74 69 6e 2e 65 72 72 6f .go.builtin.erro + 0x0010 72 2e 45 72 72 6f 72 00 00 00 00 00 00 00 00 00 r.Error......... + 0x0020 00 00 00 00 00 00 00 00 01 9c 00 00 00 00 01 0f ................ + 0x0030 7e 72 30 00 01 00 00 00 00 00 00 00 ~r0......... + rel 0+0 t=24 type.error+0 + rel 0+0 t=24 type.string+0 + rel 24+8 t=1 go.builtin.error.Error+0 + rel 32+8 t=1 go.builtin.error.Error+110 + rel 42+4 t=30 gofile..+0 + rel 54+4 t=29 go.info.string+0 +go.range.go.builtin.error.Error SDWARFRANGE dupok size=0 +go.debuglines.go.builtin.error.Error SDWARFMISC dupok size=16 + 0x0000 04 01 0f 0a a5 06 08 37 06 08 e1 04 01 03 00 01 .......7........ +go.loc."".main SDWARFLOC size=0 +go.info."".main SDWARFINFO size=33 + 0x0000 03 22 22 2e 6d 61 69 6e 00 00 00 00 00 00 00 00 ."".main........ + 0x0010 00 00 00 00 00 00 00 00 00 01 9c 00 00 00 00 01 ................ + 0x0020 00 . + rel 9+8 t=1 "".main+0 + rel 17+8 t=1 "".main+53 + rel 27+4 t=30 gofile../home/rhys/git_repos/log-assembler/main_assembler/main.go+0 +go.range."".main SDWARFRANGE size=0 +go.debuglines."".main SDWARFMISC size=18 + 0x0000 04 02 03 c0 00 14 0a a5 88 42 42 66 04 01 03 bb .........BBf.... + 0x0010 7f 01 .. +go.string."Benchmarking: 'Log - o.attach'" SRODATA dupok size=30 + 0x0000 42 65 6e 63 68 6d 61 72 6b 69 6e 67 3a 20 27 4c Benchmarking: 'L + 0x0010 6f 67 20 2d 20 6f 2e 61 74 74 61 63 68 27 og - o.attach' +go.string."test error" SRODATA dupok size=10 + 0x0000 74 65 73 74 20 65 72 72 6f 72 test error +go.string."m1" SRODATA dupok size=2 + 0x0000 6d 31 m1 +go.string."d1" SRODATA dupok size=2 + 0x0000 64 31 d1 +go.string."d2" SRODATA dupok size=2 + 0x0000 64 32 d2 +go.string."d3" SRODATA dupok size=2 + 0x0000 64 33 d3 +go.string."d4" SRODATA dupok size=2 + 0x0000 64 34 d4 +go.string."data_1" SRODATA dupok size=6 + 0x0000 64 61 74 61 5f 31 data_1 +go.string."data_2" SRODATA dupok size=6 + 0x0000 64 61 74 61 5f 32 data_2 +go.string."data_3" SRODATA dupok size=6 + 0x0000 64 61 74 61 5f 33 data_3 +go.string."data_4" SRODATA dupok size=6 + 0x0000 64 61 74 61 5f 34 data_4 +go.loc."".BenchmarkLog2 SDWARFLOC size=360 + 0x0000 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 ................ + 0x0010 5f 04 00 00 00 00 00 00 69 04 00 00 00 00 00 00 _.......i....... + 0x0020 01 00 50 69 04 00 00 00 00 00 00 3f 06 00 00 00 ..Pi.......?.... + 0x0030 00 00 00 03 00 91 c0 7d 00 00 00 00 00 00 00 00 .......}........ + 0x0040 00 00 00 00 00 00 00 00 ff ff ff ff ff ff ff ff ................ + 0x0050 00 00 00 00 00 00 00 00 ba 00 00 00 00 00 00 00 ................ + 0x0060 bb 06 00 00 00 00 00 00 03 00 91 f0 7d 00 00 00 ............}... + 0x0070 00 00 00 00 00 00 00 00 00 00 00 00 00 ff ff ff ................ + 0x0080 ff ff ff ff ff 00 00 00 00 00 00 00 00 a0 00 00 ................ + 0x0090 00 00 00 00 00 fd 00 00 00 00 00 00 00 05 00 93 ................ + 0x00a0 08 50 93 08 fd 00 00 00 00 00 00 00 bb 06 00 00 .P.............. + 0x00b0 00 00 00 00 07 00 93 08 91 b8 7d 93 08 00 00 00 ..........}..... + 0x00c0 00 00 00 00 00 00 00 00 00 00 00 00 00 ff ff ff ................ + 0x00d0 ff ff ff ff ff 00 00 00 00 00 00 00 00 dd 05 00 ................ + 0x00e0 00 00 00 00 00 e1 05 00 00 00 00 00 00 05 00 51 ...............Q + 0x00f0 93 08 93 08 e1 05 00 00 00 00 00 00 e5 05 00 00 ................ + 0x0100 00 00 00 00 06 00 51 93 08 53 93 08 e5 05 00 00 ......Q..S...... + 0x0110 00 00 00 00 ee 05 00 00 00 00 00 00 05 00 93 08 ................ + 0x0120 53 93 08 00 00 00 00 00 00 00 00 00 00 00 00 00 S............... + 0x0130 00 00 00 ff ff ff ff ff ff ff ff 00 00 00 00 00 ................ + 0x0140 00 00 00 7f 04 00 00 00 00 00 00 3f 06 00 00 00 ...........?.... + 0x0150 00 00 00 03 00 91 d8 7d 00 00 00 00 00 00 00 00 .......}........ + 0x0160 00 00 00 00 00 00 00 00 ........ + rel 8+8 t=1 "".BenchmarkLog2+0 + rel 80+8 t=1 "".BenchmarkLog2+0 + rel 133+8 t=1 "".BenchmarkLog2+0 + rel 213+8 t=1 "".BenchmarkLog2+0 + rel 315+8 t=1 "".BenchmarkLog2+0 +go.info."".BenchmarkLog2 SDWARFINFO size=344 + 0x0000 03 22 22 2e 42 65 6e 63 68 6d 61 72 6b 4c 6f 67 ."".BenchmarkLog + 0x0010 32 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 2............... + 0x0020 00 00 01 9c 00 00 00 00 01 0b 26 65 00 5b 00 00 ..........&e.[.. + 0x0030 00 00 00 00 00 00 0b 6f 70 74 73 00 54 00 00 00 .......opts.T... + 0x0040 00 00 00 00 00 0b 65 72 72 00 4d 00 00 00 00 00 ......err.M..... + 0x0050 00 00 00 0a 6d 65 73 73 61 67 65 31 00 4e 00 00 ....message1.N.. + 0x0060 00 00 00 0a 64 61 74 61 31 00 4f 00 00 00 00 00 ....data1.O..... + 0x0070 0a 64 61 74 61 32 00 50 00 00 00 00 00 0a 64 61 .data2.P......da + 0x0080 74 61 33 00 51 00 00 00 00 00 0a 64 61 74 61 34 ta3.Q......data4 + 0x0090 00 52 00 00 00 00 00 15 00 00 00 00 00 00 00 00 .R.............. + 0x00a0 00 00 00 00 00 00 00 00 0b 6f 00 63 00 00 00 00 .........o.c.... + 0x00b0 00 00 00 00 00 06 00 00 00 00 00 00 00 00 00 00 ................ + 0x00c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 4c 12 ..............L. + 0x00d0 00 00 00 00 00 12 00 00 00 00 00 00 06 00 00 00 ................ + 0x00e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x00f0 00 00 00 00 00 4d 00 06 00 00 00 00 00 00 00 00 .....M.......... + 0x0100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0110 5c 13 00 00 00 00 00 00 00 00 07 00 00 00 00 00 \............... + 0x0120 00 00 00 00 00 00 00 d5 08 07 00 00 00 00 00 00 ................ + 0x0130 00 00 00 00 00 00 c9 01 06 00 00 00 00 00 00 00 ................ + 0x0140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0150 00 d0 01 00 00 00 00 00 ........ + rel 0+0 t=24 type."".Data+0 + rel 0+0 t=24 type."".EventData+0 + rel 0+0 t=24 type.*"".EventData+0 + rel 0+0 t=24 type.*"".option+0 + rel 0+0 t=24 type.*errors.errorString+0 + rel 0+0 t=24 type.[1]interface {}+0 + rel 0+0 t=24 type.[4]"".option+0 + rel 0+0 t=24 type.int+0 + rel 0+0 t=24 type.time.Time+0 + rel 0+0 t=24 type.unsafe.Pointer+0 + rel 18+8 t=1 "".BenchmarkLog2+0 + rel 26+8 t=1 "".BenchmarkLog2+1723 + rel 36+4 t=30 gofile../home/rhys/git_repos/log-assembler/main_assembler/main.go+0 + rel 46+4 t=29 go.info.*"".EventData+0 + rel 50+4 t=29 go.loc."".BenchmarkLog2+0 + rel 61+4 t=29 go.info.[4]"".option+0 + rel 65+4 t=29 go.loc."".BenchmarkLog2+72 + rel 75+4 t=29 go.info.error+0 + rel 79+4 t=29 go.loc."".BenchmarkLog2+125 + rel 94+4 t=29 go.info.string+0 + rel 107+4 t=29 go.info.string+0 + rel 120+4 t=29 go.info.string+0 + rel 133+4 t=29 go.info.string+0 + rel 146+4 t=29 go.info.string+0 + rel 152+8 t=1 "".BenchmarkLog2+1397 + rel 160+8 t=1 "".BenchmarkLog2+1555 + rel 172+4 t=29 go.info."".option+0 + rel 176+4 t=29 go.loc."".BenchmarkLog2+205 + rel 182+4 t=29 go.info.fmt.Println$abstract+0 + rel 186+8 t=1 "".BenchmarkLog2+82 + rel 194+8 t=1 "".BenchmarkLog2+138 + rel 202+4 t=30 gofile../home/rhys/git_repos/log-assembler/main_assembler/main.go+0 + rel 208+4 t=29 go.info.fmt.Println$abstract+15 + rel 214+4 t=29 go.info.fmt.Println$abstract+23 + rel 221+4 t=29 go.info.errors.New$abstract+0 + rel 225+8 t=1 "".BenchmarkLog2+139 + rel 233+8 t=1 "".BenchmarkLog2+183 + rel 241+4 t=30 gofile../home/rhys/git_repos/log-assembler/main_assembler/main.go+0 + rel 248+4 t=29 go.info.time.Time.UTC$abstract+0 + rel 252+8 t=1 "".BenchmarkLog2+1167 + rel 260+8 t=1 "".BenchmarkLog2+1168 + rel 268+4 t=30 gofile../home/rhys/git_repos/log-assembler/main_assembler/main.go+0 + rel 274+4 t=29 go.info.time.Time.UTC$abstract+17 + rel 278+4 t=29 go.loc."".BenchmarkLog2+307 + rel 283+4 t=29 go.info.time.(*Time).setLoc$abstract+0 + rel 287+4 t=29 go.range."".BenchmarkLog2+0 + rel 291+4 t=30 gofile..$GOROOT/src/time/time.go+0 + rel 298+4 t=29 go.info.time.(*Time).stripMono$abstract+0 + rel 302+4 t=29 go.range."".BenchmarkLog2+64 + rel 306+4 t=30 gofile..$GOROOT/src/time/time.go+0 + rel 313+4 t=29 go.info.time.(*Time).sec$abstract+0 + rel 317+8 t=1 "".BenchmarkLog2+1176 + rel 325+8 t=1 "".BenchmarkLog2+1199 + rel 333+4 t=30 gofile..$GOROOT/src/time/time.go+0 +go.range."".BenchmarkLog2 SDWARFRANGE size=128 + 0x0000 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 ................ + 0x0010 90 04 00 00 00 00 00 00 91 04 00 00 00 00 00 00 ................ + 0x0020 c5 04 00 00 00 00 00 00 d1 04 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0040 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 ................ + 0x0050 91 04 00 00 00 00 00 00 98 04 00 00 00 00 00 00 ................ + 0x0060 af 04 00 00 00 00 00 00 c5 04 00 00 00 00 00 00 ................ + 0x0070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + rel 8+8 t=1 "".BenchmarkLog2+0 + rel 72+8 t=1 "".BenchmarkLog2+0 +go.debuglines."".BenchmarkLog2 SDWARFMISC size=197 + 0x0000 04 02 03 c5 00 14 0a 08 2d f6 06 2d 04 1e 06 08 ........-..-.... + 0x0010 03 c1 01 46 06 55 04 02 06 02 19 03 bf 7e fb 04 ...F.U.......~.. + 0x0020 42 03 72 15 06 55 04 02 06 08 03 14 96 06 2d 06 B.r..U........-. + 0x0030 08 61 06 55 06 f6 06 41 06 02 ea 03 f6 06 55 06 .a.U...A......U. + 0x0040 9b 06 41 06 08 24 06 41 06 02 fc 01 f7 06 55 06 ..A..$.A......U. + 0x0050 ce 06 41 04 03 06 08 03 f4 07 a0 03 f8 78 15 03 ..A..........x.. + 0x0060 01 1e 06 41 06 03 5f 1f 06 2d 06 03 21 dc 60 06 ...A.._..-..!.`. + 0x0070 4b 06 03 7d 5b 04 02 03 96 7f 83 06 5f 06 5e 06 K..}[......._.^. + 0x0080 5f 06 ec 06 5f 06 60 06 55 06 f6 06 55 06 d4 06 _..._.`.U...U... + 0x0090 55 06 4b 06 41 06 08 03 03 32 06 5f 06 02 3b ff U.K.A....2._..;. + 0x00a0 06 41 06 8b 06 37 06 ab 06 41 06 69 03 7c ab 06 .A...7...A.i.|.. + 0x00b0 55 06 08 2d 06 41 3f 08 99 06 02 34 03 78 fb 04 U..-.A?....4.x.. + 0x00c0 01 03 b6 7f 01 ..... +runtime.memequal64·f SRODATA dupok size=8 + 0x0000 00 00 00 00 00 00 00 00 ........ + rel 0+8 t=1 runtime.memequal64+0 +runtime.gcbits. SRODATA dupok size=0 +type..namedata.*main.severity- SRODATA dupok size=17 + 0x0000 00 00 0e 2a 6d 61 69 6e 2e 73 65 76 65 72 69 74 ...*main.severit + 0x0010 79 y +go.info."".severity.attach$abstract SDWARFINFO dupok size=38 + 0x0000 04 2e 73 65 76 65 72 69 74 79 2e 61 74 74 61 63 ..severity.attac + 0x0010 68 00 01 01 11 73 00 00 00 00 00 00 11 6c 65 00 h....s.......le. + 0x0020 00 00 00 00 00 00 ...... + rel 24+4 t=29 go.info."".severity+0 + rel 33+4 t=29 go.info.*"".EventData+0 +go.loc."".(*severity).attach SDWARFLOC dupok size=155 + 0x0000 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 ................ + 0x0010 48 00 00 00 00 00 00 00 7a 00 00 00 00 00 00 00 H.......z....... + 0x0020 01 00 52 00 00 00 00 00 00 00 00 00 00 00 00 00 ..R............. + 0x0030 00 00 00 ff ff ff ff ff ff ff ff 00 00 00 00 00 ................ + 0x0040 00 00 00 00 00 00 00 00 00 00 00 99 00 00 00 00 ................ + 0x0050 00 00 00 02 00 91 08 00 00 00 00 00 00 00 00 00 ................ + 0x0060 00 00 00 00 00 00 00 ff ff ff ff ff ff ff ff 00 ................ + 0x0070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 99 ................ + 0x0080 00 00 00 00 00 00 00 02 00 91 08 00 00 00 00 00 ................ + 0x0090 00 00 00 00 00 00 00 00 00 00 00 ........... + rel 8+8 t=1 "".(*severity).attach+0 + rel 59+8 t=1 "".(*severity).attach+0 + rel 111+8 t=1 "".(*severity).attach+0 +go.info."".(*severity).attach SDWARFINFO dupok size=100 + 0x0000 03 22 22 2e 28 2a 73 65 76 65 72 69 74 79 29 2e ."".(*severity). + 0x0010 61 74 74 61 63 68 00 00 00 00 00 00 00 00 00 00 attach.......... + 0x0020 00 00 00 00 00 00 00 01 9c 00 00 00 00 01 0b 26 ...............& + 0x0030 73 00 fa 04 00 00 00 00 00 00 00 00 10 6c 65 00 s............le. + 0x0040 00 fa 04 00 00 00 00 00 00 00 00 07 00 00 00 00 ................ + 0x0050 00 00 00 00 00 00 00 00 01 13 00 00 00 00 00 00 ................ + 0x0060 00 00 00 00 .... + rel 0+0 t=24 type.*"".EventData+0 + rel 0+0 t=24 type.*"".severity+0 + rel 23+8 t=1 "".(*severity).attach+0 + rel 31+8 t=1 "".(*severity).attach+153 + rel 41+4 t=30 gofile..+0 + rel 52+4 t=29 go.info.*"".severity+0 + rel 56+4 t=29 go.loc."".(*severity).attach+0 + rel 67+4 t=29 go.info.*"".EventData+0 + rel 71+4 t=29 go.loc."".(*severity).attach+51 + rel 76+4 t=29 go.info."".severity.attach$abstract+0 + rel 80+4 t=29 go.range."".(*severity).attach+0 + rel 84+4 t=30 gofile..+0 + rel 90+4 t=29 go.info."".severity.attach$abstract+28 + rel 94+4 t=29 go.loc."".(*severity).attach+103 +go.range."".(*severity).attach SDWARFRANGE dupok size=80 + 0x0000 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 ................ + 0x0010 4e 00 00 00 00 00 00 00 55 00 00 00 00 00 00 00 N.......U....... + 0x0020 55 00 00 00 00 00 00 00 62 00 00 00 00 00 00 00 U.......b....... + 0x0030 6c 00 00 00 00 00 00 00 7a 00 00 00 00 00 00 00 l.......z....... + 0x0040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + rel 8+8 t=1 "".(*severity).attach+0 +go.debuglines."".(*severity).attach SDWARFMISC dupok size=45 + 0x0000 04 01 0f 0a a5 06 08 41 04 02 06 08 03 f5 04 78 .......A.......x + 0x0010 06 41 04 01 06 03 8a 7b a1 04 02 06 03 f5 04 78 .A.....{.......x + 0x0020 04 01 03 8a 7b 97 06 41 04 01 03 00 01 ....{..A..... +runtime.gcbits.01 SRODATA dupok size=1 + 0x0000 01 . +type..namedata.*func(main.severity, *main.EventData)- SRODATA dupok size=40 + 0x0000 00 00 25 2a 66 75 6e 63 28 6d 61 69 6e 2e 73 65 ..%*func(main.se + 0x0010 76 65 72 69 74 79 2c 20 2a 6d 61 69 6e 2e 45 76 verity, *main.Ev + 0x0020 65 6e 74 44 61 74 61 29 entData) +type.*func("".severity, *"".EventData) SRODATA dupok size=56 + 0x0000 08 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ................ + 0x0010 eb d4 0e 52 08 08 08 36 00 00 00 00 00 00 00 00 ...R...6........ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 ........ + rel 24+8 t=1 runtime.memequal64·f+0 + rel 32+8 t=1 runtime.gcbits.01+0 + rel 40+4 t=5 type..namedata.*func(main.severity, *main.EventData)-+0 + rel 48+8 t=1 type.func("".severity, *"".EventData)+0 +type.func("".severity, *"".EventData) SRODATA dupok size=72 + 0x0000 08 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ................ + 0x0010 04 87 66 0b 02 08 08 33 00 00 00 00 00 00 00 00 ..f....3........ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0040 00 00 00 00 00 00 00 00 ........ + rel 32+8 t=1 runtime.gcbits.01+0 + rel 40+4 t=5 type..namedata.*func(main.severity, *main.EventData)-+0 + rel 44+4 t=6 type.*func("".severity, *"".EventData)+0 + rel 56+8 t=1 type."".severity+0 + rel 64+8 t=1 type.*"".EventData+0 +type..namedata.attach- SRODATA dupok size=9 + 0x0000 00 00 06 61 74 74 61 63 68 ...attach +type."".severity SRODATA size=80 + 0x0000 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0010 b3 e0 59 64 0f 08 08 02 00 00 00 00 00 00 00 00 ..Yd............ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 01 00 00 00 10 00 00 00 00 00 00 00 ................ + 0x0040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + rel 24+8 t=1 runtime.memequal64·f+0 + rel 32+8 t=1 runtime.gcbits.+0 + rel 40+4 t=5 type..namedata.*main.severity-+0 + rel 44+4 t=5 type.*"".severity+0 + rel 48+4 t=5 type..importpath."".+0 + rel 64+4 t=5 type..namedata.attach-+0 + rel 68+4 t=25 type.func(*"".EventData)+0 + rel 72+4 t=25 "".(*severity).attach+0 + rel 76+4 t=25 "".severity.attach+0 +type..namedata.*func(*main.severity, *main.EventData)- SRODATA dupok size=41 + 0x0000 00 00 26 2a 66 75 6e 63 28 2a 6d 61 69 6e 2e 73 ..&*func(*main.s + 0x0010 65 76 65 72 69 74 79 2c 20 2a 6d 61 69 6e 2e 45 everity, *main.E + 0x0020 76 65 6e 74 44 61 74 61 29 ventData) +type.*func(*"".severity, *"".EventData) SRODATA dupok size=56 + 0x0000 08 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ................ + 0x0010 17 f9 e2 4c 08 08 08 36 00 00 00 00 00 00 00 00 ...L...6........ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 ........ + rel 24+8 t=1 runtime.memequal64·f+0 + rel 32+8 t=1 runtime.gcbits.01+0 + rel 40+4 t=5 type..namedata.*func(*main.severity, *main.EventData)-+0 + rel 48+8 t=1 type.func(*"".severity, *"".EventData)+0 +type.func(*"".severity, *"".EventData) SRODATA dupok size=72 + 0x0000 08 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ................ + 0x0010 89 5a bf 70 02 08 08 33 00 00 00 00 00 00 00 00 .Z.p...3........ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0040 00 00 00 00 00 00 00 00 ........ + rel 32+8 t=1 runtime.gcbits.01+0 + rel 40+4 t=5 type..namedata.*func(*main.severity, *main.EventData)-+0 + rel 44+4 t=6 type.*func(*"".severity, *"".EventData)+0 + rel 56+8 t=1 type.*"".severity+0 + rel 64+8 t=1 type.*"".EventData+0 +type.*"".severity SRODATA size=88 + 0x0000 08 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ................ + 0x0010 5a 6e da e9 09 08 08 36 00 00 00 00 00 00 00 00 Zn.....6........ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 ................ + 0x0040 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0050 00 00 00 00 00 00 00 00 ........ + rel 24+8 t=1 runtime.memequal64·f+0 + rel 32+8 t=1 runtime.gcbits.01+0 + rel 40+4 t=5 type..namedata.*main.severity-+0 + rel 48+8 t=1 type."".severity+0 + rel 56+4 t=5 type..importpath."".+0 + rel 72+4 t=5 type..namedata.attach-+0 + rel 76+4 t=25 type.func(*"".EventData)+0 + rel 80+4 t=25 "".(*severity).attach+0 + rel 84+4 t=25 "".(*severity).attach+0 +go.loc.type..eq."".EventHTTP SDWARFLOC dupok size=103 + 0x0000 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 ................ + 0x0010 00 00 00 00 00 00 00 00 fc 01 00 00 00 00 00 00 ................ + 0x0020 01 00 9c 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 ff ff ff ff ff ff ff ff 00 00 00 00 00 ................ + 0x0040 00 00 00 00 00 00 00 00 00 00 00 fc 01 00 00 00 ................ + 0x0050 00 00 00 02 00 91 08 00 00 00 00 00 00 00 00 00 ................ + 0x0060 00 00 00 00 00 00 00 ....... + rel 8+8 t=1 type..eq."".EventHTTP+0 + rel 59+8 t=1 type..eq."".EventHTTP+0 +go.info.type..eq."".EventHTTP SDWARFINFO dupok size=85 + 0x0000 03 74 79 70 65 2e 2e 65 71 2e 22 22 2e 45 76 65 .type..eq."".Eve + 0x0010 6e 74 48 54 54 50 00 00 00 00 00 00 00 00 00 00 ntHTTP.......... + 0x0020 00 00 00 00 00 00 00 01 9c 00 00 00 00 01 10 70 ...............p + 0x0030 00 00 01 00 00 00 00 00 00 00 00 10 71 00 00 01 ............q... + 0x0040 00 00 00 00 00 00 00 00 0f 7e 72 32 00 01 01 00 .........~r2.... + 0x0050 00 00 00 00 00 ..... + rel 0+0 t=24 type.*"".EventHTTP+0 + rel 0+0 t=24 type.bool+0 + rel 23+8 t=1 type..eq."".EventHTTP+0 + rel 31+8 t=1 type..eq."".EventHTTP+508 + rel 41+4 t=30 gofile..+0 + rel 51+4 t=29 go.info.*"".EventHTTP+0 + rel 55+4 t=29 go.loc.type..eq."".EventHTTP+0 + rel 64+4 t=29 go.info.*"".EventHTTP+0 + rel 68+4 t=29 go.loc.type..eq."".EventHTTP+51 + rel 79+4 t=29 go.info.bool+0 +go.range.type..eq."".EventHTTP SDWARFRANGE dupok size=0 +go.debuglines.type..eq."".EventHTTP SDWARFMISC dupok size=24 + 0x0000 04 01 0f 0a cd 06 cd 06 02 99 01 ff 06 37 06 02 .............7.. + 0x0010 ff 01 ff 04 01 03 00 01 ........ +type..eqfunc."".EventHTTP SRODATA dupok size=8 + 0x0000 00 00 00 00 00 00 00 00 ........ + rel 0+8 t=1 type..eq."".EventHTTP+0 +runtime.gcbits.2b75 SRODATA dupok size=2 + 0x0000 2b 75 +u +type..namedata.*main.EventHTTP. SRODATA dupok size=18 + 0x0000 01 00 0f 2a 6d 61 69 6e 2e 45 76 65 6e 74 48 54 ...*main.EventHT + 0x0010 54 50 TP +type..namedata.StatusCode.json:"status_code,omitempty" SRODATA dupok size=43 + 0x0000 03 00 0a 53 74 61 74 75 73 43 6f 64 65 00 1c 6a ...StatusCode..j + 0x0010 73 6f 6e 3a 22 73 74 61 74 75 73 5f 63 6f 64 65 son:"status_code + 0x0020 2c 6f 6d 69 74 65 6d 70 74 79 22 ,omitempty" +type..namedata.Method.json:"method,omitempty" SRODATA dupok size=34 + 0x0000 03 00 06 4d 65 74 68 6f 64 00 17 6a 73 6f 6e 3a ...Method..json: + 0x0010 22 6d 65 74 68 6f 64 2c 6f 6d 69 74 65 6d 70 74 "method,omitempt + 0x0020 79 22 y" +type..namedata.Scheme.json:"scheme,omitempty" SRODATA dupok size=34 + 0x0000 03 00 06 53 63 68 65 6d 65 00 17 6a 73 6f 6e 3a ...Scheme..json: + 0x0010 22 73 63 68 65 6d 65 2c 6f 6d 69 74 65 6d 70 74 "scheme,omitempt + 0x0020 79 22 y" +type..namedata.Host.json:"host,omitempty" SRODATA dupok size=30 + 0x0000 03 00 04 48 6f 73 74 00 15 6a 73 6f 6e 3a 22 68 ...Host..json:"h + 0x0010 6f 73 74 2c 6f 6d 69 74 65 6d 70 74 79 22 ost,omitempty" +type..namedata.Port.json:"port,omitempty" SRODATA dupok size=30 + 0x0000 03 00 04 50 6f 72 74 00 15 6a 73 6f 6e 3a 22 70 ...Port..json:"p + 0x0010 6f 72 74 2c 6f 6d 69 74 65 6d 70 74 79 22 ort,omitempty" +type..namedata.Path.json:"path,omitempty" SRODATA dupok size=30 + 0x0000 03 00 04 50 61 74 68 00 15 6a 73 6f 6e 3a 22 70 ...Path..json:"p + 0x0010 61 74 68 2c 6f 6d 69 74 65 6d 70 74 79 22 ath,omitempty" +type..namedata.Query.json:"query,omitempty" SRODATA dupok size=32 + 0x0000 03 00 05 51 75 65 72 79 00 16 6a 73 6f 6e 3a 22 ...Query..json:" + 0x0010 71 75 65 72 79 2c 6f 6d 69 74 65 6d 70 74 79 22 query,omitempty" +type..namedata.StartedAt.json:"started_at,omitempty" SRODATA dupok size=41 + 0x0000 03 00 09 53 74 61 72 74 65 64 41 74 00 1b 6a 73 ...StartedAt..js + 0x0010 6f 6e 3a 22 73 74 61 72 74 65 64 5f 61 74 2c 6f on:"started_at,o + 0x0020 6d 69 74 65 6d 70 74 79 22 mitempty" +type..namedata.EndedAt.json:"ended_at,omitempty" SRODATA dupok size=37 + 0x0000 03 00 07 45 6e 64 65 64 41 74 00 19 6a 73 6f 6e ...EndedAt..json + 0x0010 3a 22 65 6e 64 65 64 5f 61 74 2c 6f 6d 69 74 65 :"ended_at,omite + 0x0020 6d 70 74 79 22 mpty" +type..namedata.Duration.json:"duration,omitempty" SRODATA dupok size=38 + 0x0000 03 00 08 44 75 72 61 74 69 6f 6e 00 19 6a 73 6f ...Duration..jso + 0x0010 6e 3a 22 64 75 72 61 74 69 6f 6e 2c 6f 6d 69 74 n:"duration,omit + 0x0020 65 6d 70 74 79 22 empty" +type..namedata.ResponseContentLength.json:"response_content_length,omitempty" SRODATA dupok size=66 + 0x0000 03 00 15 52 65 73 70 6f 6e 73 65 43 6f 6e 74 65 ...ResponseConte + 0x0010 6e 74 4c 65 6e 67 74 68 00 28 6a 73 6f 6e 3a 22 ntLength.(json:" + 0x0020 72 65 73 70 6f 6e 73 65 5f 63 6f 6e 74 65 6e 74 response_content + 0x0030 5f 6c 65 6e 67 74 68 2c 6f 6d 69 74 65 6d 70 74 _length,omitempt + 0x0040 79 22 y" +type."".EventHTTP SRODATA size=360 + 0x0000 80 00 00 00 00 00 00 00 78 00 00 00 00 00 00 00 ........x....... + 0x0010 6f 3b f4 02 07 08 08 19 00 00 00 00 00 00 00 00 o;.............. + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0040 0b 00 00 00 00 00 00 00 0b 00 00 00 00 00 00 00 ................ + 0x0050 00 00 00 00 00 00 00 00 18 01 00 00 00 00 00 00 ................ + 0x0060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0080 00 00 00 00 00 00 00 00 10 00 00 00 00 00 00 00 ................ + 0x0090 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x00a0 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0............... + 0x00b0 00 00 00 00 00 00 00 00 50 00 00 00 00 00 00 00 ........P....... + 0x00c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x00d0 70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 p............... + 0x00e0 00 00 00 00 00 00 00 00 80 00 00 00 00 00 00 00 ................ + 0x00f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0100 a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0110 00 00 00 00 00 00 00 00 c0 00 00 00 00 00 00 00 ................ + 0x0120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0130 d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0140 00 00 00 00 00 00 00 00 e0 00 00 00 00 00 00 00 ................ + 0x0150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0160 f0 00 00 00 00 00 00 00 ........ + rel 24+8 t=1 type..eqfunc."".EventHTTP+0 + rel 32+8 t=1 runtime.gcbits.2b75+0 + rel 40+4 t=5 type..namedata.*main.EventHTTP.+0 + rel 44+4 t=5 type.*"".EventHTTP+0 + rel 56+8 t=1 type."".EventHTTP+96 + rel 80+4 t=5 type..importpath."".+0 + rel 96+8 t=1 type..namedata.StatusCode.json:"status_code,omitempty"+0 + rel 104+8 t=1 type.*int+0 + rel 120+8 t=1 type..namedata.Method.json:"method,omitempty"+0 + rel 128+8 t=1 type.string+0 + rel 144+8 t=1 type..namedata.Scheme.json:"scheme,omitempty"+0 + rel 152+8 t=1 type.string+0 + rel 168+8 t=1 type..namedata.Host.json:"host,omitempty"+0 + rel 176+8 t=1 type.string+0 + rel 192+8 t=1 type..namedata.Port.json:"port,omitempty"+0 + rel 200+8 t=1 type.int+0 + rel 216+8 t=1 type..namedata.Path.json:"path,omitempty"+0 + rel 224+8 t=1 type.string+0 + rel 240+8 t=1 type..namedata.Query.json:"query,omitempty"+0 + rel 248+8 t=1 type.string+0 + rel 264+8 t=1 type..namedata.StartedAt.json:"started_at,omitempty"+0 + rel 272+8 t=1 type.*time.Time+0 + rel 288+8 t=1 type..namedata.EndedAt.json:"ended_at,omitempty"+0 + rel 296+8 t=1 type.*time.Time+0 + rel 312+8 t=1 type..namedata.Duration.json:"duration,omitempty"+0 + rel 320+8 t=1 type.*time.Duration+0 + rel 336+8 t=1 type..namedata.ResponseContentLength.json:"response_content_length,omitempty"+0 + rel 344+8 t=1 type.int64+0 +type..namedata.*func(*main.EventHTTP, *main.EventData)- SRODATA dupok size=42 + 0x0000 00 00 27 2a 66 75 6e 63 28 2a 6d 61 69 6e 2e 45 ..'*func(*main.E + 0x0010 76 65 6e 74 48 54 54 50 2c 20 2a 6d 61 69 6e 2e ventHTTP, *main. + 0x0020 45 76 65 6e 74 44 61 74 61 29 EventData) +type.*func(*"".EventHTTP, *"".EventData) SRODATA dupok size=56 + 0x0000 08 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ................ + 0x0010 83 21 68 ce 08 08 08 36 00 00 00 00 00 00 00 00 .!h....6........ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 ........ + rel 24+8 t=1 runtime.memequal64·f+0 + rel 32+8 t=1 runtime.gcbits.01+0 + rel 40+4 t=5 type..namedata.*func(*main.EventHTTP, *main.EventData)-+0 + rel 48+8 t=1 type.func(*"".EventHTTP, *"".EventData)+0 +type.func(*"".EventHTTP, *"".EventData) SRODATA dupok size=72 + 0x0000 08 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ................ + 0x0010 12 d3 a6 0a 02 08 08 33 00 00 00 00 00 00 00 00 .......3........ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0040 00 00 00 00 00 00 00 00 ........ + rel 32+8 t=1 runtime.gcbits.01+0 + rel 40+4 t=5 type..namedata.*func(*main.EventHTTP, *main.EventData)-+0 + rel 44+4 t=6 type.*func(*"".EventHTTP, *"".EventData)+0 + rel 56+8 t=1 type.*"".EventHTTP+0 + rel 64+8 t=1 type.*"".EventData+0 +type.*"".EventHTTP SRODATA size=88 + 0x0000 08 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ................ + 0x0010 36 a1 71 80 09 08 08 36 00 00 00 00 00 00 00 00 6.q....6........ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 ................ + 0x0040 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0050 00 00 00 00 00 00 00 00 ........ + rel 24+8 t=1 runtime.memequal64·f+0 + rel 32+8 t=1 runtime.gcbits.01+0 + rel 40+4 t=5 type..namedata.*main.EventHTTP.+0 + rel 48+8 t=1 type."".EventHTTP+0 + rel 56+4 t=5 type..importpath."".+0 + rel 72+4 t=5 type..namedata.attach-+0 + rel 76+4 t=25 type.func(*"".EventData)+0 + rel 80+4 t=25 "".(*EventHTTP).attach+0 + rel 84+4 t=25 "".(*EventHTTP).attach+0 +runtime.strequal·f SRODATA dupok size=8 + 0x0000 00 00 00 00 00 00 00 00 ........ + rel 0+8 t=1 runtime.strequal+0 +type..namedata.*main.identityType- SRODATA dupok size=21 + 0x0000 00 00 12 2a 6d 61 69 6e 2e 69 64 65 6e 74 69 74 ...*main.identit + 0x0010 79 54 79 70 65 yType +type.*"".identityType SRODATA size=56 + 0x0000 08 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ................ + 0x0010 06 d3 35 4b 08 08 08 36 00 00 00 00 00 00 00 00 ..5K...6........ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 ........ + rel 24+8 t=1 runtime.memequal64·f+0 + rel 32+8 t=1 runtime.gcbits.01+0 + rel 40+4 t=5 type..namedata.*main.identityType-+0 + rel 48+8 t=1 type."".identityType+0 +type."".identityType SRODATA size=64 + 0x0000 10 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ................ + 0x0010 4c 94 b8 4f 07 08 08 18 00 00 00 00 00 00 00 00 L..O............ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 10 00 00 00 00 00 00 00 ................ + rel 24+8 t=1 runtime.strequal·f+0 + rel 32+8 t=1 runtime.gcbits.01+0 + rel 40+4 t=5 type..namedata.*main.identityType-+0 + rel 44+4 t=5 type.*"".identityType+0 + rel 48+4 t=5 type..importpath."".+0 +go.loc.type..eq."".eventAuth SDWARFLOC dupok size=103 + 0x0000 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 ................ + 0x0010 00 00 00 00 00 00 00 00 af 00 00 00 00 00 00 00 ................ + 0x0020 01 00 9c 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 ff ff ff ff ff ff ff ff 00 00 00 00 00 ................ + 0x0040 00 00 00 00 00 00 00 00 00 00 00 af 00 00 00 00 ................ + 0x0050 00 00 00 02 00 91 08 00 00 00 00 00 00 00 00 00 ................ + 0x0060 00 00 00 00 00 00 00 ....... + rel 8+8 t=1 type..eq."".eventAuth+0 + rel 59+8 t=1 type..eq."".eventAuth+0 +go.info.type..eq."".eventAuth SDWARFINFO dupok size=85 + 0x0000 03 74 79 70 65 2e 2e 65 71 2e 22 22 2e 65 76 65 .type..eq."".eve + 0x0010 6e 74 41 75 74 68 00 00 00 00 00 00 00 00 00 00 ntAuth.......... + 0x0020 00 00 00 00 00 00 00 01 9c 00 00 00 00 01 10 70 ...............p + 0x0030 00 00 01 00 00 00 00 00 00 00 00 10 71 00 00 01 ............q... + 0x0040 00 00 00 00 00 00 00 00 0f 7e 72 32 00 01 01 00 .........~r2.... + 0x0050 00 00 00 00 00 ..... + rel 0+0 t=24 type.*"".eventAuth+0 + rel 0+0 t=24 type.bool+0 + rel 23+8 t=1 type..eq."".eventAuth+0 + rel 31+8 t=1 type..eq."".eventAuth+175 + rel 41+4 t=30 gofile..+0 + rel 51+4 t=29 go.info.*"".eventAuth+0 + rel 55+4 t=29 go.loc.type..eq."".eventAuth+0 + rel 64+4 t=29 go.info.*"".eventAuth+0 + rel 68+4 t=29 go.loc.type..eq."".eventAuth+51 + rel 79+4 t=29 go.info.bool+0 +go.range.type..eq."".eventAuth SDWARFRANGE dupok size=0 +go.debuglines.type..eq."".eventAuth SDWARFMISC dupok size=21 + 0x0000 04 01 0f 0a cd 06 cd 06 08 f5 06 37 06 02 34 ff ...........7..4. + 0x0010 04 01 03 00 01 ..... +type..eqfunc."".eventAuth SRODATA dupok size=8 + 0x0000 00 00 00 00 00 00 00 00 ........ + rel 0+8 t=1 type..eq."".eventAuth+0 +runtime.gcbits.05 SRODATA dupok size=1 + 0x0000 05 . +type..namedata.*main.eventAuth- SRODATA dupok size=18 + 0x0000 00 00 0f 2a 6d 61 69 6e 2e 65 76 65 6e 74 41 75 ...*main.eventAu + 0x0010 74 68 th +type..namedata.Identity.json:"identity,omitempty" SRODATA dupok size=38 + 0x0000 03 00 08 49 64 65 6e 74 69 74 79 00 19 6a 73 6f ...Identity..jso + 0x0010 6e 3a 22 69 64 65 6e 74 69 74 79 2c 6f 6d 69 74 n:"identity,omit + 0x0020 65 6d 70 74 79 22 empty" +type..namedata.IdentityType.json:"identity_type,omitempty" SRODATA dupok size=47 + 0x0000 03 00 0c 49 64 65 6e 74 69 74 79 54 79 70 65 00 ...IdentityType. + 0x0010 1e 6a 73 6f 6e 3a 22 69 64 65 6e 74 69 74 79 5f .json:"identity_ + 0x0020 74 79 70 65 2c 6f 6d 69 74 65 6d 70 74 79 22 type,omitempty" +type."".eventAuth SRODATA size=144 + 0x0000 20 00 00 00 00 00 00 00 18 00 00 00 00 00 00 00 ............... + 0x0010 26 39 32 85 07 08 08 19 00 00 00 00 00 00 00 00 &92............. + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0040 02 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 ................ + 0x0050 00 00 00 00 00 00 00 00 40 00 00 00 00 00 00 00 ........@....... + 0x0060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0080 00 00 00 00 00 00 00 00 20 00 00 00 00 00 00 00 ........ ....... + rel 24+8 t=1 type..eqfunc."".eventAuth+0 + rel 32+8 t=1 runtime.gcbits.05+0 + rel 40+4 t=5 type..namedata.*main.eventAuth-+0 + rel 44+4 t=5 type.*"".eventAuth+0 + rel 56+8 t=1 type."".eventAuth+96 + rel 80+4 t=5 type..importpath."".+0 + rel 96+8 t=1 type..namedata.Identity.json:"identity,omitempty"+0 + rel 104+8 t=1 type.string+0 + rel 120+8 t=1 type..namedata.IdentityType.json:"identity_type,omitempty"+0 + rel 128+8 t=1 type."".identityType+0 +type..namedata.*func(*main.eventAuth, *main.EventData)- SRODATA dupok size=42 + 0x0000 00 00 27 2a 66 75 6e 63 28 2a 6d 61 69 6e 2e 65 ..'*func(*main.e + 0x0010 76 65 6e 74 41 75 74 68 2c 20 2a 6d 61 69 6e 2e ventAuth, *main. + 0x0020 45 76 65 6e 74 44 61 74 61 29 EventData) +type.*func(*"".eventAuth, *"".EventData) SRODATA dupok size=56 + 0x0000 08 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ................ + 0x0010 e4 0e f2 1b 08 08 08 36 00 00 00 00 00 00 00 00 .......6........ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 ........ + rel 24+8 t=1 runtime.memequal64·f+0 + rel 32+8 t=1 runtime.gcbits.01+0 + rel 40+4 t=5 type..namedata.*func(*main.eventAuth, *main.EventData)-+0 + rel 48+8 t=1 type.func(*"".eventAuth, *"".EventData)+0 +type.func(*"".eventAuth, *"".EventData) SRODATA dupok size=72 + 0x0000 08 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ................ + 0x0010 23 42 88 6d 02 08 08 33 00 00 00 00 00 00 00 00 #B.m...3........ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0040 00 00 00 00 00 00 00 00 ........ + rel 32+8 t=1 runtime.gcbits.01+0 + rel 40+4 t=5 type..namedata.*func(*main.eventAuth, *main.EventData)-+0 + rel 44+4 t=6 type.*func(*"".eventAuth, *"".EventData)+0 + rel 56+8 t=1 type.*"".eventAuth+0 + rel 64+8 t=1 type.*"".EventData+0 +type.*"".eventAuth SRODATA size=88 + 0x0000 08 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ................ + 0x0010 52 81 7b 46 09 08 08 36 00 00 00 00 00 00 00 00 R.{F...6........ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 ................ + 0x0040 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0050 00 00 00 00 00 00 00 00 ........ + rel 24+8 t=1 runtime.memequal64·f+0 + rel 32+8 t=1 runtime.gcbits.01+0 + rel 40+4 t=5 type..namedata.*main.eventAuth-+0 + rel 48+8 t=1 type."".eventAuth+0 + rel 56+4 t=5 type..importpath."".+0 + rel 72+4 t=5 type..namedata.attach-+0 + rel 76+4 t=25 type.func(*"".EventData)+0 + rel 80+4 t=25 "".(*eventAuth).attach+0 + rel 84+4 t=25 "".(*eventAuth).attach+0 +runtime.nilinterequal·f SRODATA dupok size=8 + 0x0000 00 00 00 00 00 00 00 00 ........ + rel 0+8 t=1 runtime.nilinterequal+0 +type..namedata.*interface {}- SRODATA dupok size=16 + 0x0000 00 00 0d 2a 69 6e 74 65 72 66 61 63 65 20 7b 7d ...*interface {} +type.*interface {} SRODATA dupok size=56 + 0x0000 08 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ................ + 0x0010 4f 0f 96 9d 08 08 08 36 00 00 00 00 00 00 00 00 O......6........ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 ........ + rel 24+8 t=1 runtime.memequal64·f+0 + rel 32+8 t=1 runtime.gcbits.01+0 + rel 40+4 t=5 type..namedata.*interface {}-+0 + rel 48+8 t=1 type.interface {}+0 +runtime.gcbits.02 SRODATA dupok size=1 + 0x0000 02 . +type.interface {} SRODATA dupok size=80 + 0x0000 10 00 00 00 00 00 00 00 10 00 00 00 00 00 00 00 ................ + 0x0010 e7 57 a0 18 02 08 08 14 00 00 00 00 00 00 00 00 .W.............. + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + rel 24+8 t=1 runtime.nilinterequal·f+0 + rel 32+8 t=1 runtime.gcbits.02+0 + rel 40+4 t=5 type..namedata.*interface {}-+0 + rel 44+4 t=6 type.*interface {}+0 + rel 56+8 t=1 type.interface {}+80 +type..namedata.*[]uint8- SRODATA dupok size=11 + 0x0000 00 00 08 2a 5b 5d 75 69 6e 74 38 ...*[]uint8 +type.*[]uint8 SRODATA dupok size=56 + 0x0000 08 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ................ + 0x0010 a5 8e d0 69 08 08 08 36 00 00 00 00 00 00 00 00 ...i...6........ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 ........ + rel 24+8 t=1 runtime.memequal64·f+0 + rel 32+8 t=1 runtime.gcbits.01+0 + rel 40+4 t=5 type..namedata.*[]uint8-+0 + rel 48+8 t=1 type.[]uint8+0 +type.[]uint8 SRODATA dupok size=56 + 0x0000 18 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ................ + 0x0010 df 7e 2e 38 02 08 08 17 00 00 00 00 00 00 00 00 .~.8............ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 ........ + rel 32+8 t=1 runtime.gcbits.01+0 + rel 40+4 t=5 type..namedata.*[]uint8-+0 + rel 44+4 t=6 type.*[]uint8+0 + rel 48+8 t=1 type.uint8+0 +type..namedata.*[8]uint8- SRODATA dupok size=12 + 0x0000 00 00 09 2a 5b 38 5d 75 69 6e 74 38 ...*[8]uint8 +type.*[8]uint8 SRODATA dupok size=56 + 0x0000 08 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ................ + 0x0010 a9 89 a5 7a 08 08 08 36 00 00 00 00 00 00 00 00 ...z...6........ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 ........ + rel 24+8 t=1 runtime.memequal64·f+0 + rel 32+8 t=1 runtime.gcbits.01+0 + rel 40+4 t=5 type..namedata.*[8]uint8-+0 + rel 48+8 t=1 type.[8]uint8+0 +type.[8]uint8 SRODATA dupok size=72 + 0x0000 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0010 3e f9 30 b4 0a 01 01 11 00 00 00 00 00 00 00 00 >.0............. + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0040 08 00 00 00 00 00 00 00 ........ + rel 24+8 t=1 runtime.memequal64·f+0 + rel 32+8 t=1 runtime.gcbits.+0 + rel 40+4 t=5 type..namedata.*[8]uint8-+0 + rel 44+4 t=6 type.*[8]uint8+0 + rel 48+8 t=1 type.uint8+0 + rel 56+8 t=1 type.[]uint8+0 +type..namedata.*[]string- SRODATA dupok size=12 + 0x0000 00 00 09 2a 5b 5d 73 74 72 69 6e 67 ...*[]string +type.*[]string SRODATA dupok size=56 + 0x0000 08 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ................ + 0x0010 92 22 76 84 08 08 08 36 00 00 00 00 00 00 00 00 ."v....6........ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 ........ + rel 24+8 t=1 runtime.memequal64·f+0 + rel 32+8 t=1 runtime.gcbits.01+0 + rel 40+4 t=5 type..namedata.*[]string-+0 + rel 48+8 t=1 type.[]string+0 +type.[]string SRODATA dupok size=56 + 0x0000 18 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ................ + 0x0010 d3 a8 f3 0a 02 08 08 17 00 00 00 00 00 00 00 00 ................ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 ........ + rel 32+8 t=1 runtime.gcbits.01+0 + rel 40+4 t=5 type..namedata.*[]string-+0 + rel 44+4 t=6 type.*[]string+0 + rel 48+8 t=1 type.string+0 +type..namedata.*[8]string- SRODATA dupok size=13 + 0x0000 00 00 0a 2a 5b 38 5d 73 74 72 69 6e 67 ...*[8]string +type.*[8]string SRODATA dupok size=56 + 0x0000 08 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ................ + 0x0010 ad 94 14 6f 08 08 08 36 00 00 00 00 00 00 00 00 ...o...6........ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 ........ + rel 24+8 t=1 runtime.memequal64·f+0 + rel 32+8 t=1 runtime.gcbits.01+0 + rel 40+4 t=5 type..namedata.*[8]string-+0 + rel 48+8 t=1 type.noalg.[8]string+0 +runtime.gcbits.5555 SRODATA dupok size=2 + 0x0000 55 55 UU +type.noalg.[8]string SRODATA dupok size=72 + 0x0000 80 00 00 00 00 00 00 00 78 00 00 00 00 00 00 00 ........x....... + 0x0010 55 53 8c 3e 02 08 08 11 00 00 00 00 00 00 00 00 US.>............ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0040 08 00 00 00 00 00 00 00 ........ + rel 32+8 t=1 runtime.gcbits.5555+0 + rel 40+4 t=5 type..namedata.*[8]string-+0 + rel 44+4 t=6 type.*[8]string+0 + rel 48+8 t=1 type.string+0 + rel 56+8 t=1 type.[]string+0 +type..namedata.*[]interface {}- SRODATA dupok size=18 + 0x0000 00 00 0f 2a 5b 5d 69 6e 74 65 72 66 61 63 65 20 ...*[]interface + 0x0010 7b 7d {} +type.*[]interface {} SRODATA dupok size=56 + 0x0000 08 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ................ + 0x0010 f3 04 9a e7 08 08 08 36 00 00 00 00 00 00 00 00 .......6........ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 ........ + rel 24+8 t=1 runtime.memequal64·f+0 + rel 32+8 t=1 runtime.gcbits.01+0 + rel 40+4 t=5 type..namedata.*[]interface {}-+0 + rel 48+8 t=1 type.[]interface {}+0 +type.[]interface {} SRODATA dupok size=56 + 0x0000 18 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ................ + 0x0010 70 93 ea 2f 02 08 08 17 00 00 00 00 00 00 00 00 p../............ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 ........ + rel 32+8 t=1 runtime.gcbits.01+0 + rel 40+4 t=5 type..namedata.*[]interface {}-+0 + rel 44+4 t=6 type.*[]interface {}+0 + rel 48+8 t=1 type.interface {}+0 +type..namedata.*[8]interface {}- SRODATA dupok size=19 + 0x0000 00 00 10 2a 5b 38 5d 69 6e 74 65 72 66 61 63 65 ...*[8]interface + 0x0010 20 7b 7d {} +type.*[8]interface {} SRODATA dupok size=56 + 0x0000 08 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ................ + 0x0010 89 61 4b 14 08 08 08 36 00 00 00 00 00 00 00 00 .aK....6........ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 ........ + rel 24+8 t=1 runtime.memequal64·f+0 + rel 32+8 t=1 runtime.gcbits.01+0 + rel 40+4 t=5 type..namedata.*[8]interface {}-+0 + rel 48+8 t=1 type.noalg.[8]interface {}+0 +runtime.gcbits.aaaa SRODATA dupok size=2 + 0x0000 aa aa .. +type.noalg.[8]interface {} SRODATA dupok size=72 + 0x0000 80 00 00 00 00 00 00 00 80 00 00 00 00 00 00 00 ................ + 0x0010 c7 2e 54 f0 02 08 08 11 00 00 00 00 00 00 00 00 ..T............. + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0040 08 00 00 00 00 00 00 00 ........ + rel 32+8 t=1 runtime.gcbits.aaaa+0 + rel 40+4 t=5 type..namedata.*[8]interface {}-+0 + rel 44+4 t=6 type.*[8]interface {}+0 + rel 48+8 t=1 type.interface {}+0 + rel 56+8 t=1 type.[]interface {}+0 +type..namedata.*map.bucket[string]interface {}- SRODATA dupok size=34 + 0x0000 00 00 1f 2a 6d 61 70 2e 62 75 63 6b 65 74 5b 73 ...*map.bucket[s + 0x0010 74 72 69 6e 67 5d 69 6e 74 65 72 66 61 63 65 20 tring]interface + 0x0020 7b 7d {} +type.*map.bucket[string]interface {} SRODATA dupok size=56 + 0x0000 08 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ................ + 0x0010 f6 0e cc e8 08 08 08 36 00 00 00 00 00 00 00 00 .......6........ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 ........ + rel 24+8 t=1 runtime.memequal64·f+0 + rel 32+8 t=1 runtime.gcbits.01+0 + rel 40+4 t=5 type..namedata.*map.bucket[string]interface {}-+0 + rel 48+8 t=1 type.noalg.map.bucket[string]interface {}+0 +runtime.gcbits.aaaa545503 SRODATA dupok size=5 + 0x0000 aa aa 54 55 03 ..TU. +type..importpath.. SRODATA dupok size=3 + 0x0000 00 00 00 ... +type..namedata.topbits- SRODATA dupok size=10 + 0x0000 00 00 07 74 6f 70 62 69 74 73 ...topbits +type..namedata.keys- SRODATA dupok size=7 + 0x0000 00 00 04 6b 65 79 73 ...keys +type..namedata.elems- SRODATA dupok size=8 + 0x0000 00 00 05 65 6c 65 6d 73 ...elems +type..namedata.overflow- SRODATA dupok size=11 + 0x0000 00 00 08 6f 76 65 72 66 6c 6f 77 ...overflow +type.noalg.map.bucket[string]interface {} SRODATA dupok size=176 + 0x0000 10 01 00 00 00 00 00 00 10 01 00 00 00 00 00 00 ................ + 0x0010 0e 0a be f7 02 08 08 19 00 00 00 00 00 00 00 00 ................ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0040 04 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 ................ + 0x0050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0070 00 00 00 00 00 00 00 00 10 00 00 00 00 00 00 00 ................ + 0x0080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0090 10 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x00a0 00 00 00 00 00 00 00 00 10 02 00 00 00 00 00 00 ................ + rel 32+8 t=1 runtime.gcbits.aaaa545503+0 + rel 40+4 t=5 type..namedata.*map.bucket[string]interface {}-+0 + rel 44+4 t=6 type.*map.bucket[string]interface {}+0 + rel 48+8 t=1 type..importpath..+0 + rel 56+8 t=1 type.noalg.map.bucket[string]interface {}+80 + rel 80+8 t=1 type..namedata.topbits-+0 + rel 88+8 t=1 type.[8]uint8+0 + rel 104+8 t=1 type..namedata.keys-+0 + rel 112+8 t=1 type.noalg.[8]string+0 + rel 128+8 t=1 type..namedata.elems-+0 + rel 136+8 t=1 type.noalg.[8]interface {}+0 + rel 152+8 t=1 type..namedata.overflow-+0 + rel 160+8 t=1 type.*map.bucket[string]interface {}+0 +runtime.strhash·f SRODATA dupok size=8 + 0x0000 00 00 00 00 00 00 00 00 ........ + rel 0+8 t=1 runtime.strhash+0 +type..namedata.*main.Data. SRODATA dupok size=13 + 0x0000 01 00 0a 2a 6d 61 69 6e 2e 44 61 74 61 ...*main.Data +type..namedata.*func(main.Data, *main.EventData)- SRODATA dupok size=36 + 0x0000 00 00 21 2a 66 75 6e 63 28 6d 61 69 6e 2e 44 61 ..!*func(main.Da + 0x0010 74 61 2c 20 2a 6d 61 69 6e 2e 45 76 65 6e 74 44 ta, *main.EventD + 0x0020 61 74 61 29 ata) +type.*func("".Data, *"".EventData) SRODATA dupok size=56 + 0x0000 08 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ................ + 0x0010 09 09 e5 cf 08 08 08 36 00 00 00 00 00 00 00 00 .......6........ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 ........ + rel 24+8 t=1 runtime.memequal64·f+0 + rel 32+8 t=1 runtime.gcbits.01+0 + rel 40+4 t=5 type..namedata.*func(main.Data, *main.EventData)-+0 + rel 48+8 t=1 type.func("".Data, *"".EventData)+0 +type.func("".Data, *"".EventData) SRODATA dupok size=72 + 0x0000 08 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ................ + 0x0010 21 4a f1 c4 02 08 08 33 00 00 00 00 00 00 00 00 !J.....3........ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0040 00 00 00 00 00 00 00 00 ........ + rel 32+8 t=1 runtime.gcbits.01+0 + rel 40+4 t=5 type..namedata.*func(main.Data, *main.EventData)-+0 + rel 44+4 t=6 type.*func("".Data, *"".EventData)+0 + rel 56+8 t=1 type."".Data+0 + rel 64+8 t=1 type.*"".EventData+0 +type."".Data SRODATA size=120 + 0x0000 08 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ................ + 0x0010 56 17 02 94 07 08 08 35 00 00 00 00 00 00 00 00 V......5........ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0050 10 10 10 01 0c 00 00 00 00 00 00 00 01 00 00 00 ................ + 0x0060 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0070 00 00 00 00 00 00 00 00 ........ + rel 32+8 t=1 runtime.gcbits.01+0 + rel 40+4 t=5 type..namedata.*main.Data.+0 + rel 44+4 t=5 type.*"".Data+0 + rel 48+8 t=1 type.string+0 + rel 56+8 t=1 type.interface {}+0 + rel 64+8 t=1 type.noalg.map.bucket[string]interface {}+0 + rel 72+8 t=1 runtime.strhash·f+0 + rel 88+4 t=5 type..importpath."".+0 + rel 104+4 t=5 type..namedata.attach-+0 + rel 108+4 t=25 type.func(*"".EventData)+0 + rel 112+4 t=25 "".Data.attach+0 + rel 116+4 t=25 "".Data.attach+0 +go.info."".Data.attach$abstract SDWARFINFO dupok size=34 + 0x0000 04 2e 44 61 74 61 2e 61 74 74 61 63 68 00 01 01 ..Data.attach... + 0x0010 11 64 00 00 00 00 00 00 11 6c 65 00 00 00 00 00 .d.......le..... + 0x0020 00 00 .. + rel 20+4 t=29 go.info."".Data+0 + rel 29+4 t=29 go.info.*"".EventData+0 +go.loc."".(*Data).attach SDWARFLOC dupok size=174 + 0x0000 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 ................ + 0x0010 4c 00 00 00 00 00 00 00 6f 00 00 00 00 00 00 00 L.......o....... + 0x0020 01 00 55 7d 00 00 00 00 00 00 00 83 00 00 00 00 ..U}............ + 0x0030 00 00 00 01 00 55 00 00 00 00 00 00 00 00 00 00 .....U.......... + 0x0040 00 00 00 00 00 00 ff ff ff ff ff ff ff ff 00 00 ................ + 0x0050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 b7 00 ................ + 0x0060 00 00 00 00 00 00 02 00 91 08 00 00 00 00 00 00 ................ + 0x0070 00 00 00 00 00 00 00 00 00 00 ff ff ff ff ff ff ................ + 0x0080 ff ff 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0090 00 00 b7 00 00 00 00 00 00 00 02 00 91 08 00 00 ................ + 0x00a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .............. + rel 8+8 t=1 "".(*Data).attach+0 + rel 78+8 t=1 "".(*Data).attach+0 + rel 130+8 t=1 "".(*Data).attach+0 +go.info."".(*Data).attach SDWARFINFO dupok size=96 + 0x0000 03 22 22 2e 28 2a 44 61 74 61 29 2e 61 74 74 61 ."".(*Data).atta + 0x0010 63 68 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ch.............. + 0x0020 00 00 00 01 9c 00 00 00 00 01 0b 26 64 00 c5 01 ...........&d... + 0x0030 00 00 00 00 00 00 00 00 10 6c 65 00 00 c5 01 00 .........le..... + 0x0040 00 00 00 00 00 00 00 07 00 00 00 00 00 00 00 00 ................ + 0x0050 00 00 00 00 01 13 00 00 00 00 00 00 00 00 00 00 ................ + rel 0+0 t=24 type.*"".Data+0 + rel 0+0 t=24 type.*"".EventData+0 + rel 19+8 t=1 "".(*Data).attach+0 + rel 27+8 t=1 "".(*Data).attach+183 + rel 37+4 t=30 gofile..+0 + rel 48+4 t=29 go.info.*"".Data+0 + rel 52+4 t=29 go.loc."".(*Data).attach+0 + rel 63+4 t=29 go.info.*"".EventData+0 + rel 67+4 t=29 go.loc."".(*Data).attach+70 + rel 72+4 t=29 go.info."".Data.attach$abstract+0 + rel 76+4 t=29 go.range."".(*Data).attach+0 + rel 80+4 t=30 gofile..+0 + rel 86+4 t=29 go.info."".Data.attach$abstract+24 + rel 90+4 t=29 go.loc."".(*Data).attach+122 +go.range."".(*Data).attach SDWARFRANGE dupok size=96 + 0x0000 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 ................ + 0x0010 5b 00 00 00 00 00 00 00 62 00 00 00 00 00 00 00 [.......b....... + 0x0020 62 00 00 00 00 00 00 00 6f 00 00 00 00 00 00 00 b.......o....... + 0x0030 79 00 00 00 00 00 00 00 7d 00 00 00 00 00 00 00 y.......}....... + 0x0040 80 00 00 00 00 00 00 00 8a 00 00 00 00 00 00 00 ................ + 0x0050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + rel 8+8 t=1 "".(*Data).attach+0 +go.debuglines."".(*Data).attach SDWARFMISC dupok size=57 + 0x0000 04 01 0f 0a cd 06 08 41 04 02 06 08 03 c0 01 d2 .......A........ + 0x0010 06 41 04 01 06 03 bf 7e a1 04 02 06 03 c0 01 78 .A.....~.......x + 0x0020 04 01 03 bf 7e 33 04 02 03 c0 01 32 04 01 03 bf ....~3.....2.... + 0x0030 7e 6f 06 87 04 01 03 00 01 ~o....... +type..namedata.*func(*main.Data, *main.EventData)- SRODATA dupok size=37 + 0x0000 00 00 22 2a 66 75 6e 63 28 2a 6d 61 69 6e 2e 44 .."*func(*main.D + 0x0010 61 74 61 2c 20 2a 6d 61 69 6e 2e 45 76 65 6e 74 ata, *main.Event + 0x0020 44 61 74 61 29 Data) +type.*func(*"".Data, *"".EventData) SRODATA dupok size=56 + 0x0000 08 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ................ + 0x0010 c7 a0 b4 b4 08 08 08 36 00 00 00 00 00 00 00 00 .......6........ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 ........ + rel 24+8 t=1 runtime.memequal64·f+0 + rel 32+8 t=1 runtime.gcbits.01+0 + rel 40+4 t=5 type..namedata.*func(*main.Data, *main.EventData)-+0 + rel 48+8 t=1 type.func(*"".Data, *"".EventData)+0 +type.func(*"".Data, *"".EventData) SRODATA dupok size=72 + 0x0000 08 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ................ + 0x0010 da 8f 7c c6 02 08 08 33 00 00 00 00 00 00 00 00 ..|....3........ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0040 00 00 00 00 00 00 00 00 ........ + rel 32+8 t=1 runtime.gcbits.01+0 + rel 40+4 t=5 type..namedata.*func(*main.Data, *main.EventData)-+0 + rel 44+4 t=6 type.*func(*"".Data, *"".EventData)+0 + rel 56+8 t=1 type.*"".Data+0 + rel 64+8 t=1 type.*"".EventData+0 +type.*"".Data SRODATA size=88 + 0x0000 08 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ................ + 0x0010 a7 0b c0 9a 09 08 08 36 00 00 00 00 00 00 00 00 .......6........ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 ................ + 0x0040 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0050 00 00 00 00 00 00 00 00 ........ + rel 24+8 t=1 runtime.memequal64·f+0 + rel 32+8 t=1 runtime.gcbits.01+0 + rel 40+4 t=5 type..namedata.*main.Data.+0 + rel 48+8 t=1 type."".Data+0 + rel 56+4 t=5 type..importpath."".+0 + rel 72+4 t=5 type..namedata.attach-+0 + rel 76+4 t=25 type.func(*"".EventData)+0 + rel 80+4 t=25 "".(*Data).attach+0 + rel 84+4 t=25 "".(*Data).attach+0 +go.loc.type..eq."".EventStackTrace SDWARFLOC dupok size=103 + 0x0000 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 ................ + 0x0010 00 00 00 00 00 00 00 00 bd 00 00 00 00 00 00 00 ................ + 0x0020 01 00 9c 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 ff ff ff ff ff ff ff ff 00 00 00 00 00 ................ + 0x0040 00 00 00 00 00 00 00 00 00 00 00 bd 00 00 00 00 ................ + 0x0050 00 00 00 02 00 91 08 00 00 00 00 00 00 00 00 00 ................ + 0x0060 00 00 00 00 00 00 00 ....... + rel 8+8 t=1 type..eq."".EventStackTrace+0 + rel 59+8 t=1 type..eq."".EventStackTrace+0 +go.info.type..eq."".EventStackTrace SDWARFINFO dupok size=91 + 0x0000 03 74 79 70 65 2e 2e 65 71 2e 22 22 2e 45 76 65 .type..eq."".Eve + 0x0010 6e 74 53 74 61 63 6b 54 72 61 63 65 00 00 00 00 ntStackTrace.... + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 01 9c 00 ................ + 0x0030 00 00 00 01 10 70 00 00 01 00 00 00 00 00 00 00 .....p.......... + 0x0040 00 10 71 00 00 01 00 00 00 00 00 00 00 00 0f 7e ..q............~ + 0x0050 72 32 00 01 01 00 00 00 00 00 00 r2......... + rel 0+0 t=24 type.*"".EventStackTrace+0 + rel 0+0 t=24 type.bool+0 + rel 29+8 t=1 type..eq."".EventStackTrace+0 + rel 37+8 t=1 type..eq."".EventStackTrace+189 + rel 47+4 t=30 gofile..+0 + rel 57+4 t=29 go.info.*"".EventStackTrace+0 + rel 61+4 t=29 go.loc.type..eq."".EventStackTrace+0 + rel 70+4 t=29 go.info.*"".EventStackTrace+0 + rel 74+4 t=29 go.loc.type..eq."".EventStackTrace+51 + rel 85+4 t=29 go.info.bool+0 +go.range.type..eq."".EventStackTrace SDWARFRANGE dupok size=0 +go.debuglines.type..eq."".EventStackTrace SDWARFMISC dupok size=22 + 0x0000 04 01 0f 0a cd 06 cd 06 02 21 ff 06 37 06 02 38 .........!..7..8 + 0x0010 ff 04 01 03 00 01 ...... +type..eqfunc."".EventStackTrace SRODATA dupok size=8 + 0x0000 00 00 00 00 00 00 00 00 ........ + rel 0+8 t=1 type..eq."".EventStackTrace+0 +type..namedata.*main.EventStackTrace. SRODATA dupok size=24 + 0x0000 01 00 15 2a 6d 61 69 6e 2e 45 76 65 6e 74 53 74 ...*main.EventSt + 0x0010 61 63 6b 54 72 61 63 65 ackTrace +type.*"".EventStackTrace SRODATA size=56 + 0x0000 08 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ................ + 0x0010 11 8c d3 7f 08 08 08 36 00 00 00 00 00 00 00 00 .......6........ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 ........ + rel 24+8 t=1 runtime.memequal64·f+0 + rel 32+8 t=1 runtime.gcbits.01+0 + rel 40+4 t=5 type..namedata.*main.EventStackTrace.+0 + rel 48+8 t=1 type."".EventStackTrace+0 +runtime.gcbits.09 SRODATA dupok size=1 + 0x0000 09 . +type..namedata.File.json:"file,omitempty" SRODATA dupok size=30 + 0x0000 03 00 04 46 69 6c 65 00 15 6a 73 6f 6e 3a 22 66 ...File..json:"f + 0x0010 69 6c 65 2c 6f 6d 69 74 65 6d 70 74 79 22 ile,omitempty" +type..namedata.Line.json:"line,omitempty" SRODATA dupok size=30 + 0x0000 03 00 04 4c 69 6e 65 00 15 6a 73 6f 6e 3a 22 6c ...Line..json:"l + 0x0010 69 6e 65 2c 6f 6d 69 74 65 6d 70 74 79 22 ine,omitempty" +type..namedata.Function.json:"function,omitempty" SRODATA dupok size=38 + 0x0000 03 00 08 46 75 6e 63 74 69 6f 6e 00 19 6a 73 6f ...Function..jso + 0x0010 6e 3a 22 66 75 6e 63 74 69 6f 6e 2c 6f 6d 69 74 n:"function,omit + 0x0020 65 6d 70 74 79 22 empty" +type."".EventStackTrace SRODATA size=168 + 0x0000 28 00 00 00 00 00 00 00 20 00 00 00 00 00 00 00 (....... ....... + 0x0010 b5 8e 0b 49 07 08 08 19 00 00 00 00 00 00 00 00 ...I............ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0040 03 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 ................ + 0x0050 00 00 00 00 00 00 00 00 58 00 00 00 00 00 00 00 ........X....... + 0x0060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0080 00 00 00 00 00 00 00 00 20 00 00 00 00 00 00 00 ........ ....... + 0x0090 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x00a0 30 00 00 00 00 00 00 00 0....... + rel 24+8 t=1 type..eqfunc."".EventStackTrace+0 + rel 32+8 t=1 runtime.gcbits.09+0 + rel 40+4 t=5 type..namedata.*main.EventStackTrace.+0 + rel 44+4 t=5 type.*"".EventStackTrace+0 + rel 56+8 t=1 type."".EventStackTrace+96 + rel 80+4 t=5 type..importpath."".+0 + rel 96+8 t=1 type..namedata.File.json:"file,omitempty"+0 + rel 104+8 t=1 type.string+0 + rel 120+8 t=1 type..namedata.Line.json:"line,omitempty"+0 + rel 128+8 t=1 type.int+0 + rel 144+8 t=1 type..namedata.Function.json:"function,omitempty"+0 + rel 152+8 t=1 type.string+0 +type..namedata.*[]main.EventStackTrace- SRODATA dupok size=26 + 0x0000 00 00 17 2a 5b 5d 6d 61 69 6e 2e 45 76 65 6e 74 ...*[]main.Event + 0x0010 53 74 61 63 6b 54 72 61 63 65 StackTrace +type.*[]"".EventStackTrace SRODATA dupok size=56 + 0x0000 08 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ................ + 0x0010 0a 85 a2 e0 08 08 08 36 00 00 00 00 00 00 00 00 .......6........ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 ........ + rel 24+8 t=1 runtime.memequal64·f+0 + rel 32+8 t=1 runtime.gcbits.01+0 + rel 40+4 t=5 type..namedata.*[]main.EventStackTrace-+0 + rel 48+8 t=1 type.[]"".EventStackTrace+0 +type.[]"".EventStackTrace SRODATA dupok size=56 + 0x0000 18 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ................ + 0x0010 27 65 39 a4 02 08 08 17 00 00 00 00 00 00 00 00 'e9............. + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 ........ + rel 32+8 t=1 runtime.gcbits.01+0 + rel 40+4 t=5 type..namedata.*[]main.EventStackTrace-+0 + rel 44+4 t=6 type.*[]"".EventStackTrace+0 + rel 48+8 t=1 type."".EventStackTrace+0 +runtime.gcbits.45 SRODATA dupok size=1 + 0x0000 45 E +type..namedata.*main.EventError. SRODATA dupok size=19 + 0x0000 01 00 10 2a 6d 61 69 6e 2e 45 76 65 6e 74 45 72 ...*main.EventEr + 0x0010 72 6f 72 ror +type..namedata.Error.json:"error,omitempty" SRODATA dupok size=32 + 0x0000 03 00 05 45 72 72 6f 72 00 16 6a 73 6f 6e 3a 22 ...Error..json:" + 0x0010 65 72 72 6f 72 2c 6f 6d 69 74 65 6d 70 74 79 22 error,omitempty" +type..namedata.StackTrace.json:"stack_trace,omitempty" SRODATA dupok size=43 + 0x0000 03 00 0a 53 74 61 63 6b 54 72 61 63 65 00 1c 6a ...StackTrace..j + 0x0010 73 6f 6e 3a 22 73 74 61 63 6b 5f 74 72 61 63 65 son:"stack_trace + 0x0020 2c 6f 6d 69 74 65 6d 70 74 79 22 ,omitempty" +type..namedata.Data.json:"data,omitempty" SRODATA dupok size=30 + 0x0000 03 00 04 44 61 74 61 00 15 6a 73 6f 6e 3a 22 64 ...Data..json:"d + 0x0010 61 74 61 2c 6f 6d 69 74 65 6d 70 74 79 22 ata,omitempty" +type."".EventError SRODATA size=168 + 0x0000 38 00 00 00 00 00 00 00 38 00 00 00 00 00 00 00 8.......8....... + 0x0010 9f 91 18 24 07 08 08 19 00 00 00 00 00 00 00 00 ...$............ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0040 03 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 ................ + 0x0050 00 00 00 00 00 00 00 00 58 00 00 00 00 00 00 00 ........X....... + 0x0060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0080 00 00 00 00 00 00 00 00 20 00 00 00 00 00 00 00 ........ ....... + 0x0090 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x00a0 50 00 00 00 00 00 00 00 P....... + rel 32+8 t=1 runtime.gcbits.45+0 + rel 40+4 t=5 type..namedata.*main.EventError.+0 + rel 44+4 t=5 type.*"".EventError+0 + rel 56+8 t=1 type."".EventError+96 + rel 80+4 t=5 type..importpath."".+0 + rel 96+8 t=1 type..namedata.Error.json:"error,omitempty"+0 + rel 104+8 t=1 type.string+0 + rel 120+8 t=1 type..namedata.StackTrace.json:"stack_trace,omitempty"+0 + rel 128+8 t=1 type.[]"".EventStackTrace+0 + rel 144+8 t=1 type..namedata.Data.json:"data,omitempty"+0 + rel 152+8 t=1 type.interface {}+0 +type..namedata.*func(*main.EventError, *main.EventData)- SRODATA dupok size=43 + 0x0000 00 00 28 2a 66 75 6e 63 28 2a 6d 61 69 6e 2e 45 ..(*func(*main.E + 0x0010 76 65 6e 74 45 72 72 6f 72 2c 20 2a 6d 61 69 6e ventError, *main + 0x0020 2e 45 76 65 6e 74 44 61 74 61 29 .EventData) +type.*func(*"".EventError, *"".EventData) SRODATA dupok size=56 + 0x0000 08 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ................ + 0x0010 78 34 43 e9 08 08 08 36 00 00 00 00 00 00 00 00 x4C....6........ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 ........ + rel 24+8 t=1 runtime.memequal64·f+0 + rel 32+8 t=1 runtime.gcbits.01+0 + rel 40+4 t=5 type..namedata.*func(*main.EventError, *main.EventData)-+0 + rel 48+8 t=1 type.func(*"".EventError, *"".EventData)+0 +type.func(*"".EventError, *"".EventData) SRODATA dupok size=72 + 0x0000 08 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ................ + 0x0010 ae bb 5e 36 02 08 08 33 00 00 00 00 00 00 00 00 ..^6...3........ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0040 00 00 00 00 00 00 00 00 ........ + rel 32+8 t=1 runtime.gcbits.01+0 + rel 40+4 t=5 type..namedata.*func(*main.EventError, *main.EventData)-+0 + rel 44+4 t=6 type.*func(*"".EventError, *"".EventData)+0 + rel 56+8 t=1 type.*"".EventError+0 + rel 64+8 t=1 type.*"".EventData+0 +type.*"".EventError SRODATA size=88 + 0x0000 08 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ................ + 0x0010 04 2e e9 f3 09 08 08 36 00 00 00 00 00 00 00 00 .......6........ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 ................ + 0x0040 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0050 00 00 00 00 00 00 00 00 ........ + rel 24+8 t=1 runtime.memequal64·f+0 + rel 32+8 t=1 runtime.gcbits.01+0 + rel 40+4 t=5 type..namedata.*main.EventError.+0 + rel 48+8 t=1 type."".EventError+0 + rel 56+4 t=5 type..importpath."".+0 + rel 72+4 t=5 type..namedata.attach-+0 + rel 76+4 t=25 type.func(*"".EventData)+0 + rel 80+4 t=25 "".(*EventError).attach+0 + rel 84+4 t=25 "".(*EventError).attach+0 +go.loc.type..eq."".EventData SDWARFLOC dupok size=103 + 0x0000 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 ................ + 0x0010 00 00 00 00 00 00 00 00 c3 01 00 00 00 00 00 00 ................ + 0x0020 01 00 9c 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 ff ff ff ff ff ff ff ff 00 00 00 00 00 ................ + 0x0040 00 00 00 00 00 00 00 00 00 00 00 c3 01 00 00 00 ................ + 0x0050 00 00 00 02 00 91 08 00 00 00 00 00 00 00 00 00 ................ + 0x0060 00 00 00 00 00 00 00 ....... + rel 8+8 t=1 type..eq."".EventData+0 + rel 59+8 t=1 type..eq."".EventData+0 +go.info.type..eq."".EventData SDWARFINFO dupok size=85 + 0x0000 03 74 79 70 65 2e 2e 65 71 2e 22 22 2e 45 76 65 .type..eq."".Eve + 0x0010 6e 74 44 61 74 61 00 00 00 00 00 00 00 00 00 00 ntData.......... + 0x0020 00 00 00 00 00 00 00 01 9c 00 00 00 00 01 10 70 ...............p + 0x0030 00 00 01 00 00 00 00 00 00 00 00 10 71 00 00 01 ............q... + 0x0040 00 00 00 00 00 00 00 00 0f 7e 72 32 00 01 01 00 .........~r2.... + 0x0050 00 00 00 00 00 ..... + rel 0+0 t=24 type.*"".EventData+0 + rel 0+0 t=24 type.bool+0 + rel 23+8 t=1 type..eq."".EventData+0 + rel 31+8 t=1 type..eq."".EventData+451 + rel 41+4 t=30 gofile..+0 + rel 51+4 t=29 go.info.*"".EventData+0 + rel 55+4 t=29 go.loc.type..eq."".EventData+0 + rel 64+4 t=29 go.info.*"".EventData+0 + rel 68+4 t=29 go.loc.type..eq."".EventData+51 + rel 79+4 t=29 go.info.bool+0 +go.range.type..eq."".EventData SDWARFRANGE dupok size=0 +go.debuglines.type..eq."".EventData SDWARFMISC dupok size=24 + 0x0000 04 01 0f 0a cd 06 cd 06 02 87 01 ff 06 37 06 02 .............7.. + 0x0010 d8 01 ff 04 01 03 00 01 ........ +type..eqfunc."".EventData SRODATA dupok size=8 + 0x0000 00 00 00 00 00 00 00 00 ........ + rel 0+8 t=1 type..eq."".EventData+0 +runtime.gcbits.acfa SRODATA dupok size=2 + 0x0000 ac fa .. +type..namedata.*main.EventData. SRODATA dupok size=18 + 0x0000 01 00 0f 2a 6d 61 69 6e 2e 45 76 65 6e 74 44 61 ...*main.EventDa + 0x0010 74 61 ta +type..namedata.CreatedAt.json:"created_at" SRODATA dupok size=31 + 0x0000 03 00 09 43 72 65 61 74 65 64 41 74 00 11 6a 73 ...CreatedAt..js + 0x0010 6f 6e 3a 22 63 72 65 61 74 65 64 5f 61 74 22 on:"created_at" +type..namedata.Namespace.json:"namespace" SRODATA dupok size=30 + 0x0000 03 00 09 4e 61 6d 65 73 70 61 63 65 00 10 6a 73 ...Namespace..js + 0x0010 6f 6e 3a 22 6e 61 6d 65 73 70 61 63 65 22 on:"namespace" +type..namedata.Event.json:"event" SRODATA dupok size=22 + 0x0000 03 00 05 45 76 65 6e 74 00 0c 6a 73 6f 6e 3a 22 ...Event..json:" + 0x0010 65 76 65 6e 74 22 event" +type..namedata.TraceID.json:"trace_id,omitempty" SRODATA dupok size=37 + 0x0000 03 00 07 54 72 61 63 65 49 44 00 19 6a 73 6f 6e ...TraceID..json + 0x0010 3a 22 74 72 61 63 65 5f 69 64 2c 6f 6d 69 74 65 :"trace_id,omite + 0x0020 6d 70 74 79 22 mpty" +type..namedata.SpanID.json:"span_id,omitempty" SRODATA dupok size=35 + 0x0000 03 00 06 53 70 61 6e 49 44 00 18 6a 73 6f 6e 3a ...SpanID..json: + 0x0010 22 73 70 61 6e 5f 69 64 2c 6f 6d 69 74 65 6d 70 "span_id,omitemp + 0x0020 74 79 22 ty" +type..namedata.Severity.json:"severity,omitempty" SRODATA dupok size=38 + 0x0000 03 00 08 53 65 76 65 72 69 74 79 00 19 6a 73 6f ...Severity..jso + 0x0010 6e 3a 22 73 65 76 65 72 69 74 79 2c 6f 6d 69 74 n:"severity,omit + 0x0020 65 6d 70 74 79 22 empty" +type..namedata.HTTP.json:"http,omitempty" SRODATA dupok size=30 + 0x0000 03 00 04 48 54 54 50 00 15 6a 73 6f 6e 3a 22 68 ...HTTP..json:"h + 0x0010 74 74 70 2c 6f 6d 69 74 65 6d 70 74 79 22 ttp,omitempty" +type..namedata.Auth.json:"auth,omitempty" SRODATA dupok size=30 + 0x0000 03 00 04 41 75 74 68 00 15 6a 73 6f 6e 3a 22 61 ...Auth..json:"a + 0x0010 75 74 68 2c 6f 6d 69 74 65 6d 70 74 79 22 uth,omitempty" +type."".EventData SRODATA size=336 + 0x0000 80 00 00 00 00 00 00 00 80 00 00 00 00 00 00 00 ................ + 0x0010 8b 74 6a 4d 07 08 08 19 00 00 00 00 00 00 00 00 .tjM............ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0040 0a 00 00 00 00 00 00 00 0a 00 00 00 00 00 00 00 ................ + 0x0050 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 ................ + 0x0060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0080 00 00 00 00 00 00 00 00 30 00 00 00 00 00 00 00 ........0....... + 0x0090 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x00a0 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 P............... + 0x00b0 00 00 00 00 00 00 00 00 70 00 00 00 00 00 00 00 ........p....... + 0x00c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x00d0 90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x00e0 00 00 00 00 00 00 00 00 b0 00 00 00 00 00 00 00 ................ + 0x00f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0100 c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0110 00 00 00 00 00 00 00 00 d0 00 00 00 00 00 00 00 ................ + 0x0120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0130 e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0140 00 00 00 00 00 00 00 00 f0 00 00 00 00 00 00 00 ................ + rel 24+8 t=1 type..eqfunc."".EventData+0 + rel 32+8 t=1 runtime.gcbits.acfa+0 + rel 40+4 t=5 type..namedata.*main.EventData.+0 + rel 44+4 t=5 type.*"".EventData+0 + rel 56+8 t=1 type."".EventData+96 + rel 80+4 t=5 type..importpath."".+0 + rel 96+8 t=1 type..namedata.CreatedAt.json:"created_at"+0 + rel 104+8 t=1 type.time.Time+0 + rel 120+8 t=1 type..namedata.Namespace.json:"namespace"+0 + rel 128+8 t=1 type.string+0 + rel 144+8 t=1 type..namedata.Event.json:"event"+0 + rel 152+8 t=1 type.string+0 + rel 168+8 t=1 type..namedata.TraceID.json:"trace_id,omitempty"+0 + rel 176+8 t=1 type.string+0 + rel 192+8 t=1 type..namedata.SpanID.json:"span_id,omitempty"+0 + rel 200+8 t=1 type.string+0 + rel 216+8 t=1 type..namedata.Severity.json:"severity,omitempty"+0 + rel 224+8 t=1 type.*"".severity+0 + rel 240+8 t=1 type..namedata.HTTP.json:"http,omitempty"+0 + rel 248+8 t=1 type.*"".EventHTTP+0 + rel 264+8 t=1 type..namedata.Auth.json:"auth,omitempty"+0 + rel 272+8 t=1 type.*"".eventAuth+0 + rel 288+8 t=1 type..namedata.Data.json:"data,omitempty"+0 + rel 296+8 t=1 type.*"".Data+0 + rel 312+8 t=1 type..namedata.Error.json:"error,omitempty"+0 + rel 320+8 t=1 type.*"".EventError+0 +type.*"".EventData SRODATA size=56 + 0x0000 08 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ................ + 0x0010 f2 d7 83 6b 08 08 08 36 00 00 00 00 00 00 00 00 ...k...6........ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 ........ + rel 24+8 t=1 runtime.memequal64·f+0 + rel 32+8 t=1 runtime.gcbits.01+0 + rel 40+4 t=5 type..namedata.*main.EventData.+0 + rel 48+8 t=1 type."".EventData+0 +type..namedata.*func(*main.EventData)- SRODATA dupok size=25 + 0x0000 00 00 16 2a 66 75 6e 63 28 2a 6d 61 69 6e 2e 45 ...*func(*main.E + 0x0010 76 65 6e 74 44 61 74 61 29 ventData) +type.*func(*"".EventData) SRODATA dupok size=56 + 0x0000 08 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ................ + 0x0010 46 81 05 81 08 08 08 36 00 00 00 00 00 00 00 00 F......6........ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 ........ + rel 24+8 t=1 runtime.memequal64·f+0 + rel 32+8 t=1 runtime.gcbits.01+0 + rel 40+4 t=5 type..namedata.*func(*main.EventData)-+0 + rel 48+8 t=1 type.func(*"".EventData)+0 +type.func(*"".EventData) SRODATA dupok size=64 + 0x0000 08 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ................ + 0x0010 f7 4e 86 5c 02 08 08 33 00 00 00 00 00 00 00 00 .N.\...3........ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + rel 32+8 t=1 runtime.gcbits.01+0 + rel 40+4 t=5 type..namedata.*func(*main.EventData)-+0 + rel 44+4 t=6 type.*func(*"".EventData)+0 + rel 56+8 t=1 type.*"".EventData+0 +runtime.interequal·f SRODATA dupok size=8 + 0x0000 00 00 00 00 00 00 00 00 ........ + rel 0+8 t=1 runtime.interequal+0 +type..namedata.*main.option- SRODATA dupok size=15 + 0x0000 00 00 0c 2a 6d 61 69 6e 2e 6f 70 74 69 6f 6e ...*main.option +type.*"".option SRODATA size=56 + 0x0000 08 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ................ + 0x0010 ff 05 c4 6b 08 08 08 36 00 00 00 00 00 00 00 00 ...k...6........ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 ........ + rel 24+8 t=1 runtime.memequal64·f+0 + rel 32+8 t=1 runtime.gcbits.01+0 + rel 40+4 t=5 type..namedata.*main.option-+0 + rel 48+8 t=1 type."".option+0 +type."".option SRODATA size=104 + 0x0000 10 00 00 00 00 00 00 00 10 00 00 00 00 00 00 00 ................ + 0x0010 4a f6 16 85 07 08 08 14 00 00 00 00 00 00 00 00 J............... + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0040 01 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 ................ + 0x0050 00 00 00 00 00 00 00 00 18 00 00 00 00 00 00 00 ................ + 0x0060 00 00 00 00 00 00 00 00 ........ + rel 24+8 t=1 runtime.interequal·f+0 + rel 32+8 t=1 runtime.gcbits.02+0 + rel 40+4 t=5 type..namedata.*main.option-+0 + rel 44+4 t=5 type.*"".option+0 + rel 48+8 t=1 type..importpath."".+0 + rel 56+8 t=1 type."".option+96 + rel 80+4 t=5 type..importpath."".+0 + rel 96+4 t=5 type..namedata.attach-+0 + rel 100+4 t=5 type.func(*"".EventData)+0 +type..namedata.*[]main.option- SRODATA dupok size=17 + 0x0000 00 00 0e 2a 5b 5d 6d 61 69 6e 2e 6f 70 74 69 6f ...*[]main.optio + 0x0010 6e n +type.*[]"".option SRODATA dupok size=56 + 0x0000 08 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ................ + 0x0010 6c a9 80 c9 08 08 08 36 00 00 00 00 00 00 00 00 l......6........ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 ........ + rel 24+8 t=1 runtime.memequal64·f+0 + rel 32+8 t=1 runtime.gcbits.01+0 + rel 40+4 t=5 type..namedata.*[]main.option-+0 + rel 48+8 t=1 type.[]"".option+0 +type.[]"".option SRODATA dupok size=56 + 0x0000 18 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ................ + 0x0010 54 9b 2e 5a 02 08 08 17 00 00 00 00 00 00 00 00 T..Z............ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 ........ + rel 32+8 t=1 runtime.gcbits.01+0 + rel 40+4 t=5 type..namedata.*[]main.option-+0 + rel 44+4 t=6 type.*[]"".option+0 + rel 48+8 t=1 type."".option+0 +go.loc.type..eq.[4]"".option SDWARFLOC dupok size=154 + 0x0000 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 ................ + 0x0010 48 00 00 00 00 00 00 00 55 00 00 00 00 00 00 00 H.......U....... + 0x0020 01 00 51 00 00 00 00 00 00 00 00 00 00 00 00 00 ..Q............. + 0x0030 00 00 00 ff ff ff ff ff ff ff ff 00 00 00 00 00 ................ + 0x0040 00 00 00 00 00 00 00 00 00 00 00 b3 00 00 00 00 ................ + 0x0050 00 00 00 01 00 9c 00 00 00 00 00 00 00 00 00 00 ................ + 0x0060 00 00 00 00 00 00 ff ff ff ff ff ff ff ff 00 00 ................ + 0x0070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 b3 00 ................ + 0x0080 00 00 00 00 00 00 02 00 91 08 00 00 00 00 00 00 ................ + 0x0090 00 00 00 00 00 00 00 00 00 00 .......... + rel 8+8 t=1 type..eq.[4]"".option+0 + rel 59+8 t=1 type..eq.[4]"".option+0 + rel 110+8 t=1 type..eq.[4]"".option+0 +go.info.type..eq.[4]"".option SDWARFINFO dupok size=97 + 0x0000 03 74 79 70 65 2e 2e 65 71 2e 5b 34 5d 22 22 2e .type..eq.[4]"". + 0x0010 6f 70 74 69 6f 6e 00 00 00 00 00 00 00 00 00 00 option.......... + 0x0020 00 00 00 00 00 00 00 01 9c 00 00 00 00 01 0b 69 ...............i + 0x0030 00 01 00 00 00 00 00 00 00 00 10 70 00 00 01 00 ...........p.... + 0x0040 00 00 00 00 00 00 00 10 71 00 00 01 00 00 00 00 ........q....... + 0x0050 00 00 00 00 0f 7e 72 32 00 01 01 00 00 00 00 00 .....~r2........ + 0x0060 00 . + rel 0+0 t=24 type.*[4]"".option+0 + rel 0+0 t=24 type.bool+0 + rel 0+0 t=24 type.int+0 + rel 23+8 t=1 type..eq.[4]"".option+0 + rel 31+8 t=1 type..eq.[4]"".option+179 + rel 41+4 t=30 gofile..+0 + rel 50+4 t=29 go.info.int+0 + rel 54+4 t=29 go.loc.type..eq.[4]"".option+0 + rel 63+4 t=29 go.info.*[4]"".option+0 + rel 67+4 t=29 go.loc.type..eq.[4]"".option+51 + rel 76+4 t=29 go.info.*[4]"".option+0 + rel 80+4 t=29 go.loc.type..eq.[4]"".option+102 + rel 91+4 t=29 go.info.bool+0 +go.range.type..eq.[4]"".option SDWARFRANGE dupok size=0 +go.debuglines.type..eq.[4]"".option SDWARFMISC dupok size=29 + 0x0000 04 01 0f 0a cd 06 cd 06 08 73 06 37 06 02 27 ff .........s.7..'. + 0x0010 06 41 06 73 06 41 06 73 04 01 03 00 01 .A.s.A.s..... +type..eqfunc.[4]"".option SRODATA dupok size=8 + 0x0000 00 00 00 00 00 00 00 00 ........ + rel 0+8 t=1 type..eq.[4]"".option+0 +type..namedata.*[4]main.option- SRODATA dupok size=18 + 0x0000 00 00 0f 2a 5b 34 5d 6d 61 69 6e 2e 6f 70 74 69 ...*[4]main.opti + 0x0010 6f 6e on +type.*[4]"".option SRODATA dupok size=56 + 0x0000 08 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ................ + 0x0010 c5 47 ee 62 08 08 08 36 00 00 00 00 00 00 00 00 .G.b...6........ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 ........ + rel 24+8 t=1 runtime.memequal64·f+0 + rel 32+8 t=1 runtime.gcbits.01+0 + rel 40+4 t=5 type..namedata.*[4]main.option-+0 + rel 48+8 t=1 type.[4]"".option+0 +runtime.gcbits.aa SRODATA dupok size=1 + 0x0000 aa . +type.[4]"".option SRODATA dupok size=72 + 0x0000 40 00 00 00 00 00 00 00 40 00 00 00 00 00 00 00 @.......@....... + 0x0010 40 8a 11 44 02 08 08 11 00 00 00 00 00 00 00 00 @..D............ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0040 04 00 00 00 00 00 00 00 ........ + rel 24+8 t=1 type..eqfunc.[4]"".option+0 + rel 32+8 t=1 runtime.gcbits.aa+0 + rel 40+4 t=5 type..namedata.*[4]main.option-+0 + rel 44+4 t=6 type.*[4]"".option+0 + rel 48+8 t=1 type."".option+0 + rel 56+8 t=1 type.[]"".option+0 +type..namedata.*[1]interface {}- SRODATA dupok size=19 + 0x0000 00 00 10 2a 5b 31 5d 69 6e 74 65 72 66 61 63 65 ...*[1]interface + 0x0010 20 7b 7d {} +type.*[1]interface {} SRODATA dupok size=56 + 0x0000 08 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ................ + 0x0010 bf 03 a8 35 08 08 08 36 00 00 00 00 00 00 00 00 ...5...6........ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 ........ + rel 24+8 t=1 runtime.memequal64·f+0 + rel 32+8 t=1 runtime.gcbits.01+0 + rel 40+4 t=5 type..namedata.*[1]interface {}-+0 + rel 48+8 t=1 type.[1]interface {}+0 +type.[1]interface {} SRODATA dupok size=72 + 0x0000 10 00 00 00 00 00 00 00 10 00 00 00 00 00 00 00 ................ + 0x0010 50 91 5b fa 02 08 08 11 00 00 00 00 00 00 00 00 P.[............. + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0040 01 00 00 00 00 00 00 00 ........ + rel 24+8 t=1 runtime.nilinterequal·f+0 + rel 32+8 t=1 runtime.gcbits.02+0 + rel 40+4 t=5 type..namedata.*[1]interface {}-+0 + rel 44+4 t=6 type.*[1]interface {}+0 + rel 48+8 t=1 type.interface {}+0 + rel 56+8 t=1 type.[]interface {}+0 +go.string."Benchmarking: 'Log - switch'" SRODATA dupok size=28 + 0x0000 42 65 6e 63 68 6d 61 72 6b 69 6e 67 3a 20 27 4c Benchmarking: 'L + 0x0010 6f 67 20 2d 20 73 77 69 74 63 68 27 og - switch' +go.string."unknown option" SRODATA dupok size=14 + 0x0000 75 6e 6b 6e 6f 77 6e 20 6f 70 74 69 6f 6e unknown option +go.string."option: %v, %v, %T" SRODATA dupok size=18 + 0x0000 6f 70 74 69 6f 6e 3a 20 25 76 2c 20 25 76 2c 20 option: %v, %v, + 0x0010 25 54 %T +go.loc."".BenchmarkLog3 SDWARFLOC size=505 + 0x0000 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 ................ + 0x0010 c9 00 00 00 00 00 00 00 6e 04 00 00 00 00 00 00 ........n....... + 0x0020 03 00 91 f0 7e 00 00 00 00 00 00 00 00 00 00 00 ....~........... + 0x0030 00 00 00 00 00 ff ff ff ff ff ff ff ff 00 00 00 ................ + 0x0040 00 00 00 00 00 ac 00 00 00 00 00 00 00 0c 01 00 ................ + 0x0050 00 00 00 00 00 05 00 93 08 50 93 08 0c 01 00 00 .........P...... + 0x0060 00 00 00 00 6e 04 00 00 00 00 00 00 07 00 93 08 ....n........... + 0x0070 91 a8 7e 93 08 00 00 00 00 00 00 00 00 00 00 00 ..~............. + 0x0080 00 00 00 00 00 ff ff ff ff ff ff ff ff 00 00 00 ................ + 0x0090 00 00 00 00 00 c2 04 00 00 00 00 00 00 c5 04 00 ................ + 0x00a0 00 00 00 00 00 05 00 93 08 51 93 08 c5 04 00 00 .........Q...... + 0x00b0 00 00 00 00 01 05 00 00 00 00 00 00 06 00 53 93 ..............S. + 0x00c0 08 51 93 08 01 05 00 00 00 00 00 00 1d 05 00 00 .Q.............. + 0x00d0 00 00 00 00 0a 00 91 f8 7d 93 08 91 88 7e 93 08 ........}....~.. + 0x00e0 42 05 00 00 00 00 00 00 96 06 00 00 00 00 00 00 B............... + 0x00f0 0a 00 91 f8 7d 93 08 91 88 7e 93 08 00 00 00 00 ....}....~...... + 0x0100 00 00 00 00 00 00 00 00 00 00 00 00 ff ff ff ff ................ + 0x0110 ff ff ff ff 00 00 00 00 00 00 00 00 5f 05 00 00 ............_... + 0x0120 00 00 00 00 82 05 00 00 00 00 00 00 01 00 50 00 ..............P. + 0x0130 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ff ................ + 0x0140 ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 31 ...............1 + 0x0150 06 00 00 00 00 00 00 96 06 00 00 00 00 00 00 01 ................ + 0x0160 00 55 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .U.............. + 0x0170 00 00 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 ................ + 0x0180 00 00 c2 04 00 00 00 00 00 00 c5 04 00 00 00 00 ................ + 0x0190 00 00 05 00 93 08 51 93 08 c5 04 00 00 00 00 00 ......Q......... + 0x01a0 00 01 05 00 00 00 00 00 00 06 00 53 93 08 51 93 ...........S..Q. + 0x01b0 08 01 05 00 00 00 00 00 00 1d 05 00 00 00 00 00 ................ + 0x01c0 00 0a 00 91 f8 7d 93 08 91 88 7e 93 08 42 05 00 .....}....~..B.. + 0x01d0 00 00 00 00 00 96 06 00 00 00 00 00 00 0a 00 91 ................ + 0x01e0 f8 7d 93 08 91 88 7e 93 08 00 00 00 00 00 00 00 .}....~......... + 0x01f0 00 00 00 00 00 00 00 00 00 ......... + rel 8+8 t=1 "".BenchmarkLog3+0 + rel 61+8 t=1 "".BenchmarkLog3+0 + rel 141+8 t=1 "".BenchmarkLog3+0 + rel 276+8 t=1 "".BenchmarkLog3+0 + rel 327+8 t=1 "".BenchmarkLog3+0 + rel 378+8 t=1 "".BenchmarkLog3+0 +go.info."".BenchmarkLog3 SDWARFINFO size=415 + 0x0000 03 22 22 2e 42 65 6e 63 68 6d 61 72 6b 4c 6f 67 ."".BenchmarkLog + 0x0010 33 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 3............... + 0x0020 00 00 01 9c 00 00 00 00 01 0b 6f 70 74 73 00 74 ..........opts.t + 0x0030 00 00 00 00 00 00 00 00 0b 65 72 72 00 6d 00 00 .........err.m.. + 0x0040 00 00 00 00 00 00 0a 64 61 74 61 31 00 6f 00 00 .......data1.o.. + 0x0050 00 00 00 0a 64 61 74 61 32 00 70 00 00 00 00 00 ....data2.p..... + 0x0060 0a 64 61 74 61 33 00 71 00 00 00 00 00 0a 64 61 .data3.q......da + 0x0070 74 61 34 00 72 00 00 00 00 00 14 00 00 00 00 0b ta4.r........... + 0x0080 6f 00 83 01 00 00 00 00 00 00 00 00 14 00 00 00 o............... + 0x0090 00 0b 26 76 00 86 01 00 00 00 00 00 00 00 00 00 ..&v............ + 0x00a0 14 00 00 00 00 0b 26 76 00 88 01 00 00 00 00 00 ......&v........ + 0x00b0 00 00 00 00 14 00 00 00 00 0b 76 00 90 01 00 00 ..........v..... + 0x00c0 00 00 00 00 00 00 0a 7e 61 72 67 33 2e 64 61 74 .......~arg3.dat + 0x00d0 61 00 91 01 00 00 00 00 00 00 00 06 00 00 00 00 a............... + 0x00e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x00f0 00 00 00 00 6c 12 00 00 00 00 00 12 00 00 00 00 ....l........... + 0x0100 00 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0110 00 00 00 00 00 00 00 00 00 00 00 6d 00 06 00 00 ...........m.... + 0x0120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0130 00 00 00 00 00 00 7c 06 00 00 00 00 00 00 00 00 ......|......... + 0x0140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0150 d5 08 06 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0160 00 00 00 00 00 00 00 00 00 00 00 c9 01 00 00 00 ................ + 0x0170 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0180 00 00 00 00 00 00 00 00 00 91 01 12 00 00 00 00 ................ + 0x0190 00 12 00 00 00 00 00 12 00 00 00 00 00 00 00 ............... + rel 0+0 t=24 type.unsafe.Pointer+0 + rel 0+0 t=24 type.*"".option+0 + rel 0+0 t=24 type.*errors.errorString+0 + rel 0+0 t=24 type.*uint8+0 + rel 0+0 t=24 type.[1]interface {}+0 + rel 0+0 t=24 type.[3]interface {}+0 + rel 0+0 t=24 type.[4]"".option+0 + rel 0+0 t=24 type.int+0 + rel 0+0 t=24 type.uintptr+0 + rel 0+0 t=24 type."".Data+0 + rel 18+8 t=1 "".BenchmarkLog3+0 + rel 26+8 t=1 "".BenchmarkLog3+1994 + rel 36+4 t=30 gofile../home/rhys/git_repos/log-assembler/main_assembler/main.go+0 + rel 48+4 t=29 go.info.[4]"".option+0 + rel 52+4 t=29 go.loc."".BenchmarkLog3+0 + rel 62+4 t=29 go.info.error+0 + rel 66+4 t=29 go.loc."".BenchmarkLog3+53 + rel 78+4 t=29 go.info.string+0 + rel 91+4 t=29 go.info.string+0 + rel 104+4 t=29 go.info.string+0 + rel 117+4 t=29 go.info.string+0 + rel 123+4 t=29 go.range."".BenchmarkLog3+0 + rel 132+4 t=29 go.info."".option+0 + rel 136+4 t=29 go.loc."".BenchmarkLog3+133 + rel 141+4 t=29 go.range."".BenchmarkLog3+80 + rel 151+4 t=29 go.info.*"".severity+0 + rel 155+4 t=29 go.loc."".BenchmarkLog3+268 + rel 161+4 t=29 go.range."".BenchmarkLog3+112 + rel 171+4 t=29 go.info.*"".Data+0 + rel 175+4 t=29 go.loc."".BenchmarkLog3+319 + rel 181+4 t=29 go.range."".BenchmarkLog3+144 + rel 190+4 t=29 go.info."".option+0 + rel 194+4 t=29 go.loc."".BenchmarkLog3+370 + rel 212+4 t=29 go.info.*uint8+0 + rel 220+4 t=29 go.info.fmt.Println$abstract+0 + rel 224+8 t=1 "".BenchmarkLog3+91 + rel 232+8 t=1 "".BenchmarkLog3+150 + rel 240+4 t=30 gofile../home/rhys/git_repos/log-assembler/main_assembler/main.go+0 + rel 246+4 t=29 go.info.fmt.Println$abstract+15 + rel 252+4 t=29 go.info.fmt.Println$abstract+23 + rel 259+4 t=29 go.info.errors.New$abstract+0 + rel 263+8 t=1 "".BenchmarkLog3+151 + rel 271+8 t=1 "".BenchmarkLog3+198 + rel 279+4 t=30 gofile../home/rhys/git_repos/log-assembler/main_assembler/main.go+0 + rel 286+4 t=29 go.info.time.Time.UTC$abstract+0 + rel 290+8 t=1 "".BenchmarkLog3+1125 + rel 298+8 t=1 "".BenchmarkLog3+1126 + rel 306+4 t=30 gofile../home/rhys/git_repos/log-assembler/main_assembler/main.go+0 + rel 312+4 t=29 go.info.time.(*Time).setLoc$abstract+0 + rel 316+8 t=1 "".BenchmarkLog3+1126 + rel 324+8 t=1 "".BenchmarkLog3+1127 + rel 332+4 t=30 gofile..$GOROOT/src/time/time.go+0 + rel 339+4 t=29 go.info.time.(*Time).stripMono$abstract+0 + rel 343+8 t=1 "".BenchmarkLog3+1127 + rel 351+8 t=1 "".BenchmarkLog3+1134 + rel 359+4 t=30 gofile..$GOROOT/src/time/time.go+0 + rel 369+4 t=29 go.info.fmt.Printf$abstract+0 + rel 373+8 t=1 "".BenchmarkLog3+1875 + rel 381+8 t=1 "".BenchmarkLog3+1955 + rel 389+4 t=30 gofile../home/rhys/git_repos/log-assembler/main_assembler/main.go+0 + rel 396+4 t=29 go.info.fmt.Printf$abstract+14 + rel 402+4 t=29 go.info.fmt.Printf$abstract+27 + rel 408+4 t=29 go.info.fmt.Printf$abstract+35 +go.range."".BenchmarkLog3 SDWARFRANGE size=304 + 0x0000 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 ................ + 0x0010 6e 04 00 00 00 00 00 00 96 06 00 00 00 00 00 00 n............... + 0x0020 08 07 00 00 00 00 00 00 53 07 00 00 00 00 00 00 ........S....... + 0x0030 a3 07 00 00 00 00 00 00 c0 07 00 00 00 00 00 00 ................ + 0x0040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0050 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 ................ + 0x0060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0070 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 ................ + 0x0080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0090 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 ................ + 0x00a0 1d 05 00 00 00 00 00 00 42 05 00 00 00 00 00 00 ........B....... + 0x00b0 96 05 00 00 00 00 00 00 ad 05 00 00 00 00 00 00 ................ + 0x00c0 b2 05 00 00 00 00 00 00 ba 05 00 00 00 00 00 00 ................ + 0x00d0 df 05 00 00 00 00 00 00 e4 05 00 00 00 00 00 00 ................ + 0x00e0 0f 06 00 00 00 00 00 00 14 06 00 00 00 00 00 00 ................ + 0x00f0 71 06 00 00 00 00 00 00 7e 06 00 00 00 00 00 00 q.......~....... + 0x0100 08 07 00 00 00 00 00 00 53 07 00 00 00 00 00 00 ........S....... + 0x0110 a3 07 00 00 00 00 00 00 c0 07 00 00 00 00 00 00 ................ + 0x0120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + rel 8+8 t=1 "".BenchmarkLog3+0 + rel 88+8 t=1 "".BenchmarkLog3+0 + rel 120+8 t=1 "".BenchmarkLog3+0 + rel 152+8 t=1 "".BenchmarkLog3+0 +go.debuglines."".BenchmarkLog3 SDWARFMISC size=244 + 0x0000 04 02 03 e5 00 14 0a 08 2d f6 06 2d 04 1e 06 08 ........-..-.... + 0x0010 03 a1 01 a0 06 55 04 02 06 02 1c 03 df 7e fb 04 .....U.......~.. + 0x0020 42 03 52 15 06 55 04 02 06 08 03 34 b4 06 2d 06 B.R..U.....4..-. + 0x0030 08 61 06 55 06 f6 06 41 06 02 ea 03 f6 06 55 06 .a.U...A......U. + 0x0040 b9 06 41 06 08 24 06 41 06 02 fc 01 f8 06 41 04 ..A..$.A......A. + 0x0050 03 06 03 d4 07 3c 03 f8 78 15 03 01 1e 06 41 04 .....<..x.....A. + 0x0060 02 06 03 b8 7f 1f 06 5f 06 02 30 ff 06 37 06 2f ......._..0..7./ + 0x0070 06 2d 21 d9 06 08 7b 06 2d 06 4b 06 b1 06 03 07 .-!...{.-.K..... + 0x0080 32 06 23 06 08 4b 06 2d 03 78 1f 02 23 fd 06 bb 2.#..K.-.x..#... + 0x0090 06 41 03 07 32 06 5e 06 42 03 78 6f 03 07 46 03 .A..2.^.B.xo..F. + 0x00a0 78 5b 06 eb 06 55 06 03 06 64 06 03 79 3d 06 08 x[...U...d..y=.. + 0x00b0 37 06 55 06 03 06 64 06 03 79 3d 02 2c fd 06 bb 7.U...d..y=.,... + 0x00c0 06 41 03 07 32 06 5e 06 03 79 3d 03 78 fb 08 99 .A..2.^..y=.x... + 0x00d0 02 35 03 15 fa 04 1e 06 02 34 03 3f fa 06 55 04 .5.......4.?..U. + 0x00e0 02 06 02 31 03 41 fb 06 55 06 af 03 5d 47 04 01 ...1.A..U...]G.. + 0x00f0 03 96 7f 01 .... +go.loc.type..eq.[3]interface {} SDWARFLOC dupok size=154 + 0x0000 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 ................ + 0x0010 48 00 00 00 00 00 00 00 55 00 00 00 00 00 00 00 H.......U....... + 0x0020 01 00 51 00 00 00 00 00 00 00 00 00 00 00 00 00 ..Q............. + 0x0030 00 00 00 ff ff ff ff ff ff ff ff 00 00 00 00 00 ................ + 0x0040 00 00 00 00 00 00 00 00 00 00 00 b3 00 00 00 00 ................ + 0x0050 00 00 00 01 00 9c 00 00 00 00 00 00 00 00 00 00 ................ + 0x0060 00 00 00 00 00 00 ff ff ff ff ff ff ff ff 00 00 ................ + 0x0070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 b3 00 ................ + 0x0080 00 00 00 00 00 00 02 00 91 08 00 00 00 00 00 00 ................ + 0x0090 00 00 00 00 00 00 00 00 00 00 .......... + rel 8+8 t=1 type..eq.[3]interface {}+0 + rel 59+8 t=1 type..eq.[3]interface {}+0 + rel 110+8 t=1 type..eq.[3]interface {}+0 +go.info.type..eq.[3]interface {} SDWARFINFO dupok size=100 + 0x0000 03 74 79 70 65 2e 2e 65 71 2e 5b 33 5d 69 6e 74 .type..eq.[3]int + 0x0010 65 72 66 61 63 65 20 7b 7d 00 00 00 00 00 00 00 erface {}....... + 0x0020 00 00 00 00 00 00 00 00 00 00 01 9c 00 00 00 00 ................ + 0x0030 01 0b 69 00 01 00 00 00 00 00 00 00 00 10 70 00 ..i...........p. + 0x0040 00 01 00 00 00 00 00 00 00 00 10 71 00 00 01 00 ...........q.... + 0x0050 00 00 00 00 00 00 00 0f 7e 72 32 00 01 01 00 00 ........~r2..... + 0x0060 00 00 00 00 .... + rel 0+0 t=24 type.*[3]interface {}+0 + rel 0+0 t=24 type.bool+0 + rel 0+0 t=24 type.int+0 + rel 26+8 t=1 type..eq.[3]interface {}+0 + rel 34+8 t=1 type..eq.[3]interface {}+179 + rel 44+4 t=30 gofile..+0 + rel 53+4 t=29 go.info.int+0 + rel 57+4 t=29 go.loc.type..eq.[3]interface {}+0 + rel 66+4 t=29 go.info.*[3]interface {}+0 + rel 70+4 t=29 go.loc.type..eq.[3]interface {}+51 + rel 79+4 t=29 go.info.*[3]interface {}+0 + rel 83+4 t=29 go.loc.type..eq.[3]interface {}+102 + rel 94+4 t=29 go.info.bool+0 +go.range.type..eq.[3]interface {} SDWARFRANGE dupok size=0 +go.debuglines.type..eq.[3]interface {} SDWARFMISC dupok size=29 + 0x0000 04 01 0f 0a cd 06 cd 06 08 73 06 37 06 02 27 ff .........s.7..'. + 0x0010 06 41 06 73 06 41 06 73 04 01 03 00 01 .A.s.A.s..... +type..eqfunc.[3]interface {} SRODATA dupok size=8 + 0x0000 00 00 00 00 00 00 00 00 ........ + rel 0+8 t=1 type..eq.[3]interface {}+0 +type..namedata.*[3]interface {}- SRODATA dupok size=19 + 0x0000 00 00 10 2a 5b 33 5d 69 6e 74 65 72 66 61 63 65 ...*[3]interface + 0x0010 20 7b 7d {} +type.*[3]interface {} SRODATA dupok size=56 + 0x0000 08 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ................ + 0x0010 b0 18 fe b9 08 08 08 36 00 00 00 00 00 00 00 00 .......6........ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 ........ + rel 24+8 t=1 runtime.memequal64·f+0 + rel 32+8 t=1 runtime.gcbits.01+0 + rel 40+4 t=5 type..namedata.*[3]interface {}-+0 + rel 48+8 t=1 type.[3]interface {}+0 +runtime.gcbits.2a SRODATA dupok size=1 + 0x0000 2a * +type.[3]interface {} SRODATA dupok size=72 + 0x0000 30 00 00 00 00 00 00 00 30 00 00 00 00 00 00 00 0.......0....... + 0x0010 1d dd cf d9 02 08 08 11 00 00 00 00 00 00 00 00 ................ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0040 03 00 00 00 00 00 00 00 ........ + rel 24+8 t=1 type..eqfunc.[3]interface {}+0 + rel 32+8 t=1 runtime.gcbits.2a+0 + rel 40+4 t=5 type..namedata.*[3]interface {}-+0 + rel 44+4 t=6 type.*[3]interface {}+0 + rel 48+8 t=1 type.interface {}+0 + rel 56+8 t=1 type.[]interface {}+0 +go.loc."".(*eventAuth).attach SDWARFLOC size=103 + 0x0000 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 ................ + 0x0010 00 00 00 00 00 00 00 00 54 00 00 00 00 00 00 00 ........T....... + 0x0020 01 00 9c 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 ff ff ff ff ff ff ff ff 00 00 00 00 00 ................ + 0x0040 00 00 00 00 00 00 00 00 00 00 00 54 00 00 00 00 ...........T.... + 0x0050 00 00 00 02 00 91 08 00 00 00 00 00 00 00 00 00 ................ + 0x0060 00 00 00 00 00 00 00 ....... + rel 8+8 t=1 "".(*eventAuth).attach+0 + rel 59+8 t=1 "".(*eventAuth).attach+0 +go.info."".(*eventAuth).attach SDWARFINFO size=77 + 0x0000 03 22 22 2e 28 2a 65 76 65 6e 74 41 75 74 68 29 ."".(*eventAuth) + 0x0010 2e 61 74 74 61 63 68 00 00 00 00 00 00 00 00 00 .attach......... + 0x0020 00 00 00 00 00 00 00 00 01 9c 00 00 00 00 01 10 ................ + 0x0030 6c 00 00 a9 01 00 00 00 00 00 00 00 00 10 6c 65 l.............le + 0x0040 00 00 a9 01 00 00 00 00 00 00 00 00 00 ............. + rel 0+0 t=24 type.*"".EventData+0 + rel 0+0 t=24 type.*"".eventAuth+0 + rel 24+8 t=1 "".(*eventAuth).attach+0 + rel 32+8 t=1 "".(*eventAuth).attach+84 + rel 42+4 t=30 gofile../home/rhys/git_repos/log-assembler/main_assembler/main.go+0 + rel 53+4 t=29 go.info.*"".eventAuth+0 + rel 57+4 t=29 go.loc."".(*eventAuth).attach+0 + rel 68+4 t=29 go.info.*"".EventData+0 + rel 72+4 t=29 go.loc."".(*eventAuth).attach+51 +go.range."".(*eventAuth).attach SDWARFRANGE size=0 +go.debuglines."".(*eventAuth).attach SDWARFMISC size=23 + 0x0000 04 02 03 a3 01 14 0a a5 88 06 41 06 d8 06 68 06 ..........A...h. + 0x0010 ae 04 01 03 d8 7e 01 .....~. +go.loc."".Auth SDWARFLOC size=115 + 0x0000 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 ................ + 0x0010 00 00 00 00 00 00 00 00 b8 00 00 00 00 00 00 00 ................ + 0x0020 07 00 9c 93 08 91 08 93 08 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 00 ff ff ff ff ff ff ff ................ + 0x0040 ff 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0050 00 b8 00 00 00 00 00 00 00 08 00 91 10 93 08 91 ................ + 0x0060 18 93 08 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0070 00 00 00 ... + rel 8+8 t=1 "".Auth+0 + rel 65+8 t=1 "".Auth+0 +go.info."".Auth SDWARFINFO size=92 + 0x0000 03 22 22 2e 41 75 74 68 00 00 00 00 00 00 00 00 ."".Auth........ + 0x0010 00 00 00 00 00 00 00 00 00 01 9c 00 00 00 00 01 ................ + 0x0020 10 69 64 65 6e 74 69 74 79 54 79 70 65 00 00 af .identityType... + 0x0030 01 00 00 00 00 00 00 00 00 10 69 64 65 6e 74 69 ..........identi + 0x0040 74 79 00 00 af 01 00 00 00 00 00 00 00 00 0f 7e ty.............~ + 0x0050 72 32 00 01 af 01 00 00 00 00 00 00 r2.......... + rel 0+0 t=24 type."".identityType+0 + rel 0+0 t=24 type."".option+0 + rel 0+0 t=24 type.string+0 + rel 9+8 t=1 "".Auth+0 + rel 17+8 t=1 "".Auth+184 + rel 27+4 t=30 gofile../home/rhys/git_repos/log-assembler/main_assembler/main.go+0 + rel 49+4 t=29 go.info."".identityType+0 + rel 53+4 t=29 go.loc."".Auth+0 + rel 70+4 t=29 go.info.string+0 + rel 74+4 t=29 go.loc."".Auth+57 + rel 86+4 t=29 go.info."".option+0 +go.range."".Auth SDWARFRANGE size=0 +go.debuglines."".Auth SDWARFMISC size=39 + 0x0000 04 02 03 a9 01 14 0a cd 9c 06 55 06 9c 06 41 06 ..........U...A. + 0x0010 e2 06 41 06 e9 06 55 d9 35 2f 2b 2f 71 2f 22 06 ..A...U.5/+/q/". + 0x0020 85 04 01 03 d2 7e 01 .....~. +go.loc."".Data.attach SDWARFLOC size=154 + 0x0000 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 ................ + 0x0010 00 00 00 00 00 00 00 00 88 00 00 00 00 00 00 00 ................ + 0x0020 02 00 91 08 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 ff ff ff ff ff ff ff ff 00 00 00 00 ................ + 0x0040 00 00 00 00 00 00 00 00 00 00 00 00 74 00 00 00 ............t... + 0x0050 00 00 00 00 01 00 50 00 00 00 00 00 00 00 00 00 ......P......... + 0x0060 00 00 00 00 00 00 00 ff ff ff ff ff ff ff ff 00 ................ + 0x0070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 88 ................ + 0x0080 00 00 00 00 00 00 00 01 00 9c 00 00 00 00 00 00 ................ + 0x0090 00 00 00 00 00 00 00 00 00 00 .......... + rel 8+8 t=1 "".Data.attach+0 + rel 60+8 t=1 "".Data.attach+0 + rel 111+8 t=1 "".Data.attach+0 +go.info."".Data.attach SDWARFINFO size=67 + 0x0000 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0010 00 00 00 00 00 01 9c 12 00 00 00 00 00 13 00 00 ................ + 0x0020 00 00 00 00 00 00 0b 26 64 00 c5 01 00 00 00 00 .......&d....... + 0x0030 00 00 00 00 10 64 00 00 c5 01 00 00 00 00 00 00 .....d.......... + 0x0040 00 00 00 ... + rel 0+0 t=24 type."".Data+0 + rel 0+0 t=24 type.*"".EventData+0 + rel 1+4 t=29 go.info."".Data.attach$abstract+0 + rel 5+8 t=1 "".Data.attach+0 + rel 13+8 t=1 "".Data.attach+136 + rel 24+4 t=29 go.info."".Data.attach$abstract+16 + rel 30+4 t=29 go.info."".Data.attach$abstract+24 + rel 34+4 t=29 go.loc."".Data.attach+0 + rel 44+4 t=29 go.info.*"".Data+0 + rel 48+4 t=29 go.loc."".Data.attach+52 + rel 58+4 t=29 go.info."".Data+0 + rel 62+4 t=29 go.loc."".Data.attach+103 +go.range."".Data.attach SDWARFRANGE size=0 +go.debuglines."".Data.attach SDWARFMISC size=30 + 0x0000 04 02 03 bf 01 14 0a a5 06 e1 06 08 56 06 41 06 ............V.A. + 0x0010 a6 06 72 7c 92 2c 06 23 04 01 03 bc 7e 01 ..r|.,.#....~. +go.loc."".(*EventError).attach SDWARFLOC size=103 + 0x0000 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 ................ + 0x0010 00 00 00 00 00 00 00 00 54 00 00 00 00 00 00 00 ........T....... + 0x0020 01 00 9c 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 ff ff ff ff ff ff ff ff 00 00 00 00 00 ................ + 0x0040 00 00 00 00 00 00 00 00 00 00 00 54 00 00 00 00 ...........T.... + 0x0050 00 00 00 02 00 91 08 00 00 00 00 00 00 00 00 00 ................ + 0x0060 00 00 00 00 00 00 00 ....... + rel 8+8 t=1 "".(*EventError).attach+0 + rel 59+8 t=1 "".(*EventError).attach+0 +go.info."".(*EventError).attach SDWARFINFO size=78 + 0x0000 03 22 22 2e 28 2a 45 76 65 6e 74 45 72 72 6f 72 ."".(*EventError + 0x0010 29 2e 61 74 74 61 63 68 00 00 00 00 00 00 00 00 ).attach........ + 0x0020 00 00 00 00 00 00 00 00 00 01 9c 00 00 00 00 01 ................ + 0x0030 10 6c 00 00 e2 01 00 00 00 00 00 00 00 00 10 6c .l.............l + 0x0040 65 00 00 e2 01 00 00 00 00 00 00 00 00 00 e............. + rel 0+0 t=24 type.*"".EventData+0 + rel 0+0 t=24 type.*"".EventError+0 + rel 25+8 t=1 "".(*EventError).attach+0 + rel 33+8 t=1 "".(*EventError).attach+84 + rel 43+4 t=30 gofile../home/rhys/git_repos/log-assembler/main_assembler/main.go+0 + rel 54+4 t=29 go.info.*"".EventError+0 + rel 58+4 t=29 go.loc."".(*EventError).attach+0 + rel 69+4 t=29 go.info.*"".EventData+0 + rel 73+4 t=29 go.loc."".(*EventError).attach+51 +go.range."".(*EventError).attach SDWARFRANGE size=0 +go.debuglines."".(*EventError).attach SDWARFMISC size=23 + 0x0000 04 02 03 dc 01 14 0a a5 88 06 41 06 d8 06 68 06 ..........A...h. + 0x0010 ae 04 01 03 9f 7e 01 .....~. +go.string."value" SRODATA dupok size=5 + 0x0000 76 61 6c 75 65 value +go.loc."".Error SDWARFLOC size=1543 + 0x0000 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 ................ + 0x0010 9d 00 00 00 00 00 00 00 ea 00 00 00 00 00 00 00 ................ + 0x0020 01 00 55 e2 01 00 00 00 00 00 00 21 02 00 00 00 ..U........!.... + 0x0030 00 00 00 01 00 51 8a 03 00 00 00 00 00 00 a3 03 .....Q.......... + 0x0040 00 00 00 00 00 00 01 00 52 47 04 00 00 00 00 00 ........RG...... + 0x0050 00 70 04 00 00 00 00 00 00 01 00 52 87 04 00 00 .p.........R.... + 0x0060 00 00 00 00 c7 04 00 00 00 00 00 00 01 00 53 ee ..............S. + 0x0070 04 00 00 00 00 00 00 ff 04 00 00 00 00 00 00 01 ................ + 0x0080 00 52 ff 04 00 00 00 00 00 00 1a 05 00 00 00 00 .R.............. + 0x0090 00 00 01 00 51 91 05 00 00 00 00 00 00 d1 05 00 ....Q........... + 0x00a0 00 00 00 00 00 01 00 51 00 00 00 00 00 00 00 00 .......Q........ + 0x00b0 00 00 00 00 00 00 00 00 ff ff ff ff ff ff ff ff ................ + 0x00c0 00 00 00 00 00 00 00 00 26 02 00 00 00 00 00 00 ........&....... + 0x00d0 53 02 00 00 00 00 00 00 07 00 50 93 08 93 08 93 S.........P..... + 0x00e0 08 53 02 00 00 00 00 00 00 ff 04 00 00 00 00 00 .S.............. + 0x00f0 00 09 00 91 d0 7e 93 08 93 08 93 08 00 00 00 00 .....~.......... + 0x0100 00 00 00 00 00 00 00 00 00 00 00 00 ff ff ff ff ................ + 0x0110 ff ff ff ff 00 00 00 00 00 00 00 00 58 02 00 00 ............X... + 0x0120 00 00 00 00 80 02 00 00 00 00 00 00 01 00 52 80 ..............R. + 0x0130 02 00 00 00 00 00 00 ee 04 00 00 00 00 00 00 03 ................ + 0x0140 00 91 a8 7e 00 00 00 00 00 00 00 00 00 00 00 00 ...~............ + 0x0150 00 00 00 00 ff ff ff ff ff ff ff ff 00 00 00 00 ................ + 0x0160 00 00 00 00 00 00 00 00 00 00 00 00 a4 06 00 00 ................ + 0x0170 00 00 00 00 07 00 9c 93 08 91 08 93 08 00 00 00 ................ + 0x0180 00 00 00 00 00 00 00 00 00 00 00 00 00 ff ff ff ................ + 0x0190 ff ff ff ff ff 00 00 00 00 00 00 00 00 85 02 00 ................ + 0x01a0 00 00 00 00 00 d3 02 00 00 00 00 00 00 01 00 55 ...............U + 0x01b0 df 02 00 00 00 00 00 00 c7 04 00 00 00 00 00 00 ................ + 0x01c0 01 00 55 00 00 00 00 00 00 00 00 00 00 00 00 00 ..U............. + 0x01d0 00 00 00 ff ff ff ff ff ff ff ff 00 00 00 00 00 ................ + 0x01e0 00 00 00 fb 02 00 00 00 00 00 00 c7 04 00 00 00 ................ + 0x01f0 00 00 00 03 00 91 a0 7f 00 00 00 00 00 00 00 00 ................ + 0x0200 00 00 00 00 00 00 00 00 ff ff ff ff ff ff ff ff ................ + 0x0210 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0220 f7 00 00 00 00 00 00 00 06 00 93 08 91 08 93 08 ................ + 0x0230 f7 00 00 00 00 00 00 00 49 01 00 00 00 00 00 00 ........I....... + 0x0240 07 00 53 93 08 91 08 93 08 49 01 00 00 00 00 00 ..S......I...... + 0x0250 00 23 06 00 00 00 00 00 00 06 00 93 08 91 08 93 .#.............. + 0x0260 08 23 06 00 00 00 00 00 00 4a 06 00 00 00 00 00 .#.......J...... + 0x0270 00 07 00 53 93 08 91 08 93 08 4a 06 00 00 00 00 ...S......J..... + 0x0280 00 00 a4 06 00 00 00 00 00 00 06 00 93 08 91 08 ................ + 0x0290 93 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x02a0 00 00 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 ................ + 0x02b0 00 00 00 00 00 00 00 00 00 00 f7 00 00 00 00 00 ................ + 0x02c0 00 00 06 00 93 08 91 08 93 08 f7 00 00 00 00 00 ................ + 0x02d0 00 00 49 01 00 00 00 00 00 00 07 00 53 93 08 91 ..I.........S... + 0x02e0 08 93 08 49 01 00 00 00 00 00 00 23 06 00 00 00 ...I.......#.... + 0x02f0 00 00 00 06 00 93 08 91 08 93 08 23 06 00 00 00 ...........#.... + 0x0300 00 00 00 4a 06 00 00 00 00 00 00 07 00 53 93 08 ...J.........S.. + 0x0310 91 08 93 08 4a 06 00 00 00 00 00 00 a4 06 00 00 ....J........... + 0x0320 00 00 00 00 06 00 93 08 91 08 93 08 00 00 00 00 ................ + 0x0330 00 00 00 00 00 00 00 00 00 00 00 00 ff ff ff ff ................ + 0x0340 ff ff ff ff 00 00 00 00 00 00 00 00 39 01 00 00 ............9... + 0x0350 00 00 00 00 23 06 00 00 00 00 00 00 03 00 91 e8 ....#........... + 0x0360 7e 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ~............... + 0x0370 00 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 ................ + 0x0380 00 49 01 00 00 00 00 00 00 93 01 00 00 00 00 00 .I.............. + 0x0390 00 01 00 53 00 00 00 00 00 00 00 00 00 00 00 00 ...S............ + 0x03a0 00 00 00 00 ff ff ff ff ff ff ff ff 00 00 00 00 ................ + 0x03b0 00 00 00 00 5c 01 00 00 00 00 00 00 71 01 00 00 ....\.......q... + 0x03c0 00 00 00 00 01 00 54 71 01 00 00 00 00 00 00 93 ......Tq........ + 0x03d0 01 00 00 00 00 00 00 01 00 59 00 00 00 00 00 00 .........Y...... + 0x03e0 00 00 00 00 00 00 00 00 00 00 ff ff ff ff ff ff ................ + 0x03f0 ff ff 00 00 00 00 00 00 00 00 49 01 00 00 00 00 ..........I..... + 0x0400 00 00 93 01 00 00 00 00 00 00 01 00 53 00 00 00 ............S... + 0x0410 00 00 00 00 00 00 00 00 00 00 00 00 00 ff ff ff ................ + 0x0420 ff ff ff ff ff 00 00 00 00 00 00 00 00 49 01 00 .............I.. + 0x0430 00 00 00 00 00 93 01 00 00 00 00 00 00 01 00 53 ...............S + 0x0440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0450 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 ................ + 0x0460 71 01 00 00 00 00 00 00 93 01 00 00 00 00 00 00 q............... + 0x0470 08 00 53 93 08 50 93 08 93 08 00 00 00 00 00 00 ..S..P.......... + 0x0480 00 00 00 00 00 00 00 00 00 00 ff ff ff ff ff ff ................ + 0x0490 ff ff 00 00 00 00 00 00 00 00 71 01 00 00 00 00 ..........q..... + 0x04a0 00 00 93 01 00 00 00 00 00 00 08 00 53 93 08 50 ............S..P + 0x04b0 93 08 93 08 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x04c0 00 00 00 00 ff ff ff ff ff ff ff ff 00 00 00 00 ................ + 0x04d0 00 00 00 00 26 02 00 00 00 00 00 00 53 02 00 00 ....&.......S... + 0x04e0 00 00 00 00 07 00 50 93 08 93 08 93 08 53 02 00 ......P......S.. + 0x04f0 00 00 00 00 00 ff 04 00 00 00 00 00 00 09 00 91 ................ + 0x0500 d0 7e 93 08 93 08 93 08 00 00 00 00 00 00 00 00 .~.............. + 0x0510 00 00 00 00 00 00 00 00 ff ff ff ff ff ff ff ff ................ + 0x0520 00 00 00 00 00 00 00 00 26 02 00 00 00 00 00 00 ........&....... + 0x0530 53 02 00 00 00 00 00 00 07 00 50 93 08 93 08 93 S.........P..... + 0x0540 08 53 02 00 00 00 00 00 00 58 02 00 00 00 00 00 .S.......X...... + 0x0550 00 09 00 91 d0 7e 93 08 93 08 93 08 58 02 00 00 .....~......X... + 0x0560 00 00 00 00 80 02 00 00 00 00 00 00 0a 00 91 d0 ................ + 0x0570 7e 93 08 52 93 08 93 08 80 02 00 00 00 00 00 00 ~..R............ + 0x0580 ee 04 00 00 00 00 00 00 0c 00 91 d0 7e 93 08 91 ............~... + 0x0590 a8 7e 93 08 93 08 ee 04 00 00 00 00 00 00 ff 04 .~.............. + 0x05a0 00 00 00 00 00 00 09 00 91 d0 7e 93 08 93 08 93 ..........~..... + 0x05b0 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x05c0 00 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 ................ + 0x05d0 00 85 02 00 00 00 00 00 00 d3 02 00 00 00 00 00 ................ + 0x05e0 00 01 00 55 df 02 00 00 00 00 00 00 c7 04 00 00 ...U............ + 0x05f0 00 00 00 00 01 00 55 00 00 00 00 00 00 00 00 00 ......U......... + 0x0600 00 00 00 00 00 00 00 ....... + rel 8+8 t=1 "".Error+0 + rel 192+8 t=1 "".Error+0 + rel 276+8 t=1 "".Error+0 + rel 348+8 t=1 "".Error+0 + rel 405+8 t=1 "".Error+0 + rel 475+8 t=1 "".Error+0 + rel 528+8 t=1 "".Error+0 + rel 682+8 t=1 "".Error+0 + rel 836+8 t=1 "".Error+0 + rel 889+8 t=1 "".Error+0 + rel 940+8 t=1 "".Error+0 + rel 1010+8 t=1 "".Error+0 + rel 1061+8 t=1 "".Error+0 + rel 1112+8 t=1 "".Error+0 + rel 1170+8 t=1 "".Error+0 + rel 1228+8 t=1 "".Error+0 + rel 1312+8 t=1 "".Error+0 + rel 1481+8 t=1 "".Error+0 +go.info."".Error SDWARFINFO size=466 + 0x0000 03 22 22 2e 45 72 72 6f 72 00 00 00 00 00 00 00 ."".Error....... + 0x0010 00 00 00 00 00 00 00 00 00 00 01 9c 00 00 00 00 ................ + 0x0020 01 0b 65 00 f3 01 00 00 00 00 00 00 00 00 0b 70 ..e............p + 0x0030 63 00 82 02 00 00 00 00 00 00 00 00 0b 6e 00 83 c............n.. + 0x0040 02 00 00 00 00 00 00 00 00 10 65 72 72 00 00 f2 ..........err... + 0x0050 01 00 00 00 00 00 00 00 00 0f 7e 72 31 00 01 f2 ..........~r1... + 0x0060 01 00 00 00 00 00 14 00 00 00 00 0b 66 72 61 6d ............fram + 0x0070 65 73 00 85 02 00 00 00 00 00 00 00 00 14 00 00 es.............. + 0x0080 00 00 0b 66 72 61 6d 65 00 88 02 00 00 00 00 00 ...frame........ + 0x0090 00 00 00 00 00 07 00 00 00 00 00 00 00 00 00 00 ................ + 0x00a0 00 00 f8 01 13 00 00 00 00 00 00 00 00 07 00 00 ................ + 0x00b0 00 00 00 00 00 00 00 00 00 00 95 12 13 00 00 00 ................ + 0x00c0 00 00 00 00 00 00 07 00 00 00 00 00 00 00 00 00 ................ + 0x00d0 00 00 00 97 12 13 00 00 00 00 00 00 00 00 0e 00 ................ + 0x00e0 00 00 00 00 00 00 00 0e 00 00 00 00 00 00 00 00 ................ + 0x00f0 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0100 00 00 00 00 00 00 00 00 00 93 01 13 00 00 00 00 ................ + 0x0110 00 00 00 00 00 06 00 00 00 00 00 00 00 00 00 00 ................ + 0x0120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 94 01 ................ + 0x0130 13 00 00 00 00 00 00 00 00 00 00 00 07 00 00 00 ................ + 0x0140 00 00 00 00 00 00 00 00 00 f8 01 13 00 00 00 00 ................ + 0x0150 00 00 00 00 06 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0160 00 00 00 00 00 00 00 00 00 00 00 00 00 84 12 13 ................ + 0x0170 00 00 00 00 00 00 00 00 06 00 00 00 00 00 00 00 ................ + 0x0180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0190 00 de 08 00 00 00 07 00 00 00 00 00 00 00 00 00 ................ + 0x01a0 00 00 00 83 02 13 00 00 00 00 00 00 00 00 00 07 ................ + 0x01b0 00 00 00 00 00 00 00 00 00 00 00 00 85 02 13 00 ................ + 0x01c0 00 00 00 00 00 00 00 0e 00 00 00 00 00 00 00 00 ................ + 0x01d0 00 00 .. + rel 0+0 t=24 type.unsafe.Pointer+0 + rel 0+0 t=24 type."".EventStackTrace+0 + rel 0+0 t=24 type."".option+0 + rel 0+0 t=24 type.*"".EventError+0 + rel 0+0 t=24 type.*[]"".EventStackTrace+0 + rel 0+0 t=24 type.*runtime.Frames+0 + rel 0+0 t=24 type.*uint8+0 + rel 0+0 t=24 type.error+0 + rel 0+0 t=24 type.int+0 + rel 0+0 t=24 type.interface {}+0 + rel 0+0 t=24 type.runtime.Frame+0 + rel 0+0 t=24 type.uint8+0 + rel 0+0 t=24 type."".Data+0 + rel 10+8 t=1 "".Error+0 + rel 18+8 t=1 "".Error+1700 + rel 28+4 t=30 gofile../home/rhys/git_repos/log-assembler/main_assembler/main.go+0 + rel 38+4 t=29 go.info.*"".EventError+0 + rel 42+4 t=29 go.loc."".Error+0 + rel 52+4 t=29 go.info.[]uintptr+0 + rel 56+4 t=29 go.loc."".Error+184 + rel 65+4 t=29 go.info.int+0 + rel 69+4 t=29 go.loc."".Error+268 + rel 81+4 t=29 go.info.error+0 + rel 85+4 t=29 go.loc."".Error+340 + rel 97+4 t=29 go.info."".option+0 + rel 103+4 t=29 go.range."".Error+0 + rel 117+4 t=29 go.info.*runtime.Frames+0 + rel 121+4 t=29 go.loc."".Error+397 + rel 126+4 t=29 go.range."".Error+144 + rel 139+4 t=29 go.info.runtime.Frame+0 + rel 143+4 t=29 go.loc."".Error+467 + rel 150+4 t=29 go.info.reflect.ValueOf$abstract+0 + rel 154+4 t=29 go.range."".Error+256 + rel 158+4 t=30 gofile../home/rhys/git_repos/log-assembler/main_assembler/main.go+0 + rel 165+4 t=29 go.info.reflect.ValueOf$abstract+19 + rel 169+4 t=29 go.loc."".Error+520 + rel 174+4 t=29 go.info.reflect.escapes$abstract+0 + rel 178+4 t=29 go.range."".Error+352 + rel 182+4 t=30 gofile..$GOROOT/src/reflect/value.go+0 + rel 189+4 t=29 go.info.reflect.escapes$abstract+19 + rel 193+4 t=29 go.loc."".Error+674 + rel 199+4 t=29 go.info.reflect.unpackEface$abstract+0 + rel 203+4 t=29 go.range."".Error+464 + rel 207+4 t=30 gofile..$GOROOT/src/reflect/value.go+0 + rel 214+4 t=29 go.info.reflect.unpackEface$abstract+23 + rel 218+4 t=29 go.loc."".Error+828 + rel 223+4 t=29 go.info.reflect.unpackEface$abstract+40 + rel 227+4 t=29 go.loc."".Error+881 + rel 232+4 t=29 go.info.reflect.unpackEface$abstract+49 + rel 236+4 t=29 go.loc."".Error+932 + rel 241+4 t=29 go.info.reflect.(*rtype).Kind$abstract+0 + rel 245+8 t=1 "".Error+338 + rel 253+8 t=1 "".Error+348 + rel 261+4 t=30 gofile..$GOROOT/src/reflect/value.go+0 + rel 268+4 t=29 go.info.reflect.(*rtype).Kind$abstract+25 + rel 272+4 t=29 go.loc."".Error+1002 + rel 278+4 t=29 go.info.reflect.ifaceIndir$abstract+0 + rel 282+8 t=1 "".Error+356 + rel 290+8 t=1 "".Error+360 + rel 298+4 t=30 gofile..$GOROOT/src/reflect/value.go+0 + rel 305+4 t=29 go.info.reflect.ifaceIndir$abstract+22 + rel 309+4 t=29 go.loc."".Error+1053 + rel 317+4 t=29 go.info.reflect.Indirect$abstract+0 + rel 321+4 t=29 go.range."".Error+544 + rel 325+4 t=30 gofile../home/rhys/git_repos/log-assembler/main_assembler/main.go+0 + rel 332+4 t=29 go.info.reflect.Indirect$abstract+20 + rel 336+4 t=29 go.loc."".Error+1104 + rel 341+4 t=29 go.info.reflect.Value.Kind$abstract+0 + rel 345+8 t=1 "".Error+385 + rel 353+8 t=1 "".Error+386 + rel 361+4 t=30 gofile..$GOROOT/src/reflect/value.go+0 + rel 368+4 t=29 go.info.reflect.Value.Kind$abstract+22 + rel 372+4 t=29 go.loc."".Error+1162 + rel 377+4 t=29 go.info.reflect.flag.kind$abstract+0 + rel 381+8 t=1 "".Error+386 + rel 389+8 t=1 "".Error+393 + rel 397+4 t=30 gofile..$GOROOT/src/reflect/value.go+0 + rel 407+4 t=29 go.info.runtime.Callers$abstract+0 + rel 411+4 t=29 go.range."".Error+608 + rel 415+4 t=30 gofile../home/rhys/git_repos/log-assembler/main_assembler/main.go+0 + rel 422+4 t=29 go.info.runtime.Callers$abstract+30 + rel 426+4 t=29 go.loc."".Error+1220 + rel 432+4 t=29 go.info.runtime.CallersFrames$abstract+0 + rel 436+4 t=29 go.range."".Error+672 + rel 440+4 t=30 gofile../home/rhys/git_repos/log-assembler/main_assembler/main.go+0 + rel 447+4 t=29 go.info.runtime.CallersFrames$abstract+25 + rel 451+4 t=29 go.loc."".Error+1304 + rel 456+4 t=29 go.info.runtime.CallersFrames$abstract+39 + rel 460+4 t=29 go.loc."".Error+1473 +go.range."".Error SDWARFRANGE size=752 + 0x0000 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 ................ + 0x0010 61 02 00 00 00 00 00 00 6b 02 00 00 00 00 00 00 a.......k....... + 0x0020 d8 02 00 00 00 00 00 00 ef 03 00 00 00 00 00 00 ................ + 0x0030 16 04 00 00 00 00 00 00 3f 04 00 00 00 00 00 00 ........?....... + 0x0040 4a 04 00 00 00 00 00 00 98 04 00 00 00 00 00 00 J............... + 0x0050 9b 04 00 00 00 00 00 00 bd 04 00 00 00 00 00 00 ................ + 0x0060 cc 04 00 00 00 00 00 00 cf 04 00 00 00 00 00 00 ................ + 0x0070 8f 06 00 00 00 00 00 00 9a 06 00 00 00 00 00 00 ................ + 0x0080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0090 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 ................ + 0x00a0 da 02 00 00 00 00 00 00 ef 03 00 00 00 00 00 00 ................ + 0x00b0 16 04 00 00 00 00 00 00 3f 04 00 00 00 00 00 00 ........?....... + 0x00c0 4a 04 00 00 00 00 00 00 98 04 00 00 00 00 00 00 J............... + 0x00d0 9b 04 00 00 00 00 00 00 bd 04 00 00 00 00 00 00 ................ + 0x00e0 cc 04 00 00 00 00 00 00 cf 04 00 00 00 00 00 00 ................ + 0x00f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0100 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 ................ + 0x0110 f7 00 00 00 00 00 00 00 01 01 00 00 00 00 00 00 ................ + 0x0120 31 01 00 00 00 00 00 00 41 01 00 00 00 00 00 00 1.......A....... + 0x0130 09 06 00 00 00 00 00 00 0e 06 00 00 00 00 00 00 ................ + 0x0140 33 06 00 00 00 00 00 00 3b 06 00 00 00 00 00 00 3.......;....... + 0x0150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0160 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 ................ + 0x0170 01 01 00 00 00 00 00 00 31 01 00 00 00 00 00 00 ........1....... + 0x0180 11 06 00 00 00 00 00 00 18 06 00 00 00 00 00 00 ................ + 0x0190 1b 06 00 00 00 00 00 00 28 06 00 00 00 00 00 00 ........(....... + 0x01a0 2e 06 00 00 00 00 00 00 33 06 00 00 00 00 00 00 ........3....... + 0x01b0 3b 06 00 00 00 00 00 00 40 06 00 00 00 00 00 00 ;.......@....... + 0x01c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x01d0 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 ................ + 0x01e0 41 01 00 00 00 00 00 00 52 01 00 00 00 00 00 00 A.......R....... + 0x01f0 5c 01 00 00 00 00 00 00 64 01 00 00 00 00 00 00 \.......d....... + 0x0200 68 01 00 00 00 00 00 00 6e 01 00 00 00 00 00 00 h.......n....... + 0x0210 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0220 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 ................ + 0x0230 89 01 00 00 00 00 00 00 93 01 00 00 00 00 00 00 ................ + 0x0240 d8 05 00 00 00 00 00 00 fa 05 00 00 00 00 00 00 ................ + 0x0250 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0260 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 ................ + 0x0270 2f 02 00 00 00 00 00 00 58 02 00 00 00 00 00 00 /.......X....... + 0x0280 6b 02 00 00 00 00 00 00 70 02 00 00 00 00 00 00 k.......p....... + 0x0290 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x02a0 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 ................ + 0x02b0 70 02 00 00 00 00 00 00 d8 02 00 00 00 00 00 00 p............... + 0x02c0 bd 04 00 00 00 00 00 00 cc 04 00 00 00 00 00 00 ................ + 0x02d0 cf 04 00 00 00 00 00 00 e6 04 00 00 00 00 00 00 ................ + 0x02e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + rel 8+8 t=1 "".Error+0 + rel 152+8 t=1 "".Error+0 + rel 264+8 t=1 "".Error+0 + rel 360+8 t=1 "".Error+0 + rel 472+8 t=1 "".Error+0 + rel 552+8 t=1 "".Error+0 + rel 616+8 t=1 "".Error+0 + rel 680+8 t=1 "".Error+0 +go.debuglines."".Error SDWARFMISC size=439 + 0x0000 04 02 03 ec 01 14 0a 08 2d f7 06 5f 06 08 ba 06 ........-.._.... + 0x0010 55 06 87 06 41 06 8f 06 55 9c 06 08 6a 06 2d 06 U...A...U...j.-. + 0x0020 08 6c 06 5f 04 43 06 03 90 10 96 03 03 6e 03 c2 .l._.C.......n.. + 0x0030 03 1e 06 55 06 4c 06 55 06 08 03 be 7c 33 06 5f ...U.L.U....|3._ + 0x0040 06 03 fc 6e 5b 60 04 44 03 f4 04 6e 06 37 04 43 ...n[`.D...n.7.C + 0x0050 06 03 90 7b 47 06 2d 04 44 06 03 e1 16 46 04 43 ...{G.-.D....F.C + 0x0060 06 03 a0 69 33 06 33 1a 04 02 06 03 d9 00 1e 2e ...i3.3......... + 0x0070 61 04 43 06 03 e4 06 64 03 f6 77 15 06 2d 06 03 a.C....d..w..-.. + 0x0080 af 11 3c 04 44 03 fe 6f 33 04 02 03 7e 47 06 37 ..<.D..o3...~G.7 + 0x0090 06 08 d9 06 49 81 06 08 03 01 d2 06 55 06 eb 06 ....I.......U... + 0x00a0 41 06 92 04 45 03 58 15 06 5f 06 f5 06 41 04 02 A...E.X.._...A.. + 0x00b0 06 03 28 46 06 2d 06 4c 06 37 04 45 03 56 47 04 ..(F.-.L.7.E.VG. + 0x00c0 46 06 03 ef 7e 3d 06 55 06 02 20 f6 06 5f 08 40 F...~=.U.. .._.@ + 0x00d0 04 02 06 03 c0 01 46 06 24 06 41 06 37 06 02 19 ......F.$.A.7... + 0x00e0 f7 06 87 06 ce 06 5f 06 08 10 06 5f 06 60 06 5f ......_...._.`._ + 0x00f0 06 fc 06 5f 02 45 fd 06 03 03 28 03 01 50 06 55 ..._.E....(..P.U + 0x0100 08 03 78 5b 08 71 03 09 5a 03 63 5b 03 10 32 02 ..x[.q..Z.c[..2. + 0x0110 36 03 6f fb 03 10 32 49 43 04 46 03 bd 7e f1 36 6.o...2IC.F..~.6 + 0x0120 2e 04 02 03 c0 01 64 04 46 03 bf 7e 29 40 04 02 ......d.F..~)@.. + 0x0130 03 cf 01 c8 03 72 5b 03 7c 3d 06 ee 06 41 03 7d .....r[.|=...A.} + 0x0140 33 03 02 82 04 43 06 02 a4 01 03 83 10 fa 06 37 3....C.........7 + 0x0150 06 73 06 41 04 02 03 f5 6f a1 45 04 43 06 03 96 .s.A....o.E.C... + 0x0160 10 78 04 02 06 03 e0 6f 3d 04 43 03 e5 13 32 04 .x.....o=.C...2. + 0x0170 02 03 9a 6c 51 04 43 03 e5 13 32 04 02 03 a3 6c ...lQ.C...2....l + 0x0180 8d 03 7d 29 04 43 03 e3 13 32 03 be 7c 3d 03 c0 ..}).C...2..|=.. + 0x0190 03 64 04 02 03 a4 6c 3d 06 a1 06 41 03 7f 5b 2f .d....l=...A..[/ + 0x01a0 2b 2f 03 02 96 03 7d 29 5e 03 0c c8 06 73 03 71 +/....})^....s.q + 0x01b0 15 04 01 03 8f 7e 01 .....~. +go.loc."".(*EventHTTP).attach SDWARFLOC size=103 + 0x0000 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 ................ + 0x0010 00 00 00 00 00 00 00 00 54 00 00 00 00 00 00 00 ........T....... + 0x0020 01 00 9c 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 ff ff ff ff ff ff ff ff 00 00 00 00 00 ................ + 0x0040 00 00 00 00 00 00 00 00 00 00 00 54 00 00 00 00 ...........T.... + 0x0050 00 00 00 02 00 91 08 00 00 00 00 00 00 00 00 00 ................ + 0x0060 00 00 00 00 00 00 00 ....... + rel 8+8 t=1 "".(*EventHTTP).attach+0 + rel 59+8 t=1 "".(*EventHTTP).attach+0 +go.info."".(*EventHTTP).attach SDWARFINFO size=77 + 0x0000 03 22 22 2e 28 2a 45 76 65 6e 74 48 54 54 50 29 ."".(*EventHTTP) + 0x0010 2e 61 74 74 61 63 68 00 00 00 00 00 00 00 00 00 .attach......... + 0x0020 00 00 00 00 00 00 00 00 01 9c 00 00 00 00 01 10 ................ + 0x0030 6c 00 00 b1 02 00 00 00 00 00 00 00 00 10 6c 65 l.............le + 0x0040 00 00 b1 02 00 00 00 00 00 00 00 00 00 ............. + rel 0+0 t=24 type.*"".EventData+0 + rel 0+0 t=24 type.*"".EventHTTP+0 + rel 24+8 t=1 "".(*EventHTTP).attach+0 + rel 32+8 t=1 "".(*EventHTTP).attach+84 + rel 42+4 t=30 gofile../home/rhys/git_repos/log-assembler/main_assembler/main.go+0 + rel 53+4 t=29 go.info.*"".EventHTTP+0 + rel 57+4 t=29 go.loc."".(*EventHTTP).attach+0 + rel 68+4 t=29 go.info.*"".EventData+0 + rel 72+4 t=29 go.loc."".(*EventHTTP).attach+51 +go.range."".(*EventHTTP).attach SDWARFRANGE size=0 +go.debuglines."".(*EventHTTP).attach SDWARFMISC size=23 + 0x0000 04 02 03 ab 02 14 0a a5 88 06 41 06 d8 06 68 06 ..........A...h. + 0x0010 ae 04 01 03 d0 7d 01 .....}. +go.loc."".HTTP SDWARFLOC size=975 + 0x0000 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 ................ + 0x0010 7a 00 00 00 00 00 00 00 40 03 00 00 00 00 00 00 z.......@....... + 0x0020 02 00 91 40 45 03 00 00 00 00 00 00 54 03 00 00 ...@E.......T... + 0x0030 00 00 00 00 01 00 50 00 00 00 00 00 00 00 00 00 ......P......... + 0x0040 00 00 00 00 00 00 00 ff ff ff ff ff ff ff ff 00 ................ + 0x0050 00 00 00 00 00 00 00 a3 00 00 00 00 00 00 00 b8 ................ + 0x0060 02 00 00 00 00 00 00 02 00 91 58 c6 02 00 00 00 ..........X..... + 0x0070 00 00 00 13 03 00 00 00 00 00 00 01 00 50 13 03 .............P.. + 0x0080 00 00 00 00 00 00 2d 03 00 00 00 00 00 00 02 00 ......-......... + 0x0090 91 68 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .h.............. + 0x00a0 00 00 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 ................ + 0x00b0 00 00 00 00 00 00 00 00 00 00 65 00 00 00 00 00 ..........e..... + 0x00c0 00 00 01 00 50 65 00 00 00 00 00 00 00 54 03 00 ....Pe.......T.. + 0x00d0 00 00 00 00 00 02 00 91 60 00 00 00 00 00 00 00 ........`....... + 0x00e0 00 00 00 00 00 00 00 00 00 ff ff ff ff ff ff ff ................ + 0x00f0 ff 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0100 00 54 03 00 00 00 00 00 00 01 00 9c 00 00 00 00 .T.............. + 0x0110 00 00 00 00 00 00 00 00 00 00 00 00 ff ff ff ff ................ + 0x0120 ff ff ff ff 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0130 00 00 00 00 54 03 00 00 00 00 00 00 02 00 91 08 ....T........... + 0x0140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0150 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 ................ + 0x0160 00 00 00 00 00 00 00 00 54 03 00 00 00 00 00 00 ........T....... + 0x0170 02 00 91 10 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0180 00 00 00 00 ff ff ff ff ff ff ff ff 00 00 00 00 ................ + 0x0190 00 00 00 00 00 00 00 00 00 00 00 00 54 03 00 00 ............T... + 0x01a0 00 00 00 00 02 00 91 18 00 00 00 00 00 00 00 00 ................ + 0x01b0 00 00 00 00 00 00 00 00 ff ff ff ff ff ff ff ff ................ + 0x01c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x01d0 54 03 00 00 00 00 00 00 02 00 91 20 00 00 00 00 T.......... .... + 0x01e0 00 00 00 00 00 00 00 00 00 00 00 00 ff ff ff ff ................ + 0x01f0 ff ff ff ff 00 00 00 00 00 00 00 00 6a 00 00 00 ............j... + 0x0200 00 00 00 00 6f 00 00 00 00 00 00 00 05 00 50 93 ....o.........P. + 0x0210 08 93 08 6f 00 00 00 00 00 00 00 7a 00 00 00 00 ...o.......z.... + 0x0220 00 00 00 06 00 50 93 08 52 93 08 7a 00 00 00 00 .....P..R..z.... + 0x0230 00 00 00 40 03 00 00 00 00 00 00 05 00 93 08 52 ...@...........R + 0x0240 93 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0250 00 00 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 ................ + 0x0260 00 00 c6 02 00 00 00 00 00 00 13 03 00 00 00 00 ................ + 0x0270 00 00 01 00 50 13 03 00 00 00 00 00 00 2d 03 00 ....P........-.. + 0x0280 00 00 00 00 00 02 00 91 68 00 00 00 00 00 00 00 ........h....... + 0x0290 00 00 00 00 00 00 00 00 00 ff ff ff ff ff ff ff ................ + 0x02a0 ff 00 00 00 00 00 00 00 00 4f 00 00 00 00 00 00 .........O...... + 0x02b0 00 57 00 00 00 00 00 00 00 01 00 51 00 00 00 00 .W.........Q.... + 0x02c0 00 00 00 00 00 00 00 00 00 00 00 00 ff ff ff ff ................ + 0x02d0 ff ff ff ff 00 00 00 00 00 00 00 00 6a 00 00 00 ............j... + 0x02e0 00 00 00 00 6f 00 00 00 00 00 00 00 05 00 50 93 ....o.........P. + 0x02f0 08 93 08 6f 00 00 00 00 00 00 00 7a 00 00 00 00 ...o.......z.... + 0x0300 00 00 00 06 00 50 93 08 52 93 08 7a 00 00 00 00 .....P..R..z.... + 0x0310 00 00 00 40 03 00 00 00 00 00 00 05 00 93 08 52 ...@...........R + 0x0320 93 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0330 00 00 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 ................ + 0x0340 00 00 b1 00 00 00 00 00 00 00 b9 00 00 00 00 00 ................ + 0x0350 00 00 01 00 52 00 00 00 00 00 00 00 00 00 00 00 ....R........... + 0x0360 00 00 00 00 00 ff ff ff ff ff ff ff ff 00 00 00 ................ + 0x0370 00 00 00 00 00 cc 00 00 00 00 00 00 00 d6 00 00 ................ + 0x0380 00 00 00 00 00 05 00 93 08 50 93 08 d6 00 00 00 .........P...... + 0x0390 00 00 00 00 eb 00 00 00 00 00 00 00 07 00 52 93 ..............R. + 0x03a0 08 91 48 93 08 eb 00 00 00 00 00 00 00 b8 02 00 ..H............. + 0x03b0 00 00 00 00 00 08 00 91 50 93 08 91 48 93 08 00 ........P...H... + 0x03c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ............... + rel 8+8 t=1 "".HTTP+0 + rel 79+8 t=1 "".HTTP+0 + rel 170+8 t=1 "".HTTP+0 + rel 241+8 t=1 "".HTTP+0 + rel 292+8 t=1 "".HTTP+0 + rel 344+8 t=1 "".HTTP+0 + rel 396+8 t=1 "".HTTP+0 + rel 448+8 t=1 "".HTTP+0 + rel 500+8 t=1 "".HTTP+0 + rel 602+8 t=1 "".HTTP+0 + rel 673+8 t=1 "".HTTP+0 + rel 724+8 t=1 "".HTTP+0 + rel 826+8 t=1 "".HTTP+0 + rel 877+8 t=1 "".HTTP+0 +go.info."".HTTP SDWARFINFO size=363 + 0x0000 03 22 22 2e 48 54 54 50 00 00 00 00 00 00 00 00 ."".HTTP........ + 0x0010 00 00 00 00 00 00 00 00 00 01 9c 00 00 00 00 01 ................ + 0x0020 0b 70 6f 72 74 00 c1 02 00 00 00 00 00 00 00 00 .port........... + 0x0030 0b 64 75 72 61 74 69 6f 6e 00 c6 02 00 00 00 00 .duration....... + 0x0040 00 00 00 00 0b 26 73 74 61 74 75 73 43 6f 64 65 .....&statusCode + 0x0050 00 c0 02 00 00 00 00 00 00 00 00 10 72 65 71 00 ............req. + 0x0060 00 c0 02 00 00 00 00 00 00 00 00 10 73 74 61 74 ............stat + 0x0070 75 73 43 6f 64 65 00 00 c0 02 00 00 00 00 00 00 usCode.......... + 0x0080 00 00 10 72 65 73 70 6f 6e 73 65 43 6f 6e 74 65 ...responseConte + 0x0090 6e 74 4c 65 6e 67 74 68 00 00 c0 02 00 00 00 00 ntLength........ + 0x00a0 00 00 00 00 10 73 74 61 72 74 65 64 41 74 00 00 .....startedAt.. + 0x00b0 c0 02 00 00 00 00 00 00 00 00 10 65 6e 64 65 64 ...........ended + 0x00c0 41 74 00 00 c0 02 00 00 00 00 00 00 00 00 0f 7e At.............~ + 0x00d0 72 35 00 01 c0 02 00 00 00 00 00 14 00 00 00 00 r5.............. + 0x00e0 0b 70 00 c2 02 00 00 00 00 00 00 00 00 00 15 00 .p.............. + 0x00f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0b ................ + 0x0100 26 64 00 c8 02 00 00 00 00 00 00 00 00 00 06 00 &d.............. + 0x0110 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0120 00 00 00 00 00 00 00 c2 02 13 00 00 00 00 00 00 ................ + 0x0130 00 00 0e 00 00 00 00 00 00 00 00 00 06 00 00 00 ................ + 0x0140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0150 00 00 00 00 00 d1 02 13 00 00 00 00 00 00 00 00 ................ + 0x0160 0e 00 00 00 00 00 00 00 00 00 00 ........... + rel 0+0 t=24 type."".option+0 + rel 0+0 t=24 type.*int+0 + rel 0+0 t=24 type.*net/http.Request+0 + rel 0+0 t=24 type.*time.Duration+0 + rel 0+0 t=24 type.*time.Time+0 + rel 0+0 t=24 type.*uint8+0 + rel 0+0 t=24 type.int+0 + rel 0+0 t=24 type.int64+0 + rel 9+8 t=1 "".HTTP+0 + rel 17+8 t=1 "".HTTP+852 + rel 27+4 t=30 gofile../home/rhys/git_repos/log-assembler/main_assembler/main.go+0 + rel 40+4 t=29 go.info.int+0 + rel 44+4 t=29 go.loc."".HTTP+0 + rel 60+4 t=29 go.info.*time.Duration+0 + rel 64+4 t=29 go.loc."".HTTP+71 + rel 83+4 t=29 go.info.*int+0 + rel 87+4 t=29 go.loc."".HTTP+162 + rel 99+4 t=29 go.info.*net/http.Request+0 + rel 103+4 t=29 go.loc."".HTTP+233 + rel 122+4 t=29 go.info.int+0 + rel 126+4 t=29 go.loc."".HTTP+284 + rel 156+4 t=29 go.info.int64+0 + rel 160+4 t=29 go.loc."".HTTP+336 + rel 178+4 t=29 go.info.*time.Time+0 + rel 182+4 t=29 go.loc."".HTTP+388 + rel 198+4 t=29 go.info.*time.Time+0 + rel 202+4 t=29 go.loc."".HTTP+440 + rel 214+4 t=29 go.info."".option+0 + rel 220+4 t=29 go.range."".HTTP+0 + rel 229+4 t=29 go.info.string+0 + rel 233+4 t=29 go.loc."".HTTP+492 + rel 239+8 t=1 "".HTTP+689 + rel 247+8 t=1 "".HTTP+805 + rel 261+4 t=29 go.info.*time.Duration+0 + rel 265+4 t=29 go.loc."".HTTP+594 + rel 271+4 t=29 go.info.net/url.(*URL).Port$abstract+0 + rel 275+8 t=1 "".HTTP+79 + rel 283+8 t=1 "".HTTP+111 + rel 291+4 t=30 gofile../home/rhys/git_repos/log-assembler/main_assembler/main.go+0 + rel 298+4 t=29 go.info.net/url.(*URL).Port$abstract+23 + rel 302+4 t=29 go.loc."".HTTP+665 + rel 307+4 t=29 go.info.net/url.(*URL).Port$abstract+31 + rel 311+4 t=29 go.loc."".HTTP+716 + rel 317+4 t=29 go.info.net/url.(*URL).Hostname$abstract+0 + rel 321+8 t=1 "".HTTP+177 + rel 329+8 t=1 "".HTTP+219 + rel 337+4 t=30 gofile../home/rhys/git_repos/log-assembler/main_assembler/main.go+0 + rel 344+4 t=29 go.info.net/url.(*URL).Hostname$abstract+27 + rel 348+4 t=29 go.loc."".HTTP+818 + rel 353+4 t=29 go.info.net/url.(*URL).Hostname$abstract+35 + rel 357+4 t=29 go.loc."".HTTP+869 +go.range."".HTTP SDWARFRANGE size=80 + 0x0000 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 ................ + 0x0010 46 00 00 00 00 00 00 00 4f 00 00 00 00 00 00 00 F.......O....... + 0x0020 6f 00 00 00 00 00 00 00 7a 00 00 00 00 00 00 00 o.......z....... + 0x0030 32 03 00 00 00 00 00 00 4a 03 00 00 00 00 00 00 2.......J....... + 0x0040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + rel 8+8 t=1 "".HTTP+0 +go.debuglines."".HTTP SDWARFMISC size=228 + 0x0000 04 02 03 ba 02 14 0a cd 06 e1 06 08 4d 06 41 04 ............M.A. + 0x0010 07 06 03 e6 05 3c 06 37 04 02 06 08 03 99 7a 33 .....<.7......z3 + 0x0020 06 2d 03 0b 64 06 03 79 3d 06 5f 08 03 0c 3c 06 .-..d..y=._...<. + 0x0030 03 7d 3d 06 41 04 07 06 03 cf 05 3c 06 37 04 02 .}=.A......<.7.. + 0x0040 06 08 03 ab 7a 97 06 55 06 9c 06 55 06 4b 06 41 ....z..U...U.K.A + 0x0050 06 2e 06 41 06 08 39 06 37 06 08 38 06 41 06 08 ...A..9.7..8.A.. + 0x0060 24 06 41 06 38 06 37 06 08 42 06 37 06 08 1b 06 $.A.8.7..B.7.... + 0x0070 5f 06 38 06 5f 06 38 06 41 06 38 06 5f 06 03 77 _.8._.8.A.8._..w + 0x0080 33 06 55 08 03 03 28 03 7c 33 03 03 32 06 61 06 3.U...(.|3..2.a. + 0x0090 37 06 92 06 37 06 92 06 37 74 03 7f 29 22 03 7d 7...7...7t..)".} + 0x00a0 33 03 02 32 60 2c 06 3f 06 03 7f 33 32 03 7f 29 3..2`,.?...32..) + 0x00b0 32 74 2c 40 33 31 60 2c 06 3f 06 35 2f 61 2b 06 2t,@31`,.?.5/a+. + 0x00c0 40 06 41 06 03 7f 6f 06 55 06 02 51 f6 06 03 09 @.A...o.U..Q.... + 0x00d0 46 03 74 5b 06 3d 06 37 06 41 06 41 06 70 04 01 F.t[.=.7.A.A.p.. + 0x00e0 03 c1 7d 01 ..}. +go.loc."".Event SDWARFLOC size=177 + 0x0000 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 ................ + 0x0010 00 00 00 00 00 00 00 00 85 00 00 00 00 00 00 00 ................ + 0x0020 07 00 9c 93 08 91 08 93 08 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 00 ff ff ff ff ff ff ff ................ + 0x0040 ff 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0050 00 85 00 00 00 00 00 00 00 08 00 91 10 93 08 91 ................ + 0x0060 18 93 08 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0070 00 00 00 ff ff ff ff ff ff ff ff 00 00 00 00 00 ................ + 0x0080 00 00 00 00 00 00 00 00 00 00 00 85 00 00 00 00 ................ + 0x0090 00 00 00 0c 00 91 20 93 08 91 28 93 08 91 30 93 ...... ...(...0. + 0x00a0 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x00b0 00 . + rel 8+8 t=1 "".Event+0 + rel 65+8 t=1 "".Event+0 + rel 123+8 t=1 "".Event+0 +go.info."".Event SDWARFINFO size=85 + 0x0000 03 22 22 2e 45 76 65 6e 74 00 00 00 00 00 00 00 ."".Event....... + 0x0010 00 00 00 00 00 00 00 00 00 00 01 9c 00 00 00 00 ................ + 0x0020 01 10 63 74 78 00 00 93 03 00 00 00 00 00 00 00 ..ctx........... + 0x0030 00 10 65 76 65 6e 74 00 00 93 03 00 00 00 00 00 ..event......... + 0x0040 00 00 00 10 6f 70 74 73 00 00 93 03 00 00 00 00 ....opts........ + 0x0050 00 00 00 00 00 ..... + rel 0+0 t=24 type.[]"".option+0 + rel 0+0 t=24 type.context.Context+0 + rel 0+0 t=24 type.string+0 + rel 10+8 t=1 "".Event+0 + rel 18+8 t=1 "".Event+133 + rel 28+4 t=30 gofile../home/rhys/git_repos/log-assembler/main_assembler/main.go+0 + rel 41+4 t=29 go.info.context.Context+0 + rel 45+4 t=29 go.loc."".Event+0 + rel 59+4 t=29 go.info.string+0 + rel 63+4 t=29 go.loc."".Event+57 + rel 76+4 t=29 go.info.[]"".option+0 + rel 80+4 t=29 go.loc."".Event+115 +go.range."".Event SDWARFRANGE size=0 +go.debuglines."".Event SDWARFMISC size=22 + 0x0000 04 02 03 8d 03 14 0a a5 9c 06 55 06 02 36 f6 71 ..........U..6.q + 0x0010 04 01 03 ee 7c 01 ....|. +go.string."test.v" SRODATA dupok size=6 + 0x0000 74 65 73 74 2e 76 test.v +go.loc."".initEvent SDWARFLOC size=0 +go.info."".initEvent SDWARFINFO size=73 + 0x0000 03 22 22 2e 69 6e 69 74 45 76 65 6e 74 00 00 00 ."".initEvent... + 0x0010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 9c ................ + 0x0020 00 00 00 00 01 0f 7e 72 30 00 01 97 03 00 00 00 ......~r0....... + 0x0030 00 00 07 00 00 00 00 00 00 00 00 00 00 00 00 a1 ................ + 0x0040 03 12 00 00 00 00 00 00 00 ......... + rel 0+0 t=24 type.*"".eventFunc+0 + rel 14+8 t=1 "".initEvent+0 + rel 22+8 t=1 "".initEvent+165 + rel 32+4 t=30 gofile../home/rhys/git_repos/log-assembler/main_assembler/main.go+0 + rel 45+4 t=29 go.info.*"".eventFunc+0 + rel 51+4 t=29 go.info.flag.Lookup$abstract+0 + rel 55+4 t=29 go.range."".initEvent+0 + rel 59+4 t=30 gofile../home/rhys/git_repos/log-assembler/main_assembler/main.go+0 + rel 66+4 t=29 go.info.flag.Lookup$abstract+15 +go.range."".initEvent SDWARFRANGE size=64 + 0x0000 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 ................ + 0x0010 21 00 00 00 00 00 00 00 28 00 00 00 00 00 00 00 !.......(....... + 0x0020 28 00 00 00 00 00 00 00 5f 00 00 00 00 00 00 00 (......._....... + 0x0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + rel 8+8 t=1 "".initEvent+0 +go.debuglines."".initEvent SDWARFMISC size=40 + 0x0000 04 02 03 91 03 14 0a cd 04 4d 03 08 a0 06 55 04 .........M....U. + 0x0010 02 06 02 1f fc 24 56 06 55 06 a8 56 06 55 06 03 .....$V.U..V.U.. + 0x0020 74 a1 04 01 03 ea 7c 01 t.....|. +go.string."HUMAN_LOG" SRODATA dupok size=9 + 0x0000 48 55 4d 41 4e 5f 4c 4f 47 HUMAN_LOG +go.string."F" SRODATA dupok size=1 + 0x0000 46 F +go.string."ParseBool" SRODATA dupok size=9 + 0x0000 50 61 72 73 65 42 6f 6f 6c ParseBool +go.loc."".initStyler SDWARFLOC size=202 + 0x0000 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 ................ + 0x0010 61 00 00 00 00 00 00 00 6c 00 00 00 00 00 00 00 a.......l....... + 0x0020 01 00 50 00 00 00 00 00 00 00 00 00 00 00 00 00 ..P............. + 0x0030 00 00 00 ff ff ff ff ff ff ff ff 00 00 00 00 00 ................ + 0x0040 00 00 00 3f 00 00 00 00 00 00 00 44 00 00 00 00 ...?.......D.... + 0x0050 00 00 00 05 00 93 08 50 93 08 44 00 00 00 00 00 .......P..D..... + 0x0060 00 00 5c 00 00 00 00 00 00 00 06 00 52 93 08 50 ..\.........R..P + 0x0070 93 08 5c 00 00 00 00 00 00 00 61 00 00 00 00 00 ..\.......a..... + 0x0080 00 00 05 00 93 08 50 93 08 e0 00 00 00 00 00 00 ......P......... + 0x0090 00 f0 00 00 00 00 00 00 00 07 00 91 68 93 08 50 ............h..P + 0x00a0 93 08 f0 00 00 00 00 00 00 00 57 01 00 00 00 00 ..........W..... + 0x00b0 00 00 06 00 91 68 93 08 93 08 00 00 00 00 00 00 .....h.......... + 0x00c0 00 00 00 00 00 00 00 00 00 00 .......... + rel 8+8 t=1 "".initStyler+0 + rel 59+8 t=1 "".initStyler+0 +go.info."".initStyler SDWARFINFO size=96 + 0x0000 03 22 22 2e 69 6e 69 74 53 74 79 6c 65 72 00 00 ."".initStyler.. + 0x0010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 ................ + 0x0020 9c 00 00 00 00 01 0f 7e 72 30 00 01 ac 03 00 00 .......~r0...... + 0x0030 00 00 00 14 00 00 00 00 0b 62 00 af 03 00 00 00 .........b...... + 0x0040 00 00 00 00 00 00 07 00 00 00 00 00 00 00 00 00 ................ + 0x0050 00 00 00 af 03 13 00 00 00 00 00 00 00 00 00 00 ................ + rel 0+0 t=24 type.*struct { "".f func(context.Context, "".EventData, "".eventFunc) []uint8 }+0 + rel 0+0 t=24 type.*uint8+0 + rel 15+8 t=1 "".initStyler+0 + rel 23+8 t=1 "".initStyler+343 + rel 33+4 t=30 gofile../home/rhys/git_repos/log-assembler/main_assembler/main.go+0 + rel 46+4 t=29 go.info.*struct { "".f func(context.Context, "".EventData, "".eventFunc) []uint8 }+0 + rel 52+4 t=29 go.range."".initStyler+0 + rel 61+4 t=29 go.info.bool+0 + rel 65+4 t=29 go.loc."".initStyler+0 + rel 71+4 t=29 go.info.strconv.ParseBool$abstract+0 + rel 75+4 t=29 go.range."".initStyler+112 + rel 79+4 t=30 gofile../home/rhys/git_repos/log-assembler/main_assembler/main.go+0 + rel 86+4 t=29 go.info.strconv.ParseBool$abstract+21 + rel 90+4 t=29 go.loc."".initStyler+51 +go.range."".initStyler SDWARFRANGE size=224 + 0x0000 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 ................ + 0x0010 21 00 00 00 00 00 00 00 44 00 00 00 00 00 00 00 !.......D....... + 0x0020 5c 00 00 00 00 00 00 00 7b 00 00 00 00 00 00 00 \.......{....... + 0x0030 a3 00 00 00 00 00 00 00 a5 00 00 00 00 00 00 00 ................ + 0x0040 b9 00 00 00 00 00 00 00 bd 00 00 00 00 00 00 00 ................ + 0x0050 db 00 00 00 00 00 00 00 e0 00 00 00 00 00 00 00 ................ + 0x0060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0070 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 ................ + 0x0080 44 00 00 00 00 00 00 00 5c 00 00 00 00 00 00 00 D.......\....... + 0x0090 91 00 00 00 00 00 00 00 a3 00 00 00 00 00 00 00 ................ + 0x00a0 a5 00 00 00 00 00 00 00 b9 00 00 00 00 00 00 00 ................ + 0x00b0 bd 00 00 00 00 00 00 00 db 00 00 00 00 00 00 00 ................ + 0x00c0 e0 00 00 00 00 00 00 00 4d 01 00 00 00 00 00 00 ........M....... + 0x00d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + rel 8+8 t=1 "".initStyler+0 + rel 120+8 t=1 "".initStyler+0 +go.debuglines."".initStyler SDWARFMISC size=113 + 0x0000 04 02 03 a6 03 14 0a cd 9e 06 55 04 4e 06 08 03 ..........U.N... + 0x0010 e0 7c 33 06 37 06 88 06 4b 04 02 03 9f 03 28 40 .|3.7...K.....(@ + 0x0020 06 38 06 55 06 a8 06 55 04 4e 03 dd 7c a1 b4 04 .8.U...U.N..|... + 0x0030 02 06 03 99 03 28 04 4e 06 03 e0 7c 1f 06 4e 06 .....(.N...|..N. + 0x0040 4b 04 02 03 9d 03 64 06 22 04 4e 06 03 e3 7c 1f K.....d.".N...|. + 0x0050 04 02 08 03 9c 03 50 04 4e 03 e0 7c 3d 08 d0 71 ......P.N..|=..q + 0x0060 6b 71 9d 67 04 02 06 03 9b 03 a0 04 01 03 d5 7c kq.g...........| + 0x0070 01 . +go.string."%s.%s" SRODATA dupok size=5 + 0x0000 25 73 2e 25 73 %s.%s +go.string."can't pass in the same parameter type multiple times: " SRODATA dupok size=54 + 0x0000 63 61 6e 27 74 20 70 61 73 73 20 69 6e 20 74 68 can't pass in th + 0x0010 65 20 73 61 6d 65 20 70 61 72 61 6d 65 74 65 72 e same parameter + 0x0020 20 74 79 70 65 20 6d 75 6c 74 69 70 6c 65 20 74 type multiple t + 0x0030 69 6d 65 73 3a 20 imes: +go.loc."".eventWithOptionsCheck SDWARFLOC size=555 + 0x0000 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 ................ + 0x0010 00 00 00 00 00 00 00 00 9d 03 00 00 00 00 00 00 ................ + 0x0020 07 00 9c 93 08 91 08 93 08 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 00 ff ff ff ff ff ff ff ................ + 0x0040 ff 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0050 00 9d 03 00 00 00 00 00 00 08 00 91 10 93 08 91 ................ + 0x0060 18 93 08 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0070 00 00 00 ff ff ff ff ff ff ff ff 00 00 00 00 00 ................ + 0x0080 00 00 00 00 00 00 00 00 00 00 00 9d 03 00 00 00 ................ + 0x0090 00 00 00 0c 00 91 20 93 08 91 28 93 08 91 30 93 ...... ...(...0. + 0x00a0 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x00b0 00 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 ................ + 0x00c0 00 32 01 00 00 00 00 00 00 36 01 00 00 00 00 00 .2.......6...... + 0x00d0 00 05 00 53 93 08 93 08 36 01 00 00 00 00 00 00 ...S....6....... + 0x00e0 3f 01 00 00 00 00 00 00 06 00 53 93 08 54 93 08 ?.........S..T.. + 0x00f0 3f 01 00 00 00 00 00 00 74 01 00 00 00 00 00 00 ?.......t....... + 0x0100 05 00 93 08 54 93 08 00 00 00 00 00 00 00 00 00 ....T........... + 0x0110 00 00 00 00 00 00 00 ff ff ff ff ff ff ff ff 00 ................ + 0x0120 00 00 00 00 00 00 00 74 01 00 00 00 00 00 00 8b .......t........ + 0x0130 01 00 00 00 00 00 00 08 00 54 93 08 91 d0 7d 93 .........T....}. + 0x0140 08 8b 01 00 00 00 00 00 00 25 03 00 00 00 00 00 .........%...... + 0x0150 00 0a 00 91 a8 7d 93 08 91 d0 7d 93 08 00 00 00 .....}....}..... + 0x0160 00 00 00 00 00 00 00 00 00 00 00 00 00 ff ff ff ................ + 0x0170 ff ff ff ff ff 00 00 00 00 00 00 00 00 8b 02 00 ................ + 0x0180 00 00 00 00 00 95 02 00 00 00 00 00 00 05 00 93 ................ + 0x0190 08 50 93 08 95 02 00 00 00 00 00 00 c1 02 00 00 .P.............. + 0x01a0 00 00 00 00 08 00 52 93 08 91 b0 7d 93 08 c1 02 ......R....}.... + 0x01b0 00 00 00 00 00 00 25 03 00 00 00 00 00 00 0a 00 ......%......... + 0x01c0 91 d8 7d 93 08 91 b0 7d 93 08 4c 03 00 00 00 00 ..}....}..L..... + 0x01d0 00 00 9d 03 00 00 00 00 00 00 0a 00 91 d8 7d 93 ..............}. + 0x01e0 08 91 b0 7d 93 08 00 00 00 00 00 00 00 00 00 00 ...}............ + 0x01f0 00 00 00 00 00 00 ff ff ff ff ff ff ff ff 00 00 ................ + 0x0200 00 00 00 00 00 00 54 01 00 00 00 00 00 00 9d 03 ......T......... + 0x0210 00 00 00 00 00 00 03 00 91 80 7e 00 00 00 00 00 ..........~..... + 0x0220 00 00 00 00 00 00 00 00 00 00 00 ........... + rel 8+8 t=1 "".eventWithOptionsCheck+0 + rel 65+8 t=1 "".eventWithOptionsCheck+0 + rel 123+8 t=1 "".eventWithOptionsCheck+0 + rel 185+8 t=1 "".eventWithOptionsCheck+0 + rel 287+8 t=1 "".eventWithOptionsCheck+0 + rel 373+8 t=1 "".eventWithOptionsCheck+0 + rel 510+8 t=1 "".eventWithOptionsCheck+0 +go.info."".eventWithOptionsCheck SDWARFINFO size=220 + 0x0000 03 22 22 2e 65 76 65 6e 74 57 69 74 68 4f 70 74 ."".eventWithOpt + 0x0010 69 6f 6e 73 43 68 65 63 6b 00 00 00 00 00 00 00 ionsCheck....... + 0x0020 00 00 00 00 00 00 00 00 00 00 01 9c 00 00 00 00 ................ + 0x0030 01 0a 6f 70 74 4d 61 70 00 e6 03 00 00 00 00 00 ..optMap........ + 0x0040 10 63 74 78 00 00 e5 03 00 00 00 00 00 00 00 00 .ctx............ + 0x0050 10 65 76 65 6e 74 00 00 e5 03 00 00 00 00 00 00 .event.......... + 0x0060 00 00 10 6f 70 74 73 00 00 e5 03 00 00 00 00 00 ...opts......... + 0x0070 00 00 00 14 00 00 00 00 0b 6f 00 e7 03 00 00 00 .........o...... + 0x0080 00 00 00 00 00 14 00 00 00 00 0b 74 00 e8 03 00 ...........t.... + 0x0090 00 00 00 00 00 00 00 0b 70 00 e9 03 00 00 00 00 ........p....... + 0x00a0 00 00 00 00 00 00 07 00 00 00 00 00 00 00 00 00 ................ + 0x00b0 00 00 00 e8 03 13 00 00 00 00 00 00 00 00 06 00 ................ + 0x00c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x00d0 00 00 00 00 00 00 00 d7 0a 00 00 00 ............ + rel 0+0 t=24 type.unsafe.Pointer+0 + rel 0+0 t=24 type.*uint8+0 + rel 0+0 t=24 type.[2]interface {}+0 + rel 0+0 t=24 type.[]"".option+0 + rel 0+0 t=24 type.context.Context+0 + rel 0+0 t=24 type.int+0 + rel 0+0 t=24 type.interface {}+0 + rel 0+0 t=24 type.noalg.map.bucket[string]struct {}+0 + rel 0+0 t=24 type.noalg.map.hdr[string]struct {}+0 + rel 0+0 t=24 type.string+0 + rel 0+0 t=24 type.uintptr+0 + rel 0+0 t=24 type.*"".option+0 + rel 26+8 t=1 "".eventWithOptionsCheck+0 + rel 34+8 t=1 "".eventWithOptionsCheck+925 + rel 44+4 t=30 gofile../home/rhys/git_repos/log-assembler/main_assembler/main.go+0 + rel 59+4 t=29 go.info.map[string]struct {}+0 + rel 72+4 t=29 go.info.context.Context+0 + rel 76+4 t=29 go.loc."".eventWithOptionsCheck+0 + rel 90+4 t=29 go.info.string+0 + rel 94+4 t=29 go.loc."".eventWithOptionsCheck+57 + rel 107+4 t=29 go.info.[]"".option+0 + rel 111+4 t=29 go.loc."".eventWithOptionsCheck+115 + rel 116+4 t=29 go.range."".eventWithOptionsCheck+0 + rel 125+4 t=29 go.info."".option+0 + rel 129+4 t=29 go.loc."".eventWithOptionsCheck+177 + rel 134+4 t=29 go.range."".eventWithOptionsCheck+96 + rel 143+4 t=29 go.info.reflect.Type+0 + rel 147+4 t=29 go.loc."".eventWithOptionsCheck+279 + rel 156+4 t=29 go.info.string+0 + rel 160+4 t=29 go.loc."".eventWithOptionsCheck+365 + rel 167+4 t=29 go.info.reflect.TypeOf$abstract+0 + rel 171+4 t=29 go.range."".eventWithOptionsCheck+192 + rel 175+4 t=30 gofile../home/rhys/git_repos/log-assembler/main_assembler/main.go+0 + rel 182+4 t=29 go.info.reflect.TypeOf$abstract+18 + rel 186+4 t=29 go.loc."".eventWithOptionsCheck+502 + rel 191+4 t=29 go.info.reflect.toType$abstract+0 + rel 195+8 t=1 "".eventWithOptionsCheck+356 + rel 203+8 t=1 "".eventWithOptionsCheck+372 + rel 211+4 t=30 gofile..$GOROOT/src/reflect/type.go+0 +go.range."".eventWithOptionsCheck SDWARFRANGE size=256 + 0x0000 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 ................ + 0x0010 8b 00 00 00 00 00 00 00 98 00 00 00 00 00 00 00 ................ + 0x0020 09 01 00 00 00 00 00 00 5c 01 00 00 00 00 00 00 ........\....... + 0x0030 74 01 00 00 00 00 00 00 19 03 00 00 00 00 00 00 t............... + 0x0040 2a 03 00 00 00 00 00 00 93 03 00 00 00 00 00 00 *............... + 0x0050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0060 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 ................ + 0x0070 36 01 00 00 00 00 00 00 3f 01 00 00 00 00 00 00 6.......?....... + 0x0080 4c 01 00 00 00 00 00 00 5c 01 00 00 00 00 00 00 L.......\....... + 0x0090 74 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 t............... + 0x00a0 2a 03 00 00 00 00 00 00 93 03 00 00 00 00 00 00 *............... + 0x00b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x00c0 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 ................ + 0x00d0 5c 01 00 00 00 00 00 00 64 01 00 00 00 00 00 00 \.......d....... + 0x00e0 25 03 00 00 00 00 00 00 2a 03 00 00 00 00 00 00 %.......*....... + 0x00f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + rel 8+8 t=1 "".eventWithOptionsCheck+0 + rel 104+8 t=1 "".eventWithOptionsCheck+0 + rel 200+8 t=1 "".eventWithOptionsCheck+0 +go.debuglines."".eventWithOptionsCheck SDWARFMISC size=131 + 0x0000 04 02 03 df 03 14 0a 08 2d f6 06 2d 06 02 3f f6 ........-..-..?. + 0x0010 06 5f 06 03 04 46 06 55 06 02 43 f6 06 03 7a ab ._...F.U..C...z. + 0x0020 06 08 9b 06 2d 06 38 06 2d 4a 92 04 44 06 03 e9 ....-.8.-J..D... + 0x0030 06 b4 03 b8 0c 64 04 02 06 03 d9 6c ab 06 74 06 .....d.....l..t. + 0x0040 55 06 02 fe 01 f6 06 55 06 08 2d 06 41 06 58 06 U......U..-.A.X. + 0x0050 55 06 08 91 06 41 06 03 7e 51 06 41 06 03 04 dc U....A..~Q.A.... + 0x0060 06 2d 04 44 06 03 e2 06 6e 04 02 03 98 79 3d 06 .-.D....n....y=. + 0x0070 5f 06 08 b9 06 41 06 02 1a ff 03 7e 15 04 01 03 _....A.....~.... + 0x0080 9c 7c 01 .|. +go.loc.type..eq.[2]interface {} SDWARFLOC dupok size=154 + 0x0000 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 ................ + 0x0010 48 00 00 00 00 00 00 00 55 00 00 00 00 00 00 00 H.......U....... + 0x0020 01 00 51 00 00 00 00 00 00 00 00 00 00 00 00 00 ..Q............. + 0x0030 00 00 00 ff ff ff ff ff ff ff ff 00 00 00 00 00 ................ + 0x0040 00 00 00 00 00 00 00 00 00 00 00 b3 00 00 00 00 ................ + 0x0050 00 00 00 01 00 9c 00 00 00 00 00 00 00 00 00 00 ................ + 0x0060 00 00 00 00 00 00 ff ff ff ff ff ff ff ff 00 00 ................ + 0x0070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 b3 00 ................ + 0x0080 00 00 00 00 00 00 02 00 91 08 00 00 00 00 00 00 ................ + 0x0090 00 00 00 00 00 00 00 00 00 00 .......... + rel 8+8 t=1 type..eq.[2]interface {}+0 + rel 59+8 t=1 type..eq.[2]interface {}+0 + rel 110+8 t=1 type..eq.[2]interface {}+0 +go.info.type..eq.[2]interface {} SDWARFINFO dupok size=100 + 0x0000 03 74 79 70 65 2e 2e 65 71 2e 5b 32 5d 69 6e 74 .type..eq.[2]int + 0x0010 65 72 66 61 63 65 20 7b 7d 00 00 00 00 00 00 00 erface {}....... + 0x0020 00 00 00 00 00 00 00 00 00 00 01 9c 00 00 00 00 ................ + 0x0030 01 0b 69 00 01 00 00 00 00 00 00 00 00 10 70 00 ..i...........p. + 0x0040 00 01 00 00 00 00 00 00 00 00 10 71 00 00 01 00 ...........q.... + 0x0050 00 00 00 00 00 00 00 0f 7e 72 32 00 01 01 00 00 ........~r2..... + 0x0060 00 00 00 00 .... + rel 0+0 t=24 type.*[2]interface {}+0 + rel 0+0 t=24 type.bool+0 + rel 0+0 t=24 type.int+0 + rel 26+8 t=1 type..eq.[2]interface {}+0 + rel 34+8 t=1 type..eq.[2]interface {}+179 + rel 44+4 t=30 gofile..+0 + rel 53+4 t=29 go.info.int+0 + rel 57+4 t=29 go.loc.type..eq.[2]interface {}+0 + rel 66+4 t=29 go.info.*[2]interface {}+0 + rel 70+4 t=29 go.loc.type..eq.[2]interface {}+51 + rel 79+4 t=29 go.info.*[2]interface {}+0 + rel 83+4 t=29 go.loc.type..eq.[2]interface {}+102 + rel 94+4 t=29 go.info.bool+0 +go.range.type..eq.[2]interface {} SDWARFRANGE dupok size=0 +go.debuglines.type..eq.[2]interface {} SDWARFMISC dupok size=29 + 0x0000 04 01 0f 0a cd 06 cd 06 08 73 06 37 06 02 27 ff .........s.7..'. + 0x0010 06 41 06 73 06 41 06 73 04 01 03 00 01 .A.s.A.s..... +type..eqfunc.[2]interface {} SRODATA dupok size=8 + 0x0000 00 00 00 00 00 00 00 00 ........ + rel 0+8 t=1 type..eq.[2]interface {}+0 +type..namedata.*[2]interface {}- SRODATA dupok size=19 + 0x0000 00 00 10 2a 5b 32 5d 69 6e 74 65 72 66 61 63 65 ...*[2]interface + 0x0010 20 7b 7d {} +type.*[2]interface {} SRODATA dupok size=56 + 0x0000 08 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ................ + 0x0010 be 73 2d 71 08 08 08 36 00 00 00 00 00 00 00 00 .s-q...6........ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 ........ + rel 24+8 t=1 runtime.memequal64·f+0 + rel 32+8 t=1 runtime.gcbits.01+0 + rel 40+4 t=5 type..namedata.*[2]interface {}-+0 + rel 48+8 t=1 type.[2]interface {}+0 +runtime.gcbits.0a SRODATA dupok size=1 + 0x0000 0a . +type.[2]interface {} SRODATA dupok size=72 + 0x0000 20 00 00 00 00 00 00 00 20 00 00 00 00 00 00 00 ....... ....... + 0x0010 2c 59 a4 f1 02 08 08 11 00 00 00 00 00 00 00 00 ,Y.............. + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0040 02 00 00 00 00 00 00 00 ........ + rel 24+8 t=1 type..eqfunc.[2]interface {}+0 + rel 32+8 t=1 runtime.gcbits.0a+0 + rel 40+4 t=5 type..namedata.*[2]interface {}-+0 + rel 44+4 t=6 type.*[2]interface {}+0 + rel 48+8 t=1 type.interface {}+0 + rel 56+8 t=1 type.[]interface {}+0 +runtime.memequal0·f SRODATA dupok size=8 + 0x0000 00 00 00 00 00 00 00 00 ........ + rel 0+8 t=1 runtime.memequal0+0 +type..namedata.*struct {}- SRODATA dupok size=13 + 0x0000 00 00 0a 2a 73 74 72 75 63 74 20 7b 7d ...*struct {} +type.*struct {} SRODATA dupok size=56 + 0x0000 08 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ................ + 0x0010 4a 24 a9 e5 08 08 08 36 00 00 00 00 00 00 00 00 J$.....6........ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 ........ + rel 24+8 t=1 runtime.memequal64·f+0 + rel 32+8 t=1 runtime.gcbits.01+0 + rel 40+4 t=5 type..namedata.*struct {}-+0 + rel 48+8 t=1 type.struct {}+0 +type.struct {} SRODATA dupok size=80 + 0x0000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0010 1b ac f6 27 0a 01 01 19 00 00 00 00 00 00 00 00 ...'............ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + rel 24+8 t=1 runtime.memequal0·f+0 + rel 32+8 t=1 runtime.gcbits.+0 + rel 40+4 t=5 type..namedata.*struct {}-+0 + rel 44+4 t=6 type.*struct {}+0 + rel 56+8 t=1 type.struct {}+80 +type..namedata.*[]struct {}- SRODATA dupok size=15 + 0x0000 00 00 0c 2a 5b 5d 73 74 72 75 63 74 20 7b 7d ...*[]struct {} +type.*[]struct {} SRODATA dupok size=56 + 0x0000 08 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ................ + 0x0010 d9 81 77 07 08 08 08 36 00 00 00 00 00 00 00 00 ..w....6........ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 ........ + rel 24+8 t=1 runtime.memequal64·f+0 + rel 32+8 t=1 runtime.gcbits.01+0 + rel 40+4 t=5 type..namedata.*[]struct {}-+0 + rel 48+8 t=1 type.[]struct {}+0 +type.[]struct {} SRODATA dupok size=56 + 0x0000 18 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ................ + 0x0010 ba cc a5 85 02 08 08 17 00 00 00 00 00 00 00 00 ................ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 ........ + rel 32+8 t=1 runtime.gcbits.01+0 + rel 40+4 t=5 type..namedata.*[]struct {}-+0 + rel 44+4 t=6 type.*[]struct {}+0 + rel 48+8 t=1 type.struct {}+0 +type..namedata.*[8]struct {}- SRODATA dupok size=16 + 0x0000 00 00 0d 2a 5b 38 5d 73 74 72 75 63 74 20 7b 7d ...*[8]struct {} +type.*[8]struct {} SRODATA dupok size=56 + 0x0000 08 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ................ + 0x0010 6b 41 e9 94 08 08 08 36 00 00 00 00 00 00 00 00 kA.....6........ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 ........ + rel 24+8 t=1 runtime.memequal64·f+0 + rel 32+8 t=1 runtime.gcbits.01+0 + rel 40+4 t=5 type..namedata.*[8]struct {}-+0 + rel 48+8 t=1 type.noalg.[8]struct {}+0 +type.noalg.[8]struct {} SRODATA dupok size=72 + 0x0000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0010 3e 83 79 20 02 01 01 11 00 00 00 00 00 00 00 00 >.y ............ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0040 08 00 00 00 00 00 00 00 ........ + rel 32+8 t=1 runtime.gcbits.+0 + rel 40+4 t=5 type..namedata.*[8]struct {}-+0 + rel 44+4 t=6 type.*[8]struct {}+0 + rel 48+8 t=1 type.struct {}+0 + rel 56+8 t=1 type.[]struct {}+0 +runtime.gcbits.aaaa02 SRODATA dupok size=3 + 0x0000 aa aa 02 ... +type..namedata.*map.bucket[string]struct {}- SRODATA dupok size=31 + 0x0000 00 00 1c 2a 6d 61 70 2e 62 75 63 6b 65 74 5b 73 ...*map.bucket[s + 0x0010 74 72 69 6e 67 5d 73 74 72 75 63 74 20 7b 7d tring]struct {} +type.noalg.map.bucket[string]struct {} SRODATA dupok size=176 + 0x0000 90 00 00 00 00 00 00 00 90 00 00 00 00 00 00 00 ................ + 0x0010 12 40 bb 87 02 08 08 19 00 00 00 00 00 00 00 00 .@.............. + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0040 04 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 ................ + 0x0050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0070 00 00 00 00 00 00 00 00 10 00 00 00 00 00 00 00 ................ + 0x0080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0090 10 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x00a0 00 00 00 00 00 00 00 00 10 01 00 00 00 00 00 00 ................ + rel 32+8 t=1 runtime.gcbits.aaaa02+0 + rel 40+4 t=5 type..namedata.*map.bucket[string]struct {}-+0 + rel 44+4 t=6 type.*map.bucket[string]struct {}+0 + rel 48+8 t=1 type..importpath..+0 + rel 56+8 t=1 type.noalg.map.bucket[string]struct {}+80 + rel 80+8 t=1 type..namedata.topbits-+0 + rel 88+8 t=1 type.[8]uint8+0 + rel 104+8 t=1 type..namedata.keys-+0 + rel 112+8 t=1 type.noalg.[8]string+0 + rel 128+8 t=1 type..namedata.elems-+0 + rel 136+8 t=1 type.noalg.[8]struct {}+0 + rel 152+8 t=1 type..namedata.overflow-+0 + rel 160+8 t=1 type.*map.bucket[string]struct {}+0 +type.*map.bucket[string]struct {} SRODATA dupok size=56 + 0x0000 08 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ................ + 0x0010 96 d2 02 01 08 08 08 36 00 00 00 00 00 00 00 00 .......6........ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 ........ + rel 24+8 t=1 runtime.memequal64·f+0 + rel 32+8 t=1 runtime.gcbits.01+0 + rel 40+4 t=5 type..namedata.*map.bucket[string]struct {}-+0 + rel 48+8 t=1 type.noalg.map.bucket[string]struct {}+0 +type..namedata.*map.hdr[string]struct {}- SRODATA dupok size=28 + 0x0000 00 00 19 2a 6d 61 70 2e 68 64 72 5b 73 74 72 69 ...*map.hdr[stri + 0x0010 6e 67 5d 73 74 72 75 63 74 20 7b 7d ng]struct {} +type.*map.hdr[string]struct {} SRODATA dupok size=56 + 0x0000 08 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ................ + 0x0010 12 72 4d 5e 08 08 08 36 00 00 00 00 00 00 00 00 .rM^...6........ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 ........ + rel 24+8 t=1 runtime.memequal64·f+0 + rel 32+8 t=1 runtime.gcbits.01+0 + rel 40+4 t=5 type..namedata.*map.hdr[string]struct {}-+0 + rel 48+8 t=1 type.noalg.map.hdr[string]struct {}+0 +runtime.gcbits.2c SRODATA dupok size=1 + 0x0000 2c , +type..namedata.count- SRODATA dupok size=8 + 0x0000 00 00 05 63 6f 75 6e 74 ...count +type..namedata.flags- SRODATA dupok size=8 + 0x0000 00 00 05 66 6c 61 67 73 ...flags +type..namedata.B. SRODATA dupok size=4 + 0x0000 01 00 01 42 ...B +type..namedata.noverflow- SRODATA dupok size=12 + 0x0000 00 00 09 6e 6f 76 65 72 66 6c 6f 77 ...noverflow +type..namedata.hash0- SRODATA dupok size=8 + 0x0000 00 00 05 68 61 73 68 30 ...hash0 +type..namedata.buckets- SRODATA dupok size=10 + 0x0000 00 00 07 62 75 63 6b 65 74 73 ...buckets +type..namedata.oldbuckets- SRODATA dupok size=13 + 0x0000 00 00 0a 6f 6c 64 62 75 63 6b 65 74 73 ...oldbuckets +type..namedata.nevacuate- SRODATA dupok size=12 + 0x0000 00 00 09 6e 65 76 61 63 75 61 74 65 ...nevacuate +type..namedata.extra- SRODATA dupok size=8 + 0x0000 00 00 05 65 78 74 72 61 ...extra +type.noalg.map.hdr[string]struct {} SRODATA dupok size=296 + 0x0000 30 00 00 00 00 00 00 00 30 00 00 00 00 00 00 00 0.......0....... + 0x0010 76 a4 d7 1c 02 08 08 19 00 00 00 00 00 00 00 00 v............... + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0040 09 00 00 00 00 00 00 00 09 00 00 00 00 00 00 00 ................ + 0x0050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0070 00 00 00 00 00 00 00 00 10 00 00 00 00 00 00 00 ................ + 0x0080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0090 12 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x00a0 00 00 00 00 00 00 00 00 14 00 00 00 00 00 00 00 ................ + 0x00b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x00c0 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x00d0 00 00 00 00 00 00 00 00 20 00 00 00 00 00 00 00 ........ ....... + 0x00e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x00f0 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0............... + 0x0100 00 00 00 00 00 00 00 00 40 00 00 00 00 00 00 00 ........@....... + 0x0110 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0120 50 00 00 00 00 00 00 00 P....... + rel 32+8 t=1 runtime.gcbits.2c+0 + rel 40+4 t=5 type..namedata.*map.hdr[string]struct {}-+0 + rel 44+4 t=6 type.*map.hdr[string]struct {}+0 + rel 48+8 t=1 type..importpath..+0 + rel 56+8 t=1 type.noalg.map.hdr[string]struct {}+80 + rel 80+8 t=1 type..namedata.count-+0 + rel 88+8 t=1 type.int+0 + rel 104+8 t=1 type..namedata.flags-+0 + rel 112+8 t=1 type.uint8+0 + rel 128+8 t=1 type..namedata.B.+0 + rel 136+8 t=1 type.uint8+0 + rel 152+8 t=1 type..namedata.noverflow-+0 + rel 160+8 t=1 type.uint16+0 + rel 176+8 t=1 type..namedata.hash0-+0 + rel 184+8 t=1 type.uint32+0 + rel 200+8 t=1 type..namedata.buckets-+0 + rel 208+8 t=1 type.*map.bucket[string]struct {}+0 + rel 224+8 t=1 type..namedata.oldbuckets-+0 + rel 232+8 t=1 type.*map.bucket[string]struct {}+0 + rel 248+8 t=1 type..namedata.nevacuate-+0 + rel 256+8 t=1 type.uintptr+0 + rel 272+8 t=1 type..namedata.extra-+0 + rel 280+8 t=1 type.unsafe.Pointer+0 +go.loc."".eventWithoutOptionsCheck SDWARFLOC size=177 + 0x0000 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 ................ + 0x0010 00 00 00 00 00 00 00 00 4f 01 00 00 00 00 00 00 ........O....... + 0x0020 07 00 9c 93 08 91 08 93 08 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 00 ff ff ff ff ff ff ff ................ + 0x0040 ff 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0050 00 4f 01 00 00 00 00 00 00 08 00 91 10 93 08 91 .O.............. + 0x0060 18 93 08 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0070 00 00 00 ff ff ff ff ff ff ff ff 00 00 00 00 00 ................ + 0x0080 00 00 00 00 00 00 00 00 00 00 00 4f 01 00 00 00 ...........O.... + 0x0090 00 00 00 0c 00 91 20 93 08 91 28 93 08 91 30 93 ...... ...(...0. + 0x00a0 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x00b0 00 . + rel 8+8 t=1 "".eventWithoutOptionsCheck+0 + rel 65+8 t=1 "".eventWithoutOptionsCheck+0 + rel 123+8 t=1 "".eventWithoutOptionsCheck+0 +go.info."".eventWithoutOptionsCheck SDWARFINFO size=104 + 0x0000 03 22 22 2e 65 76 65 6e 74 57 69 74 68 6f 75 74 ."".eventWithout + 0x0010 4f 70 74 69 6f 6e 73 43 68 65 63 6b 00 00 00 00 OptionsCheck.... + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 01 9c 00 ................ + 0x0030 00 00 00 01 10 63 74 78 00 00 f8 03 00 00 00 00 .....ctx........ + 0x0040 00 00 00 00 10 65 76 65 6e 74 00 00 f8 03 00 00 .....event...... + 0x0050 00 00 00 00 00 00 10 6f 70 74 73 00 00 f8 03 00 .......opts..... + 0x0060 00 00 00 00 00 00 00 00 ........ + rel 0+0 t=24 type."".EventData+0 + rel 0+0 t=24 type.[]"".option+0 + rel 0+0 t=24 type.context.Context+0 + rel 0+0 t=24 type.string+0 + rel 29+8 t=1 "".eventWithoutOptionsCheck+0 + rel 37+8 t=1 "".eventWithoutOptionsCheck+335 + rel 47+4 t=30 gofile../home/rhys/git_repos/log-assembler/main_assembler/main.go+0 + rel 60+4 t=29 go.info.context.Context+0 + rel 64+4 t=29 go.loc."".eventWithoutOptionsCheck+0 + rel 78+4 t=29 go.info.string+0 + rel 82+4 t=29 go.loc."".eventWithoutOptionsCheck+57 + rel 95+4 t=29 go.info.[]"".option+0 + rel 99+4 t=29 go.loc."".eventWithoutOptionsCheck+115 +go.range."".eventWithoutOptionsCheck SDWARFRANGE size=0 +go.debuglines."".eventWithoutOptionsCheck SDWARFMISC size=24 + 0x0000 04 02 03 f2 03 14 0a 08 2d f7 06 5f 06 02 e4 01 ........-.._.... + 0x0010 f7 ab 04 01 03 89 7c 01 ......|. +go.string."request-id" SRODATA dupok size=10 + 0x0000 72 65 71 75 65 73 74 2d 69 64 request-id +go.loc."".createEvent SDWARFLOC size=1005 + 0x0000 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 ................ + 0x0010 00 00 00 00 00 00 00 00 4e 00 00 00 00 00 00 00 ........N....... + 0x0020 01 00 50 4e 00 00 00 00 00 00 00 ec 04 00 00 00 ..PN............ + 0x0030 00 00 00 03 00 91 d0 7e 00 00 00 00 00 00 00 00 .......~........ + 0x0040 00 00 00 00 00 00 00 00 ff ff ff ff ff ff ff ff ................ + 0x0050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0060 ec 04 00 00 00 00 00 00 07 00 9c 93 08 91 08 93 ................ + 0x0070 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0080 00 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 ................ + 0x0090 00 00 00 00 00 00 00 00 00 ec 04 00 00 00 00 00 ................ + 0x00a0 00 08 00 91 10 93 08 91 18 93 08 00 00 00 00 00 ................ + 0x00b0 00 00 00 00 00 00 00 00 00 00 00 ff ff ff ff ff ................ + 0x00c0 ff ff ff 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x00d0 00 00 00 ec 04 00 00 00 00 00 00 08 00 91 20 93 .............. . + 0x00e0 08 91 28 93 08 00 00 00 00 00 00 00 00 00 00 00 ..(............. + 0x00f0 00 00 00 00 00 ff ff ff ff ff ff ff ff 00 00 00 ................ + 0x0100 00 00 00 00 00 7a 01 00 00 00 00 00 00 7d 01 00 .....z.......}.. + 0x0110 00 00 00 00 00 05 00 93 08 54 93 08 7d 01 00 00 .........T..}... + 0x0120 00 00 00 00 c0 01 00 00 00 00 00 00 06 00 58 93 ..............X. + 0x0130 08 54 93 08 c0 01 00 00 00 00 00 00 cf 01 00 00 .T.............. + 0x0140 00 00 00 00 0a 00 91 b0 7e 93 08 91 c0 7e 93 08 ........~....~.. + 0x0150 f7 01 00 00 00 00 00 00 2d 04 00 00 00 00 00 00 ........-....... + 0x0160 0a 00 91 b0 7e 93 08 91 c0 7e 93 08 2d 04 00 00 ....~....~..-... + 0x0170 00 00 00 00 3e 04 00 00 00 00 00 00 06 00 58 93 ....>.........X. + 0x0180 08 54 93 08 00 00 00 00 00 00 00 00 00 00 00 00 .T.............. + 0x0190 00 00 00 00 ff ff ff ff ff ff ff ff 00 00 00 00 ................ + 0x01a0 00 00 00 00 32 02 00 00 00 00 00 00 67 02 00 00 ....2.......g... + 0x01b0 00 00 00 00 01 00 50 00 00 00 00 00 00 00 00 00 ......P......... + 0x01c0 00 00 00 00 00 00 00 ff ff ff ff ff ff ff ff 00 ................ + 0x01d0 00 00 00 00 00 00 00 85 03 00 00 00 00 00 00 ae ................ + 0x01e0 03 00 00 00 00 00 00 01 00 50 00 00 00 00 00 00 .........P...... + 0x01f0 00 00 00 00 00 00 00 00 00 00 ff ff ff ff ff ff ................ + 0x0200 ff ff 00 00 00 00 00 00 00 00 c8 02 00 00 00 00 ................ + 0x0210 00 00 f7 02 00 00 00 00 00 00 01 00 54 00 00 00 ............T... + 0x0220 00 00 00 00 00 00 00 00 00 00 00 00 00 ff ff ff ................ + 0x0230 ff ff ff ff ff 00 00 00 00 00 00 00 00 28 03 00 .............(.. + 0x0240 00 00 00 00 00 57 03 00 00 00 00 00 00 01 00 54 .....W.........T + 0x0250 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0260 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 ................ + 0x0270 c0 01 00 00 00 00 00 00 cf 01 00 00 00 00 00 00 ................ + 0x0280 01 00 54 f7 01 00 00 00 00 00 00 09 02 00 00 00 ..T............. + 0x0290 00 00 00 01 00 54 00 00 00 00 00 00 00 00 00 00 .....T.......... + 0x02a0 00 00 00 00 00 00 ff ff ff ff ff ff ff ff 00 00 ................ + 0x02b0 00 00 00 00 00 00 61 00 00 00 00 00 00 00 ec 04 ......a......... + 0x02c0 00 00 00 00 00 00 03 00 91 d8 7e 00 00 00 00 00 ..........~..... + 0x02d0 00 00 00 00 00 00 00 00 00 00 00 ff ff ff ff ff ................ + 0x02e0 ff ff ff 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x02f0 00 00 00 ec 04 00 00 00 00 00 00 07 00 9c 93 08 ................ + 0x0300 91 08 93 08 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0310 00 00 00 00 ff ff ff ff ff ff ff ff 00 00 00 00 ................ + 0x0320 00 00 00 00 63 01 00 00 00 00 00 00 6f 01 00 00 ....c.......o... + 0x0330 00 00 00 00 05 00 93 08 52 93 08 b4 01 00 00 00 ........R....... + 0x0340 00 00 00 cf 01 00 00 00 00 00 00 05 00 93 08 52 ...............R + 0x0350 93 08 f7 01 00 00 00 00 00 00 14 02 00 00 00 00 ................ + 0x0360 00 00 05 00 93 08 52 93 08 d3 02 00 00 00 00 00 ......R......... + 0x0370 00 f7 02 00 00 00 00 00 00 05 00 93 08 52 93 08 .............R.. + 0x0380 08 03 00 00 00 00 00 00 57 03 00 00 00 00 00 00 ........W....... + 0x0390 05 00 93 08 52 93 08 65 03 00 00 00 00 00 00 80 ....R..e........ + 0x03a0 03 00 00 00 00 00 00 05 00 93 08 52 93 08 3e 04 ...........R..>. + 0x03b0 00 00 00 00 00 00 4f 04 00 00 00 00 00 00 05 00 ......O......... + 0x03c0 93 08 52 93 08 87 04 00 00 00 00 00 00 b3 04 00 ..R............. + 0x03d0 00 00 00 00 00 06 00 51 93 08 52 93 08 00 00 00 .......Q..R..... + 0x03e0 00 00 00 00 00 00 00 00 00 00 00 00 00 ............. + rel 8+8 t=1 "".createEvent+0 + rel 80+8 t=1 "".createEvent+0 + rel 137+8 t=1 "".createEvent+0 + rel 195+8 t=1 "".createEvent+0 + rel 253+8 t=1 "".createEvent+0 + rel 412+8 t=1 "".createEvent+0 + rel 463+8 t=1 "".createEvent+0 + rel 514+8 t=1 "".createEvent+0 + rel 565+8 t=1 "".createEvent+0 + rel 616+8 t=1 "".createEvent+0 + rel 686+8 t=1 "".createEvent+0 + rel 739+8 t=1 "".createEvent+0 + rel 796+8 t=1 "".createEvent+0 +go.info."".createEvent SDWARFINFO size=365 + 0x0000 03 22 22 2e 63 72 65 61 74 65 45 76 65 6e 74 00 ."".createEvent. + 0x0010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0020 01 9c 00 00 00 00 01 0b 26 65 00 80 04 00 00 00 ........&e...... + 0x0030 00 00 00 00 00 10 63 74 78 00 00 ff 03 00 00 00 ......ctx....... + 0x0040 00 00 00 00 00 10 65 76 65 6e 74 00 00 ff 03 00 ......event..... + 0x0050 00 00 00 00 00 00 00 10 6f 70 74 73 00 00 ff 03 ........opts.... + 0x0060 00 00 00 00 00 00 00 00 0f 7e 72 33 00 01 ff 03 .........~r3.... + 0x0070 00 00 00 00 00 14 00 00 00 00 0b 6f 00 8c 04 00 ...........o.... + 0x0080 00 00 00 00 00 00 00 14 00 00 00 00 0b 26 76 00 .............&v. + 0x0090 8f 04 00 00 00 00 00 00 00 00 00 14 00 00 00 00 ................ + 0x00a0 0b 26 76 00 91 04 00 00 00 00 00 00 00 00 00 14 .&v............. + 0x00b0 00 00 00 00 0b 76 00 93 04 00 00 00 00 00 00 00 .....v.......... + 0x00c0 00 00 14 00 00 00 00 0b 76 00 95 04 00 00 00 00 ........v....... + 0x00d0 00 00 00 00 00 14 00 00 00 00 0b 76 00 97 04 00 ...........v.... + 0x00e0 00 00 00 00 00 00 00 00 00 06 00 00 00 00 00 00 ................ + 0x00f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0100 00 00 81 04 13 00 00 00 00 00 00 00 00 07 00 00 ................ + 0x0110 00 00 00 00 00 00 00 00 00 00 d5 08 07 00 00 00 ................ + 0x0120 00 00 00 00 00 00 00 00 00 c9 01 06 00 00 00 00 ................ + 0x0130 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0140 00 00 00 00 d0 01 00 00 00 00 07 00 00 00 00 00 ................ + 0x0150 00 00 00 00 00 00 00 87 04 13 00 00 00 00 00 00 ................ + 0x0160 00 00 0e 00 00 00 00 00 00 00 00 00 00 ............. + rel 0+0 t=24 type.uintptr+0 + rel 0+0 t=24 type.*"".EventData+0 + rel 0+0 t=24 type.*"".option+0 + rel 0+0 t=24 type.*uint8+0 + rel 0+0 t=24 type.[]"".option+0 + rel 0+0 t=24 type.context.Context+0 + rel 0+0 t=24 type.int+0 + rel 0+0 t=24 type.string+0 + rel 0+0 t=24 type.time.Time+0 + rel 0+0 t=24 type."".EventData+0 + rel 16+8 t=1 "".createEvent+0 + rel 24+8 t=1 "".createEvent+1260 + rel 34+4 t=30 gofile../home/rhys/git_repos/log-assembler/main_assembler/main.go+0 + rel 45+4 t=29 go.info.*"".EventData+0 + rel 49+4 t=29 go.loc."".createEvent+0 + rel 61+4 t=29 go.info.context.Context+0 + rel 65+4 t=29 go.loc."".createEvent+72 + rel 79+4 t=29 go.info.string+0 + rel 83+4 t=29 go.loc."".createEvent+129 + rel 96+4 t=29 go.info.[]"".option+0 + rel 100+4 t=29 go.loc."".createEvent+187 + rel 112+4 t=29 go.info.*"".EventData+0 + rel 118+4 t=29 go.range."".createEvent+0 + rel 127+4 t=29 go.info."".option+0 + rel 131+4 t=29 go.loc."".createEvent+245 + rel 136+4 t=29 go.range."".createEvent+80 + rel 146+4 t=29 go.info.*"".severity+0 + rel 150+4 t=29 go.loc."".createEvent+404 + rel 156+4 t=29 go.range."".createEvent+144 + rel 166+4 t=29 go.info.*"".Data+0 + rel 170+4 t=29 go.loc."".createEvent+455 + rel 176+4 t=29 go.range."".createEvent+224 + rel 185+4 t=29 go.info.*"".EventHTTP+0 + rel 189+4 t=29 go.loc."".createEvent+506 + rel 195+4 t=29 go.range."".createEvent+320 + rel 204+4 t=29 go.info.*"".EventError+0 + rel 208+4 t=29 go.loc."".createEvent+557 + rel 214+4 t=29 go.range."".createEvent+416 + rel 223+4 t=29 go.info.*"".eventAuth+0 + rel 227+4 t=29 go.loc."".createEvent+608 + rel 234+4 t=29 go.info.time.Time.UTC$abstract+0 + rel 238+8 t=1 "".createEvent+107 + rel 246+8 t=1 "".createEvent+108 + rel 254+4 t=30 gofile../home/rhys/git_repos/log-assembler/main_assembler/main.go+0 + rel 261+4 t=29 go.info.time.Time.UTC$abstract+17 + rel 265+4 t=29 go.loc."".createEvent+678 + rel 270+4 t=29 go.info.time.(*Time).setLoc$abstract+0 + rel 274+4 t=29 go.range."".createEvent+544 + rel 278+4 t=30 gofile..$GOROOT/src/time/time.go+0 + rel 285+4 t=29 go.info.time.(*Time).stripMono$abstract+0 + rel 289+4 t=29 go.range."".createEvent+608 + rel 293+4 t=30 gofile..$GOROOT/src/time/time.go+0 + rel 300+4 t=29 go.info.time.(*Time).sec$abstract+0 + rel 304+8 t=1 "".createEvent+116 + rel 312+8 t=1 "".createEvent+139 + rel 320+4 t=30 gofile..$GOROOT/src/time/time.go+0 + rel 331+4 t=29 go.info.github.com/ONSdigital/go-ns/common.GetRequestId$abstract+0 + rel 335+4 t=29 go.range."".createEvent+672 + rel 339+4 t=30 gofile../home/rhys/git_repos/log-assembler/main_assembler/main.go+0 + rel 346+4 t=29 go.info.github.com/ONSdigital/go-ns/common.GetRequestId$abstract+51 + rel 350+4 t=29 go.loc."".createEvent+731 + rel 355+4 t=29 go.info.github.com/ONSdigital/go-ns/common.GetRequestId$abstract+61 + rel 359+4 t=29 go.loc."".createEvent+788 +go.range."".createEvent SDWARFRANGE size=736 + 0x0000 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 ................ + 0x0010 4d 01 00 00 00 00 00 00 d8 01 00 00 00 00 00 00 M............... + 0x0020 f0 01 00 00 00 00 00 00 39 04 00 00 00 00 00 00 ........9....... + 0x0030 3e 04 00 00 00 00 00 00 43 04 00 00 00 00 00 00 >.......C....... + 0x0040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0050 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 ................ + 0x0060 50 02 00 00 00 00 00 00 62 02 00 00 00 00 00 00 P.......b....... + 0x0070 80 02 00 00 00 00 00 00 90 02 00 00 00 00 00 00 ................ + 0x0080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0090 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 ................ + 0x00a0 b0 03 00 00 00 00 00 00 c2 03 00 00 00 00 00 00 ................ + 0x00b0 e0 03 00 00 00 00 00 00 f0 03 00 00 00 00 00 00 ................ + 0x00c0 21 04 00 00 00 00 00 00 24 04 00 00 00 00 00 00 !.......$....... + 0x00d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x00e0 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 ................ + 0x00f0 ca 02 00 00 00 00 00 00 de 02 00 00 00 00 00 00 ................ + 0x0100 e3 02 00 00 00 00 00 00 e7 02 00 00 00 00 00 00 ................ + 0x0110 ea 02 00 00 00 00 00 00 f2 02 00 00 00 00 00 00 ................ + 0x0120 f5 02 00 00 00 00 00 00 f7 02 00 00 00 00 00 00 ................ + 0x0130 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0140 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 ................ + 0x0150 2a 03 00 00 00 00 00 00 3e 03 00 00 00 00 00 00 *.......>....... + 0x0160 43 03 00 00 00 00 00 00 47 03 00 00 00 00 00 00 C.......G....... + 0x0170 4a 03 00 00 00 00 00 00 52 03 00 00 00 00 00 00 J.......R....... + 0x0180 55 03 00 00 00 00 00 00 57 03 00 00 00 00 00 00 U.......W....... + 0x0190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x01a0 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 ................ + 0x01b0 c2 01 00 00 00 00 00 00 cf 01 00 00 00 00 00 00 ................ + 0x01c0 f0 01 00 00 00 00 00 00 f4 01 00 00 00 00 00 00 ................ + 0x01d0 f7 01 00 00 00 00 00 00 ff 01 00 00 00 00 00 00 ................ + 0x01e0 02 02 00 00 00 00 00 00 09 02 00 00 00 00 00 00 ................ + 0x01f0 9d 02 00 00 00 00 00 00 a2 02 00 00 00 00 00 00 ................ + 0x0200 fd 03 00 00 00 00 00 00 02 04 00 00 00 00 00 00 ................ + 0x0210 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0220 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 ................ + 0x0230 6c 00 00 00 00 00 00 00 6d 00 00 00 00 00 00 00 l.......m....... + 0x0240 9c 00 00 00 00 00 00 00 a5 00 00 00 00 00 00 00 ................ + 0x0250 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0260 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 ................ + 0x0270 6d 00 00 00 00 00 00 00 74 00 00 00 00 00 00 00 m.......t....... + 0x0280 8b 00 00 00 00 00 00 00 9c 00 00 00 00 00 00 00 ................ + 0x0290 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x02a0 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 ................ + 0x02b0 43 04 00 00 00 00 00 00 87 04 00 00 00 00 00 00 C............... + 0x02c0 b7 04 00 00 00 00 00 00 b9 04 00 00 00 00 00 00 ................ + 0x02d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + rel 8+8 t=1 "".createEvent+0 + rel 88+8 t=1 "".createEvent+0 + rel 152+8 t=1 "".createEvent+0 + rel 232+8 t=1 "".createEvent+0 + rel 328+8 t=1 "".createEvent+0 + rel 424+8 t=1 "".createEvent+0 + rel 552+8 t=1 "".createEvent+0 + rel 616+8 t=1 "".createEvent+0 + rel 680+8 t=1 "".createEvent+0 +go.debuglines."".createEvent SDWARFMISC size=364 + 0x0000 04 02 03 f9 03 14 0a ff f6 06 55 06 ce 06 41 04 ..........U...A. + 0x0010 03 06 08 03 cf 04 46 03 f8 78 15 03 01 1e 06 41 ......F..x.....A + 0x0020 06 03 5f 1f 06 2d 06 03 21 dc 42 06 55 06 03 7d .._..-..!.B.U..} + 0x0030 3d 04 02 03 b2 02 6e 06 41 06 40 06 41 06 ec 06 =.....n.A.@.A... + 0x0040 41 06 42 06 55 06 f6 06 5f 06 fc 06 55 06 4b 06 A.B.U..._...U.K. + 0x0050 41 06 03 06 ff 06 5f 06 03 01 6e 06 5f 06 08 69 A....._...n._..i + 0x0060 06 37 06 2f 06 2d 49 d9 06 08 03 05 b4 06 55 06 .7./.-I.......U. + 0x0070 23 03 78 33 06 37 06 03 0e 46 06 5f 06 03 7d ab #.x3.7...F._..}. + 0x0080 06 03 78 33 06 03 07 32 06 2d 03 78 3d 06 03 07 ..x3...2.-.x=... + 0x0090 32 06 23 03 7a 3d 7b 06 57 06 23 06 02 1c f7 06 2.#.z={.W.#..... + 0x00a0 55 06 23 06 41 33 06 08 1b 43 06 41 79 03 07 96 U.#.A3...C.Ay... + 0x00b0 03 78 3d 06 43 06 41 06 08 03 01 50 06 55 06 23 .x=.C.A....P.U.# + 0x00c0 06 37 06 03 7e 51 03 01 46 06 03 7c 33 06 03 03 .7..~Q..F..|3... + 0x00d0 32 06 2d 03 7c 3d 06 03 03 32 06 03 7c 1f 06 57 2.-.|=...2..|..W + 0x00e0 06 41 06 08 03 03 aa 06 55 06 23 06 37 06 03 7c .A......U.#.7..| + 0x00f0 51 03 03 46 06 03 7a 33 06 03 05 32 06 2d 03 7a Q..F..z3...2.-.z + 0x0100 3d 06 03 05 32 06 03 7a 1f 06 57 06 23 06 02 39 =...2..z..W.#..9 + 0x0110 f9 06 55 06 23 06 41 03 7e 33 06 08 1b 45 06 41 ..U.#.A.~3...E.A + 0x0120 03 7e 79 03 07 96 03 78 3d 06 89 06 41 9f 29 06 .~y....x=...A.). + 0x0130 69 06 55 03 0c 46 03 71 3d 04 50 06 03 8a 7d 3d i.U..F.q=.P...}= + 0x0140 06 37 04 02 06 02 29 03 f0 02 fa 06 41 06 eb 06 .7....).....A... + 0x0150 37 04 50 03 8f 7d b5 04 02 06 03 e9 02 28 06 55 7.P..}.......(.U + 0x0160 06 ff 06 41 06 40 04 01 03 82 7c 01 ...A.@....|. +go.string."%+v" SRODATA dupok size=3 + 0x0000 25 2b 76 %+v +go.string."event_data" SRODATA dupok size=10 + 0x0000 65 76 65 6e 74 5f 64 61 74 61 event_data +go.string."error marshalling event data" SRODATA dupok size=28 + 0x0000 65 72 72 6f 72 20 6d 61 72 73 68 61 6c 6c 69 6e error marshallin + 0x0010 67 20 65 76 65 6e 74 20 64 61 74 61 g event data +go.string."error marshalling event data: " SRODATA dupok size=30 + 0x0000 65 72 72 6f 72 20 6d 61 72 73 68 61 6c 6c 69 6e error marshallin + 0x0010 67 20 65 76 65 6e 74 20 64 61 74 61 3a 20 g event data: +go.loc."".handleStyleError SDWARFLOC size=235 + 0x0000 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 ................ + 0x0010 00 00 00 00 00 00 00 00 d1 03 00 00 00 00 00 00 ................ + 0x0020 07 00 9c 93 08 91 08 93 08 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 00 ff ff ff ff ff ff ff ................ + 0x0040 ff 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0050 00 d1 03 00 00 00 00 00 00 03 00 91 90 01 00 00 ................ + 0x0060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ff ff ................ + 0x0070 ff ff ff ff ff ff 00 00 00 00 00 00 00 00 00 00 ................ + 0x0080 00 00 00 00 00 00 d1 03 00 00 00 00 00 00 0f 00 ................ + 0x0090 91 98 01 93 08 91 a0 01 93 08 91 a8 01 93 08 00 ................ + 0x00a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ff ................ + 0x00b0 ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 00 ................ + 0x00c0 00 00 00 00 00 00 00 d1 03 00 00 00 00 00 00 0a ................ + 0x00d0 00 91 b0 01 93 08 91 b8 01 93 08 00 00 00 00 00 ................ + 0x00e0 00 00 00 00 00 00 00 00 00 00 00 ........... + rel 8+8 t=1 "".handleStyleError+0 + rel 65+8 t=1 "".handleStyleError+0 + rel 118+8 t=1 "".handleStyleError+0 + rel 183+8 t=1 "".handleStyleError+0 +go.info."".handleStyleError SDWARFINFO size=132 + 0x0000 03 22 22 2e 68 61 6e 64 6c 65 53 74 79 6c 65 45 ."".handleStyleE + 0x0010 72 72 6f 72 00 00 00 00 00 00 00 00 00 00 00 00 rror............ + 0x0020 00 00 00 00 00 01 9c 00 00 00 00 01 10 63 74 78 .............ctx + 0x0030 00 00 a3 04 00 00 00 00 00 00 00 00 0f 65 00 00 .............e.. + 0x0040 a3 04 00 00 00 00 02 91 10 10 65 66 00 00 a3 04 ..........ef.... + 0x0050 00 00 00 00 00 00 00 00 10 62 00 00 a3 04 00 00 .........b...... + 0x0060 00 00 00 00 00 00 10 65 72 72 00 00 a3 04 00 00 .......err...... + 0x0070 00 00 00 00 00 00 0f 7e 72 35 00 01 a3 04 00 00 .......~r5...... + 0x0080 00 00 00 00 .... + rel 0+0 t=24 type."".Data+0 + rel 0+0 t=24 type."".EventData+0 + rel 0+0 t=24 type."".eventFunc+0 + rel 0+0 t=24 type.*uint8+0 + rel 0+0 t=24 type.[1]interface {}+0 + rel 0+0 t=24 type.[]uint8+0 + rel 0+0 t=24 type.context.Context+0 + rel 0+0 t=24 type.error+0 + rel 0+0 t=24 type.uintptr+0 + rel 0+0 t=24 type.unsafe.Pointer+0 + rel 21+8 t=1 "".handleStyleError+0 + rel 29+8 t=1 "".handleStyleError+977 + rel 39+4 t=30 gofile../home/rhys/git_repos/log-assembler/main_assembler/main.go+0 + rel 52+4 t=29 go.info.context.Context+0 + rel 56+4 t=29 go.loc."".handleStyleError+0 + rel 66+4 t=29 go.info."".EventData+0 + rel 80+4 t=29 go.info."".eventFunc+0 + rel 84+4 t=29 go.loc."".handleStyleError+57 + rel 94+4 t=29 go.info.[]uint8+0 + rel 98+4 t=29 go.loc."".handleStyleError+110 + rel 110+4 t=29 go.info.error+0 + rel 114+4 t=29 go.loc."".handleStyleError+175 + rel 126+4 t=29 go.info.[]uint8+0 +go.range."".handleStyleError SDWARFRANGE size=0 +go.debuglines."".handleStyleError SDWARFMISC size=68 + 0x0000 04 02 03 9d 04 14 0a ff f6 06 5f 06 03 13 46 06 .........._...F. + 0x0010 5f 06 02 20 03 78 fb 06 37 06 91 06 41 06 02 b2 _.. .x..7...A... + 0x0020 03 f8 06 55 06 03 01 28 06 55 08 03 7b 79 06 02 ...U...(.U..{y.. + 0x0030 2e 03 01 fa 06 41 06 02 d6 01 ff 03 71 15 04 01 .....A......q... + 0x0040 03 de 7b 01 ..{. +go.loc."".styleForMachine SDWARFLOC size=299 + 0x0000 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 ................ + 0x0010 00 00 00 00 00 00 00 00 94 00 00 00 00 00 00 00 ................ + 0x0020 07 00 50 93 08 93 08 93 08 94 00 00 00 00 00 00 ..P............. + 0x0030 00 99 00 00 00 00 00 00 00 08 00 50 93 08 52 93 ...........P..R. + 0x0040 08 93 08 99 00 00 00 00 00 00 00 19 01 00 00 00 ................ + 0x0050 00 00 00 09 00 50 93 08 52 93 08 51 93 08 00 00 .....P..R..Q.... + 0x0060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ff ff ................ + 0x0070 ff ff ff ff ff ff 00 00 00 00 00 00 00 00 9e 00 ................ + 0x0080 00 00 00 00 00 00 a3 00 00 00 00 00 00 00 05 00 ................ + 0x0090 53 93 08 93 08 a3 00 00 00 00 00 00 00 19 01 00 S............... + 0x00a0 00 00 00 00 00 06 00 53 93 08 58 93 08 00 00 00 .......S..X..... + 0x00b0 00 00 00 00 00 00 00 00 00 00 00 00 00 ff ff ff ................ + 0x00c0 ff ff ff ff ff 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x00d0 00 00 00 00 00 63 01 00 00 00 00 00 00 07 00 9c .....c.......... + 0x00e0 93 08 91 08 93 08 00 00 00 00 00 00 00 00 00 00 ................ + 0x00f0 00 00 00 00 00 00 ff ff ff ff ff ff ff ff 00 00 ................ + 0x0100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 63 01 ..............c. + 0x0110 00 00 00 00 00 00 03 00 91 90 01 00 00 00 00 00 ................ + 0x0120 00 00 00 00 00 00 00 00 00 00 00 ........... + rel 8+8 t=1 "".styleForMachine+0 + rel 118+8 t=1 "".styleForMachine+0 + rel 197+8 t=1 "".styleForMachine+0 + rel 254+8 t=1 "".styleForMachine+0 +go.info."".styleForMachine SDWARFINFO size=129 + 0x0000 03 22 22 2e 73 74 79 6c 65 46 6f 72 4d 61 63 68 ."".styleForMach + 0x0010 69 6e 65 00 00 00 00 00 00 00 00 00 00 00 00 00 ine............. + 0x0020 00 00 00 00 01 9c 00 00 00 00 01 0b 62 00 c1 04 ............b... + 0x0030 00 00 00 00 00 00 00 00 0b 65 72 72 00 c1 04 00 .........err.... + 0x0040 00 00 00 00 00 00 00 10 63 74 78 00 00 c0 04 00 ........ctx..... + 0x0050 00 00 00 00 00 00 00 0f 65 00 00 c0 04 00 00 00 ........e....... + 0x0060 00 02 91 10 10 65 66 00 00 c0 04 00 00 00 00 00 .....ef......... + 0x0070 00 00 00 0f 7e 72 33 00 01 c0 04 00 00 00 00 00 ....~r3......... + 0x0080 00 . + rel 0+0 t=24 type."".EventData+0 + rel 0+0 t=24 type."".eventFunc+0 + rel 0+0 t=24 type.[]uint8+0 + rel 0+0 t=24 type.context.Context+0 + rel 20+8 t=1 "".styleForMachine+0 + rel 28+8 t=1 "".styleForMachine+355 + rel 38+4 t=30 gofile../home/rhys/git_repos/log-assembler/main_assembler/main.go+0 + rel 48+4 t=29 go.info.[]uint8+0 + rel 52+4 t=29 go.loc."".styleForMachine+0 + rel 63+4 t=29 go.info.error+0 + rel 67+4 t=29 go.loc."".styleForMachine+110 + rel 79+4 t=29 go.info.context.Context+0 + rel 83+4 t=29 go.loc."".styleForMachine+189 + rel 93+4 t=29 go.info."".EventData+0 + rel 107+4 t=29 go.info."".eventFunc+0 + rel 111+4 t=29 go.loc."".styleForMachine+246 + rel 123+4 t=29 go.info.[]uint8+0 +go.range."".styleForMachine SDWARFRANGE size=0 +go.debuglines."".styleForMachine SDWARFMISC size=29 + 0x0000 04 02 03 ba 04 14 0a 08 2d f6 06 5f 06 02 52 f7 ........-.._..R. + 0x0010 06 5f 06 02 96 01 fc 04 01 03 c1 7b 01 ._.........{. +go.loc."".styleForHuman SDWARFLOC size=299 + 0x0000 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 ................ + 0x0010 00 00 00 00 00 00 00 00 94 00 00 00 00 00 00 00 ................ + 0x0020 07 00 50 93 08 93 08 93 08 94 00 00 00 00 00 00 ..P............. + 0x0030 00 99 00 00 00 00 00 00 00 08 00 50 93 08 52 93 ...........P..R. + 0x0040 08 93 08 99 00 00 00 00 00 00 00 19 01 00 00 00 ................ + 0x0050 00 00 00 09 00 50 93 08 52 93 08 51 93 08 00 00 .....P..R..Q.... + 0x0060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ff ff ................ + 0x0070 ff ff ff ff ff ff 00 00 00 00 00 00 00 00 9e 00 ................ + 0x0080 00 00 00 00 00 00 a3 00 00 00 00 00 00 00 05 00 ................ + 0x0090 53 93 08 93 08 a3 00 00 00 00 00 00 00 19 01 00 S............... + 0x00a0 00 00 00 00 00 06 00 53 93 08 58 93 08 00 00 00 .......S..X..... + 0x00b0 00 00 00 00 00 00 00 00 00 00 00 00 00 ff ff ff ................ + 0x00c0 ff ff ff ff ff 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x00d0 00 00 00 00 00 63 01 00 00 00 00 00 00 07 00 9c .....c.......... + 0x00e0 93 08 91 08 93 08 00 00 00 00 00 00 00 00 00 00 ................ + 0x00f0 00 00 00 00 00 00 ff ff ff ff ff ff ff ff 00 00 ................ + 0x0100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 63 01 ..............c. + 0x0110 00 00 00 00 00 00 03 00 91 90 01 00 00 00 00 00 ................ + 0x0120 00 00 00 00 00 00 00 00 00 00 00 ........... + rel 8+8 t=1 "".styleForHuman+0 + rel 118+8 t=1 "".styleForHuman+0 + rel 197+8 t=1 "".styleForHuman+0 + rel 254+8 t=1 "".styleForHuman+0 +go.info."".styleForHuman SDWARFINFO size=127 + 0x0000 03 22 22 2e 73 74 79 6c 65 46 6f 72 48 75 6d 61 ."".styleForHuma + 0x0010 6e 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 n............... + 0x0020 00 00 01 9c 00 00 00 00 01 0b 62 00 c8 04 00 00 ..........b..... + 0x0030 00 00 00 00 00 00 0b 65 72 72 00 c8 04 00 00 00 .......err...... + 0x0040 00 00 00 00 00 10 63 74 78 00 00 c7 04 00 00 00 ......ctx....... + 0x0050 00 00 00 00 00 0f 65 00 00 c7 04 00 00 00 00 02 ......e......... + 0x0060 91 10 10 65 66 00 00 c7 04 00 00 00 00 00 00 00 ...ef........... + 0x0070 00 0f 7e 72 33 00 01 c7 04 00 00 00 00 00 00 ..~r3.......... + rel 0+0 t=24 type."".EventData+0 + rel 0+0 t=24 type."".eventFunc+0 + rel 0+0 t=24 type.[]uint8+0 + rel 0+0 t=24 type.context.Context+0 + rel 18+8 t=1 "".styleForHuman+0 + rel 26+8 t=1 "".styleForHuman+355 + rel 36+4 t=30 gofile../home/rhys/git_repos/log-assembler/main_assembler/main.go+0 + rel 46+4 t=29 go.info.[]uint8+0 + rel 50+4 t=29 go.loc."".styleForHuman+0 + rel 61+4 t=29 go.info.error+0 + rel 65+4 t=29 go.loc."".styleForHuman+110 + rel 77+4 t=29 go.info.context.Context+0 + rel 81+4 t=29 go.loc."".styleForHuman+189 + rel 91+4 t=29 go.info."".EventData+0 + rel 105+4 t=29 go.info."".eventFunc+0 + rel 109+4 t=29 go.loc."".styleForHuman+246 + rel 121+4 t=29 go.info.[]uint8+0 +go.range."".styleForHuman SDWARFRANGE size=0 +go.debuglines."".styleForHuman SDWARFMISC size=29 + 0x0000 04 02 03 c1 04 14 0a 08 2d f6 06 5f 06 02 52 f7 ........-.._..R. + 0x0010 06 5f 06 02 96 01 fc 04 01 03 ba 7b 01 ._.........{. +go.string."error writing log data: " SRODATA dupok size=24 + 0x0000 65 72 72 6f 72 20 77 72 69 74 69 6e 67 20 6c 6f error writing lo + 0x0010 67 20 64 61 74 61 3a 20 g data: +go.loc."".print SDWARFLOC size=163 + 0x0000 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 ................ + 0x0010 00 00 00 00 00 00 00 00 73 02 00 00 00 00 00 00 ........s....... + 0x0020 0b 00 9c 93 08 91 08 93 08 91 10 93 08 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 00 00 00 00 00 ff ff ff ................ + 0x0040 ff ff ff ff ff 00 00 00 00 00 00 00 00 b3 01 00 ................ + 0x0050 00 00 00 00 00 b8 01 00 00 00 00 00 00 05 00 93 ................ + 0x0060 08 50 93 08 b8 01 00 00 00 00 00 00 eb 01 00 00 .P.............. + 0x0070 00 00 00 00 06 00 52 93 08 50 93 08 eb 01 00 00 ......R..P...... + 0x0080 00 00 00 00 f1 01 00 00 00 00 00 00 05 00 93 08 ................ + 0x0090 50 93 08 00 00 00 00 00 00 00 00 00 00 00 00 00 P............... + 0x00a0 00 00 00 ... + rel 8+8 t=1 "".print+0 + rel 69+8 t=1 "".print+0 +go.info."".print SDWARFINFO size=81 + 0x0000 03 22 22 2e 70 72 69 6e 74 00 00 00 00 00 00 00 ."".print....... + 0x0010 00 00 00 00 00 00 00 00 00 00 01 9c 00 00 00 00 ................ + 0x0020 01 10 62 00 00 cd 04 00 00 00 00 00 00 00 00 15 ..b............. + 0x0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0040 0b 65 72 72 00 d5 04 00 00 00 00 00 00 00 00 00 .err............ + 0x0050 00 . + rel 0+0 t=24 type.[1]interface {}+0 + rel 0+0 t=24 type.[]uint8+0 + rel 0+0 t=24 type.func(int)+0 + rel 0+0 t=24 type.int+0 + rel 0+0 t=24 type.uint8+0 + rel 10+8 t=1 "".print+0 + rel 18+8 t=1 "".print+627 + rel 28+4 t=30 gofile../home/rhys/git_repos/log-assembler/main_assembler/main.go+0 + rel 39+4 t=29 go.info.[]uint8+0 + rel 43+4 t=29 go.loc."".print+0 + rel 48+8 t=1 "".print+276 + rel 56+8 t=1 "".print+617 + rel 71+4 t=29 go.info.error+0 + rel 75+4 t=29 go.loc."".print+61 +go.range."".print SDWARFRANGE size=0 +go.debuglines."".print SDWARFMISC size=63 + 0x0000 04 02 03 c7 04 14 0a cd 08 56 06 5f 06 42 77 06 .........V._.Bw. + 0x0010 5f 06 08 55 06 41 06 02 7e 03 0d fa 03 74 6f 06 _..U.A..~....to. + 0x0020 5f 06 08 55 06 41 06 02 76 03 07 fa 06 55 06 ce _..U.A..v....U.. + 0x0030 06 37 06 02 56 ff 03 6f ab 04 01 03 b4 7b 01 .7..V..o.....{. +go.loc."".severity.attach SDWARFLOC size=154 + 0x0000 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 ................ + 0x0010 00 00 00 00 00 00 00 00 6a 00 00 00 00 00 00 00 ........j....... + 0x0020 02 00 91 08 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 ff ff ff ff ff ff ff ff 00 00 00 00 ................ + 0x0040 00 00 00 00 00 00 00 00 00 00 00 00 6a 00 00 00 ............j... + 0x0050 00 00 00 00 01 00 50 00 00 00 00 00 00 00 00 00 ......P......... + 0x0060 00 00 00 00 00 00 00 ff ff ff ff ff ff ff ff 00 ................ + 0x0070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 6a ...............j + 0x0080 00 00 00 00 00 00 00 01 00 9c 00 00 00 00 00 00 ................ + 0x0090 00 00 00 00 00 00 00 00 00 00 .......... + rel 8+8 t=1 "".severity.attach+0 + rel 60+8 t=1 "".severity.attach+0 + rel 111+8 t=1 "".severity.attach+0 +go.info."".severity.attach SDWARFINFO size=67 + 0x0000 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0010 00 00 00 00 00 01 9c 12 00 00 00 00 00 13 00 00 ................ + 0x0020 00 00 00 00 00 00 0b 26 73 00 fa 04 00 00 00 00 .......&s....... + 0x0030 00 00 00 00 10 73 00 00 fa 04 00 00 00 00 00 00 .....s.......... + 0x0040 00 00 00 ... + rel 0+0 t=24 type."".severity+0 + rel 0+0 t=24 type.*"".EventData+0 + rel 1+4 t=29 go.info."".severity.attach$abstract+0 + rel 5+8 t=1 "".severity.attach+0 + rel 13+8 t=1 "".severity.attach+106 + rel 24+4 t=29 go.info."".severity.attach$abstract+20 + rel 30+4 t=29 go.info."".severity.attach$abstract+28 + rel 34+4 t=29 go.loc."".severity.attach+0 + rel 44+4 t=29 go.info.*"".severity+0 + rel 48+4 t=29 go.loc."".severity.attach+52 + rel 58+4 t=29 go.info."".severity+0 + rel 62+4 t=29 go.loc."".severity.attach+103 +go.range."".severity.attach SDWARFRANGE size=0 +go.debuglines."".severity.attach SDWARFMISC size=26 + 0x0000 04 02 03 f4 04 14 0a a5 06 e1 06 ec 06 41 06 a6 .............A.. + 0x0010 06 72 06 7c 04 01 03 87 7b 01 .r.|....{. +go.loc."".init SDWARFLOC size=0 +go.info."".init SDWARFINFO size=33 + 0x0000 03 22 22 2e 69 6e 69 74 00 00 00 00 00 00 00 00 ."".init........ + 0x0010 00 00 00 00 00 00 00 00 00 01 9c 00 00 00 00 01 ................ + 0x0020 00 . + rel 9+8 t=1 "".init+0 + rel 17+8 t=1 "".init+294 + rel 27+4 t=30 gofile../home/rhys/git_repos/log-assembler/main_assembler/main.go+0 +go.range."".init SDWARFRANGE size=0 +go.debuglines."".init SDWARFMISC size=52 + 0x0000 04 02 03 dd 02 14 0a cd 06 e1 06 02 1b f7 06 55 ...............U + 0x0010 06 d8 06 55 06 03 3f b4 06 41 06 03 46 d3 06 41 ...U..?..A..F..A + 0x0020 06 d7 06 73 03 39 a0 03 40 97 9a b7 06 ff 04 01 ...s.9..@....... + 0x0030 03 9e 7d 01 ..}. +""..inittask SNOPTRDATA size=144 + 0x0000 00 00 00 00 00 00 00 00 0e 00 00 00 00 00 00 00 ................ + 0x0010 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + rel 24+8 t=1 errors..inittask+0 + rel 32+8 t=1 fmt..inittask+0 + rel 40+8 t=1 net/http..inittask+0 + rel 48+8 t=1 strconv..inittask+0 + rel 56+8 t=1 time..inittask+0 + rel 64+8 t=1 reflect..inittask+0 + rel 72+8 t=1 runtime..inittask+0 + rel 80+8 t=1 context..inittask+0 + rel 88+8 t=1 encoding/json..inittask+0 + rel 96+8 t=1 flag..inittask+0 + rel 104+8 t=1 io..inittask+0 + rel 112+8 t=1 os..inittask+0 + rel 120+8 t=1 github.com/ONSdigital/go-ns/common..inittask+0 + rel 128+8 t=1 github.com/hokaccha/go-prettyjson..inittask+0 + rel 136+8 t=1 "".init+0 +"".Namespace SBSS size=16 +"".destination SDATA size=16 + 0x0000 00 00 00 00 00 00 00 00 ........ + rel 0+8 t=1 go.itab.*os.File,io.Writer+0 +"".fallbackDestination SDATA size=16 + 0x0000 00 00 00 00 00 00 00 00 ........ + rel 0+8 t=1 go.itab.*os.File,io.Writer+0 +"".isTestMode SNOPTRBSS size=1 +"".eventWithOptionsCheckFunc SDATA size=8 + 0x0000 00 00 00 00 00 00 00 00 ........ + rel 0+8 t=1 ""..stmp_9+0 +"".eventWithoutOptionsCheckFunc SDATA size=8 + 0x0000 00 00 00 00 00 00 00 00 ........ + rel 0+8 t=1 ""..stmp_8+0 +"".eventFuncInst SBSS size=8 +"".styleForHumanFunc SDATA size=8 + 0x0000 00 00 00 00 00 00 00 00 ........ + rel 0+8 t=1 ""..stmp_6+0 +"".styleForMachineFunc SDATA size=8 + 0x0000 00 00 00 00 00 00 00 00 ........ + rel 0+8 t=1 ""..stmp_7+0 +"".styler SBSS size=8 +"".output SBSS size=24 +""..stmp_0 SRODATA size=16 + 0x0000 00 00 00 00 00 00 00 00 1e 00 00 00 00 00 00 00 ................ + rel 0+8 t=1 go.string."Benchmarking: 'Log - o.attach'"+0 +""..stmp_1 SRODATA size=8 + 0x0000 03 00 00 00 00 00 00 00 ........ +""..stmp_2 SRODATA size=16 + 0x0000 00 00 00 00 00 00 00 00 1c 00 00 00 00 00 00 00 ................ + rel 0+8 t=1 go.string."Benchmarking: 'Log - switch'"+0 +""..stmp_3 SRODATA size=8 + 0x0000 03 00 00 00 00 00 00 00 ........ +""..stmp_4 SRODATA size=16 + 0x0000 00 00 00 00 00 00 00 00 0e 00 00 00 00 00 00 00 ................ + rel 0+8 t=1 go.string."unknown option"+0 +""..stmp_5 SRODATA size=16 + 0x0000 00 00 00 00 00 00 00 00 0a 00 00 00 00 00 00 00 ................ + rel 0+8 t=1 go.string."request-id"+0 +""..stmp_6 SDATA size=8 + 0x0000 00 00 00 00 00 00 00 00 ........ + rel 0+8 t=1 "".styleForHuman·f+0 +""..stmp_7 SDATA size=8 + 0x0000 00 00 00 00 00 00 00 00 ........ + rel 0+8 t=1 "".styleForMachine·f+0 +""..stmp_8 SDATA size=8 + 0x0000 00 00 00 00 00 00 00 00 ........ + rel 0+8 t=1 "".eventWithoutOptionsCheck·f+0 +""..stmp_9 SDATA size=8 + 0x0000 00 00 00 00 00 00 00 00 ........ + rel 0+8 t=1 "".eventWithOptionsCheck·f+0 +"".eventWithOptionsCheck·f SRODATA dupok size=8 + 0x0000 00 00 00 00 00 00 00 00 ........ + rel 0+8 t=1 "".eventWithOptionsCheck+0 +"".eventWithoutOptionsCheck·f SRODATA dupok size=8 + 0x0000 00 00 00 00 00 00 00 00 ........ + rel 0+8 t=1 "".eventWithoutOptionsCheck+0 +"".styleForHuman·f SRODATA dupok size=8 + 0x0000 00 00 00 00 00 00 00 00 ........ + rel 0+8 t=1 "".styleForHuman+0 +"".styleForMachine·f SRODATA dupok size=8 + 0x0000 00 00 00 00 00 00 00 00 ........ + rel 0+8 t=1 "".styleForMachine+0 +os.Exit·f SRODATA dupok size=8 + 0x0000 00 00 00 00 00 00 00 00 ........ + rel 0+8 t=1 os.Exit+0 +type..namedata.*func(context.Context, string, ...main.option)- SRODATA dupok size=49 + 0x0000 00 00 2e 2a 66 75 6e 63 28 63 6f 6e 74 65 78 74 ...*func(context + 0x0010 2e 43 6f 6e 74 65 78 74 2c 20 73 74 72 69 6e 67 .Context, string + 0x0020 2c 20 2e 2e 2e 6d 61 69 6e 2e 6f 70 74 69 6f 6e , ...main.option + 0x0030 29 ) +type.*func(context.Context, string, ..."".option) SRODATA dupok size=56 + 0x0000 08 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ................ + 0x0010 cc 23 3a e1 08 08 08 36 00 00 00 00 00 00 00 00 .#:....6........ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 ........ + rel 24+8 t=1 runtime.memequal64·f+0 + rel 32+8 t=1 runtime.gcbits.01+0 + rel 40+4 t=5 type..namedata.*func(context.Context, string, ...main.option)-+0 + rel 48+8 t=1 type.func(context.Context, string, ..."".option)+0 +type.func(context.Context, string, ..."".option) SRODATA dupok size=80 + 0x0000 08 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ................ + 0x0010 00 bf 6f 09 02 08 08 33 00 00 00 00 00 00 00 00 ..o....3........ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 03 00 00 80 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + rel 32+8 t=1 runtime.gcbits.01+0 + rel 40+4 t=5 type..namedata.*func(context.Context, string, ...main.option)-+0 + rel 44+4 t=6 type.*func(context.Context, string, ..."".option)+0 + rel 56+8 t=1 type.context.Context+0 + rel 64+8 t=1 type.string+0 + rel 72+8 t=1 type.[]"".option+0 +type..namedata.*main.eventFunc- SRODATA dupok size=18 + 0x0000 00 00 0f 2a 6d 61 69 6e 2e 65 76 65 6e 74 46 75 ...*main.eventFu + 0x0010 6e 63 nc +type.*"".eventFunc SRODATA size=56 + 0x0000 08 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ................ + 0x0010 63 94 5d d9 08 08 08 36 00 00 00 00 00 00 00 00 c.]....6........ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 ........ + rel 24+8 t=1 runtime.memequal64·f+0 + rel 32+8 t=1 runtime.gcbits.01+0 + rel 40+4 t=5 type..namedata.*main.eventFunc-+0 + rel 48+8 t=1 type."".eventFunc+0 +type..namedata.f- SRODATA dupok size=4 + 0x0000 00 00 01 66 ...f +type."".eventFunc SRODATA size=120 + 0x0000 08 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ................ + 0x0010 b8 6c 51 e4 07 08 08 39 00 00 00 00 00 00 00 00 .lQ....9........ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0040 01 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 ................ + 0x0050 00 00 00 00 00 00 00 00 28 00 00 00 00 00 00 00 ........(....... + 0x0060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0070 00 00 00 00 00 00 00 00 ........ + rel 32+8 t=1 runtime.gcbits.01+0 + rel 40+4 t=5 type..namedata.*main.eventFunc-+0 + rel 44+4 t=5 type.*"".eventFunc+0 + rel 48+8 t=1 type..importpath."".+0 + rel 56+8 t=1 type."".eventFunc+96 + rel 80+4 t=5 type..importpath."".+0 + rel 96+8 t=1 type..namedata.f-+0 + rel 104+8 t=1 type.func(context.Context, string, ..."".option)+0 +type..namedata.*func(context.Context, main.EventData, main.eventFunc) []uint8- SRODATA dupok size=65 + 0x0000 00 00 3e 2a 66 75 6e 63 28 63 6f 6e 74 65 78 74 ..>*func(context + 0x0010 2e 43 6f 6e 74 65 78 74 2c 20 6d 61 69 6e 2e 45 .Context, main.E + 0x0020 76 65 6e 74 44 61 74 61 2c 20 6d 61 69 6e 2e 65 ventData, main.e + 0x0030 76 65 6e 74 46 75 6e 63 29 20 5b 5d 75 69 6e 74 ventFunc) []uint + 0x0040 38 8 +type.*func(context.Context, "".EventData, "".eventFunc) []uint8 SRODATA dupok size=56 + 0x0000 08 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ................ + 0x0010 c1 2e b6 39 08 08 08 36 00 00 00 00 00 00 00 00 ...9...6........ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 ........ + rel 24+8 t=1 runtime.memequal64·f+0 + rel 32+8 t=1 runtime.gcbits.01+0 + rel 40+4 t=5 type..namedata.*func(context.Context, main.EventData, main.eventFunc) []uint8-+0 + rel 48+8 t=1 type.func(context.Context, "".EventData, "".eventFunc) []uint8+0 +type.func(context.Context, "".EventData, "".eventFunc) []uint8 SRODATA dupok size=88 + 0x0000 08 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ................ + 0x0010 d5 89 fa e4 02 08 08 33 00 00 00 00 00 00 00 00 .......3........ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 03 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0050 00 00 00 00 00 00 00 00 ........ + rel 32+8 t=1 runtime.gcbits.01+0 + rel 40+4 t=5 type..namedata.*func(context.Context, main.EventData, main.eventFunc) []uint8-+0 + rel 44+4 t=6 type.*func(context.Context, "".EventData, "".eventFunc) []uint8+0 + rel 56+8 t=1 type.context.Context+0 + rel 64+8 t=1 type."".EventData+0 + rel 72+8 t=1 type."".eventFunc+0 + rel 80+8 t=1 type.[]uint8+0 +type..namedata.*struct { f func(context.Context, main.EventData, main.eventFunc) []uint8 }- SRODATA dupok size=78 + 0x0000 00 00 4b 2a 73 74 72 75 63 74 20 7b 20 66 20 66 ..K*struct { f f + 0x0010 75 6e 63 28 63 6f 6e 74 65 78 74 2e 43 6f 6e 74 unc(context.Cont + 0x0020 65 78 74 2c 20 6d 61 69 6e 2e 45 76 65 6e 74 44 ext, main.EventD + 0x0030 61 74 61 2c 20 6d 61 69 6e 2e 65 76 65 6e 74 46 ata, main.eventF + 0x0040 75 6e 63 29 20 5b 5d 75 69 6e 74 38 20 7d unc) []uint8 } +type.struct { "".f func(context.Context, "".EventData, "".eventFunc) []uint8 } SRODATA dupok size=104 + 0x0000 08 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ................ + 0x0010 bf ae 11 04 02 08 08 39 00 00 00 00 00 00 00 00 .......9........ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0040 01 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 ................ + 0x0050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0060 00 00 00 00 00 00 00 00 ........ + rel 32+8 t=1 runtime.gcbits.01+0 + rel 40+4 t=5 type..namedata.*struct { f func(context.Context, main.EventData, main.eventFunc) []uint8 }-+0 + rel 44+4 t=6 type.*struct { "".f func(context.Context, "".EventData, "".eventFunc) []uint8 }+0 + rel 48+8 t=1 type..importpath."".+0 + rel 56+8 t=1 type.struct { "".f func(context.Context, "".EventData, "".eventFunc) []uint8 }+80 + rel 80+8 t=1 type..namedata.f-+0 + rel 88+8 t=1 type.func(context.Context, "".EventData, "".eventFunc) []uint8+0 +type.*struct { "".f func(context.Context, "".EventData, "".eventFunc) []uint8 } SRODATA dupok size=56 + 0x0000 08 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ................ + 0x0010 df d6 3f 9b 08 08 08 36 00 00 00 00 00 00 00 00 ..?....6........ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 ........ + rel 24+8 t=1 runtime.memequal64·f+0 + rel 32+8 t=1 runtime.gcbits.01+0 + rel 40+4 t=5 type..namedata.*struct { f func(context.Context, main.EventData, main.eventFunc) []uint8 }-+0 + rel 48+8 t=1 type.struct { "".f func(context.Context, "".EventData, "".eventFunc) []uint8 }+0 +type..namedata.*[0]uint8- SRODATA dupok size=12 + 0x0000 00 00 09 2a 5b 30 5d 75 69 6e 74 38 ...*[0]uint8 +type.*[0]uint8 SRODATA dupok size=56 + 0x0000 08 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ................ + 0x0010 be a5 63 b3 08 08 08 36 00 00 00 00 00 00 00 00 ..c....6........ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 ........ + rel 24+8 t=1 runtime.memequal64·f+0 + rel 32+8 t=1 runtime.gcbits.01+0 + rel 40+4 t=5 type..namedata.*[0]uint8-+0 + rel 48+8 t=1 type.[0]uint8+0 +type.[0]uint8 SRODATA dupok size=72 + 0x0000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0010 93 13 6c e9 0a 01 01 11 00 00 00 00 00 00 00 00 ..l............. + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0040 00 00 00 00 00 00 00 00 ........ + rel 24+8 t=1 runtime.memequal0·f+0 + rel 32+8 t=1 runtime.gcbits.+0 + rel 40+4 t=5 type..namedata.*[0]uint8-+0 + rel 44+4 t=6 type.*[0]uint8+0 + rel 48+8 t=1 type.uint8+0 + rel 56+8 t=1 type.[]uint8+0 +go.loc.type..eq.[2]"".option SDWARFLOC dupok size=154 + 0x0000 ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 ................ + 0x0010 48 00 00 00 00 00 00 00 55 00 00 00 00 00 00 00 H.......U....... + 0x0020 01 00 51 00 00 00 00 00 00 00 00 00 00 00 00 00 ..Q............. + 0x0030 00 00 00 ff ff ff ff ff ff ff ff 00 00 00 00 00 ................ + 0x0040 00 00 00 00 00 00 00 00 00 00 00 b3 00 00 00 00 ................ + 0x0050 00 00 00 01 00 9c 00 00 00 00 00 00 00 00 00 00 ................ + 0x0060 00 00 00 00 00 00 ff ff ff ff ff ff ff ff 00 00 ................ + 0x0070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 b3 00 ................ + 0x0080 00 00 00 00 00 00 02 00 91 08 00 00 00 00 00 00 ................ + 0x0090 00 00 00 00 00 00 00 00 00 00 .......... + rel 8+8 t=1 type..eq.[2]"".option+0 + rel 59+8 t=1 type..eq.[2]"".option+0 + rel 110+8 t=1 type..eq.[2]"".option+0 +go.info.type..eq.[2]"".option SDWARFINFO dupok size=97 + 0x0000 03 74 79 70 65 2e 2e 65 71 2e 5b 32 5d 22 22 2e .type..eq.[2]"". + 0x0010 6f 70 74 69 6f 6e 00 00 00 00 00 00 00 00 00 00 option.......... + 0x0020 00 00 00 00 00 00 00 01 9c 00 00 00 00 01 0b 69 ...............i + 0x0030 00 01 00 00 00 00 00 00 00 00 10 70 00 00 01 00 ...........p.... + 0x0040 00 00 00 00 00 00 00 10 71 00 00 01 00 00 00 00 ........q....... + 0x0050 00 00 00 00 0f 7e 72 32 00 01 01 00 00 00 00 00 .....~r2........ + 0x0060 00 . + rel 0+0 t=24 type.*[2]"".option+0 + rel 0+0 t=24 type.bool+0 + rel 0+0 t=24 type.int+0 + rel 23+8 t=1 type..eq.[2]"".option+0 + rel 31+8 t=1 type..eq.[2]"".option+179 + rel 41+4 t=30 gofile..+0 + rel 50+4 t=29 go.info.int+0 + rel 54+4 t=29 go.loc.type..eq.[2]"".option+0 + rel 63+4 t=29 go.info.*[2]"".option+0 + rel 67+4 t=29 go.loc.type..eq.[2]"".option+51 + rel 76+4 t=29 go.info.*[2]"".option+0 + rel 80+4 t=29 go.loc.type..eq.[2]"".option+102 + rel 91+4 t=29 go.info.bool+0 +go.range.type..eq.[2]"".option SDWARFRANGE dupok size=0 +go.debuglines.type..eq.[2]"".option SDWARFMISC dupok size=29 + 0x0000 04 01 0f 0a cd 06 cd 06 08 73 06 37 06 02 27 ff .........s.7..'. + 0x0010 06 41 06 73 06 41 06 73 04 01 03 00 01 .A.s.A.s..... +type..eqfunc.[2]"".option SRODATA dupok size=8 + 0x0000 00 00 00 00 00 00 00 00 ........ + rel 0+8 t=1 type..eq.[2]"".option+0 +type..namedata.*[2]main.option- SRODATA dupok size=18 + 0x0000 00 00 0f 2a 5b 32 5d 6d 61 69 6e 2e 6f 70 74 69 ...*[2]main.opti + 0x0010 6f 6e on +type.*[2]"".option SRODATA dupok size=56 + 0x0000 08 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ................ + 0x0010 2d 89 a7 16 08 08 08 36 00 00 00 00 00 00 00 00 -......6........ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 ........ + rel 24+8 t=1 runtime.memequal64·f+0 + rel 32+8 t=1 runtime.gcbits.01+0 + rel 40+4 t=5 type..namedata.*[2]main.option-+0 + rel 48+8 t=1 type.[2]"".option+0 +type.[2]"".option SRODATA dupok size=72 + 0x0000 20 00 00 00 00 00 00 00 20 00 00 00 00 00 00 00 ....... ....... + 0x0010 71 13 37 8a 02 08 08 11 00 00 00 00 00 00 00 00 q.7............. + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0040 02 00 00 00 00 00 00 00 ........ + rel 24+8 t=1 type..eqfunc.[2]"".option+0 + rel 32+8 t=1 runtime.gcbits.0a+0 + rel 40+4 t=5 type..namedata.*[2]main.option-+0 + rel 44+4 t=6 type.*[2]"".option+0 + rel 48+8 t=1 type."".option+0 + rel 56+8 t=1 type.[]"".option+0 +type..namedata.*[]uintptr- SRODATA dupok size=13 + 0x0000 00 00 0a 2a 5b 5d 75 69 6e 74 70 74 72 ...*[]uintptr +type.*[]uintptr SRODATA dupok size=56 + 0x0000 08 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ................ + 0x0010 2f 71 45 ab 08 08 08 36 00 00 00 00 00 00 00 00 /qE....6........ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 ........ + rel 24+8 t=1 runtime.memequal64·f+0 + rel 32+8 t=1 runtime.gcbits.01+0 + rel 40+4 t=5 type..namedata.*[]uintptr-+0 + rel 48+8 t=1 type.[]uintptr+0 +type.[]uintptr SRODATA dupok size=56 + 0x0000 18 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ................ + 0x0010 bb 33 c0 5d 02 08 08 17 00 00 00 00 00 00 00 00 .3.]............ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 ........ + rel 32+8 t=1 runtime.gcbits.01+0 + rel 40+4 t=5 type..namedata.*[]uintptr-+0 + rel 44+4 t=6 type.*[]uintptr+0 + rel 48+8 t=1 type.uintptr+0 +type..namedata.*func(int)- SRODATA dupok size=13 + 0x0000 00 00 0a 2a 66 75 6e 63 28 69 6e 74 29 ...*func(int) +type.*func(int) SRODATA dupok size=56 + 0x0000 08 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ................ + 0x0010 2b 1f 12 8c 08 08 08 36 00 00 00 00 00 00 00 00 +......6........ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 ........ + rel 24+8 t=1 runtime.memequal64·f+0 + rel 32+8 t=1 runtime.gcbits.01+0 + rel 40+4 t=5 type..namedata.*func(int)-+0 + rel 48+8 t=1 type.func(int)+0 +type.func(int) SRODATA dupok size=64 + 0x0000 08 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ................ + 0x0010 84 e6 f1 18 02 08 08 33 00 00 00 00 00 00 00 00 .......3........ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + rel 32+8 t=1 runtime.gcbits.01+0 + rel 40+4 t=5 type..namedata.*func(int)-+0 + rel 44+4 t=6 type.*func(int)+0 + rel 56+8 t=1 type.int+0 +type..namedata.*[]*flag.Flag- SRODATA dupok size=16 + 0x0000 00 00 0d 2a 5b 5d 2a 66 6c 61 67 2e 46 6c 61 67 ...*[]*flag.Flag +type.*[]*flag.Flag SRODATA dupok size=56 + 0x0000 08 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ................ + 0x0010 19 3c 33 ed 08 08 08 36 00 00 00 00 00 00 00 00 .<3....6........ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 ........ + rel 24+8 t=1 runtime.memequal64·f+0 + rel 32+8 t=1 runtime.gcbits.01+0 + rel 40+4 t=5 type..namedata.*[]*flag.Flag-+0 + rel 48+8 t=1 type.[]*flag.Flag+0 +type.[]*flag.Flag SRODATA dupok size=56 + 0x0000 18 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ................ + 0x0010 05 ea 41 6e 02 08 08 17 00 00 00 00 00 00 00 00 ..An............ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 ........ + rel 32+8 t=1 runtime.gcbits.01+0 + rel 40+4 t=5 type..namedata.*[]*flag.Flag-+0 + rel 44+4 t=6 type.*[]*flag.Flag+0 + rel 48+8 t=1 type.*flag.Flag+0 +type..namedata.*[8]*flag.Flag- SRODATA dupok size=17 + 0x0000 00 00 0e 2a 5b 38 5d 2a 66 6c 61 67 2e 46 6c 61 ...*[8]*flag.Fla + 0x0010 67 g +type.*[8]*flag.Flag SRODATA dupok size=56 + 0x0000 08 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ................ + 0x0010 2c de 55 b5 08 08 08 36 00 00 00 00 00 00 00 00 ,.U....6........ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 ........ + rel 24+8 t=1 runtime.memequal64·f+0 + rel 32+8 t=1 runtime.gcbits.01+0 + rel 40+4 t=5 type..namedata.*[8]*flag.Flag-+0 + rel 48+8 t=1 type.noalg.[8]*flag.Flag+0 +runtime.gcbits.ff SRODATA dupok size=1 + 0x0000 ff . +type.noalg.[8]*flag.Flag SRODATA dupok size=72 + 0x0000 40 00 00 00 00 00 00 00 40 00 00 00 00 00 00 00 @.......@....... + 0x0010 4d 83 12 68 02 08 08 11 00 00 00 00 00 00 00 00 M..h............ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0040 08 00 00 00 00 00 00 00 ........ + rel 32+8 t=1 runtime.gcbits.ff+0 + rel 40+4 t=5 type..namedata.*[8]*flag.Flag-+0 + rel 44+4 t=6 type.*[8]*flag.Flag+0 + rel 48+8 t=1 type.*flag.Flag+0 + rel 56+8 t=1 type.[]*flag.Flag+0 +type..namedata.*map.bucket[string]*flag.Flag- SRODATA dupok size=32 + 0x0000 00 00 1d 2a 6d 61 70 2e 62 75 63 6b 65 74 5b 73 ...*map.bucket[s + 0x0010 74 72 69 6e 67 5d 2a 66 6c 61 67 2e 46 6c 61 67 tring]*flag.Flag +type.*map.bucket[string]*flag.Flag SRODATA dupok size=56 + 0x0000 08 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ................ + 0x0010 02 7f 8e 97 08 08 08 36 00 00 00 00 00 00 00 00 .......6........ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 ........ + rel 24+8 t=1 runtime.memequal64·f+0 + rel 32+8 t=1 runtime.gcbits.01+0 + rel 40+4 t=5 type..namedata.*map.bucket[string]*flag.Flag-+0 + rel 48+8 t=1 type.noalg.map.bucket[string]*flag.Flag+0 +runtime.gcbits.aaaafe03 SRODATA dupok size=4 + 0x0000 aa aa fe 03 .... +type.noalg.map.bucket[string]*flag.Flag SRODATA dupok size=176 + 0x0000 d0 00 00 00 00 00 00 00 d0 00 00 00 00 00 00 00 ................ + 0x0010 9c 3c f1 2e 02 08 08 19 00 00 00 00 00 00 00 00 .<.............. + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0040 04 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 ................ + 0x0050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0070 00 00 00 00 00 00 00 00 10 00 00 00 00 00 00 00 ................ + 0x0080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0090 10 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x00a0 00 00 00 00 00 00 00 00 90 01 00 00 00 00 00 00 ................ + rel 32+8 t=1 runtime.gcbits.aaaafe03+0 + rel 40+4 t=5 type..namedata.*map.bucket[string]*flag.Flag-+0 + rel 44+4 t=6 type.*map.bucket[string]*flag.Flag+0 + rel 48+8 t=1 type..importpath..+0 + rel 56+8 t=1 type.noalg.map.bucket[string]*flag.Flag+80 + rel 80+8 t=1 type..namedata.topbits-+0 + rel 88+8 t=1 type.[8]uint8+0 + rel 104+8 t=1 type..namedata.keys-+0 + rel 112+8 t=1 type.noalg.[8]string+0 + rel 128+8 t=1 type..namedata.elems-+0 + rel 136+8 t=1 type.noalg.[8]*flag.Flag+0 + rel 152+8 t=1 type..namedata.overflow-+0 + rel 160+8 t=1 type.*map.bucket[string]*flag.Flag+0 +type..namedata.*map[string]*flag.Flag- SRODATA dupok size=25 + 0x0000 00 00 16 2a 6d 61 70 5b 73 74 72 69 6e 67 5d 2a ...*map[string]* + 0x0010 66 6c 61 67 2e 46 6c 61 67 flag.Flag +type.*map[string]*flag.Flag SRODATA dupok size=56 + 0x0000 08 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ................ + 0x0010 c1 48 92 b8 08 08 08 36 00 00 00 00 00 00 00 00 .H.....6........ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 ........ + rel 24+8 t=1 runtime.memequal64·f+0 + rel 32+8 t=1 runtime.gcbits.01+0 + rel 40+4 t=5 type..namedata.*map[string]*flag.Flag-+0 + rel 48+8 t=1 type.map[string]*flag.Flag+0 +type.map[string]*flag.Flag SRODATA dupok size=88 + 0x0000 08 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ................ + 0x0010 97 df ca b7 02 08 08 35 00 00 00 00 00 00 00 00 .......5........ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0050 10 08 d0 00 0c 00 00 00 ........ + rel 32+8 t=1 runtime.gcbits.01+0 + rel 40+4 t=5 type..namedata.*map[string]*flag.Flag-+0 + rel 44+4 t=6 type.*map[string]*flag.Flag+0 + rel 48+8 t=1 type.string+0 + rel 56+8 t=1 type.*flag.Flag+0 + rel 64+8 t=1 type.noalg.map.bucket[string]*flag.Flag+0 + rel 72+8 t=1 runtime.strhash·f+0 +type..namedata.*map[string]struct {}- SRODATA dupok size=24 + 0x0000 00 00 15 2a 6d 61 70 5b 73 74 72 69 6e 67 5d 73 ...*map[string]s + 0x0010 74 72 75 63 74 20 7b 7d truct {} +type.*map[string]struct {} SRODATA dupok size=56 + 0x0000 08 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ................ + 0x0010 3e 5f 9f 92 08 08 08 36 00 00 00 00 00 00 00 00 >_.....6........ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 ........ + rel 24+8 t=1 runtime.memequal64·f+0 + rel 32+8 t=1 runtime.gcbits.01+0 + rel 40+4 t=5 type..namedata.*map[string]struct {}-+0 + rel 48+8 t=1 type.map[string]struct {}+0 +type.map[string]struct {} SRODATA dupok size=88 + 0x0000 08 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ................ + 0x0010 b8 51 52 e1 02 08 08 35 00 00 00 00 00 00 00 00 .QR....5........ + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0050 10 00 90 00 0c 00 00 00 ........ + rel 32+8 t=1 runtime.gcbits.01+0 + rel 40+4 t=5 type..namedata.*map[string]struct {}-+0 + rel 44+4 t=6 type.*map[string]struct {}+0 + rel 48+8 t=1 type.string+0 + rel 56+8 t=1 type.struct {}+0 + rel 64+8 t=1 type.noalg.map.bucket[string]struct {}+0 + rel 72+8 t=1 runtime.strhash·f+0 +go.itab.*os.File,io.Writer SRODATA dupok size=32 + 0x0000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0010 44 b5 f3 33 00 00 00 00 00 00 00 00 00 00 00 00 D..3............ + rel 0+8 t=1 type.io.Writer+0 + rel 8+8 t=1 type.*os.File+0 + rel 24+8 t=1 os.(*File).Write+0 +go.itablink.*os.File,io.Writer SRODATA dupok size=8 + 0x0000 00 00 00 00 00 00 00 00 ........ + rel 0+8 t=1 go.itab.*os.File,io.Writer+0 +go.itab."".Data,"".option SRODATA dupok size=32 + 0x0000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0010 56 17 02 94 00 00 00 00 00 00 00 00 00 00 00 00 V............... + rel 0+8 t=1 type."".option+0 + rel 8+8 t=1 type."".Data+0 + rel 24+8 t=1 "".Data.attach+0 +go.itablink."".Data,"".option SRODATA dupok size=8 + 0x0000 00 00 00 00 00 00 00 00 ........ + rel 0+8 t=1 go.itab."".Data,"".option+0 +go.itab.*"".EventHTTP,"".option SRODATA dupok size=32 + 0x0000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0010 36 a1 71 80 00 00 00 00 00 00 00 00 00 00 00 00 6.q............. + rel 0+8 t=1 type."".option+0 + rel 8+8 t=1 type.*"".EventHTTP+0 + rel 24+8 t=1 "".(*EventHTTP).attach+0 +go.itablink.*"".EventHTTP,"".option SRODATA dupok size=8 + 0x0000 00 00 00 00 00 00 00 00 ........ + rel 0+8 t=1 go.itab.*"".EventHTTP,"".option+0 +go.itab.*"".EventError,"".option SRODATA dupok size=32 + 0x0000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0010 04 2e e9 f3 00 00 00 00 00 00 00 00 00 00 00 00 ................ + rel 0+8 t=1 type."".option+0 + rel 8+8 t=1 type.*"".EventError+0 + rel 24+8 t=1 "".(*EventError).attach+0 +go.itablink.*"".EventError,"".option SRODATA dupok size=8 + 0x0000 00 00 00 00 00 00 00 00 ........ + rel 0+8 t=1 go.itab.*"".EventError,"".option+0 +go.itab.*"".eventAuth,"".option SRODATA dupok size=32 + 0x0000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0010 52 81 7b 46 00 00 00 00 00 00 00 00 00 00 00 00 R.{F............ + rel 0+8 t=1 type."".option+0 + rel 8+8 t=1 type.*"".eventAuth+0 + rel 24+8 t=1 "".(*eventAuth).attach+0 +go.itablink.*"".eventAuth,"".option SRODATA dupok size=8 + 0x0000 00 00 00 00 00 00 00 00 ........ + rel 0+8 t=1 go.itab.*"".eventAuth,"".option+0 +go.itab.*errors.errorString,error SRODATA dupok size=32 + 0x0000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0010 14 f4 d0 87 00 00 00 00 00 00 00 00 00 00 00 00 ................ + rel 0+8 t=1 type.error+0 + rel 8+8 t=1 type.*errors.errorString+0 + rel 24+8 t=1 errors.(*errorString).Error+0 +go.itablink.*errors.errorString,error SRODATA dupok size=8 + 0x0000 00 00 00 00 00 00 00 00 ........ + rel 0+8 t=1 go.itab.*errors.errorString,error+0 +go.itab.*strconv.NumError,error SRODATA dupok size=32 + 0x0000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0010 41 56 3b 02 00 00 00 00 00 00 00 00 00 00 00 00 AV;............. + rel 0+8 t=1 type.error+0 + rel 8+8 t=1 type.*strconv.NumError+0 + rel 24+8 t=1 strconv.(*NumError).Error+0 +go.itablink.*strconv.NumError,error SRODATA dupok size=8 + 0x0000 00 00 00 00 00 00 00 00 ........ + rel 0+8 t=1 go.itab.*strconv.NumError,error+0 +go.itab.*reflect.rtype,reflect.Type SRODATA dupok size=272 + 0x0000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0010 d6 c9 33 e3 00 00 00 00 00 00 00 00 00 00 00 00 ..3............. + 0x0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0090 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x00a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x00b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x00c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x00d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x00e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x00f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + rel 0+8 t=1 type.reflect.Type+0 + rel 8+8 t=1 type.*reflect.rtype+0 + rel 24+8 t=1 reflect.(*rtype).Align+0 + rel 32+8 t=1 reflect.(*rtype).AssignableTo+0 + rel 40+8 t=1 reflect.(*rtype).Bits+0 + rel 48+8 t=1 reflect.(*rtype).ChanDir+0 + rel 56+8 t=1 reflect.(*rtype).Comparable+0 + rel 64+8 t=1 reflect.(*rtype).ConvertibleTo+0 + rel 72+8 t=1 reflect.(*rtype).Elem+0 + rel 80+8 t=1 reflect.(*rtype).Field+0 + rel 88+8 t=1 reflect.(*rtype).FieldAlign+0 + rel 96+8 t=1 reflect.(*rtype).FieldByIndex+0 + rel 104+8 t=1 reflect.(*rtype).FieldByName+0 + rel 112+8 t=1 reflect.(*rtype).FieldByNameFunc+0 + rel 120+8 t=1 reflect.(*rtype).Implements+0 + rel 128+8 t=1 reflect.(*rtype).In+0 + rel 136+8 t=1 reflect.(*rtype).IsVariadic+0 + rel 144+8 t=1 reflect.(*rtype).Key+0 + rel 152+8 t=1 reflect.(*rtype).Kind+0 + rel 160+8 t=1 reflect.(*rtype).Len+0 + rel 168+8 t=1 reflect.(*rtype).Method+0 + rel 176+8 t=1 reflect.(*rtype).MethodByName+0 + rel 184+8 t=1 reflect.(*rtype).Name+0 + rel 192+8 t=1 reflect.(*rtype).NumField+0 + rel 200+8 t=1 reflect.(*rtype).NumIn+0 + rel 208+8 t=1 reflect.(*rtype).NumMethod+0 + rel 216+8 t=1 reflect.(*rtype).NumOut+0 + rel 224+8 t=1 reflect.(*rtype).Out+0 + rel 232+8 t=1 reflect.(*rtype).PkgPath+0 + rel 240+8 t=1 reflect.(*rtype).Size+0 + rel 248+8 t=1 reflect.(*rtype).String+0 + rel 256+8 t=1 reflect.(*rtype).common+0 + rel 264+8 t=1 reflect.(*rtype).uncommon+0 +go.itablink.*reflect.rtype,reflect.Type SRODATA dupok size=8 + 0x0000 00 00 00 00 00 00 00 00 ........ + rel 0+8 t=1 go.itab.*reflect.rtype,reflect.Type+0 +go.itab."".severity,"".option SRODATA dupok size=32 + 0x0000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0010 b3 e0 59 64 00 00 00 00 00 00 00 00 00 00 00 00 ..Yd............ + rel 0+8 t=1 type."".option+0 + rel 8+8 t=1 type."".severity+0 + rel 24+8 t=1 "".(*severity).attach+0 +go.itablink."".severity,"".option SRODATA dupok size=8 + 0x0000 00 00 00 00 00 00 00 00 ........ + rel 0+8 t=1 go.itab."".severity,"".option+0 +type..importpath.context. SRODATA dupok size=10 + 0x0000 00 00 07 63 6f 6e 74 65 78 74 ...context +type..importpath.encoding/json. SRODATA dupok size=16 + 0x0000 00 00 0d 65 6e 63 6f 64 69 6e 67 2f 6a 73 6f 6e ...encoding/json +type..importpath.errors. SRODATA dupok size=9 + 0x0000 00 00 06 65 72 72 6f 72 73 ...errors +type..importpath.flag. SRODATA dupok size=7 + 0x0000 00 00 04 66 6c 61 67 ...flag +type..importpath.fmt. SRODATA dupok size=6 + 0x0000 00 00 03 66 6d 74 ...fmt +type..importpath.github.com/ONSdigital/go-ns/common. SRODATA dupok size=37 + 0x0000 00 00 22 67 69 74 68 75 62 2e 63 6f 6d 2f 4f 4e .."github.com/ON + 0x0010 53 64 69 67 69 74 61 6c 2f 67 6f 2d 6e 73 2f 63 Sdigital/go-ns/c + 0x0020 6f 6d 6d 6f 6e ommon +type..importpath.github.com/hokaccha/go-prettyjson. SRODATA dupok size=36 + 0x0000 00 00 21 67 69 74 68 75 62 2e 63 6f 6d 2f 68 6f ..!github.com/ho + 0x0010 6b 61 63 63 68 61 2f 67 6f 2d 70 72 65 74 74 79 kaccha/go-pretty + 0x0020 6a 73 6f 6e json +type..importpath.io. SRODATA dupok size=5 + 0x0000 00 00 02 69 6f ...io +type..importpath.net/http. SRODATA dupok size=11 + 0x0000 00 00 08 6e 65 74 2f 68 74 74 70 ...net/http +type..importpath.os. SRODATA dupok size=5 + 0x0000 00 00 02 6f 73 ...os +type..importpath.reflect. SRODATA dupok size=10 + 0x0000 00 00 07 72 65 66 6c 65 63 74 ...reflect +type..importpath.runtime. SRODATA dupok size=10 + 0x0000 00 00 07 72 75 6e 74 69 6d 65 ...runtime +type..importpath.strconv. SRODATA dupok size=10 + 0x0000 00 00 07 73 74 72 63 6f 6e 76 ...strconv +type..importpath.time. SRODATA dupok size=7 + 0x0000 00 00 04 74 69 6d 65 ...time +gclocals·e6397a44f8e1b6e77d0f200b4fba5269 SRODATA dupok size=10 + 0x0000 02 00 00 00 03 00 00 00 01 00 .......... +gclocals·69c1753bd5f81501d95132d08af04464 SRODATA dupok size=8 + 0x0000 02 00 00 00 00 00 00 00 ........ +gclocals·9fb7f0986f647f17cb53dda1484e0f7a SRODATA dupok size=10 + 0x0000 02 00 00 00 01 00 00 00 00 01 .......... +gclocals·119a6e611587191e0df24b4c94b6db11 SRODATA dupok size=11 + 0x0000 03 00 00 00 03 00 00 00 06 04 00 ........... +gclocals·7d2d5fca80364273fb07d5820a76fef4 SRODATA dupok size=8 + 0x0000 03 00 00 00 00 00 00 00 ........ +gclocals·568470801006e5c0dc3947ea998fe279 SRODATA dupok size=10 + 0x0000 02 00 00 00 02 00 00 00 00 02 .......... +gclocals·e0f6dd6ffe13df6eefebd78fb394216d SRODATA dupok size=11 + 0x0000 03 00 00 00 03 00 00 00 02 00 04 ........... +gclocals·33cdeccccebe80329f1fdbee7f5874cb SRODATA dupok size=8 + 0x0000 01 00 00 00 00 00 00 00 ........ +gclocals·e27b7e84a11c17d15d9903cbcdbcadf5 SRODATA dupok size=8 + 0x0000 10 00 00 00 00 00 00 00 ........ +gclocals·c8631183b8c7ed17c993b092e2aa2338 SRODATA dupok size=104 + 0x0000 10 00 00 00 2a 00 00 00 00 00 00 00 00 00 40 00 ....*.........@. + 0x0010 00 00 00 00 08 00 00 00 00 00 08 a8 02 00 00 00 ................ + 0x0020 0c a8 02 00 00 00 0e a8 02 00 00 00 00 a8 02 00 ................ + 0x0030 00 00 04 a8 02 00 00 00 06 a8 02 00 00 00 10 a8 ................ + 0x0040 02 00 00 00 10 aa 02 00 00 00 10 a8 02 b0 ea 03 ................ + 0x0050 10 a8 aa 02 00 00 10 00 a8 02 00 00 10 00 00 00 ................ + 0x0060 00 00 11 00 00 00 00 00 ........ +gclocals·8ba91b37e36d29983c4f81e9de4babea SRODATA dupok size=16 + 0x0000 08 00 00 00 07 00 00 00 00 01 02 06 03 04 08 40 ...............@ +"".BenchmarkLog2.stkobj SRODATA size=56 + 0x0000 03 00 00 00 00 00 00 00 d8 fe ff ff ff ff ff ff ................ + 0x0010 00 00 00 00 00 00 00 00 e8 fe ff ff ff ff ff ff ................ + 0x0020 00 00 00 00 00 00 00 00 40 ff ff ff ff ff ff ff ........@....... + 0x0030 00 00 00 00 00 00 00 00 ........ + rel 16+8 t=1 type.[1]interface {}+0 + rel 32+8 t=1 type.time.Time+0 + rel 48+8 t=1 type.[4]"".option+0 +gclocals·fdbf1f5761f6d17e8ae3f0aaecb6a3c5 SRODATA dupok size=11 + 0x0000 03 00 00 00 02 00 00 00 03 02 00 ........... +gclocals·6e8d7ea4abad763909b26991048ee1fe SRODATA dupok size=12 + 0x0000 04 00 00 00 02 00 00 00 00 01 03 02 ............ +gclocals·bc41a5648be0e22a9555dec75d49ff55 SRODATA dupok size=11 + 0x0000 03 00 00 00 02 00 00 00 03 00 01 ........... +gclocals·d07539170cfe70ec0221d8dd6595c247 SRODATA dupok size=19 + 0x0000 0b 00 00 00 06 00 00 00 00 01 03 07 05 27 0f 0d .............'.. + 0x0010 2d 02 08 -.. +gclocals·ef6c193a450e4116e290c9970add59e0 SRODATA dupok size=11 + 0x0000 03 00 00 00 02 00 00 00 03 00 02 ........... +gclocals·e877a9ecd51e3dd7b5904c7a30d3955b SRODATA dupok size=16 + 0x0000 08 00 00 00 04 00 00 00 00 01 03 07 0f 05 02 08 ................ +gclocals·1ae2a11c5a98452068a251f0f00a87f5 SRODATA dupok size=12 + 0x0000 04 00 00 00 07 00 00 00 00 01 41 42 ..........AB +gclocals·0d96ff65c729132c997f18eeb5213780 SRODATA dupok size=16 + 0x0000 08 00 00 00 06 00 00 00 00 01 03 0b 2b 09 02 20 ............+.. +gclocals·44c2eefc543ac60499f503ce6118b0f2 SRODATA dupok size=19 + 0x0000 0b 00 00 00 06 00 00 00 00 01 05 07 27 0d 2d 0f ............'.-. + 0x0010 03 02 20 .. +gclocals·dc9b0298814590ca3ffc3a889546fc8b SRODATA dupok size=10 + 0x0000 02 00 00 00 02 00 00 00 03 00 .......... +gclocals·313a5bdbfadc4f007c002a3a3588596d SRODATA dupok size=18 + 0x0000 0a 00 00 00 06 00 00 00 00 01 03 08 28 21 23 22 ............(!#" + 0x0010 24 04 $. +gclocals·77290df25e841177bba194c18c385853 SRODATA dupok size=8 + 0x0000 0f 00 00 00 00 00 00 00 ........ +gclocals·60a9e1a2785891ce997ce56166417af3 SRODATA dupok size=68 + 0x0000 0f 00 00 00 1d 00 00 00 00 00 00 00 40 00 00 00 ............@... + 0x0010 10 00 00 00 10 40 15 00 18 40 15 00 1c 40 15 00 .....@...@...@.. + 0x0020 00 40 15 00 08 40 15 00 0c 40 15 00 00 40 55 15 .@...@...@...@U. + 0x0030 00 00 40 15 01 00 00 00 03 00 00 00 02 00 00 00 ..@............. + 0x0040 00 15 00 00 .... +gclocals·abab27e7e9c1b87ef3036112b9cffd5f SRODATA dupok size=25 + 0x0000 11 00 00 00 07 00 00 00 00 01 02 06 03 04 08 05 ................ + 0x0010 0d 2d 0c 0f 09 40 41 45 0e .-...@AE. +"".BenchmarkLog3.stkobj SRODATA size=56 + 0x0000 03 00 00 00 00 00 00 00 40 ff ff ff ff ff ff ff ........@....... + 0x0010 00 00 00 00 00 00 00 00 50 ff ff ff ff ff ff ff ........P....... + 0x0020 00 00 00 00 00 00 00 00 c0 ff ff ff ff ff ff ff ................ + 0x0030 00 00 00 00 00 00 00 00 ........ + rel 16+8 t=1 type.[1]interface {}+0 + rel 32+8 t=1 type.[3]interface {}+0 + rel 48+8 t=1 type.[4]"".option+0 +gclocals·96482af6bb866125b0892c5f1bd43b54 SRODATA dupok size=10 + 0x0000 02 00 00 00 02 00 00 00 03 01 .......... +gclocals·67725a25a73912be1e4a2d972d9633f1 SRODATA dupok size=11 + 0x0000 03 00 00 00 06 00 00 00 05 01 20 .......... +gclocals·7b8536b40bc5b5558bfde945dd0a5306 SRODATA dupok size=12 + 0x0000 04 00 00 00 07 00 00 00 00 01 40 41 ..........@A +gclocals·bfec7e55b3f043d1941c093912808913 SRODATA dupok size=11 + 0x0000 03 00 00 00 02 00 00 00 00 01 03 ........... +gclocals·077ffb9bbe9f13d75a63ab4dbd295766 SRODATA dupok size=26 + 0x0000 12 00 00 00 04 00 00 00 02 02 02 02 02 02 02 00 ................ + 0x0010 00 00 00 00 00 08 00 02 02 00 .......... +gclocals·0fc9bef872272fcdedc36040c666558e SRODATA dupok size=62 + 0x0000 12 00 00 00 17 00 00 00 00 00 00 10 00 00 18 00 ................ + 0x0010 00 08 00 00 80 00 00 02 00 00 06 00 00 06 00 00 ................ + 0x0020 0e 00 00 07 00 00 07 c0 62 07 c9 62 07 09 00 00 ........b..b.... + 0x0030 00 00 00 00 00 26 00 00 36 00 00 26 00 00 .....&..6..&.. +gclocals·d3d2895a216e4f8a19961333031692c5 SRODATA dupok size=26 + 0x0000 12 00 00 00 07 00 00 00 00 04 01 02 40 42 4a 43 ............@BJC + 0x0010 4b 0b 09 06 41 60 03 48 05 08 K...A`.H.. +"".Error.stkobj SRODATA size=24 + 0x0000 01 00 00 00 00 00 00 00 78 ff ff ff ff ff ff ff ........x....... + 0x0010 00 00 00 00 00 00 00 00 ........ + rel 16+8 t=1 type.interface {}+0 +gclocals·9226cc1448ef485ef7ebdf64b59c75ad SRODATA dupok size=17 + 0x0000 09 00 00 00 07 00 00 00 19 19 19 19 18 18 00 40 ...............@ + 0x0010 19 . +gclocals·56c21be735251dfd83aedeefec888d57 SRODATA dupok size=17 + 0x0000 09 00 00 00 04 00 00 00 00 04 06 07 03 02 00 00 ................ + 0x0010 0c . +gclocals·b7cdce2e93bc7a4c25ad692eb04c9efe SRODATA dupok size=24 + 0x0000 10 00 00 00 08 00 00 00 00 01 02 04 08 40 42 43 .............@BC + 0x0010 46 47 41 0a 48 c8 88 80 FGA.H... +gclocals·a8fa8e0058c6007696f59d9bbb670b62 SRODATA dupok size=12 + 0x0000 04 00 00 00 05 00 00 00 16 14 10 00 ............ +gclocals·f6bd6b3389b872033d462029172c8612 SRODATA dupok size=8 + 0x0000 04 00 00 00 00 00 00 00 ........ +gclocals·ad7b914f16aa3dbacefedffd39a798f4 SRODATA dupok size=12 + 0x0000 04 00 00 00 03 00 00 00 00 01 04 05 ............ +gclocals·663f8c6bfa83aa777198789ce63d9ab4 SRODATA dupok size=11 + 0x0000 03 00 00 00 01 00 00 00 00 01 00 ........... +gclocals·9783710103695d7171ee820ce562d18d SRODATA dupok size=11 + 0x0000 03 00 00 00 01 00 00 00 00 00 01 ........... +gclocals·1cf923758aae2e428391d1783fe59973 SRODATA dupok size=11 + 0x0000 03 00 00 00 02 00 00 00 00 01 02 ........... +"".initStyler.stkobj SRODATA size=0 +gclocals·8fcbe76b16f0e8f09cbaf18979301789 SRODATA dupok size=27 + 0x0000 13 00 00 00 05 00 00 00 16 16 16 14 10 00 16 16 ................ + 0x0010 16 16 16 16 16 16 16 16 16 16 00 ........... +gclocals·8ecccb61eb268598c0d6811fbc4c2e5f SRODATA dupok size=103 + 0x0000 13 00 00 00 24 00 00 00 00 00 00 00 00 00 c0 02 ....$........... + 0x0010 00 00 00 c0 aa aa 0a 00 00 00 00 00 00 00 00 00 ................ + 0x0020 00 00 00 00 00 00 20 c0 02 00 00 a0 c0 02 00 00 ...... ......... + 0x0030 21 c0 02 00 00 31 c0 02 00 00 30 c0 02 00 00 38 !....1....0....8 + 0x0040 c0 02 00 00 28 c0 02 00 00 2c c0 02 00 00 24 c0 ....(....,....$. + 0x0050 02 00 00 24 ca 02 00 00 20 ca 02 00 00 22 c0 02 ...$.... ....".. + 0x0060 00 00 02 00 00 00 00 ....... +gclocals·c13531a48b550a26cc70bd9663ff5c3f SRODATA dupok size=21 + 0x0000 0d 00 00 00 07 00 00 00 00 40 01 02 04 06 08 0a .........@...... + 0x0010 2a 28 20 03 07 *( .. +"".eventWithOptionsCheck.stkobj SRODATA size=72 + 0x0000 04 00 00 00 00 00 00 00 10 ff ff ff ff ff ff ff ................ + 0x0010 00 00 00 00 00 00 00 00 20 ff ff ff ff ff ff ff ........ ....... + 0x0020 00 00 00 00 00 00 00 00 40 ff ff ff ff ff ff ff ........@....... + 0x0030 00 00 00 00 00 00 00 00 70 ff ff ff ff ff ff ff ........p....... + 0x0040 00 00 00 00 00 00 00 00 ........ + rel 16+8 t=1 type.interface {}+0 + rel 32+8 t=1 type.[2]interface {}+0 + rel 48+8 t=1 type.noalg.map.hdr[string]struct {}+0 + rel 64+8 t=1 type.noalg.map.bucket[string]struct {}+0 +gclocals·25f5c6875a96cf91d085ed7be15cbf1f SRODATA dupok size=14 + 0x0000 06 00 00 00 05 00 00 00 16 12 02 02 00 00 .............. +gclocals·0dba15cd530f46f555e5a19b4c02ffeb SRODATA dupok size=20 + 0x0000 06 00 00 00 10 00 00 00 00 00 00 00 00 00 ac fa ................ + 0x0010 ac fa 00 00 .... +gclocals·a46a0bb636e511f60de86e92163c49e2 SRODATA dupok size=17 + 0x0000 09 00 00 00 07 00 00 00 00 02 04 01 21 24 64 05 ............!$d. + 0x0010 44 D +gclocals·22c882573580c59d5b621d44639322c2 SRODATA dupok size=19 + 0x0000 0b 00 00 00 08 00 00 00 16 16 16 16 12 12 10 10 ................ + 0x0010 10 80 00 ... +gclocals·baeb51a9ad6e78505f2c544c3df4b02b SRODATA dupok size=41 + 0x0000 0b 00 00 00 16 00 00 00 00 00 00 04 00 00 24 00 ..............$. + 0x0010 00 04 ab 3e 04 ab 3e 04 00 00 04 00 00 06 00 00 ...>..>......... + 0x0020 07 00 00 00 00 00 00 00 00 ......... +gclocals·64187bcf8fbd7a241fb43fd9263cbdd0 SRODATA dupok size=30 + 0x0000 0b 00 00 00 09 00 00 00 00 00 01 00 02 00 40 00 ..............@. + 0x0010 04 00 0c 00 2c 00 2c 01 03 00 05 00 0b 00 ....,.,....... +"".createEvent.stkobj SRODATA size=24 + 0x0000 01 00 00 00 00 00 00 00 68 ff ff ff ff ff ff ff ........h....... + 0x0010 00 00 00 00 00 00 00 00 ........ + rel 16+8 t=1 type.time.Time+0 +gclocals·900b6239b44cfc46f9e1896d18dd2c90 SRODATA dupok size=84 + 0x0000 13 00 00 00 19 00 00 00 b2 ea 8f 00 00 00 08 01 ................ + 0x0010 00 00 00 01 b2 ea 87 00 b2 ea 07 00 b2 ea 07 00 ................ + 0x0020 b2 ea 07 00 b2 ea 07 00 b2 ea 07 00 b2 ea 07 00 ................ + 0x0030 b2 ea 07 00 b2 ea 07 00 b0 ea 07 00 b0 ea 03 00 ................ + 0x0040 b0 ea 03 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0050 00 00 00 00 .... +gclocals·fa652c4ffa7b101f0526303cef79f0fe SRODATA dupok size=65 + 0x0000 13 00 00 00 15 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x0010 00 00 00 00 00 00 00 04 00 00 06 00 00 86 55 1f ..............U. + 0x0020 96 55 1f 16 00 00 07 00 00 02 00 00 00 00 00 00 .U.............. + 0x0030 00 00 80 55 1f 80 55 1f 90 55 1f 10 00 00 00 00 ...U..U..U...... + 0x0040 00 . +gclocals·823756ff9e990d2d734deaef9cf4c02a SRODATA dupok size=16 + 0x0000 08 00 00 00 07 00 00 00 00 01 40 60 02 04 03 05 ..........@`.... +"".handleStyleError.stkobj SRODATA size=40 + 0x0000 02 00 00 00 00 00 00 00 70 ff ff ff ff ff ff ff ........p....... + 0x0010 00 00 00 00 00 00 00 00 80 ff ff ff ff ff ff ff ................ + 0x0020 00 00 00 00 00 00 00 00 ........ + rel 16+8 t=1 type.[1]interface {}+0 + rel 32+8 t=1 type."".EventData+0 +gclocals·6244c9d580b9767a07e5781209477991 SRODATA dupok size=26 + 0x0000 06 00 00 00 14 00 00 00 b2 ea 07 b2 ea 07 b0 ea ................ + 0x0010 07 00 00 04 00 00 00 00 00 08 .......... +gclocals·94618776347a3eaec579421b33bdf4b6 SRODATA dupok size=20 + 0x0000 06 00 00 00 10 00 00 00 00 00 ac fa 00 00 00 00 ................ + 0x0010 00 00 00 00 .... +gclocals·22af34315935272476cc5da3823dbfde SRODATA dupok size=28 + 0x0000 0a 00 00 00 09 00 00 00 00 00 40 00 60 00 01 00 ..........@.`... + 0x0010 02 00 81 00 81 01 c1 00 e1 00 80 00 ............ +"".styleForMachine.stkobj SRODATA size=24 + 0x0000 01 00 00 00 00 00 00 00 80 ff ff ff ff ff ff ff ................ + 0x0010 00 00 00 00 00 00 00 00 ........ + rel 16+8 t=1 type."".EventData+0 +"".styleForHuman.stkobj SRODATA size=24 + 0x0000 01 00 00 00 00 00 00 00 80 ff ff ff ff ff ff ff ................ + 0x0010 00 00 00 00 00 00 00 00 ........ + rel 16+8 t=1 type."".EventData+0 +gclocals·30dc4a1cf5d268fcef4a8ccf2243acc1 SRODATA dupok size=13 + 0x0000 05 00 00 00 01 00 00 00 01 01 00 00 00 ............. +gclocals·139bb4c7abf5fbe2c48c5e3f8e038ff2 SRODATA dupok size=13 + 0x0000 05 00 00 00 03 00 00 00 00 02 00 02 04 ............. +gclocals·7fc30601da81e27b0382f65a8d424ad8 SRODATA dupok size=14 + 0x0000 06 00 00 00 03 00 00 00 00 02 01 03 04 05 .............. +"".print.stkobj SRODATA size=24 + 0x0000 01 00 00 00 00 00 00 00 e8 ff ff ff ff ff ff ff ................ + 0x0010 00 00 00 00 00 00 00 00 ........ + rel 16+8 t=1 type.[1]interface {}+0 +"".print.opendefer SRODATA dupok size=9 + 0x0000 08 29 01 08 08 01 20 08 00 .).... .. +gclocals·09cf9819fc716118c209c2d2155a3632 SRODATA dupok size=10 + 0x0000 02 00 00 00 02 00 00 00 02 00 .......... +gclocals·765d2c6c57b3d0518b46743a0bf65e42 SRODATA dupok size=12 + 0x0000 04 00 00 00 03 00 00 00 00 04 05 01 ............ diff --git a/main_assembler/main.go b/main_assembler/main.go new file mode 100644 index 0000000..af26329 --- /dev/null +++ b/main_assembler/main.go @@ -0,0 +1,644 @@ +package main + +import ( + "errors" + "fmt" + "net/http" + "strconv" + "time" + + "reflect" + "runtime" + + "context" + "encoding/json" + "flag" + "io" + "os" + + "github.com/ONSdigital/go-ns/common" + prettyjson "github.com/hokaccha/go-prettyjson" +) + +// compile this with: +// go tool compile -S -I $GOPATH/pkg/linux_amd64 main.go >main.asm +// +// to then inspect assembler code in "main.asm" + +/* 2nd May 2020 : + +Observations of assembler code differences for o.attach(&e) compared to switch() +in functions: BenchmarkLog2() and BenchmarkLog3() respectively. +--------------------------------------------------------------------------------- + +The original .go code has FIVE attach() methods: + +func (l *eventAuth) attach(le *EventData) { +func (d Data) attach(le *EventData) { +func (l *EventError) attach(le *EventData) { +func (l *EventHTTP) attach(le *EventData) { +func (s severity) attach(le *EventData) { + +The assembler code for these original functions has EIGHT chunks of code functions: + +"".option.attach STEXT dupok size=100 args=0x18 locals=0x18 + +"".(*Data).attach STEXT dupok size=183 args=0x10 locals=0x18 +"".Data.attach STEXT size=136 args=0x10 locals=0x18 + +"".(*eventAuth).attach STEXT size=84 args=0x10 locals=0x8 + +"".(*EventError).attach STEXT size=84 args=0x10 locals=0x8 + +"".(*EventHTTP).attach STEXT size=84 args=0x10 locals=0x8 + +"".(*severity).attach STEXT dupok size=153 args=0x10 locals=0x18 +"".severity.attach STEXT size=106 args=0x10 locals=0x18 + +-=-=- +TWO different ones for Data & severity ... might suggest that the switch() code i wrote needs two more case's ... hmmm + +And i got no idea what the first "".option.attach is, or how one might us it ... it must come about from the definition of option in log.go : + +type option interface { + attach(*EventData) +} + + +*/ + +func main() { + BenchmarkLog2() + BenchmarkLog3() +} + +func BenchmarkLog2() { + fmt.Println("Benchmarking: 'Log - o.attach'") + err := errors.New("test error") + message1 := "m1" + data1 := "d1" + data2 := "d2" + data3 := "d3" + data4 := "d4" + + var opts [4]option + + opts[0] = INFO + opts[1] = Data{"data_1": data1, "data_2": data2, "data_3": data3, "data_4": data4} + opts[2] = Error(err) + opts[3] = Data{"data_4": data4, "data_2": data2} + + e := EventData{ + CreatedAt: time.Now().UTC(), + Namespace: Namespace, + Event: message1, + } + + // loop around each log option and call its attach method, which takes care + // of the association with the EventData struct + for _, o := range opts { + // Using rare pattern : `thing.attach(toObject)` + // this handles both cases where: + // the receiver can be called either `dataThing.attach(...)` or `ptrToDataThing.attach(...) + o.attach(&e) + } +} + +func BenchmarkLog3() { + fmt.Println("Benchmarking: 'Log - switch'") + err := errors.New("test error") + message1 := "m1" + data1 := "d1" + data2 := "d2" + data3 := "d3" + data4 := "d4" + + var opts [4]option + + opts[0] = INFO + opts[1] = Data{"data_1": data1, "data_2": data2, "data_3": data3, "data_4": data4} + opts[2] = Error(err) + opts[3] = Data{"data_4": data4, "data_2": data2} + + e := EventData{ + CreatedAt: time.Now().UTC(), + Namespace: Namespace, + Event: message1, + } + + // loop around each log option and attach each option + // directly into EventData struct + for _, o := range opts { + // Doing typical pattern : `object.attach(thing)` + switch v := o.(type) { + case severity: + e.Severity = &v + case *severity: // added to match o.attach(e) code for completness (may never be used) + e.Severity = v + case Data: + e.Data = &v + case *Data: // added to match o.attach(e) code for completness (may never be used) + e.Data = v + case *EventHTTP: + e.HTTP = v + case *EventError: + e.Error = v + case *eventAuth: + e.Auth = v + default: + fmt.Printf("option: %v, %v, %T", o, v, v) + panic("unknown option") + } + } +} + +//////////// pull in code from log.go to get compile with assembler output to play ball + +// from : auth.go //////////////////////////// + +type eventAuth struct { + Identity string `json:"identity,omitempty"` + IdentityType identityType `json:"identity_type,omitempty"` +} + +type identityType string + +const ( + // SERVICE represents a service account type + SERVICE identityType = "service" + // USER represents a user account type + USER identityType = "user" +) + +func (l *eventAuth) attach(le *EventData) { + le.Auth = l +} + +// Auth returns an option you can pass to Event to include identity information, +// for example the identity type and user/service ID from an inbound HTTP request +func Auth(identityType identityType, identity string) option { + return &eventAuth{ + Identity: identity, + IdentityType: identityType, + } +} + +// from : data.go //////////////////////////// + +// Data can be used to include arbitrary key/value pairs +// in the structured log output. +// +// This should only be used where a predefined field isn't +// already available, since data included in a Data{} value +// isn't easily indexable. +// +// You can also create nested log data, for example: +// Data { +// "key": Data{}, +// } +type Data map[string]interface{} + +func (d Data) attach(le *EventData) { + le.Data = &d +} + +// from : error.go //////////////////////////// + +// EventError is the data structure used for logging a error event. +// +// It isn't very useful to export, other than for documenting the +// data structure it outputs. +type EventError struct { + Error string `json:"error,omitempty"` + StackTrace []EventStackTrace `json:"stack_trace,omitempty"` + // This uses interface{} type, but should always be a type of kind struct + // (which serialises to map[string]interface{}) + // See `func Error` switch block for more info + Data interface{} `json:"data,omitempty"` +} + +// EventStackTrace is the data structure used for logging a stack trace. +// +// It isn't very useful to export, other than for documenting the +// data structure it outputs. +type EventStackTrace struct { + File string `json:"file,omitempty"` + Line int `json:"line,omitempty"` + Function string `json:"function,omitempty"` +} + +func (l *EventError) attach(le *EventData) { + le.Error = l +} + +// Error returns an option you can pass to Event to attach +// error information to a log event +// +// It uses error.Error() to stringify the error value +// +// It also includes the error type itself as unstructured log +// data. For a struct{} type, it is included directly. For all +// other types, it is wrapped in a Data{} struct +// +// It also includes a full strack trace to where Error() is called, +// so you shouldn't normally store a log.Error for reuse (e.g. as a +// package level variable) +func Error(err error) option { + e := &EventError{ + Error: err.Error(), + StackTrace: make([]EventStackTrace, 0), + } + + k := reflect.Indirect(reflect.ValueOf(err)).Type().Kind() + switch k { + case reflect.Struct: + // We've got a struct type, so make it the top level value + e.Data = err + default: + // We have something else, so nest it inside a Data value + e.Data = Data{"value": err} + } + + pc := make([]uintptr, 10) + n := runtime.Callers(2, pc) + if n > 0 { + frames := runtime.CallersFrames(pc[:n]) + + for { + frame, more := frames.Next() + + e.StackTrace = append(e.StackTrace, EventStackTrace{ + File: frame.File, + Line: frame.Line, + Function: frame.Function, + }) + + if !more { + break + } + } + } + + return e +} + +// from : http.go ////////////////////////////// + +// EventHTTP is the data structure used for logging a HTTP event. +// +// It isn't very useful to export, other than for documenting the +// data structure it outputs. +type EventHTTP struct { + StatusCode *int `json:"status_code,omitempty"` + Method string `json:"method,omitempty"` + + // URL data + Scheme string `json:"scheme,omitempty"` + Host string `json:"host,omitempty"` + Port int `json:"port,omitempty"` + Path string `json:"path,omitempty"` + Query string `json:"query,omitempty"` + + // Timing data + StartedAt *time.Time `json:"started_at,omitempty"` + EndedAt *time.Time `json:"ended_at,omitempty"` + Duration *time.Duration `json:"duration,omitempty"` + ResponseContentLength int64 `json:"response_content_length,omitempty"` +} + +func (l *EventHTTP) attach(le *EventData) { + le.HTTP = l +} + +// HTTP returns an option you can pass to Event to log HTTP +// request data with a log event. +// +// It converts the port number to a integer if possible, otherwise +// the port number is 0. +// +// It splits the URL into its component parts, and stores the scheme, +// host, port, path and query string individually. +// +// It also calculates the duration if both startedAt and endedAt are +// passed in, for example when wrapping a http.Handler. +func HTTP(req *http.Request, statusCode int, responseContentLength int64, startedAt, endedAt *time.Time) option { + port := 0 + if p := req.URL.Port(); len(p) > 0 { + port, _ = strconv.Atoi(p) + } + + var duration *time.Duration + if startedAt != nil && endedAt != nil { + d := endedAt.Sub(*startedAt) + duration = &d + } + + return &EventHTTP{ + StatusCode: &statusCode, + Method: req.Method, + + Scheme: req.URL.Scheme, + Host: req.URL.Hostname(), + Port: port, + Path: req.URL.Path, + Query: req.URL.RawQuery, + + StartedAt: startedAt, + EndedAt: endedAt, + Duration: duration, + ResponseContentLength: responseContentLength, + } +} + +// from : log.go ///////////////////////// + +// Namespace is the log namespace included with every log event. +// +// It defaults to the application binary name, but this should +// normally be set to a more sensible name on application startup +var Namespace = os.Args[0] + +var destination io.Writer = os.Stdout +var fallbackDestination io.Writer = os.Stderr + +var isTestMode bool + +var eventWithOptionsCheckFunc = &eventFunc{eventWithOptionsCheck} +var eventWithoutOptionsCheckFunc = &eventFunc{eventWithoutOptionsCheck} +var eventFuncInst = initEvent() + +var styleForHumanFunc = &styleFunc{styleForHuman} +var styleForMachineFunc = &styleFunc{styleForMachine} + +// Event logs an event, to STDOUT if possible, or STDERR if not. +// +// Context can be nil. +// +// An event string should be static strings which do not use +// concatenation or Sprintf, e.g. +// "connecting to database" +// rather than +// "connecting to database: " + databaseURL +// +// Additional data should be stored using Data{} +// +// You can also pass in additional options which log extra event +// data, for example using the HTTP, Auth, Severity, Data and Error +// functions. +// +// log.Event(nil, "connecting to database", log.Data{"url": databaseURL}) +// +// If HUMAN_LOG environment variable is set to a true value (true, TRUE, 1) +// the log output will be syntax highlighted pretty printed JSON. Otherwise, +// the output is JSONLines format, with one JSON object per line. +// +// When running tests, Event will panic if the same option is passed +// in multiple times, for example: +// +// log.Event(nil, "event", log.Data{}, log.Data{}) +// +// It doesn't panic in normal usage because checking for duplicate entries +// is expensive. Where this happens, options to the right take precedence, +// for example: +// +// log.Event(nil, "event", log.Data{"a": 1}, log.Data{"a": 2}) +// // data.a = 2 +// +func Event(ctx context.Context, event string, opts ...option) { + eventFuncInst.f(ctx, event, opts...) +} + +func initEvent() *eventFunc { + // If we're in test mode, replace the Event function with one + // that has additional checks to find repeated event option types + // + // In test mode, a log event like this will result in a panic: + // + // log.Event(nil, "demo", log.FATAL, log.WARN, log.ERROR) + // + // A flag called `test.v` is added by `go test`, so we can rely + // on that to detect test mode. + if flag.Lookup("test.v") != nil { + isTestMode = true + return eventWithOptionsCheckFunc + } + + isTestMode = false + return eventWithoutOptionsCheckFunc +} + +var styler = initStyler() + +func initStyler() *styleFunc { + // If HUMAN_LOG is enabled, replace the default styler with a + // human readable styler + if b, _ := strconv.ParseBool(os.Getenv("HUMAN_LOG")); b { + return styleForHumanFunc + } + + return styleForMachineFunc +} + +// eventFunc is a function which handles log events +type eventFunc struct { + f func(ctx context.Context, event string, opts ...option) +} +type styleFunc = struct { + f func(ctx context.Context, e EventData, ef eventFunc) []byte +} + +// option is the interface which log options passed to eventFunc must match +// +// there's no point exporting this since it would require changes to the +// EventData struct (unless it forces data into log.Data or some other field, +// but we probably don't want that) +type option interface { + attach(*EventData) +} + +// EventData is the data structure used for logging an event +// +// It is the top level structure which contains all other log event data. +// +// It isn't very useful to export, other than for documenting the +// data structure it outputs. +type EventData struct { + // Required fields + CreatedAt time.Time `json:"created_at"` + Namespace string `json:"namespace"` + Event string `json:"event"` + + // Optional fields + TraceID string `json:"trace_id,omitempty"` + SpanID string `json:"span_id,omitempty"` + Severity *severity `json:"severity,omitempty"` + + // Optional nested data + HTTP *EventHTTP `json:"http,omitempty"` + Auth *eventAuth `json:"auth,omitempty"` + Data *Data `json:"data,omitempty"` + + // Error data + Error *EventError `json:"error,omitempty"` +} + +// eventWithOptionsCheck is the event function used when running tests, and +// will panic if the same log option is passed in multiple times +// +// It is only used during tests because of the runtime performance overhead +func eventWithOptionsCheck(ctx context.Context, event string, opts ...option) { + var optMap = make(map[string]struct{}) + for _, o := range opts { + t := reflect.TypeOf(o) + p := fmt.Sprintf("%s.%s", t.PkgPath(), t.Name()) + if _, ok := optMap[p]; ok { + panic("can't pass in the same parameter type multiple times: " + p) + } + optMap[p] = struct{}{} + } + + eventWithoutOptionsCheckFunc.f(ctx, event, opts...) +} + +var output []byte + +// eventWithoutOptionsCheck is the event function used when we're not running tests +// +// It doesn't do any log options checks to minimise the runtime performance overhead +func eventWithoutOptionsCheck(ctx context.Context, event string, opts ...option) { + // output = styler.f(ctx, *createEvent(ctx, event, opts...), eventFunc{eventWithoutOptionsCheck}) + print(styler.f(ctx, *createEvent(ctx, event, opts...), eventFunc{eventWithoutOptionsCheck})) + // print(output) +} + +// createEvent creates a new event struct and attaches the options to it +func createEvent(ctx context.Context, event string, opts ...option) *EventData { + e := EventData{ + CreatedAt: time.Now().UTC(), + Namespace: Namespace, + Event: event, + } + + if ctx != nil { + e.TraceID = common.GetRequestId(ctx) + } + + // loop around each log option and call its attach method, which takes care + // of the association with the EventData struct + for _, o := range opts { + // o.attach(&e) + switch v := o.(type) { // OR do assignments directly ... + case severity: + e.Severity = &v + case *severity: // added to match o.attach(e) code for completness (may never be used) + e.Severity = v + case Data: + e.Data = &v + case *Data: // added to match o.attach(e) code for completness (may never be used) + e.Data = v + case *EventHTTP: + e.HTTP = v + case *EventError: + e.Error = v + case *eventAuth: + e.Auth = v + // default: + // fmt.Printf("option: %v, %v, %T", o, v, v) + // panic("unknown option") + } + } + + return &e +} + +// handleStyleError handles any errors from JSON marshalling in one of the styler functions +func handleStyleError(ctx context.Context, e EventData, ef eventFunc, b []byte, err error) []byte { + if err != nil { + // marshalling failed, so we'll log a marshalling error and use Sprintf + // to get some kind of text representation of the log data + // + // other than out of memory errors, marshalling can only fail for an unsupported type + // e.g. using log.Data and passing in an io.Reader + // + // to avoid this becoming recursive, only pass primitive types in this line (string, int, etc) + // + // note: Error(err) currently ignores this constraint, but it's expected that the `err` + // passed in by the caller will have come from json.Marshal or prettyjson.Marshal + // which don't marshal any non-marshallable types anyway + ef.f(ctx, "error marshalling event data", Error(err), Data{"event_data": fmt.Sprintf("%+v", e)}) + + // if we're in test mode, we'll also panic to cause tests to fail + if isTestMode { + // don't capture and reuse fmt.Sprintf output above for this, since that adds + // a performance/memory overhead, and reuse is only required in test mode + panic("error marshalling event data: " + fmt.Sprintf("%+v", e)) + } + + return []byte{} + } + + return b +} + +// styleForMachine renders the event data in JSONLine format +func styleForMachine(ctx context.Context, e EventData, ef eventFunc) []byte { + b, err := json.Marshal(e) + + return handleStyleError(ctx, e, ef, b, err) +} + +// styleForHuman renders the event data in a human readable format +func styleForHuman(ctx context.Context, e EventData, ef eventFunc) []byte { + b, err := prettyjson.Marshal(e) + + return handleStyleError(ctx, e, ef, b, err) +} + +func print(b []byte) { + if len(b) == 0 { + return + } + + // try and write to stdout + if n, err := fmt.Fprintln(destination, string(b)); n != len(b)+1 || err != nil { + // if that fails, try and write to stderr + if n, err := fmt.Fprintln(fallbackDestination, string(b)); n != len(b)+1 || err != nil { + // if that fails, panic! + // + // also defer an os.Exit since the panic might be captured in a recover + // block in the caller, but we always want to exit in this scenario + // + // Note: deferring an os.Exit makes this particular block untestable + // using conventional `go test`. But it's a narrow enough edge case that + // it probably isn't worth trying, and only occurs in extreme circumstances + // (os.Stdout and os.Stderr both being closed) where unpredictable + // behaviour is expected. It's not clear what a panic or os.Exit would do + // in this scenario, or if our process is even still alive to get this far. + defer os.Exit(1) + panic("error writing log data: " + err.Error()) + } + } +} + +// from : severity.go ///////////////////// + +const ( + // FATAL is an option you can pass to Event to specify a severity of FATAL/0 + FATAL severity = 0 + // ERROR is an option you can pass to Event to specify a severity of ERROR/1 + ERROR severity = 1 + // WARN is an option you can pass to Event to specify a severity of WARN/2 + WARN severity = 2 + // INFO is an option you can pass to Event to specify a severity of INFO/3 + INFO severity = 3 +) + +// severity is the log severity level +// +// we don't export this because we don't want the caller +// to define their own severity levels +type severity int + +func (s severity) attach(le *EventData) { + le.Severity = &s +} diff --git a/main_assembler/runtime-stack.txt b/main_assembler/runtime-stack.txt new file mode 100644 index 0000000..d073aca --- /dev/null +++ b/main_assembler/runtime-stack.txt @@ -0,0 +1,48 @@ +14th May 2020 + +I did some searches and found a REALLY good blog article thing from uber: + +https://eng.uber.com/optimizing-m3/ + +Highly recommended reading to help one consider the code one writes for 'high performance' web servers ... + +The Uber article talks about a runtime function: runtime.morestack + +... So ... Hmmm ... + +Lets go back and have a look at the assembler output for my Benchmarking of the o.attach(&e) ... + +to see if the methods called invoke "runtime.morestack" ... + +And indeed, some of them do ... + +Whereas when i inspect the assembler code for the switch{} code, i can not see any such checks (just one check for the overall function that inlines the switch code ... which is NOT an extra check) + +Assembler code for switch starts: + https://github.com/redhug1/log.go/blob/8f87877b09ee4627b1b198dd8d412e712dcdf3c9/main_assembler/main.asm#L4997 + +The Go code for above: + https://github.com/redhug1/log.go/blob/8f87877b09ee4627b1b198dd8d412e712dcdf3c9/main_assembler/main.go#L524 + +Example of assembler code for o.attach(&e) for eventAuth: +The assembler code for the function : + + func (l *eventAuth) attach(le *EventData) { + le.Auth = l + } +Starts: + https://github.com/redhug1/log.go/blob/8f87877b09ee4627b1b198dd8d412e712dcdf3c9/main_assembler/main.asm#L2692 + +and it makes a call to runtime.morestack_noctxt(SB) at line: + https://github.com/redhug1/log.go/blob/8f87877b09ee4627b1b198dd8d412e712dcdf3c9/main_assembler/main.asm#L2731 + + +Thus the switch{} code [ from the perspective of high performance server code ] is better than the o.attach(&e) code +because it grows the stack less and thus minimises calls to "runtime.morestack" which might need to tip the size of the stack +to be doubled ... it all depends on the call stack depth in the production code. + +This is all explained extremely well in the Uber article. + + +& therefore switch{} code should be the preferred choice ... +