From fad2035784aa14ffbfbad9b9a2f360cb60f293b4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 9 Oct 2022 13:35:21 -0400 Subject: [PATCH 01/16] Bump github.com/mafredri/cdp from 0.32.0 to 0.33.0 (#744) Bumps [github.com/mafredri/cdp](https://github.com/mafredri/cdp) from 0.32.0 to 0.33.0. - [Release notes](https://github.com/mafredri/cdp/releases) - [Commits](https://github.com/mafredri/cdp/compare/v0.32.0...v0.33.0) --- updated-dependencies: - dependency-name: github.com/mafredri/cdp dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 31 +++++++++++++++++++++++++++++-- 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 6fa39e5a..143de92f 100644 --- a/go.mod +++ b/go.mod @@ -11,7 +11,7 @@ require ( github.com/gobwas/glob v0.2.3 github.com/gorilla/css v1.0.0 github.com/jarcoal/httpmock v1.2.0 - github.com/mafredri/cdp v0.32.0 + github.com/mafredri/cdp v0.33.0 github.com/pkg/errors v0.9.1 github.com/rs/zerolog v1.26.1 github.com/sethgrid/pester v1.1.0 diff --git a/go.sum b/go.sum index 92de4849..fbd79108 100644 --- a/go.sum +++ b/go.sum @@ -19,11 +19,23 @@ github.com/corpix/uarand v0.1.1/go.mod h1:SFKZvkcRoLqVRFZ4u25xPmp6m9ktANfbpXZ7SJ github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= +github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= +github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= +github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= +github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= +github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI= github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= +github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= +github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= +github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e h1:1r7pUrabqp18hOBcwBwiTsbnFeTZHV9eER/QT5JVZxY= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= @@ -31,23 +43,30 @@ github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGa github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gorilla/css v1.0.0 h1:BQqNyPTi50JCFMTw/b67hByjMVXZRwGha6wxVGkeihY= github.com/gorilla/css v1.0.0/go.mod h1:Dn721qIggHpt4+EFCcTLTU/vk5ySda2ReITrtgBl60c= +github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/jarcoal/httpmock v1.2.0 h1:gSvTxxFR/MEMfsGrvRbdfpRUMBStovlSRLw0Ep1bwwc= github.com/jarcoal/httpmock v1.2.0/go.mod h1:oCoTsnAz4+UoOUIf5lJOWV2QQIW5UoeUI6aM2YnWAZk= +github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= -github.com/mafredri/cdp v0.32.0 h1:JzW2F+zVK2y9ZhbNWyjrwafZLL9oNnl9Tf6JQ149Og8= -github.com/mafredri/cdp v0.32.0/go.mod h1:YTCwLXkZSa18SGSIxCPMOGZcUJODZSNlAhiMqbyxWJg= +github.com/klauspost/compress v1.10.3 h1:OP96hzwJVBIHYU52pVTI6CczrxPvrGfgqF9N5eTO0Q8= +github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= +github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= +github.com/mafredri/cdp v0.33.0 h1:McuQjNe0DyctTUxt8zY6jGTlpPoy2gciqxtvKhz0XPM= +github.com/mafredri/cdp v0.33.0/go.mod h1:Dbsh7eY/zhQlsddEDWzZGOztv9Jf2gzKq47M7a2P3C4= github.com/mafredri/go-lint v0.0.0-20180911205320-920981dfc79e/go.mod h1:k/zdyxI3q6dup24o8xpYjJKTCf2F7rfxLp6w/efTiWs= +github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/maxatome/go-testdeep v1.11.0 h1:Tgh5efyCYyJFGUYiT0qxBSIDeXw0F5zSoatlou685kk= github.com/maxatome/go-testdeep v1.11.0/go.mod h1:011SgQ6efzZYAen6fDn4BqQ+lUR72ysdyKe7Dyogw70= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/ngdinhtoan/glide-cleanup v0.2.0/go.mod h1:UQzsmiDOb8YV3nOsCxK/c9zPpCZVNoHScRE3EO9pVMM= @@ -71,9 +90,12 @@ github.com/smartystreets/goconvey v1.7.2/go.mod h1:Vw0tHAZW6lzCRk3xgdin6fKYcG+G3 github.com/stretchr/objx v0.1.0 h1:4G4v2dO3VZwixGIRoQ5Lfboy6nUhCyYzaqnIAPPhYs4= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= +github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= github.com/wI2L/jettison v0.7.4 h1:ptjriu75R/k5RAZO0DJzy2t55f7g+dPiBxBY38icaKg= github.com/wI2L/jettison v0.7.4/go.mod h1:O+F+T7X7ZN6kTsd167Qk4aZMC8jNrH48SMedNmkfPb0= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= @@ -100,6 +122,7 @@ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cO golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -112,10 +135,12 @@ golang.org/x/sys v0.0.0-20220318055525-2edf467146b5 h1:saXMvIOKvRFwbOMicHXr0B1uw golang.org/x/sys v0.0.0-20220318055525-2edf467146b5/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -131,3 +156,5 @@ gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +nhooyr.io/websocket v1.8.7 h1:usjR2uOr/zjjkVMy0lW+PPohFok7PCow5sDjLgX4P4g= +nhooyr.io/websocket v1.8.7/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= From 44c34a0add8f0bc657ba4347c70a40e8c30b4140 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 9 Oct 2022 13:36:04 -0400 Subject: [PATCH 02/16] Bump github.com/rs/zerolog from 1.26.1 to 1.28.0 (#752) Bumps [github.com/rs/zerolog](https://github.com/rs/zerolog) from 1.26.1 to 1.28.0. - [Release notes](https://github.com/rs/zerolog/releases) - [Commits](https://github.com/rs/zerolog/compare/v1.26.1...v1.28.0) --- updated-dependencies: - dependency-name: github.com/rs/zerolog dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Tim Voronov --- go.mod | 5 ++++- go.sum | 21 ++++++++++----------- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/go.mod b/go.mod index 143de92f..79f92827 100644 --- a/go.mod +++ b/go.mod @@ -13,7 +13,7 @@ require ( github.com/jarcoal/httpmock v1.2.0 github.com/mafredri/cdp v0.33.0 github.com/pkg/errors v0.9.1 - github.com/rs/zerolog v1.26.1 + github.com/rs/zerolog v1.28.0 github.com/sethgrid/pester v1.1.0 github.com/smartystreets/goconvey v1.7.2 github.com/stretchr/testify v1.7.0 @@ -30,8 +30,11 @@ require ( github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 // indirect github.com/gorilla/websocket v1.4.2 // indirect github.com/jtolds/gls v4.20.0+incompatible // indirect + github.com/mattn/go-colorable v0.1.12 // indirect + github.com/mattn/go-isatty v0.0.14 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/smartystreets/assertions v1.2.0 // indirect github.com/stretchr/objx v0.1.0 // indirect + golang.org/x/sys v0.0.0-20220318055525-2edf467146b5 // indirect gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c // indirect ) diff --git a/go.sum b/go.sum index fbd79108..645a06b7 100644 --- a/go.sum +++ b/go.sum @@ -13,7 +13,7 @@ github.com/antlr/antlr4/runtime/Go/antlr v0.0.0-20211211185417-43fb4c2dbe28 h1:K github.com/antlr/antlr4/runtime/Go/antlr v0.0.0-20211211185417-43fb4c2dbe28/go.mod h1:F7bn7fEU90QkQ3tnmaTx3LTKLEDqnwWODIYppRQ5hnY= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/codegangsta/cli v1.20.0/go.mod h1:/qJNoX69yVSKu5o4jLyXAENLRyk1uhi7zkbQ3slBdOA= -github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/coreos/go-systemd/v22 v22.3.3-0.20220203105225-a9a7ef127534/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/corpix/uarand v0.1.1 h1:RMr1TWc9F4n5jiPDzFHtmaUXLKLNUFK0SgCLo4BhX/U= github.com/corpix/uarand v0.1.1/go.mod h1:SFKZvkcRoLqVRFZ4u25xPmp6m9ktANfbpXZ7SJ0/FNU= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -59,7 +59,10 @@ github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgx github.com/mafredri/cdp v0.33.0 h1:McuQjNe0DyctTUxt8zY6jGTlpPoy2gciqxtvKhz0XPM= github.com/mafredri/cdp v0.33.0/go.mod h1:Dbsh7eY/zhQlsddEDWzZGOztv9Jf2gzKq47M7a2P3C4= github.com/mafredri/go-lint v0.0.0-20180911205320-920981dfc79e/go.mod h1:k/zdyxI3q6dup24o8xpYjJKTCf2F7rfxLp6w/efTiWs= -github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= +github.com/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40= +github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= +github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y= +github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= github.com/maxatome/go-testdeep v1.11.0 h1:Tgh5efyCYyJFGUYiT0qxBSIDeXw0F5zSoatlou685kk= github.com/maxatome/go-testdeep v1.11.0/go.mod h1:011SgQ6efzZYAen6fDn4BqQ+lUR72ysdyKe7Dyogw70= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= @@ -74,9 +77,9 @@ github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/rs/xid v1.3.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= -github.com/rs/zerolog v1.26.1 h1:/ihwxqH+4z8UxyI70wM1z9yCvkWcfz/a3mj48k/Zngc= -github.com/rs/zerolog v1.26.1/go.mod h1:/wSSJWX7lVrsOwlbyTRSOJvqRlc+WjWlfes+CiJ+tmc= +github.com/rs/xid v1.4.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= +github.com/rs/zerolog v1.28.0 h1:MirSo27VyNi7RJYP3078AA1+Cyzd2GB66qy3aUHvsWY= +github.com/rs/zerolog v1.28.0/go.mod h1:NILgTygv/Uej1ra5XxGf82ZFSLk58MFGAUS2o6usyD0= github.com/segmentio/asm v1.1.3 h1:WM03sfUOENvvKexOLp+pCqgb/WDjsi7EK8gIsICtzhc= github.com/segmentio/asm v1.1.3/go.mod h1:Ld3L4ZXGNcSLRg4JBsZ3//1+f/TjYl0Mzen/DQy1EJg= github.com/segmentio/encoding v0.3.4 h1:WM4IBnxH8B9TakiM2QD5LyNl9JSndh88QbHqVC+Pauc= @@ -99,11 +102,9 @@ github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLY github.com/wI2L/jettison v0.7.4 h1:ptjriu75R/k5RAZO0DJzy2t55f7g+dPiBxBY38icaKg= github.com/wI2L/jettison v0.7.4/go.mod h1:O+F+T7X7ZN6kTsd167Qk4aZMC8jNrH48SMedNmkfPb0= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.4.0/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20211215165025-cf75a172585e/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -111,8 +112,6 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200421231249-e086a090c8fd/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210916014120-12bc252f5db8/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211209124913-491a49abca63 h1:iocB37TsdFuN6IBRZ+ry36wrkoV51/tl5vOWqkcPGvY= golang.org/x/net v0.0.0-20211209124913-491a49abca63/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= @@ -129,7 +128,8 @@ golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210319071255-635bc2c9138d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211110154304-99a53858aa08/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220318055525-2edf467146b5 h1:saXMvIOKvRFwbOMicHXr0B1uwoxq9dGmLe5ExMES6c4= golang.org/x/sys v0.0.0-20220318055525-2edf467146b5/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -145,7 +145,6 @@ golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGm golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= -golang.org/x/tools v0.1.7/go.mod h1:LGqMHiF4EqQNHR1JncWGqT5BVaXmza+X+BDGol+dOxo= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= From a9ec12bed64e9188d5c7fa4634f1d288c0c8e530 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 9 Oct 2022 13:37:50 -0400 Subject: [PATCH 03/16] Bump github.com/stretchr/testify from 1.7.0 to 1.8.0 (#750) Bumps [github.com/stretchr/testify](https://github.com/stretchr/testify) from 1.7.0 to 1.8.0. - [Release notes](https://github.com/stretchr/testify/releases) - [Commits](https://github.com/stretchr/testify/compare/v1.7.0...v1.8.0) --- updated-dependencies: - dependency-name: github.com/stretchr/testify dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Tim Voronov --- go.mod | 7 +++---- go.sum | 14 ++++++-------- 2 files changed, 9 insertions(+), 12 deletions(-) diff --git a/go.mod b/go.mod index 79f92827..ba11698c 100644 --- a/go.mod +++ b/go.mod @@ -16,7 +16,7 @@ require ( github.com/rs/zerolog v1.28.0 github.com/sethgrid/pester v1.1.0 github.com/smartystreets/goconvey v1.7.2 - github.com/stretchr/testify v1.7.0 + github.com/stretchr/testify v1.8.0 github.com/wI2L/jettison v0.7.4 golang.org/x/net v0.0.0-20211209124913-491a49abca63 golang.org/x/sync v0.0.0-20210220032951-036812b2e83c @@ -34,7 +34,6 @@ require ( github.com/mattn/go-isatty v0.0.14 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/smartystreets/assertions v1.2.0 // indirect - github.com/stretchr/objx v0.1.0 // indirect - golang.org/x/sys v0.0.0-20220318055525-2edf467146b5 // indirect - gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c // indirect + github.com/stretchr/objx v0.4.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index 645a06b7..599a3cf5 100644 --- a/go.sum +++ b/go.sum @@ -90,13 +90,11 @@ github.com/smartystreets/assertions v1.2.0 h1:42S6lae5dvLc7BrLu/0ugRtcFVjoJNMC/N github.com/smartystreets/assertions v1.2.0/go.mod h1:tcbTF8ujkAEcZ8TElKY+i30BzYlVhC/LOxJk7iOWnoo= github.com/smartystreets/goconvey v1.7.2 h1:9RBaZCeXEQ3UselpuwUQHltGVXvdwm6cv1hgR6gDIPg= github.com/smartystreets/goconvey v1.7.2/go.mod h1:Vw0tHAZW6lzCRk3xgdin6fKYcG+G3Pg9vgXWeJpQFMM= -github.com/stretchr/objx v0.1.0 h1:4G4v2dO3VZwixGIRoQ5Lfboy6nUhCyYzaqnIAPPhYs4= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= -github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= -github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/objx v0.4.0 h1:M2gUjqZET1qApGOWNSnZ49BAIMX4F/1plDv3+l31EJ4= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= github.com/wI2L/jettison v0.7.4 h1:ptjriu75R/k5RAZO0DJzy2t55f7g+dPiBxBY38icaKg= @@ -153,7 +151,7 @@ gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+ gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= nhooyr.io/websocket v1.8.7 h1:usjR2uOr/zjjkVMy0lW+PPohFok7PCow5sDjLgX4P4g= nhooyr.io/websocket v1.8.7/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= From dd33141b8830fda20b1bf10a85947b92b5b14a8f Mon Sep 17 00:00:00 2001 From: Tim Voronov Date: Mon, 14 Nov 2022 00:37:27 -0500 Subject: [PATCH 04/16] Updated deps --- .github/workflows/build.yml | 2 +- go.mod | 9 +++--- go.sum | 57 ++++++++----------------------------- 3 files changed, 18 insertions(+), 50 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 73d7a511..0373f54f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -35,7 +35,7 @@ jobs: sudo sh install.sh - name: Set up linters - run: go get -u github.com/mgechev/revive + run: go install github.com/mgechev/revive@latest - name: Check out code into the Go module directory uses: actions/checkout@v2 diff --git a/go.mod b/go.mod index ba11698c..5866b71a 100644 --- a/go.mod +++ b/go.mod @@ -7,7 +7,7 @@ require ( github.com/antchfx/htmlquery v1.2.5 github.com/antchfx/xpath v1.2.1 github.com/antlr/antlr4/runtime/Go/antlr v0.0.0-20211211185417-43fb4c2dbe28 - github.com/corpix/uarand v0.1.1 + github.com/corpix/uarand v0.2.0 github.com/gobwas/glob v0.2.3 github.com/gorilla/css v1.0.0 github.com/jarcoal/httpmock v1.2.0 @@ -16,11 +16,11 @@ require ( github.com/rs/zerolog v1.28.0 github.com/sethgrid/pester v1.1.0 github.com/smartystreets/goconvey v1.7.2 - github.com/stretchr/testify v1.8.0 + github.com/stretchr/testify v1.8.1 github.com/wI2L/jettison v0.7.4 golang.org/x/net v0.0.0-20211209124913-491a49abca63 golang.org/x/sync v0.0.0-20210220032951-036812b2e83c - golang.org/x/text v0.3.7 + golang.org/x/text v0.4.0 ) require ( @@ -34,6 +34,7 @@ require ( github.com/mattn/go-isatty v0.0.14 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/smartystreets/assertions v1.2.0 // indirect - github.com/stretchr/objx v0.4.0 // indirect + github.com/stretchr/objx v0.5.0 // indirect + golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index 599a3cf5..4645a188 100644 --- a/go.sum +++ b/go.sum @@ -1,23 +1,14 @@ -github.com/Masterminds/glide v0.13.2/go.mod h1:STyF5vcenH/rUqTEv+/hBXlSTo7KYwg2oc2f4tzPWic= -github.com/Masterminds/semver v1.4.2/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= -github.com/Masterminds/vcs v1.13.0/go.mod h1:N09YCmOQr6RLxC6UNHzuVwAdodYbbnycGHSmwVJjcKA= -github.com/PuerkitoBio/goquery v1.8.0 h1:PJTF7AmFCFKk1N6V6jmKfrNH9tV5pNE6lZMkG0gta/U= github.com/PuerkitoBio/goquery v1.8.0/go.mod h1:ypIiRMtY7COPGk+I/YbZLbxsxn9g5ejnI2HSMtkjZvI= -github.com/andybalholm/cascadia v1.3.1 h1:nhxRkql1kdYCc8Snf7D5/D3spOX+dBgjA6u8x004T2c= github.com/andybalholm/cascadia v1.3.1/go.mod h1:R4bJ1UQfqADjvDa4P6HZHLh/3OxWWEqc0Sk8XGwHqvA= -github.com/antchfx/htmlquery v1.2.5 h1:1lXnx46/1wtv1E/kzmH8vrfMuUKYgkdDBA9pIdMJnk4= github.com/antchfx/htmlquery v1.2.5/go.mod h1:2MCVBzYVafPBmKbrmwB9F5xdd+IEgRY61ci2oOsOQVw= -github.com/antchfx/xpath v1.2.1 h1:qhp4EW6aCOVr5XIkT+l6LJ9ck/JsUH/yyauNgTQkBF8= github.com/antchfx/xpath v1.2.1/go.mod h1:i54GszH55fYfBmoZXapTHN8T8tkcHfRgLyVwwqzXNcs= github.com/antlr/antlr4/runtime/Go/antlr v0.0.0-20211211185417-43fb4c2dbe28 h1:Knil/MO9lpB4pm95yUamKfWeHGAQ2LEeAsXYy30qf8M= github.com/antlr/antlr4/runtime/Go/antlr v0.0.0-20211211185417-43fb4c2dbe28/go.mod h1:F7bn7fEU90QkQ3tnmaTx3LTKLEDqnwWODIYppRQ5hnY= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/codegangsta/cli v1.20.0/go.mod h1:/qJNoX69yVSKu5o4jLyXAENLRyk1uhi7zkbQ3slBdOA= github.com/coreos/go-systemd/v22 v22.3.3-0.20220203105225-a9a7ef127534/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= -github.com/corpix/uarand v0.1.1 h1:RMr1TWc9F4n5jiPDzFHtmaUXLKLNUFK0SgCLo4BhX/U= -github.com/corpix/uarand v0.1.1/go.mod h1:SFKZvkcRoLqVRFZ4u25xPmp6m9ktANfbpXZ7SJ0/FNU= +github.com/corpix/uarand v0.2.0 h1:U98xXwud/AVuCpkpgfPF7J5TQgr7R5tqT8VZP5KWbzE= +github.com/corpix/uarand v0.2.0/go.mod h1:/3Z1QIqWkDIhf6XWn/08/uMHoQ8JUoTIKc2iPchBOmM= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= @@ -31,29 +22,21 @@ github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22 github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e h1:1r7pUrabqp18hOBcwBwiTsbnFeTZHV9eER/QT5JVZxY= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gorilla/css v1.0.0 h1:BQqNyPTi50JCFMTw/b67hByjMVXZRwGha6wxVGkeihY= github.com/gorilla/css v1.0.0/go.mod h1:Dn721qIggHpt4+EFCcTLTU/vk5ySda2ReITrtgBl60c= github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/jarcoal/httpmock v1.2.0 h1:gSvTxxFR/MEMfsGrvRbdfpRUMBStovlSRLw0Ep1bwwc= github.com/jarcoal/httpmock v1.2.0/go.mod h1:oCoTsnAz4+UoOUIf5lJOWV2QQIW5UoeUI6aM2YnWAZk= github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= -github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= -github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= -github.com/klauspost/compress v1.10.3 h1:OP96hzwJVBIHYU52pVTI6CczrxPvrGfgqF9N5eTO0Q8= github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= github.com/mafredri/cdp v0.33.0 h1:McuQjNe0DyctTUxt8zY6jGTlpPoy2gciqxtvKhz0XPM= @@ -61,40 +44,28 @@ github.com/mafredri/cdp v0.33.0/go.mod h1:Dbsh7eY/zhQlsddEDWzZGOztv9Jf2gzKq47M7a github.com/mafredri/go-lint v0.0.0-20180911205320-920981dfc79e/go.mod h1:k/zdyxI3q6dup24o8xpYjJKTCf2F7rfxLp6w/efTiWs= github.com/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40= github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= +github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= -github.com/maxatome/go-testdeep v1.11.0 h1:Tgh5efyCYyJFGUYiT0qxBSIDeXw0F5zSoatlou685kk= -github.com/maxatome/go-testdeep v1.11.0/go.mod h1:011SgQ6efzZYAen6fDn4BqQ+lUR72ysdyKe7Dyogw70= -github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= -github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= -github.com/ngdinhtoan/glide-cleanup v0.2.0/go.mod h1:UQzsmiDOb8YV3nOsCxK/c9zPpCZVNoHScRE3EO9pVMM= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/rs/xid v1.4.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= github.com/rs/zerolog v1.28.0 h1:MirSo27VyNi7RJYP3078AA1+Cyzd2GB66qy3aUHvsWY= github.com/rs/zerolog v1.28.0/go.mod h1:NILgTygv/Uej1ra5XxGf82ZFSLk58MFGAUS2o6usyD0= -github.com/segmentio/asm v1.1.3 h1:WM03sfUOENvvKexOLp+pCqgb/WDjsi7EK8gIsICtzhc= -github.com/segmentio/asm v1.1.3/go.mod h1:Ld3L4ZXGNcSLRg4JBsZ3//1+f/TjYl0Mzen/DQy1EJg= -github.com/segmentio/encoding v0.3.4 h1:WM4IBnxH8B9TakiM2QD5LyNl9JSndh88QbHqVC+Pauc= -github.com/segmentio/encoding v0.3.4/go.mod h1:n0JeuIqEQrQoPDGsjo8UNd1iA0U8d8+oHAA4E3G3OxM= -github.com/sethgrid/pester v1.1.0 h1:IyEAVvwSUPjs2ACFZkBe5N59BBUpSIkQ71Hr6cM5A+w= github.com/sethgrid/pester v1.1.0/go.mod h1:Ad7IjTpvzZO8Fl0vh9AzQ+j/jYZfyp2diGwI8m5q+ns= -github.com/smartystreets/assertions v1.2.0 h1:42S6lae5dvLc7BrLu/0ugRtcFVjoJNMC/N3yZFZkDFs= github.com/smartystreets/assertions v1.2.0/go.mod h1:tcbTF8ujkAEcZ8TElKY+i30BzYlVhC/LOxJk7iOWnoo= -github.com/smartystreets/goconvey v1.7.2 h1:9RBaZCeXEQ3UselpuwUQHltGVXvdwm6cv1hgR6gDIPg= github.com/smartystreets/goconvey v1.7.2/go.mod h1:Vw0tHAZW6lzCRk3xgdin6fKYcG+G3Pg9vgXWeJpQFMM= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.4.0 h1:M2gUjqZET1qApGOWNSnZ49BAIMX4F/1plDv3+l31EJ4= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= -github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= github.com/wI2L/jettison v0.7.4 h1:ptjriu75R/k5RAZO0DJzy2t55f7g+dPiBxBY38icaKg= @@ -128,16 +99,14 @@ golang.org/x/sys v0.0.0-20210319071255-635bc2c9138d/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211110154304-99a53858aa08/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220318055525-2edf467146b5 h1:saXMvIOKvRFwbOMicHXr0B1uwoxq9dGmLe5ExMES6c4= -golang.org/x/sys v0.0.0-20220318055525-2edf467146b5/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f h1:v4INt8xihDGvnrfjMDVXGxw9wrfxYyCjk0KbXjhR55s= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= -golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= @@ -147,11 +116,9 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -nhooyr.io/websocket v1.8.7 h1:usjR2uOr/zjjkVMy0lW+PPohFok7PCow5sDjLgX4P4g= nhooyr.io/websocket v1.8.7/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= From d201b50c2004276bb947df913411af204e6e7398 Mon Sep 17 00:00:00 2001 From: Tim Voronov Date: Tue, 7 Feb 2023 12:58:43 -0500 Subject: [PATCH 05/16] Updated dependencies (#769) * Updated dependencies * Dropped pre-generics versions of Go * Updated ANTRL * Added staticcheck and goimports tools * Updated build steps * Fixed unit tests for http funcs --- .github/workflows/build.yml | 47 +- .github/workflows/codeql-analysis.yml | 52 +- Makefile | 9 +- e2e/cli.go | 3 +- go.mod | 26 +- go.sum | 75 +- pkg/compiler/compiler_array_test.go | 6 +- pkg/compiler/compiler_cases_test.go | 6 +- .../compiler_collect_aggregate_test.go | 6 +- pkg/compiler/compiler_collect_count_test.go | 6 +- pkg/compiler/compiler_collect_into_test.go | 6 +- pkg/compiler/compiler_collect_test.go | 6 +- .../compiler_collect_with_count_test.go | 6 +- pkg/compiler/compiler_eq_test.go | 6 +- pkg/compiler/compiler_filter_test.go | 6 +- pkg/compiler/compiler_for_ternary_test.go | 6 +- pkg/compiler/compiler_for_test.go | 8 +- .../compiler_for_while_ternary_test.go | 6 +- pkg/compiler/compiler_for_while_test.go | 6 +- pkg/compiler/compiler_func_ns_test.go | 10 +- pkg/compiler/compiler_func_test.go | 8 +- pkg/compiler/compiler_in_test.go | 6 +- pkg/compiler/compiler_let_test.go | 6 +- pkg/compiler/compiler_like_test.go | 6 +- pkg/compiler/compiler_limit_test.go | 6 +- pkg/compiler/compiler_logical_test.go | 6 +- pkg/compiler/compiler_math_test.go | 6 +- pkg/compiler/compiler_member_test.go | 10 +- pkg/compiler/compiler_param_test.go | 6 +- pkg/compiler/compiler_precedence_test.go | 3 +- pkg/compiler/compiler_range_test.go | 6 +- pkg/compiler/compiler_regexp_test.go | 8 +- pkg/compiler/compiler_return_test.go | 6 +- pkg/compiler/compiler_sort_test.go | 6 +- pkg/compiler/compiler_str_test.go | 6 +- pkg/compiler/compiler_ternary_test.go | 6 +- pkg/compiler/compiler_unary_test.go | 6 +- pkg/compiler/compiler_use_test.go | 3 +- .../compiler_waitfor_event_ternary_test.go | 3 +- pkg/compiler/compiler_waitfor_event_test.go | 10 +- pkg/compiler/listener.go | 2 +- pkg/compiler/namespace.go | 7 +- pkg/compiler/namespace_test.go | 6 +- pkg/compiler/visitor.go | 85 +- pkg/drivers/cdp/dom/loader.go | 5 +- pkg/drivers/cdp/eval/function.go | 10 +- pkg/drivers/cdp/events/loop_test.go | 8 +- pkg/drivers/cdp/events/source.go | 1 + pkg/drivers/cdp/events/stream.go | 4 +- pkg/drivers/cdp/events/stream_test.go | 12 +- pkg/drivers/cdp/helpers.go | 5 +- pkg/drivers/cdp/network/event.go | 4 +- pkg/drivers/cdp/page.go | 1 - pkg/drivers/cdp/templates/attributes.go | 4 +- pkg/drivers/cdp/templates/blur.go | 3 +- pkg/drivers/cdp/templates/children.go | 3 +- pkg/drivers/cdp/templates/helpers.go | 1 + pkg/drivers/cdp/templates/inner_html.go | 4 +- pkg/drivers/cdp/templates/inner_text.go | 4 +- pkg/drivers/cdp/templates/parent.go | 3 +- pkg/drivers/cdp/templates/query.go | 4 +- pkg/drivers/cdp/templates/select.go | 4 +- pkg/drivers/cdp/templates/siblings.go | 3 +- pkg/drivers/cdp/templates/styles.go | 3 +- pkg/drivers/cdp/templates/value.go | 3 +- pkg/drivers/cdp/templates/wait.go | 4 +- pkg/drivers/cdp/templates/xpath.go | 4 +- pkg/drivers/common/errors.go | 3 +- pkg/drivers/common/styles_test.go | 3 +- pkg/drivers/container.go | 1 + pkg/drivers/cookie.go | 3 +- pkg/drivers/headers.go | 3 +- pkg/drivers/http/driver.go | 3 +- pkg/drivers/http/driver_test.go | 5 +- pkg/drivers/http/element.go | 3 +- pkg/drivers/http/element_test.go | 8 +- pkg/drivers/http/page.go | 3 +- pkg/drivers/pdf.go | 2 - pkg/drivers/request.go | 7 +- pkg/drivers/response.go | 3 +- pkg/drivers/screenshot.go | 29 +- pkg/drivers/scroll.go | 6 +- pkg/drivers/value.go | 3 +- pkg/parser/case_changing_stream.go | 5 +- pkg/parser/fql/FqlLexer.interp | 2 +- pkg/parser/fql/FqlParser.interp | 2 +- pkg/parser/fql/fql_lexer.go | 722 +++--- pkg/parser/fql/fql_parser.go | 2192 ++++++++++++----- pkg/parser/fql/fqlparser_base_listener.go | 4 +- pkg/parser/fql/fqlparser_base_visitor.go | 4 +- pkg/parser/fql/fqlparser_listener.go | 4 +- pkg/parser/fql/fqlparser_visitor.go | 4 +- pkg/parser/parser.go | 3 +- pkg/runtime/collections/adapters.go | 1 + pkg/runtime/collections/filter_test.go | 3 +- pkg/runtime/collections/helpers.go | 1 + pkg/runtime/collections/indexed.go | 1 + pkg/runtime/collections/indexed_test.go | 6 +- pkg/runtime/collections/iterator.go | 1 + pkg/runtime/collections/keyed.go | 1 + pkg/runtime/collections/keyed_test.go | 6 +- pkg/runtime/collections/limit.go | 1 + pkg/runtime/collections/limit_test.go | 6 +- pkg/runtime/collections/map.go | 1 + pkg/runtime/collections/map_test.go | 6 +- pkg/runtime/collections/slice.go | 1 + pkg/runtime/collections/slice_test.go | 6 +- pkg/runtime/collections/sort_test.go | 6 +- pkg/runtime/collections/tap.go | 1 + pkg/runtime/collections/tap_test.go | 6 +- pkg/runtime/collections/unique.go | 1 + pkg/runtime/collections/unique_test.go | 6 +- pkg/runtime/collections/while_pre_test.go | 3 +- pkg/runtime/collections/while_test.go | 3 +- pkg/runtime/core/errors_test.go | 3 +- pkg/runtime/core/function_test.go | 3 +- pkg/runtime/core/helpers_test.go | 3 +- pkg/runtime/core/param_test.go | 3 +- pkg/runtime/core/scope_test.go | 3 +- pkg/runtime/core/source_test.go | 3 +- pkg/runtime/core/type.go | 20 +- pkg/runtime/core/type_test.go | 6 +- pkg/runtime/events/builtin.go | 1 + pkg/runtime/events/helpers.go | 3 +- pkg/runtime/events/observable.go | 1 + pkg/runtime/expressions/block.go | 1 + pkg/runtime/expressions/block_test.go | 6 +- pkg/runtime/expressions/body.go | 1 + pkg/runtime/expressions/body_test.go | 3 +- pkg/runtime/expressions/clauses/filter.go | 1 + pkg/runtime/expressions/clauses/sort.go | 1 + pkg/runtime/expressions/condition.go | 1 + pkg/runtime/expressions/for.go | 1 + pkg/runtime/expressions/for_in_test.go | 3 +- pkg/runtime/expressions/func_call.go | 1 + pkg/runtime/expressions/func_call_test.go | 3 +- pkg/runtime/expressions/literals/array.go | 1 + pkg/runtime/expressions/literals/boolean.go | 1 + pkg/runtime/expressions/literals/float.go | 1 + pkg/runtime/expressions/literals/int.go | 1 + pkg/runtime/expressions/literals/none.go | 1 + pkg/runtime/expressions/literals/string.go | 1 + pkg/runtime/expressions/member.go | 1 + pkg/runtime/expressions/member_test.go | 10 +- pkg/runtime/expressions/operators/math.go | 1 + .../expressions/operators/range_test.go | 3 +- pkg/runtime/expressions/operators/regexp.go | 3 +- pkg/runtime/expressions/param.go | 1 + pkg/runtime/expressions/param_test.go | 3 +- pkg/runtime/expressions/return.go | 1 + pkg/runtime/expressions/return_test.go | 3 +- pkg/runtime/expressions/variable.go | 1 + pkg/runtime/expressions/vector.go | 3 +- pkg/runtime/expressions/waitfor_event_test.go | 7 +- pkg/runtime/program_test.go | 6 +- pkg/runtime/values/binary.go | 3 +- pkg/runtime/values/boolean_test.go | 6 +- pkg/runtime/values/date_time_test.go | 6 +- pkg/runtime/values/float_test.go | 6 +- pkg/runtime/values/helpers_test.go | 3 +- pkg/runtime/values/int_test.go | 6 +- pkg/runtime/values/string_test.go | 6 +- pkg/runtime/values/types/helpers_test.go | 6 +- pkg/runtime/values/types/types_test.go | 6 +- pkg/stdlib/arrays/append.go | 2 +- pkg/stdlib/arrays/append_test.go | 6 +- pkg/stdlib/arrays/first_test.go | 6 +- pkg/stdlib/arrays/flatten_test.go | 6 +- pkg/stdlib/arrays/intersection_test.go | 6 +- pkg/stdlib/arrays/last_test.go | 6 +- pkg/stdlib/arrays/minus_test.go | 6 +- pkg/stdlib/arrays/nth_test.go | 6 +- pkg/stdlib/arrays/outersection_test.go | 6 +- pkg/stdlib/arrays/pop_test.go | 6 +- pkg/stdlib/arrays/position_test.go | 6 +- pkg/stdlib/arrays/push_test.go | 6 +- pkg/stdlib/arrays/remove_nth_test.go | 6 +- pkg/stdlib/arrays/remove_value_test.go | 6 +- pkg/stdlib/arrays/remove_values_test.go | 6 +- pkg/stdlib/arrays/shift_test.go | 6 +- pkg/stdlib/arrays/slice_test.go | 6 +- pkg/stdlib/arrays/sorted_test.go | 6 +- pkg/stdlib/arrays/sorted_unique_test.go | 6 +- pkg/stdlib/arrays/union_distinct_test.go | 6 +- pkg/stdlib/arrays/union_test.go | 3 +- pkg/stdlib/arrays/unique_test.go | 6 +- pkg/stdlib/arrays/unshift_test.go | 6 +- pkg/stdlib/collections/reverse.go | 1 + pkg/stdlib/collections/reverse_test.go | 3 +- pkg/stdlib/datetime/compare.go | 3 +- pkg/stdlib/html/attr_set.go | 1 + pkg/stdlib/html/blur.go | 1 + pkg/stdlib/html/document.go | 3 +- pkg/stdlib/html/download.go | 4 +- pkg/stdlib/html/find_frames.go | 3 +- pkg/stdlib/html/input.go | 1 + pkg/stdlib/html/pagination.go | 4 +- pkg/stdlib/html/parse.go | 4 +- pkg/stdlib/html/pdf.go | 13 - pkg/stdlib/html/press.go | 1 + pkg/stdlib/html/press_selector.go | 1 + pkg/stdlib/html/wait_navigation.go | 1 + pkg/stdlib/html/xpath_selector.go | 1 + pkg/stdlib/io/net/http/delete_test.go | 76 +- pkg/stdlib/io/net/http/get_test.go | 100 +- pkg/stdlib/io/net/http/post_test.go | 129 +- pkg/stdlib/io/net/http/put_test.go | 68 +- pkg/stdlib/io/net/http/request.go | 4 +- pkg/stdlib/math/abs_test.go | 3 +- pkg/stdlib/math/acos_test.go | 3 +- pkg/stdlib/math/asin_test.go | 3 +- pkg/stdlib/math/atan2_test.go | 3 +- pkg/stdlib/math/atan_test.go | 3 +- pkg/stdlib/math/average_test.go | 3 +- pkg/stdlib/math/ceil_test.go | 3 +- pkg/stdlib/math/cos_test.go | 3 +- pkg/stdlib/math/degrees_test.go | 3 +- pkg/stdlib/math/exp2_test.go | 3 +- pkg/stdlib/math/exp_test.go | 3 +- pkg/stdlib/math/floor_test.go | 3 +- pkg/stdlib/math/log10_test.go | 3 +- pkg/stdlib/math/log2_test.go | 3 +- pkg/stdlib/math/log_test.go | 3 +- pkg/stdlib/math/max_test.go | 3 +- pkg/stdlib/math/median_test.go | 3 +- pkg/stdlib/math/min_test.go | 3 +- pkg/stdlib/math/percentile.go | 3 +- pkg/stdlib/math/percentile_test.go | 3 +- pkg/stdlib/math/pi_test.go | 6 +- pkg/stdlib/math/pow_test.go | 3 +- pkg/stdlib/math/radians_test.go | 3 +- pkg/stdlib/math/rand_test.go | 6 +- pkg/stdlib/math/range_test.go | 3 +- pkg/stdlib/math/round_test.go | 3 +- pkg/stdlib/math/sin_test.go | 3 +- pkg/stdlib/math/sqrt_test.go | 3 +- pkg/stdlib/math/stddev_population_test.go | 3 +- pkg/stdlib/math/stddev_sample_test.go | 3 +- pkg/stdlib/math/sum_test.go | 3 +- pkg/stdlib/math/tan_test.go | 3 +- pkg/stdlib/math/variance_population_test.go | 3 +- pkg/stdlib/math/variance_sample_test.go | 3 +- pkg/stdlib/objects/keep_keys_test.go | 3 +- pkg/stdlib/objects/keys_test.go | 3 +- pkg/stdlib/path/base_test.go | 3 +- pkg/stdlib/path/clean_test.go | 3 +- pkg/stdlib/path/dir_test.go | 3 +- pkg/stdlib/path/ext_test.go | 3 +- pkg/stdlib/path/is_abs_test.go | 3 +- pkg/stdlib/path/join_test.go | 3 +- pkg/stdlib/path/match_test.go | 3 +- pkg/stdlib/path/separate_test.go | 3 +- pkg/stdlib/strings/case_test.go | 6 +- pkg/stdlib/strings/concat_test.go | 6 +- pkg/stdlib/strings/contains_test.go | 6 +- pkg/stdlib/strings/encode_test.go | 6 +- pkg/stdlib/strings/escape_test.go | 3 +- pkg/stdlib/strings/find_test.go | 6 +- pkg/stdlib/strings/fmt.go | 3 +- pkg/stdlib/strings/fmt_test.go | 3 +- pkg/stdlib/strings/json_test.go | 3 +- pkg/stdlib/strings/like_test.go | 3 +- pkg/stdlib/strings/random_test.go | 6 +- pkg/stdlib/strings/regex_test.go | 6 +- pkg/stdlib/strings/split_test.go | 6 +- pkg/stdlib/strings/substitute_test.go | 6 +- pkg/stdlib/strings/substr_test.go | 3 +- pkg/stdlib/strings/trim_test.go | 6 +- pkg/stdlib/strings/unescape_test.go | 3 +- pkg/stdlib/testing/len_test.go | 3 +- pkg/stdlib/testing/none_test.go | 3 +- pkg/stdlib/types/to_array.go | 1 + pkg/stdlib/types/to_boolean_test.go | 6 +- 273 files changed, 2990 insertions(+), 1679 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0373f54f..fbd167fd 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -3,12 +3,36 @@ name: build on: [push, pull_request] jobs: + analyze: + name: Static Analysis + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v2 + + - name: Set up Go + uses: actions/setup-go@v3 + with: + go-version: '>=1.19' + + - name: Set up linters + run: make install-tools + + - name: Lint + run: | + make vet + make lint + make fmt + git diff + if [[ $(git diff) != '' ]]; then echo 'Invalid formatting!' >&2; exit 1; fi + build: name: Build runs-on: ubuntu-latest strategy: matrix: - goVer: [1.14, 1.15, 1.16, 1.17] + goVer: [1.18, 1.19] steps: - name: Set up Go ${{ matrix.goVer }} uses: actions/setup-go@v2 @@ -16,14 +40,17 @@ jobs: go-version: ${{ matrix.goVer }} id: go + - name: Check out code into the Go module directory + uses: actions/checkout@v2 + - name: Set up ANTLR env: - ANTLR_VERSION: 4.9 + ANTLR_VERSION: 4.11.1 run: | sudo curl -o /usr/local/lib/antlr-${ANTLR_VERSION}-complete.jar https://www.antlr.org/download/antlr-${ANTLR_VERSION}-complete.jar export CLASSPATH=".:/usr/local/lib/antlr-${ANTLR_VERSION}-complete.jar:$CLASSPATH" mkdir $HOME/antlr-bin - echo -e '#!/bin/bash\njava -jar /usr/local/lib/antlr-4.9-complete.jar "$@"' > $HOME/antlr-bin/antlr + echo -e '#!/bin/bash\njava -jar /usr/local/lib/antlr-4.11.1-complete.jar "$@"' > $HOME/antlr-bin/antlr echo -e '#!/bin/bash\njava org.antlr.v4.gui.TestRig "$@"' > $HOME/antlr-bin/grun chmod +x $HOME/antlr-bin/* export PATH=$PATH:$HOME/antlr-bin @@ -34,23 +61,9 @@ jobs: curl https://raw.githubusercontent.com/MontFerret/lab/master/install.sh -o install.sh sudo sh install.sh - - name: Set up linters - run: go install github.com/mgechev/revive@latest - - - name: Check out code into the Go module directory - uses: actions/checkout@v2 - - name: Get dependencies run: make install - - name: Lint - run: | - make vet - make lint - make fmt - git diff - if [[ $(git diff) != '' ]]; then echo 'Invalid formatting!' >&2; exit 1; fi - - name: Generate run: | export PATH=$PATH:$HOME/antlr-bin diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 2305be2b..85ee8e63 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -17,8 +17,6 @@ on: pull_request: # The branches below must be a subset of the branches above branches: [ master ] - schedule: - - cron: '44 5 * * 4' jobs: analyze: @@ -34,34 +32,34 @@ jobs: # https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed steps: - - name: Checkout repository - uses: actions/checkout@v2 + - name: Checkout repository + uses: actions/checkout@v2 - # Initializes the CodeQL tools for scanning. - - name: Initialize CodeQL - uses: github/codeql-action/init@v1 - with: - languages: ${{ matrix.language }} - # If you wish to specify custom queries, you can do so here or in a config file. - # By default, queries listed here will override any specified in a config file. - # Prefix the list here with "+" to use these queries and those in the config file. - # queries: ./path/to/local/query, your-org/your-repo/queries@main + # Initializes the CodeQL tools for scanning. + - name: Initialize CodeQL + uses: github/codeql-action/init@v1 + with: + languages: ${{ matrix.language }} + # If you wish to specify custom queries, you can do so here or in a config file. + # By default, queries listed here will override any specified in a config file. + # Prefix the list here with "+" to use these queries and those in the config file. + # queries: ./path/to/local/query, your-org/your-repo/queries@main - # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). - # If this step fails, then you should remove it and run the build manually (see below) - - name: Autobuild - uses: github/codeql-action/autobuild@v1 + # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). + # If this step fails, then you should remove it and run the build manually (see below) + - name: Autobuild + uses: github/codeql-action/autobuild@v1 - # ℹī¸ Command-line programs to run using the OS shell. - # 📚 https://git.io/JvXDl + # ℹī¸ Command-line programs to run using the OS shell. + # 📚 https://git.io/JvXDl - # ✏ī¸ If the Autobuild fails above, remove it and uncomment the following three lines - # and modify them (or add more) to build your code if your project - # uses a compiled language + # ✏ī¸ If the Autobuild fails above, remove it and uncomment the following three lines + # and modify them (or add more) to build your code if your project + # uses a compiled language - #- run: | - # make bootstrap - # make release + #- run: | + # make bootstrap + # make release - - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v1 + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v1 \ No newline at end of file diff --git a/Makefile b/Makefile index 3b7da232..1afd9844 100644 --- a/Makefile +++ b/Makefile @@ -9,6 +9,11 @@ default: build build: vet generate test compile +install-tools: + go install honnef.co/go/tools/cmd/staticcheck@latest && \ + go install golang.org/x/tools/cmd/goimports@latest && \ + go install github.com/mgechev/revive@latest + install: go get @@ -37,11 +42,13 @@ doc: # http://golang.org/cmd/go/#hdr-Run_gofmt_on_package_sources fmt: - go fmt ${DIR_PKG}/... + go fmt ${DIR_PKG}/... && \ + goimports -w -local github.com/MontFerret ./pkg ./e2e # https://github.com/mgechev/revive # go get github.com/mgechev/revive lint: + staticcheck ./pkg/compiler ./pkg/drivers ./pkg/runtime ./pkg/stdlib && \ revive -config revive.toml -formatter stylish -exclude ./pkg/parser/fql/... -exclude ./vendor/... ./... # http://godoc.org/code.google.com/p/go.tools/cmd/vet diff --git a/e2e/cli.go b/e2e/cli.go index 2383882f..dafc7697 100644 --- a/e2e/cli.go +++ b/e2e/cli.go @@ -7,6 +7,7 @@ import ( "encoding/json" "flag" "fmt" + "io" "io/ioutil" "os" "os/signal" @@ -259,7 +260,7 @@ func main() { // check whether the app is getting a query via standard input std := bufio.NewReader(os.Stdin) - b, err := ioutil.ReadAll(std) + b, err := io.ReadAll(std) if err != nil { fmt.Println(err) diff --git a/go.mod b/go.mod index 5866b71a..0052dca3 100644 --- a/go.mod +++ b/go.mod @@ -1,32 +1,33 @@ module github.com/MontFerret/ferret -go 1.17 +go 1.18 require ( github.com/PuerkitoBio/goquery v1.8.0 - github.com/antchfx/htmlquery v1.2.5 - github.com/antchfx/xpath v1.2.1 - github.com/antlr/antlr4/runtime/Go/antlr v0.0.0-20211211185417-43fb4c2dbe28 + github.com/antchfx/htmlquery v1.3.0 + github.com/antchfx/xpath v1.2.3 + github.com/antlr/antlr4/runtime/Go/antlr v1.4.10 + github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20221202181307-76fa05c21b12 github.com/corpix/uarand v0.2.0 github.com/gobwas/glob v0.2.3 github.com/gorilla/css v1.0.0 - github.com/jarcoal/httpmock v1.2.0 + github.com/jarcoal/httpmock v1.3.0 github.com/mafredri/cdp v0.33.0 github.com/pkg/errors v0.9.1 - github.com/rs/zerolog v1.28.0 - github.com/sethgrid/pester v1.1.0 + github.com/rs/zerolog v1.29.0 + github.com/sethgrid/pester v1.2.0 github.com/smartystreets/goconvey v1.7.2 github.com/stretchr/testify v1.8.1 github.com/wI2L/jettison v0.7.4 - golang.org/x/net v0.0.0-20211209124913-491a49abca63 - golang.org/x/sync v0.0.0-20210220032951-036812b2e83c - golang.org/x/text v0.4.0 + golang.org/x/net v0.5.0 + golang.org/x/sync v0.1.0 + golang.org/x/text v0.6.0 ) require ( github.com/andybalholm/cascadia v1.3.1 // indirect github.com/davecgh/go-spew v1.1.1 // indirect - github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e // indirect + github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 // indirect github.com/gorilla/websocket v1.4.2 // indirect github.com/jtolds/gls v4.20.0+incompatible // indirect @@ -35,6 +36,7 @@ require ( github.com/pmezard/go-difflib v1.0.0 // indirect github.com/smartystreets/assertions v1.2.0 // indirect github.com/stretchr/objx v0.5.0 // indirect - golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f // indirect + golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e // indirect + golang.org/x/sys v0.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index 4645a188..a7bdfc47 100644 --- a/go.sum +++ b/go.sum @@ -1,14 +1,21 @@ +github.com/PuerkitoBio/goquery v1.8.0 h1:PJTF7AmFCFKk1N6V6jmKfrNH9tV5pNE6lZMkG0gta/U= github.com/PuerkitoBio/goquery v1.8.0/go.mod h1:ypIiRMtY7COPGk+I/YbZLbxsxn9g5ejnI2HSMtkjZvI= +github.com/andybalholm/cascadia v1.3.1 h1:nhxRkql1kdYCc8Snf7D5/D3spOX+dBgjA6u8x004T2c= github.com/andybalholm/cascadia v1.3.1/go.mod h1:R4bJ1UQfqADjvDa4P6HZHLh/3OxWWEqc0Sk8XGwHqvA= -github.com/antchfx/htmlquery v1.2.5/go.mod h1:2MCVBzYVafPBmKbrmwB9F5xdd+IEgRY61ci2oOsOQVw= -github.com/antchfx/xpath v1.2.1/go.mod h1:i54GszH55fYfBmoZXapTHN8T8tkcHfRgLyVwwqzXNcs= -github.com/antlr/antlr4/runtime/Go/antlr v0.0.0-20211211185417-43fb4c2dbe28 h1:Knil/MO9lpB4pm95yUamKfWeHGAQ2LEeAsXYy30qf8M= -github.com/antlr/antlr4/runtime/Go/antlr v0.0.0-20211211185417-43fb4c2dbe28/go.mod h1:F7bn7fEU90QkQ3tnmaTx3LTKLEDqnwWODIYppRQ5hnY= +github.com/antchfx/htmlquery v1.3.0 h1:5I5yNFOVI+egyia5F2s/5Do2nFWxJz41Tr3DyfKD25E= +github.com/antchfx/htmlquery v1.3.0/go.mod h1:zKPDVTMhfOmcwxheXUsx4rKJy8KEY/PU6eXr/2SebQ8= +github.com/antchfx/xpath v1.2.3 h1:CCZWOzv5bAqjVv0offZ2LVgVYFbeldKQVuLNbViZdes= +github.com/antchfx/xpath v1.2.3/go.mod h1:i54GszH55fYfBmoZXapTHN8T8tkcHfRgLyVwwqzXNcs= +github.com/antlr/antlr4/runtime/Go/antlr v1.4.10 h1:yL7+Jz0jTC6yykIK/Wh74gnTJnrGr5AyrNMXuA0gves= +github.com/antlr/antlr4/runtime/Go/antlr v1.4.10/go.mod h1:F7bn7fEU90QkQ3tnmaTx3LTKLEDqnwWODIYppRQ5hnY= +github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20221202181307-76fa05c21b12 h1:npHgfD4Tl2WJS3AJaMUi5ynGDPUBfkg3U3fCzDyXZ+4= +github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20221202181307-76fa05c21b12/go.mod h1:pSwJ0fSY5KhvocuWSx4fz3BA8OrA1bQn+K1Eli3BRwM= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/coreos/go-systemd/v22 v22.3.3-0.20220203105225-a9a7ef127534/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/corpix/uarand v0.2.0 h1:U98xXwud/AVuCpkpgfPF7J5TQgr7R5tqT8VZP5KWbzE= github.com/corpix/uarand v0.2.0/go.mod h1:/3Z1QIqWkDIhf6XWn/08/uMHoQ8JUoTIKc2iPchBOmM= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= @@ -22,21 +29,28 @@ github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22 github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.8 h1:e6P7q2lk1O+qJJb4BtCQXlK8vWEO8V1ZeuEdJNOqZyg= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gorilla/css v1.0.0 h1:BQqNyPTi50JCFMTw/b67hByjMVXZRwGha6wxVGkeihY= github.com/gorilla/css v1.0.0/go.mod h1:Dn721qIggHpt4+EFCcTLTU/vk5ySda2ReITrtgBl60c= github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/jarcoal/httpmock v1.2.0/go.mod h1:oCoTsnAz4+UoOUIf5lJOWV2QQIW5UoeUI6aM2YnWAZk= +github.com/jarcoal/httpmock v1.3.0 h1:2RJ8GP0IIaWwcC9Fp2BmVi8Kog3v2Hn7VXM3fTd+nuc= +github.com/jarcoal/httpmock v1.3.0/go.mod h1:3yb8rc4BI7TCBhFY8ng0gjuLKJNquuDNiPaZjnENuYg= github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/klauspost/compress v1.10.3 h1:OP96hzwJVBIHYU52pVTI6CczrxPvrGfgqF9N5eTO0Q8= github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= github.com/mafredri/cdp v0.33.0 h1:McuQjNe0DyctTUxt8zY6jGTlpPoy2gciqxtvKhz0XPM= @@ -47,78 +61,107 @@ github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= +github.com/maxatome/go-testdeep v1.12.0 h1:Ql7Go8Tg0C1D/uMMX59LAoYK7LffeJQ6X2T04nTH68g= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/rs/xid v1.4.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= -github.com/rs/zerolog v1.28.0 h1:MirSo27VyNi7RJYP3078AA1+Cyzd2GB66qy3aUHvsWY= -github.com/rs/zerolog v1.28.0/go.mod h1:NILgTygv/Uej1ra5XxGf82ZFSLk58MFGAUS2o6usyD0= -github.com/sethgrid/pester v1.1.0/go.mod h1:Ad7IjTpvzZO8Fl0vh9AzQ+j/jYZfyp2diGwI8m5q+ns= +github.com/rs/zerolog v1.29.0 h1:Zes4hju04hjbvkVkOhdl2HpZa+0PmVwigmo8XoORE5w= +github.com/rs/zerolog v1.29.0/go.mod h1:NILgTygv/Uej1ra5XxGf82ZFSLk58MFGAUS2o6usyD0= +github.com/segmentio/asm v1.1.3 h1:WM03sfUOENvvKexOLp+pCqgb/WDjsi7EK8gIsICtzhc= +github.com/segmentio/encoding v0.3.4 h1:WM4IBnxH8B9TakiM2QD5LyNl9JSndh88QbHqVC+Pauc= +github.com/sethgrid/pester v1.2.0 h1:adC9RS29rRUef3rIKWPOuP1Jm3/MmB6ke+OhE5giENI= +github.com/sethgrid/pester v1.2.0/go.mod h1:hEUINb4RqvDxtoCaU0BNT/HV4ig5kfgOasrf1xcvr0A= +github.com/smartystreets/assertions v1.2.0 h1:42S6lae5dvLc7BrLu/0ugRtcFVjoJNMC/N3yZFZkDFs= github.com/smartystreets/assertions v1.2.0/go.mod h1:tcbTF8ujkAEcZ8TElKY+i30BzYlVhC/LOxJk7iOWnoo= +github.com/smartystreets/goconvey v1.7.2 h1:9RBaZCeXEQ3UselpuwUQHltGVXvdwm6cv1hgR6gDIPg= github.com/smartystreets/goconvey v1.7.2/go.mod h1:Vw0tHAZW6lzCRk3xgdin6fKYcG+G3Pg9vgXWeJpQFMM= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= github.com/wI2L/jettison v0.7.4 h1:ptjriu75R/k5RAZO0DJzy2t55f7g+dPiBxBY38icaKg= github.com/wI2L/jettison v0.7.4/go.mod h1:O+F+T7X7ZN6kTsd167Qk4aZMC8jNrH48SMedNmkfPb0= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e h1:+WEEuIdZHnUeJJmEUjyYC2gfUMj69yZXw17EnHg/otA= +golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e/go.mod h1:Kr81I6Kryrl9sr8s2FK3vxD90NdsKWRuOIl2O4CvYbA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200421231249-e086a090c8fd/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210916014120-12bc252f5db8/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211209124913-491a49abca63 h1:iocB37TsdFuN6IBRZ+ry36wrkoV51/tl5vOWqkcPGvY= -golang.org/x/net v0.0.0-20211209124913-491a49abca63/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.5.0 h1:GyT4nK/YDHSqa1c4753ouYCDajOYKTja9Xb/OHtgvSw= +golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210319071255-635bc2c9138d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f h1:v4INt8xihDGvnrfjMDVXGxw9wrfxYyCjk0KbXjhR55s= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.4.0 h1:Zr2JFtRQNX3BCZ8YtxRE9hNJYC8J6I1MVbMg6owUp18= +golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.6.0 h1:3XmdazWV+ubf7QgHSTWeykHOci5oeekaGJBLkrkaw4k= +golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +nhooyr.io/websocket v1.8.7 h1:usjR2uOr/zjjkVMy0lW+PPohFok7PCow5sDjLgX4P4g= nhooyr.io/websocket v1.8.7/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= diff --git a/pkg/compiler/compiler_array_test.go b/pkg/compiler/compiler_array_test.go index 216cc7c3..96921ea7 100644 --- a/pkg/compiler/compiler_array_test.go +++ b/pkg/compiler/compiler_array_test.go @@ -2,9 +2,11 @@ package compiler_test import ( "context" - "github.com/MontFerret/ferret/pkg/compiler" - . "github.com/smartystreets/goconvey/convey" "testing" + + . "github.com/smartystreets/goconvey/convey" + + "github.com/MontFerret/ferret/pkg/compiler" ) func TestArrayOperator(t *testing.T) { diff --git a/pkg/compiler/compiler_cases_test.go b/pkg/compiler/compiler_cases_test.go index 7e52c470..63f906b7 100644 --- a/pkg/compiler/compiler_cases_test.go +++ b/pkg/compiler/compiler_cases_test.go @@ -6,6 +6,9 @@ import ( "strings" "testing" + "golang.org/x/text/cases" + "golang.org/x/text/language" + "github.com/MontFerret/ferret/pkg/compiler" "github.com/MontFerret/ferret/pkg/stdlib/arrays" @@ -57,7 +60,8 @@ func TestCases(t *testing.T) { "Mixed": func(s string) string { // Capitalize string. // Source: https://stackoverflow.com/questions/33696034/make-first-letter-of-words-uppercase-in-a-string - return strings.Title(strings.ToLower(s)) + // return strings.Title(strings.ToLower(s)) + return cases.Title(language.English).String(strings.ToLower(s)) }, "Upper": strings.ToUpper, "Lower": strings.ToLower, diff --git a/pkg/compiler/compiler_collect_aggregate_test.go b/pkg/compiler/compiler_collect_aggregate_test.go index 28571a17..2616db03 100644 --- a/pkg/compiler/compiler_collect_aggregate_test.go +++ b/pkg/compiler/compiler_collect_aggregate_test.go @@ -2,10 +2,12 @@ package compiler_test import ( "context" + "testing" + + . "github.com/smartystreets/goconvey/convey" + "github.com/MontFerret/ferret/pkg/compiler" "github.com/MontFerret/ferret/pkg/runtime" - . "github.com/smartystreets/goconvey/convey" - "testing" ) func TestAggregate(t *testing.T) { diff --git a/pkg/compiler/compiler_collect_count_test.go b/pkg/compiler/compiler_collect_count_test.go index c85cb3eb..20eb7051 100644 --- a/pkg/compiler/compiler_collect_count_test.go +++ b/pkg/compiler/compiler_collect_count_test.go @@ -2,10 +2,12 @@ package compiler_test import ( "context" + "testing" + + . "github.com/smartystreets/goconvey/convey" + "github.com/MontFerret/ferret/pkg/compiler" "github.com/MontFerret/ferret/pkg/runtime" - . "github.com/smartystreets/goconvey/convey" - "testing" ) func TestCollectCount(t *testing.T) { diff --git a/pkg/compiler/compiler_collect_into_test.go b/pkg/compiler/compiler_collect_into_test.go index 2ab6ccc1..60fb1c82 100644 --- a/pkg/compiler/compiler_collect_into_test.go +++ b/pkg/compiler/compiler_collect_into_test.go @@ -2,10 +2,12 @@ package compiler_test import ( "context" + "testing" + + . "github.com/smartystreets/goconvey/convey" + "github.com/MontFerret/ferret/pkg/compiler" "github.com/MontFerret/ferret/pkg/runtime" - . "github.com/smartystreets/goconvey/convey" - "testing" ) func TestCollectInto(t *testing.T) { diff --git a/pkg/compiler/compiler_collect_test.go b/pkg/compiler/compiler_collect_test.go index 9fa2dd1b..991592c0 100644 --- a/pkg/compiler/compiler_collect_test.go +++ b/pkg/compiler/compiler_collect_test.go @@ -2,10 +2,12 @@ package compiler_test import ( "context" + "testing" + + . "github.com/smartystreets/goconvey/convey" + "github.com/MontFerret/ferret/pkg/compiler" "github.com/MontFerret/ferret/pkg/runtime" - . "github.com/smartystreets/goconvey/convey" - "testing" ) func TestCollect(t *testing.T) { diff --git a/pkg/compiler/compiler_collect_with_count_test.go b/pkg/compiler/compiler_collect_with_count_test.go index f088d668..7f44c358 100644 --- a/pkg/compiler/compiler_collect_with_count_test.go +++ b/pkg/compiler/compiler_collect_with_count_test.go @@ -2,10 +2,12 @@ package compiler_test import ( "context" + "testing" + + . "github.com/smartystreets/goconvey/convey" + "github.com/MontFerret/ferret/pkg/compiler" "github.com/MontFerret/ferret/pkg/runtime" - . "github.com/smartystreets/goconvey/convey" - "testing" ) func TestCollectWithCount(t *testing.T) { diff --git a/pkg/compiler/compiler_eq_test.go b/pkg/compiler/compiler_eq_test.go index 59ba60e3..4ef9855d 100644 --- a/pkg/compiler/compiler_eq_test.go +++ b/pkg/compiler/compiler_eq_test.go @@ -2,10 +2,12 @@ package compiler_test import ( "context" + "testing" + + . "github.com/smartystreets/goconvey/convey" + "github.com/MontFerret/ferret/pkg/compiler" "github.com/MontFerret/ferret/pkg/runtime" - . "github.com/smartystreets/goconvey/convey" - "testing" ) func TestEqualityOperators(t *testing.T) { diff --git a/pkg/compiler/compiler_filter_test.go b/pkg/compiler/compiler_filter_test.go index 96c3ca8b..6893a35f 100644 --- a/pkg/compiler/compiler_filter_test.go +++ b/pkg/compiler/compiler_filter_test.go @@ -2,11 +2,13 @@ package compiler_test import ( "context" + "testing" + + . "github.com/smartystreets/goconvey/convey" + "github.com/MontFerret/ferret/pkg/compiler" "github.com/MontFerret/ferret/pkg/runtime/core" "github.com/MontFerret/ferret/pkg/runtime/values" - . "github.com/smartystreets/goconvey/convey" - "testing" ) func TestForFilter(t *testing.T) { diff --git a/pkg/compiler/compiler_for_ternary_test.go b/pkg/compiler/compiler_for_ternary_test.go index 7935f5f8..cbc0ab18 100644 --- a/pkg/compiler/compiler_for_ternary_test.go +++ b/pkg/compiler/compiler_for_ternary_test.go @@ -2,9 +2,11 @@ package compiler_test import ( "context" - "github.com/MontFerret/ferret/pkg/compiler" - . "github.com/smartystreets/goconvey/convey" "testing" + + . "github.com/smartystreets/goconvey/convey" + + "github.com/MontFerret/ferret/pkg/compiler" ) func TestForTernaryExpression(t *testing.T) { diff --git a/pkg/compiler/compiler_for_test.go b/pkg/compiler/compiler_for_test.go index c3b1561f..1f938b13 100644 --- a/pkg/compiler/compiler_for_test.go +++ b/pkg/compiler/compiler_for_test.go @@ -3,11 +3,13 @@ package compiler_test import ( "context" "encoding/json" - "github.com/MontFerret/ferret/pkg/compiler" - "github.com/MontFerret/ferret/pkg/runtime" - . "github.com/smartystreets/goconvey/convey" "sort" "testing" + + . "github.com/smartystreets/goconvey/convey" + + "github.com/MontFerret/ferret/pkg/compiler" + "github.com/MontFerret/ferret/pkg/runtime" ) func TestFor(t *testing.T) { diff --git a/pkg/compiler/compiler_for_while_ternary_test.go b/pkg/compiler/compiler_for_while_ternary_test.go index af493131..3bc06fc8 100644 --- a/pkg/compiler/compiler_for_while_ternary_test.go +++ b/pkg/compiler/compiler_for_while_ternary_test.go @@ -2,11 +2,13 @@ package compiler_test import ( "context" + "testing" + + . "github.com/smartystreets/goconvey/convey" + "github.com/MontFerret/ferret/pkg/compiler" "github.com/MontFerret/ferret/pkg/runtime/core" "github.com/MontFerret/ferret/pkg/runtime/values" - . "github.com/smartystreets/goconvey/convey" - "testing" ) func TestForTernaryWhileExpression(t *testing.T) { diff --git a/pkg/compiler/compiler_for_while_test.go b/pkg/compiler/compiler_for_while_test.go index fe39809c..2e8377bf 100644 --- a/pkg/compiler/compiler_for_while_test.go +++ b/pkg/compiler/compiler_for_while_test.go @@ -2,12 +2,14 @@ package compiler_test import ( "context" + "testing" + + . "github.com/smartystreets/goconvey/convey" + "github.com/MontFerret/ferret/pkg/compiler" "github.com/MontFerret/ferret/pkg/runtime" "github.com/MontFerret/ferret/pkg/runtime/core" "github.com/MontFerret/ferret/pkg/runtime/values" - . "github.com/smartystreets/goconvey/convey" - "testing" ) func TestForWhile(t *testing.T) { diff --git a/pkg/compiler/compiler_func_ns_test.go b/pkg/compiler/compiler_func_ns_test.go index a51123e7..094b4cf7 100644 --- a/pkg/compiler/compiler_func_ns_test.go +++ b/pkg/compiler/compiler_func_ns_test.go @@ -3,13 +3,15 @@ package compiler_test import ( "context" "fmt" + "regexp" + "testing" + + . "github.com/smartystreets/goconvey/convey" + "github.com/MontFerret/ferret/pkg/compiler" "github.com/MontFerret/ferret/pkg/parser" "github.com/MontFerret/ferret/pkg/runtime/core" "github.com/MontFerret/ferret/pkg/runtime/values" - . "github.com/smartystreets/goconvey/convey" - "regexp" - "testing" ) func TestFunctionNSCall(t *testing.T) { @@ -101,7 +103,7 @@ func TestFunctionNSCall(t *testing.T) { p := parser.New("RETURN TRUE") c := compiler.New() - r := regexp.MustCompile("\\w+") + r := regexp.MustCompile(`\w+`) for _, l := range p.GetLiteralNames() { if r.MatchString(l) { diff --git a/pkg/compiler/compiler_func_test.go b/pkg/compiler/compiler_func_test.go index 4ca3d5d7..50a51cda 100644 --- a/pkg/compiler/compiler_func_test.go +++ b/pkg/compiler/compiler_func_test.go @@ -2,12 +2,14 @@ package compiler_test import ( "context" + "testing" + + "github.com/pkg/errors" + . "github.com/smartystreets/goconvey/convey" + "github.com/MontFerret/ferret/pkg/compiler" "github.com/MontFerret/ferret/pkg/runtime/core" "github.com/MontFerret/ferret/pkg/runtime/values" - "github.com/pkg/errors" - . "github.com/smartystreets/goconvey/convey" - "testing" ) func TestFunctionCall(t *testing.T) { diff --git a/pkg/compiler/compiler_in_test.go b/pkg/compiler/compiler_in_test.go index d1f6da60..9c7d312d 100644 --- a/pkg/compiler/compiler_in_test.go +++ b/pkg/compiler/compiler_in_test.go @@ -2,9 +2,11 @@ package compiler_test import ( "context" - "github.com/MontFerret/ferret/pkg/compiler" - . "github.com/smartystreets/goconvey/convey" "testing" + + . "github.com/smartystreets/goconvey/convey" + + "github.com/MontFerret/ferret/pkg/compiler" ) func TestInOperator(t *testing.T) { diff --git a/pkg/compiler/compiler_let_test.go b/pkg/compiler/compiler_let_test.go index cc17c616..2a5c3e6a 100644 --- a/pkg/compiler/compiler_let_test.go +++ b/pkg/compiler/compiler_let_test.go @@ -2,12 +2,14 @@ package compiler_test import ( "context" + "testing" + + . "github.com/smartystreets/goconvey/convey" + "github.com/MontFerret/ferret/pkg/compiler" "github.com/MontFerret/ferret/pkg/runtime" "github.com/MontFerret/ferret/pkg/runtime/core" "github.com/MontFerret/ferret/pkg/runtime/values" - . "github.com/smartystreets/goconvey/convey" - "testing" ) func TestLet(t *testing.T) { diff --git a/pkg/compiler/compiler_like_test.go b/pkg/compiler/compiler_like_test.go index 14542a7a..991c1fcb 100644 --- a/pkg/compiler/compiler_like_test.go +++ b/pkg/compiler/compiler_like_test.go @@ -2,9 +2,11 @@ package compiler_test import ( "context" - "github.com/MontFerret/ferret/pkg/compiler" - . "github.com/smartystreets/goconvey/convey" "testing" + + . "github.com/smartystreets/goconvey/convey" + + "github.com/MontFerret/ferret/pkg/compiler" ) func TestLikeOperator(t *testing.T) { diff --git a/pkg/compiler/compiler_limit_test.go b/pkg/compiler/compiler_limit_test.go index 32b4dcff..efe02e0a 100644 --- a/pkg/compiler/compiler_limit_test.go +++ b/pkg/compiler/compiler_limit_test.go @@ -2,11 +2,13 @@ package compiler_test import ( "context" + "testing" + + . "github.com/smartystreets/goconvey/convey" + "github.com/MontFerret/ferret/pkg/compiler" "github.com/MontFerret/ferret/pkg/runtime/core" "github.com/MontFerret/ferret/pkg/runtime/values" - . "github.com/smartystreets/goconvey/convey" - "testing" ) func TestForLimit(t *testing.T) { diff --git a/pkg/compiler/compiler_logical_test.go b/pkg/compiler/compiler_logical_test.go index a777854d..e86821fc 100644 --- a/pkg/compiler/compiler_logical_test.go +++ b/pkg/compiler/compiler_logical_test.go @@ -3,11 +3,13 @@ package compiler_test import ( "context" "errors" + "testing" + + . "github.com/smartystreets/goconvey/convey" + "github.com/MontFerret/ferret/pkg/compiler" "github.com/MontFerret/ferret/pkg/runtime" "github.com/MontFerret/ferret/pkg/runtime/core" - . "github.com/smartystreets/goconvey/convey" - "testing" ) func TestLogicalOperators(t *testing.T) { diff --git a/pkg/compiler/compiler_math_test.go b/pkg/compiler/compiler_math_test.go index 0fc07f52..9d0397b6 100644 --- a/pkg/compiler/compiler_math_test.go +++ b/pkg/compiler/compiler_math_test.go @@ -2,10 +2,12 @@ package compiler_test import ( "context" + "testing" + + . "github.com/smartystreets/goconvey/convey" + "github.com/MontFerret/ferret/pkg/compiler" "github.com/MontFerret/ferret/pkg/runtime" - . "github.com/smartystreets/goconvey/convey" - "testing" ) func TestMathOperators(t *testing.T) { diff --git a/pkg/compiler/compiler_member_test.go b/pkg/compiler/compiler_member_test.go index 6f86bc01..fa2ffaf0 100644 --- a/pkg/compiler/compiler_member_test.go +++ b/pkg/compiler/compiler_member_test.go @@ -3,15 +3,17 @@ package compiler_test import ( "context" "fmt" - "github.com/MontFerret/ferret/pkg/parser" - "github.com/MontFerret/ferret/pkg/runtime/core" "regexp" "strconv" "strings" "testing" - "github.com/MontFerret/ferret/pkg/compiler" + "github.com/MontFerret/ferret/pkg/parser" + "github.com/MontFerret/ferret/pkg/runtime/core" + . "github.com/smartystreets/goconvey/convey" + + "github.com/MontFerret/ferret/pkg/compiler" ) func TestMember(t *testing.T) { @@ -525,7 +527,7 @@ RETURN o1.first["second"][o2.prop].fourth["fifth"]["bottom"] Convey("Reserved words as property name", t, func() { p := parser.New("RETURN TRUE") - r := regexp.MustCompile("\\w+") + r := regexp.MustCompile(`\w+`) for idx, l := range p.GetLiteralNames() { if r.MatchString(l) { diff --git a/pkg/compiler/compiler_param_test.go b/pkg/compiler/compiler_param_test.go index 8939a515..59eced1d 100644 --- a/pkg/compiler/compiler_param_test.go +++ b/pkg/compiler/compiler_param_test.go @@ -2,10 +2,12 @@ package compiler_test import ( "context" + "testing" + + . "github.com/smartystreets/goconvey/convey" + "github.com/MontFerret/ferret/pkg/compiler" "github.com/MontFerret/ferret/pkg/runtime" - . "github.com/smartystreets/goconvey/convey" - "testing" ) func TestParam(t *testing.T) { diff --git a/pkg/compiler/compiler_precedence_test.go b/pkg/compiler/compiler_precedence_test.go index 5306be3f..21fc8640 100644 --- a/pkg/compiler/compiler_precedence_test.go +++ b/pkg/compiler/compiler_precedence_test.go @@ -2,9 +2,10 @@ package compiler_test import ( "context" - "github.com/MontFerret/ferret/pkg/compiler" "testing" + "github.com/MontFerret/ferret/pkg/compiler" + . "github.com/smartystreets/goconvey/convey" ) diff --git a/pkg/compiler/compiler_range_test.go b/pkg/compiler/compiler_range_test.go index 70779d85..4b8adad8 100644 --- a/pkg/compiler/compiler_range_test.go +++ b/pkg/compiler/compiler_range_test.go @@ -2,9 +2,11 @@ package compiler_test import ( "context" - "github.com/MontFerret/ferret/pkg/compiler" - . "github.com/smartystreets/goconvey/convey" "testing" + + . "github.com/smartystreets/goconvey/convey" + + "github.com/MontFerret/ferret/pkg/compiler" ) func TestRangeOperator(t *testing.T) { diff --git a/pkg/compiler/compiler_regexp_test.go b/pkg/compiler/compiler_regexp_test.go index 7f85253a..a1af1b5b 100644 --- a/pkg/compiler/compiler_regexp_test.go +++ b/pkg/compiler/compiler_regexp_test.go @@ -3,12 +3,14 @@ package compiler_test import ( "context" "fmt" - "github.com/MontFerret/ferret/pkg/runtime/core" - "github.com/MontFerret/ferret/pkg/runtime/values" "testing" - "github.com/MontFerret/ferret/pkg/compiler" + "github.com/MontFerret/ferret/pkg/runtime/core" + "github.com/MontFerret/ferret/pkg/runtime/values" + . "github.com/smartystreets/goconvey/convey" + + "github.com/MontFerret/ferret/pkg/compiler" ) func TestRegexpOperator(t *testing.T) { diff --git a/pkg/compiler/compiler_return_test.go b/pkg/compiler/compiler_return_test.go index db067d3b..e4423977 100644 --- a/pkg/compiler/compiler_return_test.go +++ b/pkg/compiler/compiler_return_test.go @@ -2,10 +2,12 @@ package compiler_test import ( "context" + "testing" + + . "github.com/smartystreets/goconvey/convey" + "github.com/MontFerret/ferret/pkg/compiler" "github.com/MontFerret/ferret/pkg/runtime" - . "github.com/smartystreets/goconvey/convey" - "testing" ) func TestReturn(t *testing.T) { diff --git a/pkg/compiler/compiler_sort_test.go b/pkg/compiler/compiler_sort_test.go index eeb45caa..e11350cd 100644 --- a/pkg/compiler/compiler_sort_test.go +++ b/pkg/compiler/compiler_sort_test.go @@ -2,11 +2,13 @@ package compiler_test import ( "context" + "testing" + + . "github.com/smartystreets/goconvey/convey" + "github.com/MontFerret/ferret/pkg/compiler" "github.com/MontFerret/ferret/pkg/runtime/core" "github.com/MontFerret/ferret/pkg/runtime/values" - . "github.com/smartystreets/goconvey/convey" - "testing" ) func TestForSort(t *testing.T) { diff --git a/pkg/compiler/compiler_str_test.go b/pkg/compiler/compiler_str_test.go index 54a72df6..e4144cdf 100644 --- a/pkg/compiler/compiler_str_test.go +++ b/pkg/compiler/compiler_str_test.go @@ -4,9 +4,11 @@ import ( "context" "encoding/json" "fmt" - "github.com/MontFerret/ferret/pkg/compiler" - . "github.com/smartystreets/goconvey/convey" "testing" + + . "github.com/smartystreets/goconvey/convey" + + "github.com/MontFerret/ferret/pkg/compiler" ) func TestString(t *testing.T) { diff --git a/pkg/compiler/compiler_ternary_test.go b/pkg/compiler/compiler_ternary_test.go index 9eb3dd8f..e2de74e4 100644 --- a/pkg/compiler/compiler_ternary_test.go +++ b/pkg/compiler/compiler_ternary_test.go @@ -3,9 +3,11 @@ package compiler_test import ( "context" "fmt" - "github.com/MontFerret/ferret/pkg/compiler" - . "github.com/smartystreets/goconvey/convey" "testing" + + . "github.com/smartystreets/goconvey/convey" + + "github.com/MontFerret/ferret/pkg/compiler" ) func TestTernaryOperator(t *testing.T) { diff --git a/pkg/compiler/compiler_unary_test.go b/pkg/compiler/compiler_unary_test.go index 25a29102..eb2a8226 100644 --- a/pkg/compiler/compiler_unary_test.go +++ b/pkg/compiler/compiler_unary_test.go @@ -2,9 +2,11 @@ package compiler_test import ( "context" - "github.com/MontFerret/ferret/pkg/compiler" - . "github.com/smartystreets/goconvey/convey" "testing" + + . "github.com/smartystreets/goconvey/convey" + + "github.com/MontFerret/ferret/pkg/compiler" ) func TestUnaryOperator(t *testing.T) { diff --git a/pkg/compiler/compiler_use_test.go b/pkg/compiler/compiler_use_test.go index 5b7a7183..39fc9d37 100644 --- a/pkg/compiler/compiler_use_test.go +++ b/pkg/compiler/compiler_use_test.go @@ -4,11 +4,12 @@ import ( "context" "testing" + . "github.com/smartystreets/goconvey/convey" + "github.com/MontFerret/ferret/pkg/compiler" "github.com/MontFerret/ferret/pkg/runtime/core" "github.com/MontFerret/ferret/pkg/stdlib/strings" "github.com/MontFerret/ferret/pkg/stdlib/types" - . "github.com/smartystreets/goconvey/convey" ) func TestUseExpression(t *testing.T) { diff --git a/pkg/compiler/compiler_waitfor_event_ternary_test.go b/pkg/compiler/compiler_waitfor_event_ternary_test.go index c08a59eb..b1047667 100644 --- a/pkg/compiler/compiler_waitfor_event_ternary_test.go +++ b/pkg/compiler/compiler_waitfor_event_ternary_test.go @@ -2,8 +2,9 @@ package compiler_test import ( "context" - . "github.com/smartystreets/goconvey/convey" "testing" + + . "github.com/smartystreets/goconvey/convey" ) func TestWaitforEventWithinTernaryExpression(t *testing.T) { diff --git a/pkg/compiler/compiler_waitfor_event_test.go b/pkg/compiler/compiler_waitfor_event_test.go index e7ebab85..0065e933 100644 --- a/pkg/compiler/compiler_waitfor_event_test.go +++ b/pkg/compiler/compiler_waitfor_event_test.go @@ -2,16 +2,18 @@ package compiler_test import ( "context" + "testing" + "time" + + "github.com/pkg/errors" + . "github.com/smartystreets/goconvey/convey" + "github.com/MontFerret/ferret/pkg/compiler" "github.com/MontFerret/ferret/pkg/runtime" "github.com/MontFerret/ferret/pkg/runtime/core" "github.com/MontFerret/ferret/pkg/runtime/events" "github.com/MontFerret/ferret/pkg/runtime/values" "github.com/MontFerret/ferret/pkg/runtime/values/types" - "github.com/pkg/errors" - . "github.com/smartystreets/goconvey/convey" - "testing" - "time" ) type ( diff --git a/pkg/compiler/listener.go b/pkg/compiler/listener.go index ab8c50c4..f473ab8f 100644 --- a/pkg/compiler/listener.go +++ b/pkg/compiler/listener.go @@ -1,7 +1,7 @@ package compiler import ( - "github.com/antlr/antlr4/runtime/Go/antlr" + "github.com/antlr/antlr4/runtime/Go/antlr/v4" "github.com/pkg/errors" ) diff --git a/pkg/compiler/namespace.go b/pkg/compiler/namespace.go index f2beb109..9cc12711 100644 --- a/pkg/compiler/namespace.go +++ b/pkg/compiler/namespace.go @@ -4,8 +4,9 @@ import ( "regexp" "strings" - "github.com/MontFerret/ferret/pkg/runtime/core" "github.com/pkg/errors" + + "github.com/MontFerret/ferret/pkg/runtime/core" ) var fnNameValidation = regexp.MustCompile("^[a-zA-Z]+[a-zA-Z0-9_]*(::[a-zA-Z]+[a-zA-Z0-9_]*)*$") @@ -90,9 +91,7 @@ func (nc *NamespaceContainer) RegisteredFunctions() []string { // root namespace, return all functions if nc.name == emptyNS { - for _, k := range fnames { - res = append(res, k) - } + res = append(res, fnames...) } else { nsPrefix := nc.name + separator for _, k := range fnames { diff --git a/pkg/compiler/namespace_test.go b/pkg/compiler/namespace_test.go index e1375089..92895eb8 100644 --- a/pkg/compiler/namespace_test.go +++ b/pkg/compiler/namespace_test.go @@ -2,11 +2,13 @@ package compiler_test import ( "context" + "testing" + + . "github.com/smartystreets/goconvey/convey" + "github.com/MontFerret/ferret/pkg/compiler" "github.com/MontFerret/ferret/pkg/runtime/core" "github.com/MontFerret/ferret/pkg/runtime/values" - . "github.com/smartystreets/goconvey/convey" - "testing" ) func TestNamespaceBuilder(t *testing.T) { diff --git a/pkg/compiler/visitor.go b/pkg/compiler/visitor.go index 72db1033..d620af95 100644 --- a/pkg/compiler/visitor.go +++ b/pkg/compiler/visitor.go @@ -6,7 +6,7 @@ import ( "strconv" "strings" - "github.com/antlr/antlr4/runtime/Go/antlr" + "github.com/antlr/antlr4/runtime/Go/antlr/v4" "github.com/pkg/errors" "github.com/MontFerret/ferret/pkg/parser/fql" @@ -56,7 +56,8 @@ func (v *visitor) VisitProgram(ctx *fql.ProgramContext) interface{} { gs := newGlobalScope() rs := newRootScope(gs) - block, err := v.visitBody(ctx.Body().(fql.IBodyContext), rs) + block, err := v.visitBody(ctx.Body(), rs) + if err != nil { return nil, err } @@ -69,7 +70,7 @@ func (v *visitor) visitHeads(heads []fql.IHeadContext) error { namespaces := map[string]struct{}{} for _, head := range heads { - err := v.visitHead(head.(fql.IHeadContext), namespaces) + err := v.visitHead(head, namespaces) if err != nil { return err } @@ -142,7 +143,7 @@ func (v *visitor) visitBody(c fql.IBodyContext, scope *scope) (core.Expression, body := expressions.NewBodyExpression(len(statements) + 1) for _, stmt := range statements { - e, err := v.visitBodyStatement(stmt.(fql.IBodyStatementContext), scope) + e, err := v.visitBodyStatement(stmt, scope) if err != nil { return nil, err } @@ -153,7 +154,7 @@ func (v *visitor) visitBody(c fql.IBodyContext, scope *scope) (core.Expression, exp := ctx.BodyExpression() if exp != nil { - e, err := v.visitBodyExpression(exp.(fql.IBodyExpressionContext), scope) + e, err := v.visitBodyExpression(exp, scope) if err != nil { return nil, err } @@ -170,15 +171,15 @@ func (v *visitor) visitBodyStatement(c fql.IBodyStatementContext, scope *scope) ctx := c.(*fql.BodyStatementContext) if variable := ctx.VariableDeclaration(); variable != nil { - return v.visitVariableDeclaration(variable.(fql.IVariableDeclarationContext), scope) + return v.visitVariableDeclaration(variable, scope) } if funcCall := ctx.FunctionCallExpression(); funcCall != nil { - return v.visitFunctionCallExpression(funcCall.(fql.IFunctionCallExpressionContext), scope) + return v.visitFunctionCallExpression(funcCall, scope) } if waitfor := ctx.WaitForExpression(); waitfor != nil { - return v.visitWaitForExpression(waitfor.(fql.IWaitForExpressionContext), scope) + return v.visitWaitForExpression(waitfor, scope) } return nil, v.unexpectedToken(ctx) @@ -188,11 +189,11 @@ func (v *visitor) visitBodyExpression(c fql.IBodyExpressionContext, scope *scope ctx := c.(*fql.BodyExpressionContext) if exp := ctx.ForExpression(); exp != nil { - return v.visitForExpression(exp.(fql.IForExpressionContext), scope) + return v.visitForExpression(exp, scope) } if exp := ctx.ReturnExpression(); exp != nil { - return v.visitReturnExpression(exp.(fql.IReturnExpressionContext), scope) + return v.visitReturnExpression(exp, scope) } return nil, v.unexpectedToken(ctx) @@ -204,7 +205,7 @@ func (v *visitor) visitReturnExpression(c fql.IReturnExpressionContext, scope *s ctx := c.(*fql.ReturnExpressionContext) if exp := ctx.Expression(); exp != nil { - out, err = v.visitExpression(exp.(fql.IExpressionContext), scope) + out, err = v.visitExpression(exp, scope) } else { return nil, v.unexpectedToken(ctx) } @@ -254,7 +255,7 @@ func (v *visitor) visitForExpression(c fql.IForExpressionContext, scope *scope) return nil, err } } else { - whileExpCtx := ctx.Expression().(fql.IExpressionContext) + whileExpCtx := ctx.Expression() conditionExp, err := v.visitExpression(whileExpCtx, scope) if err != nil { @@ -301,7 +302,7 @@ func (v *visitor) visitForExpression(c fql.IForExpressionContext, scope *scope) if clauseCtx != nil { setter, err := v.visitForExpressionClause( - clauseCtx.(fql.IForExpressionClauseContext), + clauseCtx, forInScope, valVarName, keyVarName, @@ -314,7 +315,7 @@ func (v *visitor) visitForExpression(c fql.IForExpressionContext, scope *scope) parsedClauses = append(parsedClauses, setter) } else if statementCtx != nil { exp, err := v.visitForExpressionStatement( - statementCtx.(fql.IForExpressionStatementContext), + statementCtx, forInScope, ) @@ -396,19 +397,19 @@ func (v *visitor) visitLimitClause(c fql.ILimitClauseContext, scope *scope) (cor clauseValues := ctx.AllLimitClauseValue() if len(clauseValues) > 1 { - offset, err = v.visitLimitClauseValue(clauseValues[0].(fql.ILimitClauseValueContext), scope) + offset, err = v.visitLimitClauseValue(clauseValues[0], scope) if err != nil { return nil, nil, err } - count, err = v.visitLimitClauseValue(clauseValues[1].(fql.ILimitClauseValueContext), scope) + count, err = v.visitLimitClauseValue(clauseValues[1], scope) if err != nil { return nil, nil, err } } else { - count, err = v.visitLimitClauseValue(clauseValues[0].(fql.ILimitClauseValueContext), scope) + count, err = v.visitLimitClauseValue(clauseValues[0], scope) if err != nil { return nil, nil, err @@ -431,7 +432,7 @@ func (v *visitor) visitLimitClauseValue(c fql.ILimitClauseValueContext, scope *s return literals.NewIntLiteral(i), nil } else if paramCtx := ctx.Param(); paramCtx != nil { - return v.visitParam(paramCtx.(fql.IParamContext), scope) + return v.visitParam(paramCtx, scope) } else if variableCtx := ctx.Variable(); variableCtx != nil { return v.visitVariable(variableCtx, scope) } else if funcCtx := ctx.FunctionCallExpression(); funcCtx != nil { @@ -455,7 +456,7 @@ func (v *visitor) visitSortClause(c fql.ISortClauseContext, scope *scope) ([]*cl for idx, sortExpCtx := range sortExpCtxs { sortExpCtx := sortExpCtx.(*fql.SortClauseExpressionContext) - exp, err := v.visitExpression(sortExpCtx.Expression().(fql.IExpressionContext), scope) + exp, err := v.visitExpression(sortExpCtx.Expression(), scope) if err != nil { return nil, err } @@ -501,7 +502,7 @@ func (v *visitor) visitCollectClause(c fql.ICollectClauseContext, scope *scope, selectors = make([]*clauses.CollectSelector, 0, len(collectSelectors)) for _, cs := range collectSelectors { - selector, err := v.visitCollectSelector(cs.(fql.ICollectSelectorContext), scope) + selector, err := v.visitCollectSelector(cs, scope) if err != nil { return nil, err } @@ -520,7 +521,7 @@ func (v *visitor) visitCollectClause(c fql.ICollectClauseContext, scope *scope, // if projection expression is defined like WITH group = { foo: i.bar } if projectionSelectorCtx != nil { - selector, err := v.visitCollectSelector(projectionSelectorCtx.(fql.ICollectSelectorContext), scope) + selector, err := v.visitCollectSelector(projectionSelectorCtx, scope) if err != nil { return nil, err } @@ -592,7 +593,7 @@ func (v *visitor) visitCollectClause(c fql.ICollectClauseContext, scope *scope, selectors := make([]*clauses.CollectAggregateSelector, 0, len(selectorCtxs)) for _, sc := range selectorCtxs { - selector, err := v.visitCollectAggregateSelector(sc.(fql.ICollectAggregateSelectorContext), scope) + selector, err := v.visitCollectAggregateSelector(sc, scope) if err != nil { return nil, err } @@ -623,7 +624,7 @@ func (v *visitor) visitCollectClause(c fql.ICollectClauseContext, scope *scope, func (v *visitor) visitCollectSelector(c fql.ICollectSelectorContext, scope *scope) (*clauses.CollectSelector, error) { ctx := c.(*fql.CollectSelectorContext) variable := ctx.Identifier().GetText() - exp, err := v.visitExpression(ctx.Expression().(fql.IExpressionContext), scope) + exp, err := v.visitExpression(ctx.Expression(), scope) if err != nil { return nil, err @@ -638,7 +639,7 @@ func (v *visitor) visitCollectAggregateSelector(c fql.ICollectAggregateSelectorC fnCtx := ctx.FunctionCallExpression() if fnCtx != nil { - exp, err := v.visitFunctionCallExpression(fnCtx.(fql.IFunctionCallExpressionContext), scope) + exp, err := v.visitFunctionCallExpression(fnCtx, scope) if err != nil { return nil, err @@ -662,43 +663,43 @@ func (v *visitor) visitForExpressionSource(c fql.IForExpressionSourceContext, sc arr := ctx.ArrayLiteral() if arr != nil { - return v.visitArrayLiteral(arr.(fql.IArrayLiteralContext), scope) + return v.visitArrayLiteral(arr, scope) } obj := ctx.ObjectLiteral() if obj != nil { - return v.visitObjectLiteral(obj.(fql.IObjectLiteralContext), scope) + return v.visitObjectLiteral(obj, scope) } variable := ctx.Variable() if variable != nil { - return v.visitVariable(variable.(fql.IVariableContext), scope) + return v.visitVariable(variable, scope) } funcCall := ctx.FunctionCallExpression() if funcCall != nil { - return v.visitFunctionCallExpression(funcCall.(fql.IFunctionCallExpressionContext), scope) + return v.visitFunctionCallExpression(funcCall, scope) } memberExp := ctx.MemberExpression() if memberExp != nil { - return v.visitMemberExpression(memberExp.(fql.IMemberExpressionContext), scope) + return v.visitMemberExpression(memberExp, scope) } rangeOp := ctx.RangeOperator() if rangeOp != nil { - return v.visitRangeOperator(rangeOp.(fql.IRangeOperatorContext), scope) + return v.visitRangeOperator(rangeOp, scope) } param := ctx.Param() if param != nil { - return v.visitParam(param.(fql.IParamContext), scope) + return v.visitParam(param, scope) } return nil, core.Error(ErrInvalidDataSource, ctx.GetText()) @@ -710,7 +711,7 @@ func (v *visitor) visitForExpressionClause(c fql.IForExpressionClauseContext, sc limitCtx := ctx.LimitClause() if limitCtx != nil { - limit, offset, err := v.visitLimitClause(limitCtx.(fql.ILimitClauseContext), scope) + limit, offset, err := v.visitLimitClause(limitCtx, scope) if err != nil { return nil, err } @@ -723,7 +724,7 @@ func (v *visitor) visitForExpressionClause(c fql.IForExpressionClauseContext, sc filterCtx := ctx.FilterClause() if filterCtx != nil { - filterExp, err := v.visitFilterClause(filterCtx.(fql.IFilterClauseContext), scope) + filterExp, err := v.visitFilterClause(filterCtx, scope) if err != nil { return nil, err } @@ -736,7 +737,6 @@ func (v *visitor) visitForExpressionClause(c fql.IForExpressionClauseContext, sc sortCtx := ctx.SortClause() if sortCtx != nil { - sortCtx := sortCtx.(fql.ISortClauseContext) sortExps, err := v.visitSortClause(sortCtx, scope) if err != nil { return nil, err @@ -750,7 +750,6 @@ func (v *visitor) visitForExpressionClause(c fql.IForExpressionClauseContext, sc collectCtx := ctx.CollectClause() if collectCtx != nil { - collectCtx := collectCtx.(fql.ICollectClauseContext) params, err := v.visitCollectClause(collectCtx, scope, valVarName) if err != nil { return nil, err @@ -771,7 +770,7 @@ func (v *visitor) visitForExpressionStatement(c fql.IForExpressionStatementConte if variableCtx != nil { variableExp, err := v.visitVariableDeclaration( - variableCtx.(fql.IVariableDeclarationContext), + variableCtx, scope, ) if err != nil { @@ -787,7 +786,7 @@ func (v *visitor) visitForExpressionStatement(c fql.IForExpressionStatementConte if fnCallCtx != nil { fnCallExp, err := v.visitFunctionCallExpression( - fnCallCtx.(fql.IFunctionCallExpressionContext), + fnCallCtx, scope, ) if err != nil { @@ -1136,7 +1135,7 @@ func (v *visitor) visitArrayLiteral(c fql.IArrayLiteralContext, scope *scope) (c list := ctx.ArgumentList() if list == nil { - return literals.NewArrayLiteralWith(make([]core.Expression, 0, 0)), nil + return literals.NewArrayLiteralWith(make([]core.Expression, 0)), nil } elements, err := v.visitArgumentList(list, scope) @@ -1258,7 +1257,7 @@ func (v *visitor) visitVariableDeclaration(c fql.IVariableDeclarationContext, sc } if exp := ctx.Expression(); exp != nil { - init, err = v.visitExpression(ctx.Expression().(fql.IExpressionContext), scope) + init, err = v.visitExpression(ctx.Expression(), scope) } if err != nil { @@ -1373,7 +1372,7 @@ func (v *visitor) visitArgumentList(c fql.IArgumentListContext, scope *scope) ([ args := make([]core.Expression, 0, len(exps)) for _, arg := range exps { - exp, err := v.visitExpression(arg.(fql.IExpressionContext), scope) + exp, err := v.visitExpression(arg, scope) if err != nil { return nil, err @@ -1454,7 +1453,7 @@ func (v *visitor) visitExpression(c fql.IExpressionContext, scope *scope) (core. } if ctx.GetTernaryOperator() != nil { - cond, err := v.visitExpression(ctx.GetCondition().(fql.IExpressionContext), scope) + cond, err := v.visitExpression(ctx.GetCondition(), scope) if err != nil { return nil, err @@ -1463,7 +1462,7 @@ func (v *visitor) visitExpression(c fql.IExpressionContext, scope *scope) (core. var consequent core.Expression if onTrue := ctx.GetOnTrue(); onTrue != nil { - exp, err := v.visitExpression(onTrue.(fql.IExpressionContext), scope) + exp, err := v.visitExpression(onTrue, scope) if err != nil { return nil, err @@ -1472,7 +1471,7 @@ func (v *visitor) visitExpression(c fql.IExpressionContext, scope *scope) (core. consequent = exp } - alternate, err := v.visitExpression(ctx.GetOnFalse().(fql.IExpressionContext), scope) + alternate, err := v.visitExpression(ctx.GetOnFalse(), scope) if err != nil { return nil, err diff --git a/pkg/drivers/cdp/dom/loader.go b/pkg/drivers/cdp/dom/loader.go index 5d9ccc74..3586cc38 100644 --- a/pkg/drivers/cdp/dom/loader.go +++ b/pkg/drivers/cdp/dom/loader.go @@ -3,10 +3,11 @@ package dom import ( "context" - "github.com/MontFerret/ferret/pkg/drivers/cdp/eval" - "github.com/MontFerret/ferret/pkg/runtime/core" "github.com/mafredri/cdp/protocol/page" "github.com/mafredri/cdp/protocol/runtime" + + "github.com/MontFerret/ferret/pkg/drivers/cdp/eval" + "github.com/MontFerret/ferret/pkg/runtime/core" ) type NodeLoader struct { diff --git a/pkg/drivers/cdp/eval/function.go b/pkg/drivers/cdp/eval/function.go index c7d2734a..702ac7b9 100644 --- a/pkg/drivers/cdp/eval/function.go +++ b/pkg/drivers/cdp/eval/function.go @@ -1,12 +1,14 @@ package eval import ( - "github.com/MontFerret/ferret/pkg/drivers" - "github.com/MontFerret/ferret/pkg/runtime/core" - "github.com/mafredri/cdp/protocol/runtime" - "github.com/wI2L/jettison" "strconv" "strings" + + "github.com/mafredri/cdp/protocol/runtime" + "github.com/wI2L/jettison" + + "github.com/MontFerret/ferret/pkg/drivers" + "github.com/MontFerret/ferret/pkg/runtime/core" ) type Function struct { diff --git a/pkg/drivers/cdp/events/loop_test.go b/pkg/drivers/cdp/events/loop_test.go index 92427ea5..2e0704de 100644 --- a/pkg/drivers/cdp/events/loop_test.go +++ b/pkg/drivers/cdp/events/loop_test.go @@ -2,13 +2,15 @@ package events_test import ( "context" - "github.com/MontFerret/ferret/pkg/drivers/cdp/events" - "github.com/mafredri/cdp/rpcc" - . "github.com/smartystreets/goconvey/convey" "sync" "sync/atomic" "testing" "time" + + "github.com/mafredri/cdp/rpcc" + . "github.com/smartystreets/goconvey/convey" + + "github.com/MontFerret/ferret/pkg/drivers/cdp/events" ) type TestEventStream struct { diff --git a/pkg/drivers/cdp/events/source.go b/pkg/drivers/cdp/events/source.go index 0ac8e4b4..4e32d338 100644 --- a/pkg/drivers/cdp/events/source.go +++ b/pkg/drivers/cdp/events/source.go @@ -2,6 +2,7 @@ package events import ( "context" + "github.com/mafredri/cdp/rpcc" ) diff --git a/pkg/drivers/cdp/events/stream.go b/pkg/drivers/cdp/events/stream.go index a4d45f95..a1caceaf 100644 --- a/pkg/drivers/cdp/events/stream.go +++ b/pkg/drivers/cdp/events/stream.go @@ -2,10 +2,12 @@ package events import ( "context" + + "github.com/mafredri/cdp/rpcc" + "github.com/MontFerret/ferret/pkg/runtime/core" "github.com/MontFerret/ferret/pkg/runtime/events" "github.com/MontFerret/ferret/pkg/runtime/values" - "github.com/mafredri/cdp/rpcc" ) type ( diff --git a/pkg/drivers/cdp/events/stream_test.go b/pkg/drivers/cdp/events/stream_test.go index ca9348a7..5bc619c1 100644 --- a/pkg/drivers/cdp/events/stream_test.go +++ b/pkg/drivers/cdp/events/stream_test.go @@ -2,15 +2,17 @@ package events_test import ( "context" + "testing" + "time" + + "github.com/mafredri/cdp/rpcc" + "github.com/pkg/errors" + "github.com/stretchr/testify/mock" + events2 "github.com/MontFerret/ferret/pkg/drivers/cdp/events" "github.com/MontFerret/ferret/pkg/runtime/core" "github.com/MontFerret/ferret/pkg/runtime/events" "github.com/MontFerret/ferret/pkg/runtime/values" - "github.com/mafredri/cdp/rpcc" - "github.com/pkg/errors" - "github.com/stretchr/testify/mock" - "testing" - "time" . "github.com/smartystreets/goconvey/convey" ) diff --git a/pkg/drivers/cdp/helpers.go b/pkg/drivers/cdp/helpers.go index c1e89fcd..0c0e323e 100644 --- a/pkg/drivers/cdp/helpers.go +++ b/pkg/drivers/cdp/helpers.go @@ -2,6 +2,9 @@ package cdp import ( "context" + + "github.com/mafredri/cdp/protocol/dom" + "github.com/MontFerret/ferret/pkg/runtime/events" "github.com/mafredri/cdp" @@ -65,7 +68,7 @@ func enableFeatures(ctx context.Context, client *cdp.Client, params drivers.Para }, func() error { - return client.DOM.Enable(ctx) + return client.DOM.Enable(ctx, dom.NewEnableArgs().SetIncludeWhitespace("all")) }, func() error { diff --git a/pkg/drivers/cdp/network/event.go b/pkg/drivers/cdp/network/event.go index ceb7f9bc..9149bd4b 100644 --- a/pkg/drivers/cdp/network/event.go +++ b/pkg/drivers/cdp/network/event.go @@ -2,10 +2,12 @@ package network import ( "context" - "github.com/MontFerret/ferret/pkg/drivers/cdp/dom" + "github.com/mafredri/cdp/protocol/page" "github.com/wI2L/jettison" + "github.com/MontFerret/ferret/pkg/drivers/cdp/dom" + "github.com/MontFerret/ferret/pkg/runtime/core" "github.com/MontFerret/ferret/pkg/runtime/values" ) diff --git a/pkg/drivers/cdp/page.go b/pkg/drivers/cdp/page.go index 66e05294..3a008ebc 100644 --- a/pkg/drivers/cdp/page.go +++ b/pkg/drivers/cdp/page.go @@ -392,7 +392,6 @@ func (p *HTMLPage) PrintToPDF(ctx context.Context, params drivers.PDFParams) (va SetLandscape(bool(params.Landscape)). SetDisplayHeaderFooter(bool(params.DisplayHeaderFooter)). SetPrintBackground(bool(params.PrintBackground)). - SetIgnoreInvalidPageRanges(bool(params.IgnoreInvalidPageRanges)). SetPreferCSSPageSize(bool(params.PreferCSSPageSize)) if params.Scale > 0 { diff --git a/pkg/drivers/cdp/templates/attributes.go b/pkg/drivers/cdp/templates/attributes.go index 6bb8eee3..24d9045a 100644 --- a/pkg/drivers/cdp/templates/attributes.go +++ b/pkg/drivers/cdp/templates/attributes.go @@ -2,9 +2,11 @@ package templates import ( "fmt" + + "github.com/mafredri/cdp/protocol/runtime" + "github.com/MontFerret/ferret/pkg/drivers/cdp/eval" "github.com/MontFerret/ferret/pkg/runtime/values" - "github.com/mafredri/cdp/protocol/runtime" ) const getAttribute = `(el, name) => { diff --git a/pkg/drivers/cdp/templates/blur.go b/pkg/drivers/cdp/templates/blur.go index 07fe4a47..1866c801 100644 --- a/pkg/drivers/cdp/templates/blur.go +++ b/pkg/drivers/cdp/templates/blur.go @@ -3,9 +3,10 @@ package templates import ( "fmt" + "github.com/mafredri/cdp/protocol/runtime" + "github.com/MontFerret/ferret/pkg/drivers" "github.com/MontFerret/ferret/pkg/drivers/cdp/eval" - "github.com/mafredri/cdp/protocol/runtime" ) const blur = `(el) => { diff --git a/pkg/drivers/cdp/templates/children.go b/pkg/drivers/cdp/templates/children.go index 4b7a99b9..90d3db5f 100644 --- a/pkg/drivers/cdp/templates/children.go +++ b/pkg/drivers/cdp/templates/children.go @@ -1,9 +1,10 @@ package templates import ( + "github.com/mafredri/cdp/protocol/runtime" + "github.com/MontFerret/ferret/pkg/drivers/cdp/eval" "github.com/MontFerret/ferret/pkg/runtime/values" - "github.com/mafredri/cdp/protocol/runtime" ) const getChildren = "(el) => Array.from(el.children)" diff --git a/pkg/drivers/cdp/templates/helpers.go b/pkg/drivers/cdp/templates/helpers.go index d1ef8284..39f670eb 100644 --- a/pkg/drivers/cdp/templates/helpers.go +++ b/pkg/drivers/cdp/templates/helpers.go @@ -2,6 +2,7 @@ package templates import ( "fmt" + "github.com/MontFerret/ferret/pkg/drivers" "github.com/MontFerret/ferret/pkg/drivers/cdp/eval" ) diff --git a/pkg/drivers/cdp/templates/inner_html.go b/pkg/drivers/cdp/templates/inner_html.go index f7586682..ecdf216d 100644 --- a/pkg/drivers/cdp/templates/inner_html.go +++ b/pkg/drivers/cdp/templates/inner_html.go @@ -2,10 +2,12 @@ package templates import ( "fmt" + + "github.com/mafredri/cdp/protocol/runtime" + "github.com/MontFerret/ferret/pkg/drivers" "github.com/MontFerret/ferret/pkg/drivers/cdp/eval" "github.com/MontFerret/ferret/pkg/runtime/values" - "github.com/mafredri/cdp/protocol/runtime" ) const setInnerHTML = `(el, value) => { diff --git a/pkg/drivers/cdp/templates/inner_text.go b/pkg/drivers/cdp/templates/inner_text.go index 09a80052..85ac7773 100644 --- a/pkg/drivers/cdp/templates/inner_text.go +++ b/pkg/drivers/cdp/templates/inner_text.go @@ -2,10 +2,12 @@ package templates import ( "fmt" + + "github.com/mafredri/cdp/protocol/runtime" + "github.com/MontFerret/ferret/pkg/drivers" "github.com/MontFerret/ferret/pkg/drivers/cdp/eval" "github.com/MontFerret/ferret/pkg/runtime/values" - "github.com/mafredri/cdp/protocol/runtime" ) const setInnerText = `(el, value) => { diff --git a/pkg/drivers/cdp/templates/parent.go b/pkg/drivers/cdp/templates/parent.go index 826263d7..3b43e675 100644 --- a/pkg/drivers/cdp/templates/parent.go +++ b/pkg/drivers/cdp/templates/parent.go @@ -1,8 +1,9 @@ package templates import ( - "github.com/MontFerret/ferret/pkg/drivers/cdp/eval" "github.com/mafredri/cdp/protocol/runtime" + + "github.com/MontFerret/ferret/pkg/drivers/cdp/eval" ) const getParent = "(el) => el.parentElement" diff --git a/pkg/drivers/cdp/templates/query.go b/pkg/drivers/cdp/templates/query.go index 14e2e44d..678dc29c 100644 --- a/pkg/drivers/cdp/templates/query.go +++ b/pkg/drivers/cdp/templates/query.go @@ -2,9 +2,11 @@ package templates import ( "fmt" + + "github.com/mafredri/cdp/protocol/runtime" + "github.com/MontFerret/ferret/pkg/drivers" "github.com/MontFerret/ferret/pkg/drivers/cdp/eval" - "github.com/mafredri/cdp/protocol/runtime" ) const ( diff --git a/pkg/drivers/cdp/templates/select.go b/pkg/drivers/cdp/templates/select.go index 86a0db51..9b5238a3 100644 --- a/pkg/drivers/cdp/templates/select.go +++ b/pkg/drivers/cdp/templates/select.go @@ -2,10 +2,12 @@ package templates import ( "fmt" + + "github.com/mafredri/cdp/protocol/runtime" + "github.com/MontFerret/ferret/pkg/drivers" "github.com/MontFerret/ferret/pkg/drivers/cdp/eval" "github.com/MontFerret/ferret/pkg/runtime/values" - "github.com/mafredri/cdp/protocol/runtime" ) const selectFragment = ` diff --git a/pkg/drivers/cdp/templates/siblings.go b/pkg/drivers/cdp/templates/siblings.go index 1c70c77f..0b4ccb9b 100644 --- a/pkg/drivers/cdp/templates/siblings.go +++ b/pkg/drivers/cdp/templates/siblings.go @@ -1,8 +1,9 @@ package templates import ( - "github.com/MontFerret/ferret/pkg/drivers/cdp/eval" "github.com/mafredri/cdp/protocol/runtime" + + "github.com/MontFerret/ferret/pkg/drivers/cdp/eval" ) const getPreviousElementSibling = "(el) => el.previousElementSibling" diff --git a/pkg/drivers/cdp/templates/styles.go b/pkg/drivers/cdp/templates/styles.go index cb68057b..19ea0a76 100644 --- a/pkg/drivers/cdp/templates/styles.go +++ b/pkg/drivers/cdp/templates/styles.go @@ -1,9 +1,10 @@ package templates import ( + "github.com/mafredri/cdp/protocol/runtime" + "github.com/MontFerret/ferret/pkg/drivers/cdp/eval" "github.com/MontFerret/ferret/pkg/runtime/values" - "github.com/mafredri/cdp/protocol/runtime" ) const getStyles = `(el) => { diff --git a/pkg/drivers/cdp/templates/value.go b/pkg/drivers/cdp/templates/value.go index 778e5963..6b221090 100644 --- a/pkg/drivers/cdp/templates/value.go +++ b/pkg/drivers/cdp/templates/value.go @@ -1,9 +1,10 @@ package templates import ( + "github.com/mafredri/cdp/protocol/runtime" + "github.com/MontFerret/ferret/pkg/drivers/cdp/eval" "github.com/MontFerret/ferret/pkg/runtime/core" - "github.com/mafredri/cdp/protocol/runtime" ) const getValue = `(el) => { diff --git a/pkg/drivers/cdp/templates/wait.go b/pkg/drivers/cdp/templates/wait.go index 12b2d54c..3fd82821 100644 --- a/pkg/drivers/cdp/templates/wait.go +++ b/pkg/drivers/cdp/templates/wait.go @@ -2,11 +2,13 @@ package templates import ( "fmt" + + "github.com/mafredri/cdp/protocol/runtime" + "github.com/MontFerret/ferret/pkg/drivers" "github.com/MontFerret/ferret/pkg/drivers/cdp/eval" "github.com/MontFerret/ferret/pkg/runtime/core" "github.com/MontFerret/ferret/pkg/runtime/values" - "github.com/mafredri/cdp/protocol/runtime" ) const ( diff --git a/pkg/drivers/cdp/templates/xpath.go b/pkg/drivers/cdp/templates/xpath.go index 3dd83446..426e04b5 100644 --- a/pkg/drivers/cdp/templates/xpath.go +++ b/pkg/drivers/cdp/templates/xpath.go @@ -2,9 +2,11 @@ package templates import ( "fmt" + + "github.com/mafredri/cdp/protocol/runtime" + "github.com/MontFerret/ferret/pkg/drivers/cdp/eval" "github.com/MontFerret/ferret/pkg/runtime/values" - "github.com/mafredri/cdp/protocol/runtime" ) const xpath = `(el, expression, resType) => { diff --git a/pkg/drivers/common/errors.go b/pkg/drivers/common/errors.go index 2f3f94f1..22af84b0 100644 --- a/pkg/drivers/common/errors.go +++ b/pkg/drivers/common/errors.go @@ -3,8 +3,9 @@ package common import ( "io" - "github.com/MontFerret/ferret/pkg/runtime/core" "github.com/rs/zerolog" + + "github.com/MontFerret/ferret/pkg/runtime/core" ) var ( diff --git a/pkg/drivers/common/styles_test.go b/pkg/drivers/common/styles_test.go index a994ce0a..df95c67d 100644 --- a/pkg/drivers/common/styles_test.go +++ b/pkg/drivers/common/styles_test.go @@ -2,10 +2,11 @@ package common_test import ( "bytes" + "testing" + "github.com/MontFerret/ferret/pkg/drivers/common" "github.com/MontFerret/ferret/pkg/runtime/core" "github.com/MontFerret/ferret/pkg/runtime/values" - "testing" . "github.com/smartystreets/goconvey/convey" ) diff --git a/pkg/drivers/container.go b/pkg/drivers/container.go index 0d740569..2a21a77d 100644 --- a/pkg/drivers/container.go +++ b/pkg/drivers/container.go @@ -2,6 +2,7 @@ package drivers import ( "context" + "github.com/MontFerret/ferret/pkg/runtime/core" ) diff --git a/pkg/drivers/cookie.go b/pkg/drivers/cookie.go index 9560aacb..21989e03 100644 --- a/pkg/drivers/cookie.go +++ b/pkg/drivers/cookie.go @@ -136,7 +136,8 @@ func (c HTTPCookie) Hash() uint64 { } func (c HTTPCookie) Copy() core.Value { - return *(&c) + cop := c + return &cop } func (c HTTPCookie) MarshalJSON() ([]byte, error) { diff --git a/pkg/drivers/headers.go b/pkg/drivers/headers.go index 2757dbca..f3b13c7c 100644 --- a/pkg/drivers/headers.go +++ b/pkg/drivers/headers.go @@ -9,9 +9,10 @@ import ( "sort" "strings" + "github.com/wI2L/jettison" + "github.com/MontFerret/ferret/pkg/runtime/core" "github.com/MontFerret/ferret/pkg/runtime/values" - "github.com/wI2L/jettison" ) // HTTPHeaders HTTP header object diff --git a/pkg/drivers/http/driver.go b/pkg/drivers/http/driver.go index 805731d8..4da5c2ee 100644 --- a/pkg/drivers/http/driver.go +++ b/pkg/drivers/http/driver.go @@ -7,9 +7,10 @@ import ( "net/http" "net/url" + "github.com/gobwas/glob" + "github.com/MontFerret/ferret/pkg/runtime/logging" "github.com/MontFerret/ferret/pkg/runtime/values" - "github.com/gobwas/glob" "golang.org/x/net/html/charset" diff --git a/pkg/drivers/http/driver_test.go b/pkg/drivers/http/driver_test.go index f6ca28ae..2f19d4ad 100644 --- a/pkg/drivers/http/driver_test.go +++ b/pkg/drivers/http/driver_test.go @@ -5,7 +5,6 @@ import ( "context" "crypto/tls" "io" - "io/ioutil" "net/http" "reflect" "testing" @@ -116,7 +115,7 @@ func TestDriver_convertToUTF8(t *testing.T) { Convey(tt.name, t, func() { - data, err := ioutil.ReadAll(bytes.NewBufferString(tt.args.inputData)) + data, err := io.ReadAll(bytes.NewBufferString(tt.args.inputData)) if err != nil { panic(err) } @@ -134,7 +133,7 @@ func TestDriver_convertToUTF8(t *testing.T) { gotData, err := drv.convertToUTF8(bytes.NewReader(encodedData), tt.args.srcCharset) So(err, ShouldBeNil) - outData, err := ioutil.ReadAll(gotData) + outData, err := io.ReadAll(gotData) So(err, ShouldBeNil) So(string(outData), ShouldEqual, tt.expected) diff --git a/pkg/drivers/http/element.go b/pkg/drivers/http/element.go index c7a75327..a20a706d 100644 --- a/pkg/drivers/http/element.go +++ b/pkg/drivers/http/element.go @@ -2,10 +2,11 @@ package http import ( "context" - "golang.org/x/net/html" "hash/fnv" "strings" + "golang.org/x/net/html" + "github.com/PuerkitoBio/goquery" "github.com/wI2L/jettison" diff --git a/pkg/drivers/http/element_test.go b/pkg/drivers/http/element_test.go index dd0cdcf0..35c98abe 100644 --- a/pkg/drivers/http/element_test.go +++ b/pkg/drivers/http/element_test.go @@ -3,13 +3,15 @@ package http_test import ( "bytes" "context" + "testing" + + "github.com/PuerkitoBio/goquery" + . "github.com/smartystreets/goconvey/convey" + "github.com/MontFerret/ferret/pkg/drivers" "github.com/MontFerret/ferret/pkg/drivers/http" "github.com/MontFerret/ferret/pkg/runtime/values" "github.com/MontFerret/ferret/pkg/runtime/values/types" - "github.com/PuerkitoBio/goquery" - . "github.com/smartystreets/goconvey/convey" - "testing" ) func TestElement(t *testing.T) { diff --git a/pkg/drivers/http/page.go b/pkg/drivers/http/page.go index d3a93ce7..ea554da5 100644 --- a/pkg/drivers/http/page.go +++ b/pkg/drivers/http/page.go @@ -2,9 +2,10 @@ package http import ( "context" - "github.com/MontFerret/ferret/pkg/runtime/events" "hash/fnv" + "github.com/MontFerret/ferret/pkg/runtime/events" + "github.com/PuerkitoBio/goquery" "github.com/MontFerret/ferret/pkg/drivers" diff --git a/pkg/drivers/pdf.go b/pkg/drivers/pdf.go index ac8ef321..408de0de 100644 --- a/pkg/drivers/pdf.go +++ b/pkg/drivers/pdf.go @@ -26,8 +26,6 @@ type PDFParams struct { MarginRight values.Float // Paper ranges to print, e.g., '1-5, 8, 11-13'. Defaults to the empty string, which means print all pages. PageRanges values.String - // Whether to silently ignore invalid but successfully parsed page ranges, such as '3-2'. Defaults to false. - IgnoreInvalidPageRanges values.Boolean // HTML template for the print values. Should be valid HTML markup with following classes used to inject printing values into them: - `date`: formatted print date - `title`: document title - `url`: document location - `pageNumber`: current page number - `totalPages`: total pages in the document // For example, `` would generate span containing the title. HeaderTemplate values.String diff --git a/pkg/drivers/request.go b/pkg/drivers/request.go index b2a32b61..679b4ca7 100644 --- a/pkg/drivers/request.go +++ b/pkg/drivers/request.go @@ -2,10 +2,12 @@ package drivers import ( "context" + + "github.com/wI2L/jettison" + "github.com/MontFerret/ferret/pkg/runtime/core" "github.com/MontFerret/ferret/pkg/runtime/values" "github.com/MontFerret/ferret/pkg/runtime/values/types" - "github.com/wI2L/jettison" ) // HTTPRequest HTTP request object. @@ -76,7 +78,8 @@ func (req *HTTPRequest) Hash() uint64 { } func (req *HTTPRequest) Copy() core.Value { - return *(&req) + cop := *req + return &cop } func (req *HTTPRequest) GetIn(ctx context.Context, path []core.Value) (core.Value, core.PathError) { diff --git a/pkg/drivers/response.go b/pkg/drivers/response.go index d06e73e8..79171e4f 100644 --- a/pkg/drivers/response.go +++ b/pkg/drivers/response.go @@ -66,7 +66,8 @@ func (resp *HTTPResponse) Unwrap() interface{} { } func (resp *HTTPResponse) Copy() core.Value { - return *(&resp) + cop := *resp + return &cop } func (resp *HTTPResponse) Hash() uint64 { diff --git a/pkg/drivers/screenshot.go b/pkg/drivers/screenshot.go index e48318bf..45277deb 100644 --- a/pkg/drivers/screenshot.go +++ b/pkg/drivers/screenshot.go @@ -28,20 +28,19 @@ func IsScreenshotFormatValid(format string) bool { func NewDefaultHTMLPDFParams() PDFParams { return PDFParams{ - Landscape: values.False, - DisplayHeaderFooter: values.False, - PrintBackground: values.False, - Scale: values.Float(1), - PaperWidth: values.Float(8.5), - PaperHeight: values.Float(11), - MarginTop: values.Float(0.4), - MarginBottom: values.Float(0.4), - MarginLeft: values.Float(0.4), - MarginRight: values.Float(0.4), - PageRanges: values.EmptyString, - IgnoreInvalidPageRanges: values.False, - HeaderTemplate: values.EmptyString, - FooterTemplate: values.EmptyString, - PreferCSSPageSize: values.False, + Landscape: values.False, + DisplayHeaderFooter: values.False, + PrintBackground: values.False, + Scale: values.Float(1), + PaperWidth: values.Float(8.5), + PaperHeight: values.Float(11), + MarginTop: values.Float(0.4), + MarginBottom: values.Float(0.4), + MarginLeft: values.Float(0.4), + MarginRight: values.Float(0.4), + PageRanges: values.EmptyString, + HeaderTemplate: values.EmptyString, + FooterTemplate: values.EmptyString, + PreferCSSPageSize: values.False, } } diff --git a/pkg/drivers/scroll.go b/pkg/drivers/scroll.go index d22fc6f3..ca642ed4 100644 --- a/pkg/drivers/scroll.go +++ b/pkg/drivers/scroll.go @@ -1,9 +1,11 @@ package drivers import ( - "github.com/MontFerret/ferret/pkg/runtime/values" - "github.com/wI2L/jettison" "strings" + + "github.com/wI2L/jettison" + + "github.com/MontFerret/ferret/pkg/runtime/values" ) // ScrollBehavior defines the transition animation. diff --git a/pkg/drivers/value.go b/pkg/drivers/value.go index 3f3ec044..6cc0a4d1 100644 --- a/pkg/drivers/value.go +++ b/pkg/drivers/value.go @@ -2,9 +2,10 @@ package drivers import ( "context" - "github.com/MontFerret/ferret/pkg/runtime/events" "io" + "github.com/MontFerret/ferret/pkg/runtime/events" + "github.com/MontFerret/ferret/pkg/runtime/collections" "github.com/MontFerret/ferret/pkg/runtime/core" "github.com/MontFerret/ferret/pkg/runtime/values" diff --git a/pkg/parser/case_changing_stream.go b/pkg/parser/case_changing_stream.go index e9178e13..c4044dfe 100644 --- a/pkg/parser/case_changing_stream.go +++ b/pkg/parser/case_changing_stream.go @@ -3,21 +3,20 @@ package parser import ( "unicode" - "github.com/antlr/antlr4/runtime/Go/antlr" + "github.com/antlr/antlr4/runtime/Go/antlr/v4" ) // CaseChangingStream wraps an existing CharStream, but upper cases, or // lower cases the input before it is tokenized. type CaseChangingStream struct { antlr.CharStream - upper bool } // newCaseChangingStream returns a new CaseChangingStream that forces // all tokens read from the underlying stream to be either upper case // or lower case based on the upper argument. -func newCaseChangingStream(in antlr.CharStream, upper bool) *CaseChangingStream { +func newCaseChangingStream(in antlr.CharStream, upper bool) antlr.CharStream { return &CaseChangingStream{in, upper} } diff --git a/pkg/parser/fql/FqlLexer.interp b/pkg/parser/fql/FqlLexer.interp index 553689fc..6e342484 100644 --- a/pkg/parser/fql/FqlLexer.interp +++ b/pkg/parser/fql/FqlLexer.interp @@ -242,4 +242,4 @@ mode names: DEFAULT_MODE atn: -[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 2, 74, 623, 8, 1, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, 9, 44, 4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 4, 48, 9, 48, 4, 49, 9, 49, 4, 50, 9, 50, 4, 51, 9, 51, 4, 52, 9, 52, 4, 53, 9, 53, 4, 54, 9, 54, 4, 55, 9, 55, 4, 56, 9, 56, 4, 57, 9, 57, 4, 58, 9, 58, 4, 59, 9, 59, 4, 60, 9, 60, 4, 61, 9, 61, 4, 62, 9, 62, 4, 63, 9, 63, 4, 64, 9, 64, 4, 65, 9, 65, 4, 66, 9, 66, 4, 67, 9, 67, 4, 68, 9, 68, 4, 69, 9, 69, 4, 70, 9, 70, 4, 71, 9, 71, 4, 72, 9, 72, 4, 73, 9, 73, 4, 74, 9, 74, 4, 75, 9, 75, 4, 76, 9, 76, 4, 77, 9, 77, 4, 78, 9, 78, 4, 79, 9, 79, 4, 80, 9, 80, 4, 81, 9, 81, 4, 82, 9, 82, 4, 83, 9, 83, 4, 84, 9, 84, 4, 85, 9, 85, 3, 2, 3, 2, 3, 2, 3, 2, 7, 2, 176, 10, 2, 12, 2, 14, 2, 179, 11, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 7, 3, 190, 10, 3, 12, 3, 14, 3, 193, 11, 3, 3, 3, 3, 3, 3, 4, 6, 4, 198, 10, 4, 13, 4, 14, 4, 199, 3, 4, 3, 4, 3, 5, 3, 5, 3, 5, 3, 5, 3, 6, 3, 6, 3, 7, 3, 7, 3, 8, 3, 8, 3, 9, 3, 9, 3, 10, 3, 10, 3, 11, 3, 11, 3, 12, 3, 12, 3, 13, 3, 13, 3, 14, 3, 14, 3, 15, 3, 15, 3, 16, 3, 16, 3, 17, 3, 17, 3, 18, 3, 18, 3, 18, 3, 19, 3, 19, 3, 19, 3, 20, 3, 20, 3, 20, 3, 21, 3, 21, 3, 21, 3, 22, 3, 22, 3, 23, 3, 23, 3, 24, 3, 24, 3, 25, 3, 25, 3, 26, 3, 26, 3, 27, 3, 27, 3, 27, 3, 28, 3, 28, 3, 28, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 5, 29, 265, 10, 29, 3, 30, 3, 30, 3, 30, 3, 30, 5, 30, 271, 10, 30, 3, 31, 3, 31, 3, 31, 3, 32, 3, 32, 3, 33, 3, 33, 3, 34, 3, 34, 3, 34, 3, 35, 3, 35, 3, 35, 3, 36, 3, 36, 3, 36, 3, 36, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 46, 3, 46, 3, 46, 3, 46, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 5, 48, 375, 10, 48, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 5, 51, 405, 10, 51, 3, 52, 3, 52, 3, 52, 3, 52, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 54, 3, 54, 3, 54, 3, 54, 3, 54, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 56, 3, 56, 3, 56, 3, 56, 3, 56, 3, 56, 3, 57, 3, 57, 3, 57, 3, 57, 3, 58, 3, 58, 3, 58, 3, 58, 3, 59, 3, 59, 3, 59, 3, 59, 3, 59, 3, 59, 3, 59, 3, 59, 3, 59, 3, 59, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 62, 3, 62, 3, 62, 3, 62, 5, 62, 465, 10, 62, 3, 63, 3, 63, 3, 63, 3, 64, 3, 64, 3, 64, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 66, 3, 66, 3, 67, 6, 67, 482, 10, 67, 13, 67, 14, 67, 483, 3, 67, 3, 67, 7, 67, 488, 10, 67, 12, 67, 14, 67, 491, 11, 67, 7, 67, 493, 10, 67, 12, 67, 14, 67, 496, 11, 67, 3, 67, 3, 67, 7, 67, 500, 10, 67, 12, 67, 14, 67, 503, 11, 67, 7, 67, 505, 10, 67, 12, 67, 14, 67, 508, 11, 67, 3, 68, 3, 68, 3, 69, 3, 69, 3, 69, 3, 69, 5, 69, 516, 10, 69, 3, 70, 6, 70, 519, 10, 70, 13, 70, 14, 70, 520, 3, 71, 3, 71, 3, 71, 6, 71, 526, 10, 71, 13, 71, 14, 71, 527, 3, 71, 5, 71, 531, 10, 71, 3, 71, 3, 71, 5, 71, 535, 10, 71, 5, 71, 537, 10, 71, 3, 72, 3, 72, 3, 72, 3, 73, 3, 73, 3, 74, 3, 74, 3, 75, 3, 75, 3, 75, 7, 75, 549, 10, 75, 12, 75, 14, 75, 552, 11, 75, 5, 75, 554, 10, 75, 3, 76, 3, 76, 5, 76, 558, 10, 76, 3, 76, 6, 76, 561, 10, 76, 13, 76, 14, 76, 562, 3, 77, 3, 77, 3, 78, 3, 78, 3, 79, 3, 79, 3, 80, 3, 80, 3, 81, 3, 81, 3, 81, 3, 81, 3, 81, 3, 81, 7, 81, 579, 10, 81, 12, 81, 14, 81, 582, 11, 81, 3, 81, 3, 81, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 7, 82, 592, 10, 82, 12, 82, 14, 82, 595, 11, 82, 3, 82, 3, 82, 3, 83, 3, 83, 3, 83, 3, 83, 7, 83, 603, 10, 83, 12, 83, 14, 83, 606, 11, 83, 3, 83, 3, 83, 3, 84, 3, 84, 3, 84, 3, 84, 7, 84, 614, 10, 84, 12, 84, 14, 84, 617, 11, 84, 3, 84, 3, 84, 3, 85, 3, 85, 3, 85, 3, 177, 2, 86, 3, 3, 5, 4, 7, 5, 9, 6, 11, 7, 13, 8, 15, 9, 17, 10, 19, 11, 21, 12, 23, 13, 25, 14, 27, 15, 29, 16, 31, 17, 33, 18, 35, 19, 37, 20, 39, 21, 41, 22, 43, 23, 45, 24, 47, 25, 49, 26, 51, 27, 53, 28, 55, 29, 57, 30, 59, 31, 61, 32, 63, 33, 65, 34, 67, 35, 69, 36, 71, 37, 73, 38, 75, 39, 77, 40, 79, 41, 81, 42, 83, 43, 85, 44, 87, 45, 89, 46, 91, 47, 93, 48, 95, 49, 97, 50, 99, 51, 101, 52, 103, 53, 105, 54, 107, 55, 109, 56, 111, 57, 113, 58, 115, 59, 117, 60, 119, 61, 121, 62, 123, 63, 125, 64, 127, 65, 129, 66, 131, 67, 133, 68, 135, 69, 137, 70, 139, 71, 141, 72, 143, 73, 145, 74, 147, 2, 149, 2, 151, 2, 153, 2, 155, 2, 157, 2, 159, 2, 161, 2, 163, 2, 165, 2, 167, 2, 169, 2, 3, 2, 14, 5, 2, 12, 12, 15, 15, 8234, 8235, 6, 2, 11, 11, 13, 14, 34, 34, 162, 162, 3, 2, 50, 59, 5, 2, 50, 59, 67, 72, 99, 104, 3, 2, 51, 59, 4, 2, 71, 71, 103, 103, 4, 2, 45, 45, 47, 47, 4, 2, 67, 92, 99, 124, 4, 2, 36, 36, 94, 94, 4, 2, 41, 41, 94, 94, 3, 2, 98, 98, 3, 2, 182, 182, 2, 647, 2, 3, 3, 2, 2, 2, 2, 5, 3, 2, 2, 2, 2, 7, 3, 2, 2, 2, 2, 9, 3, 2, 2, 2, 2, 11, 3, 2, 2, 2, 2, 13, 3, 2, 2, 2, 2, 15, 3, 2, 2, 2, 2, 17, 3, 2, 2, 2, 2, 19, 3, 2, 2, 2, 2, 21, 3, 2, 2, 2, 2, 23, 3, 2, 2, 2, 2, 25, 3, 2, 2, 2, 2, 27, 3, 2, 2, 2, 2, 29, 3, 2, 2, 2, 2, 31, 3, 2, 2, 2, 2, 33, 3, 2, 2, 2, 2, 35, 3, 2, 2, 2, 2, 37, 3, 2, 2, 2, 2, 39, 3, 2, 2, 2, 2, 41, 3, 2, 2, 2, 2, 43, 3, 2, 2, 2, 2, 45, 3, 2, 2, 2, 2, 47, 3, 2, 2, 2, 2, 49, 3, 2, 2, 2, 2, 51, 3, 2, 2, 2, 2, 53, 3, 2, 2, 2, 2, 55, 3, 2, 2, 2, 2, 57, 3, 2, 2, 2, 2, 59, 3, 2, 2, 2, 2, 61, 3, 2, 2, 2, 2, 63, 3, 2, 2, 2, 2, 65, 3, 2, 2, 2, 2, 67, 3, 2, 2, 2, 2, 69, 3, 2, 2, 2, 2, 71, 3, 2, 2, 2, 2, 73, 3, 2, 2, 2, 2, 75, 3, 2, 2, 2, 2, 77, 3, 2, 2, 2, 2, 79, 3, 2, 2, 2, 2, 81, 3, 2, 2, 2, 2, 83, 3, 2, 2, 2, 2, 85, 3, 2, 2, 2, 2, 87, 3, 2, 2, 2, 2, 89, 3, 2, 2, 2, 2, 91, 3, 2, 2, 2, 2, 93, 3, 2, 2, 2, 2, 95, 3, 2, 2, 2, 2, 97, 3, 2, 2, 2, 2, 99, 3, 2, 2, 2, 2, 101, 3, 2, 2, 2, 2, 103, 3, 2, 2, 2, 2, 105, 3, 2, 2, 2, 2, 107, 3, 2, 2, 2, 2, 109, 3, 2, 2, 2, 2, 111, 3, 2, 2, 2, 2, 113, 3, 2, 2, 2, 2, 115, 3, 2, 2, 2, 2, 117, 3, 2, 2, 2, 2, 119, 3, 2, 2, 2, 2, 121, 3, 2, 2, 2, 2, 123, 3, 2, 2, 2, 2, 125, 3, 2, 2, 2, 2, 127, 3, 2, 2, 2, 2, 129, 3, 2, 2, 2, 2, 131, 3, 2, 2, 2, 2, 133, 3, 2, 2, 2, 2, 135, 3, 2, 2, 2, 2, 137, 3, 2, 2, 2, 2, 139, 3, 2, 2, 2, 2, 141, 3, 2, 2, 2, 2, 143, 3, 2, 2, 2, 2, 145, 3, 2, 2, 2, 3, 171, 3, 2, 2, 2, 5, 185, 3, 2, 2, 2, 7, 197, 3, 2, 2, 2, 9, 203, 3, 2, 2, 2, 11, 207, 3, 2, 2, 2, 13, 209, 3, 2, 2, 2, 15, 211, 3, 2, 2, 2, 17, 213, 3, 2, 2, 2, 19, 215, 3, 2, 2, 2, 21, 217, 3, 2, 2, 2, 23, 219, 3, 2, 2, 2, 25, 221, 3, 2, 2, 2, 27, 223, 3, 2, 2, 2, 29, 225, 3, 2, 2, 2, 31, 227, 3, 2, 2, 2, 33, 229, 3, 2, 2, 2, 35, 231, 3, 2, 2, 2, 37, 234, 3, 2, 2, 2, 39, 237, 3, 2, 2, 2, 41, 240, 3, 2, 2, 2, 43, 243, 3, 2, 2, 2, 45, 245, 3, 2, 2, 2, 47, 247, 3, 2, 2, 2, 49, 249, 3, 2, 2, 2, 51, 251, 3, 2, 2, 2, 53, 253, 3, 2, 2, 2, 55, 256, 3, 2, 2, 2, 57, 264, 3, 2, 2, 2, 59, 270, 3, 2, 2, 2, 61, 272, 3, 2, 2, 2, 63, 275, 3, 2, 2, 2, 65, 277, 3, 2, 2, 2, 67, 279, 3, 2, 2, 2, 69, 282, 3, 2, 2, 2, 71, 285, 3, 2, 2, 2, 73, 289, 3, 2, 2, 2, 75, 296, 3, 2, 2, 2, 77, 304, 3, 2, 2, 2, 79, 312, 3, 2, 2, 2, 81, 320, 3, 2, 2, 2, 83, 329, 3, 2, 2, 2, 85, 336, 3, 2, 2, 2, 87, 344, 3, 2, 2, 2, 89, 349, 3, 2, 2, 2, 91, 355, 3, 2, 2, 2, 93, 359, 3, 2, 2, 2, 95, 374, 3, 2, 2, 2, 97, 376, 3, 2, 2, 2, 99, 381, 3, 2, 2, 2, 101, 404, 3, 2, 2, 2, 103, 406, 3, 2, 2, 2, 105, 410, 3, 2, 2, 2, 107, 415, 3, 2, 2, 2, 109, 420, 3, 2, 2, 2, 111, 425, 3, 2, 2, 2, 113, 431, 3, 2, 2, 2, 115, 435, 3, 2, 2, 2, 117, 439, 3, 2, 2, 2, 119, 449, 3, 2, 2, 2, 121, 455, 3, 2, 2, 2, 123, 464, 3, 2, 2, 2, 125, 466, 3, 2, 2, 2, 127, 469, 3, 2, 2, 2, 129, 472, 3, 2, 2, 2, 131, 478, 3, 2, 2, 2, 133, 481, 3, 2, 2, 2, 135, 509, 3, 2, 2, 2, 137, 515, 3, 2, 2, 2, 139, 518, 3, 2, 2, 2, 141, 536, 3, 2, 2, 2, 143, 538, 3, 2, 2, 2, 145, 541, 3, 2, 2, 2, 147, 543, 3, 2, 2, 2, 149, 553, 3, 2, 2, 2, 151, 555, 3, 2, 2, 2, 153, 564, 3, 2, 2, 2, 155, 566, 3, 2, 2, 2, 157, 568, 3, 2, 2, 2, 159, 570, 3, 2, 2, 2, 161, 572, 3, 2, 2, 2, 163, 585, 3, 2, 2, 2, 165, 598, 3, 2, 2, 2, 167, 609, 3, 2, 2, 2, 169, 620, 3, 2, 2, 2, 171, 172, 7, 49, 2, 2, 172, 173, 7, 44, 2, 2, 173, 177, 3, 2, 2, 2, 174, 176, 11, 2, 2, 2, 175, 174, 3, 2, 2, 2, 176, 179, 3, 2, 2, 2, 177, 178, 3, 2, 2, 2, 177, 175, 3, 2, 2, 2, 178, 180, 3, 2, 2, 2, 179, 177, 3, 2, 2, 2, 180, 181, 7, 44, 2, 2, 181, 182, 7, 49, 2, 2, 182, 183, 3, 2, 2, 2, 183, 184, 8, 2, 2, 2, 184, 4, 3, 2, 2, 2, 185, 186, 7, 49, 2, 2, 186, 187, 7, 49, 2, 2, 187, 191, 3, 2, 2, 2, 188, 190, 10, 2, 2, 2, 189, 188, 3, 2, 2, 2, 190, 193, 3, 2, 2, 2, 191, 189, 3, 2, 2, 2, 191, 192, 3, 2, 2, 2, 192, 194, 3, 2, 2, 2, 193, 191, 3, 2, 2, 2, 194, 195, 8, 3, 2, 2, 195, 6, 3, 2, 2, 2, 196, 198, 9, 3, 2, 2, 197, 196, 3, 2, 2, 2, 198, 199, 3, 2, 2, 2, 199, 197, 3, 2, 2, 2, 199, 200, 3, 2, 2, 2, 200, 201, 3, 2, 2, 2, 201, 202, 8, 4, 2, 2, 202, 8, 3, 2, 2, 2, 203, 204, 9, 2, 2, 2, 204, 205, 3, 2, 2, 2, 205, 206, 8, 5, 2, 2, 206, 10, 3, 2, 2, 2, 207, 208, 7, 60, 2, 2, 208, 12, 3, 2, 2, 2, 209, 210, 7, 61, 2, 2, 210, 14, 3, 2, 2, 2, 211, 212, 7, 48, 2, 2, 212, 16, 3, 2, 2, 2, 213, 214, 7, 46, 2, 2, 214, 18, 3, 2, 2, 2, 215, 216, 7, 93, 2, 2, 216, 20, 3, 2, 2, 2, 217, 218, 7, 95, 2, 2, 218, 22, 3, 2, 2, 2, 219, 220, 7, 42, 2, 2, 220, 24, 3, 2, 2, 2, 221, 222, 7, 43, 2, 2, 222, 26, 3, 2, 2, 2, 223, 224, 7, 125, 2, 2, 224, 28, 3, 2, 2, 2, 225, 226, 7, 127, 2, 2, 226, 30, 3, 2, 2, 2, 227, 228, 7, 64, 2, 2, 228, 32, 3, 2, 2, 2, 229, 230, 7, 62, 2, 2, 230, 34, 3, 2, 2, 2, 231, 232, 7, 63, 2, 2, 232, 233, 7, 63, 2, 2, 233, 36, 3, 2, 2, 2, 234, 235, 7, 64, 2, 2, 235, 236, 7, 63, 2, 2, 236, 38, 3, 2, 2, 2, 237, 238, 7, 62, 2, 2, 238, 239, 7, 63, 2, 2, 239, 40, 3, 2, 2, 2, 240, 241, 7, 35, 2, 2, 241, 242, 7, 63, 2, 2, 242, 42, 3, 2, 2, 2, 243, 244, 7, 44, 2, 2, 244, 44, 3, 2, 2, 2, 245, 246, 7, 49, 2, 2, 246, 46, 3, 2, 2, 2, 247, 248, 7, 39, 2, 2, 248, 48, 3, 2, 2, 2, 249, 250, 7, 45, 2, 2, 250, 50, 3, 2, 2, 2, 251, 252, 7, 47, 2, 2, 252, 52, 3, 2, 2, 2, 253, 254, 7, 47, 2, 2, 254, 255, 7, 47, 2, 2, 255, 54, 3, 2, 2, 2, 256, 257, 7, 45, 2, 2, 257, 258, 7, 45, 2, 2, 258, 56, 3, 2, 2, 2, 259, 260, 7, 67, 2, 2, 260, 261, 7, 80, 2, 2, 261, 265, 7, 70, 2, 2, 262, 263, 7, 40, 2, 2, 263, 265, 7, 40, 2, 2, 264, 259, 3, 2, 2, 2, 264, 262, 3, 2, 2, 2, 265, 58, 3, 2, 2, 2, 266, 267, 7, 81, 2, 2, 267, 271, 7, 84, 2, 2, 268, 269, 7, 126, 2, 2, 269, 271, 7, 126, 2, 2, 270, 266, 3, 2, 2, 2, 270, 268, 3, 2, 2, 2, 271, 60, 3, 2, 2, 2, 272, 273, 5, 15, 8, 2, 273, 274, 5, 15, 8, 2, 274, 62, 3, 2, 2, 2, 275, 276, 7, 63, 2, 2, 276, 64, 3, 2, 2, 2, 277, 278, 7, 65, 2, 2, 278, 66, 3, 2, 2, 2, 279, 280, 7, 35, 2, 2, 280, 281, 7, 128, 2, 2, 281, 68, 3, 2, 2, 2, 282, 283, 7, 63, 2, 2, 283, 284, 7, 128, 2, 2, 284, 70, 3, 2, 2, 2, 285, 286, 7, 72, 2, 2, 286, 287, 7, 81, 2, 2, 287, 288, 7, 84, 2, 2, 288, 72, 3, 2, 2, 2, 289, 290, 7, 84, 2, 2, 290, 291, 7, 71, 2, 2, 291, 292, 7, 86, 2, 2, 292, 293, 7, 87, 2, 2, 293, 294, 7, 84, 2, 2, 294, 295, 7, 80, 2, 2, 295, 74, 3, 2, 2, 2, 296, 297, 7, 89, 2, 2, 297, 298, 7, 67, 2, 2, 298, 299, 7, 75, 2, 2, 299, 300, 7, 86, 2, 2, 300, 301, 7, 72, 2, 2, 301, 302, 7, 81, 2, 2, 302, 303, 7, 84, 2, 2, 303, 76, 3, 2, 2, 2, 304, 305, 7, 81, 2, 2, 305, 306, 7, 82, 2, 2, 306, 307, 7, 86, 2, 2, 307, 308, 7, 75, 2, 2, 308, 309, 7, 81, 2, 2, 309, 310, 7, 80, 2, 2, 310, 311, 7, 85, 2, 2, 311, 78, 3, 2, 2, 2, 312, 313, 7, 86, 2, 2, 313, 314, 7, 75, 2, 2, 314, 315, 7, 79, 2, 2, 315, 316, 7, 71, 2, 2, 316, 317, 7, 81, 2, 2, 317, 318, 7, 87, 2, 2, 318, 319, 7, 86, 2, 2, 319, 80, 3, 2, 2, 2, 320, 321, 7, 70, 2, 2, 321, 322, 7, 75, 2, 2, 322, 323, 7, 85, 2, 2, 323, 324, 7, 86, 2, 2, 324, 325, 7, 75, 2, 2, 325, 326, 7, 80, 2, 2, 326, 327, 7, 69, 2, 2, 327, 328, 7, 86, 2, 2, 328, 82, 3, 2, 2, 2, 329, 330, 7, 72, 2, 2, 330, 331, 7, 75, 2, 2, 331, 332, 7, 78, 2, 2, 332, 333, 7, 86, 2, 2, 333, 334, 7, 71, 2, 2, 334, 335, 7, 84, 2, 2, 335, 84, 3, 2, 2, 2, 336, 337, 7, 69, 2, 2, 337, 338, 7, 87, 2, 2, 338, 339, 7, 84, 2, 2, 339, 340, 7, 84, 2, 2, 340, 341, 7, 71, 2, 2, 341, 342, 7, 80, 2, 2, 342, 343, 7, 86, 2, 2, 343, 86, 3, 2, 2, 2, 344, 345, 7, 85, 2, 2, 345, 346, 7, 81, 2, 2, 346, 347, 7, 84, 2, 2, 347, 348, 7, 86, 2, 2, 348, 88, 3, 2, 2, 2, 349, 350, 7, 78, 2, 2, 350, 351, 7, 75, 2, 2, 351, 352, 7, 79, 2, 2, 352, 353, 7, 75, 2, 2, 353, 354, 7, 86, 2, 2, 354, 90, 3, 2, 2, 2, 355, 356, 7, 78, 2, 2, 356, 357, 7, 71, 2, 2, 357, 358, 7, 86, 2, 2, 358, 92, 3, 2, 2, 2, 359, 360, 7, 69, 2, 2, 360, 361, 7, 81, 2, 2, 361, 362, 7, 78, 2, 2, 362, 363, 7, 78, 2, 2, 363, 364, 7, 71, 2, 2, 364, 365, 7, 69, 2, 2, 365, 366, 7, 86, 2, 2, 366, 94, 3, 2, 2, 2, 367, 368, 7, 67, 2, 2, 368, 369, 7, 85, 2, 2, 369, 375, 7, 69, 2, 2, 370, 371, 7, 70, 2, 2, 371, 372, 7, 71, 2, 2, 372, 373, 7, 85, 2, 2, 373, 375, 7, 69, 2, 2, 374, 367, 3, 2, 2, 2, 374, 370, 3, 2, 2, 2, 375, 96, 3, 2, 2, 2, 376, 377, 7, 80, 2, 2, 377, 378, 7, 81, 2, 2, 378, 379, 7, 80, 2, 2, 379, 380, 7, 71, 2, 2, 380, 98, 3, 2, 2, 2, 381, 382, 7, 80, 2, 2, 382, 383, 7, 87, 2, 2, 383, 384, 7, 78, 2, 2, 384, 385, 7, 78, 2, 2, 385, 100, 3, 2, 2, 2, 386, 387, 7, 86, 2, 2, 387, 388, 7, 84, 2, 2, 388, 389, 7, 87, 2, 2, 389, 405, 7, 71, 2, 2, 390, 391, 7, 118, 2, 2, 391, 392, 7, 116, 2, 2, 392, 393, 7, 119, 2, 2, 393, 405, 7, 103, 2, 2, 394, 395, 7, 72, 2, 2, 395, 396, 7, 67, 2, 2, 396, 397, 7, 78, 2, 2, 397, 398, 7, 85, 2, 2, 398, 405, 7, 71, 2, 2, 399, 400, 7, 104, 2, 2, 400, 401, 7, 99, 2, 2, 401, 402, 7, 110, 2, 2, 402, 403, 7, 117, 2, 2, 403, 405, 7, 103, 2, 2, 404, 386, 3, 2, 2, 2, 404, 390, 3, 2, 2, 2, 404, 394, 3, 2, 2, 2, 404, 399, 3, 2, 2, 2, 405, 102, 3, 2, 2, 2, 406, 407, 7, 87, 2, 2, 407, 408, 7, 85, 2, 2, 408, 409, 7, 71, 2, 2, 409, 104, 3, 2, 2, 2, 410, 411, 7, 75, 2, 2, 411, 412, 7, 80, 2, 2, 412, 413, 7, 86, 2, 2, 413, 414, 7, 81, 2, 2, 414, 106, 3, 2, 2, 2, 415, 416, 7, 77, 2, 2, 416, 417, 7, 71, 2, 2, 417, 418, 7, 71, 2, 2, 418, 419, 7, 82, 2, 2, 419, 108, 3, 2, 2, 2, 420, 421, 7, 89, 2, 2, 421, 422, 7, 75, 2, 2, 422, 423, 7, 86, 2, 2, 423, 424, 7, 74, 2, 2, 424, 110, 3, 2, 2, 2, 425, 426, 7, 69, 2, 2, 426, 427, 7, 81, 2, 2, 427, 428, 7, 87, 2, 2, 428, 429, 7, 80, 2, 2, 429, 430, 7, 86, 2, 2, 430, 112, 3, 2, 2, 2, 431, 432, 7, 67, 2, 2, 432, 433, 7, 78, 2, 2, 433, 434, 7, 78, 2, 2, 434, 114, 3, 2, 2, 2, 435, 436, 7, 67, 2, 2, 436, 437, 7, 80, 2, 2, 437, 438, 7, 91, 2, 2, 438, 116, 3, 2, 2, 2, 439, 440, 7, 67, 2, 2, 440, 441, 7, 73, 2, 2, 441, 442, 7, 73, 2, 2, 442, 443, 7, 84, 2, 2, 443, 444, 7, 71, 2, 2, 444, 445, 7, 73, 2, 2, 445, 446, 7, 67, 2, 2, 446, 447, 7, 86, 2, 2, 447, 448, 7, 71, 2, 2, 448, 118, 3, 2, 2, 2, 449, 450, 7, 71, 2, 2, 450, 451, 7, 88, 2, 2, 451, 452, 7, 71, 2, 2, 452, 453, 7, 80, 2, 2, 453, 454, 7, 86, 2, 2, 454, 120, 3, 2, 2, 2, 455, 456, 7, 78, 2, 2, 456, 457, 7, 75, 2, 2, 457, 458, 7, 77, 2, 2, 458, 459, 7, 71, 2, 2, 459, 122, 3, 2, 2, 2, 460, 461, 7, 80, 2, 2, 461, 462, 7, 81, 2, 2, 462, 465, 7, 86, 2, 2, 463, 465, 7, 35, 2, 2, 464, 460, 3, 2, 2, 2, 464, 463, 3, 2, 2, 2, 465, 124, 3, 2, 2, 2, 466, 467, 7, 75, 2, 2, 467, 468, 7, 80, 2, 2, 468, 126, 3, 2, 2, 2, 469, 470, 7, 70, 2, 2, 470, 471, 7, 81, 2, 2, 471, 128, 3, 2, 2, 2, 472, 473, 7, 89, 2, 2, 473, 474, 7, 74, 2, 2, 474, 475, 7, 75, 2, 2, 475, 476, 7, 78, 2, 2, 476, 477, 7, 71, 2, 2, 477, 130, 3, 2, 2, 2, 478, 479, 7, 66, 2, 2, 479, 132, 3, 2, 2, 2, 480, 482, 5, 153, 77, 2, 481, 480, 3, 2, 2, 2, 482, 483, 3, 2, 2, 2, 483, 481, 3, 2, 2, 2, 483, 484, 3, 2, 2, 2, 484, 494, 3, 2, 2, 2, 485, 489, 5, 155, 78, 2, 486, 488, 5, 133, 67, 2, 487, 486, 3, 2, 2, 2, 488, 491, 3, 2, 2, 2, 489, 487, 3, 2, 2, 2, 489, 490, 3, 2, 2, 2, 490, 493, 3, 2, 2, 2, 491, 489, 3, 2, 2, 2, 492, 485, 3, 2, 2, 2, 493, 496, 3, 2, 2, 2, 494, 492, 3, 2, 2, 2, 494, 495, 3, 2, 2, 2, 495, 506, 3, 2, 2, 2, 496, 494, 3, 2, 2, 2, 497, 501, 5, 159, 80, 2, 498, 500, 5, 133, 67, 2, 499, 498, 3, 2, 2, 2, 500, 503, 3, 2, 2, 2, 501, 499, 3, 2, 2, 2, 501, 502, 3, 2, 2, 2, 502, 505, 3, 2, 2, 2, 503, 501, 3, 2, 2, 2, 504, 497, 3, 2, 2, 2, 505, 508, 3, 2, 2, 2, 506, 504, 3, 2, 2, 2, 506, 507, 3, 2, 2, 2, 507, 134, 3, 2, 2, 2, 508, 506, 3, 2, 2, 2, 509, 510, 5, 157, 79, 2, 510, 136, 3, 2, 2, 2, 511, 516, 5, 163, 82, 2, 512, 516, 5, 161, 81, 2, 513, 516, 5, 165, 83, 2, 514, 516, 5, 167, 84, 2, 515, 511, 3, 2, 2, 2, 515, 512, 3, 2, 2, 2, 515, 513, 3, 2, 2, 2, 515, 514, 3, 2, 2, 2, 516, 138, 3, 2, 2, 2, 517, 519, 9, 4, 2, 2, 518, 517, 3, 2, 2, 2, 519, 520, 3, 2, 2, 2, 520, 518, 3, 2, 2, 2, 520, 521, 3, 2, 2, 2, 521, 140, 3, 2, 2, 2, 522, 523, 5, 149, 75, 2, 523, 525, 5, 15, 8, 2, 524, 526, 9, 4, 2, 2, 525, 524, 3, 2, 2, 2, 526, 527, 3, 2, 2, 2, 527, 525, 3, 2, 2, 2, 527, 528, 3, 2, 2, 2, 528, 530, 3, 2, 2, 2, 529, 531, 5, 151, 76, 2, 530, 529, 3, 2, 2, 2, 530, 531, 3, 2, 2, 2, 531, 537, 3, 2, 2, 2, 532, 534, 5, 149, 75, 2, 533, 535, 5, 151, 76, 2, 534, 533, 3, 2, 2, 2, 534, 535, 3, 2, 2, 2, 535, 537, 3, 2, 2, 2, 536, 522, 3, 2, 2, 2, 536, 532, 3, 2, 2, 2, 537, 142, 3, 2, 2, 2, 538, 539, 5, 133, 67, 2, 539, 540, 5, 169, 85, 2, 540, 144, 3, 2, 2, 2, 541, 542, 11, 2, 2, 2, 542, 146, 3, 2, 2, 2, 543, 544, 9, 5, 2, 2, 544, 148, 3, 2, 2, 2, 545, 554, 7, 50, 2, 2, 546, 550, 9, 6, 2, 2, 547, 549, 9, 4, 2, 2, 548, 547, 3, 2, 2, 2, 549, 552, 3, 2, 2, 2, 550, 548, 3, 2, 2, 2, 550, 551, 3, 2, 2, 2, 551, 554, 3, 2, 2, 2, 552, 550, 3, 2, 2, 2, 553, 545, 3, 2, 2, 2, 553, 546, 3, 2, 2, 2, 554, 150, 3, 2, 2, 2, 555, 557, 9, 7, 2, 2, 556, 558, 9, 8, 2, 2, 557, 556, 3, 2, 2, 2, 557, 558, 3, 2, 2, 2, 558, 560, 3, 2, 2, 2, 559, 561, 9, 4, 2, 2, 560, 559, 3, 2, 2, 2, 561, 562, 3, 2, 2, 2, 562, 560, 3, 2, 2, 2, 562, 563, 3, 2, 2, 2, 563, 152, 3, 2, 2, 2, 564, 565, 9, 9, 2, 2, 565, 154, 3, 2, 2, 2, 566, 567, 5, 157, 79, 2, 567, 156, 3, 2, 2, 2, 568, 569, 7, 97, 2, 2, 569, 158, 3, 2, 2, 2, 570, 571, 4, 50, 59, 2, 571, 160, 3, 2, 2, 2, 572, 580, 7, 36, 2, 2, 573, 574, 7, 94, 2, 2, 574, 579, 11, 2, 2, 2, 575, 576, 7, 36, 2, 2, 576, 579, 7, 36, 2, 2, 577, 579, 10, 10, 2, 2, 578, 573, 3, 2, 2, 2, 578, 575, 3, 2, 2, 2, 578, 577, 3, 2, 2, 2, 579, 582, 3, 2, 2, 2, 580, 578, 3, 2, 2, 2, 580, 581, 3, 2, 2, 2, 581, 583, 3, 2, 2, 2, 582, 580, 3, 2, 2, 2, 583, 584, 7, 36, 2, 2, 584, 162, 3, 2, 2, 2, 585, 593, 7, 41, 2, 2, 586, 587, 7, 94, 2, 2, 587, 592, 11, 2, 2, 2, 588, 589, 7, 41, 2, 2, 589, 592, 7, 41, 2, 2, 590, 592, 10, 11, 2, 2, 591, 586, 3, 2, 2, 2, 591, 588, 3, 2, 2, 2, 591, 590, 3, 2, 2, 2, 592, 595, 3, 2, 2, 2, 593, 591, 3, 2, 2, 2, 593, 594, 3, 2, 2, 2, 594, 596, 3, 2, 2, 2, 595, 593, 3, 2, 2, 2, 596, 597, 7, 41, 2, 2, 597, 164, 3, 2, 2, 2, 598, 604, 7, 98, 2, 2, 599, 600, 7, 94, 2, 2, 600, 603, 7, 98, 2, 2, 601, 603, 10, 12, 2, 2, 602, 599, 3, 2, 2, 2, 602, 601, 3, 2, 2, 2, 603, 606, 3, 2, 2, 2, 604, 602, 3, 2, 2, 2, 604, 605, 3, 2, 2, 2, 605, 607, 3, 2, 2, 2, 606, 604, 3, 2, 2, 2, 607, 608, 7, 98, 2, 2, 608, 166, 3, 2, 2, 2, 609, 615, 7, 182, 2, 2, 610, 611, 7, 94, 2, 2, 611, 614, 7, 182, 2, 2, 612, 614, 10, 13, 2, 2, 613, 610, 3, 2, 2, 2, 613, 612, 3, 2, 2, 2, 614, 617, 3, 2, 2, 2, 615, 613, 3, 2, 2, 2, 615, 616, 3, 2, 2, 2, 616, 618, 3, 2, 2, 2, 617, 615, 3, 2, 2, 2, 618, 619, 7, 182, 2, 2, 619, 168, 3, 2, 2, 2, 620, 621, 7, 60, 2, 2, 621, 622, 7, 60, 2, 2, 622, 170, 3, 2, 2, 2, 34, 2, 177, 191, 199, 264, 270, 374, 404, 464, 483, 489, 494, 501, 506, 515, 520, 527, 530, 534, 536, 550, 553, 557, 562, 578, 580, 591, 593, 602, 604, 613, 615, 3, 2, 3, 2] \ No newline at end of file +[4, 0, 72, 621, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 1, 0, 1, 0, 1, 0, 1, 0, 5, 0, 174, 8, 0, 10, 0, 12, 0, 177, 9, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1, 188, 8, 1, 10, 1, 12, 1, 191, 9, 1, 1, 1, 1, 1, 1, 2, 4, 2, 196, 8, 2, 11, 2, 12, 2, 197, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 12, 1, 12, 1, 13, 1, 13, 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 21, 1, 21, 1, 22, 1, 22, 1, 23, 1, 23, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 3, 27, 263, 8, 27, 1, 28, 1, 28, 1, 28, 1, 28, 3, 28, 269, 8, 28, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 373, 8, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 403, 8, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 60, 3, 60, 463, 8, 60, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 65, 4, 65, 480, 8, 65, 11, 65, 12, 65, 481, 1, 65, 1, 65, 5, 65, 486, 8, 65, 10, 65, 12, 65, 489, 9, 65, 5, 65, 491, 8, 65, 10, 65, 12, 65, 494, 9, 65, 1, 65, 1, 65, 5, 65, 498, 8, 65, 10, 65, 12, 65, 501, 9, 65, 5, 65, 503, 8, 65, 10, 65, 12, 65, 506, 9, 65, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 67, 3, 67, 514, 8, 67, 1, 68, 4, 68, 517, 8, 68, 11, 68, 12, 68, 518, 1, 69, 1, 69, 1, 69, 4, 69, 524, 8, 69, 11, 69, 12, 69, 525, 1, 69, 3, 69, 529, 8, 69, 1, 69, 1, 69, 3, 69, 533, 8, 69, 3, 69, 535, 8, 69, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 5, 73, 547, 8, 73, 10, 73, 12, 73, 550, 9, 73, 3, 73, 552, 8, 73, 1, 74, 1, 74, 3, 74, 556, 8, 74, 1, 74, 4, 74, 559, 8, 74, 11, 74, 12, 74, 560, 1, 75, 1, 75, 1, 76, 1, 76, 1, 77, 1, 77, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 5, 79, 577, 8, 79, 10, 79, 12, 79, 580, 9, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 5, 80, 590, 8, 80, 10, 80, 12, 80, 593, 9, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 81, 5, 81, 601, 8, 81, 10, 81, 12, 81, 604, 9, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, 82, 5, 82, 612, 8, 82, 10, 82, 12, 82, 615, 9, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 175, 0, 84, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36, 73, 37, 75, 38, 77, 39, 79, 40, 81, 41, 83, 42, 85, 43, 87, 44, 89, 45, 91, 46, 93, 47, 95, 48, 97, 49, 99, 50, 101, 51, 103, 52, 105, 53, 107, 54, 109, 55, 111, 56, 113, 57, 115, 58, 117, 59, 119, 60, 121, 61, 123, 62, 125, 63, 127, 64, 129, 65, 131, 66, 133, 67, 135, 68, 137, 69, 139, 70, 141, 71, 143, 72, 145, 0, 147, 0, 149, 0, 151, 0, 153, 0, 155, 0, 157, 0, 159, 0, 161, 0, 163, 0, 165, 0, 167, 0, 1, 0, 12, 3, 0, 10, 10, 13, 13, 8232, 8233, 4, 0, 9, 9, 11, 12, 32, 32, 160, 160, 1, 0, 48, 57, 3, 0, 48, 57, 65, 70, 97, 102, 1, 0, 49, 57, 2, 0, 69, 69, 101, 101, 2, 0, 43, 43, 45, 45, 2, 0, 65, 90, 97, 122, 2, 0, 34, 34, 92, 92, 2, 0, 39, 39, 92, 92, 1, 0, 96, 96, 1, 0, 180, 180, 645, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, 1, 0, 0, 0, 0, 83, 1, 0, 0, 0, 0, 85, 1, 0, 0, 0, 0, 87, 1, 0, 0, 0, 0, 89, 1, 0, 0, 0, 0, 91, 1, 0, 0, 0, 0, 93, 1, 0, 0, 0, 0, 95, 1, 0, 0, 0, 0, 97, 1, 0, 0, 0, 0, 99, 1, 0, 0, 0, 0, 101, 1, 0, 0, 0, 0, 103, 1, 0, 0, 0, 0, 105, 1, 0, 0, 0, 0, 107, 1, 0, 0, 0, 0, 109, 1, 0, 0, 0, 0, 111, 1, 0, 0, 0, 0, 113, 1, 0, 0, 0, 0, 115, 1, 0, 0, 0, 0, 117, 1, 0, 0, 0, 0, 119, 1, 0, 0, 0, 0, 121, 1, 0, 0, 0, 0, 123, 1, 0, 0, 0, 0, 125, 1, 0, 0, 0, 0, 127, 1, 0, 0, 0, 0, 129, 1, 0, 0, 0, 0, 131, 1, 0, 0, 0, 0, 133, 1, 0, 0, 0, 0, 135, 1, 0, 0, 0, 0, 137, 1, 0, 0, 0, 0, 139, 1, 0, 0, 0, 0, 141, 1, 0, 0, 0, 0, 143, 1, 0, 0, 0, 1, 169, 1, 0, 0, 0, 3, 183, 1, 0, 0, 0, 5, 195, 1, 0, 0, 0, 7, 201, 1, 0, 0, 0, 9, 205, 1, 0, 0, 0, 11, 207, 1, 0, 0, 0, 13, 209, 1, 0, 0, 0, 15, 211, 1, 0, 0, 0, 17, 213, 1, 0, 0, 0, 19, 215, 1, 0, 0, 0, 21, 217, 1, 0, 0, 0, 23, 219, 1, 0, 0, 0, 25, 221, 1, 0, 0, 0, 27, 223, 1, 0, 0, 0, 29, 225, 1, 0, 0, 0, 31, 227, 1, 0, 0, 0, 33, 229, 1, 0, 0, 0, 35, 232, 1, 0, 0, 0, 37, 235, 1, 0, 0, 0, 39, 238, 1, 0, 0, 0, 41, 241, 1, 0, 0, 0, 43, 243, 1, 0, 0, 0, 45, 245, 1, 0, 0, 0, 47, 247, 1, 0, 0, 0, 49, 249, 1, 0, 0, 0, 51, 251, 1, 0, 0, 0, 53, 254, 1, 0, 0, 0, 55, 262, 1, 0, 0, 0, 57, 268, 1, 0, 0, 0, 59, 270, 1, 0, 0, 0, 61, 273, 1, 0, 0, 0, 63, 275, 1, 0, 0, 0, 65, 277, 1, 0, 0, 0, 67, 280, 1, 0, 0, 0, 69, 283, 1, 0, 0, 0, 71, 287, 1, 0, 0, 0, 73, 294, 1, 0, 0, 0, 75, 302, 1, 0, 0, 0, 77, 310, 1, 0, 0, 0, 79, 318, 1, 0, 0, 0, 81, 327, 1, 0, 0, 0, 83, 334, 1, 0, 0, 0, 85, 342, 1, 0, 0, 0, 87, 347, 1, 0, 0, 0, 89, 353, 1, 0, 0, 0, 91, 357, 1, 0, 0, 0, 93, 372, 1, 0, 0, 0, 95, 374, 1, 0, 0, 0, 97, 379, 1, 0, 0, 0, 99, 402, 1, 0, 0, 0, 101, 404, 1, 0, 0, 0, 103, 408, 1, 0, 0, 0, 105, 413, 1, 0, 0, 0, 107, 418, 1, 0, 0, 0, 109, 423, 1, 0, 0, 0, 111, 429, 1, 0, 0, 0, 113, 433, 1, 0, 0, 0, 115, 437, 1, 0, 0, 0, 117, 447, 1, 0, 0, 0, 119, 453, 1, 0, 0, 0, 121, 462, 1, 0, 0, 0, 123, 464, 1, 0, 0, 0, 125, 467, 1, 0, 0, 0, 127, 470, 1, 0, 0, 0, 129, 476, 1, 0, 0, 0, 131, 479, 1, 0, 0, 0, 133, 507, 1, 0, 0, 0, 135, 513, 1, 0, 0, 0, 137, 516, 1, 0, 0, 0, 139, 534, 1, 0, 0, 0, 141, 536, 1, 0, 0, 0, 143, 539, 1, 0, 0, 0, 145, 541, 1, 0, 0, 0, 147, 551, 1, 0, 0, 0, 149, 553, 1, 0, 0, 0, 151, 562, 1, 0, 0, 0, 153, 564, 1, 0, 0, 0, 155, 566, 1, 0, 0, 0, 157, 568, 1, 0, 0, 0, 159, 570, 1, 0, 0, 0, 161, 583, 1, 0, 0, 0, 163, 596, 1, 0, 0, 0, 165, 607, 1, 0, 0, 0, 167, 618, 1, 0, 0, 0, 169, 170, 5, 47, 0, 0, 170, 171, 5, 42, 0, 0, 171, 175, 1, 0, 0, 0, 172, 174, 9, 0, 0, 0, 173, 172, 1, 0, 0, 0, 174, 177, 1, 0, 0, 0, 175, 176, 1, 0, 0, 0, 175, 173, 1, 0, 0, 0, 176, 178, 1, 0, 0, 0, 177, 175, 1, 0, 0, 0, 178, 179, 5, 42, 0, 0, 179, 180, 5, 47, 0, 0, 180, 181, 1, 0, 0, 0, 181, 182, 6, 0, 0, 0, 182, 2, 1, 0, 0, 0, 183, 184, 5, 47, 0, 0, 184, 185, 5, 47, 0, 0, 185, 189, 1, 0, 0, 0, 186, 188, 8, 0, 0, 0, 187, 186, 1, 0, 0, 0, 188, 191, 1, 0, 0, 0, 189, 187, 1, 0, 0, 0, 189, 190, 1, 0, 0, 0, 190, 192, 1, 0, 0, 0, 191, 189, 1, 0, 0, 0, 192, 193, 6, 1, 0, 0, 193, 4, 1, 0, 0, 0, 194, 196, 7, 1, 0, 0, 195, 194, 1, 0, 0, 0, 196, 197, 1, 0, 0, 0, 197, 195, 1, 0, 0, 0, 197, 198, 1, 0, 0, 0, 198, 199, 1, 0, 0, 0, 199, 200, 6, 2, 0, 0, 200, 6, 1, 0, 0, 0, 201, 202, 7, 0, 0, 0, 202, 203, 1, 0, 0, 0, 203, 204, 6, 3, 0, 0, 204, 8, 1, 0, 0, 0, 205, 206, 5, 58, 0, 0, 206, 10, 1, 0, 0, 0, 207, 208, 5, 59, 0, 0, 208, 12, 1, 0, 0, 0, 209, 210, 5, 46, 0, 0, 210, 14, 1, 0, 0, 0, 211, 212, 5, 44, 0, 0, 212, 16, 1, 0, 0, 0, 213, 214, 5, 91, 0, 0, 214, 18, 1, 0, 0, 0, 215, 216, 5, 93, 0, 0, 216, 20, 1, 0, 0, 0, 217, 218, 5, 40, 0, 0, 218, 22, 1, 0, 0, 0, 219, 220, 5, 41, 0, 0, 220, 24, 1, 0, 0, 0, 221, 222, 5, 123, 0, 0, 222, 26, 1, 0, 0, 0, 223, 224, 5, 125, 0, 0, 224, 28, 1, 0, 0, 0, 225, 226, 5, 62, 0, 0, 226, 30, 1, 0, 0, 0, 227, 228, 5, 60, 0, 0, 228, 32, 1, 0, 0, 0, 229, 230, 5, 61, 0, 0, 230, 231, 5, 61, 0, 0, 231, 34, 1, 0, 0, 0, 232, 233, 5, 62, 0, 0, 233, 234, 5, 61, 0, 0, 234, 36, 1, 0, 0, 0, 235, 236, 5, 60, 0, 0, 236, 237, 5, 61, 0, 0, 237, 38, 1, 0, 0, 0, 238, 239, 5, 33, 0, 0, 239, 240, 5, 61, 0, 0, 240, 40, 1, 0, 0, 0, 241, 242, 5, 42, 0, 0, 242, 42, 1, 0, 0, 0, 243, 244, 5, 47, 0, 0, 244, 44, 1, 0, 0, 0, 245, 246, 5, 37, 0, 0, 246, 46, 1, 0, 0, 0, 247, 248, 5, 43, 0, 0, 248, 48, 1, 0, 0, 0, 249, 250, 5, 45, 0, 0, 250, 50, 1, 0, 0, 0, 251, 252, 5, 45, 0, 0, 252, 253, 5, 45, 0, 0, 253, 52, 1, 0, 0, 0, 254, 255, 5, 43, 0, 0, 255, 256, 5, 43, 0, 0, 256, 54, 1, 0, 0, 0, 257, 258, 5, 65, 0, 0, 258, 259, 5, 78, 0, 0, 259, 263, 5, 68, 0, 0, 260, 261, 5, 38, 0, 0, 261, 263, 5, 38, 0, 0, 262, 257, 1, 0, 0, 0, 262, 260, 1, 0, 0, 0, 263, 56, 1, 0, 0, 0, 264, 265, 5, 79, 0, 0, 265, 269, 5, 82, 0, 0, 266, 267, 5, 124, 0, 0, 267, 269, 5, 124, 0, 0, 268, 264, 1, 0, 0, 0, 268, 266, 1, 0, 0, 0, 269, 58, 1, 0, 0, 0, 270, 271, 3, 13, 6, 0, 271, 272, 3, 13, 6, 0, 272, 60, 1, 0, 0, 0, 273, 274, 5, 61, 0, 0, 274, 62, 1, 0, 0, 0, 275, 276, 5, 63, 0, 0, 276, 64, 1, 0, 0, 0, 277, 278, 5, 33, 0, 0, 278, 279, 5, 126, 0, 0, 279, 66, 1, 0, 0, 0, 280, 281, 5, 61, 0, 0, 281, 282, 5, 126, 0, 0, 282, 68, 1, 0, 0, 0, 283, 284, 5, 70, 0, 0, 284, 285, 5, 79, 0, 0, 285, 286, 5, 82, 0, 0, 286, 70, 1, 0, 0, 0, 287, 288, 5, 82, 0, 0, 288, 289, 5, 69, 0, 0, 289, 290, 5, 84, 0, 0, 290, 291, 5, 85, 0, 0, 291, 292, 5, 82, 0, 0, 292, 293, 5, 78, 0, 0, 293, 72, 1, 0, 0, 0, 294, 295, 5, 87, 0, 0, 295, 296, 5, 65, 0, 0, 296, 297, 5, 73, 0, 0, 297, 298, 5, 84, 0, 0, 298, 299, 5, 70, 0, 0, 299, 300, 5, 79, 0, 0, 300, 301, 5, 82, 0, 0, 301, 74, 1, 0, 0, 0, 302, 303, 5, 79, 0, 0, 303, 304, 5, 80, 0, 0, 304, 305, 5, 84, 0, 0, 305, 306, 5, 73, 0, 0, 306, 307, 5, 79, 0, 0, 307, 308, 5, 78, 0, 0, 308, 309, 5, 83, 0, 0, 309, 76, 1, 0, 0, 0, 310, 311, 5, 84, 0, 0, 311, 312, 5, 73, 0, 0, 312, 313, 5, 77, 0, 0, 313, 314, 5, 69, 0, 0, 314, 315, 5, 79, 0, 0, 315, 316, 5, 85, 0, 0, 316, 317, 5, 84, 0, 0, 317, 78, 1, 0, 0, 0, 318, 319, 5, 68, 0, 0, 319, 320, 5, 73, 0, 0, 320, 321, 5, 83, 0, 0, 321, 322, 5, 84, 0, 0, 322, 323, 5, 73, 0, 0, 323, 324, 5, 78, 0, 0, 324, 325, 5, 67, 0, 0, 325, 326, 5, 84, 0, 0, 326, 80, 1, 0, 0, 0, 327, 328, 5, 70, 0, 0, 328, 329, 5, 73, 0, 0, 329, 330, 5, 76, 0, 0, 330, 331, 5, 84, 0, 0, 331, 332, 5, 69, 0, 0, 332, 333, 5, 82, 0, 0, 333, 82, 1, 0, 0, 0, 334, 335, 5, 67, 0, 0, 335, 336, 5, 85, 0, 0, 336, 337, 5, 82, 0, 0, 337, 338, 5, 82, 0, 0, 338, 339, 5, 69, 0, 0, 339, 340, 5, 78, 0, 0, 340, 341, 5, 84, 0, 0, 341, 84, 1, 0, 0, 0, 342, 343, 5, 83, 0, 0, 343, 344, 5, 79, 0, 0, 344, 345, 5, 82, 0, 0, 345, 346, 5, 84, 0, 0, 346, 86, 1, 0, 0, 0, 347, 348, 5, 76, 0, 0, 348, 349, 5, 73, 0, 0, 349, 350, 5, 77, 0, 0, 350, 351, 5, 73, 0, 0, 351, 352, 5, 84, 0, 0, 352, 88, 1, 0, 0, 0, 353, 354, 5, 76, 0, 0, 354, 355, 5, 69, 0, 0, 355, 356, 5, 84, 0, 0, 356, 90, 1, 0, 0, 0, 357, 358, 5, 67, 0, 0, 358, 359, 5, 79, 0, 0, 359, 360, 5, 76, 0, 0, 360, 361, 5, 76, 0, 0, 361, 362, 5, 69, 0, 0, 362, 363, 5, 67, 0, 0, 363, 364, 5, 84, 0, 0, 364, 92, 1, 0, 0, 0, 365, 366, 5, 65, 0, 0, 366, 367, 5, 83, 0, 0, 367, 373, 5, 67, 0, 0, 368, 369, 5, 68, 0, 0, 369, 370, 5, 69, 0, 0, 370, 371, 5, 83, 0, 0, 371, 373, 5, 67, 0, 0, 372, 365, 1, 0, 0, 0, 372, 368, 1, 0, 0, 0, 373, 94, 1, 0, 0, 0, 374, 375, 5, 78, 0, 0, 375, 376, 5, 79, 0, 0, 376, 377, 5, 78, 0, 0, 377, 378, 5, 69, 0, 0, 378, 96, 1, 0, 0, 0, 379, 380, 5, 78, 0, 0, 380, 381, 5, 85, 0, 0, 381, 382, 5, 76, 0, 0, 382, 383, 5, 76, 0, 0, 383, 98, 1, 0, 0, 0, 384, 385, 5, 84, 0, 0, 385, 386, 5, 82, 0, 0, 386, 387, 5, 85, 0, 0, 387, 403, 5, 69, 0, 0, 388, 389, 5, 116, 0, 0, 389, 390, 5, 114, 0, 0, 390, 391, 5, 117, 0, 0, 391, 403, 5, 101, 0, 0, 392, 393, 5, 70, 0, 0, 393, 394, 5, 65, 0, 0, 394, 395, 5, 76, 0, 0, 395, 396, 5, 83, 0, 0, 396, 403, 5, 69, 0, 0, 397, 398, 5, 102, 0, 0, 398, 399, 5, 97, 0, 0, 399, 400, 5, 108, 0, 0, 400, 401, 5, 115, 0, 0, 401, 403, 5, 101, 0, 0, 402, 384, 1, 0, 0, 0, 402, 388, 1, 0, 0, 0, 402, 392, 1, 0, 0, 0, 402, 397, 1, 0, 0, 0, 403, 100, 1, 0, 0, 0, 404, 405, 5, 85, 0, 0, 405, 406, 5, 83, 0, 0, 406, 407, 5, 69, 0, 0, 407, 102, 1, 0, 0, 0, 408, 409, 5, 73, 0, 0, 409, 410, 5, 78, 0, 0, 410, 411, 5, 84, 0, 0, 411, 412, 5, 79, 0, 0, 412, 104, 1, 0, 0, 0, 413, 414, 5, 75, 0, 0, 414, 415, 5, 69, 0, 0, 415, 416, 5, 69, 0, 0, 416, 417, 5, 80, 0, 0, 417, 106, 1, 0, 0, 0, 418, 419, 5, 87, 0, 0, 419, 420, 5, 73, 0, 0, 420, 421, 5, 84, 0, 0, 421, 422, 5, 72, 0, 0, 422, 108, 1, 0, 0, 0, 423, 424, 5, 67, 0, 0, 424, 425, 5, 79, 0, 0, 425, 426, 5, 85, 0, 0, 426, 427, 5, 78, 0, 0, 427, 428, 5, 84, 0, 0, 428, 110, 1, 0, 0, 0, 429, 430, 5, 65, 0, 0, 430, 431, 5, 76, 0, 0, 431, 432, 5, 76, 0, 0, 432, 112, 1, 0, 0, 0, 433, 434, 5, 65, 0, 0, 434, 435, 5, 78, 0, 0, 435, 436, 5, 89, 0, 0, 436, 114, 1, 0, 0, 0, 437, 438, 5, 65, 0, 0, 438, 439, 5, 71, 0, 0, 439, 440, 5, 71, 0, 0, 440, 441, 5, 82, 0, 0, 441, 442, 5, 69, 0, 0, 442, 443, 5, 71, 0, 0, 443, 444, 5, 65, 0, 0, 444, 445, 5, 84, 0, 0, 445, 446, 5, 69, 0, 0, 446, 116, 1, 0, 0, 0, 447, 448, 5, 69, 0, 0, 448, 449, 5, 86, 0, 0, 449, 450, 5, 69, 0, 0, 450, 451, 5, 78, 0, 0, 451, 452, 5, 84, 0, 0, 452, 118, 1, 0, 0, 0, 453, 454, 5, 76, 0, 0, 454, 455, 5, 73, 0, 0, 455, 456, 5, 75, 0, 0, 456, 457, 5, 69, 0, 0, 457, 120, 1, 0, 0, 0, 458, 459, 5, 78, 0, 0, 459, 460, 5, 79, 0, 0, 460, 463, 5, 84, 0, 0, 461, 463, 5, 33, 0, 0, 462, 458, 1, 0, 0, 0, 462, 461, 1, 0, 0, 0, 463, 122, 1, 0, 0, 0, 464, 465, 5, 73, 0, 0, 465, 466, 5, 78, 0, 0, 466, 124, 1, 0, 0, 0, 467, 468, 5, 68, 0, 0, 468, 469, 5, 79, 0, 0, 469, 126, 1, 0, 0, 0, 470, 471, 5, 87, 0, 0, 471, 472, 5, 72, 0, 0, 472, 473, 5, 73, 0, 0, 473, 474, 5, 76, 0, 0, 474, 475, 5, 69, 0, 0, 475, 128, 1, 0, 0, 0, 476, 477, 5, 64, 0, 0, 477, 130, 1, 0, 0, 0, 478, 480, 3, 151, 75, 0, 479, 478, 1, 0, 0, 0, 480, 481, 1, 0, 0, 0, 481, 479, 1, 0, 0, 0, 481, 482, 1, 0, 0, 0, 482, 492, 1, 0, 0, 0, 483, 487, 3, 153, 76, 0, 484, 486, 3, 131, 65, 0, 485, 484, 1, 0, 0, 0, 486, 489, 1, 0, 0, 0, 487, 485, 1, 0, 0, 0, 487, 488, 1, 0, 0, 0, 488, 491, 1, 0, 0, 0, 489, 487, 1, 0, 0, 0, 490, 483, 1, 0, 0, 0, 491, 494, 1, 0, 0, 0, 492, 490, 1, 0, 0, 0, 492, 493, 1, 0, 0, 0, 493, 504, 1, 0, 0, 0, 494, 492, 1, 0, 0, 0, 495, 499, 3, 157, 78, 0, 496, 498, 3, 131, 65, 0, 497, 496, 1, 0, 0, 0, 498, 501, 1, 0, 0, 0, 499, 497, 1, 0, 0, 0, 499, 500, 1, 0, 0, 0, 500, 503, 1, 0, 0, 0, 501, 499, 1, 0, 0, 0, 502, 495, 1, 0, 0, 0, 503, 506, 1, 0, 0, 0, 504, 502, 1, 0, 0, 0, 504, 505, 1, 0, 0, 0, 505, 132, 1, 0, 0, 0, 506, 504, 1, 0, 0, 0, 507, 508, 3, 155, 77, 0, 508, 134, 1, 0, 0, 0, 509, 514, 3, 161, 80, 0, 510, 514, 3, 159, 79, 0, 511, 514, 3, 163, 81, 0, 512, 514, 3, 165, 82, 0, 513, 509, 1, 0, 0, 0, 513, 510, 1, 0, 0, 0, 513, 511, 1, 0, 0, 0, 513, 512, 1, 0, 0, 0, 514, 136, 1, 0, 0, 0, 515, 517, 7, 2, 0, 0, 516, 515, 1, 0, 0, 0, 517, 518, 1, 0, 0, 0, 518, 516, 1, 0, 0, 0, 518, 519, 1, 0, 0, 0, 519, 138, 1, 0, 0, 0, 520, 521, 3, 147, 73, 0, 521, 523, 3, 13, 6, 0, 522, 524, 7, 2, 0, 0, 523, 522, 1, 0, 0, 0, 524, 525, 1, 0, 0, 0, 525, 523, 1, 0, 0, 0, 525, 526, 1, 0, 0, 0, 526, 528, 1, 0, 0, 0, 527, 529, 3, 149, 74, 0, 528, 527, 1, 0, 0, 0, 528, 529, 1, 0, 0, 0, 529, 535, 1, 0, 0, 0, 530, 532, 3, 147, 73, 0, 531, 533, 3, 149, 74, 0, 532, 531, 1, 0, 0, 0, 532, 533, 1, 0, 0, 0, 533, 535, 1, 0, 0, 0, 534, 520, 1, 0, 0, 0, 534, 530, 1, 0, 0, 0, 535, 140, 1, 0, 0, 0, 536, 537, 3, 131, 65, 0, 537, 538, 3, 167, 83, 0, 538, 142, 1, 0, 0, 0, 539, 540, 9, 0, 0, 0, 540, 144, 1, 0, 0, 0, 541, 542, 7, 3, 0, 0, 542, 146, 1, 0, 0, 0, 543, 552, 5, 48, 0, 0, 544, 548, 7, 4, 0, 0, 545, 547, 7, 2, 0, 0, 546, 545, 1, 0, 0, 0, 547, 550, 1, 0, 0, 0, 548, 546, 1, 0, 0, 0, 548, 549, 1, 0, 0, 0, 549, 552, 1, 0, 0, 0, 550, 548, 1, 0, 0, 0, 551, 543, 1, 0, 0, 0, 551, 544, 1, 0, 0, 0, 552, 148, 1, 0, 0, 0, 553, 555, 7, 5, 0, 0, 554, 556, 7, 6, 0, 0, 555, 554, 1, 0, 0, 0, 555, 556, 1, 0, 0, 0, 556, 558, 1, 0, 0, 0, 557, 559, 7, 2, 0, 0, 558, 557, 1, 0, 0, 0, 559, 560, 1, 0, 0, 0, 560, 558, 1, 0, 0, 0, 560, 561, 1, 0, 0, 0, 561, 150, 1, 0, 0, 0, 562, 563, 7, 7, 0, 0, 563, 152, 1, 0, 0, 0, 564, 565, 3, 155, 77, 0, 565, 154, 1, 0, 0, 0, 566, 567, 5, 95, 0, 0, 567, 156, 1, 0, 0, 0, 568, 569, 2, 48, 57, 0, 569, 158, 1, 0, 0, 0, 570, 578, 5, 34, 0, 0, 571, 572, 5, 92, 0, 0, 572, 577, 9, 0, 0, 0, 573, 574, 5, 34, 0, 0, 574, 577, 5, 34, 0, 0, 575, 577, 8, 8, 0, 0, 576, 571, 1, 0, 0, 0, 576, 573, 1, 0, 0, 0, 576, 575, 1, 0, 0, 0, 577, 580, 1, 0, 0, 0, 578, 576, 1, 0, 0, 0, 578, 579, 1, 0, 0, 0, 579, 581, 1, 0, 0, 0, 580, 578, 1, 0, 0, 0, 581, 582, 5, 34, 0, 0, 582, 160, 1, 0, 0, 0, 583, 591, 5, 39, 0, 0, 584, 585, 5, 92, 0, 0, 585, 590, 9, 0, 0, 0, 586, 587, 5, 39, 0, 0, 587, 590, 5, 39, 0, 0, 588, 590, 8, 9, 0, 0, 589, 584, 1, 0, 0, 0, 589, 586, 1, 0, 0, 0, 589, 588, 1, 0, 0, 0, 590, 593, 1, 0, 0, 0, 591, 589, 1, 0, 0, 0, 591, 592, 1, 0, 0, 0, 592, 594, 1, 0, 0, 0, 593, 591, 1, 0, 0, 0, 594, 595, 5, 39, 0, 0, 595, 162, 1, 0, 0, 0, 596, 602, 5, 96, 0, 0, 597, 598, 5, 92, 0, 0, 598, 601, 5, 96, 0, 0, 599, 601, 8, 10, 0, 0, 600, 597, 1, 0, 0, 0, 600, 599, 1, 0, 0, 0, 601, 604, 1, 0, 0, 0, 602, 600, 1, 0, 0, 0, 602, 603, 1, 0, 0, 0, 603, 605, 1, 0, 0, 0, 604, 602, 1, 0, 0, 0, 605, 606, 5, 96, 0, 0, 606, 164, 1, 0, 0, 0, 607, 613, 5, 180, 0, 0, 608, 609, 5, 92, 0, 0, 609, 612, 5, 180, 0, 0, 610, 612, 8, 11, 0, 0, 611, 608, 1, 0, 0, 0, 611, 610, 1, 0, 0, 0, 612, 615, 1, 0, 0, 0, 613, 611, 1, 0, 0, 0, 613, 614, 1, 0, 0, 0, 614, 616, 1, 0, 0, 0, 615, 613, 1, 0, 0, 0, 616, 617, 5, 180, 0, 0, 617, 166, 1, 0, 0, 0, 618, 619, 5, 58, 0, 0, 619, 620, 5, 58, 0, 0, 620, 168, 1, 0, 0, 0, 32, 0, 175, 189, 197, 262, 268, 372, 402, 462, 481, 487, 492, 499, 504, 513, 518, 525, 528, 532, 534, 548, 551, 555, 560, 576, 578, 589, 591, 600, 602, 611, 613, 1, 0, 1, 0] \ No newline at end of file diff --git a/pkg/parser/fql/FqlParser.interp b/pkg/parser/fql/FqlParser.interp index 79d9566b..42226397 100644 --- a/pkg/parser/fql/FqlParser.interp +++ b/pkg/parser/fql/FqlParser.interp @@ -224,4 +224,4 @@ errorOperator atn: -[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 3, 74, 649, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, 9, 44, 4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 4, 48, 9, 48, 4, 49, 9, 49, 4, 50, 9, 50, 4, 51, 9, 51, 4, 52, 9, 52, 4, 53, 9, 53, 4, 54, 9, 54, 4, 55, 9, 55, 4, 56, 9, 56, 4, 57, 9, 57, 4, 58, 9, 58, 4, 59, 9, 59, 4, 60, 9, 60, 4, 61, 9, 61, 4, 62, 9, 62, 4, 63, 9, 63, 4, 64, 9, 64, 4, 65, 9, 65, 4, 66, 9, 66, 4, 67, 9, 67, 4, 68, 9, 68, 4, 69, 9, 69, 4, 70, 9, 70, 4, 71, 9, 71, 4, 72, 9, 72, 4, 73, 9, 73, 3, 2, 7, 2, 148, 10, 2, 12, 2, 14, 2, 151, 11, 2, 3, 2, 3, 2, 3, 3, 3, 3, 3, 4, 3, 4, 3, 5, 3, 5, 3, 5, 3, 6, 7, 6, 163, 10, 6, 12, 6, 14, 6, 166, 11, 6, 3, 6, 3, 6, 3, 7, 3, 7, 3, 7, 5, 7, 173, 10, 7, 3, 8, 3, 8, 5, 8, 177, 10, 8, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 188, 10, 9, 3, 10, 3, 10, 5, 10, 192, 10, 10, 3, 10, 3, 10, 3, 11, 3, 11, 3, 11, 3, 11, 5, 11, 200, 10, 11, 3, 11, 3, 11, 3, 11, 7, 11, 205, 10, 11, 12, 11, 14, 11, 208, 11, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 5, 11, 215, 10, 11, 3, 11, 3, 11, 3, 11, 7, 11, 220, 10, 11, 12, 11, 14, 11, 223, 11, 11, 3, 11, 3, 11, 5, 11, 227, 10, 11, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 5, 12, 236, 10, 12, 3, 13, 3, 13, 3, 13, 3, 13, 5, 13, 242, 10, 13, 3, 14, 3, 14, 5, 14, 246, 10, 14, 3, 15, 3, 15, 5, 15, 250, 10, 15, 3, 16, 3, 16, 5, 16, 254, 10, 16, 3, 17, 3, 17, 3, 17, 3, 18, 3, 18, 3, 18, 3, 18, 5, 18, 263, 10, 18, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 5, 19, 270, 10, 19, 3, 20, 3, 20, 3, 20, 3, 20, 7, 20, 276, 10, 20, 12, 20, 14, 20, 279, 11, 20, 3, 21, 3, 21, 5, 21, 283, 10, 21, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 5, 22, 303, 10, 22, 3, 23, 3, 23, 3, 23, 3, 23, 3, 24, 3, 24, 3, 24, 7, 24, 312, 10, 24, 12, 24, 14, 24, 315, 11, 24, 3, 25, 3, 25, 3, 25, 3, 25, 7, 25, 321, 10, 25, 12, 25, 14, 25, 324, 11, 25, 3, 26, 3, 26, 3, 26, 3, 26, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 5, 27, 336, 10, 27, 5, 27, 338, 10, 27, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 5, 29, 351, 10, 29, 3, 29, 5, 29, 354, 10, 29, 3, 29, 5, 29, 357, 10, 29, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 5, 30, 364, 10, 30, 3, 31, 3, 31, 3, 31, 5, 31, 369, 10, 31, 3, 32, 3, 32, 3, 32, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 5, 33, 380, 10, 33, 3, 34, 3, 34, 3, 34, 3, 34, 5, 34, 386, 10, 34, 3, 35, 3, 35, 5, 35, 390, 10, 35, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 5, 36, 399, 10, 36, 3, 37, 3, 37, 5, 37, 403, 10, 37, 3, 37, 3, 37, 3, 38, 3, 38, 3, 38, 3, 38, 7, 38, 411, 10, 38, 12, 38, 14, 38, 414, 11, 38, 3, 38, 5, 38, 417, 10, 38, 5, 38, 419, 10, 38, 3, 38, 3, 38, 3, 39, 3, 39, 3, 40, 3, 40, 3, 41, 3, 41, 3, 42, 3, 42, 3, 43, 3, 43, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 5, 44, 442, 10, 44, 3, 45, 3, 45, 3, 45, 3, 45, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 5, 46, 453, 10, 46, 3, 47, 3, 47, 3, 47, 3, 48, 7, 48, 459, 10, 48, 12, 48, 14, 48, 462, 11, 48, 3, 49, 3, 49, 6, 49, 466, 10, 49, 13, 49, 14, 49, 467, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 5, 50, 475, 10, 50, 3, 51, 3, 51, 5, 51, 479, 10, 51, 3, 52, 3, 52, 3, 52, 3, 52, 5, 52, 485, 10, 52, 3, 52, 3, 52, 3, 53, 3, 53, 3, 53, 5, 53, 492, 10, 53, 3, 54, 3, 54, 3, 54, 7, 54, 497, 10, 54, 12, 54, 14, 54, 500, 11, 54, 3, 54, 5, 54, 503, 10, 54, 3, 55, 5, 55, 506, 10, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 5, 55, 513, 10, 55, 3, 55, 5, 55, 516, 10, 55, 3, 56, 3, 56, 3, 57, 3, 57, 3, 58, 3, 58, 3, 58, 3, 58, 3, 59, 3, 59, 3, 59, 5, 59, 529, 10, 59, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 5, 60, 536, 10, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 5, 60, 549, 10, 60, 3, 60, 3, 60, 7, 60, 553, 10, 60, 12, 60, 14, 60, 556, 11, 60, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 7, 61, 577, 10, 61, 12, 61, 14, 61, 580, 11, 61, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 5, 62, 593, 10, 62, 3, 62, 3, 62, 5, 62, 597, 10, 62, 5, 62, 599, 10, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 7, 62, 613, 10, 62, 12, 62, 14, 62, 616, 11, 62, 3, 63, 3, 63, 3, 63, 5, 63, 621, 10, 63, 3, 64, 3, 64, 3, 65, 5, 65, 626, 10, 65, 3, 65, 3, 65, 3, 66, 5, 66, 631, 10, 66, 3, 66, 3, 66, 3, 67, 3, 67, 3, 68, 3, 68, 3, 69, 3, 69, 3, 70, 3, 70, 3, 71, 3, 71, 3, 72, 3, 72, 3, 73, 3, 73, 3, 73, 2, 5, 118, 120, 122, 74, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 2, 12, 3, 2, 68, 69, 3, 2, 50, 51, 6, 2, 30, 31, 40, 46, 48, 49, 54, 61, 6, 2, 37, 39, 47, 47, 50, 53, 62, 66, 4, 2, 50, 50, 58, 59, 3, 2, 17, 22, 4, 2, 26, 27, 63, 63, 3, 2, 35, 36, 3, 2, 23, 25, 3, 2, 26, 27, 2, 688, 2, 149, 3, 2, 2, 2, 4, 154, 3, 2, 2, 2, 6, 156, 3, 2, 2, 2, 8, 158, 3, 2, 2, 2, 10, 164, 3, 2, 2, 2, 12, 172, 3, 2, 2, 2, 14, 176, 3, 2, 2, 2, 16, 187, 3, 2, 2, 2, 18, 189, 3, 2, 2, 2, 20, 226, 3, 2, 2, 2, 22, 235, 3, 2, 2, 2, 24, 241, 3, 2, 2, 2, 26, 245, 3, 2, 2, 2, 28, 249, 3, 2, 2, 2, 30, 253, 3, 2, 2, 2, 32, 255, 3, 2, 2, 2, 34, 258, 3, 2, 2, 2, 36, 269, 3, 2, 2, 2, 38, 271, 3, 2, 2, 2, 40, 280, 3, 2, 2, 2, 42, 302, 3, 2, 2, 2, 44, 304, 3, 2, 2, 2, 46, 308, 3, 2, 2, 2, 48, 316, 3, 2, 2, 2, 50, 325, 3, 2, 2, 2, 52, 337, 3, 2, 2, 2, 54, 339, 3, 2, 2, 2, 56, 344, 3, 2, 2, 2, 58, 363, 3, 2, 2, 2, 60, 368, 3, 2, 2, 2, 62, 370, 3, 2, 2, 2, 64, 373, 3, 2, 2, 2, 66, 385, 3, 2, 2, 2, 68, 389, 3, 2, 2, 2, 70, 398, 3, 2, 2, 2, 72, 400, 3, 2, 2, 2, 74, 406, 3, 2, 2, 2, 76, 422, 3, 2, 2, 2, 78, 424, 3, 2, 2, 2, 80, 426, 3, 2, 2, 2, 82, 428, 3, 2, 2, 2, 84, 430, 3, 2, 2, 2, 86, 441, 3, 2, 2, 2, 88, 443, 3, 2, 2, 2, 90, 452, 3, 2, 2, 2, 92, 454, 3, 2, 2, 2, 94, 460, 3, 2, 2, 2, 96, 463, 3, 2, 2, 2, 98, 474, 3, 2, 2, 2, 100, 476, 3, 2, 2, 2, 102, 480, 3, 2, 2, 2, 104, 491, 3, 2, 2, 2, 106, 493, 3, 2, 2, 2, 108, 515, 3, 2, 2, 2, 110, 517, 3, 2, 2, 2, 112, 519, 3, 2, 2, 2, 114, 521, 3, 2, 2, 2, 116, 528, 3, 2, 2, 2, 118, 535, 3, 2, 2, 2, 120, 557, 3, 2, 2, 2, 122, 598, 3, 2, 2, 2, 124, 617, 3, 2, 2, 2, 126, 622, 3, 2, 2, 2, 128, 625, 3, 2, 2, 2, 130, 630, 3, 2, 2, 2, 132, 634, 3, 2, 2, 2, 134, 636, 3, 2, 2, 2, 136, 638, 3, 2, 2, 2, 138, 640, 3, 2, 2, 2, 140, 642, 3, 2, 2, 2, 142, 644, 3, 2, 2, 2, 144, 646, 3, 2, 2, 2, 146, 148, 5, 4, 3, 2, 147, 146, 3, 2, 2, 2, 148, 151, 3, 2, 2, 2, 149, 147, 3, 2, 2, 2, 149, 150, 3, 2, 2, 2, 150, 152, 3, 2, 2, 2, 151, 149, 3, 2, 2, 2, 152, 153, 5, 10, 6, 2, 153, 3, 3, 2, 2, 2, 154, 155, 5, 6, 4, 2, 155, 5, 3, 2, 2, 2, 156, 157, 5, 8, 5, 2, 157, 7, 3, 2, 2, 2, 158, 159, 7, 53, 2, 2, 159, 160, 5, 92, 47, 2, 160, 9, 3, 2, 2, 2, 161, 163, 5, 12, 7, 2, 162, 161, 3, 2, 2, 2, 163, 166, 3, 2, 2, 2, 164, 162, 3, 2, 2, 2, 164, 165, 3, 2, 2, 2, 165, 167, 3, 2, 2, 2, 166, 164, 3, 2, 2, 2, 167, 168, 5, 14, 8, 2, 168, 11, 3, 2, 2, 2, 169, 173, 5, 16, 9, 2, 170, 173, 5, 100, 51, 2, 171, 173, 5, 56, 29, 2, 172, 169, 3, 2, 2, 2, 172, 170, 3, 2, 2, 2, 172, 171, 3, 2, 2, 2, 173, 13, 3, 2, 2, 2, 174, 177, 5, 18, 10, 2, 175, 177, 5, 20, 11, 2, 176, 174, 3, 2, 2, 2, 176, 175, 3, 2, 2, 2, 177, 15, 3, 2, 2, 2, 178, 179, 7, 47, 2, 2, 179, 180, 9, 2, 2, 2, 180, 181, 7, 33, 2, 2, 181, 188, 5, 118, 60, 2, 182, 183, 7, 47, 2, 2, 183, 184, 5, 110, 56, 2, 184, 185, 7, 33, 2, 2, 185, 186, 5, 118, 60, 2, 186, 188, 3, 2, 2, 2, 187, 178, 3, 2, 2, 2, 187, 182, 3, 2, 2, 2, 188, 17, 3, 2, 2, 2, 189, 191, 7, 38, 2, 2, 190, 192, 7, 42, 2, 2, 191, 190, 3, 2, 2, 2, 191, 192, 3, 2, 2, 2, 192, 193, 3, 2, 2, 2, 193, 194, 5, 118, 60, 2, 194, 19, 3, 2, 2, 2, 195, 196, 7, 37, 2, 2, 196, 199, 9, 2, 2, 2, 197, 198, 7, 10, 2, 2, 198, 200, 7, 68, 2, 2, 199, 197, 3, 2, 2, 2, 199, 200, 3, 2, 2, 2, 200, 201, 3, 2, 2, 2, 201, 202, 7, 64, 2, 2, 202, 206, 5, 22, 12, 2, 203, 205, 5, 28, 15, 2, 204, 203, 3, 2, 2, 2, 205, 208, 3, 2, 2, 2, 206, 204, 3, 2, 2, 2, 206, 207, 3, 2, 2, 2, 207, 209, 3, 2, 2, 2, 208, 206, 3, 2, 2, 2, 209, 210, 5, 30, 16, 2, 210, 227, 3, 2, 2, 2, 211, 212, 7, 37, 2, 2, 212, 214, 9, 2, 2, 2, 213, 215, 7, 65, 2, 2, 214, 213, 3, 2, 2, 2, 214, 215, 3, 2, 2, 2, 215, 216, 3, 2, 2, 2, 216, 217, 7, 66, 2, 2, 217, 221, 5, 118, 60, 2, 218, 220, 5, 28, 15, 2, 219, 218, 3, 2, 2, 2, 220, 223, 3, 2, 2, 2, 221, 219, 3, 2, 2, 2, 221, 222, 3, 2, 2, 2, 222, 224, 3, 2, 2, 2, 223, 221, 3, 2, 2, 2, 224, 225, 5, 30, 16, 2, 225, 227, 3, 2, 2, 2, 226, 195, 3, 2, 2, 2, 226, 211, 3, 2, 2, 2, 227, 21, 3, 2, 2, 2, 228, 236, 5, 100, 51, 2, 229, 236, 5, 72, 37, 2, 230, 236, 5, 74, 38, 2, 231, 236, 5, 68, 35, 2, 232, 236, 5, 96, 49, 2, 233, 236, 5, 114, 58, 2, 234, 236, 5, 66, 34, 2, 235, 228, 3, 2, 2, 2, 235, 229, 3, 2, 2, 2, 235, 230, 3, 2, 2, 2, 235, 231, 3, 2, 2, 2, 235, 232, 3, 2, 2, 2, 235, 233, 3, 2, 2, 2, 235, 234, 3, 2, 2, 2, 236, 23, 3, 2, 2, 2, 237, 242, 5, 34, 18, 2, 238, 242, 5, 38, 20, 2, 239, 242, 5, 32, 17, 2, 240, 242, 5, 42, 22, 2, 241, 237, 3, 2, 2, 2, 241, 238, 3, 2, 2, 2, 241, 239, 3, 2, 2, 2, 241, 240, 3, 2, 2, 2, 242, 25, 3, 2, 2, 2, 243, 246, 5, 16, 9, 2, 244, 246, 5, 100, 51, 2, 245, 243, 3, 2, 2, 2, 245, 244, 3, 2, 2, 2, 246, 27, 3, 2, 2, 2, 247, 250, 5, 26, 14, 2, 248, 250, 5, 24, 13, 2, 249, 247, 3, 2, 2, 2, 249, 248, 3, 2, 2, 2, 250, 29, 3, 2, 2, 2, 251, 254, 5, 18, 10, 2, 252, 254, 5, 20, 11, 2, 253, 251, 3, 2, 2, 2, 253, 252, 3, 2, 2, 2, 254, 31, 3, 2, 2, 2, 255, 256, 7, 43, 2, 2, 256, 257, 5, 118, 60, 2, 257, 33, 3, 2, 2, 2, 258, 259, 7, 46, 2, 2, 259, 262, 5, 36, 19, 2, 260, 261, 7, 10, 2, 2, 261, 263, 5, 36, 19, 2, 262, 260, 3, 2, 2, 2, 262, 263, 3, 2, 2, 2, 263, 35, 3, 2, 2, 2, 264, 270, 5, 82, 42, 2, 265, 270, 5, 66, 34, 2, 266, 270, 5, 68, 35, 2, 267, 270, 5, 100, 51, 2, 268, 270, 5, 96, 49, 2, 269, 264, 3, 2, 2, 2, 269, 265, 3, 2, 2, 2, 269, 266, 3, 2, 2, 2, 269, 267, 3, 2, 2, 2, 269, 268, 3, 2, 2, 2, 270, 37, 3, 2, 2, 2, 271, 272, 7, 45, 2, 2, 272, 277, 5, 40, 21, 2, 273, 274, 7, 10, 2, 2, 274, 276, 5, 40, 21, 2, 275, 273, 3, 2, 2, 2, 276, 279, 3, 2, 2, 2, 277, 275, 3, 2, 2, 2, 277, 278, 3, 2, 2, 2, 278, 39, 3, 2, 2, 2, 279, 277, 3, 2, 2, 2, 280, 282, 5, 118, 60, 2, 281, 283, 7, 49, 2, 2, 282, 281, 3, 2, 2, 2, 282, 283, 3, 2, 2, 2, 283, 41, 3, 2, 2, 2, 284, 285, 7, 48, 2, 2, 285, 303, 5, 54, 28, 2, 286, 287, 7, 48, 2, 2, 287, 303, 5, 48, 25, 2, 288, 289, 7, 48, 2, 2, 289, 290, 5, 46, 24, 2, 290, 291, 5, 48, 25, 2, 291, 303, 3, 2, 2, 2, 292, 293, 7, 48, 2, 2, 293, 294, 5, 46, 24, 2, 294, 295, 5, 52, 27, 2, 295, 303, 3, 2, 2, 2, 296, 297, 7, 48, 2, 2, 297, 298, 5, 46, 24, 2, 298, 299, 5, 54, 28, 2, 299, 303, 3, 2, 2, 2, 300, 301, 7, 48, 2, 2, 301, 303, 5, 46, 24, 2, 302, 284, 3, 2, 2, 2, 302, 286, 3, 2, 2, 2, 302, 288, 3, 2, 2, 2, 302, 292, 3, 2, 2, 2, 302, 296, 3, 2, 2, 2, 302, 300, 3, 2, 2, 2, 303, 43, 3, 2, 2, 2, 304, 305, 7, 68, 2, 2, 305, 306, 7, 33, 2, 2, 306, 307, 5, 118, 60, 2, 307, 45, 3, 2, 2, 2, 308, 313, 5, 44, 23, 2, 309, 310, 7, 10, 2, 2, 310, 312, 5, 44, 23, 2, 311, 309, 3, 2, 2, 2, 312, 315, 3, 2, 2, 2, 313, 311, 3, 2, 2, 2, 313, 314, 3, 2, 2, 2, 314, 47, 3, 2, 2, 2, 315, 313, 3, 2, 2, 2, 316, 317, 7, 60, 2, 2, 317, 322, 5, 50, 26, 2, 318, 319, 7, 10, 2, 2, 319, 321, 5, 50, 26, 2, 320, 318, 3, 2, 2, 2, 321, 324, 3, 2, 2, 2, 322, 320, 3, 2, 2, 2, 322, 323, 3, 2, 2, 2, 323, 49, 3, 2, 2, 2, 324, 322, 3, 2, 2, 2, 325, 326, 7, 68, 2, 2, 326, 327, 7, 33, 2, 2, 327, 328, 5, 100, 51, 2, 328, 51, 3, 2, 2, 2, 329, 330, 7, 54, 2, 2, 330, 338, 5, 44, 23, 2, 331, 332, 7, 54, 2, 2, 332, 335, 7, 68, 2, 2, 333, 334, 7, 55, 2, 2, 334, 336, 7, 68, 2, 2, 335, 333, 3, 2, 2, 2, 335, 336, 3, 2, 2, 2, 336, 338, 3, 2, 2, 2, 337, 329, 3, 2, 2, 2, 337, 331, 3, 2, 2, 2, 338, 53, 3, 2, 2, 2, 339, 340, 7, 56, 2, 2, 340, 341, 7, 57, 2, 2, 341, 342, 7, 54, 2, 2, 342, 343, 7, 68, 2, 2, 343, 55, 3, 2, 2, 2, 344, 345, 7, 39, 2, 2, 345, 346, 7, 61, 2, 2, 346, 347, 5, 58, 30, 2, 347, 348, 7, 64, 2, 2, 348, 350, 5, 60, 31, 2, 349, 351, 5, 62, 32, 2, 350, 349, 3, 2, 2, 2, 350, 351, 3, 2, 2, 2, 351, 353, 3, 2, 2, 2, 352, 354, 5, 32, 17, 2, 353, 352, 3, 2, 2, 2, 353, 354, 3, 2, 2, 2, 354, 356, 3, 2, 2, 2, 355, 357, 5, 64, 33, 2, 356, 355, 3, 2, 2, 2, 356, 357, 3, 2, 2, 2, 357, 57, 3, 2, 2, 2, 358, 364, 5, 78, 40, 2, 359, 364, 5, 68, 35, 2, 360, 364, 5, 66, 34, 2, 361, 364, 5, 100, 51, 2, 362, 364, 5, 96, 49, 2, 363, 358, 3, 2, 2, 2, 363, 359, 3, 2, 2, 2, 363, 360, 3, 2, 2, 2, 363, 361, 3, 2, 2, 2, 363, 362, 3, 2, 2, 2, 364, 59, 3, 2, 2, 2, 365, 369, 5, 100, 51, 2, 366, 369, 5, 68, 35, 2, 367, 369, 5, 96, 49, 2, 368, 365, 3, 2, 2, 2, 368, 366, 3, 2, 2, 2, 368, 367, 3, 2, 2, 2, 369, 61, 3, 2, 2, 2, 370, 371, 7, 40, 2, 2, 371, 372, 5, 74, 38, 2, 372, 63, 3, 2, 2, 2, 373, 379, 7, 41, 2, 2, 374, 380, 5, 82, 42, 2, 375, 380, 5, 68, 35, 2, 376, 380, 5, 66, 34, 2, 377, 380, 5, 96, 49, 2, 378, 380, 5, 102, 52, 2, 379, 374, 3, 2, 2, 2, 379, 375, 3, 2, 2, 2, 379, 376, 3, 2, 2, 2, 379, 377, 3, 2, 2, 2, 379, 378, 3, 2, 2, 2, 380, 65, 3, 2, 2, 2, 381, 382, 7, 67, 2, 2, 382, 386, 7, 68, 2, 2, 383, 384, 7, 67, 2, 2, 384, 386, 5, 110, 56, 2, 385, 381, 3, 2, 2, 2, 385, 383, 3, 2, 2, 2, 386, 67, 3, 2, 2, 2, 387, 390, 7, 68, 2, 2, 388, 390, 5, 110, 56, 2, 389, 387, 3, 2, 2, 2, 389, 388, 3, 2, 2, 2, 390, 69, 3, 2, 2, 2, 391, 399, 5, 72, 37, 2, 392, 399, 5, 74, 38, 2, 393, 399, 5, 76, 39, 2, 394, 399, 5, 78, 40, 2, 395, 399, 5, 80, 41, 2, 396, 399, 5, 82, 42, 2, 397, 399, 5, 84, 43, 2, 398, 391, 3, 2, 2, 2, 398, 392, 3, 2, 2, 2, 398, 393, 3, 2, 2, 2, 398, 394, 3, 2, 2, 2, 398, 395, 3, 2, 2, 2, 398, 396, 3, 2, 2, 2, 398, 397, 3, 2, 2, 2, 399, 71, 3, 2, 2, 2, 400, 402, 7, 11, 2, 2, 401, 403, 5, 106, 54, 2, 402, 401, 3, 2, 2, 2, 402, 403, 3, 2, 2, 2, 403, 404, 3, 2, 2, 2, 404, 405, 7, 12, 2, 2, 405, 73, 3, 2, 2, 2, 406, 418, 7, 15, 2, 2, 407, 412, 5, 86, 44, 2, 408, 409, 7, 10, 2, 2, 409, 411, 5, 86, 44, 2, 410, 408, 3, 2, 2, 2, 411, 414, 3, 2, 2, 2, 412, 410, 3, 2, 2, 2, 412, 413, 3, 2, 2, 2, 413, 416, 3, 2, 2, 2, 414, 412, 3, 2, 2, 2, 415, 417, 7, 10, 2, 2, 416, 415, 3, 2, 2, 2, 416, 417, 3, 2, 2, 2, 417, 419, 3, 2, 2, 2, 418, 407, 3, 2, 2, 2, 418, 419, 3, 2, 2, 2, 419, 420, 3, 2, 2, 2, 420, 421, 7, 16, 2, 2, 421, 75, 3, 2, 2, 2, 422, 423, 7, 52, 2, 2, 423, 77, 3, 2, 2, 2, 424, 425, 7, 70, 2, 2, 425, 79, 3, 2, 2, 2, 426, 427, 7, 72, 2, 2, 427, 81, 3, 2, 2, 2, 428, 429, 7, 71, 2, 2, 429, 83, 3, 2, 2, 2, 430, 431, 9, 3, 2, 2, 431, 85, 3, 2, 2, 2, 432, 433, 5, 90, 46, 2, 433, 434, 7, 7, 2, 2, 434, 435, 5, 118, 60, 2, 435, 442, 3, 2, 2, 2, 436, 437, 5, 88, 45, 2, 437, 438, 7, 7, 2, 2, 438, 439, 5, 118, 60, 2, 439, 442, 3, 2, 2, 2, 440, 442, 5, 68, 35, 2, 441, 432, 3, 2, 2, 2, 441, 436, 3, 2, 2, 2, 441, 440, 3, 2, 2, 2, 442, 87, 3, 2, 2, 2, 443, 444, 7, 11, 2, 2, 444, 445, 5, 118, 60, 2, 445, 446, 7, 12, 2, 2, 446, 89, 3, 2, 2, 2, 447, 453, 7, 68, 2, 2, 448, 453, 5, 78, 40, 2, 449, 453, 5, 66, 34, 2, 450, 453, 5, 110, 56, 2, 451, 453, 5, 112, 57, 2, 452, 447, 3, 2, 2, 2, 452, 448, 3, 2, 2, 2, 452, 449, 3, 2, 2, 2, 452, 450, 3, 2, 2, 2, 452, 451, 3, 2, 2, 2, 453, 91, 3, 2, 2, 2, 454, 455, 5, 94, 48, 2, 455, 456, 7, 68, 2, 2, 456, 93, 3, 2, 2, 2, 457, 459, 7, 73, 2, 2, 458, 457, 3, 2, 2, 2, 459, 462, 3, 2, 2, 2, 460, 458, 3, 2, 2, 2, 460, 461, 3, 2, 2, 2, 461, 95, 3, 2, 2, 2, 462, 460, 3, 2, 2, 2, 463, 465, 5, 98, 50, 2, 464, 466, 5, 108, 55, 2, 465, 464, 3, 2, 2, 2, 466, 467, 3, 2, 2, 2, 467, 465, 3, 2, 2, 2, 467, 468, 3, 2, 2, 2, 468, 97, 3, 2, 2, 2, 469, 475, 5, 68, 35, 2, 470, 475, 5, 66, 34, 2, 471, 475, 5, 72, 37, 2, 472, 475, 5, 74, 38, 2, 473, 475, 5, 102, 52, 2, 474, 469, 3, 2, 2, 2, 474, 470, 3, 2, 2, 2, 474, 471, 3, 2, 2, 2, 474, 472, 3, 2, 2, 2, 474, 473, 3, 2, 2, 2, 475, 99, 3, 2, 2, 2, 476, 478, 5, 102, 52, 2, 477, 479, 5, 144, 73, 2, 478, 477, 3, 2, 2, 2, 478, 479, 3, 2, 2, 2, 479, 101, 3, 2, 2, 2, 480, 481, 5, 94, 48, 2, 481, 482, 5, 104, 53, 2, 482, 484, 7, 13, 2, 2, 483, 485, 5, 106, 54, 2, 484, 483, 3, 2, 2, 2, 484, 485, 3, 2, 2, 2, 485, 486, 3, 2, 2, 2, 486, 487, 7, 14, 2, 2, 487, 103, 3, 2, 2, 2, 488, 492, 7, 68, 2, 2, 489, 492, 5, 110, 56, 2, 490, 492, 5, 112, 57, 2, 491, 488, 3, 2, 2, 2, 491, 489, 3, 2, 2, 2, 491, 490, 3, 2, 2, 2, 492, 105, 3, 2, 2, 2, 493, 498, 5, 118, 60, 2, 494, 495, 7, 10, 2, 2, 495, 497, 5, 118, 60, 2, 496, 494, 3, 2, 2, 2, 497, 500, 3, 2, 2, 2, 498, 496, 3, 2, 2, 2, 498, 499, 3, 2, 2, 2, 499, 502, 3, 2, 2, 2, 500, 498, 3, 2, 2, 2, 501, 503, 7, 10, 2, 2, 502, 501, 3, 2, 2, 2, 502, 503, 3, 2, 2, 2, 503, 107, 3, 2, 2, 2, 504, 506, 5, 144, 73, 2, 505, 504, 3, 2, 2, 2, 505, 506, 3, 2, 2, 2, 506, 507, 3, 2, 2, 2, 507, 508, 7, 9, 2, 2, 508, 516, 5, 90, 46, 2, 509, 510, 5, 144, 73, 2, 510, 511, 7, 9, 2, 2, 511, 513, 3, 2, 2, 2, 512, 509, 3, 2, 2, 2, 512, 513, 3, 2, 2, 2, 513, 514, 3, 2, 2, 2, 514, 516, 5, 88, 45, 2, 515, 505, 3, 2, 2, 2, 515, 512, 3, 2, 2, 2, 516, 109, 3, 2, 2, 2, 517, 518, 9, 4, 2, 2, 518, 111, 3, 2, 2, 2, 519, 520, 9, 5, 2, 2, 520, 113, 3, 2, 2, 2, 521, 522, 5, 116, 59, 2, 522, 523, 7, 32, 2, 2, 523, 524, 5, 116, 59, 2, 524, 115, 3, 2, 2, 2, 525, 529, 5, 82, 42, 2, 526, 529, 5, 68, 35, 2, 527, 529, 5, 66, 34, 2, 528, 525, 3, 2, 2, 2, 528, 526, 3, 2, 2, 2, 528, 527, 3, 2, 2, 2, 529, 117, 3, 2, 2, 2, 530, 531, 8, 60, 1, 2, 531, 532, 5, 132, 67, 2, 532, 533, 5, 118, 60, 7, 533, 536, 3, 2, 2, 2, 534, 536, 5, 120, 61, 2, 535, 530, 3, 2, 2, 2, 535, 534, 3, 2, 2, 2, 536, 554, 3, 2, 2, 2, 537, 538, 12, 6, 2, 2, 538, 539, 5, 136, 69, 2, 539, 540, 5, 118, 60, 7, 540, 553, 3, 2, 2, 2, 541, 542, 12, 5, 2, 2, 542, 543, 5, 138, 70, 2, 543, 544, 5, 118, 60, 6, 544, 553, 3, 2, 2, 2, 545, 546, 12, 4, 2, 2, 546, 548, 7, 34, 2, 2, 547, 549, 5, 118, 60, 2, 548, 547, 3, 2, 2, 2, 548, 549, 3, 2, 2, 2, 549, 550, 3, 2, 2, 2, 550, 551, 7, 7, 2, 2, 551, 553, 5, 118, 60, 5, 552, 537, 3, 2, 2, 2, 552, 541, 3, 2, 2, 2, 552, 545, 3, 2, 2, 2, 553, 556, 3, 2, 2, 2, 554, 552, 3, 2, 2, 2, 554, 555, 3, 2, 2, 2, 555, 119, 3, 2, 2, 2, 556, 554, 3, 2, 2, 2, 557, 558, 8, 61, 1, 2, 558, 559, 5, 122, 62, 2, 559, 578, 3, 2, 2, 2, 560, 561, 12, 7, 2, 2, 561, 562, 5, 126, 64, 2, 562, 563, 5, 120, 61, 8, 563, 577, 3, 2, 2, 2, 564, 565, 12, 6, 2, 2, 565, 566, 5, 124, 63, 2, 566, 567, 5, 120, 61, 7, 567, 577, 3, 2, 2, 2, 568, 569, 12, 5, 2, 2, 569, 570, 5, 128, 65, 2, 570, 571, 5, 120, 61, 6, 571, 577, 3, 2, 2, 2, 572, 573, 12, 4, 2, 2, 573, 574, 5, 130, 66, 2, 574, 575, 5, 120, 61, 5, 575, 577, 3, 2, 2, 2, 576, 560, 3, 2, 2, 2, 576, 564, 3, 2, 2, 2, 576, 568, 3, 2, 2, 2, 576, 572, 3, 2, 2, 2, 577, 580, 3, 2, 2, 2, 578, 576, 3, 2, 2, 2, 578, 579, 3, 2, 2, 2, 579, 121, 3, 2, 2, 2, 580, 578, 3, 2, 2, 2, 581, 582, 8, 62, 1, 2, 582, 599, 5, 100, 51, 2, 583, 599, 5, 114, 58, 2, 584, 599, 5, 70, 36, 2, 585, 599, 5, 68, 35, 2, 586, 599, 5, 96, 49, 2, 587, 599, 5, 66, 34, 2, 588, 592, 7, 13, 2, 2, 589, 593, 5, 20, 11, 2, 590, 593, 5, 56, 29, 2, 591, 593, 5, 118, 60, 2, 592, 589, 3, 2, 2, 2, 592, 590, 3, 2, 2, 2, 592, 591, 3, 2, 2, 2, 593, 594, 3, 2, 2, 2, 594, 596, 7, 14, 2, 2, 595, 597, 5, 144, 73, 2, 596, 595, 3, 2, 2, 2, 596, 597, 3, 2, 2, 2, 597, 599, 3, 2, 2, 2, 598, 581, 3, 2, 2, 2, 598, 583, 3, 2, 2, 2, 598, 584, 3, 2, 2, 2, 598, 585, 3, 2, 2, 2, 598, 586, 3, 2, 2, 2, 598, 587, 3, 2, 2, 2, 598, 588, 3, 2, 2, 2, 599, 614, 3, 2, 2, 2, 600, 601, 12, 12, 2, 2, 601, 602, 5, 140, 71, 2, 602, 603, 5, 122, 62, 13, 603, 613, 3, 2, 2, 2, 604, 605, 12, 11, 2, 2, 605, 606, 5, 142, 72, 2, 606, 607, 5, 122, 62, 12, 607, 613, 3, 2, 2, 2, 608, 609, 12, 10, 2, 2, 609, 610, 5, 134, 68, 2, 610, 611, 5, 122, 62, 11, 611, 613, 3, 2, 2, 2, 612, 600, 3, 2, 2, 2, 612, 604, 3, 2, 2, 2, 612, 608, 3, 2, 2, 2, 613, 616, 3, 2, 2, 2, 614, 612, 3, 2, 2, 2, 614, 615, 3, 2, 2, 2, 615, 123, 3, 2, 2, 2, 616, 614, 3, 2, 2, 2, 617, 620, 9, 6, 2, 2, 618, 621, 5, 128, 65, 2, 619, 621, 5, 126, 64, 2, 620, 618, 3, 2, 2, 2, 620, 619, 3, 2, 2, 2, 621, 125, 3, 2, 2, 2, 622, 623, 9, 7, 2, 2, 623, 127, 3, 2, 2, 2, 624, 626, 7, 63, 2, 2, 625, 624, 3, 2, 2, 2, 625, 626, 3, 2, 2, 2, 626, 627, 3, 2, 2, 2, 627, 628, 7, 64, 2, 2, 628, 129, 3, 2, 2, 2, 629, 631, 7, 63, 2, 2, 630, 629, 3, 2, 2, 2, 630, 631, 3, 2, 2, 2, 631, 632, 3, 2, 2, 2, 632, 633, 7, 62, 2, 2, 633, 131, 3, 2, 2, 2, 634, 635, 9, 8, 2, 2, 635, 133, 3, 2, 2, 2, 636, 637, 9, 9, 2, 2, 637, 135, 3, 2, 2, 2, 638, 639, 7, 30, 2, 2, 639, 137, 3, 2, 2, 2, 640, 641, 7, 31, 2, 2, 641, 139, 3, 2, 2, 2, 642, 643, 9, 10, 2, 2, 643, 141, 3, 2, 2, 2, 644, 645, 9, 11, 2, 2, 645, 143, 3, 2, 2, 2, 646, 647, 7, 34, 2, 2, 647, 145, 3, 2, 2, 2, 68, 149, 164, 172, 176, 187, 191, 199, 206, 214, 221, 226, 235, 241, 245, 249, 253, 262, 269, 277, 282, 302, 313, 322, 335, 337, 350, 353, 356, 363, 368, 379, 385, 389, 398, 402, 412, 416, 418, 441, 452, 460, 467, 474, 478, 484, 491, 498, 502, 505, 512, 515, 528, 535, 548, 552, 554, 576, 578, 592, 596, 598, 612, 614, 620, 625, 630] \ No newline at end of file +[4, 1, 72, 647, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 1, 0, 5, 0, 146, 8, 0, 10, 0, 12, 0, 149, 9, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 4, 5, 4, 161, 8, 4, 10, 4, 12, 4, 164, 9, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 3, 5, 171, 8, 5, 1, 6, 1, 6, 3, 6, 175, 8, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 186, 8, 7, 1, 8, 1, 8, 3, 8, 190, 8, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 198, 8, 9, 1, 9, 1, 9, 1, 9, 5, 9, 203, 8, 9, 10, 9, 12, 9, 206, 9, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 213, 8, 9, 1, 9, 1, 9, 1, 9, 5, 9, 218, 8, 9, 10, 9, 12, 9, 221, 9, 9, 1, 9, 1, 9, 3, 9, 225, 8, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 3, 10, 234, 8, 10, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 240, 8, 11, 1, 12, 1, 12, 3, 12, 244, 8, 12, 1, 13, 1, 13, 3, 13, 248, 8, 13, 1, 14, 1, 14, 3, 14, 252, 8, 14, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 3, 16, 261, 8, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 3, 17, 268, 8, 17, 1, 18, 1, 18, 1, 18, 1, 18, 5, 18, 274, 8, 18, 10, 18, 12, 18, 277, 9, 18, 1, 19, 1, 19, 3, 19, 281, 8, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 3, 20, 301, 8, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 5, 22, 310, 8, 22, 10, 22, 12, 22, 313, 9, 22, 1, 23, 1, 23, 1, 23, 1, 23, 5, 23, 319, 8, 23, 10, 23, 12, 23, 322, 9, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 3, 25, 334, 8, 25, 3, 25, 336, 8, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 3, 27, 349, 8, 27, 1, 27, 3, 27, 352, 8, 27, 1, 27, 3, 27, 355, 8, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 3, 28, 362, 8, 28, 1, 29, 1, 29, 1, 29, 3, 29, 367, 8, 29, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 3, 31, 378, 8, 31, 1, 32, 1, 32, 1, 32, 1, 32, 3, 32, 384, 8, 32, 1, 33, 1, 33, 3, 33, 388, 8, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 3, 34, 397, 8, 34, 1, 35, 1, 35, 3, 35, 401, 8, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 5, 36, 409, 8, 36, 10, 36, 12, 36, 412, 9, 36, 1, 36, 3, 36, 415, 8, 36, 3, 36, 417, 8, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 38, 1, 38, 1, 39, 1, 39, 1, 40, 1, 40, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 3, 42, 440, 8, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 3, 44, 451, 8, 44, 1, 45, 1, 45, 1, 45, 1, 46, 5, 46, 457, 8, 46, 10, 46, 12, 46, 460, 9, 46, 1, 47, 1, 47, 4, 47, 464, 8, 47, 11, 47, 12, 47, 465, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 3, 48, 473, 8, 48, 1, 49, 1, 49, 3, 49, 477, 8, 49, 1, 50, 1, 50, 1, 50, 1, 50, 3, 50, 483, 8, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 3, 51, 490, 8, 51, 1, 52, 1, 52, 1, 52, 5, 52, 495, 8, 52, 10, 52, 12, 52, 498, 9, 52, 1, 52, 3, 52, 501, 8, 52, 1, 53, 3, 53, 504, 8, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 3, 53, 511, 8, 53, 1, 53, 3, 53, 514, 8, 53, 1, 54, 1, 54, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 3, 57, 527, 8, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 3, 58, 534, 8, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 3, 58, 547, 8, 58, 1, 58, 1, 58, 5, 58, 551, 8, 58, 10, 58, 12, 58, 554, 9, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 5, 59, 575, 8, 59, 10, 59, 12, 59, 578, 9, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 3, 60, 591, 8, 60, 1, 60, 1, 60, 3, 60, 595, 8, 60, 3, 60, 597, 8, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 5, 60, 611, 8, 60, 10, 60, 12, 60, 614, 9, 60, 1, 61, 1, 61, 1, 61, 3, 61, 619, 8, 61, 1, 62, 1, 62, 1, 63, 3, 63, 624, 8, 63, 1, 63, 1, 63, 1, 64, 3, 64, 629, 8, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 66, 1, 66, 1, 67, 1, 67, 1, 68, 1, 68, 1, 69, 1, 69, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 0, 3, 116, 118, 120, 72, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 0, 10, 1, 0, 66, 67, 1, 0, 48, 49, 4, 0, 28, 29, 38, 44, 46, 47, 52, 59, 4, 0, 35, 37, 45, 45, 48, 51, 60, 64, 2, 0, 48, 48, 56, 57, 1, 0, 15, 20, 2, 0, 24, 25, 61, 61, 1, 0, 33, 34, 1, 0, 21, 23, 1, 0, 24, 25, 686, 0, 147, 1, 0, 0, 0, 2, 152, 1, 0, 0, 0, 4, 154, 1, 0, 0, 0, 6, 156, 1, 0, 0, 0, 8, 162, 1, 0, 0, 0, 10, 170, 1, 0, 0, 0, 12, 174, 1, 0, 0, 0, 14, 185, 1, 0, 0, 0, 16, 187, 1, 0, 0, 0, 18, 224, 1, 0, 0, 0, 20, 233, 1, 0, 0, 0, 22, 239, 1, 0, 0, 0, 24, 243, 1, 0, 0, 0, 26, 247, 1, 0, 0, 0, 28, 251, 1, 0, 0, 0, 30, 253, 1, 0, 0, 0, 32, 256, 1, 0, 0, 0, 34, 267, 1, 0, 0, 0, 36, 269, 1, 0, 0, 0, 38, 278, 1, 0, 0, 0, 40, 300, 1, 0, 0, 0, 42, 302, 1, 0, 0, 0, 44, 306, 1, 0, 0, 0, 46, 314, 1, 0, 0, 0, 48, 323, 1, 0, 0, 0, 50, 335, 1, 0, 0, 0, 52, 337, 1, 0, 0, 0, 54, 342, 1, 0, 0, 0, 56, 361, 1, 0, 0, 0, 58, 366, 1, 0, 0, 0, 60, 368, 1, 0, 0, 0, 62, 371, 1, 0, 0, 0, 64, 383, 1, 0, 0, 0, 66, 387, 1, 0, 0, 0, 68, 396, 1, 0, 0, 0, 70, 398, 1, 0, 0, 0, 72, 404, 1, 0, 0, 0, 74, 420, 1, 0, 0, 0, 76, 422, 1, 0, 0, 0, 78, 424, 1, 0, 0, 0, 80, 426, 1, 0, 0, 0, 82, 428, 1, 0, 0, 0, 84, 439, 1, 0, 0, 0, 86, 441, 1, 0, 0, 0, 88, 450, 1, 0, 0, 0, 90, 452, 1, 0, 0, 0, 92, 458, 1, 0, 0, 0, 94, 461, 1, 0, 0, 0, 96, 472, 1, 0, 0, 0, 98, 474, 1, 0, 0, 0, 100, 478, 1, 0, 0, 0, 102, 489, 1, 0, 0, 0, 104, 491, 1, 0, 0, 0, 106, 513, 1, 0, 0, 0, 108, 515, 1, 0, 0, 0, 110, 517, 1, 0, 0, 0, 112, 519, 1, 0, 0, 0, 114, 526, 1, 0, 0, 0, 116, 533, 1, 0, 0, 0, 118, 555, 1, 0, 0, 0, 120, 596, 1, 0, 0, 0, 122, 615, 1, 0, 0, 0, 124, 620, 1, 0, 0, 0, 126, 623, 1, 0, 0, 0, 128, 628, 1, 0, 0, 0, 130, 632, 1, 0, 0, 0, 132, 634, 1, 0, 0, 0, 134, 636, 1, 0, 0, 0, 136, 638, 1, 0, 0, 0, 138, 640, 1, 0, 0, 0, 140, 642, 1, 0, 0, 0, 142, 644, 1, 0, 0, 0, 144, 146, 3, 2, 1, 0, 145, 144, 1, 0, 0, 0, 146, 149, 1, 0, 0, 0, 147, 145, 1, 0, 0, 0, 147, 148, 1, 0, 0, 0, 148, 150, 1, 0, 0, 0, 149, 147, 1, 0, 0, 0, 150, 151, 3, 8, 4, 0, 151, 1, 1, 0, 0, 0, 152, 153, 3, 4, 2, 0, 153, 3, 1, 0, 0, 0, 154, 155, 3, 6, 3, 0, 155, 5, 1, 0, 0, 0, 156, 157, 5, 51, 0, 0, 157, 158, 3, 90, 45, 0, 158, 7, 1, 0, 0, 0, 159, 161, 3, 10, 5, 0, 160, 159, 1, 0, 0, 0, 161, 164, 1, 0, 0, 0, 162, 160, 1, 0, 0, 0, 162, 163, 1, 0, 0, 0, 163, 165, 1, 0, 0, 0, 164, 162, 1, 0, 0, 0, 165, 166, 3, 12, 6, 0, 166, 9, 1, 0, 0, 0, 167, 171, 3, 14, 7, 0, 168, 171, 3, 98, 49, 0, 169, 171, 3, 54, 27, 0, 170, 167, 1, 0, 0, 0, 170, 168, 1, 0, 0, 0, 170, 169, 1, 0, 0, 0, 171, 11, 1, 0, 0, 0, 172, 175, 3, 16, 8, 0, 173, 175, 3, 18, 9, 0, 174, 172, 1, 0, 0, 0, 174, 173, 1, 0, 0, 0, 175, 13, 1, 0, 0, 0, 176, 177, 5, 45, 0, 0, 177, 178, 7, 0, 0, 0, 178, 179, 5, 31, 0, 0, 179, 186, 3, 116, 58, 0, 180, 181, 5, 45, 0, 0, 181, 182, 3, 108, 54, 0, 182, 183, 5, 31, 0, 0, 183, 184, 3, 116, 58, 0, 184, 186, 1, 0, 0, 0, 185, 176, 1, 0, 0, 0, 185, 180, 1, 0, 0, 0, 186, 15, 1, 0, 0, 0, 187, 189, 5, 36, 0, 0, 188, 190, 5, 40, 0, 0, 189, 188, 1, 0, 0, 0, 189, 190, 1, 0, 0, 0, 190, 191, 1, 0, 0, 0, 191, 192, 3, 116, 58, 0, 192, 17, 1, 0, 0, 0, 193, 194, 5, 35, 0, 0, 194, 197, 7, 0, 0, 0, 195, 196, 5, 8, 0, 0, 196, 198, 5, 66, 0, 0, 197, 195, 1, 0, 0, 0, 197, 198, 1, 0, 0, 0, 198, 199, 1, 0, 0, 0, 199, 200, 5, 62, 0, 0, 200, 204, 3, 20, 10, 0, 201, 203, 3, 26, 13, 0, 202, 201, 1, 0, 0, 0, 203, 206, 1, 0, 0, 0, 204, 202, 1, 0, 0, 0, 204, 205, 1, 0, 0, 0, 205, 207, 1, 0, 0, 0, 206, 204, 1, 0, 0, 0, 207, 208, 3, 28, 14, 0, 208, 225, 1, 0, 0, 0, 209, 210, 5, 35, 0, 0, 210, 212, 7, 0, 0, 0, 211, 213, 5, 63, 0, 0, 212, 211, 1, 0, 0, 0, 212, 213, 1, 0, 0, 0, 213, 214, 1, 0, 0, 0, 214, 215, 5, 64, 0, 0, 215, 219, 3, 116, 58, 0, 216, 218, 3, 26, 13, 0, 217, 216, 1, 0, 0, 0, 218, 221, 1, 0, 0, 0, 219, 217, 1, 0, 0, 0, 219, 220, 1, 0, 0, 0, 220, 222, 1, 0, 0, 0, 221, 219, 1, 0, 0, 0, 222, 223, 3, 28, 14, 0, 223, 225, 1, 0, 0, 0, 224, 193, 1, 0, 0, 0, 224, 209, 1, 0, 0, 0, 225, 19, 1, 0, 0, 0, 226, 234, 3, 98, 49, 0, 227, 234, 3, 70, 35, 0, 228, 234, 3, 72, 36, 0, 229, 234, 3, 66, 33, 0, 230, 234, 3, 94, 47, 0, 231, 234, 3, 112, 56, 0, 232, 234, 3, 64, 32, 0, 233, 226, 1, 0, 0, 0, 233, 227, 1, 0, 0, 0, 233, 228, 1, 0, 0, 0, 233, 229, 1, 0, 0, 0, 233, 230, 1, 0, 0, 0, 233, 231, 1, 0, 0, 0, 233, 232, 1, 0, 0, 0, 234, 21, 1, 0, 0, 0, 235, 240, 3, 32, 16, 0, 236, 240, 3, 36, 18, 0, 237, 240, 3, 30, 15, 0, 238, 240, 3, 40, 20, 0, 239, 235, 1, 0, 0, 0, 239, 236, 1, 0, 0, 0, 239, 237, 1, 0, 0, 0, 239, 238, 1, 0, 0, 0, 240, 23, 1, 0, 0, 0, 241, 244, 3, 14, 7, 0, 242, 244, 3, 98, 49, 0, 243, 241, 1, 0, 0, 0, 243, 242, 1, 0, 0, 0, 244, 25, 1, 0, 0, 0, 245, 248, 3, 24, 12, 0, 246, 248, 3, 22, 11, 0, 247, 245, 1, 0, 0, 0, 247, 246, 1, 0, 0, 0, 248, 27, 1, 0, 0, 0, 249, 252, 3, 16, 8, 0, 250, 252, 3, 18, 9, 0, 251, 249, 1, 0, 0, 0, 251, 250, 1, 0, 0, 0, 252, 29, 1, 0, 0, 0, 253, 254, 5, 41, 0, 0, 254, 255, 3, 116, 58, 0, 255, 31, 1, 0, 0, 0, 256, 257, 5, 44, 0, 0, 257, 260, 3, 34, 17, 0, 258, 259, 5, 8, 0, 0, 259, 261, 3, 34, 17, 0, 260, 258, 1, 0, 0, 0, 260, 261, 1, 0, 0, 0, 261, 33, 1, 0, 0, 0, 262, 268, 3, 80, 40, 0, 263, 268, 3, 64, 32, 0, 264, 268, 3, 66, 33, 0, 265, 268, 3, 98, 49, 0, 266, 268, 3, 94, 47, 0, 267, 262, 1, 0, 0, 0, 267, 263, 1, 0, 0, 0, 267, 264, 1, 0, 0, 0, 267, 265, 1, 0, 0, 0, 267, 266, 1, 0, 0, 0, 268, 35, 1, 0, 0, 0, 269, 270, 5, 43, 0, 0, 270, 275, 3, 38, 19, 0, 271, 272, 5, 8, 0, 0, 272, 274, 3, 38, 19, 0, 273, 271, 1, 0, 0, 0, 274, 277, 1, 0, 0, 0, 275, 273, 1, 0, 0, 0, 275, 276, 1, 0, 0, 0, 276, 37, 1, 0, 0, 0, 277, 275, 1, 0, 0, 0, 278, 280, 3, 116, 58, 0, 279, 281, 5, 47, 0, 0, 280, 279, 1, 0, 0, 0, 280, 281, 1, 0, 0, 0, 281, 39, 1, 0, 0, 0, 282, 283, 5, 46, 0, 0, 283, 301, 3, 52, 26, 0, 284, 285, 5, 46, 0, 0, 285, 301, 3, 46, 23, 0, 286, 287, 5, 46, 0, 0, 287, 288, 3, 44, 22, 0, 288, 289, 3, 46, 23, 0, 289, 301, 1, 0, 0, 0, 290, 291, 5, 46, 0, 0, 291, 292, 3, 44, 22, 0, 292, 293, 3, 50, 25, 0, 293, 301, 1, 0, 0, 0, 294, 295, 5, 46, 0, 0, 295, 296, 3, 44, 22, 0, 296, 297, 3, 52, 26, 0, 297, 301, 1, 0, 0, 0, 298, 299, 5, 46, 0, 0, 299, 301, 3, 44, 22, 0, 300, 282, 1, 0, 0, 0, 300, 284, 1, 0, 0, 0, 300, 286, 1, 0, 0, 0, 300, 290, 1, 0, 0, 0, 300, 294, 1, 0, 0, 0, 300, 298, 1, 0, 0, 0, 301, 41, 1, 0, 0, 0, 302, 303, 5, 66, 0, 0, 303, 304, 5, 31, 0, 0, 304, 305, 3, 116, 58, 0, 305, 43, 1, 0, 0, 0, 306, 311, 3, 42, 21, 0, 307, 308, 5, 8, 0, 0, 308, 310, 3, 42, 21, 0, 309, 307, 1, 0, 0, 0, 310, 313, 1, 0, 0, 0, 311, 309, 1, 0, 0, 0, 311, 312, 1, 0, 0, 0, 312, 45, 1, 0, 0, 0, 313, 311, 1, 0, 0, 0, 314, 315, 5, 58, 0, 0, 315, 320, 3, 48, 24, 0, 316, 317, 5, 8, 0, 0, 317, 319, 3, 48, 24, 0, 318, 316, 1, 0, 0, 0, 319, 322, 1, 0, 0, 0, 320, 318, 1, 0, 0, 0, 320, 321, 1, 0, 0, 0, 321, 47, 1, 0, 0, 0, 322, 320, 1, 0, 0, 0, 323, 324, 5, 66, 0, 0, 324, 325, 5, 31, 0, 0, 325, 326, 3, 98, 49, 0, 326, 49, 1, 0, 0, 0, 327, 328, 5, 52, 0, 0, 328, 336, 3, 42, 21, 0, 329, 330, 5, 52, 0, 0, 330, 333, 5, 66, 0, 0, 331, 332, 5, 53, 0, 0, 332, 334, 5, 66, 0, 0, 333, 331, 1, 0, 0, 0, 333, 334, 1, 0, 0, 0, 334, 336, 1, 0, 0, 0, 335, 327, 1, 0, 0, 0, 335, 329, 1, 0, 0, 0, 336, 51, 1, 0, 0, 0, 337, 338, 5, 54, 0, 0, 338, 339, 5, 55, 0, 0, 339, 340, 5, 52, 0, 0, 340, 341, 5, 66, 0, 0, 341, 53, 1, 0, 0, 0, 342, 343, 5, 37, 0, 0, 343, 344, 5, 59, 0, 0, 344, 345, 3, 56, 28, 0, 345, 346, 5, 62, 0, 0, 346, 348, 3, 58, 29, 0, 347, 349, 3, 60, 30, 0, 348, 347, 1, 0, 0, 0, 348, 349, 1, 0, 0, 0, 349, 351, 1, 0, 0, 0, 350, 352, 3, 30, 15, 0, 351, 350, 1, 0, 0, 0, 351, 352, 1, 0, 0, 0, 352, 354, 1, 0, 0, 0, 353, 355, 3, 62, 31, 0, 354, 353, 1, 0, 0, 0, 354, 355, 1, 0, 0, 0, 355, 55, 1, 0, 0, 0, 356, 362, 3, 76, 38, 0, 357, 362, 3, 66, 33, 0, 358, 362, 3, 64, 32, 0, 359, 362, 3, 98, 49, 0, 360, 362, 3, 94, 47, 0, 361, 356, 1, 0, 0, 0, 361, 357, 1, 0, 0, 0, 361, 358, 1, 0, 0, 0, 361, 359, 1, 0, 0, 0, 361, 360, 1, 0, 0, 0, 362, 57, 1, 0, 0, 0, 363, 367, 3, 98, 49, 0, 364, 367, 3, 66, 33, 0, 365, 367, 3, 94, 47, 0, 366, 363, 1, 0, 0, 0, 366, 364, 1, 0, 0, 0, 366, 365, 1, 0, 0, 0, 367, 59, 1, 0, 0, 0, 368, 369, 5, 38, 0, 0, 369, 370, 3, 72, 36, 0, 370, 61, 1, 0, 0, 0, 371, 377, 5, 39, 0, 0, 372, 378, 3, 80, 40, 0, 373, 378, 3, 66, 33, 0, 374, 378, 3, 64, 32, 0, 375, 378, 3, 94, 47, 0, 376, 378, 3, 100, 50, 0, 377, 372, 1, 0, 0, 0, 377, 373, 1, 0, 0, 0, 377, 374, 1, 0, 0, 0, 377, 375, 1, 0, 0, 0, 377, 376, 1, 0, 0, 0, 378, 63, 1, 0, 0, 0, 379, 380, 5, 65, 0, 0, 380, 384, 5, 66, 0, 0, 381, 382, 5, 65, 0, 0, 382, 384, 3, 108, 54, 0, 383, 379, 1, 0, 0, 0, 383, 381, 1, 0, 0, 0, 384, 65, 1, 0, 0, 0, 385, 388, 5, 66, 0, 0, 386, 388, 3, 108, 54, 0, 387, 385, 1, 0, 0, 0, 387, 386, 1, 0, 0, 0, 388, 67, 1, 0, 0, 0, 389, 397, 3, 70, 35, 0, 390, 397, 3, 72, 36, 0, 391, 397, 3, 74, 37, 0, 392, 397, 3, 76, 38, 0, 393, 397, 3, 78, 39, 0, 394, 397, 3, 80, 40, 0, 395, 397, 3, 82, 41, 0, 396, 389, 1, 0, 0, 0, 396, 390, 1, 0, 0, 0, 396, 391, 1, 0, 0, 0, 396, 392, 1, 0, 0, 0, 396, 393, 1, 0, 0, 0, 396, 394, 1, 0, 0, 0, 396, 395, 1, 0, 0, 0, 397, 69, 1, 0, 0, 0, 398, 400, 5, 9, 0, 0, 399, 401, 3, 104, 52, 0, 400, 399, 1, 0, 0, 0, 400, 401, 1, 0, 0, 0, 401, 402, 1, 0, 0, 0, 402, 403, 5, 10, 0, 0, 403, 71, 1, 0, 0, 0, 404, 416, 5, 13, 0, 0, 405, 410, 3, 84, 42, 0, 406, 407, 5, 8, 0, 0, 407, 409, 3, 84, 42, 0, 408, 406, 1, 0, 0, 0, 409, 412, 1, 0, 0, 0, 410, 408, 1, 0, 0, 0, 410, 411, 1, 0, 0, 0, 411, 414, 1, 0, 0, 0, 412, 410, 1, 0, 0, 0, 413, 415, 5, 8, 0, 0, 414, 413, 1, 0, 0, 0, 414, 415, 1, 0, 0, 0, 415, 417, 1, 0, 0, 0, 416, 405, 1, 0, 0, 0, 416, 417, 1, 0, 0, 0, 417, 418, 1, 0, 0, 0, 418, 419, 5, 14, 0, 0, 419, 73, 1, 0, 0, 0, 420, 421, 5, 50, 0, 0, 421, 75, 1, 0, 0, 0, 422, 423, 5, 68, 0, 0, 423, 77, 1, 0, 0, 0, 424, 425, 5, 70, 0, 0, 425, 79, 1, 0, 0, 0, 426, 427, 5, 69, 0, 0, 427, 81, 1, 0, 0, 0, 428, 429, 7, 1, 0, 0, 429, 83, 1, 0, 0, 0, 430, 431, 3, 88, 44, 0, 431, 432, 5, 5, 0, 0, 432, 433, 3, 116, 58, 0, 433, 440, 1, 0, 0, 0, 434, 435, 3, 86, 43, 0, 435, 436, 5, 5, 0, 0, 436, 437, 3, 116, 58, 0, 437, 440, 1, 0, 0, 0, 438, 440, 3, 66, 33, 0, 439, 430, 1, 0, 0, 0, 439, 434, 1, 0, 0, 0, 439, 438, 1, 0, 0, 0, 440, 85, 1, 0, 0, 0, 441, 442, 5, 9, 0, 0, 442, 443, 3, 116, 58, 0, 443, 444, 5, 10, 0, 0, 444, 87, 1, 0, 0, 0, 445, 451, 5, 66, 0, 0, 446, 451, 3, 76, 38, 0, 447, 451, 3, 64, 32, 0, 448, 451, 3, 108, 54, 0, 449, 451, 3, 110, 55, 0, 450, 445, 1, 0, 0, 0, 450, 446, 1, 0, 0, 0, 450, 447, 1, 0, 0, 0, 450, 448, 1, 0, 0, 0, 450, 449, 1, 0, 0, 0, 451, 89, 1, 0, 0, 0, 452, 453, 3, 92, 46, 0, 453, 454, 5, 66, 0, 0, 454, 91, 1, 0, 0, 0, 455, 457, 5, 71, 0, 0, 456, 455, 1, 0, 0, 0, 457, 460, 1, 0, 0, 0, 458, 456, 1, 0, 0, 0, 458, 459, 1, 0, 0, 0, 459, 93, 1, 0, 0, 0, 460, 458, 1, 0, 0, 0, 461, 463, 3, 96, 48, 0, 462, 464, 3, 106, 53, 0, 463, 462, 1, 0, 0, 0, 464, 465, 1, 0, 0, 0, 465, 463, 1, 0, 0, 0, 465, 466, 1, 0, 0, 0, 466, 95, 1, 0, 0, 0, 467, 473, 3, 66, 33, 0, 468, 473, 3, 64, 32, 0, 469, 473, 3, 70, 35, 0, 470, 473, 3, 72, 36, 0, 471, 473, 3, 100, 50, 0, 472, 467, 1, 0, 0, 0, 472, 468, 1, 0, 0, 0, 472, 469, 1, 0, 0, 0, 472, 470, 1, 0, 0, 0, 472, 471, 1, 0, 0, 0, 473, 97, 1, 0, 0, 0, 474, 476, 3, 100, 50, 0, 475, 477, 3, 142, 71, 0, 476, 475, 1, 0, 0, 0, 476, 477, 1, 0, 0, 0, 477, 99, 1, 0, 0, 0, 478, 479, 3, 92, 46, 0, 479, 480, 3, 102, 51, 0, 480, 482, 5, 11, 0, 0, 481, 483, 3, 104, 52, 0, 482, 481, 1, 0, 0, 0, 482, 483, 1, 0, 0, 0, 483, 484, 1, 0, 0, 0, 484, 485, 5, 12, 0, 0, 485, 101, 1, 0, 0, 0, 486, 490, 5, 66, 0, 0, 487, 490, 3, 108, 54, 0, 488, 490, 3, 110, 55, 0, 489, 486, 1, 0, 0, 0, 489, 487, 1, 0, 0, 0, 489, 488, 1, 0, 0, 0, 490, 103, 1, 0, 0, 0, 491, 496, 3, 116, 58, 0, 492, 493, 5, 8, 0, 0, 493, 495, 3, 116, 58, 0, 494, 492, 1, 0, 0, 0, 495, 498, 1, 0, 0, 0, 496, 494, 1, 0, 0, 0, 496, 497, 1, 0, 0, 0, 497, 500, 1, 0, 0, 0, 498, 496, 1, 0, 0, 0, 499, 501, 5, 8, 0, 0, 500, 499, 1, 0, 0, 0, 500, 501, 1, 0, 0, 0, 501, 105, 1, 0, 0, 0, 502, 504, 3, 142, 71, 0, 503, 502, 1, 0, 0, 0, 503, 504, 1, 0, 0, 0, 504, 505, 1, 0, 0, 0, 505, 506, 5, 7, 0, 0, 506, 514, 3, 88, 44, 0, 507, 508, 3, 142, 71, 0, 508, 509, 5, 7, 0, 0, 509, 511, 1, 0, 0, 0, 510, 507, 1, 0, 0, 0, 510, 511, 1, 0, 0, 0, 511, 512, 1, 0, 0, 0, 512, 514, 3, 86, 43, 0, 513, 503, 1, 0, 0, 0, 513, 510, 1, 0, 0, 0, 514, 107, 1, 0, 0, 0, 515, 516, 7, 2, 0, 0, 516, 109, 1, 0, 0, 0, 517, 518, 7, 3, 0, 0, 518, 111, 1, 0, 0, 0, 519, 520, 3, 114, 57, 0, 520, 521, 5, 30, 0, 0, 521, 522, 3, 114, 57, 0, 522, 113, 1, 0, 0, 0, 523, 527, 3, 80, 40, 0, 524, 527, 3, 66, 33, 0, 525, 527, 3, 64, 32, 0, 526, 523, 1, 0, 0, 0, 526, 524, 1, 0, 0, 0, 526, 525, 1, 0, 0, 0, 527, 115, 1, 0, 0, 0, 528, 529, 6, 58, -1, 0, 529, 530, 3, 130, 65, 0, 530, 531, 3, 116, 58, 5, 531, 534, 1, 0, 0, 0, 532, 534, 3, 118, 59, 0, 533, 528, 1, 0, 0, 0, 533, 532, 1, 0, 0, 0, 534, 552, 1, 0, 0, 0, 535, 536, 10, 4, 0, 0, 536, 537, 3, 134, 67, 0, 537, 538, 3, 116, 58, 5, 538, 551, 1, 0, 0, 0, 539, 540, 10, 3, 0, 0, 540, 541, 3, 136, 68, 0, 541, 542, 3, 116, 58, 4, 542, 551, 1, 0, 0, 0, 543, 544, 10, 2, 0, 0, 544, 546, 5, 32, 0, 0, 545, 547, 3, 116, 58, 0, 546, 545, 1, 0, 0, 0, 546, 547, 1, 0, 0, 0, 547, 548, 1, 0, 0, 0, 548, 549, 5, 5, 0, 0, 549, 551, 3, 116, 58, 3, 550, 535, 1, 0, 0, 0, 550, 539, 1, 0, 0, 0, 550, 543, 1, 0, 0, 0, 551, 554, 1, 0, 0, 0, 552, 550, 1, 0, 0, 0, 552, 553, 1, 0, 0, 0, 553, 117, 1, 0, 0, 0, 554, 552, 1, 0, 0, 0, 555, 556, 6, 59, -1, 0, 556, 557, 3, 120, 60, 0, 557, 576, 1, 0, 0, 0, 558, 559, 10, 5, 0, 0, 559, 560, 3, 124, 62, 0, 560, 561, 3, 118, 59, 6, 561, 575, 1, 0, 0, 0, 562, 563, 10, 4, 0, 0, 563, 564, 3, 122, 61, 0, 564, 565, 3, 118, 59, 5, 565, 575, 1, 0, 0, 0, 566, 567, 10, 3, 0, 0, 567, 568, 3, 126, 63, 0, 568, 569, 3, 118, 59, 4, 569, 575, 1, 0, 0, 0, 570, 571, 10, 2, 0, 0, 571, 572, 3, 128, 64, 0, 572, 573, 3, 118, 59, 3, 573, 575, 1, 0, 0, 0, 574, 558, 1, 0, 0, 0, 574, 562, 1, 0, 0, 0, 574, 566, 1, 0, 0, 0, 574, 570, 1, 0, 0, 0, 575, 578, 1, 0, 0, 0, 576, 574, 1, 0, 0, 0, 576, 577, 1, 0, 0, 0, 577, 119, 1, 0, 0, 0, 578, 576, 1, 0, 0, 0, 579, 580, 6, 60, -1, 0, 580, 597, 3, 98, 49, 0, 581, 597, 3, 112, 56, 0, 582, 597, 3, 68, 34, 0, 583, 597, 3, 66, 33, 0, 584, 597, 3, 94, 47, 0, 585, 597, 3, 64, 32, 0, 586, 590, 5, 11, 0, 0, 587, 591, 3, 18, 9, 0, 588, 591, 3, 54, 27, 0, 589, 591, 3, 116, 58, 0, 590, 587, 1, 0, 0, 0, 590, 588, 1, 0, 0, 0, 590, 589, 1, 0, 0, 0, 591, 592, 1, 0, 0, 0, 592, 594, 5, 12, 0, 0, 593, 595, 3, 142, 71, 0, 594, 593, 1, 0, 0, 0, 594, 595, 1, 0, 0, 0, 595, 597, 1, 0, 0, 0, 596, 579, 1, 0, 0, 0, 596, 581, 1, 0, 0, 0, 596, 582, 1, 0, 0, 0, 596, 583, 1, 0, 0, 0, 596, 584, 1, 0, 0, 0, 596, 585, 1, 0, 0, 0, 596, 586, 1, 0, 0, 0, 597, 612, 1, 0, 0, 0, 598, 599, 10, 10, 0, 0, 599, 600, 3, 138, 69, 0, 600, 601, 3, 120, 60, 11, 601, 611, 1, 0, 0, 0, 602, 603, 10, 9, 0, 0, 603, 604, 3, 140, 70, 0, 604, 605, 3, 120, 60, 10, 605, 611, 1, 0, 0, 0, 606, 607, 10, 8, 0, 0, 607, 608, 3, 132, 66, 0, 608, 609, 3, 120, 60, 9, 609, 611, 1, 0, 0, 0, 610, 598, 1, 0, 0, 0, 610, 602, 1, 0, 0, 0, 610, 606, 1, 0, 0, 0, 611, 614, 1, 0, 0, 0, 612, 610, 1, 0, 0, 0, 612, 613, 1, 0, 0, 0, 613, 121, 1, 0, 0, 0, 614, 612, 1, 0, 0, 0, 615, 618, 7, 4, 0, 0, 616, 619, 3, 126, 63, 0, 617, 619, 3, 124, 62, 0, 618, 616, 1, 0, 0, 0, 618, 617, 1, 0, 0, 0, 619, 123, 1, 0, 0, 0, 620, 621, 7, 5, 0, 0, 621, 125, 1, 0, 0, 0, 622, 624, 5, 61, 0, 0, 623, 622, 1, 0, 0, 0, 623, 624, 1, 0, 0, 0, 624, 625, 1, 0, 0, 0, 625, 626, 5, 62, 0, 0, 626, 127, 1, 0, 0, 0, 627, 629, 5, 61, 0, 0, 628, 627, 1, 0, 0, 0, 628, 629, 1, 0, 0, 0, 629, 630, 1, 0, 0, 0, 630, 631, 5, 60, 0, 0, 631, 129, 1, 0, 0, 0, 632, 633, 7, 6, 0, 0, 633, 131, 1, 0, 0, 0, 634, 635, 7, 7, 0, 0, 635, 133, 1, 0, 0, 0, 636, 637, 5, 28, 0, 0, 637, 135, 1, 0, 0, 0, 638, 639, 5, 29, 0, 0, 639, 137, 1, 0, 0, 0, 640, 641, 7, 8, 0, 0, 641, 139, 1, 0, 0, 0, 642, 643, 7, 9, 0, 0, 643, 141, 1, 0, 0, 0, 644, 645, 5, 32, 0, 0, 645, 143, 1, 0, 0, 0, 66, 147, 162, 170, 174, 185, 189, 197, 204, 212, 219, 224, 233, 239, 243, 247, 251, 260, 267, 275, 280, 300, 311, 320, 333, 335, 348, 351, 354, 361, 366, 377, 383, 387, 396, 400, 410, 414, 416, 439, 450, 458, 465, 472, 476, 482, 489, 496, 500, 503, 510, 513, 526, 533, 546, 550, 552, 574, 576, 590, 594, 596, 610, 612, 618, 623, 628] \ No newline at end of file diff --git a/pkg/parser/fql/fql_lexer.go b/pkg/parser/fql/fql_lexer.go index e96159f6..cc3c8731 100644 --- a/pkg/parser/fql/fql_lexer.go +++ b/pkg/parser/fql/fql_lexer.go @@ -1,346 +1,20 @@ -// Code generated from antlr/FqlLexer.g4 by ANTLR 4.9.3. DO NOT EDIT. +// Code generated from java-escape by ANTLR 4.11.1. DO NOT EDIT. package fql import ( "fmt" + "sync" "unicode" - "github.com/antlr/antlr4/runtime/Go/antlr" + "github.com/antlr/antlr4/runtime/Go/antlr/v4" ) // Suppress unused import error var _ = fmt.Printf +var _ = sync.Once{} var _ = unicode.IsLetter -var serializedLexerAtn = []uint16{ - 3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 2, 74, 623, - 8, 1, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, - 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, - 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, - 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, - 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, - 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, - 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, - 39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, - 9, 44, 4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 4, 48, 9, 48, 4, 49, 9, - 49, 4, 50, 9, 50, 4, 51, 9, 51, 4, 52, 9, 52, 4, 53, 9, 53, 4, 54, 9, 54, - 4, 55, 9, 55, 4, 56, 9, 56, 4, 57, 9, 57, 4, 58, 9, 58, 4, 59, 9, 59, 4, - 60, 9, 60, 4, 61, 9, 61, 4, 62, 9, 62, 4, 63, 9, 63, 4, 64, 9, 64, 4, 65, - 9, 65, 4, 66, 9, 66, 4, 67, 9, 67, 4, 68, 9, 68, 4, 69, 9, 69, 4, 70, 9, - 70, 4, 71, 9, 71, 4, 72, 9, 72, 4, 73, 9, 73, 4, 74, 9, 74, 4, 75, 9, 75, - 4, 76, 9, 76, 4, 77, 9, 77, 4, 78, 9, 78, 4, 79, 9, 79, 4, 80, 9, 80, 4, - 81, 9, 81, 4, 82, 9, 82, 4, 83, 9, 83, 4, 84, 9, 84, 4, 85, 9, 85, 3, 2, - 3, 2, 3, 2, 3, 2, 7, 2, 176, 10, 2, 12, 2, 14, 2, 179, 11, 2, 3, 2, 3, - 2, 3, 2, 3, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 7, 3, 190, 10, 3, 12, 3, 14, - 3, 193, 11, 3, 3, 3, 3, 3, 3, 4, 6, 4, 198, 10, 4, 13, 4, 14, 4, 199, 3, - 4, 3, 4, 3, 5, 3, 5, 3, 5, 3, 5, 3, 6, 3, 6, 3, 7, 3, 7, 3, 8, 3, 8, 3, - 9, 3, 9, 3, 10, 3, 10, 3, 11, 3, 11, 3, 12, 3, 12, 3, 13, 3, 13, 3, 14, - 3, 14, 3, 15, 3, 15, 3, 16, 3, 16, 3, 17, 3, 17, 3, 18, 3, 18, 3, 18, 3, - 19, 3, 19, 3, 19, 3, 20, 3, 20, 3, 20, 3, 21, 3, 21, 3, 21, 3, 22, 3, 22, - 3, 23, 3, 23, 3, 24, 3, 24, 3, 25, 3, 25, 3, 26, 3, 26, 3, 27, 3, 27, 3, - 27, 3, 28, 3, 28, 3, 28, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 5, 29, 265, - 10, 29, 3, 30, 3, 30, 3, 30, 3, 30, 5, 30, 271, 10, 30, 3, 31, 3, 31, 3, - 31, 3, 32, 3, 32, 3, 33, 3, 33, 3, 34, 3, 34, 3, 34, 3, 35, 3, 35, 3, 35, - 3, 36, 3, 36, 3, 36, 3, 36, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, - 37, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 39, 3, 39, - 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 40, 3, 40, 3, 40, 3, 40, 3, - 40, 3, 40, 3, 40, 3, 40, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, - 3, 41, 3, 41, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 43, 3, - 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 44, 3, 44, 3, 44, 3, 44, - 3, 44, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 46, 3, 46, 3, 46, 3, - 46, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 48, 3, 48, - 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 5, 48, 375, 10, 48, 3, 49, 3, 49, 3, - 49, 3, 49, 3, 49, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 51, 3, 51, 3, 51, - 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, - 51, 3, 51, 3, 51, 3, 51, 3, 51, 5, 51, 405, 10, 51, 3, 52, 3, 52, 3, 52, - 3, 52, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 54, 3, 54, 3, 54, 3, 54, 3, - 54, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 56, 3, 56, 3, 56, 3, 56, 3, 56, - 3, 56, 3, 57, 3, 57, 3, 57, 3, 57, 3, 58, 3, 58, 3, 58, 3, 58, 3, 59, 3, - 59, 3, 59, 3, 59, 3, 59, 3, 59, 3, 59, 3, 59, 3, 59, 3, 59, 3, 60, 3, 60, - 3, 60, 3, 60, 3, 60, 3, 60, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 62, 3, - 62, 3, 62, 3, 62, 5, 62, 465, 10, 62, 3, 63, 3, 63, 3, 63, 3, 64, 3, 64, - 3, 64, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 66, 3, 66, 3, 67, 6, - 67, 482, 10, 67, 13, 67, 14, 67, 483, 3, 67, 3, 67, 7, 67, 488, 10, 67, - 12, 67, 14, 67, 491, 11, 67, 7, 67, 493, 10, 67, 12, 67, 14, 67, 496, 11, - 67, 3, 67, 3, 67, 7, 67, 500, 10, 67, 12, 67, 14, 67, 503, 11, 67, 7, 67, - 505, 10, 67, 12, 67, 14, 67, 508, 11, 67, 3, 68, 3, 68, 3, 69, 3, 69, 3, - 69, 3, 69, 5, 69, 516, 10, 69, 3, 70, 6, 70, 519, 10, 70, 13, 70, 14, 70, - 520, 3, 71, 3, 71, 3, 71, 6, 71, 526, 10, 71, 13, 71, 14, 71, 527, 3, 71, - 5, 71, 531, 10, 71, 3, 71, 3, 71, 5, 71, 535, 10, 71, 5, 71, 537, 10, 71, - 3, 72, 3, 72, 3, 72, 3, 73, 3, 73, 3, 74, 3, 74, 3, 75, 3, 75, 3, 75, 7, - 75, 549, 10, 75, 12, 75, 14, 75, 552, 11, 75, 5, 75, 554, 10, 75, 3, 76, - 3, 76, 5, 76, 558, 10, 76, 3, 76, 6, 76, 561, 10, 76, 13, 76, 14, 76, 562, - 3, 77, 3, 77, 3, 78, 3, 78, 3, 79, 3, 79, 3, 80, 3, 80, 3, 81, 3, 81, 3, - 81, 3, 81, 3, 81, 3, 81, 7, 81, 579, 10, 81, 12, 81, 14, 81, 582, 11, 81, - 3, 81, 3, 81, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 7, 82, 592, 10, - 82, 12, 82, 14, 82, 595, 11, 82, 3, 82, 3, 82, 3, 83, 3, 83, 3, 83, 3, - 83, 7, 83, 603, 10, 83, 12, 83, 14, 83, 606, 11, 83, 3, 83, 3, 83, 3, 84, - 3, 84, 3, 84, 3, 84, 7, 84, 614, 10, 84, 12, 84, 14, 84, 617, 11, 84, 3, - 84, 3, 84, 3, 85, 3, 85, 3, 85, 3, 177, 2, 86, 3, 3, 5, 4, 7, 5, 9, 6, - 11, 7, 13, 8, 15, 9, 17, 10, 19, 11, 21, 12, 23, 13, 25, 14, 27, 15, 29, - 16, 31, 17, 33, 18, 35, 19, 37, 20, 39, 21, 41, 22, 43, 23, 45, 24, 47, - 25, 49, 26, 51, 27, 53, 28, 55, 29, 57, 30, 59, 31, 61, 32, 63, 33, 65, - 34, 67, 35, 69, 36, 71, 37, 73, 38, 75, 39, 77, 40, 79, 41, 81, 42, 83, - 43, 85, 44, 87, 45, 89, 46, 91, 47, 93, 48, 95, 49, 97, 50, 99, 51, 101, - 52, 103, 53, 105, 54, 107, 55, 109, 56, 111, 57, 113, 58, 115, 59, 117, - 60, 119, 61, 121, 62, 123, 63, 125, 64, 127, 65, 129, 66, 131, 67, 133, - 68, 135, 69, 137, 70, 139, 71, 141, 72, 143, 73, 145, 74, 147, 2, 149, - 2, 151, 2, 153, 2, 155, 2, 157, 2, 159, 2, 161, 2, 163, 2, 165, 2, 167, - 2, 169, 2, 3, 2, 14, 5, 2, 12, 12, 15, 15, 8234, 8235, 6, 2, 11, 11, 13, - 14, 34, 34, 162, 162, 3, 2, 50, 59, 5, 2, 50, 59, 67, 72, 99, 104, 3, 2, - 51, 59, 4, 2, 71, 71, 103, 103, 4, 2, 45, 45, 47, 47, 4, 2, 67, 92, 99, - 124, 4, 2, 36, 36, 94, 94, 4, 2, 41, 41, 94, 94, 3, 2, 98, 98, 3, 2, 182, - 182, 2, 647, 2, 3, 3, 2, 2, 2, 2, 5, 3, 2, 2, 2, 2, 7, 3, 2, 2, 2, 2, 9, - 3, 2, 2, 2, 2, 11, 3, 2, 2, 2, 2, 13, 3, 2, 2, 2, 2, 15, 3, 2, 2, 2, 2, - 17, 3, 2, 2, 2, 2, 19, 3, 2, 2, 2, 2, 21, 3, 2, 2, 2, 2, 23, 3, 2, 2, 2, - 2, 25, 3, 2, 2, 2, 2, 27, 3, 2, 2, 2, 2, 29, 3, 2, 2, 2, 2, 31, 3, 2, 2, - 2, 2, 33, 3, 2, 2, 2, 2, 35, 3, 2, 2, 2, 2, 37, 3, 2, 2, 2, 2, 39, 3, 2, - 2, 2, 2, 41, 3, 2, 2, 2, 2, 43, 3, 2, 2, 2, 2, 45, 3, 2, 2, 2, 2, 47, 3, - 2, 2, 2, 2, 49, 3, 2, 2, 2, 2, 51, 3, 2, 2, 2, 2, 53, 3, 2, 2, 2, 2, 55, - 3, 2, 2, 2, 2, 57, 3, 2, 2, 2, 2, 59, 3, 2, 2, 2, 2, 61, 3, 2, 2, 2, 2, - 63, 3, 2, 2, 2, 2, 65, 3, 2, 2, 2, 2, 67, 3, 2, 2, 2, 2, 69, 3, 2, 2, 2, - 2, 71, 3, 2, 2, 2, 2, 73, 3, 2, 2, 2, 2, 75, 3, 2, 2, 2, 2, 77, 3, 2, 2, - 2, 2, 79, 3, 2, 2, 2, 2, 81, 3, 2, 2, 2, 2, 83, 3, 2, 2, 2, 2, 85, 3, 2, - 2, 2, 2, 87, 3, 2, 2, 2, 2, 89, 3, 2, 2, 2, 2, 91, 3, 2, 2, 2, 2, 93, 3, - 2, 2, 2, 2, 95, 3, 2, 2, 2, 2, 97, 3, 2, 2, 2, 2, 99, 3, 2, 2, 2, 2, 101, - 3, 2, 2, 2, 2, 103, 3, 2, 2, 2, 2, 105, 3, 2, 2, 2, 2, 107, 3, 2, 2, 2, - 2, 109, 3, 2, 2, 2, 2, 111, 3, 2, 2, 2, 2, 113, 3, 2, 2, 2, 2, 115, 3, - 2, 2, 2, 2, 117, 3, 2, 2, 2, 2, 119, 3, 2, 2, 2, 2, 121, 3, 2, 2, 2, 2, - 123, 3, 2, 2, 2, 2, 125, 3, 2, 2, 2, 2, 127, 3, 2, 2, 2, 2, 129, 3, 2, - 2, 2, 2, 131, 3, 2, 2, 2, 2, 133, 3, 2, 2, 2, 2, 135, 3, 2, 2, 2, 2, 137, - 3, 2, 2, 2, 2, 139, 3, 2, 2, 2, 2, 141, 3, 2, 2, 2, 2, 143, 3, 2, 2, 2, - 2, 145, 3, 2, 2, 2, 3, 171, 3, 2, 2, 2, 5, 185, 3, 2, 2, 2, 7, 197, 3, - 2, 2, 2, 9, 203, 3, 2, 2, 2, 11, 207, 3, 2, 2, 2, 13, 209, 3, 2, 2, 2, - 15, 211, 3, 2, 2, 2, 17, 213, 3, 2, 2, 2, 19, 215, 3, 2, 2, 2, 21, 217, - 3, 2, 2, 2, 23, 219, 3, 2, 2, 2, 25, 221, 3, 2, 2, 2, 27, 223, 3, 2, 2, - 2, 29, 225, 3, 2, 2, 2, 31, 227, 3, 2, 2, 2, 33, 229, 3, 2, 2, 2, 35, 231, - 3, 2, 2, 2, 37, 234, 3, 2, 2, 2, 39, 237, 3, 2, 2, 2, 41, 240, 3, 2, 2, - 2, 43, 243, 3, 2, 2, 2, 45, 245, 3, 2, 2, 2, 47, 247, 3, 2, 2, 2, 49, 249, - 3, 2, 2, 2, 51, 251, 3, 2, 2, 2, 53, 253, 3, 2, 2, 2, 55, 256, 3, 2, 2, - 2, 57, 264, 3, 2, 2, 2, 59, 270, 3, 2, 2, 2, 61, 272, 3, 2, 2, 2, 63, 275, - 3, 2, 2, 2, 65, 277, 3, 2, 2, 2, 67, 279, 3, 2, 2, 2, 69, 282, 3, 2, 2, - 2, 71, 285, 3, 2, 2, 2, 73, 289, 3, 2, 2, 2, 75, 296, 3, 2, 2, 2, 77, 304, - 3, 2, 2, 2, 79, 312, 3, 2, 2, 2, 81, 320, 3, 2, 2, 2, 83, 329, 3, 2, 2, - 2, 85, 336, 3, 2, 2, 2, 87, 344, 3, 2, 2, 2, 89, 349, 3, 2, 2, 2, 91, 355, - 3, 2, 2, 2, 93, 359, 3, 2, 2, 2, 95, 374, 3, 2, 2, 2, 97, 376, 3, 2, 2, - 2, 99, 381, 3, 2, 2, 2, 101, 404, 3, 2, 2, 2, 103, 406, 3, 2, 2, 2, 105, - 410, 3, 2, 2, 2, 107, 415, 3, 2, 2, 2, 109, 420, 3, 2, 2, 2, 111, 425, - 3, 2, 2, 2, 113, 431, 3, 2, 2, 2, 115, 435, 3, 2, 2, 2, 117, 439, 3, 2, - 2, 2, 119, 449, 3, 2, 2, 2, 121, 455, 3, 2, 2, 2, 123, 464, 3, 2, 2, 2, - 125, 466, 3, 2, 2, 2, 127, 469, 3, 2, 2, 2, 129, 472, 3, 2, 2, 2, 131, - 478, 3, 2, 2, 2, 133, 481, 3, 2, 2, 2, 135, 509, 3, 2, 2, 2, 137, 515, - 3, 2, 2, 2, 139, 518, 3, 2, 2, 2, 141, 536, 3, 2, 2, 2, 143, 538, 3, 2, - 2, 2, 145, 541, 3, 2, 2, 2, 147, 543, 3, 2, 2, 2, 149, 553, 3, 2, 2, 2, - 151, 555, 3, 2, 2, 2, 153, 564, 3, 2, 2, 2, 155, 566, 3, 2, 2, 2, 157, - 568, 3, 2, 2, 2, 159, 570, 3, 2, 2, 2, 161, 572, 3, 2, 2, 2, 163, 585, - 3, 2, 2, 2, 165, 598, 3, 2, 2, 2, 167, 609, 3, 2, 2, 2, 169, 620, 3, 2, - 2, 2, 171, 172, 7, 49, 2, 2, 172, 173, 7, 44, 2, 2, 173, 177, 3, 2, 2, - 2, 174, 176, 11, 2, 2, 2, 175, 174, 3, 2, 2, 2, 176, 179, 3, 2, 2, 2, 177, - 178, 3, 2, 2, 2, 177, 175, 3, 2, 2, 2, 178, 180, 3, 2, 2, 2, 179, 177, - 3, 2, 2, 2, 180, 181, 7, 44, 2, 2, 181, 182, 7, 49, 2, 2, 182, 183, 3, - 2, 2, 2, 183, 184, 8, 2, 2, 2, 184, 4, 3, 2, 2, 2, 185, 186, 7, 49, 2, - 2, 186, 187, 7, 49, 2, 2, 187, 191, 3, 2, 2, 2, 188, 190, 10, 2, 2, 2, - 189, 188, 3, 2, 2, 2, 190, 193, 3, 2, 2, 2, 191, 189, 3, 2, 2, 2, 191, - 192, 3, 2, 2, 2, 192, 194, 3, 2, 2, 2, 193, 191, 3, 2, 2, 2, 194, 195, - 8, 3, 2, 2, 195, 6, 3, 2, 2, 2, 196, 198, 9, 3, 2, 2, 197, 196, 3, 2, 2, - 2, 198, 199, 3, 2, 2, 2, 199, 197, 3, 2, 2, 2, 199, 200, 3, 2, 2, 2, 200, - 201, 3, 2, 2, 2, 201, 202, 8, 4, 2, 2, 202, 8, 3, 2, 2, 2, 203, 204, 9, - 2, 2, 2, 204, 205, 3, 2, 2, 2, 205, 206, 8, 5, 2, 2, 206, 10, 3, 2, 2, - 2, 207, 208, 7, 60, 2, 2, 208, 12, 3, 2, 2, 2, 209, 210, 7, 61, 2, 2, 210, - 14, 3, 2, 2, 2, 211, 212, 7, 48, 2, 2, 212, 16, 3, 2, 2, 2, 213, 214, 7, - 46, 2, 2, 214, 18, 3, 2, 2, 2, 215, 216, 7, 93, 2, 2, 216, 20, 3, 2, 2, - 2, 217, 218, 7, 95, 2, 2, 218, 22, 3, 2, 2, 2, 219, 220, 7, 42, 2, 2, 220, - 24, 3, 2, 2, 2, 221, 222, 7, 43, 2, 2, 222, 26, 3, 2, 2, 2, 223, 224, 7, - 125, 2, 2, 224, 28, 3, 2, 2, 2, 225, 226, 7, 127, 2, 2, 226, 30, 3, 2, - 2, 2, 227, 228, 7, 64, 2, 2, 228, 32, 3, 2, 2, 2, 229, 230, 7, 62, 2, 2, - 230, 34, 3, 2, 2, 2, 231, 232, 7, 63, 2, 2, 232, 233, 7, 63, 2, 2, 233, - 36, 3, 2, 2, 2, 234, 235, 7, 64, 2, 2, 235, 236, 7, 63, 2, 2, 236, 38, - 3, 2, 2, 2, 237, 238, 7, 62, 2, 2, 238, 239, 7, 63, 2, 2, 239, 40, 3, 2, - 2, 2, 240, 241, 7, 35, 2, 2, 241, 242, 7, 63, 2, 2, 242, 42, 3, 2, 2, 2, - 243, 244, 7, 44, 2, 2, 244, 44, 3, 2, 2, 2, 245, 246, 7, 49, 2, 2, 246, - 46, 3, 2, 2, 2, 247, 248, 7, 39, 2, 2, 248, 48, 3, 2, 2, 2, 249, 250, 7, - 45, 2, 2, 250, 50, 3, 2, 2, 2, 251, 252, 7, 47, 2, 2, 252, 52, 3, 2, 2, - 2, 253, 254, 7, 47, 2, 2, 254, 255, 7, 47, 2, 2, 255, 54, 3, 2, 2, 2, 256, - 257, 7, 45, 2, 2, 257, 258, 7, 45, 2, 2, 258, 56, 3, 2, 2, 2, 259, 260, - 7, 67, 2, 2, 260, 261, 7, 80, 2, 2, 261, 265, 7, 70, 2, 2, 262, 263, 7, - 40, 2, 2, 263, 265, 7, 40, 2, 2, 264, 259, 3, 2, 2, 2, 264, 262, 3, 2, - 2, 2, 265, 58, 3, 2, 2, 2, 266, 267, 7, 81, 2, 2, 267, 271, 7, 84, 2, 2, - 268, 269, 7, 126, 2, 2, 269, 271, 7, 126, 2, 2, 270, 266, 3, 2, 2, 2, 270, - 268, 3, 2, 2, 2, 271, 60, 3, 2, 2, 2, 272, 273, 5, 15, 8, 2, 273, 274, - 5, 15, 8, 2, 274, 62, 3, 2, 2, 2, 275, 276, 7, 63, 2, 2, 276, 64, 3, 2, - 2, 2, 277, 278, 7, 65, 2, 2, 278, 66, 3, 2, 2, 2, 279, 280, 7, 35, 2, 2, - 280, 281, 7, 128, 2, 2, 281, 68, 3, 2, 2, 2, 282, 283, 7, 63, 2, 2, 283, - 284, 7, 128, 2, 2, 284, 70, 3, 2, 2, 2, 285, 286, 7, 72, 2, 2, 286, 287, - 7, 81, 2, 2, 287, 288, 7, 84, 2, 2, 288, 72, 3, 2, 2, 2, 289, 290, 7, 84, - 2, 2, 290, 291, 7, 71, 2, 2, 291, 292, 7, 86, 2, 2, 292, 293, 7, 87, 2, - 2, 293, 294, 7, 84, 2, 2, 294, 295, 7, 80, 2, 2, 295, 74, 3, 2, 2, 2, 296, - 297, 7, 89, 2, 2, 297, 298, 7, 67, 2, 2, 298, 299, 7, 75, 2, 2, 299, 300, - 7, 86, 2, 2, 300, 301, 7, 72, 2, 2, 301, 302, 7, 81, 2, 2, 302, 303, 7, - 84, 2, 2, 303, 76, 3, 2, 2, 2, 304, 305, 7, 81, 2, 2, 305, 306, 7, 82, - 2, 2, 306, 307, 7, 86, 2, 2, 307, 308, 7, 75, 2, 2, 308, 309, 7, 81, 2, - 2, 309, 310, 7, 80, 2, 2, 310, 311, 7, 85, 2, 2, 311, 78, 3, 2, 2, 2, 312, - 313, 7, 86, 2, 2, 313, 314, 7, 75, 2, 2, 314, 315, 7, 79, 2, 2, 315, 316, - 7, 71, 2, 2, 316, 317, 7, 81, 2, 2, 317, 318, 7, 87, 2, 2, 318, 319, 7, - 86, 2, 2, 319, 80, 3, 2, 2, 2, 320, 321, 7, 70, 2, 2, 321, 322, 7, 75, - 2, 2, 322, 323, 7, 85, 2, 2, 323, 324, 7, 86, 2, 2, 324, 325, 7, 75, 2, - 2, 325, 326, 7, 80, 2, 2, 326, 327, 7, 69, 2, 2, 327, 328, 7, 86, 2, 2, - 328, 82, 3, 2, 2, 2, 329, 330, 7, 72, 2, 2, 330, 331, 7, 75, 2, 2, 331, - 332, 7, 78, 2, 2, 332, 333, 7, 86, 2, 2, 333, 334, 7, 71, 2, 2, 334, 335, - 7, 84, 2, 2, 335, 84, 3, 2, 2, 2, 336, 337, 7, 69, 2, 2, 337, 338, 7, 87, - 2, 2, 338, 339, 7, 84, 2, 2, 339, 340, 7, 84, 2, 2, 340, 341, 7, 71, 2, - 2, 341, 342, 7, 80, 2, 2, 342, 343, 7, 86, 2, 2, 343, 86, 3, 2, 2, 2, 344, - 345, 7, 85, 2, 2, 345, 346, 7, 81, 2, 2, 346, 347, 7, 84, 2, 2, 347, 348, - 7, 86, 2, 2, 348, 88, 3, 2, 2, 2, 349, 350, 7, 78, 2, 2, 350, 351, 7, 75, - 2, 2, 351, 352, 7, 79, 2, 2, 352, 353, 7, 75, 2, 2, 353, 354, 7, 86, 2, - 2, 354, 90, 3, 2, 2, 2, 355, 356, 7, 78, 2, 2, 356, 357, 7, 71, 2, 2, 357, - 358, 7, 86, 2, 2, 358, 92, 3, 2, 2, 2, 359, 360, 7, 69, 2, 2, 360, 361, - 7, 81, 2, 2, 361, 362, 7, 78, 2, 2, 362, 363, 7, 78, 2, 2, 363, 364, 7, - 71, 2, 2, 364, 365, 7, 69, 2, 2, 365, 366, 7, 86, 2, 2, 366, 94, 3, 2, - 2, 2, 367, 368, 7, 67, 2, 2, 368, 369, 7, 85, 2, 2, 369, 375, 7, 69, 2, - 2, 370, 371, 7, 70, 2, 2, 371, 372, 7, 71, 2, 2, 372, 373, 7, 85, 2, 2, - 373, 375, 7, 69, 2, 2, 374, 367, 3, 2, 2, 2, 374, 370, 3, 2, 2, 2, 375, - 96, 3, 2, 2, 2, 376, 377, 7, 80, 2, 2, 377, 378, 7, 81, 2, 2, 378, 379, - 7, 80, 2, 2, 379, 380, 7, 71, 2, 2, 380, 98, 3, 2, 2, 2, 381, 382, 7, 80, - 2, 2, 382, 383, 7, 87, 2, 2, 383, 384, 7, 78, 2, 2, 384, 385, 7, 78, 2, - 2, 385, 100, 3, 2, 2, 2, 386, 387, 7, 86, 2, 2, 387, 388, 7, 84, 2, 2, - 388, 389, 7, 87, 2, 2, 389, 405, 7, 71, 2, 2, 390, 391, 7, 118, 2, 2, 391, - 392, 7, 116, 2, 2, 392, 393, 7, 119, 2, 2, 393, 405, 7, 103, 2, 2, 394, - 395, 7, 72, 2, 2, 395, 396, 7, 67, 2, 2, 396, 397, 7, 78, 2, 2, 397, 398, - 7, 85, 2, 2, 398, 405, 7, 71, 2, 2, 399, 400, 7, 104, 2, 2, 400, 401, 7, - 99, 2, 2, 401, 402, 7, 110, 2, 2, 402, 403, 7, 117, 2, 2, 403, 405, 7, - 103, 2, 2, 404, 386, 3, 2, 2, 2, 404, 390, 3, 2, 2, 2, 404, 394, 3, 2, - 2, 2, 404, 399, 3, 2, 2, 2, 405, 102, 3, 2, 2, 2, 406, 407, 7, 87, 2, 2, - 407, 408, 7, 85, 2, 2, 408, 409, 7, 71, 2, 2, 409, 104, 3, 2, 2, 2, 410, - 411, 7, 75, 2, 2, 411, 412, 7, 80, 2, 2, 412, 413, 7, 86, 2, 2, 413, 414, - 7, 81, 2, 2, 414, 106, 3, 2, 2, 2, 415, 416, 7, 77, 2, 2, 416, 417, 7, - 71, 2, 2, 417, 418, 7, 71, 2, 2, 418, 419, 7, 82, 2, 2, 419, 108, 3, 2, - 2, 2, 420, 421, 7, 89, 2, 2, 421, 422, 7, 75, 2, 2, 422, 423, 7, 86, 2, - 2, 423, 424, 7, 74, 2, 2, 424, 110, 3, 2, 2, 2, 425, 426, 7, 69, 2, 2, - 426, 427, 7, 81, 2, 2, 427, 428, 7, 87, 2, 2, 428, 429, 7, 80, 2, 2, 429, - 430, 7, 86, 2, 2, 430, 112, 3, 2, 2, 2, 431, 432, 7, 67, 2, 2, 432, 433, - 7, 78, 2, 2, 433, 434, 7, 78, 2, 2, 434, 114, 3, 2, 2, 2, 435, 436, 7, - 67, 2, 2, 436, 437, 7, 80, 2, 2, 437, 438, 7, 91, 2, 2, 438, 116, 3, 2, - 2, 2, 439, 440, 7, 67, 2, 2, 440, 441, 7, 73, 2, 2, 441, 442, 7, 73, 2, - 2, 442, 443, 7, 84, 2, 2, 443, 444, 7, 71, 2, 2, 444, 445, 7, 73, 2, 2, - 445, 446, 7, 67, 2, 2, 446, 447, 7, 86, 2, 2, 447, 448, 7, 71, 2, 2, 448, - 118, 3, 2, 2, 2, 449, 450, 7, 71, 2, 2, 450, 451, 7, 88, 2, 2, 451, 452, - 7, 71, 2, 2, 452, 453, 7, 80, 2, 2, 453, 454, 7, 86, 2, 2, 454, 120, 3, - 2, 2, 2, 455, 456, 7, 78, 2, 2, 456, 457, 7, 75, 2, 2, 457, 458, 7, 77, - 2, 2, 458, 459, 7, 71, 2, 2, 459, 122, 3, 2, 2, 2, 460, 461, 7, 80, 2, - 2, 461, 462, 7, 81, 2, 2, 462, 465, 7, 86, 2, 2, 463, 465, 7, 35, 2, 2, - 464, 460, 3, 2, 2, 2, 464, 463, 3, 2, 2, 2, 465, 124, 3, 2, 2, 2, 466, - 467, 7, 75, 2, 2, 467, 468, 7, 80, 2, 2, 468, 126, 3, 2, 2, 2, 469, 470, - 7, 70, 2, 2, 470, 471, 7, 81, 2, 2, 471, 128, 3, 2, 2, 2, 472, 473, 7, - 89, 2, 2, 473, 474, 7, 74, 2, 2, 474, 475, 7, 75, 2, 2, 475, 476, 7, 78, - 2, 2, 476, 477, 7, 71, 2, 2, 477, 130, 3, 2, 2, 2, 478, 479, 7, 66, 2, - 2, 479, 132, 3, 2, 2, 2, 480, 482, 5, 153, 77, 2, 481, 480, 3, 2, 2, 2, - 482, 483, 3, 2, 2, 2, 483, 481, 3, 2, 2, 2, 483, 484, 3, 2, 2, 2, 484, - 494, 3, 2, 2, 2, 485, 489, 5, 155, 78, 2, 486, 488, 5, 133, 67, 2, 487, - 486, 3, 2, 2, 2, 488, 491, 3, 2, 2, 2, 489, 487, 3, 2, 2, 2, 489, 490, - 3, 2, 2, 2, 490, 493, 3, 2, 2, 2, 491, 489, 3, 2, 2, 2, 492, 485, 3, 2, - 2, 2, 493, 496, 3, 2, 2, 2, 494, 492, 3, 2, 2, 2, 494, 495, 3, 2, 2, 2, - 495, 506, 3, 2, 2, 2, 496, 494, 3, 2, 2, 2, 497, 501, 5, 159, 80, 2, 498, - 500, 5, 133, 67, 2, 499, 498, 3, 2, 2, 2, 500, 503, 3, 2, 2, 2, 501, 499, - 3, 2, 2, 2, 501, 502, 3, 2, 2, 2, 502, 505, 3, 2, 2, 2, 503, 501, 3, 2, - 2, 2, 504, 497, 3, 2, 2, 2, 505, 508, 3, 2, 2, 2, 506, 504, 3, 2, 2, 2, - 506, 507, 3, 2, 2, 2, 507, 134, 3, 2, 2, 2, 508, 506, 3, 2, 2, 2, 509, - 510, 5, 157, 79, 2, 510, 136, 3, 2, 2, 2, 511, 516, 5, 163, 82, 2, 512, - 516, 5, 161, 81, 2, 513, 516, 5, 165, 83, 2, 514, 516, 5, 167, 84, 2, 515, - 511, 3, 2, 2, 2, 515, 512, 3, 2, 2, 2, 515, 513, 3, 2, 2, 2, 515, 514, - 3, 2, 2, 2, 516, 138, 3, 2, 2, 2, 517, 519, 9, 4, 2, 2, 518, 517, 3, 2, - 2, 2, 519, 520, 3, 2, 2, 2, 520, 518, 3, 2, 2, 2, 520, 521, 3, 2, 2, 2, - 521, 140, 3, 2, 2, 2, 522, 523, 5, 149, 75, 2, 523, 525, 5, 15, 8, 2, 524, - 526, 9, 4, 2, 2, 525, 524, 3, 2, 2, 2, 526, 527, 3, 2, 2, 2, 527, 525, - 3, 2, 2, 2, 527, 528, 3, 2, 2, 2, 528, 530, 3, 2, 2, 2, 529, 531, 5, 151, - 76, 2, 530, 529, 3, 2, 2, 2, 530, 531, 3, 2, 2, 2, 531, 537, 3, 2, 2, 2, - 532, 534, 5, 149, 75, 2, 533, 535, 5, 151, 76, 2, 534, 533, 3, 2, 2, 2, - 534, 535, 3, 2, 2, 2, 535, 537, 3, 2, 2, 2, 536, 522, 3, 2, 2, 2, 536, - 532, 3, 2, 2, 2, 537, 142, 3, 2, 2, 2, 538, 539, 5, 133, 67, 2, 539, 540, - 5, 169, 85, 2, 540, 144, 3, 2, 2, 2, 541, 542, 11, 2, 2, 2, 542, 146, 3, - 2, 2, 2, 543, 544, 9, 5, 2, 2, 544, 148, 3, 2, 2, 2, 545, 554, 7, 50, 2, - 2, 546, 550, 9, 6, 2, 2, 547, 549, 9, 4, 2, 2, 548, 547, 3, 2, 2, 2, 549, - 552, 3, 2, 2, 2, 550, 548, 3, 2, 2, 2, 550, 551, 3, 2, 2, 2, 551, 554, - 3, 2, 2, 2, 552, 550, 3, 2, 2, 2, 553, 545, 3, 2, 2, 2, 553, 546, 3, 2, - 2, 2, 554, 150, 3, 2, 2, 2, 555, 557, 9, 7, 2, 2, 556, 558, 9, 8, 2, 2, - 557, 556, 3, 2, 2, 2, 557, 558, 3, 2, 2, 2, 558, 560, 3, 2, 2, 2, 559, - 561, 9, 4, 2, 2, 560, 559, 3, 2, 2, 2, 561, 562, 3, 2, 2, 2, 562, 560, - 3, 2, 2, 2, 562, 563, 3, 2, 2, 2, 563, 152, 3, 2, 2, 2, 564, 565, 9, 9, - 2, 2, 565, 154, 3, 2, 2, 2, 566, 567, 5, 157, 79, 2, 567, 156, 3, 2, 2, - 2, 568, 569, 7, 97, 2, 2, 569, 158, 3, 2, 2, 2, 570, 571, 4, 50, 59, 2, - 571, 160, 3, 2, 2, 2, 572, 580, 7, 36, 2, 2, 573, 574, 7, 94, 2, 2, 574, - 579, 11, 2, 2, 2, 575, 576, 7, 36, 2, 2, 576, 579, 7, 36, 2, 2, 577, 579, - 10, 10, 2, 2, 578, 573, 3, 2, 2, 2, 578, 575, 3, 2, 2, 2, 578, 577, 3, - 2, 2, 2, 579, 582, 3, 2, 2, 2, 580, 578, 3, 2, 2, 2, 580, 581, 3, 2, 2, - 2, 581, 583, 3, 2, 2, 2, 582, 580, 3, 2, 2, 2, 583, 584, 7, 36, 2, 2, 584, - 162, 3, 2, 2, 2, 585, 593, 7, 41, 2, 2, 586, 587, 7, 94, 2, 2, 587, 592, - 11, 2, 2, 2, 588, 589, 7, 41, 2, 2, 589, 592, 7, 41, 2, 2, 590, 592, 10, - 11, 2, 2, 591, 586, 3, 2, 2, 2, 591, 588, 3, 2, 2, 2, 591, 590, 3, 2, 2, - 2, 592, 595, 3, 2, 2, 2, 593, 591, 3, 2, 2, 2, 593, 594, 3, 2, 2, 2, 594, - 596, 3, 2, 2, 2, 595, 593, 3, 2, 2, 2, 596, 597, 7, 41, 2, 2, 597, 164, - 3, 2, 2, 2, 598, 604, 7, 98, 2, 2, 599, 600, 7, 94, 2, 2, 600, 603, 7, - 98, 2, 2, 601, 603, 10, 12, 2, 2, 602, 599, 3, 2, 2, 2, 602, 601, 3, 2, - 2, 2, 603, 606, 3, 2, 2, 2, 604, 602, 3, 2, 2, 2, 604, 605, 3, 2, 2, 2, - 605, 607, 3, 2, 2, 2, 606, 604, 3, 2, 2, 2, 607, 608, 7, 98, 2, 2, 608, - 166, 3, 2, 2, 2, 609, 615, 7, 182, 2, 2, 610, 611, 7, 94, 2, 2, 611, 614, - 7, 182, 2, 2, 612, 614, 10, 13, 2, 2, 613, 610, 3, 2, 2, 2, 613, 612, 3, - 2, 2, 2, 614, 617, 3, 2, 2, 2, 615, 613, 3, 2, 2, 2, 615, 616, 3, 2, 2, - 2, 616, 618, 3, 2, 2, 2, 617, 615, 3, 2, 2, 2, 618, 619, 7, 182, 2, 2, - 619, 168, 3, 2, 2, 2, 620, 621, 7, 60, 2, 2, 621, 622, 7, 60, 2, 2, 622, - 170, 3, 2, 2, 2, 34, 2, 177, 191, 199, 264, 270, 374, 404, 464, 483, 489, - 494, 501, 506, 515, 520, 527, 530, 534, 536, 550, 553, 557, 562, 578, 580, - 591, 593, 602, 604, 613, 615, 3, 2, 3, 2, -} - -var lexerChannelNames = []string{ - "DEFAULT_TOKEN_CHANNEL", "HIDDEN", -} - -var lexerModeNames = []string{ - "DEFAULT_MODE", -} - -var lexerLiteralNames = []string{ - "", "", "", "", "", "':'", "';'", "'.'", "','", "'['", "']'", "'('", "')'", - "'{'", "'}'", "'>'", "'<'", "'=='", "'>='", "'<='", "'!='", "'*'", "'/'", - "'%'", "'+'", "'-'", "'--'", "'++'", "", "", "", "'='", "'?'", "'!~'", - "'=~'", "'FOR'", "'RETURN'", "'WAITFOR'", "'OPTIONS'", "'TIMEOUT'", "'DISTINCT'", - "'FILTER'", "'CURRENT'", "'SORT'", "'LIMIT'", "'LET'", "'COLLECT'", "", - "'NONE'", "'NULL'", "", "'USE'", "'INTO'", "'KEEP'", "'WITH'", "'COUNT'", - "'ALL'", "'ANY'", "'AGGREGATE'", "'EVENT'", "'LIKE'", "", "'IN'", "'DO'", - "'WHILE'", "'@'", -} - -var lexerSymbolicNames = []string{ - "", "MultiLineComment", "SingleLineComment", "WhiteSpaces", "LineTerminator", - "Colon", "SemiColon", "Dot", "Comma", "OpenBracket", "CloseBracket", "OpenParen", - "CloseParen", "OpenBrace", "CloseBrace", "Gt", "Lt", "Eq", "Gte", "Lte", - "Neq", "Multi", "Div", "Mod", "Plus", "Minus", "MinusMinus", "PlusPlus", - "And", "Or", "Range", "Assign", "QuestionMark", "RegexNotMatch", "RegexMatch", - "For", "Return", "Waitfor", "Options", "Timeout", "Distinct", "Filter", - "Current", "Sort", "Limit", "Let", "Collect", "SortDirection", "None", - "Null", "BooleanLiteral", "Use", "Into", "Keep", "With", "Count", "All", - "Any", "Aggregate", "Event", "Like", "Not", "In", "Do", "While", "Param", - "Identifier", "IgnoreIdentifier", "StringLiteral", "IntegerLiteral", "FloatLiteral", - "NamespaceSegment", "UnknownIdentifier", -} - -var lexerRuleNames = []string{ - "MultiLineComment", "SingleLineComment", "WhiteSpaces", "LineTerminator", - "Colon", "SemiColon", "Dot", "Comma", "OpenBracket", "CloseBracket", "OpenParen", - "CloseParen", "OpenBrace", "CloseBrace", "Gt", "Lt", "Eq", "Gte", "Lte", - "Neq", "Multi", "Div", "Mod", "Plus", "Minus", "MinusMinus", "PlusPlus", - "And", "Or", "Range", "Assign", "QuestionMark", "RegexNotMatch", "RegexMatch", - "For", "Return", "Waitfor", "Options", "Timeout", "Distinct", "Filter", - "Current", "Sort", "Limit", "Let", "Collect", "SortDirection", "None", - "Null", "BooleanLiteral", "Use", "Into", "Keep", "With", "Count", "All", - "Any", "Aggregate", "Event", "Like", "Not", "In", "Do", "While", "Param", - "Identifier", "IgnoreIdentifier", "StringLiteral", "IntegerLiteral", "FloatLiteral", - "NamespaceSegment", "UnknownIdentifier", "HexDigit", "DecimalIntegerLiteral", - "ExponentPart", "Letter", "Symbols", "Underscore", "Digit", "DQSring", - "SQString", "BacktickString", "TickString", "NamespaceSeparator", -} - type FqlLexer struct { *antlr.BaseLexer channelNames []string @@ -348,28 +22,374 @@ type FqlLexer struct { // TODO: EOF string } -// NewFqlLexer produces a new lexer instance for the optional input antlr.CharStream. -// -// The *FqlLexer instance produced may be reused by calling the SetInputStream method. -// The initial lexer configuration is expensive to construct, and the object is not thread-safe; -// however, if used within a Golang sync.Pool, the construction cost amortizes well and the -// objects can be used in a thread-safe manner. -func NewFqlLexer(input antlr.CharStream) *FqlLexer { - l := new(FqlLexer) - lexerDeserializer := antlr.NewATNDeserializer(nil) - lexerAtn := lexerDeserializer.DeserializeFromUInt16(serializedLexerAtn) - lexerDecisionToDFA := make([]*antlr.DFA, len(lexerAtn.DecisionToState)) - for index, ds := range lexerAtn.DecisionToState { - lexerDecisionToDFA[index] = antlr.NewDFA(ds, index) - } - l.BaseLexer = antlr.NewBaseLexer(input) - l.Interpreter = antlr.NewLexerATNSimulator(l, lexerAtn, lexerDecisionToDFA, antlr.NewPredictionContextCache()) +var fqllexerLexerStaticData struct { + once sync.Once + serializedATN []int32 + channelNames []string + modeNames []string + literalNames []string + symbolicNames []string + ruleNames []string + predictionContextCache *antlr.PredictionContextCache + atn *antlr.ATN + decisionToDFA []*antlr.DFA +} - l.channelNames = lexerChannelNames - l.modeNames = lexerModeNames - l.RuleNames = lexerRuleNames - l.LiteralNames = lexerLiteralNames - l.SymbolicNames = lexerSymbolicNames +func fqllexerLexerInit() { + staticData := &fqllexerLexerStaticData + staticData.channelNames = []string{ + "DEFAULT_TOKEN_CHANNEL", "HIDDEN", + } + staticData.modeNames = []string{ + "DEFAULT_MODE", + } + staticData.literalNames = []string{ + "", "", "", "", "", "':'", "';'", "'.'", "','", "'['", "']'", "'('", + "')'", "'{'", "'}'", "'>'", "'<'", "'=='", "'>='", "'<='", "'!='", "'*'", + "'/'", "'%'", "'+'", "'-'", "'--'", "'++'", "", "", "", "'='", "'?'", + "'!~'", "'=~'", "'FOR'", "'RETURN'", "'WAITFOR'", "'OPTIONS'", "'TIMEOUT'", + "'DISTINCT'", "'FILTER'", "'CURRENT'", "'SORT'", "'LIMIT'", "'LET'", + "'COLLECT'", "", "'NONE'", "'NULL'", "", "'USE'", "'INTO'", "'KEEP'", + "'WITH'", "'COUNT'", "'ALL'", "'ANY'", "'AGGREGATE'", "'EVENT'", "'LIKE'", + "", "'IN'", "'DO'", "'WHILE'", "'@'", + } + staticData.symbolicNames = []string{ + "", "MultiLineComment", "SingleLineComment", "WhiteSpaces", "LineTerminator", + "Colon", "SemiColon", "Dot", "Comma", "OpenBracket", "CloseBracket", + "OpenParen", "CloseParen", "OpenBrace", "CloseBrace", "Gt", "Lt", "Eq", + "Gte", "Lte", "Neq", "Multi", "Div", "Mod", "Plus", "Minus", "MinusMinus", + "PlusPlus", "And", "Or", "Range", "Assign", "QuestionMark", "RegexNotMatch", + "RegexMatch", "For", "Return", "Waitfor", "Options", "Timeout", "Distinct", + "Filter", "Current", "Sort", "Limit", "Let", "Collect", "SortDirection", + "None", "Null", "BooleanLiteral", "Use", "Into", "Keep", "With", "Count", + "All", "Any", "Aggregate", "Event", "Like", "Not", "In", "Do", "While", + "Param", "Identifier", "IgnoreIdentifier", "StringLiteral", "IntegerLiteral", + "FloatLiteral", "NamespaceSegment", "UnknownIdentifier", + } + staticData.ruleNames = []string{ + "MultiLineComment", "SingleLineComment", "WhiteSpaces", "LineTerminator", + "Colon", "SemiColon", "Dot", "Comma", "OpenBracket", "CloseBracket", + "OpenParen", "CloseParen", "OpenBrace", "CloseBrace", "Gt", "Lt", "Eq", + "Gte", "Lte", "Neq", "Multi", "Div", "Mod", "Plus", "Minus", "MinusMinus", + "PlusPlus", "And", "Or", "Range", "Assign", "QuestionMark", "RegexNotMatch", + "RegexMatch", "For", "Return", "Waitfor", "Options", "Timeout", "Distinct", + "Filter", "Current", "Sort", "Limit", "Let", "Collect", "SortDirection", + "None", "Null", "BooleanLiteral", "Use", "Into", "Keep", "With", "Count", + "All", "Any", "Aggregate", "Event", "Like", "Not", "In", "Do", "While", + "Param", "Identifier", "IgnoreIdentifier", "StringLiteral", "IntegerLiteral", + "FloatLiteral", "NamespaceSegment", "UnknownIdentifier", "HexDigit", + "DecimalIntegerLiteral", "ExponentPart", "Letter", "Symbols", "Underscore", + "Digit", "DQSring", "SQString", "BacktickString", "TickString", "NamespaceSeparator", + } + staticData.predictionContextCache = antlr.NewPredictionContextCache() + staticData.serializedATN = []int32{ + 4, 0, 72, 621, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, + 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, + 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, + 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, + 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, + 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, + 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, + 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, + 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, + 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, + 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, + 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, + 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, + 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, + 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, + 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, + 83, 1, 0, 1, 0, 1, 0, 1, 0, 5, 0, 174, 8, 0, 10, 0, 12, 0, 177, 9, 0, 1, + 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1, 188, 8, 1, 10, + 1, 12, 1, 191, 9, 1, 1, 1, 1, 1, 1, 2, 4, 2, 196, 8, 2, 11, 2, 12, 2, 197, + 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, + 1, 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 12, + 1, 12, 1, 13, 1, 13, 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, + 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, + 1, 21, 1, 21, 1, 22, 1, 22, 1, 23, 1, 23, 1, 24, 1, 24, 1, 25, 1, 25, 1, + 25, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 3, 27, 263, + 8, 27, 1, 28, 1, 28, 1, 28, 1, 28, 3, 28, 269, 8, 28, 1, 29, 1, 29, 1, + 29, 1, 30, 1, 30, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, + 1, 34, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, + 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, + 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, + 38, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, + 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 41, 1, + 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, + 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, + 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, + 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 373, 8, 46, 1, 47, 1, 47, 1, + 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, + 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, + 49, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 403, 8, 49, 1, 50, 1, 50, 1, 50, + 1, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, + 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, + 1, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, + 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, + 1, 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 60, 1, + 60, 1, 60, 1, 60, 3, 60, 463, 8, 60, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, + 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 65, 4, + 65, 480, 8, 65, 11, 65, 12, 65, 481, 1, 65, 1, 65, 5, 65, 486, 8, 65, 10, + 65, 12, 65, 489, 9, 65, 5, 65, 491, 8, 65, 10, 65, 12, 65, 494, 9, 65, + 1, 65, 1, 65, 5, 65, 498, 8, 65, 10, 65, 12, 65, 501, 9, 65, 5, 65, 503, + 8, 65, 10, 65, 12, 65, 506, 9, 65, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, + 67, 3, 67, 514, 8, 67, 1, 68, 4, 68, 517, 8, 68, 11, 68, 12, 68, 518, 1, + 69, 1, 69, 1, 69, 4, 69, 524, 8, 69, 11, 69, 12, 69, 525, 1, 69, 3, 69, + 529, 8, 69, 1, 69, 1, 69, 3, 69, 533, 8, 69, 3, 69, 535, 8, 69, 1, 70, + 1, 70, 1, 70, 1, 71, 1, 71, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 5, 73, 547, + 8, 73, 10, 73, 12, 73, 550, 9, 73, 3, 73, 552, 8, 73, 1, 74, 1, 74, 3, + 74, 556, 8, 74, 1, 74, 4, 74, 559, 8, 74, 11, 74, 12, 74, 560, 1, 75, 1, + 75, 1, 76, 1, 76, 1, 77, 1, 77, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 1, 79, + 1, 79, 1, 79, 5, 79, 577, 8, 79, 10, 79, 12, 79, 580, 9, 79, 1, 79, 1, + 79, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 5, 80, 590, 8, 80, 10, 80, + 12, 80, 593, 9, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 81, 5, 81, 601, + 8, 81, 10, 81, 12, 81, 604, 9, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, + 82, 5, 82, 612, 8, 82, 10, 82, 12, 82, 615, 9, 82, 1, 82, 1, 82, 1, 83, + 1, 83, 1, 83, 1, 175, 0, 84, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, + 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, + 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, + 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, + 35, 71, 36, 73, 37, 75, 38, 77, 39, 79, 40, 81, 41, 83, 42, 85, 43, 87, + 44, 89, 45, 91, 46, 93, 47, 95, 48, 97, 49, 99, 50, 101, 51, 103, 52, 105, + 53, 107, 54, 109, 55, 111, 56, 113, 57, 115, 58, 117, 59, 119, 60, 121, + 61, 123, 62, 125, 63, 127, 64, 129, 65, 131, 66, 133, 67, 135, 68, 137, + 69, 139, 70, 141, 71, 143, 72, 145, 0, 147, 0, 149, 0, 151, 0, 153, 0, + 155, 0, 157, 0, 159, 0, 161, 0, 163, 0, 165, 0, 167, 0, 1, 0, 12, 3, 0, + 10, 10, 13, 13, 8232, 8233, 4, 0, 9, 9, 11, 12, 32, 32, 160, 160, 1, 0, + 48, 57, 3, 0, 48, 57, 65, 70, 97, 102, 1, 0, 49, 57, 2, 0, 69, 69, 101, + 101, 2, 0, 43, 43, 45, 45, 2, 0, 65, 90, 97, 122, 2, 0, 34, 34, 92, 92, + 2, 0, 39, 39, 92, 92, 1, 0, 96, 96, 1, 0, 180, 180, 645, 0, 1, 1, 0, 0, + 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, + 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, + 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, + 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, + 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, + 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, + 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, + 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, + 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, + 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 79, + 1, 0, 0, 0, 0, 81, 1, 0, 0, 0, 0, 83, 1, 0, 0, 0, 0, 85, 1, 0, 0, 0, 0, + 87, 1, 0, 0, 0, 0, 89, 1, 0, 0, 0, 0, 91, 1, 0, 0, 0, 0, 93, 1, 0, 0, 0, + 0, 95, 1, 0, 0, 0, 0, 97, 1, 0, 0, 0, 0, 99, 1, 0, 0, 0, 0, 101, 1, 0, + 0, 0, 0, 103, 1, 0, 0, 0, 0, 105, 1, 0, 0, 0, 0, 107, 1, 0, 0, 0, 0, 109, + 1, 0, 0, 0, 0, 111, 1, 0, 0, 0, 0, 113, 1, 0, 0, 0, 0, 115, 1, 0, 0, 0, + 0, 117, 1, 0, 0, 0, 0, 119, 1, 0, 0, 0, 0, 121, 1, 0, 0, 0, 0, 123, 1, + 0, 0, 0, 0, 125, 1, 0, 0, 0, 0, 127, 1, 0, 0, 0, 0, 129, 1, 0, 0, 0, 0, + 131, 1, 0, 0, 0, 0, 133, 1, 0, 0, 0, 0, 135, 1, 0, 0, 0, 0, 137, 1, 0, + 0, 0, 0, 139, 1, 0, 0, 0, 0, 141, 1, 0, 0, 0, 0, 143, 1, 0, 0, 0, 1, 169, + 1, 0, 0, 0, 3, 183, 1, 0, 0, 0, 5, 195, 1, 0, 0, 0, 7, 201, 1, 0, 0, 0, + 9, 205, 1, 0, 0, 0, 11, 207, 1, 0, 0, 0, 13, 209, 1, 0, 0, 0, 15, 211, + 1, 0, 0, 0, 17, 213, 1, 0, 0, 0, 19, 215, 1, 0, 0, 0, 21, 217, 1, 0, 0, + 0, 23, 219, 1, 0, 0, 0, 25, 221, 1, 0, 0, 0, 27, 223, 1, 0, 0, 0, 29, 225, + 1, 0, 0, 0, 31, 227, 1, 0, 0, 0, 33, 229, 1, 0, 0, 0, 35, 232, 1, 0, 0, + 0, 37, 235, 1, 0, 0, 0, 39, 238, 1, 0, 0, 0, 41, 241, 1, 0, 0, 0, 43, 243, + 1, 0, 0, 0, 45, 245, 1, 0, 0, 0, 47, 247, 1, 0, 0, 0, 49, 249, 1, 0, 0, + 0, 51, 251, 1, 0, 0, 0, 53, 254, 1, 0, 0, 0, 55, 262, 1, 0, 0, 0, 57, 268, + 1, 0, 0, 0, 59, 270, 1, 0, 0, 0, 61, 273, 1, 0, 0, 0, 63, 275, 1, 0, 0, + 0, 65, 277, 1, 0, 0, 0, 67, 280, 1, 0, 0, 0, 69, 283, 1, 0, 0, 0, 71, 287, + 1, 0, 0, 0, 73, 294, 1, 0, 0, 0, 75, 302, 1, 0, 0, 0, 77, 310, 1, 0, 0, + 0, 79, 318, 1, 0, 0, 0, 81, 327, 1, 0, 0, 0, 83, 334, 1, 0, 0, 0, 85, 342, + 1, 0, 0, 0, 87, 347, 1, 0, 0, 0, 89, 353, 1, 0, 0, 0, 91, 357, 1, 0, 0, + 0, 93, 372, 1, 0, 0, 0, 95, 374, 1, 0, 0, 0, 97, 379, 1, 0, 0, 0, 99, 402, + 1, 0, 0, 0, 101, 404, 1, 0, 0, 0, 103, 408, 1, 0, 0, 0, 105, 413, 1, 0, + 0, 0, 107, 418, 1, 0, 0, 0, 109, 423, 1, 0, 0, 0, 111, 429, 1, 0, 0, 0, + 113, 433, 1, 0, 0, 0, 115, 437, 1, 0, 0, 0, 117, 447, 1, 0, 0, 0, 119, + 453, 1, 0, 0, 0, 121, 462, 1, 0, 0, 0, 123, 464, 1, 0, 0, 0, 125, 467, + 1, 0, 0, 0, 127, 470, 1, 0, 0, 0, 129, 476, 1, 0, 0, 0, 131, 479, 1, 0, + 0, 0, 133, 507, 1, 0, 0, 0, 135, 513, 1, 0, 0, 0, 137, 516, 1, 0, 0, 0, + 139, 534, 1, 0, 0, 0, 141, 536, 1, 0, 0, 0, 143, 539, 1, 0, 0, 0, 145, + 541, 1, 0, 0, 0, 147, 551, 1, 0, 0, 0, 149, 553, 1, 0, 0, 0, 151, 562, + 1, 0, 0, 0, 153, 564, 1, 0, 0, 0, 155, 566, 1, 0, 0, 0, 157, 568, 1, 0, + 0, 0, 159, 570, 1, 0, 0, 0, 161, 583, 1, 0, 0, 0, 163, 596, 1, 0, 0, 0, + 165, 607, 1, 0, 0, 0, 167, 618, 1, 0, 0, 0, 169, 170, 5, 47, 0, 0, 170, + 171, 5, 42, 0, 0, 171, 175, 1, 0, 0, 0, 172, 174, 9, 0, 0, 0, 173, 172, + 1, 0, 0, 0, 174, 177, 1, 0, 0, 0, 175, 176, 1, 0, 0, 0, 175, 173, 1, 0, + 0, 0, 176, 178, 1, 0, 0, 0, 177, 175, 1, 0, 0, 0, 178, 179, 5, 42, 0, 0, + 179, 180, 5, 47, 0, 0, 180, 181, 1, 0, 0, 0, 181, 182, 6, 0, 0, 0, 182, + 2, 1, 0, 0, 0, 183, 184, 5, 47, 0, 0, 184, 185, 5, 47, 0, 0, 185, 189, + 1, 0, 0, 0, 186, 188, 8, 0, 0, 0, 187, 186, 1, 0, 0, 0, 188, 191, 1, 0, + 0, 0, 189, 187, 1, 0, 0, 0, 189, 190, 1, 0, 0, 0, 190, 192, 1, 0, 0, 0, + 191, 189, 1, 0, 0, 0, 192, 193, 6, 1, 0, 0, 193, 4, 1, 0, 0, 0, 194, 196, + 7, 1, 0, 0, 195, 194, 1, 0, 0, 0, 196, 197, 1, 0, 0, 0, 197, 195, 1, 0, + 0, 0, 197, 198, 1, 0, 0, 0, 198, 199, 1, 0, 0, 0, 199, 200, 6, 2, 0, 0, + 200, 6, 1, 0, 0, 0, 201, 202, 7, 0, 0, 0, 202, 203, 1, 0, 0, 0, 203, 204, + 6, 3, 0, 0, 204, 8, 1, 0, 0, 0, 205, 206, 5, 58, 0, 0, 206, 10, 1, 0, 0, + 0, 207, 208, 5, 59, 0, 0, 208, 12, 1, 0, 0, 0, 209, 210, 5, 46, 0, 0, 210, + 14, 1, 0, 0, 0, 211, 212, 5, 44, 0, 0, 212, 16, 1, 0, 0, 0, 213, 214, 5, + 91, 0, 0, 214, 18, 1, 0, 0, 0, 215, 216, 5, 93, 0, 0, 216, 20, 1, 0, 0, + 0, 217, 218, 5, 40, 0, 0, 218, 22, 1, 0, 0, 0, 219, 220, 5, 41, 0, 0, 220, + 24, 1, 0, 0, 0, 221, 222, 5, 123, 0, 0, 222, 26, 1, 0, 0, 0, 223, 224, + 5, 125, 0, 0, 224, 28, 1, 0, 0, 0, 225, 226, 5, 62, 0, 0, 226, 30, 1, 0, + 0, 0, 227, 228, 5, 60, 0, 0, 228, 32, 1, 0, 0, 0, 229, 230, 5, 61, 0, 0, + 230, 231, 5, 61, 0, 0, 231, 34, 1, 0, 0, 0, 232, 233, 5, 62, 0, 0, 233, + 234, 5, 61, 0, 0, 234, 36, 1, 0, 0, 0, 235, 236, 5, 60, 0, 0, 236, 237, + 5, 61, 0, 0, 237, 38, 1, 0, 0, 0, 238, 239, 5, 33, 0, 0, 239, 240, 5, 61, + 0, 0, 240, 40, 1, 0, 0, 0, 241, 242, 5, 42, 0, 0, 242, 42, 1, 0, 0, 0, + 243, 244, 5, 47, 0, 0, 244, 44, 1, 0, 0, 0, 245, 246, 5, 37, 0, 0, 246, + 46, 1, 0, 0, 0, 247, 248, 5, 43, 0, 0, 248, 48, 1, 0, 0, 0, 249, 250, 5, + 45, 0, 0, 250, 50, 1, 0, 0, 0, 251, 252, 5, 45, 0, 0, 252, 253, 5, 45, + 0, 0, 253, 52, 1, 0, 0, 0, 254, 255, 5, 43, 0, 0, 255, 256, 5, 43, 0, 0, + 256, 54, 1, 0, 0, 0, 257, 258, 5, 65, 0, 0, 258, 259, 5, 78, 0, 0, 259, + 263, 5, 68, 0, 0, 260, 261, 5, 38, 0, 0, 261, 263, 5, 38, 0, 0, 262, 257, + 1, 0, 0, 0, 262, 260, 1, 0, 0, 0, 263, 56, 1, 0, 0, 0, 264, 265, 5, 79, + 0, 0, 265, 269, 5, 82, 0, 0, 266, 267, 5, 124, 0, 0, 267, 269, 5, 124, + 0, 0, 268, 264, 1, 0, 0, 0, 268, 266, 1, 0, 0, 0, 269, 58, 1, 0, 0, 0, + 270, 271, 3, 13, 6, 0, 271, 272, 3, 13, 6, 0, 272, 60, 1, 0, 0, 0, 273, + 274, 5, 61, 0, 0, 274, 62, 1, 0, 0, 0, 275, 276, 5, 63, 0, 0, 276, 64, + 1, 0, 0, 0, 277, 278, 5, 33, 0, 0, 278, 279, 5, 126, 0, 0, 279, 66, 1, + 0, 0, 0, 280, 281, 5, 61, 0, 0, 281, 282, 5, 126, 0, 0, 282, 68, 1, 0, + 0, 0, 283, 284, 5, 70, 0, 0, 284, 285, 5, 79, 0, 0, 285, 286, 5, 82, 0, + 0, 286, 70, 1, 0, 0, 0, 287, 288, 5, 82, 0, 0, 288, 289, 5, 69, 0, 0, 289, + 290, 5, 84, 0, 0, 290, 291, 5, 85, 0, 0, 291, 292, 5, 82, 0, 0, 292, 293, + 5, 78, 0, 0, 293, 72, 1, 0, 0, 0, 294, 295, 5, 87, 0, 0, 295, 296, 5, 65, + 0, 0, 296, 297, 5, 73, 0, 0, 297, 298, 5, 84, 0, 0, 298, 299, 5, 70, 0, + 0, 299, 300, 5, 79, 0, 0, 300, 301, 5, 82, 0, 0, 301, 74, 1, 0, 0, 0, 302, + 303, 5, 79, 0, 0, 303, 304, 5, 80, 0, 0, 304, 305, 5, 84, 0, 0, 305, 306, + 5, 73, 0, 0, 306, 307, 5, 79, 0, 0, 307, 308, 5, 78, 0, 0, 308, 309, 5, + 83, 0, 0, 309, 76, 1, 0, 0, 0, 310, 311, 5, 84, 0, 0, 311, 312, 5, 73, + 0, 0, 312, 313, 5, 77, 0, 0, 313, 314, 5, 69, 0, 0, 314, 315, 5, 79, 0, + 0, 315, 316, 5, 85, 0, 0, 316, 317, 5, 84, 0, 0, 317, 78, 1, 0, 0, 0, 318, + 319, 5, 68, 0, 0, 319, 320, 5, 73, 0, 0, 320, 321, 5, 83, 0, 0, 321, 322, + 5, 84, 0, 0, 322, 323, 5, 73, 0, 0, 323, 324, 5, 78, 0, 0, 324, 325, 5, + 67, 0, 0, 325, 326, 5, 84, 0, 0, 326, 80, 1, 0, 0, 0, 327, 328, 5, 70, + 0, 0, 328, 329, 5, 73, 0, 0, 329, 330, 5, 76, 0, 0, 330, 331, 5, 84, 0, + 0, 331, 332, 5, 69, 0, 0, 332, 333, 5, 82, 0, 0, 333, 82, 1, 0, 0, 0, 334, + 335, 5, 67, 0, 0, 335, 336, 5, 85, 0, 0, 336, 337, 5, 82, 0, 0, 337, 338, + 5, 82, 0, 0, 338, 339, 5, 69, 0, 0, 339, 340, 5, 78, 0, 0, 340, 341, 5, + 84, 0, 0, 341, 84, 1, 0, 0, 0, 342, 343, 5, 83, 0, 0, 343, 344, 5, 79, + 0, 0, 344, 345, 5, 82, 0, 0, 345, 346, 5, 84, 0, 0, 346, 86, 1, 0, 0, 0, + 347, 348, 5, 76, 0, 0, 348, 349, 5, 73, 0, 0, 349, 350, 5, 77, 0, 0, 350, + 351, 5, 73, 0, 0, 351, 352, 5, 84, 0, 0, 352, 88, 1, 0, 0, 0, 353, 354, + 5, 76, 0, 0, 354, 355, 5, 69, 0, 0, 355, 356, 5, 84, 0, 0, 356, 90, 1, + 0, 0, 0, 357, 358, 5, 67, 0, 0, 358, 359, 5, 79, 0, 0, 359, 360, 5, 76, + 0, 0, 360, 361, 5, 76, 0, 0, 361, 362, 5, 69, 0, 0, 362, 363, 5, 67, 0, + 0, 363, 364, 5, 84, 0, 0, 364, 92, 1, 0, 0, 0, 365, 366, 5, 65, 0, 0, 366, + 367, 5, 83, 0, 0, 367, 373, 5, 67, 0, 0, 368, 369, 5, 68, 0, 0, 369, 370, + 5, 69, 0, 0, 370, 371, 5, 83, 0, 0, 371, 373, 5, 67, 0, 0, 372, 365, 1, + 0, 0, 0, 372, 368, 1, 0, 0, 0, 373, 94, 1, 0, 0, 0, 374, 375, 5, 78, 0, + 0, 375, 376, 5, 79, 0, 0, 376, 377, 5, 78, 0, 0, 377, 378, 5, 69, 0, 0, + 378, 96, 1, 0, 0, 0, 379, 380, 5, 78, 0, 0, 380, 381, 5, 85, 0, 0, 381, + 382, 5, 76, 0, 0, 382, 383, 5, 76, 0, 0, 383, 98, 1, 0, 0, 0, 384, 385, + 5, 84, 0, 0, 385, 386, 5, 82, 0, 0, 386, 387, 5, 85, 0, 0, 387, 403, 5, + 69, 0, 0, 388, 389, 5, 116, 0, 0, 389, 390, 5, 114, 0, 0, 390, 391, 5, + 117, 0, 0, 391, 403, 5, 101, 0, 0, 392, 393, 5, 70, 0, 0, 393, 394, 5, + 65, 0, 0, 394, 395, 5, 76, 0, 0, 395, 396, 5, 83, 0, 0, 396, 403, 5, 69, + 0, 0, 397, 398, 5, 102, 0, 0, 398, 399, 5, 97, 0, 0, 399, 400, 5, 108, + 0, 0, 400, 401, 5, 115, 0, 0, 401, 403, 5, 101, 0, 0, 402, 384, 1, 0, 0, + 0, 402, 388, 1, 0, 0, 0, 402, 392, 1, 0, 0, 0, 402, 397, 1, 0, 0, 0, 403, + 100, 1, 0, 0, 0, 404, 405, 5, 85, 0, 0, 405, 406, 5, 83, 0, 0, 406, 407, + 5, 69, 0, 0, 407, 102, 1, 0, 0, 0, 408, 409, 5, 73, 0, 0, 409, 410, 5, + 78, 0, 0, 410, 411, 5, 84, 0, 0, 411, 412, 5, 79, 0, 0, 412, 104, 1, 0, + 0, 0, 413, 414, 5, 75, 0, 0, 414, 415, 5, 69, 0, 0, 415, 416, 5, 69, 0, + 0, 416, 417, 5, 80, 0, 0, 417, 106, 1, 0, 0, 0, 418, 419, 5, 87, 0, 0, + 419, 420, 5, 73, 0, 0, 420, 421, 5, 84, 0, 0, 421, 422, 5, 72, 0, 0, 422, + 108, 1, 0, 0, 0, 423, 424, 5, 67, 0, 0, 424, 425, 5, 79, 0, 0, 425, 426, + 5, 85, 0, 0, 426, 427, 5, 78, 0, 0, 427, 428, 5, 84, 0, 0, 428, 110, 1, + 0, 0, 0, 429, 430, 5, 65, 0, 0, 430, 431, 5, 76, 0, 0, 431, 432, 5, 76, + 0, 0, 432, 112, 1, 0, 0, 0, 433, 434, 5, 65, 0, 0, 434, 435, 5, 78, 0, + 0, 435, 436, 5, 89, 0, 0, 436, 114, 1, 0, 0, 0, 437, 438, 5, 65, 0, 0, + 438, 439, 5, 71, 0, 0, 439, 440, 5, 71, 0, 0, 440, 441, 5, 82, 0, 0, 441, + 442, 5, 69, 0, 0, 442, 443, 5, 71, 0, 0, 443, 444, 5, 65, 0, 0, 444, 445, + 5, 84, 0, 0, 445, 446, 5, 69, 0, 0, 446, 116, 1, 0, 0, 0, 447, 448, 5, + 69, 0, 0, 448, 449, 5, 86, 0, 0, 449, 450, 5, 69, 0, 0, 450, 451, 5, 78, + 0, 0, 451, 452, 5, 84, 0, 0, 452, 118, 1, 0, 0, 0, 453, 454, 5, 76, 0, + 0, 454, 455, 5, 73, 0, 0, 455, 456, 5, 75, 0, 0, 456, 457, 5, 69, 0, 0, + 457, 120, 1, 0, 0, 0, 458, 459, 5, 78, 0, 0, 459, 460, 5, 79, 0, 0, 460, + 463, 5, 84, 0, 0, 461, 463, 5, 33, 0, 0, 462, 458, 1, 0, 0, 0, 462, 461, + 1, 0, 0, 0, 463, 122, 1, 0, 0, 0, 464, 465, 5, 73, 0, 0, 465, 466, 5, 78, + 0, 0, 466, 124, 1, 0, 0, 0, 467, 468, 5, 68, 0, 0, 468, 469, 5, 79, 0, + 0, 469, 126, 1, 0, 0, 0, 470, 471, 5, 87, 0, 0, 471, 472, 5, 72, 0, 0, + 472, 473, 5, 73, 0, 0, 473, 474, 5, 76, 0, 0, 474, 475, 5, 69, 0, 0, 475, + 128, 1, 0, 0, 0, 476, 477, 5, 64, 0, 0, 477, 130, 1, 0, 0, 0, 478, 480, + 3, 151, 75, 0, 479, 478, 1, 0, 0, 0, 480, 481, 1, 0, 0, 0, 481, 479, 1, + 0, 0, 0, 481, 482, 1, 0, 0, 0, 482, 492, 1, 0, 0, 0, 483, 487, 3, 153, + 76, 0, 484, 486, 3, 131, 65, 0, 485, 484, 1, 0, 0, 0, 486, 489, 1, 0, 0, + 0, 487, 485, 1, 0, 0, 0, 487, 488, 1, 0, 0, 0, 488, 491, 1, 0, 0, 0, 489, + 487, 1, 0, 0, 0, 490, 483, 1, 0, 0, 0, 491, 494, 1, 0, 0, 0, 492, 490, + 1, 0, 0, 0, 492, 493, 1, 0, 0, 0, 493, 504, 1, 0, 0, 0, 494, 492, 1, 0, + 0, 0, 495, 499, 3, 157, 78, 0, 496, 498, 3, 131, 65, 0, 497, 496, 1, 0, + 0, 0, 498, 501, 1, 0, 0, 0, 499, 497, 1, 0, 0, 0, 499, 500, 1, 0, 0, 0, + 500, 503, 1, 0, 0, 0, 501, 499, 1, 0, 0, 0, 502, 495, 1, 0, 0, 0, 503, + 506, 1, 0, 0, 0, 504, 502, 1, 0, 0, 0, 504, 505, 1, 0, 0, 0, 505, 132, + 1, 0, 0, 0, 506, 504, 1, 0, 0, 0, 507, 508, 3, 155, 77, 0, 508, 134, 1, + 0, 0, 0, 509, 514, 3, 161, 80, 0, 510, 514, 3, 159, 79, 0, 511, 514, 3, + 163, 81, 0, 512, 514, 3, 165, 82, 0, 513, 509, 1, 0, 0, 0, 513, 510, 1, + 0, 0, 0, 513, 511, 1, 0, 0, 0, 513, 512, 1, 0, 0, 0, 514, 136, 1, 0, 0, + 0, 515, 517, 7, 2, 0, 0, 516, 515, 1, 0, 0, 0, 517, 518, 1, 0, 0, 0, 518, + 516, 1, 0, 0, 0, 518, 519, 1, 0, 0, 0, 519, 138, 1, 0, 0, 0, 520, 521, + 3, 147, 73, 0, 521, 523, 3, 13, 6, 0, 522, 524, 7, 2, 0, 0, 523, 522, 1, + 0, 0, 0, 524, 525, 1, 0, 0, 0, 525, 523, 1, 0, 0, 0, 525, 526, 1, 0, 0, + 0, 526, 528, 1, 0, 0, 0, 527, 529, 3, 149, 74, 0, 528, 527, 1, 0, 0, 0, + 528, 529, 1, 0, 0, 0, 529, 535, 1, 0, 0, 0, 530, 532, 3, 147, 73, 0, 531, + 533, 3, 149, 74, 0, 532, 531, 1, 0, 0, 0, 532, 533, 1, 0, 0, 0, 533, 535, + 1, 0, 0, 0, 534, 520, 1, 0, 0, 0, 534, 530, 1, 0, 0, 0, 535, 140, 1, 0, + 0, 0, 536, 537, 3, 131, 65, 0, 537, 538, 3, 167, 83, 0, 538, 142, 1, 0, + 0, 0, 539, 540, 9, 0, 0, 0, 540, 144, 1, 0, 0, 0, 541, 542, 7, 3, 0, 0, + 542, 146, 1, 0, 0, 0, 543, 552, 5, 48, 0, 0, 544, 548, 7, 4, 0, 0, 545, + 547, 7, 2, 0, 0, 546, 545, 1, 0, 0, 0, 547, 550, 1, 0, 0, 0, 548, 546, + 1, 0, 0, 0, 548, 549, 1, 0, 0, 0, 549, 552, 1, 0, 0, 0, 550, 548, 1, 0, + 0, 0, 551, 543, 1, 0, 0, 0, 551, 544, 1, 0, 0, 0, 552, 148, 1, 0, 0, 0, + 553, 555, 7, 5, 0, 0, 554, 556, 7, 6, 0, 0, 555, 554, 1, 0, 0, 0, 555, + 556, 1, 0, 0, 0, 556, 558, 1, 0, 0, 0, 557, 559, 7, 2, 0, 0, 558, 557, + 1, 0, 0, 0, 559, 560, 1, 0, 0, 0, 560, 558, 1, 0, 0, 0, 560, 561, 1, 0, + 0, 0, 561, 150, 1, 0, 0, 0, 562, 563, 7, 7, 0, 0, 563, 152, 1, 0, 0, 0, + 564, 565, 3, 155, 77, 0, 565, 154, 1, 0, 0, 0, 566, 567, 5, 95, 0, 0, 567, + 156, 1, 0, 0, 0, 568, 569, 2, 48, 57, 0, 569, 158, 1, 0, 0, 0, 570, 578, + 5, 34, 0, 0, 571, 572, 5, 92, 0, 0, 572, 577, 9, 0, 0, 0, 573, 574, 5, + 34, 0, 0, 574, 577, 5, 34, 0, 0, 575, 577, 8, 8, 0, 0, 576, 571, 1, 0, + 0, 0, 576, 573, 1, 0, 0, 0, 576, 575, 1, 0, 0, 0, 577, 580, 1, 0, 0, 0, + 578, 576, 1, 0, 0, 0, 578, 579, 1, 0, 0, 0, 579, 581, 1, 0, 0, 0, 580, + 578, 1, 0, 0, 0, 581, 582, 5, 34, 0, 0, 582, 160, 1, 0, 0, 0, 583, 591, + 5, 39, 0, 0, 584, 585, 5, 92, 0, 0, 585, 590, 9, 0, 0, 0, 586, 587, 5, + 39, 0, 0, 587, 590, 5, 39, 0, 0, 588, 590, 8, 9, 0, 0, 589, 584, 1, 0, + 0, 0, 589, 586, 1, 0, 0, 0, 589, 588, 1, 0, 0, 0, 590, 593, 1, 0, 0, 0, + 591, 589, 1, 0, 0, 0, 591, 592, 1, 0, 0, 0, 592, 594, 1, 0, 0, 0, 593, + 591, 1, 0, 0, 0, 594, 595, 5, 39, 0, 0, 595, 162, 1, 0, 0, 0, 596, 602, + 5, 96, 0, 0, 597, 598, 5, 92, 0, 0, 598, 601, 5, 96, 0, 0, 599, 601, 8, + 10, 0, 0, 600, 597, 1, 0, 0, 0, 600, 599, 1, 0, 0, 0, 601, 604, 1, 0, 0, + 0, 602, 600, 1, 0, 0, 0, 602, 603, 1, 0, 0, 0, 603, 605, 1, 0, 0, 0, 604, + 602, 1, 0, 0, 0, 605, 606, 5, 96, 0, 0, 606, 164, 1, 0, 0, 0, 607, 613, + 5, 180, 0, 0, 608, 609, 5, 92, 0, 0, 609, 612, 5, 180, 0, 0, 610, 612, + 8, 11, 0, 0, 611, 608, 1, 0, 0, 0, 611, 610, 1, 0, 0, 0, 612, 615, 1, 0, + 0, 0, 613, 611, 1, 0, 0, 0, 613, 614, 1, 0, 0, 0, 614, 616, 1, 0, 0, 0, + 615, 613, 1, 0, 0, 0, 616, 617, 5, 180, 0, 0, 617, 166, 1, 0, 0, 0, 618, + 619, 5, 58, 0, 0, 619, 620, 5, 58, 0, 0, 620, 168, 1, 0, 0, 0, 32, 0, 175, + 189, 197, 262, 268, 372, 402, 462, 481, 487, 492, 499, 504, 513, 518, 525, + 528, 532, 534, 548, 551, 555, 560, 576, 578, 589, 591, 600, 602, 611, 613, + 1, 0, 1, 0, + } + deserializer := antlr.NewATNDeserializer(nil) + staticData.atn = deserializer.Deserialize(staticData.serializedATN) + atn := staticData.atn + staticData.decisionToDFA = make([]*antlr.DFA, len(atn.DecisionToState)) + decisionToDFA := staticData.decisionToDFA + for index, state := range atn.DecisionToState { + decisionToDFA[index] = antlr.NewDFA(state, index) + } +} + +// FqlLexerInit initializes any static state used to implement FqlLexer. By default the +// static state used to implement the lexer is lazily initialized during the first call to +// NewFqlLexer(). You can call this function if you wish to initialize the static state ahead +// of time. +func FqlLexerInit() { + staticData := &fqllexerLexerStaticData + staticData.once.Do(fqllexerLexerInit) +} + +// NewFqlLexer produces a new lexer instance for the optional input antlr.CharStream. +func NewFqlLexer(input antlr.CharStream) *FqlLexer { + FqlLexerInit() + l := new(FqlLexer) + l.BaseLexer = antlr.NewBaseLexer(input) + staticData := &fqllexerLexerStaticData + l.Interpreter = antlr.NewLexerATNSimulator(l, staticData.atn, staticData.decisionToDFA, staticData.predictionContextCache) + l.channelNames = staticData.channelNames + l.modeNames = staticData.modeNames + l.RuleNames = staticData.ruleNames + l.LiteralNames = staticData.literalNames + l.SymbolicNames = staticData.symbolicNames l.GrammarFileName = "FqlLexer.g4" // TODO: l.EOF = antlr.TokenEOF diff --git a/pkg/parser/fql/fql_parser.go b/pkg/parser/fql/fql_parser.go index 80ae4f1b..3daa028a 100644 --- a/pkg/parser/fql/fql_parser.go +++ b/pkg/parser/fql/fql_parser.go @@ -1,384 +1,404 @@ -// Code generated from antlr/FqlParser.g4 by ANTLR 4.9.3. DO NOT EDIT. +// Code generated from java-escape by ANTLR 4.11.1. DO NOT EDIT. package fql // FqlParser import ( "fmt" - "reflect" "strconv" + "sync" - "github.com/antlr/antlr4/runtime/Go/antlr" + "github.com/antlr/antlr4/runtime/Go/antlr/v4" ) // Suppress unused import errors var _ = fmt.Printf -var _ = reflect.Copy var _ = strconv.Itoa - -var parserATN = []uint16{ - 3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 3, 74, 649, - 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, - 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, - 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, - 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, - 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, - 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, - 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, - 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, 9, 44, - 4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 4, 48, 9, 48, 4, 49, 9, 49, 4, - 50, 9, 50, 4, 51, 9, 51, 4, 52, 9, 52, 4, 53, 9, 53, 4, 54, 9, 54, 4, 55, - 9, 55, 4, 56, 9, 56, 4, 57, 9, 57, 4, 58, 9, 58, 4, 59, 9, 59, 4, 60, 9, - 60, 4, 61, 9, 61, 4, 62, 9, 62, 4, 63, 9, 63, 4, 64, 9, 64, 4, 65, 9, 65, - 4, 66, 9, 66, 4, 67, 9, 67, 4, 68, 9, 68, 4, 69, 9, 69, 4, 70, 9, 70, 4, - 71, 9, 71, 4, 72, 9, 72, 4, 73, 9, 73, 3, 2, 7, 2, 148, 10, 2, 12, 2, 14, - 2, 151, 11, 2, 3, 2, 3, 2, 3, 3, 3, 3, 3, 4, 3, 4, 3, 5, 3, 5, 3, 5, 3, - 6, 7, 6, 163, 10, 6, 12, 6, 14, 6, 166, 11, 6, 3, 6, 3, 6, 3, 7, 3, 7, - 3, 7, 5, 7, 173, 10, 7, 3, 8, 3, 8, 5, 8, 177, 10, 8, 3, 9, 3, 9, 3, 9, - 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 188, 10, 9, 3, 10, 3, 10, 5, - 10, 192, 10, 10, 3, 10, 3, 10, 3, 11, 3, 11, 3, 11, 3, 11, 5, 11, 200, - 10, 11, 3, 11, 3, 11, 3, 11, 7, 11, 205, 10, 11, 12, 11, 14, 11, 208, 11, - 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 5, 11, 215, 10, 11, 3, 11, 3, 11, - 3, 11, 7, 11, 220, 10, 11, 12, 11, 14, 11, 223, 11, 11, 3, 11, 3, 11, 5, - 11, 227, 10, 11, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 5, 12, - 236, 10, 12, 3, 13, 3, 13, 3, 13, 3, 13, 5, 13, 242, 10, 13, 3, 14, 3, - 14, 5, 14, 246, 10, 14, 3, 15, 3, 15, 5, 15, 250, 10, 15, 3, 16, 3, 16, - 5, 16, 254, 10, 16, 3, 17, 3, 17, 3, 17, 3, 18, 3, 18, 3, 18, 3, 18, 5, - 18, 263, 10, 18, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 5, 19, 270, 10, 19, - 3, 20, 3, 20, 3, 20, 3, 20, 7, 20, 276, 10, 20, 12, 20, 14, 20, 279, 11, - 20, 3, 21, 3, 21, 5, 21, 283, 10, 21, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, - 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, - 22, 3, 22, 3, 22, 5, 22, 303, 10, 22, 3, 23, 3, 23, 3, 23, 3, 23, 3, 24, - 3, 24, 3, 24, 7, 24, 312, 10, 24, 12, 24, 14, 24, 315, 11, 24, 3, 25, 3, - 25, 3, 25, 3, 25, 7, 25, 321, 10, 25, 12, 25, 14, 25, 324, 11, 25, 3, 26, - 3, 26, 3, 26, 3, 26, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 5, 27, 336, - 10, 27, 5, 27, 338, 10, 27, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 29, 3, - 29, 3, 29, 3, 29, 3, 29, 3, 29, 5, 29, 351, 10, 29, 3, 29, 5, 29, 354, - 10, 29, 3, 29, 5, 29, 357, 10, 29, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 5, - 30, 364, 10, 30, 3, 31, 3, 31, 3, 31, 5, 31, 369, 10, 31, 3, 32, 3, 32, - 3, 32, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 5, 33, 380, 10, 33, 3, - 34, 3, 34, 3, 34, 3, 34, 5, 34, 386, 10, 34, 3, 35, 3, 35, 5, 35, 390, - 10, 35, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 5, 36, 399, 10, - 36, 3, 37, 3, 37, 5, 37, 403, 10, 37, 3, 37, 3, 37, 3, 38, 3, 38, 3, 38, - 3, 38, 7, 38, 411, 10, 38, 12, 38, 14, 38, 414, 11, 38, 3, 38, 5, 38, 417, - 10, 38, 5, 38, 419, 10, 38, 3, 38, 3, 38, 3, 39, 3, 39, 3, 40, 3, 40, 3, - 41, 3, 41, 3, 42, 3, 42, 3, 43, 3, 43, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, - 3, 44, 3, 44, 3, 44, 3, 44, 5, 44, 442, 10, 44, 3, 45, 3, 45, 3, 45, 3, - 45, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 5, 46, 453, 10, 46, 3, 47, 3, 47, - 3, 47, 3, 48, 7, 48, 459, 10, 48, 12, 48, 14, 48, 462, 11, 48, 3, 49, 3, - 49, 6, 49, 466, 10, 49, 13, 49, 14, 49, 467, 3, 50, 3, 50, 3, 50, 3, 50, - 3, 50, 5, 50, 475, 10, 50, 3, 51, 3, 51, 5, 51, 479, 10, 51, 3, 52, 3, - 52, 3, 52, 3, 52, 5, 52, 485, 10, 52, 3, 52, 3, 52, 3, 53, 3, 53, 3, 53, - 5, 53, 492, 10, 53, 3, 54, 3, 54, 3, 54, 7, 54, 497, 10, 54, 12, 54, 14, - 54, 500, 11, 54, 3, 54, 5, 54, 503, 10, 54, 3, 55, 5, 55, 506, 10, 55, - 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 5, 55, 513, 10, 55, 3, 55, 5, 55, 516, - 10, 55, 3, 56, 3, 56, 3, 57, 3, 57, 3, 58, 3, 58, 3, 58, 3, 58, 3, 59, - 3, 59, 3, 59, 5, 59, 529, 10, 59, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 5, - 60, 536, 10, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, - 3, 60, 3, 60, 3, 60, 5, 60, 549, 10, 60, 3, 60, 3, 60, 7, 60, 553, 10, - 60, 12, 60, 14, 60, 556, 11, 60, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, - 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, - 3, 61, 3, 61, 3, 61, 7, 61, 577, 10, 61, 12, 61, 14, 61, 580, 11, 61, 3, - 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, - 5, 62, 593, 10, 62, 3, 62, 3, 62, 5, 62, 597, 10, 62, 5, 62, 599, 10, 62, - 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, - 62, 3, 62, 7, 62, 613, 10, 62, 12, 62, 14, 62, 616, 11, 62, 3, 63, 3, 63, - 3, 63, 5, 63, 621, 10, 63, 3, 64, 3, 64, 3, 65, 5, 65, 626, 10, 65, 3, - 65, 3, 65, 3, 66, 5, 66, 631, 10, 66, 3, 66, 3, 66, 3, 67, 3, 67, 3, 68, - 3, 68, 3, 69, 3, 69, 3, 70, 3, 70, 3, 71, 3, 71, 3, 72, 3, 72, 3, 73, 3, - 73, 3, 73, 2, 5, 118, 120, 122, 74, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, - 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, - 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, - 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, - 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 2, 12, 3, 2, 68, - 69, 3, 2, 50, 51, 6, 2, 30, 31, 40, 46, 48, 49, 54, 61, 6, 2, 37, 39, 47, - 47, 50, 53, 62, 66, 4, 2, 50, 50, 58, 59, 3, 2, 17, 22, 4, 2, 26, 27, 63, - 63, 3, 2, 35, 36, 3, 2, 23, 25, 3, 2, 26, 27, 2, 688, 2, 149, 3, 2, 2, - 2, 4, 154, 3, 2, 2, 2, 6, 156, 3, 2, 2, 2, 8, 158, 3, 2, 2, 2, 10, 164, - 3, 2, 2, 2, 12, 172, 3, 2, 2, 2, 14, 176, 3, 2, 2, 2, 16, 187, 3, 2, 2, - 2, 18, 189, 3, 2, 2, 2, 20, 226, 3, 2, 2, 2, 22, 235, 3, 2, 2, 2, 24, 241, - 3, 2, 2, 2, 26, 245, 3, 2, 2, 2, 28, 249, 3, 2, 2, 2, 30, 253, 3, 2, 2, - 2, 32, 255, 3, 2, 2, 2, 34, 258, 3, 2, 2, 2, 36, 269, 3, 2, 2, 2, 38, 271, - 3, 2, 2, 2, 40, 280, 3, 2, 2, 2, 42, 302, 3, 2, 2, 2, 44, 304, 3, 2, 2, - 2, 46, 308, 3, 2, 2, 2, 48, 316, 3, 2, 2, 2, 50, 325, 3, 2, 2, 2, 52, 337, - 3, 2, 2, 2, 54, 339, 3, 2, 2, 2, 56, 344, 3, 2, 2, 2, 58, 363, 3, 2, 2, - 2, 60, 368, 3, 2, 2, 2, 62, 370, 3, 2, 2, 2, 64, 373, 3, 2, 2, 2, 66, 385, - 3, 2, 2, 2, 68, 389, 3, 2, 2, 2, 70, 398, 3, 2, 2, 2, 72, 400, 3, 2, 2, - 2, 74, 406, 3, 2, 2, 2, 76, 422, 3, 2, 2, 2, 78, 424, 3, 2, 2, 2, 80, 426, - 3, 2, 2, 2, 82, 428, 3, 2, 2, 2, 84, 430, 3, 2, 2, 2, 86, 441, 3, 2, 2, - 2, 88, 443, 3, 2, 2, 2, 90, 452, 3, 2, 2, 2, 92, 454, 3, 2, 2, 2, 94, 460, - 3, 2, 2, 2, 96, 463, 3, 2, 2, 2, 98, 474, 3, 2, 2, 2, 100, 476, 3, 2, 2, - 2, 102, 480, 3, 2, 2, 2, 104, 491, 3, 2, 2, 2, 106, 493, 3, 2, 2, 2, 108, - 515, 3, 2, 2, 2, 110, 517, 3, 2, 2, 2, 112, 519, 3, 2, 2, 2, 114, 521, - 3, 2, 2, 2, 116, 528, 3, 2, 2, 2, 118, 535, 3, 2, 2, 2, 120, 557, 3, 2, - 2, 2, 122, 598, 3, 2, 2, 2, 124, 617, 3, 2, 2, 2, 126, 622, 3, 2, 2, 2, - 128, 625, 3, 2, 2, 2, 130, 630, 3, 2, 2, 2, 132, 634, 3, 2, 2, 2, 134, - 636, 3, 2, 2, 2, 136, 638, 3, 2, 2, 2, 138, 640, 3, 2, 2, 2, 140, 642, - 3, 2, 2, 2, 142, 644, 3, 2, 2, 2, 144, 646, 3, 2, 2, 2, 146, 148, 5, 4, - 3, 2, 147, 146, 3, 2, 2, 2, 148, 151, 3, 2, 2, 2, 149, 147, 3, 2, 2, 2, - 149, 150, 3, 2, 2, 2, 150, 152, 3, 2, 2, 2, 151, 149, 3, 2, 2, 2, 152, - 153, 5, 10, 6, 2, 153, 3, 3, 2, 2, 2, 154, 155, 5, 6, 4, 2, 155, 5, 3, - 2, 2, 2, 156, 157, 5, 8, 5, 2, 157, 7, 3, 2, 2, 2, 158, 159, 7, 53, 2, - 2, 159, 160, 5, 92, 47, 2, 160, 9, 3, 2, 2, 2, 161, 163, 5, 12, 7, 2, 162, - 161, 3, 2, 2, 2, 163, 166, 3, 2, 2, 2, 164, 162, 3, 2, 2, 2, 164, 165, - 3, 2, 2, 2, 165, 167, 3, 2, 2, 2, 166, 164, 3, 2, 2, 2, 167, 168, 5, 14, - 8, 2, 168, 11, 3, 2, 2, 2, 169, 173, 5, 16, 9, 2, 170, 173, 5, 100, 51, - 2, 171, 173, 5, 56, 29, 2, 172, 169, 3, 2, 2, 2, 172, 170, 3, 2, 2, 2, - 172, 171, 3, 2, 2, 2, 173, 13, 3, 2, 2, 2, 174, 177, 5, 18, 10, 2, 175, - 177, 5, 20, 11, 2, 176, 174, 3, 2, 2, 2, 176, 175, 3, 2, 2, 2, 177, 15, - 3, 2, 2, 2, 178, 179, 7, 47, 2, 2, 179, 180, 9, 2, 2, 2, 180, 181, 7, 33, - 2, 2, 181, 188, 5, 118, 60, 2, 182, 183, 7, 47, 2, 2, 183, 184, 5, 110, - 56, 2, 184, 185, 7, 33, 2, 2, 185, 186, 5, 118, 60, 2, 186, 188, 3, 2, - 2, 2, 187, 178, 3, 2, 2, 2, 187, 182, 3, 2, 2, 2, 188, 17, 3, 2, 2, 2, - 189, 191, 7, 38, 2, 2, 190, 192, 7, 42, 2, 2, 191, 190, 3, 2, 2, 2, 191, - 192, 3, 2, 2, 2, 192, 193, 3, 2, 2, 2, 193, 194, 5, 118, 60, 2, 194, 19, - 3, 2, 2, 2, 195, 196, 7, 37, 2, 2, 196, 199, 9, 2, 2, 2, 197, 198, 7, 10, - 2, 2, 198, 200, 7, 68, 2, 2, 199, 197, 3, 2, 2, 2, 199, 200, 3, 2, 2, 2, - 200, 201, 3, 2, 2, 2, 201, 202, 7, 64, 2, 2, 202, 206, 5, 22, 12, 2, 203, - 205, 5, 28, 15, 2, 204, 203, 3, 2, 2, 2, 205, 208, 3, 2, 2, 2, 206, 204, - 3, 2, 2, 2, 206, 207, 3, 2, 2, 2, 207, 209, 3, 2, 2, 2, 208, 206, 3, 2, - 2, 2, 209, 210, 5, 30, 16, 2, 210, 227, 3, 2, 2, 2, 211, 212, 7, 37, 2, - 2, 212, 214, 9, 2, 2, 2, 213, 215, 7, 65, 2, 2, 214, 213, 3, 2, 2, 2, 214, - 215, 3, 2, 2, 2, 215, 216, 3, 2, 2, 2, 216, 217, 7, 66, 2, 2, 217, 221, - 5, 118, 60, 2, 218, 220, 5, 28, 15, 2, 219, 218, 3, 2, 2, 2, 220, 223, - 3, 2, 2, 2, 221, 219, 3, 2, 2, 2, 221, 222, 3, 2, 2, 2, 222, 224, 3, 2, - 2, 2, 223, 221, 3, 2, 2, 2, 224, 225, 5, 30, 16, 2, 225, 227, 3, 2, 2, - 2, 226, 195, 3, 2, 2, 2, 226, 211, 3, 2, 2, 2, 227, 21, 3, 2, 2, 2, 228, - 236, 5, 100, 51, 2, 229, 236, 5, 72, 37, 2, 230, 236, 5, 74, 38, 2, 231, - 236, 5, 68, 35, 2, 232, 236, 5, 96, 49, 2, 233, 236, 5, 114, 58, 2, 234, - 236, 5, 66, 34, 2, 235, 228, 3, 2, 2, 2, 235, 229, 3, 2, 2, 2, 235, 230, - 3, 2, 2, 2, 235, 231, 3, 2, 2, 2, 235, 232, 3, 2, 2, 2, 235, 233, 3, 2, - 2, 2, 235, 234, 3, 2, 2, 2, 236, 23, 3, 2, 2, 2, 237, 242, 5, 34, 18, 2, - 238, 242, 5, 38, 20, 2, 239, 242, 5, 32, 17, 2, 240, 242, 5, 42, 22, 2, - 241, 237, 3, 2, 2, 2, 241, 238, 3, 2, 2, 2, 241, 239, 3, 2, 2, 2, 241, - 240, 3, 2, 2, 2, 242, 25, 3, 2, 2, 2, 243, 246, 5, 16, 9, 2, 244, 246, - 5, 100, 51, 2, 245, 243, 3, 2, 2, 2, 245, 244, 3, 2, 2, 2, 246, 27, 3, - 2, 2, 2, 247, 250, 5, 26, 14, 2, 248, 250, 5, 24, 13, 2, 249, 247, 3, 2, - 2, 2, 249, 248, 3, 2, 2, 2, 250, 29, 3, 2, 2, 2, 251, 254, 5, 18, 10, 2, - 252, 254, 5, 20, 11, 2, 253, 251, 3, 2, 2, 2, 253, 252, 3, 2, 2, 2, 254, - 31, 3, 2, 2, 2, 255, 256, 7, 43, 2, 2, 256, 257, 5, 118, 60, 2, 257, 33, - 3, 2, 2, 2, 258, 259, 7, 46, 2, 2, 259, 262, 5, 36, 19, 2, 260, 261, 7, - 10, 2, 2, 261, 263, 5, 36, 19, 2, 262, 260, 3, 2, 2, 2, 262, 263, 3, 2, - 2, 2, 263, 35, 3, 2, 2, 2, 264, 270, 5, 82, 42, 2, 265, 270, 5, 66, 34, - 2, 266, 270, 5, 68, 35, 2, 267, 270, 5, 100, 51, 2, 268, 270, 5, 96, 49, - 2, 269, 264, 3, 2, 2, 2, 269, 265, 3, 2, 2, 2, 269, 266, 3, 2, 2, 2, 269, - 267, 3, 2, 2, 2, 269, 268, 3, 2, 2, 2, 270, 37, 3, 2, 2, 2, 271, 272, 7, - 45, 2, 2, 272, 277, 5, 40, 21, 2, 273, 274, 7, 10, 2, 2, 274, 276, 5, 40, - 21, 2, 275, 273, 3, 2, 2, 2, 276, 279, 3, 2, 2, 2, 277, 275, 3, 2, 2, 2, - 277, 278, 3, 2, 2, 2, 278, 39, 3, 2, 2, 2, 279, 277, 3, 2, 2, 2, 280, 282, - 5, 118, 60, 2, 281, 283, 7, 49, 2, 2, 282, 281, 3, 2, 2, 2, 282, 283, 3, - 2, 2, 2, 283, 41, 3, 2, 2, 2, 284, 285, 7, 48, 2, 2, 285, 303, 5, 54, 28, - 2, 286, 287, 7, 48, 2, 2, 287, 303, 5, 48, 25, 2, 288, 289, 7, 48, 2, 2, - 289, 290, 5, 46, 24, 2, 290, 291, 5, 48, 25, 2, 291, 303, 3, 2, 2, 2, 292, - 293, 7, 48, 2, 2, 293, 294, 5, 46, 24, 2, 294, 295, 5, 52, 27, 2, 295, - 303, 3, 2, 2, 2, 296, 297, 7, 48, 2, 2, 297, 298, 5, 46, 24, 2, 298, 299, - 5, 54, 28, 2, 299, 303, 3, 2, 2, 2, 300, 301, 7, 48, 2, 2, 301, 303, 5, - 46, 24, 2, 302, 284, 3, 2, 2, 2, 302, 286, 3, 2, 2, 2, 302, 288, 3, 2, - 2, 2, 302, 292, 3, 2, 2, 2, 302, 296, 3, 2, 2, 2, 302, 300, 3, 2, 2, 2, - 303, 43, 3, 2, 2, 2, 304, 305, 7, 68, 2, 2, 305, 306, 7, 33, 2, 2, 306, - 307, 5, 118, 60, 2, 307, 45, 3, 2, 2, 2, 308, 313, 5, 44, 23, 2, 309, 310, - 7, 10, 2, 2, 310, 312, 5, 44, 23, 2, 311, 309, 3, 2, 2, 2, 312, 315, 3, - 2, 2, 2, 313, 311, 3, 2, 2, 2, 313, 314, 3, 2, 2, 2, 314, 47, 3, 2, 2, - 2, 315, 313, 3, 2, 2, 2, 316, 317, 7, 60, 2, 2, 317, 322, 5, 50, 26, 2, - 318, 319, 7, 10, 2, 2, 319, 321, 5, 50, 26, 2, 320, 318, 3, 2, 2, 2, 321, - 324, 3, 2, 2, 2, 322, 320, 3, 2, 2, 2, 322, 323, 3, 2, 2, 2, 323, 49, 3, - 2, 2, 2, 324, 322, 3, 2, 2, 2, 325, 326, 7, 68, 2, 2, 326, 327, 7, 33, - 2, 2, 327, 328, 5, 100, 51, 2, 328, 51, 3, 2, 2, 2, 329, 330, 7, 54, 2, - 2, 330, 338, 5, 44, 23, 2, 331, 332, 7, 54, 2, 2, 332, 335, 7, 68, 2, 2, - 333, 334, 7, 55, 2, 2, 334, 336, 7, 68, 2, 2, 335, 333, 3, 2, 2, 2, 335, - 336, 3, 2, 2, 2, 336, 338, 3, 2, 2, 2, 337, 329, 3, 2, 2, 2, 337, 331, - 3, 2, 2, 2, 338, 53, 3, 2, 2, 2, 339, 340, 7, 56, 2, 2, 340, 341, 7, 57, - 2, 2, 341, 342, 7, 54, 2, 2, 342, 343, 7, 68, 2, 2, 343, 55, 3, 2, 2, 2, - 344, 345, 7, 39, 2, 2, 345, 346, 7, 61, 2, 2, 346, 347, 5, 58, 30, 2, 347, - 348, 7, 64, 2, 2, 348, 350, 5, 60, 31, 2, 349, 351, 5, 62, 32, 2, 350, - 349, 3, 2, 2, 2, 350, 351, 3, 2, 2, 2, 351, 353, 3, 2, 2, 2, 352, 354, - 5, 32, 17, 2, 353, 352, 3, 2, 2, 2, 353, 354, 3, 2, 2, 2, 354, 356, 3, - 2, 2, 2, 355, 357, 5, 64, 33, 2, 356, 355, 3, 2, 2, 2, 356, 357, 3, 2, - 2, 2, 357, 57, 3, 2, 2, 2, 358, 364, 5, 78, 40, 2, 359, 364, 5, 68, 35, - 2, 360, 364, 5, 66, 34, 2, 361, 364, 5, 100, 51, 2, 362, 364, 5, 96, 49, - 2, 363, 358, 3, 2, 2, 2, 363, 359, 3, 2, 2, 2, 363, 360, 3, 2, 2, 2, 363, - 361, 3, 2, 2, 2, 363, 362, 3, 2, 2, 2, 364, 59, 3, 2, 2, 2, 365, 369, 5, - 100, 51, 2, 366, 369, 5, 68, 35, 2, 367, 369, 5, 96, 49, 2, 368, 365, 3, - 2, 2, 2, 368, 366, 3, 2, 2, 2, 368, 367, 3, 2, 2, 2, 369, 61, 3, 2, 2, - 2, 370, 371, 7, 40, 2, 2, 371, 372, 5, 74, 38, 2, 372, 63, 3, 2, 2, 2, - 373, 379, 7, 41, 2, 2, 374, 380, 5, 82, 42, 2, 375, 380, 5, 68, 35, 2, - 376, 380, 5, 66, 34, 2, 377, 380, 5, 96, 49, 2, 378, 380, 5, 102, 52, 2, - 379, 374, 3, 2, 2, 2, 379, 375, 3, 2, 2, 2, 379, 376, 3, 2, 2, 2, 379, - 377, 3, 2, 2, 2, 379, 378, 3, 2, 2, 2, 380, 65, 3, 2, 2, 2, 381, 382, 7, - 67, 2, 2, 382, 386, 7, 68, 2, 2, 383, 384, 7, 67, 2, 2, 384, 386, 5, 110, - 56, 2, 385, 381, 3, 2, 2, 2, 385, 383, 3, 2, 2, 2, 386, 67, 3, 2, 2, 2, - 387, 390, 7, 68, 2, 2, 388, 390, 5, 110, 56, 2, 389, 387, 3, 2, 2, 2, 389, - 388, 3, 2, 2, 2, 390, 69, 3, 2, 2, 2, 391, 399, 5, 72, 37, 2, 392, 399, - 5, 74, 38, 2, 393, 399, 5, 76, 39, 2, 394, 399, 5, 78, 40, 2, 395, 399, - 5, 80, 41, 2, 396, 399, 5, 82, 42, 2, 397, 399, 5, 84, 43, 2, 398, 391, - 3, 2, 2, 2, 398, 392, 3, 2, 2, 2, 398, 393, 3, 2, 2, 2, 398, 394, 3, 2, - 2, 2, 398, 395, 3, 2, 2, 2, 398, 396, 3, 2, 2, 2, 398, 397, 3, 2, 2, 2, - 399, 71, 3, 2, 2, 2, 400, 402, 7, 11, 2, 2, 401, 403, 5, 106, 54, 2, 402, - 401, 3, 2, 2, 2, 402, 403, 3, 2, 2, 2, 403, 404, 3, 2, 2, 2, 404, 405, - 7, 12, 2, 2, 405, 73, 3, 2, 2, 2, 406, 418, 7, 15, 2, 2, 407, 412, 5, 86, - 44, 2, 408, 409, 7, 10, 2, 2, 409, 411, 5, 86, 44, 2, 410, 408, 3, 2, 2, - 2, 411, 414, 3, 2, 2, 2, 412, 410, 3, 2, 2, 2, 412, 413, 3, 2, 2, 2, 413, - 416, 3, 2, 2, 2, 414, 412, 3, 2, 2, 2, 415, 417, 7, 10, 2, 2, 416, 415, - 3, 2, 2, 2, 416, 417, 3, 2, 2, 2, 417, 419, 3, 2, 2, 2, 418, 407, 3, 2, - 2, 2, 418, 419, 3, 2, 2, 2, 419, 420, 3, 2, 2, 2, 420, 421, 7, 16, 2, 2, - 421, 75, 3, 2, 2, 2, 422, 423, 7, 52, 2, 2, 423, 77, 3, 2, 2, 2, 424, 425, - 7, 70, 2, 2, 425, 79, 3, 2, 2, 2, 426, 427, 7, 72, 2, 2, 427, 81, 3, 2, - 2, 2, 428, 429, 7, 71, 2, 2, 429, 83, 3, 2, 2, 2, 430, 431, 9, 3, 2, 2, - 431, 85, 3, 2, 2, 2, 432, 433, 5, 90, 46, 2, 433, 434, 7, 7, 2, 2, 434, - 435, 5, 118, 60, 2, 435, 442, 3, 2, 2, 2, 436, 437, 5, 88, 45, 2, 437, - 438, 7, 7, 2, 2, 438, 439, 5, 118, 60, 2, 439, 442, 3, 2, 2, 2, 440, 442, - 5, 68, 35, 2, 441, 432, 3, 2, 2, 2, 441, 436, 3, 2, 2, 2, 441, 440, 3, - 2, 2, 2, 442, 87, 3, 2, 2, 2, 443, 444, 7, 11, 2, 2, 444, 445, 5, 118, - 60, 2, 445, 446, 7, 12, 2, 2, 446, 89, 3, 2, 2, 2, 447, 453, 7, 68, 2, - 2, 448, 453, 5, 78, 40, 2, 449, 453, 5, 66, 34, 2, 450, 453, 5, 110, 56, - 2, 451, 453, 5, 112, 57, 2, 452, 447, 3, 2, 2, 2, 452, 448, 3, 2, 2, 2, - 452, 449, 3, 2, 2, 2, 452, 450, 3, 2, 2, 2, 452, 451, 3, 2, 2, 2, 453, - 91, 3, 2, 2, 2, 454, 455, 5, 94, 48, 2, 455, 456, 7, 68, 2, 2, 456, 93, - 3, 2, 2, 2, 457, 459, 7, 73, 2, 2, 458, 457, 3, 2, 2, 2, 459, 462, 3, 2, - 2, 2, 460, 458, 3, 2, 2, 2, 460, 461, 3, 2, 2, 2, 461, 95, 3, 2, 2, 2, - 462, 460, 3, 2, 2, 2, 463, 465, 5, 98, 50, 2, 464, 466, 5, 108, 55, 2, - 465, 464, 3, 2, 2, 2, 466, 467, 3, 2, 2, 2, 467, 465, 3, 2, 2, 2, 467, - 468, 3, 2, 2, 2, 468, 97, 3, 2, 2, 2, 469, 475, 5, 68, 35, 2, 470, 475, - 5, 66, 34, 2, 471, 475, 5, 72, 37, 2, 472, 475, 5, 74, 38, 2, 473, 475, - 5, 102, 52, 2, 474, 469, 3, 2, 2, 2, 474, 470, 3, 2, 2, 2, 474, 471, 3, - 2, 2, 2, 474, 472, 3, 2, 2, 2, 474, 473, 3, 2, 2, 2, 475, 99, 3, 2, 2, - 2, 476, 478, 5, 102, 52, 2, 477, 479, 5, 144, 73, 2, 478, 477, 3, 2, 2, - 2, 478, 479, 3, 2, 2, 2, 479, 101, 3, 2, 2, 2, 480, 481, 5, 94, 48, 2, - 481, 482, 5, 104, 53, 2, 482, 484, 7, 13, 2, 2, 483, 485, 5, 106, 54, 2, - 484, 483, 3, 2, 2, 2, 484, 485, 3, 2, 2, 2, 485, 486, 3, 2, 2, 2, 486, - 487, 7, 14, 2, 2, 487, 103, 3, 2, 2, 2, 488, 492, 7, 68, 2, 2, 489, 492, - 5, 110, 56, 2, 490, 492, 5, 112, 57, 2, 491, 488, 3, 2, 2, 2, 491, 489, - 3, 2, 2, 2, 491, 490, 3, 2, 2, 2, 492, 105, 3, 2, 2, 2, 493, 498, 5, 118, - 60, 2, 494, 495, 7, 10, 2, 2, 495, 497, 5, 118, 60, 2, 496, 494, 3, 2, - 2, 2, 497, 500, 3, 2, 2, 2, 498, 496, 3, 2, 2, 2, 498, 499, 3, 2, 2, 2, - 499, 502, 3, 2, 2, 2, 500, 498, 3, 2, 2, 2, 501, 503, 7, 10, 2, 2, 502, - 501, 3, 2, 2, 2, 502, 503, 3, 2, 2, 2, 503, 107, 3, 2, 2, 2, 504, 506, - 5, 144, 73, 2, 505, 504, 3, 2, 2, 2, 505, 506, 3, 2, 2, 2, 506, 507, 3, - 2, 2, 2, 507, 508, 7, 9, 2, 2, 508, 516, 5, 90, 46, 2, 509, 510, 5, 144, - 73, 2, 510, 511, 7, 9, 2, 2, 511, 513, 3, 2, 2, 2, 512, 509, 3, 2, 2, 2, - 512, 513, 3, 2, 2, 2, 513, 514, 3, 2, 2, 2, 514, 516, 5, 88, 45, 2, 515, - 505, 3, 2, 2, 2, 515, 512, 3, 2, 2, 2, 516, 109, 3, 2, 2, 2, 517, 518, - 9, 4, 2, 2, 518, 111, 3, 2, 2, 2, 519, 520, 9, 5, 2, 2, 520, 113, 3, 2, - 2, 2, 521, 522, 5, 116, 59, 2, 522, 523, 7, 32, 2, 2, 523, 524, 5, 116, - 59, 2, 524, 115, 3, 2, 2, 2, 525, 529, 5, 82, 42, 2, 526, 529, 5, 68, 35, - 2, 527, 529, 5, 66, 34, 2, 528, 525, 3, 2, 2, 2, 528, 526, 3, 2, 2, 2, - 528, 527, 3, 2, 2, 2, 529, 117, 3, 2, 2, 2, 530, 531, 8, 60, 1, 2, 531, - 532, 5, 132, 67, 2, 532, 533, 5, 118, 60, 7, 533, 536, 3, 2, 2, 2, 534, - 536, 5, 120, 61, 2, 535, 530, 3, 2, 2, 2, 535, 534, 3, 2, 2, 2, 536, 554, - 3, 2, 2, 2, 537, 538, 12, 6, 2, 2, 538, 539, 5, 136, 69, 2, 539, 540, 5, - 118, 60, 7, 540, 553, 3, 2, 2, 2, 541, 542, 12, 5, 2, 2, 542, 543, 5, 138, - 70, 2, 543, 544, 5, 118, 60, 6, 544, 553, 3, 2, 2, 2, 545, 546, 12, 4, - 2, 2, 546, 548, 7, 34, 2, 2, 547, 549, 5, 118, 60, 2, 548, 547, 3, 2, 2, - 2, 548, 549, 3, 2, 2, 2, 549, 550, 3, 2, 2, 2, 550, 551, 7, 7, 2, 2, 551, - 553, 5, 118, 60, 5, 552, 537, 3, 2, 2, 2, 552, 541, 3, 2, 2, 2, 552, 545, - 3, 2, 2, 2, 553, 556, 3, 2, 2, 2, 554, 552, 3, 2, 2, 2, 554, 555, 3, 2, - 2, 2, 555, 119, 3, 2, 2, 2, 556, 554, 3, 2, 2, 2, 557, 558, 8, 61, 1, 2, - 558, 559, 5, 122, 62, 2, 559, 578, 3, 2, 2, 2, 560, 561, 12, 7, 2, 2, 561, - 562, 5, 126, 64, 2, 562, 563, 5, 120, 61, 8, 563, 577, 3, 2, 2, 2, 564, - 565, 12, 6, 2, 2, 565, 566, 5, 124, 63, 2, 566, 567, 5, 120, 61, 7, 567, - 577, 3, 2, 2, 2, 568, 569, 12, 5, 2, 2, 569, 570, 5, 128, 65, 2, 570, 571, - 5, 120, 61, 6, 571, 577, 3, 2, 2, 2, 572, 573, 12, 4, 2, 2, 573, 574, 5, - 130, 66, 2, 574, 575, 5, 120, 61, 5, 575, 577, 3, 2, 2, 2, 576, 560, 3, - 2, 2, 2, 576, 564, 3, 2, 2, 2, 576, 568, 3, 2, 2, 2, 576, 572, 3, 2, 2, - 2, 577, 580, 3, 2, 2, 2, 578, 576, 3, 2, 2, 2, 578, 579, 3, 2, 2, 2, 579, - 121, 3, 2, 2, 2, 580, 578, 3, 2, 2, 2, 581, 582, 8, 62, 1, 2, 582, 599, - 5, 100, 51, 2, 583, 599, 5, 114, 58, 2, 584, 599, 5, 70, 36, 2, 585, 599, - 5, 68, 35, 2, 586, 599, 5, 96, 49, 2, 587, 599, 5, 66, 34, 2, 588, 592, - 7, 13, 2, 2, 589, 593, 5, 20, 11, 2, 590, 593, 5, 56, 29, 2, 591, 593, - 5, 118, 60, 2, 592, 589, 3, 2, 2, 2, 592, 590, 3, 2, 2, 2, 592, 591, 3, - 2, 2, 2, 593, 594, 3, 2, 2, 2, 594, 596, 7, 14, 2, 2, 595, 597, 5, 144, - 73, 2, 596, 595, 3, 2, 2, 2, 596, 597, 3, 2, 2, 2, 597, 599, 3, 2, 2, 2, - 598, 581, 3, 2, 2, 2, 598, 583, 3, 2, 2, 2, 598, 584, 3, 2, 2, 2, 598, - 585, 3, 2, 2, 2, 598, 586, 3, 2, 2, 2, 598, 587, 3, 2, 2, 2, 598, 588, - 3, 2, 2, 2, 599, 614, 3, 2, 2, 2, 600, 601, 12, 12, 2, 2, 601, 602, 5, - 140, 71, 2, 602, 603, 5, 122, 62, 13, 603, 613, 3, 2, 2, 2, 604, 605, 12, - 11, 2, 2, 605, 606, 5, 142, 72, 2, 606, 607, 5, 122, 62, 12, 607, 613, - 3, 2, 2, 2, 608, 609, 12, 10, 2, 2, 609, 610, 5, 134, 68, 2, 610, 611, - 5, 122, 62, 11, 611, 613, 3, 2, 2, 2, 612, 600, 3, 2, 2, 2, 612, 604, 3, - 2, 2, 2, 612, 608, 3, 2, 2, 2, 613, 616, 3, 2, 2, 2, 614, 612, 3, 2, 2, - 2, 614, 615, 3, 2, 2, 2, 615, 123, 3, 2, 2, 2, 616, 614, 3, 2, 2, 2, 617, - 620, 9, 6, 2, 2, 618, 621, 5, 128, 65, 2, 619, 621, 5, 126, 64, 2, 620, - 618, 3, 2, 2, 2, 620, 619, 3, 2, 2, 2, 621, 125, 3, 2, 2, 2, 622, 623, - 9, 7, 2, 2, 623, 127, 3, 2, 2, 2, 624, 626, 7, 63, 2, 2, 625, 624, 3, 2, - 2, 2, 625, 626, 3, 2, 2, 2, 626, 627, 3, 2, 2, 2, 627, 628, 7, 64, 2, 2, - 628, 129, 3, 2, 2, 2, 629, 631, 7, 63, 2, 2, 630, 629, 3, 2, 2, 2, 630, - 631, 3, 2, 2, 2, 631, 632, 3, 2, 2, 2, 632, 633, 7, 62, 2, 2, 633, 131, - 3, 2, 2, 2, 634, 635, 9, 8, 2, 2, 635, 133, 3, 2, 2, 2, 636, 637, 9, 9, - 2, 2, 637, 135, 3, 2, 2, 2, 638, 639, 7, 30, 2, 2, 639, 137, 3, 2, 2, 2, - 640, 641, 7, 31, 2, 2, 641, 139, 3, 2, 2, 2, 642, 643, 9, 10, 2, 2, 643, - 141, 3, 2, 2, 2, 644, 645, 9, 11, 2, 2, 645, 143, 3, 2, 2, 2, 646, 647, - 7, 34, 2, 2, 647, 145, 3, 2, 2, 2, 68, 149, 164, 172, 176, 187, 191, 199, - 206, 214, 221, 226, 235, 241, 245, 249, 253, 262, 269, 277, 282, 302, 313, - 322, 335, 337, 350, 353, 356, 363, 368, 379, 385, 389, 398, 402, 412, 416, - 418, 441, 452, 460, 467, 474, 478, 484, 491, 498, 502, 505, 512, 515, 528, - 535, 548, 552, 554, 576, 578, 592, 596, 598, 612, 614, 620, 625, 630, -} -var literalNames = []string{ - "", "", "", "", "", "':'", "';'", "'.'", "','", "'['", "']'", "'('", "')'", - "'{'", "'}'", "'>'", "'<'", "'=='", "'>='", "'<='", "'!='", "'*'", "'/'", - "'%'", "'+'", "'-'", "'--'", "'++'", "", "", "", "'='", "'?'", "'!~'", - "'=~'", "'FOR'", "'RETURN'", "'WAITFOR'", "'OPTIONS'", "'TIMEOUT'", "'DISTINCT'", - "'FILTER'", "'CURRENT'", "'SORT'", "'LIMIT'", "'LET'", "'COLLECT'", "", - "'NONE'", "'NULL'", "", "'USE'", "'INTO'", "'KEEP'", "'WITH'", "'COUNT'", - "'ALL'", "'ANY'", "'AGGREGATE'", "'EVENT'", "'LIKE'", "", "'IN'", "'DO'", - "'WHILE'", "'@'", -} -var symbolicNames = []string{ - "", "MultiLineComment", "SingleLineComment", "WhiteSpaces", "LineTerminator", - "Colon", "SemiColon", "Dot", "Comma", "OpenBracket", "CloseBracket", "OpenParen", - "CloseParen", "OpenBrace", "CloseBrace", "Gt", "Lt", "Eq", "Gte", "Lte", - "Neq", "Multi", "Div", "Mod", "Plus", "Minus", "MinusMinus", "PlusPlus", - "And", "Or", "Range", "Assign", "QuestionMark", "RegexNotMatch", "RegexMatch", - "For", "Return", "Waitfor", "Options", "Timeout", "Distinct", "Filter", - "Current", "Sort", "Limit", "Let", "Collect", "SortDirection", "None", - "Null", "BooleanLiteral", "Use", "Into", "Keep", "With", "Count", "All", - "Any", "Aggregate", "Event", "Like", "Not", "In", "Do", "While", "Param", - "Identifier", "IgnoreIdentifier", "StringLiteral", "IntegerLiteral", "FloatLiteral", - "NamespaceSegment", "UnknownIdentifier", -} - -var ruleNames = []string{ - "program", "head", "useExpression", "use", "body", "bodyStatement", "bodyExpression", - "variableDeclaration", "returnExpression", "forExpression", "forExpressionSource", - "forExpressionClause", "forExpressionStatement", "forExpressionBody", "forExpressionReturn", - "filterClause", "limitClause", "limitClauseValue", "sortClause", "sortClauseExpression", - "collectClause", "collectSelector", "collectGrouping", "collectAggregator", - "collectAggregateSelector", "collectGroupVariable", "collectCounter", "waitForExpression", - "waitForEventName", "waitForEventSource", "optionsClause", "timeoutClause", - "param", "variable", "literal", "arrayLiteral", "objectLiteral", "booleanLiteral", - "stringLiteral", "floatLiteral", "integerLiteral", "noneLiteral", "propertyAssignment", - "computedPropertyName", "propertyName", "namespaceIdentifier", "namespace", - "memberExpression", "memberExpressionSource", "functionCallExpression", - "functionCall", "functionName", "argumentList", "memberExpressionPath", - "safeReservedWord", "unsafeReservedWord", "rangeOperator", "rangeOperand", - "expression", "predicate", "expressionAtom", "arrayOperator", "equalityOperator", - "inOperator", "likeOperator", "unaryOperator", "regexpOperator", "logicalAndOperator", - "logicalOrOperator", "multiplicativeOperator", "additiveOperator", "errorOperator", -} +var _ = sync.Once{} type FqlParser struct { *antlr.BaseParser } -// NewFqlParser produces a new parser instance for the optional input antlr.TokenStream. -// -// The *FqlParser instance produced may be reused by calling the SetInputStream method. -// The initial parser configuration is expensive to construct, and the object is not thread-safe; -// however, if used within a Golang sync.Pool, the construction cost amortizes well and the -// objects can be used in a thread-safe manner. -func NewFqlParser(input antlr.TokenStream) *FqlParser { - this := new(FqlParser) - deserializer := antlr.NewATNDeserializer(nil) - deserializedATN := deserializer.DeserializeFromUInt16(parserATN) - decisionToDFA := make([]*antlr.DFA, len(deserializedATN.DecisionToState)) - for index, ds := range deserializedATN.DecisionToState { - decisionToDFA[index] = antlr.NewDFA(ds, index) - } - this.BaseParser = antlr.NewBaseParser(input) +var fqlparserParserStaticData struct { + once sync.Once + serializedATN []int32 + literalNames []string + symbolicNames []string + ruleNames []string + predictionContextCache *antlr.PredictionContextCache + atn *antlr.ATN + decisionToDFA []*antlr.DFA +} - this.Interpreter = antlr.NewParserATNSimulator(this, deserializedATN, decisionToDFA, antlr.NewPredictionContextCache()) - this.RuleNames = ruleNames - this.LiteralNames = literalNames - this.SymbolicNames = symbolicNames - this.GrammarFileName = "FqlParser.g4" +func fqlparserParserInit() { + staticData := &fqlparserParserStaticData + staticData.literalNames = []string{ + "", "", "", "", "", "':'", "';'", "'.'", "','", "'['", "']'", "'('", + "')'", "'{'", "'}'", "'>'", "'<'", "'=='", "'>='", "'<='", "'!='", "'*'", + "'/'", "'%'", "'+'", "'-'", "'--'", "'++'", "", "", "", "'='", "'?'", + "'!~'", "'=~'", "'FOR'", "'RETURN'", "'WAITFOR'", "'OPTIONS'", "'TIMEOUT'", + "'DISTINCT'", "'FILTER'", "'CURRENT'", "'SORT'", "'LIMIT'", "'LET'", + "'COLLECT'", "", "'NONE'", "'NULL'", "", "'USE'", "'INTO'", "'KEEP'", + "'WITH'", "'COUNT'", "'ALL'", "'ANY'", "'AGGREGATE'", "'EVENT'", "'LIKE'", + "", "'IN'", "'DO'", "'WHILE'", "'@'", + } + staticData.symbolicNames = []string{ + "", "MultiLineComment", "SingleLineComment", "WhiteSpaces", "LineTerminator", + "Colon", "SemiColon", "Dot", "Comma", "OpenBracket", "CloseBracket", + "OpenParen", "CloseParen", "OpenBrace", "CloseBrace", "Gt", "Lt", "Eq", + "Gte", "Lte", "Neq", "Multi", "Div", "Mod", "Plus", "Minus", "MinusMinus", + "PlusPlus", "And", "Or", "Range", "Assign", "QuestionMark", "RegexNotMatch", + "RegexMatch", "For", "Return", "Waitfor", "Options", "Timeout", "Distinct", + "Filter", "Current", "Sort", "Limit", "Let", "Collect", "SortDirection", + "None", "Null", "BooleanLiteral", "Use", "Into", "Keep", "With", "Count", + "All", "Any", "Aggregate", "Event", "Like", "Not", "In", "Do", "While", + "Param", "Identifier", "IgnoreIdentifier", "StringLiteral", "IntegerLiteral", + "FloatLiteral", "NamespaceSegment", "UnknownIdentifier", + } + staticData.ruleNames = []string{ + "program", "head", "useExpression", "use", "body", "bodyStatement", + "bodyExpression", "variableDeclaration", "returnExpression", "forExpression", + "forExpressionSource", "forExpressionClause", "forExpressionStatement", + "forExpressionBody", "forExpressionReturn", "filterClause", "limitClause", + "limitClauseValue", "sortClause", "sortClauseExpression", "collectClause", + "collectSelector", "collectGrouping", "collectAggregator", "collectAggregateSelector", + "collectGroupVariable", "collectCounter", "waitForExpression", "waitForEventName", + "waitForEventSource", "optionsClause", "timeoutClause", "param", "variable", + "literal", "arrayLiteral", "objectLiteral", "booleanLiteral", "stringLiteral", + "floatLiteral", "integerLiteral", "noneLiteral", "propertyAssignment", + "computedPropertyName", "propertyName", "namespaceIdentifier", "namespace", + "memberExpression", "memberExpressionSource", "functionCallExpression", + "functionCall", "functionName", "argumentList", "memberExpressionPath", + "safeReservedWord", "unsafeReservedWord", "rangeOperator", "rangeOperand", + "expression", "predicate", "expressionAtom", "arrayOperator", "equalityOperator", + "inOperator", "likeOperator", "unaryOperator", "regexpOperator", "logicalAndOperator", + "logicalOrOperator", "multiplicativeOperator", "additiveOperator", "errorOperator", + } + staticData.predictionContextCache = antlr.NewPredictionContextCache() + staticData.serializedATN = []int32{ + 4, 1, 72, 647, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, + 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, + 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, + 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, + 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, + 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, + 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, + 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, + 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, + 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, + 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, + 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, + 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, + 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 1, 0, 5, 0, 146, 8, 0, + 10, 0, 12, 0, 149, 9, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, + 1, 3, 1, 4, 5, 4, 161, 8, 4, 10, 4, 12, 4, 164, 9, 4, 1, 4, 1, 4, 1, 5, + 1, 5, 1, 5, 3, 5, 171, 8, 5, 1, 6, 1, 6, 3, 6, 175, 8, 6, 1, 7, 1, 7, 1, + 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 186, 8, 7, 1, 8, 1, 8, 3, + 8, 190, 8, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 198, 8, 9, 1, 9, + 1, 9, 1, 9, 5, 9, 203, 8, 9, 10, 9, 12, 9, 206, 9, 9, 1, 9, 1, 9, 1, 9, + 1, 9, 1, 9, 3, 9, 213, 8, 9, 1, 9, 1, 9, 1, 9, 5, 9, 218, 8, 9, 10, 9, + 12, 9, 221, 9, 9, 1, 9, 1, 9, 3, 9, 225, 8, 9, 1, 10, 1, 10, 1, 10, 1, + 10, 1, 10, 1, 10, 1, 10, 3, 10, 234, 8, 10, 1, 11, 1, 11, 1, 11, 1, 11, + 3, 11, 240, 8, 11, 1, 12, 1, 12, 3, 12, 244, 8, 12, 1, 13, 1, 13, 3, 13, + 248, 8, 13, 1, 14, 1, 14, 3, 14, 252, 8, 14, 1, 15, 1, 15, 1, 15, 1, 16, + 1, 16, 1, 16, 1, 16, 3, 16, 261, 8, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, + 17, 3, 17, 268, 8, 17, 1, 18, 1, 18, 1, 18, 1, 18, 5, 18, 274, 8, 18, 10, + 18, 12, 18, 277, 9, 18, 1, 19, 1, 19, 3, 19, 281, 8, 19, 1, 20, 1, 20, + 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, + 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 3, 20, 301, 8, 20, 1, 21, 1, 21, + 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 5, 22, 310, 8, 22, 10, 22, 12, 22, 313, + 9, 22, 1, 23, 1, 23, 1, 23, 1, 23, 5, 23, 319, 8, 23, 10, 23, 12, 23, 322, + 9, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, + 25, 3, 25, 334, 8, 25, 3, 25, 336, 8, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, + 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 3, 27, 349, 8, 27, 1, 27, + 3, 27, 352, 8, 27, 1, 27, 3, 27, 355, 8, 27, 1, 28, 1, 28, 1, 28, 1, 28, + 1, 28, 3, 28, 362, 8, 28, 1, 29, 1, 29, 1, 29, 3, 29, 367, 8, 29, 1, 30, + 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 3, 31, 378, 8, + 31, 1, 32, 1, 32, 1, 32, 1, 32, 3, 32, 384, 8, 32, 1, 33, 1, 33, 3, 33, + 388, 8, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 3, 34, 397, + 8, 34, 1, 35, 1, 35, 3, 35, 401, 8, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, + 36, 1, 36, 5, 36, 409, 8, 36, 10, 36, 12, 36, 412, 9, 36, 1, 36, 3, 36, + 415, 8, 36, 3, 36, 417, 8, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 38, 1, 38, + 1, 39, 1, 39, 1, 40, 1, 40, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, + 42, 1, 42, 1, 42, 1, 42, 1, 42, 3, 42, 440, 8, 42, 1, 43, 1, 43, 1, 43, + 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 3, 44, 451, 8, 44, 1, 45, 1, + 45, 1, 45, 1, 46, 5, 46, 457, 8, 46, 10, 46, 12, 46, 460, 9, 46, 1, 47, + 1, 47, 4, 47, 464, 8, 47, 11, 47, 12, 47, 465, 1, 48, 1, 48, 1, 48, 1, + 48, 1, 48, 3, 48, 473, 8, 48, 1, 49, 1, 49, 3, 49, 477, 8, 49, 1, 50, 1, + 50, 1, 50, 1, 50, 3, 50, 483, 8, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, + 3, 51, 490, 8, 51, 1, 52, 1, 52, 1, 52, 5, 52, 495, 8, 52, 10, 52, 12, + 52, 498, 9, 52, 1, 52, 3, 52, 501, 8, 52, 1, 53, 3, 53, 504, 8, 53, 1, + 53, 1, 53, 1, 53, 1, 53, 1, 53, 3, 53, 511, 8, 53, 1, 53, 3, 53, 514, 8, + 53, 1, 54, 1, 54, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, + 1, 57, 3, 57, 527, 8, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 3, 58, 534, + 8, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, + 58, 1, 58, 3, 58, 547, 8, 58, 1, 58, 1, 58, 5, 58, 551, 8, 58, 10, 58, + 12, 58, 554, 9, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, + 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, + 1, 59, 5, 59, 575, 8, 59, 10, 59, 12, 59, 578, 9, 59, 1, 60, 1, 60, 1, + 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 3, 60, 591, + 8, 60, 1, 60, 1, 60, 3, 60, 595, 8, 60, 3, 60, 597, 8, 60, 1, 60, 1, 60, + 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 5, + 60, 611, 8, 60, 10, 60, 12, 60, 614, 9, 60, 1, 61, 1, 61, 1, 61, 3, 61, + 619, 8, 61, 1, 62, 1, 62, 1, 63, 3, 63, 624, 8, 63, 1, 63, 1, 63, 1, 64, + 3, 64, 629, 8, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 66, 1, 66, 1, 67, 1, + 67, 1, 68, 1, 68, 1, 69, 1, 69, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 0, 3, + 116, 118, 120, 72, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, + 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, + 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, + 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, + 132, 134, 136, 138, 140, 142, 0, 10, 1, 0, 66, 67, 1, 0, 48, 49, 4, 0, + 28, 29, 38, 44, 46, 47, 52, 59, 4, 0, 35, 37, 45, 45, 48, 51, 60, 64, 2, + 0, 48, 48, 56, 57, 1, 0, 15, 20, 2, 0, 24, 25, 61, 61, 1, 0, 33, 34, 1, + 0, 21, 23, 1, 0, 24, 25, 686, 0, 147, 1, 0, 0, 0, 2, 152, 1, 0, 0, 0, 4, + 154, 1, 0, 0, 0, 6, 156, 1, 0, 0, 0, 8, 162, 1, 0, 0, 0, 10, 170, 1, 0, + 0, 0, 12, 174, 1, 0, 0, 0, 14, 185, 1, 0, 0, 0, 16, 187, 1, 0, 0, 0, 18, + 224, 1, 0, 0, 0, 20, 233, 1, 0, 0, 0, 22, 239, 1, 0, 0, 0, 24, 243, 1, + 0, 0, 0, 26, 247, 1, 0, 0, 0, 28, 251, 1, 0, 0, 0, 30, 253, 1, 0, 0, 0, + 32, 256, 1, 0, 0, 0, 34, 267, 1, 0, 0, 0, 36, 269, 1, 0, 0, 0, 38, 278, + 1, 0, 0, 0, 40, 300, 1, 0, 0, 0, 42, 302, 1, 0, 0, 0, 44, 306, 1, 0, 0, + 0, 46, 314, 1, 0, 0, 0, 48, 323, 1, 0, 0, 0, 50, 335, 1, 0, 0, 0, 52, 337, + 1, 0, 0, 0, 54, 342, 1, 0, 0, 0, 56, 361, 1, 0, 0, 0, 58, 366, 1, 0, 0, + 0, 60, 368, 1, 0, 0, 0, 62, 371, 1, 0, 0, 0, 64, 383, 1, 0, 0, 0, 66, 387, + 1, 0, 0, 0, 68, 396, 1, 0, 0, 0, 70, 398, 1, 0, 0, 0, 72, 404, 1, 0, 0, + 0, 74, 420, 1, 0, 0, 0, 76, 422, 1, 0, 0, 0, 78, 424, 1, 0, 0, 0, 80, 426, + 1, 0, 0, 0, 82, 428, 1, 0, 0, 0, 84, 439, 1, 0, 0, 0, 86, 441, 1, 0, 0, + 0, 88, 450, 1, 0, 0, 0, 90, 452, 1, 0, 0, 0, 92, 458, 1, 0, 0, 0, 94, 461, + 1, 0, 0, 0, 96, 472, 1, 0, 0, 0, 98, 474, 1, 0, 0, 0, 100, 478, 1, 0, 0, + 0, 102, 489, 1, 0, 0, 0, 104, 491, 1, 0, 0, 0, 106, 513, 1, 0, 0, 0, 108, + 515, 1, 0, 0, 0, 110, 517, 1, 0, 0, 0, 112, 519, 1, 0, 0, 0, 114, 526, + 1, 0, 0, 0, 116, 533, 1, 0, 0, 0, 118, 555, 1, 0, 0, 0, 120, 596, 1, 0, + 0, 0, 122, 615, 1, 0, 0, 0, 124, 620, 1, 0, 0, 0, 126, 623, 1, 0, 0, 0, + 128, 628, 1, 0, 0, 0, 130, 632, 1, 0, 0, 0, 132, 634, 1, 0, 0, 0, 134, + 636, 1, 0, 0, 0, 136, 638, 1, 0, 0, 0, 138, 640, 1, 0, 0, 0, 140, 642, + 1, 0, 0, 0, 142, 644, 1, 0, 0, 0, 144, 146, 3, 2, 1, 0, 145, 144, 1, 0, + 0, 0, 146, 149, 1, 0, 0, 0, 147, 145, 1, 0, 0, 0, 147, 148, 1, 0, 0, 0, + 148, 150, 1, 0, 0, 0, 149, 147, 1, 0, 0, 0, 150, 151, 3, 8, 4, 0, 151, + 1, 1, 0, 0, 0, 152, 153, 3, 4, 2, 0, 153, 3, 1, 0, 0, 0, 154, 155, 3, 6, + 3, 0, 155, 5, 1, 0, 0, 0, 156, 157, 5, 51, 0, 0, 157, 158, 3, 90, 45, 0, + 158, 7, 1, 0, 0, 0, 159, 161, 3, 10, 5, 0, 160, 159, 1, 0, 0, 0, 161, 164, + 1, 0, 0, 0, 162, 160, 1, 0, 0, 0, 162, 163, 1, 0, 0, 0, 163, 165, 1, 0, + 0, 0, 164, 162, 1, 0, 0, 0, 165, 166, 3, 12, 6, 0, 166, 9, 1, 0, 0, 0, + 167, 171, 3, 14, 7, 0, 168, 171, 3, 98, 49, 0, 169, 171, 3, 54, 27, 0, + 170, 167, 1, 0, 0, 0, 170, 168, 1, 0, 0, 0, 170, 169, 1, 0, 0, 0, 171, + 11, 1, 0, 0, 0, 172, 175, 3, 16, 8, 0, 173, 175, 3, 18, 9, 0, 174, 172, + 1, 0, 0, 0, 174, 173, 1, 0, 0, 0, 175, 13, 1, 0, 0, 0, 176, 177, 5, 45, + 0, 0, 177, 178, 7, 0, 0, 0, 178, 179, 5, 31, 0, 0, 179, 186, 3, 116, 58, + 0, 180, 181, 5, 45, 0, 0, 181, 182, 3, 108, 54, 0, 182, 183, 5, 31, 0, + 0, 183, 184, 3, 116, 58, 0, 184, 186, 1, 0, 0, 0, 185, 176, 1, 0, 0, 0, + 185, 180, 1, 0, 0, 0, 186, 15, 1, 0, 0, 0, 187, 189, 5, 36, 0, 0, 188, + 190, 5, 40, 0, 0, 189, 188, 1, 0, 0, 0, 189, 190, 1, 0, 0, 0, 190, 191, + 1, 0, 0, 0, 191, 192, 3, 116, 58, 0, 192, 17, 1, 0, 0, 0, 193, 194, 5, + 35, 0, 0, 194, 197, 7, 0, 0, 0, 195, 196, 5, 8, 0, 0, 196, 198, 5, 66, + 0, 0, 197, 195, 1, 0, 0, 0, 197, 198, 1, 0, 0, 0, 198, 199, 1, 0, 0, 0, + 199, 200, 5, 62, 0, 0, 200, 204, 3, 20, 10, 0, 201, 203, 3, 26, 13, 0, + 202, 201, 1, 0, 0, 0, 203, 206, 1, 0, 0, 0, 204, 202, 1, 0, 0, 0, 204, + 205, 1, 0, 0, 0, 205, 207, 1, 0, 0, 0, 206, 204, 1, 0, 0, 0, 207, 208, + 3, 28, 14, 0, 208, 225, 1, 0, 0, 0, 209, 210, 5, 35, 0, 0, 210, 212, 7, + 0, 0, 0, 211, 213, 5, 63, 0, 0, 212, 211, 1, 0, 0, 0, 212, 213, 1, 0, 0, + 0, 213, 214, 1, 0, 0, 0, 214, 215, 5, 64, 0, 0, 215, 219, 3, 116, 58, 0, + 216, 218, 3, 26, 13, 0, 217, 216, 1, 0, 0, 0, 218, 221, 1, 0, 0, 0, 219, + 217, 1, 0, 0, 0, 219, 220, 1, 0, 0, 0, 220, 222, 1, 0, 0, 0, 221, 219, + 1, 0, 0, 0, 222, 223, 3, 28, 14, 0, 223, 225, 1, 0, 0, 0, 224, 193, 1, + 0, 0, 0, 224, 209, 1, 0, 0, 0, 225, 19, 1, 0, 0, 0, 226, 234, 3, 98, 49, + 0, 227, 234, 3, 70, 35, 0, 228, 234, 3, 72, 36, 0, 229, 234, 3, 66, 33, + 0, 230, 234, 3, 94, 47, 0, 231, 234, 3, 112, 56, 0, 232, 234, 3, 64, 32, + 0, 233, 226, 1, 0, 0, 0, 233, 227, 1, 0, 0, 0, 233, 228, 1, 0, 0, 0, 233, + 229, 1, 0, 0, 0, 233, 230, 1, 0, 0, 0, 233, 231, 1, 0, 0, 0, 233, 232, + 1, 0, 0, 0, 234, 21, 1, 0, 0, 0, 235, 240, 3, 32, 16, 0, 236, 240, 3, 36, + 18, 0, 237, 240, 3, 30, 15, 0, 238, 240, 3, 40, 20, 0, 239, 235, 1, 0, + 0, 0, 239, 236, 1, 0, 0, 0, 239, 237, 1, 0, 0, 0, 239, 238, 1, 0, 0, 0, + 240, 23, 1, 0, 0, 0, 241, 244, 3, 14, 7, 0, 242, 244, 3, 98, 49, 0, 243, + 241, 1, 0, 0, 0, 243, 242, 1, 0, 0, 0, 244, 25, 1, 0, 0, 0, 245, 248, 3, + 24, 12, 0, 246, 248, 3, 22, 11, 0, 247, 245, 1, 0, 0, 0, 247, 246, 1, 0, + 0, 0, 248, 27, 1, 0, 0, 0, 249, 252, 3, 16, 8, 0, 250, 252, 3, 18, 9, 0, + 251, 249, 1, 0, 0, 0, 251, 250, 1, 0, 0, 0, 252, 29, 1, 0, 0, 0, 253, 254, + 5, 41, 0, 0, 254, 255, 3, 116, 58, 0, 255, 31, 1, 0, 0, 0, 256, 257, 5, + 44, 0, 0, 257, 260, 3, 34, 17, 0, 258, 259, 5, 8, 0, 0, 259, 261, 3, 34, + 17, 0, 260, 258, 1, 0, 0, 0, 260, 261, 1, 0, 0, 0, 261, 33, 1, 0, 0, 0, + 262, 268, 3, 80, 40, 0, 263, 268, 3, 64, 32, 0, 264, 268, 3, 66, 33, 0, + 265, 268, 3, 98, 49, 0, 266, 268, 3, 94, 47, 0, 267, 262, 1, 0, 0, 0, 267, + 263, 1, 0, 0, 0, 267, 264, 1, 0, 0, 0, 267, 265, 1, 0, 0, 0, 267, 266, + 1, 0, 0, 0, 268, 35, 1, 0, 0, 0, 269, 270, 5, 43, 0, 0, 270, 275, 3, 38, + 19, 0, 271, 272, 5, 8, 0, 0, 272, 274, 3, 38, 19, 0, 273, 271, 1, 0, 0, + 0, 274, 277, 1, 0, 0, 0, 275, 273, 1, 0, 0, 0, 275, 276, 1, 0, 0, 0, 276, + 37, 1, 0, 0, 0, 277, 275, 1, 0, 0, 0, 278, 280, 3, 116, 58, 0, 279, 281, + 5, 47, 0, 0, 280, 279, 1, 0, 0, 0, 280, 281, 1, 0, 0, 0, 281, 39, 1, 0, + 0, 0, 282, 283, 5, 46, 0, 0, 283, 301, 3, 52, 26, 0, 284, 285, 5, 46, 0, + 0, 285, 301, 3, 46, 23, 0, 286, 287, 5, 46, 0, 0, 287, 288, 3, 44, 22, + 0, 288, 289, 3, 46, 23, 0, 289, 301, 1, 0, 0, 0, 290, 291, 5, 46, 0, 0, + 291, 292, 3, 44, 22, 0, 292, 293, 3, 50, 25, 0, 293, 301, 1, 0, 0, 0, 294, + 295, 5, 46, 0, 0, 295, 296, 3, 44, 22, 0, 296, 297, 3, 52, 26, 0, 297, + 301, 1, 0, 0, 0, 298, 299, 5, 46, 0, 0, 299, 301, 3, 44, 22, 0, 300, 282, + 1, 0, 0, 0, 300, 284, 1, 0, 0, 0, 300, 286, 1, 0, 0, 0, 300, 290, 1, 0, + 0, 0, 300, 294, 1, 0, 0, 0, 300, 298, 1, 0, 0, 0, 301, 41, 1, 0, 0, 0, + 302, 303, 5, 66, 0, 0, 303, 304, 5, 31, 0, 0, 304, 305, 3, 116, 58, 0, + 305, 43, 1, 0, 0, 0, 306, 311, 3, 42, 21, 0, 307, 308, 5, 8, 0, 0, 308, + 310, 3, 42, 21, 0, 309, 307, 1, 0, 0, 0, 310, 313, 1, 0, 0, 0, 311, 309, + 1, 0, 0, 0, 311, 312, 1, 0, 0, 0, 312, 45, 1, 0, 0, 0, 313, 311, 1, 0, + 0, 0, 314, 315, 5, 58, 0, 0, 315, 320, 3, 48, 24, 0, 316, 317, 5, 8, 0, + 0, 317, 319, 3, 48, 24, 0, 318, 316, 1, 0, 0, 0, 319, 322, 1, 0, 0, 0, + 320, 318, 1, 0, 0, 0, 320, 321, 1, 0, 0, 0, 321, 47, 1, 0, 0, 0, 322, 320, + 1, 0, 0, 0, 323, 324, 5, 66, 0, 0, 324, 325, 5, 31, 0, 0, 325, 326, 3, + 98, 49, 0, 326, 49, 1, 0, 0, 0, 327, 328, 5, 52, 0, 0, 328, 336, 3, 42, + 21, 0, 329, 330, 5, 52, 0, 0, 330, 333, 5, 66, 0, 0, 331, 332, 5, 53, 0, + 0, 332, 334, 5, 66, 0, 0, 333, 331, 1, 0, 0, 0, 333, 334, 1, 0, 0, 0, 334, + 336, 1, 0, 0, 0, 335, 327, 1, 0, 0, 0, 335, 329, 1, 0, 0, 0, 336, 51, 1, + 0, 0, 0, 337, 338, 5, 54, 0, 0, 338, 339, 5, 55, 0, 0, 339, 340, 5, 52, + 0, 0, 340, 341, 5, 66, 0, 0, 341, 53, 1, 0, 0, 0, 342, 343, 5, 37, 0, 0, + 343, 344, 5, 59, 0, 0, 344, 345, 3, 56, 28, 0, 345, 346, 5, 62, 0, 0, 346, + 348, 3, 58, 29, 0, 347, 349, 3, 60, 30, 0, 348, 347, 1, 0, 0, 0, 348, 349, + 1, 0, 0, 0, 349, 351, 1, 0, 0, 0, 350, 352, 3, 30, 15, 0, 351, 350, 1, + 0, 0, 0, 351, 352, 1, 0, 0, 0, 352, 354, 1, 0, 0, 0, 353, 355, 3, 62, 31, + 0, 354, 353, 1, 0, 0, 0, 354, 355, 1, 0, 0, 0, 355, 55, 1, 0, 0, 0, 356, + 362, 3, 76, 38, 0, 357, 362, 3, 66, 33, 0, 358, 362, 3, 64, 32, 0, 359, + 362, 3, 98, 49, 0, 360, 362, 3, 94, 47, 0, 361, 356, 1, 0, 0, 0, 361, 357, + 1, 0, 0, 0, 361, 358, 1, 0, 0, 0, 361, 359, 1, 0, 0, 0, 361, 360, 1, 0, + 0, 0, 362, 57, 1, 0, 0, 0, 363, 367, 3, 98, 49, 0, 364, 367, 3, 66, 33, + 0, 365, 367, 3, 94, 47, 0, 366, 363, 1, 0, 0, 0, 366, 364, 1, 0, 0, 0, + 366, 365, 1, 0, 0, 0, 367, 59, 1, 0, 0, 0, 368, 369, 5, 38, 0, 0, 369, + 370, 3, 72, 36, 0, 370, 61, 1, 0, 0, 0, 371, 377, 5, 39, 0, 0, 372, 378, + 3, 80, 40, 0, 373, 378, 3, 66, 33, 0, 374, 378, 3, 64, 32, 0, 375, 378, + 3, 94, 47, 0, 376, 378, 3, 100, 50, 0, 377, 372, 1, 0, 0, 0, 377, 373, + 1, 0, 0, 0, 377, 374, 1, 0, 0, 0, 377, 375, 1, 0, 0, 0, 377, 376, 1, 0, + 0, 0, 378, 63, 1, 0, 0, 0, 379, 380, 5, 65, 0, 0, 380, 384, 5, 66, 0, 0, + 381, 382, 5, 65, 0, 0, 382, 384, 3, 108, 54, 0, 383, 379, 1, 0, 0, 0, 383, + 381, 1, 0, 0, 0, 384, 65, 1, 0, 0, 0, 385, 388, 5, 66, 0, 0, 386, 388, + 3, 108, 54, 0, 387, 385, 1, 0, 0, 0, 387, 386, 1, 0, 0, 0, 388, 67, 1, + 0, 0, 0, 389, 397, 3, 70, 35, 0, 390, 397, 3, 72, 36, 0, 391, 397, 3, 74, + 37, 0, 392, 397, 3, 76, 38, 0, 393, 397, 3, 78, 39, 0, 394, 397, 3, 80, + 40, 0, 395, 397, 3, 82, 41, 0, 396, 389, 1, 0, 0, 0, 396, 390, 1, 0, 0, + 0, 396, 391, 1, 0, 0, 0, 396, 392, 1, 0, 0, 0, 396, 393, 1, 0, 0, 0, 396, + 394, 1, 0, 0, 0, 396, 395, 1, 0, 0, 0, 397, 69, 1, 0, 0, 0, 398, 400, 5, + 9, 0, 0, 399, 401, 3, 104, 52, 0, 400, 399, 1, 0, 0, 0, 400, 401, 1, 0, + 0, 0, 401, 402, 1, 0, 0, 0, 402, 403, 5, 10, 0, 0, 403, 71, 1, 0, 0, 0, + 404, 416, 5, 13, 0, 0, 405, 410, 3, 84, 42, 0, 406, 407, 5, 8, 0, 0, 407, + 409, 3, 84, 42, 0, 408, 406, 1, 0, 0, 0, 409, 412, 1, 0, 0, 0, 410, 408, + 1, 0, 0, 0, 410, 411, 1, 0, 0, 0, 411, 414, 1, 0, 0, 0, 412, 410, 1, 0, + 0, 0, 413, 415, 5, 8, 0, 0, 414, 413, 1, 0, 0, 0, 414, 415, 1, 0, 0, 0, + 415, 417, 1, 0, 0, 0, 416, 405, 1, 0, 0, 0, 416, 417, 1, 0, 0, 0, 417, + 418, 1, 0, 0, 0, 418, 419, 5, 14, 0, 0, 419, 73, 1, 0, 0, 0, 420, 421, + 5, 50, 0, 0, 421, 75, 1, 0, 0, 0, 422, 423, 5, 68, 0, 0, 423, 77, 1, 0, + 0, 0, 424, 425, 5, 70, 0, 0, 425, 79, 1, 0, 0, 0, 426, 427, 5, 69, 0, 0, + 427, 81, 1, 0, 0, 0, 428, 429, 7, 1, 0, 0, 429, 83, 1, 0, 0, 0, 430, 431, + 3, 88, 44, 0, 431, 432, 5, 5, 0, 0, 432, 433, 3, 116, 58, 0, 433, 440, + 1, 0, 0, 0, 434, 435, 3, 86, 43, 0, 435, 436, 5, 5, 0, 0, 436, 437, 3, + 116, 58, 0, 437, 440, 1, 0, 0, 0, 438, 440, 3, 66, 33, 0, 439, 430, 1, + 0, 0, 0, 439, 434, 1, 0, 0, 0, 439, 438, 1, 0, 0, 0, 440, 85, 1, 0, 0, + 0, 441, 442, 5, 9, 0, 0, 442, 443, 3, 116, 58, 0, 443, 444, 5, 10, 0, 0, + 444, 87, 1, 0, 0, 0, 445, 451, 5, 66, 0, 0, 446, 451, 3, 76, 38, 0, 447, + 451, 3, 64, 32, 0, 448, 451, 3, 108, 54, 0, 449, 451, 3, 110, 55, 0, 450, + 445, 1, 0, 0, 0, 450, 446, 1, 0, 0, 0, 450, 447, 1, 0, 0, 0, 450, 448, + 1, 0, 0, 0, 450, 449, 1, 0, 0, 0, 451, 89, 1, 0, 0, 0, 452, 453, 3, 92, + 46, 0, 453, 454, 5, 66, 0, 0, 454, 91, 1, 0, 0, 0, 455, 457, 5, 71, 0, + 0, 456, 455, 1, 0, 0, 0, 457, 460, 1, 0, 0, 0, 458, 456, 1, 0, 0, 0, 458, + 459, 1, 0, 0, 0, 459, 93, 1, 0, 0, 0, 460, 458, 1, 0, 0, 0, 461, 463, 3, + 96, 48, 0, 462, 464, 3, 106, 53, 0, 463, 462, 1, 0, 0, 0, 464, 465, 1, + 0, 0, 0, 465, 463, 1, 0, 0, 0, 465, 466, 1, 0, 0, 0, 466, 95, 1, 0, 0, + 0, 467, 473, 3, 66, 33, 0, 468, 473, 3, 64, 32, 0, 469, 473, 3, 70, 35, + 0, 470, 473, 3, 72, 36, 0, 471, 473, 3, 100, 50, 0, 472, 467, 1, 0, 0, + 0, 472, 468, 1, 0, 0, 0, 472, 469, 1, 0, 0, 0, 472, 470, 1, 0, 0, 0, 472, + 471, 1, 0, 0, 0, 473, 97, 1, 0, 0, 0, 474, 476, 3, 100, 50, 0, 475, 477, + 3, 142, 71, 0, 476, 475, 1, 0, 0, 0, 476, 477, 1, 0, 0, 0, 477, 99, 1, + 0, 0, 0, 478, 479, 3, 92, 46, 0, 479, 480, 3, 102, 51, 0, 480, 482, 5, + 11, 0, 0, 481, 483, 3, 104, 52, 0, 482, 481, 1, 0, 0, 0, 482, 483, 1, 0, + 0, 0, 483, 484, 1, 0, 0, 0, 484, 485, 5, 12, 0, 0, 485, 101, 1, 0, 0, 0, + 486, 490, 5, 66, 0, 0, 487, 490, 3, 108, 54, 0, 488, 490, 3, 110, 55, 0, + 489, 486, 1, 0, 0, 0, 489, 487, 1, 0, 0, 0, 489, 488, 1, 0, 0, 0, 490, + 103, 1, 0, 0, 0, 491, 496, 3, 116, 58, 0, 492, 493, 5, 8, 0, 0, 493, 495, + 3, 116, 58, 0, 494, 492, 1, 0, 0, 0, 495, 498, 1, 0, 0, 0, 496, 494, 1, + 0, 0, 0, 496, 497, 1, 0, 0, 0, 497, 500, 1, 0, 0, 0, 498, 496, 1, 0, 0, + 0, 499, 501, 5, 8, 0, 0, 500, 499, 1, 0, 0, 0, 500, 501, 1, 0, 0, 0, 501, + 105, 1, 0, 0, 0, 502, 504, 3, 142, 71, 0, 503, 502, 1, 0, 0, 0, 503, 504, + 1, 0, 0, 0, 504, 505, 1, 0, 0, 0, 505, 506, 5, 7, 0, 0, 506, 514, 3, 88, + 44, 0, 507, 508, 3, 142, 71, 0, 508, 509, 5, 7, 0, 0, 509, 511, 1, 0, 0, + 0, 510, 507, 1, 0, 0, 0, 510, 511, 1, 0, 0, 0, 511, 512, 1, 0, 0, 0, 512, + 514, 3, 86, 43, 0, 513, 503, 1, 0, 0, 0, 513, 510, 1, 0, 0, 0, 514, 107, + 1, 0, 0, 0, 515, 516, 7, 2, 0, 0, 516, 109, 1, 0, 0, 0, 517, 518, 7, 3, + 0, 0, 518, 111, 1, 0, 0, 0, 519, 520, 3, 114, 57, 0, 520, 521, 5, 30, 0, + 0, 521, 522, 3, 114, 57, 0, 522, 113, 1, 0, 0, 0, 523, 527, 3, 80, 40, + 0, 524, 527, 3, 66, 33, 0, 525, 527, 3, 64, 32, 0, 526, 523, 1, 0, 0, 0, + 526, 524, 1, 0, 0, 0, 526, 525, 1, 0, 0, 0, 527, 115, 1, 0, 0, 0, 528, + 529, 6, 58, -1, 0, 529, 530, 3, 130, 65, 0, 530, 531, 3, 116, 58, 5, 531, + 534, 1, 0, 0, 0, 532, 534, 3, 118, 59, 0, 533, 528, 1, 0, 0, 0, 533, 532, + 1, 0, 0, 0, 534, 552, 1, 0, 0, 0, 535, 536, 10, 4, 0, 0, 536, 537, 3, 134, + 67, 0, 537, 538, 3, 116, 58, 5, 538, 551, 1, 0, 0, 0, 539, 540, 10, 3, + 0, 0, 540, 541, 3, 136, 68, 0, 541, 542, 3, 116, 58, 4, 542, 551, 1, 0, + 0, 0, 543, 544, 10, 2, 0, 0, 544, 546, 5, 32, 0, 0, 545, 547, 3, 116, 58, + 0, 546, 545, 1, 0, 0, 0, 546, 547, 1, 0, 0, 0, 547, 548, 1, 0, 0, 0, 548, + 549, 5, 5, 0, 0, 549, 551, 3, 116, 58, 3, 550, 535, 1, 0, 0, 0, 550, 539, + 1, 0, 0, 0, 550, 543, 1, 0, 0, 0, 551, 554, 1, 0, 0, 0, 552, 550, 1, 0, + 0, 0, 552, 553, 1, 0, 0, 0, 553, 117, 1, 0, 0, 0, 554, 552, 1, 0, 0, 0, + 555, 556, 6, 59, -1, 0, 556, 557, 3, 120, 60, 0, 557, 576, 1, 0, 0, 0, + 558, 559, 10, 5, 0, 0, 559, 560, 3, 124, 62, 0, 560, 561, 3, 118, 59, 6, + 561, 575, 1, 0, 0, 0, 562, 563, 10, 4, 0, 0, 563, 564, 3, 122, 61, 0, 564, + 565, 3, 118, 59, 5, 565, 575, 1, 0, 0, 0, 566, 567, 10, 3, 0, 0, 567, 568, + 3, 126, 63, 0, 568, 569, 3, 118, 59, 4, 569, 575, 1, 0, 0, 0, 570, 571, + 10, 2, 0, 0, 571, 572, 3, 128, 64, 0, 572, 573, 3, 118, 59, 3, 573, 575, + 1, 0, 0, 0, 574, 558, 1, 0, 0, 0, 574, 562, 1, 0, 0, 0, 574, 566, 1, 0, + 0, 0, 574, 570, 1, 0, 0, 0, 575, 578, 1, 0, 0, 0, 576, 574, 1, 0, 0, 0, + 576, 577, 1, 0, 0, 0, 577, 119, 1, 0, 0, 0, 578, 576, 1, 0, 0, 0, 579, + 580, 6, 60, -1, 0, 580, 597, 3, 98, 49, 0, 581, 597, 3, 112, 56, 0, 582, + 597, 3, 68, 34, 0, 583, 597, 3, 66, 33, 0, 584, 597, 3, 94, 47, 0, 585, + 597, 3, 64, 32, 0, 586, 590, 5, 11, 0, 0, 587, 591, 3, 18, 9, 0, 588, 591, + 3, 54, 27, 0, 589, 591, 3, 116, 58, 0, 590, 587, 1, 0, 0, 0, 590, 588, + 1, 0, 0, 0, 590, 589, 1, 0, 0, 0, 591, 592, 1, 0, 0, 0, 592, 594, 5, 12, + 0, 0, 593, 595, 3, 142, 71, 0, 594, 593, 1, 0, 0, 0, 594, 595, 1, 0, 0, + 0, 595, 597, 1, 0, 0, 0, 596, 579, 1, 0, 0, 0, 596, 581, 1, 0, 0, 0, 596, + 582, 1, 0, 0, 0, 596, 583, 1, 0, 0, 0, 596, 584, 1, 0, 0, 0, 596, 585, + 1, 0, 0, 0, 596, 586, 1, 0, 0, 0, 597, 612, 1, 0, 0, 0, 598, 599, 10, 10, + 0, 0, 599, 600, 3, 138, 69, 0, 600, 601, 3, 120, 60, 11, 601, 611, 1, 0, + 0, 0, 602, 603, 10, 9, 0, 0, 603, 604, 3, 140, 70, 0, 604, 605, 3, 120, + 60, 10, 605, 611, 1, 0, 0, 0, 606, 607, 10, 8, 0, 0, 607, 608, 3, 132, + 66, 0, 608, 609, 3, 120, 60, 9, 609, 611, 1, 0, 0, 0, 610, 598, 1, 0, 0, + 0, 610, 602, 1, 0, 0, 0, 610, 606, 1, 0, 0, 0, 611, 614, 1, 0, 0, 0, 612, + 610, 1, 0, 0, 0, 612, 613, 1, 0, 0, 0, 613, 121, 1, 0, 0, 0, 614, 612, + 1, 0, 0, 0, 615, 618, 7, 4, 0, 0, 616, 619, 3, 126, 63, 0, 617, 619, 3, + 124, 62, 0, 618, 616, 1, 0, 0, 0, 618, 617, 1, 0, 0, 0, 619, 123, 1, 0, + 0, 0, 620, 621, 7, 5, 0, 0, 621, 125, 1, 0, 0, 0, 622, 624, 5, 61, 0, 0, + 623, 622, 1, 0, 0, 0, 623, 624, 1, 0, 0, 0, 624, 625, 1, 0, 0, 0, 625, + 626, 5, 62, 0, 0, 626, 127, 1, 0, 0, 0, 627, 629, 5, 61, 0, 0, 628, 627, + 1, 0, 0, 0, 628, 629, 1, 0, 0, 0, 629, 630, 1, 0, 0, 0, 630, 631, 5, 60, + 0, 0, 631, 129, 1, 0, 0, 0, 632, 633, 7, 6, 0, 0, 633, 131, 1, 0, 0, 0, + 634, 635, 7, 7, 0, 0, 635, 133, 1, 0, 0, 0, 636, 637, 5, 28, 0, 0, 637, + 135, 1, 0, 0, 0, 638, 639, 5, 29, 0, 0, 639, 137, 1, 0, 0, 0, 640, 641, + 7, 8, 0, 0, 641, 139, 1, 0, 0, 0, 642, 643, 7, 9, 0, 0, 643, 141, 1, 0, + 0, 0, 644, 645, 5, 32, 0, 0, 645, 143, 1, 0, 0, 0, 66, 147, 162, 170, 174, + 185, 189, 197, 204, 212, 219, 224, 233, 239, 243, 247, 251, 260, 267, 275, + 280, 300, 311, 320, 333, 335, 348, 351, 354, 361, 366, 377, 383, 387, 396, + 400, 410, 414, 416, 439, 450, 458, 465, 472, 476, 482, 489, 496, 500, 503, + 510, 513, 526, 533, 546, 550, 552, 574, 576, 590, 594, 596, 610, 612, 618, + 623, 628, + } + deserializer := antlr.NewATNDeserializer(nil) + staticData.atn = deserializer.Deserialize(staticData.serializedATN) + atn := staticData.atn + staticData.decisionToDFA = make([]*antlr.DFA, len(atn.DecisionToState)) + decisionToDFA := staticData.decisionToDFA + for index, state := range atn.DecisionToState { + decisionToDFA[index] = antlr.NewDFA(state, index) + } +} + +// FqlParserInit initializes any static state used to implement FqlParser. By default the +// static state used to implement the parser is lazily initialized during the first call to +// NewFqlParser(). You can call this function if you wish to initialize the static state ahead +// of time. +func FqlParserInit() { + staticData := &fqlparserParserStaticData + staticData.once.Do(fqlparserParserInit) +} + +// NewFqlParser produces a new parser instance for the optional input antlr.TokenStream. +func NewFqlParser(input antlr.TokenStream) *FqlParser { + FqlParserInit() + this := new(FqlParser) + this.BaseParser = antlr.NewBaseParser(input) + staticData := &fqlparserParserStaticData + this.Interpreter = antlr.NewParserATNSimulator(this, staticData.atn, staticData.decisionToDFA, staticData.predictionContextCache) + this.RuleNames = staticData.ruleNames + this.LiteralNames = staticData.literalNames + this.SymbolicNames = staticData.symbolicNames + this.GrammarFileName = "java-escape" return this } @@ -575,7 +595,13 @@ func NewProgramContext(parser antlr.Parser, parent antlr.ParserRuleContext, invo func (s *ProgramContext) GetParser() antlr.Parser { return s.parser } func (s *ProgramContext) Body() IBodyContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IBodyContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IBodyContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -585,12 +611,20 @@ func (s *ProgramContext) Body() IBodyContext { } func (s *ProgramContext) AllHead() []IHeadContext { - var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IHeadContext)(nil)).Elem()) - var tst = make([]IHeadContext, len(ts)) + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IHeadContext); ok { + len++ + } + } - for i, t := range ts { - if t != nil { + tst := make([]IHeadContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IHeadContext); ok { tst[i] = t.(IHeadContext) + i++ } } @@ -598,7 +632,17 @@ func (s *ProgramContext) AllHead() []IHeadContext { } func (s *ProgramContext) Head(i int) IHeadContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IHeadContext)(nil)).Elem(), i) + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IHeadContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } if t == nil { return nil @@ -726,7 +770,13 @@ func NewHeadContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokin func (s *HeadContext) GetParser() antlr.Parser { return s.parser } func (s *HeadContext) UseExpression() IUseExpressionContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IUseExpressionContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IUseExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -836,7 +886,13 @@ func NewUseExpressionContext(parser antlr.Parser, parent antlr.ParserRuleContext func (s *UseExpressionContext) GetParser() antlr.Parser { return s.parser } func (s *UseExpressionContext) Use() IUseContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IUseContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IUseContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -950,7 +1006,13 @@ func (s *UseContext) Use() antlr.TerminalNode { } func (s *UseContext) NamespaceIdentifier() INamespaceIdentifierContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*INamespaceIdentifierContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INamespaceIdentifierContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -1064,7 +1126,13 @@ func NewBodyContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokin func (s *BodyContext) GetParser() antlr.Parser { return s.parser } func (s *BodyContext) BodyExpression() IBodyExpressionContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IBodyExpressionContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IBodyExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -1074,12 +1142,20 @@ func (s *BodyContext) BodyExpression() IBodyExpressionContext { } func (s *BodyContext) AllBodyStatement() []IBodyStatementContext { - var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IBodyStatementContext)(nil)).Elem()) - var tst = make([]IBodyStatementContext, len(ts)) + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IBodyStatementContext); ok { + len++ + } + } - for i, t := range ts { - if t != nil { + tst := make([]IBodyStatementContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IBodyStatementContext); ok { tst[i] = t.(IBodyStatementContext) + i++ } } @@ -1087,7 +1163,17 @@ func (s *BodyContext) AllBodyStatement() []IBodyStatementContext { } func (s *BodyContext) BodyStatement(i int) IBodyStatementContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IBodyStatementContext)(nil)).Elem(), i) + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IBodyStatementContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } if t == nil { return nil @@ -1215,7 +1301,13 @@ func NewBodyStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext func (s *BodyStatementContext) GetParser() antlr.Parser { return s.parser } func (s *BodyStatementContext) VariableDeclaration() IVariableDeclarationContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IVariableDeclarationContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IVariableDeclarationContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -1225,7 +1317,13 @@ func (s *BodyStatementContext) VariableDeclaration() IVariableDeclarationContext } func (s *BodyStatementContext) FunctionCallExpression() IFunctionCallExpressionContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IFunctionCallExpressionContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IFunctionCallExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -1235,7 +1333,13 @@ func (s *BodyStatementContext) FunctionCallExpression() IFunctionCallExpressionC } func (s *BodyStatementContext) WaitForExpression() IWaitForExpressionContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IWaitForExpressionContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IWaitForExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -1365,7 +1469,13 @@ func NewBodyExpressionContext(parser antlr.Parser, parent antlr.ParserRuleContex func (s *BodyExpressionContext) GetParser() antlr.Parser { return s.parser } func (s *BodyExpressionContext) ReturnExpression() IReturnExpressionContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IReturnExpressionContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IReturnExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -1375,7 +1485,13 @@ func (s *BodyExpressionContext) ReturnExpression() IReturnExpressionContext { } func (s *BodyExpressionContext) ForExpression() IForExpressionContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IForExpressionContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IForExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -1520,7 +1636,13 @@ func (s *VariableDeclarationContext) Assign() antlr.TerminalNode { } func (s *VariableDeclarationContext) Expression() IExpressionContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -1538,7 +1660,13 @@ func (s *VariableDeclarationContext) IgnoreIdentifier() antlr.TerminalNode { } func (s *VariableDeclarationContext) SafeReservedWord() ISafeReservedWordContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*ISafeReservedWordContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISafeReservedWordContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -1704,7 +1832,13 @@ func (s *ReturnExpressionContext) Return() antlr.TerminalNode { } func (s *ReturnExpressionContext) Expression() IExpressionContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -1862,7 +1996,13 @@ func (s *ForExpressionContext) In() antlr.TerminalNode { } func (s *ForExpressionContext) ForExpressionSource() IForExpressionSourceContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IForExpressionSourceContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IForExpressionSourceContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -1872,7 +2012,13 @@ func (s *ForExpressionContext) ForExpressionSource() IForExpressionSourceContext } func (s *ForExpressionContext) ForExpressionReturn() IForExpressionReturnContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IForExpressionReturnContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IForExpressionReturnContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -1898,12 +2044,20 @@ func (s *ForExpressionContext) Comma() antlr.TerminalNode { } func (s *ForExpressionContext) AllForExpressionBody() []IForExpressionBodyContext { - var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IForExpressionBodyContext)(nil)).Elem()) - var tst = make([]IForExpressionBodyContext, len(ts)) + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IForExpressionBodyContext); ok { + len++ + } + } - for i, t := range ts { - if t != nil { + tst := make([]IForExpressionBodyContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IForExpressionBodyContext); ok { tst[i] = t.(IForExpressionBodyContext) + i++ } } @@ -1911,7 +2065,17 @@ func (s *ForExpressionContext) AllForExpressionBody() []IForExpressionBodyContex } func (s *ForExpressionContext) ForExpressionBody(i int) IForExpressionBodyContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IForExpressionBodyContext)(nil)).Elem(), i) + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IForExpressionBodyContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } if t == nil { return nil @@ -1925,7 +2089,13 @@ func (s *ForExpressionContext) While() antlr.TerminalNode { } func (s *ForExpressionContext) Expression() IExpressionContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -2176,7 +2346,13 @@ func NewForExpressionSourceContext(parser antlr.Parser, parent antlr.ParserRuleC func (s *ForExpressionSourceContext) GetParser() antlr.Parser { return s.parser } func (s *ForExpressionSourceContext) FunctionCallExpression() IFunctionCallExpressionContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IFunctionCallExpressionContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IFunctionCallExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -2186,7 +2362,13 @@ func (s *ForExpressionSourceContext) FunctionCallExpression() IFunctionCallExpre } func (s *ForExpressionSourceContext) ArrayLiteral() IArrayLiteralContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IArrayLiteralContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IArrayLiteralContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -2196,7 +2378,13 @@ func (s *ForExpressionSourceContext) ArrayLiteral() IArrayLiteralContext { } func (s *ForExpressionSourceContext) ObjectLiteral() IObjectLiteralContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IObjectLiteralContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IObjectLiteralContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -2206,7 +2394,13 @@ func (s *ForExpressionSourceContext) ObjectLiteral() IObjectLiteralContext { } func (s *ForExpressionSourceContext) Variable() IVariableContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IVariableContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IVariableContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -2216,7 +2410,13 @@ func (s *ForExpressionSourceContext) Variable() IVariableContext { } func (s *ForExpressionSourceContext) MemberExpression() IMemberExpressionContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IMemberExpressionContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IMemberExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -2226,7 +2426,13 @@ func (s *ForExpressionSourceContext) MemberExpression() IMemberExpressionContext } func (s *ForExpressionSourceContext) RangeOperator() IRangeOperatorContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IRangeOperatorContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IRangeOperatorContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -2236,7 +2442,13 @@ func (s *ForExpressionSourceContext) RangeOperator() IRangeOperatorContext { } func (s *ForExpressionSourceContext) Param() IParamContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IParamContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IParamContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -2394,7 +2606,13 @@ func NewForExpressionClauseContext(parser antlr.Parser, parent antlr.ParserRuleC func (s *ForExpressionClauseContext) GetParser() antlr.Parser { return s.parser } func (s *ForExpressionClauseContext) LimitClause() ILimitClauseContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*ILimitClauseContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ILimitClauseContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -2404,7 +2622,13 @@ func (s *ForExpressionClauseContext) LimitClause() ILimitClauseContext { } func (s *ForExpressionClauseContext) SortClause() ISortClauseContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*ISortClauseContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISortClauseContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -2414,7 +2638,13 @@ func (s *ForExpressionClauseContext) SortClause() ISortClauseContext { } func (s *ForExpressionClauseContext) FilterClause() IFilterClauseContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IFilterClauseContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IFilterClauseContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -2424,7 +2654,13 @@ func (s *ForExpressionClauseContext) FilterClause() IFilterClauseContext { } func (s *ForExpressionClauseContext) CollectClause() ICollectClauseContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*ICollectClauseContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICollectClauseContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -2564,7 +2800,13 @@ func NewForExpressionStatementContext(parser antlr.Parser, parent antlr.ParserRu func (s *ForExpressionStatementContext) GetParser() antlr.Parser { return s.parser } func (s *ForExpressionStatementContext) VariableDeclaration() IVariableDeclarationContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IVariableDeclarationContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IVariableDeclarationContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -2574,7 +2816,13 @@ func (s *ForExpressionStatementContext) VariableDeclaration() IVariableDeclarati } func (s *ForExpressionStatementContext) FunctionCallExpression() IFunctionCallExpressionContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IFunctionCallExpressionContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IFunctionCallExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -2697,7 +2945,13 @@ func NewForExpressionBodyContext(parser antlr.Parser, parent antlr.ParserRuleCon func (s *ForExpressionBodyContext) GetParser() antlr.Parser { return s.parser } func (s *ForExpressionBodyContext) ForExpressionStatement() IForExpressionStatementContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IForExpressionStatementContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IForExpressionStatementContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -2707,7 +2961,13 @@ func (s *ForExpressionBodyContext) ForExpressionStatement() IForExpressionStatem } func (s *ForExpressionBodyContext) ForExpressionClause() IForExpressionClauseContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IForExpressionClauseContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IForExpressionClauseContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -2830,7 +3090,13 @@ func NewForExpressionReturnContext(parser antlr.Parser, parent antlr.ParserRuleC func (s *ForExpressionReturnContext) GetParser() antlr.Parser { return s.parser } func (s *ForExpressionReturnContext) ReturnExpression() IReturnExpressionContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IReturnExpressionContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IReturnExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -2840,7 +3106,13 @@ func (s *ForExpressionReturnContext) ReturnExpression() IReturnExpressionContext } func (s *ForExpressionReturnContext) ForExpression() IForExpressionContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IForExpressionContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IForExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -2970,7 +3242,13 @@ func (s *FilterClauseContext) Filter() antlr.TerminalNode { } func (s *FilterClauseContext) Expression() IExpressionContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -3088,12 +3366,20 @@ func (s *LimitClauseContext) Limit() antlr.TerminalNode { } func (s *LimitClauseContext) AllLimitClauseValue() []ILimitClauseValueContext { - var ts = s.GetTypedRuleContexts(reflect.TypeOf((*ILimitClauseValueContext)(nil)).Elem()) - var tst = make([]ILimitClauseValueContext, len(ts)) + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(ILimitClauseValueContext); ok { + len++ + } + } - for i, t := range ts { - if t != nil { + tst := make([]ILimitClauseValueContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(ILimitClauseValueContext); ok { tst[i] = t.(ILimitClauseValueContext) + i++ } } @@ -3101,7 +3387,17 @@ func (s *LimitClauseContext) AllLimitClauseValue() []ILimitClauseValueContext { } func (s *LimitClauseContext) LimitClauseValue(i int) ILimitClauseValueContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*ILimitClauseValueContext)(nil)).Elem(), i) + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ILimitClauseValueContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } if t == nil { return nil @@ -3235,7 +3531,13 @@ func NewLimitClauseValueContext(parser antlr.Parser, parent antlr.ParserRuleCont func (s *LimitClauseValueContext) GetParser() antlr.Parser { return s.parser } func (s *LimitClauseValueContext) IntegerLiteral() IIntegerLiteralContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IIntegerLiteralContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IIntegerLiteralContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -3245,7 +3547,13 @@ func (s *LimitClauseValueContext) IntegerLiteral() IIntegerLiteralContext { } func (s *LimitClauseValueContext) Param() IParamContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IParamContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IParamContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -3255,7 +3563,13 @@ func (s *LimitClauseValueContext) Param() IParamContext { } func (s *LimitClauseValueContext) Variable() IVariableContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IVariableContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IVariableContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -3265,7 +3579,13 @@ func (s *LimitClauseValueContext) Variable() IVariableContext { } func (s *LimitClauseValueContext) FunctionCallExpression() IFunctionCallExpressionContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IFunctionCallExpressionContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IFunctionCallExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -3275,7 +3595,13 @@ func (s *LimitClauseValueContext) FunctionCallExpression() IFunctionCallExpressi } func (s *LimitClauseValueContext) MemberExpression() IMemberExpressionContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IMemberExpressionContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IMemberExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -3423,12 +3749,20 @@ func (s *SortClauseContext) Sort() antlr.TerminalNode { } func (s *SortClauseContext) AllSortClauseExpression() []ISortClauseExpressionContext { - var ts = s.GetTypedRuleContexts(reflect.TypeOf((*ISortClauseExpressionContext)(nil)).Elem()) - var tst = make([]ISortClauseExpressionContext, len(ts)) + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(ISortClauseExpressionContext); ok { + len++ + } + } - for i, t := range ts { - if t != nil { + tst := make([]ISortClauseExpressionContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(ISortClauseExpressionContext); ok { tst[i] = t.(ISortClauseExpressionContext) + i++ } } @@ -3436,7 +3770,17 @@ func (s *SortClauseContext) AllSortClauseExpression() []ISortClauseExpressionCon } func (s *SortClauseContext) SortClauseExpression(i int) ISortClauseExpressionContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*ISortClauseExpressionContext)(nil)).Elem(), i) + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISortClauseExpressionContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } if t == nil { return nil @@ -3577,7 +3921,13 @@ func NewSortClauseExpressionContext(parser antlr.Parser, parent antlr.ParserRule func (s *SortClauseExpressionContext) GetParser() antlr.Parser { return s.parser } func (s *SortClauseExpressionContext) Expression() IExpressionContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -3705,7 +4055,13 @@ func (s *CollectClauseContext) Collect() antlr.TerminalNode { } func (s *CollectClauseContext) CollectCounter() ICollectCounterContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*ICollectCounterContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICollectCounterContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -3715,7 +4071,13 @@ func (s *CollectClauseContext) CollectCounter() ICollectCounterContext { } func (s *CollectClauseContext) CollectAggregator() ICollectAggregatorContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*ICollectAggregatorContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICollectAggregatorContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -3725,7 +4087,13 @@ func (s *CollectClauseContext) CollectAggregator() ICollectAggregatorContext { } func (s *CollectClauseContext) CollectGrouping() ICollectGroupingContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*ICollectGroupingContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICollectGroupingContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -3735,7 +4103,13 @@ func (s *CollectClauseContext) CollectGrouping() ICollectGroupingContext { } func (s *CollectClauseContext) CollectGroupVariable() ICollectGroupVariableContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*ICollectGroupVariableContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICollectGroupVariableContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -3930,7 +4304,13 @@ func (s *CollectSelectorContext) Assign() antlr.TerminalNode { } func (s *CollectSelectorContext) Expression() IExpressionContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IExpressionContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -4048,12 +4428,20 @@ func NewCollectGroupingContext(parser antlr.Parser, parent antlr.ParserRuleConte func (s *CollectGroupingContext) GetParser() antlr.Parser { return s.parser } func (s *CollectGroupingContext) AllCollectSelector() []ICollectSelectorContext { - var ts = s.GetTypedRuleContexts(reflect.TypeOf((*ICollectSelectorContext)(nil)).Elem()) - var tst = make([]ICollectSelectorContext, len(ts)) + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(ICollectSelectorContext); ok { + len++ + } + } - for i, t := range ts { - if t != nil { + tst := make([]ICollectSelectorContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(ICollectSelectorContext); ok { tst[i] = t.(ICollectSelectorContext) + i++ } } @@ -4061,7 +4449,17 @@ func (s *CollectGroupingContext) AllCollectSelector() []ICollectSelectorContext } func (s *CollectGroupingContext) CollectSelector(i int) ICollectSelectorContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*ICollectSelectorContext)(nil)).Elem(), i) + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICollectSelectorContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } if t == nil { return nil @@ -4202,12 +4600,20 @@ func (s *CollectAggregatorContext) Aggregate() antlr.TerminalNode { } func (s *CollectAggregatorContext) AllCollectAggregateSelector() []ICollectAggregateSelectorContext { - var ts = s.GetTypedRuleContexts(reflect.TypeOf((*ICollectAggregateSelectorContext)(nil)).Elem()) - var tst = make([]ICollectAggregateSelectorContext, len(ts)) + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(ICollectAggregateSelectorContext); ok { + len++ + } + } - for i, t := range ts { - if t != nil { + tst := make([]ICollectAggregateSelectorContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(ICollectAggregateSelectorContext); ok { tst[i] = t.(ICollectAggregateSelectorContext) + i++ } } @@ -4215,7 +4621,17 @@ func (s *CollectAggregatorContext) AllCollectAggregateSelector() []ICollectAggre } func (s *CollectAggregatorContext) CollectAggregateSelector(i int) ICollectAggregateSelectorContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*ICollectAggregateSelectorContext)(nil)).Elem(), i) + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICollectAggregateSelectorContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } if t == nil { return nil @@ -4364,7 +4780,13 @@ func (s *CollectAggregateSelectorContext) Assign() antlr.TerminalNode { } func (s *CollectAggregateSelectorContext) FunctionCallExpression() IFunctionCallExpressionContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IFunctionCallExpressionContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IFunctionCallExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -4486,7 +4908,13 @@ func (s *CollectGroupVariableContext) Into() antlr.TerminalNode { } func (s *CollectGroupVariableContext) CollectSelector() ICollectSelectorContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*ICollectSelectorContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICollectSelectorContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -4779,7 +5207,13 @@ func (s *WaitForExpressionContext) Event() antlr.TerminalNode { } func (s *WaitForExpressionContext) WaitForEventName() IWaitForEventNameContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IWaitForEventNameContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IWaitForEventNameContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -4793,7 +5227,13 @@ func (s *WaitForExpressionContext) In() antlr.TerminalNode { } func (s *WaitForExpressionContext) WaitForEventSource() IWaitForEventSourceContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IWaitForEventSourceContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IWaitForEventSourceContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -4803,7 +5243,13 @@ func (s *WaitForExpressionContext) WaitForEventSource() IWaitForEventSourceConte } func (s *WaitForExpressionContext) OptionsClause() IOptionsClauseContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IOptionsClauseContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IOptionsClauseContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -4813,7 +5259,13 @@ func (s *WaitForExpressionContext) OptionsClause() IOptionsClauseContext { } func (s *WaitForExpressionContext) FilterClause() IFilterClauseContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IFilterClauseContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IFilterClauseContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -4823,7 +5275,13 @@ func (s *WaitForExpressionContext) FilterClause() IFilterClauseContext { } func (s *WaitForExpressionContext) TimeoutClause() ITimeoutClauseContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*ITimeoutClauseContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITimeoutClauseContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -4979,7 +5437,13 @@ func NewWaitForEventNameContext(parser antlr.Parser, parent antlr.ParserRuleCont func (s *WaitForEventNameContext) GetParser() antlr.Parser { return s.parser } func (s *WaitForEventNameContext) StringLiteral() IStringLiteralContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IStringLiteralContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IStringLiteralContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -4989,7 +5453,13 @@ func (s *WaitForEventNameContext) StringLiteral() IStringLiteralContext { } func (s *WaitForEventNameContext) Variable() IVariableContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IVariableContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IVariableContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -4999,7 +5469,13 @@ func (s *WaitForEventNameContext) Variable() IVariableContext { } func (s *WaitForEventNameContext) Param() IParamContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IParamContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IParamContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -5009,7 +5485,13 @@ func (s *WaitForEventNameContext) Param() IParamContext { } func (s *WaitForEventNameContext) FunctionCallExpression() IFunctionCallExpressionContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IFunctionCallExpressionContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IFunctionCallExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -5019,7 +5501,13 @@ func (s *WaitForEventNameContext) FunctionCallExpression() IFunctionCallExpressi } func (s *WaitForEventNameContext) MemberExpression() IMemberExpressionContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IMemberExpressionContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IMemberExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -5163,7 +5651,13 @@ func NewWaitForEventSourceContext(parser antlr.Parser, parent antlr.ParserRuleCo func (s *WaitForEventSourceContext) GetParser() antlr.Parser { return s.parser } func (s *WaitForEventSourceContext) FunctionCallExpression() IFunctionCallExpressionContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IFunctionCallExpressionContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IFunctionCallExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -5173,7 +5667,13 @@ func (s *WaitForEventSourceContext) FunctionCallExpression() IFunctionCallExpres } func (s *WaitForEventSourceContext) Variable() IVariableContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IVariableContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IVariableContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -5183,7 +5683,13 @@ func (s *WaitForEventSourceContext) Variable() IVariableContext { } func (s *WaitForEventSourceContext) MemberExpression() IMemberExpressionContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IMemberExpressionContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IMemberExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -5317,7 +5823,13 @@ func (s *OptionsClauseContext) Options() antlr.TerminalNode { } func (s *OptionsClauseContext) ObjectLiteral() IObjectLiteralContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IObjectLiteralContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IObjectLiteralContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -5435,7 +5947,13 @@ func (s *TimeoutClauseContext) Timeout() antlr.TerminalNode { } func (s *TimeoutClauseContext) IntegerLiteral() IIntegerLiteralContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IIntegerLiteralContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IIntegerLiteralContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -5445,7 +5963,13 @@ func (s *TimeoutClauseContext) IntegerLiteral() IIntegerLiteralContext { } func (s *TimeoutClauseContext) Variable() IVariableContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IVariableContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IVariableContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -5455,7 +5979,13 @@ func (s *TimeoutClauseContext) Variable() IVariableContext { } func (s *TimeoutClauseContext) Param() IParamContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IParamContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IParamContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -5465,7 +5995,13 @@ func (s *TimeoutClauseContext) Param() IParamContext { } func (s *TimeoutClauseContext) MemberExpression() IMemberExpressionContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IMemberExpressionContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IMemberExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -5475,7 +6011,13 @@ func (s *TimeoutClauseContext) MemberExpression() IMemberExpressionContext { } func (s *TimeoutClauseContext) FunctionCall() IFunctionCallContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IFunctionCallContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IFunctionCallContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -5627,7 +6169,13 @@ func (s *ParamContext) Identifier() antlr.TerminalNode { } func (s *ParamContext) SafeReservedWord() ISafeReservedWordContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*ISafeReservedWordContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISafeReservedWordContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -5762,7 +6310,13 @@ func (s *VariableContext) Identifier() antlr.TerminalNode { } func (s *VariableContext) SafeReservedWord() ISafeReservedWordContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*ISafeReservedWordContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISafeReservedWordContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -5888,7 +6442,13 @@ func NewLiteralContext(parser antlr.Parser, parent antlr.ParserRuleContext, invo func (s *LiteralContext) GetParser() antlr.Parser { return s.parser } func (s *LiteralContext) ArrayLiteral() IArrayLiteralContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IArrayLiteralContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IArrayLiteralContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -5898,7 +6458,13 @@ func (s *LiteralContext) ArrayLiteral() IArrayLiteralContext { } func (s *LiteralContext) ObjectLiteral() IObjectLiteralContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IObjectLiteralContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IObjectLiteralContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -5908,7 +6474,13 @@ func (s *LiteralContext) ObjectLiteral() IObjectLiteralContext { } func (s *LiteralContext) BooleanLiteral() IBooleanLiteralContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IBooleanLiteralContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IBooleanLiteralContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -5918,7 +6490,13 @@ func (s *LiteralContext) BooleanLiteral() IBooleanLiteralContext { } func (s *LiteralContext) StringLiteral() IStringLiteralContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IStringLiteralContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IStringLiteralContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -5928,7 +6506,13 @@ func (s *LiteralContext) StringLiteral() IStringLiteralContext { } func (s *LiteralContext) FloatLiteral() IFloatLiteralContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IFloatLiteralContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IFloatLiteralContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -5938,7 +6522,13 @@ func (s *LiteralContext) FloatLiteral() IFloatLiteralContext { } func (s *LiteralContext) IntegerLiteral() IIntegerLiteralContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IIntegerLiteralContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IIntegerLiteralContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -5948,7 +6538,13 @@ func (s *LiteralContext) IntegerLiteral() IIntegerLiteralContext { } func (s *LiteralContext) NoneLiteral() INoneLiteralContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*INoneLiteralContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INoneLiteralContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -6117,7 +6713,13 @@ func (s *ArrayLiteralContext) CloseBracket() antlr.TerminalNode { } func (s *ArrayLiteralContext) ArgumentList() IArgumentListContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IArgumentListContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IArgumentListContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -6189,7 +6791,7 @@ func (p *FqlParser) ArrayLiteral() (localctx IArrayLiteralContext) { p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) - if (((_la-9)&-(0x1f+1)) == 0 && ((1<` would generate span containing the title. // @param {String} [params.footerTemplate] - HTML template for the print footer. Should use the same format as the `headerTemplate`. // @param {Bool} [params.preferCSSPageSize=False] - Whether or not to prefer page size as defined by css. Defaults to false, in which case the content will be scaled to fit the paper size. * @@ -246,18 +245,6 @@ func PDF(ctx context.Context, args ...core.Value) (core.Value, error) { pdfParams.PageRanges = pageRanges.(values.String) } - ignoreInvalidPageRanges, found := params.Get("ignoreInvalidPageRanges") - - if found { - err = core.ValidateType(ignoreInvalidPageRanges, types.Boolean) - - if err != nil { - return values.None, err - } - - pdfParams.IgnoreInvalidPageRanges = ignoreInvalidPageRanges.(values.Boolean) - } - headerTemplate, found := params.Get("headerTemplate") if found { diff --git a/pkg/stdlib/html/press.go b/pkg/stdlib/html/press.go index 18531929..1bb2fc1b 100644 --- a/pkg/stdlib/html/press.go +++ b/pkg/stdlib/html/press.go @@ -2,6 +2,7 @@ package html import ( "context" + "github.com/MontFerret/ferret/pkg/drivers" "github.com/MontFerret/ferret/pkg/runtime/core" "github.com/MontFerret/ferret/pkg/runtime/values" diff --git a/pkg/stdlib/html/press_selector.go b/pkg/stdlib/html/press_selector.go index 4e17b883..16ebad1a 100644 --- a/pkg/stdlib/html/press_selector.go +++ b/pkg/stdlib/html/press_selector.go @@ -2,6 +2,7 @@ package html import ( "context" + "github.com/MontFerret/ferret/pkg/runtime/values/types" "github.com/MontFerret/ferret/pkg/drivers" diff --git a/pkg/stdlib/html/wait_navigation.go b/pkg/stdlib/html/wait_navigation.go index b0cbe9ca..d864d7b1 100644 --- a/pkg/stdlib/html/wait_navigation.go +++ b/pkg/stdlib/html/wait_navigation.go @@ -2,6 +2,7 @@ package html import ( "context" + "github.com/pkg/errors" "github.com/MontFerret/ferret/pkg/drivers" diff --git a/pkg/stdlib/html/xpath_selector.go b/pkg/stdlib/html/xpath_selector.go index 05ce21be..e85c9359 100644 --- a/pkg/stdlib/html/xpath_selector.go +++ b/pkg/stdlib/html/xpath_selector.go @@ -2,6 +2,7 @@ package html import ( "context" + "github.com/MontFerret/ferret/pkg/drivers" "github.com/MontFerret/ferret/pkg/runtime/core" diff --git a/pkg/stdlib/io/net/http/delete_test.go b/pkg/stdlib/io/net/http/delete_test.go index ed962b23..47f8155f 100644 --- a/pkg/stdlib/io/net/http/delete_test.go +++ b/pkg/stdlib/io/net/http/delete_test.go @@ -3,12 +3,12 @@ package http_test import ( "context" "encoding/json" - "fmt" - "io/ioutil" - "math/rand" + "io" h "net/http" "testing" + "github.com/jarcoal/httpmock" + "github.com/pkg/errors" . "github.com/smartystreets/goconvey/convey" @@ -17,44 +17,24 @@ import ( "github.com/MontFerret/ferret/pkg/stdlib/io/net/http" ) -func randPort() string { - min := 8000 - max := 8999 - return fmt.Sprintf(":%d", rand.Intn(max-min)+min) -} - func TestDELETE(t *testing.T) { - SkipConvey("Should successfully make request", t, func() { - type User struct { - FirstName string `json:"first_name"` - LastName string `json:"last_name"` - } + url := "https://api.montferret.io/users" - port := randPort() + type User struct { + FirstName string `json:"first_name"` + LastName string `json:"last_name"` + } - server := &h.Server{ - Addr: port, - Handler: h.HandlerFunc(func(w h.ResponseWriter, r *h.Request) { - var err error + Convey("Should successfully make request", t, func() { + httpmock.Activate() + defer httpmock.DeactivateAndReset() - defer func() { - if err != nil { - w.Write([]byte(err.Error())) - } else { - w.Write([]byte("OK")) - } - }() - - if r.Method != "DELETE" { - err = errors.Errorf("Expected method to be DELETE, but got %s", r.Method) - - return - } - - data, err := ioutil.ReadAll(r.Body) + httpmock.RegisterResponder("DELETE", url, + func(req *h.Request) (*h.Response, error) { + data, err := io.ReadAll(req.Body) if err != nil { - return + return nil, err } user := User{} @@ -62,33 +42,21 @@ func TestDELETE(t *testing.T) { err = json.Unmarshal(data, &user) if err != nil { - return + return nil, err } if user.FirstName != "Rob" { - err = errors.Errorf("Expected FirstName to be Rob, but got %s", user.FirstName) - - return + return nil, errors.Errorf("Expected FirstName to be Rob, but got %s", user.FirstName) } if user.LastName != "Pike" { - err = errors.Errorf("Expected LastName to be Pike, but got %s", user.LastName) - - return + return nil, errors.Errorf("Expected LastName to be Pike, but got %s", user.LastName) } - }), - } - ctx, cancel := context.WithCancel(context.Background()) + return httpmock.NewStringResponse(200, "OK"), nil + }) - go func() { - server.ListenAndServe() - }() - - defer func() { - cancel() - server.Shutdown(ctx) - }() + ctx := context.Background() b, err := json.Marshal(User{ FirstName: "Rob", @@ -98,7 +66,7 @@ func TestDELETE(t *testing.T) { So(err, ShouldBeNil) out, err := http.DELETE(ctx, values.NewObjectWith( - values.NewObjectProperty("url", values.NewString("http://127.0.0.1"+port)), + values.NewObjectProperty("url", values.NewString(url)), values.NewObjectProperty("body", values.NewBinary(b)), )) diff --git a/pkg/stdlib/io/net/http/get_test.go b/pkg/stdlib/io/net/http/get_test.go index df82d026..6a271872 100644 --- a/pkg/stdlib/io/net/http/get_test.go +++ b/pkg/stdlib/io/net/http/get_test.go @@ -2,103 +2,63 @@ package http_test import ( "context" - "github.com/MontFerret/ferret/pkg/runtime/values" - "github.com/MontFerret/ferret/pkg/runtime/values/types" - "github.com/pkg/errors" h "net/http" "testing" + "github.com/jarcoal/httpmock" + + "github.com/pkg/errors" + + "github.com/MontFerret/ferret/pkg/runtime/values" + "github.com/MontFerret/ferret/pkg/runtime/values/types" + . "github.com/smartystreets/goconvey/convey" "github.com/MontFerret/ferret/pkg/stdlib/io/net/http" ) func TestGET(t *testing.T) { - SkipConvey("Should successfully make request", t, func() { - port := randPort() + url := "https://api.montferret.io/users" - server := &h.Server{ - Addr: port, - Handler: h.HandlerFunc(func(w h.ResponseWriter, r *h.Request) { - if r.Method == "GET" { - w.Write([]byte("OK")) - } else { - w.Write([]byte("Expected method to be GET")) - } - }), - } + Convey("Should successfully make request", t, func() { + httpmock.Activate() + defer httpmock.DeactivateAndReset() - ctx, cancel := context.WithCancel(context.Background()) + httpmock.RegisterResponder("GET", url, + func(req *h.Request) (*h.Response, error) { + return httpmock.NewStringResponse(200, "OK"), nil + }) - go func() { - server.ListenAndServe() - }() + ctx := context.Background() - defer func() { - cancel() - server.Shutdown(ctx) - }() - - out, err := http.GET(ctx, values.NewString("http://localhost"+port)) + out, err := http.GET(ctx, values.NewString(url)) So(err, ShouldBeNil) So(out.Type().ID(), ShouldEqual, types.Binary.ID()) So(out.String(), ShouldEqual, "OK") }) - SkipConvey("Should add headers to a request", t, func() { - port := randPort() + Convey("Should add headers to a request", t, func() { + httpmock.Activate() + defer httpmock.DeactivateAndReset() - server := &h.Server{ - Addr: port, - Handler: h.HandlerFunc(func(w h.ResponseWriter, r *h.Request) { - var err error - - defer func() { - if err != nil { - w.Write([]byte(err.Error())) - } else { - w.Write([]byte("OK")) - } - }() - - if r.Method != "GET" { - err = errors.Errorf("Expected method to be GET, but got %s", r.Method) - - return + httpmock.RegisterResponder("GET", url, + func(req *h.Request) (*h.Response, error) { + if req.Header.Get("X-Token") != "Ferret" { + return nil, errors.Errorf("Expected X-Token to be Ferret, but got %s", req.Header.Get("X-Token")) } - token := r.Header.Get("X-Token") - - if token != "Ferret" { - err = errors.Errorf("Expected X-Token header to equal to Ferret, but got %s", token) - - return + if req.Header.Get("X-From") != "localhost" { + return nil, errors.Errorf("Expected X-From to be localhost, but got %s", req.Header.Get("X-From")) } - from := r.Header.Get("X-From") + return httpmock.NewStringResponse(200, "OK"), nil + }) - if from != "localhost" { - err = errors.Errorf("Expected X-From header to equal to localhost, but got %s", from) - - return - } - }), - } - - ctx, cancel := context.WithCancel(context.Background()) - - go func() { - server.ListenAndServe() - }() - - defer func() { - cancel() - server.Shutdown(ctx) - }() + ctx := context.Background() out, err := http.GET(ctx, values.NewObjectWith( - values.NewObjectProperty("url", values.NewString("http://127.0.0.1"+port)), + values.NewObjectProperty("url", values.NewString(url)), values.NewObjectProperty("headers", values.NewObjectWith( values.NewObjectProperty("X-Token", values.NewString("Ferret")), values.NewObjectProperty("X-From", values.NewString("localhost")), diff --git a/pkg/stdlib/io/net/http/post_test.go b/pkg/stdlib/io/net/http/post_test.go index 1de06bcf..a1061151 100644 --- a/pkg/stdlib/io/net/http/post_test.go +++ b/pkg/stdlib/io/net/http/post_test.go @@ -3,10 +3,12 @@ package http_test import ( "context" "encoding/json" - "io/ioutil" + "io" h "net/http" "testing" + "github.com/jarcoal/httpmock" + "github.com/pkg/errors" . "github.com/smartystreets/goconvey/convey" @@ -16,37 +18,23 @@ import ( ) func TestPOST(t *testing.T) { + url := "https://api.montferret.io/users" + + type User struct { + FirstName string `json:"first_name"` + LastName string `json:"last_name"` + } + Convey("Should successfully make request", t, func() { - type User struct { - FirstName string `json:"first_name"` - LastName string `json:"last_name"` - } + httpmock.Activate() + defer httpmock.DeactivateAndReset() - port := randPort() - - server := &h.Server{ - Addr: port, - Handler: h.HandlerFunc(func(w h.ResponseWriter, r *h.Request) { - var err error - - defer func() { - if err != nil { - w.Write([]byte(err.Error())) - } else { - w.Write([]byte("OK")) - } - }() - - if r.Method != "POST" { - err = errors.Errorf("Expected method to be POST, but got %s", r.Method) - - return - } - - data, err := ioutil.ReadAll(r.Body) + httpmock.RegisterResponder("POST", url, + func(req *h.Request) (*h.Response, error) { + data, err := io.ReadAll(req.Body) if err != nil { - return + return nil, err } user := User{} @@ -54,33 +42,21 @@ func TestPOST(t *testing.T) { err = json.Unmarshal(data, &user) if err != nil { - return + return nil, err } if user.FirstName != "Rob" { - err = errors.Errorf("Expected FirstName to be Rob, but got %s", user.FirstName) - - return + return nil, errors.Errorf("Expected FirstName to be Rob, but got %s", user.FirstName) } if user.LastName != "Pike" { - err = errors.Errorf("Expected LastName to be Pike, but got %s", user.LastName) - - return + return nil, errors.Errorf("Expected LastName to be Pike, but got %s", user.LastName) } - }), - } - ctx, cancel := context.WithCancel(context.Background()) + return httpmock.NewStringResponse(200, "OK"), nil + }) - go func() { - server.ListenAndServe() - }() - - defer func() { - cancel() - server.Shutdown(ctx) - }() + ctx := context.Background() b, err := json.Marshal(User{ FirstName: "Rob", @@ -90,7 +66,7 @@ func TestPOST(t *testing.T) { So(err, ShouldBeNil) out, err := http.POST(ctx, values.NewObjectWith( - values.NewObjectProperty("url", values.NewString("http://127.0.0.1"+port)), + values.NewObjectProperty("url", values.NewString(url)), values.NewObjectProperty("body", values.NewBinary(b)), )) @@ -100,36 +76,15 @@ func TestPOST(t *testing.T) { }) Convey("Should successfully make request with auto-marshalling to JSON", t, func() { - type User struct { - FirstName string `json:"first_name"` - LastName string `json:"last_name"` - } + httpmock.Activate() + defer httpmock.DeactivateAndReset() - port := randPort() - - server := &h.Server{ - Addr: port, - Handler: h.HandlerFunc(func(w h.ResponseWriter, r *h.Request) { - var err error - - defer func() { - if err != nil { - w.Write([]byte(err.Error())) - } else { - w.Write([]byte("OK")) - } - }() - - if r.Method != "POST" { - err = errors.Errorf("Expected method to be POST, but got %s", r.Method) - - return - } - - data, err := ioutil.ReadAll(r.Body) + httpmock.RegisterResponder("POST", url, + func(req *h.Request) (*h.Response, error) { + data, err := io.ReadAll(req.Body) if err != nil { - return + return nil, err } user := User{} @@ -137,33 +92,21 @@ func TestPOST(t *testing.T) { err = json.Unmarshal(data, &user) if err != nil { - return + return nil, err } if user.FirstName != "Rob" { - err = errors.Errorf("Expected FirstName to be Rob, but got %s", user.FirstName) - - return + return nil, errors.Errorf("Expected FirstName to be Rob, but got %s", user.FirstName) } if user.LastName != "Pike" { - err = errors.Errorf("Expected LastName to be Pike, but got %s", user.LastName) - - return + return nil, errors.Errorf("Expected LastName to be Pike, but got %s", user.LastName) } - }), - } - ctx, cancel := context.WithCancel(context.Background()) + return httpmock.NewStringResponse(200, "OK"), nil + }) - go func() { - server.ListenAndServe() - }() - - defer func() { - cancel() - server.Shutdown(ctx) - }() + ctx := context.Background() j := values.NewObjectWith( values.NewObjectProperty("first_name", values.NewString("Rob")), @@ -171,7 +114,7 @@ func TestPOST(t *testing.T) { ) out, err := http.POST(ctx, values.NewObjectWith( - values.NewObjectProperty("url", values.NewString("http://127.0.0.1"+port)), + values.NewObjectProperty("url", values.NewString(url)), values.NewObjectProperty("body", j), )) diff --git a/pkg/stdlib/io/net/http/put_test.go b/pkg/stdlib/io/net/http/put_test.go index 3f798233..3b922c6b 100644 --- a/pkg/stdlib/io/net/http/put_test.go +++ b/pkg/stdlib/io/net/http/put_test.go @@ -3,10 +3,12 @@ package http_test import ( "context" "encoding/json" - "io/ioutil" + "io" h "net/http" "testing" + "github.com/jarcoal/httpmock" + "github.com/pkg/errors" . "github.com/smartystreets/goconvey/convey" @@ -16,37 +18,23 @@ import ( ) func TestPUT(t *testing.T) { - SkipConvey("Should successfully make request", t, func() { - type User struct { - FirstName string `json:"first_name"` - LastName string `json:"last_name"` - } + url := "https://api.montferret.io/users" - port := randPort() + type User struct { + FirstName string `json:"first_name"` + LastName string `json:"last_name"` + } - server := &h.Server{ - Addr: port, - Handler: h.HandlerFunc(func(w h.ResponseWriter, r *h.Request) { - var err error + Convey("Should successfully make request", t, func() { + httpmock.Activate() + defer httpmock.DeactivateAndReset() - defer func() { - if err != nil { - w.Write([]byte(err.Error())) - } else { - w.Write([]byte("OK")) - } - }() - - if r.Method != "PUT" { - err = errors.Errorf("Expected method to be PUT, but got %s", r.Method) - - return - } - - data, err := ioutil.ReadAll(r.Body) + httpmock.RegisterResponder("PUT", url, + func(req *h.Request) (*h.Response, error) { + data, err := io.ReadAll(req.Body) if err != nil { - return + return nil, err } user := User{} @@ -54,33 +42,21 @@ func TestPUT(t *testing.T) { err = json.Unmarshal(data, &user) if err != nil { - return + return nil, err } if user.FirstName != "Rob" { - err = errors.Errorf("Expected FirstName to be Rob, but got %s", user.FirstName) - - return + return nil, errors.Errorf("Expected FirstName to be Rob, but got %s", user.FirstName) } if user.LastName != "Pike" { - err = errors.Errorf("Expected LastName to be Pike, but got %s", user.LastName) - - return + return nil, errors.Errorf("Expected LastName to be Pike, but got %s", user.LastName) } - }), - } - ctx, cancel := context.WithCancel(context.Background()) + return httpmock.NewStringResponse(200, "OK"), nil + }) - go func() { - server.ListenAndServe() - }() - - defer func() { - cancel() - server.Shutdown(ctx) - }() + ctx := context.Background() b, err := json.Marshal(User{ FirstName: "Rob", @@ -90,7 +66,7 @@ func TestPUT(t *testing.T) { So(err, ShouldBeNil) out, err := http.PUT(ctx, values.NewObjectWith( - values.NewObjectProperty("url", values.NewString("http://127.0.0.1"+port)), + values.NewObjectProperty("url", values.NewString(url)), values.NewObjectProperty("body", values.NewBinary(b)), )) diff --git a/pkg/stdlib/io/net/http/request.go b/pkg/stdlib/io/net/http/request.go index fd184aa9..a404416b 100644 --- a/pkg/stdlib/io/net/http/request.go +++ b/pkg/stdlib/io/net/http/request.go @@ -3,7 +3,7 @@ package http import ( "bytes" "context" - "io/ioutil" + "io" h "net/http" "github.com/MontFerret/ferret/pkg/runtime/core" @@ -77,7 +77,7 @@ func makeRequest(ctx context.Context, params Params) (core.Value, error) { return values.None, err } - data, err := ioutil.ReadAll(resp.Body) + data, err := io.ReadAll(resp.Body) if err != nil { return values.None, err diff --git a/pkg/stdlib/math/abs_test.go b/pkg/stdlib/math/abs_test.go index 8b13a166..fe936a70 100644 --- a/pkg/stdlib/math/abs_test.go +++ b/pkg/stdlib/math/abs_test.go @@ -2,9 +2,10 @@ package math_test import ( "context" + "testing" + "github.com/MontFerret/ferret/pkg/runtime/values" "github.com/MontFerret/ferret/pkg/stdlib/math" - "testing" . "github.com/smartystreets/goconvey/convey" ) diff --git a/pkg/stdlib/math/acos_test.go b/pkg/stdlib/math/acos_test.go index 526ac719..c2592515 100644 --- a/pkg/stdlib/math/acos_test.go +++ b/pkg/stdlib/math/acos_test.go @@ -2,9 +2,10 @@ package math_test import ( "context" + "testing" + "github.com/MontFerret/ferret/pkg/runtime/values" "github.com/MontFerret/ferret/pkg/stdlib/math" - "testing" . "github.com/smartystreets/goconvey/convey" ) diff --git a/pkg/stdlib/math/asin_test.go b/pkg/stdlib/math/asin_test.go index dd84a310..e29b7c17 100644 --- a/pkg/stdlib/math/asin_test.go +++ b/pkg/stdlib/math/asin_test.go @@ -2,9 +2,10 @@ package math_test import ( "context" + "testing" + "github.com/MontFerret/ferret/pkg/runtime/values" "github.com/MontFerret/ferret/pkg/stdlib/math" - "testing" . "github.com/smartystreets/goconvey/convey" ) diff --git a/pkg/stdlib/math/atan2_test.go b/pkg/stdlib/math/atan2_test.go index 29e421e1..6f71cd24 100644 --- a/pkg/stdlib/math/atan2_test.go +++ b/pkg/stdlib/math/atan2_test.go @@ -2,9 +2,10 @@ package math_test import ( "context" + "testing" + "github.com/MontFerret/ferret/pkg/runtime/values" "github.com/MontFerret/ferret/pkg/stdlib/math" - "testing" . "github.com/smartystreets/goconvey/convey" ) diff --git a/pkg/stdlib/math/atan_test.go b/pkg/stdlib/math/atan_test.go index 54323fab..4109c727 100644 --- a/pkg/stdlib/math/atan_test.go +++ b/pkg/stdlib/math/atan_test.go @@ -2,9 +2,10 @@ package math_test import ( "context" + "testing" + "github.com/MontFerret/ferret/pkg/runtime/values" "github.com/MontFerret/ferret/pkg/stdlib/math" - "testing" . "github.com/smartystreets/goconvey/convey" ) diff --git a/pkg/stdlib/math/average_test.go b/pkg/stdlib/math/average_test.go index 49d4a592..66e250d7 100644 --- a/pkg/stdlib/math/average_test.go +++ b/pkg/stdlib/math/average_test.go @@ -2,9 +2,10 @@ package math_test import ( "context" + "testing" + "github.com/MontFerret/ferret/pkg/runtime/values" "github.com/MontFerret/ferret/pkg/stdlib/math" - "testing" . "github.com/smartystreets/goconvey/convey" ) diff --git a/pkg/stdlib/math/ceil_test.go b/pkg/stdlib/math/ceil_test.go index bea49413..2db37cca 100644 --- a/pkg/stdlib/math/ceil_test.go +++ b/pkg/stdlib/math/ceil_test.go @@ -2,9 +2,10 @@ package math_test import ( "context" + "testing" + "github.com/MontFerret/ferret/pkg/runtime/values" "github.com/MontFerret/ferret/pkg/stdlib/math" - "testing" . "github.com/smartystreets/goconvey/convey" ) diff --git a/pkg/stdlib/math/cos_test.go b/pkg/stdlib/math/cos_test.go index 9d577acd..1b19f179 100644 --- a/pkg/stdlib/math/cos_test.go +++ b/pkg/stdlib/math/cos_test.go @@ -2,9 +2,10 @@ package math_test import ( "context" + "testing" + "github.com/MontFerret/ferret/pkg/runtime/values" "github.com/MontFerret/ferret/pkg/stdlib/math" - "testing" . "github.com/smartystreets/goconvey/convey" ) diff --git a/pkg/stdlib/math/degrees_test.go b/pkg/stdlib/math/degrees_test.go index 37ede9e4..5a6ee956 100644 --- a/pkg/stdlib/math/degrees_test.go +++ b/pkg/stdlib/math/degrees_test.go @@ -2,9 +2,10 @@ package math_test import ( "context" + "testing" + "github.com/MontFerret/ferret/pkg/runtime/values" "github.com/MontFerret/ferret/pkg/stdlib/math" - "testing" . "github.com/smartystreets/goconvey/convey" ) diff --git a/pkg/stdlib/math/exp2_test.go b/pkg/stdlib/math/exp2_test.go index 67536b01..7da4307b 100644 --- a/pkg/stdlib/math/exp2_test.go +++ b/pkg/stdlib/math/exp2_test.go @@ -2,9 +2,10 @@ package math_test import ( "context" + "testing" + "github.com/MontFerret/ferret/pkg/runtime/values" "github.com/MontFerret/ferret/pkg/stdlib/math" - "testing" . "github.com/smartystreets/goconvey/convey" ) diff --git a/pkg/stdlib/math/exp_test.go b/pkg/stdlib/math/exp_test.go index 23a92140..7a744e4a 100644 --- a/pkg/stdlib/math/exp_test.go +++ b/pkg/stdlib/math/exp_test.go @@ -2,9 +2,10 @@ package math_test import ( "context" + "testing" + "github.com/MontFerret/ferret/pkg/runtime/values" "github.com/MontFerret/ferret/pkg/stdlib/math" - "testing" . "github.com/smartystreets/goconvey/convey" ) diff --git a/pkg/stdlib/math/floor_test.go b/pkg/stdlib/math/floor_test.go index a215642c..eeccdc4e 100644 --- a/pkg/stdlib/math/floor_test.go +++ b/pkg/stdlib/math/floor_test.go @@ -2,9 +2,10 @@ package math_test import ( "context" + "testing" + "github.com/MontFerret/ferret/pkg/runtime/values" "github.com/MontFerret/ferret/pkg/stdlib/math" - "testing" . "github.com/smartystreets/goconvey/convey" ) diff --git a/pkg/stdlib/math/log10_test.go b/pkg/stdlib/math/log10_test.go index 10c14762..b8ad45fe 100644 --- a/pkg/stdlib/math/log10_test.go +++ b/pkg/stdlib/math/log10_test.go @@ -2,9 +2,10 @@ package math_test import ( "context" + "testing" + "github.com/MontFerret/ferret/pkg/runtime/values" "github.com/MontFerret/ferret/pkg/stdlib/math" - "testing" . "github.com/smartystreets/goconvey/convey" ) diff --git a/pkg/stdlib/math/log2_test.go b/pkg/stdlib/math/log2_test.go index 61b674bd..051959e7 100644 --- a/pkg/stdlib/math/log2_test.go +++ b/pkg/stdlib/math/log2_test.go @@ -2,9 +2,10 @@ package math_test import ( "context" + "testing" + "github.com/MontFerret/ferret/pkg/runtime/values" "github.com/MontFerret/ferret/pkg/stdlib/math" - "testing" . "github.com/smartystreets/goconvey/convey" ) diff --git a/pkg/stdlib/math/log_test.go b/pkg/stdlib/math/log_test.go index a999e82c..74309fbd 100644 --- a/pkg/stdlib/math/log_test.go +++ b/pkg/stdlib/math/log_test.go @@ -2,9 +2,10 @@ package math_test import ( "context" + "testing" + "github.com/MontFerret/ferret/pkg/runtime/values" "github.com/MontFerret/ferret/pkg/stdlib/math" - "testing" . "github.com/smartystreets/goconvey/convey" ) diff --git a/pkg/stdlib/math/max_test.go b/pkg/stdlib/math/max_test.go index fc3b19a3..acc22e4c 100644 --- a/pkg/stdlib/math/max_test.go +++ b/pkg/stdlib/math/max_test.go @@ -2,9 +2,10 @@ package math_test import ( "context" + "testing" + "github.com/MontFerret/ferret/pkg/runtime/values" "github.com/MontFerret/ferret/pkg/stdlib/math" - "testing" . "github.com/smartystreets/goconvey/convey" ) diff --git a/pkg/stdlib/math/median_test.go b/pkg/stdlib/math/median_test.go index 6ba8c698..e0d9c3b4 100644 --- a/pkg/stdlib/math/median_test.go +++ b/pkg/stdlib/math/median_test.go @@ -2,9 +2,10 @@ package math_test import ( "context" + "testing" + "github.com/MontFerret/ferret/pkg/runtime/values" "github.com/MontFerret/ferret/pkg/stdlib/math" - "testing" . "github.com/smartystreets/goconvey/convey" ) diff --git a/pkg/stdlib/math/min_test.go b/pkg/stdlib/math/min_test.go index d5b7a732..351a612d 100644 --- a/pkg/stdlib/math/min_test.go +++ b/pkg/stdlib/math/min_test.go @@ -2,9 +2,10 @@ package math_test import ( "context" + "testing" + "github.com/MontFerret/ferret/pkg/runtime/values" "github.com/MontFerret/ferret/pkg/stdlib/math" - "testing" . "github.com/smartystreets/goconvey/convey" ) diff --git a/pkg/stdlib/math/percentile.go b/pkg/stdlib/math/percentile.go index 28469a4f..63f63fb2 100644 --- a/pkg/stdlib/math/percentile.go +++ b/pkg/stdlib/math/percentile.go @@ -4,10 +4,11 @@ import ( "context" "math" + "github.com/pkg/errors" + "github.com/MontFerret/ferret/pkg/runtime/core" "github.com/MontFerret/ferret/pkg/runtime/values" "github.com/MontFerret/ferret/pkg/runtime/values/types" - "github.com/pkg/errors" ) // PERCENTILE returns the nth percentile of the values in a given array. diff --git a/pkg/stdlib/math/percentile_test.go b/pkg/stdlib/math/percentile_test.go index 52641e42..30be990c 100644 --- a/pkg/stdlib/math/percentile_test.go +++ b/pkg/stdlib/math/percentile_test.go @@ -2,9 +2,10 @@ package math_test import ( "context" + "testing" + "github.com/MontFerret/ferret/pkg/runtime/values" "github.com/MontFerret/ferret/pkg/stdlib/math" - "testing" . "github.com/smartystreets/goconvey/convey" ) diff --git a/pkg/stdlib/math/pi_test.go b/pkg/stdlib/math/pi_test.go index 5acdcc10..25eb02dd 100644 --- a/pkg/stdlib/math/pi_test.go +++ b/pkg/stdlib/math/pi_test.go @@ -2,10 +2,12 @@ package math_test import ( "context" - "github.com/MontFerret/ferret/pkg/stdlib/math" - . "github.com/smartystreets/goconvey/convey" m "math" "testing" + + . "github.com/smartystreets/goconvey/convey" + + "github.com/MontFerret/ferret/pkg/stdlib/math" ) func TestPi(t *testing.T) { diff --git a/pkg/stdlib/math/pow_test.go b/pkg/stdlib/math/pow_test.go index 3abee470..fa1ed64e 100644 --- a/pkg/stdlib/math/pow_test.go +++ b/pkg/stdlib/math/pow_test.go @@ -2,9 +2,10 @@ package math_test import ( "context" + "testing" + "github.com/MontFerret/ferret/pkg/runtime/values" "github.com/MontFerret/ferret/pkg/stdlib/math" - "testing" . "github.com/smartystreets/goconvey/convey" ) diff --git a/pkg/stdlib/math/radians_test.go b/pkg/stdlib/math/radians_test.go index 264f14cf..9f17b8eb 100644 --- a/pkg/stdlib/math/radians_test.go +++ b/pkg/stdlib/math/radians_test.go @@ -2,9 +2,10 @@ package math_test import ( "context" + "testing" + "github.com/MontFerret/ferret/pkg/runtime/values" "github.com/MontFerret/ferret/pkg/stdlib/math" - "testing" . "github.com/smartystreets/goconvey/convey" ) diff --git a/pkg/stdlib/math/rand_test.go b/pkg/stdlib/math/rand_test.go index 85ecf8a3..ba6618c5 100644 --- a/pkg/stdlib/math/rand_test.go +++ b/pkg/stdlib/math/rand_test.go @@ -2,9 +2,11 @@ package math_test import ( "context" - "github.com/MontFerret/ferret/pkg/stdlib/math" - . "github.com/smartystreets/goconvey/convey" "testing" + + . "github.com/smartystreets/goconvey/convey" + + "github.com/MontFerret/ferret/pkg/stdlib/math" ) func TestRand(t *testing.T) { diff --git a/pkg/stdlib/math/range_test.go b/pkg/stdlib/math/range_test.go index 539caef0..7f99ca39 100644 --- a/pkg/stdlib/math/range_test.go +++ b/pkg/stdlib/math/range_test.go @@ -2,9 +2,10 @@ package math_test import ( "context" + "testing" + "github.com/MontFerret/ferret/pkg/runtime/values" "github.com/MontFerret/ferret/pkg/stdlib/math" - "testing" . "github.com/smartystreets/goconvey/convey" ) diff --git a/pkg/stdlib/math/round_test.go b/pkg/stdlib/math/round_test.go index 8a6c068b..d225bee2 100644 --- a/pkg/stdlib/math/round_test.go +++ b/pkg/stdlib/math/round_test.go @@ -2,9 +2,10 @@ package math_test import ( "context" + "testing" + "github.com/MontFerret/ferret/pkg/runtime/values" "github.com/MontFerret/ferret/pkg/stdlib/math" - "testing" . "github.com/smartystreets/goconvey/convey" ) diff --git a/pkg/stdlib/math/sin_test.go b/pkg/stdlib/math/sin_test.go index d8298b19..d58a3a18 100644 --- a/pkg/stdlib/math/sin_test.go +++ b/pkg/stdlib/math/sin_test.go @@ -2,9 +2,10 @@ package math_test import ( "context" + "testing" + "github.com/MontFerret/ferret/pkg/runtime/values" "github.com/MontFerret/ferret/pkg/stdlib/math" - "testing" . "github.com/smartystreets/goconvey/convey" ) diff --git a/pkg/stdlib/math/sqrt_test.go b/pkg/stdlib/math/sqrt_test.go index 5bcfaa7c..cbbd4e24 100644 --- a/pkg/stdlib/math/sqrt_test.go +++ b/pkg/stdlib/math/sqrt_test.go @@ -2,9 +2,10 @@ package math_test import ( "context" + "testing" + "github.com/MontFerret/ferret/pkg/runtime/values" "github.com/MontFerret/ferret/pkg/stdlib/math" - "testing" . "github.com/smartystreets/goconvey/convey" ) diff --git a/pkg/stdlib/math/stddev_population_test.go b/pkg/stdlib/math/stddev_population_test.go index f3165bcf..326f4430 100644 --- a/pkg/stdlib/math/stddev_population_test.go +++ b/pkg/stdlib/math/stddev_population_test.go @@ -2,9 +2,10 @@ package math_test import ( "context" + "testing" + "github.com/MontFerret/ferret/pkg/runtime/values" "github.com/MontFerret/ferret/pkg/stdlib/math" - "testing" . "github.com/smartystreets/goconvey/convey" ) diff --git a/pkg/stdlib/math/stddev_sample_test.go b/pkg/stdlib/math/stddev_sample_test.go index c026c5cf..3d56b191 100644 --- a/pkg/stdlib/math/stddev_sample_test.go +++ b/pkg/stdlib/math/stddev_sample_test.go @@ -2,9 +2,10 @@ package math_test import ( "context" + "testing" + "github.com/MontFerret/ferret/pkg/runtime/values" "github.com/MontFerret/ferret/pkg/stdlib/math" - "testing" . "github.com/smartystreets/goconvey/convey" ) diff --git a/pkg/stdlib/math/sum_test.go b/pkg/stdlib/math/sum_test.go index 679ac933..f83af853 100644 --- a/pkg/stdlib/math/sum_test.go +++ b/pkg/stdlib/math/sum_test.go @@ -2,9 +2,10 @@ package math_test import ( "context" + "testing" + "github.com/MontFerret/ferret/pkg/runtime/values" "github.com/MontFerret/ferret/pkg/stdlib/math" - "testing" . "github.com/smartystreets/goconvey/convey" ) diff --git a/pkg/stdlib/math/tan_test.go b/pkg/stdlib/math/tan_test.go index 1e0a9fa6..88b9e8bc 100644 --- a/pkg/stdlib/math/tan_test.go +++ b/pkg/stdlib/math/tan_test.go @@ -2,9 +2,10 @@ package math_test import ( "context" + "testing" + "github.com/MontFerret/ferret/pkg/runtime/values" "github.com/MontFerret/ferret/pkg/stdlib/math" - "testing" . "github.com/smartystreets/goconvey/convey" ) diff --git a/pkg/stdlib/math/variance_population_test.go b/pkg/stdlib/math/variance_population_test.go index 86d0a7a6..1a25315a 100644 --- a/pkg/stdlib/math/variance_population_test.go +++ b/pkg/stdlib/math/variance_population_test.go @@ -2,9 +2,10 @@ package math_test import ( "context" + "testing" + "github.com/MontFerret/ferret/pkg/runtime/values" "github.com/MontFerret/ferret/pkg/stdlib/math" - "testing" . "github.com/smartystreets/goconvey/convey" ) diff --git a/pkg/stdlib/math/variance_sample_test.go b/pkg/stdlib/math/variance_sample_test.go index 0ac12996..409c7edd 100644 --- a/pkg/stdlib/math/variance_sample_test.go +++ b/pkg/stdlib/math/variance_sample_test.go @@ -2,9 +2,10 @@ package math_test import ( "context" + "testing" + "github.com/MontFerret/ferret/pkg/runtime/values" "github.com/MontFerret/ferret/pkg/stdlib/math" - "testing" . "github.com/smartystreets/goconvey/convey" ) diff --git a/pkg/stdlib/objects/keep_keys_test.go b/pkg/stdlib/objects/keep_keys_test.go index 54d6946b..e3ecc6e9 100644 --- a/pkg/stdlib/objects/keep_keys_test.go +++ b/pkg/stdlib/objects/keep_keys_test.go @@ -4,10 +4,11 @@ import ( "context" "testing" + . "github.com/smartystreets/goconvey/convey" + "github.com/MontFerret/ferret/pkg/runtime/core" "github.com/MontFerret/ferret/pkg/runtime/values" "github.com/MontFerret/ferret/pkg/stdlib/objects" - . "github.com/smartystreets/goconvey/convey" ) func TestKeepKeys(t *testing.T) { diff --git a/pkg/stdlib/objects/keys_test.go b/pkg/stdlib/objects/keys_test.go index 266749ba..2f9353c6 100644 --- a/pkg/stdlib/objects/keys_test.go +++ b/pkg/stdlib/objects/keys_test.go @@ -2,9 +2,10 @@ package objects_test import ( "context" - "github.com/MontFerret/ferret/pkg/runtime/values/types" "testing" + "github.com/MontFerret/ferret/pkg/runtime/values/types" + "github.com/MontFerret/ferret/pkg/runtime/values" "github.com/MontFerret/ferret/pkg/stdlib/objects" diff --git a/pkg/stdlib/path/base_test.go b/pkg/stdlib/path/base_test.go index 53269dac..69565607 100644 --- a/pkg/stdlib/path/base_test.go +++ b/pkg/stdlib/path/base_test.go @@ -4,9 +4,10 @@ import ( "context" "testing" + . "github.com/smartystreets/goconvey/convey" + "github.com/MontFerret/ferret/pkg/runtime/values" "github.com/MontFerret/ferret/pkg/stdlib/path" - . "github.com/smartystreets/goconvey/convey" ) func TestBase(t *testing.T) { diff --git a/pkg/stdlib/path/clean_test.go b/pkg/stdlib/path/clean_test.go index 1ac48364..5937fdf1 100644 --- a/pkg/stdlib/path/clean_test.go +++ b/pkg/stdlib/path/clean_test.go @@ -4,9 +4,10 @@ import ( "context" "testing" + . "github.com/smartystreets/goconvey/convey" + "github.com/MontFerret/ferret/pkg/runtime/values" "github.com/MontFerret/ferret/pkg/stdlib/path" - . "github.com/smartystreets/goconvey/convey" ) func TestClean(t *testing.T) { diff --git a/pkg/stdlib/path/dir_test.go b/pkg/stdlib/path/dir_test.go index 1defa7ce..25a24541 100644 --- a/pkg/stdlib/path/dir_test.go +++ b/pkg/stdlib/path/dir_test.go @@ -4,9 +4,10 @@ import ( "context" "testing" + . "github.com/smartystreets/goconvey/convey" + "github.com/MontFerret/ferret/pkg/runtime/values" "github.com/MontFerret/ferret/pkg/stdlib/path" - . "github.com/smartystreets/goconvey/convey" ) func TestDir(t *testing.T) { diff --git a/pkg/stdlib/path/ext_test.go b/pkg/stdlib/path/ext_test.go index a030e70c..dcf3eec9 100644 --- a/pkg/stdlib/path/ext_test.go +++ b/pkg/stdlib/path/ext_test.go @@ -4,9 +4,10 @@ import ( "context" "testing" + . "github.com/smartystreets/goconvey/convey" + "github.com/MontFerret/ferret/pkg/runtime/values" "github.com/MontFerret/ferret/pkg/stdlib/path" - . "github.com/smartystreets/goconvey/convey" ) func TestExt(t *testing.T) { diff --git a/pkg/stdlib/path/is_abs_test.go b/pkg/stdlib/path/is_abs_test.go index a8dd9245..bd78b0e0 100644 --- a/pkg/stdlib/path/is_abs_test.go +++ b/pkg/stdlib/path/is_abs_test.go @@ -4,9 +4,10 @@ import ( "context" "testing" + . "github.com/smartystreets/goconvey/convey" + "github.com/MontFerret/ferret/pkg/runtime/values" "github.com/MontFerret/ferret/pkg/stdlib/path" - . "github.com/smartystreets/goconvey/convey" ) func TestIsAbs(t *testing.T) { diff --git a/pkg/stdlib/path/join_test.go b/pkg/stdlib/path/join_test.go index b2f6912b..679d1bda 100644 --- a/pkg/stdlib/path/join_test.go +++ b/pkg/stdlib/path/join_test.go @@ -4,9 +4,10 @@ import ( "context" "testing" + . "github.com/smartystreets/goconvey/convey" + "github.com/MontFerret/ferret/pkg/runtime/values" "github.com/MontFerret/ferret/pkg/stdlib/path" - . "github.com/smartystreets/goconvey/convey" ) func TestJoin(t *testing.T) { diff --git a/pkg/stdlib/path/match_test.go b/pkg/stdlib/path/match_test.go index c43126f6..c9f5a54c 100644 --- a/pkg/stdlib/path/match_test.go +++ b/pkg/stdlib/path/match_test.go @@ -4,9 +4,10 @@ import ( "context" "testing" + . "github.com/smartystreets/goconvey/convey" + "github.com/MontFerret/ferret/pkg/runtime/values" "github.com/MontFerret/ferret/pkg/stdlib/path" - . "github.com/smartystreets/goconvey/convey" ) func TestMatch(t *testing.T) { diff --git a/pkg/stdlib/path/separate_test.go b/pkg/stdlib/path/separate_test.go index 8beeb45a..14bb29bd 100644 --- a/pkg/stdlib/path/separate_test.go +++ b/pkg/stdlib/path/separate_test.go @@ -4,9 +4,10 @@ import ( "context" "testing" + . "github.com/smartystreets/goconvey/convey" + "github.com/MontFerret/ferret/pkg/runtime/values" "github.com/MontFerret/ferret/pkg/stdlib/path" - . "github.com/smartystreets/goconvey/convey" ) func TestSeparate(t *testing.T) { diff --git a/pkg/stdlib/strings/case_test.go b/pkg/stdlib/strings/case_test.go index 390ce58a..b653524d 100644 --- a/pkg/stdlib/strings/case_test.go +++ b/pkg/stdlib/strings/case_test.go @@ -2,10 +2,12 @@ package strings_test import ( "context" + "testing" + + . "github.com/smartystreets/goconvey/convey" + "github.com/MontFerret/ferret/pkg/runtime/values" "github.com/MontFerret/ferret/pkg/stdlib/strings" - . "github.com/smartystreets/goconvey/convey" - "testing" ) func TestLower(t *testing.T) { diff --git a/pkg/stdlib/strings/concat_test.go b/pkg/stdlib/strings/concat_test.go index b6a9547d..bd0a0e7e 100644 --- a/pkg/stdlib/strings/concat_test.go +++ b/pkg/stdlib/strings/concat_test.go @@ -2,10 +2,12 @@ package strings_test import ( "context" + "testing" + + . "github.com/smartystreets/goconvey/convey" + "github.com/MontFerret/ferret/pkg/runtime/values" "github.com/MontFerret/ferret/pkg/stdlib/strings" - . "github.com/smartystreets/goconvey/convey" - "testing" ) func TestConcat(t *testing.T) { diff --git a/pkg/stdlib/strings/contains_test.go b/pkg/stdlib/strings/contains_test.go index d8d545ae..1509f389 100644 --- a/pkg/stdlib/strings/contains_test.go +++ b/pkg/stdlib/strings/contains_test.go @@ -2,10 +2,12 @@ package strings_test import ( "context" + "testing" + + . "github.com/smartystreets/goconvey/convey" + "github.com/MontFerret/ferret/pkg/runtime/values" "github.com/MontFerret/ferret/pkg/stdlib/strings" - . "github.com/smartystreets/goconvey/convey" - "testing" ) func TestContains(t *testing.T) { diff --git a/pkg/stdlib/strings/encode_test.go b/pkg/stdlib/strings/encode_test.go index 16490310..6e659e19 100644 --- a/pkg/stdlib/strings/encode_test.go +++ b/pkg/stdlib/strings/encode_test.go @@ -2,10 +2,12 @@ package strings_test import ( "context" + "testing" + + . "github.com/smartystreets/goconvey/convey" + "github.com/MontFerret/ferret/pkg/runtime/values" "github.com/MontFerret/ferret/pkg/stdlib/strings" - . "github.com/smartystreets/goconvey/convey" - "testing" ) func TestEncodedURIComponent(t *testing.T) { diff --git a/pkg/stdlib/strings/escape_test.go b/pkg/stdlib/strings/escape_test.go index 07824d6d..5dce98cf 100644 --- a/pkg/stdlib/strings/escape_test.go +++ b/pkg/stdlib/strings/escape_test.go @@ -2,9 +2,10 @@ package strings_test import ( "context" - "github.com/MontFerret/ferret/pkg/runtime/values" "testing" + "github.com/MontFerret/ferret/pkg/runtime/values" + "github.com/MontFerret/ferret/pkg/stdlib/strings" . "github.com/smartystreets/goconvey/convey" diff --git a/pkg/stdlib/strings/find_test.go b/pkg/stdlib/strings/find_test.go index 483a383b..433d51c0 100644 --- a/pkg/stdlib/strings/find_test.go +++ b/pkg/stdlib/strings/find_test.go @@ -2,10 +2,12 @@ package strings_test import ( "context" + "testing" + + . "github.com/smartystreets/goconvey/convey" + "github.com/MontFerret/ferret/pkg/runtime/values" "github.com/MontFerret/ferret/pkg/stdlib/strings" - . "github.com/smartystreets/goconvey/convey" - "testing" ) func TestFindFirst(t *testing.T) { diff --git a/pkg/stdlib/strings/fmt.go b/pkg/stdlib/strings/fmt.go index 244b2a79..6128b0ac 100644 --- a/pkg/stdlib/strings/fmt.go +++ b/pkg/stdlib/strings/fmt.go @@ -6,10 +6,11 @@ import ( "strconv" "strings" + "github.com/pkg/errors" + "github.com/MontFerret/ferret/pkg/runtime/core" "github.com/MontFerret/ferret/pkg/runtime/values" "github.com/MontFerret/ferret/pkg/runtime/values/types" - "github.com/pkg/errors" ) // FMT formats the template using these arguments. diff --git a/pkg/stdlib/strings/fmt_test.go b/pkg/stdlib/strings/fmt_test.go index 1d527722..6b602d92 100644 --- a/pkg/stdlib/strings/fmt_test.go +++ b/pkg/stdlib/strings/fmt_test.go @@ -4,10 +4,11 @@ import ( "context" "testing" + . "github.com/smartystreets/goconvey/convey" + "github.com/MontFerret/ferret/pkg/runtime/core" "github.com/MontFerret/ferret/pkg/runtime/values" "github.com/MontFerret/ferret/pkg/stdlib/strings" - . "github.com/smartystreets/goconvey/convey" ) type testCase struct { diff --git a/pkg/stdlib/strings/json_test.go b/pkg/stdlib/strings/json_test.go index 114f62c5..8d872a3d 100644 --- a/pkg/stdlib/strings/json_test.go +++ b/pkg/stdlib/strings/json_test.go @@ -4,10 +4,11 @@ import ( "context" "testing" + . "github.com/smartystreets/goconvey/convey" + "github.com/MontFerret/ferret/pkg/runtime/values" "github.com/MontFerret/ferret/pkg/runtime/values/types" "github.com/MontFerret/ferret/pkg/stdlib/strings" - . "github.com/smartystreets/goconvey/convey" ) func TestJSONParse(t *testing.T) { diff --git a/pkg/stdlib/strings/like_test.go b/pkg/stdlib/strings/like_test.go index 99ea900b..d91c506b 100644 --- a/pkg/stdlib/strings/like_test.go +++ b/pkg/stdlib/strings/like_test.go @@ -4,9 +4,10 @@ import ( "context" "testing" + . "github.com/smartystreets/goconvey/convey" + "github.com/MontFerret/ferret/pkg/runtime/values" "github.com/MontFerret/ferret/pkg/stdlib/strings" - . "github.com/smartystreets/goconvey/convey" ) func TestLike(t *testing.T) { diff --git a/pkg/stdlib/strings/random_test.go b/pkg/stdlib/strings/random_test.go index c8418ec3..29f6dddb 100644 --- a/pkg/stdlib/strings/random_test.go +++ b/pkg/stdlib/strings/random_test.go @@ -2,10 +2,12 @@ package strings_test import ( "context" + "testing" + + . "github.com/smartystreets/goconvey/convey" + "github.com/MontFerret/ferret/pkg/runtime/values" "github.com/MontFerret/ferret/pkg/stdlib/strings" - . "github.com/smartystreets/goconvey/convey" - "testing" ) func TestRandomToken(t *testing.T) { diff --git a/pkg/stdlib/strings/regex_test.go b/pkg/stdlib/strings/regex_test.go index 2d82e346..20b644a5 100644 --- a/pkg/stdlib/strings/regex_test.go +++ b/pkg/stdlib/strings/regex_test.go @@ -2,10 +2,12 @@ package strings_test import ( "context" + "testing" + + . "github.com/smartystreets/goconvey/convey" + "github.com/MontFerret/ferret/pkg/runtime/values" "github.com/MontFerret/ferret/pkg/stdlib/strings" - . "github.com/smartystreets/goconvey/convey" - "testing" ) func TestRegexMatch(t *testing.T) { diff --git a/pkg/stdlib/strings/split_test.go b/pkg/stdlib/strings/split_test.go index 96bc55d7..ac9ea7f6 100644 --- a/pkg/stdlib/strings/split_test.go +++ b/pkg/stdlib/strings/split_test.go @@ -2,10 +2,12 @@ package strings_test import ( "context" + "testing" + + . "github.com/smartystreets/goconvey/convey" + "github.com/MontFerret/ferret/pkg/runtime/values" "github.com/MontFerret/ferret/pkg/stdlib/strings" - . "github.com/smartystreets/goconvey/convey" - "testing" ) func TestSplit(t *testing.T) { diff --git a/pkg/stdlib/strings/substitute_test.go b/pkg/stdlib/strings/substitute_test.go index 0d5f7826..786d058c 100644 --- a/pkg/stdlib/strings/substitute_test.go +++ b/pkg/stdlib/strings/substitute_test.go @@ -2,10 +2,12 @@ package strings_test import ( "context" + "testing" + + . "github.com/smartystreets/goconvey/convey" + "github.com/MontFerret/ferret/pkg/runtime/values" "github.com/MontFerret/ferret/pkg/stdlib/strings" - . "github.com/smartystreets/goconvey/convey" - "testing" ) func TestSubstitute(t *testing.T) { diff --git a/pkg/stdlib/strings/substr_test.go b/pkg/stdlib/strings/substr_test.go index abaf784b..8634eef7 100644 --- a/pkg/stdlib/strings/substr_test.go +++ b/pkg/stdlib/strings/substr_test.go @@ -4,9 +4,10 @@ import ( "context" "testing" + . "github.com/smartystreets/goconvey/convey" + "github.com/MontFerret/ferret/pkg/runtime/values" "github.com/MontFerret/ferret/pkg/stdlib/strings" - . "github.com/smartystreets/goconvey/convey" ) func TestSubstring(t *testing.T) { diff --git a/pkg/stdlib/strings/trim_test.go b/pkg/stdlib/strings/trim_test.go index baebcd14..d514127e 100644 --- a/pkg/stdlib/strings/trim_test.go +++ b/pkg/stdlib/strings/trim_test.go @@ -2,10 +2,12 @@ package strings_test import ( "context" + "testing" + + . "github.com/smartystreets/goconvey/convey" + "github.com/MontFerret/ferret/pkg/runtime/values" "github.com/MontFerret/ferret/pkg/stdlib/strings" - . "github.com/smartystreets/goconvey/convey" - "testing" ) func TestLTrim(t *testing.T) { diff --git a/pkg/stdlib/strings/unescape_test.go b/pkg/stdlib/strings/unescape_test.go index 0543ad8a..acba0be3 100644 --- a/pkg/stdlib/strings/unescape_test.go +++ b/pkg/stdlib/strings/unescape_test.go @@ -2,9 +2,10 @@ package strings_test import ( "context" - "github.com/MontFerret/ferret/pkg/runtime/values" "testing" + "github.com/MontFerret/ferret/pkg/runtime/values" + "github.com/MontFerret/ferret/pkg/stdlib/strings" . "github.com/smartystreets/goconvey/convey" diff --git a/pkg/stdlib/testing/len_test.go b/pkg/stdlib/testing/len_test.go index 855a3824..b8a8fc2c 100644 --- a/pkg/stdlib/testing/len_test.go +++ b/pkg/stdlib/testing/len_test.go @@ -2,9 +2,10 @@ package testing_test import ( "context" - "github.com/MontFerret/ferret/pkg/stdlib/testing/base" t "testing" + "github.com/MontFerret/ferret/pkg/stdlib/testing/base" + . "github.com/smartystreets/goconvey/convey" "github.com/MontFerret/ferret/pkg/runtime/core" diff --git a/pkg/stdlib/testing/none_test.go b/pkg/stdlib/testing/none_test.go index 434c5abe..bee834d3 100644 --- a/pkg/stdlib/testing/none_test.go +++ b/pkg/stdlib/testing/none_test.go @@ -2,9 +2,10 @@ package testing_test import ( "context" + t "testing" + "github.com/MontFerret/ferret/pkg/runtime/values" "github.com/MontFerret/ferret/pkg/stdlib/testing/base" - t "testing" . "github.com/smartystreets/goconvey/convey" diff --git a/pkg/stdlib/types/to_array.go b/pkg/stdlib/types/to_array.go index a65cb7bb..fb93b1d0 100644 --- a/pkg/stdlib/types/to_array.go +++ b/pkg/stdlib/types/to_array.go @@ -2,6 +2,7 @@ package types import ( "context" + "github.com/MontFerret/ferret/pkg/runtime/core" "github.com/MontFerret/ferret/pkg/runtime/values" ) diff --git a/pkg/stdlib/types/to_boolean_test.go b/pkg/stdlib/types/to_boolean_test.go index 5eb904d0..bc17beb1 100644 --- a/pkg/stdlib/types/to_boolean_test.go +++ b/pkg/stdlib/types/to_boolean_test.go @@ -2,10 +2,12 @@ package types_test import ( "context" + "testing" + + . "github.com/smartystreets/goconvey/convey" + "github.com/MontFerret/ferret/pkg/runtime/values" "github.com/MontFerret/ferret/pkg/stdlib/types" - . "github.com/smartystreets/goconvey/convey" - "testing" ) func TestToBool(t *testing.T) { From 9b7a9a27043dd42dd0475903a99d1877aad3892f Mon Sep 17 00:00:00 2001 From: Tim Voronov Date: Tue, 7 Feb 2023 13:02:46 -0500 Subject: [PATCH 06/16] Dropped lagacy ANTL sdk --- go.mod | 1 - go.sum | 2 -- 2 files changed, 3 deletions(-) diff --git a/go.mod b/go.mod index 0052dca3..c3f6bc86 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,6 @@ require ( github.com/PuerkitoBio/goquery v1.8.0 github.com/antchfx/htmlquery v1.3.0 github.com/antchfx/xpath v1.2.3 - github.com/antlr/antlr4/runtime/Go/antlr v1.4.10 github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20221202181307-76fa05c21b12 github.com/corpix/uarand v0.2.0 github.com/gobwas/glob v0.2.3 diff --git a/go.sum b/go.sum index a7bdfc47..72f1137d 100644 --- a/go.sum +++ b/go.sum @@ -6,8 +6,6 @@ github.com/antchfx/htmlquery v1.3.0 h1:5I5yNFOVI+egyia5F2s/5Do2nFWxJz41Tr3DyfKD2 github.com/antchfx/htmlquery v1.3.0/go.mod h1:zKPDVTMhfOmcwxheXUsx4rKJy8KEY/PU6eXr/2SebQ8= github.com/antchfx/xpath v1.2.3 h1:CCZWOzv5bAqjVv0offZ2LVgVYFbeldKQVuLNbViZdes= github.com/antchfx/xpath v1.2.3/go.mod h1:i54GszH55fYfBmoZXapTHN8T8tkcHfRgLyVwwqzXNcs= -github.com/antlr/antlr4/runtime/Go/antlr v1.4.10 h1:yL7+Jz0jTC6yykIK/Wh74gnTJnrGr5AyrNMXuA0gves= -github.com/antlr/antlr4/runtime/Go/antlr v1.4.10/go.mod h1:F7bn7fEU90QkQ3tnmaTx3LTKLEDqnwWODIYppRQ5hnY= github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20221202181307-76fa05c21b12 h1:npHgfD4Tl2WJS3AJaMUi5ynGDPUBfkg3U3fCzDyXZ+4= github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20221202181307-76fa05c21b12/go.mod h1:pSwJ0fSY5KhvocuWSx4fz3BA8OrA1bQn+K1Eli3BRwM= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= From 2884e023ba5f1da5afa8d10059fe73ee2e3ff8ab Mon Sep 17 00:00:00 2001 From: Tim Voronov Date: Thu, 2 Mar 2023 12:47:28 -0500 Subject: [PATCH 07/16] Changed Lab installation --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index fbd167fd..d60f5842 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -59,7 +59,7 @@ jobs: - name: Set up Lab run: | curl https://raw.githubusercontent.com/MontFerret/lab/master/install.sh -o install.sh - sudo sh install.sh + sh install.sh - name: Get dependencies run: make install From fb6b29b29eb5b7cc309e9bdfc1b5178a40b89c29 Mon Sep 17 00:00:00 2001 From: Tim Voronov Date: Mon, 6 Mar 2023 12:46:33 -0500 Subject: [PATCH 08/16] Update build.yml --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d60f5842..af92c34d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -59,7 +59,7 @@ jobs: - name: Set up Lab run: | curl https://raw.githubusercontent.com/MontFerret/lab/master/install.sh -o install.sh - sh install.sh + LOCATION=$PWD sh install.sh - name: Get dependencies run: make install From 82f0e5f044de635687898142e2b48003de318a15 Mon Sep 17 00:00:00 2001 From: tsukasa-ino <65926267+tsukasaI@users.noreply.github.com> Date: Tue, 28 Mar 2023 06:04:16 +0900 Subject: [PATCH 09/16] Add more unit tests for operators - ToNumberOrString, ToNumberOnly (#781) * WIP TestToNumberOrString * add boolean check * add array type * WIP add TestToNumberOnly * add ToNumberOnly test --- .../expressions/operators/operator_test.go | 144 ++++++++++++++++++ 1 file changed, 144 insertions(+) diff --git a/pkg/runtime/expressions/operators/operator_test.go b/pkg/runtime/expressions/operators/operator_test.go index 72ab5a2b..ea68e90b 100644 --- a/pkg/runtime/expressions/operators/operator_test.go +++ b/pkg/runtime/expressions/operators/operator_test.go @@ -2,6 +2,7 @@ package operators_test import ( "testing" + "time" "github.com/MontFerret/ferret/pkg/runtime/core" "github.com/MontFerret/ferret/pkg/runtime/expressions/operators" @@ -1280,3 +1281,146 @@ func TestNot(t *testing.T) { }) }) } + +func TestToNumberOrString(t *testing.T) { + Convey("Invert to numeric value", t, func() { + Convey("0 turns 0", func() { + So(operators.ToNumberOrString(values.NewInt(0)), ShouldEqual, 0) + }) + Convey("1 turns 1", func() { + So(operators.ToNumberOrString(values.NewInt(1)), ShouldEqual, 1) + }) + Convey("-1 turns -1", func() { + So(operators.ToNumberOrString(values.NewInt(-1)), ShouldEqual, -1) + }) + Convey("0.0 turns 0.0", func() { + So(operators.ToNumberOrString(values.NewFloat(0.0)), ShouldEqual, 0.0) + }) + Convey("-1.0 turns -1.0", func() { + So(operators.ToNumberOrString(values.NewFloat(-1.0)), ShouldEqual, -1.0) + }) + Convey("1.0 turns 1.0", func() { + So(operators.ToNumberOrString(values.NewFloat(1.0)), ShouldEqual, 1.0) + }) + Convey("string type 0 turns string type 0", func() { + So(operators.ToNumberOrString(values.NewString("0")), ShouldEqual, "0") + }) + Convey("string type 1 turns string type 1", func() { + So(operators.ToNumberOrString(values.NewString("1")), ShouldEqual, "1") + }) + Convey("string type -1 turns string type -1", func() { + So(operators.ToNumberOrString(values.NewString("-1")), ShouldEqual, "-1") + }) + Convey("string type 0.0 turns string type 0.0", func() { + So(operators.ToNumberOrString(values.NewString("0.0")), ShouldEqual, "0.0") + }) + Convey("a turns a", func() { + So(operators.ToNumberOrString(values.NewString("a")), ShouldEqual, "a") + }) + Convey("true turns 1", func() { + So(operators.ToNumberOrString(values.NewBoolean(true)), ShouldEqual, 1) + }) + Convey("false turns 0", func() { + So(operators.ToNumberOrString(values.NewBoolean(false)), ShouldEqual, 0) + }) + Convey("current DateTime turns unix", func() { + So(operators.ToNumberOrString(values.NewDateTime(time.Now())), ShouldEqual, time.Now().Unix()) + }) + Convey("zero value DateTime turns 0", func() { + var zero time.Time + So(operators.ToNumberOrString(values.NewDateTime(zero)), ShouldEqual, 0) + }) + Convey("[1] turns 1", func() { + arg := values.NewArrayWith(values.NewInt(1)) + So(operators.ToNumberOrString(arg), ShouldEqual, 1) + }) + Convey("[1, 2] turns 3", func() { + arg := values.NewArrayWith(values.NewInt(1), values.NewInt(2)) + So(operators.ToNumberOrString(arg), ShouldEqual, 3) + }) + Convey("[a] turns 0", func() { + arg := values.NewArrayWith(values.NewString("a")) + So(operators.ToNumberOrString(arg), ShouldEqual, 0) + }) + Convey("[true] turns 1", func() { + arg := values.NewArrayWith(values.NewBoolean(true)) + So(operators.ToNumberOrString(arg), ShouldEqual, 1) + }) + Convey("[false] turns 0", func() { + arg := values.NewArrayWith(values.NewBoolean(false)) + So(operators.ToNumberOrString(arg), ShouldEqual, 0) + }) + }) +} + +func TestToNumberOnly(t *testing.T) { + Convey("Invert to int", t, func() { + Convey("0 turns 0", func() { + So(operators.ToNumberOnly(values.NewInt(0)), ShouldEqual, 0) + }) + Convey("1 turns 1", func() { + So(operators.ToNumberOnly(values.NewInt(1)), ShouldEqual, 1) + }) + Convey("-1 turns -1", func() { + So(operators.ToNumberOnly(values.NewInt(-1)), ShouldEqual, -1) + }) + Convey("0.0 turns 0.0", func() { + So(operators.ToNumberOnly(values.NewFloat(0.0)), ShouldEqual, 0.0) + }) + Convey("-1.0 turns -1.0", func() { + So(operators.ToNumberOnly(values.NewFloat(-1.0)), ShouldEqual, -1.0) + }) + Convey("1.0 turns 1.0", func() { + So(operators.ToNumberOnly(values.NewFloat(1.0)), ShouldEqual, 1.0) + }) + Convey("string type 0 turns 0", func() { + So(operators.ToNumberOnly(values.NewString("0")), ShouldEqual, 0) + }) + Convey("string type 1 turns 1", func() { + So(operators.ToNumberOnly(values.NewString("1")), ShouldEqual, 1) + }) + Convey("string type -1 turns -1", func() { + So(operators.ToNumberOnly(values.NewString("-1")), ShouldEqual, -1) + }) + Convey("string type 0.0 turns 0.0", func() { + So(operators.ToNumberOnly(values.NewString("0.0")), ShouldEqual, 0.0) + }) + + Convey("a turns 0", func() { + So(operators.ToNumberOnly(values.NewString("a")), ShouldEqual, 0) + }) + Convey("true turns 1", func() { + So(operators.ToNumberOnly(values.NewBoolean(true)), ShouldEqual, 1) + }) + Convey("false turns 0", func() { + So(operators.ToNumberOnly(values.NewBoolean(false)), ShouldEqual, 0) + }) + Convey("current DateTime turns unix", func() { + So(operators.ToNumberOnly(values.NewDateTime(time.Now())), ShouldEqual, time.Now().Unix()) + }) + Convey("zero value DateTime turns 0", func() { + var zero time.Time + So(operators.ToNumberOnly(values.NewDateTime(zero)), ShouldEqual, 0) + }) + Convey("[1] turns 1", func() { + arg := values.NewArrayWith(values.NewInt(1)) + So(operators.ToNumberOnly(arg), ShouldEqual, 1) + }) + Convey("[1, 2] turns 3", func() { + arg := values.NewArrayWith(values.NewInt(1), values.NewInt(2)) + So(operators.ToNumberOnly(arg), ShouldEqual, 3) + }) + Convey("[a] turns 0", func() { + arg := values.NewArrayWith(values.NewString("a")) + So(operators.ToNumberOnly(arg), ShouldEqual, 0) + }) + Convey("[true] turns 1", func() { + arg := values.NewArrayWith(values.NewBoolean(true)) + So(operators.ToNumberOnly(arg), ShouldEqual, 1) + }) + Convey("[false] turns 0", func() { + arg := values.NewArrayWith(values.NewBoolean(false)) + So(operators.ToNumberOnly(arg), ShouldEqual, 0) + }) + }) +} From 99e256eaf2939935cd10f520bf1a24f73c80336b Mon Sep 17 00:00:00 2001 From: June Hester Date: Mon, 27 Mar 2023 14:05:01 -0700 Subject: [PATCH 10/16] Add to_binary function (#775) * Add to_binary function * Move test to correct package * Rename unused context parameter * Run make fmt --- pkg/stdlib/types/lib.go | 1 + pkg/stdlib/types/to_binary.go | 23 +++++++++++++++++++++++ pkg/stdlib/types/to_binary_test.go | 26 ++++++++++++++++++++++++++ 3 files changed, 50 insertions(+) create mode 100644 pkg/stdlib/types/to_binary.go create mode 100644 pkg/stdlib/types/to_binary_test.go diff --git a/pkg/stdlib/types/lib.go b/pkg/stdlib/types/lib.go index 38e4decc..e2bdbec5 100644 --- a/pkg/stdlib/types/lib.go +++ b/pkg/stdlib/types/lib.go @@ -14,6 +14,7 @@ func RegisterLib(ns core.Namespace) error { "TO_STRING": ToString, "TO_DATETIME": ToDateTime, "TO_ARRAY": ToArray, + "TO_BINARY": ToBinary, "IS_NONE": IsNone, "IS_BOOL": IsBool, "IS_INT": IsInt, diff --git a/pkg/stdlib/types/to_binary.go b/pkg/stdlib/types/to_binary.go new file mode 100644 index 00000000..6ab09c9c --- /dev/null +++ b/pkg/stdlib/types/to_binary.go @@ -0,0 +1,23 @@ +package types + +import ( + "context" + + "github.com/MontFerret/ferret/pkg/runtime/core" + "github.com/MontFerret/ferret/pkg/runtime/values" +) + +// ToBinary takes an input value of any type and converts it into a binary value. +// @param {Any} value - Input value of arbitrary type. +// @return {Binary} - A binary value. +func ToBinary(_ context.Context, args ...core.Value) (core.Value, error) { + err := core.ValidateArgs(args, 1, 1) + + if err != nil { + return values.None, err + } + + val := args[0].String() + + return values.NewBinary([]byte(val)), nil +} diff --git a/pkg/stdlib/types/to_binary_test.go b/pkg/stdlib/types/to_binary_test.go new file mode 100644 index 00000000..5777aad7 --- /dev/null +++ b/pkg/stdlib/types/to_binary_test.go @@ -0,0 +1,26 @@ +package types_test + +import ( + "context" + "testing" + + . "github.com/smartystreets/goconvey/convey" + + "github.com/MontFerret/ferret/pkg/runtime/values" + "github.com/MontFerret/ferret/pkg/stdlib/types" +) + +func TestToBinary(t *testing.T) { + Convey("TestToBinary", t, func() { + value := "abc" + + result, err := types.ToBinary(context.Background(), values.NewString(value)) + So(err, ShouldBeNil) + + wasBinary, err := types.IsBinary(context.Background(), result) + So(err, ShouldBeNil) + So(wasBinary, ShouldEqual, values.True) + + So(result.String(), ShouldEqual, value) + }) +} From cd87c468fe9d766653e11a7c5d97cb37c45a398f Mon Sep 17 00:00:00 2001 From: Tim Voronov Date: Tue, 28 Mar 2023 12:44:12 -0400 Subject: [PATCH 11/16] Updated build script --- .github/workflows/build.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index af92c34d..293e9e7a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -59,7 +59,8 @@ jobs: - name: Set up Lab run: | curl https://raw.githubusercontent.com/MontFerret/lab/master/install.sh -o install.sh - LOCATION=$PWD sh install.sh + chmod +x install.sh + LOCATION=$PWD install.sh - name: Get dependencies run: make install From 9272b4a36e86f029e1fc42ffd7ca672419cac268 Mon Sep 17 00:00:00 2001 From: Tim Voronov Date: Tue, 28 Mar 2023 13:12:19 -0400 Subject: [PATCH 12/16] Updated build script --- .github/workflows/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 293e9e7a..81fda658 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -59,8 +59,8 @@ jobs: - name: Set up Lab run: | curl https://raw.githubusercontent.com/MontFerret/lab/master/install.sh -o install.sh - chmod +x install.sh - LOCATION=$PWD install.sh + chmod +x ./install.sh + LOCATION=$PWD ./install.sh - name: Get dependencies run: make install From 4395200c3cac0aff9bc6580e8acf274cf1c0191d Mon Sep 17 00:00:00 2001 From: Tim Voronov Date: Tue, 28 Mar 2023 13:27:14 -0400 Subject: [PATCH 13/16] Updated lab installer --- .github/workflows/build.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 81fda658..491a665f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -60,7 +60,8 @@ jobs: run: | curl https://raw.githubusercontent.com/MontFerret/lab/master/install.sh -o install.sh chmod +x ./install.sh - LOCATION=$PWD ./install.sh + LOCATION=$PWD/lab-bin ./install.sh + export PATH=$PATH:$PWD/lab-bin - name: Get dependencies run: make install From 8d745b36ab496a1517e5a731ab54f83428b71606 Mon Sep 17 00:00:00 2001 From: Tim Voronov Date: Tue, 28 Mar 2023 13:30:13 -0400 Subject: [PATCH 14/16] Updated lab installer --- .github/workflows/build.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 491a665f..c429da1f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -60,6 +60,7 @@ jobs: run: | curl https://raw.githubusercontent.com/MontFerret/lab/master/install.sh -o install.sh chmod +x ./install.sh + mkdir $PWD/lab-bin LOCATION=$PWD/lab-bin ./install.sh export PATH=$PATH:$PWD/lab-bin From 6b2747a2f8f421b82eeea97bbaf572e4f6cae4ad Mon Sep 17 00:00:00 2001 From: Tim Voronov Date: Tue, 28 Mar 2023 13:35:56 -0400 Subject: [PATCH 15/16] Updated lab runner --- .github/workflows/build.yml | 6 ++---- Makefile | 3 ++- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c429da1f..9f84f993 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -60,9 +60,7 @@ jobs: run: | curl https://raw.githubusercontent.com/MontFerret/lab/master/install.sh -o install.sh chmod +x ./install.sh - mkdir $PWD/lab-bin - LOCATION=$PWD/lab-bin ./install.sh - export PATH=$PATH:$PWD/lab-bin + LOCATION=$PWD ./install.sh - name: Get dependencies run: make install @@ -81,5 +79,5 @@ jobs: - name: E2E tests run: | docker run -d -p 9222:9222 ghcr.io/montferret/chromium:92.0.4512.0 - make e2e + LAB_BIN=$PWD/lab make e2e docker stop $(docker ps -q) diff --git a/Makefile b/Makefile index 1afd9844..bbabe7bc 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,7 @@ .PHONY: build install compile test e2e doc fmt lint vet release export CGO_ENABLED=0 +LAB_BIN ?= lab DIR_BIN = ./bin DIR_PKG = ./pkg DIR_E2E = ./e2e @@ -29,7 +30,7 @@ cover: curl -s https://codecov.io/bash | bash e2e: - lab --timeout=120 --attempts=5 --concurrency=1 --wait=http://127.0.0.1:9222/json/version --runtime=bin://./bin/ferret --files=./e2e/tests --cdn=./e2e/pages/dynamic --cdn=./e2e/pages/static + ${LAB_BIN} --timeout=120 --attempts=5 --concurrency=1 --wait=http://127.0.0.1:9222/json/version --runtime=bin://./bin/ferret --files=./e2e/tests --cdn=./e2e/pages/dynamic --cdn=./e2e/pages/static bench: go test -run=XXX -bench=. ${DIR_PKG}/... From 7f6c45fde657854ec9765a14a809429386c210f6 Mon Sep 17 00:00:00 2001 From: Tim Voronov Date: Tue, 28 Mar 2023 13:55:44 -0400 Subject: [PATCH 16/16] Updated dependencies (#783) --- go.mod | 16 ++++++++-------- go.sum | 32 ++++++++++++++++++++------------ 2 files changed, 28 insertions(+), 20 deletions(-) diff --git a/go.mod b/go.mod index c3f6bc86..824cc528 100644 --- a/go.mod +++ b/go.mod @@ -3,24 +3,24 @@ module github.com/MontFerret/ferret go 1.18 require ( - github.com/PuerkitoBio/goquery v1.8.0 + github.com/PuerkitoBio/goquery v1.8.1 github.com/antchfx/htmlquery v1.3.0 - github.com/antchfx/xpath v1.2.3 - github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20221202181307-76fa05c21b12 + github.com/antchfx/xpath v1.2.4 + github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230321174746-8dcc6526cfb1 github.com/corpix/uarand v0.2.0 github.com/gobwas/glob v0.2.3 github.com/gorilla/css v1.0.0 github.com/jarcoal/httpmock v1.3.0 - github.com/mafredri/cdp v0.33.0 + github.com/mafredri/cdp v0.34.0 github.com/pkg/errors v0.9.1 github.com/rs/zerolog v1.29.0 github.com/sethgrid/pester v1.2.0 github.com/smartystreets/goconvey v1.7.2 - github.com/stretchr/testify v1.8.1 + github.com/stretchr/testify v1.8.2 github.com/wI2L/jettison v0.7.4 - golang.org/x/net v0.5.0 + golang.org/x/net v0.8.0 golang.org/x/sync v0.1.0 - golang.org/x/text v0.6.0 + golang.org/x/text v0.8.0 ) require ( @@ -36,6 +36,6 @@ require ( github.com/smartystreets/assertions v1.2.0 // indirect github.com/stretchr/objx v0.5.0 // indirect golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e // indirect - golang.org/x/sys v0.4.0 // indirect + golang.org/x/sys v0.6.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index 72f1137d..13847c38 100644 --- a/go.sum +++ b/go.sum @@ -1,13 +1,14 @@ -github.com/PuerkitoBio/goquery v1.8.0 h1:PJTF7AmFCFKk1N6V6jmKfrNH9tV5pNE6lZMkG0gta/U= -github.com/PuerkitoBio/goquery v1.8.0/go.mod h1:ypIiRMtY7COPGk+I/YbZLbxsxn9g5ejnI2HSMtkjZvI= +github.com/PuerkitoBio/goquery v1.8.1 h1:uQxhNlArOIdbrH1tr0UXwdVFgDcZDrZVdcpygAcwmWM= +github.com/PuerkitoBio/goquery v1.8.1/go.mod h1:Q8ICL1kNUJ2sXGoAhPGUdYDJvgQgHzJsnnd3H7Ho5jQ= github.com/andybalholm/cascadia v1.3.1 h1:nhxRkql1kdYCc8Snf7D5/D3spOX+dBgjA6u8x004T2c= github.com/andybalholm/cascadia v1.3.1/go.mod h1:R4bJ1UQfqADjvDa4P6HZHLh/3OxWWEqc0Sk8XGwHqvA= github.com/antchfx/htmlquery v1.3.0 h1:5I5yNFOVI+egyia5F2s/5Do2nFWxJz41Tr3DyfKD25E= github.com/antchfx/htmlquery v1.3.0/go.mod h1:zKPDVTMhfOmcwxheXUsx4rKJy8KEY/PU6eXr/2SebQ8= -github.com/antchfx/xpath v1.2.3 h1:CCZWOzv5bAqjVv0offZ2LVgVYFbeldKQVuLNbViZdes= github.com/antchfx/xpath v1.2.3/go.mod h1:i54GszH55fYfBmoZXapTHN8T8tkcHfRgLyVwwqzXNcs= -github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20221202181307-76fa05c21b12 h1:npHgfD4Tl2WJS3AJaMUi5ynGDPUBfkg3U3fCzDyXZ+4= -github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20221202181307-76fa05c21b12/go.mod h1:pSwJ0fSY5KhvocuWSx4fz3BA8OrA1bQn+K1Eli3BRwM= +github.com/antchfx/xpath v1.2.4 h1:dW1HB/JxKvGtJ9WyVGJ0sIoEcqftV3SqIstujI+B9XY= +github.com/antchfx/xpath v1.2.4/go.mod h1:i54GszH55fYfBmoZXapTHN8T8tkcHfRgLyVwwqzXNcs= +github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230321174746-8dcc6526cfb1 h1:X8MJ0fnN5FPdcGF5Ij2/OW+HgiJrRg3AfHAx1PJtIzM= +github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230321174746-8dcc6526cfb1/go.mod h1:pSwJ0fSY5KhvocuWSx4fz3BA8OrA1bQn+K1Eli3BRwM= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/coreos/go-systemd/v22 v22.3.3-0.20220203105225-a9a7ef127534/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/corpix/uarand v0.2.0 h1:U98xXwud/AVuCpkpgfPF7J5TQgr7R5tqT8VZP5KWbzE= @@ -51,8 +52,8 @@ github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfV github.com/klauspost/compress v1.10.3 h1:OP96hzwJVBIHYU52pVTI6CczrxPvrGfgqF9N5eTO0Q8= github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= -github.com/mafredri/cdp v0.33.0 h1:McuQjNe0DyctTUxt8zY6jGTlpPoy2gciqxtvKhz0XPM= -github.com/mafredri/cdp v0.33.0/go.mod h1:Dbsh7eY/zhQlsddEDWzZGOztv9Jf2gzKq47M7a2P3C4= +github.com/mafredri/cdp v0.34.0 h1:kC8LFc1IJcjexESrt6U+MkqLtbwLV+WQ9hgcn1hntc4= +github.com/mafredri/cdp v0.34.0/go.mod h1:Dbsh7eY/zhQlsddEDWzZGOztv9Jf2gzKq47M7a2P3C4= github.com/mafredri/go-lint v0.0.0-20180911205320-920981dfc79e/go.mod h1:k/zdyxI3q6dup24o8xpYjJKTCf2F7rfxLp6w/efTiWs= github.com/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40= github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= @@ -87,8 +88,8 @@ github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UV github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk= -github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8= +github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= github.com/wI2L/jettison v0.7.4 h1:ptjriu75R/k5RAZO0DJzy2t55f7g+dPiBxBY38icaKg= @@ -111,8 +112,10 @@ golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwY golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210916014120-12bc252f5db8/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.5.0 h1:GyT4nK/YDHSqa1c4753ouYCDajOYKTja9Xb/OHtgvSw= golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws= +golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.8.0 h1:Zrh2ngAOFYneWTAIAPethzeaQLuHwhuBkuV6ZiRnUaQ= +golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -132,18 +135,23 @@ golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.4.0 h1:Zr2JFtRQNX3BCZ8YtxRE9hNJYC8J6I1MVbMg6owUp18= golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.6.0 h1:3XmdazWV+ubf7QgHSTWeykHOci5oeekaGJBLkrkaw4k= golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.8.0 h1:57P1ETyNKtuIjB4SRd15iJxuhj8Gc416Y78H3qgMh68= +golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=