package WebshellDetector

import (
	"bytes"
	"log"
	"testing"
)

func Test_SampleMatcher_New(t *testing.T) {
	sampleMatcherStream, err := Asset("static/model-latest/SampleHash.txt")
	if err != nil {
		log.Fatal(err)
	}
	sampleMatcherStreamReader := bytes.NewReader(sampleMatcherStream)
	_, err = newSampleMatcher(sampleMatcherStreamReader)
	if err != nil {
		t.Error(err.Error())
	}
}

func Test_SampleMatcher_Match(t *testing.T) {
	sampleMatcherStream, err := Asset("static/model-latest/SampleHash.txt")
	if err != nil {
		log.Fatal(err)
	}
	sampleMatcherStreamReader := bytes.NewReader(sampleMatcherStream)
	matcher, err := newSampleMatcher(sampleMatcherStreamReader)
	isMatched, err := matcher.Match([]byte{10, 60, 33, 45, 45, 10, 10, 47, 43, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 43, 92, 10, 32, 124, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 75, 65, 95, 117, 83, 104, 101, 108, 108, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 124, 10, 32, 124, 32, 32, 32, 32, 60, 75, 65, 100, 111, 116, 32, 85, 110, 105, 118, 101, 114, 115, 97, 108, 32, 83, 104, 101, 108, 108, 62, 32, 32, 32, 32, 32, 124, 10, 32, 124, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 101, 114, 115, 105, 111, 110, 32, 48, 46, 49, 46, 54, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 124, 10, 32, 124, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 49, 51, 46, 48, 51, 46, 48, 52, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 124, 10, 32, 124, 32, 32, 65, 117, 116, 104, 111, 114, 58, 32, 75, 65, 100, 111, 116, 32, 60, 75, 65, 100, 111, 116, 64, 110, 103, 115, 46, 114, 117, 62, 32, 32, 124, 10, 32, 124, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 124, 10, 92, 43, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 43, 47, 10, 10, 45, 45, 62, 10, 60, 104, 116, 109, 108, 62, 10, 60, 104, 101, 97, 100, 62, 10, 60, 116, 105, 116, 108, 101, 62, 75, 65, 95, 117, 83, 104, 101, 108, 108, 32, 48, 46, 49, 46, 54, 60, 47, 116, 105, 116, 108, 101, 62, 10, 60, 115, 116, 121, 108, 101, 32, 116, 121, 112, 101, 61, 34, 116, 101, 120, 116, 47, 99, 115, 115, 34, 62, 10, 60, 33, 45, 45, 10, 98, 111, 100, 121, 44, 32, 116, 97, 98, 108, 101, 123, 102, 111, 110, 116, 45, 102, 97, 109, 105, 108, 121, 58, 86, 101, 114, 100, 97, 110, 97, 59, 32, 102, 111, 110, 116, 45, 115, 105, 122, 101, 58, 49, 50, 112, 120, 59, 125, 10, 116, 97, 98, 108, 101, 32, 123, 98, 97, 99, 107, 103, 114, 111, 117, 110, 100, 45, 99, 111, 108, 111, 114, 58, 35, 69, 65, 69, 65, 69, 65, 59, 32, 98, 111, 114, 100, 101, 114, 45, 119, 105, 100, 116, 104, 58, 48, 112, 120, 59, 125, 10, 98, 32, 123, 102, 111, 110, 116, 45, 102, 97, 109, 105, 108, 121, 58, 65, 114, 105, 97, 108, 59, 32, 102, 111, 110, 116, 45, 115, 105, 122, 101, 58, 49, 53, 112, 120, 59, 125, 10, 97, 123, 116, 101, 120, 116, 45, 100, 101, 99, 111, 114, 97, 116, 105, 111, 110, 58, 110, 111, 110, 101, 59, 125, 10, 45, 45, 62, 10, 60, 47, 115, 116, 121, 108, 101, 62, 10, 60, 47, 104, 101, 97, 100, 62, 10, 60, 98, 111, 100, 121, 62, 10, 10, 60, 63, 112, 104, 112, 10, 36, 115, 101, 108, 102, 32, 61, 32, 36, 95, 83, 69, 82, 86, 69, 82, 91, 39, 80, 72, 80, 95, 83, 69, 76, 70, 39, 93, 59, 10, 36, 100, 111, 99, 114, 32, 61, 32, 36, 95, 83, 69, 82, 86, 69, 82, 91, 39, 68, 79, 67, 85, 77, 69, 78, 84, 95, 82, 79, 79, 84, 39, 93, 59, 10, 36, 115, 101, 114, 110, 32, 61, 32, 36, 95, 83, 69, 82, 86, 69, 82, 91, 39, 83, 69, 82, 86, 69, 82, 95, 78, 65, 77, 69, 39, 93, 59, 10, 36, 116, 101, 110, 100, 32, 61, 32, 34, 60, 47, 116, 114, 62, 60, 47, 102, 111, 114, 109, 62, 60, 47, 116, 97, 98, 108, 101, 62, 60, 98, 114, 62, 60, 98, 114, 62, 60, 98, 114, 62, 60, 98, 114, 62, 34, 59, 10, 10, 47, 47, 32, 67, 111, 110, 102, 105, 103, 117, 114, 97, 116, 105, 111, 110, 10, 36, 108, 111, 103, 105, 110, 32, 61, 32, 34, 110, 111, 116, 32, 97, 100, 109, 105, 110, 34, 59, 10, 36, 112, 97, 115, 115, 32, 61, 32, 34, 110, 111, 116, 32, 49, 50, 51, 34, 59, 10, 10, 10, 47, 42, 47, 32, 65, 117, 116, 104, 101, 110, 116, 105, 99, 97, 116, 105, 111, 110, 10, 105, 102, 32, 40, 33, 105, 115, 115, 101, 116, 40, 36, 95, 83, 69, 82, 86, 69, 82, 91, 39, 80, 72, 80, 95, 65, 85, 84, 72, 95, 85, 83, 69, 82, 39, 93, 41, 41, 32, 123, 10, 104, 101, 97, 100, 101, 114, 40, 39, 87, 87, 87, 45, 65, 117, 116, 104, 101, 110, 116, 105, 99, 97, 116, 101, 58, 32, 66, 97, 115, 105, 99, 32, 114, 101, 97, 108, 109, 61, 34, 75, 65, 95, 117, 83, 104, 101, 108, 108, 34, 39, 41, 59, 10, 104, 101, 97, 100, 101, 114, 40, 39, 72, 84, 84, 80, 47, 49, 46, 48, 32, 52, 48, 49, 32, 85, 110, 97, 117, 116, 104, 111, 114, 105, 122, 101, 100, 39, 41, 59, 10, 101, 120, 105, 116, 59, 125, 10, 10, 101, 108, 115, 101, 32, 123, 10, 105, 102, 40, 101, 109, 112, 116, 121, 40, 36, 95, 83, 69, 82, 86, 69, 82, 91, 39, 80, 72, 80, 95, 65, 85, 84, 72, 95, 80, 87, 39, 93, 41, 32, 124, 124, 32, 36, 95, 83, 69, 82, 86, 69, 82, 91, 39, 80, 72, 80, 95, 65, 85, 84, 72, 95, 80, 87, 39, 93, 60, 62, 36, 112, 97, 115, 115, 32, 124, 124, 32, 101, 109, 112, 116, 121, 40, 36, 95, 83, 69, 82, 86, 69, 82, 91, 39, 80, 72, 80, 95, 65, 85, 84, 72, 95, 85, 83, 69, 82, 39, 93, 41, 32, 124, 124, 32, 36, 95, 83, 69, 82, 86, 69, 82, 91, 39, 80, 72, 80, 95, 65, 85, 84, 72, 95, 85, 83, 69, 82, 39, 93, 60, 62, 36, 108, 111, 103, 105, 110, 41, 10, 123, 32, 101, 99, 104, 111, 32, 34, 239, 191, 189, 239, 191, 189, 239, 191, 189, 32, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 63, 34, 59, 32, 101, 120, 105, 116, 59, 125, 10, 125, 10, 42, 47, 10, 10, 10, 10, 105, 102, 32, 40, 33, 101, 109, 112, 116, 121, 40, 36, 95, 71, 69, 84, 91, 39, 97, 99, 39, 93, 41, 41, 32, 123, 36, 97, 99, 32, 61, 32, 36, 95, 71, 69, 84, 91, 39, 97, 99, 39, 93, 59, 125, 10, 101, 108, 115, 101, 105, 102, 32, 40, 33, 101, 109, 112, 116, 121, 40, 36, 95, 80, 79, 83, 84, 91, 39, 97, 99, 39, 93, 41, 41, 32, 123, 36, 97, 99, 32, 61, 32, 36, 95, 80, 79, 83, 84, 91, 39, 97, 99, 39, 93, 59, 125, 10, 101, 108, 115, 101, 32, 123, 36, 97, 99, 32, 61, 32, 34, 115, 104, 101, 108, 108, 34, 59, 125, 10, 10, 47, 47, 32, 77, 101, 110, 117, 10, 101, 99, 104, 111, 32, 34, 10, 124, 60, 97, 32, 104, 114, 101, 102, 61, 36, 115, 101, 108, 102, 63, 97, 99, 61, 115, 104, 101, 108, 108, 62, 83, 104, 101, 108, 108, 60, 47, 97, 62, 124, 10, 124, 60, 97, 32, 104, 114, 101, 102, 61, 36, 115, 101, 108, 102, 63, 97, 99, 61, 117, 112, 108, 111, 97, 100, 62, 70, 105, 108, 101, 32, 85, 112, 108, 111, 97, 100, 60, 47, 97, 62, 124, 10, 124, 60, 97, 32, 104, 114, 101, 102, 61, 36, 115, 101, 108, 102, 63, 97, 99, 61, 116, 111, 111, 108, 115, 62, 84, 111, 111, 108, 115, 60, 47, 97, 62, 124, 10, 124, 60, 97, 32, 104, 114, 101, 102, 61, 36, 115, 101, 108, 102, 63, 97, 99, 61, 101, 118, 97, 108, 62, 80, 72, 80, 32, 69, 118, 97, 108, 32, 67, 111, 100, 101, 60, 47, 97, 62, 124, 10, 124, 60, 97, 32, 104, 114, 101, 102, 61, 36, 115, 101, 108, 102, 63, 97, 99, 61, 119, 104, 111, 105, 115, 62, 87, 104, 111, 105, 115, 60, 47, 97, 62, 124, 10, 60, 98, 114, 62, 60, 98, 114, 62, 60, 98, 114, 62, 60, 112, 114, 101, 62, 34, 59, 10, 10, 10, 115, 119, 105, 116, 99, 104, 40, 36, 97, 99, 41, 32, 123, 10, 10, 47, 47, 32, 83, 104, 101, 108, 108, 10, 99, 97, 115, 101, 32, 34, 115, 104, 101, 108, 108, 34, 58, 10, 10, 101, 99, 104, 111, 32, 60, 60, 60, 72, 84, 77, 76, 10, 60, 98, 62, 83, 104, 101, 108, 108, 60, 47, 98, 62, 10, 60, 116, 97, 98, 108, 101, 62, 10, 60, 102, 111, 114, 109, 32, 97, 99, 116, 105, 111, 110, 61, 34, 36, 115, 101, 108, 102, 34, 32, 109, 101, 116, 104, 111, 100, 61, 34, 80, 79, 83, 84, 34, 62, 10, 60, 105, 110, 112, 117, 116, 32, 116, 121, 112, 101, 61, 34, 104, 105, 100, 100, 101, 110, 34, 32, 110, 97, 109, 101, 61, 34, 97, 99, 34, 32, 118, 97, 108, 117, 101, 61, 34, 115, 104, 101, 108, 108, 34, 62, 10, 60, 116, 114, 62, 60, 116, 100, 62, 10, 36, 36, 115, 101, 114, 110, 32, 60, 105, 110, 112, 117, 116, 32, 115, 105, 122, 101, 61, 34, 53, 48, 34, 32, 116, 121, 112, 101, 61, 34, 116, 101, 120, 116, 34, 32, 110, 97, 109, 101, 61, 34, 99, 34, 62, 60, 105, 110, 112, 117, 116, 32, 97, 108, 105, 103, 110, 61, 34, 114, 105, 103, 104, 116, 34, 32, 116, 121, 112, 101, 61, 34, 115, 117, 98, 109, 105, 116, 34, 32, 118, 97, 108, 117, 101, 61, 34, 69, 110, 116, 101, 114, 34, 62, 10, 60, 47, 116, 100, 62, 60, 47, 116, 114, 62, 10, 60, 116, 114, 62, 60, 116, 100, 62, 10, 60, 116, 101, 120, 116, 97, 114, 101, 97, 32, 99, 111, 108, 115, 61, 34, 49, 48, 48, 34, 32, 114, 111, 119, 115, 61, 34, 50, 53, 34, 62, 10, 72, 84, 77, 76, 59, 10, 10, 105, 102, 32, 40, 33, 101, 109, 112, 116, 121, 40, 36, 95, 80, 79, 83, 84, 91, 39, 99, 39, 93, 41, 41, 123, 10, 112, 97, 115, 115, 116, 104, 114, 117, 40, 36, 95, 80, 79, 83, 84, 91, 39, 99, 39, 93, 41, 59, 10, 125, 10, 101, 99, 104, 111, 32, 34, 60, 47, 116, 101, 120, 116, 97, 114, 101, 97, 62, 60, 47, 116, 100, 62, 36, 116, 101, 110, 100, 34, 59, 10, 98, 114, 101, 97, 107, 59, 10, 10, 10, 47, 47, 80, 72, 80, 32, 69, 118, 97, 108, 32, 67, 111, 100, 101, 32, 101, 120, 101, 99, 117, 116, 105, 111, 110, 10, 99, 97, 115, 101, 32, 34, 101, 118, 97, 108, 34, 58, 10, 10, 101, 99, 104, 111, 32, 60, 60, 60, 72, 84, 77, 76, 10, 60, 98, 62, 80, 72, 80, 32, 69, 118, 97, 108, 32, 67, 111, 100, 101, 60, 47, 98, 62, 10, 60, 116, 97, 98, 108, 101, 62, 10, 60, 102, 111, 114, 109, 32, 109, 101, 116, 104, 111, 100, 61, 34, 80, 79, 83, 84, 34, 32, 97, 99, 116, 105, 111, 110, 61, 34, 36, 115, 101, 108, 102, 34, 62, 10, 60, 105, 110, 112, 117, 116, 32, 116, 121, 112, 101, 61, 34, 104, 105, 100, 100, 101, 110, 34, 32, 110, 97, 109, 101, 61, 34, 97, 99, 34, 32, 118, 97, 108, 117, 101, 61, 34, 101, 118, 97, 108, 34, 62, 10, 60, 116, 114, 62, 10, 60, 116, 100, 62, 60, 116, 101, 120, 116, 97, 114, 101, 97, 32, 110, 97, 109, 101, 61, 34, 101, 112, 104, 112, 34, 32, 114, 111, 119, 115, 61, 34, 49, 48, 34, 32, 99, 111, 108, 115, 61, 34, 54, 48, 34, 62, 60, 47, 116, 101, 120, 116, 97, 114, 101, 97, 62, 60, 47, 116, 100, 62, 10, 60, 47, 116, 114, 62, 10, 60, 116, 114, 62, 10, 60, 116, 100, 62, 60, 105, 110, 112, 117, 116, 32, 116, 121, 112, 101, 61, 34, 115, 117, 98, 109, 105, 116, 34, 32, 118, 97, 108, 117, 101, 61, 34, 69, 110, 116, 101, 114, 34, 62, 60, 47, 116, 100, 62, 10, 36, 116, 101, 110, 100, 10, 72, 84, 77, 76, 59, 10, 10, 105, 102, 32, 40, 105, 115, 115, 101, 116, 40, 36, 95, 80, 79, 83, 84, 91, 39, 101, 112, 104, 112, 39, 93, 41, 41, 123, 10, 101, 118, 97, 108, 40, 36, 95, 80, 79, 83, 84, 91, 39, 101, 112, 104, 112, 39, 93, 41, 59, 10, 125, 10, 98, 114, 101, 97, 107, 59, 10, 10, 10, 47, 47, 84, 101, 120, 116, 32, 116, 111, 111, 108, 115, 10, 99, 97, 115, 101, 32, 34, 116, 111, 111, 108, 115, 34, 58, 10, 10, 101, 99, 104, 111, 32, 60, 60, 60, 72, 84, 77, 76, 10, 60, 98, 62, 84, 111, 111, 108, 115, 60, 47, 98, 62, 10, 60, 116, 97, 98, 108, 101, 62, 10, 60, 102, 111, 114, 109, 32, 109, 101, 116, 104, 111, 100, 61, 34, 80, 79, 83, 84, 34, 32, 97, 99, 116, 105, 111, 110, 61, 34, 36, 115, 101, 108, 102, 34, 62, 10, 60, 105, 110, 112, 117, 116, 32, 116, 121, 112, 101, 61, 34, 104, 105, 100, 100, 101, 110, 34, 32, 110, 97, 109, 101, 61, 34, 97, 99, 34, 32, 118, 97, 108, 117, 101, 61, 34, 116, 111, 111, 108, 115, 34, 62, 10, 60, 116, 114, 62, 10, 60, 116, 100, 62, 10, 60, 105, 110, 112, 117, 116, 32, 116, 121, 112, 101, 61, 34, 114, 97, 100, 105, 111, 34, 32, 110, 97, 109, 101, 61, 34, 116, 97, 99, 34, 32, 118, 97, 108, 117, 101, 61, 34, 49, 34, 62, 66, 54, 52, 32, 68, 101, 99, 111, 100, 101, 60, 98, 114, 62, 10, 60, 105, 110, 112, 117, 116, 32, 116, 121, 112, 101, 61, 34, 114, 97, 100, 105, 111, 34, 32, 110, 97, 109, 101, 61, 34, 116, 97, 99, 34, 32, 118, 97, 108, 117, 101, 61, 34, 50, 34, 62, 66, 54, 52, 32, 69, 110, 99, 111, 100, 101, 60, 98, 114, 62, 60, 104, 114, 62, 10, 60, 105, 110, 112, 117, 116, 32, 116, 121, 112, 101, 61, 34, 114, 97, 100, 105, 111, 34, 32, 110, 97, 109, 101, 61, 34, 116, 97, 99, 34, 32, 118, 97, 108, 117, 101, 61, 34, 51, 34, 62, 109, 100, 53, 32, 72, 97, 115, 104, 10, 60, 47, 116, 100, 62, 10, 60, 116, 100, 62, 60, 116, 101, 120, 116, 97, 114, 101, 97, 32, 110, 97, 109, 101, 61, 34, 116, 111, 116, 34, 32, 114, 111, 119, 115, 61, 34, 53, 34, 32, 99, 111, 108, 115, 61, 34, 52, 50, 34, 62, 60, 47, 116, 101, 120, 116, 97, 114, 101, 97, 62, 60, 47, 116, 100, 62, 10, 60, 47, 116, 114, 62, 10, 60, 116, 114, 62, 10, 60, 116, 100, 62, 32, 60, 47, 116, 100, 62, 10, 60, 116, 100, 62, 60, 105, 110, 112, 117, 116, 32, 116, 121, 112, 101, 61, 34, 115, 117, 98, 109, 105, 116, 34, 32, 118, 97, 108, 117, 101, 61, 34, 69, 110, 116, 101, 114, 34, 62, 60, 47, 116, 100, 62, 10, 36, 116, 101, 110, 100, 10, 72, 84, 77, 76, 59, 10, 10, 105, 102, 32, 40, 33, 101, 109, 112, 116, 121, 40, 36, 95, 80, 79, 83, 84, 91, 39, 116, 111, 116, 39, 93, 41, 32, 38, 38, 32, 33, 101, 109, 112, 116, 121, 40, 36, 95, 80, 79, 83, 84, 91, 39, 116, 97, 99, 39, 93, 41, 41, 32, 123, 10, 10, 115, 119, 105, 116, 99, 104, 40, 36, 95, 80, 79, 83, 84, 91, 39, 116, 97, 99, 39, 93, 41, 32, 123, 10, 10, 99, 97, 115, 101, 32, 34, 49, 34, 58, 10, 101, 99, 104, 111, 32, 34, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 32, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 58, 60, 98, 62, 34, 32, 46, 98, 97, 115, 101, 54, 52, 95, 100, 101, 99, 111, 100, 101, 40, 36, 95, 80, 79, 83, 84, 91, 39, 116, 111, 116, 39, 93, 41, 46, 32, 34, 60, 47, 98, 62, 34, 59, 10, 98, 114, 101, 97, 107, 59, 10, 10, 99, 97, 115, 101, 32, 34, 50, 34, 58, 10, 101, 99, 104, 111, 32, 34, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 32, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 58, 60, 98, 62, 34, 32, 46, 98, 97, 115, 101, 54, 52, 95, 101, 110, 99, 111, 100, 101, 40, 36, 95, 80, 79, 83, 84, 91, 39, 116, 111, 116, 39, 93, 41, 46, 32, 34, 60, 47, 98, 62, 34, 59, 10, 98, 114, 101, 97, 107, 59, 10, 10, 99, 97, 115, 101, 32, 34, 51, 34, 58, 10, 101, 99, 104, 111, 32, 34, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 32, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 58, 60, 98, 62, 34, 32, 46, 109, 100, 53, 40, 36, 95, 80, 79, 83, 84, 91, 39, 116, 111, 116, 39, 93, 41, 46, 32, 34, 60, 47, 98, 62, 34, 59, 10, 98, 114, 101, 97, 107, 59, 10, 125, 125, 10, 98, 114, 101, 97, 107, 59, 10, 10, 10, 47, 47, 32, 85, 112, 108, 111, 97, 100, 105, 110, 103, 10, 99, 97, 115, 101, 32, 34, 117, 112, 108, 111, 97, 100, 34, 58, 10, 10, 101, 99, 104, 111, 32, 60, 60, 60, 72, 84, 77, 76, 10, 60, 98, 62, 70, 105, 108, 101, 32, 85, 112, 108, 111, 97, 100, 60, 47, 98, 62, 10, 60, 116, 97, 98, 108, 101, 62, 10, 60, 102, 111, 114, 109, 32, 101, 110, 99, 116, 121, 112, 101, 61, 34, 109, 117, 108, 116, 105, 112, 97, 114, 116, 47, 102, 111, 114, 109, 45, 100, 97, 116, 97, 34, 32, 97, 99, 116, 105, 111, 110, 61, 34, 36, 115, 101, 108, 102, 34, 32, 109, 101, 116, 104, 111, 100, 61, 34, 80, 79, 83, 84, 34, 62, 10, 60, 105, 110, 112, 117, 116, 32, 116, 121, 112, 101, 61, 34, 104, 105, 100, 100, 101, 110, 34, 32, 110, 97, 109, 101, 61, 34, 97, 99, 34, 32, 118, 97, 108, 117, 101, 61, 34, 117, 112, 108, 111, 97, 100, 34, 62, 10, 60, 116, 114, 62, 10, 60, 116, 100, 62, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 58, 60, 47, 116, 100, 62, 10, 60, 116, 100, 62, 60, 105, 110, 112, 117, 116, 32, 115, 105, 122, 101, 61, 34, 52, 56, 34, 32, 110, 97, 109, 101, 61, 34, 102, 105, 108, 101, 34, 32, 116, 121, 112, 101, 61, 34, 102, 105, 108, 101, 34, 62, 60, 47, 116, 100, 62, 10, 60, 47, 116, 114, 62, 10, 60, 116, 114, 62, 10, 60, 116, 100, 62, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 58, 60, 47, 116, 100, 62, 10, 60, 116, 100, 62, 60, 105, 110, 112, 117, 116, 32, 115, 105, 122, 101, 61, 34, 52, 56, 34, 32, 118, 97, 108, 117, 101, 61, 34, 36, 100, 111, 99, 114, 47, 34, 32, 110, 97, 109, 101, 61, 34, 112, 97, 116, 104, 34, 32, 116, 121, 112, 101, 61, 34, 116, 101, 120, 116, 34, 62, 60, 105, 110, 112, 117, 116, 32, 116, 121, 112, 101, 61, 34, 115, 117, 98, 109, 105, 116, 34, 32, 118, 97, 108, 117, 101, 61, 34, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 34, 62, 60, 47, 116, 100, 62, 10, 36, 116, 101, 110, 100, 10, 72, 84, 77, 76, 59, 10, 10, 105, 102, 32, 40, 105, 115, 115, 101, 116, 40, 36, 95, 80, 79, 83, 84, 91, 39, 112, 97, 116, 104, 39, 93, 41, 41, 123, 10, 10, 36, 117, 112, 108, 111, 97, 100, 102, 105, 108, 101, 32, 61, 32, 36, 95, 80, 79, 83, 84, 91, 39, 112, 97, 116, 104, 39, 93, 46, 36, 95, 70, 73, 76, 69, 83, 91, 39, 102, 105, 108, 101, 39, 93, 91, 39, 110, 97, 109, 101, 39, 93, 59, 10, 105, 102, 32, 40, 36, 95, 80, 79, 83, 84, 91, 39, 112, 97, 116, 104, 39, 93, 61, 61, 34, 34, 41, 123, 36, 117, 112, 108, 111, 97, 100, 102, 105, 108, 101, 32, 61, 32, 36, 95, 70, 73, 76, 69, 83, 91, 39, 102, 105, 108, 101, 39, 93, 91, 39, 110, 97, 109, 101, 39, 93, 59, 125, 10, 10, 105, 102, 32, 40, 99, 111, 112, 121, 40, 36, 95, 70, 73, 76, 69, 83, 91, 39, 102, 105, 108, 101, 39, 93, 91, 39, 116, 109, 112, 95, 110, 97, 109, 101, 39, 93, 44, 32, 36, 117, 112, 108, 111, 97, 100, 102, 105, 108, 101, 41, 41, 32, 123, 10, 32, 32, 32, 32, 101, 99, 104, 111, 32, 34, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 32, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 32, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 32, 239, 191, 189, 32, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 32, 36, 117, 112, 108, 111, 97, 100, 102, 105, 108, 101, 92, 110, 34, 59, 10, 32, 32, 32, 32, 101, 99, 104, 111, 32, 34, 239, 191, 189, 239, 191, 189, 239, 191, 189, 58, 34, 32, 46, 36, 95, 70, 73, 76, 69, 83, 91, 39, 102, 105, 108, 101, 39, 93, 91, 39, 110, 97, 109, 101, 39, 93, 46, 32, 34, 92, 110, 34, 59, 10, 32, 32, 32, 32, 101, 99, 104, 111, 32, 34, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 58, 34, 32, 46, 36, 95, 70, 73, 76, 69, 83, 91, 39, 102, 105, 108, 101, 39, 93, 91, 39, 115, 105, 122, 101, 39, 93, 46, 32, 34, 92, 110, 34, 59, 10, 10, 125, 32, 101, 108, 115, 101, 32, 123, 10, 32, 32, 32, 32, 112, 114, 105, 110, 116, 32, 34, 239, 191, 189, 239, 191, 189, 32, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 32, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 32, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 46, 32, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 58, 92, 110, 34, 59, 10, 32, 32, 32, 32, 112, 114, 105, 110, 116, 95, 114, 40, 36, 95, 70, 73, 76, 69, 83, 41, 59, 10, 125, 10, 125, 10, 98, 114, 101, 97, 107, 59, 10, 10, 10, 47, 47, 32, 87, 104, 111, 105, 115, 10, 99, 97, 115, 101, 32, 34, 119, 104, 111, 105, 115, 34, 58, 10, 101, 99, 104, 111, 32, 60, 60, 60, 72, 84, 77, 76, 10, 60, 98, 62, 87, 104, 111, 105, 115, 60, 47, 98, 62, 10, 60, 116, 97, 98, 108, 101, 62, 10, 60, 102, 111, 114, 109, 32, 97, 99, 116, 105, 111, 110, 61, 34, 36, 115, 101, 108, 102, 34, 32, 109, 101, 116, 104, 111, 100, 61, 34, 80, 79, 83, 84, 34, 62, 10, 60, 105, 110, 112, 117, 116, 32, 116, 121, 112, 101, 61, 34, 104, 105, 100, 100, 101, 110, 34, 32, 110, 97, 109, 101, 61, 34, 97, 99, 34, 32, 118, 97, 108, 117, 101, 61, 34, 119, 104, 111, 105, 115, 34, 62, 10, 60, 116, 114, 62, 10, 60, 116, 100, 62, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 58, 60, 47, 116, 100, 62, 10, 60, 116, 100, 62, 60, 105, 110, 112, 117, 116, 32, 115, 105, 122, 101, 61, 34, 52, 48, 34, 32, 116, 121, 112, 101, 61, 34, 116, 101, 120, 116, 34, 32, 110, 97, 109, 101, 61, 34, 119, 113, 34, 62, 60, 47, 116, 100, 62, 10, 60, 47, 116, 114, 62, 10, 60, 116, 114, 62, 10, 60, 116, 100, 62, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 32, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 58, 60, 47, 116, 100, 62, 10, 60, 116, 100, 62, 60, 105, 110, 112, 117, 116, 32, 115, 105, 122, 101, 61, 34, 52, 48, 34, 32, 116, 121, 112, 101, 61, 34, 116, 101, 120, 116, 34, 32, 110, 97, 109, 101, 61, 34, 119, 115, 101, 114, 34, 32, 118, 97, 108, 117, 101, 61, 34, 119, 104, 111, 105, 115, 46, 114, 105, 112, 101, 46, 110, 101, 116, 34, 62, 60, 47, 116, 100, 62, 10, 60, 47, 116, 114, 62, 10, 60, 116, 114, 62, 60, 116, 100, 62, 10, 60, 105, 110, 112, 117, 116, 32, 97, 108, 105, 103, 110, 61, 34, 114, 105, 103, 104, 116, 34, 32, 116, 121, 112, 101, 61, 34, 115, 117, 98, 109, 105, 116, 34, 32, 118, 97, 108, 117, 101, 61, 34, 69, 110, 116, 101, 114, 34, 62, 10, 60, 47, 116, 100, 62, 60, 47, 116, 114, 62, 10, 36, 116, 101, 110, 100, 10, 72, 84, 77, 76, 59, 10, 10, 105, 102, 32, 40, 105, 115, 115, 101, 116, 40, 36, 95, 80, 79, 83, 84, 91, 39, 119, 113, 39, 93, 41, 32, 38, 38, 32, 36, 95, 80, 79, 83, 84, 91, 39, 119, 113, 39, 93, 60, 62, 34, 34, 41, 32, 123, 10, 10, 105, 102, 32, 40, 101, 109, 112, 116, 121, 40, 36, 95, 80, 79, 83, 84, 91, 39, 119, 115, 101, 114, 39, 93, 41, 41, 32, 123, 36, 119, 115, 101, 114, 32, 61, 32, 34, 119, 104, 111, 105, 115, 46, 114, 105, 112, 101, 46, 110, 101, 116, 34, 59, 125, 32, 101, 108, 115, 101, 32, 36, 119, 115, 101, 114, 32, 61, 32, 36, 95, 80, 79, 83, 84, 91, 39, 119, 115, 101, 114, 39, 93, 59, 10, 10, 36, 113, 117, 101, 114, 116, 121, 32, 61, 32, 36, 95, 80, 79, 83, 84, 91, 39, 119, 113, 39, 93, 46, 34, 92, 114, 92, 110, 34, 59, 10, 36, 102, 112, 32, 61, 32, 102, 115, 111, 99, 107, 111, 112, 101, 110, 40, 36, 119, 115, 101, 114, 44, 32, 52, 51, 41, 59, 10, 10, 105, 102, 32, 40, 33, 36, 102, 112, 41, 32, 123, 101, 99, 104, 111, 32, 34, 239, 191, 189, 239, 191, 189, 32, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 32, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 32, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 34, 59, 125, 32, 101, 108, 115, 101, 32, 123, 10, 102, 112, 117, 116, 115, 40, 36, 102, 112, 44, 32, 36, 113, 117, 101, 114, 116, 121, 41, 59, 10, 119, 104, 105, 108, 101, 40, 33, 102, 101, 111, 102, 40, 36, 102, 112, 41, 41, 123, 101, 99, 104, 111, 32, 102, 103, 101, 116, 115, 40, 36, 102, 112, 44, 32, 52, 48, 48, 48, 41, 59, 125, 10, 102, 99, 108, 111, 115, 101, 40, 36, 102, 112, 41, 59, 10, 125, 125, 10, 98, 114, 101, 97, 107, 59, 10, 10, 10, 125, 10, 63, 62, 10, 60, 47, 112, 114, 101, 62, 10, 60, 47, 98, 111, 100, 121, 62, 10, 60, 47, 104, 116, 109, 108, 62, 10})
	if err != nil {
		t.Error(err.Error())
		return
	}
	if !isMatched {
		t.Error("not matched")
	}
}
