pax_global_header00006660000000000000000000000064141434526170014521gustar00rootroot0000000000000052 comment=28a118f1b860ab67c75c1afe0bab9b1cdb66a0ae cupaloy-2.7.0/000077500000000000000000000000001414345261700132035ustar00rootroot00000000000000cupaloy-2.7.0/.github/000077500000000000000000000000001414345261700145435ustar00rootroot00000000000000cupaloy-2.7.0/.github/dependabot.yml000066400000000000000000000001771414345261700174000ustar00rootroot00000000000000version: 2 updates: - package-ecosystem: gomod directory: "/" schedule: interval: daily open-pull-requests-limit: 10 cupaloy-2.7.0/.github/workflows/000077500000000000000000000000001414345261700166005ustar00rootroot00000000000000cupaloy-2.7.0/.github/workflows/go.yml000066400000000000000000000020201414345261700177220ustar00rootroot00000000000000name: Go on: push: branches: [ master ] pull_request: branches: [ master ] jobs: build: name: Build runs-on: ubuntu-latest steps: - name: Set up Go 1.x uses: actions/setup-go@v2 with: go-version: ^1.13 id: go - name: Check out code into the Go module directory uses: actions/checkout@v2 - name: Get dependencies run: | go get -v -t -d ./... if [ -f Gopkg.toml ]; then curl https://raw.githubusercontent.com/golang/dep/master/install.sh | sh dep ensure fi - name: Build run: go build -v . - name: Test run: go test -v ./... golangci: name: lint runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: golangci-lint uses: golangci/golangci-lint-action@v2 with: # Required: the version of golangci-lint is required and must be specified without patch version: we always use the latest patch version. version: v1.29 cupaloy-2.7.0/.gitignore000066400000000000000000000004341414345261700151740ustar00rootroot00000000000000# Binaries for programs and plugins *.exe *.dll *.so *.dylib # Test binary, build with `go test -c` *.test # Output of the go coverage tool, specifically when used with LiteIDE *.out # Project-local glide cache, RE: https://github.com/Masterminds/glide/issues/736 .glide/ vendor/ cupaloy-2.7.0/.travis.yml000066400000000000000000000005411414345261700153140ustar00rootroot00000000000000language: go go: - 1.x - master matrix: allow_failures: - go: master install: - make install script: - make test-ci after_success: - $GOPATH/bin/goveralls -service=travis-ci -coverprofile=coverage.out notifications: email: on_success: never on_failure: always env: global: - MAKEFLAGS=" -j 2" - GO111MODULE=on cupaloy-2.7.0/LICENSE000066400000000000000000000020551414345261700142120ustar00rootroot00000000000000MIT License Copyright (c) 2017 bradleyjkemp 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. cupaloy-2.7.0/Makefile000066400000000000000000000010651414345261700146450ustar00rootroot00000000000000.PHONY: install install: get_dependencies install_linters .PHONY: get_dependencies get_dependencies: go get github.com/mattn/goveralls .PHONY: install_linters install_linters: curl -sfL https://install.goreleaser.com/github.com/golangci/golangci-lint.sh | sh -s -- -b $(GOPATH)/bin v1.12.5 .PHONY: lint lint: $(GOPATH)/bin/golangci-lint run .PHONY: test test: lint go test ./... .PHONY: test-ci test-ci: coverage lint .PHONY: coverage coverage: go test -v -coverpkg ./... -coverprofile coverage.out ./... .PHONY: clean clean: rm -rf examples/ignored* cupaloy-2.7.0/README.md000066400000000000000000000105761414345261700144730ustar00rootroot00000000000000

Mascot
Build Status Coverage Status Go Report Card GoDoc

Incredibly simple Go snapshot testing: `cupaloy` takes a snapshot of your test output and compares it to a snapshot committed alongside your tests. If the values don't match then the test will be failed. There's no need to manually manage snapshot files: just use the `cupaloy.SnapshotT(t, value)` function in your tests and `cupaloy` will automatically find the relevant snapshot file (based on the test name) and compare it with the given value. ## Usage ### Write a test Firstly, write a test case generating some output and pass this output to `cupaloy.SnapshotT`: ```golang func TestParsing(t *testing.T) { ast := ParseFile("test_input") // check that the result is the same as the last time the snapshot was updated // if the result has changed (e.g. because the behaviour of the parser has changed) // then the test will be failed with an error containing a diff of the changes cupaloy.SnapshotT(t, ast) } ``` The first time this test is run, a snapshot will be automatically created (using the [github.com/davecgh/go-spew](https://github.com/davecgh/go-spew) package). ### Update a snapshot When the behaviour of your software changes causing the snapshot to change, this test will begin to fail with an error showing the difference between the old and new snapshots. Once you are happy that the new snapshot is correct (and hasn't just changed unexpectedly), you can save the new snapshot by setting the ```UPDATE_SNAPSHOTS``` environment and re-running your tests: ```bash UPDATE_SNAPSHOTS=true go test ./... ``` This will fail all tests where the snapshot was updated (to stop you accidentally updating snapshots in CI) but your snapshot files will now have been updated to reflect the current output of your code. ### Supported formats Snapshots of test output are generated using the [github.com/davecgh/go-spew](https://github.com/davecgh/go-spew) package which uses reflection to deep pretty-print your test result and so will support almost all the basic types (from simple strings, slices, and maps to deeply nested structs) without issue. The only types whose contents cannot be fully pretty-printed are functions and channels. The most important property of your test output is that it is deterministic: if your output contains timestamps or other fields which will change on every run, then `cupaloy` will detect this as a change and so fail the test. ### Further Examples #### Table driven tests ```golang var testCases = map[string][]string{ "TestCaseOne": []string{......}, "AnotherTestCase": []string{......}, .... } func TestCases(t *testing.T) { for testName, args := range testCases { t.Run(testName, func(t *testing.T) { result := functionUnderTest(args...) cupaloy.SnapshotT(t, result) }) } } ``` #### Changing output directory ```golang func TestSubdirectory(t *testing.T) { result := someFunction() snapshotter := cupaloy.New(cupaloy.SnapshotSubdirectory("testdata")) err := snapshotter.Snapshot(result) if err != nil { t.Fatalf("error: %s", err) } } ``` For further usage examples see basic_test.go and advanced_test.go in the examples/ directory which are both kept up to date and run on CI. ## Debugging ### Windows It is important to note that git on Windows might be configured in a way that `\n` is replaced by `\r\n` during checkout (it is the case on GitHub actions). In such a case, the snapshot appears to be the same, but the test fails. Please ensure that git is configured correctly everywhere. There are multiple ways to do it, please check https://github.com/actions/checkout/issues/135 and https://github.com/bradleyjkemp/cupaloy/pull/73 for more details. cupaloy-2.7.0/config.go000066400000000000000000000105551414345261700150050ustar00rootroot00000000000000package cupaloy // Configurator is a functional option that can be passed to cupaloy.New() to change snapshotting behaviour. type Configurator func(*Config) // EnvVariableName can be used to customize the environment variable that determines whether snapshots // should be updated e.g. // cupaloy.New(EnvVariableName("UPDATE")) // Will create an instance where snapshots will be updated if the UPDATE environment variable is set. // Default: UPDATE_SNAPSHOTS func EnvVariableName(name string) Configurator { return func(c *Config) { c.shouldUpdate = func() bool { return envVariableSet(name) } } } // ShouldUpdate can be used to provide custom logic to decide whether or not to update a snapshot // e.g. // var update = flag.Bool("update", false, "update snapshots") // cupaloy.New(ShouldUpdate(func () bool { return *update }) // Will create an instance where snapshots are updated if the --update flag is passed to go test. // Default: checks for the presence of the UPDATE_SNAPSHOTS environment variable func ShouldUpdate(f func() bool) Configurator { return func(c *Config) { c.shouldUpdate = f } } // SnapshotSubdirectory can be used to customize the location that snapshots are stored in. // e.g. // cupaloy.New(SnapshotSubdirectory("testdata")) // Will create an instance where snapshots are stored in the "testdata" folder // Default: .snapshots func SnapshotSubdirectory(name string) Configurator { return func(c *Config) { c.subDirName = name } } // FailOnUpdate controls whether tests should be failed when snapshots are updated. // By default this is true to prevent snapshots being accidentally updated in CI. // Default: true func FailOnUpdate(failOnUpdate bool) Configurator { return func(c *Config) { c.failOnUpdate = failOnUpdate } } // CreateNewAutomatically controls whether snapshots should be automatically created // if no matching snapshot already exists. // Default: true func CreateNewAutomatically(createNewAutomatically bool) Configurator { return func(c *Config) { c.createNewAutomatically = createNewAutomatically } } // FatalOnMismatch controls whether failed tests should fail using t.Fatal which should // immediately stop any remaining tests. Will use t.Error on false. // Default: false func FatalOnMismatch(fatalOnMismatch bool) Configurator { return func(c *Config) { c.fatalOnMismatch = fatalOnMismatch } } // SnapshotFileExtension allows you to change the extension of the snapshot files // that are written. E.g. if you're snapshotting HTML then adding SnapshotFileExtension(".html") // will allow for more easier viewing of snapshots. // Default: "", no extension is added. func SnapshotFileExtension(snapshotFileExtension string) Configurator { return func(c *Config) { c.snapshotFileExtension = snapshotFileExtension } } // UseStringerMethods invoke String() or Error() methods when available rather than dumping the object. // This should probably be disabled by default but is not for backwards compatibility reasons. // Default: true func UseStringerMethods(useStringerMethods bool) Configurator { return func(c *Config) { c.useStringerMethods = useStringerMethods } } // Config provides the same snapshotting functions with additional configuration capabilities. type Config struct { shouldUpdate func() bool subDirName string failOnUpdate bool createNewAutomatically bool fatalOnMismatch bool snapshotFileExtension string useStringerMethods bool } // NewDefaultConfig returns a new Config instance initialised with the same options as // the original Global instance (i.e. before any config changes were made to it) func NewDefaultConfig() *Config { return (&Config{}).WithOptions( SnapshotSubdirectory(".snapshots"), EnvVariableName("UPDATE_SNAPSHOTS"), FailOnUpdate(true), CreateNewAutomatically(true), FatalOnMismatch(false), SnapshotFileExtension(""), UseStringerMethods(true), ) } // Global is the Config instance used by `cupaloy.SnapshotT` and other package-level functions. var Global = NewDefaultConfig() func (c *Config) clone() *Config { return &Config{ shouldUpdate: c.shouldUpdate, subDirName: c.subDirName, failOnUpdate: c.failOnUpdate, createNewAutomatically: c.createNewAutomatically, fatalOnMismatch: c.fatalOnMismatch, snapshotFileExtension: c.snapshotFileExtension, useStringerMethods: c.useStringerMethods, } } cupaloy-2.7.0/cupaloy.go000066400000000000000000000114541414345261700152130ustar00rootroot00000000000000package cupaloy import ( "fmt" "os" "strings" "github.com/bradleyjkemp/cupaloy/v2/internal" ) // New constructs a new, configured instance of cupaloy using the given // Configurators applied to the default config. func New(configurators ...Configurator) *Config { return NewDefaultConfig().WithOptions(configurators...) } // Snapshot calls Snapshotter.Snapshot with the global config. func Snapshot(i ...interface{}) error { return Global.snapshot(getNameOfCaller(), i...) } // SnapshotMulti calls Snapshotter.SnapshotMulti with the global config. func SnapshotMulti(snapshotID string, i ...interface{}) error { snapshotName := fmt.Sprintf("%s-%s", getNameOfCaller(), snapshotID) return Global.snapshot(snapshotName, i...) } // SnapshotT calls Snapshotter.SnapshotT with the global config. func SnapshotT(t TestingT, i ...interface{}) { t.Helper() Global.SnapshotT(t, i...) } // SnapshotWithName calls Snapshotter.SnapshotWithName with the global config. func SnapshotWithName(snapshotName string, i ...interface{}) error { return Global.SnapshotWithName(snapshotName, i...) } // Snapshot compares the given variable to its previous value stored on the filesystem. // An error containing a diff is returned if the snapshots do not match, or if a new // snapshot was created. // // Snapshot determines the snapshot file automatically from the name of the calling function. // As a result it can be called at most once per function. If you want to call Snapshot // multiple times in a function, if possible, instead collect the values and call Snapshot // with all values at once. Otherwise see SnapshotMulti. // // If using snapshots in tests, prefer the SnapshotT function which fails the test // directly, rather than requiring your to remember to check the error. func (c *Config) Snapshot(i ...interface{}) error { return c.snapshot(getNameOfCaller(), i...) } // SnapshotMulti is similar to Snapshot but can be called multiple times from the // same function. This is possible by providing a unique id for each snapshot which is // appended to the function name to form the snapshot name. func (c *Config) SnapshotMulti(snapshotID string, i ...interface{}) error { snapshotName := fmt.Sprintf("%s-%s", getNameOfCaller(), snapshotID) return c.snapshot(snapshotName, i...) } // SnapshotWithName is similar to SnapshotMulti without appending the function name. // It is useful when you need full control of the snapshot filename. func (c *Config) SnapshotWithName(snapshotName string, i ...interface{}) error { return c.snapshot(snapshotName, i...) } // SnapshotT compares the given variable to the its previous value stored on the filesystem. // The current test is failed (with error containing a diff) if the values do not match, or // if a new snapshot was created. // // SnapshotT determines the snapshot file automatically from the name of the test (using // the t.Name() function). As a result, SnapshotT can be called at most once per test. // If you want to call SnapshotT multiple times in a test, if possible, instead collect the // values and call SnapshotT with all values at once. Alternatively, use sub-tests and call // SnapshotT once in each. // // If using snapshots in tests, SnapshotT is preferred over Snapshot and SnapshotMulti. func (c *Config) SnapshotT(t TestingT, i ...interface{}) { t.Helper() if t.Failed() { return } snapshotName := strings.Replace(t.Name(), "/", "-", -1) err := c.snapshot(snapshotName, i...) if err != nil { if c.fatalOnMismatch { t.Fatal(err) return } t.Error(err) } } // WithOptions returns a copy of an existing Config with additional Configurators applied. // This can be used to apply a different option for a single call e.g. // snapshotter.WithOptions(cupaloy.SnapshotSubdirectory("testdata")).SnapshotT(t, result) // Or to modify the Global Config e.g. // cupaloy.Global = cupaloy.Global.WithOptions(cupaloy.SnapshotSubdirectory("testdata")) func (c *Config) WithOptions(configurators ...Configurator) *Config { clonedConfig := c.clone() for _, configurator := range configurators { configurator(clonedConfig) } return clonedConfig } func (c *Config) snapshot(snapshotName string, i ...interface{}) error { snapshot := c.takeSnapshot(i...) prevSnapshot, err := c.readSnapshot(snapshotName) if os.IsNotExist(err) { if c.createNewAutomatically { return c.updateSnapshot(snapshotName, prevSnapshot, snapshot) } return internal.ErrNoSnapshot{Name: snapshotName} } if err != nil { return err } if snapshot == prevSnapshot || c.takeV1Snapshot(i...) == prevSnapshot { // previous snapshot matches current value return nil } if c.shouldUpdate() { // updates snapshot to current value and upgrades snapshot format return c.updateSnapshot(snapshotName, prevSnapshot, snapshot) } return internal.ErrSnapshotMismatch{ Diff: diffSnapshots(prevSnapshot, snapshot), } } cupaloy-2.7.0/doc.go000066400000000000000000000023021414345261700142740ustar00rootroot00000000000000// Package cupaloy provides a simple api for snapshot testing in golang: test that your changes don't unexpectedly alter the results of your code. // // cupaloy takes a snapshot of a given value and compares it to a snapshot committed alongside your tests. If the values don't match then you'll be forced to update the snapshot file before the test passes. // // Snapshot files are handled automagically: just use the cupaloy.Snapshot(value) function in your tests and cupaloy will automatically find the relevant snapshot file and compare it with the given value. // // Installation // go get -u github.com/bradleyjkemp/cupaloy // // Usage // func TestExample(t *testing.T) { // result := someFunction() // // // check that the result is the same as the last time the snapshot was updated // // if the result has changed then the test will be failed with an error containing // // a diff of the changes // cupaloy.SnapshotT(t, result) // } // // To update the snapshots simply set the UPDATE_SNAPSHOTS environment variable and run your tests e.g. // UPDATE_SNAPSHOTS=true go test ./... // Your snapshot files will now have been updated to reflect the current output of your code. package cupaloy cupaloy-2.7.0/examples/000077500000000000000000000000001414345261700150215ustar00rootroot00000000000000cupaloy-2.7.0/examples/.gitignore000066400000000000000000000000111414345261700170010ustar00rootroot00000000000000ignored*/cupaloy-2.7.0/examples/.snapshots/000077500000000000000000000000001414345261700171215ustar00rootroot00000000000000cupaloy-2.7.0/examples/.snapshots/TestFailedSnapshotT000066400000000000000000000000211414345261700227250ustar00rootroot00000000000000This should fail cupaloy-2.7.0/examples/.snapshots/TestGlobalFailOnUpdate000066400000000000000000000001071414345261700233360ustar00rootroot00000000000000This should fail because updating, but won't because of global setting cupaloy-2.7.0/examples/.snapshots/TestGlobalFatalOnMismatch000066400000000000000000000000431414345261700240340ustar00rootroot00000000000000This should fail due to a mismatch cupaloy-2.7.0/examples/.snapshots/TestMultipleSnapshots-hello000066400000000000000000000000311414345261700244750ustar00rootroot00000000000000(string) (len=5) "Hello" cupaloy-2.7.0/examples/.snapshots/TestMultipleSnapshots-world000066400000000000000000000000311414345261700245210ustar00rootroot00000000000000(string) (len=5) "World" cupaloy-2.7.0/examples/.snapshots/TestSnapshotFileExtension.myextension000066400000000000000000000000711414345261700265570ustar00rootroot00000000000000This should end up in a file with extension .myextension cupaloy-2.7.0/examples/.snapshots/TestUseStringerMethods-disabled000066400000000000000000000000351414345261700252450ustar00rootroot00000000000000(examples_test.stringer) { } cupaloy-2.7.0/examples/.snapshots/TestUseStringerMethods-enabled000066400000000000000000000000471414345261700250730ustar00rootroot00000000000000(examples_test.stringer) with stringer cupaloy-2.7.0/examples/.snapshots/chosen-by-user000066400000000000000000000000201414345261700216770ustar00rootroot00000000000000Hello Universe! cupaloy-2.7.0/examples/.snapshots/examples-TestMap000066400000000000000000000002071414345261700222340ustar00rootroot00000000000000(map[int]string) (len=3) { (int) 1: (string) (len=5) "Hello", (int) 2: (string) (len=5) "World", (int) 3: (string) (len=1) "!" } cupaloy-2.7.0/examples/.snapshots/examples-TestMultipleSnapshots000066400000000000000000000000311414345261700252100ustar00rootroot00000000000000(string) (len=5) "Hello" cupaloy-2.7.0/examples/.snapshots/examples-TestMultipleSnapshots-result2000066400000000000000000000000311414345261700266060ustar00rootroot00000000000000(string) (len=5) "World" cupaloy-2.7.0/examples/.snapshots/examples-TestMultipleValues000066400000000000000000000000621414345261700244710ustar00rootroot00000000000000(string) (len=5) "Hello" (string) (len=5) "World" cupaloy-2.7.0/examples/.snapshots/examples-TestSecondString000066400000000000000000000000441414345261700241200ustar00rootroot00000000000000(string) (len=15) "Hello Universe!" cupaloy-2.7.0/examples/.snapshots/examples-TestString000066400000000000000000000000401414345261700227600ustar00rootroot00000000000000(string) (len=11) "Hello world" cupaloy-2.7.0/examples/.snapshots/examples_test-TestConfig000066400000000000000000000000431414345261700237610ustar00rootroot00000000000000(string) (len=14) "Hello Universe" cupaloy-2.7.0/examples/.snapshots/examples_test-TestConfig-withExclamation000066400000000000000000000000661414345261700271240ustar00rootroot00000000000000(string) (len=5) "Hello" (string) (len=9) "Universe!" cupaloy-2.7.0/examples/.snapshots/examples_test-TestFailOnUpdate000066400000000000000000000000141414345261700250650ustar00rootroot00000000000000Hello world cupaloy-2.7.0/examples/.snapshots/examples_test-TestRawBytes000066400000000000000000000001231414345261700243130ustar00rootroot00000000000000Hello advanced world! (*bytes.Buffer)(Hello advanced world!) Hello advanced world! cupaloy-2.7.0/examples/.snapshots/examples_test-TestShouldUpdate-func1000066400000000000000000000000311414345261700261640ustar00rootroot00000000000000(string) (len=5) "Hello" cupaloy-2.7.0/examples/.snapshots/examples_test-TestShouldUpdate-func2000066400000000000000000000000061414345261700261670ustar00rootroot00000000000000Hello cupaloy-2.7.0/examples/.snapshots/examples_test-TestString000066400000000000000000000000521414345261700240220ustar00rootroot00000000000000(string) (len=21) "Hello advanced world!" cupaloy-2.7.0/examples/.snapshots/examples_test-TestUpdate000066400000000000000000000000141414345261700237740ustar00rootroot00000000000000Hello world cupaloy-2.7.0/examples/TestingT_test.go000066400000000000000000000021641414345261700201530ustar00rootroot00000000000000// Code generated by mockery v1.0.0 package examples_test import mock "github.com/stretchr/testify/mock" // TestingT is an autogenerated mock type for the TestingT type type TestingT struct { mock.Mock } // Error provides a mock function with given fields: args func (_m *TestingT) Error(args ...interface{}) { var _ca []interface{} _ca = append(_ca, args...) _m.Called(_ca...) } // Fatal provides a mock function with given fields: args func (_m *TestingT) Fatal(args ...interface{}) { var _ca []interface{} _ca = append(_ca, args...) _m.Called(_ca...) } // Failed provides a mock function with given fields: func (_m *TestingT) Failed() bool { ret := _m.Called() var r0 bool if rf, ok := ret.Get(0).(func() bool); ok { r0 = rf() } else { r0 = ret.Get(0).(bool) } return r0 } // Helper provides a mock function with given fields: func (_m *TestingT) Helper() { _m.Called() } // Name provides a mock function with given fields: func (_m *TestingT) Name() string { ret := _m.Called() var r0 string if rf, ok := ret.Get(0).(func() string); ok { r0 = rf() } else { r0 = ret.Get(0).(string) } return r0 } cupaloy-2.7.0/examples/advanced_test.go000066400000000000000000000160011414345261700201520ustar00rootroot00000000000000package examples_test import ( "bytes" "io/ioutil" "strings" "testing" "github.com/bradleyjkemp/cupaloy/v2/internal" "github.com/bradleyjkemp/cupaloy/v2" "github.com/stretchr/testify/mock" ) // Snapshots are isolated by package so test functions with the same name are fine func TestString(t *testing.T) { result := "Hello advanced world!" err := cupaloy.Snapshot(result) if err != nil { t.Fatal("Tests in different packages are independent of each other", err) } } // New version of snapshot format should write out certain types directly func TestRawBytes(t *testing.T) { result := bytes.NewBufferString("Hello advanced world!") err := cupaloy.Snapshot(result.Bytes(), result, result.String()) if err != nil { t.Fatal("New version of snapshot format should write out certain types directly", err) } } // A configured instance of cupaloy has the same interface as the static methods func TestConfig(t *testing.T) { snapshotter := cupaloy.New(cupaloy.EnvVariableName("UPDATE")) err := snapshotter.Snapshot("Hello Universe") if err != nil { t.Fatalf("You can use a custom config struct to customise the behaviour of cupaloy %s", err) } err = snapshotter.SnapshotMulti("withExclamation", "Hello", "Universe!") if err != nil { t.Fatalf("The config struct has all the same methods as the default %s", err) } snapshotter.WithOptions(cupaloy.SnapshotSubdirectory("testdata")).SnapshotT(t, "Hello world!") } // SnapshotMulti allows a user to choose the full snapshot name func TestSnapshotWithName(t *testing.T) { err := cupaloy.SnapshotWithName("chosen-by-user", "Hello", "Universe!") if err != nil { t.Fatalf("The config struct has all the same methods as the default %s", err) } } // If a snapshot is updated then this returns an error // This is to prevent you accidentally updating your snapshots in CI func TestUpdate(t *testing.T) { snapshotter := cupaloy.New(cupaloy.EnvVariableName("HOME")) defer snapshotter.Snapshot("Hello world") // reset snapshot to known state err := snapshotter.Snapshot("Hello world") if err != nil { t.Fatalf("Updating a snapshot with the same value does not fail a test %s", err) } err = snapshotter.Snapshot("Hello new world") if err == nil { t.Fatalf("Updating a snapshot with a new value is always an error %s", err) } if _, ok := err.(internal.ErrSnapshotUpdated); !ok { t.Fatalf("Error returned will be of type ErrSnapshotUpdated") } } // If a snapshot doesn't exist then it is created and an error returned func TestMissingSnapshot(t *testing.T) { tempdir, err := ioutil.TempDir(".", "ignored") if err != nil { t.Fatal(err) } snapshotter := cupaloy.New( cupaloy.EnvVariableName("ENOEXIST"), cupaloy.SnapshotSubdirectory(tempdir)) err = snapshotter.Snapshot("Hello world") if err == nil { t.Fatalf("This will always return an error %s", err) } if _, ok := err.(internal.ErrSnapshotCreated); !ok { t.Fatalf("Error returned will be of type ErrSnapshotCreated") } } // Multiple snapshots can be taken in a single test func TestMultipleSnapshots(t *testing.T) { t.Run("hello", func(t *testing.T) { result1 := "Hello" cupaloy.SnapshotT(t, result1) }) t.Run("world", func(t *testing.T) { result2 := "World" cupaloy.New().SnapshotT(t, result2) }) } // Test the ShouldUpdate configurator func TestShouldUpdate(t *testing.T) { t.Run("false", func(t *testing.T) { result := "Hello!" err := cupaloy.New(cupaloy.ShouldUpdate(func() bool { return false })).Snapshot(result) if err == nil || !strings.Contains(err.Error(), "not equal") { // not updating snapshot so error should contain a diff t.Fatal(err) } }) t.Run("true", func(t *testing.T) { result := "Hello!" c := cupaloy.New(cupaloy.ShouldUpdate(func() bool { return true })) err := c.Snapshot(result) if err == nil || !strings.Contains(err.Error(), "updated") { // snapshot should have been updated with error signalling this t.Fatal(err) } // snapshot again with old value to revert the update c.Snapshot("Hello") }) } func TestFailedSnapshotT(t *testing.T) { mockT := &TestingT{} mockT.On("Helper").Return() mockT.On("Failed").Return(false) mockT.On("Name").Return(t.Name()) mockT.On("Error", mock.Anything).Return() cupaloy.SnapshotT(mockT, "This should fail due to a mismatch") mockT.AssertCalled(t, "Error", mock.Anything) } func TestFailedTestNoop(t *testing.T) { mockT := &TestingT{} mockT.On("Helper").Return() mockT.On("Failed").Return(true) cupaloy.SnapshotT(mockT, "This should not create a snapshot") mockT.AssertNotCalled(t, "Error") } func TestGlobalFailOnUpdate(t *testing.T) { cupaloy.Global = cupaloy.Global.WithOptions( cupaloy.FailOnUpdate(false), cupaloy.ShouldUpdate(func() bool { return true })) // reset global after test defer func() { cupaloy.Global = cupaloy.NewDefaultConfig() }() mockT := &TestingT{} mockT.On("Helper").Return() mockT.On("Failed").Return(false) mockT.On("Name").Return(t.Name()) cupaloy.SnapshotT(mockT, "This should fail because updating, but won't because of global setting") mockT.AssertNotCalled(t, "Error") } func TestGlobalCreateNewAutomatically(t *testing.T) { cupaloy.Global = cupaloy.Global.WithOptions(cupaloy.CreateNewAutomatically(false)) // reset global after test defer func() { cupaloy.Global = cupaloy.NewDefaultConfig() }() mockT := &TestingT{} mockT.On("Helper").Return() mockT.On("Failed").Return(false) mockT.On("Name").Return(t.Name()) mockT.On("Error", mock.Anything).Return() cupaloy.SnapshotT(mockT, "This should fail because doesn't exist") mockT.AssertCalled(t, "Error", mock.Anything) } func TestFailOnUpdate(t *testing.T) { snapshotter := cupaloy.New(cupaloy.EnvVariableName("HOME"), cupaloy.FailOnUpdate(false)) err := snapshotter.Snapshot("Hello new world") if err != nil { t.Fatal("FailOnUpdate(false) should disable errors when updating snapshots") } snapshotter.Snapshot("Hello world") // reset snapshot to known state (ignoring return value) } func TestGlobalFatalOnMismatch(t *testing.T) { cupaloy.Global = cupaloy.Global.WithOptions(cupaloy.FatalOnMismatch(true)) // reset global after test defer func() { cupaloy.Global = cupaloy.NewDefaultConfig() }() mockT := &TestingT{} mockT.On("Helper").Return() mockT.On("Failed").Return(false) mockT.On("Name").Return(t.Name()) mockT.On("Error", mock.Anything).Return() mockT.On("Fatal", mock.Anything).Return() cupaloy.SnapshotT(mockT, "This should fatal due to a mismatch") mockT.AssertNotCalled(t, "Error", mock.Anything) mockT.AssertCalled(t, "Fatal", mock.Anything) } func TestSnapshotFileExtension(t *testing.T) { snapshotter := cupaloy.New(cupaloy.SnapshotFileExtension(".myextension")) snapshotter.SnapshotT(t, "This should end up in a file with extension .myextension") } type stringer struct { } func (s stringer) String() string { return "with stringer" } func TestUseStringerMethods(t *testing.T) { s := stringer{} t.Run("enabled", func(t *testing.T) { cupaloy.New(cupaloy.UseStringerMethods(true)).SnapshotT(t, s) }) t.Run("disabled", func(t *testing.T) { cupaloy.New(cupaloy.UseStringerMethods(false)).SnapshotT(t, s) }) } cupaloy-2.7.0/examples/basic_test.go000066400000000000000000000031431414345261700174710ustar00rootroot00000000000000package examples import ( "testing" "github.com/bradleyjkemp/cupaloy/v2" ) func TestString(t *testing.T) { result := "Hello world" err := cupaloy.Snapshot(result) if err != nil { t.Errorf("This will pass because \"Hello world\" is in the snapshot %s", err) } err = cupaloy.Snapshot("Hello world!") if err == nil { t.Errorf("Now it will fail because the snapshot doesn't have an exclamation mark %s", err) } } // Tests are independent of each other func TestSecondString(t *testing.T) { result := "Hello Universe!" err := cupaloy.Snapshot(result) if err != nil { t.Errorf("This will pass because Snapshots are per test function %s", err) } } // Multiple snapshots can be taken in a single test func TestMultipleSnapshots(t *testing.T) { result1 := "Hello" err := cupaloy.Snapshot(result1) if err != nil { t.Errorf("This will pass as normal %s", err) } result2 := "World" err = cupaloy.SnapshotMulti("result2", result2) if err != nil { t.Errorf("This will pass also as we've specified a unique (to this function) id %s", err) } } // Snapshot() takes an arbitrary number of values func TestMultipleValues(t *testing.T) { result1 := "Hello" result2 := "World" err := cupaloy.Snapshot(result1, result2) if err != nil { t.Errorf("You can snapshot multiple values in the same call to Snapshot %s", err) } } // All types can be snapshotted. Maps are snapshotted in a deterministic way func TestMap(t *testing.T) { result := map[int]string{ 1: "Hello", 3: "!", 2: "World", } err := cupaloy.Snapshot(result) if err != nil { t.Errorf("Snapshots can be taken of any type %s", err) } } cupaloy-2.7.0/examples/doc.go000066400000000000000000000000211414345261700161060ustar00rootroot00000000000000package examples cupaloy-2.7.0/examples/testdata/000077500000000000000000000000001414345261700166325ustar00rootroot00000000000000cupaloy-2.7.0/examples/testdata/TestConfig000066400000000000000000000000151414345261700206160ustar00rootroot00000000000000Hello world! cupaloy-2.7.0/go.mod000066400000000000000000000003211414345261700143050ustar00rootroot00000000000000module github.com/bradleyjkemp/cupaloy/v2 require ( github.com/davecgh/go-spew v1.1.1 github.com/pmezard/go-difflib v1.0.0 github.com/stretchr/objx v0.1.1 // indirect github.com/stretchr/testify v1.6.1 ) cupaloy-2.7.0/go.sum000066400000000000000000000032141414345261700143360ustar00rootroot00000000000000github.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/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1 h1:2vfRuCMp5sSVIDSqO8oNnWJq7mPa6KVP3iPIwFBuy8A= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.2.2 h1:bSDNvY7ZPG5RlJ8otE/7V6gMiyenm9RtJ7IUVIAoJ1w= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= cupaloy-2.7.0/internal/000077500000000000000000000000001414345261700150175ustar00rootroot00000000000000cupaloy-2.7.0/internal/errors.go000066400000000000000000000013121414345261700166570ustar00rootroot00000000000000package internal import "fmt" type ErrSnapshotCreated struct { Name string Contents string } func (e ErrSnapshotCreated) Error() string { return fmt.Sprintf("snapshot created for test %s, with contents:\n%s", e.Name, e.Contents) } type ErrSnapshotUpdated struct { Name string Diff string } func (e ErrSnapshotUpdated) Error() string { return fmt.Sprintf("snapshot %s updated:\n%s", e.Name, e.Diff) } type ErrSnapshotMismatch struct { Diff string } func (e ErrSnapshotMismatch) Error() string { return fmt.Sprintf("snapshot not equal:\n%s", e.Diff) } type ErrNoSnapshot struct { Name string } func (e ErrNoSnapshot) Error() string { return fmt.Sprintf("snapshot %s does not exist", e.Name) } cupaloy-2.7.0/mascot.png000066400000000000000000010071171414345261700152060ustar00rootroot00000000000000PNG  IHDR!C bKGD pHYs  tIME!3䋶 IDATxyei]>眻/t  \$$/&&.K~1BT'(EDDaa6f_z־ܺ98VwUU5sl p-9d=ϖD"5ƔDZS曊M2,kTU"RkVQժ UD$]U6x\PS|J(Bxtuk9^p8p8 Hd||DQd86*Z)X[0 cLVD2"rGȪjHW"VˊHYUCcȩՒH9<).2':׋4Fr" WJ ETnTAk QVU5!V50MUmu?uڰֶz15kQc}cRX ޣpbp8`ppy^.@5#@}`ɀTZJD--Da}9^$*DS6@k"XSݰV"1,l~'jlFAqWGIJp8.T)z?ATEJp(udO芈nWftXD\'?늵2XuZo=0 0nw0۞"p8'ñ`6u"^$ cSIcIFq :.xqtskehjKUq(jkEp8p8sA?~ȧRO[IZ3f (ׄmUTY꼈̃.1@ZƆ}ˬ5EbS"RRе]6iСlRUe^'XT*'\K9{I}zj*q?RD\ Zq,k) !OZk΃+3ÉO\//SWHw_Y تHhvt6q8E 81c2U1襪R͂@3.Ӵآ_i%~ X^^u-p8N,wnTۍSD;U"r^KUA[l~*qD1z 8 LeЛݵa}ZJrk%pb\`&&&n;DUA -"@d gYJ055r 7u"rQ4೅"ñ~$"aw_ynU{O9[7222[D̛AݺIp j zyy5\> @}qx/g&|?[EËq=\{| FGG!"RwM種*߯}% VX&"ZKlo" gc<E 9U1B!J4G1t@&N+F gzBZҩ\6{ Xlt0'B'h4ۉ5*ԛm83NQo>^㸔N{W\+"

