From bab6c8bab0a6dc5512c56b69500baa2f82ddf416 Mon Sep 17 00:00:00 2001 From: Antonio Pagano <645522+paganotoni@users.noreply.github.com> Date: Sat, 20 Nov 2021 11:46:30 -0500 Subject: [PATCH 01/11] v0.17.5 (#2165) * adding direct version on the docker build * fixing plugin installation * Fix npm's package.json permissions (#2005) Changed created file permissions from 644 (`-w----r--`) to 0644 (`rw-r--r--`) * Bump spf13/viper to v1.7.0 (#1999) * bunping version * changing version on dockerfile * patch to fix the keywords check on new app * removing unneeded append * Task fixing html binder (#2016) * binder was not wired * packing * adding new version number * pulling the buffalo binary from gobinaries.com * Task updating formam (#2025) * v0.16.13 (#2019) * adding direct version on the docker build * fixing plugin installation * Fix npm's package.json permissions (#2005) Changed created file permissions from 644 (`-w----r--`) to 0644 (`rw-r--r--`) * Bump spf13/viper to v1.7.0 (#1999) * bunping version * changing version on dockerfile * patch to fix the keywords check on new app * removing unneeded append * Task fixing html binder (#2016) * binder was not wired * packing * adding new version number * pulling the buffalo binary from gobinaries.com Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * updating formam Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * Fixes #1987 and #2023 (#2026) * v0.16.13 (#2019) * adding direct version on the docker build * fixing plugin installation * Fix npm's package.json permissions (#2005) Changed created file permissions from 644 (`-w----r--`) to 0644 (`rw-r--r--`) * Bump spf13/viper to v1.7.0 (#1999) * bunping version * changing version on dockerfile * patch to fix the keywords check on new app * removing unneeded append * Task fixing html binder (#2016) * binder was not wired * packing * adding new version number * pulling the buffalo binary from gobinaries.com Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * fixing #1987 and #2023 * adding missing converstion * removing commented code Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * changing version number * moving to latest 2 go versions (#2038) * Task binding cleanup (#2039) * moving to latest 2 go versions * cleaning up the decoder on the binding package * Task update formam (#2041) * v0.16.14 (#2030) * adding direct version on the docker build * fixing plugin installation * Fix npm's package.json permissions (#2005) Changed created file permissions from 644 (`-w----r--`) to 0644 (`rw-r--r--`) * Bump spf13/viper to v1.7.0 (#1999) * bunping version * changing version on dockerfile * patch to fix the keywords check on new app * removing unneeded append * Task fixing html binder (#2016) * binder was not wired * packing * adding new version number * pulling the buffalo binary from gobinaries.com * Task updating formam (#2025) * v0.16.13 (#2019) * adding direct version on the docker build * fixing plugin installation * Fix npm's package.json permissions (#2005) Changed created file permissions from 644 (`-w----r--`) to 0644 (`rw-r--r--`) * Bump spf13/viper to v1.7.0 (#1999) * bunping version * changing version on dockerfile * patch to fix the keywords check on new app * removing unneeded append * Task fixing html binder (#2016) * binder was not wired * packing * adding new version number * pulling the buffalo binary from gobinaries.com Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * updating formam Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * Fixes #1987 and #2023 (#2026) * v0.16.13 (#2019) * adding direct version on the docker build * fixing plugin installation * Fix npm's package.json permissions (#2005) Changed created file permissions from 644 (`-w----r--`) to 0644 (`rw-r--r--`) * Bump spf13/viper to v1.7.0 (#1999) * bunping version * changing version on dockerfile * patch to fix the keywords check on new app * removing unneeded append * Task fixing html binder (#2016) * binder was not wired * packing * adding new version number * pulling the buffalo binary from gobinaries.com Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * fixing #1987 and #2023 * adding missing converstion * removing commented code Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * changing version number Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * updates formam version #2040 Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * updating flect versionm (#2042) * updating version * updating some libraries to pass the github security warnings (#2044) * Removing Grifts folder (#2050) * removing the grifts folder * removing grifts folder from codeclimate exceptions * fixes the non-existing .git folder case (#2053) * calling persist explicitly (#2054) * adding version number * Pointing README to new go docs link * running packr2 * Warns if response is attempted to be written twice (#2059) * v0.16.16 (#2055) * adding direct version on the docker build * fixing plugin installation * Fix npm's package.json permissions (#2005) Changed created file permissions from 644 (`-w----r--`) to 0644 (`rw-r--r--`) * Bump spf13/viper to v1.7.0 (#1999) * bunping version * changing version on dockerfile * patch to fix the keywords check on new app * removing unneeded append * Task fixing html binder (#2016) * binder was not wired * packing * adding new version number * pulling the buffalo binary from gobinaries.com * Task updating formam (#2025) * v0.16.13 (#2019) * adding direct version on the docker build * fixing plugin installation * Fix npm's package.json permissions (#2005) Changed created file permissions from 644 (`-w----r--`) to 0644 (`rw-r--r--`) * Bump spf13/viper to v1.7.0 (#1999) * bunping version * changing version on dockerfile * patch to fix the keywords check on new app * removing unneeded append * Task fixing html binder (#2016) * binder was not wired * packing * adding new version number * pulling the buffalo binary from gobinaries.com Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * updating formam Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * Fixes #1987 and #2023 (#2026) * v0.16.13 (#2019) * adding direct version on the docker build * fixing plugin installation * Fix npm's package.json permissions (#2005) Changed created file permissions from 644 (`-w----r--`) to 0644 (`rw-r--r--`) * Bump spf13/viper to v1.7.0 (#1999) * bunping version * changing version on dockerfile * patch to fix the keywords check on new app * removing unneeded append * Task fixing html binder (#2016) * binder was not wired * packing * adding new version number * pulling the buffalo binary from gobinaries.com Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * fixing #1987 and #2023 * adding missing converstion * removing commented code Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * changing version number * moving to latest 2 go versions (#2038) * Task binding cleanup (#2039) * moving to latest 2 go versions * cleaning up the decoder on the binding package * Task update formam (#2041) * v0.16.14 (#2030) * adding direct version on the docker build * fixing plugin installation * Fix npm's package.json permissions (#2005) Changed created file permissions from 644 (`-w----r--`) to 0644 (`rw-r--r--`) * Bump spf13/viper to v1.7.0 (#1999) * bunping version * changing version on dockerfile * patch to fix the keywords check on new app * removing unneeded append * Task fixing html binder (#2016) * binder was not wired * packing * adding new version number * pulling the buffalo binary from gobinaries.com * Task updating formam (#2025) * v0.16.13 (#2019) * adding direct version on the docker build * fixing plugin installation * Fix npm's package.json permissions (#2005) Changed created file permissions from 644 (`-w----r--`) to 0644 (`rw-r--r--`) * Bump spf13/viper to v1.7.0 (#1999) * bunping version * changing version on dockerfile * patch to fix the keywords check on new app * removing unneeded append * Task fixing html binder (#2016) * binder was not wired * packing * adding new version number * pulling the buffalo binary from gobinaries.com Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * updating formam Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * Fixes #1987 and #2023 (#2026) * v0.16.13 (#2019) * adding direct version on the docker build * fixing plugin installation * Fix npm's package.json permissions (#2005) Changed created file permissions from 644 (`-w----r--`) to 0644 (`rw-r--r--`) * Bump spf13/viper to v1.7.0 (#1999) * bunping version * changing version on dockerfile * patch to fix the keywords check on new app * removing unneeded append * Task fixing html binder (#2016) * binder was not wired * packing * adding new version number * pulling the buffalo binary from gobinaries.com Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * fixing #1987 and #2023 * adding missing converstion * removing commented code Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * changing version number Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * updates formam version #2040 Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * updating flect versionm (#2042) * updating version * updating some libraries to pass the github security warnings (#2044) * Removing Grifts folder (#2050) * removing the grifts folder * removing grifts folder from codeclimate exceptions * fixes the non-existing .git folder case (#2053) * calling persist explicitly (#2054) * adding version number Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * only writing the header if it has not been written * bumping version * adding packr2 files Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * allows to specify custom partialfeeders * cleaning up a bit for codeclimate * changing the version * Application Route Namer (#2075) * Development (#2072) * adding direct version on the docker build * fixing plugin installation * Fix npm's package.json permissions (#2005) Changed created file permissions from 644 (`-w----r--`) to 0644 (`rw-r--r--`) * Bump spf13/viper to v1.7.0 (#1999) * bunping version * changing version on dockerfile * patch to fix the keywords check on new app * removing unneeded append * Task fixing html binder (#2016) * binder was not wired * packing * adding new version number * pulling the buffalo binary from gobinaries.com * Task updating formam (#2025) * v0.16.13 (#2019) * adding direct version on the docker build * fixing plugin installation * Fix npm's package.json permissions (#2005) Changed created file permissions from 644 (`-w----r--`) to 0644 (`rw-r--r--`) * Bump spf13/viper to v1.7.0 (#1999) * bunping version * changing version on dockerfile * patch to fix the keywords check on new app * removing unneeded append * Task fixing html binder (#2016) * binder was not wired * packing * adding new version number * pulling the buffalo binary from gobinaries.com Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * updating formam Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * Fixes #1987 and #2023 (#2026) * v0.16.13 (#2019) * adding direct version on the docker build * fixing plugin installation * Fix npm's package.json permissions (#2005) Changed created file permissions from 644 (`-w----r--`) to 0644 (`rw-r--r--`) * Bump spf13/viper to v1.7.0 (#1999) * bunping version * changing version on dockerfile * patch to fix the keywords check on new app * removing unneeded append * Task fixing html binder (#2016) * binder was not wired * packing * adding new version number * pulling the buffalo binary from gobinaries.com Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * fixing #1987 and #2023 * adding missing converstion * removing commented code Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * changing version number * moving to latest 2 go versions (#2038) * Task binding cleanup (#2039) * moving to latest 2 go versions * cleaning up the decoder on the binding package * Task update formam (#2041) * v0.16.14 (#2030) * adding direct version on the docker build * fixing plugin installation * Fix npm's package.json permissions (#2005) Changed created file permissions from 644 (`-w----r--`) to 0644 (`rw-r--r--`) * Bump spf13/viper to v1.7.0 (#1999) * bunping version * changing version on dockerfile * patch to fix the keywords check on new app * removing unneeded append * Task fixing html binder (#2016) * binder was not wired * packing * adding new version number * pulling the buffalo binary from gobinaries.com * Task updating formam (#2025) * v0.16.13 (#2019) * adding direct version on the docker build * fixing plugin installation * Fix npm's package.json permissions (#2005) Changed created file permissions from 644 (`-w----r--`) to 0644 (`rw-r--r--`) * Bump spf13/viper to v1.7.0 (#1999) * bunping version * changing version on dockerfile * patch to fix the keywords check on new app * removing unneeded append * Task fixing html binder (#2016) * binder was not wired * packing * adding new version number * pulling the buffalo binary from gobinaries.com Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * updating formam Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * Fixes #1987 and #2023 (#2026) * v0.16.13 (#2019) * adding direct version on the docker build * fixing plugin installation * Fix npm's package.json permissions (#2005) Changed created file permissions from 644 (`-w----r--`) to 0644 (`rw-r--r--`) * Bump spf13/viper to v1.7.0 (#1999) * bunping version * changing version on dockerfile * patch to fix the keywords check on new app * removing unneeded append * Task fixing html binder (#2016) * binder was not wired * packing * adding new version number * pulling the buffalo binary from gobinaries.com Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * fixing #1987 and #2023 * adding missing converstion * removing commented code Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * changing version number Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * updates formam version #2040 Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * updating flect versionm (#2042) * updating version * updating some libraries to pass the github security warnings (#2044) * Removing Grifts folder (#2050) * removing the grifts folder * removing grifts folder from codeclimate exceptions * fixes the non-existing .git folder case (#2053) * calling persist explicitly (#2054) * adding version number * Pointing README to new go docs link * running packr2 * Warns if response is attempted to be written twice (#2059) * v0.16.16 (#2055) * adding direct version on the docker build * fixing plugin installation * Fix npm's package.json permissions (#2005) Changed created file permissions from 644 (`-w----r--`) to 0644 (`rw-r--r--`) * Bump spf13/viper to v1.7.0 (#1999) * bunping version * changing version on dockerfile * patch to fix the keywords check on new app * removing unneeded append * Task fixing html binder (#2016) * binder was not wired * packing * adding new version number * pulling the buffalo binary from gobinaries.com * Task updating formam (#2025) * v0.16.13 (#2019) * adding direct version on the docker build * fixing plugin installation * Fix npm's package.json permissions (#2005) Changed created file permissions from 644 (`-w----r--`) to 0644 (`rw-r--r--`) * Bump spf13/viper to v1.7.0 (#1999) * bunping version * changing version on dockerfile * patch to fix the keywords check on new app * removing unneeded append * Task fixing html binder (#2016) * binder was not wired * packing * adding new version number * pulling the buffalo binary from gobinaries.com Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * updating formam Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * Fixes #1987 and #2023 (#2026) * v0.16.13 (#2019) * adding direct version on the docker build * fixing plugin installation * Fix npm's package.json permissions (#2005) Changed created file permissions from 644 (`-w----r--`) to 0644 (`rw-r--r--`) * Bump spf13/viper to v1.7.0 (#1999) * bunping version * changing version on dockerfile * patch to fix the keywords check on new app * removing unneeded append * Task fixing html binder (#2016) * binder was not wired * packing * adding new version number * pulling the buffalo binary from gobinaries.com Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * fixing #1987 and #2023 * adding missing converstion * removing commented code Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * changing version number * moving to latest 2 go versions (#2038) * Task binding cleanup (#2039) * moving to latest 2 go versions * cleaning up the decoder on the binding package * Task update formam (#2041) * v0.16.14 (#2030) * adding direct version on the docker build * fixing plugin installation * Fix npm's package.json permissions (#2005) Changed created file permissions from 644 (`-w----r--`) to 0644 (`rw-r--r--`) * Bump spf13/viper to v1.7.0 (#1999) * bunping version * changing version on dockerfile * patch to fix the keywords check on new app * removing unneeded append * Task fixing html binder (#2016) * binder was not wired * packing * adding new version number * pulling the buffalo binary from gobinaries.com * Task updating formam (#2025) * v0.16.13 (#2019) * adding direct version on the docker build * fixing plugin installation * Fix npm's package.json permissions (#2005) Changed created file permissions from 644 (`-w----r--`) to 0644 (`rw-r--r--`) * Bump spf13/viper to v1.7.0 (#1999) * bunping version * changing version on dockerfile * patch to fix the keywords check on new app * removing unneeded append * Task fixing html binder (#2016) * binder was not wired * packing * adding new version number * pulling the buffalo binary from gobinaries.com Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * updating formam Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * Fixes #1987 and #2023 (#2026) * v0.16.13 (#2019) * adding direct version on the docker build * fixing plugin installation * Fix npm's package.json permissions (#2005) Changed created file permissions from 644 (`-w----r--`) to 0644 (`rw-r--r--`) * Bump spf13/viper to v1.7.0 (#1999) * bunping version * changing version on dockerfile * patch to fix the keywords check on new app * removing unneeded append * Task fixing html binder (#2016) * binder was not wired * packing * adding new version number * pulling the buffalo binary from gobinaries.com Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * fixing #1987 and #2023 * adding missing converstion * removing commented code Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * changing version number Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * updates formam version #2040 Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * updating flect versionm (#2042) * updating version * updating some libraries to pass the github security warnings (#2044) * Removing Grifts folder (#2050) * removing the grifts folder * removing grifts folder from codeclimate exceptions * fixes the non-existing .git folder case (#2053) * calling persist explicitly (#2054) * adding version number Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * only writing the header if it has not been written * bumping version * adding packr2 files Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * allows to specify custom partialfeeders * cleaning up a bit for codeclimate * changing the version Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * allowing apps to define their own route namers * tweaking and packing Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * v0.16.19 * fixing groups routenamer issue * version change * Fix generated GitLab ci YAML (#2086) * gitlab-ci: Default to Golang 1.15 Given the policy by the golang team to support and maintain only the latest two Go releases defaulting to Go 1.8 effectily made buffalo test with a EOL'ed Golang. This change defaults to 1.15, and allows the user to switch to 1.16 with the already present latest switch. * gitlab-ci: Leverage gomodules over GOPATH Prior to this change, the `.gitlab-ci.yml` linked the directories so that GOPATH would work. Given buffalo now always uses gomodules these steps are no longer required, and currently even break the pipeline created from the generated CI definitions. By just executing the job in the `/builds` subdirectory gomodules work as expected again. * gitlab-ci: Update postgres connection details Docker links the containers differently than was priorly assumed for GitLab CI. As such the out-of-the-box settings weren't properly working. This change resolves that in the CI YAML definitions to isolate the changes from local setups. * moving to last 2 versions of Go * Bump elliptic from 6.5.3 to 6.5.4 in /genny/build/_fixtures/coke (#2088) * Update 'goreleaser' config to use new syntax (#2079) Previous config used `brews`, which has been deprecated and superseded by `tap`: https://goreleaser.com/deprecations/#brewsgithub * Bump elliptic from 6.5.3 to 6.5.4 in /genny/build/_fixtures/coke Bumps [elliptic](https://github.com/indutny/elliptic) from 6.5.3 to 6.5.4. - [Release notes](https://github.com/indutny/elliptic/releases) - [Commits](https://github.com/indutny/elliptic/compare/v6.5.3...v6.5.4) Signed-off-by: dependabot[bot] Co-authored-by: Adriano Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * updating plush and helpers package * adding latest plush * updating version * packing missing * using the correct packatge * Feature/improved error reporting in production (#2108) * Development (#2099) * adding direct version on the docker build * fixing plugin installation * Fix npm's package.json permissions (#2005) Changed created file permissions from 644 (`-w----r--`) to 0644 (`rw-r--r--`) * Bump spf13/viper to v1.7.0 (#1999) * bunping version * changing version on dockerfile * patch to fix the keywords check on new app * removing unneeded append * Task fixing html binder (#2016) * binder was not wired * packing * adding new version number * pulling the buffalo binary from gobinaries.com * Task updating formam (#2025) * v0.16.13 (#2019) * adding direct version on the docker build * fixing plugin installation * Fix npm's package.json permissions (#2005) Changed created file permissions from 644 (`-w----r--`) to 0644 (`rw-r--r--`) * Bump spf13/viper to v1.7.0 (#1999) * bunping version * changing version on dockerfile * patch to fix the keywords check on new app * removing unneeded append * Task fixing html binder (#2016) * binder was not wired * packing * adding new version number * pulling the buffalo binary from gobinaries.com Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * updating formam Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * Fixes #1987 and #2023 (#2026) * v0.16.13 (#2019) * adding direct version on the docker build * fixing plugin installation * Fix npm's package.json permissions (#2005) Changed created file permissions from 644 (`-w----r--`) to 0644 (`rw-r--r--`) * Bump spf13/viper to v1.7.0 (#1999) * bunping version * changing version on dockerfile * patch to fix the keywords check on new app * removing unneeded append * Task fixing html binder (#2016) * binder was not wired * packing * adding new version number * pulling the buffalo binary from gobinaries.com Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * fixing #1987 and #2023 * adding missing converstion * removing commented code Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * changing version number * moving to latest 2 go versions (#2038) * Task binding cleanup (#2039) * moving to latest 2 go versions * cleaning up the decoder on the binding package * Task update formam (#2041) * v0.16.14 (#2030) * adding direct version on the docker build * fixing plugin installation * Fix npm's package.json permissions (#2005) Changed created file permissions from 644 (`-w----r--`) to 0644 (`rw-r--r--`) * Bump spf13/viper to v1.7.0 (#1999) * bunping version * changing version on dockerfile * patch to fix the keywords check on new app * removing unneeded append * Task fixing html binder (#2016) * binder was not wired * packing * adding new version number * pulling the buffalo binary from gobinaries.com * Task updating formam (#2025) * v0.16.13 (#2019) * adding direct version on the docker build * fixing plugin installation * Fix npm's package.json permissions (#2005) Changed created file permissions from 644 (`-w----r--`) to 0644 (`rw-r--r--`) * Bump spf13/viper to v1.7.0 (#1999) * bunping version * changing version on dockerfile * patch to fix the keywords check on new app * removing unneeded append * Task fixing html binder (#2016) * binder was not wired * packing * adding new version number * pulling the buffalo binary from gobinaries.com Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * updating formam Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * Fixes #1987 and #2023 (#2026) * v0.16.13 (#2019) * adding direct version on the docker build * fixing plugin installation * Fix npm's package.json permissions (#2005) Changed created file permissions from 644 (`-w----r--`) to 0644 (`rw-r--r--`) * Bump spf13/viper to v1.7.0 (#1999) * bunping version * changing version on dockerfile * patch to fix the keywords check on new app * removing unneeded append * Task fixing html binder (#2016) * binder was not wired * packing * adding new version number * pulling the buffalo binary from gobinaries.com Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * fixing #1987 and #2023 * adding missing converstion * removing commented code Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * changing version number Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * updates formam version #2040 Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * updating flect versionm (#2042) * updating version * updating some libraries to pass the github security warnings (#2044) * Removing Grifts folder (#2050) * removing the grifts folder * removing grifts folder from codeclimate exceptions * fixes the non-existing .git folder case (#2053) * calling persist explicitly (#2054) * adding version number * Pointing README to new go docs link * running packr2 * Warns if response is attempted to be written twice (#2059) * v0.16.16 (#2055) * adding direct version on the docker build * fixing plugin installation * Fix npm's package.json permissions (#2005) Changed created file permissions from 644 (`-w----r--`) to 0644 (`rw-r--r--`) * Bump spf13/viper to v1.7.0 (#1999) * bunping version * changing version on dockerfile * patch to fix the keywords check on new app * removing unneeded append * Task fixing html binder (#2016) * binder was not wired * packing * adding new version number * pulling the buffalo binary from gobinaries.com * Task updating formam (#2025) * v0.16.13 (#2019) * adding direct version on the docker build * fixing plugin installation * Fix npm's package.json permissions (#2005) Changed created file permissions from 644 (`-w----r--`) to 0644 (`rw-r--r--`) * Bump spf13/viper to v1.7.0 (#1999) * bunping version * changing version on dockerfile * patch to fix the keywords check on new app * removing unneeded append * Task fixing html binder (#2016) * binder was not wired * packing * adding new version number * pulling the buffalo binary from gobinaries.com Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * updating formam Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * Fixes #1987 and #2023 (#2026) * v0.16.13 (#2019) * adding direct version on the docker build * fixing plugin installation * Fix npm's package.json permissions (#2005) Changed created file permissions from 644 (`-w----r--`) to 0644 (`rw-r--r--`) * Bump spf13/viper to v1.7.0 (#1999) * bunping version * changing version on dockerfile * patch to fix the keywords check on new app * removing unneeded append * Task fixing html binder (#2016) * binder was not wired * packing * adding new version number * pulling the buffalo binary from gobinaries.com Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * fixing #1987 and #2023 * adding missing converstion * removing commented code Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * changing version number * moving to latest 2 go versions (#2038) * Task binding cleanup (#2039) * moving to latest 2 go versions * cleaning up the decoder on the binding package * Task update formam (#2041) * v0.16.14 (#2030) * adding direct version on the docker build * fixing plugin installation * Fix npm's package.json permissions (#2005) Changed created file permissions from 644 (`-w----r--`) to 0644 (`rw-r--r--`) * Bump spf13/viper to v1.7.0 (#1999) * bunping version * changing version on dockerfile * patch to fix the keywords check on new app * removing unneeded append * Task fixing html binder (#2016) * binder was not wired * packing * adding new version number * pulling the buffalo binary from gobinaries.com * Task updating formam (#2025) * v0.16.13 (#2019) * adding direct version on the docker build * fixing plugin installation * Fix npm's package.json permissions (#2005) Changed created file permissions from 644 (`-w----r--`) to 0644 (`rw-r--r--`) * Bump spf13/viper to v1.7.0 (#1999) * bunping version * changing version on dockerfile * patch to fix the keywords check on new app * removing unneeded append * Task fixing html binder (#2016) * binder was not wired * packing * adding new version number * pulling the buffalo binary from gobinaries.com Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * updating formam Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * Fixes #1987 and #2023 (#2026) * v0.16.13 (#2019) * adding direct version on the docker build * fixing plugin installation * Fix npm's package.json permissions (#2005) Changed created file permissions from 644 (`-w----r--`) to 0644 (`rw-r--r--`) * Bump spf13/viper to v1.7.0 (#1999) * bunping version * changing version on dockerfile * patch to fix the keywords check on new app * removing unneeded append * Task fixing html binder (#2016) * binder was not wired * packing * adding new version number * pulling the buffalo binary from gobinaries.com Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * fixing #1987 and #2023 * adding missing converstion * removing commented code Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * changing version number Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * updates formam version #2040 Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * updating flect versionm (#2042) * updating version * updating some libraries to pass the github security warnings (#2044) * Removing Grifts folder (#2050) * removing the grifts folder * removing grifts folder from codeclimate exceptions * fixes the non-existing .git folder case (#2053) * calling persist explicitly (#2054) * adding version number Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * only writing the header if it has not been written * bumping version * adding packr2 files Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * allows to specify custom partialfeeders * cleaning up a bit for codeclimate * changing the version * Application Route Namer (#2075) * Development (#2072) * adding direct version on the docker build * fixing plugin installation * Fix npm's package.json permissions (#2005) Changed created file permissions from 644 (`-w----r--`) to 0644 (`rw-r--r--`) * Bump spf13/viper to v1.7.0 (#1999) * bunping version * changing version on dockerfile * patch to fix the keywords check on new app * removing unneeded append * Task fixing html binder (#2016) * binder was not wired * packing * adding new version number * pulling the buffalo binary from gobinaries.com * Task updating formam (#2025) * v0.16.13 (#2019) * adding direct version on the docker build * fixing plugin installation * Fix npm's package.json permissions (#2005) Changed created file permissions from 644 (`-w----r--`) to 0644 (`rw-r--r--`) * Bump spf13/viper to v1.7.0 (#1999) * bunping version * changing version on dockerfile * patch to fix the keywords check on new app * removing unneeded append * Task fixing html binder (#2016) * binder was not wired * packing * adding new version number * pulling the buffalo binary from gobinaries.com Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * updating formam Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * Fixes #1987 and #2023 (#2026) * v0.16.13 (#2019) * adding direct version on the docker build * fixing plugin installation * Fix npm's package.json permissions (#2005) Changed created file permissions from 644 (`-w----r--`) to 0644 (`rw-r--r--`) * Bump spf13/viper to v1.7.0 (#1999) * bunping version * changing version on dockerfile * patch to fix the keywords check on new app * removing unneeded append * Task fixing html binder (#2016) * binder was not wired * packing * adding new version number * pulling the buffalo binary from gobinaries.com Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * fixing #1987 and #2023 * adding missing converstion * removing commented code Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * changing version number * moving to latest 2 go versions (#2038) * Task binding cleanup (#2039) * moving to latest 2 go versions * cleaning up the decoder on the binding package * Task update formam (#2041) * v0.16.14 (#2030) * adding direct version on the docker build * fixing plugin installation * Fix npm's package.json permissions (#2005) Changed created file permissions from 644 (`-w----r--`) to 0644 (`rw-r--r--`) * Bump spf13/viper to v1.7.0 (#1999) * bunping version * changing version on dockerfile * patch to fix the keywords check on new app * removing unneeded append * Task fixing html binder (#2016) * binder was not wired * packing * adding new version number * pulling the buffalo binary from gobinaries.com * Task updating formam (#2025) * v0.16.13 (#2019) * adding direct version on the docker build * fixing plugin installation * Fix npm's package.json permissions (#2005) Changed created file permissions from 644 (`-w----r--`) to 0644 (`rw-r--r--`) * Bump spf13/viper to v1.7.0 (#1999) * bunping version * changing version on dockerfile * patch to fix the keywords check on new app * removing unneeded append * Task fixing html binder (#2016) * binder was not wired * packing * adding new version number * pulling the buffalo binary from gobinaries.com Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * updating formam Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * Fixes #1987 and #2023 (#2026) * v0.16.13 (#2019) * adding direct version on the docker build * fixing plugin installation * Fix npm's package.json permissions (#2005) Changed created file permissions from 644 (`-w----r--`) to 0644 (`rw-r--r--`) * Bump spf13/viper to v1.7.0 (#1999) * bunping version * changing version on dockerfile * patch to fix the keywords check on new app * removing unneeded append * Task fixing html binder (#2016) * binder was not wired * packing * adding new version number * pulling the buffalo binary from gobinaries.com Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * fixing #1987 and #2023 * adding missing converstion * removing commented code Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * changing version number Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * updates formam version #2040 Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * updating flect versionm (#2042) * updating version * updating some libraries to pass the github security warnings (#2044) * Removing Grifts folder (#2050) * removing the grifts folder * removing grifts folder from codeclimate exceptions * fixes the non-existing .git folder case (#2053) * calling persist explicitly (#2054) * adding version number * Pointing README to new go docs link * running packr2 * Warns if response is attempted to be written twice (#2059) * v0.16.16 (#2055) * adding direct version on the docker build * fixing plugin installation * Fix npm's package.json permissions (#2005) Changed created file permissions from 644 (`-w----r--`) to 0644 (`rw-r--r--`) * Bump spf13/viper to v1.7.0 (#1999) * bunping version * changing version on dockerfile * patch to fix the keywords check on new app * removing unneeded append * Task fixing html binder (#2016) * binder was not wired * packing * adding new version number * pulling the buffalo binary from gobinaries.com * Task updating formam (#2025) * v0.16.13 (#2019) * adding direct version on the docker build * fixing plugin installation * Fix npm's package.json permissions (#2005) Changed created file permissions from 644 (`-w----r--`) to 0644 (`rw-r--r--`) * Bump spf13/viper to v1.7.0 (#1999) * bunping version * changing version on dockerfile * patch to fix the keywords check on new app * removing unneeded append * Task fixing html binder (#2016) * binder was not wired * packing * adding new version number * pulling the buffalo binary from gobinaries.com Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * updating formam Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * Fixes #1987 and #2023 (#2026) * v0.16.13 (#2019) * adding direct version on the docker build * fixing plugin installation * Fix npm's package.json permissions (#2005) Changed created file permissions from 644 (`-w----r--`) to 0644 (`rw-r--r--`) * Bump spf13/viper to v1.7.0 (#1999) * bunping version * changing version on dockerfile * patch to fix the keywords check on new app * removing unneeded append * Task fixing html binder (#2016) * binder was not wired * packing * adding new version number * pulling the buffalo binary from gobinaries.com Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * fixing #1987 and #2023 * adding missing converstion * removing commented code Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * changing version number * moving to latest 2 go versions (#2038) * Task binding cleanup (#2039) * moving to latest 2 go versions * cleaning up the decoder on the binding package * Task update formam (#2041) * v0.16.14 (#2030) * adding direct version on the docker build * fixing plugin installation * Fix npm's package.json permissions (#2005) Changed created file permissions from 644 (`-w----r--`) to 0644 (`rw-r--r--`) * Bump spf13/viper to v1.7.0 (#1999) * bunping version * changing version on dockerfile * patch to fix the keywords check on new app * removing unneeded append * Task fixing html binder (#2016) * binder was not wired * packing * adding new version number * pulling the buffalo binary from gobinaries.com * Task updating formam (#2025) * v0.16.13 (#2019) * adding direct version on the docker build * fixing plugin installation * Fix npm's package.json permissions (#2005) Changed created file permissions from 644 (`-w----r--`) to 0644 (`rw-r--r--`) * Bump spf13/viper to v1.7.0 (#1999) * bunping version * changing version on dockerfile * patch to fix the keywords check on new app * removing unneeded append * Task fixing html binder (#2016) * binder was not wired * packing * adding new version number * pulling the buffalo binary from gobinaries.com Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * updating formam Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * Fixes #1987 and #2023 (#2026) * v0.16.13 (#2019) * adding direct version on the docker build * fixing plugin installation * Fix npm's package.json permissions (#2005) Changed created file permissions from 644 (`-w----r--`) to 0644 (`rw-r--r--`) * Bump spf13/viper to v1.7.0 (#1999) * bunping version * changing version on dockerfile * patch to fix the keywords check on new app * removing unneeded append * Task fixing html binder (#2016) * binder was not wired * packing * adding new version number * pulling the buffalo binary from gobinaries.com Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * fixing #1987 and #2023 * adding missing converstion * removing commented code Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * changing version number Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * updates formam version #2040 Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * updating flect versionm (#2042) * updating version * updating some libraries to pass the github security warnings (#2044) * Removing Grifts folder (#2050) * removing the grifts folder * removing grifts folder from codeclimate exceptions * fixes the non-existing .git folder case (#2053) * calling persist explicitly (#2054) * adding version number Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * only writing the header if it has not been written * bumping version * adding packr2 files Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * allows to specify custom partialfeeders * cleaning up a bit for codeclimate * changing the version Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * allowing apps to define their own route namers * tweaking and packing Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> * v0.16.19 * fixing groups routenamer issue * version change * Fix generated GitLab ci YAML (#2086) * gitlab-ci: Default to Golang 1.15 Given the policy by the golang team to support and maintain only the latest two Go releases defaulting to Go 1.8 effectily made buffalo test with a EOL'ed Golang. This change defaults to 1.15, and allows the user to switch to 1.16 with the already present latest switch. * gitlab-ci: Leverage gomodules over GOPATH Prior to this change, the `.gitlab-ci.yml` linked the directories so that GOPATH would work. Given buffalo now always uses gomodules these steps are no longer required, and currently even break the pipeline created from the generated CI definitions. By just executing the job in the `/builds` subdirectory gomodules work as expected again. * gitlab-ci: Update postgres connection details Docker links the containers differently than was priorly assumed for GitLab CI. As such the out-of-the-box settings weren't properly working. This change resolves that in the CI YAML definitions to isolate the changes from local setups. * moving to last 2 versions of Go * Bump elliptic from 6.5.3 to 6.5.4 in /genny/build/_fixtures/coke (#2088) * Update 'goreleaser' config to use new syntax (#2079) Previous config used `brews`, which has been deprecated and superseded by `tap`: https://goreleaser.com/deprecations/#brewsgithub * Bump elliptic from 6.5.3 to 6.5.4 in /genny/build/_fixtures/coke Bumps [elliptic](https://github.com/indutny/elliptic) from 6.5.3 to 6.5.4. - [Release notes](https://github.com/indutny/elliptic/releases) - [Commits](https://github.com/indutny/elliptic/compare/v6.5.3...v6.5.4) Signed-off-by: dependabot[bot] Co-authored-by: Adriano Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * updating plush and helpers package * adding latest plush * updating version * packing missing * using the correct packatge Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> Co-authored-by: Zeger-Jan van de Weg Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Adriano * updating version * Properly display errors in production * Move context value setting * Add test code * Properly set environment variable in test code * Fix XML output to omit trace in production Co-authored-by: Antonio Pagano <645522+paganotoni@users.noreply.github.com> Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> Co-authored-by: Zeger-Jan van de Weg Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Adriano Co-authored-by: Antonio Pagano Co-authored-by: Stefan Dorresteijn * Fix build issues with golang 1.16 (#2113) * Fix build issue #2074 * Stick with go 1.15 for compatibility Co-authored-by: Matthias Fasching * replacing packr2 local thing * fixing broken import path * updating flect version * More reliable fix for Go 1.16 build issues (#2119) * Call "go get -d" when building the a package. * Fix failing tests * updating version * packing * Run go mod tidy when initializing a new project (#2124) * Run go mod tidy when initializing a new project * Use Go 1.15 instead of 1.14 during workflows * Add action to handle stale issues and PRs (#2125) * Update dependencies after buffalo new (#2128) * Update dependencies after buffalo new * Cleanup * adding comment on the underscore import * Update buffalo to go 1.17 (#2139) * v0.17.0 (#2134) * v0.17.0 * removing goreleaser as the binary lives on a separate repo * bumping version * Go mod does not like two things with the same commit * Update buffalo to go 1.17 * Use go install instead of gobinaries * Remove obosolete GO111MODULE * Update go.mod * Fix tests that broke with go 1.17 Co-authored-by: Antonio Pagano <645522+paganotoni@users.noreply.github.com> Co-authored-by: Antonio Pagano * Fix typo (#2150) * fixing the issue with meta * forcing microcosm latest version for now * task: version update * task: mod tidying Co-authored-by: Disconnect3d Co-authored-by: hackerman <3372410+aeneasr@users.noreply.github.com> Co-authored-by: Zeger-Jan van de Weg Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Adriano Co-authored-by: Stefan Dorresteijn Co-authored-by: Stefan Dorresteijn Co-authored-by: Matthias Fasching Co-authored-by: Matthias Fasching Co-authored-by: scheakur --- runtime/version.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/runtime/version.go b/runtime/version.go index afb2252a2..b40fb10b7 100644 --- a/runtime/version.go +++ b/runtime/version.go @@ -1,4 +1,4 @@ package runtime // Version is the current version of the buffalo binary -var Version = "v0.17.4" +var Version = "v0.17.5" From a8234c2c51993358e632e9de4e8ccc9258b81473 Mon Sep 17 00:00:00 2001 From: Matthias Fasching Date: Sun, 21 Nov 2021 04:55:52 +0000 Subject: [PATCH 02/11] Replace Packr with embedFS --- .codeclimate.yml | 1 - .github/dependabot.yml | 11 +++ Makefile | 50 ------------- SHOULDERS.md | 6 -- go.mod | 9 ++- go.sum | 28 ++++---- mail/README.md | 99 +++++++++++++------------- plugins/packrd/packed-packr.go | 126 --------------------------------- render/auto_test.go | 102 +++++++++++++------------- render/html_test.go | 28 ++++---- render/js_test.go | 56 ++++++++------- render/markdown_test.go | 17 +++-- render/options.go | 15 +++- render/partials_test.go | 70 +++++++++--------- render/plain_test.go | 8 +-- render/render_test.go | 6 +- render/template.go | 53 ++++++++------ render/template_helpers.go | 7 +- render/template_test.go | 40 ++++++----- request_test.go | 50 ------------- router_test.go | 28 ++++---- server.go | 8 --- 22 files changed, 312 insertions(+), 506 deletions(-) create mode 100644 .github/dependabot.yml delete mode 100644 Makefile delete mode 100644 plugins/packrd/packed-packr.go delete mode 100644 request_test.go diff --git a/.codeclimate.yml b/.codeclimate.yml index f39e7cad7..c1cdb7632 100644 --- a/.codeclimate.yml +++ b/.codeclimate.yml @@ -23,4 +23,3 @@ exclude_paths: - "*_test.go" - "**_test.go" - "middleware_test.go" - - packrd/**.go diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 000000000..aad738c7e --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,11 @@ +version: 2 +updates: + - package-ecosystem: "gomod" + directory: "/" + schedule: + interval: "daily" + + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "daily" diff --git a/Makefile b/Makefile deleted file mode 100644 index 388f671ec..000000000 --- a/Makefile +++ /dev/null @@ -1,50 +0,0 @@ -TAGS ?= "sqlite" -GO_BIN ?= go - -install: deps - make tidy - $(GO_BIN) install -tags ${TAGS} -v ./buffalo - make tidy - -tidy: - $(GO_BIN) mod tidy - -deps: - $(GO_BIN) get github.com/gobuffalo/release - make tidy - -build: - $(GO_BIN) build -v . - make tidy - -test: - packr2 - $(GO_BIN) test -tags ${TAGS} -cover ./... - packr2 - make tidy - -ci-deps: - $(GO_BIN) get github.com/gobuffalo/buffalo-pop - $(GO_BIN) get -tags ${TAGS} -t -v ./... - make tidy - -ci-test: - docker build . --no-cache --build-arg TRAVIS_BRANCH=$$(git symbolic-ref --short HEAD) - -lint: - golangci-lint --vendor ./... --deadline=1m --skip=internal - -update: - $(GO_BIN) get -u -tags ${TAGS} - make tidy - make test - make install - make tidy - -release-test: - make tidy - -release: - make tidy - release -y -f ./runtime/version.go --skip-packr - make tidy diff --git a/SHOULDERS.md b/SHOULDERS.md index afac02772..e195d327a 100644 --- a/SHOULDERS.md +++ b/SHOULDERS.md @@ -146,12 +146,6 @@ Thank you to the following **GIANTS**: * [github.com/gobuffalo/nulls](https://godoc.org/github.com/gobuffalo/nulls) -* [github.com/gobuffalo/packd](https://godoc.org/github.com/gobuffalo/packd) - -* [github.com/gobuffalo/packr](https://godoc.org/github.com/gobuffalo/packr) - -* [github.com/gobuffalo/packr/v2](https://godoc.org/github.com/gobuffalo/packr/v2) - * [github.com/gobuffalo/plush](https://godoc.org/github.com/gobuffalo/plush) * [github.com/gobuffalo/plushgen](https://godoc.org/github.com/gobuffalo/plushgen) diff --git a/go.mod b/go.mod index 17adaf1da..d6c3aed83 100644 --- a/go.mod +++ b/go.mod @@ -10,16 +10,14 @@ require ( github.com/gobuffalo/events v1.4.2 github.com/gobuffalo/flect v0.2.4 github.com/gobuffalo/github_flavored_markdown v1.1.1 - github.com/gobuffalo/helpers v0.6.3 + github.com/gobuffalo/helpers v0.6.4 github.com/gobuffalo/httptest v1.5.1 github.com/gobuffalo/logger v1.0.6 github.com/gobuffalo/meta v0.3.1 github.com/gobuffalo/nulls v0.4.1 - github.com/gobuffalo/packd v1.0.1 - github.com/gobuffalo/packr/v2 v2.8.1 - github.com/gobuffalo/plush/v4 v4.1.8 + github.com/gobuffalo/plush/v4 v4.1.9 github.com/gobuffalo/pop/v5 v5.3.4 - github.com/gobuffalo/tags/v3 v3.1.1 + github.com/gobuffalo/tags/v3 v3.1.2 github.com/gorilla/handlers v1.5.1 github.com/gorilla/mux v1.8.0 github.com/gorilla/sessions v1.2.1 @@ -30,6 +28,7 @@ require ( github.com/markbates/safe v1.0.1 github.com/markbates/sigtx v1.0.0 github.com/monoculum/formam v3.5.5+incompatible + github.com/psanford/memfs v0.0.0-20210214183328-a001468d78ef github.com/sirupsen/logrus v1.8.1 github.com/spf13/cobra v1.2.1 github.com/stretchr/testify v1.7.0 diff --git a/go.sum b/go.sum index 2e471bb26..346f03dbf 100644 --- a/go.sum +++ b/go.sum @@ -161,7 +161,6 @@ github.com/gobuffalo/fizz v1.10.0/go.mod h1:J2XGPO0AfJ1zKw7+2BA+6FEGAkyEsdCOLvN9 github.com/gobuffalo/flect v0.1.5/go.mod h1:W3K3X9ksuZfir8f/LrfVtWmCDQFfayuylOJ7sz/Fj80= github.com/gobuffalo/flect v0.2.0/go.mod h1:W3K3X9ksuZfir8f/LrfVtWmCDQFfayuylOJ7sz/Fj80= github.com/gobuffalo/flect v0.2.1/go.mod h1:vmkQwuZYhN5Pc4ljYQZzP+1sq+NEkK+lh20jmEmX3jc= -github.com/gobuffalo/flect v0.2.3/go.mod h1:vmkQwuZYhN5Pc4ljYQZzP+1sq+NEkK+lh20jmEmX3jc= github.com/gobuffalo/flect v0.2.4 h1:BSYA8+T60cdyq+vynaSUjqSVI9mDEg9ZfQUXKmfjo4I= github.com/gobuffalo/flect v0.2.4/go.mod h1:1ZyCLIbg0YD7sDkzvFdPoOydPtD8y9JQnrOROolUcM8= github.com/gobuffalo/genny/v2 v2.0.5/go.mod h1:kRkJuAw9mdI37AiEYjV4Dl+TgkBDYf8HZVjLkqe5eBg= @@ -170,9 +169,8 @@ github.com/gobuffalo/github_flavored_markdown v1.1.1 h1:kUf8ginyBOTRXcKSTPsPAqlA github.com/gobuffalo/github_flavored_markdown v1.1.1/go.mod h1:yU32Pen+eorS58oxh/bNZx76zUOCJwmvyV5FBrvzOKQ= github.com/gobuffalo/helpers v0.6.0/go.mod h1:pncVrer7x/KRvnL5aJABLAuT/RhKRR9klL6dkUOhyv8= github.com/gobuffalo/helpers v0.6.1/go.mod h1:wInbDi0vTJKZBviURTLRMFLE4+nF2uRuuL2fnlYo7w4= -github.com/gobuffalo/helpers v0.6.2/go.mod h1:wInbDi0vTJKZBviURTLRMFLE4+nF2uRuuL2fnlYo7w4= -github.com/gobuffalo/helpers v0.6.3 h1:cptQU8ivs/IU+CCDHYxUxf9fa8R+BvDb+/wvYONVnww= -github.com/gobuffalo/helpers v0.6.3/go.mod h1:mg8qmDCAaJxLQXoge0xHyNsdVqyTPaaLCDWcHTaVhlM= +github.com/gobuffalo/helpers v0.6.4 h1:N9is8xgaotJzGIge1GoLYiWRpKZPqnS9RSty72OhIn8= +github.com/gobuffalo/helpers v0.6.4/go.mod h1:m2aOKsTl3KB0RUwwpxf3tykaaitujQ3irivqrlNAcJ0= github.com/gobuffalo/here v0.4.0/go.mod h1:bTNk/uKZgycuB358iR0D32dI9kHBClBGpXjW2HVHkNo= github.com/gobuffalo/httptest v1.5.1 h1:WwCZrMYVDqkjTlxo7OasFOMvdaG4ysriidJoqcedv2M= github.com/gobuffalo/httptest v1.5.1/go.mod h1:uEeEFF2BRyTMNAATqFQAKYvpHrWWPNoJbIB3YPuANNM= @@ -185,25 +183,23 @@ github.com/gobuffalo/nulls v0.2.0/go.mod h1:w4q8RoSCEt87Q0K0sRIZWYeIxkxog5mh3eN3 github.com/gobuffalo/nulls v0.4.1 h1:k7QVCJfMplv9VRQQLb4N1d8tXUdGvcdMNfp4BfMnG2M= github.com/gobuffalo/nulls v0.4.1/go.mod h1:pp8e1hWTRJZFpMl4fj/CVbSMlaxjeGKkFq4RuBZi3w8= github.com/gobuffalo/packd v0.3.0/go.mod h1:zC7QkmNkYVGKPw4tHpBQ+ml7W/3tIebgeo1b36chA3Q= +github.com/gobuffalo/packd v1.0.0 h1:6ERZvJHfe24rfFmA9OaoKBdC7+c9sydrytMg8SdFGBM= github.com/gobuffalo/packd v1.0.0/go.mod h1:6VTc4htmJRFB7u1m/4LeMTWjFoYrUiBkU9Fdec9hrhI= -github.com/gobuffalo/packd v1.0.1 h1:U2wXfRr4E9DH8IdsDLlRFwTZTK7hLfq9qT/QHXGVe/0= -github.com/gobuffalo/packd v1.0.1/go.mod h1:PP2POP3p3RXGz7Jh6eYEf93S7vA2za6xM7QT85L4+VY= +github.com/gobuffalo/packr/v2 v2.8.0 h1:IULGd15bQL59ijXLxEvA5wlMxsmx/ZkQv9T282zNVIY= github.com/gobuffalo/packr/v2 v2.8.0/go.mod h1:PDk2k3vGevNE3SwVyVRgQCCXETC9SaONCNSXT1Q8M1g= -github.com/gobuffalo/packr/v2 v2.8.1 h1:tkQpju6i3EtMXJ9uoF5GT6kB+LMTimDWD8Xvbz6zDVA= -github.com/gobuffalo/packr/v2 v2.8.1/go.mod h1:c/PLlOuTU+p3SybaJATW3H6lX/iK7xEz5OeMf+NnJpg= github.com/gobuffalo/plush/v4 v4.0.0/go.mod h1:ErFS3UxKqEb8fpFJT7lYErfN/Nw6vHGiDMTjxpk5bQ0= -github.com/gobuffalo/plush/v4 v4.1.8 h1:0vJpTLPTc23iuyDEYftMgF6NYS24R8WryCAXl6kJZ/0= -github.com/gobuffalo/plush/v4 v4.1.8/go.mod h1:504Kpokbl1fT93Y6BtRoVmT+H+kWoqJsAaEDEe0HeNo= +github.com/gobuffalo/plush/v4 v4.1.9 h1:u9rQBuYCeHC0ppKxsZljk5vb1oT8PQa5EMNTAN2337s= +github.com/gobuffalo/plush/v4 v4.1.9/go.mod h1:9OOII9uAM5pZnhWu1OkQnboXJjaWMQ7kcTl3zNcxvTM= github.com/gobuffalo/pop/v5 v5.3.4 h1:VWH74icA8khG8SyWDAq6Ch00jcPiC4n436JMFh0lLm0= github.com/gobuffalo/pop/v5 v5.3.4/go.mod h1:UiVurv2aTKC7MuR27PnMrQjAazoLr8SoC/LuTKTS/tQ= github.com/gobuffalo/tags/v3 v3.0.2/go.mod h1:ZQeN6TCTiwAFnS0dNcbDtSgZDwNKSpqajvVtt6mlYpA= github.com/gobuffalo/tags/v3 v3.1.0/go.mod h1:ZQeN6TCTiwAFnS0dNcbDtSgZDwNKSpqajvVtt6mlYpA= -github.com/gobuffalo/tags/v3 v3.1.1 h1:zXFBGckcXlJo83CF+czXD93VWrPeDMtETBvHAzXHW78= -github.com/gobuffalo/tags/v3 v3.1.1/go.mod h1:WdZd2T0qN77hOWnjpaZXTfDtAYm0CXoJr8n7rrekPZw= +github.com/gobuffalo/tags/v3 v3.1.2 h1:68sHcwFFDstXyfbk5ovbGcQFDsupgVLs+lw1XZinHJw= +github.com/gobuffalo/tags/v3 v3.1.2/go.mod h1:o3ldUfKv50jxWAC8eZHXMm8dnKW3YvyZUMr0xqUcZTI= github.com/gobuffalo/validate/v3 v3.0.0/go.mod h1:HFpjq+AIiA2RHoQnQVTFKF/ZpUPXwyw82LgyDPxQ9r0= github.com/gobuffalo/validate/v3 v3.1.0/go.mod h1:HFpjq+AIiA2RHoQnQVTFKF/ZpUPXwyw82LgyDPxQ9r0= -github.com/gobuffalo/validate/v3 v3.3.0 h1:j++FFx9gtjTmIQeI9xlaIDZ0nV4x8YQZz4RJAlZNUxg= -github.com/gobuffalo/validate/v3 v3.3.0/go.mod h1:HFpjq+AIiA2RHoQnQVTFKF/ZpUPXwyw82LgyDPxQ9r0= +github.com/gobuffalo/validate/v3 v3.3.1 h1:5YLQL22YARUsYS5ZGsPU6TrD0Utiu53N1JJ5qi+foYk= +github.com/gobuffalo/validate/v3 v3.3.1/go.mod h1:Ehu8ieNJQuUM4peDDr/0VapzdGA7RgTc3wbe51vHfS0= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gofrs/uuid v3.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= github.com/gofrs/uuid v4.1.0+incompatible h1:sIa2eCvUTwgjbqXrPLfNwUf9S3i3mpH1O1atV+iL/Wk= @@ -257,6 +253,7 @@ github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.4/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/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= @@ -400,7 +397,6 @@ github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/X github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/karrick/godirwalk v1.15.3/go.mod h1:j4mkqPuvaLI8mp1DroR3P6ad7cyYd4c1qeJ3RV7ULlk= -github.com/karrick/godirwalk v1.15.8/go.mod h1:j4mkqPuvaLI8mp1DroR3P6ad7cyYd4c1qeJ3RV7ULlk= github.com/karrick/godirwalk v1.16.1 h1:DynhcF+bztK8gooS0+NDJFrdNZjJ3gzVzC545UNA9iw= github.com/karrick/godirwalk v1.16.1/go.mod h1:j4mkqPuvaLI8mp1DroR3P6ad7cyYd4c1qeJ3RV7ULlk= github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs= @@ -551,6 +547,8 @@ github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7z github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= +github.com/psanford/memfs v0.0.0-20210214183328-a001468d78ef h1:NKxTG6GVGbfMXc2mIk+KphcH6hagbVXhcFkbTgYleTI= +github.com/psanford/memfs v0.0.0-20210214183328-a001468d78ef/go.mod h1:tcaRap0jS3eifrEEllL6ZMd9dg8IlDpi2S1oARrQ+NI= github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= diff --git a/mail/README.md b/mail/README.md index e60ffbd83..e2779b095 100644 --- a/mail/README.md +++ b/mail/README.md @@ -5,7 +5,7 @@ This package is intended to allow easy Email sending with Buffalo, it allows you ## Generator ```bash -$ buffalo generate mailer welcome_email +buffalo generate mailer welcome_email ``` ## Example Usage @@ -15,16 +15,15 @@ $ buffalo generate mailer welcome_email package x import ( - "log" - "net/http" - - "github.com/gobuffalo/buffalo/render" - "github.com/gobuffalo/envy" - "github.com/gobuffalo/packr/v2" - "github.com/gobuffalo/plush" - "github.com/gobuffalo/buffalo/mail" - "errors" - "gitlab.com/wawandco/app/models" + "log" + "net/http" + + "github.com/gobuffalo/buffalo/render" + "github.com/gobuffalo/envy" + "github.com/gobuffalo/plush" + "github.com/gobuffalo/buffalo/mail" + "errors" + "gitlab.com/wawandco/app/models" ) var smtp mail.Sender @@ -32,52 +31,52 @@ var r *render.Engine func init() { - //Pulling config from the env. - port := envy.Get("SMTP_PORT", "1025") - host := envy.Get("SMTP_HOST", "localhost") - user := envy.Get("SMTP_USER", "") - password := envy.Get("SMTP_PASSWORD", "") + //Pulling config from the env. + port := envy.Get("SMTP_PORT", "1025") + host := envy.Get("SMTP_HOST", "localhost") + user := envy.Get("SMTP_USER", "") + password := envy.Get("SMTP_PASSWORD", "") - var err error - smtp, err = mail.NewSMTPSender(host, port, user, password) + var err error + smtp, err = mail.NewSMTPSender(host, port, user, password) - if err != nil { - log.Fatal(err) - } + if err != nil { + log.Fatal(err) + } - //The rendering engine, this is usually generated inside actions/render.go in your buffalo app. - r = render.New(render.Options{ - TemplatesBox: packr.New("app:mail", "../templates"), - }) + //The rendering engine, this is usually generated inside actions/render.go in your buffalo app. + r = render.New(render.Options{ + TemplatesFS: mailTemplates, + }) } //SendContactMessage Sends contact message to contact@myapp.com func SendContactMessage(c *models.Contact) error { - //Creates a new message - m := mail.NewMessage() - m.From = "sender@myapp.com" - m.Subject = "New Contact" - m.To = []string{"contact@myapp.com"} + //Creates a new message + m := mail.NewMessage() + m.From = "sender@myapp.com" + m.Subject = "New Contact" + m.To = []string{"contact@myapp.com"} - // Data that will be used inside the templates when rendering. - data := map[string]interface{}{ - "contact": c, - } + // Data that will be used inside the templates when rendering. + data := map[string]interface{}{ + "contact": c, + } - // You can add multiple bodies to the message you're creating to have content-types alternatives. - err := m.AddBodies(data, r.HTML("mail/contact.html"), r.Plain("mail/contact.txt")) + // You can add multiple bodies to the message you're creating to have content-types alternatives. + err := m.AddBodies(data, r.HTML("mail/contact.html"), r.Plain("mail/contact.txt")) - if err != nil { - return err - } + if err != nil { + return err + } - err = smtp.Send(m) - if err != nil { - return err - } + err = smtp.Send(m) + if err != nil { + return err + } - return nil + return nil } ``` @@ -109,13 +108,13 @@ func init() { port := envy.Get("SMTP_PORT", "465") // or 587 with TLS - host := envy.Get("SMTP_HOST", "smtp.gmail.com") - user := envy.Get("SMTP_USER", "your@email.com") - password := envy.Get("SMTP_PASSWORD", "yourp4ssw0rd") + host := envy.Get("SMTP_HOST", "smtp.gmail.com") + user := envy.Get("SMTP_USER", "your@email.com") + password := envy.Get("SMTP_PASSWORD", "yourp4ssw0rd") - var err error - sender, err := mail.NewSMTPSender(host, port, user, password) - sender.Dialer.SSL = true + var err error + sender, err := mail.NewSMTPSender(host, port, user, password) + sender.Dialer.SSL = true //or if TLS sender.Dialer.TLSConfig = &tls.Config{...} diff --git a/plugins/packrd/packed-packr.go b/plugins/packrd/packed-packr.go deleted file mode 100644 index 5ce7bbc83..000000000 --- a/plugins/packrd/packed-packr.go +++ /dev/null @@ -1,126 +0,0 @@ -// +build !skippackr -// Code generated by github.com/gobuffalo/packr/v2. DO NOT EDIT. - -// You can use the "packr2 clean" command to clean up this, -// and any other packr generated files. -package packrd - -import ( - "github.com/gobuffalo/packr/v2" - "github.com/gobuffalo/packr/v2/file/resolver" -) - -var _ = func() error { - const gk = "463fbc670deceec4e41bd16a9da461f2" - g := packr.New(gk, "") - hgr, err := resolver.NewHexGzip(map[string]string{ - "0652906dbbddf180108ddfa0b73f1047": "1f8b08000000000000ffac524d6fdb3a103c93bf621f810454a047e1e1dd8c3a409336bda581833687a2075aa268c2d2aeb0249b0686ff7b215b091cc3c9a9275bfb313b9c99c1d66beb1dd47d2365e807e2045a0a551326f73b292985fa7036071a5234775df601efd61ece2e2bef109faa97defd8a38dddadec1d9a59242f9905679696aea2b4fcbdcb6b6a3fdcefbddca9377783433ac7de59889e351230eed7fff57352dd92a5948f9cb3278878e6d725f87140823cc2126ce75828d141727f99a69548a869f16196149d4c9ed468aa93183f3771737db526ea5acaa97e3d77d03ec0676d1618a9056eea50535f5bdc5e615d9717e0ee7bb9798ebfdc0468a6fd1cd00409d96b99462f73d03f58c13c102ba4778736191f1f30cda8cb5aefb062e5e5d2cc1b28ff0e3674c1cd017b0137d144e30cce6b073c83cb8b4c8888ef594127365ebb567cad8e8a2905288d01edb602669472cc1f08cf569577d1b4b88ed88e7cb91ca48e1b40fb7ee511f1f9c7e8b3d9d71fd9f3960e8260a2e65c6fd03a3790869759f6cbdd68e797f5508de95b52f0e18ccc15322eaa2f942377dd26c1644e92fdd98e6d92c32ea428a7daa46af206048ba18610f12636e3aeba32ecc1551f7ddf29d3e3fad7a09aae1a77f39a31affaa125adb455782e28c87e12486c790569413d4ec6c0ae8a10d9d8b400c9c11c7c294dfa80a09a7fd18b97d6c9a2955fa807221b7f24f000000ffff1136ba3e74040000", - "0e36ab770b1ec79ef2649ec1552c94dc": "1f8b08000000000000ffdc5a5f73db48727ff7a7e8b06a2b52154cfb3677496e2fb92aad25df32f1522e898ee3c721d020261ecce06606a29054be7baa7bfe6040525ea7f2967bb85a53404f4ffff9f5afbb01bff5bf9b41d41dc20759a376f8ea1b4ffe1b5a278d861fd76f2bf817a1476127f8f1eddbdfbff852e7fdf0d39b37c7e3712df898b5b187372a1ce5debca21777770fbf3ec2cdf616dedd6f6f37bbcdfdf611dedf3fc0a7c7bb0a1eee3e3edcdf7e7a473f57fcd4ede671f7b0f9f913fdc2027eb7865b6ca5965e1aedd6afa236ab78a315b84e28053d0a0dbe43f0687b074237501bdd84b7a03516468715581cac69c69a7eaea2287ab691ce5bb91fe977100e1a3a121bd84ff0887510f23bf09d35e3a1833f8269c177d24163eab147ed4ff532f64cb1da0c939587ce83396ab4602ca0f6d24f2046df192bff93cf8b722ebde13be1413a3858a1bdd4077e28daa150000f42c11d8b3e5362d47441d61e41d42c2569a11b104a4531c677181594e8c2d1b5d1de1a5581b098fea158e98a6e43bf8eba410bb5e97ba3a3a4f8201ca5ef829c70e01ade1bcb7a0ca31d8c43375b353b3cf96815a5acf82a0eaee47578d51cd156d0488bb52725a40eff5d8137508bd1213d17a5843fb1052cf4428b0392f3e85c37d65d54ac8263877cfdfd14b4172cbbb4cc515234190b57525e07f7b84e0e24a995ad9f60405b93e8ab3fbcfde19a8f3316a3e193a0d13b2f74433e709db0e89244790d7bd4d8ca5a0ab5945ee839bbfc8b195770652cff975d5d975e179a6df2249b91645928e3230ac067b4b574a4c880b697ce71c0739c852460b79c85daa3196d8d2b4aaffe34d2068b2d5a8b4df86bcb16ff4a47f4a691adac05675572b0d4b51ad914fbd183361e94ec259dee0d38d3fa238597e303a1360d5639f7585014131ea852feb7f2305afe3bb45261011ff7fbffc0da9fab2ef4147eb3e846c5f9d15ad3438f7527b4ac454a106f8576f4a44801c5bfa8f8cf160404f3b0b86a79c128e3e49ab5e90749096558b978cd036ab4821e595cb844afdae8a780de8ee484dcedb19102fc3494d7fe6cecd73350381afb9535661ca2489b5340ea748d9c00c174f15abd6810c493904aec55caff02972a42530ac05ac45012191712ba69e3658d19de82a5b0a1b30956bca7dac2164ada46115742033e8b7e50482f0ed63cc9f8223d79330ca81bf90c7b54e6783d5be116ad7c125e3e219041dcea3402e88ccb3688b78f92820d92e27be1c8799a53b1a13328faade90356d151ec2eca856327ebae00036ca43796d2dde293645752146be3639e002ab13736fdcbd8e4e6329ba230aa72e8507bb6be806367142705182b0f520b75c1e7e7789c70aa5da47f05a7e68bd6a3688ebe63f1b16a58ec85ccf98983b01c296417be468f16d5044aeaaf6cb8bdd41c275af4789d9c2eb547db8a9a8b4455d4c86cd433a5c83a68dad9ebef08ca638dbfe8f1d31cc8295b9c970d18132ed5d2ac07095bf88463b8894c244932c136fc96b12f2a5f1549e109f58d164a25d876e3be973e8247e21d1c5dac39ab1753810f621c3fa315c9cb5ceebe592d4aa242a8ccc753bcefb113aa05d3be4c5ebeafdac32adf691565857a9f61d9b4800a6b6f8d9675455ed80bc57174b4f49e66f231ea687da02c288d8eb3a1c84edecdc9c2f677d5374b51c6aef20ca30b9da01752d1cb4a3aefaab264652ae426e7b17725844be746a41252738d8c4f04f753e50b6c2573add2e85501238b2828ac4d766ba4ab47c7559e4fec192f238dfccc883797267c4e4658de35c5636db41b643d9ad1a9097a61bf12f4d9991d25ca854e1e3463bfd4ec2336ecc54824b05a6d8d070165aeae57e7297cc2aff3b55306fe26e5290d48f8d89f1c0a9d70b047d460b14646f2fdb438674e42877f1d517b45c7d6c60e26946b22bc45fa0520fa710d7f215a45c7becbd74fcc0a1ec7505c63ac5e6c668a342b511945dd4161202008d94f81c5312ff8624610c4f006f4a35029fc8ec6aae628896b68a35fb3e79d7ce27fbeae3b610fd4389949283fbd6e2d6205d25a7c323501f959358ffd1f1d98ba2dac880e0e14c7674837c3f930ee95acd544813a283155f32f03da506a1dff128945d9b795343f633193e5b3132f9473c696e0a0bf2b1cf45110e8fe3ff0ce153ed738784a30e75332b2822e3444d73084bb16deebc557aca0134fc82c2f29c47db4695be279061c2a55c5ff97fd60ac0f8ec93810897264850c33e9666482e0a374aa180645eda6d16a0a5626ec8aaad54ac8dec5678bcbeda720a4b46ec64d8d353a27ace4ec6cadd487d4d1a04cb5af4cfc2b770d42198db122d6a6df4b9d593dbf76fa42ba50e87063b5f52692bca572f18823b922d5ba356c5af27fee859c979e623a3bc5cb4350411c04fd99412e36ee5773c1cadcda1ae75eb3c1e81ab519893f857f4b0d029438ba517abaaac2432802c267e5674e70828adf0238ae094171175bed594e3d3b674ad74afee899a9fa0e03155b4662a24ca9198d99921a8d39c762c94bac2a54074a51f25e8a15e112616b84cfc197ad2b1df7894d8082dfafe101cbc9d09a8feec53423db290ad5669089db2cf0e81b2c8f5d42b4111b39f65588236234d2772657e465db1c4af80b4856cdad101b640ead1e3178b9354a9963a8ef09bb7e7a95fbaaeb70d3d1793890bea45ee8372cd6729048a05552dfdc1dd2ffce2e2ab83e9c76127fe2329acedc176786c1cd4ca5a98fa2fe3d0c752c859035bdd41427a17b74c5f1047139a44926b5ee0736060639cb93ebe2648b5e485d25de5cb4f0dc1de8e9ec72c5c1f9c039202acab0b93a5631ba2b82c5068937550599e010f573bac5bb8511c4057d4e2175c9dc027a2619ac5c6398d00e68e99a64ce9071d6cf850b22833fbde8d268cd358156f67f6cfcc8d5abedfd6ef3ee6e051e9f3ddb9bd22e9e4194bb38a7ccae02022e64ca9965d95f85a8d47a0ab0281aee31e7a0c38b66255012526369fe086a8c0ce1227c85ea7bec5a88b96ce18b76e560131e140a47ed5439a58fafccd93a286a827f4a6a8aa4e36cebd9428ba872dfd4e14f25982f82acccebe5000a643be30c95ccc35c01cfe51b5b9d5b5924ae574cb9626f70c14aed49a6308178421b9ce53b699bd774c929fb461bdb53c34cc402855dc3ae0b5d18e1d7b9990b7f337908ad741ef2095534afc45096eac4dc62c49a16b3f95c3644d3d07f5bea77ca882ca424d5a385be2713aa607d279b45e8703f25341d8aba19fb445b1711938025f47fc99da798c6064e430ca12e27134fab608f8107d8f134fe82615eda5b5c34d1dc55306de5617d20002783afc2152424dea354d9586824b1d605cbbdc0e0e7d1de8595511053ec8a4c7b419b6a4e9b969bc5e98556a49ccee5546279747431cd9b1538db562daa7066ddb5e90395a6385a8c6572a772d2092c1cf2076e76e22620f4aa330b746bf8a4153ac74ec3e741c95a52fbcb128b05499e6f4ca72cb218661563ac17475733d3a7134f073981eaedcbe9f3ffa6358b348bd52c02268808d4b549dbc7f0fed6787a296f6fb8beec4d68ca286d0fdcde511961d5dc38a075d8605804511a142e890705761106a41ee796e8603104fe1433843b327cc6ba807806de6c108b0761c35ee9b4f788bb80bf5fc32e111047b058f0e8c63072fa40b98b8d10193e2ed4027d496b0cd1a32b188da386d03ec91a21fed35888311c1e4e419b34aee6a9536c532dfe7594717b4405dd19cd259d5d3a3a6f7a6127d6466a68d0d556eea32b72d3210ff27c3e9bb229f92d56830b252058ea1fd6702b1db74e68e9a9cfc2925da69c0459d5fd141a58eebca9c59a6180bdc8cdcb3c05ab6687c5dc77b3aa57a42b8aba3b6d51cba7a5774be75e83e18ddfeae611368f2bf8f9e671f3988cfb79b3fbe5fed30e3edf3c3cdc6c779bbb47b87f28d7f2f7efe166fb05fe75b3bdad0065d8003f0f962e996f2219579a624c3a6710cf4945c2a9098ec154dc10d97388352dec36bb0f77156cefb7af37dbf70f9bed5fee7ebddbee2af8f5eee1dd2f37dbddcdcf9b0f9bdd170ea1f79bddf6ee317c3e7013657cbc79d86dde7dfa70f3001f3f3d7cbc7fbc0bd5366c0b152aead5dc60b493bc75e0cd4ce80a97e12286c19ac14aa2e77ce116469e9572fccd885bcc4bc3b4d1b9b1e75e25c1b5748cecced432b7c901d4e39e95a7b1e5a2f5bc990db1f78f6bf8904d4a2f7d90622f152fcf375479019f2876498f20431b503cecf41d1a3b15a396b4c9f2c6fa7264a0f1a0e401758dd755de76578b516e9efcfc66bc5f05a2e0a04125f74ce858b98335cee5bd453ad283a8bde3edf8e5fc08e8b9281fc6c23eb94c493e384e04d8b5a21787e50c9fde4e9f04cc1f07b8016b390fd9a4ae6543c436ac1288c08499ae142a094d085d77824c8416840d3b73aae2b956bb51f9d34697ad39668c19c32f52476716b85a4e0caebeb9134f5ad1b59509017b30a6394a55ce0ebf82f36618c4012be6042329de0aa9461baa9150eda86772c345f0c29720b5e97b0aded21ee16074d715c72111f4d3415c949187e9a27992bc246de3e71bcec96884f47143141f32e08f6bb8a9a926901512f2d2c93773a12e92e27347d47d99aea7cbc26faedb120bad3b63c21494279d8b653bcf5c41408b8c271508d650e81ac3258630068de83771dc61afa5cff998b7b72ae90e66afe2148a79cb1b821d62be61d5221d17a9d85f49b758f7e01a7e3147ea84422b990dc6f62c04cff7e32f5ab42ab6219973c7b5080f71e3cf04a4338cb2becc74e62dca8ce8f3a4a808833813a69e49b6019f29e143beb36dda6c9b065bd44d78a333aab9303a17b667244ae43a5b714ee7d1da795b1627c7c239b4943e71885a9dcf8df753241bf38526b2c06cd34ce68f453416b431eb1202f86e7b4b75f5d26770fcf79b8f1fefb6b79b7fff895cc8d382615053fc7ca1fc748ffec6aa1cf32e090076dff942153fa3584e1312ad3652a11d14a175e8e6aab9936f25aac601ea5a1917407f6f45fd15bd83d57ffdf76a6e5294a853b59b523031aac6aeafe8a4d770756bf4dfe6ef058a1c4dc2ffe61ab85be736d57566540d51fcac47ec0e8ab25dec662957dca4bd78ce8b506eea83026bf88c20943360313c1de7a409c5f9d91037ce31630d6d17d3cc2115e3b45adde3fcc90a6f4893268e5e5c0d56f2e09a307845b562b9f98c1fbf909a289cccfbf868b9b477cde39979c8216cddc9a78494f332f19f7ef867308377eb2f282cfcf0e7f9871bdedfc30f7fe637629c3445dbb48ca0aafc2614aee881fcd9e5f59f48446a49080b42058b13f4c4e4a58e9d28a3630eaacc728ac6dfec7960261653bb14cbc2a788ffadaf4e3f6cdedd6d1fef5effb87ecbaf7c0f497f897ec4cfce5e9583ca85bd927ad22d1e788984ff1f1978e2de6cb647c4850a29ce99d9b4b20625f461140784837942ab4f3fee8b039399b2bbf37bad5fbdfa9f000000ffff083522ff612c0000", - "11ccb6bedd3e318a1604672830b46c94": "1f8b08000000000000ff6c544d8fe23618befb573cda73cadeabaa9207cc6035d8c8314be7189297c16d62a7b6d315fdf595033b1f556fc67e9f4f5eb05797e0122e9108adef317bf2dd3c9e29528f142ef97b1b0991066a13f5703e07e42b619acf83ebd087b1757ec518f7b7e0e98d2a077461ba551843ef2eb7ea3e9fae15e64415ba304e6ea00a8986a14288ac772947779e3321174f3fa42b90cb578a701e29ccb12374a1275c421c1122da84f6075dcfceceb7f1569557b4fe86698e5378088e143bd70e05e483ffe9fda65a829f6f05c1466a7d5a31263dfe98a34bbdebb20b3e215fdb8c485d78f5ee1f5ad245f77acd18daefa95a3a69e77c0d7171b59c120b97cf69d053efba36d3e2aec8b6c3f081cbf94c9152391446f686fbdfd671228ced9f8fc61ed42ef8257e193f93a78bcb771b6fe8b6788eaff7effb41dc538e6e249f112e0873c4955c4c6582a5b9eb28a510d322582c16dc7f2473c0b93022fc4d31a3ed0a138b3438ffd7ecd275e1761e13c589f2ecf2ad2895f453a4541e8b9bcb9ce7b26ea58c74f7e6d27b0bb3ef297eae7ec598dd09347a6b4fdc08c80607a3bfc98dd8e00b6f209b2f154ed2eef4d1e2c48de1cabe406fc1d50b7e936a5331f1fbc188a6813690fb432dc5a68254ebfab891ea194f470ba52d6ab997566c60358ae0834a8a067acbf6c2ac775c59fe246b695f2a6ca5558573ab0d380edc58b93ed6dce0703407dd0870b581d24aaaad91ea59ec85b22b26159486f8269445b3e375bd48f1a3dd69d3e049a096fca9167756f58275cde5bec286eff973316298b63b6196b18791d34e2c5752812bf0b5955a95f86badace16b5bc16a634bf6057a928da81837b229d9b746ef2b94e6f476a947159c127796d22a3e95afcdf2f9d888772f1bc16ba99e9b02fe38bc626c1b22c610cb4e959ff3b24815a6e5af06912e14cb0afc72cd79faf9ebd7d90fae239f6815e2ebafecdf000000ffffcbc5d361ba040000", - "1614cda23f5488b474a44a2db5ecebac": "1f8b08000000000000ff945b5f93dbb6b57fd7a7c0eccc9dae6668c6bb6ba76dfae4266eae67ec4ca66e9ae923441e4ac88200038092d94f7fe79c038020456d7cf3106b25e200387f7fe70f3fd9ff2aada5f8793c68d5888faa01e3a11267705e59231eebd7bbdd432d7e804e191594351eff7ea8c5ddf7d604a70e63b0ee6eb713f85f0fd27801b23909655a7556ed28b5b04e68384a2dc0041526114e3288c6810ce02bd12432e045b0229c8069d1037804db5548c25e8c17dfdb333868c567db858b7450e3611e978711ffe6b32f0f154e201adb1f944954e9abbc0e6f865fda7002e7c5bdea8434d35e8c1e5a7198846462e53ed2b47c9741baa09a514b57fefe27bfa04e477d2a8f7a75c6f5edf03cf2067522f786c82d172d497eb6a36bf09a2d887f58d7238b2f27d59ce8f62452a917b73a492f6408b239413b4bc3d8a01a5c20de7f39a9830ae25d4524de7f81660cf2a0237ddb093f36a7ab8d2b6417d3fa645bd5a946669edf58a00cab52233deedce8b155e62806eb580f89188a0b6c47ec785b8bbb0fa6b1fd2083c213fdaac2497c86c69a56ba2969b7bf2b3814b9256b16e5d7722531a405df3875805628c39484c82cfa7b54e82bc1fe4d5817373e141b5fc9ff22bde8650b429ea5d2c4e4d1b4e0e8e900ae47f6e56d93cd3ed40f6830209d56e092a667d33e8c014f2fa4f6f62572f29a73c4e56f6b71b792fa52e7a49944177501295fac7b66bbc2ab9a2b4913d53fd7e2eea3744770e257eb9e571499063b0e3262d8b0960b4a9bf7e96500a7a426258aa6eb61904e06109dd2800cc27f7dc55495279e6cfa97bfe0d198016b9fa2bc686d33f660023dfad7fc28f266f9f4499e517d91234e1d4f0195e3e8a4095552935e7e51fdd80bf812c0043158ef518d2b7139015e2baa2a2b4b503d240e278d257278353f1e3cfc3e82097aaa4820e8aca4d6710553a26378f4c06798d8cdd1954a693fbcaec5ddc262af851d4fd159aded4599e377b351912e20bfd5b5dc99f30efca883179db3bd9046c8b6a5382382adb22eb6a081bec4a7281cf4c591d20130948009e4535e36393c9681cb1f1c0de949152fb9a91a0f18087f9624aeefb554bdbf63a75df88eb86bc1af811734b8e0deefabc2b9a10edb3108ad7a15e87295e8219c6c9b983138db80f7154b74209d1e3d13f3aceff316b32ea270d1cf462aa56fa3bb5eeca85b71406e744e9923b4ec293acbee21aad6d2974462a437a8becfca1c2b317afac783d6f4c1761d2049a2e5252a74b405f46d95503dbaf4440cf773d2f88e5d1728326815fc3a56afbe9c033f4b0651c19503bb5b0a2312c7c3fff8d32fe24730e0a4be0243ff9ec150951ffe08de2793fc8a950ff3ca77c80fbb5a13095dad7cc23d096c4c42a3574b6edeb330ac07a1635ce38b23c658ebf3eade6cad2b0f3d38e8c0a18aa39c58980b338bf41174fcc78e77e2de3afae4eef66b1d5fc13fb90480f0055ca3504b920b4a6148f9251f6a3c7db958a1c7e6edd968804d6a012d5125ac466348e4e2579a9c1cf153a54d1bdbf7d6a4273888fcc78ebcf330bac17a88bccee4da8c862b711757dec5cbdfcb3df174b0177095689583867c32b2043f93bb6fe4e8a317a6a7f927f265c87b238f804125a323be5f8e046872b4af24dac974f0a78b42f5b14edc1ff6089ac1f9931a90506f1d7004ee54172631806b708ffbb7afff67bf080cc28ec10769c825f9937440f67600039d6a30d22c081727ac77bbdd639dc4277e44afe1c9557d6f4d9b1288474c20f8b7a839ef11e82d001738384cec763c0a8441806e5f5d143a0d6727a9c3f4aa7390fc90b1e6157c69f4e8d5391b45118b58deca04d01a9a80ba39383b800b53d2c3fb02a64417cafea8855ebae77d0e48d78e75e9522d260e95703038db8e0d546850058e9b431b59d8848ae2072da70ac5d211fe6d958f99113bfb2c5e015f066d55400798e92cbc63955c9bc5702046c3768cea2fbdf215abf922ac57b31e09213da51d1ccb0a58f63742f1398c324717f12febc38a1d78fd8a998281214605743579d31c1a6019185697cfd1610e0ddb4c7839443c62def8beebd0ecce207e9001e2c5fe759a5d2a2b20c17b84c3213a73e69f033fa071071b11c2bc79641134b6070179978e7079c91d3279c33e00c1e922292590ea7c606ab33ef8158bd38d9ed0f21270f048978c4c7c6eecf047b723e497af28a4e3b358a3b375a4a749ec29fd2af0a2f8c966f826755a850e3ced77515a13c8e8078dda48a02fbb9d7cc1e8077919faa00d4057c48c19b012999f6c40f1640756c80d7da23cd83354c2d864e1f1741812d20d3713fec29574312237186029e8c8ab74d1416fcfe98e2fc3d18ec203e3ae9e102cc5073cc777e25eedd1ff71bd81e076f451cab564a5d39ffcd29b94b9f57a630e0d4aedb72a22b74da9c8ad7c12c03d7c696008a5b358995b2616cd6e5f5cbbd9761f197ea20cae64aed852e4c18369a0cc56af00629df57d5610d15ae0448fe12c72336a69a49c5dbd473fe5ce98e3f39fbb844eb53d5a62edc2e691ab333f7a39a19a1b40a88ef81343beed073d112773e92295111cfc3e2a17655fb89aa7facd9e2cfb4d2d3ee79c2e17327649e117e74057eb4b438c41546222cde9161e9f74aa3959dc3fd8b58bd92e48b0c464915fe6aac30221257edf7b807c9987d7f5e31e39785d74d82a36887b15c53b80eb55c89e67b97266d513b3ea6d2dfe0983030f861de12d88e1d253be2cc1ccbf1f402b38839fcd626913a490e4e0d451219f53c9f2deef39f6901ff06387a0097915752d719b95301704a8fe799de8bc909e3fd6dfd6e21f5239f18b872d7d8f650dc43ca6851637a0ccb2d47cc45614740bb72e8741ab86e04d638789eb15ad6d82a3d28bed4487bb5238a74f2dc898ec3976134c07d5fa2c35f2988efbe77a8103e99928402f9e30497aaa1ff17f4f1cf59fea37c4e6262f4a29cb46085b90436f8f60f409b5c10fd67875509a1208fcf2a1163f2ca24d976a00982ec593bdd37a159336c2d046f5a04ce8a599b6aa9ea470c879ae830b06495c99a5af7355bc12fde8037a9345d82d2c6019837135ad5086523c078d1ad452cbf9c049a7dbb974bb69f41817f13b937470b5f7c2e4596e277bc1e726d14823ec214865842455ba716039a1a2a60257807e6058a531e3255b453134d15af295feb472df85249856ac2f3e21d85b0b7c55c48c42ff409eb1f4845b225f97bdc3094c810f223c5bad23b150d9f500ebbaee961a9570bc2c34173eef81f9fd82d017799db83af8cb92daaccc8bc394c93990de1a22c7e92f2d0faa073d611e6b30072678d49c308d40d835e7a10c4112bec5f0da2d0d2e1646f37556f947529d425874e2f52537c24691cd17bacba5d30c08435cd92a4c56d083d3fa0af3c6b322871a4d2a934a6b53dd6c7d948c400a2d67978c9092d4bd24f755aabebce422423c614eb056fc454a17b9995819fd112a55c1d5c58ab45362650124a2ca2ed943c93b6a7d8180a2580bd4b3f20b7366b8e5936a3453aa4416c7529e34778168e3c2181a169d82d854285d9b35c0b565071b6da32a76fcb2e3bcf69328d8afe940551b5889510ec7e3502652fa5ac1d77b33a50d3567035eef4f45676fe78090d52c43ea35737b3955b1f5a09cb00317bfbad1514eb08d1b575cdf385e2ec01682271b2c4fbd60d3bddf935abfc16c13b1b35f29308a8053af854511640d92b306aea6c6fd4c244354eee7c83d039ff8449512c6fc77ab3cd5ddc1d16d2ed2211899e6528a2eb3f14e682509844cfbd45b809694f1964d97cefb3a938bf9463632bc3e5f78e37e8be67aec304503245c8876d84ee2d9d88b119de4fa9832b26946271b45d5e52704d7ef181b260b7b37e719ff42b1aefdc9c95a8f0906177ca20dd9140ea4e8806cbd2ab8e7c7a1e80828d3426f5498b824103928ec41ab6342537661bacbe8b7a98cb5f85f7b81331e2807118b2641f50e6bd8a9212b0e7092bae373a36ecdb51dfc7e230f2c2018d5fc106d1fbcd563c098d86890b1e592a121a9fbf5f5e79b57b7ae8e3e87f84afe6be6bcd4d6c00c0d6231551e1d902822e16e12c88265161b4b1b497fd39eca34a3e36daeeb7babccf2ff2949f606784ebaca1cd66385bf7085394bdd323bbaee2d8b137e80060178acd631a5df46a77cab9a58417b538b0f261f0bb36a0a583f8cc4b5cf418691b1fa3fe138ea39b9fcd0a19495a78a25376d898fd1959771afe8976e027824b72e2e7adb4767a66f82f496cfe8f98cc4f0dfc63616eb5d8b8a4e303a9d9b106bd6d4efa86db18ecfe548c0c245bfdcaf269046ed87045a93e329851363692aa1c1242495496bf119d58b975298c909d0a065c300988a7301be84d4c1254569238b57699bbfc9b49c512d3392f7d1aff22dd3ed9ca5a98e6802b32ecc3c25aefb5ba79feb0018d02148a563af4d2ee22f8a4b9918f7fcb3d21a4f7200412032c4990daa6e0a15eaddee6d4d9e37a21efcfba1a632ef56d9762948aac786b818841c83ed65500d810e45d08e0da5934adf5065c42ca429854fe5a5a9fe4d8b9434c90f90ea85af3a204f05dc98818ae916797c655024d0922213fef4113c5562341a3c6bdc6882d2570e2c05450c6c0ac5838f768ab157668fe7a0c0d5b42a2b39b758ac395a658e31367093456db442909114b0302c7753747bb116685e25563590fd3959ff559e3538c535836f5f8b564e5ec80e037f2ee610e30fb27916caa47ad34cbc169fac039be25fbad4cbec16196816ec5edc9e2fbe796fbaae025f5c78eeda2d6ebd7d6146cce863a979ad9c0f3c02936e9c4ed6803a439b0aabb65b6f10bddb5ac7e6d988e2d473045d6bf2ccffa735ff1d1f6288596d162e9e87acf5b14e45069edb0920b40a29a2cba344e6965d6d0cddde830b54508a283485d4b96bc0332054868e10b685464b278375134683233d25b9dc56259d184d00f72acd8fe0851b67bd8fdfecd19dc2912797aefa1cb1ae9fc2b28306ada76876a31b89472c675faa9b3e20e92a317d5a8c2e151bfb9c5fdf2851c70a09d37aac1faed24b7f92a5eb23c13c61f8679f7f8ebe38cc8e7549d98bb73c66f7b67e4c2d25a408e864f26048c2e084bc38cf2dc59382145e086fe9c083d6e0fc3e9602c9940f00f12267a955aba7b24d45e614f56e416fc399269d8d5eb8b81a73c38feeacce50fe52ef76df520121022ee4c9af116f11f4d9ca8273fabf7106f61777124df92e3aca8479ec1866301781f5b3326dee66c397c181f7d056a983c8251b0ac6d64d44296770d5e63455dc005dd1edc14b85ae10c8a7d84eb480c0c457a207d79ca4a1724e253a1562f82efc659c1811e4f2ccaba8fcca1ca9398951198d1a4396f2cf089c23caf87d94843a510de204404a56b74e4817f5c5b4cae7130d706d4daa913c20de02e51b67c422c224a6a11add53596a99ccecd1f38c3de4525d92cbdcdae23619f27b470e78908ac166635d1c6aa9b92bd12ed4284bbab1c60715a8af2d8d40019ba018eca7c6e2559f79f4c49bed0b2b8f50e6649dfa6fd9ae5e28624c9e0b159d8f57ef767f2e5be9b8d3c7944990daff42cb8c158d72cdd8736521418cf8138f2d8513a066e6c99d605d28ca0c48ccc051ab239806f6551eeb995b293cd1c326ba124f1a0dc3ecf77222c32ea704ae18237dd14c8b5eeb00942531b6443d2832c034b134cf2e511ac583b58d6ac104fc4cc236b1238819472b7b7984d425454a98efcb26d000ce8bf6999676d46af504bc3b85d6a7ad4fd9c8d1da16b16bc5353c1fec30c8235414a047dc0571d6e8b8262075379a86c9c7c67d8c29bb3435456360e09ac5e1e90054adc37890610df5dca33c160e9a8bef088aba3802e663d7692ea647e2d122f442c572b24ac89fe893490e08b9a94e9c7253644e0b329cf09003384ff517657e1bdd1413711ab874b6cf39491c1528b46d95e1144d3f2d2f39e1f1191bcda7adc567844365faec456be35cb9e69e8288c3586998a3b86af4d351816eea4f2c522a5f905a26f9a297c4ad059fd021ee767f410b4eb08a8cf61d55c532d27280691b021bbb740db17b7f70763c9e02978454ea568c8ebbc154472f1980161e8766d0d59a1661622f559c2146460e0e2f3d48cda96c64c461f4caa4048544551c92d5e0008b3ab5969798d4cab05b953166aba279ce2467c583de9d564d7865bb5751c29c26792aa69ea23b5a0f03f11106c7a04866452a0a25079aef2d71632c812ee165bddbfdb5169f946f406b69c08e5c2e5cf4ac176df908b92114180aefd18033699ade8f87dfa02146f432a0f1c77742106613e64cf7bc4281ca8b13e89613ec1d95d0018db8010ef16c38797916868364e986556e362376e8c5dc472a0216846b56457959d56418f445f8e4b378a9df2dcd7194c7f84e509efdcc27a220ea4674eb31812045749c96646742fa06fc5613a5f3bc6ac9959c82ac5e38da3dbcae13e4f7ab5970faf1a1163fc1253f92a682d34b66ffb0a36973ddb2e8e20b1fe0225d9b4b2fb2009173bf33927b785d3fd1fc16d57ce781cd0d823480b178e382c72de759c7613c68e54ff436c072b27a511192cd294fbaa421b6a3c2a810e7c428ee2a731c95473bca0f9bb13f10a078783d0f1ce2065b8cdae867be90e3ac6a8890f6dc8932f14c42e535f384419a5ad1d39c346f6d56cce56fcded98696b182872751e18d0737513e351143771e5a98eb311d05e31e44327a67948224f9ed104d76224611616a7b0b8ea42d33531dbc98d4d9274d9a5251bf7b9a9325d3742116b2631e741dad5dcd3ec52f8c80e8c8cb039278194e1f536d52a22088f4e3a6702b46e39e592d5398d9871fd08b28748313e9f2e2de4ceb54f8396f339f7ccfc376577d81c6fbc08a3fc4b5dcd7880d4db4cc58db9f353a8f32dfa49de5fd13bbdd5cd2f2412a92d5e7bbbf1d25ef1b2de5a92b1709b8415dffeab77bbfc0aa478757da1b49abb93499129c25d3dab7c0a5e8beedcd2aa6fbea21bc75dc563fd9a435d316003e2d3cf1fe9fdc13c565388a12daa609dc240470293d975f01c08fad7ac5fa71086efbef9a6e7d3d4d61dbff9f4f3c76f1eebd7dfd4bb5dee80a069e61e08a154af5cca2e86319472a059912277a6a3ece6c644d1025aafd2367620ef49efa901f5f1c3f7ef7ffafc3ebfd425770e349cd10b70f662ddb48f28ad2cb9e7579fb47a8688b4ad7d9e9d83dce5ea5d6eb3b66d3961c95dd230375b6d57f48ff3cb1285eefc5dbcfaca9755bf569316d4e2c3b768563c52d42953340eff40db48cf76bbff0b0000ffff52ca028a323e0000", - "1bb7ffbc87c10d18914f6951d39775b5": "1f8b08000000000000ff74904f6beb3010c4effb2906411ef623cfe6d15b680225f45a424b7b293d28b2ac8858925949b9847cf762c74dff909e04dad9dfcc6c2fd55e1a0de51a22ebfac009050180685d124480b89d2d11fa14ab4d978df59bbdc16c555f7e9f7681d383741ab39518f4c6a65dde562ab8da846d6e5bd9857a7afff52323d6d3fb7321f6edff9b5a852d4b4125515de3a039dae0d7ae01eb9e75d43e45a49dfe984005e7a46fe820f9ab7a893f23a85a9fe747029ea35e0ce52699981330165840a8ccac7dba60438beb2587a5c7ecef1768b35785720dfe7e739a43b289787d8b89ad37253473601cc7c3b62e551bb63e75be10bf185c37ae5ecec9ca91c33a65f6f0b623e034a713d11007d6db5494a3d955cada35d55dd34c518bcf839574a2f7000000ffffc4af3d5010020000", - "22ff05a4b44a03ae13723f6a9efc10e2": "1f8b08000000000000ff94535d8b9c30147d36bfe222bb30d246711fa5b67469bb14da6ea11faf2563ae9930317193280cc3fcf712b5451d0bdd9761bcf79c73cf3d49bebf7df8066f4a88dd93921e63f2f0f8ebfee39750128610a99d674a15246a5975b47724bad98d8804a61e50cf84839b7390ba00ede1d56d09a6f52ebdefa4e25f993fc0ed6b1235ec88e0253f11127e0b226b7c825d10ccf3fcf3e3bb1f9fde272f8d4ee6431ac3470e2a8724c2ea60c01d65db4a2d4098595f735913c2b175c55c40a00721fda1dba795693261f65d5d3365328b0a59d0fc0fecb07cd6df65d72904ce2a010f6996a6e962e37d886233c6a113625b123c3abf890f0da095e9d1ae065f4fad24dd0ce41f86037e9abb9eb7245856e11f8e923a108469d0b3f0117cd11e353776c400a51c195752639937406938c072406aa61686bb96338fd77ebba58339e76f4463099d9ffe4ef773a13f1dfab3b7dcd0281626a622d0d370fd650dbbe109fc44eba4d11fa4c204ce60d17756434c6b885fc01a0197d543f91d0000ffffcdb4d8109e030000", - "2669267df0f493b450bfe1ef118aeef9": "1f8b08000000000000ff5490e16ae3301084ffe7298642e10e4cee05ee0eb6f63a5e70a49c2437f4a7db28b5a08d8cadb4e4ed0f3957dafb2569b5dfccec9671bc4ce17948f8f6f41d3f6f7f218e695e3ff87ec2edefe2b342e734c45c5bad767e7a0df31ce20929e23cfb024f71bc14788d8770bc14e84f871f71c221cc690a8fe7e4918630638ec7f4de4f1ec738a13f5d309ea731ce1eef210d88d372c673c2d17b8419839ffce305cf537f4afe50609ce25b38f803d2d027a4c1a37f8c6f7e31bfce708a293cf9ec7f751c3f937e7c8d631e2d9cd0bfbc6432f879bd5ab9866175edf6641862b133fa5e2aae704316626f40aa426ea2ce35daa0125bb6245b0b6a5becc918524ed8622fae81e10d990a4ec33562bf08abb2ed2a519b8592edae15aebed2bac6964dd990727427adb887c5b816a7d8da35444169f03d2b07db64912f99ee18add05dcba8b501a907d81d97426d814a0c97ae80a88f9b3628b5b2fca763e5845a54b4a54d8e70453f9efb869cd57ccf06866dd7ba9cbe367a8b56db257067b940458e32ba33ba16670bec1b760d9b9c9814a874a255ee2eb572867202c59b5636ac4acea05eba9d364e7467ff0105c888cd8eba7399d68b60a995e2abe2b2eebc83ce2e323b36b5365b5a54ebffd7bf5efd0d0000ffff99dd0362ed020000", - "288df37e7ab95dfbcb9550200ab31180": "1f8b08000000000000ff9492518be3361485dffd2b0e0b0bbbc54cdfbb6d41b16f628163b9923cd93c7a6c652288ad202b334c4bff7b9132c364dba5a54fbe58baf79ef3e914eefce2ede331e0d3f0193f7ffc05ee1c96bbbde93d3efe9abfff61977074f15fc64e27a49605de2cc63f99f12ecba419ed12bc7db804eb66f4f388cb6260672ceee20793fe3cd8b9f72f38383f2d399e6d38c2f9f47597904d6eb4073bf471408ede1b9c8d9f6c0866c4d9bb273b9a11e1d80784a3c1c19d4eeed9ce8f18dc3cdad8b4a4a6c9849fb2ec077cab68813bbc4919dc68305d96006f426fe734af7f704ff1e88dc7ec821d4c8e70b44b069cec12e288db65f3f83725a35d86536f27e3efbea7c0ceb704de149cbd1b2f83f9371119928cff2b02afd646375c263387443643ecf9d179b870341e531f8cb7fd6979679c1e2635dec84f8e1a6353533c9cfbc94431b1fec3f9c77eb6bfa70d7f6276ef5712781b22c3c1cdd771ce2f98fa173c98189211c1c1cca3f38b8979387b37b960700513168cc6db2733e2e0ddf486627187f01c9ffb353d58ce6688f1c1d9db182a1f83335f23b42c5703bae20a4aacf58e49025768a5b8e7259558eda12b4221dabde49b4aa3127549528135250ad168c9579d1652e10353e0ea43160f58b3077d6d25290521c1b76dcda9c48e49c91acd49e5e04d5177256f3639569d4623346abee59a4a6891c7a5d93fdb20d6d8922c2ad668b6e235d7fb2464cd751377ad850443cba4e645573389b693ad500426292bb92a6ac6b754de81376804e89e1a0d55b1bafeaecba8fd1b8f2b42cdd9aaa62c6d6af628b9a442473bef55c14b6a34ab73a8960a1e0bfa4adbb666729fbfce54f45b478de6acce4ab6651b52f8f41f485a298a4ed2366a166ba86ea534d79d266c842823e84c91bce705a92fa8854ab43a45394aa6595adc4ab1e65a7d89f5aa533c41e38d2629bb5673d17c462576744f322b58a7a84c744593acea8a84dcc7a19141829f635791ae4846a089148b089496bcd037d73221a185d4371ed1d0a6e61b6a0a8a6a449cb2e38a3e8349aee2057e5dbb637b882e598e6fd429ca527993d83cbd24f81aacbce751f6ebe55628c55f7392901515aeb8efb2bf020000ffffbb5d62f6e2050000", - "37e6217420675913821fc175e7dd25cb": "1f8b08000000000000ff4c8fcd6a14411485d7759fe2d810e906ad21b88b8e9b210b3722a80f505d7d7bbab0fea87bdb6408f3eed21367c8a26a730ee7fb6e75fe8f3b327c9a8842aaa5297a32dd9cb423d315e9884c770cbaaca3f525eda4cef79f76be8ccd753410ed7668a5e8214d685c1b0b6715e8c2189d307c49c9e5094f0b677817234f780aba9455e1f209b28eff2b427f5dbb6dedf1fec2b087d7f485cc6fe10700ddb8ceb38be5e397bb3d4a55b13f97d2f4bb4b8cbbafdd073a5fa41e9fd9afca70d3247031c22f214e571f81968be4c6bb496e4f580573744781abb595da82538e27bb8dfe5a8220c8f590f184e442b6dbd70f16df1425c71332f32b6171b57246c99edf020f69b234afd95f2dfb012f64c20c6e0d0ffb5be9167fbe24eff6c8216e553327b53f5ac81a73cfad0d644c11fbf81cb4bf1fc89ce94cff020000ffffea1157a3db010000", - "38ff45a61f79481d5d34d8d9f9676c34": "1f8b08000000000000ffc4bddb931bb7b13ffe8ebf02b52fd65651b46527ce499c4a15b54b59acb3dadd2c5776f408ce80248e660006c02cc5fcf5bfea0b2ec38be45f5ebea93a75ace50c2e8d465f3fdd23cffcefd7fb8f72f6eeddfce941fe3abf9f3fcdeee4e3c7b7778b1b79b7b899df2fe7e2dc5b52cadfb40fc659f9d344bef9abbc772fba5f692f7ffce187bf08216fdceee0cd661be5ab9b6bfca37ce7b5964bb78e7be5b57ce706dbaa689c9dc8856da6f2efdb18777ffbfefb75584f9ddf7cff0f21e72fda1f9cd5d204b9d3be3731ea5646271bb73b48655bd99a10bd590d51cb17ed572a9a1e7e343a08e9d6326e4d909d69b40d5ab6ae197a6de344ae86289badb21b6337d24418deba2855d7b9bd6ea7e2d296f17f8f5eab7ed56978ea79ab8980ebb5f64efeaaadf6aa938fc3aa338dbce3894d904aaebdd6135c78a7d7312f6aedbc088926b02317b7dacbcfc6b60176b077fe7398c8b0d38d599b4675dd41b63a988d254a681b06af45e3dc4e7b24a7dc9bb89571ab65e3fa7eb0261ea4b1f40715340c6a75847165d0fe457b99e69fa62df1e202ac4ef62e447966893baf9a082ba2354af835ad4c4427a3faaca5daab833cb8c1e3fe5bd7c39ac3368d8487a0716d38c854cab707d9381bbd0a7122e0c5f344a5f98c8ddab64489cda0bcb251ebe3f9c4c97caaeb805d807d91c84aeebcdb78d5bf7e1d9dec61e14055600daf7b656cc0e1ca41015d601013831c82f60149f7fb565bb9d77058ea338c0b2f65d24de02778d9ebb5f61e582fbab4cc0930a0d879d3e8a9940fdfd876cd0065b571ab22ec5d6cd50bd1b4a2797551e87e9cac4fbe620af90db165dcea5e9a350c29f7266caf27790ae975a3cd0bbc3cf806866cb5745e36caca8d8e78a7f045b15716fe59bd0acf54e79ea7771e4829774637b43a18c44aabf702d7c9471426789279b8cfd6edf3b8ad8331038c6cec864ee556bfe80e6e47a0976092aff1d5cebba89b485c84222c08ba527b2743d4bbf037f9eacdb55421681ff14693a07376b4215ae7ab1fafa503e920608d288f9258d86f4db3951bf3a2036ea0d31bd5919c0b285959d04daac313cab6dfe3a56ccdfa309a0f373b934137ceb6ca1fe44a5bbd361148d9eab5b62db01c702d72ec77993b0c1146987ee7418a6b1b83ec550bd74baa2e6a6f15c9d77c61605e3e8f099c74dcea83483cb137ad0e3baf550b334de44a37aed752bd28d3a95547b78764485b9d8d13c636ceef9c57112ec107650ff50327fc0affb7d5ca470d5741d95668dbb8c1ab8d6ee58a88e37518ba081baf24e454caf76eaf5fb49f1c49c672c387a05b38d1b1a80c133a421a56f6ea20d7ca747452b0c7951be25424b570411f902a031a7fc623a1d334ba4d34c6cd743ae2c291d634806a1a1d025c0c7826896f604e3744091b925e775a05d26b41d4d733ba6aa8e9ff2fed95e5cd480d452748fb20fb2029c3d06c919648285d36562f84f821148610bcb4acafa6522e40f4fe7b305e07fc8d0e0f1807c4f591028b4e00eb9a3689944a28adc70b4914f683b54c5d9f6823f062d02b2af2e053a493d76b07579a0f62203d7a7a7213e9ac50fc5877e01333c0f534dc842ffce9a9321168f1e26b8ba79b6ea5eb5aed93b29e483815d0095bfd8d1305eec2b9c3966e0a3d3e917b1546ba45358deb77f09c0ca6379df272e3541790262648138492ad81b7b58d6525684c6552f32ed29a1eefc800e37f6f5510c4b4708941dc5f7e914566ba3f5ed38c708e836d35a8ac62ef6516df79dd18d009daf781cc00675b135198812c02216beca692b3e90e12e51bb2abd60eecc3cbd6e1f3fce9c352ceee6fe5cdc3fdede279f170bf84877f98ca5bbd369666c4f7af9e2b45704516017240dafa4f69f3dfbc9f345e36b7afa4ea8293bd563614ddf4ba339fb5ecd49e75a0daedf0021f599b22599b708d559041f70668353470f37a153ee7e56bf948f2bf5e3d48ec3c278a7abca57c202d1d124a5091562fe55c35dbf408d9ca6deb75407608f2eae086aba99457fc820e5778325770a83b03baea0ae5f00ad4556b5e4c3ba82e8035e1fc4659f31f55c8feece41569ce2ba9686d44a8e452acbdebe155d5aa1dfa03f08f9df2311d07bc23402dcab50a5b142428a548c3244ba0e8f00953386e15291a96f9203cacd05f5443160449994a5de1e24c48975af1c22b2970c56b125af9ce801e805760f1f45f572b453aec0a27ae9f6253e1aa712fdaeb16ff76c5a4d08617ace560f39c7cd8d5f038ba609b877fce44de79b7531b15f5299d5b6413b4cfc8533191f507eb3151536fef86ae251b174ca4d678ddc4ee00eb48868ee90eb233c9b010c6aee134d08c6186036e370d3e51cea853fb89d45f1abd8b527fd1cd10d91984ab2f40ee0d510313b1ad459a7ae7cd8b221b1aceec91f7098c606cd30dad0e599c88913879859b75455dd7b2e57a928d816c25b14e222541c624685830331a37d8e8d188c7c30247ecc544f8830a72afbb2e9f44e3ec8b3e6677b8a770e7818376d5165036680bd3f3d002981fc64d9e86f3d9f6273f022c35cdae187a84c903556867cab8f56ed86c859299a6acbde9c4a575327a65c35ab372279b977d725abfb19ba4f4f23c2f9a26c03fac55a3417cef3a7508f26ab6836d790347758766f5bd8ba6d1e12ad91afa4b0406c11da3a3c187a768460b920569bef3ae37565be0ba1783aa5cacb58ad9e3025f20cfac2c705b9ebbb09bc5f9b34f20a2ee3ab202984a2ab22d821b977be5c19b3da0824a9247be628665dea837c12f187611d91e6a93d396046c40614954c53170dc2298935aa1956edd1eb592d17b3e981c5529027cb10657b13a879dd7019d08253b135076e226c1be53a869bc743b14cb45d728d16b3b4cc817278a4b13c10325118323f55ac740f337de44ed9335f4662a9764f5ddb8b6a8feabca14bc22af7d248ec83a00775cb7f0733f92f318fda06b595f56bc0c2682527a58fd9f46090ec397bb659d7dcd765c1a548d04ef322a105dad5c24a295d72b42d27d24816cf037b75e9bc6a84e8434420ba60599710aaea6db58f31fb0b8f9812057ae3d4ca43b7576f2442119f644053803b8f6cd00161ffb793d90a1537633a88d063357b3d718d0e1eb0ee432a9ded94dedb6c1b651b2b278494394335a1e029cf39d59790542ed8ab4234be56246f01dcdea8375abc8ba159f025692fbadeb3473fe2b750dc4e3b7db4404eb7cafba74e862a79acf6a4342fe83fa3fe7e58deb77cee67821999e2c958a49a0223d2eaac7f18eafaec9e20fd259b2b548b026df212f98c3752a8a9379e1ea3b69fa5d47ea4cc953c6c103a3c5292bf2b3ac93c28942495e07ea92e227011da652cec4d5d12aae986de0ca391bf5973849ac2a7b7c146c351b8dea50c2e34be2d567edadee40c4dbd6ed65c03326d204279dbd4e34482e257b787002f4b07865800d0ed7a091698324b8c75ce1079022c8b430bde9b4274e24a7b01d9a125fa4e7ac74e5dad26ddb791dcb7b30265cf0cca137ce7b1d768e4228246846e2c48cc744a66222759d38f649add6296689267dd440e31055d731f3ac699d65af28a6af7161e80d57936134ccd51121da2a313cd2b3f1661731c482a155d7c9b875e00866bb61141289b2759a183dddb934ec77411c5f57242a6da47bbd1bfc0e468ece9111ce3f802b5ce23f5e6b91c279897753cca5323a8d054b1a88499efa78c9702b4579797c2d69b55329df01837e51702d26f2dc398aacfa2b4322bb6b726d3ab4aa826b40a3b7745df934e9478e9532d92938a98f2f1705bd5bd925b251fae260554fe114d119fb19e4f6b0caa4495641f6062ea60138563211499dae0eb01fd38315d2aaa85270857d59f47a8915d69ddbcb958e7bad2d1159d46ba802fecac730226fba20e7e88a5c3ee2a16cf6a730ac0fa251e041a56b20d5105daf226f90bcb1d3b947d3099aeeeb6b195fd563b99723a041f5d5ce7e9ccab72a98463e668784dcc859d77160586e30e5d09e31a09029d3cfc9888b9ab4cd49d0f831055381dc98d9f05ebf38725a922d477c15810d4515c280c77b1d535026cdafbf80d763c06e55ebb5f17da090f6603bd31b18631c6a4eb2e5d4eb63e7d40d7137443a95143e034fa9f890e8b0f2bf31005b2d07b520858a79240a85590c54a26a0195d7381ba28943645bbc0c7ebc3fd57cb66edfe97643f1732ff84cdc5aae95a16c428e34c3fd78511de9e75048ba3a8c7d423ce04f6e4033193c9e0912863d01726a47cb0a2515d13acce290719dfdd93ada149cecc03e527c16290b886bdc9ba053be49180b4c83d9a0b41a36da8f26e7184ec83c161cb00cc961e1d672ab5e38d0d9930b37b665f597a61b8279010b0e8638b801257a0aa862120764de5a35a623c90bcf95002a88650e1c559c9ab23daedf7507a4854837201c3b117029b3a3876117905bde907dc61a82282cd82944d1954f0e7903f5ce76c871f5d1228f0e4df056653f045077703235259ca5035ae9adead613bedff8278a411867058712612913bcc8b837dcfacebbad59616843f7746592834f3132cac0091c316f43b765e36e888103da06c3fa745e5bb32315747003f2ea4da61b073bec8159be31be197af003c0c21fa5d08147c062e7a0a91ef1280a18b9d29ddb4fa55ca2b9c851d671a2fc17198812f2cd0f02580b531383b5bad121287fc005fe34053912e149bb911f29f7444ef9135dd877409e998de6f50d2ef905cc4967e51d5fc77b373a3c50a55d2757a0a775afdbacf6c1625aaf35c506a26eb6d6756e03ca44f45a61a6a2d0a80a0a756a2fd743b7365d877cb3eacc866f073f0fce50a7c59b374905fdbe787ca80447f45ac58354addb45ca1bfdf883bcd50d4122defcf5af3fc39d1229888e81d8c42289557588de10919a1119dc1a9de4b4872ad74c170ca5c258564e2869ab8010b0594e2dba3d264be052ad4c2b4ea619d14ca6f9e4386442399efa55f00189f02450f517ed1b830cc322f98c7a4426064d0d866c74e2f88a922aa4a05f683a657adc0966fc23ab2c5464b2201f9c1f47ec6b370bfd42b2c9dd5a6a0bd2159d48b501811b6b13176d93095d7794aac61397191dbe6362f2ce32354f0e4d9ca7269ede9fa6d5bdfd2d01576e28a0566b203edd236c4bda18ebe7efc2c8a421e592d3b186527340bc5eb766e8cf8b691b76a619dc103a44d6882a8cd51d24a78b80b3b582f32700ce57835dbf88cf5aefe0c45443c174fa3b89986c088e8d26307fec4158675f27f3e425a76e5af6df55d3389f4c7116417f29490d62a5f62b0b60faa955d0b6a1549e3de498db2fb88c0d5e9eae1325d370210626152af58cbba9a3e1f920095701d320ca03f8ca3afe6f504685acf5a1802121d2458071104b20c3b0db39107abe040a19b740992a3077d79aace23fd7ccf621d9766c19338aeb2cd7d591fe134395ad8de3c058f6b90d5b8aa39738f692826235d72611a1453611d2d1fee91cc7729a4b739a66cdc08fa2c8fe46893a758dc62b45fd40d937cafb4315643ccb94486e26150e6338aeb3312f1424f2bad32fca46f0ae34270557ffd55c0840c3f7731ef49c3b4137a3d6d4741fe859a6150ef397642ab35788b123de4d605844f9011ca24468384018e1eac2c5b9e28d36d7c42bb0c764c3a28ab0d1f8ec095791b82af307efa74d51ced0590dcf498205181b9ddcb910744859605572644703ec4dd751dc7cedbc261130a9efe391aacfd28278a32552aa8e24cc24490f5c75ad3ed83163c8177aa3133eb28df26da703722cc6cbb77075bc961452d4edb1e34200004b941efb60352d93b75a0cbabd3a502cb28ad01073da17d5196044d2ced5a08cdf424858d03be5499eb3726853984bcaf65a2e2a75b955e12ba99630217945d633253f70948b89975f80361c5f1a29afe399784339328d57843cab34d3e5594867e310b88b1c8340c7076d71b4f5390e4f01c36c2b8c6d28e21fa27ca21c67e15abdd3b6d536a684f9380c45d823e3a5a534111a4e23ecd4c8d041f93e1ea171fd0aa3fa29439ac23a646ef452c90ef4498ece4fc0610467d74a255f5c37f40c5009d179b54175334a472653a04a315b71a5361b60e8a8afd229d524c2cdc73002552595cf2b1729844aa6192a5982b7383f369cdcc9f8df319652acf4c1214938fa55f2faecf4922333957261d1653b777c98a5b732efa8c4341b351042308ce4506d3d94dc67b115d240c83b3fd73af5ded9d7ac4edf39df5fd0a5e340c9998071d680248c44d18041fe0989ffe78b8ab04ae8f5aad91aab5f7bad5a947967236247931d9b34c44f5617c5ba57874aa5dee4f98e82e96818e87ee55a8ae062426f7b086803936d4032eb55894f574f9ce1d1eb09e390943519d887439c0ff5992f64ad28d90e9ee26769741a9034d810a2eb093d803c8b31da84fe43f94320d5a2daff9fee599150f3e0bf5bb2022712a53e597b5182e900f7c56b2d0f5a790add568f90e6ace24fc998dc91b64266f74c99cac8a4c0120535f2567ad7ea0ef5e5869dcca4c5597527dc5e4529ce642278960e211bd35f8bdb9286af0f277300af88eda88bc1c7c9797ea08d20c1ff383f4c5286142d77d6e2bd233400478dbc56c159069c50023ccd09be549dd3607ba644bfb2598c5cf5eac7eb0a1fc8eec1d7b81f4cee137ca402cb935d9062c1313f57d275ec5dd647c7888eeac04ef9115658c330cf2db0b6e112b4189dd490824a1428764da3025a66e48e4aeb6ce3fa5efbc6c0dfd01ec351525cb942a5b7e7974f3a345f9eec47d24ee8895532107f5e15bbe8c2c55fb13786d799ce88c94f99198cd3239776aad1f2d5c6ab68f08a1107d1795c936949142c51ea312af4f281b34745990b7548709bf2479a1c390047590f9ea283c40da4a8b29dc48e81ac7cde3fc477471e704526048850e21957c21e461a722c4ac309ef4e2eb2125d3c42fed1f5ce405466fb571419227980f20ec85ea239876b1c83c0be24ec427d040ce4aa22df95fe25871c5c24435e57d36955458783b4fa4bcc0645b5cba070d47d421eaf0da50c2f52772ae5d3c8cdd81778b2dcba809098cbaf4ff86ec06a5370b32e1e3af642c7407d15b2ca2879eb009c4cd9e630f22603df1a7df1d60c1817dc69ed5f47f71afe3fc1bf32e42f5118c781951b4bf1024a046a049510edce64c2c7b94118823974140bf45aae3449db352a0c3e26ce56676476be351cbe615fbb12136d2ebb000f01b58bf375f0b15a20f8092e8c53c3863330b0e11c2f397fc5e0728c92ef8749b9b8ab9cc86ec7d994135158c1903e8253f7483af40a97526968c40e86a12727031f498e4e463a89a8ec06d1ed3bed033ad2e099691f0f3560c6f728c7b35e4d0f4fe45af5a63b4c8403461e82debaae4dc9ab503460ca1ce794372ae78e462b6523188bb660cccb76af319a8f4e826c3558b9c6f2bd23d064b61e0cc3fe469b9d88d60dabb81e3a2a68285907af83eb5e88ce6bf542350968792814a8ef8e105422cd93d51362b52a8815b83d13793522d408572de26187b6a223149db30546a4a26c3a458221adfd282c91f2c6033a15288bc7934bda045e1085e582057073f4a8504d1cd22ae988f4979d6ec8784476de5126203aaaffe1622158d814d82e999167c97eb4f27458d5181830802b1815a28e44b10b40a9b70358d3442aebeceb3c012d77b03834da02f017e935c315310381d604f0180635296ca619c058153ee15e1009bf20dc0e39c80b9454f8df091e545fb10a21d8ebb8756d98006f34ba1d3cac4d0d71eb3c23d6e5677d20f292e03365ec247091c40c1cc22002e1854e0b46c299e846c2e38d160812489ca947c26abc70d9a2d3a3e5f54388220cebb5417d3f52339c6c8cc60e200c068b72940ddf51b10b092d91a4a4b168c3aa8090cd178db80a976252b42f82e6606a73a5d1cd1fe7838073565a5bac6ec3f35bac4749347b222aeb506c12faecf1c17494d6ab51396bae632437b0a66ec10655d67ed30ce0a905919398a40e559aaaba898c1859d7d15118b2f0a6189da60919595de9b86cda31be6aa7e360e221dba5823c6884aabc3a1bde1caf30a072544dd4defc8701c75a9c5561b4ef717c3b111543892b5dfbbd828bf82eddb1a9946f87982af24a443b477a30a623cc5a5a566c70d6d65102b8b203a5d711ab7c292904c6dea1be5b473cc9956564798f288ec0bd0c37ab83a902f98e0724ddf1f4f0e13ac396eaf5577ed4a5ad9f22f494381a22ddb27ab8e4d283ed8870f4943d42861e76ad8a9ab0119cfbc13b5bae4da683afb6924b2d99af26cc4ae2843c999bcdb7060545911d2025924fc0e67eab312cb2df6a7b92840241a5bb750652a474660bb24c13180ab555a92aacacb53491f3f2c5b80ec8419b1b3a82ec81c08eae715d2a1dab5175aaf12e847a2086687ce52e9054b878cec91ac6805c9df73c7b79a832095fce3191548b2852ff03dd52a937e747e41166f83260581c03e7d877c5d993e7681da114c1145421ec61c1ce8336439e18ec4e359f31f1eeb56a19fcc09e1652eb2f53392b7999679d02aa57d55f4b82235ca1355f416f80c7192f7d12de4c6567c0b38cc7a18a0aaa0544bca1d554f4e375527b25e53615e717c155759c81e25c53824d504e2ca53bd08c142b4d98112a728bdbe4b31fe49e8a696ab07a1dc81a61314452a99470a258df49cd53a7f6e484abb36b1714f94e28f51a439bf3b614fe835ff806a2295ff24922097497ca9b696c4a579da1426aabb0019384ca17c4093cc40dc91c4cdb3ebf838b80180a569d83c6c03614d7f853298af0ba770c97393f4dca67abc8254a20e630e0630f896c02d312af2e7009132f45cd0a6e97f3456ecfcb501d3a71da835a62ff639f367884f49e5e9764038658c485e5839c60a138e1dc31c745d0631ae7a4c6b83b4c1fa6fe0e18ef3d8bfb28b3316e2bc23162254a82bea5de21eec5941adf9ac1a9e88641700737c06ece2c309f225609b0e15c945159d316aba4116c874797c6befeaaa018c394f0a792fcb86540127a93097ee13ce5bcb04cc6242322c7a4129c39056a8e410e41bef9330ad3373f1fafe117b0315312e229979ba2dbe25fb2fa2a253c55f899526e19f642a95122975431a71d4276070afed0a7d8e249b61507e18c6bcac912e9293d0796872267dbc4b2fae61aae7fc6bcf52664df6ba4839d371b63b3735b7896975f2a6ee9f773ce0efa77792f2b2d7be53fa33ce5213285f658b617aae8610ec3d04254ee1553b6d25ecbbb74d85cc347810d549570f0298681ed76544fff41e97de78f4e22fbe869c165227d2d6f75d31131a32340f911aaceab56c3f608c7c8ee07a6117ae63578825631298f9373c99620d2279479d735a719dbeade8e60756527888ba8b7a1384194897f18633c403a87d176e5ab54657b748c8cbcb9a65b486d8130fa20550843cf6a1b975359ed47c6e83ad1da1eeae758731264e8ecb8b9d8d8f458d3c2e81a5272670990ab0348ca1d81d88ed126a8b31b67836951ae5d71685e6428289a37b077be89bd56c9552ec8db12604fca750c006c11bbc44e4fd2ee86a0f6e4f5281610e760499582be887953e42c268353c9331b29029bf52c1d80c6aa33b04d4eda74e5f5893ca0ac0644cbe25c27082a6d1961a26bd3afd2ffe7144b61caf1ceaba47c5d4f5b35151b67e611e67666d5e0b721863d0cfe053b2881a4bab4fe3a4681cb2533f764d15ff10d70bf024d74b40e32082f03d8ea62a60942465424b5c8418513c61df790a00bc1afa3ebc8ec646c8b22c36ec449b2636428671b7f7602c8aaee8f3bbe5193645031649d13c3a5e4b6023c259b2bf72801d91793015e9c805f04c5008045ebbc066f97e3087b45d8f6ff99a283622cc5236adc07d6a3e58a91d2b2e9e8e4b8a01bd700ca3074079139e91406087e3118a831ea7e17abba1172f2f36c8267a3e6762fceb09f8978b9719555e40de8bae355dd4f25ddf81abd80a224564d5f4e4ba1344558041cc1c6abdd7624b6de50e8e37d050a43e35dabc0fdd9d0fd3e6b2246b684bdc85df428ef5a85aa8f0d408931228c2f90037c2db2114a09658e0c6340cd46d39db523475555b6156b63c7441c17f6945a60e05a456d0426055bc5830b1e7cad4c87d71b2ed09a7396f46c21c7ea404d202a1b06e3ca62e70d150cfffc836cd1aa59473e09acc7c82cfac179ed90eaa322a43f44445111b1dad3c996d21bb813a343b517f1edbd709b2d4376c2daf8106534bdcece48516e2c6bdcfa32c7a47a5ab24faf8b1f278e975b8a0e9a81138c65d44cdf9f6afa0a467c34daecb2e34c8ba2e05e910ff0ebc91d1b07727258afdc4aa058be646e9dea10d09a42bf2c9322c137f204b851d8cde96d9e26bd921fc6b1302297e76e197a11eba3ae38605295bdc97f0faa43bfd4e50e2156efc7bd24132a41642d3b422f83350334fbeb14a37f3b2c5d024f838d514e1fbea78ab6a37289849dac9323aaa1761947b566ceb70457490b755e6095df089154aa1f67b6315da708ca9dbba59c420e319a8f26336721544a71e97f0fa9d2e01b0970512d8bd7d399cf1a857ce68e143650994a5501379817982d1db51eaa01c820a9e9468ee1c7e7340861ce8fca3035576293e7480d77aabbcfc29cabf5ce1cc2b8a9daea50f5d8a1d24322f24981e98401016857b0c22a3438b9f7d46e88e1be6029cf92e6e347d898be757b1ba2d7aa974f19f8822f6173aa2c792ed45a8db32a23ed9ae454a80cdc53ff323b13132ec49d646b8122ce7c2ad4e805e70c03a522d0fe1a11767c17c20e1c0c6c5ae37c297ba2ba4c83545b1dc6154e950d59f7189b5979a56d44e7a9e47faec8e2af334239e744f350a92635bcaa5b72910956f2b8705d3af4c034a16e9dd5e91944a891e1713a46affd8638a7eef785f2edd275a5ae3784634ea82d2b4f77c730774a1221a95514f55e410857475c8b0f429a74a17a60bf5511ae6891e7a9de80722d946c3f7c17e4ceeb16ab28290c83494e1da2dcaa961c84a16b0546e28ab9b5f3fac5b801cb13c8e29ac85d37c0bab84af1b8aee262a2aede4266d70b6b0273461cff8ea0fe78d412964bfeb2aad7ebb5f3319c98cdec6f83e439e342859479e332c39cfb3c2ac907958f75ef970ce9516b08760a453d7fb9b15a4fa47707d571a6cc55103aaade2a6b395ec7a5de4a877ac7d6448caf752672eda918818531b1f49aca20e9fc11918affc6a44fa7f66130f11aee90de24275e54863a3f5c04765bb22013d24a131908353329c8466c50ad3aba8a40199fa35e75533898a7009fb8aae4cd9ba97cc4d94369396729eae8fc5502de1c998c70a77244176b02ceb8f1474aba6a4c37ea16937e3681cad848f108be6f4328bd094b21448228f032bf0ba355e7f67bb98664f464698653939db35420df467f166ecf682696935d1dc2ce034f0a68a9f35ab507a91a36729c17a048c9d44f7f9d244d31742da505ab134783bb57d682b99b4bc2c529647a7dcc1c182ea41a694e8b1d1365225643aed6499969daeac52561e2091b801d194ae9ee9f2be93d3337dd6851075e7143a599cb840fd27557a5e15b0156a4f0aae0230aa9f21d8bd2b0dd11108d4276011fc980d751a800530d47da734ee59d65d59511a630ae91db0f4c808fbb766fda22755e53cf9c91cb5d89fe31135ee041302e04b5b4405c169c255f7442bbe32da72b5edabe50578aaf9824343b6ffc126350202b557f769ddb9310c1c6de495d61f4e96abc491212f690c223426dbce6e814a5df4da4f81bd797c9565bc7ee0b75a245041236d340ef1613a7af72db399b463eb185b1bd7d7987e67bd15651212776961f38ee4f4fd4bd27afa7d48011cff98ac1e747411302379075911b64724377c2aa5fd8edc9be126bd4c5ec38ee3994d391f9fad9e2696055604736b83d592a55a95d04a7d606436a12318611630a40e496e6d8cadbad4b5d74fbcd92a48c6d57a2f457ce931c953c64258d28837127660a31889813aa438835f43515885dd86b74187374224f5e80aade53637b275bbdf3609f818f8280142651d5951ddb7b8e19829c6413ea284cee5cf6eaa73cc3a49648e20f48a453180142085ae614bc145ded36658fa894024ca5bcfadf6366498d0b7364863329b9390f777705c590420047ac25b90b4a05591627e16d6e7a4af6578ab9d0c2a870f05c6da518bf49da273bac35d4c3b42032d7d44796d69793a282072835771c77014b96d8a133fa45171006dfba89dc0d3e0c8a0059643637ce5a3d6a930acab51b83ea9c177cd024dbaa6e00b5838cbedbcebb6648bed68b3eb0273c39719db17c1df387e7e4109a05353a5807765ecf35d0c9065a6e2d94d0be796d4961889cd080bda66e7fb5a774e24ddb335c82df4fa0e583461885b0899539e4d37575f5ca780a32fc30108e99eadcda800dd6d931614c9057ad098d37a8529c3f6065ecb9167994a7a3667f8ddb55e82142864f72c79770ecbe906d1d4a53afd26f812c83e2e81cc193b2f55220486338ea652f643a76ba8e9503918a233968bc163718145361cf9c04ac00959c0b149c6b5a8105c920d252ee8871b2f4b10c5a60819ca01adca9438f382757120a3cc3a82b05b7a649f1556e127820603e8b95a31e7df57cc763936d36492dcdb3a82e81579224294e77723b52e07582654935fb1c0b7cec4e7a2a15c6957823919641b40cde7945f839a3f9a31decafbb903a345f93f2585dcb9d3754e248104fdb9e9b3a5f51c6b907363d529976483211b3b3672e302752606d1a63042df57460062d624de4c2d2314df62a7bcf931275fff17fe407e59b2d7e4c2ae18bb6b9b56c15f6cb951ad84cce0f39c7c7ee7405d54107d9f4bbce606f46762dcbe749d6394c33ea2bcec094832826f24a8f919339ec5e673ad346b9b1d59b1fa7f2dec9e5e0bdc647dd5a3e6037b7eff06b59adeb93fd76d4ef8f42142df72993af927f88edec06ec0c43e98cca7e2c8bbd4e28361bbd6a4d9361f9698a7329b743ea6fa7bf34a06e61de1c1bbafceeb4989fcad68266ace283e3f606a9b42c987ee8a2b29a5a121152efa433d72824905aa4a44a311fa9eb4af51aab9793b87c1dfee1059a2815363f390e15259908a4c5005ec989a7ea3accb9a3addb75ba0185cb7e1c9a40b904335b3cd59d8d0e044c5fa97c7104c5e42a15feb216c50233d9560eed3f37fadec5884ad905c744c3dac325267466c2a88d8bc7ea6e466f7e9aca27ddbba8e53ddbdb8bd2f7fd17f93123e6befa059cff1e1dc8b42f10489109831c7252b942c087aa873bf9bbf9334822b71ea9be47e0718b5da9a63d6d5e8fb8439c926712b982147db7aa1dfe35d695e08ff435b62ac373e26488e250d5a3b3a197a2e0a32fc69c2d8efd762178f1a7d0f4cb0dc5730b00e50f22374ce31a5895db7ee45a75fefa1437b939bb1812c8752fe1cbd5fe9ca5ad4bf9f3475144f551940bdfb64920a4ea5b52edc80a2784488a40e4d8c37fcf92d9f1396ee5633fb3e65c19ab4ff268c96a1a7d218571d467bf0273e9f34c54ef484e84288d634a33e2ba3bc8d11746b878eb3c461eb1227515c9a8450a22c9728de789152012f0bbec35977e60a386dce006ed75ac4dae1157e956fd01129064fa1348a617034af1b7d197ca8e0271b0df4b5fa2240c35b7baf33c1a7f71adfa301147f8fec8c7b348b09b9e1485e93576d46cb6a3e1041261a5f347968c956167bcc9e5e30c932d5f9902eac26209b50a2fb43ad297c8047f3f07a7d879b7ea74cf369c6db4b7556233f19909dc8a17ad55e08ec10434add21376e857f82d2c821a8a5ccdc0a0e3e47e64cc3abd302e213c4f327144b22b96029d8ae52a5c9115c5a6582cb70e5743087e1453556cf1c2179f38d093807c69a1222fd4a77e80a315c8d117b3e2311789c245a780ccec2b12b90ed5c7b168fae4627c93a10a7ab1d9ba94244b6361f8332f539c5b66c5ecc9b2ac177a729c3befbe1ce8d38aba316dfa68e17a8883d7e2f89380dfbe0f3012978f4c7253992f87ef0287f4c6e0c3716abf10ad061e5599a26474116570f4f4468a3cd5c6cc1d1e6f32faf35e80b81b8edcd5985deca0c5187151579f542836eb466f54e6ea91d1aeec41300cdf9dc159a17dca1f194c96006e8b61e0c4e65289118b9220fcf33417281063fdce250a24fedecf9fe672b194f70ff2f7d9d3d3ecfef9937cf7f0043fc8c7a7875f9f661f26f2f901ff3dffd7f3fcfe593ece9f3e2c9e9fe7b7f2ed27317b7cbc5bdcccdedecde5ddecf7a994f37fddcc1f9fe5efefe7f7f20186ff7db19ccbe5f30c5e58dccbdf9f16cf8bfb5f71c09b87c74f4f8b5fdf3f8bf70f77b7f327fc5cdaf70f4ff4a27c9c3d3d2fe64b58c76f8bdb79bd2679355bcac5f24afebe787efff0f1392f5e3cbc93b3fb4ff27f17f7b713395fe040f37f3d3ecd97cbf9ad7c78928b0f8f778bf9ed442eee6fee3ede2eee7f9dc8b71f9fe5fdc3b3bc5b7c58c03a9f1f260266e367d3e8b0988777f2c3fce9e6fdecfe79f67671b778fe84df787bb778be9f2f9748bb19adfce6e3ddec493c7e7c7a7c58cea7924878ffbc789acba7c5f27fe56c9908fbcf8fb33cd0e3fce9ddc3d387d9fdcd1ce6aaf62c164bdcaefcf4f011f4c6fb878f77b723a200a1e6f276fe6e7ef3bcf86d3e8127e56cb9fcf861cef45e3ecb877762767727efe737f3e572f6f4492ee74fbf2d6e900e4ff3c7d9e209a874f3f0f404a33cdc131bfd3ca512879c76bb4bd879121cf7c041f3df803f3ededf01259ee6fffcb878422e91632e81f167bf3ecd91d0154f88df177777787a99312431c6045fb9ff5431c627f9fbfb07f9e1e176f10e8e8519e7e6e1feb7f9a7a5a8a9325b562c3b7bfb0084793b97770b5ccff3035209ceed76f661f6eb7c597106cc29f83bd813b97c9cdf2ce03f16f7378bdbf9fdf3ec8e4875bf9cfff3231cedec2e0d22674f8b258c00cc49e7283e2ee7c880f789719e1f24fcad5eecab32f72953cabb872570a0b89d3dcf24aef87926dfcee1e9a7f9fdedfc09efd8ece6e6e3d3ec19278337e64bb9fcb87c9e2deee93460bf78c5174fb7225d32e4db77b3c5ddc7a763c683991f1ee7382432607512f4c4f27a22e0f0e5e29d5c7ebc79cfc7264757f9937c3f5bcab7f3f9bd9cddfeb6c0ebc8f33c2c970ba6c9c33b8123301d89fbfe3225c772e775e1c0e549a954adc3da91d0cb7559f0603762e45204925bcd10de9b03142bcdd650e71ad5710915f5b766943d4b612ada23a0ba007351efc93b1ad00d44a7876c661e49ed53c95288b2e91cd523ef4005e2973a825056aa5570dd1035b5ef2663040c71f362ba6aed672277237738c19947156aa5bc654c8852744f79f81310244ce7751cfc7173e133ff9bdfd3395ff81c66f9df7bfabad80c4944a0c2e754e0f00954debddea705842a8fc95f97e2af85eeea4f6750db73fc7418e7e9781f1bacb60d51ec1c6701877054e13ce1fc5c88d449cb49d56c31af93c1c89c9d35518c3f454c56914e9faba7af9a549fdcaebe3d9eb39ca12e7c7866a4e244aa181587a48b319b0af8b23b9090a90bf4a6825ac3d660c5f9ed3e7f503672cd0f42d9aa620ffa6a5088a5697e7710687f714cbdeaad396e8d8d23e110618bd124b4c4530f42748dae9af245d28efcdf16ec498781118a72a51e4eeb21771886ddacc14465e6fa3b9013df4f9d06abfd7f17b0a88d875e79a3d7d2b45ae516599ca699fe837b63252bebd5cdb5fcfb412bff0f29ff8e43b85444fa0f9a176319bb021e1a1df7dff2f7c647876ca21c7d9d9babd7cee7b5ff88b1ac4265cd63fde7d72dfa49f26d4ee20705d443b570afc6b5cfd7a7eecef43c1dca76f387d4b66e575a88254f76087a3d74d422197cd564b581224996db2ff597ab69ac14892f328b6a008f0d30e72fda5fb2d85f4b4dee218cf0075cf59456234f3a7532fbe486119767b4fd18edf9cdf1b9e561d526af50963c46ebe24406ade5dfb731eefef6fdf7fbfd7ebab1c3d4f9cdf70989f4fd3fa642ccba808ec6a8eb8eb3e9738d989aa12fd8e3e7183add44efac69e833366aa7bdec95e92a6c48d5ebb251e5239bb454fa2cf65782a2227fd1f350a8450dda09cc523599639d4b9a29b7cba10fc0134e347dcde07cdcddd7eca8e45eaf528285ae8089a17cd89083e3a96fb49257e9e36d189ea34a3eadda90d740b9cd666b5eb4c8d9b73603d6e9634bf4b18043a8e2efdc4a951beee1b7bdb2b388fa1c0d97743d563a46465d95bae3f4c9ad5f90097249c44fc979cd89ddd3867b9f8ec80e84445ae97ed7b983f6295c5d7d0b237dd751fb6b44f6817fd94d047d740f739fc16c2cf5814b82b3d8585705cc919bfbaf65f5e59777195931e651e0fbd1c745c942823fb0579baf137e2a3c682dbe7521febf000000ffffd2dda38dd8860000", - "49a20c4e431767a29116905e29fec0d9": "1f8b08000000000000ffc4bd5b8f1b39922ffece4f4114b0b00b48abc7dd73d999deff0072596eebbfe5aada52b97b8d83031c2a9392b8ce24b524b364ed62befb415c784949e519eccb9997699732790906237e714d79e17fbfdc7d96bf2cee168ff35bf9f0f9ddedf246de2e6f1677ab85b8f4b894f257ed837156fed4c81fff2cffffd16af9e3ef7ef72721e48ddb1fbdd9eea27c7d738d7f941fbcd672e536f1a0bc961fdc683b158db38d5cda7626ff6517e3fe2f3ffcb0099b99f3db1ffe2ae4e259fba3b35a9a20f7da0f2646ddc9e864ebf647a96c273b13a237eb316af9acfd5a4533c08f460721dd46c69d09b237adb641cbceb5e3a06d6ce47a8cb2dd29bb35762b4d84e1ad8b52f5bd3be86e265eda2efeefc16b35ac7b0d4f3ded34514d5bed552f1fc6756f5a79cb339a2095dc78ad1b5c71af3731af66e3bc088918b0151777dacbafc67601967e70fe6b98a549f8ad00afc9c185282fbcbbf7aa8da6553dbd2ce1d74e07b3b5ba13d1c9a8be6aa90eea288f6ef4b8b0ce0d40cfb04b232159b48c3bcd2b90f2dd51b6ce46af426c44fcbb3b36366adbd1396d47e5958d5a9fce28ce66547d0f4708ec84fb5772efddd6abe1cd9be8e4004b0fa3d7705c5e0fcad880c3151a0265601013831c83f6b0f4df74835b7999f5c6809b15dfd95326b9db48d8459af167588bdaef7ba383547d70b02f658f7c1a403ee975af550062002702e9d7475ca11ae3cee11abfb851b6cae248f01b8c82d4e2fd874646e790137edb692b0f5a86bd565f61394081bc9e067e82fd79bdd1de036f479768de00878bbd37ad9e49793ffa17763be51a39217ddca908072976ea9958a462a1ea26d2053c5b9f7ccdc7edb7c4fe71a707693630a43c98b0bb6ef214d2eb569b677879f42d0cd969e93c126aab235e5a7c511c94857f56afc233151be7e99dc7d3de1bddd2ea60102bad3e085c67a137ac330ff7d5ba431eb7733026f28cb15bbe9f0e5e8dba8dc4e528f6029e86d544c3bdd7cfda46e20c605c37c84edb239c116c82c6a417619d2a7ce59ff0768edec395f2b81f7a6a8672c1eb8d83838707e15044ab7d54c64aafc3ded960d6a637110e83c97cf1946a2a3530bdd90007cac17566032cf997f3f1a2c3bfc1a66b46802b827b44ca7c705eea6f6ad8f7baf9ee0ac2d8eeca8d6fe461a76114b1f52a1aa408de6eb9d1bcd9610c51ee5508d259580b1246b7666fb48d8176a4062d785de18cb13abe7938d0098bc79d3ee2a56bd2d3a2623da256e6ca999473db9545859d3b48e46c6614ed8720032ef1289099e24e9bc42648a7f7fa59f76e0fac810b60a14482f6e1f6127bc983893b190f4e86a8f7e12fe2f5db6ba942d03ea2ae21dd0bc4991c2e70f6eb1fafa5db6cb427fe02c1c4975f6ccd73e2bb5e6f554f5a37a08e67b5dbd427a86cf7034a4766947cea306b9777f50ae76591f72a6d07e52f6ef3e156b6bd56be3f4afd6ddf837017e924bc26f52c0fca832e39222be0aa27d2654613af5ddc91f8c749459e34a8afba4ce7f57f8ec66ba637aedfe8ae28a0b59683f25f75275510244cba864e919665503eaf7b3dc051f43d0288b5962a326d3aa9bd7756bb31f447d40cb41260771007c68d21cf87745bb9018966da0b5218a405ed4baab6d5016fa0b12182ca735efad18af36d9c5c6e78c174c85b4323551f776edceef09141d971a3da387aed054bbae050ca804e0f72033a13e093ea414dd9d60d7b15cdbad7cc8a3b2d95010920d2f9da6d3a894a4f5c90cc24cb643886a807154d2bf62a46ed6d110d6bb812ae6d470f008326f35a11315d37b691a091b19d7936dda87a2090180368c59d69770821414204dd1f41be1094308154fb6881aafba8d6bd9e8ad6832675570e0308c2144e0406964231ef76666d4846301ad3ccaf2e6891963a9372c93bcb4ca4bc092084d6212a1b0d5399b144e710f1e06ae0f74e7aad3a602ba9bf01dca255edbd7b36e9b2e294e94d186a33c2e966e61065ed8d54017555d256246e4e043b812abce1c6c2fa1aa901a027b10dc48c3baf55d440a7d659dc4a8f9827b3e01e7e06b9b78a2aea00f272ecbb82bfd303ac61a2376d4ca204d80f450972c3a6603f07a219e1cc9bfde8f7b071e0cf316a1f08ee23d3b8c012be73a89e0174e0d57c76a62396dcebd6a85e76c0a49e1e4e0b22a8871422549f37dec216046a1113a5de6c80fb9f81d1f6deedbdd151f9e38c9102210138af228e5400ed43d248a4f95a6559a88c81a6ad50409ada3afb06d6922d056672d63b88b89ced4c447900ac0842dcd86d25c78161405692fc681119cb8d83d378d9167a5a3c7e5ac9f9dd7b79737ff77ef9b4bcbf5bc1c3bf9bc9f77a632ccd88ef5f3d553ae68ae0299e6fba453fe57bf4220aa781b2557945807bd0ca86a2efdef4e6ab96bd3ab05c27481ddd896d25d0b26958b40419f4608048631b4199a9f035af5bcb072274bd6cc0f8794e851210b03edb689d1cf9944c1069f5522e54bb4b8f9065d8755e87802a465e1ddd783593f28a5fd0e10a8fe4aa809a2b3980f9a02732ce79e9fc5659f35faad0fbc9c92b52c95752d1da8850c97246fc0980aa537bbc76f08fbdf2319d03bc238c053e57610747440a13447a4117051c344ce1b85396d5090258b0e3acd0df544ba88425bdd761ec513fe0e20cf07adf032578e19512bbe23509c00726d9558806f1bfaed6685fc1833071fd1412632eaf5af7acbdeef06f574c0a6d78c15a8e36cfc9875d0d8fa30bc651fc732632dc6eb555519fd3b94336412b81f4236a05151bfc971ba3a8a977401988028430b2d72d084ee765d0c09aca9bfe287b83dc06b693b11b380d8d2291180ee5538b4f9433ead5a191fa1be836a9bfe9768cecf3803b2f92909419c4c1af00c4cdb322840e67f6c0fb044630b6edc74e872c47c4448ebcc6cd3a9fb6296ba172dd24c650cfcaf4b85402ef628fb79d00aab13200166add68a34713010f0bf4e933991f2ac883eefb7c12adb3cffa94dde19ec29d679490b780b2415b989e8716c0fc6cd6e02900a2620b94ac9499949f1033d8a851b13b4be7aa502f82e2032c2554563cd2ea088ba11307041bbdb2017037ba37084cb3eb89d66fec9678d696799e354d807fd8a85683dcdef7ea18e4d57c4ffa058eea16f1fa9d03c811ae04db44880e88f3c8dce5c35334a33549a3eebd1b8cd5a8ae0143ac7b2d365ac56c14817d91672677459ebbb09bc5f9b39d21a2ee7b32c7984adf07f52c495f33c3326fd49be0170c4364443c9dee92eb2009d880c292a88a63e0b8453027b5422b4593cdc967a30f7c30d9795804f87283ceaf720e7baf030103d91b720fe1265b370c0a358d976e8f62b9e81a25066dc7868c5da2b834510f09d5e24883d668c48260f4266a6f9c45c6783b932b323d6fc0f44c3affaab247afd854aec511c1828df6200537ce0f13398ffe2dba96f565250b238252ba5fff8746090ec397bb05d883661669503511bc2b80aaca77729988565eaf0849f79104b2c1dfdc6663008711d885113ac014ba0328a9e06abaad35ffa53b991e0872edba63239d6f12295b4528314f1408dea1a42722e1b56fc75e656fdb0064e895dd8e6aab1be92c2d4f1830f33a807408c6d4e0ecb6b27071db285959bca421ca19add0bc91b766ed1508b52bd28e2c950b8ce03b9ad507eb5691752b3e05ac240f3bd76be6fcd7ea9abcaff8769788609d1f549f0e5dec55fb556d49c87f52ffe1bcbc71c3ded9ec16cfc61248a5020954a4c745f538def1f5b50cda3f8320b584b548b032442f0b6623514571362f5c7d27cdb0ef499d2979ce387860b43865457e96755238532892140ae992e242043acca49c8bab93555c31dbc0957336ea6fb149ac2a077c14b01a1a6628e1f125f1faabf656f720e26de70e6cc212698293ce5e67139c38af95c02e0a95303d2c5e1b6083e3356864da2009ee2957f811a408322d4c6f7aed9359c0666571dad37356ba726de9b6edbd8ee53d1833f96c90436f9c273f5f07cb2341331127663a26321513a9efc58963ac3228c9368bba491e0b669e0dadb3ec15c5f4352e0c46ab27439fac4baea6b2556278a467ebcd1e0d4781f10ad7b3c95770c34cca8fee00566b03eab0739a183dddb934ecab204eaf2b12f5d4c88cce1108e71ffa63c588189e484ee5c4bb9eadb90a741a0b481a88892efb9325c3ad14e5e5e9b5a4d5ce4e3cad97ce5164d55f01896ca7c98de9115505d78246efe8baf269d28fecb167b2938b5c9f5e2e8a2475b24f64a328ddd1aac100c63f8aded8af20b7c775264d4205d91a489705095a7bc1d86dd788a44ed747d88f190085742ae2e518469b8c583477891536bd3bc8b58e07add91520ea35545134e5639890375d904b7425177fcd4319f62757ae0fe850f33a5d03a9c6e8d0d1851b246bec7ceec97482a6fbfe5aa657f554ee917f464511d450edecc7997ca78269e5433648c88c9cf77d72366f318ad75d0050c894e9e704e2a2266d73e6887e480e7ef407030af45e3f3b325a129623be8ac086a2f25dc0e3838ec92599e6d7dfc0ea31805bd56663fc10c84d3edade0c06c698fab0936c39b7fad8387563dc8f914ec58fd6a2b214b50d89062bff7b7d9c9203b5a0a103a4911ab935cf1a246d40b9842a0f9d63268e91b17819fc747faafd6adda1d7dd56d3ce440a136de446198a6901d2440682fbf1ac7ad2cfa190747d9cda8478c018ff5047b4781a240c5b0264d44e965545503a87b14402d7d99eaddd4cc1c91ef091e2b348316f5ce3c1049d42b8c258601a8c49a6d530683f99dce5d819f35870c032248785dbc89d7aa64ba70732e1a658567f6bfb3190530e8638ba11253a5388428920f336aa4d31ae0df9d56d11cbec38aa3835c51cddb0ef8f480b916e40383522e05266430fdd2e20b7bc217cc61a82282cd82844d1954f0e79839c9863c83e967a9127872678ab149a4297fe8412ced201adf54ef59b86ef37fe897c10c659c13e44584a831719f746aed1cae13dd09549063ef9c828be47f1ecbc0ddd958dbb31a69084019bbba7f3da993da9a0a31b91576f32ddd8d991e3ecadf1ed38801d00087f9229023c02881dde10449cc2a32860e45af7ee309372857051db80207e920ff2b30c4409f9f677e8e40d801d466b75ab4350fe880bfc69067224c53d3e53dc838cf247bab01f803c731bcd9b1b5cf233c04967e52d5fc73b37393c50a57d2fd7a0a7f5a0bbacf601312517b38cbadd59d7bb2d281331688561cc42a3ca29d4ab83dc8cfdc6f43df2cdba375bbe1dfc3c1843bd166fdf2615f4dbf2e1be121cd16b158f52756e1fd1e7267ffc9d7caf5b3dacb5976ffffce73fc29d12c10c064c2a74c4261649acca2e7df4244ec8c0b19eb48750321ee882a15498ca4a8a051f14100236cb314b77d068516c9c5f9b4e9c4d33a1994cf3c9a9cb0411c6e455b00189f02450f537ed5b830cc322f9827a4426ce9172274eaf28a9420e8cb7bd3203ee04936822ab2c5464c97040543375d5d76616da8584c9dd466a0bd2158d48b505811b6b888bd8a4a1eb4e31554f5c667478c5c4e49d656a9e1d9ab84c4d3cbddfcfaa7bfb6bcacfba21875aad81f8744f52b8d2c6583fbf0a134843ca4524379d8968c101f106dd9971b82ca66dd89b76a4a02cc6878b1bab3f92d11876c0d95ac1f9539ed9779d5d3f8baf5aefe1c4544bce74fa3b89980c04a7a009e08f3d0aebec9b044f9e73cca663fb5db5adf3098ab308fa53096a102b75df5900d34fad83b6ad26d971cc3eb79f71195bbc3c7d2faaf489cb3e30a950a9e7686fed0dcf0749d93d300de61a015f59c7ff0dcaa890b53e140012225d041887f213c2b8df3b107abe380a4bf240c909c125fca166b64f09db3132feb50eb49f705dede93f03aa8c364e1d63d9e6368c14272fb1ef2539c56aae4d22428b0c11d2d1fefe12c772984b739866c359254591fd852274ea1ac12b79fd40d9b7ca5368969d8c17993267f918dde13086fd3a9c08a23081ed59d908d695e668e0fa7f341746dbf1fd9c1477c99ca09b516b6aba0ff42cd30a87f95382ca6c15a2ef8877133823a8fc00065122341c208c70f5c2c5b9e28db6d725472861585411361a9f2de1ca135745fee0fdb4298a193aabe139c08a64863bb97721e89032095489919d0c801926312525900868eafb78a2eab3b420dee88894aa2709d324e981abaed5071b669c4589d668c347b655beeb75408ee514a723b9e0d1a588095513c305040be0287c7f6a83d5b44cd66a9538a98e1cb32f1e1a624efbac7a038cc8b91365504e2ec34c8da0f7ca933c4fc95ec9cd2565772d9795badca9f09d504b68485e117aa6e0078ef262e0e567a00dfb9726caeb7426de50f64c735a02e24e9ee9e5594867e310b88bec8340c307b138a5ef901f9e1c86192b4c3114f10f513e518ea3709dde6bdb691b53c07cea8642d31750bba5301102a749ded104e8a07c9f8ed0ba618d5efd14214d6e1d821b8354b2077d92bdf30d188c60ec5aa9e4b3ebc781b49a0cd179b545753309472628508598adb852db2d3074d457e9946a12e1e663a8a2d445e5f3ca4572a1123443254b5959ce4f81933b1bff15a7278bb53e3a24097bbf4a5c9f8d5e326466522e2d9a6c978e0fa3f456e61d159f66ab288db0ba9220876af450629f052ba4819077fe58ebd43b67dfb03afde0fcf0822e9d3a4a2e388cb3062461248a060cf2f748fc3fbca808ab80dea0da9db1fa8dd7aa439977d1237632d929a4217eb2ba28d6833a562af526cf77e24c4760a087b5ebc8838b01bddd312006e6342f1ce475f14f574f5ce0d1eb06f1deb057d624bf124989cbae3ef38dd08a92dde8c97f9646a70149838d21ba81b2079067d1475bd201a3f694905754fbffd33d2b126a1eec774b28b09128f509ed4509d021629e999647ad3cb96eab47487356fea70426f7a4ad3ca55813652a90498e25726ae4ad0caed33deacb2d1b99498bb3ea66a451538a239998904b8790c1f4f7fcb6a4e1ebc3c91cc02b621cf5a2f3b1b9cc0fb41124f83fce0f4d8a902272672d3e38ca0660af91d72a38cb092714004f73822d55c73418cf14ef5786c5c855af7fbcaed25ad93cf81ef703e45629c3822290c81dd6b10952101cf373255da7d6657d749cd1511dd8393f7286e4337bad2e2eb0c670aa8fda5b85f0c284e4542247b16b5b15109991392aadb3ad1b06ed5b43199660a3c228c9af5ca7b05f5e3ee9d07c79b21d493ba127d60920fe715d70d10b177fcdd6185e673a23263f4566d04f8f5cdaab56cbd7a739fb741ed7042d8982c54b5d9dfa770f9c2d2a8a5ca8634ab7297fa4c991037094cde8c93b48dc408a2ae324360c262503ff08df9d58c0159928a51703cfb812b630d29053511ace78b7799195e8e251e61f5d6f0334441715b1fd6bf20c913c407907642fde9ce3358e81c283855da88f8013b92acf77a57fc9200713c990d58589fac53b1ca4d5df620614d52e83c25129d51a009da190e18bd49d49f93831331019f126772e505dc78baf377c3760b5c9b949204ddb52db51acd02a508b6a23ab8c12b70ec0c9146d0e136b32f0add12fde9a11fd827badfd9be8dec0ff53fa574ef94b14c67160e5c692bf8002811a934a88761722e1d3d8200cc11c3af1057a2dd79aa4ed0615061f1347ab538e44b935ecbe615bbb12131d9b126421a07671be763e560b043bc1856968d8700406369cfd2597af185c8e49f0fdd8948bbbce81ec6e1a4d391385551ad26730ea1e48875ee1522a0d8db983611cc8c8c04792a193339d4454768ba50e7bed031ad26099691f8f75c28c1f508e67bd9a1e6ee4460da63f36c201238f41ef5cdfa5e055281a30458e73c81b9573df716943ebfcde910f58a0fb40c9eea0d19b8f4682ec34a05c63f9de51d264460f86d3fe269b6d44e7c675dc8c3de64b851275f03ab8fe99e8bc51cf0ed3161179a86daab6a933a8527543514f98ab55a55881d9d3c8ab09a12679d5221ef788151d65d1395bd28854946daf42a84a3e9a13b7448a1b8fb9b6e16472499bc00ba2b0bca224dc9c3c2a541bc7b44a3a22fd6daf5b028fc8ce7b8a044427b1cc84b3f261613360bb04232f92fd64e5e9b0aa31d06150958388820b40a97723a069229575f64d9e80963b5a1c1ab100fc457acde98a18814034013c864e4d729b694e604c144a7bc14cf825e5ed9081bc444985ff9dd283ea2b5665080e3aee5c171ae08d5677a387b551211467accbaffa48e425c167cad849e07655a9133a11285f485f28db3af76ea47cbcc90241020975f63ed5848697119d9e2c6f18431461dc6c0ceafb899ae1606334760461305a94a30c7c8b4319ae380a2d91a4a4b1886155d0a95484c400b98a685f949a83a1cdb546337f1a0f02ce596b6de5a0384974b99904d1ec99a8ac5db149e8b3c507d35158afcecad970352d998135754b6e5085f6a9724b05918398a40e559aaaba899c31b2a9bda3a5e80731c0e4344dc899d5958ecbd08ef3abf63a8e261e332e15644163aacaeb8beecde90a032a47d546edcd7f71c2b116175518ed7beadf4e444557e25ad776af205b5fbe74c76652be1b3980547bb4b3a7077d3ac26ca465c506676d1d05802b1c28bd8e580c464121007bc7fa6e9df024175d13f29e501c13f772ba59ed4c15c8773c20e98ec7fb4fd7396da95e7f6547bdb4f5f30c3d254e8648b7ac1e2e99f4801d311d3d458f90a1c77da7a2a6dc088efde09d2dd726d3c1575be153ca7cd5302b8933f2646e367f6f505014d9005222d9040cf73b8d6e91c34edbb32014082add6f7222450a677620cb342543a1b642715f42c7247dd244cecb67e37a2cc4c3cd8d3da5ec610da76b5d9f6ac6eaac3ad57a17423d10a7687ce72e905478f19c131a46875c1df7bc7879a832095fce3e11c2b2fd51a4361fbaa386031c1f912739c32f270c8bd3c439b65d71f664395a976b05f72a84032cd879d066c813a3ddabf62b06debd561d273fb0a585d4fad34cce4b5ce6492787ea55f5d712e0085788e6abd41be071ce973e736fa6b233e059cec7a18a0a2a02c47c43aba9e8c7eba4f64ac86d262e2f82abea3802c5b1a694364131b114ee401829d69a7246a8c8ad941b1fe5818a69ea64f5da9135c9c5c8b5e01470225fdf59cd53af0e6484ab8b6b17e4f94e59ea750e6d8edb72b9a78fe90622942ff12491043a9837d5d814aeba4085d4a9640b9084ca17c4597a881b131c4cdbbebc83171362c85975293506b6a1b86f0095a208af07c7e93297a749f16c15b94409c41c3a7cec31914d6058e2f50b5cc2c44b5eb392b7cbf12277e065a81e8d38ee5941f6c7216df024d37b765d820de862112f2c1fe4040bc58663c7ec17418b691a939ae6dd61f830b57a407fefc5bc8f321be76d453846ac4449a96fa9214faac73e8d3b5053999404777423ece6c202f32962950003e7a28cca9ac0a2d4d85d806e4b1afbfabb82629aa6843f95e0c77b4e48426b32a55f384f312f2c93310944649f544a674e8e9ad3248720dffe0185e9db3f9eaee167c0982908f198cb4dd16cf1cf597d95129ecafd4c21b79cf642a1512257eec880b32773a0e41ffae45b3c8bb6e2201c714d3159223d85e700792832b64d2cab6fafe1fae79cb7c1846c7b4d74b0f3666b6c366e0bcff2f24bc5ed0b3d2a527384bc97d2b4827d7515850e58b6172aef6176c3d042546ebf54b6d25dcbdb74d85cc3478e0d549570f0c987018bb16aa0ffa0f03ef6baa84f22dbe869c165227d2ddfebb62762464709e52759755e751ab647798c6c7e601861605e832768154d799c8c4b4682489f50e6ddd49c666ca7073b49ab2b3ba91a98a42363cf6c22fe719ae301d2394cb62b5fa72adb9363e4cc9b6bba85d46b0bbd0fd8176060b58dcba950fb0918dd245adb63fd1c6b4e4a19ba386e2e363603d6b470760d29b98b04c8d50124e54e92d84eb34d5067b70e3b8f805cbb62d7bcc8a9a0086f60ef7c1307ad92a95c326f8b833d29d769026087b94b6cf424ed6e28d59eac1ec502e2525a52a5a05fcc7953642c26c0a9e4858d1481cd7a960e4063d5196093b36e74797d220f28ab011159502200587f2547994a5b2639d135f4abf4ff25c5529872baf32a285fd7d356bdf3a691794c73bbb06ab0db30873d8cfe19fb7881a47a69fdb58f02974b30f76cd1dfb10d70bf82da42013ac849783981ad2e666a30654445528bec543863dc690f09ba10fc3a9a8ecc4ec6762832ec569c053b26403963fcf9594256757fdce98d6a12a0e294750e0c9792db2ae12961ae3e47847d7a4d85ca08f859900f0058b48e6bf076d98f705094dbfecf3334508c257f449df781f568b962a4f4823a39392ee8c63580320cfd51644e3a4f03c4a65a005da31ef6b1aa1b21233fcf2672e729b891cfceb09d89f972d32aabc81bd0932e5aa934a0baf175f6028a124c07cf0d184f4ba1347958041cc1d6abfd6e22b6de92ebe363951486e05dabc02d0fd1fcbe08112323612f72cf488abb56aeea530028d14784fe053280af4506a1145066cf303ad46c34fd451c39a9aab29dd850c39f42c469614fa90506ae55d446a029b9553cb8e0c137ca607b26bc401b8e59d2b3851cd83368d0358641bfb2d87b4305c37ffc9dec10d56c229f04d6636416fde4bc7648f54911d23f44445111b1dad3d996d21bb813a343b517f1f7f7d2d0891bc2091be34394d10cbaf4f3cbca8d658ddbbccc31a99e96f0e975b1e3c4e9724bd1413b7280b18c9ae9fb534d5fc1191fad36fb6c38d3a2c8b957e403fc7a76c7a68e9cecd62bb71228962f99dba43a04445368976552a4f48d3c016e1476737e9b6749afe487712cf4c8e5b93b4ebd88f551571cd054656ff23f47d5a35dea728710ab0fd306ad292b41642d3bc95e06340334fbf30cbd7f7b2c5d024b83c128870f3f5245db49b944ca9dac8323d4bbecacd6ccf98ed255d2429d1758e537c9482ad58f73db9abe5794ca9dbba59ca71ca2371f21334721540a71e9ff1c53a5c1df09808b6a59bc9ede7cd528e4337724b781ca54aa0ab8015e60b474d27aa84e4006494d37729a7e7c498350cef94919a6e64a6cb21ca9e14e75f753474baad6bb7008d34e72eb63d563874a0f89c86705a60d270420ae608555687076efa9dd10a7fb02529e27cdc78f30987eef0e3644afd5201f73e20bbe84cda9b2e479a1d66a1a559968d724a7420570cfedcb6c4c345c88db64b4401e673e156af482738691421188bf26849dde05ee4eda232c2a654f549769906aebe3b4c2a9c290758fb1b99557da46349e4afce78a107f1d11ca31279a874a35a9e155dd928b20d8a4ad1fe87d1582a6ac5b67757a0633d408789c8f3168bf25cea9fb7da17c7be9ba0aee411cc63e894965e5f9ee38cd9d8244919a5c8a7aaf2084ab23aec507659af4a17ae0b05311ae6891e7a9de80622d146c3fbec28e8c1d5651921b06839c3a44b9531d190863df09f4c48d55e73b6e9e99115723f7fd08ebe22ac5d3ba8a170375f51632bbbeb0268033e2f4774cea8f278d89b9e42fab7abdd9381fc3196c667b1b24cf05132aa4c81b9719e6d8e749493ea87cac7b7f09484f5a43b05128eaf9cb8dd5ba91de1d55cf913257a5d051f55659cbe93a5eeaad74ac776c4d44ff5a6f22d79e8a49b2300696de5019249d3f66a4e2bf31e8d3ab43184dbc863ba4b7c988171550e7878bc0ee4a14a421add4c84059334dc96cc476ecaae7fec7036637b1d7ab6e0a07f394c427ae2a79fb76261f525bcbd472ce92d7d1f9ab9478730219e14e658f2ed6045c30e34f9474d5986ed22de6a174e0c43236523c82efdb184a6fc252089152147899afc264d5b9fd5eae21993c599ae1d464e72815c8b7c99f853b703613cbc9be7661e7819b92b4d4537f53d532c8715e802225a89ffeda244d31f61d8505ab1347c03d286b01eee69270719e32bd39650e7417528d3487c54e89d288f598ab7552649ab6fae29230f0840dc04e8052bafb974a7a2fcc4d375ad48e57dc5069e6d2f041bafeaa347c2b8915c9bdca7d4641ef64398d778c88462ebb808fe484d789ab00430d27da7341e59d65d5150853e8d7c8ed071ae0e3be3b98ae489d37d43367627257a27fca842ff020800b412d2d302f0bce922f3a65bbe32da72b5edabe50578aef40129a9d37fe126390232b557ff6bd3b9010c166b1495da1f7e96aba491212f698dc23426dbd66ef1485df4d24ff1bd797c94e5bc7e64b43a69463dca3d1bac5c0e9ebdc76cea691cfb03077294eefd07ccfda2a2ae4c48f358cecf7a727eade93d7d4d6f60acff92a37729f9e20263710bac80d32b9e73ae5aabfb0dbb37d25d6a88bd971dc4b594e27f0f5abc5d3c0aac09e30b83d5b2a55a9bd989c5a0386d424629a468c2100917ba5639b60b72975d1dddf2d49cab9ed4aa49c866a92939287aca431cb009ec47412535c0c22e680ea18629dfa9a0ac45ed86b74e87374224f5e1255bda726de4e767aef019f818d8209294ca2b5b67a63b26ff58421720bf7ca0b933b97bdfe29cfd0d41249fc0312e93c8d20f7c74eada7455f9b4dd9222aa5003329affef5945952e3c2ec99e1484a6ecec3dd5d41312417c0096b49ee8252a52c8b33f736373d25fc957c2eb4302a1cbc545b29a66f92f6c9066b9dea613a10991bea239b1a4d735054f000a5e68efd2e8064891d7aa39f7549c2e05bd7c8fde8c3a828218b6073ebacd59336a9a05cfb69529df3820f9a645bd50da03690d176db7bd78ec9d67ad647b6849b33d319cbd7317e78490e212ca8b3837560e3f552039d0cd0726ba194ed9bd7961486c8010dd86beaf6575b4a67d6b4bdc025f8e10d5abe09272e6c626576f9f47d5dbd329d82801f3ac231529d5b1b30609d9f12c60479d599d07a832ac5f92356c65e6a9147713a6af6d7ba7d953d4499e14deef8124ecd17c2d6a134f52afd1608191443e7243d29a3979282344d477dd90a994d8dae53e540a4624f0e82d7620683622aec998380554225c70205c79ad680203989b4943ba29f2c7d80831658524e500deed571c03c2757020a3cc3a42b05b7a649fe556e1278a4c47c162b273dfaeaf94ec7266cd6a496e6595417c72b4992e4a73bbb1dc9f1da605952cd3ea7021fbb939e4b856925de44a4e5245a4ede794df973065bfb76d9bd44adfee1cfd7a43cd6d772ef0d9538528aa7ed2e4d9daf68fe7e04418f54a61d924cc4e8ec850bcc8114589b461f41473d1d98418b58136ef221814c9383cad67353bcee3ffeb3fca47cbbc36fa6a5fca25d6e2d5bb9fd72a5063693f3638ef1b1395da5eaa0816c06fa7e41eec696b043a737d94d33e92bce8929475120f25a4f3327b3dbbd8e74a68d7263abb73fcee49d93abfc1923b791f7d8cded157e99ab7343c26f27fdfec845d1719f32f93ad987d8ce6ec4ce3014cea8f06359ec75ca62b3d1abceb4392d3f4d7129e4764cfdedf4b716d42dcc9b7d432fbf3b2bf0933edb9004cd54c507c7ed0d52695930c3d84795be1343997a679db9262e81d42225558af9485d57aad758bd9cf9e56bf70f2fd044a9b0f9c9a9ab28c944202d3af04a4c3c55d7d1b7ab00ebf6bd6e41e1b21d871028976066c453ddd9e840c00c95ca1727a9985ca5c29fab235f60261b7ee68747ca1fba9850299be01868d878b8c4949d9972d4a6c5637537a3b73fcde4e7507dd8e697bbcf720e16a4fbdee729fe47898019509eb648b15f5922ad8dd567f189a48d265f9ee0fcd48b9fd5f8eef2259793114613a52f47e9f55a375f38f98003d7c65c4e41c6507c9da43fe94081893ab984ee4cc88a94579b72adcfe1fe3fb0bb46e4c0db4f980fd46a4f697b5533ff6c7565138b9208aad5325d387f9caaab885f7e3f938ffad980a8fa75f2eda513f7c8d377be454899addc80ccf368fc812dab0f9384b1f8fdaf30d23d3303dd5b33686c70d8eea6e3c0fe049878dcaecf5819f6c69b5ccdcb598bd9eb85c60dac929208e1854e47657afc860e7dce04a7c81f35224c0ce4aee24c893d4de0cea8081e809b461350d3a527ec38acb5cf995f222797730e6842833985985e9856749dd04a9cd0ea8addbabd8ae5ea5ce5ef3a620ffc724b711994498dbebbcac7f3c22777d8e04e0955698522afd0a7be6c9315244e288ed209df88c237e7897119b3139d00ed4e299aa0decb2c54d2c7da9d4b518a3408fa9ff2fac4a5f5557c9d547bbdc2b303dc7bf7ed485f58d4ad01330365027db24a9c7ecfec3bac0f4370e27e93db797c3bbe0aec4c99a67d4d83aa854c75ca47e5a34fea8e4882a3a73792cd5fab915b3cd004b7f22680aa5bf699d4d992d8bb88b373459df75fe50f593779a3020a277049d9237f712e159e4c820f880c488a677302b795be1a8a8c2d9598302509bb3fcc726a38b1d26f9c1c4e22eee3e27121972b79772f7f9b3f3eceef9ebec80ff78ff0837c78bcffe571fea9914ff7f8efc5bf3f2dee9ee4c3e2f1d3f2e969f15ebefb22e60f0fb7cb9bf9bbdb85bc9dff369372f1ef378b8727f9dbc7c59dbc87e17f5bae1672f53487179677f2b7c7e5d3f2ee171cf0e6fee1cbe3f2978f4fe2e3fdedfbc5237ea1ea87fb477a513ecc1f9f968b15ace3d7e5fb45bd2679355fc9e5ea4afeb67cfa78fff9292f5edc7f90f3bb2ff25f9777ef1bb958e2408b7f7f785cac568bf7f2fe512e3f3ddc2e17ef1bb9bcbbb9fdfc7e79f74b23df7d7e9277f74ff276f96909eb7cba6f04ccc6cfa6d16131f71fe4a7c5e3cdc7f9ddd3fcddf276f9f4053fabf561f974b758ad9076735af9cde7dbf9a378f8fcf870bf5acc2491f0ee69f9b8908fcbd5bfcaf92a11f6df3ecff3400f8bc70ff78f9fe677370b98abdab358ae70bbf2cbfd6750111fef3fdfbe9f100508b590ef171f16374fcb5f170d3c29e7abd5e74f0ba6f7ea49de7f10f3db5b79b7b859ac56f3c72f72b578fc75798374785c3ccc978f40a59bfbc74718e5fe8ed8e88f334a2ecf018fdb94b54c12e30e3868f12bf0c7e7bb5ba0c4e3e2df3e2f1f914be4944b60fcf92f8f0b2474c513e2b7e5ed2d9e5e660c498cd1e02b775f2ac6f8227ffb782f3fddbf5f7e806361c6b9b9bffb75f165256aaacc5715cbcedfdd0361de2de4ed12d7f3748f5482737b3fff34ff65b1aa3803e614fc91ed46ae1e16374bf88fe5ddcdf2fde2ee697e4ba4ba5b2dfeed331cedfc360d22e78fcb158c00cc49e7283eaf16c8807789719eee25fcad5eeceb32f73953cadbfb1570a0783f7f9a4b5cf1d35cbe5bc0d38f8bbbf78b47bc63f39b9bcf8ff3279c0cde58ace4eaf3ea69bebca3d380fde2155f3ebe17e99221df7e982f6f3f3f9e321ecc7cffb0c0219101ab93a02756d78d80c397cb0f72f5f9e6231f9b9c5ce52ff2e37c25df2d167772fefed7255e479ee77eb55a324dee3f081c81e948dcf7a7197d5b64ef75e1c0d559914aadbcba89d0cb1531f0603f61e4927e9f9b7c50a66df9a21f019fdeb5aae7e215ea2cccf9cd2c85a95c8a52840540427d2007e8e863ead4400095475287542c12a26c7b4795a07b5081f88d842094956a1d5c3f464d8d93097e004637cfa6afd67ec1675261b092483aa90d2a850553429472678a809ea59f49fc68711cfd695bd70bff5bdcd139bff005c2f2bf8ff45da7399288d2b99e526af917507977fa901610aa08127fd7076d8143f92a714a67e04f4e738484f7b1c53ac710c5de71fc650c27b5a50d474642a41e464eaa76871ef59c06ca713113c5f4d3d9048774fa1e3e7d4f62fa21def465d51c5f0a75caf913e7883552c5a8d81958e06b2a9dcac83fe5042ed10f1dd406b6062bce6f0fe9e110b9da029388aa347bfa5e4b987c115320fe626f66d5d570da941847c221f8f3a088bd53f737347faedaf22dc89e2ce40e80a443a38efc0ba97bce66ccbd5df153b6804d99b9fe1bc889efa71e6fd5fe5f052c27e2a1d7dee88d341d7d76f6c0c52300b6677fe3ae440965bdbeb996ff7dd4caff4dcaffc6215c2adffb1bcdfbc4df6b4d691b93e3fe4bfedef8e4904d9c7e7099eb862e4714bf8b925598d8175cf0f3bdefe4b31973e65a287914547ef47a5a6e7a7d6ed9cc2e13a0ec337fbb6ae7f6a56b135ae384ec37634f5d69c11e4d700d3448826c3fe7ba5afdcc5196e4fc2cc28acaae4e9197f32f022f5980d74a932508237ccf0e4f210c329353d7a82f6e9cf075ce6c9e66d6bd3c30f795ab7a91155a9239685d6c64d05afecb2ec6fd5f7ef8e17038ccb6769c39bffd21a57bfcf0d79910f33ea04d31696de26cfa261efabfe9d3e3d8f3bed76df4ce9a96be15a2f6dacb4199be5694fbda0ee52cebbe76b63449caa58fad28a0878f82ef287ec6153785d5c026928ca1fc94e9b71107d7692e59fd5f7beffe43b7f17f9fdec47ff9a7ff0fd831ccbe68e5e53ffd5596bfccc944faa7bf9ef324b56946facedfadee6f3f3f2d6ebfd456cdcf78be7cb4321ef75afe1ffcfafbe1d5ac0c777ab78b1a41b9ae7b98879c9493ab8e23d0cdce05d2d9abf0733d5dfbaa5ec84c8827b83bc7bd8b3b8da1c3f245c2b43e5c437e9b79317db9beae7a9e36877dc1f729e5fd0641490e7217f999a616031ec75a171bf767d6f4bf7c5e964ec8fc49075cd0887e0779a5d67095d7eedb55cea1e42563dee956b3c8d1c3be7747edb1589a86495f44485ff7d3fe1af3bbc0d6ed1b419f5ec30858305b4bddc012eb14bc775542fab9c5fb4656dffff890e3ebd34b445f79ae3e3149680dfec016762c9ff9c70b2bfeee85252fe277a44e76ff50d65bdd388cbeed9fcf87ba8855dfa84e3f84aa6ea292d14a8671eddd180d2a4d6ece868577d402186b3ce1be22314854639611ada437f62bd5749719396c14d925c9dfcfe1c1936f8beed121e5251c38d5a0738d4c392c40905b1d82f62f79fa8c0d51abee42e4e6dd18a9faa6917b6c4d8fe934178f62bf33bd0b6ebf3bfe70d81ddf5817dff4db7d3fdbc5a1ffeb4cfcdf000000ffff0681696757890000", - "4d28e1deaaf258f4346bd9491c376098": "1f8b08000000000000ff24c8b10ac2301000d0b9f71547a1a04bf203eae6262e7e411a2f6968930b978b0ee2bf8b747af0aaf3ab8b84a7e98c5cb599c7c2a2779709a70b40ca9545718c49973e1bcfd9469e7b086e634b2f2ada4680d08bc75b6a4ae540b8b7b9fe392289b0e007066bf1c9f866596110d22e054bdae00bbf000000ffffa4aa3fec83000000", - "67f2f65efc608bfd2ec3bb8485e627b4": "1f8b08000000000000ff72ce2fa82cca4ccf2851b051b555c82f2829d68b4c4d2c5250b5430838969664e48384b800010000ffff4388419c2e000000", - "793124cfbcf9ae17892b017c666be8f1": "1f8b08000000000000ff3cccb14e042110c6f19a798a0985010bb637b1b43d2d2eb617c4d95da20b38ccc618c2bb9bdd906be73fdfaff8f0e517c2d6d025bf917b1b87de01e256320b1a505aa84a4c8b06507a89b2ee1f2ee46daac22461e5e9ecf3dfc4f4b347260d1660de53c02b55b9bd168939d5dbbbff8e9f5ec8083e0ed15d2d36508c4fcf38c6ee42bf462c80ca45ea111e06d03a28e2f3f748eeee5950ec2ef98539b321660b1dfe030000ffff4d5ec109db000000", - "87f5b37ce1e0e735c36a5ff25df5e896": "1f8b08000000000000ff9c7d5b731b39b2e63b7e45ae5e5a8a28b3db7dcef46e8f9f6899b2b947163524d51ebf2d5805921817010e8012cd9d98ffbe9199000a45526a9f7544c78c25142e89bc7c79411acefe7c7c7882fbc9623199c3c7c9c3643ebe87c7a7f7f7d35bb89fde4e1e161371fe0dfdf94339afad815f476f2bb8532bd7497784b7bffffebb10706bf747a737db00d7b737f8c3b715fd0aee9c52b0b0eb70904ec19ded4c2383b6a682a9a94702fef216ee9c34df5a6d60119c52a1823bbd0e5bb86bad7515bcb73ee0f0cf63805f7e7dfbf697376fffe397b7004f8bb180c9b372476b14680f7be5763a04d540b050dbfd11a469a0d13e38bdea828267e55632e81dfe522b2fc0ae216cb58756d7ca78058dadbb9d32a1825517a0de4ab3d166033ae0f4c606906d6b0faa190971bdc40fb587b055b0d6ce0770aa55d2ab06d72142d1f40aee95f7cac1c7c7fb11c01427f1b8bfce042f40f20cbeab6be5bd75e923ba25bd7248e2c76ed5ea1aee7997559effd70ab6cad44ad017e9a7a6dbad94c35b1add8897ee92fe3c3a2577ab56e1a8e556253278585b073beb03f8746ff85fa3bcde18266f90df14c8833cc2d1764eac9d528ddde16ffc96c69b86e9a7408711c0fb23d4d604277da8f2f93e2aa39c6ce3f9c47d5a1e27d02628d3f0629b4e3a698252b418bcb2186d24effacd9b6061873bf59d534ce77420ed691e3aaa6c5bd0c143e795f323a646cf15d5e012075beeaf44eef7ad569ef664774af8bdaab56cdb63a49a44b6cc8bef65fd4d6e947ff3261cf7baa6712d5db6c61f320b88972487ce6bc35639905dd85ae7e1b0b5d0a85a370a77d0f948f5afb613b534f10710ac65ce3e2045361be5035234b26fd86af30d6ae9d4bac30dc995c5a15b852b89819c584734b1aed10619f432559274ac5408ca091f9c0c6a73cc3bc4831c612f5dd075d74a07b54452ae4886aca16fd5f77d2b0d1ddbc34ab5f640f7f365ab0c9d62afe4371499c1bd57f82ba499536be51c8a70b0996dec1a97af04caf3dee95a8d0066dd4b57ebcf58bf6428190412702b9f99bd0ad62cf40eab9bb36dc275645c878c4b34d51ebc72cfba56a0d7743707edb737ef6829fabb53b5d2cf3849e76a9cbaa1ebc05bdea8205055c50fa509a043f1298e8932391005dc055ec85eab9ab649b31830eac01bde3bbb7172e7dfd1d03c1f8be9daba9d6a86ab345684adf28a786a1345cae23c41d581a5988c85a7ab32aaa0ac5348b79a6f9c665d5bb7d28dc804458647022b43da0778299e8f58d382f4dff857166fcaa126713c4ef0b811693c7fba9c93c6b7329014d5ca05a90d8ed85be3f54ab73a68d68e74eb91d0172f3a903a65f56d5d1abab38d5e1f5136912277d681fa2e77fb56553f3a59950412364e06ed8575acc260ad54c58b743ec046478e74aad67bad4cf0a4e6e8474c29a2ed41c1463e2b3c0feb0bfe7cc8e3f8d5b162f591f8afe7b9c84cc88e02d9118d1c1fa64585c28a8af8f4a0c3767898bcdfbdb3cfbac109901c41815dfd035965ad5bd6aac3b354e06dbf35da8953b45cd8aa9d385d08e43a2887a7425dc0329067cd634c832bd8dd5eb7da6c0469d0b169fa4dfaad3dd00291e582723bcf3b5147f866f8b73af1366b2a7589ed991412c2c1bef141ed61a7c2d6367f85ebb7377827754653680832b9708bd7bfd208bb5e2b17d9bfb45587adaeb774fd9eef406d642b081a798207111b5525ab49d3fc4c269fd8b320caa9e42a596fa11044125fd234497c7540207284ba55d2b1864406508ca0e0201d9af223aca30d210593560318b7de92309437a3bda0ad69d5c0ea480616219f6a3d2bafbdf46c32aa5396f75bdbb50d5d8d607ecf3c433a3bc23a36667aa38d6c138e1ab058fead608bfb9307a7f65d607b7cd06d4bf3ac14c8f55ad58137ba7776d5aa5d14b51ddde74a096d82b34d57f320920fe6953b5ca13d56255008748ebdc5a32284f281a8bd754a86c4c1eabbf6018120ea6eb4a9a5d61e110fa21939375e34e56e8f9fd4d2181b84a2edeb67d51eb36aa435081ba1329283d9e9042bd4932859526475fa9ce124ac9ddd818c6781ad6d1be558ff3ab5b6d15c6be33581101904c3021a9d1107ada19aa8ec4e1076621492d2156a119a0d27c8aa0041cd0906004269c456da0ce488aee3332260c4a93daed0a66ebb068f8a4cd863b60a39a9b6cfcaf1a5a2d4f6e8e80cea267031ba843409f913da143f803693952a6066b12b691aa13dfcb3d34141a351672051e8467e00c131ef745e0de11fde415a372f8624b48eecac8dae181900425f5beb931ae3a1c182b1e6cd005ef4c84e66f6a255cd37d5248d7966073d0a214368eba0f3a8ba253b064d3f1a0f5bdbdd4a33964c8c130e96964025d91e194e3223f3605cd7ba6f15486894d3cf92183b7e9c3546afbe96054d5fb83d0889ef23953c3a7fdb4c2b6bda6354804299a0dd70e36bfc00ffab9d0eca69996065637771034357459c2c9f16dde10e5af9bd9f08af35ef6268b5c5a94df8a2a0663c51f0050ebae2d5af5ef20956aa96ec8e88c62a4f9b258e891626e99a9f7c0fa6b7d25ce45671c6adc9bb8e70c2c7730c6177a39e556bf7a8cf7075814acd806c9ea50972a300c598f4a20a488a733e4dd8b1d13e7fe585740971496fc93be9224dfecc4f22775b9a632f2123804ff6a09e951b789f89d0f978fdf2287e512693f309b57675b7438b512b7f0e39ad01879bb6752d519bfa8a791376f248a60cd24411a00b656adb39191d88036e21a06df27ad5f271c9400c75c3b1b7a41ab5736d77482d68d49bb5ac11a107691ae99a11410d596fb522f0aa7d754efcace363282679932583028c99bdd74efdb34385879e25bba364f470c684aa80d89030acdc29f8875d81f474b6f6883337fd1ecaeb99b2c110ecb36688d3ea105a721f36488115faf53b1d58090ed14ef24945664c147d2256c13bafc61de84ea72649abf4a8f38758af23e05038d91954997c309189ab8c5c21e096b04180a15c8a26d935ec95ddb7aa9fb345bf1556b63922ec1888d8e884d3ceb7940cdd6d0e726923ce2f3bed07a583af74b80b62c3ad6d693281322d89d6fee883da557493aa6df17f51e73d4ba7a5e923503fdf6bd37d87fc9de0ef88ace3366c6db7d9fef92de0bd931a8b3aac37118250d34f4993552800c46eca0c9c2bd2782c3bc9f0b1bc78515a3fda4924d736060e939264cf1ca9a19cc2d1b24522b9ce30f04df39281040919509f062b4be0bfc5ab50b5cebe0e052cac6934fbcb0404ecfea8cda6f02762882a62f63ada2d8bf23a027894e81c109e0d88d02253e0da09a0d414333a284402e20a0df030281459f88ab6238147d0293b1f65390d615d2d2848e1280429b5f16cd8c8a223a44c68a8c416a8c5f987b84d476a47ac922d2e6fa410a88c7f5c67469762af3f147b5f4ee69f17307ef800b7b3870fd3e574f6b080bbd91c6e678f5fa70f1f2bf8305d2ce7d3f74ff82b1af879f6617a37bd1de30f70dd5f460c2c13878e374ea91d6ac2023aa24c65dd53042b489b249d101dca4c39898e8eae15ec5b5967b05b38ac8cefc13a518628f5ff550d69a12378798c41f568677a47b4812e456a22c3d93543cfd705f09a43eab26d550357a138f9d5cd484c24c12bfa3b09ab6c1aa7c865941eae8eb6bb628987abcc593b25e9b0b56d5b5527c898a9b5ee4c0c1945d7b991418abd537b829dde525cdf02318c795606dd510af21658166f224a475278e29ac94dce097a182495282c831569b91b3220d6ed407d577517485366b9bd8a827c5571d8b4e260687ff188392fdd3e0a93e05da08e59a1145ebca1a414c8dc9e4ba9b81fd2526962875287a12b678e25b2a6596805d173542b0f7f4dfa90227af288809cc646be4cf6b59c59ecad4b17a74395369093407856bc87524de5fbcc91c086e2d6b88fb57507e91a44e78688c8fcdd4ab3e9e4066ddef527e59436146caaf214b805ed05bb8ef1f26d171818c45f9bccf27055eee78a5338578b3eda7b155d603a3e9336b09e5e2be7d843de256d4e83d6d68918fa1a9e35584e13dcd18459fbe5185c1963a695440a2196bf4919949d6d3ab4d53a646d51c1beed3c5db2f4ded69a08aa4d506e2d6bd4c06b6d74f46b5a95c6d30ab5d37bcec9c47c9e09ceb6c0f1393a804049d0c607d9b603afae7454c6688f396e6b23034af3b2d11a508822dcc60631f0ec7be5f28e234904ddbae075a30865f8daee55f4c5641d5087b9ce7080e4c40e973c1b63512982a21a8ef7d92eec3b76d90509edc0394e3b4b5e237986d670d488c2453a50840f7a0115d18ca685afb569d45e9906ed432461c4f283fda15f1eac6d89a10e8e51ad0e3723f2da1371594a5d87b78b937ad40729ec9627431444f7977f33003ed98e97e3e93edf8e384a8d28e2cf53bc2767f8c98b8bcc2dfd20b782da2266a776aad1ddae4a1e57d3e77c90b87b5d77b6f32d6f43eef7ceee1d32797b843d9a28bfc5d353d434ee5614a30aab198d6a3c4ddd4abd63449802a6efe09b527b543db20e590ef9b3e8d79006602c55987e02868cafe4cac728219e4df4539f1051f26653763ccfd45ab3c9b8479448315f0925b3381b9143bcfbedd1eb5ab651185831a6c41caf55112f1ce32c32c6caed3e4a359e2b478e13ca66bda9bec79416a921b156ec14fddab3498c6ad38c7c2e77993b923d8a764344bb11b61d21dd1d6ff71c8ede97e1f9c494a2a02789ed50f546437b01efc0221eeead902bfbac4e788f336f0877764a5141423c85570532ff2b834f79434a28637db619e840ebe055bb8e5efe090a88c87575d3e7833866c3a50ee48fa51951334be7e85676daa006893c497350708ef45cca0ed26535c554c9716950209833e3a8b88ffae23ed8eb2bcd1cc3ad88f31a6422637902664ab4d91cb1720c4591032ed0bfe4f9b885e606a614f996b56e753826839dc99038a8c05819b13118c16908a2e11208dfe27e7d47809c6c8b34974061af117912a45cdc4755da34e96902b7a112969414396c95197c4393680fda3cdb6f6864028e380e327f1236d636b09628eb6abdb68e720d85d75af1343149ff4c9ec570f7e4e7a241a31346c059d0a4a74835d81ff8a091a9c9278f316cd82b8712e8c95ca867e5e802d1b2d23682877de72849e2d48efc14c42bda6cd65d1beff07a109128ae87ec5a1193410b4152fbcf8e6a08ac0d1ea1304b545e28993a8ed1b6470a34bc214443f9845393ca9ff7041a664016ddca47b9ffb501a7fed96997f43aeaea938fdf64b629b98cf98b1053422af9d7e4bf9258aba85765fbd794687bedde740c973039680a24c970e678699748870836a5dae9543b4e46d3e4d1300d15143232cb37a59285462aeab5a6d3452a454995217ec240eddca54fba99ec4b2d0d1e9f03b472d5524d12c23677726338d8a32f873a091740711161ab765eb5cfca47a1293505f329722229920a1acb1563fd39ad57226fff90a4aeb013945a96fe64e911c07b2ec4a10fc4f0038e5ae669a54f929168181d78ed5fc380558cbf146038a9569a23065d93c53bf1cdfbdcb34d09060af6718028ba49d1fff6a0be079531494a71d0325534061d6950424df8034509653a96531b74c194a7fb3f6c2d1c100d08aaa8586e3b5f15c57ab8532a230b59ad27194331478c55548d106af684ed72963e58261982dda04c2feb2bc213efc0493c5c552e453eaa50df95e3b8592ab8289d984bc42ef34be8fd72dce139f1df25c43112626a40366cf42bd829a7406e3648a5346d7253e91c94a3be3091380b2f5e27eff815c073837f97f06cdb6ec7a967f0c1527ac0bae1f91846f7ba65e592f753ec8efd7e76feec5e5db4c5ffd1e33abb279a46011b5af032e7f262a121f98e4a36674097ccf7463f2b5300e19eea94a6a01227ed8b1216d906e5e0c7917905de8abe86a518f3eaee2f95818af224c3554600d7845d8c3a70f483c3f08818f204c944fdc0b2141492fbbd926e001e50b7723afdc8874a93a7ad15f56ca31b800fac1e196e98634a61c4925113ebc72215e9ea67e8bad0d1d2280f3bd9702161715d490568e7146d02cd06baacb42d1ee17f98cc838069db0a8f863a2695d88920e76918c28a1b8b5628aeda179646bf46537463ddb5bd3148651ac4764991737cb551ac704b879c18f52463c0566780e5fff3759ff954ee25e4c89913c3b437820186ccc94bf9f58602df5cad95aa11fb8024394ee2652fc7c35bdaceaf40cece255fa78e252a4217d51cd98dafade3023daacad8c97aab8d7ae3946c182ef45e7eac8d12c996bd1e767e6983a8f244546775e783dd49a753a610cd5d5f616c82728527335d9fe9fc926c899b57477678c9dba4a2f0c4102216d214a51e14848f5298bf4298f52c5b0232830948c607a1bb04930844d064e065d07ead63fca5c06c68d64eb147495df40220e7cc4a27ab0fa3edf68a62f4c586d224c3e842491aa2de5f46301eb27a4e49187b529c5138f149b3659cb3ea4848ca825e36f1a71670758495a272418a38a2f573836c1c45897cca3a5c4e43ddf769a805c5ee04979368947edbc6871059684f23e143c3c3e53c7df9c85ab6adcf91c7d7ed66ae2648051eafeff78c1ca2a67c30b9988574279d73a93c26ab94a2e423df59bc9ed310cc4d15215574692f6d520c737be576b8e03c92e785a0ed4824d5f51b85275444ec24bca7024a4eeb697a259628bd4a3ffac94e52614d9b2ae0b64aa29a59eb568944b952c90fc078a91b52248de337b13a43bcce2d27f2380c7832c78d441fb78d8f595c47bf54fdfb0594130a5c9990dc45cebc9033554a84edc2f0185cf89cbfd03e859de4b0644a84ad537e6bdb0672193c4747d27eb8569f32d1f4a4829decd5115a7948ca9583e3a6ac1ce66ba0d8b8e976ca5114127dab9d0acaa1932683143eb8ae0e1d95431d519c389a1b1fe4c40884df518e43d6cefae207dab4da28d167e7aed14fc09f9153419e8a36d02ab309db9bec370e02ecbc61411b464c60ca14c0a9c7c3f7c5082795ad95d2470a0641dfa4e7da61960c0148c15b94713911c7a42eb9b2957d7bd43627b6ff37ce4ecd704b07ed55757addafa8852a457b4f6dca8b7cff4aa8f4b791189b6329a8c323e73041ebedc583542251d6bae43b726227f277a39daa437b3cb713ccd2c484bf8d601c3564adf6656543061331a49b23ddfc148c4a0a927df9efaae6583dd7746844c56956f405455b9d83c048a404d6128d396ebeb5ba3e0b45f777c14585c38a8f931424c336424c54dd670ffc2e89cbee11a82ba1cc461bc52886d4b15a751b7a82771e42eff30ef9bdc3690c9a49d5675f06d1e2780051a4df08c3a1690efd439792d029c243db1e581871e272e57dc520dae58c0abf94485b124dc7f08db8984271daef5b79f46779a2d2ed8c79653acb593e29d13d9f6067d9ef1ed64649f63ee92d21737a72cfa9302932f10b47e092fdbc9fc682354ae4a4043f01ea1312e384e7fbbbf813544f5fbe86eccf8ed99769a778714a04d0c38f83722a5f76de452cbd78d13da0292e7b053794423b577f03acc49a84663915e1ea0209ce0edc2b059ae34c31d08d96da3396320c407af1a621cdc20f798ab71f25bb93bd4a4f6b0a3d9343b6344b71ca93828cd30c098523029bb946391fac6d625aa32c853b6c6dff4c67abfa943605ca52d1808f2924be459a6660b850911b85669c7d34444d2b2e1e4c0f7dd469fc9b37d35717e60314cba677b5ab1b78a25248df693efdb0ec1c760a0fa1fd6e505b9d33a8c586a988264fd37f87c6da44ed7cfdf6866f5d06709d81a0772a66964af596df33b5c83a47c44d9e62a01978a0fa8da17a974a2539b02fcf4a24f2743dc4a1b8431820effc3429b2779fc04196d92b972ce7cb8587b9fc44af739e8b78215678102188c7c9518cd57967b3691f3353b1c6e40d699b4041a02c6445142c146a4846171cc7f5c9c7971496cc6161f2bc2b7896ad8e0f5458445b253dbfd551705412a164b0fdd33c72ba59c1e249a2b31013a7e5cb942239f49bac1286e032a098dc3496ca6393289928353e70e5ae4bf96bd2dda59733c8705e4c004465f667c1099ce5c50005a7f05f0d4cf0b14e0e9f8972295411b7ae6ee00fe55879953a84029551066265473330c4caab685ad222d6f571277a1f96be270122dad1d4b20fe851ed9419884211371956635d7266fb2ab9d29853599c0c92dfe6064e8ce6aa68a354c3530ba75825277d5b46de906254df959d7f32f5a9a83f83d44a0cf82fba5ea5fda3fa7fd4a6c5fec8aee7326563dd8e9fbb179f5d6b93aaeea211b20e561c7145badcf412b993ffa0acc76e6f0d29faeba89f5d05df9433aa8d6e18a28b9bec399d147c8335b174f18416ae33be82ce901f15a34771a9ec934631d7ca8be1d7ec6072b9ea56eef72a2b0eed070132ee70d0e83aa42264c24862f0c6d8ae63ac9bcb8054406af44fa368e6983b4c441572a0824e4f9d834bc50638e9228d4fc1796383409bb6b24cf1be62bc772336d1b93497a23cc3d423d1e47ff671658e1d665bc1b9fc7c1e7a657e9e48cad8dbeb46bd591ddf70099d4126d566d3964f25e2de88615246912353c56248b417c23e670e8f4f24e37aeefe91edb98f93f3b12feac7742a718a9f12a3963b2ec9a3635922bacf22373089450f67b1f0c626507db07f02ac739d7a9b1151d80ed51fab52723d08cd5cac69eaccb0e2bdcfd524fa93e2cf274a4f1a7f30ca9e60d0d041ee2b903ebeecd75d3c653cd95ad6a1879529c6a6c3691afc620917f59c2008cb6886def6040b6b1d25268b23ca6041a052d767dad259fe572f29cca3fb63152177059e124ecca404b4f178d52087aa068cc59a1bb5b9fa8ee8ceb7c79e591291873e9a390a1982daed43cf6ffd53f03fddc96990a6709a9fad8efc4ab04f76c1eef28b4cbc678d4880dbc4c4b4fac52d662395b206e8039011cec69b136e95b07df7083272281ae773f63e406acfa1731982177967645312a424a59036c0a544a88fe8ed3079665a9a083c7ee72b4d9527d9e0074be0661f4e93bddad4aa4716a88f630a6268a38d65cb4aafdb374ea231c4af866fa8a2bbf6f2cd5847a18ad3c4647ebb2893bc397afeb5d52b1d72483577a388352ce7e719562fad8e1cfa21811884d14f6a9caf6389e58ba6e0862309da34e88fc5863fbcbe8ca5aba7a9fac682b79c1b498d7cfe3b8f9578c779fbe2848827d517b175c7db5f4640cf4ac807e3dae1d732aa7f72e450762d3811a1c8fd9e82e6c5837aced7e717c8f81bee7d72dadda1106518367948b91ddf71d42064f372817e2318a830bde39e04063d43472f868630c70c4fe57f825c13135564d406c4e3aa812d3d9e1889a154c5de2b9c490665d6d6d5292bc7d2182d7d916f8c2f964f52606fdf8e60ba8e20b8b686d3f8757ab36a3b17e01f5db32128c76f1a8a3a1aee4720b459a3f3a3d2a075bc5d3689f1e9ef356e9d9e77b03e88bd0cb4f79df2379528989212c5444a620be4a4eb148a5e1de3aee8595905323fe24a8fab508bdff4d950867e296092963811998a63db2cda427daf11155217a8e461bdfc6ddfda2522ca124fa5374f9c404650b7ebda208de20a79aee85eb57a134ba07b8d2dca5af59e9a7be5029bfde2b3984239bb4484a789375f904449e5d2a76f53f53af7a61049c00ed43584924edcc8c0d9a36cc3915fa716a27efe70127521d700a178a00d4baf0a62b948ce24a08636f96f61eb285377b41d1f911411a5ae6297356486b6c9e425209f23d5a5d9a3612bd48dc2a9b5431b960bd7e8925fd9fe4888e985047a513aa73d6c55db80361cefb00e3ac372a9b8fe94ee559aa3285b7b154fd159dfad64db6b74554e5fb67ea3ea2eaede2c47f525a2173fa092142e283a79023f1d5407a65ade0be581da50a03336914a621f8f156391aef0e4940bc758e8479585a913552c2be4e0107af1f1f105210d1ef96eb8787ad9ebf174c50ed3bb0736a9f48a6ae3e28c21bd2def9b1c94771cbde354092a34b23e6a92d8a7862b9efaee02080e6ac2f29f8915f8cd35e1969d6c94d828a39ced38cb9656c90d950ee8c5392ad12adf4c169e8048dc4eaa2bee4e73a09999c240d1c3a52c4f8e65bff1a5f6bb88e9bb7d7ee342cf4d7f6eac61fac7ae787a0d54ef057e4b2c83d890acfda0515bde6bda5faf8ce226f9c5717e4c1ad5603486ac88295546e5a843a929b994cade70a3b84a9bba251d624dc04ab55a3d73cb85953ab7566c587db858e9f1f6d751ca2a9d3e6efb991aa49c3fecf2c5a333d046a4fe0dd4a392a212318ab33a42c1fcab639f98a20f63c89575740f4ecede06a356a480c1f08dd705084f39d2a611148f4026d00136ca6e9cdc6f29993f3862f1a2527d4f192056c4f92895482990c1a783f6a1fc988e1f6e50c2ac27046b8ece0b5e4035dc0a82a539b68228f6af4d6dddde3a2e33a19050dea2f4a0d722c59063262ab653b870adff31a26a97179b42521426be3973ea59d31b18be73a30e2286bcfd6953d2173a921016406c8b62a5776a2428c464d401f24ce45fad141a7a8d3a5e1bf07bed74ee4b95320fa9a39658751c45e387fe406d8b82d4d4a9203ecaa62572e32caecbae95a37c2f21ee3ed01f6b3e25dda4369b4e7bf29c868d50fb246b86bb31bcec8b46527d9b8ba12d258d599480b2c11557a8185a6a901167b8aa60d00932bf5d8b9d0f922794a1758902a378a5270d3933e25235db60a974cd29f3fc32539c9dbd78ddc1b5ba2033e81992a2af51a8b73621fd34845fe0fcf02e887fff7394b0632a722d8483a0fbd97b3c4a34f51d7cfa3625fcd06020c0a798da5cc8fb785591bca9a1b1480d2311cbf75e76c489d92464e359eabcd8fde0e51ec783e57098b830ec1db532b53b8592e6d938e4e8bccf3551dca754a045f3b9eddc4ac1a6a3c04fdc4b3858d858ca66ac5902ddf3a0fd8c0f3274dcf5a86d8b000187a6bbd36e49318ab9777667b33fefb7d251a32d2ade8836257fb261a5d21e2ff6c0e8ff3ccce0cb783e1f3f2cbf128bfc6504ef27b7e3a7c504969f26703f7d3f1fcfbfc27491ba637c80bbf96402b33bb8fd349e7f9c54386e3ec1110f3391e6a25e19c504152c67f4f7c9df979387253c4ee69fa7cbe5e403bcff0ae3c7c7fbe9edf8fdfd04eec75f4662f2f7dbc9e312be7c9a3cc00c67ff325d4c60b11ce3f8e9037c994f97d3878f34dfedecf1eb7cfaf1d3123ecdee3f4ce6d4b4e3e7d95cd087f0389e2fa793053cce677f4c3f0ccf74355ec07471055fa6cb4fb3a765a6039e6dfcf055fcd7f4e1430593294d34f9fbe37cb2c0e3cfe630fdfc783f9d7ca860fa707bfff481fa81bc7f5ac2c36c09f7d3cf53dce772469411716c9a1d3733bb83cf93f9eda7f1c372fc7e7a3f5d7ea5062277d3e5c364c16d46c6bcf3dba7fbf15c3c3ecd1f678bc90898820fcbe97c02f3e9e2bf60bc4874fddbd3384ff43899dfcde69fc70fb7744fb88be21ef1b8f075f63402587c9a3ddd7f1810050935810f93bbc9ed72fac7a4c291305e2c9e3e4f04d37bb12402dddfc3c3e476b258e0578bc9fc8fe92dd1613e791c4fe740ad52e6739c65f6c0dae7b7115edec30c267f200b3c3ddce369e793bf3d4de7971801e7187f9c4f8898307d10e9debf4cefeff186ce2ebfa24f1ebe427ff95fe1cba7197c1e7fe5fe2c5f05b307cc27b981cb902bc68b8239c7ef674883f7f86bdad67286041178451fc69fc71f278b820968e9d853a682c5e3e4768aff67fa703bfd3079588eef613617b7b387c5e46f4f788be3fb34098ce7d305ce807cc857062882c86b0f89479633886299aff3ba5ffb9cffe07eb62066fb305e8e8176bc1cc3fbc9f4e1a3984f1e3e4ce6244ee3dbdba7f978498be11793052c9e16cbf1f4812f05198084793aff90e509e92ceec6d3fba779e2b14cc1e50c668f139a9278adbf90c5ec6ef9653c9fdc54c40330bd138ba7db4ff1f670d2f2e23e8d17f07e327980f1873fa62479bccee36cb198469accee006710918e2f29bbc9037f7da1abcfe08b4ff68086624c0e2c07699704168285afa8971fd4219a46ad7c2c7aa5282df7b3e3373e3068165b34828e69dd6862b9bd970f62d0bd2de1360283d49693ea6476ca34a979ae0e27f681bc3195daf07327de616bd9f49c9b0388dc1f1abc256f8231379a9293a8ca599b19b8b6aee24756467287d2eaa58cd29f34dcbb496d6df3dbb1b44805320419f3c73d70cb8fb9061d83b9dfa0f6c2cb357a630823f2d7bb34d887987da23ac49807a75a5f0ae3fb0045cf5541dd828e317d5db75daa9019f66aa0a9688ed8e0968b1542ae3851e22ac3942b2a478e9eebde929b46cf1e38af955aa3c6d49a46bcd1992672f3bf1ac59d58b435ffa69f0cffa1877f1d9574ff867fe11446eed4bff9b3d8d534fb97039679971f8c0d3885a1f5cff165786e95fdc21d176d524f9ff77159558c28fa014e7d15adbd8b389c2678eeffb18b1e96c600aa75703dec5171738ed247972951e643a3cfb7b57b95fb232650c72fc3b82c0bdda6041450a125b0f02e97ddc75a7f8a25d3b3f0dc2d233e913fb5f9d6bd68f2a137f90b953bf531555f771a29bb400d36d1a9f3910228f4259b5eaec5f9d1fb2c5f09f5947d077a8d1c7c0170e79ba6794efffd91eafff7df1fa1d99e166321c6ad27ef35f6c28f612a035bd6e75410c9ddbf910155abeae0acd1756c5dbda7c6e4ba1d0951508a0ac3372a3299daed5b7b540eaed32bcafc4e3efa443be56ef05229cdead1656b39b46da8713bbde20009bd5628dacc5ce5fad9b2062f154ea29afb14bb5b4af014357f171fbbe23728f55c85f0d51e6d73342a5116f5cbea9817e206f4fd064811292a7a8a6500494cfecf9db3ab9fe0ba6fcb401b3cc4e6bcdf8c5df99b5c7db73ac2ffc63dc05c9ac6ee04c027597f538ed8ef5f5c89d639b27ccb23dc5a6bfe5dc15b18ef9d6ee1edefbfff82b6807f51c1a3535ea7ae0d7fe85a09b1dccaf053ee9ecf84a048c0ff10ff2f0000ffff539fe0b35d670000", - "89ae21d51779b8540143aebf69368c43": "1f8b08000000000000ff9491cd6aeb301085f77a8a41b959daba50e822d8eea281d24d13fab3f758562451d923a471fafa05a76d429b14ba12127ce77c9aa92260f076aca536239b249bca0f1672d2b574cc31af94b29eddd4959a0665a99b763b0ca4bece409d1a30b3492a90a532efad8437dfb3abe5d5f57fd9542a3642fc2c1215824b667752443de9929255d5b2068a9ccb6d98ac1fb7af1696cd59b7df919bccc8533e4861e05aded19ab404d5540acf2a241329b1c6d4cf3f3e5cff22f42da0c3de9a0bfca7123cce0cdc62ea8f6ef3dc16701615e279b3deac606db24e3eb2a75188c502eec7cc18021e1edab6ed303bf10f2c81350cc504c5fe4262dbb673c44b466b4ed98f551fb12747891f7030b06ca0289c0971a6df030000ffff6adc5c3b4d020000", - "920fdc8a8285bc442cfb791bcafe45b6": "1f8b08000000000000ff8c51cb4ec33010bcef572c3ed955e5481c41bd8004b78204e2ee868d6bd5b12d67034151fe1dd9e5a11e785c6766673ce364da83b184f38c3a989ef4fd07b02c00ae4f31334a4014d6f17edce936f68d8dbbb1eb8c8f8da510dec48f74f2e3b0b7147e5198f6909b97f33f3c0428806e0c2d6ee955c6c403aeee12bb18068572559fa16f2950361cf31a29e79815ce8068f162834741b9550088ae2b8a42142bfd64bc7b364c525d56fc6c83c1f97a8d9889c71cd05653405c4e0dacbe8a93ac35aabf2843eee2b4357dd950ac5168dd7cad7be37c811ba63e79c33408f5bf50c496a71258f72851d731304d2cd591d30fc452943e625d6b15dceac76cc2d0c5dc53969fdf7102b63ca922fd8e0ccec302f01e0000ffff7aa1c8be1a020000", - "958ad94ad4ec3f13898043ec59181ee4": "1f8b08000000000000ff5c515f6fab36147ff7a7f8a9d2955a0975efd336c9052758033b32cecdf248c0299e0846d859956f3f1d92deeeee09717c7e7f8f1d1c6a6951f9ce4dd1e1b996f685b13cccb7c5bf0f09cfdd0b7efbf63bc29ce2ebd1b50bbefdf135e0d734041a31b673cbc5c7e8c3041f31b8c59d6e785fda29b93ec379710ee18c6e689777972105b4d30db35b6298104ea9f5939fded1a20bf38d8533d2e0236238a78f767168a71e6d8ca1f36d723dfad05d2f6e4a6d22bdb31f5dc4731a1c9e9a07e2e96515e95d3b323f81de3e9ff0e1d310ae098b8b69f11d7164f053375e7bf2f0f93cfa8b7f28107ced23b214708d2e5b7d66b884de9fe9ebd658f3f534fa3864e83d519faec96588345cebcd28c72f614174e3c8ba307b17b166fd72b7ee90f5990a4d8f8a224d3e8670f939898fec7c5d261f07b762fa801856c5bf5d976842ebe7308ee183a27561ea3d258abf3246b76f4fe11fb766b99f7b0ac977f7bad703cc5f577d3cc5a11d479cdca330d7c34f68ff136721f998da29f976c41c9655efff315f19b3a540a337f6c08d806cb033fabb2c448127de40364f190ed2967a6f71e0c670658fd01b7075c49f521519c45f3b239a06da3059ef2a298a0c52e5d5be906a8bb7bd85d21695aca51505ac06093ea8a46888ac16262fb9b2fc4d56d21e33b6915611e7461b70ecb8b132df57dc60b7373bdd087055406925d5c648b515b550f61552416988ef42593425af2a92627c6f4b6dc81f72bd3b1ab92d2d4a5d15c2347813a8247fabc45d4a1d91575cd6190a5ef3ad5851da96c2305abbbbc3a11434223daec0732bb5a218b956d6f0dc66b0dad81fd0836c44066e6443856c8cae334675ea0dad48453825ee2c54357eba8836ebffbe113f0851085e49b56d084c113f975fd9bf010000ffffd5d6f12549040000", - "9878d11093909d531176b7e6da001598": "1f8b08000000000000ff9c7cfd6f1bb9d1ffeffc2b06018ad8c04677b97edb6fefd2a7806caf63b58ee44a7252ff566a9792d8ec925b926b4528fabf3f9819725f6439d7a7071468a2e5909cd7cfbc3070e6bf8ff347f898cff3e5f41e1e1eafee67d7703fbbcee7ab5c9cfb1c003e2be7b535f053067f6e8d82f73ffffc5e08b8b6cdd1e9dd3ec0c5f525bcfff90f3f67f413dc3aa56065b7e1209d825bdb9a52066d4d0633534c32f8e33e84e6971f7ed8faedc4badd0f7f12f03b5c25cdd74a1b5805a754c8e0566fc31e6e2b6b5d0657d607a4f0690a3ffef4fefd8fefdefff6c7f7f0b89a0ac89f953b5aa3407b6894ab7508aa8460a1b0cd11a429a1d43e38bd69838267e53632e81a7fd4ca0bb05b087beda1d285325e41698bb6562664b06903147b6976daec4007246f6c005955f6a0ca89788d5df4df8353b2de540abf5aef5522ef616b1dd4d607f08941f8bf5279bd337cec20bf2a90077984a36d9dd83aa54a5be32f7e4fdf9b92cfa5408709c0d5110a6b82933e6410f68a25ac8c72b282877653e942dcc7db690fda04654ade6ad74a274d508ab682ef6d85bf8974e677ef82851acfe95ba768d3ee3adad3b774515955a08387d62be727c809edc5f868908e269ba6d2cae3e6c41f128c1a2b93e895e9ad1f70d0d06da439820d7be5a07176e7640d87bd45ca6dd85be7a1b075ad03042b5acf329d005cac6cade2b2d7147774b9c23e2ba74ad81c4562f6bdf25e3978e562daf8a06439b90478b22d14d2d05d8fc06721cec703fb0c82b5a45a5ff6cac041816f94fc8acc20a6a68364f8131ec8a9ad720e6f136c925f867a2a1aa70b350158b4af9dccbf50bda1486540a5107bf9cc021e28c7c09ed88c5e9c0f2ea2eab81d6982201bf3ca3deb4281de22693868bfbfccbaadc0a942e96724d2ba0249970aac2386ed54001d445a280dfe71b014bf898a3a5246eb50f7a0d1aae053221103461df8bc89ef1f588712b9afc61e3abaa5459a1e296bb3f3249db5c5a54115812d87fca027a91835e0a553c8a90295c833f9ad751b5d0a69c865213395214b8f9b30253c386ab4ffca3f59948a43bb757441fe6a22d6bc66b48b93c6573210f142b920b5c12f1a6bbcdee84a071ddd1052668e8ab3121d7232c31345f6d7b6d45b545f62c5ad75a0bec9baa95496be384bceb7c51e6462790687bd42ab133b2783a61b93cb80ad5219efd3fa003b1df5cfa942375a99e0c9adf45c20bea21901eaea84ad8cd69ea873d8ab231958d6a9da40bdc21efd5ba7791380a929fb73f8bd3de037755206e56a744144951526ec95762289066d589dd31238e8b08770b0e0836afc2f70f1fe92621507d331d7a529c5c54f9760b75be5a29a0ca2d561af8b3df1c8d38f95dac98aa3a0a7981dc3603694b034e50f1485488cc3fde8d4d3cadb8c64a1244a8cbce75b9fae8254d1586ceb58e1c91a93c2478513c4709522738b8aeb8334a5ef44c1ded45838488741e8485bd2ed46b1660230dbbe083174784d6e18bcad15eea22acfb1a091deab12102f1c9488dec20f3528d8243219e09094831428c579dcd13abdd346561978cb57c218d338bba9544da1d4d9b22df818144350ba5545049cda56287a94c2809688e1e82d38d5b481020cabcb2dfe5c1d33da64e89ef04861ef940c0a1d75610df2325447be7d8c8d0dfe1c30cc7e51e45bc9833c5b5dd2fe257a47c73776aa53070c8c768b66874cef02275e429b523febb2c54381dd9023e14d3a38938136a0b65bbc672dbf521cdaf7641a671ba75590ee38894e533de37a1433290f71bc96256219282a25e309a539c60bb1f96d3a0855b26a46d57a1bd1067a79eb88efdd7792c0da2441b006e5df592ec5276b4acd5e1369a2a168b3cb7af715755db0b6150c06b61611e02bf8effbe87a9d2f3fad603abf81ebc5fc66b69e2de62bb85d2ce17af1f0349b7fcce066b65a2f67578ff8137df8697133bb9d5d4ff12f70cb1f2784a2cec1a6a89bc479eb22a63958f735ba094489521b2f24f209037153c9a8bca821bd0fdadb0a238d97c7887d6b794411f44ea4146d178c98a109489fc71a1396c19b073edf9b0c36aab2874c1080e98e4f316270073c3d394190f086aeb2916cdab473a2266a258d07a5e9ca835f9006d22d95d3cf32a0cb272a7cf8fec2953cfcc206aee92c5ea219f2b7916d51b74794a1b18e7482904526e201ba24036f80ce7ea83f3ef9df2e5097e848f0fe24315149b36be50e597671a79cd2466e837259b7003724205f542d0279dcc2b6a8f8b50ef167239264e0cd70f737084373f4ebd14cc8dfc9b2748a7ca6f4f0e668db371321a645d0cf8c166ce42ba2acd78c647449429688427bb4ccda11d5e103fb5b82686df09aecdf832f6c935445a2ebdc0ad79a17ac8f1e3ac11e556611be11b5a60db075b61e2e1103e06e0d62ef2d6d88b2a580403e55070a8ff042d144daf9429b523588c30c65287bf98c87db2865d88b6d8e70e6c49713f185d10e744ae65ac4de48cbe32e290875972cade2b0f07ec288461eff938c3601b748e6ad1f821a14ef10692386d6862ca456a56eeb0c8def59537a983200644da38bd6b6bee2dd65c38e5d06551da14143f77bbc04018678c8e157a2b7b4e879e2258a4aea5a393c7482011fe0ab520d9a046a40847a8297f914be100c61aa3cf2849c05e2e5e5c62b53280a6ce6d89316f80d21ca3e571ca08231eb40f25592638bfb085959b38b20aeff7a224427254e7b08c94650a3a0d91fbd2e6415f59a8d39e56ebc13a3bd63a4222368b44df43078e70e2b0dc01846e06f294b4f089a34e7a75e7322d8238a7c2b775e6192c78c9e4db06783b06f2948d67cdc575d7116032bebe91075926b1f3bc2e8e0e14c2859c5cbbd1772639fd519bd0459790bb552ac247c0baf0641fd170ed1f2b2cf080ad97a4e273a00b9d51587cf423a478cadb541f38e2a47343cfa55b2e9947012bfd9e73085e4814a4cbda2e2f157112a6c5e9c83741319d0911df0cbba645931cfd586c81cf6b6a25f098db9d08575fa3bcfa10eef75e202a3608906ad230c6eb798118de095f42860da452217923e6388226bd4aeeca8a002bd860452e8e7eb179709c777ac4f81de585713c8744a965ca7a154419ba09cc430a4aa63bcbc32e860070922b31275947ef4413a0ca9c90ba345a0ead1f20141428cdac403f900d695da4887de82b244689c4627ef50284d8516c90290c6d8d614aa4625e1204c4631f27870d6e3492210ffe2f544e802016ee555961058a71fd10af81cdd82cbbe7a419536b2f801c6678d4fdc26711185538389615455558a5f480e28f3b5f0acd5e1c42712951ee15de4df0a45eeea170cb0a3901dbcaab6a9fe9864b0690391c0584721bdd304663e970ccc88e5193bb191074ab7798910fed96ac7f518a678426c7229ba1a0a7d5a738181ea73319874ea4a5bf6d64189a9d00805f456cb4da5c0ab588421fe606a494b180bbd6a991985a5421a3443a7a4b7466e2aaaea22327204107bd8811f7bd548876a861bf808f76aafaa67ccc9021ac2d00459b00878c84233282dd7b2fb7b5aaf44777cb2a4137f44b50fe94fb69e005cb5a15b204e74cecb7ac015e9d9f350bec91e863313ed4731459cc614f2ab43bc196316d34809625c959c901873806bc17d6984733ec600090b7b50df82ea708440d1bab84dc2982d050b2e8d98921351be96533be9ca4a7992ff616fe180519a0b65eb7d8bd972189617a8141f3a7f19f944b10871d1a0164838d507312c23051b933ba7435006f8b05c1438daf603388997cb865b517623d437e538154e4534ae1399e06c7596d983fcc93a51d8aa5245974df9b3486022c4cc6066a1b9f753a3a393bb1d7229918d290fdf03b9728e9038855ae41fe92fbf03442ef1cf129e6dd5d6188f85041fac933b155d7a7f3f86bebd13dab8e4fe06a763af493a8d49cad920f7dbef23f5d32b9c9e1e33488ea509fdfc748921ca6efea18ad0d5c3d53755b481fc0d02b233e157ac92c5bda733fc0404a25ec350a5056b54b2292e6f68b3ebe1d3b4286cdd205ad1a107bef87795a250e7b8be4c71b096c55e1bf50e63391e92f1539f8364d1e693d50e6a0adf01821c6ac6d7210147e115ad0fb6964e57470c5a5c24ea0b861873188c7d00ebb20e90bdbc99ecec89107706cfb2d24c4e06a894f4816a717cafa3928e9a367d5641f8881cc2318b783c022863a1b65c8c36dcdb235c149b5d2941c0e0a75c82da9171437dcd280833ef89c229c70721fa5438233910eee3f8fb9fc9e075fef34dfe0b1914af699736c802f614839495e0690ccc24200efd273da957ae8c10858a67b20aca19f66711c5c4b62e5707b6544a340844d153caea65b523551130e8e1faee7c43a8f5ebc64bf7edf0a9ecb40eb3f2a2b08eab3bb06a37293a6c98fb11b98c9a65dbdea970418ccf422d421647dd454efc686b9d8855db7162162c37476f2967181e9a0b729de9f3ee8276e72d536fe6c5b9aa0a37693155d27dd2924153b59e1213e9bd2d74aa8729b795a8f86aab8de6ba2ba659f17bf6c34e37dc5cc6802d52fcc2c3e9582623d8637c90552587c0a1bfd104e0ce1e308a6784ed846f14495c252c9bbdb8cfd05ca8dd87512396e38434476a1476959e0ed30e975d60d6ced5c248d93ad8500222504e97bd25d4f21f8400eac61a42a7177c433cf157e58caa189a7874e397f186c236ca71ceea8f3ea89a6b4ce878c7f7c744c967d01ac22d74e66e2b1151bb8c164a75e631f784986d5fa08501758458030bd0be2b9391a26bb313b22868eb38b041e858c6b634690355a923aa4dab00e1fab3acf09427045e685f82db0446891814b6259cefc5395839f292ea99c0b46d77fb816fd7b17bce35ceba515535183a191039a9160d984190e1fff590019588cb405cacc9c053099de1eb10b48ca084604545e555df1aa7bca7f42946fae4cd074805606a8e204350751304419c038141fbeaf6afef8eeef3d9ea5881a5b6916c310a8418cb30886894e3a8057ae658a233c3c45f44d0d41fea7c2b57ac8819a9e34ed2c5009100daa022d8b5e2d2108376fd204e7730b21c92126637e88ad3019caaa5a602dbb6add8b1545a9a8245f73b165dcaee86b9266a64134e5230af4d415ce0e3a0e6c4c90bf2b5ddf511139386575ec10e137c2eda8ebbbab1a067dd69ca3528f760c277d2f9e0291c4c78654aca1cf5ebf67aa30317ea2b79e81af9314f7c791fa6e3d4d63a95c1e6c83d32aa568cf0f549e9fe2296175f2db15f7269479b12a351d41ade5fc692ee48c681f0abb75c3c4d0347ff971e1f9fb83bbe3861e2498613a71e7e3fe12e4ad0b58af8e47b48ff576e3c9a6f3831a0a8fc9821276b4c1e4da49e72fc858746d888c795c441af3f9dcbb7ec8a8215c3898631cfd23445744fba6e6cac5b6e5b47ddaad1ec494cc1fa92fa5be872cde85ba30320bd5625eca9c13511634b8ac32a0c924021142c504ebd05c686d2c01bd33d4e12b2ff3f81d996e33a5553d43fdbae2f8031c005f8475beea892c71865909c72fb5968b3c580a3d247db28cfd43d90de1ab8e0c673ade3e8616c5d6bef5be52f3331d042c2c2c4475204d49d8b380a8397e25359571220d9399536ee3df5650ad3263859ea2244a0df6d7162231937dbd896315cb49e75b68b8cafafe5e98b380a85cb87157d1bc1b89741fbed11bcaedb2a48a3b855c4ed8b4da5771156f65e5f0c9b3683b93de50217df07cb62e47f214444de49315fb1bd3801f072484926e9768334b6ad18c7f10829387b945538bea3e98281710f6042da6573148c7a2d4de4d8aebd161b2ca576aa08d5918bf6dd9fc2de11a838da96af489e87f28a38fc89ca50951d7b3736ec113b731d6a18e7e8b30d3a43e1d4d661d0eaaa4124e4ef1c9f21dca0e5f3a21ea53dec5585409a7361eba0356c948a401e875e2281c658b49574506857b4b527afcd1e6e23abde85ab21f9c14caae09a64eaa6a48f064d899319d6384b695885c4705b8f771b55dc9ad691073b5372d3a66c637ca63fb1d50f06517c3f54d13884d7e1188b6754ad4b337bb154c775031d8eb11724a896cd5f7e186fbe9731a1c1db0d4e987a7c71a8062fbd7391629ac8ecf3eb918819f3675d795568547df4241ce21b1ece48dadf50411e1906f089e4a86c530da673c44e19e56ccb1df3b44d97891f74a9c05107d26ecf1c499522693bb9ae9892d06062f4e7d670bddb93e3a4a9966290b2c92078d18758436d9baed94bf3543f94d6b0004a55d03cc11668ea0afc9e7406c12085f751ada03b6b3a5fef8ce22179f8a49b96886e30464276c47bab0913ae4fac66a8a6341d8707c55daa639c753ac41c71a32aad9ed90036ea65b4e2a8eac3d9b2e31f26a9b3765aa5f821cebf9e382ced07b313a08d4863a2941639f45931374555e9957f73ecdb5ac32c9d5d748f465e0c12a153a4c4cb8fcef1320b20872ecb92ab0ea8033ac04ee1e7cd9edae7a32b0e265ed4b7d88813ec87bbab643ca429c378e9e8b10017730c6180da9a9de819c19ea3f5710355624434dc992a2407d7812bd6a6b0aeb14e06e5c99f0f8e283d2a652a2fc6dee3c6962f460c48aa3f4f680ce6d59974e4541abd70ea5953eb96456ed4019ef9d1861751f6af0ca7330440108bd6a46b0cf82bbcdb9006d90eeaa5d7b546dfae0df8463b1a604f45268f761b57f0e3093c61a9696e411b285590ba220fcfd346b445374bc94d8e42391a86246c1d89a1a8761ab3704922d466d76a4f2952fac2b4f546b97e5234a5c654cbd952ae7ef2ed8b3c823de5609a2e06da37e8bb2b1978ac0b29bcc9fa248e22761ad0e84be783f2e9184fa709b1d41f4c87b22e8d0c8cb64a02ee67f4501dc419757871f7be9dc14c389e63c1498becd80db0d804f3d3124c4dcf9fe6dce30c9e5bfa7192b0639a461d5807418517c3273408c7ee77388fea63f76e64c127989a358d1ac468626a1c1e449ca647f4de27d211197641a0eb460edddcaf70fe64bbd7ecf5033de6b0b54223f382c2415762f4ddec737cb081318cf84e258c8d825d4be59c789670b0b0b3b222eb26db73cf49ed181504195a1eecadaa410d80fe2a3df5193da0614ab6b65dcaeef79287934c094ec530d22dd9b13fa98ebff2106abe802fd3e5723a5f3f9152bc9fc0557e3d7d5ce5b0becbe161b9f8b89c7e82d92acdc9dec0ed32cf61710bd777d3e5c73cc3ef96397e31a475bb580e0964b05ed09ff3bfadf3f91a1ef2e5a7d97a9ddfc0d5134c1f1eee67d7d3abfb1ceea75f2600f9dfaef387357cb9cbe76281e4bfcc5639acd6535c309bc397e56c3d9b7f2482d78b87a7e5ece3dd1aee16f737f992e6777f582c8116c2c374b99ee52bf1b05c7c9edd8c2ff566ba82d9ea0d7c99adef168febeef078b9e9fc09fe329bdf6490cf8850feb78765be5ae53762b184d9a787fb597e93c16c7e7dff7843a3c1578f6b982fd6703ffb34c373ae17c49af46da23ecb57b0b8159ff2e5f5dd74be9e5ecdee67eb279a25be9dade7f98a278ea77cf2ebc7fbe9121e1e970f8b553e0166e17c3d5be6b09cadfe02d395888cfdebe3b423f4902f6f17cb4fd3f93509ea4490785d785a3c6228b95b3cdedfe007227d808ccae126bfcdafd7b3cf79865fc274b57afc94477eafd6c4a0fb7b98e7d7f96a355d3ec12a5f7e9e5d231fc4327f98ce964053d3cb255259ccd9e1fc3441e1cd17907f461d789cdfe36d97f95f1f67cb739a8034a61f973931732077f165767f4f123a157e464be64f03e13fc197bb057c9a3ef1a8f653540fb1ccbb59eeb1564c5703ed9c5e2d90075739dccfe858eb053104457433fd34fd98af32d129016d1dc7cb33583de4d733fc3fb3f9f5ec269fafa7f7cc95f92affeb234a717a9f88c074395be1d5500fa3c8d00651d7e64947d60b38b5cb8b7eef13fd43bdb85fac50d9e066ba9e029d783d85ab1cbf5ee6f39b7c49e634bdbe7e5c4ed7b419aec857b07a5cada7b3390945e07dc99a67cb9b644fc467b89dceee1f972f746cbd80c5434e2449d73a8124255b5d66a40330bb85d5e3f55d941e8cacf609eea62bb8caf3394c6f3ecfd0f3f03ee261b15acd224f169142e4e36bde2e9ff3ea3303fee315773c4c35a5ac952bb16b020ac1c2137ae6b93aa470e871690ca1a57a56956d4026d8d44f5b0e9ec4c559be185577f464c407d158cfe5b4d677818a53c09899636a719047ae5def31156174c4d3f014ac7410e3a0c1c1b27be35348332e820e1e8f763de554664c8fe852e93604193b533d86ea467eedb0a78a408752262fb778353c71b7ba4e1fd31420b5a2f097d88ad9ea4a75cf4bf9d10a4f1616d63cab636c6d1555eb239eeb479269d20749110dbfa7820b21c034144060ff4d871bde40a54d2c6f41632955a2891d9af7a38bb6dc9ca0079108005a931e15ffab54dcdcd4d6fc9bfe66fcd6fa8fbff91f449d7ef28439e46ffe04fddf4c09edc06ffec49428231dbc221a49f043f7c471243706befd0b319e9c0ce7c73ccfbd36ee27b2fd083276537aaf63a4fe0105bf384f9bdcf76d30a272319e8ebe7c099d27e71930ecc1c60c6c6f9b98c8d3fc01e3add6ab6d5b653c27d2862e84a3ab4961fc43f7f222f608a9b05bd1a8601ae5b45b22711a8dadfb4f82f14a91aa88ee61d12b391c898a9ef2628ae5e3d59f6c3bd2d47e82623420f23df955980bd3dc2df72f7b5e7ec054d6d853b0fd2b4fff89d67fffd67f22c4b4f2960a04c3f9106bd28c2a8d15f0734bc4caaa524570d6e822be0b6c94835aea8a8b9ea3518dd1646a967c5e7a50229195ae1be6adf457f69082261f75608fe3f935c568c6b5b6a58aa3541f8daded3303fba4e2bfff393bb1ee231ab59135b729387b395d5dd85ac587a4d3abd5e2fe719ddf3f0df1f107d28aa810108e8d82bfd313d6c3db496f18a71ea18f27e4e05585fb205f4f1c0451886fa8bad251cac63e0cb72bde0e0f32e19995fdb1c11c8f3a5cfdb4773a1f9da15b1d35383dbf1dbd2a19a590afbe3b5b6ca9a912fb20fd7ed434f60a335eb1c1f8452d7c4ad1a8b83078f474f668f10d13d7e8c9036c94a86debd5bba2d2c557aa69d4cab4a083aafdbb7787bd0c9447fb56734fb77bf81f5f8fc4cbd254de4e4517a7eaa6b247e5e0223d7fefe690e3ea5ab94be007dd4e78ccde2bee72189e64f77a67400ea2d3e0e9cd9bfe854ac2147a2b8c2a94f7fc6cf32e4ea84bf0d440f9c0e353b406d594df593cd9a32d8f46a57fe403e3dce6d86dc48341fd01c842107544271c3717007f1fe8f95bb888c382f2abf2fcaed7431c51d19572feb2aba76d8ef0673c0ddcc9e2ab72e404ffc53324ad235b5a1fe1da5af3ef0cdec3b471baa27fb4048108ff90c183535ea7b75d9f75a1624df715ffd8955862cfa82f6fa0fe0ce54b850d31780edbfdcb035d83cd0d5d9104df6e9c6d0382884a6f9c74c7ae3e23d26038bdcc44c7cfd18a1a8f7c924a1b1aeb1aee38a8a9fb6e204544e2a97ec44ee190e643d3dbeed266905ecebcfc172fc4f97ff1e26559f37f030000ffff5a89e6dc90460000", - "989a41b885f6a3ce4ccf49322f5ed129": "1f8b08000000000000ffa4585d6fe4b6927de7af28f82536a0b433bb418049160b044e0658207b11247391e76aaaba55638ad414a9eee9fbeb2faa48a9e5d8634c6e9eec9644b2becea9537c78f806deecbe817f463e91640ccefd5eb0d048b1403ac0afb34c299373ef078280e7ac0fc7940b7c988573cfbe708a19ca20693e0e692e5006827392d003ce258d58d8630817f0291e481c7df261ce7c227848d345f83814c0d8c36f14b0500fbfe9930cb73d1d38520f7b0ae97c07f394a26ded85b024d1352ecffb4c1f67b3f51c496ef31ddc12fac176c4103ac00837f6eee64e4dc70849f8c811831af908e9e0702e43923cf0a4cbee756fe8b1e01e33d5ed3a40b8f923c9e3cdddceb90792821ceb9119ce9c07280926921123c5122e2014387e9cedcd90328154af4a0204dd080e49d41d37d500ab6d3ec522bc9f0bc763fdd2a771d4e8ea4b759b4fd4819f43990583f9983d532c7c60efd49d0cb7370f75d1cd1d94016b3aa6791fd883c76896e13e5c6cf5998ba5ec40287a8866409c0fc8a31dcaf1201c8fb51af63387def2d0c1987a3e5c3ae0e8934c49b0106844ca406271cd1d08cd999c1e23d473aeae1160868310a90519a69433ef832dc678d1a88c701eb0e44427b2245ba4305e9648653b35ccbd46697120f0c805b5142d66249e31c0b26207ef07d218d7848d78716bac4923ad316a61b34c4a1a93be1908b8270c563966768b3e99659abfc32ce6f424a99f0d0c5f94ad25485a05098ec8d1094d73f321091c7507125823a7cf5bd1b0d41ae208134a59c067f6ced96c73743824299645cb4ade39f7ae2eaf5f689dd77c2d613213c754f86456e4ee498d687ae8d344bedae834247dcffa3f06adddcc3dc96abf4fe34431dbefae1621494e1130e7e419adc8957d747f40670eddea77373f1e0e2ca322b65b92439f8a96a015f440ba7fd6dc64c3b36655fd5cf9c4bdc0275cd9438fe9e094c21c0b0a870b5020df90394de16236b553f563dbabe2275c6053c7cb0730c79e0458f7201973573d7a8ce91ca83f1ab207ce6af340e25e25bd8d914b81c148183556fa9b63a1d8530f818e1834c7e48da6d568e3c72bd7ec9c7bb37b956377f0633d6ac49e004fc801158bd521dd72c40becc94d920a795db8571adfee286dc72410898fc33e29612c74a764b4f9da3d3dffe6ee75fb1acea983bdd69f10c4d4a04ebd2ba996d5218590ce1c8fdf3b07c03b7b58b72c09842a30a903ec712add26859d96a4328e3d9c025e3a638f39b2c7429d839a04c198d5ae46dd3fd839bc833129ae9bab42da136a888a9568eb32b5bb68676aa06b875ab76a7bf1ae9518974acc93f009fd65d97caa1d67ed0b154a5f65e0118f0687c08f14296707d0d3c4962ce5d48dc5a7ddba5dcda75595524f2e30c70372436d3150eb72a1234abf695b1a933cef3f68d935905ca9373742c2a3e034c0b7b778d7d5f66d06bc787e03b7a0af44d173ce34726cbcd1d8acf6122d74edcbc051537375edc4bb6bc35e4a2fcf2a0372c3040a673dafd6f64f2c7afe89e0ed77f76fef7f7ed0ad95cd017e9e254d84117e45098cd6f9d482fa013ca4397ab686f0e60dfc3f8a1fe0cddbb7df4153271598b0ba58dbc1625ca3d46a84126af51303f038056bb395409597291d34dcd766a70bd4a0bee22dcfde53ce4940955b3bc9bcee17f7ee7e30d8598878d7e83ef3c801a503fa38f30983a9274dbd08e529c57e03e097649d03505f7a75592993bdb146c0b37533ed5b97eae72b1ee6c5c59d73ffb5833f50e5e70eded79aaacd2f9785f7555a71a90454d940998063954c78d2a66afe77eea9451d2ccd44c997f617482792122e1d1ce6a07f36aaad0316a153f28b3e7273f41a8fea41b8c059cdd424ee31f66b87ccb3886645b24a4ecdc272e857f9f5a664416afd907a68c24b9f7a9cb5236b936dc8380f64e98be9ecb4b958979d63fdf7f65a25f48973857686338560826b36cdf2d2feaeee7fd73d693eb77c67f411823635e1928429d7fc9f5929f996f96ed12330e2271ee7d1f573130093a413f7950d3f57235ba39b818547729673ade77c67c73453e205bc05daaab52d18a9e779dcca4488f3b8373de07c9a7881dc2d9feed64f16cd7d159aaf6b4a77d594da46b4822a9b24695ab196f82aa4aa8ea945ad5d6e2dc2111f293b0bb3bd5c23b8a74807b65e6ef3cb48cd8bad7ec70201e5d8c4a741c5f5548497696d5377aa12732bcfc613b9157d9311957eb154cea8f6b83c68ce155d7bda327dc545ad44a1ec3967fbdf63f414c222f314a70b7727711aec4a3ac68b1a2f259d62c5500b4f37ef39cb3c558af9383315a0f8215d16af5629d65aeb128d6cf0a771aa98da5fb6fed3a749286778699add39f7df3bf8b56ef30b7b8a99e01d86b047ffb883df873487ca5e26af1713ae19d35742a872764feec3dc1f174d66d13d6160a3688e55a269a769a4ff277a2a03c5cdee2dfe7b02b59ee4444ba2178c3da7c4828f9a4a8edaa5bd4f732cee4b0301ff175715ff5c6caf5671869ca0f9f967463d0ac62aa0ebe46d1e53bfea7d9074c1502e5febfcd4b9a83957497520d13874a04fb225430786f5d17a51b0e5657acecb105a06d5824f0ad34c2f32f0cb12d3fd4dd28385f4dcdf203d784e7aee3f223df81ce9b9bf4a7af079d273af905e8393b2defb815674ad75dd138dd4c31517985d0358af1adb4642cc35804f51bd1dcb3e8752b71cf80ca6f01760fa4c451845ea31ac4aa6ae54adfe74b10a705819d4b5efb00d8b4223b29140f3b799dab5d1ae1ee27153bd0d620eed77fef3fc7be6c6d55ab96be91be96e67ce7632c7e3974f9f496ab163ce2475f87f2654dc4b42a54ebfaa243733429dba3902b1750373b26a37b940495fcc57ce7dbb835f3613879af0136733a85e7200e00efe9194637a1ab1fa32a1515a53b50385a785a5b3a569bb7ed576d4d759a7493b7dd378c64ac6badad9c2bdf09d7527ced0273fabdd66cb7ed3fcd3e1a01af13ae1e7afb95dbaa82c8058c755ca57919c04ce284ab04c3adbd90de6051e59239fa22789cb145563dca2d799dc66b53a172c7349727962f6d3c9e205f45f8fb572e5a2b4ac7c30602cb8e7c0aaf20f5cdad46978ab10f173c0f556a972f9f622b15e7a0d04b8cf143d2d178fc671eaa395484f1a562532ef67417f5997b508e9cfcd0e24620a6791c9490c83a0e2c2abe8af8dc5c8fd9521a35d47bed4ac2d9f7e93cfbed55d863a3865ae61b158f840b8bd0a59eee15a5bd490199a47bcb48ba70d56a091970ebdcb28f8ba42854a84cbbdc097e27c07efeafde575506a21fbac6369bf5c4558e321d5968a629fa2a625776b20ab97eb35e37a51f27166a16bef6a93fd6a9286b9df84d972910bc6be0d4c7ebd5b6b8cf8d06e5bd73b5cce468ba883384a69b1dd60d3361ad030d7cf95c8d33ef0113fc361acaed82d9bbc60f0bb24302621adf3246313c05320e5b94ce4fe672865fafefe7eb9176e17fbbb24c7fb2a67fba41c7dff2f9274ff66f7cdfdffba7f070000ffff7f9eedca9b190000", - "a61b972dce26544398f591b4e2f715f3": "1f8b08000000000000ff548fc16ae3301086cfd653081d16693172f6bab0a7253d95b484400fa514c51d2ba296e48c4634c1f8dd8b1453da8b0edf7c9aff9fc9f4efc6029f67ae83f1a01f57b02c8c393f45242e59230812b96005638db08e4ef9a8fbe83b1b8f7918cc183b0b215ccb5b4cf1d34a8440fd09bbba65b87608e7ec1004538c0d39f4fc00895e77f02189ff5ea3f441f19935c8fffee3abafaba1186b6ccb01eba8a05f0f13b918d2bc28d6a0dec52d62440988c5c51c8ab8562b3bf6390440a9ea4c3f393a495bcdafaf85ef7390aa6248b5446190f24849deec7b081221e9ffd17b13de52cb37ea3bbf7323a496ff29f670bb6385cf9b97226ecfd98c52c0c5f869044d17122d1ff4ce7828d10bfb0c0000fffffb4a36cd9f010000", - "a78ec1efc51b3e38b6dadd6a4eb2258e": "1f8b08000000000000ffec91c16ed4301086ef798a91e9a17b88370e5024df40454ba5422a01ea1139c924eb36f644f678b7cbd32377bb880aad8a38f5d05be2f9e7f36f7d1b13ac69278cba0058351f2ebe68007172ba6aaede7ffbb458b6d60b78052b82d67a132c46980dafefc339a17338ee22a3933d0e264d7c4de1d6faf1dc06ec98c26eb11c29ef3c70b6146ee36c3a3c801cf569c22bc36bfde7cd3174cbd1f23ab5b223b73c396d939d7a1970a66833577ae37091a979179880d7f84013113aeab1286ea88dba28e1865a0dd7d6f7b48d05c04c34e517036cdc8533236a109b5857ea5db9b5beaed49928002207c338eef6496738d8bbfd37c048a0a4aa0ebff9e0c70643b4e435883c128f920a4ec92f8ec7957c2b7e0f578d52ea7373fefdf2a30641fe6fd430fc276b181ec3ea277ad5ffdaaa7eaad571d2be53649ce37ebd0446374f865183f99902968c91a3dcb9a938c874a66bbe1e51793f2b5525d5eb178fcfdce3a5f5e9ee88c7d426cfa95467b27af322f2998afc150000ffff5890c13743060000", - "a95877cfc2957859690620af727512eb": "1f8b08000000000000fff248cdc9c957482bcacf55a8ae56d0cb4bcc4dd50bc92cc949cdac4a55a8ade502040000ffff8a41cdb420000000", - "aca00e322e929c273fc368300d882a35": "1f8b08000000000000ff6c8d416ac3301045d79e530c02830cad7d812610ba6d43a027902559119134421aa58bd2bb9786d4b890d58779ffcfcb4a5f94b3a8a301f031536194d009e7f9dce651539c1ccd6d5954a0e99ecf3934e7539db6a9a3a9023af1d2ef9032d7f17483a78bc37e2f6000b8aa8287abf241cdc1e20eff56e3d17eae7739002c2d69f4c9b31cf00bba958d0763a428442c9e70f57c9ca9f051458bfdfe359a613b78f3956d920fbb77f8afff4e2db1fc35dc3e7dc34f000000ffff6041fe3b1f010000", - "ad3cd1c511f6e620beff7f7e5adbd878": "1f8b08000000000000ff6c8fcf6af33010c4ef7a8a2110fc7d87989e455268dab497b6b9e4dca0d81b4754968cb5ae0c46ef5e367fa094820eb33b332b7e87c1ba3a6ab550401342d40a0016a84d9facbf0ecefa61bcea647d1d525400f9af5bfaf165bbdfbc3fac5f374fab3b05b4c67a8d692a43c7b17c33d63f5b47392b559da8fa8c432b4d6f5ada33b59d334c1ac5cd8b258f5c2815bde9e229f01fd9d934c9cb19e5ce3438cb59ce0b4f23cfe417e31b72a1916a0c3d6b985829e0681d537fa5a4b172434d9741308a8f3a5451173f164c9175a196f315ec11ff0e3da5ff9830bf5722a5da583e0d87cb91903cf5028e0bf9baa7b4951d723e0704e397bf339db8cb39b29cfd0e0000ffffceb536f291010000", - "b6547a26d702f0e315541fcbf39aee8b": "1f8b08000000000000ffc45a4d73e33693bee35774cd257615a3dd37fb55959c1499b6592b537e2539131f21b2692143020a004aa37fbfd50df04bd24c52ef65e732924c361afdf1f4d30da445ad0e0ee1b5ddd5aa80a52a503b841fe108ff98fdbb10dbe714e68bc5eae5759ebf67f913bcae574febf90b641bfaf85bf6903ec05bfe90ae811edda6eb970dac1e61fb9c6d205d2cb3d74d0aaf6fbf2eb38558668b34dfa470f769feb44ed39734df7eba9fc13c7f87b74d9ac03a7d5daf1ede16db6c95c36a0d0fd966bbce7e7d0bdf1f7981b8bc58acf2cd36dbbe6dd30dacd345f69aa5f9f6870de99abe6ee7f922edb5e8179b09f18f193ca48f599e91cc8d109f16467bab76ad57467f8206a5763f0b21ef4169f07b84423a0453f167a59557b286fe1d6393c91f0a5322485d42698ab641ed25891500502a175ec1125a5da205bf570ee61f16911e4ce835b1bb5a1665b107d7ee1cfed9a2f6e3a57f26b9a0eea1d84bfd810ebce1575fadf9b0b20912e909750fb22c15a972f9d02f829e38edd122b8b6d8f7b2a42effcdd86fbe07c6aa0fa5a547a8ac6978cfd2e2e54e7767f07be9e120ad57455b4b3bdec00ce630363ffcd04b753f90a8207afc0aa80a94879374a41a96976aedce611ba357d804de615d016d489f8d46908557fa038cbe7afc07073bdccbba9a4d7473501ad0c6b3345dd42d39fa5bc639ed55b1ff19eec8f064583c484ba66a4cd9d6e8c05424c699ca9fe8ef638b290d85d17fb4ba608b9c94df4f4477b183ca82397168d53165e52496e04ec5e5b5f150a25547e9d511e164ec17d74574143b1b2782b1310fc8587040eb8c26d3a1f6ca47870e2abb4b3911414a78951eb57741181cf81b14b5548d8b3acb5d8de4b2a98bd97a1c4d1a0b744e5a559f41e9ca2afdd10515424b0962c1c99a134579370d265993a3591e6a519866a7349657162595e3c76edbf4d70bdf4f3d248bc2d852ea023b71ca893e9549e21a0b7550a8fdc894a4ce696fc06281ea3835dc6d4c1021d22852653d811d3713e2a7193cade7f996706e9d3d3d6f370240dec3a6ddfd8185ef82d2a36da2bfa780c3d032363ca1c0ee0c1f566aef185ca0df0748d046ff885f8bba75ea8809c5515d9e548909587396b53fff58594428cce16cd5c7def781e94d1066f1604dd91698c0c1524ee0adb84ce0c0a5a83e93d90fb53c0fbf043907b495b14d32720b47bce3a7c292172ea4fd5f667a12a4a98a9c934409c5fe4aa7845cee4c6b0b1c00de041bf3775266260076ffefb68f49d65981832a08bbcc4ad2b0915f30a13c4ac0615d2760aa8a82d0c4afaa3918ebc376fd1eed49390cd2bc95da550188fedacebd89afed18c45d1913b664af8bddb83d25813c1cea7367df90d532ae1c75bb5489f41fa79aaa12903ef847353762454507840a13e166b221de6207ff1d964e6414b275e8f8c1206cacaa37b023e58f6887052e3d4446b8f46810150c41b0de1b83909a7d345ec74528edead5a592b3202e37b097b6e45274400b0e4175088d25472607123d5edc8fc2927f755eead285aa206bbf37edc7fe3abc435cb3065170b4b13757c8edc0a1a738f07b5e5ce904b401e95c6b09731d57b583354715fd23754486f192acd1d8efa541c756eb4a09ff351ad8d860bf8809da635d63e15b59d34a07b4fe0c8c6a9cce83b943519c412aaf590773a158f0e88d5ac99daab9869a91192b63bbb2b8b3643e1ff734d62816df9d2497508cc63d34ac7cf5171a47217d16cf60ee4012d38821ec0de057b48572546cc82ef1554a9ece63c18b1893b68f8b8866c386229691c31aca015323587407a39d1a0ce0b0686d8ce8c19edfdd87462cb1ecf064068fc44abecae65063f8b14300654be69ce74b0c510e2cfed92a1ba8a3ac6b731a69eecda8a60c70d2336ae54942fffc0feec6be64c1f243fc4df276879519d3bdced43d130128efaf2289cb26ba00da1cd32165be6873aab1fc40d26a2f096baa4a15a45787385d218ee653fa2ad7066cf626b837e26a7c3548ea11b8cf4bee52c6256d26c47fcc609dfef32d5b73afb511623ed94623cf50ec8d6142302edd136cd657c5205631d2dc9cf42db6db430199e7671158902211cda156e806ce17ea31c5741ffa37caf32fb1325137e6ddf58aa1f1e2d60bab0a0ba20a81adc434363af6108c1517cc8d7f38494bc6561d0c862418ab95007e25bf077515ef8442bf678483883ebf83d7271b53be0e848518c4183492b1dcbf27ac414beda1ef508c0454ca6b5292404c8efbbc436b0fc6e12f11502f6cc55ca6c4bf63aa0135abb16aa56ce407bab1454a65b1f0f44bf7c91db050b2e6875449fd783db08eb8c1d85953fbdecb0cf5dd416d9ca7f0aa947761278a76e2bc0c8d0fd53cea912800dda8e2968a9914f7afd3d8eabae4f08f09d7a84f1ee74be85f82eba6152140db2fc34ed471aad3986455c64e33cc813c4a5573efc50a0e1ce5a284c610d194857d1aa083bd39510a9b9d970c29dc128145e98c26b183b0466a8d1642ffe8f75cdd404283a56a1b285ae74d13dabb96ea1ae9da77c5f835cc2266427cdea3bedc44238941f63bb9a096a4f208099ad679a25c172fdd6aba46c92f1907aff1a1171789556c2ab90a0e6f4c707d6a58c760486eb5d8982377a9b2f6c8e389116e6be315f19dc268327557796935a52f9ad8abb2c14a72d0abeadc4d4064e060dd9c8558cf75eb9c0855898eb0cbce891c59bd93cfa176baf16caaaf8bdc5df44bfb3d8ae982d74454fce70c16ab979774bdc8e6cbc9e04f888569087a3843bbb24146a45ea38b1632a82c0a3c7828d072604e4a73570604fd1a3b34d425c59d7509ec5aa718c728b5345ad7770db5fa8233f8bc5735863018a88420b2a2e314aa9205ad2363412b069ddb6180d813898b8e024e7b139bfd8bb9007b60242c74d03e2007819edb9bb62ea134e0ccd85f222251477a0b8ba4dbc1f80876135c8dc032993050ff6199b250405ccee1fe156503b08ab19cbb4f23ef8e4750f73d8da4b4e3882ab1229705502ab1d1aa3a0b3ca23d5fab0f779fb2f80cd5b7a964f921957601bb6be31cba4444ec8f55d87907778561261a2ad6a7253f486fdbc092193c43c54fa09627d7aa409845d0a6c60f2a3745a89f636a3f61a89d3264c891ca132bc57617bf86199a64b48c7da32c98e1836994735da98e3d78675931751d018ac6d18491141f68e9d0d27ec3b1e2d2b1a15735bb5a7dc4ceb323882e2e13a6a7d38635d84e180bc1b660b19681158707646803181d6bfce0e1db8df6408c79cd0c32aa36651864fcd9ca5a553cdd816fc40303e5cf42de93bce6e06b46e6085c703b3a697b27abc20c395a9b77d38ff14367f11d09de30ac5b532731e6683394a21d5b15df5c3be007a7830b1481acc5d6c39258baafd91642e387f12ab824f8e89b4690e7c8de14b54cec717d1eed0ca4ef39387e3dd0ca3321261dd814211a2e61e3d9c35fc0841860e235c6d7efa4f4052f528c399a57bb659f196495886ceab6e5e9ed467e41d74d127992db653297a80aad132352dcd9d69b4137f2027533d742d825a3b789f35d64e4c591c3451bc9dc6f066f033f8979947c2f304e5c09f6f28823b4ec341aa14c182b4cf8c8687f7f7353911c52d35d98d6faaeaf76239e7a11ef0719486c0fb58e69a36b6bffdd7d3193a197836af1f59910ff35837c059fe7ebf53cdfbe0b91febe485fb730df40fafbeb3add6c96efb049b7f0b85a6f9f21cb2f8e0393f181e2e43c7395c33c179fe61bc8369fe0d7f926db24f039db3eafdeb6dd7a59ba81d51a16abfc211c26c2ea918f32ff37cb1f1248b3ed73baee1481d55a642fafcb2c7d802c5f2cdf1eb2fc6910b9cc5eb2ed9ca4242ce27b4b6cb3ed324d44beca7fccf2c775963fc5cd10797a9ee7dbf9afd932dbbed39b8fd936a7d51f576b98c3eb7cbdcd166fcbf91a5edfd6afab4d1ae656621880a830aea9cf4344d6a18728919a67a5bba1853c10fc5a253d327132151087fa107cfcf98d1147c0aa3817a2e6ce2af78502c19942710076e548c4711453a738bfb845d761dc00ee5ae6cc50ab46f5d18c222ed217765311e4b03e68ad21fe174605c3890ed52955709340953d894107de50b922ce40524ae965d2c9e2224c397018daeb56c76623a4b509f32d6bdb4337b20ea0cff82cc47fcf88f92e96f3ec255d93af975974e6bf10db798cc0fe701c728a82fc5d2c567960d7abf50636cff3e5129ee7bfa51c79fd8a2166f27778c8d6e9629b40960f9f16d9439a6fe7cb446c5e5362ec09a4bfa72fafcbf9fa3d8921bb49fff996e65ba6f3f397f953ba81bb3ef46f44be58ae365b4ac1c76cbbb94fe079f539fd2d5dc362feb6491f609ec7b47ca7ac5daddf27f649e0f373cadbcdf2b0bf39694a5dc4623b7e6cb586ed6abd1dab92a74fcbec29e51b036b589194cfd926bd17f375b6a107b23c26e53b90caf122c2db26fd8b3b0abcd8732ad2dfa9add9a41d4084c3ba7078973ec073ba4ef9024502e96f690ed923cc1f7ecb68d39dbcd56693c540583dc2e66df1dcd97426c4ffcce029cdd3f57c2944564d0712379a5745e4ec286b55523cb61aa9bf2f706888c534f879ea393a72e0290e27350b8971dd4b89915e85ccc3462aceda4828bf7920c6c545f9bd693d54ade5f211a873e4b982d9093a6e0bbc89339a61a341c31d02b72ccd70358030ab699b489efb33e57377027629289886f4195966c6a61de1a4765e793efeee27cc3e92df497b11e7f677a3935c5158e3dc8f8155190b85690914c277e646b199b80fb43760e8c56146e8e7c55d18a4d12393839f0bfece98166a72df311bdb1ffbdcf70c3a9c584d26dc617f77ee3e09cce9ea8188cedde14040e94de4fd3fddedeea36f42fd2072297b054bfaca1247f6530e2a55633913625ed7b7d6ba59092e570957452aa96aea1e0543fc39c2bbee87348df4688971c4d0b4df1d0dc7cb3de804f7d46d776d8656a12f179330a251ca946112db20c8caa3851d16a6e150088ea80239d4460f6588582c57c8bfbbfb7edfc9a89c0fbd7381d2853b13d3fa7cddeb49a20014c54e8ca63d074bd9c8a030836773a2b63b992837eefe6e6928ba3ee5f23889127c5079dc038ed50adea59649e9164538adb74775a4dc4c8f68f97e85624edf281fcb3f8fe3263be6c30d9e735f8310f107a545df3dcaa351d4731644849c475d84a67002a6fdb80e036a502765747d861d8ac694a1d58ae3baca505b48bb0b439ad0930de2361e4fd29644bed0765744c22cd01bc1b720dc1e349ee0883634fb2364b118a7d0f7370237cca2f9bcdb08fa7f06b901be22c3b8e0f7525f6caed3662fa78a006feb7c79ed85f7d25d277c34ad2efb741edf91bb92cf2f8a1b2ff24ccf39f51114bb7584688fd8cd348740ebf4260f020129a7627f0b6b72643bb265970883822755d76287f0a18edc70521029fdd12ab7277b77efe9b6d975beecc275708b989c6ddf875dd527797654adc6378bdcf4f2c854adc1d031bbe2d97eb80c17ef14953cfde82e2624116fe48d5d8a490cc7c8c232b91a0a601d55ba7d622746f17775907f3f5c571bab3083f42b4f6aa5eb0eb9eab3e0030cce94583b1cfc7427ef39a7b88ac89d396232818a78914a9bd149770f2fd18cb74f94e321fe78b7b7af609df6180efa3b4513c22b3e372b64b0323a6f0e07acfb4b04f1889dfb9beee4956cde0507d58e5e5e0f8337619d0a444403aa87db2b2ef7618e68f5300e24eed045f286c7d1a6821c4ff06eec976eaa2d6e1b65fcee9be6166a138e954c05f306ad2a24c346985cb281c710c009033b9e4bcbc9fcf3f6e61a13cec935e3d019a5152162c30dd838388f12a4356455cedab0fe49b2f729eca29d39e3ff6889dc714d575a84c9986b6b2e2a03cb9889ff0b0000ffff1d99f9c4fa2c0000", - "cb9f04739ceb356f960fa53f13efd3f3": "1f8b08000000000000ff3c8d31ae833010447b9f624af8053eca4f957e036bb0426c6bbd5b20cb778f8210ede8bd3785e637ad8cd63025faf0f4b886de9df31eff45634e15210b564e2ca431ad68eda47b777a14bea9aa62b3a239c07bd0b2e0c826a86a21606361d7dd997dd21e1752866ea4c8974ec2b06af4dad9054b33865cb4e2efca8fb7368c60912ce793b09a24a4b8ffeadf000000ffffb2b3ff10d1000000", - "d935586ff49465c8710f2ec7f82d0567": "1f8b08000000000000ff2a484cce4e4c4f55b051b555c82f2829d60bcec82f2af14bcc4d5550b5e3e24acecf2b2e51084b2d2acecccf53b055502a33d033d03350e202040000ffff53ac591538000000", - "de502941dc9614468d4b6e3568718d20": "1f8b08000000000000ffbc59518f1bb7117edf5f31b897f880adecc4698a064581ebe5ec5e71498d5cd2a28f1439ab658f4b6e49ae64f5d717332457dc95e4380850bfb43991c3e13733df7cc385f37fef7ff8199e1e9e9f1f7e84f70f3f3cfc78f7041f7efecbd3e33d3c3dde3ffcf0fcd05cd844fffe813e6867e16d0b5ffd11fe365984afdebcf943d3c0bd1b8f5eeffa08afee6ff98ff0ce23c2b3ebe2417884776eb24a44ed6c0b8f566ee04f7d8ce3b7af5f77a1db38bf7bfde7061ef6e88fce22e80023fa41c7880aa203e9c62308ab40e910bdde4e11618f7e2ba21ee8478da101d741ec7500a325da80a09c9c06b4b185ed1441f6c2eeb4dd818e64deba08c2187740b5699a06e027dabacff763539870c210d0c37bb4e885810fd3d668094ff90c6da5f3a3f3226268684b443f0476553aab34dd3790b962f96d6d7b69b4c9465b08d3381a24df51c1f6c8eb854ad68449d084c0a68d0ebc088d3b6ce81e6f3670775afa1d76da262ff8d7bb005340053d7ad4b6851b462c1f7c031e3bf48110bfe86fc2a2b98c45cbb7a6a5377cb70f4fbf64ef8a2176f4e6a71ee1496fbdf0c7da8e00e9f6e851c1c1f917d8d17fd882d2e92a6de3628f1e622f2c080b77e368b4e4f403e741c0bd1bb69a36fe93cc88008a905a207967e1a6da77436923ec311d1c7b1161102fc880d2a584056d23fa4e4884d1bbbd56a89a1cbd7c93948a875ecbbe2421fb79d001612b2832ced61b364d8aa0dd8180306da51181f34940fabfb3db8b73c8b8421c508180c1296c5c0753603397dc5c6d4fd7879b0548e9fee9f6a3776a92699fe44564da7930dabea4539a1af2838efde200aa378451f8a8e564845f575e5ed7f0c68417fd7919b583083008c574214c702085319873f049db17544d66ac9b4daa71849befb5d5833070efbcc7305295da1d3cbbc94bbc81ee42760c286c20abcda53dbce5ccb916f0a334934a601c21a4b59262411b46e7676e38bf1965574b0c12b4e264d716747026f3a7f0d82cb2a5c23a95216756c92402a250f70987e55dea68dd3bf58b48b8edbf5146be0f1df8daf9fa8a33260bc7b4ad1151228a867c9da2363a1e29a9765e0c012c22e524d9f098528d369dc3d47937b0378b63a8c44ee0d3aee7638838e4a4d278197446e6cb0d3c7c9438320ed1c133ca784edb1f9e78f1bfdc0483a00ab07b3caea969b20a3d846420c05b8ecbd77397ca44c519eea6085b246fb7d425a9aac2a70efe6a03f77c266df9de29dde9538413d13f767024f7e8c7e4da785c1517670a458556fab43483185a104d27640a4ccdbedd646561518a20fd758ba963e944084bba6d9829a7809c37301b7d551334112b08bfe37e0da30894db871e39834f8ee800daeedd0baadb967eb1e98ecb109cee3964649a4c2edf1230206e736816fde24485ec6fb2fb822060e79c824e101161d7391f213ab283364c1e73a9ea546bb827ff57fd46394c54cf2031d1d2fe3592ed129f10b531e046646d91aa7a44df393f04da7ee845c43d7a2651bab18e01c6c98f2e20781c84b681eb55db5d3799169ce7eb6f4fd79f93aa4d046d497a65ecaec80dd7918d1a3910e9aa5b83940b8c1e0581b3f0ed06fe9e88823885745f564b9cb822a2d7c2a4322e9debaf28c8bb77da6098c9aa661b4220f7db1a65ca824a8dc1505b6f04f4c96ea74d8a196bcc0cddb233adca3a4cb2cf0e34ec40868f859eeb52f1c8de69b9cea21674b25df9a59ad9b12c008c1e7496b9761ad06b49980b2f068ce8439bca2c443fc938796c8c38ba29268d29a4c4101cad22021e84313008e95da09434dae29c666943c461342c565f45e4d4ebf080dcb7918a0b0cda5dec6f5bae00e560eb625f20ea1c09666d777321bdd77b161183b694f8d6452d3125130ad92faab18e210720d7412559589a52ab8b594ba655f312fa23a539292eea810033e5aef4dfa6e4fa9d946e18a9dfac7d602f978491cb211f7e1a25c8569926d8f2d79b65ef0897fbc1b25b5dcf9b942d4d142fc4786e87448d2dd10d75813d9a23858292c523cd3f322ed83abbdfac3545814d3a1b05fb91696a257ead024f5412b0419a91103dd527f55f85db69c7631397c1aa47e8d464587b299742eebae6b7e7cab91a4ab483ffd76c59a9cddf902f206fe1dd053dc53e2b1d46238e814da7193a8113404d1409ee361f514eb58c42f660bd65165e3308834b06628f018be1965aee018de1d69b1a3c5a89a0b4a794cbba69a2c997493da33756e2e9dae5573757b7f09d83aab3ac3283febdb9cd7a86177c4aa057bd6b2e243abc583a9b453fad72297d04779462204c3a722feb9c4f56eab2e578a59789b646a8ecf698a62104d6ae340dad6570c9a3224eaac9a7583957ed14843c73d55b571347aaee626510d692001d51a6d595aafc661d444a1b592465b17029009b39685fdec2cf545927c8422fa8b84c4ebd01652fac0e035b2f936119054f112b7df7ee64e9b45507ce1d06fe154937129222829f2c443dcc662e2a5c10c6a350345a6020d2c9231145ed0baab7619c22fa39f63c26a4a8bfdadec2a1526004ff88de1cafc5af18597950a4c63c73ff8e19266aba663516f3b0ba7c654b50e32d7c48a2021e6d88c2a421101e2da56d35f2386b8e85910f6e32eaf4b4c0ec46aaf03f93f6496a64a192685d9f6c2dc79639519afc6ac86291f0e1d31235007e8c042e5ff5cc5eaa4d8b24541810073add83ed245ec3cb05514e5e9266fdf8500a2e3f3fa492cbf4453b3faff02ecdc9f0ea910b92e0e4179e34137eaddea4cabf160c18a6104998a54652fad627498d80b84a540900859b32d32dbcf93229353eb4c474ed1e59a83dcc2ae0d710040f2c35475c26875b4ad9df57e2681eb91702693442e2cc1379e4d198f955782cef4cf52347534a2ad01db7f97f99c083b63b73325814548a789a33f36fcda5c34858558067699d7f58498666d161ea1141e497b08a012f28bea64c0ab9527f51622f25c9d911175449100356f0919de5a3620b939d0d2503f6b8c4a90a4a9b5a3f5d14d5b5fe7ba6a43ea1f62ede2375d67994252ba7e7c64b2fa36da68fd18854fe871e3d8fa09d4ebd9f012ce8d18aead665885ce0c5ce7fb3811f71af43f5a0f2d99f03e679f5daa78f94fdb427f4a4b9f998fc7c66f1502829349ffd01223d81e9210ddf7ac00d3c53365a3c94678f901ad91621e8411be1a968c2a8bd8e85c14b7fcc3b524319c4b151baeb9037288c421b7e0452ca6308ecf0e8ddd620e5017383449fdf9f1e48d21786d501767a8f54aa4a079297930e3d85a4acb0d3b045cf145797ba085c241e25ea3da9fd38d355a95f90e869bac926aa86fcd918de9032b747a0c1787e89be69f86103f9dd8be41e39d28b7da2d7ccbfae3b552c2c3eff34d5e71fd45c5aec0f65798a7fdd817c7ad058b9d09c56e6f7f96b7955808325704d0ddce9198a11a4f97489feaff8d2333fbbf5ce9106b4c7eb9fceae1881f478f5d937cc8f9ae797fc74768cde7d3c821494c0522b6c0e7dea0ddd14278f73c57dfe27bfd00b6338398e6d0e289df14548979110a288fcf18e832a258e51d06c95437c2a8a862609c1fc28a6d83bafff9b58823a2ddd2cba82309f5376e619af99bfd6fc2f0000ffff1b70e417e31d0000", - "df2571aaa5053efc9adf6f1c937897f0": "1f8b08000000000000ff3cce416aec301084e17d1d45302d1eef0ab9c11cc0c8ea8edc63496dd4b227d9e4ec6142c8ae161fd41fa85a01bddd97fbb42160cb98edc0b117042ad210e85046b64b462af23788d34c584fad1cc30bad1fa7cb40a0662cffaeff20bf3a8e61ef5a0594adbb555936f569e313e4c9fd9653de2406d048bb2c33f9ee5ff869a29a77b8d511418fedf92bf1d89ef4baf373adda24a01bcbd28ccf2a1ec1ea33a2489791a670045dd2d946c4aa3d0614edb7553b485952c477000000ffff64521561fe000000", - "e2a24d2b173d9a2c5c7d11e6a6f6630d": "1f8b08000000000000ff8c59db6e233d72bee753140658ac0df4383bfffe392d92001a4b9e694423792579bcbea4baab25c614a9906c6994a70faac83e49ed6c7c65f5a158c7afbeaa86e1df668f307141f9a00a98ab028d47f8ede14f42f41e7ab4c78b53bb7d80bbe21efeed0fff0ef618fcc31b4a077ff88feec2a40e7b4b97d2dbb313ba8b3508cac311dd41858025040b853d5e409a124ae58353db3a209cd06d655007baa9d0a7f36d0561af3ce8a45a698bfa802664b0ad03147b6976caec40053ac3d800526b7bc6f241886787f2b0d528c4a62f017d905badfc1e3d843d424077f0509b121d9cf7aad883849d3aa181ca2182b755384b87e25916ef7287709017d862d4b2cce0604b55f17f9d2d6546c6fd8375e0b077f54190b795096858ddb0978155e8fcfbdd6ad2e320950952190fde1e10640a9028ac09ce6ab02774fc668927d4f6481e89ae92011a45cf7ba5117c505ac33be291fc14f69d21f22495965b8d203dd8231af0b67605726006b63f08f1666b900e41eab3bc5c45f320df494727cd0e49130fe7bdd5fa02b60e5e95d80451b441540e8ba02f7056613fee015bb56148fa3e00e4151b1023769b191cffa8190bad6aada1f618dd72b1351c9d3d5aba60052bcd32b03921e367fcded6ba0472b52c3e880f79c823be0b09a5aa2a74e4ffa80879b9e78b0721a65829a382b2c6c7baf8742def131c509a988eca94eaa4ca5aea3b7f0fd681753b69d4ff481270e7ef598291072c41197ea368a5191b548150d9981c688272ad750fede12626a46dcf95e60247e9c2257a6a2f3d9b9fd2160a4b317460c31e1d0b39c8804e494dd11f3850199045615d294d811f87f78fb1bc8fce1658d60e7da3dc9bad3fb1773f5d6c3dd40f9db786320bce1c20addeb1c1928cdfee4a2d2375b9322f7dfd9a53d2cfbedb0bab3516e4634a8a4a69f4fd82862d0b1243348cc66411c9d0a9930cea84beadc49ed08407b66211614f59c8a73cc06498e70c3085355e79ae6954e47656721da429a52b59c64f745e59c3a64af89160a8b9dc983a6d6d68ac3d3a7b5225a769c4e16111b0e7e47b045596218b02bd570414c1522c08d151fbe8e52609a5c758b4853d1c296036a64a3f7d3312c059e4fbd840a1eebd3678e5c60eebe009b19f1915f62abcd84bb78b25d0bea2cc2e795df9be999d277c7d3c5a1752e5f49e6283bbbce72221200a505a8c0d8714e9d57e855d3637f16a82f2091c5664fcb06c4055d4c0a8ec48e016d1c42a6b5b8b757c97eeb457c11a7d21f73320e3afa35685225075f8df35fa80314d62e2de246da3e275def46ba2abea563fd680bb6e6a722cc5d7c53e5df57046876cc7984a37eaf0fb4395964eed9491baa1239d4acadf7215e9bb4063c9909382ddd54b63dc0dde2b032a78286ac7087e6a1e73202342a9d0f4fbd6eddb0b93a667741a9e6c6d4aced3a60eaa3ad4ae059a3537d44f9457879e63539f255ccd5a4613c5c45b9d6b0b6b2ab5ab5dbc1b71a9c1f71b603f1c95c6f2e6b822dd80ed25603cd46eff0b8b9034d82a235dc250329daa903187e538f4b50e9cdace92580ab42a08fc9d349e9e89caa582e7ab5a869ebfa31b58dc8310e2995ab4674f93292f3e528e988a457cf35585bdad43af88ad11e2eecb3d404345061c24b6f9919093e4c2a10cf190daa3b8cef9e8516e32b5637e704ea73ba4d38b885d112ee8b8bd0c82c026518e2eff58851128ee991c0f5b75bcb0efa72be585b8fb2d194c5938fd902c8f383a5d12e335d083386ad9e602072c557d18b55ca416b4a32cf49422ec2fb8c2e42b0f311c973561800c28a4d68d96b629f06be6e23944d27b5b2849812d952fb4540774fe0160c25e777cd5610c0a43cfb537c859dcc62e1c1f650a5d9708523425d2f750af8ceefedcf3b63c1ef5855db3ad7750a95fe833a02e21b74aab7069002fb6ffd8230ebd142635ca3ecbe6f219c5e23886b585d632f43351f748e079e230d4311dfbf73659b2e43c768938a7977c1d2b3d759c6b6ca5dc9c5e65e26d795c3104e953a20971f7fb787e729cae05752fc2dd20a5c4c7294536318db4aecd4d096371bc29ebfb917c2c344aa72f2de8c2de9e09e4238bf7a28dd1ad77631629b38ba3272596560715f1a783718a1f258db1e6b36f845428a92df80cf01716350da0f42392d45a3749348a30328046e9032c17b3261295a5295799dd5f22f6dfc97b8863d81800f57230a5c175068a76d41eb33ccec663e99381b7ed183b4a8e39319a02e4ac18d6486a9b63cc36f5b5bbed3d001a5fbb44f394f141eaaec38ce75ac3cfd2a081278a361d557b748d0cea6a34a5d7c6a4e9f8c6fc07c8231b9365a912891df3f1a1f644dd2465318d674957df0d882ca54d307ee60397379617f710f7190deba6e9c761813c650ce9fb8d42c1a6512d65c56d6ff83b8912893a0be10c484aa97b18cd05eaffe9097a44b683393b2236ebc847d20d3ea47288fad21be2d2d446e5d05f9e8ceb5bfb266c5e1e6202764c3cae09f8f488e529f9d96bedeea551865f4ebe8dd49659ab72d85bd4fc1f3e1cce64dc122aee1e67ebde7d1c0f09b028fe2a644c29a93f4407c40c6bbdcf552143eb421a2a22e77176afb60c3adb3e3b4adceba979aedb82ddc07b8b9d4fb65da38c500f7b5b53be45e0ce1742dcfde3780b1860f487e734224527728c47340842545663402e6057171144ac611c0f56ec7010a88fea0b604dbc61202415b03849ad4a48010fead08da87dcad66ea3fc50978cde94e622f8cdb882bb24c25a48e72e0c397588c4a52f9152a2b00712c72af0364ab056c91f60f07c637889074e360705d20c5ed58e3beb40599157cdfe8b05451b87a21a0103624ad1e164542e5c444993a6ac023a9696f49567d940735c60f5a4d29dd69eb047d3e7cd957515aa10078ee463ee1dbe6d39dd7e8fe8d93f8d67daedf6830a68c811fe7f69c6e995d692ebb4b9f93dfe74e88f914889db041ba3fc93ddcee14e86d463e6cabc37609588941077ffdc279ce9051c90adbb91fd4fc7e5dd08eb8974895f3a462191575f8d291ddd6c0e268923143e062b2d56e470d5d1cca2a25bd25e51383f9cd522340ed7252c2412680a8035bc434ecca0afdc40d20393e6d15db018e07d9de6cb6b201c78740cee84f40df09423ea5046fecbfdf838aa9579ef04d2e9d7b18b602a629cb847f0760c0fdbc4effbf31968727e7cae2d157b8ecbbf60c5b656ba04a69b9fa526a610677abadd0cfdcd7683bd450e6a3918b3cd066107fb910fd3667c4eec254ffb60bb27c35f3c5acbb4fde7ef20ae92055e6dc3a876f280070f1b6edd0e6161033c76d3cfb37421ee1aaf4326c4ddbfdec32b77dcbbbf43d813f38ebbfcc2a963f0f7d1150774c449f057c088accca16a7ffbbd20d64696b65a078ffa445cbe90b547d10f62b0d4f047d6b400b9e9514bee0a9131c8b84613bdb1ef285db899c654f0a8ab34fda5d5db70ea1bff60427efe86069dd4f04c818b392feebefce91e60622e647136a0ebd9f09bdd781d8dac5794879d3da133cd02706491f7005f2f91cf65718cbe24e02c7b6bdcdbaf35b228f0188686c194c3223afd2fd94012deac377b40d793287abde7cb977b6ef9e3d346bb1b1df0bc2edea21d1388f36d2ffc5d8fead42670978624672d573078426ae41abd6f88682908207a93d0b82edcc414faeef34b7a3f7e9bb395b8eeab5f7ebb07d80c3fa6a5aadd3969621f60413cd9a5751bb5ede0241110f79e098feea40a62b5ee3d8b3768c661cf6bbbb34daa8c6ca2efbefcf95a8104477160a0591a7f15baf6ea8419d5872ecfaac44c107bfe6cabcfa93b1d65e8bec461f36d3283bd3c45ba9dc5a4b63492d16d8f5a93ea5a67a00efc0da0dde69c1589e01d270e16aed78480f95e3a9ad7558d19cce53f58c0a7c184435da0f7d2297d11ca544e995db7286ffb6a6270c4ae54a0146e6d0d2af623d1211ecd86ce7aff99d5616e676bc25bfe7d0f72274950efc39fd41a7744065a1ed7184bf8138ff40d74b3bcf62be225a9d22a1fbfcf13dbfb60671f6cfad22ab5e60eae0cd11ecb2d56949102c9c4913b0309472aa2749c32bfdf33d748fb41caae57feee1a2e7f119bef33789e3cfee7e4db0cf2353caf963ff3e96c0a5fdf806e3d2e9fdf56f9b7ef1bf8be9c4f672b982ca6f0b85c6c56f9d797cd72b5864f93b5c8d77fe41baff9e6fbf2650393c51bccfef6bc9aadd7b05c41fee3799ecfa6f03a59ad268b4d3e5b3fb0f0745d74d761f9043f66abc7ef93c566f2359fe79bb70c9ef2cd82243d2d573081e7c96a933fbecc272b787e593d2fd7b30c962bb1582e3ee78ba755bef836fb315b6c60b29ac1345f3fce27f98fd914364b3e72f6b70ddd7c9ead7ee49b4db4f36df9b282f9f2713217f3c9eb03bc2ce674dc6af6d7977c151f994f5e33582c6fddb15cf5bd01aff97c2ebece609e4fbece6751e3c51b4cf3d5ec719341bee8fe7bcca7b3c56632cf928cf5ecaf2fb3c5269fccc574f263f26db686c92a5fe78b6f902f58caebe40dc8bbcb2736e5653d6bfe4d01cc60f673b680fc494ca63ff3f56cdade5faed77974275d5abf3c7e8778c883f8df000000ffff2fe92a4de6220000", - "e50dc3a6916a03ffab97ebfe2607353c": "1f8b08000000000000ff8c90cd6aeb301085f7798a734d16c942ce85eeb44a4321ed260dd4d065519d4111fe19a119bb35f4e14b8221a6b850ed0edff9c4cc885214bb000cd44965b1e782b9defe5f00406863a7577c793d2509dc5a2c579edfc6b49eb83b27e7eddd8ca92e79d262886411da3ab434022953886af13566a0a94e21c14464cbd5fe79f7745867bfb0e37df1b8dec4cacf171a3e75351d9d9e273fc899a3c208e8537dcdef37b3c7bf95e778a9cfdaa720b176c3c1356491bd9076117bc62ba74aa22b29bbdee1e73e9ee1496114a647bec9f3fc06944461922b69423e3855a1f50f2151a99c06fb87610a12956cf11d0000ffff918e55a0cb010000", - "e77af356b711dd222651f373f9039345": "1f8b08000000000000ff2a484cce4e4c4f55c84dcccce3e2cacc2dc82f2a5150b251b555c82f2829d60bc8294dcfcc0bc84e5750b5d34fce4d51e2e24a2bcd4b062bd7d054a8e6e24cce4dd173ad484d2e2d49d5d0e4aae502040000ffff0bec043151000000", - "e8f0b5c005cfe5f1f920445b2c355f33": "1f8b08000000000000ff9492d16edb361486eff9143f0a146806c1bb5fb701b4746c1d401635928aeb4bc5626a02b61848748abefd403641dcadd8d02b1114cf39dfff916578fa3afbcfa7880fc73bfcfefe0f84a7b8ac0e6e98f1fecfe26d475ee329a43d21cf67e49205b35bdcfcecc69510da8d7e89b37fb8461f260cd388ebe2e0272ce13a1f5dde79f0d3307fc563982f4b812f3e9e10e6fc0dd7282e61f48ffe38a4060586d9e1c9cd171fa31bf13487673fba11f13444c493c363389fc3173f7dc6314ca34f454b2ebab8f89b10bfe07ba205e1f115e5184687cb7589985d1cfc94fb0d0fe139fd7af53185e88fae403cf9450067bfc4d4e276d834fe8364f4cbf13cf88b9b573f22f0d3ad815782a7398cd7a3fb2f08818cf1b31078893686e3f5e2a698cd0aa49a5fc38c104f6ec665886ef6c37979739c2f2617dee0af84b0351b18b5b17ba9096cd06975cf1555581f606b42a9ba83e66d6d51aba6226d20db0aa56aade6756f953678270dd8bc13e9876c0fa04f9d2663a03478d7354c15f6526bd95a265380dbb2e92b6eb705d6bd45ab2c1adeb1a50a561569a8f87719d4063bd2652d5b2bd7dcb03d64900ddb36cdda280d894e6acb65df488daed79d3204a949546cca46f28eaa15b845ab40f7d45a985a36cd0f5326f6ef32ae090dcb7543224f6a0fa8585369539cb755c915b55636054c4725a7057da25dd7487d285e7a1afaaba7d6b26c442577724b061ffe4749a755d96bda2566b581e9d7c6b2ed2d61ab5495440b43fa9e4b321fd128936df5860a54d2ca3cb8d36ac3d67c4ceb756f384be3d692d67d6759b577a8d59eee498b52f686aa6c57b539aaad49e9436a9a1c64f905f635d99a74129a4dc9a4c058cda5bd3926948655dade64444bdb86b7d496946854eab2674377909a4d3ac0dfc6eee501aacf91d31df586445edebcd822df24780359dd73c27e39dc2963f8e59d6465658d6fba57e2ef000000ffff9e077c2221050000", - "ec188e67853d7839d2d751b9f778dc84": "1f8b08000000000000ff7c8f414bfb401047cf994ff123d03fc99f9a20de8a15a478f5a078120fdbdd4db2b4bb136627f650fadd25d58bd07a1c78f3decc68eccef41e363aa2104716454545d9071da66d6339b679ec6eef5acb5b3125d5446d8bfbc51a3c6a6e5e07167d36d163f1b0890ee247f1d927cdd0c1633b759dd9f3cd451e966334c9d1a791ebc635fe9dd3cde69b3e52f196fd0a40f9a7bd5c52719e572895799fd1b1e0c0b20ba9c721e870b939efbd4ce969856e4ab6b2d1e1ffaf039630d267bc7f649590fa1a5e8405472a0af13a49420a7b2a4e4b3a11cd0e8414b4aa67429875135df3e8dc8fadbaf6784d27fa0a0000ffffb89c31799d010000", - }) - if err != nil { - panic(err) - } - g.DefaultResolver = hgr - - func() { - b := packr.New("./generate/templates", "./generate/templates") - b.SetResolver("cmd/generate.go.plush", packr.Pointer{ForwardBox: gk, ForwardPath: "0652906dbbddf180108ddfa0b73f1047"}) - }() - - func() { - b := packr.New("buffalo:genny:plugin", "../plugin/templates") - b.SetResolver("-short-/listen.go.plush", packr.Pointer{ForwardBox: gk, ForwardPath: "4d28e1deaaf258f4346bd9491c376098"}) - b.SetResolver("-short-/version.go.plush", packr.Pointer{ForwardBox: gk, ForwardPath: "d935586ff49465c8710f2ec7f82d0567"}) - b.SetResolver("README.md.plush", packr.Pointer{ForwardBox: gk, ForwardPath: "89ae21d51779b8540143aebf69368c43"}) - b.SetResolver("cmd/-short-.go.plush", packr.Pointer{ForwardBox: gk, ForwardPath: "ec188e67853d7839d2d751b9f778dc84"}) - b.SetResolver("cmd/available.go.plush", packr.Pointer{ForwardBox: gk, ForwardPath: "aca00e322e929c273fc368300d882a35"}) - b.SetResolver("cmd/root.go.plush", packr.Pointer{ForwardBox: gk, ForwardPath: "37e6217420675913821fc175e7dd25cb"}) - b.SetResolver("cmd/version.go.plush", packr.Pointer{ForwardBox: gk, ForwardPath: "1bb7ffbc87c10d18914f6951d39775b5"}) - b.SetResolver("main.go.plush", packr.Pointer{ForwardBox: gk, ForwardPath: "e77af356b711dd222651f373f9039345"}) - }() - - func() { - b := packr.New("github.com/gobuffalo/genny/genny/new", "../new/templates") - b.SetResolver("-name-/-name-.go.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "920fdc8a8285bc442cfb791bcafe45b6"}) - b.SetResolver("-name-/-name-_test.go.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "a61b972dce26544398f591b4e2f715f3"}) - b.SetResolver("-name-/options.go.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "cb9f04739ceb356f960fa53f13efd3f3"}) - b.SetResolver("-name-/options_test.go.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "793124cfbcf9ae17892b017c666be8f1"}) - b.SetResolver("-name-/templates/example.txt.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "a95877cfc2957859690620af727512eb"}) - }() - - func() { - b := packr.New("github.com/gobuffalo/licenser/genny/licenser/templates", "../licenser/templates") - b.SetResolver("agpl", packr.Pointer{ForwardBox: gk, ForwardPath: "38ff45a61f79481d5d34d8d9f9676c34"}) - b.SetResolver("apache", packr.Pointer{ForwardBox: gk, ForwardPath: "0e36ab770b1ec79ef2649ec1552c94dc"}) - b.SetResolver("artistic", packr.Pointer{ForwardBox: gk, ForwardPath: "e2a24d2b173d9a2c5c7d11e6a6f6630d"}) - b.SetResolver("bsd", packr.Pointer{ForwardBox: gk, ForwardPath: "e8f0b5c005cfe5f1f920445b2c355f33"}) - b.SetResolver("bsd-3-clause", packr.Pointer{ForwardBox: gk, ForwardPath: "288df37e7ab95dfbcb9550200ab31180"}) - b.SetResolver("cc0", packr.Pointer{ForwardBox: gk, ForwardPath: "989a41b885f6a3ce4ccf49322f5ed129"}) - b.SetResolver("eclipse", packr.Pointer{ForwardBox: gk, ForwardPath: "b6547a26d702f0e315541fcbf39aee8b"}) - b.SetResolver("gpl-v2", packr.Pointer{ForwardBox: gk, ForwardPath: "9878d11093909d531176b7e6da001598"}) - b.SetResolver("gpl-v3", packr.Pointer{ForwardBox: gk, ForwardPath: "49a20c4e431767a29116905e29fec0d9"}) - b.SetResolver("isc", packr.Pointer{ForwardBox: gk, ForwardPath: "2669267df0f493b450bfe1ef118aeef9"}) - b.SetResolver("lgpl-v2.1", packr.Pointer{ForwardBox: gk, ForwardPath: "87f5b37ce1e0e735c36a5ff25df5e896"}) - b.SetResolver("lgpl-v3", packr.Pointer{ForwardBox: gk, ForwardPath: "de502941dc9614468d4b6e3568718d20"}) - b.SetResolver("mit", packr.Pointer{ForwardBox: gk, ForwardPath: "958ad94ad4ec3f13898043ec59181ee4"}) - b.SetResolver("mozilla", packr.Pointer{ForwardBox: gk, ForwardPath: "1614cda23f5488b474a44a2db5ecebac"}) - b.SetResolver("no-license", packr.Pointer{ForwardBox: gk, ForwardPath: "67f2f65efc608bfd2ec3bb8485e627b4"}) - b.SetResolver("unlicense", packr.Pointer{ForwardBox: gk, ForwardPath: "11ccb6bedd3e318a1604672830b46c94"}) - }() - - func() { - b := packr.New("github.com/gobuffalo/release/genny/azure/templates", "../azure/templates") - b.SetResolver("azure-pipelines.yml.plush", packr.Pointer{ForwardBox: gk, ForwardPath: "a78ec1efc51b3e38b6dadd6a4eb2258e"}) - b.SetResolver("azure-tests.yml.plush", packr.Pointer{ForwardBox: gk, ForwardPath: "e50dc3a6916a03ffab97ebfe2607353c"}) - }() - - func() { - b := packr.New("github.com/gobuffalo/release/genny/makefile/templates", "../makefile/templates") - b.SetResolver("Makefile.plush", packr.Pointer{ForwardBox: gk, ForwardPath: "22ff05a4b44a03ae13723f6a9efc10e2"}) - }() - - func() { - b := packr.New("release:genny/git", "../git/templates") - b.SetResolver("-dot-gitignore.plush", packr.Pointer{ForwardBox: gk, ForwardPath: "df2571aaa5053efc9adf6f1c937897f0"}) - }() - - func() { - b := packr.New("release:genny:goreleaser", "../goreleaser/templates") - b.SetResolver("-dot-goreleaser.yml.plush.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "ad3cd1c511f6e620beff7f7e5adbd878"}) - }() - - return nil -}() diff --git a/render/auto_test.go b/render/auto_test.go index d1c2b6d50..651c8f609 100644 --- a/render/auto_test.go +++ b/render/auto_test.go @@ -8,7 +8,7 @@ import ( "github.com/gobuffalo/buffalo" "github.com/gobuffalo/buffalo/render" "github.com/gobuffalo/httptest" - "github.com/gobuffalo/packd" + "github.com/psanford/memfs" "github.com/stretchr/testify/require" ) @@ -71,13 +71,12 @@ func Test_Auto_XML(t *testing.T) { func Test_Auto_HTML_List(t *testing.T) { r := require.New(t) - box := packd.NewMemoryBox() - err := box.AddString("cars/index.html", "INDEX: <%= len(cars) %>") - r.NoError(err) + rootFS := memfs.New() + r.NoError(rootFS.MkdirAll("cars", 0755)) + r.NoError(rootFS.WriteFile("cars/index.html", []byte("INDEX: <%= len(cars) %>"), 0644)) - re := render.New(render.Options{ - TemplatesBox: box, - }) + re := render.NewEngine() + re.TemplatesFS = rootFS app := buffalo.New(buffalo.Options{}) app.GET("/cars", func(c buffalo.Context) error { @@ -102,12 +101,12 @@ func Test_Auto_HTML_List_Plural(t *testing.T) { type People []Person - box := packd.NewMemoryBox() - err := box.AddString("people/index.html", "INDEX: <%= len(people) %>") - r.NoError(err) + rootFS := memfs.New() + r.NoError(rootFS.MkdirAll("people", 0755)) + r.NoError(rootFS.WriteFile("people/index.html", []byte("INDEX: <%= len(people) %>"), 0644)) re := render.New(render.Options{ - TemplatesBox: box, + TemplatesFS: rootFS, }) app := buffalo.New(buffalo.Options{}) @@ -127,12 +126,12 @@ func Test_Auto_HTML_List_Plural(t *testing.T) { func Test_Auto_HTML_Show(t *testing.T) { r := require.New(t) - box := packd.NewMemoryBox() - err := box.AddString("cars/show.html", "Show: <%= car.Name %>") - r.NoError(err) + rootFS := memfs.New() + r.NoError(rootFS.MkdirAll("cars", 0755)) + r.NoError(rootFS.WriteFile("cars/show.html", []byte("Show: <%= car.Name %>"), 0644)) re := render.New(render.Options{ - TemplatesBox: box, + TemplatesFS: rootFS, }) app := buffalo.New(buffalo.Options{}) @@ -143,18 +142,17 @@ func Test_Auto_HTML_Show(t *testing.T) { w := httptest.New(app) res := w.HTML("/cars/1").Get() r.Contains(res.Body.String(), "Show: Honda") - r.NoError(err) } func Test_Auto_HTML_New(t *testing.T) { r := require.New(t) - box := packd.NewMemoryBox() - err := box.AddString("cars/new.html", "New: <%= car.Name %>") - r.NoError(err) + rootFS := memfs.New() + r.NoError(rootFS.MkdirAll("cars", 0755)) + r.NoError(rootFS.WriteFile("cars/new.html", []byte("New: <%= car.Name %>"), 0644)) re := render.New(render.Options{ - TemplatesBox: box, + TemplatesFS: rootFS, }) app := buffalo.New(buffalo.Options{}) @@ -170,12 +168,12 @@ func Test_Auto_HTML_New(t *testing.T) { func Test_Auto_HTML_Create(t *testing.T) { r := require.New(t) - box := packd.NewMemoryBox() - err := box.AddString("cars/new.html", "New: <%= car.Name %>") - r.NoError(err) + rootFS := memfs.New() + r.NoError(rootFS.MkdirAll("cars", 0755)) + r.NoError(rootFS.WriteFile("cars/new.html", []byte("New: <%= car.Name %>"), 0644)) re := render.New(render.Options{ - TemplatesBox: box, + TemplatesFS: rootFS, }) app := buffalo.New(buffalo.Options{}) @@ -208,12 +206,12 @@ func Test_Auto_HTML_Create_Redirect(t *testing.T) { func Test_Auto_HTML_Create_Redirect_Error(t *testing.T) { r := require.New(t) - box := packd.NewMemoryBox() - err := box.AddString("cars/new.html", "Create: <%= car.Name %>") - r.NoError(err) + rootFS := memfs.New() + r.NoError(rootFS.MkdirAll("cars", 0755)) + r.NoError(rootFS.WriteFile("cars/new.html", []byte("Create: <%= car.Name %>"), 0644)) re := render.New(render.Options{ - TemplatesBox: box, + TemplatesFS: rootFS, }) app := buffalo.New(buffalo.Options{}) @@ -269,12 +267,12 @@ func Test_Auto_HTML_Destroy_Nested_Redirect(t *testing.T) { func Test_Auto_HTML_Edit(t *testing.T) { r := require.New(t) - box := packd.NewMemoryBox() - err := box.AddString("cars/edit.html", "Edit: <%= car.Name %>") - r.NoError(err) + rootFS := memfs.New() + r.NoError(rootFS.MkdirAll("cars", 0755)) + r.NoError(rootFS.WriteFile("cars/edit.html", []byte("Edit: <%= car.Name %>"), 0644)) re := render.New(render.Options{ - TemplatesBox: box, + TemplatesFS: rootFS, }) app := buffalo.New(buffalo.Options{}) @@ -290,12 +288,12 @@ func Test_Auto_HTML_Edit(t *testing.T) { func Test_Auto_HTML_Update(t *testing.T) { r := require.New(t) - box := packd.NewMemoryBox() - err := box.AddString("cars/edit.html", "Update: <%= car.Name %>") - r.NoError(err) + rootFS := memfs.New() + r.NoError(rootFS.MkdirAll("cars", 0755)) + r.NoError(rootFS.WriteFile("cars/edit.html", []byte("Update: <%= car.Name %>"), 0644)) re := render.New(render.Options{ - TemplatesBox: box, + TemplatesFS: rootFS, }) app := buffalo.New(buffalo.Options{}) @@ -330,12 +328,12 @@ func Test_Auto_HTML_Update_Redirect(t *testing.T) { func Test_Auto_HTML_Update_Redirect_Error(t *testing.T) { r := require.New(t) - box := packd.NewMemoryBox() - err := box.AddString("cars/edit.html", "Update: <%= car.Name %>") - r.NoError(err) + rootFS := memfs.New() + r.NoError(rootFS.MkdirAll("cars", 0755)) + r.NoError(rootFS.WriteFile("cars/edit.html", []byte("Update: <%= car.Name %>"), 0644)) re := render.New(render.Options{ - TemplatesBox: box, + TemplatesFS: rootFS, }) app := buffalo.New(buffalo.Options{}) @@ -380,12 +378,12 @@ func Test_Auto_HTML_List_Plural_MultiWord(t *testing.T) { type RoomProviders []RoomProvider - box := packd.NewMemoryBox() - err := box.AddString("room_providers/index.html", "INDEX: <%= len(roomProviders) %>") - r.NoError(err) + rootFS := memfs.New() + r.NoError(rootFS.MkdirAll("room_providers", 0755)) + r.NoError(rootFS.WriteFile("room_providers/index.html", []byte("INDEX: <%= len(roomProviders) %>"), 0644)) re := render.New(render.Options{ - TemplatesBox: box, + TemplatesFS: rootFS, }) app := buffalo.New(buffalo.Options{}) @@ -411,12 +409,12 @@ func Test_Auto_HTML_List_Plural_MultiWord_Dashed(t *testing.T) { type RoomProviders []RoomProvider - box := packd.NewMemoryBox() - err := box.AddString("room_providers/index.html", "INDEX: <%= len(roomProviders) %>") - r.NoError(err) + rootFS := memfs.New() + r.NoError(rootFS.MkdirAll("room_providers", 0755)) + r.NoError(rootFS.WriteFile("room_providers/index.html", []byte("INDEX: <%= len(roomProviders) %>"), 0644)) re := render.New(render.Options{ - TemplatesBox: box, + TemplatesFS: rootFS, }) app := buffalo.New(buffalo.Options{}) @@ -441,12 +439,12 @@ func Test_Auto_HTML_Show_MultiWord_Dashed(t *testing.T) { Name string } - box := packd.NewMemoryBox() - err := box.AddString("room_providers/show.html", "SHOW: <%= roomProvider.Name %>") - r.NoError(err) + rootFS := memfs.New() + r.NoError(rootFS.MkdirAll("room_providers", 0755)) + r.NoError(rootFS.WriteFile("room_providers/show.html", []byte("SHOW: <%= roomProvider.Name %>"), 0644)) re := render.New(render.Options{ - TemplatesBox: box, + TemplatesFS: rootFS, }) app := buffalo.New(buffalo.Options{}) diff --git a/render/html_test.go b/render/html_test.go index c9f659da8..c31ce75bd 100644 --- a/render/html_test.go +++ b/render/html_test.go @@ -5,6 +5,7 @@ import ( "strings" "testing" + "github.com/psanford/memfs" "github.com/stretchr/testify/require" ) @@ -15,10 +16,11 @@ const htmlTemplate = "my-template.html" func Test_HTML_WithoutLayout(t *testing.T) { r := require.New(t) - e := NewEngine() + rootFS := memfs.New() + r.NoError(rootFS.WriteFile(htmlTemplate, []byte("<%= name %>"), 0644)) - box := e.TemplatesBox - r.NoError(box.AddString(htmlTemplate, "<%= name %>")) + e := NewEngine() + e.TemplatesFS = rootFS h := e.HTML(htmlTemplate) r.Equal("text/html; charset=utf-8", h.ContentType()) @@ -31,13 +33,14 @@ func Test_HTML_WithoutLayout(t *testing.T) { func Test_HTML_WithLayout(t *testing.T) { r := require.New(t) + rootFS := memfs.New() + r.NoError(rootFS.WriteFile(htmlTemplate, []byte("<%= name %>"), 0644)) + r.NoError(rootFS.WriteFile(htmlLayout, []byte("<%= yield %>"), 0644)) + e := NewEngine() + e.TemplatesFS = rootFS e.HTMLLayout = htmlLayout - box := e.TemplatesBox - r.NoError(box.AddString(htmlTemplate, "<%= name %>")) - r.NoError(box.AddString(htmlLayout, "<%= yield %>")) - h := e.HTML(htmlTemplate) r.Equal("text/html; charset=utf-8", h.ContentType()) bb := &bytes.Buffer{} @@ -49,14 +52,15 @@ func Test_HTML_WithLayout(t *testing.T) { func Test_HTML_WithLayout_Override(t *testing.T) { r := require.New(t) + rootFS := memfs.New() + r.NoError(rootFS.WriteFile(htmlTemplate, []byte("<%= name %>"), 0644)) + r.NoError(rootFS.WriteFile(htmlLayout, []byte("<%= yield %>"), 0644)) + r.NoError(rootFS.WriteFile(htmlAltLayout, []byte("<%= yield %>"), 0644)) + e := NewEngine() + e.TemplatesFS = rootFS e.HTMLLayout = htmlLayout - box := e.TemplatesBox - r.NoError(box.AddString(htmlTemplate, "<%= name %>")) - r.NoError(box.AddString(htmlLayout, "<%= yield %>")) - r.NoError(box.AddString(htmlAltLayout, "<%= yield %>")) - h := e.HTML(htmlTemplate, htmlAltLayout) r.Equal("text/html; charset=utf-8", h.ContentType()) bb := &bytes.Buffer{} diff --git a/render/js_test.go b/render/js_test.go index 335e0d84b..466132c7c 100644 --- a/render/js_test.go +++ b/render/js_test.go @@ -5,6 +5,7 @@ import ( "strings" "testing" + "github.com/psanford/memfs" "github.com/stretchr/testify/require" ) @@ -15,10 +16,11 @@ const jsTemplate = "my-template.js" func Test_JavaScript_WithoutLayout(t *testing.T) { r := require.New(t) - e := NewEngine() + rootFS := memfs.New() + r.NoError(rootFS.WriteFile(jsTemplate, []byte("alert(<%= name %>)"), 0644)) - box := e.TemplatesBox - r.NoError(box.AddString(jsTemplate, "alert(<%= name %>)")) + e := NewEngine() + e.TemplatesFS = rootFS h := e.JavaScript(jsTemplate) r.Equal("application/javascript", h.ContentType()) @@ -31,13 +33,14 @@ func Test_JavaScript_WithoutLayout(t *testing.T) { func Test_JavaScript_WithLayout(t *testing.T) { r := require.New(t) + rootFS := memfs.New() + r.NoError(rootFS.WriteFile(jsTemplate, []byte("alert(<%= name %>)"), 0644)) + r.NoError(rootFS.WriteFile(jsLayout, []byte("$(<%= yield %>)"), 0644)) + e := NewEngine() + e.TemplatesFS = rootFS e.JavaScriptLayout = jsLayout - box := e.TemplatesBox - r.NoError(box.AddString(jsTemplate, "alert(<%= name %>)")) - r.NoError(box.AddString(jsLayout, "$(<%= yield %>)")) - h := e.JavaScript(jsTemplate) r.Equal("application/javascript", h.ContentType()) bb := &bytes.Buffer{} @@ -49,14 +52,15 @@ func Test_JavaScript_WithLayout(t *testing.T) { func Test_JavaScript_WithLayout_Override(t *testing.T) { r := require.New(t) + rootFS := memfs.New() + r.NoError(rootFS.WriteFile(jsTemplate, []byte("alert(<%= name %>)"), 0644)) + r.NoError(rootFS.WriteFile(jsLayout, []byte("$(<%= yield %>)"), 0644)) + r.NoError(rootFS.WriteFile(jsAltLayout, []byte("_(<%= yield %>)"), 0644)) + e := NewEngine() + e.TemplatesFS = rootFS e.JavaScriptLayout = jsLayout - box := e.TemplatesBox - r.NoError(box.AddString(jsTemplate, "alert(<%= name %>)")) - r.NoError(box.AddString(jsLayout, "$(<%= yield %>)")) - r.NoError(box.AddString(jsAltLayout, "_(<%= yield %>)")) - h := e.JavaScript(jsTemplate, jsAltLayout) r.Equal("application/javascript", h.ContentType()) bb := &bytes.Buffer{} @@ -71,12 +75,12 @@ func Test_JavaScript_Partial_Without_Extension(t *testing.T) { r := require.New(t) - e := NewEngine() - - box := e.TemplatesBox - r.NoError(box.AddString(jsTemplate, tmpl)) - r.NoError(box.AddString("_part.js", part)) + rootFS := memfs.New() + r.NoError(rootFS.WriteFile(jsTemplate, []byte(tmpl), 0644)) + r.NoError(rootFS.WriteFile("_part.js", []byte(part), 0644)) + e := NewEngine() + e.TemplatesFS = rootFS h := e.JavaScript(jsTemplate) r.Equal("application/javascript", h.ContentType()) bb := &bytes.Buffer{} @@ -91,11 +95,12 @@ func Test_JavaScript_Partial(t *testing.T) { r := require.New(t) - e := NewEngine() + rootFS := memfs.New() + r.NoError(rootFS.WriteFile(jsTemplate, []byte(tmpl), 0644)) + r.NoError(rootFS.WriteFile("_part.js", []byte(part), 0644)) - box := e.TemplatesBox - r.NoError(box.AddString(jsTemplate, tmpl)) - r.NoError(box.AddString("_part.js", part)) + e := NewEngine() + e.TemplatesFS = rootFS h := e.JavaScript(jsTemplate) r.Equal("application/javascript", h.ContentType()) @@ -113,11 +118,12 @@ func Test_JavaScript_HTML_Partial(t *testing.T) { r := require.New(t) - e := NewEngine() + rootFS := memfs.New() + r.NoError(rootFS.WriteFile(jsTemplate, []byte(tmpl), 0644)) + r.NoError(rootFS.WriteFile("_part.html", []byte(part), 0644)) - box := e.TemplatesBox - r.NoError(box.AddString(jsTemplate, tmpl)) - r.NoError(box.AddString("_part.html", part)) + e := NewEngine() + e.TemplatesFS = rootFS h := e.JavaScript(jsTemplate) r.Equal("application/javascript", h.ContentType()) diff --git a/render/markdown_test.go b/render/markdown_test.go index e0afe9020..6cda51d73 100644 --- a/render/markdown_test.go +++ b/render/markdown_test.go @@ -5,6 +5,7 @@ import ( "strings" "testing" + "github.com/psanford/memfs" "github.com/stretchr/testify/require" ) @@ -13,10 +14,11 @@ const mdTemplate = "my-template.md" func Test_MD_WithoutLayout(t *testing.T) { r := require.New(t) - e := NewEngine() + rootFS := memfs.New() + r.NoError(rootFS.WriteFile(mdTemplate, []byte("<%= name %>"), 0644)) - box := e.TemplatesBox - r.NoError(box.AddString(mdTemplate, "<%= name %>")) + e := NewEngine() + e.TemplatesFS = rootFS h := e.HTML(mdTemplate) r.Equal("text/html; charset=utf-8", h.ContentType()) @@ -29,13 +31,14 @@ func Test_MD_WithoutLayout(t *testing.T) { func Test_MD_WithLayout(t *testing.T) { r := require.New(t) + rootFS := memfs.New() + r.NoError(rootFS.WriteFile(mdTemplate, []byte("<%= name %>"), 0644)) + r.NoError(rootFS.WriteFile(htmlLayout, []byte("<%= yield %>"), 0644)) + e := NewEngine() + e.TemplatesFS = rootFS e.HTMLLayout = htmlLayout - box := e.TemplatesBox - r.NoError(box.AddString(mdTemplate, "<%= name %>")) - r.NoError(box.AddString(htmlLayout, "<%= yield %>")) - h := e.HTML(mdTemplate) r.Equal("text/html; charset=utf-8", h.ContentType()) bb := &bytes.Buffer{} diff --git a/render/options.go b/render/options.go index f22a50bad..32a464d32 100644 --- a/render/options.go +++ b/render/options.go @@ -1,8 +1,9 @@ package render import ( + "io/fs" + "github.com/gobuffalo/helpers/hctx" - "github.com/gobuffalo/packd" ) // Helpers to be included in all templates @@ -17,10 +18,18 @@ type Options struct { JavaScriptLayout string // TemplatesBox is the location of the templates directory on disk. - TemplatesBox packd.Box + // Deprecated: use TemplateFS instead + // TemplatesBox packd.Box + + // TemplateFS is the fs.FS that holds the templates + TemplatesFS fs.FS // AssetsBox is the location of the public assets the app will serve. - AssetsBox packd.Box + // Deprecated: use AssetsFS instead + // AssetsBox packd.Box + + // AssetsFS is the fs.FS that holds the of the public assets the app will serve. + AssetsFS fs.FS // Helpers to be rendered with the templates Helpers Helpers diff --git a/render/partials_test.go b/render/partials_test.go index d158ac9b2..6ea10969b 100644 --- a/render/partials_test.go +++ b/render/partials_test.go @@ -5,7 +5,7 @@ import ( "strings" "testing" - "github.com/gobuffalo/packd" + "github.com/psanford/memfs" "github.com/stretchr/testify/require" ) @@ -15,12 +15,12 @@ func Test_Template_Partial(t *testing.T) { const part = `<%= partial("foo.html") %>` const tmpl = "Foo > <%= name %>" - box := packd.NewMemoryBox() - r.NoError(box.AddString(htmlTemplate, tmpl)) - r.NoError(box.AddString("_foo.html", part)) + rootFS := memfs.New() + r.NoError(rootFS.WriteFile(htmlTemplate, []byte(tmpl), 0644)) + r.NoError(rootFS.WriteFile("_foo.html", []byte(part), 0644)) e := NewEngine() - e.TemplatesBox = box + e.TemplatesFS = rootFS bb := &bytes.Buffer{} @@ -32,12 +32,12 @@ func Test_Template_Partial(t *testing.T) { func Test_Template_PartialCustomFeeder(t *testing.T) { r := require.New(t) - box := packd.NewMemoryBox() - r.NoError(box.AddString("base.plush.html", `<%= partial("foo.plush.html") %>`)) - r.NoError(box.AddString("_foo.plush.html", "other")) + rootFS := memfs.New() + r.NoError(rootFS.WriteFile("base.plush.html", []byte(`<%= partial("foo.plush.html") %>`), 0644)) + r.NoError(rootFS.WriteFile("_foo.plush.html", []byte("other"), 0644)) e := NewEngine() - e.TemplatesBox = box + e.TemplatesFS = rootFS t.Run("Custom Feeder", func(t *testing.T) { e.Helpers["partialFeeder"] = func(path string) (string, error) { @@ -68,12 +68,12 @@ func Test_Template_Partial_WithoutExtension(t *testing.T) { const part = `<%= partial("foo") %>` const tmpl = "Foo > <%= name %>" - box := packd.NewMemoryBox() - r.NoError(box.AddString(htmlTemplate, tmpl)) - r.NoError(box.AddString("_foo.html", part)) + rootFS := memfs.New() + r.NoError(rootFS.WriteFile(htmlTemplate, []byte(tmpl), 0644)) + r.NoError(rootFS.WriteFile("_foo.html", []byte(part), 0644)) e := NewEngine() - e.TemplatesBox = box + e.TemplatesFS = rootFS bb := &bytes.Buffer{} @@ -87,14 +87,14 @@ func Test_Template_Partial_Form(t *testing.T) { const newHTML = `<%= form_for(user, {}) { return partial("form.html") } %>` const formHTML = `<%= f.InputTag("Name") %>` - const result = `
` + const result = `
` - box := packd.NewMemoryBox() - r.NoError(box.AddString("new.html", newHTML)) - r.NoError(box.AddString("_form.html", formHTML)) + rootFS := memfs.New() + r.NoError(rootFS.WriteFile("new.html", []byte(newHTML), 0644)) + r.NoError(rootFS.WriteFile("_form.html", []byte(formHTML), 0644)) e := NewEngine() - e.TemplatesBox = box + e.TemplatesFS = rootFS u := Widget{Name: "Mark"} @@ -111,12 +111,12 @@ func Test_Template_Partial_With_For(t *testing.T) { const rowHTML = `Hi <%= user.Name %>, ` const result = `Hi Mark, Hi Yonghwan,` - box := packd.NewMemoryBox() - r.NoError(box.AddString("for.html", forHTML)) - r.NoError(box.AddString("_row.html", rowHTML)) + rootFS := memfs.New() + r.NoError(rootFS.WriteFile("for.html", []byte(forHTML), 0644)) + r.NoError(rootFS.WriteFile("_row.html", []byte(rowHTML), 0644)) e := NewEngine() - e.TemplatesBox = box + e.TemplatesFS = rootFS bb := &bytes.Buffer{} @@ -139,12 +139,12 @@ func Test_Template_Partial_With_For_And_Local(t *testing.T) { const rowHTML = `<%= say %> <%= user.Name %>, ` const result = `Hi Mark, Hi Yonghwan,` - box := packd.NewMemoryBox() - r.NoError(box.AddString("for.html", forHTML)) - r.NoError(box.AddString("_row.html", rowHTML)) + rootFS := memfs.New() + r.NoError(rootFS.WriteFile("for.html", []byte(forHTML), 0644)) + r.NoError(rootFS.WriteFile("_row.html", []byte(rowHTML), 0644)) e := NewEngine() - e.TemplatesBox = box + e.TemplatesFS = rootFS bb := &bytes.Buffer{} @@ -167,12 +167,12 @@ func Test_Template_Partial_Recursive_With_Global_And_Local_Context(t *testing.T) const fooHTML = `<%= other %>|<%= name %>` const result = `Other|Mark` - box := packd.NewMemoryBox() - r.NoError(box.AddString("index.html", indexHTML)) - r.NoError(box.AddString("_foo.html", fooHTML)) + rootFS := memfs.New() + r.NoError(rootFS.WriteFile("index.html", []byte(indexHTML), 0644)) + r.NoError(rootFS.WriteFile("_foo.html", []byte(fooHTML), 0644)) e := NewEngine() - e.TemplatesBox = box + e.TemplatesFS = rootFS bb := &bytes.Buffer{} @@ -189,13 +189,13 @@ func Test_Template_Partial_With_Layout(t *testing.T) { const fooHTML = "Foo > <%= name %>" const result = `Layout > Foo > Mark` - box := packd.NewMemoryBox() - r.NoError(box.AddString("index.html", indexHTML)) - r.NoError(box.AddString("_layout.html", layoutHTML)) - r.NoError(box.AddString("_foo.html", fooHTML)) + rootFS := memfs.New() + r.NoError(rootFS.WriteFile("index.html", []byte(indexHTML), 0644)) + r.NoError(rootFS.WriteFile("_layout.html", []byte(layoutHTML), 0644)) + r.NoError(rootFS.WriteFile("_foo.html", []byte(fooHTML), 0644)) e := NewEngine() - e.TemplatesBox = box + e.TemplatesFS = rootFS bb := &bytes.Buffer{} diff --git a/render/plain_test.go b/render/plain_test.go index 825db78f4..1b224e4a8 100644 --- a/render/plain_test.go +++ b/render/plain_test.go @@ -4,18 +4,18 @@ import ( "bytes" "testing" - "github.com/gobuffalo/packd" + "github.com/psanford/memfs" "github.com/stretchr/testify/require" ) func Test_Plain(t *testing.T) { r := require.New(t) - box := packd.NewMemoryBox() - r.NoError(box.AddString("test.txt", "<%= name %>")) + rootFS := memfs.New() + r.NoError(rootFS.WriteFile("test.txt", []byte("<%= name %>"), 0644)) e := NewEngine() - e.TemplatesBox = box + e.TemplatesFS = rootFS re := e.Plain("test.txt") r.Equal("text/plain; charset=utf-8", re.ContentType()) diff --git a/render/render_test.go b/render/render_test.go index c7f8c12b6..9b2d012f1 100644 --- a/render/render_test.go +++ b/render/render_test.go @@ -1,7 +1,7 @@ package render import ( - "github.com/gobuffalo/packd" + "github.com/psanford/memfs" ) type Widget struct { @@ -14,8 +14,8 @@ func (w Widget) ToPath() string { func NewEngine() *Engine { return New(Options{ - TemplatesBox: packd.NewMemoryBox(), - AssetsBox: packd.NewMemoryBox(), + TemplatesFS: memfs.New(), + AssetsFS: memfs.New(), }) } diff --git a/render/template.go b/render/template.go index b67641d39..9acc9c0ff 100644 --- a/render/template.go +++ b/render/template.go @@ -4,6 +4,7 @@ import ( "fmt" "html/template" "io" + "io/fs" "os" "path/filepath" "sort" @@ -11,7 +12,6 @@ import ( "github.com/gobuffalo/buffalo/internal/takeon/github.com/gobuffalo/syncx" "github.com/gobuffalo/buffalo/internal/takeon/github.com/markbates/errx" - "github.com/gobuffalo/packd" "github.com/sirupsen/logrus" ) @@ -22,17 +22,18 @@ type templateRenderer struct { aliases syncx.StringMap } -func (s templateRenderer) ContentType() string { +func (s *templateRenderer) ContentType() string { return s.contentType } -func (s templateRenderer) resolve(name string) ([]byte, error) { - if s.TemplatesBox == nil { - return nil, fmt.Errorf("no templates box is defined") +func (s *templateRenderer) resolve(name string) ([]byte, error) { + if s.TemplatesFS == nil { + return nil, fmt.Errorf("no templates fs defined") } - if s.TemplatesBox.Has(name) { - return s.TemplatesBox.Find(name) + f, err := s.TemplatesFS.Open(name) + if err == nil { + return io.ReadAll(f) } v, ok := s.aliases.Load(name) @@ -40,15 +41,25 @@ func (s templateRenderer) resolve(name string) ([]byte, error) { return nil, fmt.Errorf("could not find template %s", name) } - return s.TemplatesBox.Find(v) + f, err = s.TemplatesFS.Open(v) + if err != nil { + return nil, err + } + return io.ReadAll(f) } func (s *templateRenderer) Render(w io.Writer, data Data) error { - if s.TemplatesBox != nil { - err := s.TemplatesBox.Walk(func(p string, f packd.File) error { - base := filepath.Base(p) + if s.TemplatesFS != nil { + err := fs.WalkDir(s.TemplatesFS, ".", func(path string, d fs.DirEntry, err error) error { + if err != nil { + return err + } + if d.IsDir() { + return nil + } - dir := filepath.Dir(p) + base := filepath.Base(path) + dir := filepath.Dir(path) var exts []string sep := strings.Split(base, ".") @@ -61,7 +72,7 @@ func (s *templateRenderer) Render(w io.Writer, data Data) error { for _, ext := range exts { pn := filepath.Join(dir, base+"."+ext) - s.aliases.Store(pn, p) + s.aliases.Store(pn, path) } return nil @@ -101,7 +112,7 @@ func fixExtension(name string, ct string) string { // partialFeeder returns template string for the name from `TemplateBox`. // It should be registered as helper named `partialFeeder` so plush can // find it with the name. -func (s templateRenderer) partialFeeder(name string) (string, error) { +func (s *templateRenderer) partialFeeder(name string) (string, error) { ct := strings.ToLower(s.contentType) d, f := filepath.Split(name) @@ -112,7 +123,7 @@ func (s templateRenderer) partialFeeder(name string) (string, error) { return string(b), err } -func (s templateRenderer) exec(name string, data Data) (template.HTML, error) { +func (s *templateRenderer) exec(name string, data Data) (template.HTML, error) { ct := strings.ToLower(s.contentType) data["contentType"] = ct @@ -160,7 +171,7 @@ func (s templateRenderer) exec(name string, data Data) (template.HTML, error) { return template.HTML(body), nil } -func (s templateRenderer) localizedName(name string, data Data) string { +func (s *templateRenderer) localizedName(name string, data Data) string { templateName := name languages, ok := data["languages"].([]string) @@ -191,7 +202,7 @@ func (s templateRenderer) localizedName(name string, data Data) string { return templateName } -func (s templateRenderer) exts(name string) []string { +func (s *templateRenderer) exts(name string) []string { exts := []string{} for { ext := filepath.Ext(name) @@ -208,17 +219,17 @@ func (s templateRenderer) exts(name string) []string { return exts } -func (s templateRenderer) assetPath(file string) (string, error) { +func (s *templateRenderer) assetPath(file string) (string, error) { if len(assetMap.Keys()) == 0 || os.Getenv("GO_ENV") != "production" { - manifest, err := s.AssetsBox.FindString("manifest.json") - + manifest, err := s.AssetsFS.Open("manifest.json") if err != nil { - manifest, err = s.AssetsBox.FindString("assets/manifest.json") + manifest, err = s.AssetsFS.Open("assets/manifest.json") if err != nil { return assetPathFor(file), nil } } + defer manifest.Close() err = loadManifest(manifest) if err != nil { diff --git a/render/template_helpers.go b/render/template_helpers.go index b64c1b84d..ff8a945c3 100644 --- a/render/template_helpers.go +++ b/render/template_helpers.go @@ -3,6 +3,7 @@ package render import ( "encoding/json" "html/template" + "io" "path/filepath" ht "github.com/gobuffalo/helpers/tags" @@ -14,7 +15,7 @@ type helperTag struct { fn func(string, tags.Options) template.HTML } -func (s templateRenderer) addAssetsHelpers(helpers Helpers) Helpers { +func (s *templateRenderer) addAssetsHelpers(helpers Helpers) Helpers { helpers["assetPath"] = s.assetPath ah := []helperTag{ @@ -51,10 +52,10 @@ func assetPathFor(file string) string { return filepath.ToSlash(filepath.Join("/assets", filePath)) } -func loadManifest(manifest string) error { +func loadManifest(manifest io.Reader) error { m := map[string]string{} - err := json.Unmarshal([]byte(manifest), &m) + err := json.NewDecoder(manifest).Decode(&m) if err != nil { return err } diff --git a/render/template_test.go b/render/template_test.go index def1d7f92..1c7f66676 100644 --- a/render/template_test.go +++ b/render/template_test.go @@ -5,15 +5,18 @@ import ( "strings" "testing" + "github.com/psanford/memfs" "github.com/stretchr/testify/require" ) func Test_Template(t *testing.T) { r := require.New(t) + rootFS := memfs.New() + r.NoError(rootFS.WriteFile(htmlTemplate, []byte("<%= name %>"), 0644)) + e := NewEngine() - box := e.TemplatesBox - r.NoError(box.AddString(htmlTemplate, `<%= name %>`)) + e.TemplatesFS = rootFS re := e.Template("foo/bar", htmlTemplate) r.Equal("foo/bar", re.ContentType()) @@ -25,12 +28,13 @@ func Test_Template(t *testing.T) { func Test_AssetPath(t *testing.T) { r := require.New(t) - e := NewEngine() - - abox := e.AssetsBox - r.NoError(abox.AddString("manifest.json", `{ + rootFS := memfs.New() + r.NoError(rootFS.WriteFile("manifest.json", []byte(`{ "application.css": "application.aabbc123.css" - }`)) + }`), 0644)) + + e := NewEngine() + e.AssetsFS = rootFS cases := map[string]string{ "something.txt": "/assets/something.txt", @@ -40,8 +44,9 @@ func Test_AssetPath(t *testing.T) { } for original, expected := range cases { - tbox := e.TemplatesBox - r.NoError(tbox.AddString(htmlTemplate, "<%= assetPath(\""+original+"\") %>")) + rootFS := memfs.New() + r.NoError(rootFS.WriteFile(htmlTemplate, []byte("<%= assetPath(\""+original+"\") %>"), 0644)) + e.TemplatesFS = rootFS re := e.Template("text/html; charset=utf-8", htmlTemplate) @@ -62,8 +67,9 @@ func Test_AssetPathNoManifest(t *testing.T) { } for original, expected := range cases { - tbox := e.TemplatesBox - r.NoError(tbox.AddString(htmlTemplate, "<%= assetPath(\""+original+"\") %>")) + rootFS := memfs.New() + r.NoError(rootFS.WriteFile(htmlTemplate, []byte("<%= assetPath(\""+original+"\") %>"), 0644)) + e.TemplatesFS = rootFS re := e.Template("text/html; charset=utf-8", htmlTemplate) @@ -76,10 +82,11 @@ func Test_AssetPathNoManifest(t *testing.T) { func Test_AssetPathNoManifestCorrupt(t *testing.T) { r := require.New(t) - e := NewEngine() + rootFS := memfs.New() + r.NoError(rootFS.WriteFile("manifest.json", []byte("//shdnn Corrupt!"), 0644)) - abox := e.AssetsBox - r.NoError(abox.AddString("manifest.json", "//shdnn Corrupt!")) + e := NewEngine() + e.AssetsFS = rootFS cases := map[string]string{ "something.txt": "manifest.json is not correct", @@ -87,8 +94,9 @@ func Test_AssetPathNoManifestCorrupt(t *testing.T) { } for original, expected := range cases { - tbox := e.TemplatesBox - r.NoError(tbox.AddString(htmlTemplate, "<%= assetPath(\""+original+"\") %>")) + rootFS := memfs.New() + r.NoError(rootFS.WriteFile(htmlTemplate, []byte("<%= assetPath(\""+original+"\") %>"), 0644)) + e.TemplatesFS = rootFS re := e.Template("text/html; charset=utf-8", htmlTemplate) diff --git a/request_test.go b/request_test.go deleted file mode 100644 index 039ae159b..000000000 --- a/request_test.go +++ /dev/null @@ -1,50 +0,0 @@ -package buffalo - -import ( - "io/ioutil" - "net/http" - "testing" - - "github.com/gobuffalo/httptest" - "github.com/stretchr/testify/require" -) - -func Test_Request_MultipleReads(t *testing.T) { - r := require.New(t) - var reads []string - - h := http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { - b, err := ioutil.ReadAll(req.Body) - r.NoError(err) - reads = append(reads, string(b)) - }) - app := New(Options{ - PreHandlers: []http.Handler{h}, - }) - - app.Use(func(next Handler) Handler { - return func(c Context) error { - b, err := ioutil.ReadAll(c.Request().Body) - if err != nil { - return err - } - reads = append(reads, string(b)) - return next(c) - } - }) - app.POST("/", func(c Context) error { - b, err := ioutil.ReadAll(c.Request().Body) - if err != nil { - return err - } - reads = append(reads, string(b)) - return nil - }) - - w := httptest.New(app) - w.JSON("/").Post(map[string]string{"foo": "foo"}) - r.Len(reads, 3) - - foo := `{"foo":"foo"}` - r.Equal([]string{foo, foo, foo}, reads) -} diff --git a/router_test.go b/router_test.go index b41a33893..1e3fa5254 100644 --- a/router_test.go +++ b/router_test.go @@ -4,6 +4,7 @@ import ( "fmt" "io/ioutil" "net/http" + "os" "path" "strings" "testing" @@ -11,9 +12,8 @@ import ( "github.com/gobuffalo/buffalo/render" "github.com/gobuffalo/envy" "github.com/gobuffalo/httptest" - "github.com/gobuffalo/packd" - "github.com/gobuffalo/packr/v2" "github.com/gorilla/mux" + "github.com/psanford/memfs" "github.com/stretchr/testify/require" ) @@ -333,10 +333,10 @@ func Test_Router_Redirect(t *testing.T) { func Test_Router_ServeFiles(t *testing.T) { r := require.New(t) - box := packd.NewMemoryBox() - box.AddString("foo.png", "foo") + rootFS := memfs.New() + rootFS.WriteFile("foo.png", []byte("foo"), 0644) a := New(Options{}) - a.ServeFiles("/assets", box) + a.ServeFiles("/assets", http.FS(rootFS)) w := httptest.New(a) res := w.HTML("/assets/foo.png").Get() @@ -361,10 +361,10 @@ func Test_Router_ServeFiles(t *testing.T) { func Test_Router_InvalidURL(t *testing.T) { r := require.New(t) - box := packd.NewMemoryBox() - box.AddString("foo.png", "foo") + rootFS := memfs.New() + rootFS.WriteFile("foo.png", []byte("foo"), 0644) a := New(Options{}) - a.ServeFiles("/", box) + a.ServeFiles("/", http.FS(rootFS)) w := httptest.New(a) s := "/%25%7dn2zq0%3cscript%3ealert(1)%3c\\/script%3evea7f" @@ -408,9 +408,9 @@ func Test_App_NamedRoutes(t *testing.T) { var resourcesResource Resource = ResourcesResource{} rr := render.New(render.Options{ - HTMLLayout: "application.plush.html", - TemplatesBox: packr.New("../templates", "../templates"), - Helpers: map[string]interface{}{}, + HTMLLayout: "application.plush.html", + TemplatesFS: os.DirFS("../templates"), + Helpers: map[string]interface{}{}, }) sampleHandler := func(c Context) error { @@ -470,9 +470,9 @@ func Test_App_NamedRoutes_MissingParameter(t *testing.T) { a := New(Options{}) rr := render.New(render.Options{ - HTMLLayout: "application.plush.html", - TemplatesBox: packr.New("../templates", "../templates"), - Helpers: map[string]interface{}{}, + HTMLLayout: "application.plush.html", + TemplatesFS: os.DirFS("../templates"), + Helpers: map[string]interface{}{}, }) sampleHandler := func(c Context) error { diff --git a/server.go b/server.go index 03f768780..670ce89f7 100644 --- a/server.go +++ b/server.go @@ -10,7 +10,6 @@ import ( "github.com/gobuffalo/buffalo/internal/takeon/github.com/markbates/errx" "github.com/gobuffalo/buffalo/servers" "github.com/gobuffalo/events" - "github.com/gobuffalo/packd" "github.com/markbates/refresh/refresh/web" "github.com/markbates/sigtx" ) @@ -108,13 +107,6 @@ func (a *App) Stop(err error) error { } func (a *App) ServeHTTP(w http.ResponseWriter, r *http.Request) { - if r.Body != nil { - // convert the request's body to a packd.File which can be read N times - f, err := packd.NewFile("", r.Body) - if err == nil { - r.Body = f - } - } ws := &Response{ ResponseWriter: w, } From 441b07f8da9aec77e8c86f4d99d0303ec22499a0 Mon Sep 17 00:00:00 2001 From: Matthias Fasching Date: Sun, 21 Nov 2021 13:12:19 +0000 Subject: [PATCH 03/11] Remove obsolete fields --- render/options.go | 8 -------- 1 file changed, 8 deletions(-) diff --git a/render/options.go b/render/options.go index 32a464d32..33ec71d7b 100644 --- a/render/options.go +++ b/render/options.go @@ -17,17 +17,9 @@ type Options struct { // JavaScriptLayout is the default layout to be used with all JavaScript renders. JavaScriptLayout string - // TemplatesBox is the location of the templates directory on disk. - // Deprecated: use TemplateFS instead - // TemplatesBox packd.Box - // TemplateFS is the fs.FS that holds the templates TemplatesFS fs.FS - // AssetsBox is the location of the public assets the app will serve. - // Deprecated: use AssetsFS instead - // AssetsBox packd.Box - // AssetsFS is the fs.FS that holds the of the public assets the app will serve. AssetsFS fs.FS From 78d6b368ba58df814c08ba90c5460f1f4c4ce3bb Mon Sep 17 00:00:00 2001 From: Matthias Fasching Date: Sun, 21 Nov 2021 13:54:01 +0000 Subject: [PATCH 04/11] Use errors package instead of errx --- app.go | 1 - default_context.go | 5 ++-- errors.go | 23 ++++++++++++------- .../takeon/github.com/markbates/errx/LICENSE | 21 ----------------- .../github.com/markbates/errx/version.go | 4 ---- plugins/plugdeps/plugdeps_test.go | 4 ++-- plugins/plugins.go | 4 ++-- render/auto.go | 4 +++- render/template.go | 3 +-- render/template_helpers.go | 3 +-- route_info.go | 4 +++- server.go | 4 ++-- 12 files changed, 32 insertions(+), 48 deletions(-) delete mode 100644 internal/takeon/github.com/markbates/errx/LICENSE delete mode 100644 internal/takeon/github.com/markbates/errx/version.go diff --git a/app.go b/app.go index a255bd216..aec94b3a6 100644 --- a/app.go +++ b/app.go @@ -64,7 +64,6 @@ func New(opts Options) *App { c := a.newContext(RouteInfo{}, res, req) err := fmt.Errorf(errorf, req.Method, req.URL.Path) _ = a.ErrorHandlers.Get(code)(code, err, c) - } } diff --git a/default_context.go b/default_context.go index 1e3e0354d..e648948a0 100644 --- a/default_context.go +++ b/default_context.go @@ -4,6 +4,7 @@ import ( "bytes" "context" "encoding/json" + "errors" "fmt" "io" "net/http" @@ -15,7 +16,6 @@ import ( "time" "github.com/gobuffalo/buffalo/binding" - "github.com/gobuffalo/buffalo/internal/takeon/github.com/markbates/errx" "github.com/gobuffalo/buffalo/render" ) @@ -129,7 +129,8 @@ func (d *DefaultContext) Render(status int, rr render.Renderer) error { err := rr.Render(bb, data) if err != nil { - if er, ok := errx.Unwrap(err).(render.ErrRedirect); ok { + var er render.ErrRedirect + if errors.As(err, &er) { return d.Redirect(er.Status, er.URL) } return HTTPError{Status: http.StatusInternalServerError, Cause: err} diff --git a/errors.go b/errors.go index 7d0db0872..ff291ab67 100644 --- a/errors.go +++ b/errors.go @@ -4,6 +4,7 @@ import ( "database/sql" "encoding/json" "encoding/xml" + "errors" "fmt" "net/http" "runtime/debug" @@ -12,7 +13,6 @@ import ( "github.com/gobuffalo/buffalo/internal/defaults" "github.com/gobuffalo/buffalo/internal/httpx" - "github.com/gobuffalo/buffalo/internal/takeon/github.com/markbates/errx" "github.com/gobuffalo/events" "github.com/gobuffalo/plush/v4" ) @@ -23,6 +23,10 @@ type HTTPError struct { Cause error `json:"error"` } +func (h HTTPError) Unwrap() error { + return h.Cause +} + func (h HTTPError) Error() string { return h.Cause.Error() } @@ -105,13 +109,13 @@ func (a *App) defaultErrorMiddleware(next Handler) Handler { return nil } status := http.StatusInternalServerError - // unpack root cause and check for HTTPError - cause := errx.Unwrap(err) - switch cause { - case sql.ErrNoRows: + // unpack root err and check for HTTPError + switch { + case errors.Is(err, sql.ErrNoRows): status = http.StatusNotFound default: - if h, ok := cause.(HTTPError); ok { + var h HTTPError + if errors.As(err, &h) { status = h.Status } } @@ -183,13 +187,16 @@ func defaultErrorHandler(status int, origErr error, c Context) error { } trace := origErr.Error() + if cause := errors.Unwrap(origErr); cause != nil { + origErr = cause + } switch strings.ToLower(requestCT) { case "application/json", "text/json", "json": c.Response().Header().Set("content-type", "application/json") err := json.NewEncoder(c.Response()).Encode(errorResponseDefault(defaultErrorResponse, &ErrorResponse{ - Error: errx.Unwrap(origErr).Error(), + Error: origErr.Error(), Trace: trace, Code: status, })) @@ -199,7 +206,7 @@ func defaultErrorHandler(status int, origErr error, c Context) error { case "application/xml", "text/xml", "xml": c.Response().Header().Set("content-type", "text/xml") err := xml.NewEncoder(c.Response()).Encode(errorResponseDefault(defaultErrorResponse, &ErrorResponse{ - Error: errx.Unwrap(origErr).Error(), + Error: origErr.Error(), Trace: trace, Code: status, })) diff --git a/internal/takeon/github.com/markbates/errx/LICENSE b/internal/takeon/github.com/markbates/errx/LICENSE deleted file mode 100644 index 649efd437..000000000 --- a/internal/takeon/github.com/markbates/errx/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2019 Mark Bates - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/internal/takeon/github.com/markbates/errx/version.go b/internal/takeon/github.com/markbates/errx/version.go deleted file mode 100644 index 6b5c99b8e..000000000 --- a/internal/takeon/github.com/markbates/errx/version.go +++ /dev/null @@ -1,4 +0,0 @@ -package errx - -// Version of errx -const Version = "v1.1.0" diff --git a/plugins/plugdeps/plugdeps_test.go b/plugins/plugdeps/plugdeps_test.go index e4f777c03..f037c9267 100644 --- a/plugins/plugdeps/plugdeps_test.go +++ b/plugins/plugdeps/plugdeps_test.go @@ -1,11 +1,11 @@ package plugdeps import ( + "errors" "os" "path/filepath" "testing" - "github.com/gobuffalo/buffalo/internal/takeon/github.com/markbates/errx" "github.com/gobuffalo/meta" "github.com/stretchr/testify/require" ) @@ -37,7 +37,7 @@ func Test_List_Off(t *testing.T) { app := meta.App{} plugs, err := List(app) r.Error(err) - r.Equal(errx.Unwrap(err), ErrMissingConfig) + r.True(errors.Is(err, ErrMissingConfig)) r.Len(plugs.List(), 0) } diff --git a/plugins/plugins.go b/plugins/plugins.go index 724475d4c..f69401534 100644 --- a/plugins/plugins.go +++ b/plugins/plugins.go @@ -4,13 +4,13 @@ import ( "bytes" "context" "encoding/json" + "errors" "os" "os/exec" "path/filepath" "strings" "time" - "github.com/gobuffalo/buffalo/internal/takeon/github.com/markbates/errx" "github.com/gobuffalo/buffalo/plugins/plugdeps" "github.com/gobuffalo/envy" "github.com/gobuffalo/meta" @@ -206,7 +206,7 @@ func listPlugDeps(app meta.App) (List, error) { } bin, err := LookPath(bin) if err != nil { - if errx.Unwrap(err) != ErrPlugMissing { + if !errors.Is(err, ErrPlugMissing) { return list, err } continue diff --git a/render/auto.go b/render/auto.go index 0532d6788..51f1c2e59 100644 --- a/render/auto.go +++ b/render/auto.go @@ -2,6 +2,7 @@ package render import ( "context" + "errors" "fmt" "io" "net/http" @@ -110,7 +111,8 @@ func (ir htmlAutoRenderer) Render(w io.Writer, data Data) error { switch data["method"] { case "PUT", "POST", "DELETE": if err := ir.redirect(pname, w, data); err != nil { - if er, ok := err.(ErrRedirect); ok && er.Status >= http.StatusMultipleChoices && er.Status < http.StatusBadRequest { + var er ErrRedirect + if errors.As(err, &er) && er.Status >= http.StatusMultipleChoices && er.Status < http.StatusBadRequest { return err } diff --git a/render/template.go b/render/template.go index 9acc9c0ff..be683960a 100644 --- a/render/template.go +++ b/render/template.go @@ -11,7 +11,6 @@ import ( "strings" "github.com/gobuffalo/buffalo/internal/takeon/github.com/gobuffalo/syncx" - "github.com/gobuffalo/buffalo/internal/takeon/github.com/markbates/errx" "github.com/sirupsen/logrus" ) @@ -87,7 +86,7 @@ func (s *templateRenderer) Render(w io.Writer, data Data) error { for _, name := range s.names { body, err = s.exec(name, data) if err != nil { - return errx.Wrap(err, name) + return fmt.Errorf("%s: %w", name, err) } data["yield"] = body } diff --git a/render/template_helpers.go b/render/template_helpers.go index ff8a945c3..4cd8d567e 100644 --- a/render/template_helpers.go +++ b/render/template_helpers.go @@ -55,8 +55,7 @@ func assetPathFor(file string) string { func loadManifest(manifest io.Reader) error { m := map[string]string{} - err := json.NewDecoder(manifest).Decode(&m) - if err != nil { + if err := json.NewDecoder(manifest).Decode(&m); err != nil { return err } for k, v := range m { diff --git a/route_info.go b/route_info.go index 3309abbed..7fa122039 100644 --- a/route_info.go +++ b/route_info.go @@ -2,6 +2,7 @@ package buffalo import ( "encoding/json" + "errors" "fmt" "html/template" "net/http" @@ -106,7 +107,8 @@ func (ri RouteInfo) ServeHTTP(res http.ResponseWriter, req *http.Request) { if err != nil { status := http.StatusInternalServerError - if he, ok := err.(HTTPError); ok { + var he HTTPError + if errors.As(err, &he) { status = he.Status } events.EmitError(EvtRouteErr, err, payload) diff --git a/server.go b/server.go index 670ce89f7..f29d08b1e 100644 --- a/server.go +++ b/server.go @@ -2,12 +2,12 @@ package buffalo import ( "context" + "errors" "net/http" "os" "strings" "syscall" - "github.com/gobuffalo/buffalo/internal/takeon/github.com/markbates/errx" "github.com/gobuffalo/buffalo/servers" "github.com/gobuffalo/events" "github.com/markbates/refresh/refresh/web" @@ -99,7 +99,7 @@ func (a *App) Serve(srvs ...servers.Server) error { // Stop the application and attempt to gracefully shutdown func (a *App) Stop(err error) error { a.cancel() - if err != nil && errx.Unwrap(err) != context.Canceled { + if err != nil && !errors.Is(err, context.Canceled) { a.Logger.Error(err) return err } From 5421872315feb21f8d896dd00453122c3f9947ae Mon Sep 17 00:00:00 2001 From: Matthias Fasching Date: Sun, 21 Nov 2021 14:04:13 +0000 Subject: [PATCH 05/11] Cleanup --- .../takeon/github.com/gobuffalo/syncx/LICENSE | 21 ------ .../github.com/gobuffalo/syncx/README.md | 18 ----- .../github.com/gobuffalo/syncx/byte_map.go | 73 ------------------- .../github.com/gobuffalo/syncx/int_map.go | 73 ------------------- .../gobuffalo/syncx/interface_map.go | 73 ------------------- .../github.com/gobuffalo/syncx/string_map.go | 73 ------------------- .../github.com/gobuffalo/syncx/version.go | 4 - .../takeon/github.com/markbates/errx/errx.go | 49 ------------- render/template.go | 7 +- 9 files changed, 3 insertions(+), 388 deletions(-) delete mode 100644 internal/takeon/github.com/gobuffalo/syncx/LICENSE delete mode 100644 internal/takeon/github.com/gobuffalo/syncx/README.md delete mode 100644 internal/takeon/github.com/gobuffalo/syncx/byte_map.go delete mode 100644 internal/takeon/github.com/gobuffalo/syncx/int_map.go delete mode 100644 internal/takeon/github.com/gobuffalo/syncx/interface_map.go delete mode 100644 internal/takeon/github.com/gobuffalo/syncx/string_map.go delete mode 100644 internal/takeon/github.com/gobuffalo/syncx/version.go delete mode 100644 internal/takeon/github.com/markbates/errx/errx.go diff --git a/internal/takeon/github.com/gobuffalo/syncx/LICENSE b/internal/takeon/github.com/gobuffalo/syncx/LICENSE deleted file mode 100644 index a538bcbf2..000000000 --- a/internal/takeon/github.com/gobuffalo/syncx/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2018 Mark Bates - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/internal/takeon/github.com/gobuffalo/syncx/README.md b/internal/takeon/github.com/gobuffalo/syncx/README.md deleted file mode 100644 index 0f0d02b20..000000000 --- a/internal/takeon/github.com/gobuffalo/syncx/README.md +++ /dev/null @@ -1,18 +0,0 @@ -

- -

-GoDoc -Go Report Card -

- -# github.com/gobuffalo/syncx - -This package provides a set of types and tools for working in current environments. - -See [https://godoc.org/github.com/gobuffalo/syncx](https://godoc.org/github.com/gobuffalo/syncx) for more details. - -# Installation - -```bash -$ go get github.com/gobuffalo/syncx -``` diff --git a/internal/takeon/github.com/gobuffalo/syncx/byte_map.go b/internal/takeon/github.com/gobuffalo/syncx/byte_map.go deleted file mode 100644 index 39b7dae16..000000000 --- a/internal/takeon/github.com/gobuffalo/syncx/byte_map.go +++ /dev/null @@ -1,73 +0,0 @@ -//go:generate mapgen -name "Byte" -zero "[]byte(``)" -go-type "[]byte" -pkg "" -a "[]byte(`A`)" -b "[]byte(`B`)" -c "[]byte(`C`)" -bb "[]byte(`BB`)" -destination "syncx" -// Code generated by github.com/gobuffalo/mapgen. DO NOT EDIT. - -package syncx - -import ( - "sort" - "sync" -) - -// ByteMap wraps sync.Map and uses the following types: -// key: string -// value: []byte -type ByteMap struct { - data sync.Map -} - -// Delete the key from the map -func (m *ByteMap) Delete(key string) { - m.data.Delete(key) -} - -// Load the key from the map. -// Returns []byte or bool. -// A false return indicates either the key was not found -// or the value is not of type []byte -func (m *ByteMap) Load(key string) ([]byte, bool) { - i, ok := m.data.Load(key) - if !ok { - return []byte(``), false - } - s, ok := i.([]byte) - return s, ok -} - -// LoadOrStore will return an existing key or -// store the value if not already in the map -func (m *ByteMap) LoadOrStore(key string, value []byte) ([]byte, bool) { - i, _ := m.data.LoadOrStore(key, value) - s, ok := i.([]byte) - return s, ok -} - -// Range over the []byte values in the map -func (m *ByteMap) Range(f func(key string, value []byte) bool) { - m.data.Range(func(k, v interface{}) bool { - key, ok := k.(string) - if !ok { - return false - } - value, ok := v.([]byte) - if !ok { - return false - } - return f(key, value) - }) -} - -// Store a []byte in the map -func (m *ByteMap) Store(key string, value []byte) { - m.data.Store(key, value) -} - -// Keys returns a list of keys in the map -func (m *ByteMap) Keys() []string { - var keys []string - m.Range(func(key string, value []byte) bool { - keys = append(keys, key) - return true - }) - sort.Strings(keys) - return keys -} diff --git a/internal/takeon/github.com/gobuffalo/syncx/int_map.go b/internal/takeon/github.com/gobuffalo/syncx/int_map.go deleted file mode 100644 index f6eba4dce..000000000 --- a/internal/takeon/github.com/gobuffalo/syncx/int_map.go +++ /dev/null @@ -1,73 +0,0 @@ -//go:generate mapgen -name "Int" -zero "0" -go-type "int" -pkg "" -a "0" -b "1" -c "2" -bb "-1" -destination "syncx" -// Code generated by github.com/gobuffalo/mapgen. DO NOT EDIT. - -package syncx - -import ( - "sort" - "sync" -) - -// IntMap wraps sync.Map and uses the following types: -// key: string -// value: int -type IntMap struct { - data sync.Map -} - -// Delete the key from the map -func (m *IntMap) Delete(key string) { - m.data.Delete(key) -} - -// Load the key from the map. -// Returns int or bool. -// A false return indicates either the key was not found -// or the value is not of type int -func (m *IntMap) Load(key string) (int, bool) { - i, ok := m.data.Load(key) - if !ok { - return 0, false - } - s, ok := i.(int) - return s, ok -} - -// LoadOrStore will return an existing key or -// store the value if not already in the map -func (m *IntMap) LoadOrStore(key string, value int) (int, bool) { - i, _ := m.data.LoadOrStore(key, value) - s, ok := i.(int) - return s, ok -} - -// Range over the int values in the map -func (m *IntMap) Range(f func(key string, value int) bool) { - m.data.Range(func(k, v interface{}) bool { - key, ok := k.(string) - if !ok { - return false - } - value, ok := v.(int) - if !ok { - return false - } - return f(key, value) - }) -} - -// Store a int in the map -func (m *IntMap) Store(key string, value int) { - m.data.Store(key, value) -} - -// Keys returns a list of keys in the map -func (m *IntMap) Keys() []string { - var keys []string - m.Range(func(key string, value int) bool { - keys = append(keys, key) - return true - }) - sort.Strings(keys) - return keys -} diff --git a/internal/takeon/github.com/gobuffalo/syncx/interface_map.go b/internal/takeon/github.com/gobuffalo/syncx/interface_map.go deleted file mode 100644 index 93376135d..000000000 --- a/internal/takeon/github.com/gobuffalo/syncx/interface_map.go +++ /dev/null @@ -1,73 +0,0 @@ -//go:generate mapgen -name "" -zero "nil" -go-type "interface{}" -pkg "" -a "0" -b "1" -c "2" -bb "-1" -destination "syncx" -// Code generated by github.com/gobuffalo/mapgen. DO NOT EDIT. - -package syncx - -import ( - "sort" - "sync" -) - -// Map wraps sync.Map and uses the following types: -// key: string -// value: interface{} -type Map struct { - data sync.Map -} - -// Delete the key from the map -func (m *Map) Delete(key string) { - m.data.Delete(key) -} - -// Load the key from the map. -// Returns interface{} or bool. -// A false return indicates either the key was not found -// or the value is not of type interface{} -func (m *Map) Load(key string) (interface{}, bool) { - i, ok := m.data.Load(key) - if !ok { - return nil, false - } - s, ok := i.(interface{}) - return s, ok -} - -// LoadOrStore will return an existing key or -// store the value if not already in the map -func (m *Map) LoadOrStore(key string, value interface{}) (interface{}, bool) { - i, _ := m.data.LoadOrStore(key, value) - s, ok := i.(interface{}) - return s, ok -} - -// Range over the interface{} values in the map -func (m *Map) Range(f func(key string, value interface{}) bool) { - m.data.Range(func(k, v interface{}) bool { - key, ok := k.(string) - if !ok { - return false - } - value, ok := v.(interface{}) - if !ok { - return false - } - return f(key, value) - }) -} - -// Store a interface{} in the map -func (m *Map) Store(key string, value interface{}) { - m.data.Store(key, value) -} - -// Keys returns a list of keys in the map -func (m *Map) Keys() []string { - var keys []string - m.Range(func(key string, value interface{}) bool { - keys = append(keys, key) - return true - }) - sort.Strings(keys) - return keys -} diff --git a/internal/takeon/github.com/gobuffalo/syncx/string_map.go b/internal/takeon/github.com/gobuffalo/syncx/string_map.go deleted file mode 100644 index 2bb37cf4b..000000000 --- a/internal/takeon/github.com/gobuffalo/syncx/string_map.go +++ /dev/null @@ -1,73 +0,0 @@ -//go:generate mapgen -name "String" -zero "``" -go-type "string" -pkg "" -a "`A`" -b "`B`" -c "`C`" -bb "`BB`" -destination "syncx" -// Code generated by github.com/gobuffalo/mapgen. DO NOT EDIT. - -package syncx - -import ( - "sort" - "sync" -) - -// StringMap wraps sync.Map and uses the following types: -// key: string -// value: string -type StringMap struct { - data sync.Map -} - -// Delete the key from the map -func (m *StringMap) Delete(key string) { - m.data.Delete(key) -} - -// Load the key from the map. -// Returns string or bool. -// A false return indicates either the key was not found -// or the value is not of type string -func (m *StringMap) Load(key string) (string, bool) { - i, ok := m.data.Load(key) - if !ok { - return ``, false - } - s, ok := i.(string) - return s, ok -} - -// LoadOrStore will return an existing key or -// store the value if not already in the map -func (m *StringMap) LoadOrStore(key string, value string) (string, bool) { - i, _ := m.data.LoadOrStore(key, value) - s, ok := i.(string) - return s, ok -} - -// Range over the string values in the map -func (m *StringMap) Range(f func(key string, value string) bool) { - m.data.Range(func(k, v interface{}) bool { - key, ok := k.(string) - if !ok { - return false - } - value, ok := v.(string) - if !ok { - return false - } - return f(key, value) - }) -} - -// Store a string in the map -func (m *StringMap) Store(key string, value string) { - m.data.Store(key, value) -} - -// Keys returns a list of keys in the map -func (m *StringMap) Keys() []string { - var keys []string - m.Range(func(key string, value string) bool { - keys = append(keys, key) - return true - }) - sort.Strings(keys) - return keys -} diff --git a/internal/takeon/github.com/gobuffalo/syncx/version.go b/internal/takeon/github.com/gobuffalo/syncx/version.go deleted file mode 100644 index 97ee3e4ca..000000000 --- a/internal/takeon/github.com/gobuffalo/syncx/version.go +++ /dev/null @@ -1,4 +0,0 @@ -package syncx - -// Version of syncx -const Version = "v0.0.1" diff --git a/internal/takeon/github.com/markbates/errx/errx.go b/internal/takeon/github.com/markbates/errx/errx.go deleted file mode 100644 index 515d9f506..000000000 --- a/internal/takeon/github.com/markbates/errx/errx.go +++ /dev/null @@ -1,49 +0,0 @@ -package errx - -import "fmt" - -// go2 errors -type Wrapper interface { - Unwrap() error -} - -// pkg/errors -type Causer interface { - Cause() error -} - -func Unwrap(err error) error { - switch e := err.(type) { - case Wrapper: - return e.Unwrap() - case Causer: - return e.Cause() - } - return err -} - -var Cause = Unwrap - -func Wrap(err error, msg string) error { - return wrapped{ - err: err, - msg: msg, - } -} - -type wrapped struct { - err error - msg string -} - -func (w wrapped) Error() string { - return fmt.Sprintf("%s: %s", w.msg, w.err) -} - -func (w wrapped) Unwrap() error { - return w.err -} - -func (w wrapped) Cause() error { - return w.err -} diff --git a/render/template.go b/render/template.go index be683960a..9e64bbe19 100644 --- a/render/template.go +++ b/render/template.go @@ -9,8 +9,8 @@ import ( "path/filepath" "sort" "strings" + "sync" - "github.com/gobuffalo/buffalo/internal/takeon/github.com/gobuffalo/syncx" "github.com/sirupsen/logrus" ) @@ -18,7 +18,7 @@ type templateRenderer struct { *Engine contentType string names []string - aliases syncx.StringMap + aliases sync.Map } func (s *templateRenderer) ContentType() string { @@ -40,7 +40,7 @@ func (s *templateRenderer) resolve(name string) ([]byte, error) { return nil, fmt.Errorf("could not find template %s", name) } - f, err = s.TemplatesFS.Open(v) + f, err = s.TemplatesFS.Open(v.(string)) if err != nil { return nil, err } @@ -261,6 +261,5 @@ func (e *Engine) Template(c string, names ...string) Renderer { Engine: e, contentType: c, names: names, - aliases: syncx.StringMap{}, } } From 1d9b43ac7d436b2f61e3213ff97cdb2507d0d681 Mon Sep 17 00:00:00 2001 From: Matthias Fasching Date: Sun, 21 Nov 2021 15:17:32 +0000 Subject: [PATCH 06/11] Update to pop V6 --- go.mod | 4 +- go.sum | 320 +++++++---------------------------------------------- options.go | 4 +- 3 files changed, 47 insertions(+), 281 deletions(-) diff --git a/go.mod b/go.mod index d6c3aed83..6210b7323 100644 --- a/go.mod +++ b/go.mod @@ -16,7 +16,7 @@ require ( github.com/gobuffalo/meta v0.3.1 github.com/gobuffalo/nulls v0.4.1 github.com/gobuffalo/plush/v4 v4.1.9 - github.com/gobuffalo/pop/v5 v5.3.4 + github.com/gobuffalo/pop/v6 v6.0.0 github.com/gobuffalo/tags/v3 v3.1.2 github.com/gorilla/handlers v1.5.1 github.com/gorilla/mux v1.8.0 @@ -34,3 +34,5 @@ require ( github.com/stretchr/testify v1.7.0 gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc ) + +replace github.com/gobuffalo/pop/v6 v6.0.0 => github.com/fasmat/pop/v6 v6.0.0-20211121130729-c0494e3061e4 diff --git a/go.sum b/go.sum index 346f03dbf..de0421129 100644 --- a/go.sum +++ b/go.sum @@ -41,80 +41,38 @@ github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03 github.com/BurntSushi/toml v0.4.1 h1:GaI7EiDXDRfa8VshkTj7Fym7ha+y8/XxIgD2okUIjLw= github.com/BurntSushi/toml v0.4.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= github.com/Masterminds/semver/v3 v3.0.3/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= github.com/Masterminds/semver/v3 v3.1.1 h1:hLg3sBzpNErnxhQtUy/mmLR2I9foDujNK030IGemrRc= github.com/Masterminds/semver/v3 v3.1.1/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= -github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= -github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= -github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= -github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= -github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= -github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= -github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= -github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= -github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= -github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= -github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= github.com/aymerick/douceur v0.2.0 h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuPk= github.com/aymerick/douceur v0.2.0/go.mod h1:wlT5vV2O3h55X9m7iVYN0TBM0NH/MmbLnd30/FjWUq4= -github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= -github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= -github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/bketelsen/crypt v0.0.4/go.mod h1:aI6NrJ0pMGgvZKL1iVgXLnfIFJtfV+bKCoqOes/6LfM= -github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= -github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= -github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= -github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cockroachdb/apd v1.1.0 h1:3LFP3629v+1aKXU5Q37mxmRxX/pIu1nijXydLShEq5I= github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ= -github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= -github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= -github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= -github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd v0.0.0-20190719114852-fd7a80b32e1f/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= -github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= -github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= -github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= 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/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= -github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= -github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= -github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= -github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= -github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= -github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= @@ -122,17 +80,15 @@ github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5y github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/fasmat/pop/v6 v6.0.0-20211121130729-c0494e3061e4 h1:WlNkkImDTfEDtoqWdWx5MK7rvQIkjVzprp2F45drNAo= +github.com/fasmat/pop/v6 v6.0.0-20211121130729-c0494e3061e4/go.mod h1:5rd3OnViLhjteR8+0i/mT9Q4CzkTzCoR7tm/9mmAic4= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= github.com/fatih/structs v1.1.0 h1:Q7juDM0QtcnhCpeyLGQKyg4TOIghuNXrkL32pHAUMxo= github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= github.com/felixge/httpsnoop v1.0.1 h1:lvB5Jl89CsZtGIWuTcDM1E/vkVs49/Ml7JJe07l8SPQ= github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= -github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= -github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= -github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/fsnotify/fsnotify v1.5.1 h1:mZcQUHVQUQWoPXXtuf9yuEXKudkV2sx1E06UadKWpgI= github.com/fsnotify/fsnotify v1.5.1/go.mod h1:T3375wBYaZdLLcVNkcVbzGHY7f1l/uK5T5Ai1i3InKU= @@ -140,78 +96,55 @@ github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeME github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o= -github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= -github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= -github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= -github.com/go-sql-driver/mysql v1.5.0 h1:ozyZYNQW3x3HtqT1jira07DN2PArx2v7/mN66gGcHOs= github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= +github.com/go-sql-driver/mysql v1.6.0 h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE= +github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/gobuffalo/attrs v0.1.0/go.mod h1:fmNpaWyHM0tRm8gCZWKx8yY9fvaNLo2PyzBNSrBZ5Hw= -github.com/gobuffalo/envy v1.8.1/go.mod h1:FurDp9+EDPE4aIUS3ZLyD+7/9fpx7YRt/ukY6jIHf0w= +github.com/gobuffalo/attrs v1.0.1/go.mod h1:qGdnq2RukKtBl4ASJit0OFckc5XGSyTFk98SvRpMFrQ= github.com/gobuffalo/envy v1.10.1 h1:ppDLoXv2feQ5nus4IcgtyMdHQkKng2lhJCIm33cblM0= github.com/gobuffalo/envy v1.10.1/go.mod h1:AWx4++KnNOW3JOeEvhSaq+mvgAvnMYOY1XSIin4Mago= github.com/gobuffalo/events v1.4.2 h1:9X4nBKGXOU/N/3AFRO0SxYvpL88lws8M7f5FODbWCm4= github.com/gobuffalo/events v1.4.2/go.mod h1:GI0w4OrQDQP/tIIC9FPl04qWs4dTx52DLCCcwVg7Ltc= github.com/gobuffalo/fizz v1.10.0 h1:I8vad0PnmR+CLjSnZ5L5jlhBm4S88UIGOoZZL3/3e24= github.com/gobuffalo/fizz v1.10.0/go.mod h1:J2XGPO0AfJ1zKw7+2BA+6FEGAkyEsdCOLvN93WCT2WI= -github.com/gobuffalo/flect v0.1.5/go.mod h1:W3K3X9ksuZfir8f/LrfVtWmCDQFfayuylOJ7sz/Fj80= github.com/gobuffalo/flect v0.2.0/go.mod h1:W3K3X9ksuZfir8f/LrfVtWmCDQFfayuylOJ7sz/Fj80= -github.com/gobuffalo/flect v0.2.1/go.mod h1:vmkQwuZYhN5Pc4ljYQZzP+1sq+NEkK+lh20jmEmX3jc= github.com/gobuffalo/flect v0.2.4 h1:BSYA8+T60cdyq+vynaSUjqSVI9mDEg9ZfQUXKmfjo4I= github.com/gobuffalo/flect v0.2.4/go.mod h1:1ZyCLIbg0YD7sDkzvFdPoOydPtD8y9JQnrOROolUcM8= -github.com/gobuffalo/genny/v2 v2.0.5/go.mod h1:kRkJuAw9mdI37AiEYjV4Dl+TgkBDYf8HZVjLkqe5eBg= +github.com/gobuffalo/genny/v2 v2.0.8/go.mod h1:R45scCyQfff2HysNJHNanjrpvPw4Qu+rM1MOMDBB5oU= github.com/gobuffalo/github_flavored_markdown v1.1.0/go.mod h1:TSpTKWcRTI0+v7W3x8dkSKMLJSUpuVitlptCkpeY8ic= github.com/gobuffalo/github_flavored_markdown v1.1.1 h1:kUf8ginyBOTRXcKSTPsPAqlA25vQ80+xAspLIYaxmTU= github.com/gobuffalo/github_flavored_markdown v1.1.1/go.mod h1:yU32Pen+eorS58oxh/bNZx76zUOCJwmvyV5FBrvzOKQ= github.com/gobuffalo/helpers v0.6.0/go.mod h1:pncVrer7x/KRvnL5aJABLAuT/RhKRR9klL6dkUOhyv8= -github.com/gobuffalo/helpers v0.6.1/go.mod h1:wInbDi0vTJKZBviURTLRMFLE4+nF2uRuuL2fnlYo7w4= github.com/gobuffalo/helpers v0.6.4 h1:N9is8xgaotJzGIge1GoLYiWRpKZPqnS9RSty72OhIn8= github.com/gobuffalo/helpers v0.6.4/go.mod h1:m2aOKsTl3KB0RUwwpxf3tykaaitujQ3irivqrlNAcJ0= github.com/gobuffalo/here v0.4.0/go.mod h1:bTNk/uKZgycuB358iR0D32dI9kHBClBGpXjW2HVHkNo= github.com/gobuffalo/httptest v1.5.1 h1:WwCZrMYVDqkjTlxo7OasFOMvdaG4ysriidJoqcedv2M= github.com/gobuffalo/httptest v1.5.1/go.mod h1:uEeEFF2BRyTMNAATqFQAKYvpHrWWPNoJbIB3YPuANNM= -github.com/gobuffalo/logger v1.0.3/go.mod h1:SoeejUwldiS7ZsyCBphOGURmWdwUFXs0J7TCjEhjKxM= github.com/gobuffalo/logger v1.0.6 h1:nnZNpxYo0zx+Aj9RfMPBm+x9zAU2OayFh/xrAWi34HU= github.com/gobuffalo/logger v1.0.6/go.mod h1:J31TBEHR1QLV2683OXTAItYIg8pv2JMHnF/quuAbMjs= github.com/gobuffalo/meta v0.3.1 h1:wrg94uDwu3bM3HMdmz2wlT8A9iAJvMKbHmYs8Rxi63I= github.com/gobuffalo/meta v0.3.1/go.mod h1:garIq5Vcqs5dj8nv3YG8hRbqAdQhIOt0DAXmaLtO7OU= -github.com/gobuffalo/nulls v0.2.0/go.mod h1:w4q8RoSCEt87Q0K0sRIZWYeIxkxog5mh3eN3C/n+dUc= github.com/gobuffalo/nulls v0.4.1 h1:k7QVCJfMplv9VRQQLb4N1d8tXUdGvcdMNfp4BfMnG2M= github.com/gobuffalo/nulls v0.4.1/go.mod h1:pp8e1hWTRJZFpMl4fj/CVbSMlaxjeGKkFq4RuBZi3w8= -github.com/gobuffalo/packd v0.3.0/go.mod h1:zC7QkmNkYVGKPw4tHpBQ+ml7W/3tIebgeo1b36chA3Q= -github.com/gobuffalo/packd v1.0.0 h1:6ERZvJHfe24rfFmA9OaoKBdC7+c9sydrytMg8SdFGBM= -github.com/gobuffalo/packd v1.0.0/go.mod h1:6VTc4htmJRFB7u1m/4LeMTWjFoYrUiBkU9Fdec9hrhI= -github.com/gobuffalo/packr/v2 v2.8.0 h1:IULGd15bQL59ijXLxEvA5wlMxsmx/ZkQv9T282zNVIY= -github.com/gobuffalo/packr/v2 v2.8.0/go.mod h1:PDk2k3vGevNE3SwVyVRgQCCXETC9SaONCNSXT1Q8M1g= +github.com/gobuffalo/packd v1.0.1/go.mod h1:PP2POP3p3RXGz7Jh6eYEf93S7vA2za6xM7QT85L4+VY= github.com/gobuffalo/plush/v4 v4.0.0/go.mod h1:ErFS3UxKqEb8fpFJT7lYErfN/Nw6vHGiDMTjxpk5bQ0= github.com/gobuffalo/plush/v4 v4.1.9 h1:u9rQBuYCeHC0ppKxsZljk5vb1oT8PQa5EMNTAN2337s= github.com/gobuffalo/plush/v4 v4.1.9/go.mod h1:9OOII9uAM5pZnhWu1OkQnboXJjaWMQ7kcTl3zNcxvTM= -github.com/gobuffalo/pop/v5 v5.3.4 h1:VWH74icA8khG8SyWDAq6Ch00jcPiC4n436JMFh0lLm0= -github.com/gobuffalo/pop/v5 v5.3.4/go.mod h1:UiVurv2aTKC7MuR27PnMrQjAazoLr8SoC/LuTKTS/tQ= github.com/gobuffalo/tags/v3 v3.0.2/go.mod h1:ZQeN6TCTiwAFnS0dNcbDtSgZDwNKSpqajvVtt6mlYpA= -github.com/gobuffalo/tags/v3 v3.1.0/go.mod h1:ZQeN6TCTiwAFnS0dNcbDtSgZDwNKSpqajvVtt6mlYpA= github.com/gobuffalo/tags/v3 v3.1.2 h1:68sHcwFFDstXyfbk5ovbGcQFDsupgVLs+lw1XZinHJw= github.com/gobuffalo/tags/v3 v3.1.2/go.mod h1:o3ldUfKv50jxWAC8eZHXMm8dnKW3YvyZUMr0xqUcZTI= github.com/gobuffalo/validate/v3 v3.0.0/go.mod h1:HFpjq+AIiA2RHoQnQVTFKF/ZpUPXwyw82LgyDPxQ9r0= -github.com/gobuffalo/validate/v3 v3.1.0/go.mod h1:HFpjq+AIiA2RHoQnQVTFKF/ZpUPXwyw82LgyDPxQ9r0= github.com/gobuffalo/validate/v3 v3.3.1 h1:5YLQL22YARUsYS5ZGsPU6TrD0Utiu53N1JJ5qi+foYk= github.com/gobuffalo/validate/v3 v3.3.1/go.mod h1:Ehu8ieNJQuUM4peDDr/0VapzdGA7RgTc3wbe51vHfS0= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gofrs/uuid v3.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= +github.com/gofrs/uuid v4.0.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= github.com/gofrs/uuid v4.1.0+incompatible h1:sIa2eCvUTwgjbqXrPLfNwUf9S3i3mpH1O1atV+iL/Wk= github.com/gofrs/uuid v4.1.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= -github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= -github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -240,7 +173,6 @@ github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= @@ -271,36 +203,23 @@ github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= 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/handlers v1.5.1 h1:9lRY6j8DEeeBT10CvO9hGW0gmky0BprnvDI5vfhUHH4= github.com/gorilla/handlers v1.5.1/go.mod h1:t8XrUpc4KVXb7HGyJ4/cEnwQiaxrX/hz1Zv/4g96P1Q= -github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= -github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= github.com/gorilla/securecookie v1.1.1 h1:miw7JPhV+b/lAHSXz4qd/nN9jRiAFV5FwjeKyCS8BvQ= github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4= github.com/gorilla/sessions v1.2.1 h1:DHd3rPN5lE3Ts3D8rKkQ8x/0kqfeNmBAaiSi+o7FsgI= github.com/gorilla/sessions v1.2.1/go.mod h1:dk2InVEVJ0sfLlnXv9EAgkf6ecYs/i80K/zI+bUmuGM= -github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= -github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= -github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= -github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= -github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= -github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE= github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= -github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= @@ -311,7 +230,6 @@ github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerX github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= @@ -320,13 +238,10 @@ github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= -github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= -github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= -github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= github.com/jackc/chunkreader v1.0.0 h1:4s39bBR8ByfqH+DKm8rQA3E1LHZWB9XWcrz8fqaZbe0= github.com/jackc/chunkreader v1.0.0/go.mod h1:RT6O25fNZIuasFJRyZ4R/Y2BbhasbmZXF9QQ7T3kePo= github.com/jackc/chunkreader/v2 v2.0.0/go.mod h1:odVSm741yZoC3dpHEUXIqA9tQRhFrgOHwnPIn9lDKlk= @@ -335,15 +250,18 @@ github.com/jackc/chunkreader/v2 v2.0.1/go.mod h1:odVSm741yZoC3dpHEUXIqA9tQRhFrgO github.com/jackc/pgconn v0.0.0-20190420214824-7e0022ef6ba3/go.mod h1:jkELnwuX+w9qN5YIfX0fl88Ehu4XC3keFuOJJk9pcnA= github.com/jackc/pgconn v0.0.0-20190824142844-760dd75542eb/go.mod h1:lLjNuW/+OfW9/pnVKPazfWOgNfH2aPem8YQ7ilXGvJE= github.com/jackc/pgconn v0.0.0-20190831204454-2fabfa3c18b7/go.mod h1:ZJKsE/KZfsUgOEh9hBm+xYTstcNHg7UPMVJqRfQxq4s= -github.com/jackc/pgconn v1.4.0/go.mod h1:Y2O3ZDF0q4mMacyWV3AstPJpeHXWGEetiFttmq5lahk= -github.com/jackc/pgconn v1.5.0/go.mod h1:QeD3lBfpTFe8WUnPZWN5KY/mB8FGMIYRdd8P8Jr0fAI= -github.com/jackc/pgconn v1.5.1-0.20200601181101-fa742c524853/go.mod h1:QeD3lBfpTFe8WUnPZWN5KY/mB8FGMIYRdd8P8Jr0fAI= -github.com/jackc/pgconn v1.8.1 h1:ySBX7Q87vOMqKU2bbmKbUvtYhauDFclYbNDYIE1/h6s= -github.com/jackc/pgconn v1.8.1/go.mod h1:JV6m6b6jhjdmzchES0drzCcYcAHS1OPD5xu3OZ/lE2g= +github.com/jackc/pgconn v1.8.0/go.mod h1:1C2Pb36bGIP9QHGBYCjnyhqu7Rv3sGshaQUvmfGIB/o= +github.com/jackc/pgconn v1.9.0/go.mod h1:YctiPyvzfU11JFxoXokUOOKQXQmDMoJL9vJzHH8/2JY= +github.com/jackc/pgconn v1.9.1-0.20210724152538-d89c8390a530/go.mod h1:4z2w8XhRbP1hYxkpTuBjTS3ne3J48K83+u0zoyvg2pI= +github.com/jackc/pgconn v1.10.0/go.mod h1:4z2w8XhRbP1hYxkpTuBjTS3ne3J48K83+u0zoyvg2pI= +github.com/jackc/pgconn v1.10.1 h1:DzdIHIjG1AxGwoEEqS+mGsURyjt4enSmqzACXvVzOT8= +github.com/jackc/pgconn v1.10.1/go.mod h1:4z2w8XhRbP1hYxkpTuBjTS3ne3J48K83+u0zoyvg2pI= github.com/jackc/pgio v1.0.0 h1:g12B9UwVnzGhueNavwioyEEpAmqMe1E/BN9ES+8ovkE= github.com/jackc/pgio v1.0.0/go.mod h1:oP+2QK2wFfUWgr+gxjoBH9KGBb31Eio69xUb0w5bYf8= -github.com/jackc/pgmock v0.0.0-20190831213851-13a1b77aafa2 h1:JVX6jT/XfzNqIjye4717ITLaNwV9mWbJx0dLCpcRzdA= github.com/jackc/pgmock v0.0.0-20190831213851-13a1b77aafa2/go.mod h1:fGZlG77KXmcq05nJLRkk0+p82V8B8Dw8KN2/V9c/OAE= +github.com/jackc/pgmock v0.0.0-20201204152224-4fe30f7445fd/go.mod h1:hrBW0Enj2AZTNpt/7Y5rr2xe/9Mn757Wtb2xeBzPv2c= +github.com/jackc/pgmock v0.0.0-20210724152146-4ad1a8207f65 h1:DadwsjnMwFjfWc9y5Wi/+Zz7xoE5ALHsRQlOctkOiHc= +github.com/jackc/pgmock v0.0.0-20210724152146-4ad1a8207f65/go.mod h1:5R2h2EEX+qri8jOWMbJCtaPWkrrNc7OHwsp2TCqp7ak= github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM= github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= github.com/jackc/pgproto3 v1.1.0 h1:FYYE4yRw+AgI8wXIinMlNjBbp/UitDJwfj5LqqewP1A= @@ -352,62 +270,43 @@ github.com/jackc/pgproto3/v2 v2.0.0-alpha1.0.20190420180111-c116219b62db/go.mod github.com/jackc/pgproto3/v2 v2.0.0-alpha1.0.20190609003834-432c2951c711/go.mod h1:uH0AWtUmuShn0bcesswc4aBTWGvw0cAxIJp+6OB//Wg= github.com/jackc/pgproto3/v2 v2.0.0-rc3/go.mod h1:ryONWYqW6dqSg1Lw6vXNMXoBJhpzvWKnT95C46ckYeM= github.com/jackc/pgproto3/v2 v2.0.0-rc3.0.20190831210041-4c03ce451f29/go.mod h1:ryONWYqW6dqSg1Lw6vXNMXoBJhpzvWKnT95C46ckYeM= -github.com/jackc/pgproto3/v2 v2.0.1/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= -github.com/jackc/pgproto3/v2 v2.0.6 h1:b1105ZGEMFe7aCvrT1Cca3VoVb4ZFMaFJLJcg/3zD+8= github.com/jackc/pgproto3/v2 v2.0.6/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= -github.com/jackc/pgservicefile v0.0.0-20200307190119-3430c5407db8/go.mod h1:vsD4gTJCa9TptPL8sPkXrLZ+hDuNrZCnj29CQpr4X1E= +github.com/jackc/pgproto3/v2 v2.1.1 h1:7PQ/4gLoqnl87ZxL7xjO0DR5gYuviDCZxQJsUlFW1eI= +github.com/jackc/pgproto3/v2 v2.1.1/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b h1:C8S2+VttkHFdOOCXJe+YGfa4vHYwlt4Zx+IVXQ97jYg= github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b/go.mod h1:vsD4gTJCa9TptPL8sPkXrLZ+hDuNrZCnj29CQpr4X1E= github.com/jackc/pgtype v0.0.0-20190421001408-4ed0de4755e0/go.mod h1:hdSHsc1V01CGwFsrv11mJRHWJ6aifDLfdV3aVjFF0zg= github.com/jackc/pgtype v0.0.0-20190824184912-ab885b375b90/go.mod h1:KcahbBH1nCMSo2DXpzsoWOAfFkdEtEJpPbVLq8eE+mc= github.com/jackc/pgtype v0.0.0-20190828014616-a8802b16cc59/go.mod h1:MWlu30kVJrUS8lot6TQqcg7mtthZ9T0EoIBFiJcmcyw= -github.com/jackc/pgtype v1.2.0/go.mod h1:5m2OfMh1wTK7x+Fk952IDmI4nw3nPrvtQdM0ZT4WpC0= -github.com/jackc/pgtype v1.3.1-0.20200510190516-8cd94a14c75a/go.mod h1:vaogEUkALtxZMCH411K+tKzNpwzCKU+AnPzBKZ+I+Po= -github.com/jackc/pgtype v1.3.1-0.20200606141011-f6355165a91c/go.mod h1:cvk9Bgu/VzJ9/lxTO5R5sf80p0DiucVtN7ZxvaC4GmQ= -github.com/jackc/pgtype v1.7.0 h1:6f4kVsW01QftE38ufBYxKciO6gyioXSC0ABIRLcZrGs= -github.com/jackc/pgtype v1.7.0/go.mod h1:ZnHF+rMePVqDKaOfJVI4Q8IVvAQMryDlDkZnKOI75BE= +github.com/jackc/pgtype v1.8.1-0.20210724151600-32e20a603178/go.mod h1:C516IlIV9NKqfsMCXTdChteoXmwgUceqaLfjg2e3NlM= +github.com/jackc/pgtype v1.8.1 h1:9k0IXtdJXHJbyAWQgbWr1lU+MEhPXZz6RIXxfR5oxXs= +github.com/jackc/pgtype v1.8.1/go.mod h1:LUMuVrfsFfdKGLw+AFFVv6KtHOFMwRgDDzBt76IqCA4= github.com/jackc/pgx/v4 v4.0.0-20190420224344-cc3461e65d96/go.mod h1:mdxmSJJuR08CZQyj1PVQBHy9XOp5p8/SHH6a0psbY9Y= github.com/jackc/pgx/v4 v4.0.0-20190421002000-1b8f0016e912/go.mod h1:no/Y67Jkk/9WuGR0JG/JseM9irFbnEPbuWV2EELPNuM= github.com/jackc/pgx/v4 v4.0.0-pre1.0.20190824185557-6972a5742186/go.mod h1:X+GQnOEnf1dqHGpw7JmHqHc1NxDoalibchSk9/RWuDc= -github.com/jackc/pgx/v4 v4.5.0/go.mod h1:EpAKPLdnTorwmPUUsqrPxy5fphV18j9q3wrfRXgo+kA= -github.com/jackc/pgx/v4 v4.6.1-0.20200510190926-94ba730bb1e9/go.mod h1:t3/cdRQl6fOLDxqtlyhe9UWgfIi9R8+8v8GKV5TRA/o= -github.com/jackc/pgx/v4 v4.6.1-0.20200606145419-4e5062306904/go.mod h1:ZDaNWkt9sW1JMiNn0kdYBaLelIhw7Pg4qd+Vk6tw7Hg= -github.com/jackc/pgx/v4 v4.11.0 h1:J86tSWd3Y7nKjwT/43xZBvpi04keQWx8gNC2YkdJhZI= -github.com/jackc/pgx/v4 v4.11.0/go.mod h1:i62xJgdrtVDsnL3U8ekyrQXEwGNTRoG7/8r+CIdYfcc= +github.com/jackc/pgx/v4 v4.12.1-0.20210724153913-640aa07df17c/go.mod h1:1QD0+tgSXP7iUjYm9C1NxKhny7lq6ee99u/z+IHFcgs= +github.com/jackc/pgx/v4 v4.13.0 h1:JCjhT5vmhMAf/YwBHLvrBn4OGdIQBiFG6ym8Zmdx570= +github.com/jackc/pgx/v4 v4.13.0/go.mod h1:9P4X524sErlaxj0XSGZk7s+LD0eOyu1ZDUrrpznYDF0= github.com/jackc/puddle v0.0.0-20190413234325-e4ced69a3a2b/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= github.com/jackc/puddle v0.0.0-20190608224051-11cab39313c9/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= -github.com/jackc/puddle v1.1.0/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= -github.com/jackc/puddle v1.1.1/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= github.com/jackc/puddle v1.1.3/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= -github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= -github.com/jmoiron/sqlx v1.2.0/go.mod h1:1FEQNm3xlJgrMD+FBdI9+xvCksHtbpVBBw5dYhBSsks= -github.com/jmoiron/sqlx v1.3.3/go.mod h1:2BljVx/86SuTyjE+aPYlHCTNvZrnJXghYGpNiXLBMCQ= github.com/jmoiron/sqlx v1.3.4 h1:wv+0IJZfL5z0uZoUjlpKgHkgaFSYD+r9CfrXjEXsO7w= github.com/jmoiron/sqlx v1.3.4/go.mod h1:2BljVx/86SuTyjE+aPYlHCTNvZrnJXghYGpNiXLBMCQ= -github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= github.com/joho/godotenv v1.4.0 h1:3l4+N6zfMWnkbPEXKng2o2/MR5mSwTrBih4ZEkkz1lg= github.com/joho/godotenv v1.4.0/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4= -github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= -github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= -github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= -github.com/karrick/godirwalk v1.15.3/go.mod h1:j4mkqPuvaLI8mp1DroR3P6ad7cyYd4c1qeJ3RV7ULlk= github.com/karrick/godirwalk v1.16.1 h1:DynhcF+bztK8gooS0+NDJFrdNZjJ3gzVzC545UNA9iw= github.com/karrick/godirwalk v1.16.1/go.mod h1:j4mkqPuvaLI8mp1DroR3P6ad7cyYd4c1qeJ3RV7ULlk= github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs= github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= -github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= -github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.0 h1:s5hAObm+yFO5uHYt5dYjxi2rXrsnmRpJx4OYvIWUaQs= github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= @@ -418,18 +317,12 @@ github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.1.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= -github.com/lib/pq v1.3.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= -github.com/lib/pq v1.10.1 h1:6VXZrLU0jHBYyAqrSPa+MgPfnSvTPuMgK+k0o5kVFWo= -github.com/lib/pq v1.10.1/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= -github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= -github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= +github.com/lib/pq v1.10.2/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/lib/pq v1.10.4 h1:SO9z7FRPzA03QhHKJrH5BXA6HU1rS4V2nIVrrNC1iYk= +github.com/lib/pq v1.10.4/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/luna-duclos/instrumentedsql v1.1.3 h1:t7mvC0z1jUt5A0UQ6I/0H31ryymuQRnJcWCiqV3lSAA= github.com/luna-duclos/instrumentedsql v1.1.3/go.mod h1:9J1njvFds+zN7y85EDhN9XNQLANWwZt2ULeIC8yMNYs= -github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= -github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= -github.com/markbates/errx v1.1.0 h1:QDFeR+UP95dO12JgW+tgi2UVfo0V8YBHiUIOaeBPiEI= -github.com/markbates/errx v1.1.0/go.mod h1:PLa46Oex9KNbVDZhKel8v1OT7hD5JZ2eI7AHhA0wswc= github.com/markbates/grift v1.5.0 h1:CZyK0k+8BdhQMgbwzuKMysC12y4tf9H004jAs/FutX4= github.com/markbates/grift v1.5.0/go.mod h1:1ssFm5gSGmzTkhi3Wfh/nqlU74J73TlAjoDMttQbpfY= github.com/markbates/oncer v1.0.0 h1:E83IaVAHygyndzPimgUYJjbshhDTALZyXxvk9FOlQRY= @@ -442,28 +335,18 @@ github.com/markbates/sigtx v1.0.0 h1:y/xtkBvNPRjD4KeEplf4w9rJVSc23/xl+jXYGowTwy0 github.com/markbates/sigtx v1.0.0/go.mod h1:QF1Hv6Ic6Ca6W+T+DL0Y/ypborFKyvUY9HmuCD4VeTc= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ= -github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= -github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.9 h1:sqDoxXbdeALODt0DAeJCVp38ps9ZogZEAXjus69YV3U= github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ= -github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= 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/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= -github.com/mattn/go-sqlite3 v1.9.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= github.com/mattn/go-sqlite3 v1.14.6/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= +github.com/mattn/go-sqlite3 v1.14.9 h1:10HX2Td0ocZpYEjhilsuo6WWtUqttj2Kb0KtD86/KYA= github.com/mattn/go-sqlite3 v1.14.9/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= -github.com/mattn/go-sqlite3 v2.0.3+incompatible h1:gXHsfypPkaMZrKbD5209QV9jbUTJKjyR5WD3HYQSd+U= -github.com/mattn/go-sqlite3 v2.0.3+incompatible/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= -github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/microcosm-cc/bluemonday v1.0.2/go.mod h1:iVP4YcDBq+n/5fb23BhYFvIMq/leAFZyRl6bYmGDlGc= github.com/microcosm-cc/bluemonday v1.0.16 h1:kHmAq2t7WPWLjiGvzKa5o3HzSfahUKiOq7fAPUiMNIc= github.com/microcosm-cc/bluemonday v1.0.16/go.mod h1:Z0r70sCuXHig8YpBzCc5eGHAap2K7e/u082ZUpDRRqM= @@ -479,82 +362,25 @@ github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:F github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -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.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/monoculum/formam v3.5.5+incompatible h1:iPl5csfEN96G2N2mGu8V/ZB62XLf9ySTpC8KRH6qXec= github.com/monoculum/formam v3.5.5+incompatible/go.mod h1:RKgILGEJq24YyJ2ban8EO0RUVSJlF1pGsEvoLEACr/Q= -github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= -github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU= -github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k= -github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w= -github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= -github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= -github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= -github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs= -github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= -github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= -github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= -github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= -github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= -github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74= -github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= -github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= -github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5/go.mod h1:/wsWhb9smxSfWAKL3wpBW7V8scJMt8N8gnaMCS9E/cA= -github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= -github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= -github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= -github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= -github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/pelletier/go-toml v1.9.3/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= -github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= -github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= -github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= -github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= 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/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= -github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= -github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= -github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= -github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= -github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= -github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= -github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= -github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/psanford/memfs v0.0.0-20210214183328-a001468d78ef h1:NKxTG6GVGbfMXc2mIk+KphcH6hagbVXhcFkbTgYleTI= github.com/psanford/memfs v0.0.0-20210214183328-a001468d78ef/go.mod h1:tcaRap0jS3eifrEEllL6ZMd9dg8IlDpi2S1oARrQ+NI= -github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= -github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/rogpeppe/go-internal v1.3.2/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= -github.com/rogpeppe/go-internal v1.5.2/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= github.com/rogpeppe/go-internal v1.8.0 h1:FCbCCtXNOY3UtUuHUYaghJg4y7Fd14rXifAYUAtL9R8= github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE= github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= @@ -562,50 +388,33 @@ github.com/rs/zerolog v1.13.0/go.mod h1:YbFCdg8HfsridGWAh22vktObvhZbQsZXe4/zB0OK github.com/rs/zerolog v1.15.0/go.mod h1:xYTKnLHcpfU2225ny5qZjxnj9NvkumZYjJHlAThCjNc= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= -github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/sergi/go-diff v1.2.0 h1:XU+rvMAioB0UC3q1MFrIQy4Vo5/4VsRDQQXHsEya6xQ= github.com/sergi/go-diff v1.2.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4= -github.com/shopspring/decimal v0.0.0-20200227202807-02e2044944cc h1:jUIKcSPO9MoMJBbEoyE/RJoE8vz7Mb8AjvifMMwSyvY= -github.com/shopspring/decimal v0.0.0-20200227202807-02e2044944cc/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= +github.com/shopspring/decimal v1.2.0 h1:abSATXmQEYyShuxI4/vyW3tV1MrKAJzCZ/0zLUXYbsQ= +github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= -github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE= github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= -github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= -github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= github.com/sourcegraph/annotate v0.0.0-20160123013949-f4cad6c6324d h1:yKm7XZV6j9Ev6lojP2XaIshpT4ymkqhMeSghO5Ps00E= github.com/sourcegraph/annotate v0.0.0-20160123013949-f4cad6c6324d/go.mod h1:UdhH50NIW0fCiwBSr0co2m7BnFLdv4fQTgdqdJTHFeE= github.com/sourcegraph/syntaxhighlight v0.0.0-20170531221838-bd320f5d308e h1:qpG93cPwA5f7s/ZPBJnGOYQNK/vKsaDaseuKT5Asee8= github.com/sourcegraph/syntaxhighlight v0.0.0-20170531221838-bd320f5d308e/go.mod h1:HuIsMU8RRBOtsCgI77wP899iHVBQpCmg4ErYMZB+2IA= -github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= -github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= -github.com/spf13/cobra v0.0.6/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= github.com/spf13/cobra v1.2.1 h1:+KmjbUw1hriSNMF55oPrkZcb27aECyrj8V2ytv7kWDw= github.com/spf13/cobra v1.2.1/go.mod h1:ExllRjgxM/piMAM+3tAZvg8fsklGAf3tPfi+i8t68Nk= -github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= -github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= github.com/spf13/viper v1.8.1/go.mod h1:o0Pch8wJ9BVSWGQMbra6iw0oQ5oktSIBaujf1rJH9Ns= -github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= -github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= -github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= @@ -617,27 +426,16 @@ github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= -github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= -github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= -github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= -github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= -github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yuin/goldmark v1.4.0/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q= -go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ= -go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= -go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= @@ -659,21 +457,18 @@ go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= -golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190411191339-88737f569e3a/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190911031432-227b76d455e7/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20191122220453-ac88ee75c92c/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200323165209-0ec3e9974c59/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2 h1:It14KIkyBFYkHkwZ7k45minvA9aorojkyjGk9KJ5B/w= -golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= +golang.org/x/crypto v0.0.0-20201203163018-be400aefbc4c/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= +golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97 h1:/UOmuWzQfxxo9UtlXMwuQU8CMgg1eZXqTRwkSQJWKOI= +golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -711,19 +506,15 @@ golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= 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-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -753,6 +544,7 @@ golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20210614182718-04defd469f4e/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f h1:OfiFi4JbukWwe3lzw+xunroH1mnC1e2Gy5cxNJApiSY= golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -782,11 +574,7 @@ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -799,12 +587,10 @@ golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -835,8 +621,10 @@ golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c h1:F1jZWGFhYfh0Ci55sIpILtKKK8p3i2/krTr0H1rg74I= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e h1:WUoyKPm6nCo1BnNUvPGnFG3T5DUVem42yDJZZ4CNxMA= +golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 h1:JGgROgKl9N8DuW20oFS5gxc+lE67/N3FcwmBPMe7ArY= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -849,12 +637,9 @@ golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= @@ -885,7 +670,6 @@ golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapK golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200117220505-0cba7a3a9ee9/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= @@ -894,7 +678,6 @@ golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapK golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200308013534-11ec41452d41/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= @@ -913,13 +696,13 @@ golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4f golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.7/go.mod h1:LGqMHiF4EqQNHR1JncWGqT5BVaXmza+X+BDGol+dOxo= golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= 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= -google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= @@ -943,7 +726,6 @@ google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBz google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= google.golang.org/api v0.44.0/go.mod h1:EBOGZqzyhtvMDoxwS97ctnh0zUmYY6CxqXsc1AvkYD8= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= -google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= @@ -955,7 +737,6 @@ google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRn google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= @@ -992,15 +773,10 @@ google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= -google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -google.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= @@ -1029,24 +805,15 @@ google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGj google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc h1:2gGKlE2+asNV9m7xrywl36YYNnBG5ZQ0r/BOOxqPpmk= gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc/go.mod h1:m7x9LTH6d71AHyAX77c9yqWCCa3UKHcVEj9y7hAtKDk= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= -gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= -gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= gopkg.in/inconshreveable/log15.v2 v2.0.0-20180818164646-67afb5ed74ec/go.mod h1:aPpfJ7XW+gOuirDoZ8gHhLh3kZ1B08FtV2bbmy7Jv3s= gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= -gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= -gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= -gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= -gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= @@ -1056,7 +823,6 @@ gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= @@ -1067,5 +833,3 @@ honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9 rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= -sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= -sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= diff --git a/options.go b/options.go index 9959d68fa..3b180bdc4 100644 --- a/options.go +++ b/options.go @@ -11,8 +11,8 @@ import ( "github.com/gobuffalo/buffalo/worker" "github.com/gobuffalo/envy" "github.com/gobuffalo/logger" - "github.com/gobuffalo/pop/v5" - "github.com/gobuffalo/pop/v5/logging" + "github.com/gobuffalo/pop/v6" + "github.com/gobuffalo/pop/v6/logging" "github.com/gorilla/sessions" "github.com/markbates/oncer" ) From deb763ccd343900d2eb7f0884d8cb6137075467d Mon Sep 17 00:00:00 2001 From: Matthias Fasching Date: Sun, 21 Nov 2021 15:32:16 +0000 Subject: [PATCH 07/11] Update pop dependency --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 6210b7323..73050e6d4 100644 --- a/go.mod +++ b/go.mod @@ -35,4 +35,4 @@ require ( gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc ) -replace github.com/gobuffalo/pop/v6 v6.0.0 => github.com/fasmat/pop/v6 v6.0.0-20211121130729-c0494e3061e4 +replace github.com/gobuffalo/pop/v6 v6.0.0 => github.com/fasmat/pop/v6 v6.0.0-20211121152713-e467c63e98c0 diff --git a/go.sum b/go.sum index de0421129..da2a6eb9b 100644 --- a/go.sum +++ b/go.sum @@ -80,8 +80,8 @@ github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5y github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/fasmat/pop/v6 v6.0.0-20211121130729-c0494e3061e4 h1:WlNkkImDTfEDtoqWdWx5MK7rvQIkjVzprp2F45drNAo= -github.com/fasmat/pop/v6 v6.0.0-20211121130729-c0494e3061e4/go.mod h1:5rd3OnViLhjteR8+0i/mT9Q4CzkTzCoR7tm/9mmAic4= +github.com/fasmat/pop/v6 v6.0.0-20211121152713-e467c63e98c0 h1:g7DmTfznL/yjn9/UNCMTZVPTQxQkXakagmnFBkjCFvM= +github.com/fasmat/pop/v6 v6.0.0-20211121152713-e467c63e98c0/go.mod h1:5rd3OnViLhjteR8+0i/mT9Q4CzkTzCoR7tm/9mmAic4= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= From f2edeb46499b570d0925e04b2f04e406c8ef378c Mon Sep 17 00:00:00 2001 From: Matthias Fasching Date: Sun, 21 Nov 2021 17:18:44 +0000 Subject: [PATCH 08/11] Update pop dependency --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 73050e6d4..2374a3a5a 100644 --- a/go.mod +++ b/go.mod @@ -35,4 +35,4 @@ require ( gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc ) -replace github.com/gobuffalo/pop/v6 v6.0.0 => github.com/fasmat/pop/v6 v6.0.0-20211121152713-e467c63e98c0 +replace github.com/gobuffalo/pop/v6 v6.0.0 => github.com/fasmat/pop/v6 v6.0.0-20211121171247-7e62da123029 diff --git a/go.sum b/go.sum index da2a6eb9b..36044bd25 100644 --- a/go.sum +++ b/go.sum @@ -80,8 +80,8 @@ github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5y github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/fasmat/pop/v6 v6.0.0-20211121152713-e467c63e98c0 h1:g7DmTfznL/yjn9/UNCMTZVPTQxQkXakagmnFBkjCFvM= -github.com/fasmat/pop/v6 v6.0.0-20211121152713-e467c63e98c0/go.mod h1:5rd3OnViLhjteR8+0i/mT9Q4CzkTzCoR7tm/9mmAic4= +github.com/fasmat/pop/v6 v6.0.0-20211121171247-7e62da123029 h1:HmZraMDKiZrL2usEbMi5Ft+UY5fARiUC7xxw+rgp2BU= +github.com/fasmat/pop/v6 v6.0.0-20211121171247-7e62da123029/go.mod h1:5rd3OnViLhjteR8+0i/mT9Q4CzkTzCoR7tm/9mmAic4= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= From 77319a4a9d1a835e4e86d9c45bf0c84588b677f0 Mon Sep 17 00:00:00 2001 From: Matthias Fasching Date: Sun, 21 Nov 2021 17:38:54 +0000 Subject: [PATCH 09/11] Update Pop dependency --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 2374a3a5a..fb738d392 100644 --- a/go.mod +++ b/go.mod @@ -35,4 +35,4 @@ require ( gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc ) -replace github.com/gobuffalo/pop/v6 v6.0.0 => github.com/fasmat/pop/v6 v6.0.0-20211121171247-7e62da123029 +replace github.com/gobuffalo/pop/v6 v6.0.0 => github.com/fasmat/pop/v6 v6.0.0-20211121174542-8ace23c76ee8 diff --git a/go.sum b/go.sum index 36044bd25..9e47e6774 100644 --- a/go.sum +++ b/go.sum @@ -80,8 +80,8 @@ github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5y github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/fasmat/pop/v6 v6.0.0-20211121171247-7e62da123029 h1:HmZraMDKiZrL2usEbMi5Ft+UY5fARiUC7xxw+rgp2BU= -github.com/fasmat/pop/v6 v6.0.0-20211121171247-7e62da123029/go.mod h1:5rd3OnViLhjteR8+0i/mT9Q4CzkTzCoR7tm/9mmAic4= +github.com/fasmat/pop/v6 v6.0.0-20211121174542-8ace23c76ee8 h1:PsblGOB3BWlyllUgtTc9MkwMTZGkK9y4JxRiBHx4pxg= +github.com/fasmat/pop/v6 v6.0.0-20211121174542-8ace23c76ee8/go.mod h1:5rd3OnViLhjteR8+0i/mT9Q4CzkTzCoR7tm/9mmAic4= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= From 46c764b58057a945a1bbad7537c6a65f8700a476 Mon Sep 17 00:00:00 2001 From: Matthias Fasching Date: Sun, 21 Nov 2021 19:56:12 +0000 Subject: [PATCH 10/11] Update dependency to pop --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index fb738d392..d3483edb9 100644 --- a/go.mod +++ b/go.mod @@ -35,4 +35,4 @@ require ( gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc ) -replace github.com/gobuffalo/pop/v6 v6.0.0 => github.com/fasmat/pop/v6 v6.0.0-20211121174542-8ace23c76ee8 +replace github.com/gobuffalo/pop/v6 v6.0.0 => github.com/fasmat/pop/v6 v6.0.0-20211121195140-6d95c111f911 diff --git a/go.sum b/go.sum index 9e47e6774..9d558465b 100644 --- a/go.sum +++ b/go.sum @@ -80,8 +80,8 @@ github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5y github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/fasmat/pop/v6 v6.0.0-20211121174542-8ace23c76ee8 h1:PsblGOB3BWlyllUgtTc9MkwMTZGkK9y4JxRiBHx4pxg= -github.com/fasmat/pop/v6 v6.0.0-20211121174542-8ace23c76ee8/go.mod h1:5rd3OnViLhjteR8+0i/mT9Q4CzkTzCoR7tm/9mmAic4= +github.com/fasmat/pop/v6 v6.0.0-20211121195140-6d95c111f911 h1:y7S3XYh+oOWJV5Z1WL42SDicihAf6I3w8MPa9NAHxzw= +github.com/fasmat/pop/v6 v6.0.0-20211121195140-6d95c111f911/go.mod h1:5rd3OnViLhjteR8+0i/mT9Q4CzkTzCoR7tm/9mmAic4= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= From 8150c7109b5cfc848526a357a89ca748d10441cd Mon Sep 17 00:00:00 2001 From: Matthias Fasching Date: Tue, 23 Nov 2021 20:11:26 +0000 Subject: [PATCH 11/11] Update dependency --- go.mod | 2 -- go.sum | 4 ++-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/go.mod b/go.mod index d3483edb9..b551efccf 100644 --- a/go.mod +++ b/go.mod @@ -34,5 +34,3 @@ require ( github.com/stretchr/testify v1.7.0 gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc ) - -replace github.com/gobuffalo/pop/v6 v6.0.0 => github.com/fasmat/pop/v6 v6.0.0-20211121195140-6d95c111f911 diff --git a/go.sum b/go.sum index 9d558465b..10645f213 100644 --- a/go.sum +++ b/go.sum @@ -80,8 +80,6 @@ github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5y github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/fasmat/pop/v6 v6.0.0-20211121195140-6d95c111f911 h1:y7S3XYh+oOWJV5Z1WL42SDicihAf6I3w8MPa9NAHxzw= -github.com/fasmat/pop/v6 v6.0.0-20211121195140-6d95c111f911/go.mod h1:5rd3OnViLhjteR8+0i/mT9Q4CzkTzCoR7tm/9mmAic4= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= @@ -132,6 +130,8 @@ github.com/gobuffalo/packd v1.0.1/go.mod h1:PP2POP3p3RXGz7Jh6eYEf93S7vA2za6xM7QT github.com/gobuffalo/plush/v4 v4.0.0/go.mod h1:ErFS3UxKqEb8fpFJT7lYErfN/Nw6vHGiDMTjxpk5bQ0= github.com/gobuffalo/plush/v4 v4.1.9 h1:u9rQBuYCeHC0ppKxsZljk5vb1oT8PQa5EMNTAN2337s= github.com/gobuffalo/plush/v4 v4.1.9/go.mod h1:9OOII9uAM5pZnhWu1OkQnboXJjaWMQ7kcTl3zNcxvTM= +github.com/gobuffalo/pop/v6 v6.0.0 h1:LvHl9wrMoY0zF+SWjUJoDG1oRpYKfMxLzuBT7SCctZU= +github.com/gobuffalo/pop/v6 v6.0.0/go.mod h1:5rd3OnViLhjteR8+0i/mT9Q4CzkTzCoR7tm/9mmAic4= github.com/gobuffalo/tags/v3 v3.0.2/go.mod h1:ZQeN6TCTiwAFnS0dNcbDtSgZDwNKSpqajvVtt6mlYpA= github.com/gobuffalo/tags/v3 v3.1.2 h1:68sHcwFFDstXyfbk5ovbGcQFDsupgVLs+lw1XZinHJw= github.com/gobuffalo/tags/v3 v3.1.2/go.mod h1:o3ldUfKv50jxWAC8eZHXMm8dnKW3YvyZUMr0xqUcZTI=