// +build ignore,OMIT

package main

import (
	"log"
	"net/http"
)

func main() {
	b := []byte(jsonBlob)
	err := http.ListenAndServe(":80", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
		w.Write(b)
	}))
	log.Fatal(err)
}

const jsonBlob = `{"data":{"after":"t3_ubvcv","before":null,"children":[{"data":{"approved_by":null,"author":"bockris","author_flair_css_class":null,"author_flair_text":null,"banned_by":null,"clicked":false,"created":1.340311589e+09,"created_utc":1.340286389e+09,"domain":"research.swtch.com","downs":0,"edited":false,"hidden":false,"id":"vdq4f","is_self":false,"likes":null,"link_flair_css_class":null,"link_flair_text":null,"media":null,"media_embed":{},"name":"t3_vdq4f","num_comments":0,"num_reports":null,"over_18":false,"permalink":"/r/golang/comments/vdq4f/researchrsc_a_tour_of_go/","saved":false,"score":9,"selftext":"","selftext_html":null,"subreddit":"golang","subreddit_id":"t5_2rc7j","thumbnail":"","title":"research!rsc: A Tour of Go","ups":9,"url":"http://research.swtch.com/gotour"},"kind":"t3"},{"data":{"approved_by":null,"author":"HornedKavu","author_flair_css_class":null,"author_flair_text":null,"banned_by":null,"clicked":false,"created":1.340120634e+09,"created_utc":1.340095434e+09,"domain":"blog.davidsingleton.org","downs":4,"edited":false,"hidden":false,"id":"v9onh","is_self":false,"likes":null,"link_flair_css_class":null,"link_flair_text":null,"media":null,"media_embed":{},"name":"t3_v9onh","num_comments":1,"num_reports":null,"over_18":false,"permalink":"/r/golang/comments/v9onh/parsing_huge_xml_files_with_go/","saved":false,"score":34,"selftext":"","selftext_html":null,"subreddit":"golang","subreddit_id":"t5_2rc7j","thumbnail":"","title":"Parsing huge XML files with Go","ups":38,"url":"http://blog.davidsingleton.org/parsing-huge-xml-files-with-go/"},"kind":"t3"},{"data":{"approved_by":null,"author":"DavidScone","author_flair_css_class":null,"author_flair_text":null,"banned_by":null,"clicked":false,"created":1.340115741e+09,"created_utc":1.340115741e+09,"domain":"lawlessguy.wordpress.com","downs":1,"edited":false,"hidden":false,"id":"v9z0i","is_self":false,"likes":null,"link_flair_css_class":null,"link_flair_text":null,"media":null,"media_embed":{},"name":"t3_v9z0i","num_comments":10,"num_reports":null,"over_18":false,"permalink":"/r/golang/comments/v9z0i/prelude_to_an_embeddable_programming_language_in/","saved":false,"score":5,"selftext":"","selftext_html":null,"subreddit":"golang","subreddit_id":"t5_2rc7j","thumbnail":"","title":"Prelude to an Embeddable Programming Language in Go (Golang)","ups":6,"url":"http://lawlessguy.wordpress.com/2012/06/19/prelude-to-an-embeddable-programming-language-in-go-golang/"},"kind":"t3"},{"data":{"approved_by":null,"author":"dgryski","author_flair_css_class":null,"author_flair_text":null,"banned_by":null,"clicked":false,"created":1.339783575e+09,"created_utc":1.339783575e+09,"domain":"arxiv.org","downs":0,"edited":false,"hidden":false,"id":"v3rlk","is_self":false,"likes":null,"link_flair_css_class":null,"link_flair_text":null,"media":null,"media_embed":{},"name":"t3_v3rlk","num_comments":2,"num_reports":null,"over_18":false,"permalink":"/r/golang/comments/v3rlk/time_warp_on_the_go_pdf/","saved":false,"score":12,"selftext":"","selftext_html":null,"subreddit":"golang","subreddit_id":"t5_2rc7j","thumbnail":"","title":"Time Warp on the Go [PDF]","ups":12,"url":"http://arxiv.org/abs/1206.2772"},"kind":"t3"},{"data":{"approved_by":null,"author":"enneff","author_flair_css_class":null,"author_flair_text":null,"banned_by":null,"clicked":false,"created":1.339650531e+09,"created_utc":1.339650531e+09,"domain":"groups.google.com","downs":3,"edited":false,"hidden":false,"id":"v16zb","is_self":false,"likes":null,"link_flair_css_class":null,"link_flair_text":null,"media":null,"media_embed":{},"name":"t3_v16zb","num_comments":6,"num_reports":null,"over_18":false,"permalink":"/r/golang/comments/v16zb/go_102_is_out/","saved":false,"score":55,"selftext":"","selftext_html":null,"subreddit":"golang","subreddit_id":"t5_2rc7j","thumbnail":"","title":"Go 1.0.2 is out!","ups":58,"url":"https://groups.google.com/d/msg/golang-nuts/YOYs04O9Tes/MjBJoksRBmQJ"},"kind":"t3"},{"data":{"approved_by":null,"author":"crosone","author_flair_css_class":null,"author_flair_text":null,"banned_by":null,"clicked":false,"created":1.339700883e+09,"created_utc":1.339700883e+09,"domain":"self.golang","downs":0,"edited":false,"hidden":false,"id":"v23qr","is_self":true,"likes":null,"link_flair_css_class":null,"link_flair_text":null,"media":null,"media_embed":{},"name":"t3_v23qr","num_comments":3,"num_reports":null,"over_18":false,"permalink":"/r/golang/comments/v23qr/confusion_over_type_assertions_against_interfaces/","saved":false,"score":8,"selftext":"My question revolves around [this code](http://play.golang.org/p/DkbkZgHbUz).\n\nThe upshot is that, from what I interpret from the spec, performing a type assertion on either another interface or a static type is valid.  However, compiling fails when I attempt to do an assertion on a static type of a variable.\n\nI'm pretty certain that I've misunderstood what I've read in the spec.  However, if anyone could shed some light on why this cannot be done I'd be very grateful.\n\n","selftext_html":"&lt;!-- SC_OFF --&gt;&lt;div class=\"md\"&gt;&lt;p&gt;My question revolves around &lt;a href=\"http://play.golang.org/p/DkbkZgHbUz\"&gt;this code&lt;/a&gt;.&lt;/p&gt;\n\n&lt;p&gt;The upshot is that, from what I interpret from the spec, performing a type assertion on either another interface or a static type is valid.  However, compiling fails when I attempt to do an assertion on a static type of a variable.&lt;/p&gt;\n\n&lt;p&gt;I&amp;#39;m pretty certain that I&amp;#39;ve misunderstood what I&amp;#39;ve read in the spec.  However, if anyone could shed some light on why this cannot be done I&amp;#39;d be very grateful.&lt;/p&gt;\n&lt;/div&gt;&lt;!-- SC_ON --&gt;","subreddit":"golang","subreddit_id":"t5_2rc7j","thumbnail":"","title":"Confusion over type assertions against interfaces.","ups":8,"url":"http://www.reddit.com/r/golang/comments/v23qr/confusion_over_type_assertions_against_interfaces/"},"kind":"t3"}],"modhash":""},"kind":"Listing"}`