7&w5,qliw:::VC-j&fZIѤhSo5ZlDdCZf8L>{0bZktDYiлTE9^77p!\Ƕ:o5\SU=mmfJň@j9uLM L{ԧ/iwT]8v. ~I RrB˳vŰ6gJʞ1 fR +*sx8_~C%R]=Mn+P8Ɩ*QcmZM1דX{Oh?2 }Aqҍe>y 9=u3k[`F1NH'hw":aDNDtEޤlQgZgd}FFA֤lEۉc5BU'1k6NM- лT{H;k*˹|>_4&LJN~kuDD>U@VDJiTꩲdתYsq̒Jetj4XYY851S+#jߴ6{pUh^UG}1[Dk=!JWlvpzB', X-D<YJ,|r"}EEyJ<\b.C.!H (qz{J<{1_.p{FH,}ӂ{L9%=o'qQǖ0i64ZmZf;u7UkX^`W]p۽{ӽx67Wp|V$~$Zud x`.9"xl@fAgDQUyJ5~433+@='!ϓ[|NU,KR>Tgf.kNjG]E1.!Ԟ[K)ҞH"SG{A$`0Q{ZIѢhVZequ*k5֪T74mvN^=DD~"iAӧ& {Us`>3zb~~~Bb|||ȘxB;e Wȥ"z H<VZ9<[Tܓsb˃;Tm$oŪb@n^D]<>%P ƨ+K]śŠEHS{B= }&d)T1aF1Q|(^}'/gӼj`ddp ৻s;wE֚gggy9 ccc1Gz'z剉ۍEzHz`}0Jo\k8h|eQUyW9sİ2m\bF(PN%>2Ii>Qg(r \ +fdSlt?MRL؍#ZXinN ;e=ԧ[OW|tOosL$ImC6z V,.32+u֫ 6j 0-A'qO^s ^Dj8EG u"-$aa}w2 "0w="'&&+ǹe [asrFFF^'"=q|gQD8uӉ[<HStb>K_R!xU8%ϒIurݲIY/llZ=1ńqDTj`Nqg$A3GOܼ}?u8zj2VYX\cqJ٢hQCxG6"]ns5]ZAWic355rUy) {pޭ*Q><33IXA"2嶈DZRRk ?5ǵr^ rB\}z"t$vt' e(ryʅ}EF+P.$.}t*M1lfVeSخ{v&"Wɪ}ޤY*ckX<0%ҽeۍätdi3sL/'KkVkꭤVac%$qL2xlG\`ZUUyT q3??%;;r_,뻡a/yS {L,ON}1濝3](9-'=7k]ZmC U}Lpq<͉k$QU^(uQ'~[mOOlr!GgP"CE,t\&M:$l5XX{餜ݬ|u:!p|v+{x߬[mO+l&5תLW]\deeWZE&R'L: K R\/$ O#]`<% F"z޴" kϺڢ,)UӉh;aH'V^CDG qF3IFР{N!qL2x:>D^XXx b:~RDnzs-qoA(>t@\3Į9n WZy你k]&s(כI⏰!02'G?>p?} Kd~"S%ͫzFT#[Kh!f*k-qbfefWXZݠ^o [Vc-4==Kn]&&&7|p=AxaDѢjQ(2>ϾNbɱAJDw- $v8N;{ic =O➷HRl1/P5X\^degxzz-A\l:)x yU1ܧqڎLMMS1gI~Acq]jy[w6mjj"U${0Y^j(q$9GpqƇdRxIb(^7yI\90;P$.1<qli.<9䳳ί!}bAZ{ Uw\ ccc|_5 7D7t5,vD٤hy\.pAN&Q&dž(ɤ0"D% SYxƞw@7v|9L"Sݲoql٨7[\"O㙓,0ZNy&mI}ky uՏZˇ+߻Z}]Kr4xLDɓ?wby _~b\?Nqrec;N3<}bgNmZ֨5ZFfithۃhU|hvvN܁o| *)9񷡪uf @ˉȾ} h!bWez|+oফ1_lha'جoT@!EQs>'z|Z@L*=WGA dW`FFF}&cx3R {M 'YJlv"2%Opq.>0EƘbg anzA :)"gL:E:c$ [XOgfyzz k:d T5X?XT"h q5(?:77\.GEdt<5Tn|+#ciJ̻;QCJ6>:"tp17;; )Nh_UM"ҳ*I"FMdRC7ƑC98Ρ}cLP,Poh; br8;l"Z}ϐJQ6K+LW'gg81dL3BhM;O+@#E{@ns"yX^TN83&zޤVqyw}3*Peniǻb!@ ?P7(}c-KUUfftq~Ɍ}߿|핛1NvM\rxc&905|(i44ZIVzg,v8#Jgd)op3ҩw?O/ND#gMu"9uc<<<ܗJKD7F]=Au7pRKJ;0:T\q.(Uj&FNVE;=yMo!)sd3i8fZcSVxi{fgNγ^ê%H3ux Aŭ*j6g2Kk4]o[LM _ /w1t:Ʃ$=5UW0f "I,E$閴o4Eڊ3"j[\c0?7گŕ5W7=ogbK&F1b8w~<'KbPݶ#VUT~ s3GGG=ϛ7ȷȕ]&un8Dq Ce}?RkzN'$@@6XȐf x9 yL/^cD|o~׭ų> eEO.,,,ͻ׋_[zr*Q[YFW%zLt:E8U~d1VfM/)kf1}o3WчZ {¼cwGU."Y ec W]z+agwZaͦVog'xDb6K>!AlzN0oT*5y*b^ZD8NMX!aaMs9Lsű\~~.>8 }&͐Nd)|۬h#[Kݦݎ5M7,,3;Y[jwҩ 8?]ٓN,Cǯ< mP6/J~P?gOsa{XU2P32'+O>·>Yj"lߴc)I3/?133;N0o###S)*0ezǟfni0 APt7ҭ<۴.v;B ?[ϵ`Xn[V'ƉS-zhGNrx8&(S.3O*0d[E9X=392Imv30Vo^cfn''N,,Iޥ$` 󶽴%Ծ{z9bjj"[bSnq%ysƇyvvqYh|㟽}?E9WlܩjBDac;ћ~ sF'h4;1 'GC\y`lL'@_ld-.S_nN=Jϥ=lԚ,SucL-鄤|^Ѭ===N vby?al K\r>N."FжQQgdzn}џ0'|8ގ3*?<33'ne"| -04U-gӌs\sE;<}diwBk 6vp8S4 lR>GНju+K< xiz 4[myB.!IcdW U+U8G\1B"oȁs1 4Zm*|#&cxQ.:0`_L&EYVN'bBzL2N 9|ߣPYX<_ 3T 2 }~_~\.20P֟խGXZTCGDRn^."e1A:QH֤h%.J,C}\v^q1Pb=bUj&f=v8n|r \&qQTk ,򅇞3,,Wi4[ B1xV%݆wUڿsFzrrEd7"IFt^ym׳| #nbWWM=K4v8Cj~n2-g0~X0w#<;owFȤ!c6vñsofi<`cn3ʃ =O`znjA(r 9<ߠVwY[EOY_p!~^D~x?=퐹T7]Kˎ<6j j_qo-Fr!O>fn5Oett|6C[=7|xzz }q<ɑg=5,?o16C%'5ohL&oS !o`4/vO\y7 "v@N2 BauN&H 845ʵ]uW^̑CSrƠ@j]c¹W9i/YزONs#yvfR1GMT~sZFGGG/߳$TWi:\|۫_ W=yz!I Jyr4O~|oWdD'r>EgN9'}EUV W =f6^s8T1_o??`zf}S#RYU7==#'N/ "bي$vۍ1 Y]j4#h미/fR QjDqdq9DžH\bN)4?3]=='YXZ|HRRgTY}hӮPN n4XZ\f߾ uo3,N(sD3ZҩR01~?LxL n`"}KR{'f` Dvc?UG-sYe tŖl&? ǎ359gdKMU#Uff*{mFTy*E'n}N'du}fE&a0ǍWKobZ0Fıucpl|# <3xP7x9qy f5DrB>tvMU Ϫ߫;w'rrxgPUf*ˈU/*F_\cu cILo*!J\?ӿDej|0֫>yrvy9{D$;1oԱ۾[ou:Tcd{&yV |wǘN␶V0TgfrmC[q v@czN 885՗kqͥD%VKśN ;ۨ{&yKFG<=<ɣOdei?0W& ;ڬ_~=h*v ٨7X\XK#:n26X\& gýiUɥS ?;QЖݷvTW'W|پ:/R~mߎa@QG'yɓTur4o&.j:_^^pOK_ްB1WYXA廿7~#t2N!R!@h*8lt:`d|6a312Hed8>dll7'"͆Z'<;c,,u;E0҇{AH?;_|;Pޒ,٪jUWgf*vbE299N}XTayKo3F}j(e 4qlb˾AV5~gw(c#lu&kgff`FFF{ طs]Ai!Ql/k/+.f>nu$I;\r8yx Y2u}i>G V-Rl:ȽCEI ԁ?ɓƆ}eзM߯&k&kr ?`_%l7C{}ZUwVl&P_?+(Iֳ<5ٗw?ߔw/~ fC6CEk-t@:MmV3<\}?cOPg./ kvIӤ''K " "ҿ]16/zrZȲQo^#k/៼6~軾x\}"jFMn8cG,dZZ ҫyMWrّט_\%b|l *$"FD"rX,+r˹\a^Gڣ* x^?۷#\MVF|:TYG':a]y!!"Znaҩu/E]n|=]s>?|rr*"rZuczB3Or9@Uuֲ0900߽/=q~Pݲkmvv;wb'nOR;EDdhgMvYP[*NzM>抣y q8v\j;c7`5)KUe/E1O>[w=}>zN.&NaDu׃TV(lYD<!/Z&r|ȘOx>cm"#b{%TN'Չ[DQȁQ^Kx?f\`mJv''ñk CV5cc˹꣌ Pי_\l$za@ޒJחJZ:]k4=,c~f؈E,s9 vyrYr "uV2/>Beab!wM"2_n|]V6|e)Kof¬7[9[,Z3$#v>򋞀auơ}\u {mg]EDDZsv@\nHx7Dm"YV;j ywz7ͷa˫t"p8[4:VoYY7\+n+$JJu0IW'E͞g^Q*|\sc׷luX]/'fMprf8g]ovhH=KI  Èl6B9'_) @DxYWӐ+5NDͦ1\.0Zuˏh#V6]\*ՍϟMON_!.ϓD伟blU6Ff+$! _ǻ55pCX s6 p8p6(YX6( \uAn2nROnwXZYcѢ݉v={;^&EpkW47k^xNSSc1Vo/W䵷̏{GIvO\9OIь('+ٖ-rmle,#^0p1 .1'9)HrMܕԉQ-ɞitWOYkhꜳݿ N* e~UK-Vp|tg^OAr9o* rEH2fZd^4Pܶd2}>xlI[Id껕Jel_@y\ !@q3bw)RHϧ\Q C@o'7^u|k|fڲ)&e ؎$S""""""R4 0*e]\xzp 7!S,U*I3Kj 5tH$j:~>Rʯ: X8wr÷!'hDʓT:#FoxcY;tdӬᑧ_at@*gnEJu_VDbmH2I)?-sj#\bŭ_L_WL`Y:1ˌ&!u&.dҙx<1\V K>Z+%R ?.n{nƦTju dM*2Ւla.%si2D /poҜ'ϯ w 8>:e,S]Jqo\~-˧ *c:7]NJڬMAт{RuI3"h@\.ye5@lXTL.kLu >tUͭ]̊nDeWT:"""""TSp\DbY76ӕM1>Q q )O~:Mt&O8[~/10{OMt2t]\Q>x ,QtMU6 lj ==xб1 L CuJ#ERRZkڼ٣j\ys {Qr2]!DAl.A2f;o{23" ؉P!{qi.BPqՔ6=X"kzuLjT<;_ݙe~/ !.-J|)b1Kwn>x#f.ߵ\:I(T:JE}#"""""Tr6aԮH)hp\}6֭G ã8n@2CӴEWJq+akmyz{{wjBۺFfS(ԇn}7_T8h!Dt2B9C2(ܗnGϲ0zY>Mv->>/eОMS/Q(W[Q&΅^YNB,9K(|<bBDIƭ9 MdSI$1$B<{3xC-q,۸={kh˥[͙LRrt/Ͷuwww x"ylD 7^;Ѕj;*5o|q A#"""""Ζ|#>v! qd!z|]WR԰M~Rrd<+J[yoP(R={ylZUCƿ/0ɑ<,D|j῞ɾ?XnQDp= 䂍x^@o;lDAc12s7PAoWl&DDqlЖPmP5ͣ$RrN&h$jtwX|"LEYHh~^w?"ZLM*27_/~V uy>ZΌ(¹}u uq۸lf:L<:BT%L6=_)%d27d2ɱRlwggMh#ILq-W;jױAadSg )Ȧ?:;I'Xi-xҝ[Ȥuwie4axf1|TIfS !=wz;6fֵT}NwhR6M!3|s__Q<>R.z(0U!ɸi-~4p=+b< PZe˿^׍rYDL䧅BE0>2'/zy?Z~'-W_H.vjz3*HXq]h&lfl;+{<4dL)XH3 !X L&uY2~R / { !qnj'\/8˓ɄE*[Ѓd"Αqs_!Ȥr7+ECGHɡa!<ߟq^sm$?Mͮ7 Zn/mJ&eܳekڼFz;3䓥R33RmBk1l.#cy[-_p%0 Jզx~/ለ/W 1`5p[*f|a,$u&Lk3r.V( wVP=>叿MT28/h#'^=NG[uR )ktgxz4FYb{n|aa5 cvy)ňJBT2:C'MkC.$ sL-C.~/׏ۋoLDܢT~W_'ujN*4t|&t+Uzb|ky; (c)A22Y Bo\{o W-P2:Y|˗e$#"""""mZݥx|Ǹ9z|\db fimBACCO81^l_%dž'ذz_w[9Bb:i.x~BcASv45Wh\c}4!ضn1 leY>CXh@lQjd<֌(+İKAV'ͤ՜:Y)b1P)~ctmhy*h˥(*|uf1Tm:ryDl:ɇo?XҖIt]^GGqπw/V54'e@k:we\}622chWR^DMjں;6k'COsbdL:I2an+Ѐ.ohZ_|HCJ;B[jW>^;rL(5SE&T+[T&fa"tg0 _<4]1Mwg|2/%)CBmK}j#.D|Z!g.v5MR\i+( fTk{^= b0* Ύ, #$Ar㺭wn ~l[9NKz7:$?ǭBζP,|?`Pfj[O׿svŸI#""""""? L'F'Yb7|#=ft,OjaS"FYRT*k{zzg2`BuBYc"_²L~bݪAe u`+TJNw I%NQd3شvx:*56VvSwH,嘭h# fЂr&%줋~@RkH yԩTꌌLM˸ B ** v4_]ظm7^ʎk(kaؒT!D~P8GPTsZo~}9.qsj\EDDDDDDpM8tle}~O@Oժ6H\i^wp:/bhW[vϤT>vT7-Lsac+J)b NXеYg^#džC-/\}S VŲiE㬧BR* 5ZxkRɥAnhe@h[0>Yx˄4!e!b._P;d"_bqGSeKjzd8TRέ˸d)FƧ/rV?.*26Y+/~] ubow^s!Re"5#e0(Wm{uLCUUzy=9 8ӪAhd )żSRCԔT/Y?gWL9/ RP*HM MSi0׉i~8KQ36Ug ) Pebi3Ns_dZs]!Nٶ~%wr9oQwbkcKQ;ضK +O.bx2Bu~%LXu Kf*ظf;o.AOW8l""""""""LOȗn/?{z~Q \3y^4rt*A͞oj7 È0MSJT;Pa;P ! e,CòLI x̤)$~`ک񼠙}*,BQ븾G& 5N~X7!JbQ66`U/>~52o_Gn+/J2nR(U)U토̻"""""""ήA5 $1ˠ#O}nr_c|8xdX̤#ls.kknw2]>}-eS>17C*l\ >/zT<6sM#/ɮmkhPl?P)tC#1MӢnB| VoIWh^6 Eg{x#%[er)ȑL<MosOٍz7 1 dܢTXAoW#eY-`t"OVGu\?吞~HPZ-,˜O ٍ9%aP(:̗wxS")BJ&'KJ%V#zw]{mZ#J͸UFDDDDDDD,0i{~EOG-|.퇸'9rdL.EG[YʢYj:J'kqXP,}T"fwГ/Rw\,Pq [e؎{N`Ӽ{RLMwR*[ҭ])m^XiH巤U $Mtg1  fSq:۳::ʋad"O&gA6dd"DlV-썫Xz5B}t{G! C#YQ'R@}ѐ%4bެaі!M'fÿ??}{遗K'vnvm[)캃iakeSN:cq ,DrŞբ^42EwSN+YqjȽiVR ?ef헾ˉIҩR]5G&qk/?\u̗(tEq;1d͊~~>Ȼy&' uaw7YHNصm:b7p<ӑ>M꽏rTBꎋpMte*s{O azͨ|ľa,kgUЧ/bJX-/ڟ>|щLl:E&-翆 1s$8|GgKQRcd<]w@A2O2/NfyZaH*#fdljuShS\ 1`oWmr#aH{.i!01g~C7k.5qE#""""""-ux왽N_wnj1b b,Hu?unFræ^/ LR,&Y~q=ڲ)v)p.#!`;(EE7?*B0Bb IDAT:wS*(VINpÐ|JpU>I&_%CR >"o1<6IG[vƵ{j)%MPfy]7sE[4ͻG$#""""""~lDsp\7c:zו\{6Бa:IE2O+|7nH֬裧 MJ*vOI4SR,ӘM_z>-ӬhR ڲ), _>L-F XΧfy#yF9""""""Ǚ $1}DyKURxZk4Xjp/3ii0d/-0$UpqY1'1x̤\wLĘ,'yUJBl"&qB+^6۸W 4؎zb=5)H'㘖kqp X6MjSwz0T$1\=lb9®Vl[CTj.PJ)4M=C\O+۷&ӖI5!⑱<7zTk6!FDDDDDDD\ףTnwmJF' n3ݴLCF$_q]McCA*'䝣N& _>=lz|.nj'R0<7L* qzKk3'|urVDb2+@:!$1.زq=o «s8aM%f$1<=?ϿWǰmwg1ٗ0>U$3g}rf`/7Ti]$^)ite{_AZs[-W路}s8R }ERdBJc兽nϲ~@#MRJl㑧_AF3,V$Tgy!X6I*PjXK) 9xt]gM|L2mpV3Z12Y~ 4 iC q)۴?3DZFyMD3 Twm1t2Y(i-pI#F.{lΦ5hϥ|z!?&%Sw #@tr$_|gHZq0Tl w1U(aZϴ=2tǟC,fE)qjڒ=AX4NsRrb|?u}_uJk36Q}GP(4ͩG\#CЖMJ{8>":Rv2MPAqh4 ٳF{߮Ic8#J5Nr$ǻQJ1I' !RCZ#n#v32%GDDDDDDDRJcP-;k,Tx ju]躶L2(xn//;@wzRzZ(;]wHL@MRLwuq|d?ۯR(UHBC^ź ЄhI,Jƹx-sI@TxIJeY0˄`\SlZ-YAO2صmGG D]?sÄyԖM[82Ce]d lalFֳ8c\,3KLT2GGx񃀍h˥q=_غ^)%~RꮇR(ML]- S'Ż{t"i0U jͦ5Cye& B A.0t={et2͔0T$1Bx}*|)՚ʡ^[NR;{!aٖбQoƒ@Ow;TBYIu<?[vo3xR6OhRBDm_;7c:`"_Fl!Nmug^aa:Y>؃@PwB RZݥV;.u<q|J1׏_&M652[dULfRmlF$U+SX`|TU?.G#|Ct:\ pmXڶ܂~ZNkVsֵl^7J0:QP.O=ۍi:K2I?<ϿơccI{H&c~,C;& AH"n՞e^N, g`*_bXbwAIJhF#""""""""NF@B^w,lʋe *Zc:a,Xpeqdc<^4M~ tpA}Esxq.*2?C:C7YI.~kH햂Iin[Z=Q[*uJd2 g+D$OA:i/hlX5Ȫeo4bi,fǦlZ Cי̗,] C43u$ y1|az;D$q|dAƄm=][ҞIQӺ_AN%iϥ'U& %z;f8Z:05 Lb/~ 9:_}4hKaKԦOF'5{nǯDR/2񊈈X=mVVw6~GwJ'V& AT2xǞ}rƦP9MۅF)hϦ8: 1 7$e+SǎM<v^t tj⦹HmY>M,blOTk EW[6d5g35G')Xٌ3 T"<+aH*F' )FJFH*.ܺx]oA(aH-b|A~+tg*UDNVt*f~-!~C$c?h6t\l2˖͇*- k<92V*U^^sasY3lV2s=4IvȦl[$~hjZ4~@vÐl&ٽc#]m*6GNLPԈ, RA2fyuQ5{F$ڥaHbsކ,j,oF}bY7S/^=&|Q4 8~| kqn*:+"""""""gquڲI.`;al˯zS 2O%1x5qV`F#Sʖ_N;u2I<(#!`PΛ/ 616U@r^HݲM~ӿO twf̙=}kB;r<|1t}NTV*H, ٬(*e^.X3um5S$E.T4u%,cuQ:>FV'Ϡj6lni^)=]9[Ivf0DJ3%ٳζ,1hkK&&x _[.gt@jrDDDDDDDDD,~6 U!V/KўWqV"e~8o5tx̤\yٽLJl۰ Ƕp$1_=6]boN&}?@%]rdARU9{噗y* j!oClz UYnRYd '?LSge`*5qw\NW aέkHb]"C}ݼz(/QڲҖB49G'|_{RcSE<ϟ^DDDDDDDDD PՉ[ld,_fKd2 T#;2fkX>ˆUض-IV͖Ht|!281mg)ȗ*|k9n7,, [~srLWVZZ_t 5sm!`:j 4ٱy5?{&YӦZieْnlSM)I(~/ !Вj0%;``\qMV:)gfrv|kI3gN}[T \X*l4&r5c3X<ӓ%WeS(9mZVt-1tn} N̐G4 xOݛxK.\/V%D"H$'hvZI`Uo\x&T?:,ñQ1anw[R/>KT3x-u~,A*L8e SV$˾PЛ;ch$ܲzS1v=U?>|rrp̟ b9\R)WjqzR0Z,mfq0[suMSsގ}^F3LL NpZm 8u;;?៿v-&*zVA8翹܅ףiZmR4"1R,pt!Ĺ2BX&eݪy1z‹/S蜽}#gl]#U>OG?(4Mbglu\w|kʤϰ4bBf&+^L>7ғ25ñDH$D"YFw L\aUO\xh?:@f.OE,Q1{<ĞclY]TZ㥞l( P ߿ayWYUr٧\DTqSUMU51 ׃5^ k^GGS5 ]# gxPTMUQ]4MSQU ۶m!P(W53=)gYˡ_P8B񾆡kefso$Q=AˏE堝NeP?LFllgAz"BY"H$drB]x3vpʆAJ3<:khdqy04-nAl߼D4H|²x8}{s?sKhm9> vv}Lerds%*m8*QU-yy |^y1t E-7k[6MӢRS5՚Kb|BTe._b#ށeۜ)ǂe$a"aj6O([r?_/R,H9 IDATBq 4!0m\-Ih/TMŸEw8l՛c`*2B* Z9.8s ;ضy#i̇I$D"HVPk4(*l2s"/>AO*Ƒ4H,H$Ds+ޛF\rљvŹ0S(]]᠏ǹ}blG 7[ݯ__r˝;Y՛²}Vx[aW<mKa1<:EF(4c|'=>ET:c󵱱8VO C1!ijON˶8ejz:<FIXf7Ʌg<|c,*ݓljƛ^s 댌̯I$D"HNѬ(UM;05c#Xk*JGL9*D#At.4Ukz< lFQ|7߼zR(-ȫ˶Leram^CZН2<:WJ*em/I)QUEBŜ ~9}ckx \j<-KoxY CZNrHfffŁ[ZAzj]iBY"H$ͦI6WbhU7x<:;wbj04l 7˜i pjN*a!ӻUڶ3N\?5s^C-i:=]`Ye0O8\.px;8 !;ׯ*qHOβmxb[Tk Nݸ[2>54O`VZS}>׾\9H$D"HG +ՐϾ`׮ CQ>k6UU ٸ˗glrdI_/'*:/,6 ?nfٶm0b˿ F'2ģE qBBxrwꉸQ~`XQī>1d&?c ecZ6+E)B4)+ 8wdzY gI|}o5/,|]@ eD"H$)@QJj[x٧RT5AlYm;t˞c6nk'Ί纮Iü5/k4gYQ WFTE[{B2'r(J3p"`XDJued˺U uQ7V 7/\p=Ҵ,|:$ .bzG˲Vyq0gz6e83rVB8C4iOqg=+ [jX8Gږec-uvw`\w"ļAp˟ß9K͠ !<0߳Cw,ZPv2ܸ\>v`V! {&<3ɭ`˲o^{eVOatlMWVsx| i D"H$1)Lcbz\c/CwKyc;㐈 <~K`6+86jvwtVZoRT`U>td}誊1U6]B\o' -Rͯzj&M" 7~¯nX81./FW ,jPD"H$EUa*'W> kfϾaz{Z}OcuZ3+de~֭7% h6g^ ; `[QѶcQ%tMA,Z~W,n|B4W(ۭ̾.F&2t'"۲kqy;0Y|O!q{;[&_ιob^2spcYD4?_x'aEpOH$g[NFY1Q"H$Dbjy;6sŧ'.>}$QBzhK0*z>mضy$`iP7,Gqy}h4L1sYyę MDUs~?>>Y/X(3gly fE"tVY,0tzn?vH( )ܶ$39'<%D"H$c;!-bB"*ԛ&Aoǣc\q7M.8=S75\Q47\#ec0Om 'V˪?SEW:|T*byiC!!! !}i=ƈm#R=O5Ny7v_!:sieMqֵ|#I<bf.'D"H$Dr|1[YA8< ts2- Xjlud>^DowjNV4m-no7ElW'<% B?>RԈEBG}{7O|e1ߧX,DB~'Ҝ~ZeYF8nD_O{v3_ Zh81,`tlFw2F&[pu\"H$DBNAiR9um9̡4_gNY͟mƦ;R=bqqgX3?v֮abfH,H$D"yjC+VEgѴm~4-Ku]Vsݻ)V*m#~j/E8躊e)Ye×7v?}E;`;S>[(bz}w8c/ka֯gR Ġen/3nk=(uL(NdsS2>9;D"H$Ӂ*pɅgd %/K2;k`wݻLn Qqͦ;۶i|^WQ"A=TNבlαwJ8ޖX\.P^NkKU9o J_mp_xXܹvdx4g?6޶d{e%D"H$+Y0+Ms p%iJǒnVpHqiTkW={X* :G_#u$rիrl{Bx8z/z!_p9P7OHl6~H$o\+"!?ow{7g i9D"H$G0 sXu\pe Tfq ]s!پyT2q,]2Kѷ,d,č?_DtUe鉿`;`/g `B:! ]#x vlZk`Z'8F2ֻ )PHFË5ɡ)Ʀ24%sH$D"H#m&/~/L?!bNDwx{LeMb΢WTUa.WZw^ƻL(+hJx˲(Vjj *:zjiKǡRu)B\l>v Aσ ]c#Pah(BPMK$D"`c'IJdft|ʆսϸNwOHiX\G>=3`wGNUU)xǟe2틥C RJNT!W,S*(+T JzjNaRձ,cGCy >C'~BpP-"ATUqK[g\"H$̎m$c^u|?lӝl;^`6i6,zdqdMT"L$Wmģa2%+ҝbUvyWqkjUe ȋMfؾy-?#0>=å6`MU!.Qu'&ӳ\߾Ӳɢi'Pmv/`YR|\\\LXf6WP,SԨTpG% Gt%t%"D +@UH$Dz qZi8μYUԲl,:P]B,Z ak}?We8XM"" O|jfPѱfUUm 5=LA\-FTz(B,zIchMߢ9[}) >SBiLgr<; !294Eᩞ)՞_k;k,KQiN PD%N QlZzIf.|9ffd%f%/'Q0=}qQV& *h"{%D"yk~]Ӵ(Wkeʕ:RzI_7ܶziZ &'+^mx4M˲i4ݟc#3cz6Gi"9>z$X՛bUoh8khkr'I$DrX+M4-l&_͗Jllb\HXXRo,NMUzH8@8'GCZbHMUPUu~aZ7-`7{-p>RCVO14,z]ZGBXu\B߲m"A}{w'ժNXfq;c9`(Lqn'ܱۂ9_P,Uy+Û/}>B\'۶CoW󏟹4I,=QwquqbfFiR֙aj&Ǒ4lB"OXI~u/= c샖H$ha@i0-LӤZk-Βd e$zkx4DO*F4 1tUU:eY62Лbl|뷹wݓ1:ì8Lgr ,P)mל, ,7~2/iO| :VEjYߺR {>)xoGv(%o{ xK.b.WXx\|;N (dytM |;94:m-,ev7 &3YFg8f|zщ̢31tRlXǚn֮x=AD"9h;M sO͑ej6,M'ߝ;%G4<]SzGKmF( }]qJ 8~c%Baz6`|kX7|biq"۪ċ1ͦ`x>Ga :tttЬJ$>s:&B._4yk/]\DR]2/vxu|*ng}q@,BP,W)W|?ų9v!uH([MVR/Vatb)S+5yXF ~u/<%_4H$Ķmjr,cF'f0=;i :H.0})0hh~b\_x'WR)9S%mKw^ƺU=N̠,pq,khDA|>E(-[Qժe^З{M:l-4>>o%+Ʋb!ԯ !vWAPV׼K_t|J^qP5TBim?8* rmD"1$Gӌȝ H# 3Ew2$6!_#!/`c%0q)=]1Sshs퀡xt4MQPZeګR82[ e"AGʎLC팱wWg>-xOGUR((Uj/RNZ`6-8v'P`lr ?ܓW}+K8.1ɱ(G&9xdf@7[ y*{$c'+H$IV: IDATeƧ? $˛ʪ)VDB϶1_a uN0 \Mk{_G,bbjc]]2WQpB~/pj~s$aDǤﳂ{WX&~ϕ ^,:UUr\ȫť4m," +gdt2C<±;!fs3c:IgsE2syG8pd}~ɱ.d˺zb'ED"tff MoxGƙ+4kY3Mwb~ATJ"hIedoRa?әܒLqsl~In+WPЇ2e񓢤tF5M|ٝ|]UU՛Le\rᙼ/k%Gs%ͦE*vl:-XT&y;6q)^Cg&_`˲I(VjN_~'1S==/B5|]Egz3+aY1gl4zb|Ώn  weXQJ J[xɳpzQMr2SN8㔤kx ٶi k]gmC䎑H$ɢrzjC;fZCɣZͺ^ tӓѕ {S\w='VoНF6-:.i2sy "1Af6PU|p=G]mщaG'M&mEQQ"YVt7[֒/GΣ8Mq矿v ],`Vh233_U /etb˲緩R3D&_,˫)'cAn\ơ~2,H$cT1fqve8Z]ɓ0*޴v|*zS :$zíN}=ox 0/N֋lW]MƸ'7p8Cf,#'qrR4 nCR3Yo~Ĵ,*m?L8׽Ρ;ɑ4̷d$E{(2mS\g}|i~Ց\Q'0r#w'p5l۲MCD"HcSNrH:Y=Ъ.y+UN p;%* jl^t!oSo4ˋ01`7]c_F$t*ެщt:dVo$f%:/& -X-,D,GpwݷT E,n>pdds>nTMqW_Lk{qhtR߇Pڶi'm=)8B4Mdžޙ_8yvTVغq5m^)VD"X(ǦN,pl0k[cP; ̚/ȗ*՗?|B\=f˲JD)U|Wt%#(3׎\Q,.X^ Kް$YU)U̹nwo|8sZj&bӴQU˶ $c!r/g% -ڡN261MoW+>n@c1O ЇL4zXzn5sy(2o~Dߙh-i%((@QTt]C܇h6/.Wl^7qZsK$IaQJS^*C\\ QX`n5_˞ws"ZId[M(#s~5} DFJ-Z(m?>>d<NY.@BxqEQ,LP˟w/ģ!r2RMSXͯnUpطOTg(ϛ^Nshdeffd۴3ihԩ4n#쪪x<z|>|>>ϋ`PӴhTU4- U*ejzFTZRԨV+j5j*zzi6i6MMkf^>b?y 6mqʺyJD"\s sOqC<{XOfLBT#.ٚ29E _ͳt&Gi>ja;纛WMӈ;3/q8tO#H, |CQ˗D0 6+Q8}:.{39N_lkL.D/VUj}#zəo^VQi4îD"DQ"0XxKT~XvZ|>|\w;Mc[[qM$ayǖH$DNye&fzͲllƲGTu,nU:ThWk>UO y ۷cb&O8Зspd{Lf⮡Wgf*56Vb$K˅\ z\Po^l ;銡*%PlcCԟna n6j5CU}Ab1W& z{{"ꢻD"I0   UU_{xieY7W\n;۶m;O8Wݳ(ꂛ2/} pGUEhl6[*rJJ&ȑäiFFFbll)"бqeMNUp[8{F-H$˜\v`xljٷ=8"^o(T0 Ղ۪EqP1 vKX\VjeYj5Fkj4Mlۚͦ%im먪:^_ <1361`_~Yݟb*mD4eY|?;v7(rfiZ|N_Bj5|LVt'ܻ8z:U"hS2ƶml6(]ؾ*TgժJǓxޅ^y!Њ5/m>Ng>p4 0z%/~,:BRH.'q!vpKP1== C>;olvlNȻD",#2 wܷ4Fsي&jJQ EE#3l?eO |dsdñmK,oR~)mQmj||'STǣ}N岥0M ֑xSBl6(+ l 0dzYv-CCkZ¸p8L0|DIueG?]/㮉]MKtC|8J|>O>cvvs.9rRexD0 cىy3:k{x[4Uq%&/q]}Nd/Ȗ0Z @P(H< "HGOOTdpmv=Tm(*Z|ߞXn ve}CFFNheuSSSLMM1>fjji&&&d2-1}t ~U@}gxw]GӘ͛/5U+o5hF<X8州R,?`zO򦥾ж/FB8|泲2 Lv30իY~=o`hh ]]݄BVICю߱ZeMQBX1J/Q+o3X(m-+9###}ڵS(7/NkvU޶QFDrQ,W]r.ғ4fbHXҪz뢷UVzjW׷T*I"VC-W==78(k>vZڋ驁a/1߲D3ԵZJJRZ1>>Fv[P(ʼkB4b?6E07M&gr%W=h8D^'-,N!r$=?~;Lgv'-t);ӴdrrrzI @___BUro,^pqrֺ@*bpp5kֲi&6o̺u%E{i6M=N;k0smlʭriyw߽><<+ bhvB h8@7/{lZ/OHD"y/ Mwdb:KX1LѠPSZCEcA֬bݺ_$ ~oiY-XEgi'h.@17j/wr߶yWHWfػw81ff*z @`AR™xYVoRY3O]Ъn3yMX4Ha/^;3ЗNS΃ccW+G0 8vsMӢX,[jIzZl©ne- %Laf- ?4| teJk\7m$^]N4V9Ϟ=oooc]ry|>DNP9 s!^qL"H&ns'ƧgN<cB@>_l65Clذ7e֭[GWW;вGv c/Umef};>1 c>vy+)]\.)Jٳr&42 1 }^glloooYw<%J"r)BsOuR>H$ɉνs$=MyAՉj5r7HX֍an=m۶~:8λC9Q-Kq@;fYpB( Bk-{aVȐܳg7;wdΝ޽C}D"Rtcrմx^ț_ػ8kwvwVe%2w\h4Rȥ%^n@.!5q07V٢N!! d/?Hzgw朷[ O;֦3i(I^1v8455aҤ&݈ޖ\s߾r|j^m'B"22JݩTmmmؽ{7oߎ;wM0vl6qV#JMd0h5<Μs |\-ce,KjoNO3JҸ4<沁}N yG7bS0m4rd >&loŅ;/3\d^ok׾w}T<9vx9 8e<{6v oߎ>{FdNggkL H20u[Q߶y@%_nwZ\\ [Aݍl6Gcc#OSO=&MFCCxG2D&3;}e߇ϭ3QBss3^|%رcd0XeeeK|Cu,y'M#"md^X0Xߧr 08q1c:f̘I?ҜB6bOcjKz=+'yd8r0n}￿>>r,\.L&窋7rI7ym[ %xJ˫jc?QH$X,ghl3fSOŔ)0d 2ƐfTS g -bLN3غu+{Y鴨N/kҬ;ryBTt!kvKoa>+zjfB!$it<ƎSO9sfcҤSP[[ AǑuC31۫ M&VSuB >c޻xw' Ɂ1ke\;Hq 'UM Ƙ0\]]A!CaƌX`!fΜCB%D"bs;:F#%!Ir|>}Y<3`flI3c v NS'hB?[aKT*`0 I0t`̙3 ,̙P__ T \wb# FfcǹP>ÛooaǓ8z~s>N眲PC}ٖ]H`1uT,\ǘ1ciUNKNƔ=Ӗcx?୷6#Lnnmƍ.XJZe&Q~ZNJ&Ga'\aciXt̝;G71p8tjr_I< fsoCKi駟`ظq#>$)ZTTT@fI~F Jxh4,c&cOIr>C0(J6l(.\%K3rGECg 狍FcZ,f#x饗G`aY?KMv3N-Ӎ"c4^!^߼P&!a3ƙgSj"#B/&&7A&7$a۶m__k;w$ɰZͰZ'_ͷ>,t͌q3Q}=IN&SFu6m*:,Zc "d>y| Fӻr||Krhn>| |zl}75ҥsrZiv2V?~w-a!N!h4bڴ)X|.<#G@>GWWO ӗ& +7AX,t46lX^x6m$Ip]yOU{W9@:%%WWW=1:/b8R4\ ,X{̙JBaB!ȲTLa0Z8w\ؖd0C6?^Zl|.+;2BX"o׿A,N3YHđHt:h3g.**B'StdeV xm6d9X=~MeY|2%˪0f2@ުւ s6;|L2<ϣ#D"Qź3d2l6Cj?{G`bV0Wskyέi IDATKfaiMYLtc!(Jhw?>c֛p d2YTc8 0}4<@ x<& rc z& Fv( 6n܈{֭,KF8(|Ewe;1V,P^DDQ F_+VओV%fv\uy#%֬y=^LɔgWҤqqq;BNhtm߃^ތL6z,ⱶN />N>y"<^/2Lor&ȅxFe<;o6I',׋g}?Gl!f#F'f2  Q1DZ'2\oIwex<c窕$@6E2D>/b̘1˱rJzʚ$ fsOo:BRk<O޽f :7)pn!_wTyAEd2D1UX|LԄ|>'3}.b]طo}+8|7i.lIz? ݡdY Yq cQL>GHwey<c* 9֯-H bb0g<@[[tTd ͦAsb͚5سg**-數+ЀntwwCєO^f.>ށ``P;BH/lO<QGt ~_?CEkkd,(Ixm8s1d`!߿t<*--fe--&ΰ3J%Pծf1VSL6EGG'$Ig _~% ZZ"OWKᥢhp8z_*4Jɓ'c֬  t:]Ɋ;hvbǍ n!5?þ҅݌y$ p8kq=`޼e/3nRKh"xjbƌ6m*8d22cl afnPOy<A{?c\I yiZdYH/w}-[|>V9ն\%yȲ ۍ *E)SbIǟ"͖t6Oa6VW@Qզw?C8V׌1hZR)|FZu.̜9`~ ڎgFcod2&<_v,k$Jwj0x^3=1yN Hc nE`0}vttth4l[v*Şp쨫q Ս7!͗&hhq `PSL]w݉UVl6TJB'A "z=*++r`2(!}q3f ̙˅,b1,m\,@;Bx}"0mlV8r9{j6bhC5 >!Dq^ٌW7n+¶d2  뮻q뭷鬀E"P5)^q bKxwÆ üyP;v cX,%ݖƛ͖wDOj8^5=ۮ9ttt!aɒ+Vl6@ AT-%"rд T5553gF#6o~ h  |œ &B䋛;8p <+V L"@Ų$ʅxyTUUQa͸=KvRx~fhZgmG 6RD*'_܄[?+M@%x~y^}n7^hǩjl6TWWS ?;y-?٬j_\M.̾RUHBzM8ӧOî]o>Zzŷ3{a0dBuT|a#pWɞ\~TV;|7d2"˕m59~n52l6̜9 'Nđ#w~HI*U=.VlX,LQWW1W1+ՍH$: =.\H$`ߡsf_!kРA;w.~m [GpWQ_[IO =?cyD]Q>ccBC[N> na58-jra۵jEmm-&Y,̘1. 8 s6ǞmP*O&mwIedq-;B[[ۮ3B0af̘f޽f(/ajI,`<79c̮ N7=VXp8P(e)vQUUEɄ /I&aԨQ__C(á\1jH*VxBȗ&O?ܥxAB^W$!@Nes U&  @l޼L6$mf0fDbeOd2baɒ%Xf L&{_@j(lStnʐ>餓0uTk:t*0'Y486w=׷O!ʮqYZ[Q]].bB!D"պvxBfǬY0x :twaYUW|帄J9s%cܝ1czˆDoFuu5ۑU=,"/nSj D{]]=<,lܸ5[aV6x FE3=!Xv<{şm/Yf੧ pB,mA(pݨ $u c߾صk7ZFT t' ,׮1~lދUV!LKYBZ8*zAH\.wyشi#?X32<C n_֗$QręgzG)d<3YgNlٲd,Ea@3;Jr?Q[[Ha1Ɔ*e>TWWGʕ+Յh4,,0LlmJbۛo>v@:#x(X$d۹(~5dsyEq,C袕xǡZP|FBd6q駃5ظq#rɹ16j5 ,UM8̓1J'ʢ(cذ!x'p"#NZxB$C Q5a;wj(ɲ}pW1ŏ+r:F8UW]=DQe9,l6! j8bÆF%b 6MXx%}Tmmm#i0))(;p`ʔ8z(AP5QE-Tuu5<RF+WoŎ;a)Ie|0ƌhNN ȳk*(R)D"1\{xH$٩`Xo\YYZM&D8CSSF͛7#٬xs0SVxJ$~Je1R<̞}*~9444YB^=+fo=!}cXMw@>̩ta9&X: onw(QNছnw߃P(P(TDxF/7tP̙3.b14Jk9cVx*Dri~?Xpy9TUq!)yt:Օ`>!_g4t2lڴ{PȲQC54$I>_آxJq7;B @4-K[&A<)!Ljjjdl?T#l03djr@͛gyVU=Q6 ^O+KE 9C-~]v s}>sO4"na~ߠXLZ+U6 x2s:Xt>ڵ&nxWPWAKK8)XZ8⥁&s5zJD9I#k]]]D"eKf33!55xᅗ0<r%8])˵?Яgr}}Ƹ{M}.\zl+ʹ\T~ҍYf_ámh:i,&# 6!'P<N(wvo^zD,g r!Q;Q'|9ш+k&Q)cljH,4016KDYDx̜9 >gTTT&ʅfC]]m$رcka*V* OaBhpސL6v(גTw{r9tvvr.gh⟐I7`ٲeضmvU-ـΝ`6Mc&YI6X,Δd&q+Pz}=z~i >$ǿXN'<}k &LcX~NJ%;ń!p9!с#^ 4DQԩS? Nhmu)I,MF,_ ߳%j5C(0WfӾ,\__1cLM~444Oz '|2UkUx^{<zr8'OF(oCAAyknaSBP >*bbY#OcȐ!hiiQWgr%ʄS~:~{3;Py$czTr]]Hc5pǜ9spa0T]Q.顭JXx^3gbOa6ZE^:Td'&E O;U,8mmxɓj%ʅxjRl6Dr2 5k֯_#,tZrbMMH?xͭ% NX6<8묳 ATeOf3<OYBp8pꩧbƍ8rl6ғoZOAJx^wRj#HҸ;p5נ$žfa4xjI 9 X~|>;*2`+M @MH}QZ`_v\}|d2'r⩮FSذa#~?l6z5Z,ַx"8)~ՅD".c \Zuuu$7h \N_TE_@wNC 飲< EJyI|;O~Sb1DQprt:< #Ċ]cĈxaZ0ly5H)YԸ9N(clRr:FggVw?j[c`d27q 6l`P$ata0bp- 2!}_؂-*i4d29眍{1ttt%Qh4lM hԨpK/BD&=G2X,ߊ>&NJ\z*|̘1>8z=:::T|-"DQDmm-l6jB@<&L?hVLG|8e,4GH_\Pcܸfx|}Q 2^Wׅ n#d2͘8q"֯_G[pn^َ}ڔh #2~苈Ɠl |>?cڴhmmU8-/ !wi!wޅVh4*1zT*d+8S+:e:@f3~a̙3eY|.@UUX*+ݨƍD`YyttG`0|m&/x巰}!E<EwKNUR|mQUUE- c5Tܹ~LfX-qxeJciJ%ʡPDol,kjj!#GD:>v~YA_&HLHOIb8p^{-~!#vpNB&шɓ'c-طNbf5lXb'%_Ƹ)q-Vd2`0 ?ϑHFU85550)%l7nvޅ> /z6!I`ƤFdB$}h; 9 tbp}d2Z <4 3 `>|8|st: B"6`0L&Ô,.ˣ3ƬJ\dYd2q555 #236G[WaUP_SILH<;pe4 ǃ|&XG sʒ$vpM&d:t(x@El6Ef`hX)Jn\(cly^uu<q,~dfYTTT)BFmz6l a4^]d0f45Bmiv<[EbP(IqąD{{{o&5|>M !c '4|6lF)Ykj,vcv%iՍL&{˗/G Ё|>9eٌj:C֊[?N+:a%RD |U:C $R)a\v7ӟކd2p8zL2!s8ĉ~|ɧ٬;{0d2?H$,6k4WC{{`$Gq5-܂D"x_ӦM`Z٩Z?e$ (v+B)ӉM6!I`(~;v&G$SRbxa#t8l6+ט={6ZZZ ˲EQx7kPUƋ/L&ݦT\6 nBѣG(lyFZmձ#$\N+yh )i4H&ӈDj F*RMłjg!(ȑ# ֭0̊_0h4=L&8<{BL&իWcѢmۤև%CrR#oz346Bgg'dY.z%'a{!R"wGi%:7t#DQT2sNy'S:V²e <7cU<}et\+w8|]]8%կc@0TZ($ UUUZ !0LxE:]ћn&53XZx;pq)SpQ)V*++)!|%f57 ]jX?e1-1l0G?Dgg3,C8?H)ʥ~gupoqb>;0 .! {eÇhnqR4 ,YrFQ25eY!", N'`BW6mt? C*Ҿ4܇2.5f"l?Oq"ٮd0PUUEm!EyǏk]]0LE_3HAdL;Db <FŅvuuuaʔo ހNc QjQ[[K !k8ƍCGG[/,fZxͲ]jٌ&ʅ^h g}6. $ $IUeQ^o !h#Gu}qfE,I~ Bzx;V2DEE%n&7ZVտGER!dt SNEGGc6d\P(#?v ΄+l6vBÿۍ:u*D06l4پ#fX{=,C$XVg!E;v,V`X܌1h ,^E7h4F#W]u5O'z=\.$(J[oEE Lvl]hp )w>3Tu$IB,Ř1ﮂ,ˈD"W$ ZBMlqŗ.C"D:V&]p"'_YzIJg!es5bԩŔ l$yd|KUeAo^!CM$I0ͰZ& ƍDze[].1mAi` 9N.ǧ{#uRV;jrORj@ ! \qiV8vUՄ>e8ChX]>P(bǾ#EE'ʉD . _ȲJ 3ytM0L)cU[]VruuP}Hx<ӧa#TL: ***Mn0H$_]>pć}4hw}U(: ̚5 ^MyZE\.>cӱp'=MZe|RNWEQnW6!|UǏgɲOv7#YLBN .:D]v,r\YV3>[~x`iQX5(U,Ye cEe,#a8sz[+,IxUeBH&2VZ^X2uض`y`gqN;4~ZZ_BiӦ!H"z<}2Y2N> +DWWg+&_ fBz%03f`ܹE?+S,jC^hpɀp;L&0M7.r9՟|NBHSԆT*so>,\.+cBƘk1L| >{)ꉲ(4 K7xw]HL-m߃n*ED*Tn6F ,ٳ e_pЍ%YMMx"bqEv3555cTl0W"Q.p* +Ϫ[!_{)0̝;'<]4i`ɀ'NR):\|%f? g)!ur f3RT , T̘fc(b8FSS-[`0z :C鏬VZDQ,zwB,% ܎TVŒӱpbtuueUYѪ2!_hj38{^v$ժQ(F$M`IHbpbbĉm cD3 BBu{>syEI;{wvy6ss~_M$#% B!XWpnLR Kxs ACC_N1 0\.]q #X/5j Wp_CQle))c-f~FEeα@ m:6n<rafQT qI,\l6I9ټ1s:L=C$aY8㌳ky\1K%bܰhb[w e.%;9{T,G":aI>C*瞇ie/QT q(r9?`yO;?%&T[1!TUy睋f)?|U&bq71Q>ӝNe嘊eCYM_Rpy!J0 K\e*1^aaʔ)Xv i^ꣅ%&}xm^stw6D"24v=n( ~m \V`9aK|cmrcӰ`1*kF^X =^] BrSo܋t6G KT5n=͙9G&ũ̙-1h F_,AYq WdzVuMxȞ!b\p8pl6oa)cLaX[WWT,Fnaug@鴵s=Y  /,AUğv.n$SZX*غ}aˠiy駟@ `ya#Yrfy fӦ+܈2h4v:ef~BTf1Uv\p:+ chiUV#LN~y;HX&$^ݺ3$SLiG2imRTU館2AUA$9看D"YF_,9NT,3&]L&OǴi,o"%B8}M]4yU{:,M)%8ՇAQUk֬iSd,w_QMlڴ vRcưv%b9MfbR#J! 3@64 vv#AU,Xv-c!ڶLgia"⍷Vf!rSOhJQeE_*AUÜ9sq) `KϵD,+ k7W`ɒﷴf U&F8Sk7A2Qeēi{!I1w\XT [9 ÀAT,K.a\-qGIW)JB1S'kO㱼P>{QB!lذa8\O6R*6QuŠhC`͚Fc4D4gJcظqfhEooTIFU,74Dp֚}}>}*֮]~_4nQ,Xmm3@qˎ=dDUeB>ԉD IDATDp) C4KSJnJa7L&W3s,됖Sfn3jLڊNKF䅝8!:t]Y&T*Ah #av9$?1DXz vxtámE&IvO*֝{Mt:իW"Bul 09^DU BUs(Nu6@ 8dW&Te⮻B21J!܇f3z:aX֧H# }r9y ;ᅬCz{{Ngɤ! 2Nnjjj܂f̘13gB}}l6;#b Xn~{JrJ>siE8装%=;{7`n G.k֬e/u @>G>G2ݻsٳ8tzzzdNHڬ$rv hii̙31}zap8qY7{,^=8^4ˍfKv,\˖-ࠥb1] HT!#J!K/_ ;v>!I6 YV8m===PU~3p"vz,X0nuܹs1}4<Kf=qB6*a!/\,QnᤓV"AUUKm 0v)*G]N144m۶_ğ*{o<?J(PUAӌ "fbE8SlrnXex@502cJ;fl$ŒL>BʆI'Fmm-jt5M$IʈK/?KxP6xB!Ȳ ؈hΚS;j O?,~Y|۷cΜ98 ظq#MkE /њTll{wry21dxsr.byhmmj*6xsjj"@(2le~]N,I[FMr$I|nY\Q(j5QUx뭭xO`Ϟ#xMM4!p(2Bȼ-[b˖;q9bӦ˱pBBa1'`͚5!Lv\|}q<4ϕ&m(C6+V,Рde4`֭o~'x{?lHFp:]GbݲY#1L&-[Ė-o߽ 6+ .F(/j ~OG$1V2ƚO,5a\lT ?UVaEH$`E7lSO=7oNsDmhi{N'&Onaߏ_|Z,^҈1gܹ<{5nl꣐)h5 I@CCV\|>oi v1vQ?~s=]7 Ib#nfnWvL ! v<pk…rvaٱq㹸#˙&kw`L1f3Aqg"H Dr9رsnp}?Á PWqM?v!*xF_}O`ҤIBD1 [z ~;"qsZ!$q( r*~fh%IjJ\q @6L,EQFJTU{g{!G? ݇`ЇZ|cgW3v !D/:0 "/ /?N%,sE!```T)J:þnZTbau@7qoHADa,]|d 眺`%Ӎ>\v٥ vz<bjc.fW/ .wߍD"A_nw3N lfN3Zl6>Xr,S1+S,_X fXLYYM⋛/~eIjE&rt^Wo}ɄaΜVnߵFB4kg0u4̀4͒bT8 ~p7ᥗ^F]] 's^"#ﰪn \_җp-7 $q,]SLF__$\*!h4zi~_ `ppXlňPR7 }7E xф@SS|>/[ &,%aѢE#s":c3'Q# X*l7MsF<0eJ liWz>m;ۋO>sZyhҧvs*S9C:v$+͛7[o? EQ4!*Bs{ }~?}%8,]v D@d`Rl4oGSzfOƒ%K\^s\.A/n68lW5@TMB BC @(=7| 8m*F$,^MM08d1/,pD3sir/,`0 8N*W(]]]W^CD1SpwJT&Xf:aaQwbsȴhkkC}}#up8lHOO7 _ {ESvxK>TUE ſwqwS*cŊ҃1 *9bcS/90o|dYfYʒR*w}]%vmp8hllzc@>"t[nO`f)͛ ni vسg7zz뭰455s^+UUC8ݮ[~fb^/֮] VJ,I,a7 3fb)4Ͳ2c Ae8.4xq5%BjjgsIFpw*jkc7ވѦ FI0gx. SFh21nP9G<G(¼y2xJ&[omW_j 8&hz{{xhST),cɒ}70cSGH}ӽaSL/7o>^Su]n,˴*W]u~ibQ|>~T\ χk",^,1W@|5W^CCC-Q Yގ}gG#hjiA0޽ Yﺮ!{~g}*뉈ʢSG6fؽ,QFelxO" Y:ghp:'>–-[*kp8ɮ✣{GgW BZZ G`::c_aT>?OR</.]:cJ0|.҉sf͚Yf"[HuHI)K/k;vlGCC=dYl TH'ZKmD|^m6drYtvaK/þ}  iz! bϞ}:-[G5B̙_fs"UwBXwog#JP0g\l6$IK%IGxp啟olACC-dYT\]]H28XdfϝH݁L>>l߶ /m~/?χp$]-=V4MC$ž=pƊf2N'V^o&<oɢYPcpe^xNGm#q8T!V\xm;&Á$ i_M?퇰eV}׿~D 1pIn&?9\@bԐ$ gˉd2p8\NpNJl&+3$)B̞}H9UadGkuPn|>`W醁K/g1}Tj L6q#/?HӨoTvUaH$=>+)˴`ai4i v=\Y\.D-˲B3 σ1`ٰ֬m0 _(A/Gp~-^~e х2e~_o}WB`@R.IhhjƆ g?~_04D ÀSh:mߤbillDcc#2s z?D JT4{tB7+6+mhh)X;1F##8t *j(ʧ 9/w~Dwmv-aH2:REJ܌3< ߽.!b߾#jW|^?@{;MoF~?͛{Y$9?㟰ɼo`LJ0gh TPV]7w.RVMi|0 pglI4p: ܏|u&F:\0fމl6eSdY2fh@&4[$*#?O~r/nQ(8t5u'?ƚ+ 8~bcS13nCCdwB*ӉaxՆ(Xl)nM,mBpbztt],Uc}z뿁1`0pLd"\.p̙HjGc30 n(8_w%$Ɋ.P(gy۶m#/(1 ͅ,Ko%*MLe?pΐJ%0c,ȲdYrіR O?[nVhzG% "V< iP*V@ + }g(yl߾6PЄS"N<Z|`.a6(MS-[$ǐݻw߸CCC ϿG==}pS 2;3*8_]}֝~:jEF ÀE.o[.Jcc3prS]Q oCgryD5%U:$K/Ks'ikWr9<ȣH& χ3f%IbK؏*m61XNShk!+xE;Pfahh߿MK??:xpх" [:G9yw$Q%޴7xHt|B0PS1T p8^yf܋^،ΔOʜUht7.BCATl^Q sN@YJkO^ֶ6d麎P(mv^TlbԨACC=t݀atCPW-(QW$ '0^w$s ʔM+ap8Ɇa!Hah܌X&*3 ͽ2mhmmf;dY&<]w}d5dW10hzUzGn*MuX|9d^~R T=/4`WR UmסDdhbYaL2)xa"Gby~|ǔ~]4Hrl2Gkk$?f$S=g1l B.RڊkK/X&F1cL(dJ!MmDa;ukr|/'4 R']oS|lpilŲ˥f˩T>SNtz $p}< 1 6Nj-g(J..e<[ߤNĨ BUe0t{&Ѡܫ0 CGmm 4M܋Ll{9Q,ifr&CMM yaͽ$I.c}?+9WH&"d̤;:p$Ial߾ubԨEmm9=HD FG,W4 SNeSsM{{;ᅥJz`A( pV`۶m4m :D-E IDAT"$ 紘m?1m6mHhp&ò(+X[ij> UصlHl?Ti!yE&p\|wEebÈb0?D JT7lsP--`-@iJW&.SO=$t!N'C.2oݢ30\6]⻻gnUH0ĤIs1bFIJif~b3f8fyIJCx衇˩C% l6۶~Ks|z>ÆJ2۷"ĨQh\4 T7H,EW):taʔ Ir%6Mw8$']ǃ>]Nyoo{L쿣,xmH2p^ٷo#k&,[ɷXCͽg=98/Q9c />,y2; <u^ 6uӎäI ˊ)! 7HIT d}we 4^1K{Q2ӍG} eI/x<[*@zUlB,wuuXJǔ)lܒ16ŏhTr*ɓNtX;v]T| 3OO۶\3O=]݁~twwF#F8P6QQt"Ζl `0H$:rY))d*7d70$`(Kć)QX 22 z{i|1zB!|㮉?H+ʡoT~J$A(asD"_.;0k܁A˴?S$qR$ FB&MP(d2mJ2|^Xv8A!hb0 DQÑiΑTl-]]]x-߃9GD_zwpp@ fBd-;ē=`(Y+^,?LTLp`nlC@Dwk13Ne444 ~ZKeT*W^cx7x 6/=a!?y!>H4.͆t:D"AvUQ__|lf3;AQLJ2$ƘtϚ~˅Er!l-===x]p8O{au56Hرb?\6@2t׿w]86x=C.G:FP`z W``(i*5ITH6˚{BrO\g.8O?v;ūf/]e6&_PEfA s hhh,ǣBesb橪ZHnhᄦi{m!k׻+ikqyb+ħ)lfoz7\wzb< Z Lf#Fr#-dq$@! `(*aZȲbYÛ{QYCuͮhlC&ƥ]?>lW%^ ?֙kՉSFt11gM2#UU@]]=$(\,6Hi8pp1 ߧhni}+?/+0gLDQ8]d*Cز-x.M0 cܥ/II,WNL$ p42QP"x2 !J?u݀FMM $CuK"CU8p`+]1ir h=lX8DDkj*JNu;O鴣`WLTcڴp8iS'#rc#&3`.E$EMM Zu9R}d2ito*B}CC/!,[-B댙mhM!Nv؎W7_~D!q?Oj&Br.!0eb21HԠ\ ]/8[ {i:::Fmo08Џz?(._EK`67Oؐfq`v܁_܌W^yf   !SQD"Qx> աS0/ƸRVwkb` J&X|>x|h TUC_?~S MbH%P ab\ e1< t!)]B`0$Ɯt6grnx. X:hϐX躎Ѵ,ׇgy> 9#L"~pa ͎l7 BT/~551}Ts, b0 / \,! Irf֢*(`(P8MӑIdF .UN!C-=ŮP21$29 `nSad2AB!hL&LP I|~?.$I j( e۪׏l6L7 !<R2(Rs3HrMq&-].֢ipU1|Pn_3Ś4 Ȳ IU~?<:;݉͝T3TU,KHK߇IG(f]'"X)>n7<UZլmR|>/-r=.qnԚ}8/e1&.8Ǯ^`uQ3atf#Frrj$@&$ m+ə'hIF!˲cdY&{2Ujp:|YR^/jkcPÍn^aɖe=G:R4\.:ԉQt0GtyU%]7F!i8PX2 왉 ӎ]exhAÉph:܀=c2?n#1nisB( j8:yx^b1Z bT)d0"f t6T:K J!(}\H  BlJ&l>rMA6kau y>đ`zasN`)x(ExfFpݴĨv 0% C ӂc# a ΚrLJ(L+JpSSBBB%zF#p8t=,s!PSMa y!}Å.Q;~?-(i(u&@&Kb+\̑L[c²M,"&J 144Ci$g5vifʼ EG ci'kq:]#)4fe-aYGw!P6a=CBr.0`ۇ+27YVPWWO 1L4 6x<0 s=Xg~"z0iRKP4rXSNMX>Ȳ(L ns\^E6on,+p&L'X.=bI$8cr1& }\\,SF1{#FQ>ϟΩ a .6T,cc$ΑkF3 ed(6 2 FTdX.n~9vx<\y8yAMC~sɒTWCX$I` ub|btsaܦ!{ %'t ˑ]ep_`ٲp\(e"10Bx[XzbX7݃͛F]U6 3f ! BQdi=, ls¸9FX~2477cѢ4Rpg9,Z,Xq\lBP/r#aB(cɞ! `ɒٮu .B( x^l6&0|1fblarXWZID~id2A߇ ߩ F BCÄր0#(Ӷ(NQf {ذl@&C9ͼOZ(m[z5 ᄢ؇vQ loB@ ȲyOās `ڴX6FC8ӡ( - a57!˛˺^x^HYݝ1F6 1b,Y&MBWW/b$q! `ժUfap8ˑm40 >&it=3f)M-oR-0ƐJ|ID" ( ,0M1 1oY05%+RڶL9pqٟafmVe\.+Vca`ʐi$<ԱQ\R:dYrLvφBOyAKAUU}4ڀss\ be2= dgRbiGo/5*]f3>$'G!lgN0G9~b[,Xr*2,lj$IAKKN? J",G‍AXwDKjXJ|[qg"Ls:\YՃ)S&cŊXpv E)DJv/6P~<+6d,HU !=NTUB-A1eFG À$|>(;bZ\~&p7Hvqi: C3 [hA&N GŅ ]6V\uNC<$'Ʊcpp6 / x-饋[ l#ƜE39 CCC4m$ }}p8iQ&, t\ru1 fi[i&(~nI,3 sEktZb8LbۜaTcQ,Ј/|aT*ڀ ˅B)$-3%&6ן?djx],9dYW|`٬p:촘b٨' eXl.B㉑$ CP_|jkkiQ& ,eLpJ F6(Y&*P(JD"aRthbwv*/^L B|0Vic ;'Nl͇7e2% ꫯEgg5= CXn/^B1A4jYFY PB4Y%o֝/߄|^E:$IH$JB~MNSZaæ\[V,ud!HÒ%/MӑɤɮjppW\ MMM(,5\e˖zbcƍ8Duj 91rm tA0 iJw%* E.òeK )L108dž fZZ -mp#JEb5M뿆BooyAC$K_B- 1ir95 vEJ(DMI)8ᄩ~]]=T!^W^y%b- Q4^ QL'*;__!WL&`G!rQX̟?6 1h ]M&a%B%eVeB3< 7ehD"Av k6E:g?YZ6ʄtB7Wgu&z{ a朣SN5nmbu ubcV8Hd2B!*kp9 U*$O(4魸ꪫrh˵QE!*p8~={6:;'t,-܌I&!*t:U͛{7FGc! 86]#0H/4jjbƬYpPtݘ{s8.p 5kmb(CXHE"˕…o~`=GM$IB6rughcœY&Ja1,Z+61bYuIlYr/e ][hjj@TDg NJ&X, M<4V@/^zn&H2yU1tvv! _:Oo@GfuiGϨՐ'v|q_??"ɢ,K$Ii(ӰnؠdmJib:t?C{{ 6ss 7ذamTUC.-ˣ8 ;H3#=EqNW5zBო;eY /+ B H!J:9%,Q]-̌\*+*Kj dx4tt{αLx96`#h ڪT.՞{f{x;DD$TU2#3RIU/n~Z{DZmFZ>R_wL3v ~;B'QL6M|@Xc?'5uk˕W؈6-̂jfYK>Z )_!Es%~7$0>>\_-ˢX,2?%>Oq5kTe+DtͲb{HllbIÇjVj? o_şdELӤ\.?A>OiJs0SB//eye}{l޼q\Ų{7]m[ Efg#H6\&V+,.@ۮY6( @Jl±?1 !RϫwiF_l߾ jW !0MRD.7O>г| IDAT}}}k^w/ yi(JakTfʇ}_cϗfgsvcB`& }??_?h͚\P(B׹"˚o@#؍Y"̥ZJtַh9wM~~/}Kfzz\.e %<,gjސZFRYE)P qL!]FI)i:~>G?1 ##cJ47R> &'XX(}??a``@?`͚T*QC%b=:J)@ufdݺ_y.Ru,_<)*\8r]U l055B__3sּ!Aq(\CBDs=ϻ$ΑZ(_ܹ??ؼyr9l^57e!e(O~-5kb< )㺹f5>>Q*U8wjq\ Q#ڢT*3::ƍC='T."ˆъB d0ǣ}*DS,;=RAŲfYIR/_G>LVTUl^ٶmQ4| ϧ>)z{{\D0 '#KA`fGSZq|菾9Οk&܈&K.\%x??H4Qn()K&~5*Ld.īlzF>G)ݵ~Kh4ɝwo|wr\˯քhnj\0,}Oo=/҇FuZrz]ZV |4M (AivNĴN[>gg;wE= fd2MBҩ&,B,$$n͛7>N(2|vIJtc#dff DAWZezuHY!e.sssxmTY֬4[n?O_gcnn۶qlT+Wy(A dR|W~WعsW5FQ|۶* !rIP(QJ6S(:/q,ݻw}v>cllDZf{F#(P샫[?TH\y?AvM*H}O˚UXڷD,TͲeYAcoE;Nt 4پ}V {7&Fp˯jR*hyTjU|?//{n~@b^w,0g=JU(my9J뺤әe)%7 ;'G299u!0HD1,4?L!<|ߧT*QK7_}{6lЛ溠\.199ITvbYQT"vdeZL&ӡ!~U[la˖-]bzzO>{<ī$H˲,7j}ߧ\.QWuwgx{{a`~47oS^wCg'X|%J !.DRTͪ6 4Z5Koo/7|3?Gfg8r0c\p fff,HĦ[ob׮m?6nH&!蛯nXXX -͗m{/zfuad~LJ0F$baarLOOOGͪc>98C8t/^`||59Eoo/oy0v殻Wl8D:ͻ4"BJh B֑aP.) K<|fqgI8ܹRT*ea||ba]ǀD"A, appM ۛq"b1]7" yLXd\G5$MlEx)J[kF~U6%ͲmvVQdbbqr rX,F2 شi3[l{ɯrGh 6 ~i-Q M\ X,R.WE(Җ|4 x6m]wElQ!DфiO57 uٮn4ҞX$BW:Bv0LBE?Y ~I<'/URʥCWi籸4KBy PBv#J55RNw@7мc`:8Ѽ UA=ɤ10P=_IJ j SA >tnțf-UԬUjsͽ -7qzev6*1.z6F\;9R(G=1fRq,2˔jjUR-C*ߵ}}h4QVYAQJRF_L a6z9@uB@ͭӕN(Ej΋eRI-5ꘝ1;;zlT_KҬOW:I&o[ mr}z]?LFF_`zzjijeu[h4WNbXNX֬A ")F..\'ҙo;bk4M[xBWJL,1$!.G$R"4UL]iF\iΞ=*bbhWP͚.dBN;C^ n5TkJ)\F\RƐeТKbmebuk"ĶޜKObqh47fv6il: [ulWCL8bcbg4ZrPYJ WeiBٶC_";kTZ#t/F2333LLL>ӕ7TBYӕ¶o8*,ffr3u*F\B\.}ݰ1TոJ0;~ ]h4W FC5ڴWw֬Xxnݣ;;꺶m0υ c>Z;bk4S,r˰WXlXv]P  :APJQttYh^9~(H$Bem7TH#$y>!:5'Xg4Fy.\lnk>a8p XFdY)EZu>Fa!9~RT*ji۬%!,BJI2yB0m DZF(XW{ıql !{)Z^CjAﴒjՠzdJ'"077ٳg?eF _^}͔Kw|_JN<IxqJJ2X%u] XJFY,,,pѼ(XQDqC)X˴-Ƕm61 ѬmFdRA}i*!fF 0-$=`ƕĪ4\sbY^ }2C,\.Uז$Ifg8q$?hbcZu]< h43bve56bYI)ϘQmwc7 9DGgVr^qh4M)N>`0[˱Q/Gi8M<!ؘ0BVSXPz* JbFR)W֩T\ X 0H&ؖI"#IɤSqh4B<ڈJ;eH鹞O}@6:BO@^]JIıKmO$/xj%oNpiiF͒ME^=^KTV8/se)%C.cll[.m4ܦiRשj$]hZLLsY"H(ql _WX*Lx,J*%qM[,ט#7'7W`jf< ,,/)Wk~@H W2j)Hi6"ՖidLTlOnz2)z{2t$Q),@)(W.n#P +A/lڐr;w33Sl߾NKj5ɤg4u3gP,ˆʚSZ3_#- ОXVJH$9s |;mcZ *JWnFY{",.CP?ts"tDXpq"dn'8  2J )ղͅ"CDZ0HqH(l:R*f 0z]Ca DZyڟh4W푧Nbaal6veWnq@dff'OwvC4h˲"z#_t뺴Lh.Rp TbbYP,RC{uX#I$/"RJ,kuNA à^SVFsG¶7m0j4$tDgFyyÜ8a3)6nY[7{lp'1 s=x})7w;nFY,PJ`K7ŕ3 ;M-i/(9"rd2ّbFXXɓMg$:o(ƨ q8>Ϟ=Czn[*㸮ǁ(+8Ncò,h4%ZJCBp^W%=ϫbQO-:[hn4N8K/+][;K)8z0L8_}غut*A릃A@:`xx#ӹxZ/lYR*FHyq Jv:*ؤtvq~/319ǖ-Cv #m+(2Tlܐe`P} IDAT/=}__OG_QRְ`VJQslOınP!U*ٻwZíRRI3gzzW^,`aJa S:fjjG8eJR ˲V:hn(N<ѣjq붎4JaY7d_!_,3<D>~@Pn0wN07U\{>;n >)%]/4 )Nh474y<,>Rre *e( RR Ν;ǩS/c?RՐAQnFĞwq?Foo7Ah읷n[Q4 6 Gٲe~Fm,4ͥ2#۲mӴ0, ˴0M۱q(E2Qјl)yuZiϣȦ82mY+s' 0GoTbҙgˇWMllI>x S _:4jxFsC2>>ƹsd5/UJyJ^w)4Rd`nL U97MzNT{ԉi4͵yo$P(4عuN5P~o/G B vWGI,q"8m;"QlqlnRg4l Ƕ0LPR>|e4"׾6K)ʹn?M8+J7?G#>Ijn Xi3+A,L*ήCNζIΟ?Ǒ#ټyRNR+ hTox憢VOSl6kxŶIJaggSUWJ%2>h4- >Rpu;9~ ٲ.[ %z#V^(O8bXX4J$Ŷ,,Ӽl})#5 3WH۶mxϨFq=jB\X*Q*4Xtt$D]޴&qLRĶ! !QWQ,]7 i4dg~Hc/gtj5f-P(ػw*7 ЖX mx^~1p'Op9n uW+v^'M\wAs=# k|v~HI_Omd{2\8xabQjbsRk)nc]L.L۷Iv,Fbaa`2\.WjK,>CJ)OV lQ-JRYaybh4S5u" yퟸږɮ6b˿W*EO}}"[6Pn T*E:&Ɩ樤VzץkzH!H,^@ng͗":HJ44ye癛'S*1 h$h*kdhc/W:iF^F*vw&Ům]lJIwwϱ~lƲt2MK%bg4 RÇ1::@_z墔j+]$P#(gz0j`tIFs266c=J<C6m; El柿$><V.2ZF88Ȏmرm;$ %!į-ۑɤ!B\w¾9N#;h6 }H$;fLވ|>nFYn4Щӱh[Wp2M"_棌N͒NV$u-۷}6zB4`ƢdY""}f Sسw/d}8|1 !bK\_5F'J sݼ{00W[lX<L@Jz2)n5pr<ӈ+t2ܪ:[N\(8Ǐ#7C)@J,76cyZ)5%I=˭9f㮮t۷mMәfThuMk'twug) O:ũSp]QOLpamD^#RK,w}]$I겤fRp&N}-)T(޴s8t;Q{Gqغu+۶ >z>b]]XRX48Bbc'rE,OMḾaA@ww'OrԪG[qh4#LC l̓˾@)]i^8_8N*g߬ee{251ۦ+ʫd/D3(J()/{DŽq(/^={.uJ|gB4۹!F)F,Ne1_n̦^Q{n"?tܶkK,ss<#ΎrҍK5͍'#eQOMLL,,XRRfIDR?K$⬉TZFToFY}BlCwV]_R$19,elT*[atky:t-}rm۸ix8Teql e&gF,V̚y9y xTޗ f{8} O=$hcحj4*zK6+v{4WՏ몽))aV===z}5H/=vAѬWTlOUJ0M1H5RTU:h۶q[Jo6ٶm\xRt Vjwغ0Ѵku2/In_0+x~'NJu.²,<#Q\7\#I-GG[ A0+Dbc=U[o>=.Ch:ɉ'xoՕm@l֝[@  jCUVı%3RuyHC,7=$RRivtuֻJrY!F)#xTiAC7Ѷ6*|ef6wJ8wI&atݰm|>}S,[z~lˊy)PBf'|^zt:5NvYѬ'>ٿX,zm0۷L 6 LS{5J)%eFQRXgWgZR!q[B2Z"^Z)j7LBPTBD4Cۦը[֏4j{Ӽm q!LtQqУz/a7BpK״_ra7nΟO<zVrf=qՕZ=7+XE aw5VIvލR /]*o _ !ݝ/7,]h4GeϞ=tΠSJcm)%muCQ(`jFmRIM:zp}xi:[N\bZ%LR({,XJIoo<,짯oMt5M|>j45$_HS˲ws.V6&idzvdnT* XNK>PKRJaip0:o}BH..+"U0m_6N+#4T*!uG 5ۇ61ca'XXX䡇~@<[snnNf2#Vin۹\FD)D)+.X*RV1`D! }u&[]ݤFU4MjKuqMLqHql;"Wlj# me@!2HǶLbF_AИuS8|+JU.K)4fٳzS^g9> H &ބx<~ ϟ_5%KrYf133>yr;o=_6:`o8Vۧ !.sss'=otzXdҗ TJ%[,##T*+gJJ3=g'Oɽ8qQeiB4ޭ6%T.]߲yҊ.?yٸqcǣˎP(?hBq"OJ 4F:YㆬU;m6dqlo~i>[W](ec/h$TmZ$bc\oE6]Ä.zGy\۶T*ڟh4:wܲ DZ;v!՚Kw&("P(0M*kF0+!Qm&ޗjBqf ㌏wZJEıٲ0_3Gi,hki6A;آ!-moIW:G""E*d~mјfرDr\n^)ˡ R.Ima7Y xPB R~s5ͪr9~ c֛xQ`DOıvS,WyAeZIXĶҩ 0BQr~GQbsss BPs],[ozN,\p+U~Ǧ;||C.uv o_sg O 1>g$ᥗNswp]w377;Wg~BReoHBPҍ]U6u8$x$]( (|׼$I0)X$ ]4-g5=O:]= K.@UPHĢڮ˜9+MuD"1-c_g=D/]-_M\6шFscQsCMz3%\H$JE\s Y0u,<(L%tr r=YhH'8qL 8vUVrE1888w\.J& `Zr1bRy^|>漉r\Hsn↡3::5\K"iP'VM_ ұym<^/Q嫷l`咹*|x9?$-Mb/ELHX,`mqG"H b̖$$ݼpxy:.xp$I%Xҵ]͗߯vʺ<Q(4-I\8NmY,d"SȲ3ӚO|G?ޏ}QCF_4-5qL7˗/K.S_g4%I\.yIS xo?>q/fՒrehq\TU4?|0aORG`UQlL.C$!.nY$Lq\amsEepB$8{y,uT_YQ$S =GdqR-HHņJtYQdINg`貦i?~9se˖EWgt쀀F>KTAoy繟 kӍ$7 !j5\]׹e4Mt< ϸQ"3x;ΩS'I&k*2\q̛4 k̞HGW{_y'DZEd(l5'@\ǩY0z%DF3b贷e 5b,]4KR.+SC*6z(DKcO]$ M qR$;wM>ϒNҀ|>=r9OɦMٰi]/14 ࿋?Pn|HW57 |hkmBy$2B RH4B,s+k̶mc$ۂ&2,QbV'12< ԥ\i5iQ,(_ ݰ,{WvY1Mɳ gk~Vu1M˲40pn:v$~@@@Dp;|?GH&~&:{g}#DHD$Ɍ"2w_Wsi&$IeafP0)<<(/Mc0o[|c-)$Y⃟ iu-{^&"KjmᷳU& (2m뺄a"gE>uhڈHe,KoK}WW7ofڵňɲaضM<}|T*w@}}}{+u\D%~GLCCdF-L.DQ(2WD'QiH)IT+Jq5uQ>mD|զ#lް믹8qE%&M4  ?ylR(fY) <&^z$;S5]E7::w_O,#ϟ\lL@@T.w8@*e#r٘6b.7 !R~:5ãh5\;.L&~8)ID" O}| _U6shmJFqhL'QwX4RsܷE"|I8v _W躎mȲ(S^.!E!xN<,˾=eA)>rx[nakXx8~AB!p8N35L_B%|=eS:$ lA7ڢetU9|4i,REرNضm\]Kust4} xp }[=3= 7{ER&BZXp9u4]v9+WV52tv(T\v ٱٷ5ڎK}*uGG-ڴ(gR2gjH% K*,FuATUN6X !'Nf þTQdL&iwsB֯^Ƶ۷pH̡] EQIQFBXÓ{hlh ab/]ڢhlfN7~*Yjb.vr-JB`r@@yw}>TʏQv3|X,N+Hķ !B®]jiuYu}! r?ӟ>Fkk/Mi~u۩Ks.Dc_=Akk=PhRd !$z(iRT削j54Dz$IE'iCCCp0'N<ᰯ6S%ʺo{M7+cv/Ǯ헱nR ^<1 0 ={$[.\Ic5\~eä.#ѓY!{p]]vU}t^뺔J%hL:⮻>0ޟ<Wz{,_'@(~.8tuuq%fi]8xïX,4 _җ?N4&,>eIbkزi?BF"1_) (j$6W(ItU{P EF2AHQ #(MT4WĎTҼeEẢ>jnu*h&CѣAP i~MXC;{*%S܏㺔:n|j+ϥt7ǻN4!w#(O=̬F.\RYv?ykhU=,sZ8}v3g.*,<Ȋ+شi|3r9h`0}[PHexx>vESS#Lfj2Ms|GL]]]s7m<׫D5o>MIB!wx.\X,Mw׿fsA0BLHsL&KXIJ-$!BM_} lU,WfBxz P((E?G;;90iiuG25?r!*|dE4-D,&n%֯^;|3֬`4#]dŒ?ua EvYْ$Qur\Bi @UȰxTݗ5b"Hr`T.l?S*& }Y<%R095+ͺR!7 !ғ`UUu]:;;Y|6]D&s~Eƶ`fa@@G>C}HD#H2zwewM!y_,QHpضCG LB˯V!x[E6t"b|>?&dY2,lLɐf zǶRM@>q\нd7n(5ז!IN>_ qƵ<|5͗zxGe/tnBoCmtIJdT"JS}0-vi !x܇ww X,'.$1,AlB82\u, L@@~;O? f"$6^kx^wf~~{>OXK:!,KbBu;r-!`x4<-b,"yk/aYwITUχ`տgWQ\a \~N,_/u*u綳}fNuQU͏Ӄx<Ʊ.lt/qӪx^Pk z&$ j$p| f4& `B%;ٷo? x^&Uzd2KqIgVt6֯\Xw]0uI>ky/"Kܴ{'7]w'$V$Iq$,#L$ij TE2[Od"Ι><Zh&GsC=WngyCD#źzcyzҩ8lreN%s:KPƗgE/f怀߈n:::hllQ{ +tYĭ$6NîF]]]l|+Wbxxxڊ́ xy>m4Xtoigγf6:%c5Se"BvD7 B&>v~%IYx>KΧX9}bI' Q_TUe4e``eKwFL˦p2j Y5%=TϖK7q.d>/ IDATA"#eD<Ɖg]抍>0-ZEsZyje׼^YVд ܹX,FP8o>O>?Tp8Muw/b9J,ꇮiazzbW_kZz9lNُYőp&hMױ?%t!,Q.drf6n~. $_(Vjv}W%I`&eԘfʥԧl!Qul]|0fFdY{n֭cuE>o>O&|GUU8~;2444S=# vIss3:|9d``^|k_{Aem.[^IGˇJdИNԐ~]C#l\FE!#q,l&fR,iZ 02#|5M.uϢj!;k(ʌfsx7mʙe&g,\01t"ie  y[/ZMPƗr5;0wV3O?X~c\~fnP(y޴̺L@@Kxǹ0MtΏx. Su5|$h:_$IJgg'xw8ӻK`.W({ >˗a-ﺹ׎뒌ǐe?-Af57{2ovxMץdad;bY6PkW0o,edryBj"H,IEobmm{[ny 0ɢ&Xsl\h4w1cYѓlx 9Y3tlyxǡck~qRq|>ˎb:#P%qOyށg{?0v8Bz|| r>6oWN10eQ*Á xǛ&`ΜћeŢ9*K%c<0¿*XkIdo,^0̔q˶<6_ż9p\ށ!F2dI& j%I4MFF1-U->3P(p]oڗ.9C墍ԳI&5aMt"s֍ mׇ4{d+̥!J$Hk*{y ?1b9J\F!D|ƪVyh>rf½ !\i=?ȱH57 fkofp8$jon&m"ƒx}IǮ<J"<, .`ӦMq/Wƶm pP(W!}]>}f-|aˉDr!uB6$ۉxˡC/2{v;_1MsF fq( B!4M ~i30[47ܐkE5;!U&H*i˶)\z>mbu1 ۱iknbUZ:Lbp$CXDQI m!/: i6mX 󦛯cۥHDJI:BPuҬX(GBX7klaZcصY7Lf6T?r·D"A{͛7dRJ"N+3N|׿NSSNE,{S|#UBuNPss׭t-[.g޼Ϛ H E0<q}F}I=:ikZH|G? NڔKwP}V+;7eE0 $/aݪ,N<MF3YJ%Wy)፭߶J2Rl^];.[`Jp=RY5 _(rb<~'c5S(ukdA;ٗFtn|zy$ ΜnJSS3r6(J}>32~q\ӾjBH\.Ù$o$ 0i87!h'Oa;wDU\ όD". `~wpߌn%{cQ'=Fsc]uYxMYdC#z˗SDmQbL[Ko}ÍTXvLc2RY¬F-^eYr -fԐ&C36q\gL/?۶8x(i$b1ښYpW-MrF..pkV.cq\1mW"BeP*Ok*%Hd헮#[(&"spl'{|yթ cOR_K/WJ*B3`zIR.ijj+1L}M8)<"ܶ&~|뵧;K{,:::x衇'>N" ͸qZ[[gTJy@L&7DWW5 o&US23z"55 ,<[hnUU aW`B a20-n 2rS.˕&01 IT]E )hD#ašF$F"cb8xX$d"ɄTPH:K+u7$G:3wNx/|X=<\{9ښxcZ6!Ue %q]{9yƗ5۶{Css37| X5m̬Y^i@>>Opl/sƲI!X4':6xģшv]wњAEQH?#7ox'iN91પfmYf(J &9nV{ns>mdY]O%0{9:NSc=qqzŒΆ5|:FFs3pzbJ;K)/yLĨKHxJ7މZ  *JHS+YQEe AZ"*2B\˶)ƸjR&~k)DЄf !B!NԾ#$FE׭ܣ%04ݼW䊾 斖Μ;b+ml=P(D.W% xկ~}#IAsxL,O?JF!DD 2}兤1ҩ8O=\MK<#slݺyQ*Eȉ92S,D"` G}ٳgm4JEQUO÷9y4N jMF%r45ˊeQ9u=o,R.`X@7, qqB18u8u))uIq8Hh42e!UAaUI21CF[MwR.\-:8rk\y a-DY71 k,۟'m6 )ZŁxgxG]]g{y晧K?sv?S(F?0y'0 IK2"|>7r,\&Ib̂\m!UATF2yN~XyX #1cOeY4MJ _h@yT* <7 y;H%m8q;D㑚SL<[/m188rVޘlvpY"4:'H4֧imndVKmMnmfV[3M 45А!. F"h"#2B:3DqyrJȿ HDa~'q-NH~Jc -ev]1eca,ۆ qH&Bq b2w}ghii& 1r;^GKSg(H%b<̳hmi\e!0 x4oh$BP}{mۘ㸕\-D"֖&ۚiokaVK-M 4֧I$q(F(* ,!c#*{۵e54_://uAig91r5Z](ikg󺥔B=I?;Mss#Ph2FEWLI:XN$ Bm"8͆UlJҘGktP*xɧظV^EXu)Wk<$0E·>A>򑿦HZH{ KHXcp$g)Hq;L.ώ+.04<2c$ 0 ,A$b( ijaֱS bcaE¶mGTGGy/}M'qc444LvF<|)&&08A(Xd‡$Yr)絓DŽtTb I,]V1wV ,a6e}/@[h sU5a;2,qYFG#㝒(!U5"DerT+7q>uޮ8Xz~{$ian x%w^?! Yw,43As@{g~[1S.!k2!+Ғ<+pUIc {dJkS7ݸ%ƪ,fY_FUUdYfpp> ~`pp|t}"7\͜YM/Ģq4D\Et<´+*QsgqJqtm+˶q= W0gV+bybVetL!ry$"๞o FrcvNf6*m&JNԧ>͞={p,?껷k  HI8?(ZEq# -$ZHH9ޫX{ &$.. >s6Xh$I 3<.?/{L ^}}ãS}ڬ~e>NBe9<_8\>vBHKs.ꈚ@AmE8Gk.axt&)"Z h| 'PyP9_4)d2:a{&pϷ>!DceVBT_Yv!m1-w >x͵<0M`0H8__/ߞ@~|&''9f7n䦛n;朗)N(\p9=ydI4M^\6,Zp\1_L&ТWB%s{:Ԟ˕l%d[$8CL'3 !pYjxJB²m&Y4K9P$նň#'?s33tuu#IRuɲd2.r~^/455a:yꩧ|=0ڲ=xx[5׿`0XK&CSȩ q|$#0n 2fr nΣL6m;LX4Qd' d3)t]|UU8KDPሃr34j9gYHD"/~ nFFGGEQ"e!S0,!FGG=]vXhoo%79l[iQUe)̢ pu]sۤS=vTH{{+ccc\ulܸ=[QUIH&Oz*.2|!Zkf <N?|y-/MB $ 86i߂9tNgOzo8XEW{ ͥQ*Y9FƦr6,Idy&,9`>tґZd&PD"Ư}7]wo6CUՆ"e2Ms}"W _Xj5]]5G)L O&˶D:5l$p0H]p ˲ॗ^'ںG I~t]'100Ą.C >_|1Wj?YSiK}77N窞}BhNYCg~s"sz: ͹)o\>O gno7"U5[`6CWO8ghAe3 gt{0"E%^Zܹs 133C?333޺ַ]4!rrhj84̲RlteA4GY8碳N9Y$xAD(i#e?fq*ޭ%\† o݉ZcUp[O99hTEiϧ\ o"I{ LvZc pgV,C!_p$ÕBi@ YdiLL']KYD$E\K6YI+8c8BtM۶M ৭K/+WM8nH,IQ(dtt+xPCW+_H$L02tL.-w  76Yv',f-BA(GRb?n~o;g(46ImA"?!_hjjjCbLIQZw+aoD*[o255EOO+ScӎAԝKtM#htlID*KB>3q=e!(MdYUU(T%FyNS,Z_pRdx4j<ʥI3q]\Un`Yᣣ_|.^:::H$ ņ*200@663<ͧ?O"$}t`]O8reIi6*GBdIƲv}~xԁ5{V`03:::{D-[UU BE,0~r-H[{䘃9c ǦzQBP0@ow;bƕm;,\0 "$v,F$Q ]ô_ t2M4Qw5x$SH ,чH5÷, M75\O~rttt`filkJ`jj,ˮ>FT.:D{s˲eNg???̙3g.eE < fffkY%j-ɥL<FAqrWHU;ʬ[\tkBʄyjjn^ܹs$i).e(B&app1ϒe]C=Dkk3X ˲BN9vrUd @P%' 4dU9/Ӆ]ca<ٰa`f;B˶[ / Mk]щi>?r_{lb??q7233 P!瘁Z8;KoIjv6œhGHfKXÒej@nPsF>ɇڶ8677q,]W^yyUf~D,Ij\eN^G,qu˯Ձ[y + /DBT]N;Z[ƻ4tӴh%Q,z}Wv ]s *qI8M6Ǵm$Y.-  bZinYV#s2,W ?+^e޼ynk*=C-/}_?iniz$<; 5dՃMԲmmXlvhCնc ~Q*Q)\s? 7,o kڡ\eNӞŔ=C\uՕr-LMM݉(u[^r$~ =8L6W`ht Mr^YimN`VO1  hoihmȮD[Yu$Ti՜0;8M ypkNxZ]ˑ/mOO]D0(2`vEaҫ2{c8sΟ hmu[E=>|1e<IdYZ:X(CX [MS"0faBIϲl%/X,%빖\VKǧ . a,@ @GGk׾UW]=srgB̓/[n`0@$u8cL 3Bb;%a8j7v뗬k2i2B`%99]-5{9m: ?p ד;w.Ba e/EQ$rȌzv|[.gʕtt&N'k~0Βd$(+P"p۶ffYZeш{-{)( %_B]W% c?HS1`d|_paU=rtww2::d,\EQ6?(WMddd~rOm]U$˒ Ά!UV0m\x4eBK"RSI$bO]m;+UfqK/[0ݝEz]p]yvb˺,fd+ae} VTv+OCy |%EI4i4tD,4<>DS.Iԅ0[_֊H?5kV3w\"HCm[eet:M__^bٲGSDњX|g}3O"uEg'!M9QdP~,  (i2/YsZ۶ bQ馥Loo]a0eEQ 288HP𢍇½N;innk۵ɳ8QCdY!)Ueq@@Vvk;"˲=0̐nöKp,XSߧ-u!&HE9S=.i튥E"aZ[YQ;|~ӟFWWw]/&g Ye۶ϛeaժgG"y8C9E1u!lEEжՆ%>UჀ߇*f["w\yU++]=Oϑ/KgvT4/sIi>g!JWQUuPBm5"JK8CUez-7EXj6\[4i3YKoC: ~믿t:͢E˅-˲\3r{ {Y:6lXOSSQǽw<_6FY*~|@,Ka!Rm0wl7P~Y¶-\eN}pԁ5 .a ΟsKQU0*eYeO.իXd 0"]](\Wf Xaߋiև[YSX8(ry2,,ץahiZl2@PDӪض  iؒ>fZk,92<>._klcnG?pg|rΝK4mhI*UQd2b\ ]D"Q]pn'srIEF$Y'B8Aǩ~,dYyVձ%pȏ$lq]SCs{49mp8L(?Ki{ԟ&eҜg``kSOyx'hnNBԵBp^xyt%wv\euJ?MSU$!N@Ke "[q\o{5lgdYmU͖e -MTI¶Y_ȔbɊYNe8ùSTl`0HKK+W>9m}H$ܹs*X\gaÆ Yz5--ͨR}U;_qm٨B `,۰S<:,DlvAAIbV  >CS}y=m5?0;Kހ,Ktuu5N$a͌y>?g+&,Cģߗ6lY9pJmWu3<677"K2xd/4Me|{3,U%p'i2- dE¬ѹ&Ip0@$Sy nY|z]s9*BWWl[n*ٰa= ,7F;e||͛7333m({x JVXI[[ 4Wj#'δlTE&bOh%gY'0_h;$ JEoMEkSn?o4 J[شi 'eO,Y^FSSH$Rog%瞼 3e!\œFlr$ Cx{/\*2M={oa6Ͼ !rhNDmwe֫Ri12>škΣ5~(D"N4w=gA~BOOOI qr.S,|>m.-֯O~XV4Min{1Ovp'E݋;ά>c-7YaV%K54'",C$j\ *H$ĝwl6Kwww+\mۙ"CCClٲOìcq/8EWWRbTk*K/:[+׃UWBMmˢQMAe ``xg׾7f&A(\Q% x}bZd9Lyb\l]no" V~7 m0׃0c)cStke]u%̎imrMK.7dg\FeR7oftt+<)֭[_ʕ+BuM̓߻vϧm],ݧNdgW$) `BԆaNJsNډQ _(Yo^att}я~L&!Nhsg2u[e#,ϊ:!x]M.GPM |>]UQUIH$v\:=˟vpK,hΊgFUVŢ i# dꢯR0LͤQIu4& pg,c?bw~/q饟Ķ-*QTmq$1 W^y5< ZS, G|dpc]=#w;jc{C՝~x~sojsM$ !2;R4?e˖-X] iO%͎L&IAaû=_Wz?abQ;O! N%vNޟߧ%=ؐL8&;9*hJh261*iSdR$$YF.ݎ˲(ת8B8 $IBB bp;[lK m==%Ǎ^&"󞅽dN\aif!3i~>v*0_pTlgddnXʲe/~:dC{IsXdpp*<49sr/օ(k{9'umHB7tR,uY6 zʃ >aZ;'?-'i|>Z[yGOq/fŽ0 t@ @<ǨÞbڵk[y:v"Kr!q`77YܩL*M2!O ɨ%/˶1M|>m*1~B5muǝ$ʅdY@")YIWLT ]G.,MWPddq.6aUزT(GWgGBHTե(xpl>Xsu LNqjatӴ9cik}l._*sKK B{X7w\qŕ$ ,UuU3 [l! H$4c<4lfժgkxWlأ!! vqe)X u(;Pe ]UlfW}CCOȲ,t]UVqc9~r^K%Ͷm3==M2$ yCitt|;|{'e #'qw( Eb!?щ骓\Ogf&Xd2I@VP?" IDATo"NnάmŠʿK%T$(`p+XBHdՀ0t   Z>sɈiZel5s!026w%L׊eY,^MW[L*aLDZQd.\G֦?# uLEqnf>/r'd{lxRMOOJqTU(?\}lܸj?vwW~*FdVgq|nw,KR_V /9|!_(ZUOdݺu\x>222B:ޫ 3-MWr9,$wu56nL,R=7dIb^OW}4ۛZ(>bֿ_~BIgbbX4TvYZ<T ݿUmE/q zym[MXhZIhb\:+dsyEMSF´cDca?Hi*bJ)T e "b4K$p%m 0t‹Vu~!X,b;C%VWPfuit&S]t?.:ݸB"3hM+<Y4-܇m9!&+zpeɝ4ŝ-if $L$IRLϤII3y||&os>ZeZn (,IhO1 O0# EhNĉG#ģaq">N '*|@:X4+̍neڜ;"0~CXrCѴikr؁/I޹!w&>RãSģ!CS,[L6_۶e9szH&G?3 Etuu3::J$Xi.f0SSSqpŷكz"s=p5P(ƶk?ӗ}D,YDŃ .i.&IR~c=SSS<۹@ނ";(7Ü{1{wl[ьT"l#q|1X)V}JSR4t (]Z ER44SM02>S$\|H4q\&RtY~oUźP(`VTJ&ʲ;K xZE("08Hs7K~N;U166FXlhwEQ*CCCLMMD^CݐNŸ1 .LӬmID3gyW5 W((u6l) IB PT +kf,["Uq(M:;;_GWBkk+{׻t:M: *޻ڽ1==ڵ/q]w݅iZ47'BH췠K9\EޮV_ɢawudtW_{ӗG>coq5z;g`\>4c 70(S3I,endIr[e YV],I?(gn۶1<=d||CHw?$ iǘɾ9餹)A,tLl@4->y_g2s1`Ʃds⮀4ÌO%)Mt\#tB ^yc3ŢY^]]9Vx+k?G8LMMQ(*{P(azzH$B(f=cccv7I(WkYamImMW dXv"ˮs,騲e yٹKmGW8 Z[[Q 6m}ه٬G4\.G6ejj`0H(*9*ދHkg?bh۶);DB?=4u]GHev4p N!ꅗ9CQ5|m^i*M($Slϖ!6mp ŢkQ:$JT%_YkBmMx{g;GetwkqQ/0=bj:̲'ATݝ\wtBsSCwC2!ɐ+ͷ&l2-Z$~s|_ͩzؖM*/dd|,TU9a|rlPZS%B8M|}Yk$ә_̝Lヌ|//ߟ\@*,)yxxlUCx뭷*FhjJk{ W^p*rvU]U*d]VAwCg!6*MN|߁\醺e;d̤27TC,K㏳h"8"n߹fJӤR)r\ņgvLNNk۹Yi?mheY;MYY¹\t r!U)9n4-"}}#lH_ݙ8O`x,C:(mipH$'YMV~?ÓO?W7084B:-_Z>鮗ɮ,; cZ^@ԒVL2M0/GbUCǶ\1W]fi4U-$ 102I2)۶1 X,B:eŊeg3"n{v*"NFT/P9.]o{/MMq8\k)sٹK85=4MA xb+ kH}2(dYDBUm.MdYb1h^3K^| DA5yRL4zz`V^ΗEV|EQhT  9\lkvhEg^&Vdlǡ`ۇX$BN'%(EDBģ=(/ǟZC?Ϯ}$SiF-M]*.(oC!;۬i(ṵl3<?X8HMuɷiإb',Q.BhG$}j_߹PUx,RgčM&Yr\}ᩌM`[+"sJju=$)- $3M&ke8$ 222ƓO.硇djj:::u!ܪt#(, ſi2a{qWfͳ 5_g1-tUE xW?)cd ]]rUU8ØLV&^<|̓5'h"crrOpaىi ;礹T,d2R)NyϮA?O=n~yfU$ w:IX48/9rn{F5'VLP(5W Cctld=v0w $ B XY繵O+yWvZIB\kMumlEQ\;R\Ud$Y"/042KnxUX/:omc|bӲ1 D4B<% 1tUedIFdY*Yl)A$ E |OS?M[FmfgGݖ`t {-" E,j V`2YښcqBYfd|l.St ʊXϠo'xG}t:EggmmmbeY IYRO&JYn\.sWOww'VN- 8}YT֮獍h2Xkuo2~v{`2Cꔰ4P|,댏~dY=K._ymNFGGī—eN8D|>SSSE/p]6?L&|>5Z:<o&/N|AL$3gN7BH[X8aYM4+!34 zx~sxU!W'9/O4>qt5|>@Ӳ獷ֲ7ykS?SȒTZ#!^ns !TT}-qLo˯cY>NSB6ZY]mLMMJ0 P(G-ufxǿ׾k̝ۋm5Dt9ԣYr!u{2u`@Tğ B |]E":c14{~t~ׅB&+V|&>+`jjJK|gܤdffd2~Gk|>kSO==͓O.w#W0@SSGifdWxS=#ZOia*GGVvw!proqTWK$F&xY[lxkcSHߧ,mwTSQ!S3IF&YKn(B8$ nMwL$W(0=dbjL&8PEᵼ$47+>z*),-\CHdfRds;:T|,35&ͳϜL{t5O=N*bMә3t:źuꫯrݿvI LS(4˲*^իWo{dBAZ[)5oB~=|q]vYo8ҳTǖ8_`E !Tj!_, #$ٺu*oo"_bm(B,ebb^믿N{{K X,R(› tZ.@reڻY|_6m&ف/|ܒpgX#B,! M3Y?EQpm x&8Y, ~?PBkoţOeOB$?U<ݽ8[.򸌦b~pۯc 30߇iuL*_W>}!Y8щRU$|^rި{JXL2ahxͤ39F&YVM^qsY:~;^ ҥfŊ47'k麕(#'q! uYB xu&֬݀,Krd2lCP(Ԯ( :eI[SSO8_'=ayolh4$ ^zez!&?hF6Zw)Ȗж^'x'ފa0]CY-ӏc5 mђ24:3/'gj[ y~:)J].RVzF-<ȓ<|o t}>Ëu[ck/w6Y-)>C0t`ZyqU϶Lr'3tr=|;\(KH*4MtrhTt6Ӧ붒fX,ah z~!^}dYD"A8.IE}f&ڴ e\kv|> B]. [b\zIz|&F]I Y-xu,ϊ;gf+,!}BY5i? Mf Al%as(t> du׬YpB:::eL&LXE>'NNf^ Nk/ɷ};wxᅵZ[I$⨪K:qΩGњ𾴿JHk709"fծ8%/Q/ 9V=|yI,j 㓬~e|t9=4k_}T:C(  Ș&300<Om8[k+V4-%jIBWdBb&ghX,V0M/|so0 ?$Agk< Y4Ia?YCA?olds!d?73\(dy$q"X]0Bd~o;K=Җ;U:Zt7?4tnAq  *o=Xn=p:@cIRٻYmwTs\{- xe|;~ヌM6mU$9 r{Uf,IE2ES/aN`dbn Pw D˜f~~z%=k׾HX$BSSV˳͍xo[mm-4 B 0wu_ǽEhGUպ}uqqtM% NV&[x|X=[vf&0P@o !{U=iY29Zrp$Sn;'::1xk^e2$''>q1Gy$`iFGG1MH=b3nmvYQUjͻ\]099ɋ/3<͓O.gڗD>h4۬Ţy,9wGwD8pcϛ]9 IDATD<5/NL Iv/~̣@@ (ߵ8% AqYlY)ChY$)Gۛ[f&]%kW3Nyi7ǹe4Ȯ<}[+JlBShIv,Ƕmbϸ8TR3S|J*UI*45WyX-YdKB-wAI,h~|sqFV]v}<C]NGrAZER*%w}o{$6ZFR%|"?ŧ>i?HWWH\&Mv3M41 ]; MWW?|;Azzzm{݊KY{N~>EoWH`_bEq̶^^~=7=r!IF,,,T6,H_] aD<J 4k4=%wEu=4.ccxOۿ;8qn\47#gG;{l٢lW^套^\zYX &|˲Zݛ!C;\CejM?d}=@q ˋ짿b@αPYV̕(!}uT,qY\P7 Ilu_TqL'-GӾdg*)9}AAۇ[5kX`oCU5T.Ij۲I"SIޱ֛i~Y.M{(x* s>O3>qÀyM{3*7֎&oYa=-=|>||+_stwiR'4Y N{JX惻2M XkOOOn8XeYվ?_瘙/E È-?p^Vp&}7|'>}+AakqKib's>vurڝ//)GILh6IMհL4i`&"fI8}\|\/"Hc j5(dLZmi,Y! 0-*XvE-]JTjM?q{P_7s A,J-AQ6h4ݴxs* %M񽟾.77e jxOGE&&vСC uVݴovp\l뜱\n9q5~/t]g``|^okݿO~'N0>>TU<ILAovΖxowۓTU%Ӄix,oN+zW')&DZm UZϷjcɓ96m /,JN;tM6uu4MQl5{;#~oVp1fFzbN.ww8i/V! HYe[juW$.^oPVjׯO3==Y\h@Fiض}VUQp}%Li~5Γ$c9g[hJE ]Q4UQRƺ!(Ul` # Ib Y>( R$Ip]u9}OK_2۷sO3rAFG122"tV-vf[&g"aSV[}.KxܫguAr{Q}| 4Mcz_ ?b^s &<&j(.6LEB1*c:q"׀ElEQ5Y\)Xeܚie1P.g_2+|'o=ʗJE(G2==Weos? < K ,;] &IR+l4HXMwwl63< _[dHFVb UAaJwwύ'F|:s\r/pLNN2??5t~s],'13Kԛv~}1`GLwbN]p9^+8Sԩ9u-( ~Z籱1"KKK-͘[j+[c5ufcfF6 npg1j?nQiE w{.78urDZ0Rvmع}rz3 ϱ$iNJkOHlYuzE`H){=R躘Uh=%64{Jgt/x~@yIlnU Ϟ}w9ٻw=,'N`糰 fqf|Xʛ r8CP4JRK.q9swy3g055MVEIJXD׍Lf<Nb|tĵnTõ ?Rkol:fȮۤ\. Rvf׮]vbppDZ[(TDk%Lh]" U-|ƅ s%Ξ=5EG{`%/U֛>ïx.*UMuL0Taچm5\BEFUu" TMe<:K ˁe ]8E 9=} _Wȑ9q$Gcbbccc,..njZ|,B/?@9 g_>fvum6+召ǝLI[WVp#"EX,ۇ$ M|;._LDXM__=,>qt/+S*:-q8)ygC?I bFxעaer`0 =IȯiÝٖOal?K&͠ xxWرz:CٶmCCBDZ7QN:m6is(B,..ry>CΝ;o3LN^^$aJR圖蜰2O~ B!o3PfdoN %{dX\\udxx;ws!8\Κy>r0J+ ˲WwV,ضMTP(gt]'2x+W;[T5,Fe0|Fӣ'O/ő#o~mmVJryf5f+e_-נv͊[;EE7iXܻ{XV䘷B@__,377K/G gϞRmc:jjcIT_œ|c(|0EBBZh"+UEfY5LC'vȥ(2?o~&/o/IiB)(w[og%FF8p ǎС90`7l- VXut]qr\y-.]Ĺs055MQ'Iʶ͖slF uQd{ >mC}slȵ)jMqmf? ^~],cϯ%I ryzqLog߾};v288! v.DOO7x À0Dgy80-pMPEQubm,..ݗx?-Ę2M*&0~u0ZZqGU^~g'?Ŷ-8t0GCڵ!FGGIRmzV` x.ҷ>ފ};0~/ n7ct].$IbnnǼ˼K[!`YR]Z"'I? |\tjB Xאe۶ZA&Qz|=p&8NPe"g-?oo|燯]s u98\.S.Wuqqx8?a: hb \@[ QQq FGG, MV&%\Y? UV} hx>i*]α9~p'CDQL8N>&""gDqY7Y2u4M^wԛx~*Ժjas >qt?{=^z̦4 B8ϑ W\ _%m311v۶ zA^VݴnѮ S*,(_W_g?o&K)ڢPȣijkF$Iyla\%P.:q(2fZH^-mK&a˲l5W.U FƱ;6~+bqM!!B}N:׾&ܹݻw{no xGyޮBFJͲe(eVcff9F{._˗/qTjjni؊ި}ŔZb](I,cQ5/Uo0×\ק宽9MR,,,"I##Cմ$~O3GP*=]t!ND޶ "Xm V^)(P3޷}ǜpr,R)n|!F`YVKUQ7kl߾1wm6kQWlIa~ LtBG7]bh_Ħ#(7(Pua-JJKk4DXR277 SSLNNr4SSP.i6}Xd e`[gq`/|0lDZ{N;Y* X,Wq,?_d os%tM}hheY&h6=y8y$Ǐg۶1$I^ST:7fVNA7 jrG^Q@SX)5M$apV,V\%ŧ=ÕYk,UTj jMz~ {Aj(嚦A6)m9KE.R̋0  RWt9 d$a]G :Pn4ck|<}lO^?ÅKZř͸*lڲ… 9s$y۶gÎncppA,K uF53|Gyok*bqI|bfgg9<Ν̙Ӽۜ;wi|0:K6*?$c?މQ*$A(Lw)dKۈ/3xE`9d]U/ZQE;6ZQ=kܳA~Skv4H˲[6 E*̥R>fpp>z{{D.P(D,KMaqԢf]Gٍ%rF~|0h277KVVͦיcqq%f˒@U;S5 ߩ"U;fj a|vbsG$B(0Pst /yLlokż?,u0СÜ<4O>$wFu:r6{00V1dmeQѣr5%J[w,3m~Hhylj(z~H$$A)Ȓ5uYQ$>/W$c,G1$ەDZP^EñMLCo͉AYR- C|^N̏_;[g?l^6;xkϭDNcv cz ?Q2dttw0>>91Dww7#ƽR75%nW<,@V\ӴtM麎TfffRjEΟ?{v#`6,ڬn0*6: “|'0 M$ 5Rc22>Ic] ZuUvRX˜:*wf4x#?e77]FY*Ta<> Dla&|. BbHT$/R() I.K}g&ab&q@%1fh6]fzA&T*UACVkT*6e&+0c+BWWċ;m_xOM!o*Z} IDATF'=4M! C,]*?xn͗pyb-ziemɓ@ J2MQpg"Ɗz0O<ĚۏkHH SkxđJ $2 k8&AMׇ6bjrS ℄Rb޾:߉{- e BAlr 4cwrN0O8>29n/g]d~$IAUdppb``K%lAons]k!kLm60nG5!LLsRZ9"/_frr+W.GmiB2s6%%Io3\S֑%qn04t94msa̲fƢ^n=߯d@DQTxO"Z~UQ3kyyb?{'FQyM꽝؈U* P X,WT<{Mw&-SבSʊz#3 ]&vrÕ!I2AP7}z]X1??ǵkטdj_L geYtwLCC$J_ ?q5 ,mUtD.$>.MJ֦M"SV_N 5jݥm'AQ96[g?o&opVo OO"o !I\j5AW2|$[YȲry~;{G8ylOMtCuM0P!bEQ̕k?sO/KfrjMt$&7c(aqq0n*Ѱ3\VKٿj5+PÚ/و$$۝jqoLahTSjȭ.׃8NX,*<'Ox>~A5n\8SSS੪-V_PX,CTj EJ%1.gvlcYVC)g|8r;QT0,FxKRS_r",,,0rjZ I`:ih[!G*?u>wnU\Gıc&g6iRJ1ma`YZ76Q55{ډ')cy׹pi_I}'9RRQ#{ٵ}s` BzhZJIO?‹^?uzsLRw]4MAEJ._j7cm^7EzGB@%/%"KTvuw7TdڣhWn XN/I-NЉ#{9qd/oM}2auhdXk/{yn<6Q~D"f!ͦwӹ Y KUFw1o|i^88_8ufh4= ʹHr*'IHtYkf/IH( Hx3:+IUl~$=Q:R)pG,hKaQo3#5˖Nr /Y(,J%MQ"S;8I֤"q>\OX~""3>ϾQ>1Μ̛g.pe!E< )U;, ˲nwE7A0;;ߣtt-{Y{QӇhB!e Pc $=;k3 $ (m6Qc][`>v05CScnFQa~]ޮr&lzg8z`'GW>܉Ț&{'FxnH1x"c4Mt榃0P 4/Vjjʶ8~`'GdRcjz\\cn"NaF$)U~ @5G CHg[!2 e6*syMeY;v5r^Ǭ,@' Db daMY8AFUQ*&Նqp~p#j)HcrmS}g.2y}0 EǍrJz $z04tfb!UD$' yǢwH');@%e&p$eY6un9u{e<wx5\?Ns(,?$:ȢՉG= 4Kf-wB DR7Pmqh8nT j/U_(3PaZVwi>yAkOHbu39$s)3>R}Z%I6,P[|MON"Z <q k a2Eþ߀9N=gXyIJ TYNP4b2]\  |@Gxi~;>bRݷvF"n^MCc|O8C- KUYnuPXֿC0tf-+3,*$IRdY6 aC~~o'˕ks4\SBT{|vppvlA2@QD!gF KBU^@֍kuᗫir6=9U? 0 rMCQTEfOO'ip^7s( cfkvd$,--y]]]-*wСC n@^s{y*E:6Qe$/H’M\!a 7\G N=hМQEJBiڻ`vKSq"}pFp^ÞC<߷6H^:zH,LSw&cw#IkšR`ݺ=w=]]]ZHglL7\ '|x:?{,}bz(vBC2tسXtbYBŔ Be@RdM X@4iYFQYFU ]AMnx6 a!a UM3h.޽{%s!Ll;=G٤V!B.ZQvܹ6zmm3$eꤌU䴃Ȋ&45}@Fd4;47=Tz\]@d4q5*u!08wb=95 2x|>چ(,,UY(Pdi^teYTpo!D 'NjGö,KWňJmrgWctqg.ƙjz툂=Ba:SLld&FN3` )H(W +N`' LZX*$m j5,СC~YT*GInr,ur=m`j1dYU$ST ]G74tURh%͞oRozv P2ZſzåRk*2/FuD'Y$d: 6Y@T i4M=M?+ qśl]nuEgJ$I޽{)J3j5]1li+g?"D4uK2 4UITh7]\WН JTdTP y}< &g}0Bhz܉=N4 9]ۇ9~pT!3KatNr6v"R!XnǨj"rbGQq`Y4-IZUkD[Dteg/\+ KU&M-e`yb>voflcuP'%XxtQ_ϥJHā>dYo)BF,,,Pՙ`۶mTUe4"lSPՔtbTtۦFtX|úp=jkFnJ@7;F;NxG,Ua*:"ꃈI.߇Y"|6}ݻw3::z#E!"^B.c[X\\\Qih*읒;a8&=;@ MS)j*9ۢti>~% lhngEi,kB296Ğ#p2d~9.Or45\ vD~X().rh8{'F2u dv(,_hٮ"G!!h,cj@gH8/EQt`M>IkwkPT-W\u.|t*ZjjЉǶ-5*0<@7#= th՝x#;aTMj&~InLTA_\xf1MsMVI@KzݷbppcQUU* Ja Œw|wK8At,]^MowIP|Ʊ-G)T ] 71tbf//39=Y.\RkP77\=O?Gz:8;_E1]1a2R6B 6zm86x$Q *#sL8FSl#ճZ Txݪw}bU$QV- D;lK0&b>XԸrm\],RNTG;LCtzJu醴@wΩ6$!,rIlx~HE #Ibk Ð8ה|KDȲ̎; l.ߴ,Kitw?Xaryzja ['S' L\C1żMoW1fS'neX&tq /KF/UIJc|#8ZRε.Mpuzم2{ScBj`MC(rle(ۆ.9RkPTIL +<&?r8T]FW6E*ҚH Uд&R!G^R+s,4ťZQ57΁XIPmSc2Eo@w)OOR!T9EBǂ6\;6\%ӎ}H_ Ia)VVkH0 ]\;b?Vju\lqqZm `( 1t ]׉Os=E8IC':0 Viz~tH6jMt*lԆR{h>s &39=ϵMZII?(m4tI1U`ώaƆ릘4 6nȷYx8NZlCpQzT#lUű a3M=I#I6pfYcMVY&/,ENx+e 02vGΗbXa\>qKUOޤ{(=5UI>omXcbRޡ);hNZ]R m6 | 8Nu$ASUL]GV8Ӱ,!%2###+zA" RYe~`saaJFg["qr'XNwW:@+s5 <gpppEGwwׯOߑ( jzi4bjI!Mn^Ukǻ$KEW1PC%Kts]D14hJ(됥|A2$ =e\OE蚂c$IroWF ]-SOEY:Q-V9d0pEUh2t}0$nG)}Cq-wMUu Suf*@*_VjyfzgXaIBE&c*c1~6=xFBGV+ĩ`HVffvWĩbEbr]L\aaa񁞷5wz%InPIBwij;щSx~bQD?M{s} XgV9T!l ,k,t@ vtیi+~7(Ζ&eS,[@OWB&g*Di=BOT%H&w@mUU(EK I&e r*+$kwbRԕK2eCPd! *E؉N<bNQ+ipq IhNUQRau `q*=== kYѨQ.?Ԛr c!M8N04cuם!rQktr2 o>'$$i 8&]CCE1A(Ԧh,U,U)J! HEӂT8-ufȓ呺:cŜMUȓw,6Ia(XGF*)%y?a$t0dIň^Nĭϭӕ$y:$ѰDί`$ L=DȪ&gӉNlQ%Pzӣ\nYq,tMk=߽$IB%At.%IB>TbAyA4KKz~](׊}];I|s+tʝXT%lKt VPj/A- ":CRh'oaDF~@!Mף zå0UC IDAT :Ĉ\q a$ ~gw$A4TUdYBK4UK_i}!(@elA9.: "r*&P5%%e]l^P(6϶cv:tJڝe{,IIaMեDT-@QT$9NtCq 5mYX؆bN@H3Ni"Įf7e(T*ʒRۘToo]^O0bv='ׯ_k% uJ0ѭH$AqăԢigFJ7o |c\NZP7*,K`YNAnM8IAuuon E1"*(2J*șEdYj[ox`f?[㕉k u NiDABkDžI w8kzYБӋD':щNB zu_wMY,[͛kB?@Z teY& ՚K{{'^ JLOO{È)5h3QD6*8i}g**؉G3dY+[8DarEQ~:_Ȳr 3=AFJudoUkQ,l0jց)^%qQtD3y߼qպ-ayf"kkk|3Im~X&)2,\ 1ye8%N,bw7QBr#y{; !lZ)9%2< yS)Ϟ=/]7,q7(m8n>,ӅB(0YF\$K3V7[,W-ZxrsfVe)uo QWP(ܰ"RVI`jjjٳgtzJ;bQiFR{ Yf}B!$ .ڼft$R%2uGUVoU"Cy?HnJ ZrpY!aH$h:/CQ.FGc_z=M \^wrZR|`l6i6土?$Ѻ7บɱVdbT* q7Z繄^8N+RgYF٭yw^8{yf@, yfvIal.4nXβq]w_<' "&×jFGy,˗cKT$ Z;p~TؠRrɬr277gji6[ۭrϞ=bb߷4<ƪ(kI^eqWgY(Cf,i^Tڬ,wN8ٝ]QDu|] *n}M,B? QD.llSJCƗeB!nZ|ctrm#_",RD1 XX8NR!l!0p~%ϥڭ8Isd6Hg;|ڨkUU}?_V^yXYvsJ) g\!I;\j~+?F0ݪ8+S.hG1R-{aKXOxg(g潂{qBm@{_ْIlw7x˫=< wꭍ̲W+kݕaCyi،( Bq+bFwr5ifp],=#M{>}NCt7u1(2jZl!Kfscc Cg}ScDjqd|;bWϗkg}Ƙ}K{[08xs;ޖV[o{X2u]*<1pL0 !AXʥVV}Sc8Z)>>*aff҅ w+e]?/2v\)H Giþ1%ZZK7XK¶!MS2,3y6:3Ѫ? }޽axGPycOqp|x.+ |;p}wbf:0\8Ag!UYfp]R)Xhr`R(W8}j)u;U.8,Kll ǎ;-W(݄( xDOFV q+~*m Y{9 m./ƚfP*u2{ZPžo]9NZk\G8{sWa"8 :hXK)˲_+Mu8-6\|ǡgb-bk #"ӓUcwTX,K/>DQDټc(w( oJ/ jousW,Jv75d!B 1D;x 6vk:Ͳ~zU}k)qk W~7Rm⵽.+p^M\ZͲYq?43G!oQRk8NP)6_>5ZB#Yfň}{yE~[8.({zM֒$;_f<2RshVWȲl=l6땂n/aߞQ'%;,y=q ՛}7Mo )6uˡ(p VW^ZXnX`kŷݕ7؍G0+E!r"BG;T<8J3<׽YQk-rK|߅yם5޼dfVAm K|k_\.8!̎g,czz/ (*P*]ޝ լn%,3]g?#FFFqggK:=ч`m^|MBp:>imwu54MSm-z<]d!âqh>ʥ4v\GZKVw7g?Bm3֛|uuuGWWo:\wx۰fff_n(;O!Fʴz!pVфpe(,c}sL&Bq:O? ôڃUNӔQ(~g?KTz[(VJnji?^dϞ?J)<9t}Bq18A1h+5rXt@ \|dFB!F)hTΥi8>w>h5o9,pryx[~~__etJ;t{=:<&M͎[w !Yc󖌨m @,u\7H妳BafYg0CMeLN~3lllCQ.IӤZNsKteJ)4\FG>Gqggg a322V[J)Z|dzO21ZȬB[f;pm+lpo[XNԵ֖[.+YY!p1Xo)gä!5rfall0 MAC322֚un9,htxO\??//.ccdYV=c|OEmBpnIZ)5P*c, |w}dB!ĵf'i?y8#RgYFT=N8{gyO}<ԷnY_ MS\74V[& (*S,z3g/;W5VWW$y+*^BY>'y4kM B!n?8xfZ[ٳgػ-a9 [dx>IXBR4:FJ8/|^Bx=˫8#oB!>b a:F)3 Y;>zގG !7hBm ~g2M 72Qiri^u {O|'x1=g@"J8B5;ƅ X^^V[^_avvy׋h QTX,8't3<('b ׶'˲J[hfKxZE!~$=|_= Sc23Z<(077gSٿS022(rW^y ;kejj~'~VEe)~[)xJy@ZF)f{&(N}0{@ !d! |ϡ](F0n[XW [GiG̲B]bu}$?=( [T?:n1Xk7x^%*o]&'n8&*H4M-P[~ۍC;Jcv;zمe!;IK8dZ7>;^C`;Y6Y|Gk4EzG !աWZ{Siu]]t94?%NRVVBee,ʪ_zZaY;AQ*@j#B4c?3?'?A֛mWAYe&MVJQ_ohws1|c~i[B!:>[gezsۖa,cek-քYe!c 10R)?} Q n>ev^0X\O}J@}!KB fk)B21`IC_}ZS,,sʲM!;ץcb5a>__chy.iu4ifXZY'!~aߡG!.&KE~zUT<Z:aj؎ }Y-d a6?z~/<3+j d+p&2W6zLU(m01ZͿ͊RS!.Η31Зao@ѠxRD!,# P_k}GS;__y +h/PiJ)tB뱺$2&*|O~ƚdyɒY&b'bUuYe{㨁²Q!JB!l!I3|erB}zɱ*?c?^'WO05r@{.=(ZݘV8)D!3O<>GLNbP*EXk1JPB2[B c!Sܞe8z^cY!ĝ$2G11VѦݱ/'o{_I]\`vq%/Q )V+k\aC]Z43tn/KPJC&x4O=}$'>4g.?3B $u OxxyH݈h7{J=ڭ쫶0%3Z̐$)qiZ+|ϣ\a(Or>f|B%n4Q(J1B+Ef2٢,P*] eڭ{;IhǹmX*02Bq֒eJ)F% FMݥy.=ȓrqٙy]\dvFmuFVZhG+\Ghv4ZW\y%,5cȶ~˽`w=QZk\O91\10YFۺ4gG>B@?LBwRP~mBX Ǽ9HK/!w_p٥BD)^LKI$<3T^Q0Z) hUfYf./6kA87`M#v_f^C!Rsq" iɋ+kP²ʻ-a9߳A8 ( |Bաu4Rf)qKRr iF!5]]Q<0k3ʎ)x..:cb`2,g"2¦ 5ߖlKr!M !,c,Y+M!r(L?Pg!IS4?K߫3{alu_֚qp]s]ӸVyoec,I*7Bi\w8ҕ,s|)"02Bqgk1 xKH(Kfr|ֹbK 8J (]QZKUQ̀YCBqR5X$k)}|fyo^igYB{q_\U32eo<纨!%B!BqoQ@j2<1Zk[jmòRw^*82,B!hGoaqTMz(e<,[ȌYe!B!oYF>f9akm5]߳A -(qB!B񖼬jwu0Zok-7B!BFPRJ] /keVY!B!5bHUY uvkRj>˙1OfB@ݥjhi4;l4۴;]ju:5t{1 ˫k XF%*"11Zaj|j*cUG !ĝJAD( i; YWDQ䮯jXxR[!c^P_kTgaR7Z4Zm.vf+>#eƪ쟞'26R!=yFãR62췅J1>ȃZ {>2l!^f-V_+,,Y\gvq8NޱcbW_\7/=R#{7~wB㬵Cl fe{ 2~c\Bc2#!.`b^T[cni%!^3Tti:4۝榸gg8yvGc>'> ӓc !mk]Pw' 1c,B!8TgieZ}Z}5jk,=c9ynf%gG'o!M4(D>a44MgmDZ8 )Z{A12,BnnfCev2 5..Y;\Nlu1/>ď~߷1Z-H!nc,(),`͑&\2ٳ,Bv˩s/չ0ufkrnB7>_yZNB2 m("gƀB!дݭZr ϱdѺga~qx8?E\"Nnztr5:QC !Yfs[!O4mN_̅9Nfj4[99 _zg/sqA9!B 8a<\! ]cfX Zk?G-Ktn/~~=!2_lQ 4 De!4bV8}~9}a:K+tP?{HNB dwKr* F)ڍCB! ^B*s+\]y^ZHݎ{LſfĨ!8'GcRT,sw5,'IzΗa" ($<1.BqWt{;=W8}~ 8sf g|_\_u9!B1PXs,YՎKyg] ZkjJL- !,V8Rs]\"ݞ,++\NB !0[km6Y؏ @jX !GeamI9ys+7i;]9Q~g~#B{reTiR1<\l!xg 旘]Xa~ /̱T[$v/BXk1&p6m ;W;8Z˫/ⶅf:g9sas3/jwi:dRGC ^|~BF sg(jXNS| XrQ"bs0K,qqn*M9A\Y˯}!̨0B -+J0I}4(B|#ktdBYhRoh8qv8}~:NO nwܱy9#r2bB[k3Pgk 1sю3fB!AZ8q料_Zaayم8$X?, w7T)Ee`* !F*g0ȩs,, iIw_;ɹR[!v:jۭ06j_^x!iFobU:]YB-W7|BCKڝ_M BPØdUY u2xegO)E1O,X2K>?ǹK IB!߯EkMDS*"|g/ϲvE܋i46X_ϋüC/Ώ|߷:Bq1K RaZ=aY&^ ?vF3y..덖g;z!##TFT+U*##T*(s=(u= Q  5hwfOKXB3 nWRjMIVBDf54mN9{q k :ݞ{reJi}<ϣP,2::Jud4%V)W*A C0}LaŘ1dSE8Z4Mh4t]봚-><(^}{_`}uu󋯝#VB{[òU!Njw9?s/s~fgfdo0CbddrBRRR)W(W*[m3 npe`y?ZFyI0;w:+uVWuz=>{?{[oYw50/RT!ne|bE=Ԗom-Π[{,C+-b@ k .-橋~$CLكyAX6֠9+[ki6lX^Zd^gue B6[f[U]yĽ.왞z0 ٻ?3.yZʛY!BUlGkʅTL!uIڛg4̥eV6ubq#ݷ)Fr"y+Rr$Q"[Zk8fii399IpkuuqLbmm3gNy304[k ÐZk/k-RH)ՋW8oJ> BqS9P(D5 8PfYmF)e&K{d,Bܟ-Nًy"?G.':2BudRcLLL25=[ŰPjkYu۽8s.kk(0(BF{-;lU[k/^uO:U+/ns eddju,Xgii9^\׽lk-Bv{?~ZeVە$) Ku ⮲7wq4cG ˀ[~ eso RءGR[qh/y񵓼)k/`vM} iZ|(l-v:[n םVWY[Oylۖz8ngj5ٷccyKc̎o~R1FGX__c~~>5f[kkaVCy5mkq=JuZm.3 |G#X8am_y:Kb!C{y[;?4bAN؝l (p/-l.B{ɳ3[m^y ܵy} kz-ޜAX]~W yףGCl1ALA^s FF<㸮GTeTS_kp9<}c 7jwy9^;~~~r2}ݥVZr_{ 8rf#' ARV)J~A80bdvYq{y^:v7O]7H81[ŝ6Ԣd0{ fC=p{0{k[$ Y!c<<}O+/oU-2Ο=g9C|C'u\$ygKQ@ӡP(tZsxGT*לCf̩vkvH46p]0 },p]Gy++5N:IСo R*Ֆ= ln[^t)D|mu%^~ʧم޸2ïyY~o$ӓcrPq2 }v{ ;7T?)=B{/!-V9wq:/;:^,'NMW:bH^K\XPV)xtmΟ>o)iE^PTwS{`t|q1$qL/PJg??1~ gN]G_a~V8w Ϟ#|w|'=0-|u;hl0t8s4˼?S֠usvz=NvM&`-JU Q@FxGyKz=~0ַfέdP.W<$Iv%,/,Y]oJX*IR:?7^=y!vgWY?ٿIovX.ˬdehq8{4KĞiGdlb;{ڗƯq׷k-"O;su.I5֌OpرuqݚQcVHvyu5Z&,d1:fxE^ NcѺc'_ u~'sE;qhw|UP@AX|%~\!p~f|U^z\'rb ~j^<0S{>&3{dbgã?lMv$!!z"wCDDiDzHlVx ʼã̙sϷFb4;ΐ㰠BŬN'-h}^2s&V,Y̼/>#9%~CѾ#:χ``g /]ןM'{_fXjkY\1?5̊Bdd$ 鞭h U^cS]]MY!\Z$9nw5# 'T䷰j#ZٸnZjFl6 {j-<m^n maIU6@EZY +:;-ZR~"Uޯ(UB0!GcUﲊi'3;XVd$A9M)G(DDFҵgoz Dl|`; &.x"`Yl:5{v /GөK7-+ fA tcz^4mj# R]]MQQ!5DX#*U+C:AIi1fȲb4b4 Ćf{OW_"I2Y /f6OaI_t:Yqw=6O3&1UGF|¹ikrvv;pJC%ADoУh B:ua4o χޠKy"6 :c0(ntju4IJdBPhBgVC2DHV% IL.t2[ׯc, } fؘ؝N<76Wt( (R[[Ü/>s B H@ [>Ґ( {tGyy:N;FYO7\DNL&qqH9'2&ښ߅ǟ,,)9'kؾ' 2ٗS@N^?f+^{i*L\_nF@Vd$Y>Y{ߺ_6dŚj)H&6+l6lݼ]Yy7Ͽx"FvXu+Wi1hF U^ bH (زCTQZ\L0&h&0%$El\‘RErssg.|>?III" Fᔧ]ڏj`0n*BDD$ʨ j $Γ[|MaI9I l)`lGwY(g'ӭc+u!qC+Ҩa r 'tOAuZ ZFr/:ĢYn;9yꀜ 0t:""#p888N,MPҒb~~)EWֲ%&_Am|((zΒys1͌h<ڵGW*Ƃ C955IiQ!uuuD9DԷjծ=f%""jj Թ\RTϦ5(;lK-h۱ Iv$I+#qhӡ#;}| +-fҭW_0+iӡo ;lnILl2qqVNGdڪzOri4),, 2JNN114mUKV~Q>(L&^99ٴiqLÍFAeEE3<&}Run KU|RrSTZ]ټc?ye9U5.zCrtoN DԈj E^c9$^`@_***'_6UXnZ$ ? ejecw8DDF]Yj~? б9܅eݗ_/k':&My굷xi|pXvQQ!~'N"YZ(컱-NEYY0I̤(;툨7,`4ЈSSOidd$eTcFqSA"A "+&aJ jdf'+[RP\v֏ip8$QC$IaD՜p/AqqqˡG8e!|PQQQi\*]\KW/! "VlQvq8fF#?G%zaK8b$@H( ں̥IR27s?P.raDNFP\Xkط{'мekF^4$[g`S=?KF% ZɌb!jiZ MK.Aqam~)3ݺ3`5Cp财(|c/{~|[Ar4>xu~Q(/O3IMK#fYQpDw׎.j9p EvO7 (TUUR]S3qkPh8$!M>^фr ٢upBQvᅩd&EQAI[SyEH b~ݸ{r8TQM˭QA/QP}^/u@TDC63XE rŠRQQ9e,["Z»,ӤiX8NN'6[%#GBK(:uf=;eZ`w8iծ= T:D]J2"Zښb"/FMjz:vG4^ϞަY˖7]g` δIlEMU۶xp1O8|$-۶%]Wǀa#`b\r6?"6dEׇ vvU˥`*fߺ~0D yH.Ž3%*6 gjQM҈oّ[VG1Zʊ "##eE *.-WgX< '*iց"jj8"%_tWq{}$YM+N>Uӌ?d_N%eSRVIAq9Ň*(T `PwD2Ogu@TIJ,F{že^O谥rYF>j%e9@BՆ3:ظx^N KjӘVKeEK-q$5^m[jt>CG.޵qj~\DvRSRϜwvSRѯ?\,%i-[adˤ4 7}?fɭ<9}Q[SMxy;(8xQY_0eXmNbW3Xh4>ТFD@x|=nlM0E)N,A$)-@%tFq)Hu`7NU$5px}ꋻ*)jA;贺Ri>_BjR:ECՔWWPJfNVqi.G-y&.kQooF 7eAdPY>Ʀrl޹f.d\u0z7ހ$6.6kpb0[,!A^;EQNJ5#ŭǥK (k︋֭{MfnXǜ1)t `0MTU0j腫`˺54oy/ +eYV$%7(? "4-Z.U {" #vgL fV(\mdI"5s&JKh۩ =˦ukxoL<˖[U\{]8cؒ$xIDδbQԹ\j۞yoиYL:AuVzQQs3P_vk:-׍`DDsil*A\ EQh5~~?:w?(--eHˎ n}"Xrnώ$+,eɧC 3ykHOMTD%4R/EQt,Q(ʀ7UTT:7^E+ռGajap`@ӡhe) Zao䯫VRTTpF+ox=&7m`_1qdt ?pu=|4MKpi,?{t4獾~Zg`s& ѾUKaكɄ#:gt4Xh9"EWM ZjkjٿCxnQQ8Nf0?DZɠk>޶_~Asz0Ydt-sMiAI1J˪xO7i gHue4j#4ZUţr : Q?-xoWcAtDDF@|Bl("V"K2;mٶe3w{!Z-^Cy&vn̢snӠڵ ~^ǰ 2`0_>QrӢhɠܵ?,#!1Cjٱy$&7E {磤R KMup8:H-d|rgRZTbSD9ݵE_!M]z9׬f͊;h(=ˬO>?rmgYS01&ſ\Z:ſ7<~ ]WGé(;Ĵ'ڼq){Bsb IzkD%U^394nklz] ~zꪪpP/k 1q'7D`P[J),)gˮ,v?ʨQ3c8PP#/}YV{ oAitT5lU'rAYVXt"jE}?Vgߞ7 *ʎ$&686+AՆgVޝN#/ Vh R]0yݹo>qOyBYhЈ"sgL'{^r-2ڲcfϚIRJ*<+~h42xhrgw iݾ}&{_&?.?d1q@>6:W-F14Mm} ȒLy!`Cؽu++  4IJS4IJ_W?~ss3cZiŗ_QKLeu\w]t2y鱇(-,nBՆs7Mێp\x%EE|;alB$&L ߭'Y;Z $!b A-UV-gVhEQXf*ʩj?@LlI]U5.U~d'+m).P#lߓS÷OVYN(1WBKuB`!t+rvys|YYFѠqFG@ll,6zW%>YNFU+R8SpVKqQ_~.m;&5Z-@/>*_ųdӏ u>蛹8QC喭4b7mdtݗ S˖P\GL|t}nf?Ey`0@ey9,h;ш"QhZmGD@㮣+(?fi<GL [ׯϦӲM[.p);lby IDAT2j 3?x0~;%338^xC}>^{)na:p\۟]/ѴY{Xr(v՗\y *Ye,+$?"6-IA͑YBCOut:~?55DH(Xm6 FcxcS][GQ*%Kʪزs?[veq 2jWoI\4]6J 3r#[,***ѣ ?&蘐@'.!!TK*(l\Po%WNEj@QLuz@5۲,;o {u|;3f⥬]30jŬYY8|$Yl|y!g_&  ]E.];ٺq=:&ѱqأiVKtl,:CUE}ur|^7zf<&ٱRWGYY? }gMKpٵ7 طkWv'.E|<>UGx0-aї^`0`0Gs>J CJˑhZn7QQQV`2SUG[נY$XS||E~۩/Cˢ@eG dLdd$MIhD= %nt8W^(,3ݷ \s]({LC5 :Ѻ}{q|;{6z&jeٷIoӆ[tڝˮuE Mt:` @Qa>ee޶CMUehw:E SS֫7FC0@N?|*[a+J?,e2j ??.^؉QUYq8T\Goʕ7Ƃ9_Cqۃ##F Gx M徇x;Y-Hm_kZV>VP_nl Z_M9Ap\ i(ݬ-ś^=IQ0 עAEyEBF+HJJOZ9XPzV~j\,,elٵ2*]xqd$RO$3yhZ; 5BH?ʊxfAh#UTksӶE h?PE ^^Uw#?!&6fim߁=zҥk7bw80M@091/%fcE&onJRsKhLށ\6]۶0ApDǐ<-]{].B١R6YM9D=`0eXWd{ ~{~ZJC拙1_1tՇ?zq]NQA>ͥߠP7pNy%"vgx7i-ZR]Q::hD򨬬n7yAh4TTT{ϰ~8򺮶.Bo4DLL wdYBCQ ɉǬ-"~M6mg4΢{L(Za6!r*/:5ۘ|"f/X=ٔW5*anJs0'&OO5@-ԧ3F^}agfjʉmL?6JSmE$N4^QBQ***Ȳk}uQtXEDFp:InB||xfKVm_1±/ofLd0veȲŒw$In>-e,/gWq%iݯ<ؿy_17zZ`%[x{wBmL6_Cξ}Hnv6׭w~#:lAxÇgDMmߺ,'X juh:d) OMVG? AZE`4RzJ$$6x&OԹ]ް2jT_)Jh(Zӧkk= %$֎AMZR,Ͽ7`P:-ƝܼbޞnI1j\n U,ISHֵ !Hy||! ظ8$&O\\d_!"JjX &^ʪ':.|,FV^]n7b4?-^H^n..Bz6|;g6rӮSWr;aƵ̝9*""#IJM%!1X""zPWm fenJjkDFЪm{.:$)?=Ov;(7^%EK| ~n!

Zee1s<ƻ36)7w~Uu lQQk*#IB,"jN6:t?͘K.gb Evl.:^}[/><< >HjtZdW?v3zD6]WMgu7vg` %*{wdhu߭ ͆ jtt#%H"o3*O=5CTfz=hp'G|lZA())1|>I[7;3sIk?*-da'* %TN8rM'6=s{O$9, xJ2 I+}"_x-Ӓht.ȥNXAU***3r{'菴%"$R934 ݽ+yFE1‹BNǁ,mZ[@8+":Fѡ#K^n6?>gEXp>)Mb9Wr;?/[B\ullʸSp[ӣo96מyxFݺSQVƯ+~bs8TRdAgГϢ!w>֭χ!!1sѤXزa?,\Y39o~)g_A=y՗rN//> E<}?Vm2XW\r5|Λ\ym|̞!\^/d kZv^xLr4A`Uװnϸ+o\szf:TEQF?:ŰN#E^wVz=tU7th4"Q"X$ÿxNgN",EAC~XvnlŦ]*gHӧK+zujAT:gAPB%$I x:g\^cÜ L}mrxy[ԗrZ9ʳT#2[n˞34GqDڬ9Ft:$Xby |W{~$D|M^}HHJ {A@OLbؼX\Ǟ;| p>u.]w#sgLGЈLF~Z¼\~ݍ,^~qvn{Qv y++i֜^֪V[f*u~ zԹj$sNvl򥋰FrzIr3qѷLz-=CWx?Ә=#k > gL +.b̄I]u[0vdvlħ=m3& W'ʙ"Gc>=Pçr1w3ގNi֌䦩,Z/<>Bq;4|dyCQ`Jo0eZss` >9=9C.Yd1]{= V˯W_UtڍGRj Sne SQv)7Ba^yq(In(j׃墪|}Nod2aE@Vm>vElZ1`Hxvṅ4~)Wzy勿gd{osۃ{dW":u;%f+WIo݆kox~ >Ngʟѷ?,3r8-P-6ѽg/q{dYh4e㪮pX6V\n"##[HDF<xh8Eb6zbO),)k[Dn~1g}d(T?xg`1iӬ iC: h :@`PBV<ƍyѹs^2\01'zvɠMzSub9&+ '#55-}|bw&F@9tr֐u Qtuh2$))4Kkd . "{wMd;t1 x@-!0-xϹjj s!f-Ba}Fu>ˮB.4O~̧oQcKhǯF]xٶyp  h4( 5Ude!s33(r,hlު5۷E'0rxOYdSz^}ZsÏc4cXly^y |>cr0;j5o{L'fkح;z)D r%2L @ZzK /f" 5l޸󆏀㌌5"VJpi4ٵ{'W ݉fK( &J\.6[:3|`;TZ^Iiy%q>H~Nک:2'ބ~0GLF^N~ēgV̜v+o}S*=^?/57 ɠN($a1TVb85e7͚FsRaŬX-IHNIp"$!Kjʵۻ7͋tN$)^gȊ*uD$Nϒy_$}e 8w0/^ ݜ `,cKܵYY\q-xM:vNl|s?E073aF䝗_$s.]v9} ` J߻KsRҚӥG/$ew&Pޚj(*(`_ h۹ %%9z}~)m:t↻eݪLnA}^xqP^y ~IzyoknO>b”\zu|{\rT>]Vae˙gL&PulKX<+֯^E\0a;?\E{˦^\؊$I(gt4j+;짥o }>mRbujjp\DH bw80[,Թ\'E,{~*HOmrZײ{YvɡuUN|o0u8"9Cs@6)4K%> B@e i[=.angRRVuJsցB,\CՉD (IZ |"$rMPTTT`Pb׾"[,RRh"& Fr 76ڡCn$&7 2"Eׇ+8ku: ضq#W~'E̥׹uO2KӹG/6YMF.(†_Vqmw07h٦-MS7ݟqݝw#"v3w߯NtL $nvҦ]{&]}-ڶ`4j $,.AbrS:ty#vwvV-}DZmyб9|+y<<4~_xw><w?>ɵœ}Vڳ4|~\]y\p$f!]{bU2h8cb ,c` YzGPHMov,DQ];vpN^x]YdP/? Vfilٲ:WfWVTFDI ׷Aա멭i \N'aC ']2Nޙ˚MY|=%eG cC-bthݔmRг-oNdDAshz<>[QRɜTNʩ-MdYiOԘEt|Z# 0D6Z7:朎-qWQ9(-K&ϲ\/~N'vg>hf 9^uDQ_VFa•S;5l=5~BcV/gJX`>$a0z<1qP.hб{wf!ٲn-7u/Ņ|\<*f#UxMCsw2 qĄևKեdY$ FC>w{ ٟ|Hiqq8\dYW^]Ό ޞV_poS7QTP˦=U7ƊeKHKoAQ~*˰;ݔq1dmzz H#I)|phR+cL&/Y6)L 4q ۷b;zrl&??^N=eQe P^VCzzZVCh4sv*+*NZh3JNٺcՆ9}~ 2Sf7%#iȤMrU8cPN  H]kt@s-Hr0dY!^tfj\\,+\'t IDAT6sIHhCFx:ںS~(9,2pP.:w-N0PY:Jmۓ I "kWL=1Y,aj)G鮮{yr_̅K/ "Kl߼ \y5$yë|Wcn()+'W-i DRnvz'xvW\w=7}_ck{Xt>q ?7񓷲ekDd)ͯЧ>͓<ąK/OKx8gxqk?֍ٿ{v-r{y|yQ0Aͨ2 1MQؽk'aQ) !2T-R])((eQ2Yr՟3kx޺FsN[G YywW3h/G%R$i%sJt1MEp.[0O(_q'xŚlQP2G5"rTd ϩ Nfz{i{v^; TVVqy33(+lݥyrEAf˦ pJD%Qb<A^NرtdʗYrՈ%nYg˲'V*h=$bQ[r xeKCX*x_wΎ͛x{b>ͥᅫi/%a<߲i 9 .t_IojwRSn;sy8N^^ ?}r<^/{vnvKEx|>_JغYg6DMӤ'zq&p8]$ ּ_N[kM>w옦IĉlLaL~V6gTv-{w\ۭz<7ob&."͙m7,曷]ͭ\u)=蚎e#ǚn-L3[qquYm Ƣ[4pdy%ێRO׍$QY>.9JaC7Q,q/e\x K$IBU3'"I6 YQU۶Šg9IN&a9ri0MӐdk_~ CbY$==]ܶqGiEm)q&S˹w3siݿU0cΙy?)04ϯXoPModTE^? _-g?&/;rDa?y+o[|{v젡^e$^[gbUtdW}Fz:;0NiEcY6̐W Zv*u1UUѧWo-M{Ab[7o}`AI&.\dixJ+PUL:͞YtVClz%5TԲu47m&NWpE]'O MUi7oᓷr?ʙQZ^/=\q5cǑQ_`DzɷM֯YMSYtyy<>VdسƱyyGnzkn(D04\?[zA3:g=50ik=Hc(,.Uge8pڵ>|~N3GD ]'k: MW8DAd?LP=ix=^@^ċt`ǞVMhA/ 5e4חSS^DME!>ݎanqmȲvJ=UɨN;cgρ&ӫdkʭ }:PeP[BYF!ߔFDk,Xp9YK.3f4dQsd]ٷw/+~z[rȠ*6Yf#l'=eFSգN13{HWG;,SИ NmFf̙K"`ԎiDx}SIKرe39gX%KYЃBZE4[?6{3:4YCtPa8$eeǫW09oΘs?#7Fٵm+ ,e~g^r_AD6&sϐN8wb^y%CEaIh͛8\.͚;OEIى0cV * N4vMzL:TpoT2Ű7MT 2e:G&ϳ*0ҐBi8\N:gw;?}Q>|nfOmK;{?-zx~H/d/nK۝?(2?XMS]7.O|o|<|KΏU;gvΜU/>ϜsgK/0ndEyeDڕ/3?gvM1%v:8bd2&MAaq1^vmƌ3@c!}F6jvT5)))nÃ"8dYFD:%jȒMy9wQ~n^ۼiA8 ز Co-l%ď{N̡lk X鰓VF_yUbEp滿AJitwug.:;y=n7(NXcDQlT{RID8&4kh$XXa1H7m74~.<~{v`ʬ٬Z g[).-照s΂ _cüg4m(gᓷbi?x'%eed夘J:Eu]=¿~Fȭgw~ٿf9ᅬ׼Wo鳟WwG1{.O< g_?=y +W<üEK8u:/xIgRϞ=#XYQ]WGum=^Ar%5L˅DU\}۱t]Gek$288H<#JfACel6@!@ 4ՅZ;~=zzIHiHHqii:al0FiQhdoᮇٕ',ws5+s3LPG}e)54T]-c0L,t"e٫ag blÃOrBȲa_O2xŠ,ȥarξŬ1jQj6^M0,Xx/0䧺]}(%WC{l=y ܊b6N($T2;)R$X,wh mmhJeum.'T11hJ*'PPH4}{olu^BD#HDIi|t˧[8obٞPꛚ:&͘={tr6[KGk+9?gIDI0 4M MUꦲI0m:׮ɞ[*IWg; oymaxq:rm4 @(]umM鈒EIE!ٷlAj5]#JJ&ISbQTU(GMbeEE ]#Q1.zeyzu^!L-‚~cjJi-c:fOidBSnÆPtFTY~Xi'$CͻYe7i<.<.'v,ˣ&~TdYG7$.iQe ދ4U,F"d N!?DtMCUU^zyG>c Lئi -25C* r{rʢ(~ulzu-E%{3-_cᥗxG9s|^]3:W<ÄIctrUW#kWYplD 6Y mICQDum`U}qT+?x#߼3<,h)W~Fu9r_.e䊫y>Ľ ={2n</7mdܹH];7i F4JJ(bcN+0ػ{7cǿ% 6 ˅!L9&͇B2`~_g~gsؙzV app%*UV2h `¢#Tu]'*pSxKS};#1v,ah=V 뢥Y9kz MueTQR5_ UGlotM'Z' BsSµ>aؿqOjB$kNq!͊S}<V`Ὃ -u<욼@5M'..tS4hp_/S$R6t]n5蚆)Iߵ1 v[,6wl˾]( Le]Ӣ@&Av;z )*-GeY  S˹k;(of]ENfu8N*jj`f?v`?,{Й زfrh44d/MӨ9D|$I>NK&>N2$NL$H$d ͆S" $!lHC~9+,*OY}?k%S -{y16a LjaZfLc(B$$ MH'Җy@Iymg!q:vTbJL]E}M~b7B ,^.&K>U00O Γaridd_Dp~I&RIRd^70''Utyp0wPaPگSΘH?e JNlͦ yDNqزػk'c[8J͘1hFہ\DQ^ Xe⤷U,l]+XƸS3@( gW{v`aEs>l8ʬ̘3e˟gEK|Ykhbˆ L1ͯciܺܺF&H%cQ ټU ӤyV?<%%ԫWiygưߺGA8FӐj8s8ZdH$$IE>磨z xljczTc%wٞ;s,qw?a禲s&2ox˩,􂦣 pFFհp9.<ˮ`xi0HҊ 4ME4͘<$qn7&Q@ZINYe%` M9KU9%7&0&Pp(A;4;4Q4Tx+T&vu((.FWCoބ&)`߮6ad i(,1ԣsE}Ccs]̶6zΪ]>aAe3?j؀a  FjYuOގ$Qŷf4MbIGIg96uX4)(*)wwvD }%`$+vJiEݝRZsd2':8/$P^UEOW'%#hƘ& d54rI%mUF=MqY;roSdO}+߿|8fp6k6^Ŝs1yLIjno'TPDOgOIEmJK+T~ E%B!vNU]=ADt]Iri,Np#zΎSUd2I2'P]WG0’b~Ǜ6ko~3Xcz)(,ZGd4?;Me̝dRs Ad]QVi EQ8~h1' ,␤q Y6M i@!xΓ&Ђ +J*JF[;t94Mo0 lvH# 68Heu-aDd6 ݠH8Lql^*SfbWu>_eggA$:ڱ; ߈D_O7>(}k8Nҩqb:r`!>%7QQ] tvR\ZFIlzm]/<9 .dÚ<,6_šcҌl۸>q{ܞUAdIFIxc1 P 6Mא$40Mf] En{:C:, i"-ED,ڕ/q'nɉ"bѥ.}cFi;0tҊ ,x F;$ !"v 69zFE4 ?rlڃy}xu.9SvytdL" ^me , k" Ef6 EQІk0hLt*pN_w76 EIr :69KB|D_ @t`@(D*Atf  #adӰEQl}(9]wv45f0td׋a'N9l&ˑ%LFvȲF%LfcىG\Ep$FECEG\Hɒȕ;-uPt΀v r=b̌j VԀac0'WbVbઅ>|RIY?{h|!8]{Ծ{琍>ޓrp8IS#zwm:mjfz0t4]Cke 8 ]ֶa:x ׇFU>t*~ Gu}hн0yi&3{Ϭad+*ٽki}8E6_ЋTȨ:fj4:UM.XT:%K"6d T M1M$aGK){uHrظŤˢ(*LdxMy甌ʪWYd]F⚦9jQ%eтi[v7O+bb;N;pQ|s3(- -D7 '\w!ϯيy]=_r>>ۚȺ$"NS ;AeA p<a6\.:ʂ ؆꼒X,U"(i2PwoӲlݞ\oX4J2ϪVGi&v%*'#ãfn[yCh(!h}5zp`PA(Ӎȶun7hzۃ8h@n.C*Ӣ($|%2d pt;U5ӨyJNol;H˄ #s E%IR6PtVLUUq\(JQ0aot2Ȋ~vU%Qx}j m"{Tm džBAz{Oy \_u50U,5706ah:^_/82 lq^3+7K'үX>2/Q"r9}hx"˧L5@4GoQdGVTق C(+)&K{A LL$(**>-iXitȒ,QtݨBFIAA@e8.OVL$p8]D#2lJ%xD"B!B![6p:AHDQ$U09d9QTjFq{d$tw28O}cӈR%Q"K0[GMFQ 3y*dYemmA@dt]p`:,Q28]:ap:t 0shGiі>zY4M>$ˇfMjksӨ(P5+&ƺ&c&;u#~ ]rx %aOk77- ^ k{Wśoɴv/g7s E2KΝʄjjkƦ G() ZYwњߣ6,5l ,t ,iVQ B݋.gӰ܇jJ:DC)ÇLO*(FSl nG(躖%ۙ 6=}eҩ.d{"^x -\(2/<$]Ñ~N9o$F Do/xߏ(QkaFx F"Y/pP$q',#p"h.;1jXƛNyE : I"Ιӛq{}Sɴ5oƶ=\}uw?`G8o/BQȇzݟ߾sT'^ 7\v Gby-=Z69R0>0aez F,l;,ww #mUa\{χ$I\.lvۃ$Ix<^Aɦ:NDIp`ۑd xסS҈6͡8H=R"#N" $zEG (=3 x1 {{ K "Od"qJٷsLϭbQCd4vcd8y daVe=@<^}OZA"v@H)Aг*EI$* Ӆi qY"KCX;;)Pa! TTUoNjXhFie%(w&LzWl3L`.?)~SFQyQ];o/Ӊ>vN$Z RTRJ"g\yݍܺAEU5mS)~J*{RՓ ),.MU]ߚq`ʪssTZ$Iʥn" "$ b&2;YEIBմpf]ܩtRX#.yAV|̛MՈ0jgn~)zOXT9b K\h6E<:)UncޙS~ `L 0\ode ,4vL^qM00Џ?8f4MDIy 0L 8ND1B|Z#l}xr qu6&a*(dM9TTWoN$@po/`l?dQ ww<~/=4:u^fҌl۸񓧲a+̘{ypO56}&̜:,"EA4$I4Mҩ3K/':_O)(,|G.v~;b&M9" Yuϯe|>?{wngҊ _Xzxb?0.<ȸK&q+74N$(i~?h*4M$!{Q&LiHDg(> HC'E餭d"{>|~?E%xn(]z1aQ犪oA,I4(iI 41DZ#lk`TWDbI$9on h u¢"v{.*֚k)UX\R\ZNAQ1 MiEd@0];(*)%ۃ'LP2 >T"?$OEu 7obr{5 ظι`a.?lAFQ;ұMEQ_b%W ij&sD6(Il6$I"s?ʥﻖKEAtX}RԌN\tU["5{ ꤬VJloޮyGEu}9ә. tD@ bhK7ܒr{5D{% i{>s?@n廹 9ZY+g}>g@rDMU]cȺr3: 4aYp`V3 IDAT04PRX2?+ L{|!s1"( y8~};wwwߠ_\A&aش~-B(7݊x{9k@||0%㮛_tZ -o_qGLf+ ѝ峼6=Mm:2aHwA|`V[7v)#SxˍXvd.g_+&`iC+z˻j/9?l:o*chUJD J@_f\mϨ`4VOk7)\_@Q~~S*LZAR^RosZ@⌷/ٙW0lNZLd4M3uA\JO#26ӄGp1{qxfs;6ZN6a]Iۏ#tbhlUC(XfMIdL }9w{%SH(nnM@eE9ײI?}c?o@ϼ]1 ?{nrkؽys|Z͙g!.iLHL3蚐t⹐v9ERJ/,fv;.{xu"9;+J\8Oo,f3ueg|/O//=IQ9zV*1dJbkeV#CͲ|3pQ+Q)RtYBBB55 fiu5^TVTP[SCyi Q:PTOlRo~l6:uN:()EqшW.d3s'ܧ??ErٿWW(/+[ܵb8g7GcШFĬ(Ooåsgk-d0P*# \NhT4z.qfJa݊elfU:qջQ\P@Pp֭aqڼÆwVbP(;tHnU:cYx=Ed-RKtTc+SSYE^kg/rEE?|3}md2L"qFD@V#1L-k...!W1`0tfJs8oO(cBt0/<<$w69hri]̥ծ-tKhGfJ%51`?Tjf745k{]?2omv6;FS3t8D: c&yD'841VJ馟fk>M5;D) [BB Bc~L&h4P_'H֭ܙ+/!&lCE}gY#| $*ğ$w #\bkvvzu݅Z&E4LiSR.G&BF w8o8뜨mhϨ$Sgi[gKK /;ԁ"6AA@}]..4zyjDor/_NGey9)H?u.?s=9u0} c- ;u˗q}sAI7ݛ7J0⓺{7۬LF4NZ݉oMLƢߣWADaX~"GQA%Du7y,#nw/k˰9w1 :zރg&bZDDrt>t.bn,)),`4nGTvxQ*Utm5vӧ&Lh2""*j֮GPYfLˊ谳fZFG3} BBC1444ÝpBup W.Zp8-VifNDtSsj9z"{'HN `k~3]dVJbYBBJw ,\p (-ퟤnG憧\B]m-ZOoo]\Ⱥ|^X-S1\H;Kr~SRX;&ÁS'I8zT*UqM ~;y>ٱq=̱#۟cƲݷعq#'N,D؀޽%I+5ΙƆf̽ k=e㌞4#AIQ>2ق8?Y ݃xCBA xy49r>LXvvvF㤡fRh5j6) j|<06N~<{/ d2ahlW\|۷3ymmXVv4ڴg ǧwd4KϨ[ 4tR"HMNGSԷAJO\.cX߸6T,<d t:Á"R( VjQ[Hum\+,jn!NN6k8t`?H?Gtrss(ϧrjk1 mMFJjr@V(dfp8pquӫE RY^֜&E3?lDR^\LuUݒz{5H^DdL/)83gH¡{3x(v!>zH8{3`usvfs9}(i'55?CƯq:7e<:;y˿ǟX-"r`ȖZj͡}{KLjMH"I"cbqFu쫤'-_DRFRy%1;ė\.̽nJ%6 ZC<׿PQUC_T}ݚBB5kP7OSv^EP}eֲwv-_b r'0g'5FIʿ_jnR9޻ryʒb龴׃*l6Z j n-j%$$$MHCZjo4PQUhL]Jm}vHuM=v> 2 'U*jJISAI+.8榟2DѪQߌ`E}|bSΕcX͉RUQ^ffލ?t8.z7, vWW*J3x({na]wsa z7w rs3}۷2ztV,G I}I:vĤYw"W(Mꎱрfd4z˄ 8t8|Z#|k 6Nyy?ۯ7tigqs@.Qτ鷳}Z9˾%6;(6ZA?ZIJ sb6T*x,Ɩl`PfQ{ӛ牌"<"Ʉ>wgr8h4< %&.Ʉ͍AABBH,+9zxet6[g/dQZ^4O-#" Lh3]m,KHH~o0PhHm}#u VP^YCiy5U5WbXZmXm\E_\\.GV⊛;{jqvqAնj^Jhx'k1Y:4GE<}йrzi1EGA$L4ºDu28u}a-0of7_POBr /Y܇aү6{ݺ1y֝f v$& u޲9ձ{F,"),Vt..L=xGR]YI<&ͼw^ >sFO-ǎGރǎ0l;b &c5@㮝yxjl-BFǀ@Vkf+̞=er6m@iY>~~8} f|K/9&}sJi+RIYY)[p](?xpxr&:ZJە]b;pWB83s F3iGDa;|e RͲnw`( ˫()Fo4"ͺnfa6NNNpvqӛAٜ4ȳZח<ssͺJhd2AFn =q^o]q`.O[ܵΙJb6 i.vB%ug 2KbÏyqٱq#&L&W**U|EEY)Gb1cXP*mzR59f vm}vϞ/O:|?.[JnvaLs._3H;C٧zc6[fо8}rfr|zKT_??FcJ4j5X,r98p7J(]<:pqՓñG0pFO//BϿuQ_WwKן>qO;.[HH$rqa|*kDJh͒zN(JnLumU5uTVQUSOqY% (*قfjh4b4)-Ldr9~~O/OZvImo{R"?/M4¢`ZIH}]7 d؝ԝ8s(qI=9sqI8snIٹq=&O1XKKJHӗ|9X=<O!2f1 If yYY6_dryIL&CqEOYqϽ]ڬ|S rxN^bi\͡iS /E 1vk@mJACqNZĦ+3x(ZOB$'3j{&cYh4ٶ(ti5lLFQA~~xxzЀV7 29gϞO~.6"#8tprJJ8s-]S\'YñRBRL:*ks`ҀCvJI>f"襚e 16LEU%WPJEUյ6P` b@NV9YY( !$4899!˱Zil 67w¢9~G&~g@tOcG~rAJfgqvufQUQA|dw >fRTP=!ln&QbAsgWLF#J Q9sEx?_CS[Byi)Gk9pj h+4 7 '+WAPNlݶk1_k'BAڙӘL[Uv88iT|}̜Sd%!` K'6e5`SDd^17\NV%,!Ωm *j+(ZQ% ǴnFEy9\N#$, :vɩ%M9xzy1˗.OGjl6S{Twwnp8л=7;6gcl_#F㮝2=۶0dX?Kz"O`wKulXrͧ0|Dz96_}SgÃss޼SG3t8R Uf_܃o2BI]m {mfϖM(Uj?4)E|Ke2|1'd/V^^gsQ&I)xſrrb&1.ailZ=u4!鉡E(v8O7V *'q-'ETvUo>'''DQl6o@Ij!ɄhaV7 5U9}֑᠃%ogĐ PݿG@P4@Dքp` J^ ӆ{;?OiC 7!!Z=?exݤ/dh+d_+ZQ9U5q;n r\^^t !,< 7w E-Jl6Q][IJ(ٷ) 93zG-̱#L?7.3k[ʧo)SIHK\<d^l[I7@nnv? H ,35UUp>.gEgܴ)ȁ,|=zr#`%ع^yvr)|es 5JͶu?;7#+3[Uv8x?c]# UJ +8x"%Uu$!"WILPtZ5&osD&;)OކbYXn[%{Ejk[],ʎQQx/*#'*r(*jnM ,l(//ܙSم 8dt8t\N?GLbvCb8gWv'''ͮϸi3X;8]72h(GPH'bsXK{)[=+I]m-NTL,j+WXs r#tѓ<%<ҫ޺ igy//%6 <׿yj:T((/-&.1+3}|gwb7_1mxdrO 7B#"3hog=3ҹISYBf? -l&9,y~$wC3Zņ &42 ٌ\.g(ҳWo$(JL&sSm'''oz_wpo:hNkh4V(RXPp 6" <დ0IBYz'47癷uwJgٹya-av#/ihvnRvgjlAՄ?FUK5o2r9rI+K^), 3b/&+Xl";+аp%$"@+VHΝ=KeE9 pi2/^h̃njeJ5"2y12%61#vlXǘ3X|)CGgQ|{ڳ_}wst>}fNDt4^LHD$&Mٺ};?l8qI=pˋn 6l6v\.GT7E6-3Օ=y#Px1IG5>y5r\aqx'Iۏރ3Ok {_c1ܴ}_}9زf5qi}|2k6^HTegs~{ml6*r`&+wHTt4VU~FA5 Eԉ tOLՊB ''WRJbYINVFMS"yp23'T/m%@RqJ>//XκV d[eLfMJ)Y7GZcފh>˂U]`ڨKY_&Zu)b, zLՅDݱgj((J⻱w׮-@?ⒺcZpˆfCa#ذbCzl>}MzR}ټz%#Ob˚Ռ4';orۼ{pO>b;ܙ$1szck/##F1dXN=5Yr:KHXnnt7 PWkJdqBҧ=Gl6W؁ykFϬ{GP_euW^{l2~r~q,[9w$'-zww͋}Due {qo#s ""}A!h0 nowNlnݔLN_?ddP^^3&^{n:l6+r1DnݐX,d2W2騲 &ݒ2vPO=Qrh2`0@^~)0[~[bsJ6՝EMfI,9jWRvye  ydWPJV^15u HܔpZd#/7=A(n'8$s^g@Ϝ3$`68b4*N !9)f13x9Wj=e 7u{m%kWűvFMV2z4N 1~oͪ$mw_|?ٻoة3=za er\ '3'Z-ج6dEP*(*;ңw"s|egȓ/LnV&o9"㋯cOdPQ^oCObV5la%Sza6,/c|<[xtHPpMl?hjtp1g0hطm l9!>1OLNvV{h4KXnka+dTӹSɽza2P(TTTp5Ӓp3뭾ܜVYh*fhQ'ҳU5 TF=l6‚|[emN*kJ0o-:pRii57.^]I,KHՔWs5OM]o8C] fzCaA=SplwMZbųoֵEPu1jH4N:;4G'>}kV3rFĦ+?c&{6og~Eعɷaݗ9Յ{ֳrbFNfemރӳo?2/^`Ml[ $%bq蜝Q(UXf& -*DD4j jŌh+#7; \NALyײݷP;91灇|t 鿽U˹γɁ];H;yy=eKCȁ=̺~Z!z])YWyOp-IRIuesEjRS]w_~-ЧNNjSV g޽t޽ykc܄]۷Q]UEbdl;ATҋַڼD:a;u$LuVΝ:{.YZa1X[˰ظjI)$$'uj ILs&6"V,^Dlb"uNd%t DJhZOdݲo8i #GO|;T*0c20qO\zꨯ#?'u˾`0l2oVr2x{y*O{ݓy؄Wn /+?ۯ3xXf}/gescOEcCCK VM˺KbA֐q .ii2~R*$zbY׼K( L&Xd^ Ry JT 9>( l6,;4Z-!!R (.*jS p!xblL$y_˸F'8oYJID?m)Lr$"Sp([f.Q `03_"*%$Z JIYOg,[m /PY]fJ]fQ),(T68j ^F]]--e%$ h4Nxqt G3f?mBJTwFOƙcGA޻7lS`:yJ8llBP pp~/_"($}ȅd=ˉɽzшFL!jRY^FeYi'Opd//g>4ױe\8Fތ:|h!A{13ntlv;6o`q*JK3e:_-~C3g\HKgby >E(5._f[S)$͆jBnՖ7kdE;{BRzfaZСzF!΢dj`40`̃=DbR)qajLZF]_S짶Mj!EQ$/2A2N/w4*%굓 wѴw/X(2Ĺym-g`j4!9.ZH<\7{e7#Pd_+Tz&v[Xj;s%,o@0TVTPUY?Z!z92 odga62J%QqX:cٽy1I7ɵlDD"d]NaȾm[8r4e\` dQYVƠȾrJbr Ϝ#gPBB ʊjutԙ^D0:gtbllf뇧1 IHMdlzw*8y'D.W0tx&%,[JfRY8991|DvoވYw3xK|ة3y׽\:KO&0~L?1RT464ڟȐ1XٱZIzf>eXrcXdlgbYЩ ArsbY5t) [NuM=28v̜BJ+NYrsؾC[)JJ%2 ݎ~k#v;z=)ڱn[Naa'b6?|8%EZ?R[ `2?b?2|:t`ӪV`Q4׳yj{&Ǐ{v! o0:igX[:gⒺܯ?Fb._٥%=X掳@nUl6UM&d2>t eĄIyxP΍)+)"1<4e,}7uyZFA`ч1|DV ?yp>>ze9a&`2Zzgrv;o9"0q, Ft..ٻ_}2?&&Oa舘Yh0l6t <ÇjfjaBJb|h1 ,^%ؑa&pxn=3y*t{oVA g2qzPZ\Ŵs;+:o蜝pPYVdBRLVbPRX@~6 .K>AR3hhF@f}/{owу)WߤkB"7obܻ9a FC#4&r\ᅤL.gCp8P5f]W_b6<$Il|BTYNOOO&O-6rcXwd(J %|b9gNf 6KQEt a6y &:vp'cJ!um1[Xmiӿõ-˕u7pT_6 I,Kf0MWv1C'3/*Rߕ`Z,4 ʊiZ Sp0NNZl6kL W/*JhE,3( `ٲf&Mb68%FRÝ˗QVRˆygX[oXǐQc(+.b5It\fBA֕K ~tJQa/dPWSwա*wwdrFgq8TVa4Q*1qѻRS]͑}{).ȧshCF=6)Sɿ/>$Je٢ωVejYMc0 R4^zcJ%"z>|E [FsC_C0Lv9̛oNllc` 7dfjuuu8q7f~'.JLFSӺ7o^Tc@Jٿ Z u 6 Fj%ܞN%M$%,Iye .pRr9+_'i7(b0ǵ<||}#<2 \ֶ1Á } duجVd22ۯ1n3w> K| k9a &h2g˾¼<͞ǜs^vmHPp#'Nc\H;C=ꜹt<5t %&!jN=р/_\.h0@&NQThu:&%EE{&jq뉌#.;Eرq^ ;Z6 f̽C{]̼>MEI yKK[RWGxлcZ+,|mN9"SNNv ·/NNN-.EEEPS[ c@ MZI]RJh^7DWg' mյ TT- x;CV$NqI,K+ &*9{!C'Γ_JeM40 *GѺvy2)}iJ@@  aMO&3j4V :A~c3N̠ M,%YXeɲ$xS~8n8gc5vXmٖlI,ˢ %J { t)wfR!A>Q b{>oy^su'ƍBƖY9?޽|a_v]~H5,^ΗgT\EclyI4-76c4gq ɚ')rߺ&X~={L.ee;9yG~ ~#s%+V*Mf#?_V쯈re$۶ls447c`/&\sjm=Dyr4 WZ# qa~hWSH"(*iT +0+H8>|-8CCM'+WA O`bJnO}w :ٵer6]Ehl2M()9CjdK. meep"K5\{m^nu5O>E)gm" ro[7?Ã~=;^]/ncTsx>v2 -ͬZUU=q}c&PFfy3K$uU TUq#3:i@_'{z8g7> 0ؿg?Cfw~ǎq7Fcs o>͒+9~?N- IDATa|?{o4=[\@ +]Ow8L$q=wo~s$_y6lYXu1 +com5^Iƻ 9Og[Xw}x[¡ `rLJ{ _DžC9ɦ綳kR~B>34$4WJ" hJH M%YRcY\4^ aXoYƖ  u]uRS ;L c[1oPs`߾r| EQxMbY&d?_ 뗹7>N4+?Ƕq]Ey? \~u\|ŕ)Ó=1k!/B>Ϟ/Sav|`P `m_XmEmR{*峂O}T ikRlڲ^L"\Jop(Hm2Nm1›GiKT_MkS Zim% j(B j(B0(g\wbOy Xi{B!i4>sP3U1:C0↛n?1}}YεϛK|?ɓxE}2q)w0M6RKU,\ ')miYt RjB->~),rF~}Gs_`t+ 4d9hogvKgXC*J}u*jqhzǮN.1,}4- I^&.o$$JDmnTp\da+yeQR9יS~@orc2IIIw$w|G Em55U4n6HnG C_GU5lomv?=ܷ[0x)0Y7ljv2/<[ܮEްy r:rqz^=G9s| U$IqĽ4IF"Q]CǼy\v5,^M"YhC}]DCS37XRcLZR6yxpo|aU~宅λ4ψK4' 3Z!./~+.*d PxGCC'%4+~si0XB''izl,>Kpq ږE4[n~Çm/024],XS~'~/ȯl}kovl*K) uanBFG9vU˦CT̬ٳiim%Y]CS,B0@!`VqEcē `4=ʉ_ıcڷP Ώp2IO4̱-  rh^148>{ ]2M‘۞?7831K[JWށ3gk;EW.pur s+_zT 'IFhOR+| (B[CWjmŽ0'ӈ+%MɊCGO7ldI,EQ$,EZ,pOwCbL!ijm9m ngѼVnbn{# U*UDێCV{$#)8&&HK.5 >ۼ~JXUqIfpB1bII896 HeK/R__Xzں:#byl9nDSU,bu ~| ,^ɕ7@umU$8y‘KWdI L$3 D:M(B4UE PUzUE:ib!] LɆ˯`%4 B`kzhF 1~rٶ>xUz@0B/7{u C?4]r{Ah-g]Y݇'_檋*uJIKldU*HYWqbLXM`+^q' Ak" TkiL+r,8K"!=?rȱ($#Aia6V,`&$4&6aוN)3j [؎wʎ-W+Wc_|GOq.`K/  uR1P_:BQ>@!k2OYˈ<³^(w}λhm4M }#l=c6324t]P ,%TTʎDDc1g2wAX 4,˛ ~IH{<ǂŋy;;)I$eW/|<[\wͬ߸yMVN!/8Ķ]r.oPLL6O<x-W1- = tu2|T6H2%/egooaO`85 ufY_> HlDz~xA,'.ƿr}OcT .OaMz,)i yF_3neK*7)~9:6?$G{ 0{K?  KWA[>[@_/[y}‘wpr B y\²-ȌH&I$D1B^DO;g(Y17цA!#"ӿ|{5QKk޽r5puuuo)ظDQf&NU,%]M/suR&t@1b0517H 'ŌXads{CƳGSO뽡:4s+tΝGcSSŅ,"Hp7gNny]/C .\{= ؖECc|Nx֮'a[Tƒ6O?XPQ|?UU :]|1Dp8̜ιJq{%]Iz, 9xwr:IoζFbNe 8m%$i5Ju@$0 \4M^ܶn霬]T^j Zٺ9^=|LRXŇ( 2|o?u"vdcY6C #pdUX$L0 hJ&881q2-˲Lsy7q/*ΝS5:J$e>mNG,fŢf9,laVkJ?ƅ0(0UQu݊fJ%evU%8RD>cxhqg1Eɵp-ۻm#J ^('&^ҕr!Q]M5h-eq1O {reb[JT#TN'B0Ja:\qP5p8B]}#s,dWڎмǦa`˴ҋ^}uJѭZϼ&V-úXDX4`Y6?$>p\3͟V=ō).PZTDt^Mz|@JY1\9؎I/^ٳkNE6;^&uVvƖn˻iA*e;;mu eߵ7?@+ep\ץ5kױD",9(,^qNȲ|;xn+ts"ِl`< ""! PM$S.#o.mp˴1m0)&yDM\8қe[TV9V9\iI)>S`'>YqSᆲP0@C]/Zĺ,f:ASrQMRb5q&lZ|=Gʑe!iR'e |vZ8~zzeVk9.O&i Yq#] w.C]*?Gz]ZĢnfwDP3b{4#S[@{ܢCy7ŔDqֱjh捪2tg/qp^z*8-SUUŗ^5k4 LW?_~$I*]( :ʃ|}䔋6z%xru9)% jBA|;ybaE'2(7ӑ SI1ޤ؎`膉aX'0m(+VO쭢F*zPMh$D8q4E{A=)+ɲsc>sAuDc02N3qE?H8H(F7,;>av\"0\ϐ-QץyɄ@ Ȳe8gVky#2aNat\ݻ9|Ã۶9wᱟD] h-7P@4@1{~JoiD!((JvCȶ,:̡ܻ{y_R6 v,]ٷg}~s./ny<j멮*AmC īEQk(fK<3f<3Fjx0c)H2t9]X_F1Ŷs뺬XiB|GOU2ɥӲ1,fE4MUTMS xX@9v,5فR9w叓oRo>bJL"ީmHR.aܱa#^_lo/}}74ymZfx29#UyUQׂ}&E Pϳm;X,ڦג0MSjj񣦩4EՊxB*A@U&Z^sZ۱⁄nUOwlًRxž^iG-q=R&˲Oa+rHrφJOgRFx4`Xem,ˡ&# f8]ScضPzؒ J&6οȘsm&Z ¾l d` @KC5kurź%YIGkm͵8Ut lLw\};XͲt/`1΀(:['5:蟼Or9E ˜Iokn7v,bdd($52\2ހS0&g_C=pҸIdFk{'YŤP2Lc!֑(B066F_/-->Y."Xbuβ'y Wiŭ!EE)e'JbPJS4 ᩪB} ׌'*UWƞH ~ͯj6Ie@A}uή;hs6ƝN+K>M˖Oߔ ŏuۘYg 24!=o(M63ʐMLf<8ٜ^ ׬6o+Q*,w4,8/xz. ӚukUl\U;Xb6Ȉ~cLƸjR;Zd<,+@VJ'x@ Xg5 љvdoBhllbނ %C Ȏ344Hv|˲^-$yrh k6hk 1%ļ]=* T嫒fPϑIGQ"!<~ȫ,]oiR ‚ؽs9#RJQUOyVQ00}s >7'vGkw+gLm_Ͼ dz'8"Rs(+er?d0I2ƲIgfr 2FƲ N (?+쏦6ٕ8Ȱ&;m;j,8ض}yD%sVUu]Ƌ4!mNNrʫkjBؖO.>u7652kBQ,\6i8Tj8 9?kun*V)D*jq 5(`Iև1M!A@ IUC6ZS;Jg;m#>pWr~,<'tI{\߻뽄 t-DIJ抢^fXUl%_0 a178J(}2ɡy _0wg9t$5&Sbe,{џӳ[u\n-]\pɢ wcvhk% `VEt $жvre}}.8NZA<GTUxa!nnED& o&FJ`HEJ;@MUhMm,W [5KtxdYF淋MK}íh۴fupEYqCQ&,,*gH y}#L78JCc fN3ΜѢ hdU_IIPTm$}OX!d.q#l\NǬzbUS(d,A+  ht-**qL.Hb&Y*a[A!04[ ϩE0Հ%1CJA27D$j:1xc048HsK':cZ Wf޽ٵ󜗣*B`{_+.F)00o4NKU<l^'=cdt¡;%F'>=Y,Ǘ1cL08H+_P\!ϞC'+{S/+VbR ~\ *zq2jח_n%@\) :T.dL'5AkDmjɤBpQ3|@QP- aZ \Nox4}Cca`x|l^'3^G/N}5i~nO'?R||_vI{KUY#R3=̯ar9Q%tXltXt&H:p:Cz,`j 0lrU1!=5m$ g]ɲ3b$ϟDǬz~ESyR!u]gK/˚y(!555hDYA4/ߋC"C@;@/hT% +&]Xq|KGMjD6C޶:"(ٽ5b$w1N{iIߌ<#Q4$ S 3j$4%FDATE!DO&PoX &-Y6qRB`.Rzmt TE~t1UhY;ɲ3xEqBTUW1sX¦T+K2o& H,$Q$1>9JS E4Qp 9qׄDlQED uz&" Ri q4\a}zɶmdm2yGz_b0M% P>ifN Xl䤄8 %މŵ|.úg7FN]׉>YQ1ъ^cͲN| 3Fϱ~v?^446*=*6DQ3B(7?Cʓb ·=g_Dk"BWū#]xN_>D8 F\=p!C9|e+V`躿A9aü;p 29dL,~?<:qn'>/Ĵ'S Lū5+> f]%eJ&BXHUH4[ǩP~fGkkQUuF($ɷ颻fq2e$]t9- P,LmIuuģ:ꀢGW}0a[hq'T8x9˧eD4'>.@ `N - 8p!~Xi2߼n}g1-}fG K$ߴOT1gNs˵3s(E# Hx@U[LrUEH:D"$mQ!@XN m%Q[~%6os/7l[Dc1>0o|އiEo/ SA2lo8:pט? R ;h Ҳ97>ٳ-U߾[^Sc;5呧Wdx vl{i}MaO:̧,dGŐ91Pkt֡X#BTUA):?BE e!~xyFFly ?>r y'q&#㇞w0UQ* Y]83gqDUU=B2QaAB W6 <xXxIx2L{Z";B`[;wW^1ٙbXEo/}  k"V||ek붫1QQ.4X4r31UU}ryGjgJEaN#* 2  wGzyaǫ>_"?>}6YHkc D^0#Wܡnhh$`9`xU@_Oҽ(-KH@G` ZlAm 8fEM^͆PAPG:Ew1 hI{yDkОݻhjj !M) \ካFJ{ ÇNԐ54TK 5ea=ô oYi߭]u+TǬzQ/@( Tgm} aVgKB ±W&% <~\鞕ޑCkbLD0๗ֽw<:ܷګV/R/jm-ْ,ɱ'qDZ}Ls<3IN㌓$$N3eNjdKdMVWI6IpP}y;Tu@p?<8}mt||W`+X<~ ¶,"%mN`XDѹ]?o Ra޺ICJSF!ߢ4833,.,n𻛅r~1[oɷO073s]w<%eWʢ5j!0K.R^Q.t+z(Hh 滸M.4Mzsi,l0I61ϡ7&$ɸO(%tD7r(.Ų?}}#}Dwն-&џ%}Ԗ}~j,Sw]̯3ͮRH$UbYж*qqNJ\,Z(B(& -0A_} +T()j2+4C^R1IbX&0`L~q]+MdP0?7{s]X<x={~ !mӲZ-J"AĩOh6(,-SPWxem:uЛMJ͒JbqzfۡŲ溜8ۚ2Ml#Xպ6E%`˅2@Eu89Fƈ7犼QJzM&Z;`P cq:DžB#luaC36+a$5 tI'_5YzAg j'01#qb&KKk d2gdt!i'tܨ:[Tx) KK9w,+k: !<4H*#NK'fdSq{22)RL\:mk)zj#ش@puY\Zj b[^XǦ\ӳ|훯g^Rk0Г1)&곯u(:yϮ ?k_Zotͪ'000eY'^Yĭ5)e8@FDH !(Z.6^Kl%' IDATƚ pFmQRK1L } ɓ|3x}y `dtpb{dxtT*3`GQtS.ؖeaYBJ"rz'tJLX`^uhv=bK234@o4= fk蛦˺2ͫWd 0zKw]{|/ſ|nR)8c[䖺X*ޭ{H)5f)ҔqJE P-M% &fgW bvDΎRn@‰(6 L?58FGAq@~q.̊q~ossR"BFњiv)#d'AK\pJ%fikniqdR zͥћK3Л777ҡan4-94LnXV s{9sl7ڏ-{Bo ٘1VJR**FBJPw&9vb8|H]6}훯]O9]:jaZ&ba2̻Zl奄MYbRb1iK2bGdg @l Tj[)؟f!μmHzKk!h6}836F^ߕcFJy?p(h6}!eۘvFٳL^H\Rh7^ cv&dRqC}gd{Zz_nl,VlXjݸ4 BmlgKRWVJaC}YqR)p ŷk|Z0b~BJRczpwnBikKe}#7qf 9p_[nfe߁7թf NSہl`gHR'> C5i Ak]zj&a]ܣ(" CP,y)*S,/]5ox@ѡ>F'Mo.MO6E67J[bye3i4Z-Z@/HۜrR+m+Hxt%mU~g?ٷ A̯9|{${!Ru-wfcO=&o}umӽEEd,g'oem;a"R_d@OR\d WTdeek%QUC ~ㄴ"Cp4ϝeqa]{u!ܩMäl03=MV^3;3s(Wh5[붵WF:'Nˤ˥gH?#d81j $掳RXvl:N.GE-Ѷ?m{}kxmrlZʻߵ[oS7o瞽HRu6 zї_\^ZhL&XV\nUؖ&A ѫA#H$!޴++n gjOb q&ШXXX6 ARV a˲0MamF)%VK33=MX^1==ER^߇wU^s"-r$ 3>ޱAz)z)z)RɸQ]R[gYbsWBnN;Vt2F6#A-XǶk/~?S?ۜ:7}&̱ogx{N0h6:>yWbQ$g8qfg5)ҡÇ+L!xX׾?<2B*ږnخb9j I+vO !ЁUÎ&Q{X(P5 hâCu^_L^S[+>!4_~duoz !IM0+eΜ:Ea@Ѡj]UF -5wOoOz-aƆؿgT"-i4Uʆ!pM)3bYirٙy7<9޺fn{>p>pqz C=$$r`f@Iz϶{Bx6~rpbhdvE'Q;?'7G>8Wo b1r9AtϤ4.;SD-BHՎO^G, ) " x!QRD)Tb HeE.]mj|[{Ѥ٨FB'O/h/,P*zmwKuVgdcbtKII%MhnrmDk/\ruW-5]!+P D:A\9~f8LPb?@#U0=aD S*o_۲9WJa{+*m-Μ>ca~~kGZw mc;['$mBȪ=1 k [6-R ,PxgJp\4;by̅ٷ]|Va`A0yFs[6=Ļ)ܖk3D)h! _OAvDl(c{6e!o:ox:U>ܖBYJRA[tPq6X'2At/РѰ9eRBɍGR n)):3%xzpl|% àl2u"ѪeZQHRlv2Rda~JBaijz5fŪg{}ǚ{4#5Kq:.mlUSZ,kB~{wwTݏ/we||G @ssB9OJ&gz-kMTٶ4}٫Ӳ<-㔡&1ǡީo\lU-AeoRЬRkD`@K{yV%{ufJ L;"h/@F#.7=5EѸ#%VQB4u&Ξ%_¥ 癟j^[Wf^Z ky.N$y3$>C9z2 fa]ixGgh4Z,knĥٮߓIXO~~>ؽ|[r]2+0y1F3kn^('|?RmBYJc{UVRma02:Ï~ѱ10ܖJ),quyY|-J B BT8*$4[6 eP ^۔DcTJ!x)*2L62M˲0 FV2>"zJֺF}CZng?}(6ӳs,T~!=]z)zclO"]y^٭!6WŲ溋Mw6Ͻw,QD?O~mt)0M<(K?̥Kd?tk1uU%qU &, ږd%A^QkY ĕ5lozWv/i'XVDز0|kt?!h5LMfJŢӏT&&(,\8rF7QWٸ1+2~yuΝ瘞I.Mr%֎yߙTL:AO4L}=z){2h4ېZ⥔vbYsMV/4gO jcm) s\Dz2ԗaH g\:N:#C$ -U]I ,W_'Vٷ#cc qL$!VV\ [rPD -5ЪDD^ T݄+FR[ǛlC8!q7ѲPa}}4^v7xak٩)H8ϝ\.SVc܍>}8ufc}RQ.W(K;yf晜TPT4[-ax{xǶ^#a&tt2@_<Л'&N:6c{.iꎠ 2R$.e"#ɢ"Ų+`?6MB@b7Ϳ-'~v:t/t견PRIƙ5:iZ&m4jn襔8Ï>0 nul+owk!ibvׄr,Xl[Sj(dF8Q€ -3f'-[ !ٰGRko0YSuH3#\jg._i4)nybl0@) ΜaaaZ ״ jz?c%R*Y)ȤSDrf'Nx}`˲0Lb)T*Ҩ7f9jmMNZlWEjxs+U_wmdҩkEuݪ˭<[aӨtFfW!;{-iٞR궻i4_.~ ?44̃}`f{4QrI&cjJP!cljDEY7#[ ֒|)v(J!IBip0W♙ JbW[ca@<A0=0 0$j5N6%* s37$ߺ[DfMf\RE2;@RDCZ0k4;•by+Nı3Fww~kwS3jn!n<V3A?zp`lۆ.W!:oB"7(Fz](@anXDHn<А FR Cь&%%%ATY\^f &&X^fI6R\Io0 ib,"h4[2i mҵ'}DwA)d$1l ^u*5q>ͿOم;TJ?Ȯqkrm;  )FԢت뤉T Uĺd` 0#bCif$ߌI1iJ2YnUv6 )>qݹLNkgw'^]AF- F[5]޳d[[:JU܌qٲ &f1by 0ewLŶLg) ex{Çi!Q$uBzs /1O;}샻zU̚m];d3 Dr>HI!֭aݸU {'HbS 9:Q#Z\/\=d9.W Z5dfnzIJpd/9L[Cf7f47ɛmXh&|Ϧhډ \YDIɞ>qe"~ /$?h%(_83 J)~1sʫۓeٗKE#j*)0W\Qqzم_iQC͍nC'\Y:JcSi88.dx<~RH) rXEբ#aqqrK&2aĶ]m]hv03ޕ1v%;0?OvJ:OpG<:WNǶL,;_S>vI(! OJɁCx샏wT03oŠB`Z\|4\ݏԘ/0Zbuu8)^v* x={!ɰo==G铪#5$SijZ,;pKl7Nɏ!PJҲN]Q).5z IDAT^)鸚+IJ\!K71;l1Ź-Icýg~n'_߿zM 7 ,r_+W7Ю|={Pr_-^V,/jDQR9J"AEFHk/W JI$ g>++VZNrmE|Wfh+cH$ٻ?ccߏLjdf1^}}.5#voogNu>}BޞNI$^<'iTWPh4O, &|ڦ(hN&Yu[j}sE2q)_2_˗9wi~c90J h4ui^_z³* nFJI''?**/ R)Jy:Qϳ0OX$ Cd]s-ŻWǭI14Tքi(@IIjuo")5jo8'?Q`.t/Z )# ԃOt_,+L'Ɋ濽76ԝeN+=,:Al>??#"sK,W;G&ӗ!lao4c.RoM_~(N=bR2<2'>)rBL\>-FAXMOM/R. Z-:J:kZ{W<J12:Ç}X,N64-"k0$!OQHW3b,ۛU$^ 7XuN"{xߍ]w%]?|-h4\)Ӭi4,,-Dv}\jct|g|΂!_~H$zX\\X>q,Ab;t'QbT*JFm]hv|W!teMziW],)2Z~2B׮3qӳs}%yefg 2tKmZj&ERkЪ71:q]?/86i|3xn}CRFA4k^C[5ϫ$ r==C^$H$m)]F5_2428VsBR튭ŲFǶTؖɁ69OmYt";(UꬔdqH-˱AJO}8_~O8g.mxڹjŽxu/'kBXtDQU),-Q*l4iZ ˔E k6 +p!ebٻ{}޾~GFmkAE!a+la2<2B:&ص|c;f Ap^..hF"-5]!=k)VjjQ} ' c`,-8z|'_8Ο|e. hMHqLG>Ƒdnm_*%)jU:24MfXYYZ! kVi1yu=HӤ3(e.E\!5&a]ӳ},9WTa.d JJKl)WYVf%mJ&NǺ&W5WSc[ B *G_ϼ ~waeF- ▕R ^*󶦯'C_O| k BV*50)4 ,bǎO𭣧ғpajh-ɔqjJ)j+4M0q%m!ܤ(R4CCē C?ibYkftS[wsݻ?a^t׏G)%s($h4]lJBz S[D=vXمɽ@׵2iTL-g3 NM̬;R*R.S.zТXs 0 b8cNgwC##G<u"IèN7maq'%T~&8~bL:g(/fLtG,oZNPrS 0DBxmdž4 L@X&z8ۉA~g^zR {v-:Xsx=D!zz{Ab8ib&#"m1޶b9J16]¥igwX2R~/ZZBC+byKf=? .a]MXoTix㜻4Je7\G۶{>~,ٻo?xLD"Β.IRڙP' 0LF9]u~ĩ9A,V^֝LtM,k4k tS 2 mY0 ѩogH;<$G:7_~S ^--u]2cc$INf1b(0u2W_KE>Zk狯*R tVlf"BJiRl>˚r]mzajI&Ӗ;8ڴj &gx,Oϼ6,. j@1y <#ǁÇd2i,FIIEo(7wE}}2UԵ:sf8;s؎POurC\f; eǶ\zcs7 ŲkuJ>a76bm7/q玞շg8xcnke'rݿuq]>HR()hjg@dU}j|^&'L\v8i*yzh8v׵6bY5V1ry{gIt2WWV*8Ǜ.S< f)U.jfg.ƎLH$8K:fdl=X.$I aTRE-}Zs k؞=\QT9}fbeA8^'Q])5mT n {k|g#p\-o0RJ>;+8m Ӷ@J0bisGOgxE^=~b͛kv( 6 aXl=mD2E__?ޞk;mu7XsCl^rW]WJ?0@,Vvԙ]4#LiTt/FytRHӝ@80>Ed[9Lr03 ٗNryK6kzx+D"$}2kWX/Tyy4Ғf2isjByGM'Y\.TãZ$ -J:o/WԅYf痯z;la|0 qlr H&m/=O$Q6VRZ:і[41M!V h60y"s+,-.jU׾G\% CGVٵ8t`yQŒ؎K0 VlXh6pqr$+lLr|O<>}i[M4 e6[z<ǎ7 ǙoZk ^4M$=}}8zz JڱERj0jZ4w[{6|a  ,/噙f~nƫsg{zrŅyOdY2 ]{9B, j4-5]`/K&X^[>c[ChX(s$xMug.̑/6ntܱfRK>t=$ ߳m)RFk1ūy}86#aZH$,kRu/o`o=Ԫm6xEglY8cVQשתLO3;3,* -od;ɭw'WcY&5Zsa7O_O frns жV%͝ƎL&q\qf,<\CH]>M1{_l"ԡ ;ZlL])PU)t"3Ӭ Ԫ[LU-v!S߳ALK)I$IjWgVR}_qLC54&IJ*A!:5-[ЅwL~.M/t}RLUo4  #&&ʳkgxYX*^u@5>bO?anѶ 'dYp\q'{ކKb.,$ hZ-߮پaZZF~ayggY^^&@ay̵v dw?d2II"$wu(˻I׋S-.bޘj4doBMo}rV_vTXB W8wpheC,tm**ߙc_3X^hq8؇s8Gcaqo*)}#N!xD"3O'R)kg,lu]0kEQtKZyzlֻ7,Jb~FcSJ!;qoWa|-Z&Qa.߅c]D/\*Y(_\R.un%ץqGF룧DGQTB*E"s/veaKb92 ;eFs7\<0ܤĪg {C{0 h'<7O~wц a`kS˧x)/^)C[7}G\lg=,K79L;H@(Ҕ(Ȓa2eZ*eY]VpYN%iIVKLs:=3=;3}fgv{sJ&N' 4@ D,clbP(n%<-Ns[WK4ZbbHX${{%v}!=q,`rrY'& TmZ|(PsR(1LQɡjR[;/`,</K?Rah*2UU|xrp? |kz.,c3+X! iHX{KiI $25=eY# {K1%~ԫU #ƽbMp\n7Yn޼A6!vraI놁grzIF'I$DQ(t=!< tIJeA8{[IJpF'U,zc* DGh?'26>F(C|h膎GCyΰxkZ4NxbӞ'{iݢX(P,ryһvIӸsgp\($R)Ti'IFuMt qq{@(4\rf|y4uPU-!IJ ͫHi]O\仯&MRm3O?BiJWo:ܗyO_h>;}Hb06as}兾FSCPni~p8B2"92=tA IPxKՒj*>)uiUUiڴ-ڭ6zݝ2 ;;[ * j!s06 Ӳerr)R#W8:<`ml}Y^<ŰBhV[6AV,ڟ;StFvd:mlu<׾CDQ!b+kh'M>$y@[5rw>yMOMcY*b{G<'ODк"9 'H$}I2 Chn1-SwosU)fҔJ%r \_L IDATLӢdᭃ~H4J2"L119c .P˸=rMװ ZI!aŲ72[U TX$HT֎O=27,L຃+F ³]nlex%>ﰽW"G<anzg3O=*L *^ut]?KmτG#=ץZ-cZ3oXzۦ^jh4yr,;;[dzZ3 ~;PNTG(fzvI'D#APG6Wr30A+! F,9z2.'FX]^ƷR/|geMS1 TRs{?O};ٻ+E>Lc|aW/07}dI CGZCU3Sa+D:@;ՂCtSC޼EBB@&GP$mAϕR!LLL%H0:6(DN uDzxe-uYVM7n)Ée.C˝>wF.h>j /}k?}vW054_3O]gfjd">4vchO W5R`Z^KɵZFA٠VȤӤeTUZơ+2y;}XtBp3OE ~t]ymD>z6{LO%P)iZ[ORY Yh,J0fl|9Ɔa1 }? {>v|nnt.bZA4MsA C偬yz1 {P۟*?gl!e:ny7=x| 픓E|qkϳ 넂g'4ȁAn^&B1'EpZT*(]v¤UTUu eY |\6KRR*S*)K4;?ǰAyu]'J1:6(10#{8}5=ɤC2݆-jRaG˒,<W6 ],,ώӶTE04T`k;ç2__~JqU7di6֖yS׹tap(x"햌ǘPDd2iέʋss\a<痎 VTMUըժԪ5||6G.%a;ߪ'AA$%K$HF&L1 0:պm>Mbygkb04 ؙ#< . ض=RXE4#O$HFcdtߏi躎ixȍz]^`&[[byXLy{{*z."y˂ Sׯ0?;M*?vY^#^ٝ-6/]csYUU4MCQT롛)_qZ:h۴M6F2t{h4 @z^xY4 Ǻ9ţap/v]*@4 u]2\oW*E{abZ~xA, 5H*W/ryz sb7aY&C˝j\G/nRL:M.a/ny"KЮ_$#8Σ.+6 |7٦R.S L̠*N/,zS\f39 @n[4=G!PTϏL!JL|+qTIƪjj6j4 2n`g{J"r#_J8wטT0-8m4]- bYUm~WZv7U؝fF1֖gŻ k\\뗥CznqhVUZF!gttJ4 EU\f]nIݽG㑅{ٺzLFAXRxbjLPK\>Z=Dh ޟidYo}vX][~ρMQ=r4#1958xbyxw㞗^x:J+22]qQ¶0¦ @ @(&I$Sq u:b)!Ӄw2[7Ukd2vu&b۶9^Y>n ?cbK, CQ50~9ҫ<^ks†(?0@3k7QT#ea[feao3'R_=O^9vN06nXǪi Cݐ Kˀ}Pk_2r*f)5:?80u]LC3syp]x UEl6(uCM|b@1_Xn<}.!BNw+SDߏ躎ih C4uCŽ_!ZB[;;noM:~b[wz?(.{<]tDtvCj py 7jg?ΔXE.(<AXn4@_LZvQd93ģao?S"6x˜_cb4yx/jX('Q]GĥeUU)JK%bľu?aT eY#Ա@V|gf(XEm&mSoԻ]y"zFWa A b00 O4M!|ߏwķ=/~΃r-‘(hSU ]Mj*rn7);mշ}%ErRgɻ}q]UW1Li{J/AN,[eg{)p"=k}8{_Ĩg4rVM,0M<ו;QUZ&.{d2һ;l"޻G+5ٓY礉dD,H}A86I7-[J5laď>×m'T*O\k#ϊ!|f9c02DD wUXʕeVgx87LJI8(/FQGεK4>}'.ʳV]W7y~#X'.>W>.ױ $1x.Ht͍աeUU) T*Br E' tr{?xW3T ϻ)nkQjFiYB!L<ޯB\QT(Q.f{km,v-xgO?`nfJ1nhM,ۊeOM0QW~zMSX/2=V0|~ Ӓsţ=vw85\%bZnho]R0LxS" ŲxVLwxA#/=_"`BM4 EUivV6;[ɤ)?|}c n$w|hu1 ˂0>5>o/8k'}K IDAT{r,T qGǕ DA ť+WܑH ^zqdz&K bDϷYTU)+Rd$fFA0 >4:ϵprUv|>O!'֭wvۡlྩЦRLɏ(ְna\:aP4&poW*ضCm"M'Jr¡y"?07=vlY0!4s%/}(VUF(afv*Ў`O<66/j6QӲuywdŖ ݱvԪUt]0M >CqlZFV#˲}7oA6VRVER?c#und# +|=1?=~8(FQTW@K 3CAʕG{yaۄB!p SC/@WݨIWV/ww90\O4? K\ɥ51ʣ^]M4-O]A!.Ļ&X~MSy* I'xn>">}䌏pni#KIJTޖAW/GhPըk9nd4T>]D!(DKֹx~9R Q9ha׊xXG*2Fn^Y?{tGCģ!c=~ +<'yiracehbYUUJ'? yZl\&CPϑTFT&ƘfnfQgeqn_c{.( 廣"EJzR [I/F4v Y]_į&52">+mT+*b2{i"fVu׿Q|r1 X4B$$ 39> Sc,O316g u|2rg6L㺎P)z C[接XV*, tD,#^h4KW.p ޏ8y 24\\6KTX(XMOsefjgM%H$I&ℂ1i]=ͰtY#q\lEQ{C7,˱ +l-J&LS\\X.yFR#}N<Ɗ`6j5es{{ʥZ@q-da:P WY[Ybs3SLG@BgUw]44ȀHe(s*vV*'r)YR0!TMv$_8race«VQ*cCa|珪i6RrL!'˒ff2T5Q|2`zr)67VX?E;}~M "ߴJj gM1I1eeiP(Hezf:JyhjxKբnQH!RըV*wEdb)._ec sL2> 9nXhnʲ.[ŲCXa~tsvLfvjoCGzoqų0|Q|B^#N/)r9{T3DdQ|,FS GGX[Ydc6HcDA4M 'u ^>V8TV F8rODUL8mme>١ݣZR g.*:Rff]oq'߸T,83>>x~5anfT2.N2$[`w^ݬ XtsbFF(tzs.{bN1@\RR=lFNݾkH($3=9k+\xS pu0L?i[93E, ‘.$4O<!+ ڊj(FOOޞU5 <^hedY2=RFIòL'9 LM0=9x3]F3L ˏݮ ^8zCY eQNNeM7pOD¡[,;w"Eq;fB!O\&ˑfd-n.d i&GՋ\X% cJpL/cBJY<œ} Qi6ˤ@NSd\Ǖ-ų+( RYt݇ݮ"p$mCSUs=2%8#O[8etB7z&'sKC4 n:cL,mMOբhPVɤd3i4jzF:PX '0|ae-35>HR $u4h5hrf(gZGyZ%DrD7|ڈZ>Y,`7$6.\0dD(4MrVM|B@&GXuEpC,-̲4?,K[g$ \Mi$Lhu'8<< )lJؖUӱ,'ё$K  sˊinju4|tzJD٢^,I# GYڥ\\cr|D&AHSmgZ,{YEhK 1\,3[xR'7C~oʗD$aim߳W/XU;%o}&{뵷idYYUfdeix,"c{W0!(H޲ `Vйqߛa.bjCNDž3p=rrnqq׆vEQh6?NRa~qp8rϿWV(Jlomqf2wUq|ajb ίڥM&'!X>?nẶmac  "æo#tU9Y><̓C=l6w/"cQ:Wq* JJB>ww{{UQd"=/znŹƂ A-LOGӥW PFm}_2,f'd~f +,/0'cA:mưv"-a(RTupjIJb~4]ul1)oP7g]Lq*α07c#)1 躉lHeA6;GB5lUUNv=F-OZ8$.i*-9˧q>;? Xs,FSqҗVE! JYY^dcmKkL$X\0 \AQ51 \*w;-WX0l4,O5<ϊ1N ӓl."K ,ψaA 뢛~4+])X#=ZGI?AAhJqsOKZ6r\ }$a.geiH$D2 p4C4,_F9O&08@|y7_ 5\tD4<26Wo~KqLH%./paciYY^ qAxěDUu/[b#fb|TI_ՋI%CA C'A˚iaheA47=wۓ°=maتr d꺅[^8?y/=11MY.mqniI昜pBabZڍ*h a( h681hy *x4v'cH>}_kbEgr|t2y"eA8rEQ0!jŌeAPVp=f}0Ms.JsP[ߋKސ'.h\E tĕS/^o"xL ؕ l073SXcAN\v]LUﴐR* v6Z} 턂o`ӓLM0;ͅ󫬭,173ib A0}薏fꈇY(E<Ӱk=l_:?܍A9VZ4s-X Lܴ޴n)i7*|Ϳ*k2gJ.$yjeNTT^4ij=KXaiݶj!$ObpM0>[%wW8&eH3u]BdgrdDV} 8w_QN g28iߖFeBDrrmNSJiҰKү94l&Td)SfZxu8Rn%!:d*S=X&Eǁ6ԐMm۩JӜ< ټFw3-K -#yʢ3&vӪbq2Pf4_E9RJ<%~ `Pvݰ'81 2^lep/^%m۫m;k왤YGmBLg֢2ʋcI!-4zVY>rqXa\&E)7G954 E`=\#^"餃k\s]j87Li،,[WɕGL 2J*Q\mwV`|#N=p)E}C"- dR8JFXȎv[%FZsNÎӳL,YB2$cu,E)2KM*7FVm^5J,Oe`4vzˋRY",c˒=)8mndٕSޭm1.zSaͲa ,ӲƷML*Brn[m;n=a/حOyvUaQdu5xJImպUJ̪582pٔc9kOɵi;m'ܽ:;2If4 P{?Z9mUɵ@X*bY-, L,SրׅͦzQJ,/K20B2SNg;fXw4}7g9g2P1U Tc 2VVe(5&bbe6p_Iܫm{/׻ϬM].şw'\T\qYblҒxޝZ Jw+󩤪;!C 5:_?ɩ5ZpWשӑ~߾?[4}R`,EgKa|k?_{}tՈwӰj6aA#B9H 'sg4uw ldZ`. ?9)"N&oNjە699yrZJrW)W\z+fSgDMIm?lfK7?w=^xfzrrmIy]n7ofE3`TG~KC9'sf{fϮH8;GR~Mҽk)%~ѣGlM|J3{/RU/PÇ?ߖ7~5R<mg]p>|S{f~V"BzǏ>/rIENDB`cupaloy-2.7.0/util.go000066400000000000000000000070461414345261700145160ustar00rootroot00000000000000package cupaloy import ( "bytes" "errors" "io/ioutil" "os" "path/filepath" "runtime" "strings" "github.com/bradleyjkemp/cupaloy/v2/internal" "github.com/davecgh/go-spew/spew" "github.com/pmezard/go-difflib/difflib" ) //go:generate $GOPATH/bin/mockery -output=examples -outpkg=examples_test -testonly -name=TestingT // TestingT is a subset of the interface testing.TB allowing it to be mocked in tests. type TestingT interface { Helper() Failed() bool Error(args ...interface{}) Fatal(args ...interface{}) Name() string } func getNameOfCaller() string { pc, _, _, _ := runtime.Caller(2) // first caller is the caller of this function, we want the caller of our caller fullPath := runtime.FuncForPC(pc).Name() packageFunctionName := filepath.Base(fullPath) return strings.Replace(packageFunctionName, ".", "-", -1) } func envVariableSet(envVariable string) bool { _, varSet := os.LookupEnv(envVariable) return varSet } func (c *Config) getSpewConfig() *spew.ConfigState { return &spew.ConfigState{ Indent: " ", SortKeys: true, // maps should be spewed in a deterministic order DisablePointerAddresses: true, // don't spew the addresses of pointers DisableCapacities: true, // don't spew capacities of collections SpewKeys: true, // if unable to sort map keys then spew keys to strings and sort those DisableMethods: !c.useStringerMethods, } } func (c *Config) snapshotFilePath(testName string) string { return filepath.Join(c.subDirName, testName+c.snapshotFileExtension) } // Legacy snapshot format where all items were spewed func (c *Config) takeV1Snapshot(i ...interface{}) string { return c.getSpewConfig().Sdump(i...) } // New snapshot format where some types are written out raw to the file func (c *Config) takeSnapshot(i ...interface{}) string { snapshot := &bytes.Buffer{} for _, v := range i { switch vt := v.(type) { case string: snapshot.WriteString(vt) snapshot.WriteString("\n") case []byte: snapshot.Write(vt) snapshot.WriteString("\n") default: c.getSpewConfig().Fdump(snapshot, v) } } return snapshot.String() } func (c *Config) readSnapshot(snapshotName string) (string, error) { snapshotFile := c.snapshotFilePath(snapshotName) buf, err := ioutil.ReadFile(snapshotFile) if os.IsNotExist(err) { return "", err } if err != nil { return "", err } return string(buf), nil } func (c *Config) updateSnapshot(snapshotName string, prevSnapshot string, snapshot string) error { // check that subdirectory exists before writing snapshot err := os.MkdirAll(c.subDirName, os.ModePerm) if err != nil { return errors.New("could not create snapshots directory") } snapshotFile := c.snapshotFilePath(snapshotName) _, err = os.Stat(snapshotFile) isNewSnapshot := os.IsNotExist(err) err = ioutil.WriteFile(snapshotFile, []byte(snapshot), os.FileMode(0644)) if err != nil { return err } if !c.failOnUpdate { //TODO: should a warning still be printed here? return nil } snapshotDiff := diffSnapshots(prevSnapshot, snapshot) if isNewSnapshot { return internal.ErrSnapshotCreated{ Name: snapshotName, Contents: snapshot, } } return internal.ErrSnapshotUpdated{ Name: snapshotName, Diff: snapshotDiff, } } func diffSnapshots(previous, current string) string { diff, _ := difflib.GetUnifiedDiffString(difflib.UnifiedDiff{ A: difflib.SplitLines(previous), B: difflib.SplitLines(current), FromFile: "Previous", FromDate: "", ToFile: "Current", ToDate: "", Context: 1, }) return diff }