From cac2a1a4168b5340791b325c071d643ccc19662f Mon Sep 17 00:00:00 2001 From: Isabel Jenkins Date: Wed, 12 Jul 2017 14:14:05 +0100 Subject: [PATCH 1/3] unreturnables magical updated webclient --- webclient/{README => README.md} | 10 +- webclient/composer.json | 15 + webclient/composer.lock | 65 ++ webclient/composer.phar | Bin 0 -> 1710687 bytes webclient/config.php | 3 +- webclient/index.php | 51 +- webclient/js/lib/anchorme.min.js | 1 + webclient/{ => js/lib}/jquery.js | 0 webclient/js/say.js | 495 +++++++++++ webclient/mw.css | 432 ---------- webclient/poll.php | 36 +- webclient/say.js | 443 ---------- webclient/send.php | 68 +- webclient/setup.sh | 19 + webclient/startup.php | 239 +++--- webclient/templates/createaccount.html | 24 - webclient/templates/front.html | 16 - webclient/templates/login.html | 8 - webclient/templates/main.html | 15 - webclient/vendor/autoload.php | 7 + webclient/vendor/composer/ClassLoader.php | 415 +++++++++ webclient/vendor/composer/LICENSE | 21 + .../vendor/composer/autoload_classmap.php | 9 + .../vendor/composer/autoload_namespaces.php | 10 + webclient/vendor/composer/autoload_psr4.php | 9 + webclient/vendor/composer/autoload_real.php | 52 ++ webclient/vendor/composer/autoload_static.php | 26 + webclient/vendor/composer/installed.json | 50 ++ webclient/vendor/mustache/mustache/.gitignore | 4 + .../vendor/mustache/mustache/.gitmodules | 6 + webclient/vendor/mustache/mustache/.php_cs | 26 + .../vendor/mustache/mustache/.styleci.yml | 13 + .../vendor/mustache/mustache/.travis.yml | 15 + .../vendor/mustache/mustache/CONTRIBUTING.md | 35 + webclient/vendor/mustache/mustache/LICENSE | 21 + webclient/vendor/mustache/mustache/README.md | 72 ++ .../mustache/mustache/bin/build_bootstrap.php | 178 ++++ .../vendor/mustache/mustache/composer.json | 25 + .../vendor/mustache/mustache/phpunit.xml.dist | 17 + .../mustache/src/Mustache/Autoloader.php | 74 ++ .../mustache/mustache/src/Mustache/Cache.php | 36 + .../src/Mustache/Cache/AbstractCache.php | 60 ++ .../src/Mustache/Cache/FilesystemCache.php | 155 ++++ .../mustache/src/Mustache/Cache/NoopCache.php | 47 ++ .../mustache/src/Mustache/Compiler.php | 687 +++++++++++++++ .../mustache/src/Mustache/Context.php | 242 ++++++ .../mustache/mustache/src/Mustache/Engine.php | 787 ++++++++++++++++++ .../mustache/src/Mustache/Exception.php | 18 + .../Exception/InvalidArgumentException.php | 18 + .../src/Mustache/Exception/LogicException.php | 18 + .../Mustache/Exception/RuntimeException.php | 18 + .../Mustache/Exception/SyntaxException.php | 41 + .../Exception/UnknownFilterException.php | 38 + .../Exception/UnknownHelperException.php | 38 + .../Exception/UnknownTemplateException.php | 38 + .../src/Mustache/HelperCollection.php | 172 ++++ .../mustache/src/Mustache/LambdaHelper.php | 76 ++ .../mustache/mustache/src/Mustache/Loader.php | 27 + .../src/Mustache/Loader/ArrayLoader.php | 79 ++ .../src/Mustache/Loader/CascadingLoader.php | 69 ++ .../src/Mustache/Loader/FilesystemLoader.php | 135 +++ .../src/Mustache/Loader/InlineLoader.php | 123 +++ .../src/Mustache/Loader/MutableLoader.php | 31 + .../src/Mustache/Loader/StringLoader.php | 39 + .../mustache/mustache/src/Mustache/Logger.php | 126 +++ .../src/Mustache/Logger/AbstractLogger.php | 121 +++ .../src/Mustache/Logger/StreamLogger.php | 194 +++++ .../mustache/mustache/src/Mustache/Parser.php | 317 +++++++ .../mustache/src/Mustache/Template.php | 180 ++++ .../mustache/src/Mustache/Tokenizer.php | 322 +++++++ .../test/Mustache/Test/AutoloaderTest.php | 36 + .../Mustache/Test/Cache/AbstractCacheTest.php | 44 + .../Test/Cache/FilesystemCacheTest.php | 36 + .../test/Mustache/Test/CompilerTest.php | 154 ++++ .../test/Mustache/Test/ContextTest.php | 282 +++++++ .../test/Mustache/Test/EngineTest.php | 361 ++++++++ .../Test/Exception/SyntaxExceptionTest.php | 39 + .../Exception/UnknownFilterExceptionTest.php | 44 + .../Exception/UnknownHelperExceptionTest.php | 43 + .../UnknownTemplateExceptionTest.php | 43 + .../Functional/ClosureQuirksTest.php | 32 + .../Test/FiveThree/Functional/EngineTest.php | 50 ++ .../Test/FiveThree/Functional/FiltersTest.php | 187 +++++ .../Functional/HigherOrderSectionsTest.php | 77 ++ .../FiveThree/Functional/LambdaHelperTest.php | 67 ++ .../FiveThree/Functional/MustacheSpecTest.php | 68 ++ .../Functional/PartialLambdaIndentTest.php | 94 +++ .../Functional/StrictCallablesTest.php | 135 +++ .../Mustache/Test/Functional/CallTest.php | 40 + .../Mustache/Test/Functional/ExamplesTest.php | 142 ++++ .../Functional/HigherOrderSectionsTest.php | 177 ++++ .../Test/Functional/InheritanceTest.php | 526 ++++++++++++ .../Test/Functional/MustacheInjectionTest.php | 83 ++ .../Test/Functional/MustacheSpecTest.php | 121 +++ .../Functional/NestedPartialIndentTest.php | 45 + .../Test/Functional/ObjectSectionTest.php | 110 +++ .../test/Mustache/Test/FunctionalTestCase.php | 47 ++ .../Mustache/Test/HelperCollectionTest.php | 163 ++++ .../Mustache/Test/Loader/ArrayLoaderTest.php | 52 ++ .../Test/Loader/CascadingLoaderTest.php | 40 + .../Test/Loader/FilesystemLoaderTest.php | 80 ++ .../Mustache/Test/Loader/InlineLoaderTest.php | 56 ++ .../Mustache/Test/Loader/StringLoaderTest.php | 25 + .../Test/Logger/AbstractLoggerTest.php | 60 ++ .../Mustache/Test/Logger/StreamLoggerTest.php | 209 +++++ .../test/Mustache/Test/ParserTest.php | 425 ++++++++++ .../test/Mustache/Test/SpecTestCase.php | 67 ++ .../test/Mustache/Test/TemplateTest.php | 55 ++ .../test/Mustache/Test/TokenizerTest.php | 306 +++++++ .../mustache/mustache/test/bootstrap.php | 91 ++ .../test/fixtures/autoloader/Mustache/Bar.php | 15 + .../test/fixtures/autoloader/Mustache/Foo.php | 15 + .../fixtures/autoloader/NonMustacheClass.php | 15 + .../test/fixtures/examples/blocks/Blocks.php | 15 + .../fixtures/examples/blocks/blocks.mustache | 4 + .../test/fixtures/examples/blocks/blocks.txt | 3 + .../examples/blocks/partials/parent.mustache | 4 + .../examples/child_context/ChildContext.php | 23 + .../child_context/child_context.mustache | 2 + .../examples/child_context/child_context.txt | 2 + .../fixtures/examples/comments/Comments.php | 18 + .../examples/comments/comments.mustache | 1 + .../fixtures/examples/comments/comments.txt | 1 + .../examples/complex/complex.mustache | 16 + .../fixtures/examples/complex/complex.php | 31 + .../fixtures/examples/complex/complex.txt | 6 + .../examples/delimiters/Delimiters.php | 25 + .../examples/delimiters/delimiters.mustache | 8 + .../examples/delimiters/delimiters.txt | 4 + .../examples/dot_notation/DotNotation.php | 24 + .../dot_notation/dot_notation.mustache | 4 + .../examples/dot_notation/dot_notation.txt | 4 + .../examples/double_section/DoubleSection.php | 20 + .../double_section/double_section.mustache | 7 + .../double_section/double_section.txt | 3 + .../fixtures/examples/escaped/Escaped.php | 15 + .../examples/escaped/escaped.mustache | 1 + .../fixtures/examples/escaped/escaped.txt | 1 + .../fixtures/examples/filters/Filters.php | 97 +++ .../examples/filters/filters.mustache | 4 + .../fixtures/examples/filters/filters.txt | 50 ++ .../GrandParentContext.php | 33 + .../grand_parent_context.mustache | 7 + .../grand_parent_context.txt | 7 + .../test/fixtures/examples/i18n/I18n.php | 30 + .../test/fixtures/examples/i18n/i18n.mustache | 1 + .../test/fixtures/examples/i18n/i18n.txt | 1 + .../implicit_iterator/ImplicitIterator.php | 15 + .../implicit_iterator.mustache | 3 + .../implicit_iterator/implicit_iterator.txt | 5 + .../InvertedDoubleSection.php | 16 + .../inverted_double_section.mustache | 7 + .../inverted_double_section.txt | 3 + .../inverted_section/InvertedSection.php | 15 + .../inverted_section.mustache | 6 + .../inverted_section/inverted_section.txt | 1 + .../nested_partials/NestedPartials.php | 15 + .../nested_partials/nested_partials.mustache | 3 + .../nested_partials/nested_partials.txt | 7 + .../nested_partials/partials/fourth.mustache | 1 + .../nested_partials/partials/second.mustache | 3 + .../nested_partials/partials/third.mustache | 3 + .../fixtures/examples/partials/Partials.php | 19 + .../examples/partials/partials.mustache | 7 + .../fixtures/examples/partials/partials.txt | 8 + .../partials/partials/header.mustache | 4 + .../recursive_partials/RecursivePartials.php | 22 + .../partials/child.mustache | 1 + .../recursive_partials.mustache | 1 + .../recursive_partials/recursive_partials.txt | 1 + .../SectionIteratorObjects.php | 27 + .../section_iterator_objects.mustache | 5 + .../section_iterator_objects.txt | 4 + .../SectionMagicObjects.php | 40 + .../section_magic_objects.mustache | 6 + .../section_magic_objects.txt | 4 + .../section_objects/SectionObjects.php | 28 + .../section_objects/section_objects.mustache | 6 + .../section_objects/section_objects.txt | 4 + .../fixtures/examples/sections/Sections.php | 25 + .../examples/sections/sections.mustache | 5 + .../fixtures/examples/sections/sections.txt | 4 + .../sections_nested/SectionsNested.php | 44 + .../sections_nested/sections_nested.mustache | 7 + .../sections_nested/sections_nested.txt | 12 + .../test/fixtures/examples/simple/Simple.php | 23 + .../fixtures/examples/simple/simple.mustache | 5 + .../test/fixtures/examples/simple/simple.txt | 3 + .../fixtures/examples/unescaped/Unescaped.php | 15 + .../examples/unescaped/unescaped.mustache | 1 + .../fixtures/examples/unescaped/unescaped.txt | 1 + .../test/fixtures/examples/utf8/UTF8.php | 15 + .../test/fixtures/examples/utf8/utf8.mustache | 1 + .../test/fixtures/examples/utf8/utf8.txt | 1 + .../examples/utf8_unescaped/UTF8Unescaped.php | 15 + .../utf8_unescaped/utf8_unescaped.mustache | 1 + .../utf8_unescaped/utf8_unescaped.txt | 1 + .../examples/whitespace/Whitespace.php | 43 + .../whitespace/partials/alphabet.mustache | 1 + .../examples/whitespace/whitespace.mustache | 10 + .../examples/whitespace/whitespace.txt | 12 + .../mustache/test/fixtures/templates/alpha.ms | 1 + .../mustache/test/fixtures/templates/beta.ms | 1 + .../test/fixtures/templates/one.mustache | 1 + .../test/fixtures/templates/two.mustache | 1 + webclient/views/pages/createaccount.mustache | 33 + webclient/views/pages/front.mustache | 30 + webclient/views/pages/login.mustache | 25 + webclient/views/partials/footer.mustache | 0 webclient/views/partials/header.mustache | 7 + webclient/views/partials/sidebar.mustache | 8 + webclient/views/partials/style.mustache | 435 ++++++++++ webclient/views/partials/topbar.mustache | 6 + 213 files changed, 12469 insertions(+), 1120 deletions(-) rename webclient/{README => README.md} (85%) create mode 100644 webclient/composer.json create mode 100644 webclient/composer.lock create mode 100755 webclient/composer.phar create mode 100644 webclient/js/lib/anchorme.min.js rename webclient/{ => js/lib}/jquery.js (100%) create mode 100644 webclient/js/say.js delete mode 100644 webclient/mw.css delete mode 100644 webclient/say.js create mode 100755 webclient/setup.sh delete mode 100644 webclient/templates/createaccount.html delete mode 100644 webclient/templates/front.html delete mode 100644 webclient/templates/login.html delete mode 100644 webclient/templates/main.html create mode 100644 webclient/vendor/autoload.php create mode 100644 webclient/vendor/composer/ClassLoader.php create mode 100644 webclient/vendor/composer/LICENSE create mode 100644 webclient/vendor/composer/autoload_classmap.php create mode 100644 webclient/vendor/composer/autoload_namespaces.php create mode 100644 webclient/vendor/composer/autoload_psr4.php create mode 100644 webclient/vendor/composer/autoload_real.php create mode 100644 webclient/vendor/composer/autoload_static.php create mode 100644 webclient/vendor/composer/installed.json create mode 100644 webclient/vendor/mustache/mustache/.gitignore create mode 100644 webclient/vendor/mustache/mustache/.gitmodules create mode 100644 webclient/vendor/mustache/mustache/.php_cs create mode 100644 webclient/vendor/mustache/mustache/.styleci.yml create mode 100644 webclient/vendor/mustache/mustache/.travis.yml create mode 100644 webclient/vendor/mustache/mustache/CONTRIBUTING.md create mode 100644 webclient/vendor/mustache/mustache/LICENSE create mode 100644 webclient/vendor/mustache/mustache/README.md create mode 100755 webclient/vendor/mustache/mustache/bin/build_bootstrap.php create mode 100644 webclient/vendor/mustache/mustache/composer.json create mode 100644 webclient/vendor/mustache/mustache/phpunit.xml.dist create mode 100644 webclient/vendor/mustache/mustache/src/Mustache/Autoloader.php create mode 100644 webclient/vendor/mustache/mustache/src/Mustache/Cache.php create mode 100644 webclient/vendor/mustache/mustache/src/Mustache/Cache/AbstractCache.php create mode 100644 webclient/vendor/mustache/mustache/src/Mustache/Cache/FilesystemCache.php create mode 100644 webclient/vendor/mustache/mustache/src/Mustache/Cache/NoopCache.php create mode 100644 webclient/vendor/mustache/mustache/src/Mustache/Compiler.php create mode 100644 webclient/vendor/mustache/mustache/src/Mustache/Context.php create mode 100644 webclient/vendor/mustache/mustache/src/Mustache/Engine.php create mode 100644 webclient/vendor/mustache/mustache/src/Mustache/Exception.php create mode 100644 webclient/vendor/mustache/mustache/src/Mustache/Exception/InvalidArgumentException.php create mode 100644 webclient/vendor/mustache/mustache/src/Mustache/Exception/LogicException.php create mode 100644 webclient/vendor/mustache/mustache/src/Mustache/Exception/RuntimeException.php create mode 100644 webclient/vendor/mustache/mustache/src/Mustache/Exception/SyntaxException.php create mode 100644 webclient/vendor/mustache/mustache/src/Mustache/Exception/UnknownFilterException.php create mode 100644 webclient/vendor/mustache/mustache/src/Mustache/Exception/UnknownHelperException.php create mode 100644 webclient/vendor/mustache/mustache/src/Mustache/Exception/UnknownTemplateException.php create mode 100644 webclient/vendor/mustache/mustache/src/Mustache/HelperCollection.php create mode 100644 webclient/vendor/mustache/mustache/src/Mustache/LambdaHelper.php create mode 100644 webclient/vendor/mustache/mustache/src/Mustache/Loader.php create mode 100644 webclient/vendor/mustache/mustache/src/Mustache/Loader/ArrayLoader.php create mode 100644 webclient/vendor/mustache/mustache/src/Mustache/Loader/CascadingLoader.php create mode 100644 webclient/vendor/mustache/mustache/src/Mustache/Loader/FilesystemLoader.php create mode 100644 webclient/vendor/mustache/mustache/src/Mustache/Loader/InlineLoader.php create mode 100644 webclient/vendor/mustache/mustache/src/Mustache/Loader/MutableLoader.php create mode 100644 webclient/vendor/mustache/mustache/src/Mustache/Loader/StringLoader.php create mode 100644 webclient/vendor/mustache/mustache/src/Mustache/Logger.php create mode 100644 webclient/vendor/mustache/mustache/src/Mustache/Logger/AbstractLogger.php create mode 100644 webclient/vendor/mustache/mustache/src/Mustache/Logger/StreamLogger.php create mode 100644 webclient/vendor/mustache/mustache/src/Mustache/Parser.php create mode 100644 webclient/vendor/mustache/mustache/src/Mustache/Template.php create mode 100644 webclient/vendor/mustache/mustache/src/Mustache/Tokenizer.php create mode 100644 webclient/vendor/mustache/mustache/test/Mustache/Test/AutoloaderTest.php create mode 100644 webclient/vendor/mustache/mustache/test/Mustache/Test/Cache/AbstractCacheTest.php create mode 100644 webclient/vendor/mustache/mustache/test/Mustache/Test/Cache/FilesystemCacheTest.php create mode 100644 webclient/vendor/mustache/mustache/test/Mustache/Test/CompilerTest.php create mode 100644 webclient/vendor/mustache/mustache/test/Mustache/Test/ContextTest.php create mode 100644 webclient/vendor/mustache/mustache/test/Mustache/Test/EngineTest.php create mode 100644 webclient/vendor/mustache/mustache/test/Mustache/Test/Exception/SyntaxExceptionTest.php create mode 100644 webclient/vendor/mustache/mustache/test/Mustache/Test/Exception/UnknownFilterExceptionTest.php create mode 100644 webclient/vendor/mustache/mustache/test/Mustache/Test/Exception/UnknownHelperExceptionTest.php create mode 100644 webclient/vendor/mustache/mustache/test/Mustache/Test/Exception/UnknownTemplateExceptionTest.php create mode 100644 webclient/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/ClosureQuirksTest.php create mode 100644 webclient/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/EngineTest.php create mode 100644 webclient/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/FiltersTest.php create mode 100644 webclient/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/HigherOrderSectionsTest.php create mode 100644 webclient/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/LambdaHelperTest.php create mode 100644 webclient/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/MustacheSpecTest.php create mode 100644 webclient/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/PartialLambdaIndentTest.php create mode 100644 webclient/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/StrictCallablesTest.php create mode 100644 webclient/vendor/mustache/mustache/test/Mustache/Test/Functional/CallTest.php create mode 100644 webclient/vendor/mustache/mustache/test/Mustache/Test/Functional/ExamplesTest.php create mode 100644 webclient/vendor/mustache/mustache/test/Mustache/Test/Functional/HigherOrderSectionsTest.php create mode 100644 webclient/vendor/mustache/mustache/test/Mustache/Test/Functional/InheritanceTest.php create mode 100644 webclient/vendor/mustache/mustache/test/Mustache/Test/Functional/MustacheInjectionTest.php create mode 100644 webclient/vendor/mustache/mustache/test/Mustache/Test/Functional/MustacheSpecTest.php create mode 100644 webclient/vendor/mustache/mustache/test/Mustache/Test/Functional/NestedPartialIndentTest.php create mode 100644 webclient/vendor/mustache/mustache/test/Mustache/Test/Functional/ObjectSectionTest.php create mode 100644 webclient/vendor/mustache/mustache/test/Mustache/Test/FunctionalTestCase.php create mode 100644 webclient/vendor/mustache/mustache/test/Mustache/Test/HelperCollectionTest.php create mode 100644 webclient/vendor/mustache/mustache/test/Mustache/Test/Loader/ArrayLoaderTest.php create mode 100644 webclient/vendor/mustache/mustache/test/Mustache/Test/Loader/CascadingLoaderTest.php create mode 100644 webclient/vendor/mustache/mustache/test/Mustache/Test/Loader/FilesystemLoaderTest.php create mode 100644 webclient/vendor/mustache/mustache/test/Mustache/Test/Loader/InlineLoaderTest.php create mode 100644 webclient/vendor/mustache/mustache/test/Mustache/Test/Loader/StringLoaderTest.php create mode 100644 webclient/vendor/mustache/mustache/test/Mustache/Test/Logger/AbstractLoggerTest.php create mode 100644 webclient/vendor/mustache/mustache/test/Mustache/Test/Logger/StreamLoggerTest.php create mode 100644 webclient/vendor/mustache/mustache/test/Mustache/Test/ParserTest.php create mode 100644 webclient/vendor/mustache/mustache/test/Mustache/Test/SpecTestCase.php create mode 100644 webclient/vendor/mustache/mustache/test/Mustache/Test/TemplateTest.php create mode 100644 webclient/vendor/mustache/mustache/test/Mustache/Test/TokenizerTest.php create mode 100644 webclient/vendor/mustache/mustache/test/bootstrap.php create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/autoloader/Mustache/Bar.php create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/autoloader/Mustache/Foo.php create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/autoloader/NonMustacheClass.php create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/blocks/Blocks.php create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/blocks/blocks.mustache create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/blocks/blocks.txt create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/blocks/partials/parent.mustache create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/child_context/ChildContext.php create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/child_context/child_context.mustache create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/child_context/child_context.txt create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/comments/Comments.php create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/comments/comments.mustache create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/comments/comments.txt create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/complex/complex.mustache create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/complex/complex.php create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/complex/complex.txt create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/delimiters/Delimiters.php create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/delimiters/delimiters.mustache create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/delimiters/delimiters.txt create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/dot_notation/DotNotation.php create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/dot_notation/dot_notation.mustache create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/dot_notation/dot_notation.txt create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/double_section/DoubleSection.php create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/double_section/double_section.mustache create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/double_section/double_section.txt create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/escaped/Escaped.php create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/escaped/escaped.mustache create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/escaped/escaped.txt create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/filters/Filters.php create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/filters/filters.mustache create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/filters/filters.txt create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/grand_parent_context/GrandParentContext.php create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/grand_parent_context/grand_parent_context.mustache create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/grand_parent_context/grand_parent_context.txt create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/i18n/I18n.php create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/i18n/i18n.mustache create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/i18n/i18n.txt create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/implicit_iterator/ImplicitIterator.php create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/implicit_iterator/implicit_iterator.mustache create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/implicit_iterator/implicit_iterator.txt create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/inverted_double_section/InvertedDoubleSection.php create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/inverted_double_section/inverted_double_section.mustache create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/inverted_double_section/inverted_double_section.txt create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/inverted_section/InvertedSection.php create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/inverted_section/inverted_section.mustache create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/inverted_section/inverted_section.txt create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/nested_partials/NestedPartials.php create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/nested_partials/nested_partials.mustache create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/nested_partials/nested_partials.txt create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/nested_partials/partials/fourth.mustache create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/nested_partials/partials/second.mustache create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/nested_partials/partials/third.mustache create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/partials/Partials.php create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/partials/partials.mustache create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/partials/partials.txt create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/partials/partials/header.mustache create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/recursive_partials/RecursivePartials.php create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/recursive_partials/partials/child.mustache create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/recursive_partials/recursive_partials.mustache create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/recursive_partials/recursive_partials.txt create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/section_iterator_objects/SectionIteratorObjects.php create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/section_iterator_objects/section_iterator_objects.mustache create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/section_iterator_objects/section_iterator_objects.txt create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/section_magic_objects/SectionMagicObjects.php create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/section_magic_objects/section_magic_objects.mustache create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/section_magic_objects/section_magic_objects.txt create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/section_objects/SectionObjects.php create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/section_objects/section_objects.mustache create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/section_objects/section_objects.txt create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/sections/Sections.php create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/sections/sections.mustache create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/sections/sections.txt create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/sections_nested/SectionsNested.php create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/sections_nested/sections_nested.mustache create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/sections_nested/sections_nested.txt create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/simple/Simple.php create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/simple/simple.mustache create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/simple/simple.txt create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/unescaped/Unescaped.php create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/unescaped/unescaped.mustache create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/unescaped/unescaped.txt create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/utf8/UTF8.php create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/utf8/utf8.mustache create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/utf8/utf8.txt create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/utf8_unescaped/UTF8Unescaped.php create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/utf8_unescaped/utf8_unescaped.mustache create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/utf8_unescaped/utf8_unescaped.txt create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/whitespace/Whitespace.php create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/whitespace/partials/alphabet.mustache create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/whitespace/whitespace.mustache create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/whitespace/whitespace.txt create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/templates/alpha.ms create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/templates/beta.ms create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/templates/one.mustache create mode 100644 webclient/vendor/mustache/mustache/test/fixtures/templates/two.mustache create mode 100644 webclient/views/pages/createaccount.mustache create mode 100644 webclient/views/pages/front.mustache create mode 100644 webclient/views/pages/login.mustache create mode 100644 webclient/views/partials/footer.mustache create mode 100644 webclient/views/partials/header.mustache create mode 100644 webclient/views/partials/sidebar.mustache create mode 100644 webclient/views/partials/style.mustache create mode 100644 webclient/views/partials/topbar.mustache diff --git a/webclient/README b/webclient/README.md similarity index 85% rename from webclient/README rename to webclient/README.md index 2e394a53..369b7b23 100644 --- a/webclient/README +++ b/webclient/README.md @@ -1,10 +1,16 @@ -This is the web client for milliways talker. +# Milliways web talker. +## Setup +Run the setup script, this will handle running composer to install any php dependencies. +``` +./setup.sh +``` + +## How it works It works by running a background task that connects to the server and appears as a standard client, buffering up messages until it is polled by the web interface. - once you have the username & password (or existing sucssite token) you launch mwpoll, this authenticates the user, puts itself into the background, and gives you a socket address to communicate with it. diff --git a/webclient/composer.json b/webclient/composer.json new file mode 100644 index 00000000..eff20283 --- /dev/null +++ b/webclient/composer.json @@ -0,0 +1,15 @@ +{ + "name": "WebMW", + "authors": [ + { + "name": "Isabel Jenkins", + "email": "unreturnable@sucs.org" + } + ], + "require": { + "mustache/mustache": "^2.11" + }, + "autoload": { + "classmap": [] + } +} diff --git a/webclient/composer.lock b/webclient/composer.lock new file mode 100644 index 00000000..c850fcf4 --- /dev/null +++ b/webclient/composer.lock @@ -0,0 +1,65 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", + "This file is @generated automatically" + ], + "hash": "2a4fd3ff38c24e5f7c244fe8b3f0bfe8", + "content-hash": "1d57dbea8343d54c566b982f3b02c5ff", + "packages": [ + { + "name": "mustache/mustache", + "version": "v2.11.1", + "source": { + "type": "git", + "url": "https://github.com/bobthecow/mustache.php.git", + "reference": "a3f6d55996dd28b58f3a909d474189a3c1aa693f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/bobthecow/mustache.php/zipball/a3f6d55996dd28b58f3a909d474189a3c1aa693f", + "reference": "a3f6d55996dd28b58f3a909d474189a3c1aa693f", + "shasum": "" + }, + "require": { + "php": ">=5.2.4" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "~1.11", + "phpunit/phpunit": "~3.7|~4.0|~5.0" + }, + "type": "library", + "autoload": { + "psr-0": { + "Mustache": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Justin Hileman", + "email": "justin@justinhileman.info", + "homepage": "http://justinhileman.com" + } + ], + "description": "A Mustache implementation in PHP.", + "homepage": "https://github.com/bobthecow/mustache.php", + "keywords": [ + "mustache", + "templating" + ], + "time": "2016-07-31 06:18:27" + } + ], + "packages-dev": [], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": [], + "platform-dev": [] +} diff --git a/webclient/composer.phar b/webclient/composer.phar new file mode 100755 index 0000000000000000000000000000000000000000..0376ad52a7e34c7e93f2652d0de1bbc0844a95a8 GIT binary patch literal 1710687 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ʴyLAF@+Y#BEK=x!QzN9h65oTLO2tyDX* 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 z z5L?6lrzt@F3kH6DG)RSUVDo-h7mqK!8yBBm;!|dRQi7fa#>1%p5xxGXuzYj(BeMM* z>k-y|%DKl`fo%m*J{Hn_YhC`fgg3?DZ=Um$YV&wXJoW{69@X(pzYq!U6b7GzZ}OY1 zfvc}G^ksWNyMLSTM_0!CdmQc9r!6~HB1(cs=btz3@WGAncu`|e_rEg3uW$Yr6Z&*A zo;vk;bm_nzKl{Ufpp(ZCKhe~vUj1@A9{s3bzzMJ!1h(x#d%wJU?Dh1x6^`yde?gYO z1zt+f_fz>y-oF|K-r;yk9z10{u;0+~XJhqm$m{csUnv+~V*R4Ce}R6-ul<+F^a~MS zzaWA?rAjD3{(qJ#e>I^us{CFl1Fro#qd-qdPy#3#V5PU@pKquLC^SBn2mgFFzkk$= z)xHaumo5L!Y2U_tO74+QJjDA`Za?QS($IhZ@9@9B-dYGiDjJk49~-><#X$<+tN+B? zO&=~jE0c{)Hvdx20|1eOaf8qM|M<&=8cWQjf`VLsVZ?t-@&CYPV{tC(Z47Iyl{Hq1 z{|l-l$Dn1vBfWn>jrEUp;2-6e-V~va4}A$^s6;hR`rkO_fBxeyC=3N@l+b<=3PAym z9I8%_VgriC!y&1HXsp5Yai0I9{%dT9@#%5nU=NY`Z)2ssvFO@A8jwT(_zMPyxjsIE z;`M)pV|A*r!}eR5uJUc^&uj#cf=Tip<5-8L8IutX=|A4?_{X_Qp-VxL00g~8-!A_9 z+Xb`=x_=*^fxdM!L+b?kY(RS-6e`f8#W6&qeBYsAdn^Ec`|Kj}n&jKI%CMkkVh0r8 zf=XHAI$m#YoUJA(Bjbk6c~&xhVlEbF$^?KIwTXQF!oQVnGY``1PmHLb;oD^1Ce8v}a z7?D2E)daMie~jN=0j7AI`?EO>O#ZduKu_aJ;M*MYfe1v{sPT*AcOkY64|&x4ilG$W z)9q2_9~zWgioafWO#gw;9#4dlSJVIaYZmVbY97VGg1{COLF36Zh~hnthx=rYVG+5A zXGs`5=oW#D$>Tog|1!rH1Kpt*1f==rALQT1A6AgYLRC;DNfx14ktIB?B8n{YGS6|$ zxlEZ(W|Q;fd40-5nBMXcVq~e8BZe{(hZft(~h*qtZ@w+_}e6Q3kGhh$Z;jbFe_7?}2B` z5QQZ@-pWaZPwz@5;3_Xn73U1sgs;~+D-$*flRqBD9u&@TlwRPOEt^8kUFK{dEavpF zTa><+_8W_-o*&duaQ6LrYU558d#eIApomV!WmguN?-}s7IE|&lEh-Bvu{ahv{j@iN z$iTxgo#|3P=Tcu_Iw%6}N|EfhR9YUfJtyIYC>?$7FrVP5aT7@6C`X!s>=kOyCLGD^ z*{!-Aj>n5F?AAjcOw~ObYMUL&p?bRBq7BA!$#7s;LqoM&$E#DmEkOM=CQP)-9cQMv z$U>iZLAB=sPKgF#x>MG@vCP`rnhskZbLM?q>}_?E+024EZWC10h_s*Q9McI56Kpv~ z&$~1gL}kfH2)xpG*%=o_in?9EW@kyty@8GYjs$*10my%b1QZ?Xxb8t~JXC7u?Y!$1 z_WYcg!0493N-RIfonockmY45}hQW`cR_c?O+kGRtbp?5Lk;y<3hHZeUxM^#xJL%0SC2tXex$Z12l=c=E9I^A&0< zOgGY8EOff4Fbaz>`$Z?E{%U>R$%osHW-)jDck&KWpGEF)&yby6*8nwla*x}J%1SH!|oMy@<%WeF;?4$Sa0!SiyP*elN{OEeea zS$1$Ke}2tSx6UjlT$PctPdaW{Y3B7LV>yek@{UW;q1{umYeOmd9j!9>P?zpTKF0&z zip%&gy`8VSW0Law>nWNJ*GQ9W*>waDtrqipalQuYWs=Y{WR6X0mWaqFYk^YxKQk6Y zf+jveVII@do7nz_HU013@}}4V-c;Z(-n3zv#}6yoP0-Esj@MtC9jS~iKyh|Bdc$XK zpyzgvNEYM0*nt2A^+SAh2u1a>!^t!}`AviiA6Q0hu~R5AOz5c&MgFCM**(9jSVA7x z$j2|+C4GxI7P<{EiP&MYEzispUg(vK=@gy~;MyIo!QbioHAReiZeUj9pa{$O7L%_; z#mGDHN$zW*XQ7-wee~Vl3f#Drr5V2Q)PrI$9iKjq#75|1GsI~O_!X-dbteJQBEXm7 z*<&w&4__AFmolF2<5%JX-VVekvwR2qD;3tv8RUS@2MFH=yDXwI5}T~|w_ATCl_Hp2 zrLqhx=Al2%^=IT9Qq+1`bJ()DD~)5L3J;gU2wbfcg(y~bp&M&ndRBS){25T znT?V}Y$`TuM|0p~JvS%NZDB4hB27vJlt1UTUak&{e0iC=6`-1O%E@vv?EJ-1DnewP z6XIoRlA(N3-~=r0tw$gCwyCXFWYL6CEK!yrEsYF*t55d!(5Aa%<20e_kmAKXQW3D! z?d`r|RSk)zCdd?3Hm z!9#e)d?&DIr-S4GMwBtygEW=~+_(oOW-&aYFHwcX9{h$+b(dw0G{ODA&~fj6F7yq7 z34>*xQFNfqpCptmA|RrG6AH}qq@DHxjbk#7&NtWNEwjWmzn<>3zCLkXb<@klp3{|g zJsajGEV%V{xM$OY6{`{#DwB@lGsK_T;i9T;m32Dk^PD_S{M+&9&*v1YJGYa>-7s>9 z^i3p6b}>r@VxjH})pqWN!JZT&j$Pg1_q3yI?-G)s3w3_K&wMPzueV`;lTP&Ju#$JH zDlPV0Ilq@06ADfPb-pkA*<~Z;dBRe|rSE&cov-h!q!y?6y1N~g$e|>!z3BHv%$|DfWdudm!}RTzZF5%|=n{lvJE&fwBFk|y${!cw!$u4v0f^@@u2baP8M#3MaZ zH?lAd6=A8^`-{xpM3Y|;>0Raygu5%eBPwL8wYj^H%>RDlXMf5Np+2&K|E#b*)wkcW z#x?`icwPU*8hH|$B&684tkL2HpuMNM1|r#m)($tsFU8u%i&J=H-x-R`VX2+Ty)ZDw zi*0hi`aW>J51%R4>oeqyr*_Ljq$<1*EDzK+J_T0DbnbX98(HIrYZuE2ezj%qZ+KA zIryDr)}gjysL7^WoJ-r``gJ{#9W&%;6+J9@3K1%8b0gz@f0{_xT<$zIq^rF+C$=8x zul!Yh;HQ|VB@?2VMC7ry&xg5r4cBI{ORnogaSzfWId7`ldAJ}ob$3^K;+dEH%HAi~ z@|2**bTVa5U076^*jnfMrut@^G`oGW(b@BE@8!j{v5Mr#TlH<3D%|QQgzHR2%(14F^UAaN~ z0Uq1TxD8_M+fF^)aLK!hz?kp8v6a0Qn&#cbD9B4NTqo6ZpIo`%lHTHB=h5{2>N1v> zGVI;1D2=kNY^NNUGsPkIRO3o=@zOTg6VI`w_0-ZqReN%}H+7AFs%zHB^;pIR$pq|i zVB(P$mpUmRVyfHaL|!_06fJA^$~LoIvpP2f-R%xXvQtNTGO#_%ExJ+Thvla$(l3G~ zw7lWZw+%E%2)Ws56qE>v*sHV=S5m5180vOm8tKGw z;8zuB=G`JJh0wC=3qtP};?fM+c3bj{v=W!=q= zoAB29+B6QgnQqICDoYb;?Vmhiw`>t?dOvDcG1T|oe&!lH_==rva5K-%ggDZmn6i0f zL`;)yGjbC^yQBOhvZ14i@vJqL>FhuqCM~MYq?I&BXlW96drndPK4$heJ`7JcLz>Qv zOq_5x>XOz=bWSy`tQh*;nLx9O+RK=sV4@PF*JZHLYhiDUcBP|p#9}iHbvC=KEPIL- zG~%53lYY9QDR4zZi!@PIsnFDgF85b-IfFJdY%biABuyl1lm0#5b&~2>k7_742H*Z7 z{?eYwB3gAUK~4GKPa4Z}zdSj2V9pZpE9U&!!v4iyzvJM7G;*X4O4;gMxKDSh^DsNM zvDfC%m}Q;N-d9C!v=S6~x&CT_Az+1j3KWS2TSNd8Z0nTHJpgh5<+hfEqV?}&zkEAA zEK^%zu`9rweX5qCagRL})JUNHWqd;-XeYJJ81l*XYfCW?+1h0Kt(DJY@y8c89J>lj zr5#0uQPOu=dbg9QovXtUQ42(t=r&yDy;08j9jXmQW601wR%tw*1RE9Uz+k$2yU@DHX=1uh;)Qlm(E`(+{ z_Dr>k;I)6q7ca(tY5$Oq8~9({KX?Jf`v(43_Ye8(WBJwo{h4G$9->icsgt-_Bti10x>_9&`!wnQ)tU3?corH*KmpmwzQob z@n&6$yNeW+mI`cHT!j(G2(Btp_rSQ^WX0R9G4VJbbXTF&O!KORuv&35+*{$%J#3{m z@9hYQHeG6&3!k{GWlFk>PA>$MH_uiF(LU#{>-gGQk)e5!ddxr&Ga5n9c1|=AO}6B? ziIdMKSK~f88<%~D2<>LlrO>D;+2OM)mYRvIUh4a~!}^`$pGrzpqviG*FC^LJsQt?8 zhK{IL_;5vu;I^UkAUG<$wVHXC48dlzqe{EtZbxosg_6fCH0&~<;m#teXQaB?_HGMJ z5@yiv=_whlZ#-{rA_Reo_ih)oCZ|Q{W>MbJ77DcBR)XI}=(dt$akle_m~l1>x7qjh zUd2~~)>tQRL3#{bPbbG)Se4Am>t}l;!>Ktp5Lfr0B)r7lnuwdqce!P|+ve(78)II_ zU7QrbqPt=FhBjmTbc|>VeA$e9JfdlXlI=l>Z8_i&)F->_UPv`d(rSDr{e$nDSE6hR zu_mtckpid6@@P$x^TL!4t8=S0WohWP;oRF9HM@wUP`MfG<*~w$zFi+Y(F`wz&I~Bu zcTwVl=Vz`S!tjjGuV{eZyQaD^d1M`HzOM(VvHIa)&F(k8yT>$wwmd*j}eqt6wN92P0!U+bm$m1pV)2h;V{Ha^3vnlr(>7RZpU}gW9YU@#6*0b72)a0`QNl29@-x6!E1qSIrb8k>Mc4k;CNWg` z3oN>`b>ND}%`xv+7L&as#gh9VDFmmDm#b++=xta!AYS^*_+5|;J@D&({0_K26l*V_7Z?OdM59>Xm4tA$n;?v<`0oR9%52vxU0 zkt3G+b&cJOTi2{Df8M0fU~M;#NnK$Fy*`{fwXxRpG-;QCukN-RM7m5D!f@U$r!BFB z@X(6YliHUqnTL~bKsO93aJ+i2E;f@hOBy=3Y>m6>>04 zsc>3PDcGA99jRS9WatJb%}B(LcD_R+?hJNcw!5R!Y2Npe3+7Ie*Y_O@4f$G|ywc>f zbS%#rT;#ObXlq@YZ74&Brc?5eLT5w2qU+L7_}27U!VCBGWX6e3da#(w#B1b>R7xah zsmt>Ya=_2dEm<(x!9F4m8!{>%(eM zmC;GNBNj^b<(>dq?a%fiVA8|Zp8!%9FEDx$&06|kLu^D==Gnxlda2^+=tdkCd^U~h zWnIq8!$p8BOy8pXJu-MxPv9mY%M`(3nA^|1Qyz(mmtn%)+T!+N9xv$I zH7p9F;-Qx)e{*JGi!QP`p6>4b+Co;-j^DToh)PkobR81+wl}WV^mMt+W@%*1K$Gy= z!@9dBEEle{wbRTep|5W^xtU~1<(1r0T1=uvV$un6Qbp)@NF3&zObn|F&&~Exy5iIt zPr?vOWzh+>8!CWpPX%#X>~h6fq=Rkj9N}-hJ!}9WQ7HKaF}Zt~RMsdy9**!|n-ssZ z7x;JpiBL>l9v^{88K(VCT>!W97aL(^Sb_=8#0O6q19dAMygtA?8c?JQ#ZWro8Px-~ z@`X>_RS^|W>7aniL}nf?XCMXWvgh{D?Qsg>FbLQY#Ss|N%6`h4r~Bv`xEnQad-U{> zD(`oSI0o)y@C1$5PCCvu{L#St4GxVK zrf^3&M53K8(m1VSH*2-PLTplAknJUqm-n%uaJ| zD&~GEY150Vr8(2nh!@II0Pj&8A_!reUfboF|zI!&0hrPp9gm~lG#k9?pm5)ohfY!rWoop4K5Nxy|+_cZ~ z!K^zGn^&``m&P)fSjo2x&RmnT2_-Wd+FNd**6QDI z$v1uacgzxeb#TBt?!_!w=6gn2d|{LpFv?G=Gy<)b^B3pPZMk1sO!(4xMM2DWF9!-V zM723~yYmbJm};e%!ZYgp2+1ATon+X^8>8f*&+`!7nSKo3$xjdWo6DR5C02ouHZzQU zP@gXIFV`~mG3$>mjGw0cug)6S_^+q^ce4g1+)|?j|t5T;%+G6NjimL2>i|0GH58Vnmx5Z_fVOxdB?-~L9p)bWD z^dUko)4fLRWT!uotGI_I#rGnXCw^6DvySnPGpZj5%5Eo9aH<N>DUbD_Cas^y$>rDp0?bkIEgAmcW+o;Rc$XfEmbv+`=JvU87BIF*-IZCAoc@>cB; zk(7Qaljek)tW<@Nw$hE~CQ1~auNYt42XeT35?!Ua5{j9(TcJM66n95ymvac^zeN;* znRIEi=#WnchLzhl8fP~ZvBVqb)MrYQE}&Pa!Oj)t0nvf*-qXu3H2kLA`eu@hx7GoLN!Ml=WFa|gbO^i zWUgimH@;? znA(Q}8HZcNTVdJ(If8w01*OHx^MNE*i}eva?fe{Fb5(Oj7m+-_@J?5pEGX5<9tje~ z@3GI${iV>*jV0Xhm|b}LED1=(M-o2vHj{K<@%?^T$JHA8AXjJFJEJ^iSLVg;GK~~a zD=D@cG^`^h3-4&P#%EqIpPDP^d5lglH)yzdUm>L*-ZX+3B!06_7GZY94XN0tWe^um zN&reO-J`DA3+F{xP|zpg>~6u`BPKGqejJUXLh=+|*H>pCZy6FrT_W9CfrI#Ilk+q* zZl00`<}Ouku_otk6z6}dCcn!80WuA$6EwOUF`mEBk$=nc)rZT3`W?@|{mVRml`;8? z=P&IKJYR6gSaR+msGIUn{Qs#qzhN?phX8mZP!U{!;DMhV!Vx(FQOz;p^g(eR&HvGY zAGS}$c~qt!*O0f1UHAp$Vq(yVZt?)7WC=7WdM2&s=AERk*o$bgNuZbx50K2Bv;6 z?VK9?xz>Q5mCFpf*GJvio+PiM$wu*(z+2=3SvO`~#Q@7~+xZH~+*MQqbH<{qQ>7%KtJLEQQgHy!;5 z6*NyzG80?f_EgX9?0L7PNzU3h?D>he1LYYU6EDqqG1`nTP5S|J8&PiQ?g6(1d1JCU zpdvHC)ctB;aG6{W5oPp>w0OroJz!4-=>4DFavx6#t7k%~aQe%67LT$5dFf&w3D6M@ z{T09(<1gU!N}ne|v7}#}S5Uo>r|$I|;jrOCQnrh(@iQ`=xa?&e>$_uw`^GGd^Th4- zr9A8kB%AYoJa22=?U%l+8np&GMzRO|k8kxP<6c5KK;^xbEK2~lR7Z=6)`!epESj0o zt82HR`-#=gI@IW92-S6*ZRkx_VJ@jG_r}RPt=2?M3v2AKQ#(OQsFUtbAv$NRiAu5U zHB?E~j9Jwldh^Dq6>0HFK>NgOh9p$9;%%rY-{9J@)^PgV1$ycjQ^A{_sQ4(msUr)@ zqD62iH((UO?wum&5lv36<%VF6Y!XU9rbrqM4)}u#S zB-v`yo1fE4HNVb(VjhA`)Nd9sYFM`pFG2s_rem^1(nS%+%s zy;+1Ua=NQ6&7U^su(&Nwa|km=rN1Mi$#zp;&P!5`?0jGaMFVedbgGujE?SD{$&K|T&m^ey@^U*u2p`byCx*~uwQTR_6|;|LbkwYy z;o9zT6`ahIZ$Q-Fd8rX}0Pg=p+hh=elE6~n0VMP5fv@8EBKaLeIX;2*M-2w~TNTE@ zI_U|J1r^5lC@H>bEf0{}xJ&^Ki}#VD-$4fNhWBrnKZJ@!yCRX5dd{3fV8soFuQz2Y z&A~n6nv~2Q$imD|PUkN6;G1b3(ZSCVN2Ci^9G2wul((F*omX=?m5fc1qs0c9_}bY} z-MenO=yB=X(4JqIg{6BaPtAwjus3SlhP{=nwUc-+H0R7@X_#qJeNWK!ez6H@ z0%gvKBxGG*4f<^`nWA2;YZu@4Ggbslk@;Y?JKv)il;JoKgWu$=GuZP_wrJ9n;@ zY#m5wYkuh196f{o&(DhD($XBncnhHv*ej=75yKd(0;N=k7fq#;j7fUJmz?V1R(ZDd z(mQVIye3fnauH;RdGv__ivo|4(C)Y1l%VkSwO8)MF21d{+e}f`bEU}{|IfI;-a_5y z{Si`sJ|x@xp_gcM7X4NhEFUnO;CEKT>HkAnpmg%n{SLC=@<|pLu`7Zs*j+|Q&8TPp zLLOk>$b-i6;uInUV-iiV`)K2QkqO8%x#&ko z@}o?cu~dLI-O4>D`3XxVf-|`tcq{a?ewJ+Z7iHtsJlkD+Hblv7-y;-RO$B$}SRHO) z2if1)xdS>@E+4d|;997BSO={?1F%S@MecRjb>eQ}Or^z~B`SHNXvy%eywh;t@dS*-Wn;)ri24aZ8sdUrZpb3=r{T%uj3 zjeQ$VXMTD{HYmG^mYua-;|tOB`e{v7=bGuK$H|`57Ph;;3prgb_d;(AlXj1pm;nKM zYTJ+n82y&M#dG$s5w;V_Ksv{tE?6ttS^g@#wmG|qrdR|Js$mz#=C09if*D}y%_Jmy zlIii>P}}>NMN5vZTi5fcA2Pv)5b)^h`G_mmXNBJ!kJDi_l{v~~CZ5*Yvc9M85DY3dpdAIvu)gogi*Kf_*Ka>dwn6jC|y~osp zPcp%C4iLD9JTxc&;gJ2cTzKN3*s_A^lH?J04u!F$0^PbD>a%rLlBkmBVVs zUx>}XUv^R5R1PRJ-v}WEN(2(yXL~75z4#9>&DftIoU z+!J&AcU(>@E)AT?9$m-4k_x zsn3(NROM?c%O+1<7u8zyuK{+UOIn@v=f<46`;a3vitAZAyjb**AchB6y3-=uq^H?! zx<1V7HKV1wXj3>$XWXWM?&=7Upy<;oi0M@}M6`d@Snf?Idyn#v)1tP@iOW7M(fa63hEb|@J1TdJJK4mQc;sDs@4U7Z1 zqhrP<2%IBeC16`dw5ro0K5l=;zaAezB|!2pxcmdC^!{Rgq=+hGis%ak^pL$s4B`wN zUl0V}U3^@Gf9dv1j_4mpmJwzXI8Cl{lX?e0NLnUl2EcbCabBx4!G>^TOVrREi_Iv3 zTx$a%2)lBVV~JD=fmMeF2uHbAPN?G71H#ZP0Uq3mEE~x@T)FG@o+LMbxVHA<9gDWb z{Q@4Iwc{VW(4bFKjJpAp|F){Ed19%po{9|0`B#D2b{)cHm=CEq^cwi0JhQ!x;3i9a z2G{@$T-@2jT<=90izDwgZD&1&(d9wJ{D60<^*Rfe+1lqPD^HTEkXj%a)tg1$UTvSq zg+bU+!c0BUZC&G)bK?s;iY`=gn&^aw#i?4d?KCgD!*VjaXh)jl^WDD2)Q-HQOIAgy z;V5k`Gt{9biAc?>rBa_|XM!))>~v1`<0RGsT&drEU^Sf2>KAzi$Vc(@LwY?kgqH>* zta#>_G9&1Vc_-|V+Lhw^%stH@$HkHXZN^LyWzg@CeEKC{z&Phy<8)c?tW-&)-PP)8 z3__=*NrzuNbHNIhN|~ii@?#=XkT3S}Mn_xW=3--T{BvF@3$UL;k-S9Jiax{3xPOr{lcRw|Et1)|==G@8D2qd#pI4!x~ zWcPgX=w>@z59{W3n#!hv_^7Yl?>?J5Y)y*`o4lx4$8Hmazv$%LNPA=Glwc=bFRG@|4x+P~-yJJJZZq7e@HW6#^UESJ_$-kPgTJEH9Ow0uY96WU z{Bl2Ow5vy4P8hfKwLaY|9VKWKKM~hD!Mar>33z6ih)W!Kr@cpNt(4?piSMvH&abU9 zncUE%r9|@@>yU+V@`S6sDHdXB^`@TiY9nbHV{fUGtVJ2l%oo!uhBV8z#nV>bF1=f7 zOiSz*dl4TDHx$xk2%$JQwS^vLs9Wiar!e_G)@_)~6DJCV6P~Ei+xLkDzmrJ3KT4$h zT_Wk+2=LM&BlgsdX|d}^ZtPEZzfnRl)W`Hv1oBHwdo(7VIqwf7{U{ie&+61q_q@SF z-8aPj7^c1>0O*0^q0E#_eSj|kau0~iAJ-KA+VBbk1bJwKRi3Yl7X`++>wt&Yg z){)xgMBFD*M9htA!v^5-rwUKr%tZ2NW^-h9FH)4AXc>Q7nY(s+Sy@{qIZql_1yn^y zOEJO7Ar9{Qsb0k+!*=PAnz7*c69th3y<(V) zhp(ulI7BnkkIZ1PajTTZ2*?KVuUi0U^XBQmD5Ak*y*Xiw;ChXSwO6uov`Wd+?I@Qg;n^9dTAj8%9HDX;kq|iBd&DdWPApP!IJoxuZsL4 zyY&l$)R)~9U}x*jrEi#Tox2bn!^}Vi&5Rtj#NByRB+k6nfWdh35K` z-~BqcD=sF7)2?lKdtqgMv^al2R(I7;~ew_TB*t`Rp&JOEr-S_~U@ zku%6;ee$~FO54#fG3OZ3kIBDv;Yi8(3G#W?0{FH%$#2~=yfXrMvir+D!!w!TekbD; zLH=7c69GMQxpV0kSn-j(^h%t6<;{Qi{4EXj5#4;l<^ZbNl1J}*hk!otme2a*;^SJz za$g)pW04eBVc)`72Sqh-=k|(Xja(N2eLPgyXZ;dzSehSic;&Z_hUuR$KIDbx#_P`a z2cD+cD3gla#HAODkk9fcjLAGU7w7n(Ox6d!Nwte*3QJDT0+*x9ty$76xb#j|c1GAR zzV1&_KC6xNQt`KRYp&MJBw58_lcL+^a#=1*rQjsqwod^>#4d7cEvo*2X{>m0yp6-( zjwa4Pg`oynw6lFc%S;yL_5||8)%e61S9KoMN8`3Aob`gxivdDarKJ!HikH0Q+JZpp z)N3I@XzCDkR$~Q8+7k!r36Ncb7EGqz`f^sc+Y6{p%qDS|tOTIie6r={#!`0!I>#nq zw^%NNMZG-J={DI=YN1%$*hp584xu~Cr_1!$ET~+Ot{&jO42GnY%`39w;I9qDg-fVP8qN>W0IOnu_s!1fqj$XC) z)9g-_cYWZX&L|{N?6-m=9OafPsLFT1A)QmjOpCQh)aqnyr$Z=)p!n`?MPG?_us&tM zj>D1iYHRH#N985nnw3kQwtC!LZ{S|@*q+=rIBK5`9VvvW2RT-3JojU>x!1re$=Rj6 zU{qWQvw5$oEOkLV0UNxTyn^)D((@9p@29vxot)WTa5+PmPJtN#YObVbd6tV5SEr{a9DE`4yKv)V{Bj2` zdbW}!6j80s!pBcxZCYWm_=Al7CZ z^~B8N-P|NQB|5LylYXxSpU z)g_S5W`ZwG?RscX?`BO5Q$DYpKku9Fv{UO+vbe{GH5bgQ%x*r{T!*QRZ^|$Ez}$# zU2Dd%+H88J@H(~U9&>Jzo+D)Y6fQR`x=5|HkJ&dVzbKHGAly(jjSZDZQ*RPe{_TM5 zR^pKxayeV~*a<2pB}HKty)+X~&CQ6nE^di5llj_-Z(7)ImBDr*Me*1kgZjDYff-aX zj5hYA3a=YvI~YZ5G`(zKwa8q%;^IQ~Ky?QX$ED5DYra#lAO!f{LnC^szL2l_p&sL07`>hMPx}1Q@NT{!&w{1qkO4OV1TcWRQS8PCNC|| zK0$Arss;?-uks*&#{$J*)b*yn1#OG}85Wo*?4w%O7!r0qawf-}U1IQ}MmT`@MlI`6 zd2VEX3SjU?x6YVP{siJdX{YDKw`(21SwBUwKRSM&e&4tVr_WTHF%=(qr5zWME+y>ES$O@N+=y3dFIXa zdf2VX3f)lwl%{BpvaIT;27#{Wq^#Qgu`UMwY|JG57R^`qG9dK&bT~;@eYO;Z&2Ad- zsC9_>XdWYrOfAxDrkWdLKp9sZ05P=Mp?}63c0v( z#$r}()?_%PFY~Fl({DL?^qQv3b%IL+#HcWK8FOBfNd9)g5IcA~#g^QVdmGAhHtvm( zHuAjytX(LY)72bbO4X7)JD05G-6r-KXDM02a<``sEV3ik$F)kQDOD!-fPPD zR&t1OzMc~^XV`I58#`YwVdGxxSr3_VlRG3r8VL(PuH!U=WQV|(-a;RVo4UJ~2YInVb%7)A#g1n7t;s9=)HbjKIy!#THv2 zkT-SK%Dhw-&iwD>%eUf1y+X~ZDMuY^xNiVZ>F=-(W zKXC+-WM_qR%-e+t5I|5-Emk^C^{NQG8$C>R2MwFf>P6o-{q;ueJ@5q_N^#D+=>bQs zL2!%j6T;t21*5EP1xgP^ByFjcHb*Uqn2V7i*lwt3LU80ytTo(EjOs1XbgoE0x!pF%d9^h5YRK;k9ss4siEd?8>)8u2F2lQhB$w-Udf~|mj|N}D z5&#iffraKg1uozFfDS1=*E`3`nn}7=F?=J7Ij^wgVWS*r!9e#_UBEK;%4t^yQY9S$ z%yla5zSE9V066I9^3IZ2H=P;@om@^#a8Mh)o$v0okPbSQ7XY=u4$eS_sFUw-<^2pwX0+n!WO7N` z<7bH;lM9U zbaSP*6d8db5nny1&f#J%MJU??>(Xv^Ug*f`>a4o^+|&K&ND33_UUF0FDrOxcdBU=! z8NM?^vv%sB-_!}|w>ISxYL7#$(#bGg@SWDpsm)B1P&7bvWo6RnJlo#lYdm;54%jyD zaJVW_l(bnFuGL-TC;=qiB*zU~?}oL^(U)d-v*PMdIZawsK2;a)ZJpzYt6>vquQfbW zFUyCFw15FZQkh;%;NEEGkg`y%WrdpDjJfOx%&m~gp`MmWkYTA49x+*284$X*rAk9^ z48ru*oVcUA08@(ZgF2^eHSPx`pC~K~E3XR)S;U73s_Q_Q^GIJeXPkRE!~P};@EKiX;ESnu zm|S%nnV{U>lUDuQ8Zcu>_4V*m==A;OZ|?o3l7bJF6yC$69}6LXdMt%(f7Av%VW9pO zdLAgMt2swqqv_mTHOz{S11MDLn)}HB^_=qIY|>4{Mp(X|o%Uz6E+9%K$fPlKA2x-lwVXa?gcS^XXewQqFc65i@ zu2u#K{L>?bt!Q~SX*KJrO!pUpH_}Q>XM43>F4mRZtrQf#)z4kFnjmF(;e<*u=w*K< z>+D?JhwI&=S^#*_yx~Ra%EhInc@9!^*=V}eZ;f!SLyp)gR@N(QC+I~+H$7>!fp1N1%ARO9$OqW>#NfN@#YMg(04TtXO~vA)#xYD5 z7emu72k(+1{=|qCG6ztobj6zx^2;2^T8ydb0`>V|hJb61{fj^>l3} z>2Z=CE@Ygm1)<<KAD?7(J_$z_tz|guiN`9F)_dA=LKaXz5^YtaSb%FG! zmVu${ZNpAnTb%Bg$p6mq!n0uZ{U`?y@s&qCc=au(bgV=tI60u2!KtEf4}{@}OoB=| z#o&)I-_tV(?oq+!kw7#e0Nm-uzF z%CJh^J952SvP@12#Rc$2yw=r*u@wORp|2MqVg$~54$$pNTc^uuiVFEI)nxoYE(r~C zKZhk`>n(z_Q*^PjySmejIrmesyk9z;Fxu|mqX43yY;L$iK`+20&gq>I9|ZioC^-%9 z$U)Uqx4yy`LomWWt2XuaDS;X0X+*o;b@($tZ3T3LnB^E z20NUvWS5fao^QUX&-@DHc&Nzky*@&?O@1!;Cr#NPyhd{Q11_n|n^}6Wc|6Q6)8nyNSL=WK(%qZ9w49_U#ef zhtm50CGO4I6veu(-E)4$bM66+0(wZ_3DQY-MkgRBBAxi__teOYjLgcceBSr__TC3| zRb5tuArY|VT62zZk8(&8bG>IzR>pY%sV48H>a4(;%$@}rkZ&+GE2hO-(^E5@S1Ue=I-OyXHLy!NJD}i*jN#pt$98MWlhA97woJPv8UCWu zC$!|&IrM_AP02o}Wj`QLz@AqfJ>O%fD++yaacL57`ywzyng7cm=jAQ{tlLM%%&)Ne zzpkSE>-2N_JpH_gPsMMi)cod`DK+qqztP)a2(5uMNA;2y0Wz>BMKtDp#Zrp29TQ-9 z{vhK3aryY>q~VG4$({!p=3Aupnotw^vx$)xeBOBe{33A9{`C|5=>s7D{t4jn|681n zPCby>pE){kJK0q0sK)Q>X@HR5zu}eQxLY-s&Pl=(>AAGk0YC3% zYO%+i!N`Rw$AZyrEk_A)X@O-!h|Wb@5z1X2(e4I4G}=TA=jlO!PqxE~rzkoEwQHtl zPbhc?T<%*)%iedKj{ZVq{|PGgo*^SYCA)l^p^VD~7MmLzL=*hu>=s~LEfDD*6(W~`tTorCy}DdmZ%jTqR@N zrUsGpz#b`dO0|TtO?9 zcTFEe4LrZxfjfsBfRIe}E~5AG~(Xzj#Pq77`fGeo62sbV%?3 zWw;3N0;O<$5ipKrgQRP?#Pg3VBX*wUBg}&U&$56~G1l4Q!-WnETZ`BY2?49~%R=}C zYpJ*&$JZCsPnTX=taU=lx@G z$NNK!Y0OhwhwBZhKO4nn=v42dSH5ZHYaN}6O82(miV`0@k+6Uwyov_Vr3a@%oPAux(N3%a_ z)CwfLfM^Wy-Scd;;w3INo!$pIAKCZACEv*fbxyY?aokrIX1VXl?SX-v#+7W;t+PJe zW!sR*3b(gGqh&H#vu7CzZ_BFKrkDIlX=-|cNy_?S_=TmYgh?2*GXqAF_vm)N{k~ux z*cnvf(=U4LmK8Kac~bt?I`x}wd!sj6bJ{WUZ4c2iAD-7=IAg!xE#@CM`xC;-)|>)d z8^E-Mp@hpXIQsL)yI&szvd7xJ85=Go{NtmVP*A(dDrGt_?B zy?(7u1!zT_K=pyz?CT4EVd5 z@R`Sju-(Pj-anw*p&Oc{a0v)7+it|xd)(*<*#f#r=fvg}endIqlU8A;oHOft%y^Q5 zQe&|{+?EA23wnt6UP(4mc6943Fk*TVt-RU5tqynQkd z{(7wvk%d@Vpr{{7hhrwXz9|E)sQI`;uIh6<7VF`VsRs>Ij1{XeS2=@;_k->L+7 zh|1>wMwNIOO1`Pwp-SLJ6RyF)^?y()K12ZDgG+Swp>H$|llgnP$vMk7W~4rWuSBy} z*#;Y9i4sm$Q=Uvcy{wlU9EAORdSr`Z2a9hayQ{S$ArWxJ&&C$EJ=Ankj)S-)D^%$) zX_Hi&0Ps^cUSB)%&8GK}m37x3=)qNX-#_Xj#%<5k(i{DdBKKsj+-h~_koI|Ph$YYYSQ6Df2=McnMvLzA_K zfZZr21?x$L)d4-=Hboi_x5HQxa}M3I-go8(91>?(Ti0?7opvbpq&`sOb$wH1V zcis0#?tA%xG@e&X8N^X9lm4QoeuZByh6Wja3ot>c)?IdrySb<1VT<37Y^ugQ zg{#eJ97c{Km;qxsHShoX^wXzbs9(4Y4`KkdUm&^jRWg0_k9p?Cd}+Xrm<=j)$u z;UV%b{Hi+RzBF$Xo>gTqoW7otMG^240gQedLAVN>HNK<^raFs*z)Ok%sbf8)Gr()# zte#dE-W~1NGx)~n=m1*2z0AJ414>-w!w$>yEF@mM;QlWc@V}j!eqk+qMJ<3x{b&Bp z8nCrSQ@Z}75T2Mb57|V%d2G({AefgPRObp9q!`=B4=)})jjvWp@9%NcCHni00FXN89@KG* z)$ZNfY-FpS7_g6l(cwuscd2)fYP!~J!qD}xN&9hdsi`{In`E3wAh0v>32TO2uqW&> zTey~~UT|;+>bp&9BLf9NmcF-$kq`ckE9Q8$qqDY&v;Eq)0B)XP0f(Ssqb8Y2wkjkvCd6CsF zGq)#{39}#|t=QZ&84NeQX0&Vo54HyI`W-%6 z;V_YSsutyC9Blf1iUE>CSzaLFciYY~47vqH+r^~S8p7()i4PhO%8K&19NG(Z9^9}$ zVhv)iHdCd;@!Imhq_8=r8A+ibNuQ3G(sV~BMVVnar`L>CuC6{3&FUK6i*oSKz{j;b zIrDF^k{r&GzB?ehg$xF=oP+)>@^5QEwds5c*ui`o%x^(mMKF<6)SXzHvBzapWVp zD~vk#ss3%gzVUza2Kh(U$eYUiA``r(ice6BzwNHjkb?eG`uUpvk0Jp)-=DKx0qV2! zL*Kr^5uW{Nk^i>F1K;ZLW`h2*zW)=%0E++pN4t$jgvI-OXL#fP?hXD>Bz_BNgCIb> z@eY)SKB?^`-5<*PNdO;sleqSz1&h-rn2HixflXlShq0^DcsF*^53Re$w`o(x+;vg~UQpFUrS zhS2p{Gh+%*P4<3jj48TA&sU;45`FZO{xA}NO`YAoPaO&a*c)4T0X~scKsO9tZ{EBPcx{R*7Eg&|uSh>Np5KpHDyt%1gEmg zo9^%5womW|a@s{kot4T~E| ziI?-~bj0mcE(6)sbJPMl7?^>$!UKyE7*^!~P#?qtDU^-sLF$eK*&IPC2l+7DxxxEE zDy{JtTP~JPRsG|rLg6Wb-c=fjvM)`3}f_HlsjmMURlKuEq34m@bZ!64yFF%MR@JK1%NZ#&*Sv^&*lDA?V*kG z?M(M$>JQXE_3N|uy>hcJIrEu)?VkeT80`80{J{V#wB@z%KJyz{xdT_N zg#PB0>TfonN%tFR&`Zj)@2hiJg|R%5D;ZdGNT5OqURo-H?uRbprN_#9I-Ux0(5lnq z-IGTJK9znz^Lj?8Ycbs*vn@(N|%OG*gO>O@Ei=7N3Xcigv^0 zs0@Q9F?V{G74tTCCj}$wlYy>`-WIk_nynM|eowi$6{+s%^P3{LjF9etG<#&bJfSAkmTyWlXzw7q&}cFI(PegIfK z(m?ygYEJ>494w2@dI6O|beIS$rADzJ!0Y~C<6);@D&McAbzY^Ah7`qn-ZFRB{Vox^ z#UWPrRURw@LQ&{i?5E`E9Pgx!LNqU09n+aQ&JTqwD994F3AWi^1p6SS7r2QIj9^rK zAzAx2)6x@!+WOJN;*dFUMIb_~43!EZ8>JT2%ver%yLSwbNZCY^<1C>|i*k=#+1TQ8 zw!lHSeURK5C-Wd#4m?VRe83Th0(~Azgs0nHw1cjpO{cy4t8KgZa@m=(zto|dljT)^ z!gu;th^H(%TQ730#1haNkw>{*QkyPAE2kf#Q!fj`8XEl7f*mi)hojUgkUeG-#bQPx zY$=}IUg3A+*-v+eAz7WgQCU2ieoAs$J&iSnS&Lyc6{{*fTzd|?!4rL0tS9|4E zFJFNa1^ef(MPf=+Z$kRl<>kLwT@c|<%L|D8|FEt>7zHSm`Hd#l#EETy8UsofkW5WT zvyY<3$!v&Cf^Xv&e($s ztTfk=Z9dk>QIRjFy{q!pupH5nVCRgr$q+C}9H-t457Hzm8E)GXfRfd_xz=x7cr>ha z>IFnyiJKjym9C}&^0u=J;+@&`?VN3NT(Nv@gN7l!#CLg;WK#2e6I?v1kH_f*+OyO1 zd1W_KuXXIPhuTPm+o*5g=#5=a-YHWJS*g6^Q3|+*k3)mWF^jEkN29aO5QhXh>bWs7 zi0nAyhgHdJ5_|N@ws=ar@SJ0#9il!J=_pAH{rY+L5v6^m<-V_=m$D)Ckfba}G4%sQ z;U1NQT%?*_57E_|hUSjIQrW?$cw|Ij7`}DB?@O<>Oxry|XqQ>yi0{ScRSaCuQ#JAT z+HU1#9gi4>?ZZoWF5+^2ZYUEQF_J}Dm^R2+v?nZY0MnP33MxVgEV z>?(wI%RH$;m0p0fdjx{R0Sv_6ERx3haW||E&v=_39`tTypK+_>mVi~ut8gqCG0J>S zINUis#m4_hTj4*y!(aVvYam_049fzj{#$E-W7FS?{r~#x{-13PKBA_-Yz^Mqfp;h1 z$JW4Q2!prd|ChH0`u}8W!0V8~3Wwt-3^GjD&FK}L<|pgfXi;LeVq0Luj7N3gn)SU9 zEDhtFr*wyAupJvkf$(L^Zps@CCfW=JH)|8{BF}s%yDg;4K)~2Q6YDej+@)YWZ>1cx zd}{Pu%NKrW2$UB6{CK>}BuROP>WpX*k#u8#RYh5&vDzln>R<|5xpa6Lkhmi)`t|AW z+MZ~LLvmiu=5VKrG03*fvaqf(Rp;b@vBm+VcN)U;wtnmNa`G6#%g4t^0>8@!+(Sls zObEb*d$4ca9Tz9_H2EbjHnFOmv$8%BmwQcvpulb#KHJwtGC`T+m8)_F5bDU@XGdd_Kmz9Bafv@=J2 zqEYdrLSB`7D)VGGMWVEcbl}<_HjY|vZP&98Iyq(p zCjeZa%PM~G86iM))x1gVRHTF%#W(Hf94YL6gm$E+SGqZ?v|m&y6)U`WEPXvF54UZ% zPVZ%X;G-1C`^Em;a)jfy>Y^hO7-m3_*w+pW3GN4&4|8CQxHnH9Z;$yDo3n>jPuKzB zk2~7zm`$~ZQM+xLWT?jk4t)l+!9^-?4ZoRsQ@yu1ObKM;((xI@I*WB z&Hxtwa=`!Ar-1T%1wcb!<1l^sb8q77;p6MU0>(PflEB~$@WBp+pJssz^afbWV*l-b ze*b@OuBgZ^p$|V06k{NW!(Q`TXo`#(2W`J^{UPMtAc7u)@?%2$ON+s{CK7~@_#cv> zJz+q@=$|C#S7sRE+1LS8HG=pux4?G5deSrvAbI^3;(;-47Wlck^l>IvX8Wp3Am91J z*CMYkZjYDReuC5Oi&X@ahCg+C|E1acsYXPgjqm)fachAN3ARn*<98mFm#`Jg+b%^E zd*MmVraJA22z>jCj?rU!BYGnl?i^2Kz!t1zdP{KE1CB#Ja9&-2$EH;G>jZ*cGMel7 zEIn$uy%HPCuE6)6;q3;eS3Ocr&oKbUJ_|tBjOfk8v4FjOgV|LM(L4v?N)bx+Ansy| zCs7Ftz~t-;W1p?|Dlwx#HKJOGqf>7hK|c}mFf!_H!f&-@T=ARdTN6;?RIuVxfc;o8 zkGx%u{LyI^fR;lvr?M&SgNlN`55nr_o!wBL!wa|yJ|qG$6EG3Yvn7XdxLr*Y$LHBuQVh)=8Fx4cQV*JQy#9x}>kanBrZ$nTt_POdD6 zK#oDL1C*-X%Jt&cv6%v+wNeMV8$vftEGrf6RK0adoW6r^q~Apahf#d!g{^e4FI5YP zIJ!#pPdONo0`=$cd^HpCRJn!*{4WyM*fE|^EVfWt%g~-a6VfJj3ZUrQIb=ttN>-Vh z1Uvf+j#=tH3LmwR?(iEjNvb>@SP1Rg-%r5jkpLNE_kOAL!^!Q1wgzS6I2=1|-`mwA zcQ0yFG~#@I;_VeEEqgd$xW;2c$8K^*x`-_0m;ADY{qfaW<#SyVg}Ao27X5S`{c;Ml zjpLO%twz#H9r0%t3aRGki@XE*JtrrfI{BU;t^4j_T>reJSaBYElgG4a`fISb09-xkT z62#gb8_~!dbh^FI$aZPAyAwKUV0NOCTM}_ve7S7`0w=gtOqT%{Mi(12ZqQ;5FvTpE873qxzc7uuwSrH6iC> zWIJNa?v6c(emGfu+~r}}9=y;H%&j)eD+4l%1F(Ef-JM8q)HAh)3Seo?A_7sl^7-Ah zWj>kR_bL0gkeedKE>UbOqE7(DV<{j~e6`c*S$6n;mcc(Eq5s%&js@=4?Wfwsf!{Iv zxJVm?umYe|vn~)UGdgq{R~LdnAG0_3usF*QFF~|+$XrayVUx+Fj{6HgmndA0 z3G=`Sr~B~?Id$63xKC%#-L7Kf!nKy=HqOIXM=;Nx>RB55iq;^xxVA3K+=D0OnO|c^ zx4dO_CE0o99EFRvcBLTLUT+4~(!TEp4Zl~Bp4_eu7d3nwFGE<6kDIG?`)#a(k(Lo2 z#?_3~qiXZ}t$SaH(>-y#n7&PrIpzlZMk&iBgz?xjw3J&JA=I7KR*?9S5>)S=(yBeK z203U4+c`D5F6P?-L{kfJ2_p|~qDQZ!56l{I7dln@^SpxUE0`~*7XxWS zu;@w1@ik}))bh*F7aF{*n-C;eRfWPL9x&a~K_T?XntC%uftw5%@f!PPZ1~`eet8iV zzMolBc3nUC_i+7{^wqj-1KU#oS%qH)>9A|EzJDM{ZUGGg7;E+F8(ZqXFd)F%#xg1s zIA=dwCdO#`OjwoS8bO6>Hw7zZ5B;`{ziK1uf-+!EI7{2b-g#`SSuU#!IInhsg+5aG zv{L(35lA{=2k5A7Rvqd#_*PmH7Yz5;fo$EgxAF%qbul<5UT?uD7_e5M9!X5GK3uYc z1scotWS8fyXVK~nCwvlw7Sn3n3Ut4Q*h+}skdV_VQ!V{0GKqThFJWe$o+RbY+O?H7 zsmZWFyg7UFQ-Qo`OD;G+9qi*14C>S2PG2p}!;%;%831wOwi}6aR>F;A87RUyMbwK1P(k5PRDh=;<`ux^3;E{MgJ(NVdH0e z0%o1!d03wj(R6LAaHdt`y55BYf}I_p5LL~y>-{nArxPFS?*?NI!VEG>eu_7X9Xum2 z>W)w8aqV_{uu1vi!`^Q}veaf1ZSa)3Lf5>YAZfy7=PU%MgJwN0$9hMx+6mh7=VvpC zo5wOF_yb2OvbGP=lHA~1|YZktI?}=IV zegnE8hEex0jeLe3c*2X_jynQ2no${_FM=;jLFLz>#^0={_ce z-$|()#1QHmlXlwEc1yy!<%&tf37dA|c9oyB)ofHA!0p`%4ymU?2^s~N?*p(eG+%Zf zT{;}Mf|OE+9J>Q?=t7Y|^`z{+q2=~5KG`g|q;LW?x*gl0N!@vNYI%D-+NyVAn}``Q zbilh>fl`DRtIF(|HM)uQAk_hX0~-f$&&+~+kZAtqZO)V6!_bQdAQAurR>yk|3Aq5# zVC0VXKvB0vs?CY7G9zmhYUyBCc)nZ|whySvk)Oa&1>bl5yeze07b{Tl)>tn!_H?SH zr(X?Gy==|yQBGE;@csFOm^ry+f$9!gzk8h}<70)jARRRz-4AFZRE@D4zj{Fbv$psX zap*}MSFgJ7K#y=~k7e?G`&lIQj1)ka{ds8y<>xQ>)bEq6pQ73|aS0Yc{HUM__b}Pm z`6ANX@IBT;Qm*huh-dO_?Q~Eq9b#tP@;=nlPie{9_LT*1LCXUF#@?cSXXgQaZty%q zM2!#vBxUuNPv2P0>3G$RBSwskdr&(yxYBYAX`Dq` zb}Cw5k&3%}zQ}np%Fwcy(^!)lDd1LSC(Uh(D%6dm|USq2$@9J9{v@}q@y$B1HA z8DKWA3;=nU<;qet>?g`g_ZL1Z7Xu*XRNXJIQ!e960*KcCw5NCD;9tQppH=AlfBdx? zO|K>`^*N#WQ`_KI;U`oJ;R;c2-*?bCVjUs-mJkP66fZGIxPTV(N(|whBY4l<0+0sQ zQ$H7L9nvVj1t&s5x&2&FKzbkgkm(9<@{Ij#+`p{6zXqBUWtsRe-oNT^VcFZ->%$Hj z%G*yti?5;r!Mg}ZLY@ZyG46R+8hG*JH5m8&L-+}0wE+;f;#~FNatlV;L?E#{uy~>4DNZJ zFNn4|)~BcP!1tRy&POyYf{qUON%oM8*FZ!yNm0#qqSF>c(#;Whh$8rsZ{XuCwnehv z!@wu19UXNTan9me)H>{xo=nx_v5dVyEc;#8%bW!D)0GQ*XJbH{HLwI7+RZXz#9a~! zR1uxmd$s6NOOvr6s?anZ8%8QRIy5Mr0?S%vRsDvWP393F{d(}(%A})9zKuZ!nuC3t zI{OIEtY%+4Co>SSueZ_mz}1G`EYNG7)#ao$M0eB`G(GdTdGS2*aaAnw7_}gPi4NM? zj@SK-F^E+6IMIXb;8ue_UT|;uwBaLd$HS1Q)br!Y=^;u1x&jdLdz&}ajv)`5S~IV3 zPO)IzPeG6RXu&WK@cBS)fpcUAEG28Qb4F@V<+~7G=%%ENOG4~kh2gd4XWvg2uVDBM>EiuyeIqF0=HofETS6%t zLB!d%pB^^2HDvUM2t$xKNE&t+Nm>bTDHhx-a2G-yxW3=m76eF%$stt%zyaUx$F({o zYnyp}Aiy8Jp1mJ;vCh5a-x(Z|0kTN3GI;o25Ao|6PA|JD6WAYb^zHKC>SiB)HLuY{ z!HUA{K3S+j{m1Ahl;nNU@{G%@bbkIUT`cI+MWBKFFu<`eqWbZ}U_$e4#aKX9E9<}c z{ef7<|Ci7iD5uR<0kkkQG)^i?*QOq077WrKCaHK^;cDE~TZml~HI{2=GuMo`)GL_D zdMHt)QFg-^)r>(Gb_~)zKr-Szq$y4lkLau?KTxFSm| znC-Mhg=c3|woQ2}oCAFJug`5JU(fy4&@0B>S;rBb4diH^sDAa}0_vJ2=^66ecJv%5 zm);W6fP3!pn!=d$D0=kuYHF=Wgy$Q`YT4%q+0ro?t~Uob*xZBcfr9**2j9wu2Ht+1 zxj}*DytQrA{z4yjk4M>1lfzVwcwaedj2~86IQ8M;UadSfh&C3-r#X_<36kU~=7u9s zv&KR4V;d8QubuHPfzb$pYa7rIj_@b-{Kko9^P5v`D?OP|^4WZQW0+4l~<^D`RTJG@T z`?d4mFYDI=j{Kig@Lvje0hq1#{PCUb{UyKRbEWutS#UP`2Z!nNXk-CK1inB4{3@(n zT$O5o7Q(dAf1G3jIA@|_Zr$yr93BTCspq)~jLNzl3W#LD^lGKJF$61_&YC+?h2!j0 z1Ru=PHOj!q3D3`AM*ZxveoFEFA}TFs?N1Qg1y5raWHj1aD%Pakh?`FchM@B`%&7#@ z_2rcpQ0-%Tc=49nwSOrH2;Y57fVj~2mbFHc>EHl1`R3)!ZQW((PI9&N9vlTGY-s!F z+=GsSijTp$DR$m&OolAKH3-G4evQRy$N5@hC1XtQNOs3R1_~Ya0^y8Xt_`T{da~R_ zw95Ie?tS=gDAR*J6#ahnxT_BZ8NlmH;iKm|;o}976X+rdf=`txs9=2aZ7uS#Qmn4W(kv)TNWk59e2nPJp;2q?_z zR!9DJ>TZxf|LM9z-ce=@bm**b7QhG*DiQ3kl8ptQ_M-$cvd(=NCj`rad|`=|iJu>@ z?^WyPPX<-_RkpN`--82@QL_>Xr!PesHg@E@P+MP0;P;}0fRHiyIIV%`g=ZaIWF&5R z`9dtV2-EQu45$kNuyenh+(07m(@{|d=fUra@LL}Mzs%qLE@7`Rz_#I!r#!^uhq*r0 zg2(0dCSMQer9?w--9UPfsZU@QitJ7{HYbQ^T;)%NGxjh7(=TFnOo4E64+-eVUSR1cI2F59QCW@;Gj%AmS0R^$~5*WX)HJOHBmlCWj% zc@<4L(`~6)JyQ`=rCTlNR2-!ylsMxzJGUk{c0Dy;^5*7h4--VKtI{@iZbuW~z>(r% z_;&RuSoLrr!+wx$b;g>7-)|6wm5mcjy&b5}uCY$@)S9oW@i2-$j&I8J;kUJ!>|NF} z>_>5$o-9N_@c5Yan^0388jPs{<&+oL@#XfP?-h@E4?})i=>B?&(_ati<8uyT!4RmY*>i_S4+D=*Qx>iYh*SON zEdT(W;tN&dv!^J3rd>d+WAKhS-lP|CNaYXs#mg`9?o+rz{hj#%y~M;9)iMc~cSt1+ z2-J5<JIYvhuo(Gg)+ z1CJoY6-Fgs;{zi&_EGj=m;HK;KR%78K)%|BUoY=_+YtG`ae3db4rWK6u!jHj<$b?8 z`!tqoK> z$P`_GKdQO_=PO#<_aNjb129~Icbmf%o{XHf%Hi5U zkcS=WC92En$?z(3x-ZDXS-WTk#0S`kF^qIBqAdu}p#IIDt~$E)Hn`oW;`Va#B`f4@*u0`v8gAE6BD92^N@a`jv6_G@$~ zcn3>oq03A=<&)$tY|>^oqapUBD(Y8!qt@;I8~g;slA${$nBE3ri^j0z&|cbPZlmK9R&{x-hSa z`I`~=9Z~R4JM?FCQ@Fsi986o`@-a@=0sQ>aYjgN*{sk2Dqwsw-|IYAxjngIZZD0NR zNr3LL!&7d4ug#F!`Ovu!iXm9hTOivPh%JeAB-h`E{Kae34hNXOq{Ty$_s`D{xPBS_ zbv7~He*mk1h$ncM3@XD{w?GmuB^VZh0IMYGPG{)KoubDRi~Q>8t)(Kk<}@7*Div^y z>4iYWFDHbU_BzJzP^Pge54w1wuOu`TAq3@E0sL=LYa61y5NSL?Dr~P3FDxp){ zeO4Xr_|`FFMq#ar2sE!bFt&JsJ{%HCEcQ4`&=ge?ARwF)d>dQ$4VW_g_Fm~>JUuoH z)flG@&#$^6Mm3SS=`D5 zD)NkzCRZMu50CLf4I)Z$b zd7LN_rX>Ke>C7|7o2`Y&m&FH-obh0GWks#WVi~=aLOG?ZkkkUWloi20qip2%Ptc;q zL<&^`L%~s0MUM?Q_%h*+0+B%G*Pa3v;GG@Yz|Sjz)&yHFYp+=Dffnv8%ilUb=LX12 zy|o5p>2VKN(MfKEWUbJ+E-+()(WnoJxW>Gim09xErOOBFD821H|YS`Hxx=?FNpLBS_h&h-jL0`CK7ErOA8@ zb|CWLr|o7qB@E0MD)0ThgGn1urRp zIEp74aM7nNgzFGMib0ZUaBH)#Z#)FZ!`U`iJsTBs0a6*F`Hlvr84m;veY*Co$V7U6 zCc^Xpn(q}nAn9y1(KxJO0uepxE<#k>K2l2}Z`a!hciH(&t!9YuLhpHhqqF?f6%K?a zyJQs~v0yjwb*K=q>~DJ*FccG!9?lzU;irj(bO$8A^^wG{(bN+_-$b6KGropcJ{ayi zc?FMSZ3CWw5(3KZW^K;I#K{*(z=0&f+tW3Y!!}Ou_)}fCsP7nvxM7}2Lux^ERpmCv zuJ)b5{f%olM!trmdNW7;-8$i@GezeNmRgtW&Klw*EjX9 z=Dpk>pWpP4Ez#FC9>Oy`FtB`(7``v^|MeQr_!-zgGc2tk4^iro_+&o)tV@_Mja@vy zwLz_F!?fPhO8(Td9F*sLNl5{X)wp?0CCe)-0Q7|;1EQ|g0vUkfMcy{Y)pf5U=JCN0 ziZlVyh|lk1^+1o9xS?N^B@E@}4s=84jR2;56}SuoHt7;?LD~hfV`2~IhiHAoK!uU> z%U*4e2OMy2ako8gB1l}zAvg`N5!TRdO_$F0q#pz~a(Ak;5`ui2gvQf|<(~?6x&Ue& zZoix7s3F6d-R7b4h~^D4XArvO-x{_%H%feC2lZGsNwdRT=PvBxVKSbT>0XV=CGk{) z?Wtv|%H1)qhL>wY-VB4KC8uhQSgZ&`+a1YYG?XWS9n5V{B5D0~jUPbH|DRV7L3R2r z>1W2Fgk8|E{I;9(V`TC7p@j@W8jek*?`p9>AzyzTTBt7nbAJ8D+JCiSri>M?Y}c?8 zzU$maemyLf6?8Gq(9(eYKES^~B?itT*bskh#K3s{)uFvWAS%q{Z{OyAua184UY@_b z`On|<(Y^U+T?k*w*fnsOFqqHl-wMNz7vHb_b7=98%li6*Usr|vpIp|jSM}5H>~EL# zZ^(z2o(m2J-;obITN%ANNe}5HSEnWzah>Fs^s@J7H-zXpJAaPNdRyySTSO3Xyc`Um zdXtqoC%_&t4SYdbAdIz{4y(F;$ClNEj@@i|&2{K4>11_zrUc;MTo_}0KOJ74#M23r zu!z4InpkFgK0O(Dcy_40azhchMMp?>fbmD}KRpGg0H(h_u5<1=Xby>TYK2nJD1p33 zZ@ru!8QI@Uwe4f$8l?;**@;}Rq7(2RGH8b6dOOH-9_WlPq}MBDgEvU)D)QEiykoDM z?TBV1BOL&_Z-%(;m%eu6%bI%bz00jv?-_HdwUtPicY8p<>nLmjqmrMKFm^1d}-szmOKh2V?53(Dw*hZXWotECbvd?SxI$ytG1f&+O5-H>R`4y z3!iSJQdcN4UWeOC=H=D3T@yxOVAsg>(3J&FZW|lc(|qC9(es|65DK?7oc(DHz==LS zHFUDMZ#u|SKS!&_SsLyhZ1T>FI+S&n&Vt6zho=CB-n?3|1Z9lq63z|k@7G}y3>~)X zsqOudWCTFM8yo~pWodQkl$`a=Bjb*}i>&EU&sYG`|L}Ew(ysUqZG+3gcnAd1Ec&ZI zG2Z+XGmePDW=}u5+7ib`BrdY9w^%Hg7Np56y7XNr2Z>~2KkqfBYq?5Nf9Pm{hO1(G z(7{1X#gG>${o4rX8C?yaujB8I*c+G2jfEC7*Rt|{9zlKk=3l=TMx9^28R%+|eE5=W zfHhTNy;pDDdu{qeNEG;#DBuQMGV>ZKyYOkh%xna+R?i*M_h1?xIM=HHSj0DnP{*q2rG21;Qp0;}rVvTt{6gMET{UO>Mxyfpo* z`;R~q=#|M(ei{UNn zE>;b=9A3Zl7sA6~C758nEWNJ#7kDAC2md*00ZrxW)?grSE80n+ZkT~pdgP89pRoW* z!?H-9Zq-qANMV`tg5J98%x0Q|#V(qb4j1O0KQ2?+T$p-$E+ON7?Z&c(jdX12WOOD9 zwLdL~NXU-y$mMI=gJiCHQy74xx`4gA$$c$^tUSmDt&bp}DzuQz2^t5-rfbnh=ky%Z@QS&S0muEBr?W#WM|TjV@px;n_!X+w7RD47dEUg)qUNa$kyQ{7 zOjv}_LEqQjY^sP|Bd6ZD$M-A0V31)bS5~z;$$OUE3rANmMCJOlZrODcuoYZ*4tdyu zs6*Z^Cq&mE8vLSN0c?9}o%Wz}5hAp4BVV%mZiVBXYUUD39=~4H=;R+P+=5JXqAB>x zF$8ze5=F2K>CVpHDLIX$r^~p$Mm(mR$8lxO9kNUv2hq#Z9UHuQHL=5qsVZv5+$yYC z4Ma?`rwuD_C+zYKFTp)A?A84ybk3Zv&i2S1)&}??Zb3=94T4|K;^hd3AZ%S^F#L$3 zW{F{GwCC%EpG99a`_nX&Waky2NwdJ+LwVx`192_2P<3k^va_Y3K1$0ziZt_HrlU(WUOWQ;M`;*4wnb zw@86+{&f@V#?>5O|0CHyx2ylwrWVteV-^3*yRl^WbpDV|Fm4fUA)~~(k?($I5C_4* z*M0#^S=6KVgqRubLu0}f&~+!k%^axXhx7iwh-ECBgcck zoR#_8_D&*@TeD6%74Gkh9bIkHpSZ^iNlvMWyXz35MI~di8%j6nq&{w~I&B>3F=)$D z&WAjd{Q;g{juA!|!b1_@CYA$y)eJa_Yj;`uad%Bsf`o`V4;ON&+x54F@0dC&m zy6D=_rvx*orxeJazL+;1PPt_+oDN7i1hjrKDLvU>T?M32Va}Wsn%pWrL|sgreS0-H zYc4&7n@PlJ)7z1lMSc#r_0|cWVJa7S@+X+$0n{Ycr*{C@x-h5{+1E=)IvJDwn`S$`C`d zYMfxadhvCi$5Wbwtc%@phe-XrlUMi3O-0T!$t!g5HhU~Z(`Xq?ibov^%Sn1*imW#aUZ(YsjO@ zB8Q#99LC%TvfG7Zw3)@VFaX7?4&9a8EucNS8C``Moq4sJ-O>o!l_2|x@$fl+5Y?Cs zFNY@R!Z{MQNaGx!$7GX(-fZV%TYev_#?bZqxvS&q&jYG!K35-T$r;X1O2264ojZDm zCx~pJr-I0~F0d{*+d+e*^R)yOxnpPMJ7yK;0nE%2n5?L`ONQW-R-oafBf~C`_@2*$4r3GrwJ0{Q!>{L+$>>j@lAj1H~KTz zY${{Z2yw^88Io(kUG1v7oV8qI^$UdkDhut!rBY8jyTvwlivW!>W{|*Mz3(8 z+n2UuGN7U#!z5R`jd@mC`V#yMAL#GPtXA_-JJ z{prlg(@tl4<=*?Oh>VrV#5R(}7=85K+Sl}?7G`p_Y!m4D13}(|DKC%9r*foe#tK$K zP#{-$T54vMDG%v10rOiiATRiC4YJ;?dy3d?x>f0(s0>#D8+38i%md(XwUg})9(QYh zE;0AgM~y>uMS&ci39nH&tTf`Gj5)761HoQ(k_wRKjx$u6`sg8hvoXbs+|PxTPZ;I| zHNet!pLpl2vZ3jxBcVwsq-=mlN@Rh`wQ*VH96<&jRT{?fh2qzv|U>STJU&&xlK!0&_prvMh zy9HmR17LF|@PN>W_?H{|ZUQ0Gw}c3qPQe2LXAQ6nj4iob`{j6BQG=u403NPv5S)ud zwWXfMBU2E?JzmCj>jzx$JS(o@9M5WtU!?*<#?5J;2Tl?l&1ZHJ9PZL~uDia=Qk31e zp$I4XP?cs=gT)VwRWk<)4*d1|dm|jld7~jWj+%ga)+VDG$UHTD< ze;}jIn@bhTjyf&3)y3j=;9wS{2&EctjOz1NEP!6KkEADajW#DMrsjDI+WC7C`4IS( zqY!o3x^n>9Q~DATZC{u{2i_oDGcN9R^Ed_eT3!xJq1U`(@9G*k^g;ln!(Q+p&Tnxb zDF^H9>A1-V?y)|DD|*+VT?|U#w!b~>;kGbQvc9ZU%im)HJ~1n^@f=&_1}RXHkUSjc zSgrbEuWFbebFOjduh#tn1C!eY$|7u^Q8&(*--3YP@6n;sxy(*NmhbGG-axXD7M7N7YnEr`zlM<&AMALc%fb-xf_h!Y|%-iH0?)b z)9t0+TYhMJzofmOjX*vem^YaAk01axsWeJ&7oCDu6!rbzKixThHRpt*@RF_=n;awq z>B!wlo1E=oSFNC>(}c1*c6YZzuY{>=)<5(GZ}I|CDP;nO(FF@~jU_zox#kI~rd&M} z$nO$_U)*0PPEb}E9!;vNjJ{S!weQ;VNi4@DDP}@VSPHmpUDuFAx?H+tfG|}gPnA`p zZp_0DizCuIo)=*jgx*k0esff*M@d*sc@PWdhPxvG_%ae?uoLNDH9<&o23Oi`40+yl zOkQ+E2{^wJ8`Nqj;QZ??#z{h2F_rLasYmj#X|$Va;^g%CK?gpk118876wm>4q@=6- z=xu=FZZZqo8JK`LPe??RoKX~f1tm7|t^vaceIC+D4ezt=SY}C{d61k(*{&(fl1Z$z zzJ#$Zkkwl4u4-@KxNNTn=~*H}2hhI98fbVauBAD!e4m#4aIfof+w5XOK^4F3bh!dm zswq@QX5+5X`&wxRLl*4QX-u%JsV=eq2;!$90VcQGaHDa1=lVY#uaxC^ma%Z4e>xK<8^@COMqlcm{f_Vpj~@#s4Ut`eEgvf?*I z#n!F?C3DdX1KK9mp_G7Igj1+f0b2s8{X* z^adf>sbs%Z7#})i4>ZcqoPhk>*FWzP2zGi?1AV=iQ$Kxd=xF?_PmTQ3$NsmU`Xyn@ zeqF`B{5Q}ThM%84>^D#5cF_QDNnT`LI3A*Obz#j068t16j@!Y4EE|)=Vdj)F=Zu6e zqf=Va?JT>~Ni80a-<1F=;@Q*SohwG%Mvny|73TZBC)(94%!pkH zNj)=6v1KM{f;@9*=#@pbuDf z6zZm4Jr{u%LzwNZPjt-#aBtJC$LG9l@N^^Ybv3+Vju)nP$O{VePBbs$R52hU?JEct zk$mWjS?Nu9YDOGYRs#dMIM_F8?Qjc+c6WymTWn3*FwoC#_$&)P&V`_l#X_c|Hz3|{ zABXK+uC{HnrgxK{u1h1(*Lz?FkGBNjh3NcwQ1(En^}9fYTTY(eWNdIfZ#(1Xx%g+- z3hxfh}^1n?Wzo+}-ZY4jD znhJ!ErYPn0F02Ai=?yw^PyKB*08y}xolZ*@1+!0b0a9WrMA!nF6{m5R97AQyw#~^CCOMEOU=imY)l7hyPU*&cUd1Ztch7+Rh9=VNq0xCM$ABs_6Jcq z^{q8Nz6i>HOAo`h?Wopj|fQ7y=#ZC{FsP?c56O8Fwhu*3LpNC>IQKrE@xTJigl5n=WQStV$^$I=b8}~-6^W1Ia_x>5 zV;DWiauRQXDt2|>1c1|iAL>HM^5p*3JoQ|<4vaa}W&!|zUGC@$HdvgK2~N*hkz z%j5A6DYIW|?}vlr<2d(s>+T=d-0p47{gRpKG&7`5L(xXZ-y*k@+^Zm%e>r%(c_tzF z>GA5kyjDm4)sOvGtJmKzUNANnzSi96`hmD??ThtslKUm=56~(%_5%HrlV#n} zxP__*h;*?&`=|17leMyZP_)TFj;U57R!;Bib;L}3K|1&@%S}1DjaQNsS!sD-L3&sx zi}jq0UUsjKkbCUBn!6K+`nGp~aK1A^IJJHHAUPbNxm!74Qr;v3m0<1R(4W+3lk6G{ zRAU^pVc@xy{ICa-QS$Q%+2^r9&7h)Qr~F0oNRN1!F|G>&RDpj)k$K(Vh>0$B)EtaOk%co;g1 z1}aK>h$!WGS5R$@rICBcopk*)VCG|HS*YG8O5N=qw_vu&Mx*xm)6CKMd0FL!q7Bl= zU>mt_l@X5hUrxgBr;WcseEnp^Ckb3voxrfqgPq*xtg|T}p2>QsZax9a_R#KB*R1-1 zGpuGS)-YhWJ+Ov*WCKz3m#}meP^->njzvqe+eF7_pclx?vU&i|34I{A0j2RaId>Jw znq3H4#Z9`oV4Krf2^yF;!Zd!g&sVf-J~`EN?ykDB+7tM8jTz5Q~h z>ts8HQgxSgsfRCmJ$HpyM!#eAFx2D!r`7i{BB%E?ondF``+_LKx_1{@aCkrvw&&t6 zLJ8+&-`2KwQ^)o#dFP|@MLt{|uX6Y`Dtj-9x%(LWMtsRxr1id#-a*RteIW&%<-%UU zQ2w4e2n{y<4MtYIz3E+T@rp&Ze(2kvYnJ^~^uLPxuezPf6Bz7w%0t);EO5CZq;Q6!dtIJU=8Ytvoq|-Q(pZwC8D6DI1@<`Gqf>bwnkBDth9k4cZ)?=m~fg zc6VDSm(pzGNyC?I;Bd{$GV;b9r7hGta)ccp_fyMc9bH-Uu)Rj5XHj?4j*%O>@omtK zvX6=Cx0nprILtggK0u402IQgD`Y!A}|Dc)taN2#eci!9(FAw-n!Xr**SL3z-T>~MI zk?BddyGZs#ex(OSq2A0ukvQsrLH5aC-;4b8=D#I1k|Ce^mz^4i^)icBNRo4AArS2Z zJ5_NzOz9jIq>ea8NW9r~SJrhkHEH8D>!S4&XsdRQ74eOc#r+a1pz1(j5SVs9sMvbz7AnA z8nETL7@GypES$@1^0hb6ciJ5Z76tF|c5MO^@){L99U}w#xX|WmGfz0=+*=9V}@+w}7R9J1#>Vb`0$&BhdlPsht5sn%+E3N3+y}H{|5Ek+OUjJiN=07xR zSRx0FG>d(E4MAR=ho{jm0ulGE>oxG{j_f^R|8uRO6I3USB~ zfXuO5Sc5BV!@e~V0EGBPN(9kt2o}$Fjlk3?SuiwK$aGyq*6%TzPdZ zz-LT7q6<{D3wix4SlQwoHT$x6K>NG_H~0Lq^67tA4FMtp_e+1N5?+3{NiUzIxneFR zE!_6cQUa#Nx?c{3F{3E-F_$JuO%;7iL%2~d-f3Lu!g`SCF-&RGKyW`ZoZE>eR%Ay2 zf5|iV5-XxzAh!$I?Hu*ti0XXKj@*4`=L+=4Wy52)D|y2jkYsd`^jR)KGN>;76>-w- zaCn}M2AbrtT^>}is3p;gAMhz$_OP;^gg+D@oFsD&(gcT1dF}(12AC0R<As%F+Y-i;fJD$KWL{6jgh;{giOJ-X^ZKl^y3UNdooei?RPC=N59lR^Sh0?c8|_y%^OsQedV)J}Qsjt@wMhUQA3 z6?0u-c{kh@v3Mh9Ab&+>u)M;&L!Q8p{F2%HPM-OJIfJv%`=j;NHbdl%YFadrzu7?- z@g3~(x63G9JIYEls2XU}#+n3_qOv`q1jpmR!(g(Y-!WK*ZQcs?5|g{oG$RM7dre2b->H z4{|tyIu!1t5CR%=0(+k>zcMF3X&nTG)4*<=3=vC9Brm$lI!`YwPTddjPn@;CM4tG)WJ9nX`p30P66JJmJMS$%SsCrFsPyxOlM&xLucD7<5cjO9PE@ds+m4$RHrgaN0 z&f81BR+SsGy_lzGG3VG)61#Y0>mJC3v~=HB`@;p)80p9>cP&fqcUw_5#$97uO)had z7YM|bx8yZi?QB@s#8nmeuqq;n+et+QFu()BwRo0a0xmwRQHy)_#jGDni z<7`|fnBy8$PWqX@>Pb;b6N;_9ILc6sR$#=tD%Z3#@Z8E(Wgj6tu;uS z4c7e_7!m1+t#o9m%w4$X3I#zjWjv807tNopF7C zDRLI!Dcs{BQHm@fQ}oPF9h_QS&zFO~G6>++uDY^P_Fx7*9w_`9OhWxaEeaR5!Rjf*>hAwHhuA*&t$pZ$`0y#>-C5GqjEx_4xO28si zrw$;{fv(ejYvi8va0fA$*gi0k{j^o1 zae!O=VDmHyPJwqiG+SD=Z2eDb8A-F|OW1PR|5672X)R;vSE)1nP_;15{z^an=()=u zTk_Qp@tp1N=T5=*y6dwC`h{}?RmU#Z~L}>U~bY!TISmIE6p{+WR!g@uSgtVyE{;>))=z z-?TaioW4baQ*G!4Fa~%gf3q~dT>^;wDOj4f-+P|7BIAj115~arg6W%jg?dx3K=IOB zJ5*LGdndT3(n0gR2;APv$K5Lz8qY0&UDi00YMZmmn*-$XJl%6&JWny2FCqei*yJkm zQ%k0*rRMks)Q5JbQ&Q+coW-;{-)J@p*A#!{@@19X3opZU^mIsNXk>VgY4xOcQHN7! zi}sO*7E5k-z6-r88MZ|HjHm7aedscfol-jMfm? zlDdM}1Wj0CYzR8O-a-}4oM%MI$I4jWYl)Pl20UMnm zX939h)!<3LbwHc^Y!9PPu3LE}{_ei{Ky+tffi^8^su?1aXc*seAy% zpJ+%}#NIpjE^DPSW@iD7wzx45ux|Rt;xhH=IypUVN|&?=l~DBliE!QVR!%f^j?e2G zwwa+VR6^)y?BC8(DcJP8Q%*TE!sTiGg*j5$mvr$PGv^iw?pfGA+sXeL2dav%K@ogaz9vQQxC)w9`dftj~H9`?|7 zqK?q6yj$h{n6oSI?viwF97Ddr^!#+_i86bxop6>%CrlWKYGa5EDCnDI+v2MrXu-sQ z(?|~9k*%$&w{y#GQSoscu{s)`-7v93SZ9g+Ojr0V-MLvauc9Uc1H3ceR^dKSj;G_W zkcPH)A8YEVHz_hiTeNZwt3T21W4q3zIyQ2R%2*PfRB~0IS8=hU{VESyHm=B{|Lh@n z0nX1U3y}%C(iQ{xd4i!6%W%kCw#xP?cF8I42O#Xw?Oki4BWHJ!GtD5ksoF~ko$)P1 z?ZwvhaI>1z5Zqk8pgp)J*=3pRXX3dW|uzlhVQK=V-end}&iS<)&#vG%@ z;O2EEr$=YN8WsZ|Nx(^?2#bHzH+?(8S$#KxB^mqJ&k_(yxm^yD*axLOv`rM0m<($FXkjUfX5fty6i$592 zVK&LGZCps6#kJ5~3``AlyvK0k z2xxV3cS|Y+k8+1_%rRY?hsD9Tc(Y0(*B{Q>%}s`Bj+vC%f(V!&X?&%X=>k9(h};ou zhU+oAS@AT{xPeDpMYcmQOk;7-3+MF?_SDnW3(}a7(=G!@3aGoMV#!>^_i+tX*5hni zPWfz#e&NR8fsxwz!R;$-r$k56(-K4};=P@T8^MzHG}vPj+TOMnDsLY&9gHmmhi8I0 zhsMglo)fOD>*q6(s;9X%_t5vVcthMcZ4j@AXkQ_GzwhPbDMnMW>R0o?pY7I8NE|Z4 zoq)%JaUR$R4o*@)o+M(OT%N!b**Jt=49Np*nLrwh=F;BZr3o7F_qBgGoFJeSEC`g? zT`!~q%~oGhh(R$`UBISuKA)M0<#K^@?_hdeVL&@t)*$ufJgw+x`UU~N^DGs}KyNWA za_oDT^80pcHna)5w2y*GuZ6#-o<@Cuk_=k)e6}E(p0^uTyk*gj*n$rWg4ZY4&E>l0OW^`+#m!i5G-&ugP7@&eJho}%XkW%^$ZxAQHWz%S z0cu=K1%23NvA3l56F@~ zi-Q^Dh2FE6Y6P2^$Ik@DxqG?Iks;HDZa@ceMbg?rZ9!oA)I*42jVo++16Z7bMQe@C z5z?gGV>NELgnEUXV%J3ar(@rbGQrHsA@2TADExT{!2ObpAzIU5%cyyPT$kT{tw!S) zL!iD%r`HtoBMk}0nB2P$;iD9w;1_)1_FzKkeJK9lH*aWv1;VuqU#V}O8}vt83$_l3 z%6gd=0F0uRZ}!ArU;Eon^EFe24+EYAb@?BEnqSHVDuH1}01f6Fc^gtCVWVLSMgR$MzEl`N|yg9Ea*emxO zo!Tq>S;$ziI_xBSx0ZxP$?a@o9QRfhb9F$%;8ylM9ThB>qPs>CkiDq-HkUUU#C~6V zA>3WdlK=#Qev=pJ!Q1UO>Ao9@I*0VUJ!zc|+xv7QEb=*2c6fQ#S2^1jc0LTcwj z&MXzvO#($si=A-el|G8Azz_tBdLV{&Z&b`RecnH&3nXSPMZZCrQCL4?Pxistc87xj zAAn_gCZLOMKFWIH%--a!Bv-lqLG6HBcNB%D3Xw1_VJL9f8IzbqDhG4*U>RF6*CFu) zO#cTUzH2OnNMS~-ej9If=Tv>H4T-Zlgl82vbLD{4PB zp2V&-rMa-=mQd)m(8O2juC_hp#s2*S5%(}^Mi{Z$_o{}El6F$gt%_fpj?+0Hqj$bn zdaE0Gt2PgPoA}|1J4H@4f9jY=;hx#J_bkc)#l`y9)J2%z61GRb%T6 zA9>w>!Q4V=0hrq#KmR`2NB$Xe`{9p#DQffZ!@=;bsC|pLwE)z+*wAS%eT7RW2#YwKu9Q=8htn^DT7(Gb>(n#nKMdKf35Ic*Lx z!G|#gIj1SuP5Mi<4bpj<@C%Xp6s*sPG0Ii#G8veKsofDni|1-}Jx0$6Ee<)pa|_C~ z2Ugs$3JaYSwm#PfH-q@EN4tVSj2u@h(;MpDZSV0Q?yS~FbUgSNV~&i`?C_N$RvO{0 zni&#V{b78r9-9HeD{2bh*C2e>N$S1<9ToFeW5V0W?RPGQU&RTs3J=RQbh0&lRx1G8 z56^B36iEgD0mT4_V+i6i(5rnSZnCbbJmZdR-V^VdVG;u^w2*J#ENV+#LaMn~{Y*S;xb&O0_x$uBQL2eQ)Uiq?1@x z%$Hbj0M9({saCrxR&C$er@7$Q>6+$LM0J%Vvun5798MF|w$T6DZGqcTL4Zqi@Ex(- zpYA6}c^5Ko2DE$?mUCU_s=0@ws82!C-R?LRJVd1lKEjpv39>jgp+}mg1nH@0bG46L zZo>oC9BWh4rE%5MlU{jE+dPefMcLxbNVfhX8e`Kwo^$lHPTIM?@d(;w#@hGP({#5< zYY*uBQwqNFIDk}Zb8m3D{{R}?Id*$DO|8GkLI|Li~bQ)?DN z$6$dRzo_N9${rkNW}HJjNd&#tRN~PEzg-|--JBoz&aVuMpCqJ^h~{0Q%@sNvCg@e6 zCw5opH^@EsJo;OY7ZMCbo6ReeAMVM&FsnU~ z`xyupTy57%TrBwZ=3W$uWo?KontK1tJ>1RhZaT$oO+FSrly)E_)#WRQv9zGG^r{xr z6Ep0)jP@^4&7pk6{+@4AMFm^(RLnkhiCKN zJT#Pc%WeeL&1$5L_EZSZ-T8)Qd$U-d5T6WRqqx)bv|k?mV|Wq6DWqzEEJB{96qahs zjZ(k10gFK=rcz(o1e~_!Okfgpn|52F7i`vY&K1@GOZI`ArWez`OU4@r@>!)d2oqOc zg0Ap-z6g;UeVWzu9Kt33CNuXX-+kr%ebeuPuIy*G+QHpi&S2Y;<6$!aF|h@FE5Ao0 z5ypjoAxR)_g9(@u$6!-64;q94E#n?+*o=#FLwUIugshPZaNjd`6r4mB@@9KymxnC` z_bZG(n^QgY;^3n9m__`yZ!HUf<>AwH=dCJC->0Bi0bYqCAj@GPl=XQ_Z@E>{uw7~= zw6rjNGf@#hnnKMS3hE4e7{^!qKbU`=xXa!qbMJW-yZ?Z866*J_4dHK~xUT^o{x<`> z&vN>o|NoDB$>ycMI`lt^ZM8G%>`LrmN+UYCy6}&~@2zYAHT+#3(hpq&^zlmQ%T?uD zpYC(1|2Aj?3-Q&3y1M!3tbLZe8Wh{c4kC;?#k!B$dtEHE3w!tGA_dt70~Nu0 zhSci@{%`Le^4}azKJVY3HmR2;@Y7N~NFq|)}03~;0{0XwK+%!kv8S)Ftl zcg8Hginb%IFH;w$Q|4^4J>9lVaaxdko#9RpPtQ%itnb8%LX*c~a}KVR2%cslWqixq z4S70lMez(Xg8imGxsJ(6z1`(gpX}G}tpH!28QmC=aWoK|p8aJ< zNt^BN8JTEcl^r-h_WVcy&EnXC!K4a3JkfbdTj_nQleoG8fN;G=$gbO*wL_Y%9=i;H z1?Ya6iGd_K0!0f;xe5lPWbgEXht3}mt5zM|m=m^kD7JEgXPcKrB6@oECJmR>j!OdfeIrM(lHwN&`Tm`Y;=NpVWOO8h-We zeyaxzzUQgyBMZir((9+;Ad9~4YK{^#UHafCWV+mkOt(y zrs41YBlqxbJg!LpX^1>M0qzVNC2(u}pqaih8IJu6ANXq0gAx{dlT*up0Shg|&6{fdUtU*@Gda<3_<(kSGA6u;o+Q@Repj0SpbGB(DTb3r6wdWhtx-Q-<5lcyDLu?h-_;=qmfg! zxeMb)p0rENXWkV{bR(E(v`m&4i4jyh`^a{%`?J||8*~_&3(D!jNqdes{AC3P1u)oQ zkVO(Uu*lUps<+w?4WZkD+i-iaL{Zrr_VbpmeQufcqUAKsWG;kom(QmM8~OKxtG55t ze=_3`a2f9{sK1z1{m~i9 zQv3wLfA*7r(L2MKc?Kc$3(fnp#IJmh1H3vP8m*VKr1s@3izLS=DEt{ z<5X;b(=8x8=abUI(sv3q?1+6jHmrN+b;I14M_~x+RdtT9?X+zKK0h$N?F-GWk%gK8 zI(Xcl(C{7r=dhQLB*fcn&|(ck-J?O9A-2;NVozM;jab!wx#=NO<5&!;y_*Dj@uAc1 zH#7(`yQTW4F$;)?w%l-M0X-L)yN+2Wk)l(mukVke`pzl`l^ulX zEo1{(dMN~vLins;Y~H3LTgX-i#`eeavw8O$yoc%8r~yORzYo)UVJBZ!FywT|Q-;|ifGLGcxzG%8 zW5v*rQW%VSvIT@iEu)aP{W!?wdUt7tOQeLvc_qR^Nw+#EjO6$s^(lB=Ccr2QVJ`~_ zQU%jdbo37AvaCnLrfc@i9byy#zy;As%&>OrGk`FpJl5)Z9waq44w9^5mSkTV(yN5- zTG;tD@%ZG5)QZhTfcm@6XOo65{@&lq$%-8bCR(jSZ{B9x*nlcA0GQeCDZ(x+uk|ws z%K0l#m1cF!#ghjldLIXY(@uN}eb3{lE9>``*<42lJApbR7%g|DT$MZCPU^u_aq}h% zSL^}4nEL>futU!NV{__#h5eDP`j-R8A6MDoZI%7ev4{FOYc!Y--%FLC&LZ^J+UBRsq;kL1>3>@H|Lzlgejwy!RQyw+`@POp&4btRljG~x2{*t}BCBVBFx-rF zJ|P~HNtu3bhPa81QjvDtg1UXaGt4`^U$`4O7mKAFKy7{BCFyFfG&u|q;vqjK;cR8@ z5%j=oPI&rCpd$e&Xe5>I^+)E~ywYQ599=ii`Q8*TdRK5|YidGkB!w!~XIZ|k3m$j; zP|9nO6YfJ~h%T)^DG5-xDRNYS!vPr(M0=r%_RNiKD0(ECQWWjRR}2Qse)AmerD4^g zP+jn1?Y2iphTJXC;Ci0VKsfCR{#*zU1)?njuEYJ^^C1liB|2?oDJhz`gr7r#w{9IC z++x?@S-ViXytO6tQV({tI^vGpN%SoZ*ro)e_)UfqIYXd#Qs=t{l+~Znr5j*r-~WGz zEjUGkqJb+*&_;FthRp@fwti>hY8$( znl|`lW^p{A(eGB6vHKOGdH4Ns<?oZ$eS)L-E z@?y{`(Zvj=)^WI+v)h%bCk1+OJ#|-%ocd^LV9fa-M0R{}B#u*v0PTpWsHp=}2)PG% z%N0O!B-IX3hB;Tp5PRu_9|J=_CDK`()_wp?Jwp>Bad$J^W9a@P#%TY;2&6x) z!mRLeTEFeWg zOf8p#GuEwy2#GSxS^Z;N#Zr?Z*jw&#g--sJVSPYRzojp}2Cs&`AyjK)oZlqf>{n98 zBrRn5xqJ(SdbVtWwZN_OyLl@_OhD1_3h(`aFoFoaPh{LXkQUOCVA%Tl=VRb1^3?ZD z29|U|&)ERD7$2EVlmc-(QVC`IOGT!>C>=iUK!}JlD+UxSFX^eS3jjp7Ja?*~F;ytW zedIp}wiCx7)&@Nr?C}kk3*jG6cwkGo2em@mZxaxhEyv$(!9NaaA;|3q@90xt{-rPf z1$VSzX*t`;d0`AYJ7fcgG`-EfT92_0v~s9*SBG9)(p@euM@R^#vy($#yXWI@cj7VP zxM_(|y0B4d-PYokZ}|uqny%|#Y;M0nflhBIYhT43+PB6LnFM~Z2l57i8eX55M?u=> zlC+!C$@hSDf7J1Z;~wH(m4p?_ixtoM{uu%vRtY4ht@;Oa`eh)hjeZq42*&z3vdj9@nfp5)h0Kf1{cxgO4j_iAfP42V z+ih42$kFu);x9Y-Q4wF>A6|oWJo)Daye_+%D^Fn5QTGPfT67}@I7GfTE`ksO%sP=Hqh9h}G~>|v;6XDe)q`bwNJ z6Zlif9rqWof7w^3z4|Mh3_JYX;l^TL@hAd)(Tc{jio-Nqp-$;!DGn7BDzZ9;T-2XE z^S%SDY@AOSdmmno6XPJnGVXa+_R!#ran(PSv%e>DsPS{Wcg259uC z=fBUz`{@7wX?I}om!Idc|Jog#<6{YqQpojJfx9Jn!EkrT0{G4DKxN;TPw?}+G3&kr zxv;oa!31BPJDE>p3i@-&^Y+H9R={KG7aOf8_tkCkE)~??3Xt`NW?!K0=!<|Ce~w zpZK6mF$jB8;dlI2#5(!_n{Q9nR=-jnCj+JXm~R~wUbSMqRNo&Z>K-5R@20OQ{Bu0dTa zB<#rbz&8Nxzpe97>p&sY!EA@J7ZZKRHAkf#`(Q7q?x1}JqCQA|uW~3`@JKe2Ks3N7_8QdqFaYI2L=r-gum5aVhu-s?08(WG(y}`+1D|v)cO0qs5oF=L zh2#JpGfb3w_iqZLAwy))XuSHYtj6o^k9f0JEg!%)B?Lbi zc+cJzbtC`=(dW3vh9AHa56we-`B`V-eE%l=EgA&*XjC7%VgTQH(k1)*^9dW=&Fv`s zWJkCb9`}iHyt%4g_eQrTER-;(La zs2B6~4JAVex5zQ(L=JmWHjX)?KqTOGIg!>B-eP@fE-D^_0)T#+L2IkT8sT~SF((ov zSQWy$o?fibMdI%w9};62=&lH_xIaXBXmJ+ z_^I?yoD`K4gUnHORIBLGTul^JW*qiA6o%OGRylX8V_$d>GUoVn3U_S&r{dm?fh_sa zOZgb@zUzGcH_Q6_>i(z2o&Cju@i*D0GTnfHSFR0pW4+pE4Sq^6 z1{_(@Wkh8YQd_&Dd^}i3B#@k&P$m~jWaku>aQv?3%OR0H>|tOX8t>uEakx73Nj4vB zB{yb%uF~byQy146Jk#0EO;}-A&&U~toHjzGaeiW6pO0v0PnRU5VvjqHo=Q>)KCSg} z4bznr67)(Kn+{}1a%XIfJvPGN7ShU%0oyuG<&T{rg=Y%RVDMc1o*WH{N-uB}FrHos z@T1(4k2~G+C*aUW0=WloM*dptk&u5ja{c}lx>nr$8dbgpTkfJI6eNh^eD9V271;N} z2W;NyRH^P#lwKjFQRpDMyp_1H-cj}Ssq3pvt(<&#>L0J~Bm^`-ly?hoj)KK5PfSJPzH$bXaGlT zo%!(`s>|hcsC4F(@ZQx{0;kfp-7u;?ZtqIr0j9lc%%iaqt*?x97Mz{4YlxM4*r4iV zSH{;365KY&u7>ghPKJ~@P3CN`sFfO50|0*KO62n_S@sP@Vn71K6)b+-M}vA426NVN zRR~W^zJUh|Rn0O-T4Bzf{swEb?Q!i$=%Y2SON??-r_%7_ zZwqQ{(1AeGJt?Lt7zT94*gb|QtZ2@=9HQ7XxTo294JbmvfJQxViWF8C1k>-unc7g4 zh7p_lMuM!EG>WbLY8RhQgUxvCW1CH0&b1pUOpFsj-ypwdFA6-i4(Q`RJ7v&-YE;4N z3>lX#>`Q0*AqUStR&jf$EK^|Uk^2iyW&Q-FY<5|)8 z6~_oInUgjlDM!-}m$;#Lkm#n`)BS_aWxhF&7%KSZHX)d z6oae*wo-dy^7qI?iVQ8vp`dCl0T%kzwFN+Zq+2Fo85=`WbZmUf;?{MU9UT_YQPnan zR#Qmm=E6e`jRnpGAS4hnClS*1VDb)+bz~DKF?_1vlfe>P~og&E9Z9m7-u?QMaeN3pa z)#Pwpb^bHAmB_z?2tc4{6$kd53Ct-}XcsZ>hr$Urk%XJ; zr54)*x8UK-tcE1)GdITiO|-B>VyJGhKc+3-4Fs2zIl&paFLbLNvwh{!xygak%&rfb_)(L{C7H#+bW4qK`~ z60;i^Er1m1Yqe=)AX_<~S(-|^f_zB3v1 z05xtPcUiBO)S*-=Gj=apv+U12gXLU?6mEV+8E&{_ItK} zeGy$Ki&fWWtL!I#F*U-ni5j=9wd5HA|3d?a?g$7|EL8A~+Josx&J5pV^#$9@0#a!4 ztfhY@8sza=7*j>h-M!t8E6{|*XdktAd9#O1iqhS|c>1Kc-CAEA_Gs)g!G$^u?UMCO z=6n{#2aBvq(sBM0hVp7rK%US)R9%*jDh>U){rth`2UgHe`j4L^=6_r5A;An*`|@)X zNkY8r&ldts#$OxD(4`eE`b!>UB87;xvSG}z`b3ICsXou;I_Npj=7_iOF*4v#x=B?0 zTEM}fl)U#U=Gp@4t3wyK_5++a2}}=P1=c5iALi%7`=X73IHZSbdtSUJ>5UZe<82^< z{U*VCd8Z(_?MvupZSt%PRoy`rAc62D!D9hV4nxwwg-UO=e}LfK(kXm^`V?RRvP}}L zDcEv>oFN!GI1E*qnc~m1WhYljd#gA)<%!UMb2(NG(Xfi}h z=g~RYppRNJT*Tq4r@-7OAMexWqQBCMk_j)^KtBweBUQ=HAav5JFO~ye=#oTJT7!0h zs<%f>JYSAEAF>>|OF-L#Ply*N3T4}d8aRh#f4$!w*5;_O@x4R@uo5c`dJz#I+lsbN zVwHip+6-yj(0mH;5KR!C9u}qhcfwtpI1*f%URKC+7^+6g+A58g;K=v4h|(ZI**aBU8-&gY2l86rFRAA_OLK*hZ0E{ zUfHTsjt*O)d8{gnY$=J-xyu!25{z;+Ue$YvbvdtT8UrMdn{}F~p57bNQ5b+ge!AR` zy0X?E98C6~`!bUZAy3xMGAXKk;pVX@-z%}haGMC<4T)VmQAB+p-45nT zYavAsx~11cyd=*k9Bt4aw_CUpC@6#E2X5h1%hH@$h3j=k?6m-If~ z-?i-69uuM-?^P6~5mIqjz^yFhHh2Mk7Se~U0 zpDs}-qOTwKhlm=}v$_J{_}>J1?;Rc2!50xFxL$C>ocH{XtM%*=`*K=DM8I3DbFoiYR^tL znd8_B1iFmI`sf3}1P-h11wFeGKvjK+`hKj=Tk(1YiMyn7$?@>?kR_mv(<2w-%${$l z1Z0?TP^=6Euw5~W?ke%IP!$dMK*H&)k^1peH89Y+E^yS8db@yDT%R=S?tqh+j+|;P z=no0RbfFHn9r{*3ThyV8AI2GW%6I?$n(58y&-&?^Qu9lyT?=LAJ@fZ1Ux9E)E4zeS z2*I&Q8t}Ui=cCxe6M-gA9xV8ER)73S_RKtzWe+LIcXiWS3Mkd3x+hnUQ7gzrqY=Dl zoc2E49NeUYA3f8@E&(vEb&bxttYmO zctDgEM!0-Pw;iZ?0i`UoVzYs4-{6HzH;NGeofKH-?B zqjTw`UJEl4j7e|cFdb7^3@;DAz{$LOq?<8Sf%TiR8BXBCSjaVVM(TVpqL$EWbXUTM zlsUj)wf5E`IxjfiD9+Z-2_NX<>PpsmC$FBkmmQa<9mHj>{@A^c((qolm++s<{}>Zc zQ|k|~|L>Rbzb)eY4TR8S^JzEH32DSPy8~nu-4As)l#SlE^Z)@ppn?BE0^fs@?$hA$ zR$a2z7tnPGqQ>JI7Np(-a|a~Wd^@wH?{hlnC3FQOes5<; zKMd($&3#+l-#Z?j=@c-oIDn#GieU(9Udo~h%KhhT?%NtotiVh^D=>gZ^R`GsSA&50 z+qc^!UihJTlh|M4-$6x}K-MKt>p@|ML^Sgqo#pE*F?k)TO0b;6OyhkUI(>b0bM+1s z*7&2fig4Dt0j<d6TPmqQ|Kj_v~y@cmq^ zG3fPM(tg`j?P-B;_GnWX_=B3p6YkmW;v_+qrj=|}*WKK1MD@Vt@eW)#)ux2%R7UDs zBtxd`GQN%M@L<%Oxp)Q93}GYPMn52)+2ELf>N+mjdv|pYOPYWbQdHlUmn&P$vz_L%~^oZf7qha_MqQ$fcEUJwoUBT$pfNC>?dX1`^y6RR9(X{ z9X3Vqq5&Btj%SYxkV+sO4=iW^U(b7yI18_}RI_-A;5hy@Un3_a-GdBt7Q$H_u>$RPmJ{20u=WfmLj>HR7P@U``PRV1)Q&uY2ocSAqezC$9j@kx*)2FL{8?>2mr{V29r6 zjjRc7Pe9~pJl`%5q)G7gd`EcTaQ^#tej?bLSA;74^!L!7|8fU-g<(%N^D|nI<1#VwaXT;RKV1bY zSwYk<>)Fv1`Y(%LAwh#KKo6_=c322ob8Q`d_5ID$}21A<8z~+NP zm-|67T=4)wI03Kj%U90HqltvtTY}pAJvfmjo3Gp0=Z@7ws>jDn7y3D?uJ%!pkE*qh?Hri(y=U5P8}J=A+5H6vK@Lg zmRAsD(G8wJS%0i#U&7(I@;?jLztySqT&EJ>>eM5l?n1l=&Y+boKOFEMdQ}n(@L*N? z;p+htIUNqpuyVhkbu>{hKG+^E&SB+4Sl+i7KMCyp0EVjO%+U>qhF^~7xwSfiQDY59 zz#iPqbKca;LtKR^cRI_TFI)=7U0kF1{CwQ_Bc~?AiF5Mj{v0?t zh@ZOjaKKVIUFhVl5T<_DUV?MGnez>Q&%>A;hR8? zxd}i5Ag+3f@k%UhrUF1hJKRS>chXF0Hltu$L(os;wY9;Sht%=yOu_lz-3(8R$+AQP z1IEqYR@*_q`*J)iwGk`u)iW7z*E$AMjHlTO)z%o$rccu8#NC!zwzrsb9wT%W0%a4m zDB+47^_|_81hM1xH<7X*Vuqj3Ls+QOh7m|e=x*Zz7=dD^MA=DIB#3WVxN56&aYpK; zctr#tWc2mAfiRe@Lj>2)sxRna^MnoL3smBFJXr35Ei|))nHQyd&zK*r&Snoqy}?Kr zkj~fMta)Nry@M0h$DMz^FPA8y2J(rwi}>9!59Gypt_)Z4e|r(faZW6|39iKD5iwL4 zOuwnGe&97R9OY1)0d?yFJ~1%m%?e@yO0}PRc<(bYB+&r3Rq?2HTP8Kifea2>`b)7` z%Qt(|`3s*uAFhC1HHG_grR|fz-WC?<^O$G$6uaiRoo09Oi65tSfe7W(2Z7mg%|ir$ zNhg3%Be-*~uHkBoCvsP^Rd@~k4NVnNZ7S&&4Y%IeG>gZni-2H}?W{ZWcd~U}JP?&M z)=8@Q6SJ`T2E7edlL*WngJ9+$N`xeTO?_)?I&x#2p63!8G z^EH7@Rp;z=#LM7HgK$00Zat@i%mQ-eqF>(!w{w@)v8lBMiriwJfPK!OVD$~Emr*Z+ zrTDF-3oTmzHxK$*E6l9EnP&7JraA*DW~x#D65hUrsczma7jR?t_qXwzC;WUDAI;`} z^)}vn7r%WMV3az{2n=$58~^sy4~&;PwUySm&^8cnY$g7F&nVgk2_`!-Zac_D;N-%p zRsm{cTuGJ?N=*p0>8(Y#00Oz<6I}PO)}hkwAR#58GuVcFH7NgSDrLxcDq{-AXdEx`-$J|D()<`y2V;B zH}N`q=VMonNaGs!MZ~ylO!B<rlHr*|mRFePZEk6gDY&FBy;Qem(c- z8WyJ3Ttq$mt~fwcMAiUzdh&_Mw2`c6$%9ivqLGgVc>{^7Z(i%4#Z=nRV|nm++U9z= z#;IF(EZU3h_=rID_7dPCb9U>O=vFwF{nDH9+m*H8bnk8!`DU!{2(#SyJ+zXd@ZpL#YWhQy)~bmXCmF zQfj;s_Q>7aErGh2mn&xloZNmgbFZXN#WrP=T+s&MjIY{j2s{z!>%*ii&BEka6dA6H zY)Z2xuz9S+B{v5OhprQ-Moz;5PoLFd0LZ`mFzB5Ufv4z@IY0}%;~ZEsbTX6A**e*& z2PY16PDvf`?Z|eSY+QmZdpxr@rG-!>x>X#hPMXsMXub2|z^kO~!8Y-+5dL~>MvVdZ zA6@`yuBZdQcrC4;mFoA>g1@e)kO>Vd>gSN`L=vz6L8`ZNJ6XTXBpX&;DObk&uN1oibh5yhL5@WqGp$2uU~G`K)#arc!`L zUu!6I-NAt5N7F{X+5w7D3c6MRt#D#6GqR6#xm)}7)j?J@Bq!~IbUFFgl5;>KzvINx z2-Y59OoPT9XgI!6>0(RlaDcT41&1ny$!M;ErYD%DDJ44c5H{5_-U*WD?IXx{xU?fz znGZ0VcK28+7xlq)6rOQNDF~nd@`iMDLB!pMvnIcU;crfv5~4B!Gy#PY410-F#`pm3cTv2-K)B;9=1M3g{@`0l6a zzGFnZNIi!vf>dd^{TV>m;A|$Ig9+!&HiF*KoJ>ftr?YVB0Wl}`u_?e9pxCK5bjzMx z(*4zO@XcmMI=jBkYF1Z}0y1Y7LIoj;yj4S-?19{yx7{U6?4;>4szXT!qyy>^!nFJa zFJ;aR*4(Rl5VBTTX#s;yo)q?mvI&S3*+}kmy1AaPP;fJ^;|9g4<8hy!xoDRT>yZkr z!BvV)g_FGMqY2fAmTFy>1Pn82qGL9wR5aLP1Tz?lB+4o~R4e`l731o#n4XJL>{_(0 z%kXY>4(36mk;y4>?v|z%A1v&w?5YE&!n!>5`{zErh>bQ7@_}yw|6n&a(efW&gKzmTl+$z~&oanhn!~ zXGP(Cm%^s7%gIjMSHDC_fGhJ$H9MPyEqh{KmFKIRjeB21A$_w1!2!y=SF>{h*DJ6Z zz5{PvuP+KINpNheX{6HPw?e7s9Ymp@#EjOH45FG zdy?-hNfBC-w9munA5E|`L~GBr^=#jPy7GBS;k)uSqPiiU^0U5AJexcj#%Is%kE93a z^8foJLENy^U5y1PEw8;j+VR+GYnEuV8u!*7l~-fWBz|_iB`g6kUtU02a*GJw<~GU} zeQ?Mo1H--W(5{fHyh(C%`uZ{DTk zxY0DK%X4LSg9eMtNf1n`%9)F-(fdQ0vP?V}E`84fSP+lbDZDM*2%pww=dApwhQzeo zQpt7EUD?y^+SIFDUjc><6Yw_kT6wwfR`yCk9PM`ZuUDdtb@ozdfa2Vkhr3(h*LYt~ zym7nY2_%ZMptlEcdB_!{LE7QD+7O(|?jf{0x-5+4!*clb0%1&L(4J8mkeM^}MXgqc z_5kC(^9?P|hxXVE`&5G&Ua%=ewYzTA6}i0xR6%$rqcT?l>suOOpp#VjHHbw~kn-Pm zBvAGk5M5<^NYfiFA2Lk}{+Pg!9}vll)F#VXY=K@El`g8Z3-z3Uxv8(~NxvKMfG5K^ zE|KT+koc#l;&vSlm{Y}DxOsoxVgeeZl}AEhnl^I!5Mi&}RF_FgL5p-e7ol@M1MuL` zT@0hL%8X8E7YeF+ozbZ+uk{j$n>p5uVr0`FNrLhXVurpqUXwT!*j}}Na0Zyt*&g!D zPgS@CL}UuR@|PSxVtVZ}VOP=4j5pRiI6?-A+QWMOjHA*eusK0KhE8~gaUa^&M#paP|=k0`l9 z*4)jL*-Z-uLa$niWou}>&egZ!<|r5PRO^T0%nj1bt;(S4>zlVd7i#Y{cBRs330vA& zk~XGsV>8_lQHgPHJm2?`vsO{ZT+m*W)u^md6wh7m&*PprKu=pex?OGYx?K^2ceU$- z=4pi$XR!{(WJ!m)Y9HCiaBq#yyRKYZVILJwq7Jb5L9quX+GX5av2BKJ7mvQX8L6eL zgJ@MSGi&fbk&YCtg%!BLgS#w6S;?q~>^?wgQ8W~Kj5Uftv+Z&xKk$xX>gaJ=1nvxU z(;qQpgn|lV7fZc<^~JhM7MKTtR^cwdG9L~Z=fmQTaB{ibJPL7JP$G?TCjSsR?jrQS z>@Zwyi;~;D2Pu^h-@~3xITj_ClR*`N$Zqa??hew{heg(?gb5&rK!#(dmpY?_o1V+o z+M^j0An296ovyIw*=7obf#cN}_8XCvAtj66rGb&l#xm2k*C1=eXh3ga+%HIdKw{~9 zk#o?4kD+^8pv_4Q7A5r3ufn9zr`Xv$1>nc z@jE3OkyhOrd~z1K=j82|an-dYgdOUwcO;hw=yf}X5WDAsg87;sV9>{vEGKxdTc6qi z&2ld{^mtUTv@%PDMo5YgJRG<>d8Ii^beOaSoygik5M0d2R`*I>0oAmSw>6J5UjN7O zfcc*x#QrlJ!v737`k#Tq|1*#)lMw&0fTYa)Bf?Ga*W?yhByR;p?*GH5Q+etBG5ojt z9{?Xb!o$En4c7k|ws8Nq-?tyX0aUs1{y^0I<2U6$*l$jH-=F*bfBVy43mtZD(JepS zge1%@e(oX6#gOr16ub_tV~Egt)7bC`O&lPV=eYG=5ro}5Hw7boKIjt(*o(J$1yD5T zCw~M-Nl^&Qu?b*c0(03`fcQda*A+fY^?(t0gD8zQ)*zB<@D8it#EyZ(#0E&jVVzjd zpln-GLajBx!Ni^jn~n*|l(55bc*3y?FKc+ITAKPJ(us5ntzCS3uqkiYz;fGa#C;&!$@G{|T3clNP9)z!3C=U~?A-ROcaNfgp2LH{U ztp(Rt*ed(LAf}hn<%iBV$gkehw0|&_rRDmx94J9)RrK1J^)@B*P{e`nh;J_w0FCsu zaa~v2{dklLpVFR8q9Ba_+;za2zSL5kQ62}ud$uM-Nws%iILGlo6A+c1UT)igSSrdb zIGs*J)Q-=?>7Im(gtlGUnG!cVC2IuK>N*RgT5g>L{$ju0-#~ZJy2|xfT!T}I3k^h0 z?$=Vt-4=dqFPTjbaqjnpzQ-ZndC}(MW-o3Qmy53G$X2;s#w=N9rPvpqblXJB#%+MI z!XB;(-!O_^5Im$&h|9KbYyO!iYPdTBD@#*YN-Qj*x0=0Fs_CLWAxUX@Or$~_u6luF zU3xUnq2R#Y#05iX(&zO~rTJ@0o^I(Ojv=(FKArFjC}&!k0GHC&SgPoaaiif33o!QQ zIpxRm5^ae3bbCD6Wy55Z--&4kPLyAbzJACxfqL!*%lW->fL!kvd8x`u37%lVDP!pD zKw=i~^4oq4(CHozPszMKsXGLoZkRI$!MoluzjGW)5bNrAex%%eFDdc$B z9qQ^Lb91nj2y4e?!Zs|~ojVkMLQtwX_wZyQn-ZH&tPoMD%{ z6bH%;zAH~&P+|~p=p^Y?sk(sFGZ8TL;RV#POWVL1qfO2U0u!kuJ{>Qhg*U5|KA&^y zo-0jm0K}ix7z2DQ^$8C>U&_)X4EwfnH{i_~Ap>ybF9cc#^KmUNj_VsLA<<1T`;DH6 z=+g@%hNn^iFg_!DWc=otElwA~psuMVRacY*(_3*Hqj5SU!}JQ;15q1G|a$t z3r<{U0$9EBQW-$-)AzT5v*nxYb`}|!`Tolj)zZfkA+Kk$rA{$pfY6*L$P~sTebsaG z9D7E(jR-w0m;po(~XdHtcWP%u-n$ zM|%jl!O@M#@Z#QF6NjgqpW}hrNl54tt2#4Hd4yD5v%yY#`Yv9QaCLW@+%$Nhs1}p_ ztV)03^nS)`GFq_b;W6@~OYEPepq|`fy&r00k0Go3?g2oB?#7H4!SQHio9_30nJKdE z9VMR9F@H$eky3W;y@^dXBQEL`*(86Z9uF#S3-%bxM{S2bU{hXst4U1&9z2~`LcXm< z=d36dWTx52EAeoQ%jlYUfG`)I+q?X=3kxw_k9N8YP$$^1ZE|Kahr-HE0-3k;qkHZ}o`W=1w=G#If z7{>n_1%isB5Fhc}U$93A{9C-Gt1jo^dTn9a@V@rJZpANQz&}HGx!?Co37e~MGrdCjk&gyAyby1RGfc1e2!9Rvz&1%6mo;-9W0OB%&J?qbWu=YUA8c z5}gu%mAMDJmmSYK%S*Q_!5ETgJIHvxYqk_UpB=JGHoT_-X#rb@B5_~`dq~}z@8=$e zSwr~1#C2SGUakb|%0B^LC+y_SdVjU?z!r{uy+HS-qPi%w>`~f1`oMHfUv zrf1yo;he)LXvZ<_#RrVa&RU{5<_TbV0Kl?Ocam?2`2ut)R*H{%4f;`se$yj8?P7|5 zjJ%HAIo_hy2hl%{N)8C1D&7cj9fkIF$vim7Xf^o#^Sa~`?&KuY#)!`;F;*l7V~WMn z6q5Q+?NWy1{$XIK-`(pf{a+n%{tu5be_K!4&AguOKhGtCDIO**8I_3m$^1EoJA%@Z z80Hzl$MSeu*_1w#ERe3g6p&D+{o5+-h1q&jW{NcMq_jMYkyp73M+V=4GYCBJN2v=> zGWy2ri1A+f!Lb*-RszF31`mJyu+0Y2x*Q1lD?D9jl~ z;0vN3wV)>}y197?F`_hsU$+;?hCvhj`f#ING8B&(=GH!K?t&2p5Jx9Sv>`gR4;uyeajta$_*f5I}Z#%W)$~dNDOuVOxehb^G@btq&j2BV6h<6)ecwD;1 zT}IbCayfSwP+yx-+_gmGWW~cgMFp>mM>OG{15@Xibb%HoZK6wdwNF!)KHTp?o3o_o zY!{X01LdoNY;@Jb z>9!*uZPU%Z3{M54O!sL6^mzeo4VR@dri7+@g*2r8ryg#k%~G~> zq9wV>Iq9isgP)Ki)vT0L6-;=7lK_V2m-8bkXfbqKASHn2C!-lXesN!~yCl6}0wfM_QXOx0gu2Gz za8`!td1-)GqUDTTcLtfA+wF12s2x-nizgs|1$^YnzV*bi>{T5jswy;$+krUwhb^0^qF z+sl>bk^2>jfYH!WG&tUb^nPF8GD0aA4-mgOn7liY7b>$vNFnq z?!hMg^H>WS&^?QSsF|MKVXpne8Reuss^+vf;25x$3EvsB3{Xy!nu&ZV@<+>9y4bCs z+SUF$cE)dxV4nmv&&`ckcP2ppITy41oUr}%> z4$o4h?Gb~+)oS&$4#UpOaZth?qbw|F+YXmo;V4mc^Q481tgwZR);zfh!d1fW_s>(% zdpI5s3pV#-_z^H@hF#OTDG2sPh6$H2rHhXc34)P7A)hubj)ZylqbK z_|Y1uNK)9D3{TSjifgDt4VjQo8gMeb1%|8giW; z+uq4HN1fHr?n&qGHuWOY(i~Tb6qo>3erbPU@uLLBAFQOCZE77nV zeL~%4I3r+rHi}_^F=Ya@)@vREJ(+wKHy1P*gjI75VDMLVE8vA`XcN&O3p1H_%<#9{ zkk^efDCiH*_-~(Z4m15cDSRxw?*|3)?V#`xc1oM_HC%?+rQ5RI#O_aeuvptqZg<;? z`lc->8mSk{q}nk%LvYtH=ShTwXovGjK_7}AWY;7ar|7!0;Y>D2`VLxnRe!!-j z>~$3^fI>2`5NFw?6JqoJHacUo2O2~Qs?MEQPo7_E>JpbcXi@cZJ>6Crmx z2G{(R=+V6tL}|H$6nMp6<^fP&OazXg&(hfiRBVI{Ad7j3;eb>p@pfVJIO8Fj;Mz4! zP8=%A1onI)!_JDicZ%aHK#^PPX+z(ireaoW<&K2Yvn(eqJ`LFOrmr(d)FjYedM=E! zpLC-9*p>?`yYb#CmY+K#Mk(m6t`C!p?aK`uNo#DW3gQLZPj~QfZK~6UFgct+!w!DM z-?%oe^JOzz0q2QPOzOox<2vzq#V}iRs5YdKUfVsJ&f0yLpMGM*{{UrM{!kEmS7Ept zckFOj8%Pn~d7@>M-8Qh5Un2wFTz5>n254-4zc1Qtc#3Xz4TXo23zRpoANA$qEMnUd%PYaG2rPH+oA^-3PyP|p6(k*! z_MXLbQ;-m4$*p)I?UyzOT^bZ}0VT97QEZsT4Ia84yM*G=T-h}}?)dnbjz?m76V8yO zU7p<9J(=t7bWT`)uxkkFRI!^9DThDD<`GQ;5#BF&8uZQo=bxkB z_|>Jo{KM7H%e^WA!SrRd`|XJPughRPmu&T?77rL;zZy}K^bZTt%u@T_MPig}4}A6_ zM1kXj9#AOV9x!TsdbWzTNAW0Yj)+hS;LA$d1A z>!M+FrQ^u8Scun+k*`;w0LgK_{m|<>l}s>;Ypz3TXpksWU7d%{B$FKb7mw<9GNlGC z7385?s%xOC3is0N!@G?1cF?8V-L2_7A=$94pUz%iv8tPC;7GNuqO-mjPgxG{8`4fG zeyJ3ieh7P3*@PMEY@IX8FDdns9|#7?RO}gmqW994g;F-7wD&|>vs^KS<-ot5*H3D3 zpy8{SCY|OmSyW~81DuNc_3Z(L;SIe+XYB4Rs&7OwjG*=|ieYZbYqP5Yb zYhHC}TrO|NY?DKULMvzeTQ1TCdUL_|=Jb@V3!3_=k*RJ4t`e9J{*E!`JHpP3GLf>1YMk9`1 zmM8L-?R;Q+PSvhOJMMVp@Ap$Y9!m36wUp`f%jLSQ<0EXpnXPbHa|hAqo?>rOW>h?n z^4=jvmUKKZ3+{pufMH5JO?2C5cx2Qv07jpH+Q9BvT*RV;F^4F)5ygl@d4v%qFg6Yl zCHvet!<7L<5c>o`MOrT^CSjy;xmsRAE?hdNM-4wwT4wI<5CT7KyX>iUL3z(bDte3V zD7Z^XvEpF;X!efOKU!Unp12m44idp9>tea#FF*~ju32D_9;cDJrg?u1Ilno!%$>3D zX%+AG>vA&a?3hF3S4XJC4N9C0nXb+_6Ygm>KuL27G% z98_|b+I)FP)O%X`cVJikTKWvjF!x_dj{ds-E??wg|Dz1mSbu;>%5sEs1oDtx;JS-d zh%f&^Hq^3ntX}!W!Te(S*tRr$@A!vsfc1yZqu$G@3sYDP~ zB%9=9ZOJ{cX9micWB^4px4OsBBnc1KO;$U{UB9^$Mk0#oMP&s10euYyA)1{}^HD+P znw&#eIUMQGMZ(DZxmQTMxQTXvg-$lElKCMV1$+pvyxch& zA)MrpSzJ<(8F{p){a)SDL>=vE4O35X5*j%ntB;X{262w=?=hXO_%_=(n1HRdv&9== z9-{W$QN^$p>6X|jb1p~j_UsYV{rP*i(V?qleh~$D@Kn_#u-fljHa&42R zc*xv`&4lmQi#kqDcTQ)zKXnhf#P7SyKOal~Td2}padUriXaCinO+ow#BuRYs7c}__ zkY%}K%zb`1W^1?H?p*s$3|aTjR}K2s1)hGT$AD zgY*UiA^Fv1fMAKwF17Rhkskujx+(psrktylfyoq4A5C+(LoZ^=7V@P z2Ti}NUNCTd&08lBMAFvV!u?jkPcSwHk!1WeFO~V>EMZ#{V*}q_dTZ|{5-{ezf7xFK zv?pfVe*=k*By3A87D4>i*DVXeAO5&!@50eQ zP9Rs%vWi*O%i9=oi#3BSE9`c`@9e(3p;ZzWQ*z)d2(8>Ue)CxDZWA1|s#Fx#Yf3jB7zgNuC`nEh^EhLl|l76-cWfq}y*+f&zWMOuw@ zJZO7rW`(`Ibx^iQv=5>HP}L8FjNv#N@y_;IQmt}0oIy7@Su(=m`Q8>hOq6c(ySa21 z$X-%`gao0+L}60TvcI}a>F10fkQfImX(a0)9ocHrnf2@qq0uj|2uhd}Q4l_^@9 zd|W^34Vs3`Gdio|W+aMBmTej9Z~TSdf5rb;&Hb%*W5l_38^q7r?M!fPxALp)-B^{K zcRDRE8h}=RS-ai8O!mLkZh!uo1C!?SYkvJjSusnUQIL0o4g=g7&?9R?6ok{iT_56~ z)`uU99ymKg1Nn!l=ijampUcC$kQ#xt0AP;u$~0d?uM__CI^oaGxo>&OKMFct>%))B z15gjYEo)z(xd1``IkI+E5Qml5z}N`Hb09*86b~QN$RF#Q^*2%u>R@%>LvK3B6EH{4GQj-f z6drY3NJYN6UDI==(BRf%>NAYTy^Sv`UUlko3(yDO$&qn4B!Ccz9_`{zltvn!HwO~>02)vc z)@vMl)_ER0K@-kj2M{4sj|0s1`J32ZM1;WZ^mf{dCsuH3ssqfuqp29xNTc29P{%0a zRlR|q9g-rh%4#B{Ne{Ghy7b4cxR2SheY*6m3=|mMJ&vtWSjwj zFVEy!XwT0G&_Ma-$?d})GM-@$@SIw!^$7iv(%wUgbb>1d$PwJH34hz3x5WS1ssE3q z;Lpw1zwI2IgT`Jmh_JHrytUrAZG0AiT_)1_#NZ#%OUjb z5dXUqKlb&+KUYt19LE1oPW@@p6B?#Kk?58e&n;g^535LGZF>c0!NOJ-7MjUS=(ERuQtss1X!bbyMRz=P0X1H?hc%u0!roY=IuDO{ z?3T`%+8zY|Er4PkqR&)X^G%0rfx-|Hi+_lr|45<#?iftkSJ{qq``Q-mZAJUno`k9w zOv|=wzefbU-aGtb5SNC8#A%eo8II!zH5F}7k7whjLe}#e-qdf|XyiS0UUscJWx*-u z%$v3=kt*s3{v^iD0FH?Z&&zkp=LnlimB_H7g z>t`M7CvDu_wLE^HNY(f^l30j;IxyOodujmD`yZ=HVH5+slm8_z;rsRDZ)*qhm~pu7Z^OXs;>ob=NTvg5M<*s5BpW2NUeI-&$;6{^9${H3i2V<2^$F zU3^5bUrIYi1aKL`_~sdu1AxK4iF29p@Z~{B8-i@+In&FL_;F-|KLb+s+qwhCw=WCN zdmhBUtV9n#o>UPys=5;SuI^1F#V$dcY|B8O#6M1;1GH;jRl%IU!+!ZZzcJG`MZ`x> zD6ZQ<0X_0(JJ$FNj=%->=O4t6)%n-r9Qo);e$i>0r}ei75m?A6a^cU_%lr2MV*8M6 ze+B|+(CP&=>fGzqH@|YveJxMtzyGLC2b6)SIz!5Gm#zmVSgwH=K}i|1E-59CE?Ozb z+f5OBiZHQ6nEj)<$affu=sr6<{Doqv9ie5;z02*z~WRy zN{>n0IxyMTN>_I82oUtQa!J*O$OK+drORb=Mu{EOt{k(crm9TB`=uvfmcdLHg_-cD zq;b`PKb>|ca=1nm{s7VeDjwaQJYjoK?Enl=%3-osu@7i(og(Wjtirn?Zd`3zJ~kTH zn(ANZjPj?@9w<-Ni5_>n(+Z}{Q{N(#xU)^*mxBZ7e z2bpT#j|ZEOt|-ObtcSe}VWAolj@~$9s3V=)JNtX*_%%^vALS{|jW7~>{&uePE3+K8 z;*f8Ma7H2_)&y{hQO&l!V*-GOwH(TU#*PyeCp2oji~x-4z9)NVaP&A$BsIed%VIU$ zxVwNVh`(3Wn7dnm4Q?+({s2y@BS7lOdonSYf1~HAdR=#L#)4I(ocSvUGz3fO98l~5 za`a=UhtRL|VFLwYVq-9ut2LbL{sEHI>dddakmr82j=ke7jc10p1Wf$_+yg=(3_0(I zhp83^kd%kxDPKR}vN$j6d{K^c##|x=Ri_eg3sU3gt$W$ukGDk&aq>dwlZEa1^qr^H zC$4n-X@CcN;1F!%%mGoC(6eU4I|r19PSR?$G28}7B6kv9kOSYZqi3`^PyN~iMAE`@ zaS+=)Z_xRiR#6ve__n+BF5Repwos9t^Psl9H>j^U2Z0CNv8G(X=q<~YkztUcU zeQtnn#y;$y_dNQK7V00SXZXL-EPTHoe)-eiwnmVg!PeM+#(-)koL&H@RuSTZ;0;2Z zpD%6ui?VwB(v105R{tMti}S8HC(-_PTZB6F%Z~QvZE@ZekvU)(JzPy3VG<H5VO)#(x4a9bQYu*5-a?AeU!sBM&kt<4 zuh??tXD9*k2|2i3KMVu3Ixmzw3Qpk@~WoHA}|w$FqwG&8vWAWBY)T6!vx`bY6PUf_%@Ta zE}nTWCQyaj;+p>Hz4;7q2g*H^dX`@h=!m56Bpt&kH&nMJXZY{`dz}CK|GKaLR-ye}VdaJQnPdL8%n~gJEbqWd`m1Fov?%vq`sR;}f_K~U zF&kw7p#Ebrg7AIn4TpZ{jrk`4P6j|^d?YG-chfD)}E_rmX`_O|l z7gFmXc0Sebh08Z`47e#*j zs{hte0jyp(l29Vk=GxRQYl4}OH)>rfUsFKU)t-648?as0Rxf2$Dk%=|y23F`g>jr; zjGnV8et%M@Sq%dg&_*2UqQ>6X`Ix9A4|hROsqP+@F7qbESjMNaV#0RUKl3sNLProV~Cy_2$#m{7}(`N$YOfX z!BOq*i5{>DE!YslUOoEoQ$Vtp#V&Arb5DX0Y0B4Y`*J#pqV_8Xvy(wq(4jv7Pm zi6_&CPTSDBW!xi(s)0%Nxlr0IbO*1`XpgTt;U56U07U)sFdO;RLHE+Tdxf(2q_OqF zkT0-as}8l{Fv9I=E`o`bf#OjvE}Bdm`v&AbbR5$q?FOzdyo$ZnHU|+m za^8m66ZQGpdCDo4wq0Xm)g1OrGEj%mQM5*Zd2Wzu?Sx-Taeto2gt|+q$%e`E;%il8 zfPf|NXvgam^&Bq#L$r?&kn!12Y>ihX$EB*{yYt!Hm(A1|DD|V-qwFC>px>a zV1%r$+DCcLo*MQM0|FyvxDAp(Km6Z7P=-jKpB&Z*XvCgUN#8z;A`m)UZR>l&Ru+MB zUqDCd!Jo|&B*u`uT=Kojezv`EK`DNHMaYjY>8otw+gkMfy)6FDF(!YcEz{XMY#F?! zsv95#PJyKhIEIS1?@xP$(C@+e7-L9MfY1!(+G7$7OL*E6dmW#6(Rhl%BR6XPu`LcX z1TG$}Zn`*W;f!}=_5_(kcaV(C%0yK8K3j6}3ONN_^3W)v@~lpDH>NVB*)G)_oY-^B zIO|S8Ox{5yug|Qrx8iuJ=SzvOkezPnx0<-Jfd4hJQ=*}<+t-$!Uy?w94>ZUAr_+PUaX0L+;=beKA$UXc)I4`5l2-= z+=T1ggdpp6)*2Lx- zocBf8M2nwx=#+ZFQSWhQlBLTl$d*JE=73^1*A3H>KouTt)!oFdCUj*fXdmxbg zu|K33E9wtoQwiv`$ z+l73}kBnR(WB)R+&>nisl24X#>>!i#R#d27CryfZb5ukkJWtgSo~9}D=R_kw-Rz-K zd<{k{0^odvvbzTB$sLJ2yvBqbd7Ci?E=3wTt&OieoNUuVFl~9MNG&`thj;?smeawD zuS(m`((4gOSC1=0;_Y@zPWp{_J72)ACze@o1HGp4mj?~>1$fgB>kG|WFXp830NE4( z9!=8=hzO}4lKWVMHvQ+fv%wA$?p9)fZfE{DABb)ju*4Lx)B^Z2*gMrAgP?%#L~VgI z4b4kkCKd*G=ue$EA{j^KN1^yns|(N#s_o5{{ChE`;-D27$jry1-JX{b9ZL4nwj=->VtKLJT9`!x{OJ#ICTO%WnRw2sH_$ngakFPFjb?)#9vIimaN35 zU&w~QeVT$|ZgN+d-s(Ag}Z6Opm$h-hV5TWJrG0Y{3IgC+%jDRHU%TcqE$gjkK2RY1mK z?M^@v&_o&Iw}W%3J#O+t4FQgoNYS_2RTs~Fp3d1Fl0dZTnic+dwdgbn$qgpap3r$5 z&N+|{bBbeg@t&sUzP70vd#+`TIQ-le4ASF*Tcj`hY`VC4@&+kdw(kP>G`~^oq#xIBfMmiG7rEWHQ{$Kq%Hy} zfPnn%1B;`lgWri@F9;BIG1QyPG7C++R87QZ$)hPOCV{;@_K0?L93iZTQE>g#Yn?+;)JLIegtt@s~ZJpnvKR zoOg#1e{o&>kX2hTLRP=u(lkU04pZPcKa0F8SNI{64(vWPV7$Il20?9GzqeD72l^h+ z`h+|8r2^s~=FDFvWlMaHukH$YwaS;}Gjsw#+~W8xu)G)bE5?h<-krnO+m@^Sney-> zbL9lp2s{d7XGmJFG;aM%!y^C`@gwH^gFcq40Z@~^Q!PPM6L{_lYAp;@S|iw|MhsHM zzJ-m0fJlNN5q2vu+xkTv4zhU-wlIJ4mcI?33@rQLu{0nJ*Tn9Z4e8YAmJ4QU@rI| zhU^QyA5wq_+j&%lgL3CL%hsgktG6)$zsXKJQIIx!X~rLX0cqf)u58f#*108sL0sUy zzJ1j*I(zmmv}4}Y)byc4kX=Fm?VeY4J<0^2%e)|W(O)x^HSjbV2|bfrd75XpJsu_|bug>v}~HaX0Qkc${%Z_t@_B)mwgH>2LuIkJ$dY ziTQ>igdfCbRHa4p@OSNFPxhXn7?2QH3=r6AFfX`t!%uO^QV4mCAt@pExvM^x;VR^AWH5AS%?*Oy$??fVmhj}+A59pDPj$ap^>JVWPwzaH{dt9LvqB*Ir8 zPxT!o`|-@+4&lPQ-my|Yd~YD+*8M4;Lb-pw{S;hVklT7(Ak_9f&rBKCSl$uN07T0q z*$2GIm#N}s=K%8&ICEIkRZ#Nl{0&NpAj(fM%2H}8}S zcw>JLx%j91!fE>>5rcaxC%*7%h+m+j@T(!vUshYmk@suiQm}Bz~PCpj=gp* zOj}x8gg4lEIG-f5 zX?gfk-f3lIK7&<3!pNo9lUc{;=_-3Z`D$HyEVWYXDMFf`Hz`)*>NzQ#0K&tdTGTu{ zRj$&dkd%png0Gog8!b7g%7Hv0vK$Q-yrB|K-gPaMu#gJ*Jc6*n`558b%QK{td}zR! zxcXU5m7ENc3y9F{hL=)|AsX=0Wo;kpaH(=c?GBFzJS7c|hq67jms(zRfc9&9U-WX% z2UraR_wBc`a^onTH&VNSxN3l&lc7gXZa;S{A~Te;u8C0M;OC?Wa?y1qhlSja&%l`W@X+VEAz$ARP0GZ;vhZ)G};d2QY_a@}T5jowlnFNQ=)|;X4WK<52X&u#o$! zVd3*1sux#9u6`y9B&X^m^9Q!!dAS7N20qTy={d0k-U%cVD)!#Xj^t^X-G?^~-4rE| z*o2e!b8+y7XZ1ReR{Bun9SLJVq$d4oY;Je#9Gp;qssz_CF$(l1H*094r%&iM??94f#v zP5w>@3nep2&g<+s1`}#-!-xbQ_!FDt0!toG!E6Sb^YPdXh>f=9C3jqN&^2kVMT)~) zq|4k5Qw0&-y3I8tFzuOLu{D=L+S&!G9LzR&kyugN$Za2{4wZ9U zz4QG2=_&clc7^jh-OPdao9bmHx2aD)v}tb}6H8-%S-E~&wW4>YQh!sYGJlOlVf=63<^KGi|i%azF^@h>usW(BcN!>hnr#|-Uz#YE-~ zOD)-CD*@f5y$189jUAy;}?q^l(=;6){@0dMaOB6x!wC?%-Us4*Ggti!~SQ3*cR$(Lu?Q&!%)IICO~Hg*A^5dKNhAQ=@%40ha0!45i);UffjN)n0EJo)w?B z?VWFDH8~z2&*xeAa1hapkw&71}r3BhkHE z`lo+^CHb(~Dvfx;pe2JV5(o03jkHy=;id_|kK=o?gjwm8aBlMk@8#aDhrM^WXPbSW zxCe3H8OSBaDK2`Fu0Si3bDrIh_OlSHn`E;gPAmG9z21mUPDCyB3t)Hq76K29`UD_k z(rX%zE`UVho`S=5iy8xTc#+N_2X+)_d6Ug;zt(b2F|hC!*1w z6gG4TV&m+15gMIR@5NRlq=c)s2MpLW2>=Z*QOPu#VZ|roLMB9^@t1hbvW$RRvXzj-FVK9P?VJp1oHlfOt3d+R_y8@B97L%Cx=grFHuqr};T zE4vu?#;^*xyaGqkWuePjZL|`-h?iV)!TZRE#l|r&#PRwJFN#z_X5F3KQrQUqT{ZGJ z2p+x}QzPHz7ZW#1;lqLN@J^U7~I*58HZpz=Lf{?91kmSyo?e%?Ze> zx}N}##`osLecaF~zFfPLZlG&_fru@>2%0I8Rg5Svm{8P^nE*l#E9Q4b4}0cbhC>Rk z70T1FQpu+>!tf)cIc|s~q$%i1P@|;!4V=r87puLR7fAK}=t@%eNj3t^yw1sSGPF`C z)@WfL+aPVweHfmMEeL-ueHy`T+Ne>h&GtG;+)>-|C=(c2lC4}Wq#K=Q2i3t>zA#a4 z%U)dS9exJa6TpHWu)sR*1uEL%kG#Q0;cDB+^L%PSRttsEcKW7SvbOx;39&+Z47;`Xlxh2TQ`L~n=2 zsb^y6>_#FD<{|+oG4aIZ>vgHB1;T-0L~D^7hlhPLWLFFejD2sXSETdOm3JzE^QH_H z9*FJNhfS~hiWev$T+_yx#d2cbam3{pfk;r=QRO>RrvHPu|up3Lj-?wuBl9ykX7|a)bG%%wt z3O!n&>1|SDxo3M+pvFgrgwm*2HTmcyb%lu=KU4sqNfteEAok`QNnEf~#<@i=_t#_I z=eGEI?XtNQG+WQLFuyLB6xaYqw0fO%BoTcsUSj_M>)f;?jRbrj$9#l@is@KiszZVk zK*BsH^1&1~(D(BstB8se!(lD%wkOn$NYW!m3DcJfc^TGJXO4?KUKg1Co!O&z*cVFH z!P=96Yg^0+sI60b$-ag}CT|bV%<``{kp=eZAuq7hJ3Wh>JU_mpxC`|T zzghijgFD_~1)PQ=ozLQ#B}UCEo?~twPq*@U-;ehjL-r7DG={XNdzCQi0`61kG6XFF zb7(<+Aa_VA^e)P+ORZdJVLakb%nCU;n-R{oMqIltWl4wQVM9PK9JK zdX;4D+tXSn9=wyyUJi|GH_a_K03vV?KjK%nYmu??wdf82-zIUEVMy;%3{RctAfOte z0wx^aZn!Eov$PsE=T|1VL7sHK(aovF4bVWz?T_TYtQR_@lw(|D=!m?(c)~4c0-( z?hHku{F-KZdeQY)371rTejL^(a0k&Dom~g!6k`5Seei+2vHA2Z!+&oyzOW(R3k@Um z2uNmUYUQdO-tv7=ShfhTwZ0y?K-T8N5e!x(cK!zH!;$N4-hQ9hK5zTGm-qG6A^#IE z@9V2W{wH2u{O3#p*hV((0SU@2XOQ% zH5y4hu>C$DW9dTX5E|?l^*MwEhY+)C%jK{E%!^$Ke}AFl?FJ4QK-08oi&n}LUmp@= zohnIA*t6a^od^V7HAru4&gZKeIsFz_liIe`DYt7nzV4k=rs1s3Nrso~0TQ0O=U}jN zhzT_I(&5$|)J?j949r#m{twbU@7R5Ox*$)yCQB@%#GTakZS@rHsskML^6}`z9;WVX zL|n<~=>P(8YxF916*ll_aQbxZs5qtT3Sf9ldd5BY2w_}PGlmq9ZhBlSjX?EYKFJsN zNV*Tlkc^m$I{qOMVylx`J`uwy-Nu>!GPX^IE)%xt9oX*!V}lNXufs8$Uw13t=xOiM zx4G4SI-32Id2K7)F-j4m(pCL7VHSJI#rvZ<_rn$voPPmre%|?S?)#AkB$+&q2rwYa zOs0#PU^d`wb^G$RQkon@#Xr4`nD0a%?zAaH@uv<1Ox=`q{g;7?Z@~eV|uWPe6 z2yW>Vaz0MSyir~bCTsyNMX)5t4DI>Rt+O~6a9w40+5>{2Cqvq&J%~P&WSCeky&^Jt zQSanF9ul#N<0;$MhBHL%?Hn3Dm7fo7ZU8@x$G{zkjvHEt>y(j%`?^ukinQF~D%(p6 z;j;rt5(w~~OfZTw?w!3u7!A~McnBBp6;eKkU7sL(P*XUIM+q8s;HHglIXS>+J zv3wGvq(a8)V~;UmgkQOBPS(+~`k-)8uATGPaa?Mh>g>*XpC`G$2APX>8-?|^IoLaR z>c9Q~BgUU<`@dG=Yt z*%7}HhOhIiw=M;|1kBrS;gmn3gIhoc$Kay^0j}_&dH)3~{P{8D%Ll&*kzp3P4h~~fvgv|$x3BKCU8D>^tJmAmcn0 zMEEWmoTEPytO;5Xv)oWmI}~G2Z!i1T%gL8x-J$~-F7@T{I>FB)WdI$vy1Q%VpP6=+ zVp5~Im??q6ghX*{pHK1Th~IcAzg~+jgyxV?PX|*KciJnSjcaq0(7%Ey?Ta{!K??jG zV|gpu`yWElH(}SeX)?h7f@__Xg+J&6e%S4|hvVNB$G@qWKivGgnVKlPm!RnSwS3CX zW+BOWS}oy|it+;#ReWm}>06PF9q_4d#_R$z~z@D((cW?Wa z1wn7igSX@JHi+x{^N`Mg&e8Z9M$6R-F7lL8S^Tz{}&fG81mIgA*-16!{Q zh!epm`@Rh>3~(_xnZSlbv{J@ZaNucW_EXr?F9`Qvvz~z8I$aKPNghKP+e?&+PaFph zvzQulPNpG%##npa#vkjNKjZVM+XD%y^IX^%S`16bgHDXlq-7UNK^>D2m8*J(NI=6- zZ{a{W*S(G~6jd_rtD6aPUaW>)6dQDf9HT4KsBOF3Itz-H?W+fga=DaJ4}sebNh&Io zJbFHMV5@@{x-$DHLqPuMuY(|~s`f-rRT-n$o*#*u1w!Nf7H!fk&}q#rYSJ$ZhQBnm zFy%fIh5kbAhb~4nzaKjJD643GJsh+7 z!QkmGs!8S{`nI|ucGFfr&=59$CcV^9XK z?w%FJz4m+gSk2|~GU*wz?Bd|EmAA)!yQz-oVLp$laKBb^dmFEa8d9$*^Nw^7m{ zJ3H?x1=u;==LIl>FY-y2mPP;DOidPbKu`XxGb*&7bw*9l!K&|1C1v_BB!c(|2>;+3 z$a*H@p^m}Tw}b;xwWpo8I_gtSHNWLo0sX1xLOx_uZ#`DV%(S?F%cDRAbp!zyd;;9A z(e&;^ul4?a&|&#+otC(K3cW-gv)y@dx_=6H~3;YSD2eX_(ezjzpmJ}Sf{u}bY{{N!83X{%te z!m<35HsQ_VP8F!C#uL8}{O0fyWPaX0@Szf4fF6H1vzxCak=T}{7X*LMLmjaJ?5VHb z>k>c9bH_k9G|D^q=~A!Dqd(!mk}lU4kD_HfL%Ltkbi}^qHkG0hLd`;46z&?-fKJMqLG@%+%(dH_l9u9pBKt`o}fWAQA$=$&KrLq^3Uo#XSA(vC8Dwtd)*zB zVQ|1qp6~9XBGgDbSjS^fZXb7A@=0rtm!rC==t30+vzuvw8+?}D7Jc4LK&+hO!{dZ! zl15R%!asRWBgpDj5aa{fT}^$&Mk2j^>tsqicsNvgk(L@lo1BF^YLzvGQHfv~cgM&Mp39nawD5vH2 z2+PUolxrTylyU|o>1sU#JnbbJpE--x#HlL?g`SvnB&EQnEQ2W(5C|Oj@#x;dc=J%5 z3HOAkA$0z}KkFyl{iilZekJ!V`9E%L^F!bAyGBGfz6U*2^R*FyTr_s)!Bf7HXubl* z9DClI^sk5$9ArlR;AVpQbP|9B<9sPtJh+(@%k2ca233)uLQ}v0@yrGmp*Ka5SOV)~ z0{=A%=ItGQL5#5aHjnN<&TOyS$Bm$CSRua(^1pum%D?-<$nU=LkKvKO=_lZ{w1d>d z=V9pfQ7bg=W4OuS*gQS!_`czVS?xDTofr_Qa?{Vp+I><0Uycd;b$b|tsTE1pfpy>^ z-A^a_jDTDD@{BWx6M)p&3lH&+?fEw1Wn*5$EIdn;G)|{`a`MhQ@35>Z42NG)vx|~@ z&K!&a&O--DX?znH(hjnDt?_MOkIIa)Bem7yNj+d_vJI6(K_wR^8U!)IaBa`;L|5=m zA{?;UUbs%-<=m+HaCrfl#}T^peq|Az?uskNX@$8 z4={&QAn?pC%r=J5TuA8Ij)Vjjm1C9$K?nuN*)*DP8_(;Zp3RFB88W zSB)vPux+n(#d(=u0|aK~$`;1(BCKm~k>)Exk+F2W~%YVl#9F^n&R?dE`kwW7D6{2dJKoxQ_xWK8)YBe zVbJ~N(?GmzWwS8)6d(=pTXyRP`Q=UhrsHvz<7bdH2g`TB(wF|CxF_g6Po+`^-RG%< z2M)gQiouYS03z!R(9nRR|L*HE=aoH;7sGtc>nrtA33wp#Zx19K0I>JIZVL~#zLQiU zNZ5TpAf!x!&k@E+HpCLa00$lr9Of+J0io%A(#Qcs2MOhnDtm4J#$)x@(HLKk`3S@K z(6VfAfpKV$g-ebnNhcKXN%WW-iwj6y{&KeD9YQ>r6T{x-6jv5&=WY14d3@0WF%_06CpT z4lcl9Znh1PgDt0E6BF=KNQTvm!d<=om^9cPOf_$)QS>2Wz|QoaBa1AfcTq_j~?eB3n?e#fg+2_dF4a1kB=dP7t|z zNN+R|ETuD5Z2QC$h;6MPIW@mT8cj6Gw&{aYYM6sYAonX^s16~Vc0gSAFwa{{iNh~eTZbkJeje-&6DBksKa~VPz@m& z{`yvXFXo|){mMiZTwCBEq~LQp3&~;!8z30(u>(Lbz**#E{?1)Nm^guJIuAs14X)5o zh~Q(EK75mHUo<3e3?5#ZCimfwErr5 zdW$<%*e=4Troz;3SWti_zgLc*w?RqY|2mR!RYzTn&u1v{uTJwl6J|w5b_RRc8=&;o zm4Zc>08h721=0z8LMlX@K(+@sL*RRngDZFqntFv*#h26FxBGRfDZfeZZ}FA@jbP0{ z@3zyxRes@aPZ2!+pD($!c@Uhy%lz@dGG`?i;PrPZ`{0k}&`e2& ze&lR8eOF%A+>Z|4D+;XUNMRKxTybhjSAZwe$aNBmXYY4=Ul@)(TBr8u;hyOgVnjC5 ze!l7+E9RCt@8KH|zxG*OI(bN{GJd6}Ku`Fp);+FgjiT*K1adCLEr~-o`8jCKN#sVz zZs-Tacfk@giwTTqfKZJZQnu3@o2Dd)sOE)Yz(&2rHjqGJ0J$1~2t=l#2$a^^_Ht}W z8aUwWgIfv_sKj&hnM#3V<~WX5^fcglwabX)swF3bJYO#(Xp>SU;05W{U3y2=d-fVs z2;@i-Ii1e9sNIcbON3SodxUIOb@k1bNN!T1 zU&{KjVPYafIDD?faX|MQSlU{5=9mnC6qF;{F-=_>YV2s&PHlp`F+B?f$U760A@8k> zcJ-VcLX+;9L95*dvD<+pa*EDb9A1xs#eq6z89cBWn1^A5;oUPRyAfhhl73IMm2vQ~ zyTh*6MBHvDpcN*sSnjakcm;UNJTI$(Y?nI4lgnAVJqfSc2H*t;BY`;fs7ahagGw9I zv&UBNxTn_*wor{OX8N{I=EufS#@cQ2c=AseFj(^vS-}f_Wio7kg5^i~)V1|Yq|>Ye zpgHeKi04g5883P2ya60^%wqEuX56Y_6_HvtIsJsknxf5duRe1e0p$s>w%`4m%tY_0 zv6n6U=h)^8eHM5k;BiC&eadk^=Y4N1Yv9N;wvq1ireS47JlcV6oD<<$Em`tG{QnD7_f0JjCRb>%)^S)Gv0ua=j8rMmq1VEQebGQyqy}OB+5-!!Y&Lm{_Q1s9@Gj)?0oO$VFiWLZ- zAiHi)K|=AWqTVCD1*No=J=M-vkwVM4q^Sbp=%+2}IvW|sn;Np$Tls*f z2N+*x{hcdyTueUHWRD}z5zbTbVUpD-SXxqg?P!~3iWTD0Am4}K41)KX@j!g-QM zzg()zOsrp7xHP~Webienp!b_z2?F5-<>lNCH?5Kr6J z?(qdqB)7kfM&|Zczh*OxRNA!Q&b~Oaz7g38Y!R`2DXsJ~<$@SE5&tx~`qU=;@wLf( zbEH2ahyJDB^0%F(1rsjD{>Fv|E!th%ZtiYs=@3}_^C9j_XF2>h*?P~H{(sO}{-AiX zrLS5Eh=2!1;^+e_5LRk$I<@tou>gI==U(s2p6}gZ0$U#J{@{fCo>H`fMc>Db@7ti` z{>$&nKQ-LQzuR&DQ^Sq?yB+s?@b`D$7Qi|G)At3gv;Q)Nh)WR{gus_>#34+=#!-|R zLARuB!LaO}q{B0b&wg>yyhT(CLh@(r#3)dyx$t=d8jA<%Mp)bkroJ)V^_n8rGQ5Ci z<#uz_7?1n;swpJQv<~A97TL!q-!1qgn+`f%yQqT0UB}4#!fejtp0oDlX?DBS#M;bY zNo|V+r_MIW-yAge6nk1ugo^l zK77a`DOJKgj&%k>GX_R7v2$P(Lo+c|J>XaLbekI4LKPKGq!b*BA?Dae%X1^=zCheT z8hg2>y={j5|%_b4a?xhYU~^k_y{_t4GW8cQHNoBw*K-HKJNbznc-nEJ#?S_4-s!46n@inewYg0>`MgzRfx|FAetGZ zu8=pWVYmAU=9NYUhgmr1yDx}%dK1y$#0uFrUpgw}hn8yoe#h#`f52$pk#3I7I-nCP zZ(H>x?;(8&5_UfUX5iSg4Cj3w{cO*^JQ!mu6%RbN+X7RiPu%d6_#zwwImMU5D^TU% z4E$fts|Cv%-02nT9fDoA%eA z)k3s8a{2RglBzq-hmUBj1E{)!I31B6z?M4##N{G1ZAO7YZ_*M2*3b=+LCyxWMB?#N+$0$(7W4)rFFnjUh3iPBFdlsJFV6&2)o7p1X5`V|xifoTW>g z?Q3~u%CtIDE989UFTB6L;tnwCV=qZa+B(hVVFG-vD^(3-2Crld3W{RV^bR0fzviwq zZnxbM;Hv}TCF@a#-B5AlX165{`Be1gHNQ-iPH_|R00D=G>i}v$^$&=ByWL@7u-OuX z0K=HWL&6*i5`Ia*=^l?@oond~mYbL2KAcb0{eItDx(wE=SF`eVk3hp896{X-X~p26 zOa+kveRDsw>Q?DYqXS{^SxhVxT*|=S zFo(w>K)~6yydVJGegaxmS??CR+pDa$!}&l-yd7R%wucmlFeBaWARH3TnanoRc*W>Y z<{vxC_75(EImZ`M!?)<-y5ptaxt3>BTHSb`AbOZ+A8#IyM^w|k!?0R{av+7hOMZ(r1BiCS|B)+hYC20|Lq zXCwGCxV!!-7vyJhBms^~5YPUcNc7GihSB3^BGE@6k^f5={YL~b{i#$j44GeI1}3rx zaIV7u-&7a=>r8U#Y{+X33s}sLXAVd!L5jAZYZFaC6~K`6d&=kYtx)-} zZ^GEH1)pE`<@@lB^Z}>pZ`mg>iFixVTAVzNM55nAkju}>{r=P(ox30F- zb3Tb@eV6gIf3VIRe~3V7A}% z)gn)j66*&2zNIA;T7ww!#Q;)QZ)^{b`9oLwvP~#H`Y<3&ee*a&h^G5UslBq0ejw1- z^I^EO3{3FM`?7K=@QDg&@*ulH17wM)r1p?Mvym$gbo;t&DNJN2P!ddIjHGIQ+>mtd z94rgAY39jrbFqR!FuMYi%`bO{<&XvK<$QB)j|9S5`Y^deHtXd^J`0&6Eo`T%(<=Ct zS|b{L@=l9rj@-DMOKKXD;#SZCb*F3s$271u;;3?o{Rf$+=KQ)mnSs;kdvDnSm>R>^ zp1*w)=Kin640De#H*Q9-0yF~+DTHx^Nd}rZo}tOFr@il{1UA4ijKI?7>UlTLPle58 z@t?7U=dw)bfuC%FSbIZet?U$Vhx!&zvaN+?kYG1wUV)vPR>6=U*N0S4& zDU`OrItAlFL+2veQH%)gT#|O#;-dXhq`iZ}PV0W$ zp$wi~@%3z6SnN>70?cXda-*PH}^f|^IYJlGY*h4+Nhxh zsD_X-1CE$4fxU3%razYSpzO8JZ`khlPx@`$hHUwtkiW#gR=1BouZ+Ib?XQ%;Z-x7} zb=z_l`SXecb^G~-6u;L-HE_~1#1-8#6baytf*aCvUth0Na0OXF*ZAc!RsZx!f0beN zuH(q>3i&@eER-G0(DWnKqDQ(HX2c^X84oaG|2XexT<}Eb;KngM>$Wo$j=pQXCfc=a zh?;74SIkrVk~??C2~vht!rZMpHqPq}iF>ULKh3-$3hQ;th1reuvA-U@Q)e<(;RG(F z*qgE zOSTsgigU0Vp2)trP36hqP6ff;o%Ts(2aHpu-5&JWa^KSJLXgfp z_S0+Tx4YW32i%}U$Z5J|NAuol^mQkAmv|&vXF&u4JcSIGF?yOE@2K<0dK6#|J2J5A zK&UKPy6v|wd2^8ktiJ1qP~Jeg=stZWufts;b&wA}nH7htDSAda1vTo$Jdpm$hReJ{3apz+ZMd} zVbt(7nCCxg!T+Pu{)sL4Op;gYpGx}={HMQe&wtMC`%lVz@SXjHFf{D${-!_wcgsBT zW1au|GCwSruLG0U2f+T@wE@spD@0J2a25Oxum5*@_rEInP+8u*cwi4{j(QmkSlE&U z743r>+gu9a0?~x1@*<8Ik8iunkm;%Y+J!qG;w38FKNr!p2BN1T&)yZqksPgRV-MD3 zbF`X{%WnxxRSoPCp^T6CNKWc#k@u16%lw_}LGvq!~-*i~; zYjjK<8H$c5C$RzYc#@m>DHVfD`|8F=bcLXb!+|p{dzGT311a>S1@4ODf!R8)sCL1U zQ+pVJ)Lb3~!;KuPLnAOquihP3gG9jNtr%b}eaC7iJfX+AXy>Qk++v5xguTPMcB7<= z^N%I}?O^`bvQbaZl-4#6I=(IES0T53K3d&tc>XKrw2!wZ+dCaW( z1A9G|DT)RJN6muDOuF3fAKi-OZqt*}d4L^IPY2EN?QolXS3cCM#3L zNWpV@3J8AmNlN=0iOSS0Zd%N>9~Db%Z>Cw2TQtJRvlWsLPbf4v?fR`Kj{yn$^ky59Ymp2b-J# zmYe;RgTV<5Joq=t0f>6A)&D?Dy>SljfycMo-iWEcd?sI7{%=nNiT;yk@;AV|zhr_^ z`KSjAP(92m#uSPoE#kW0X~O@<-J7f_s&4PTeXe5ldCo&2pf)L`7L-bRAT@|m335m0 zI?j!qK}2NE%v_msuJzx0cXnrHOv6w>{E9K&_xEzuN!9g1RZot;^v6y6o}tq#zH2FE z#1_czAUd+-nK>N7q#e#A9RMqLYEj7ys<$5Xw@aD6dvDOJTW8)p>}hw5%NS*Xo>k>) zM0LBnbWw;)koVvr{0{7S%t9V?GPxb(OOSg+SL#1Y&`q8VHmZqii~gS0So``87S_%;Xc znmH41`3Xb`4c71b8`e{IhcWM&Jkj17w+fKRO+&*RuoEcSVHMBs%Rcg1Fr?j{!aX4;I8P{LU z@)a!vu-YaZvcX`c6uxu}2LwbS6sx923MIO-%kcoP9EsLi?T$P=VM+OBM^};?g z>5cQg6X*&Jg+vpwn8)zM07|J-VuBvj1J< zTPp5=g0i^xGyd!N_F?z^)2Q-49pAoZMgq#F`OWwSO4d&;=?~-E$7BE7$G4x426@r?sgDNQe6D_{y+KZEg=wOtvs#yZ@%|IOb1m+|e(hPg&F)IpzL znHH?Y#Bh)9i^DgNJ}-%6^E9#k)dG7{w4%yMkAt9$h%33F>C&VPdetp$Zk*hkKzt-j zCt}zbBcbkXn5?9;yF5j_u@opZOIPn%RL^C!FZfKNH=L=foUkPZA;>dz6&mxMkgu)V z3ui6K?m({G9Q@L3>DqU5E3010HI)K6@veIIz#_9e?GslW4ztU$T_(At9Q))3@gd!E z<8RKaCg69xK&K_C#xlxMC6Q_%&OQceeAMHnvjs%F(&XUYs$SRv} zXd4c%eg7YiZ&sJwi}6R>;P=JbKds!P)5;xR( z->#SbW@P(|E-Y~7uPZkQ@%4r<@P==r+PY{1#~G~9AjR=>)n@-Ss(n88$D{al)wV9$ zpwPIkAOFLn_yZL5191#Y(6v|i9SS;gdfIvzYJ@++GEaM=mMm_9fP0_iUNH1r;a)$AMR_-Rv?b$h~k3`i} ztHk&sw_p06uQ9wmUA6@zgoW)Rp}Q+umSCK@c?g{r5Cc~$REGQNj3;je=rB>jw6zDx z6-IG>lcy4f)FRy9XSBgIF!pz5ckXvq9;$D!pgmY`*y7&R>k)MOtYD|1Lt+_xDTiX= z!|=Wx+snf=2KLGr24o7N_`$g*v~1Y3w)fH(xdrXSCVc$m8y~oG_SPHxM zFqgW|9PL<*A)8QtYBmQhBYhKZxA+k=VUQ-RdU?K=H!gu9U8L>-1zD18^%|}6#*Ni@ zFX6D`w#`w@`yOksG#nw+?Z^-hkBYZXfvIwAKNO%q1$xe2BqJ%m?ZBLL@a%AJ zTW7$(<)x1A`n{OoZl-z zqLz+!B2vTQMRF1D1jk9j>q^hqqcVnQCjoK3AGa6^VG|DoH5amPKw);j{j}BpW|sT# z%BdUpTrY+)RQJ8>gI>Tpi!cYDLI`d9fvJN)*vDU-=-&c(e%53P01Nnv5?eeRw=WgN zKvG)^sK*y#6qeHCb?9DaQd0=Jt)URL4+!@aZcfKcIqADgZYp|aY$Wi}vmSIgb6ma+ z=W}8Kw(o5XQ&a4z`T=DpbD(zuSviH~5#}>fo_&;d#t}Pna**h6c-L_EfYtXE0-$sZsoRl$bN3)8_OH@3)AF_u@>TbCxT;M>h;1 zDr(Z)RexGxn8aw? zyn-dxe=u_dYGmqus32kNZSR=prllS!N1ebZXuh!;az~d9Mu}u7Js$k7qO!Y(a09q< zMsTx?!*2gHq!A?+<_vawrwQn{69LpawJ9{gIh%&y=Lt|{!HWObRxPx;q2^Drhi%@M z*h9(?Wq!(+2Lx4d6`mc?rQ^D?!MN>N+jwkTH$z*$EA%m3JO4c%?Y*VzFW8T_%#>j5 z0vMG`xI1Ve(Mk-CWaQk1uHZELWuC~o8xv{ZQ)g~#j^vx?KFO2ZyI%RbBLcviJ(W<5 zOTi2cP1{&9J6S?)seUY?s=E=g%(e_#9qK{TT;5G0ei;2X-?AoT-)yI_+<2vwJ2+Zm zOrj+KZer`l;WSWVuB6O?ReA5YTu8LVh9>+GTKafTS7~t=ujMG< zqrL$u-2R0NkZ0jYkj6s0v6JU~9e_w|d7r4~00qK(xx$=&6k3A+_#Adn*#N`{Sf#Hg zgB67EMYBY>^)2BKFy`Mx7(;@w28*lg>)dUDoy-Q3<|?*i13o>t%5d%xldzW^E#zAh+W4~34p31<8+=;4Qm|NCPlkVJn#cYwjc1~lVO zxqO~aKNE<82f>(&e3L1BsT96hssPOJg$0<6r- z4Uvdo zI~7s4?>=fYK^D082IUJT*7I0)udj2PB*2;FxL05=_rU}76P35yJ*YIgG6z@HOy&?j zdWyBGc`5K)nL^T|JwOE?XxhEsY{dbOI-_z`(6R(-CFCy>6AYB1lA5Sc!sm{3=03J= zO^f)*oX!4)2D)>+b*Q}0aOC##aU0%-y;=Px7YE2hN=Hcm@#(z@V+vU2rRJ&u{UjXS zQ?B+YZ0PgPH3DnBFV|Qk zO?XNzaY)J#gqXIyzUVtXw7vKJc7%3^oa)Mc&2gH2ea*VJH`lh?<(Vg3xz>MRw7bCp z)kt*~f!xmogf?`woi#zsDz81&T<&16Rre>kj2`AGpEt{Vu7Ji;8MpIIlWoDYcFW-$ z)(j|`hlL5|CVHrJSR&V9lXowb^LOpVdzj1Zcs?8kWwxWo>s8>6-&|kLm>)Bn!h9%7 zKR69)=h^Ap_rk2(tyTaP2xVzcpB3QIT$%<}p5%w>@Awdz34$K`$hAv`YaNh@|BP>4P`a%5BV$eq? z10|F(Lkw2+HLM!)=dcO{<2}?6U}$G zyF!~t0prw9k4={^<=BTR^@G(|D?ccCSCZ}L5c&14v$U|@=MnXe0KzXAz%wwaK_==iQR*rQ zwW!FU7)_lWgNUAZR?6t{XGn|y z>#k)vJx`JE00tPs6D}nOCsDd(rTXZS==)-Cr%VmzMx^fa2V|r30SMZry;Y}1O(^>m z-$zSAo0ysD=&6v&M%>!;SiG56EOm3T#o5yd;Npk+Bv4nWtO4?iPX!?{8A5OH zyNZ{o3MJcfk?->7mcGx=>*)I!7n7u215Fm-gIP^w`}x3c`tH)8m(A&YNtjK!x!j=M zCuO{yHX%YmPY6xQy;~OK{?eqYhiOex_ZJQ_1^$pj^}G54020^lX8h@Af+!jNnv>O; z!cV9Dw59h!1rW>r+4cepE`FHkAh34T2N~=HLA5QHWRMb(0cda~FhYqF`32Vci5KK; z^uk_I8G^a2;njBYJJeZG-y1$by4Adw2(AR}v;&3O#|yUAS)_n0a7O&LiIqC@TBURP z(hH4tX5yo2zBJ%xiiZm-5s-aQNlQG?J~Bw6q!>>)1bMQj=S$>LXP(=xzNp){vO)nOthL; zQ-{bMiKk=1%qLlqC-nkUXVX3^Ux=y`uV$8o8Df=%cV6WFH90indqC0Ayj53&DJT`p z)W8#dP=TkMq-eXurZVD*3QqCo{vsS`@nq|SBO+~OL7=<@O`u4EE7#u}fPtswrp8cT zdTD`^lpynw>0<-AK?h2Fqq1{4`Ry|nV+f}%8QuY0ic{na9wC0}iFfQ3#G5IFyQz4b z+3?Z3p=Q}Ri&7(CQ35do(@fyRoy z%TuyDM4qav77i4f3Ao%T4A_8Cp`GBS5?jZDlC8RnGN{N_fs|h~jf&E80x8YtZ?n6F zA+Ky8r5XeRXmp9yq`12t{da*e41pbNiMi6s=O{NCrG?>(Z zBn)VqRopRN9MM|$dh3(n9z3ksV<+Ou{bJ_(P+5cA4p{VJTu0!a22%>4%zzanUEzg2 z@Y&Q57xiu1CBkltU2{MH!ef8!x;`FTQyV`XL;RBa+e80vj(q+4{OzItCr1wQf?~ZC z$PalZkiPvrow>2pwK}46HO|{ z1!G!1ol@QK<(@;XmeoOrfW+!^n*v{>ds#tjC|ZEIiY6(_B6%^MVX#Cv)FX3PrmJIm zNA?{%htuJ%y*EuzEI6tHPtHaJT#N?ksl{6YQvY~|CYVMzCL92j&z%H?S758FuYsm- zJ${i`I|24XxR2$Q*zZE)IX12+hyd-o2Sb9WVad0s!|sUpjoNOHhC5es4K|yXFQnPx zzaO(#cH8V#RWfiSDnK`0{p~V;NrjqI>AV>z6m5Lf-mMLG9&7Q2PYI?eL9+p(!!$)L1ydc;Vz7pbpJhdOs41u8be?K+(;~ITt z)_+{1+vgjsr^K#_@t5@)0_xaUgWkWPj|Vt1h>Bl-0jC&!M9Y62*~g*7AHq}*7agw2 zM>hS(^FEIJHy_G+%|62J|8(fTKl1g3*CYJ6_~n{$za9{Ln)dq6A5`X#BLq70H+nO? z!E?PPpBH&OC1F`V6!?%f>kD1hPaBXNF$=d1oB;wOKX9M{^E|;5+1RfB`Z{G*F{{X~+LnUg1wU;=Fu_!%=t*G=6cok)j*OUj!5w z?7lL24l5q+g;?w^*4wjNc?RDhc>2;4F;_y^5qxZgu0N9aJooW}@KuQ_vOYw+<&lx1 ze|o}~(jE5Y^Lgga7#Yn=^$29Ewwr9-lW1!m8ZLwI4Y2`#kvm2a zcZvo{g|+H&R(=W57oCmb;RZ}pQOYylhR8BIl{33nxZ8lrvbG8IR7Jt_dx*iURzCML zk30$zN?n6J1tVqUFV)M=x=v^jtn7W}CS&j~01m+1nkK<1ovz-}cM%F-3bmH7d^4kJ zQWhXRm8G|ZQ1Yd|*U%i59PFe5NN%sZ=l%%YTMR75*wO{$`I4!T78}HaK87}V%7RE| zj29HswY_N{I(kN}mx2);@#T z@6TGMx3OYyutu#cu(=x+oLzMch>J*Cy`KfX0HKG$2O6J1pR7|W2(qA=3!73kk3hi1 ziT13czFXel&lRyzwIR0SklvOs%~|zGD}+`b-`Lo9TwM1-64~3m*13 z{n4O>?KW22>a>%)f9RQ?liT<~a9Di@V^iG1VI4Ks4Jyx)|1f6$(@s=~*8#Ie{~9p= zZ5P^0&_0cS889_h5Nm_~Kq`tb#orJY_k=ZQ`g>1$Q?LB%0U$Mk^QL+SGOmGp`coGT zTu>!|SU=zdAIQ_d8zHwg|2ANLjI_|~dw&(Ap`z`AMS&%t(!G2Yq%I`t3tq`4*u~`HfgQrll;!G0-M?3eiSUlXb;c2TOc@X1L^Atkr`gF#3(g6Bj9>OHj{?EcKww2l-uDNTzLm=js5?}*- zv_x$yEU+>Ai0k_)vH6dK>Mt#H^9h+V1%0)?^1`@Z!0ncTfiOqO@-yWt`zI=~!5 zUY${m0GgUu!R=9H>A^vd6$%Nyc{(ocw&Xa~BgUXYHffJ?!BRl#`r)~K2M(Drdr<50 z)sgIo_;$JHy8$ChsMmoAS3|YwE}ItDvJpUMy$eiC>}GkJ{mx}tWN1zY@%}z-OUK)) z?TN^Xr9Zcq4XFC!QUh?(LwuxKyjRhl?H>5%?@D$e|NpSxwM73k@JSwg zQ90qelGomX@r2pi`6fRo96|1M5fIQ4>Ee6#uYO#|XYM1)=(apwAR^twZ+acOz<>&QJa>>*@OyGC zB7QK&fH`(~e?&*ZNc%a)uO+ztycPxnb&mZy2i4OED@CX{o&e{40+!AXN(kS4f|Npl z-$C(ETI(}2?1*7)@o5A`xXKfBSNbNKg5XLxZCC`uzt9ilK9kqhfQ9w3(xpwO1|TD( zIsB~SSZkr%71Z-Bpz>|QsYZA6d4ZIMZ|@F2|0W-9muVusrmdZH=Mx8ME|&p0pQ~9D z*!#B*rA(}+b%kIBh?$hV0*b69OliM+!P$iF<+s1nr7M8O!P}sG;BUF*SnOWk;NtON zeNlUaLMyIsAph+yt)TWEZiNz%>EO8g`~<%~KyCeCKnNxgp)Y19P&&da1oDdCfBf)4 z-Gi>uU~$+PR)9iythDRARk3~!J=sWU zQwQfl>|cYHQy%iRkw~9fXY2RKd3CXpwU2`<9 z+GsdU>}$w7p`zL?0Dl(X(;g0Rhi#Gs`r{$kXG;M>Y?XS`jkhD&(9IIvZo8od@K6*- z#8IcP=f%|yQSl(zngC0g$c&gS^cfBZR@~V)CDLc|j4l&`t3spx6@FI2-3<-Ck3xMc z+O}_SXHL9(Wk5>h1&7|*kKff_^l%9GO_K8a=_~#y>cDKjTKFEuQ9o&q&C~UTn5YW3~Fm20cLH3<4X=!eb5)=`@_07;9#3A6@MOC zkbfIm1eW-@u*yCU1$=b>!4QS~GDiKm!lQAD5B%_bMJNEu^UUj;P3q&7@H(sy#O)$f zDgu5?pBzyXT1GKGZ!cItSWC!pKoxaf;QY>?)24cIzHBbQ#}Dcm5;@Em)dZ-ID6aKv zA7yQ>Rn5B@A`qKvj@u^9Tj^{*)!0#6--g$BO4Zfo`?yM&MzuL@#UfvAbdg32l|CiGALot9o;?aB(GoT(s;so&zdzjz0*wzRCX^t0-RTVOSPy6}} zBI9#DuYcJxoCsw;2^{}9m_H!W3C{uPGsDzUmjI1}Ox$)c?k~M0W7|U=a z(E)E6#%G8pg`yASIeaK~_`hURkPK?b$sqZ!i~-5H;Zw>(8)g z0Cg{*KCiw6VGvn%_G#Ev)i|hjKx;@ZUj>|#V1FcM0KWLs%?*nPP((tum?=PT#;2M4 z<1sLEe|v1ou0QLL5w?oYhHFoN82wOuip%i7aAY3~0vlpj*Qi$52f-kkI1&rKj*saY z=A+FSGLP2oV(7zlf{h^8TL1-VLYRlm|>0B$ZN@nkFz`pm>9G545AUc~;c zD_Vlf0dIEL>X@ML!(*S=ZCK6kT9ehKa*yG2FPS+s5!&EvNumI}e3R*I|I`oMJ!0?X zpdQZFNmpv7r{kCf&rAI_AqxI$+jZm$$kNLHP>wZ8ak=A-Spo z3E0e-*A6ydx7rf3T|TkLATPWDf!=MQg*kwTN$|7c2e_%3dAA7n@`Sb17S=UOj*bol zDU#^x?W}i4H)R_@_tVGH7az}ix2MxVAJ) zs5echgT?aCl$cl)+(Dra(9)|qE#~rqjc2U%!RdT8q~}3EuzS2;T%x>U9jv@HKVd_& z_tT*)QMAE#kU(dsI%XRAe%HQf4;r2C-fUXz(U{Dh0^s+x%^^S5fjEzp-@UtfV=5T*Om>*zY|G+!WY1?n`fdIA{;bU&!gJ3VA6-o{J-V-xx=*OT+t)#e zD+n<9k3K=t3_ljY{#F?OF>n0S93g$E|ozx5FpNl%%h3~5cBuq z7(isE1O~));|Q6`pBT?Iu4t`}ebwjxYD0V*@`VaEODn-1tS8_29q<_VQNBMo{ps*O zr@DVWdYEwj`SAbKqyJExd^F;JC_I1Goj(=tEO@a74$+G#rMkX!2z}?^5xNGu??W%<*5(|s5cavK!Fy_ims5w@nn6%+bNOK z1XTEjfM{)|6!TQvYk+%RLnL}*>`7)onRGraUO8^8mn>JHB0eWH*b&obA;x=9)9CmD zGs7k;TD%xw&sRRKZb_Sh7E|=8DN2JsGRTsG(u)8^RICXho*T0^rkV7NjvbI$-wKxT z;JlfbO_9wpx7?IBxttS-f;|a=v>4M^4nQr7z%-i?DRS||!aKdn6ZkvQoL+ECM!SdFr&$OYu#?k0miw7|qE~#2IZU;;8?Hg?2auc&0f{{346fS6rePXu zg(svh<9t?nlZ-^t?{7b({vYH6R%i6)_tP`8(s z9s0V1$qdO&bK?Vauv5=sGcvnLY_0RtqE5VA7?30l2y>e}8bm5i*TJNu7h@cnT|q2~ zof7lyAOx)k^iMP7x*Z~NLvdA!fl{F{4BP>4!d<$EoyPIYdMhh#w2f2ah$!%$A^W*{Ak{t|f ze}5k=pJ?#!mB`XKfP88l5Kj23e+Z%{U?d1{5kzW zZ7-Xo2kW{+p&a`nO%Bn36e&dY%Dnrw72X`anwBTrTI~v}tO+CoAh`H>cKfPYLXab? zCmRhgI{f|YLIk>hyu^idbFX4?C#6gis-0uTJ3@|~fh%PtbLf_c@$I41$4bCYc(KLH z9^|D3&`Ayn8f_z1T~hieSvCn)%a8n~tQ0&G@NVeucg z{03ouZTon(q=^4sC=lsvzJSUWL{t)4ZS&w3|}?noedo1 zjt#4MZ=6xeja7!@Ku0uLkX3Jt8k=?sG>d$5i$va3;rzru2ct<%@cm+$Uspk2U zvtzY}hiqm`?>Uw{Nf3|xWY}JCn0Lmhb&gM9l2h)aQ>QqcMtuuzb{?VL?;yZoMRs)< ztaz8Cd=(LLUTg7$km;CS^GBTLq_JUbI|#8glodk4?Bv)7%1QZ07k9@`GJtF zxtnh~6|0JPpr9YctB$RQJyy-+f{m`xvqZDGVA1H?QOn=eR-<%%d(tQnnvtb4W@6Vv zze^^Pq`jYorf`&_3-6Z0C3Oiw0 zq&$`^39=6Y41&1G{(^(6f3{DZu}5Ch;o@x7t0&%og9C5og$_hcHH;TnGT({F?*zge&tw zfMqe1WmgBRBM_e*v9;Lg9BMF$fI&?VVO0R#olgZRjQ*?V^t2xB!IhvWdf&eQ%Oco6 z?7)7Mh=YP}O`sR84{hByIHBR$2~BOySV(8Ush7_eWWBKDJw5SEdqXqDfC@_tEt$XmDUY3# zQ<%=|j7ob{a@-~m*F|OCabDcR(+L_9v_NFRjXyPEU**H`^_FYOUCz=Wpu^A{ka|| z(-#cG30QF4kb{UOJwNWs$K+z~cScrmG@&S`hda=ppA;W6P$x^}=;klgZdaJzo3u7= z6HIr1Sre%%)(D`ng{ns$c^AzyfX~^ZdddW&$Dx8;oh!|aM*_lZ&y{TyRIj;R7_eg4 zTNJ@5Z`9rjeLTH$(e9(&a1hYv-3D_#vh#}inc=2D%E|Le$Eok<7MC`yIv1qxdMV!(B%cfU z5Bb3U$3YOrKotzQP~!ej<*xDp6LDd81eRYQ6N2|tK0!x7>^u`?URms9}SOeaX0 zfwq&sCeQrnDRwh=&HTF8BXV7S&R6~M#ee>zKk2eA6EJlk?xDgVv-`_ey!`bbJVt^r z>mN_+$2VTj3i)3-tzXaTr)&04rv;Md5B2+R1YGCJH}as|+aosigJ5*{ z8+~D8JK2!RH1zf%wc8|C0zYxzthwpH?CYKV6xI^>Rd|{jEERO&mYT$+Jj1Z^#1Q#` zja$dD#arSpp0XcH%iqA_0@%*lnZ|gvz?k85x!p={^DgI@?z>!l^ngCSf|7Q?B|bp6 zk)IVT79)xA800Al3|1U&O~agqi=(v#SnEdNeA?8z5sPW|a6GWBbs-Et_aVG7ub4&m z?$2KBVip2%P>Hm<(}0lHRipy5kU=T&g8GbCc)e>ko3?#vfF0Wdi)Lx!5wrYoCrDx2 z(YaDPPkqD07uT$)IIJV4G7R>GUJ(Y(dne!`SPtJd;WJ*e9cLty!R$4YIkvY11;H*r zgQ1q75G2i03zk4y#+I^)35DWcdzeB`Ki$*-_QDUS69U?83&99Mka?zmpw6-_k7CZ6 zbE(2s4BPFk&WxV&!>sP;p~|1dPV<3%e(vv8Fxjn5yq>gD6&Nx$!xNPS8EqaL(#%X8 zFpw+9X+V!BeAv9EJHNRuU5vHuZD*eKbfXkYAEsbtq&lhvTSa+A=Mv&&JZ?C8{s5$1{ z-a$6o(TF({Bp}~YV|j7a@MloG`P?b}Ba8hTiXHjBFB2(!JGYfBjkQFAY}R<-p$PKC za0^1DPv@O7*|3HK4A~!^i+ns8nymh(EdgAA3J1YkJnMq4I+N7zowdt>Fo77%uD^4# zN&mt3uqwP2@ICyj@ctYqmm4{KhTm*B2pFi#I6x^+O?!z~XHk zY5#fwu+PGh6OyjI3M@nT_3MSQ+wR9c9}gW$9zv^qkV~xr4fv{pLcRjLpX+d}ef?rp za%pGIh!6H?uz(7*#Sqly-`BQ^2-*dR2w43}31r(q=R1cc3Jw{CZUzan2VziJsm|N4Xm3cMI}34UrloH-j{6`-1^ zAn5y=hakxS6$J#VfywEYYxL_SLiArQGQ{|(7v&26jfk=VTl%@V28F(m9e7B>K7(Tg z6(OP6wmS*psi7bL{yNG70_O{X=cWS{@}Ca*-;Vfqb18d-n_Fbd2L`-Q;7g>|K}zYp z8j;}DOGg9C9BJ~wY~*U%OFC|9*1Q`6I@41Nnb4f4275BeZ4-2xNBej|Nu}txcOtZb ze~0h|OUB&S*$MH$HuA%(956Rsgdub1jX_FE1-aUoItLva&Ry#io8o+a1XRMJ0#=}d zZl%>z?*|+L9g$;~q08$^feKVsjkYwM=s52}`EGVSir(K#kwk@IfWGIV`+o6y$Gt7! z8}Kffx93THRh{P4z{!;+#sSe0T@*BjwGfbn9ZfjTj$1i;s5vos zSe#bFeLCS$?CeO^9UmSn@ui)-@p9?S1_-2QZ|!q^qhQYp0aL~ucEj?i>7ns5L1Z_5 z&^*b)YXQp(b3)Kb?{d#4WWye|#}=Q~1_wd{RZ^Gt*FYjqeZUqTI%-hk z(+GR_+!|MQ;!y?SSUG8v;wo2Lue8hig3Zr+JS6#g-*#o<9jDy8a6RZ1-07_uHXZ4A z4Ul#dq)(J;G3WKuD!ghKZ|MfAd|JBWW6tgFcC`ns0see)sMPLXb#^NTtt1T4QHqG# zK(WK4XSn$Ffm|+^*a#`fiI%Q?8l7A08ojd>k9j*`|~t|M_~h)tsC4%_@?Lg&Wu&0kr?LRQ=cCpQNt;S-JnR?&R_DyWSO4TfbYdI{%XeYj5zM`()@xmOn22 z{$X*JAt0gpGz6@9V;{OF5p+=O{AmcNJ`DjS^a|j2u&mCsCpXNqbdEu%h|kIC_NM(JMVdD3yFbC>GP3$HV12NFA)N z#qQ?4A$__gBYlDN0!cW}BXNawtkSdg>C8ts3*6ktL%`f5eW#mR7dKXv$`zp95jI)& zwbJCvVe3GCmv#v5Be9(MYr5ar-AHci@os8+{bJFWjaP?)nuSq{-ejEl2jo5V1N|$rYEBHOC{ixk9=OYAY$-Yo@#_XTY4)l2;Yy>*7bqSSkakd!MBZn-A z&BAP6)($qbk1gFsJ#s{+yXc&h5|X$z;G(kQsL4>N*P6kX^7*ZG$CiSD1pLq99aUd) ze!BP!&|ipbH*KHCBP3H%*Gp%OI~jSwkQ&@(vza#eMr*f}Pla0r%Lib3B!LfZX{)MH)3AJqVEw3KRR5l|WS{E63-! zG{vmrJHDh+M$%~I#F3=w)acE%)KwSQ|WUVn8)MgN7r< z7-4gvwU7o_j^^>aazpAJ9dRRNP#t_z@w2lZGU{Zz`8GKZ?W~b3bK>=4Bl6BexRQ7A zK1$b0c|7vii(_3r2?Yo1*<;-wj(21m46u@ev`x(!?}Kv(vgPY;RPQVopGr5ed?_Wm zjj<&ZAp6H|zgdk#>3znim6PUdKkhH>=e|l_k%AdKDP6ap(hmAhp>;Y9;l|a6~n`aDwZh~_DWr1|& zjqx*sl8+&t=MtFE2Qd4Oe*vEKQw1IvNWX%`zAEs)Fp$ht4qhq8?N1vN2cd`M5Mkns zMkYrO>XOn@WsYM^AQ_>9TVu{8x7f;ds+EA7+o)m8^k!B)LSB=PH!q8@GwDnM|Ja-% zL1>xg-S#DEMB_cd!G`XLu$`CW1cW0Mjt+U z1fa89?>yG^1ml8uhaDoT>MeH*?)FLI9uWJHjylAj zoNMk9n%w(ski<=%4FI`24Tk4WtIy5j@gCqzyrqk6VO_6ZwB1p4z zoEF?*K|k*53ZRoWbA($gee~2}DerupT&;x48OL7PPw0+*$-J6&R-Qwwx^|TY8>M8TsTsVl>Yje56 zdSlb%r?Z7Q#bT*>wTJBv`3exXg|?qIur|X5re{(+$)YaqnuHz&5j_}3mMFna@-iP| zaho3I{=CAwpC;1)Gb(<`!AumFUAo^~-VTUOK}2P+8W z`141O`^rH2G(i5IfwXqm|0?AecQ!`3qI&4W>A5W9D>lIGOg$K!{)5-&-$s_t^cmQ5 zyTmTvN9}a16kVo>>m!zINUW z$9kMeAy8FBHw(*AMWP%aqZD<^?;bhSvXZ!mMy50{o z?TcGn10IMtytZetquHB4?aoNpVy|sZGhL=?MSknz7t?!6Rq5gm8#=9V9`8qWO}E8;?_ z*lFdstsZBDcjowZ)6gXC_?*mQ9wTnyZ93rUbML8D`*y1E5P}q?vY??0UXY{mf?at9 zp++`8@X2eRaC|DO^ZQ~Vu*~(nmi^oI(9iSq=Kqp;`l~w*GvsgP=@n%75&iPRJpK9D z|LJ-9mrnVAJWp#u$b(nIJs!PX&BSpD5}u}wb|(&~+k7~93W&u{GSaKN%T<4e`&Z{B zaRJ=;snGWnWyMj}9;=&f4wRVOkD(-bw?17AP^mm5Tn~<1z`Y;S{%h|0Q8R!=iR+7dcPl*Mi4Sd24B;< zfCZpNk|W#n9=~!47}dQ4Q2khXw39i{LE{EkpcCv6Imunw%_1zq@DEu8+^sPjr@4;Fy`SxQPU(%@j)(+051 zsYiLa-G z+vONN7mSHB+i^0%mTgSfio^-ukc=3G9YH|;$ap1d>FOfe=vLh=Sht;_@~E93GFe!{ zT{yT9ZNeP*gJ3L>Ae+gFb~)}cB8a#$z(>;w(Q)Z(1Wv8RrfhB}~mm>f66E*k+B z^XB7pVM}B2flD6%-jvw0HAa?@fl=cg1iXUh07r$>#knNpLgOsHpLvCkK{I7_;iyxH z-@q_(vd0OZyZhQ4z_Wf?SNwhtH<`i>U}0FCi&*J5Z)i*}12+kvaI;)i5;m)D|# z|LBEgEP8K|$5A-Zkz3XMDNZ|y3uRu>T$uu?-1Ojjrk5l9S5U#fnWwqye!XqWcth;_ zVH$17y1B%F>=#DJLj0pA_dn0m)SLHYI~+uHQ$fX!`-iKb>!#m7EMt)PF&%4_zVlf2W1_!VP!r-y;xMH0(cNHFd~1F8k7LEmRL#y@Q16{@e$$7|yaf8msA zM)wQ>Vuqm34u!jE?_?r1is@Ttq3gHInU<7|fDC8q3Jou_vDby~RPlLRK>#gs3rUL! zC*(`5gbXvkP9=&z&$Yvm1}0u)P$~vEF2z-GfrCfqP5`bnV(czAJ>x_NHPg_?@%vND zA<#Y&my+d~8=)@-t+V)koWHNOtG0Syal@ zX+ze+v6M%4AjtBnO2YLj*N7B(B7+qYDe${fd_0HcZn0_ zb-S}4yYmZFff+H7vx;K&;>1MNwy)@Div!)w>o}`-glV?o5GH>+Puu^;zLrU|b z)^SvRvI##n*ZALhr~XO4!A|dLc>A*&{#V2ETfPB4sNeRmCL|b0E7g48!y@O>csW0b z51_y_!Qn~+105oE_zw#$wB=mbx2CTE22BxkMW4UiEBvp&>wHEYyqjYncn|&a7kGoB zh&%|jz%>-Q;J8|75wg|qAd>$shX1xH2Iy6usL+jrFoq9DH3irR2m36i16${P+ebP5 z&DZ(o)BApQz@_*ATKqqq-bbJVoE>oH|L3RoJC6tU{Ln-GBg~K?(@>v+`(?aHM0N$R z$qi@@7uDOpwyS#LWJu$^pWX5Z(itPQjYUGpm#!zeX}!|BO>3%*$xYQeIqI^Km`lqd<1whkv^)s2r6MsI-<)(g(Uam;ib9R(;_`& zcV#=jd@0OZA%P4)xvbktXsJYi_-4KCWM< zIj|x9d7fiG1pvQluz%t4SSScnFbxx!D3@A+*E@t-1ZUh5+VZDL*SiG_zA5*C16{)- zv8T3p@^L66EVvwQ8!8qiCu8>Z)rilqpG0mwJNOkqo+C0rb3EETpHQDq8pu%+@yra_ zEgzzS#aoAJya0r0aiXRqk4&FKSkPg`I-HwvzvmlkwUHrdM6&M|a=5+*C)I@O5{pj z?|K*stA4Ij25pN5iv$qC?@LspW%_nsARq9=k!2v8W>XWoc;ClIAlG}={Yvi}yV2Q( zHyrODcsv~Uo1BgTQ&M;Rr`^*>dlLTpr!kqM-edCcV@x*OGkd5-{iRQ|veeIDkBgP{ zm(RrqD;E7)0ex$YdDH$9bdgP=;le)TyKD}~4I#uCy*0;BoCmYz3k6_6tuUY3WN`7^ zOj!56yO(bwPxZxo^f5Lk6=?2$$bUaY&0q9o7s?DSZy=!|svWrTz&U;nSXdrITnCK5 z>^oif^Q)IC4hYci$(S|jk%!ttehgOq!O$j zLeGJ==qFV6%W3}@hLPW(vgfnH_It&Z+bP|bHolVlKVRkP zai1sYybzeQL>iqtCk`ub+rE@*4C$IFY1XrT@R!|Ok-M$m2S;i42_wh=d@up|nOvhs zRo~`mJRhxu9Q+2K^6r7tq;nTz=1M*n7idr3gpjz8>5*APWT+ob2dXo+DO9mf_xxf* zMubkuJtDZ{<7Dq)OAD=_h?l>Q!&y)Rvl4X3-;`gFm-6<#I3REQmyztW zym$|yb@OGr8c~0`apeLlLKGa{2&6WBm{wtk+$ii<27&@Bh#v%7$Oies=$w=<8Y+eR z{y2n&)I3P8`U&%#iocOhj~G-d)iy81*ADe-kUI_p-@<@-#Wv;xnS*2QKtZYOvi-yu z_Ymx0ydbzE$%+z$5b5}??q|pz^*XL2Xe*r`dHKr0Wvr)axlbFE1}uaF)u~oN%5wt+ zdT8&phQJ*J@apde9k52I z&+B182CGzAr@C-KvUr8T>ILb)kOnh4$;?*4w=?U<5nI+p!qz`y>Nb?wG`a_#?1@9OcM zUc1kcAKUGSzg>)fp8$UO`j4}L{_cG(KN8OV1JIJ8$CcYE>?i0O25!t%w8SZ1j#Ij} z%g{UmHv29WFC(n-y3Z9k2&v(FpyQk)zkxV-APrz5_k@1eHL>R4WX%cu`#Pn((UXu! zqQhe6^Ob0b2{pV!2YSFuTU1vJXmW7&@>#EL~d&~XO=B!u~9LO$8yjujR zP$|qHh*6dO_Z!TUc1kOEh#_C{3F)qu0P9i@@;*SI7y*Y*hIWg5|G*PL4hS&M6>E+b z3JkOq{;ewq-+&iJwK?d@CG#gG?k(j8f6U{@ZBrJXW__i|?=3&IwAm+rkzK%kI;a7Z zow-CHRB-{yLKA(NVj_(Daa8a=<};A?1OLhOp3e0?{QHe1;qvDX_R&v&aKS@%C*T|) z`(5FuPh(9sL$CIizZe4o#b;!(To2rdRCw}Ftb9Rl1r+d?2L77gZs34b2sg&SgMuSz z&Rh;bRw(?!3{;^aGc1CC-uIa#C~zOVsJFtA_HSkaAl%`j1+(dY=okLx*nwuAp0&yX zJTU$mNyGvey3VdIsje!gbB5E;;m(pO5{zsL$Q(V0iuRS-%K+H|lHHFw)+RBoVwdZF z2i))B*xja?>QreT!HlP7y#t9qWeveqf}fFhynzH)L~<%{Njt)ZFyZ%sT3JOP$xtrK z&@2x?f}yZbKv7`h%*jN`$E|+4)ZGfAyXd)Vqg%}h{rNs#1@W~+h?F}5+3FLiu_CXU z=IylEVHh@=hrqA!6cRPl`Dqyn*%;d#Voz+M8|)e~P3)r%B+=_CNo{&df_Qq`NY|#0 z#M%UCABjN3vJp}#LDvVZvqG{?rcnsg;P&PyaO?m!lls*m$~^f(>dS5xiy(%y#eJR^*Ff7gU={mwSxop)o5FIiQ; znLdH4{tg+1r3%RX({8T~Q@w*rHG>L?%=1UE0bw@ql@NX2a8J*5d@1v&f<4B0jprJ< zJcB@TL)4R`xsp}t=r+oZUc470GdhsvFJ9876}>`;;Qe6wWLsjJGZJyAMBf7(yieMz zkG-UMY7u^mf`?GJKtk}LVuO`922O$q3y)}aqagQEJMW-c8MO>#shFW^hx)qJH1KWi z{Lb`TOvM(|bO(w%f+d-(%6I!bc0jnT`uB~uwy%+r^TjaL9_(!Qg6Q@fq{6$2OS++F z-qA>k5t^@rMF3bbzA&a&lRUBQpT47XtvY%yWvtkEcha4(o%wW;pe$PEEresSV|cE@ z$657_+)ee3QmK$W*wiMJe@gQ2BogfZ`J7n3mT~}Q0AdN4N63GeNB(irP~KPe{9_Bj zGJ(GS$@i;pyI+GS3zJt&XX4%qCcWhZb-CR^rLp)dJgAZRJ((w+_=F2I?`$si*V)+cc}Z#cAC0mz11NFCpab$ zakITT{-c*3_-b*vp=aIAEIs*x;Vj4P)WW@h6zZ1w&K`SNqU5h71s_Z@zV+a0xetv& z6QNq$o~3J+_%MYtW77=}nlOl0b6Bzgv*y-Jbdd^36J%U<(jIpsA6#y;EQ_)LqiIM< zi|Z>asX?GCDynWH5#hYjjA*nS^r8ueTJB*#3%yeEty`*%QH|oZv0jxD*%wV>A(efz zXDnhxnoa(6+QAh!w4lH4#dK;Sh~TD<90a5s0A`f~B|rojTGD!WO}u&lUxb0NI}9=D z&J60~(N-p4_(`1a10d8jOjyB#Y2iN=Q+~0}>v#ma!JDG)a~Q)J?Y4BmqF#`_E^vPy z9l>Pqxiz@az-tFX!x@0vID$z$0SdZUyvO3K@bQ5uR4Z^FlW-^&)gy?*@i$0hZ?)5Orb#mubk zn7od?E2SUnvN!MzW^fmav2Vl=nBgJobpo*kU9-?s(1HD*ieSB5$PZ&j$e_E=+TsBi zI0mF-TzVNZUa;tU8+LEWd#BEmkB{pUJ%KS+&HeRqdtaZ3W*r_$^+)2#+q_Ft;>O2T z_Kd?`@Mb~SmB?y5eQ7`xD)0oBf9g!TQ! zGMC!(hl|^lhll(;y`al}>()Xj9@u1u2Xqd$g71_Bp=_DGv@%Ys8umW8a4wSCD7{^j zn~>!FaeuLCDK2d0qCSGo-%%&F`P+d!{26%&)by$l)DukWLPU8Cw86GYUU>uaW!0K!x z#hK2e$_}@6G|S2--mrpcr4$$9tea7#Rx*0cqoK~-u+Z#1K_qE`>TetV{ypIhp2f#Hy(4J0k2qm z0y4)&l-Phhy{rtooQV2mLpE;X9_2PL{9xnY+-2Jg-4#C|C@SL7@ds-RHZjI~*2wqB;X2Z2wW>Vc+$lA8ay)#y_bo?^(lzS;K-^L#)pN z2mk2&N%o<@Pj9{}5(?!4@xkwS%7a{eAA7%nUU#ad|GWZ96HEKs(PHWnGvtrC&&Q#30JBH{qW7pY)14 z@rwoYM&51cQmFU{cy$Cg4i>7uI50~-LR{7I0!O8pOVah)?+(bbmtGIBJ)O#?>&O!X zYI6)alz8Z>!Fm_6XtEp7}O)7VnDsSC=EC(t$4%Qd=V*+~d&51&%ZjE%^d? z(LjMcl-COCDc)iHt?uMOC&Pfc)5itM(X%1~R~yP1Y7Q-nP@y4M@C_)T6~hF^8mxH$ zqjG}Q1wX;AFOOLcu)jZW11}&2tRKx>sD5eiByW~x9>d}O@n|_{H^W5@3#gBD0>x1# z;}h&Ab8BO#K7@S%-SX|C9pIEcvhqHV*gqQI7kA-}XKs?Eg@sPw4v$K;CJEXFk?74+x~le1LHpXC8TVMLTwT77ZgS9@BUm-N z>{c^33TQf;2cWCiE^~1;>^B!;4`HOY?0hov6eVSRpb*>z<}jo0Kp<6O~Xj*Oy(Se zg&>KocVjsO4DS034`EekUy_#uQq862nP268eDNn;Z%5Q4wvZ_9kdO!6Utxo(R~iH} zoP^epE)bNf#LX>(VoH2Y*`1!{O{@aMorRbdB3jgXlMoP^2nEe;T|IpbeJwj_)9UD4 z6-Q`URbchpwM@A1mhDG(Y!{;`Qy%bAI=`l~q>W0=LV)6sY(?hu{ZlU%SV z*=&+aUwP^ghXR$fJyy@ywItVBz$oxaH!mK-fKo4h%*zxPhoyZ;x`cVtiN~-67iW9V zP)}ox58S|=d>O6Alsm=ss;x z?6z!^^#R_m>ln8NzR!~9k5(BZg8*0&*uxZXt3T82-vvX4r2yeG~gZ3+~M(>P!R?37a;DNw!r7{Ut{*&PprGUsz z{Q?LY2KoV@-YPG3rLoUX_lb*F8k9c&Ve$L?>jxVaF0c^6&*R681SSUylHg44^l}RR z;@wf(;>N=y$b9~>DS(d`1Vee{QU1fLgf@kLZwf|H*xDgJbX7Fi^M@_Tpsr+bxog~vq-hrQJzHhDDWmmnmT24oM-G;xLi+EYdV zD*8x%f_JQ!)n3PV|l8iQy@^y&>Q zHlfJ#B;=y|O!Bih*v9Q{$r02EVKRzEaIqaW^5k42?YJEdbgA_Z=yh=cDBkbI(aMzT zJjbB6Zp7;1<<=A7d5X6sgK}4@pJEp}^V3GGtxsTX)Mt(JW?!r^!sq{PjK?XZ}4J@1|OjYy+v!=$b(Nl&P2kuD^e$ z4OCFdctI`tV}=AJ*as>|fjQay+ySvHdtiaw1ItG1oqg~wTEEkTXf5YrhNC;KqgOAM}de=Gu3(IP{1f?q@L2Z?{1; z29PN|C|^FNQlRW!phOQSOjyf&M$l$cV_>ifg#;!zC3uy~yF#AXaJnf5d({Pwyb9rz z(eH5WAKGJcrTNckRZ$QStN)MQFWBRH@6-NT+ectW_#rj>??mxb_+cfw9dVVK!q|xr z{JL>Y_v3;*oK`bS+d2c2U$ZX^Jya|jk`{3VgY5cpreF!-ifblnyJaCVn~SCWE_uZ` zO&lVYFZSVhOu>;jSd5F1kbC=ZuDzGVX%LNfLcQPk1xuF41l}AMc#{wy=_DR$%{JJD zbs*ssqr-%-tq7o^ctdmbW(1nN0T%;Ol))~hYlE3@u9q*qcQ#HrT@U_++r>G+cOm|4 z_WUtgL;-cF* zZc%iNL2{N&{l>>MPf5`q<`WwSt*ckZI#9tQxzrj1(AN)I1S0;W));DfolLAnN(75UoGP6N zh2)F7NZwkyKp&4VQV?R3tT09#kNcIrCb^nE@hjO0cy?v7O~mh^gBH2X1I%<-Cu(@F zrITps>0_Hk!_=BdRQAhV@kM3t^+;G;#Hq}R>MEA{;G**Rz@p{ubfu4V8JrtO6-~bD z#wk7=u^60H^g%HP9`9|T8?ElV)+Df<&@F{KJLDi?7t=MbV+(OcalgHa&n_VpXjx*L z<(7J#9^r(wiO<$k)a1yWDI4A{oaC9-sNzCgFaH22n(lp{088_;We=_TKMeK%G<@^e zTh4X*fif_}2E54JV>w*6?2W6hUYuAi)RADEB}_6`4;!WcHo`SCahHWZLqVsQpI6I0#`Ko`jHa6gChIm+sJHFnDQ{* zo&3FGo8KebFeqC?QwHpX?;91t_;t$!SuTqC4ND6G18&Og6l!s>s~lr^N#%Q@=&U4A z$9ulBa^7{huN6c9)O`qkF_0s_1I}WF{=|gBM$h{47W|YZzoT&=L;yMe<&FJw%0TH{ zwETjaU}3);0a0+qp7B*=fQP|#k7>uQjjkYaMxC$6etqb610XfumWJ!VC64k;795s& zc%IA9!*uWAFkAmz_JA8KWc)7I8I>?uqnLNlrU?ZsBK=9LR z$hYx4iUK3NN)2l4MQ8RdWP}XcIv!%lOL3_asi*P7ApAsqQ5Bz>-{ zm^w=k;|m%gR(7Ev5`=mU#SFPD^}%CVFmoG^9LnF|*#i6a#x?UQurl0C6c zvHalo>%3Wmb6Q+g`MAs$qRNZ}`O8|_v0Wl=uG%fFj85n}UXId&_JK=I9)&%muMJcl z+*4M$F)6`B6%gA8y|#VfZfn)GC`l?ts`x4>#Vf-UV%$;lwhYNJ-)+QueYi2=(t2Cy zW3__$L|xMEC`jg6rc$~;^Q~-KC7bxTH1Pmf3SvJ~nO2M=Tke*Zw?Wa(-qu6xIkR$oHm?n1U8M9AzG zJ=d~^-R=yRk|2!wSx&%{KTM||!8=g6r?d65A}boFPZ`*o!WaY-@=ZUHL;S$Rv+vRm zMB@1d?Yu*HzI?CHpo@S44ENaxJ1bQ1ej?b?CqD#g$VY|&x2w*Kbg@X?ZKyVnN#f4c zB7d@{;jgUB|NPhwMd?=&{g+sRh3TY1IK9ZRzWDdJY;Rjwa#(xw7H6UUtngOK7Zr^jC24eNcsf5xrgOaty_gx zQcc?dZXD+gqZVHW-h8rsM>OF2t=l!D4Ig{j*e#|FWIPQ#ruU=fh;eF&G6-COH zSQpCEGoQy5hr~vZ3c2N4qWNw~Cyc#qogz*57E?>?VD#}Zh-tR>#t z$UiS9{)Kvj-@ognr~7xHp-JiTG1M-*fYj8j2@6h|#FjGqQ~hQFqO`0~pR?yjjx9vY z&D^&o?K=>F;eRdyU~-+HG4-xiLL|Y=MPB+*#r%C^^A?wbh4YPJ1@n!$pFoiI{w0>1 z-Jg^F51-A)&gd-^{02aTz24&;T~O>`$lJdio5;ro@NtGLTA;JPZ+rlP?$-_9zg`O= z|FjtTz7`T6RPuc-#JfM=hVN^kw@?MV*zW}q`~je8^k+H9Z`38l#zl+tk7e4EIGqLr zJv&*MnM?*_1Kw!N*agRGksULL-00w3dRsA#l(uL30O(Ih1=?>lP`Xk|FSFp!7j${{m^L0mr(74oFogKC94k8s|?ttr0C%ZV+jZ&Awgw~S< zARAr~&BKA)@Vxc{1En;Z=>x=`>bA>uD_Z((bCT~!E1;OS({5vDrTqe2m6_ZgZgL&o zGw+hpa=G502jz6x*)huyM5OJ^;1Lt^Gb=mj(!d!G;yldPryhw&7y+a%F~EmW9hOtU zK5wtSzV5@& zZ93hEkP0`GBlyJ05=+hA=y&=5X5|f#6y}nRNA4 zh)<~>X*w^eQYc`VMPj{d_tqnZ9wK>^4=#xHV#2aRcCK_EQv#1?XvcHMQ$uc|%zmnj zISgUsBakMl5JMHAuVgA z6I4IWJ}@58{b3}7w0LfI&ZEn?$32&UdeIP%N3{bwHFiCMJFOMc`^vGu{8LQ|3EX-d+A4i4N{pA90ErruFA|;-$yw{)&R1I^BuH)+ff(qbuX`mT2Xc{x z=W&NAPaCjX{mm-5v2I(^-yh{Fn+u|Bv8KzgO))fZ?T8e7EVIYqsq;CALG2d~#rz9@ z#a(WTV7Q`ph8ZyF4wBm(Nq?yr4w1NGO_4_hD?*i9=K~Px3&2@T&x_q((tO%m&+eoz zhGXE*_5pHP&{}&fa>1*Y;_q%-(8WcGpAI&8T9aru!FKdk9W4|m^R#Rs`qouPnjg;o z9IA&WC{x!1UF{aW^}{H7@0b3_`uVbWIqemxG_`ss zyb`Hhr^QVmEIeFqsTxnPSWXwY(qDGWciZfa3`(7z$OsdR%`E`t((!4ZZ|5zP%+WH- zw;>xmqturPV#|vmq{J^O7v7nqf+)npZ6*qtB?)2_uXZqa0D;t99iQU!1}pk`=Ou*- z1wB5z^>W==(Y7A{9u)x#3HILKv(GAp`PXROf2>eM?+OL_qe5|^6osvZgHZ_k`gd&? z4K@-5{7oPZx_r)+P&+GC;O{9D0*v%;QjrGE7HYr#8(A3U?>oQU2mAl#-5G5{h`N=Z z%J8LY3d;q+r$Y$#`+fu-@afBiSNo=Rf%-1kyKD+}pAc{Kk#}hPe%l0YwI3^-cUq&f z>t_U--sb1wCN@)CAkrQL-_YQNy6F7#K3M$}@7v2KDE%OCc0UUM#{9k{;NI>AsH-3! z58&V8IPlLsIOtXXebB}iP;xur4;;VT9}U`E)A_z2xM3D7rjyknxMZpiSDt@=GLfSV z_b}NnDNf#Q*;d`#J2t{i3S*Qx%e9Bxgq&f~7 zq!0>MiMqNEVIcNrXuOKJaH@tDg3wTA?g$_44%+2<&KiE%8?zm)8;s<|0l?(tTFqf{ zyKWB80%7jbECVhC_{vSYkydBwrOaFMF=Pd#!F|TiL>r9>LU|_&}vlj>yc9n?n{(11zJY+v`1h4G{{xiFN;27?(h~2TL$LIkQXiSrh}Sw=@$2Xe z_xpxx4`2v4cO9*o$n0i82sydf%TJ0E_1wpY(-W1hTp43%2;BkEOE!2#r3ZRpMLIr~poXm>wtCm! z(|GjAC^cWY?bl*^(E~LRrQ5R9M=OnU&w>uGfRXoJPA*L86YJ!2M>*Q+sEq>hwUYh^FnH50k*jtW2fN|8wbUajn9%dz-c~7;dRxQ zTgyi{1Qga4)&TIV*yj|v5-Q?A)95&m2Xhh7Eo4^CC)JFJBbDl)zF0d*V=iy_Tu4xz zvyJ04H?j^Phf{!NLUUSLUCoH@B|}wew_cEl*yJbj34J+v+HcU}`2ZbVdC@aolmE8W z{OfG}*N(z}f406zpw1tlzQ8|zpRL~|wg2_m8WMB%fJJ_HW53PTwzGa}Q@_mCpSS(5 z&({B~Sc7|gGAJgEc;7;Sw;O}76W6Y4a+zKKNCTrxa5R<%V#NN?zM!(bMq7MJ04(QI zPw0*9IPM7k<1tfuP|=T}YIT03in?dTNADgXGl)NQqTTd$zoYKQz%`$zhp=fO%Trm4 z9ea-SVE3>9R2D%FE_%R|@wbFjo-U#FYi$(cK1 z=BTT9z%8;FAyCLixxX5Uvr)VSnCY#gsY#ySr;$#>FR$3ueNHAf0D0!|vz*(`@|;pZktr9P+AUXx6^g;@~w5@I8!S z_xo)9MHm)<&5eDAwtmhkB7D-x5voieD-p3P`)d6Aw%zUsK;i;fx8fD##TZb4LSJBH z!Jo1(9lGUu*&h@kxi=$34xwwH#Q_9WwGW}LaBTBbA2(tit_BEOgZ3uWz;Jrq3Cwm~ zq&G#rHMDnh_aVP1!0sk!GQU`N=&pstx={=8CMjF9-&K}IDh=BdaXF^>0N`&h#qML- zc*I*4YQmQ*lA4>ajPAfU?Q%e?5F3&gdQv)tgn4)6`a)vbR2(Hx+Lo4FzcNshok)-N zh?!3ACj*Qt3+rKqwh-P4L5nSYW9Q*vs^BLXJ4Iy^JKFLnko|1_H7{3SiVoSHF7CN7 z$nEY0mxP-|+dZXaPrrJd3NfaLal1Zdq!L9AWZoK|Qe_0DmZvqo=vye5$MrSotOJ$4 zo@m0j0HUK<2FD}8j%7D^5d3;P6`GI=mb)-HiqAU~8D3{RTXS1u0|Hhz&Bp7so!)at zj>J*Sp|5ASz#scO82N30bIKBu99TpEN$PFln%kf!wi6DSo`7-(>FZ9J&ft8;4#$3* zMzwL>whpinFzQ}z3tAr?K{uOB;37Tca z4buFy7Y2?C^U*PKs9ur~F}S&~{!ye7ty*{YWjM|9e(AXmA7Oa{fp*thpR0O!w}Ds) zIVJbP1r0;^0*3S}+~R9YzfiN)ODn%Mjhg)JY)vtYYf|U%%clCD=4WvSaxFkrey`4- z{a(YHLftkR=!PLg?5E3vdoOb*$Og7Rtoi9qn5K*2sH|IFXvA{s`HR?CW~tP$b|r1> zR8KK>6Z2V_msr@^e%|(rAc}X^A8mUSe8}Lyw-sDjVLF?3pWH1_S$)4v;m$Mnpp0*u zUD!7BV0sEI!zm*LhVSn-9A=tC#Nl3_hY2W9h5C`UzyRmz?&l6{-g%2(5a#0(q6!mV+ z4!#a8S*_VgwVQ%oE}H!qA`7mXhrZY`7`a82B;i>fuScrbmpiK+h-lBAySzJ7r%B>1 z7nB6Unl;rkG>&Rn0r4PsCsoO*Yc=+A?Y#ML6^r8yI8gOk zViXSjIbW~#4WC9iOA2S1mTvK}E#^Y*j7WZzj&4)nlzVhNft(3%S{Y7tCqZh=@%K>{S;E(;Lh#>DX5EK&XF@j&_It!AH0Acp%1`Z72!vFTCaz7WJ#>W3c_ z`Dw@mcNHFhP*E8{_YV#;8;*Gum`Qb7T|3wCv2cqB+ml%F~l8O8ff?6TitKR zZ%x9#$liX>$5g=uujw~+x!Ue6^p3Sys{NuM;$uU;m5<4L+%k6``IynWljcE_A>;3K zX1btbr{0h8-YrfbD*rf(=?rOjV#kuN+4i z6Fd&c#T|b^sffs-y zh9i#*x_Tc8JRXi*fuGs+{lswO{QCglaS!DEz$E*;1AYMxougz3JfZ-1VHvdWaS8^t zqu78_C~5|K6QvpyMsW@W0`rekgflQGUZD_p=8r>%ul4(hQ;MD_wx;BX8YvNib0-?7 z7&x_$7gDGcbl)HE;rbR3|G?eBA0Q}@NHljJ=nNoHq|49GlZ?$Jq&2U=ocJ*3L9c3n z$G#N)lcgt4rUq96bTR33%|(I?9`m|ueJ1~_Y6j{Sd=|l=;shiR-eu@gIwW^3$1tk7&QRZBy?}9I)-&PU%^SO^fTPVx zz5+|oqafJFl*lVdAiaqQ_9XITI*Ls*G8`0;yy9-jgLkb>P+>AC@0dAa~j?ra0pRSFFscgD`8rS;^%RLkAMwbi27E63uOT9yZ}z{Y6`msqD{o-(!LSi@wx$&6utpsZ@u_d_sBH@ z7*xSn-l-J9(+7JYuhZs6gg1b`JohJX_2uSs0c**cz3}0#qctWry6YKp6w10)xSg>Z z1P))4OOVk+RvyKZ7vK%T-C~p7yWc<6%^$#l7e`MJ5#s{^q z`o8RCSb6{BD*AR2z4wWe^A}iN@@3&!+X$?bgF?f6XzV(gXI+DL#7k`pu ze=Lh9It4209<;9z|3>T&DkQy1B6^t!4`Yz$k zLV*6|6u47$>ROQ0v0DKXVqAxIir2uXBd+Hh6}wkYkDEAJ_dX#AZQ`$j7|A%uU|i&7 zuU_qmD0fTvc*aRCCSYT7W2Bh6*!MWuAEmnR>f6-t{GDIRO3vrTbixHLHTEZiao>E_#zN=p&hn7q&?K9rG2vxtS4F7hC(Vzh}eop7KhoyUH^%(f;u` z_aQ}9;K0P}R)zKwNh1A%^>N7D%ShH%62Ns+vJ=9%85p6J{9~obM@@3-JbV_n{-mLd zce|o5Lo`RF1$FOT#aKCu1HGoU4YFL^Ef}s%8r)pE=~FSezre)JqAN5$IHm+iO&pS5 zP}svW7w_%`)VB<<#ZnpU4D5OvXiGb)o8|#HNu+ov=_KDQz-XMutlG*rGCKPAC+vEzhm1M8u*n}Mi$|4vBrwp#Pzyqwz$Bml0kvtG7}u%d8|g*1!# z0hjm3?9iMwdYt(4>s;+^-n`jz!hZKxEKn4HfR^_a@l~A)s9s3O{9FtEp4k2$)f@h5 z(dn@9L`cPZr3Dl04R4B$8IthAlibasnq)G%08P>tLkOUzkGT=Y3_uoz8C;RaTjcf` zq}bngP}jR%Quz_HP_=;cQLo@CqqUm0e?k|pQL}i%p(1tdoZDvWw5hUTmmx8EhT$Zv zDnWIBR>ueQ49>%An)i?dC$YrF+0RFh7r~LCYSUKI_X=`yuY%o|E(sCNj_4!g}VLwEQ$ZfH{4bbUX9r!%w5I+>0&hE}qDT-uUEtUnYuWR0ykkhH@G$*R) zzPi4$OCZ%l-LH+vGy z&$VeieJ{cer}&T(&XZalE$P;r;_0Pr_piaUKhL4SZ+HDB0zdB{J5&2)ZiGIhhZE3@ zgHGbt01t@Ed^nFtd=yvW0M}Ke_+HjNr4Fv4-?BJjF!P-$V84G@LD%_f76+&~;Kg5F zs{r2Xd=Za*F~#%Tc)j~ecLPlixbOj)d(OUHQQ;w;{oPOR>X%Xv<)6?$J;=YU%T$pa zy=F6PS+?+U_p*)@JSTJli=1Q#*vqBoh;^cV+oYK}x${g1m$;qnD6`2C37Sj-v6AMW zN_r2eFEemDL=OjBvk|bO1lsb4N{LTrqZN67orUg*(n2g<%=iwJBH_-QN$|73(2?2q z62ZgP1-=XnyqLXKJ@I;X#AC|yK@nSFE=;Q}YBU<@5OL4Mac&5z9W7!hNrga*4Y%9wg}jY9=i_VG>dEjM#SSWX<%`EWP!xQ`19TjOimbz3-sUy#WOMKF4FF)4S4xhZ=w7~_R(QwMvd-L?80R0 zO;qb90rTu-;d03^P@#=S#z(jV*1#pnX9B;HaJ|5V3Q>G;KkNi7ySkQiDT5kuU69?2 zQfd}p+5(X?rAvw=Z*B$j?*|A=j1PWlKWu`G`ws4Rqr>_Ah0o#9&5MiTjBLEU516OX4%Oue zv&*kH;wVGLu^UK_%ghX_9vG>&NsJTwDH_tn@sX0fo$Zlrgb-AdJZTO7-ou(~7#`=# z1J^r$bmw!y$2)gc8A#!sZljHcSA*q~i1nrGu~hJzP*3R_njvQvm1ENr0i)U>5COVe zl_$oKva$zjU-wLT&-myvA)HdIJ{;>mW1oGQ3p<$gRi_EralesRx^sos6sN(hbN}*p zyb<(B3l0ZJ;(+<@PlXpu#ouI;)7y#RsH_j%EQ6oa1#n4SV>N`c*lom&BS;Y%I2=Lz zn{9ZLM~`H=IP@Mrrh8yWm;s8Oq+^irwS=c+5;jFJ%ME(SBv`kkE?SY&IpR|I^4dwp z*<-WpFmY@(?ewHzIBo#CvJe(%@D8WcqTAKRZ8|5;3Gf#g%5ayqM}e}UXwL&Mgttb) z-O9DQJO)y6ZD;pi(d5ZB+b!S!aq$Lj4wy1VoJBd+Yb+y@saU^7;STgw^IB-y4@>PQ(>d}M42 zu4=dLwlr5Y6|!|Hb&E@YaDJdHWUmUzrHgklg^ww8)a!dM^!Xi9)i!tVAe^##$tL7` zIS)Eeao4;Oh;ezRJ_2fOzE-u&!k$kMq^;1%=Yt+-* z6x9aO?Zp&rj^`K>?!=Tl9b9PvvYuR@9NasG<2Jce=s2~Ry{os@&9)x5l7^nWheZS1 zB(T|K21A|K7mvaaflbBV=tt|l9a6g0SGWzR({vyAD~`V-n@ICJL=P<&6$GSXaW9RF zJuTrzq|LDNeE}jsR*3hMR4S@-S7zy&Y93F0MKSb_carZ%-t8|*|L6bXzH=zLzuNgB z_uyaLdn}%PIj(*z_rxrG@RxXw?`di;RoyXAi9qRSDg>G%eg%>*tu@ZUmG z%2%TNA4225QNq3;W#G2``NF`w01y2y0Wv;22!LRu#=d5C%3odt7s&V5{`B*KmD(50>5m`J z?tl9E{L#k)oVQ<~`v2(j`J<0#_lcwVw?7|nu>O^Sb@#Ejo^ln`_GgZou4p}bj`Z|O zPuSBZ^m;o28vn-nnJ!rGWm4d{b427glz{#PJKJ+mv`Wx~?J8MCatB#o zje|FQV_Wt{rP$ipyJKj0L_D=7xMCZH);&?xl%6NE8xG9=Fa?LYm)BW4JW2!j5K?xc zp#SA!3$jfW-A4gFvLDDgKHxpJJ0r`0@M!5fh{x120x1tq{pl$HeL^mqX!*l?OwMse z-$jyK^RxWouRKlyp$&aSvM)|y*=!ItFeBo&>qm;cri^wb=VM0MX5fj}w$Sylq#v$T z?_<#BK87b;ksNP{dpfXzD}K1wmGIg)`_+whCkZGFRj(XmcD?`;UWvCo1hZ}0sCdv4 zy^~|nG>1oIM*O<%@k>Tq9il3WpFuL~&2=k*0OI-976QQTN0eE}E23@ft{1v^gi|#T z0@I7^GWN#kgz^@t9*evA>Tn`gZ*-RPE|P;H^@X*}bPf6DdKtaCxCU4DP2Tf;<66~z z2i{Pl@0`t-+;bPOhqt?f+@=tdM;X7dt^H^7y7)v{@C{HKJr!_1drfU zou#j{1d!ywH1^3|wYL=wb!)eR1H0H~t4@sWj@r|G*uOEfeD9O~%8)7;8$`cHi9ppJ zu7FfO!L_GkLlDBBEfS$m| ztaoog)Zlrdtq^blxKcWS4X6M=3B@?w&Wnb=Y3_|)_j-X=kbI!NZsHuk+UKt3&(lMv z2Ix333Ok^HQD_lhEG4&_V_}bre=m0#+b#!`;H>dQftcT=)!vBPQh<&KHQ!K0@$jCt>lU zQQuy~TFfOO+Ecs(H-~QH{JW}-tDAu1Jj=wFpWUNyKAlsU7D~VML1rD{#<4x;ltbhj zmSj?Oa4

`Q!aaqbz9aGys3A9#*{|?B(ewaHF$>&D9<&w1GBF9<(R3^oWKv*7G8* z{B2fay@-ALzz-wb$AO-||IEM^?AZgWKX-ThLMg3JSe(M1h(V$yvZGI+iQ7N(*JF<; zC5n*&&eB^2+|K$v#UPU+EM<20?0QDbxx=#uz&m)*$YVPeC_QvTV(J?`hGY~XB+V4= zcDb^OF||?w?zDqU#KxHnK$PRPa!0)32j-kIHZe35k@qo)RV{7Vn7BJJZe-GCAK`N{ zwr~PcGRD~VSmFNKkop%1qrVrW{*%s!|Nk{%^qXDvhlEk^te&y|UlK+?%Glo~+x=C- zD2P;_5r{yyIt{|Wx|I7md$2^|-MDMQy)IjWx102QO@>Oce5~Df7l;cAZ>S<$bMeaK zI};sapyEpbfEfnd?YNKN8t zS`G}hBjPubRpuk=E7B7?VScr30CPP}0%NbgRstpJQr`iq? zt=ve(+jxGCf%M&aX;()MD$@TrVHEW*AOnyZC>Kg!836zZ6P42R_v!aZk^r0emN2T@ z08g@qEHQzvFx*GvN~B1sKB=4FZ!E#I$g8iNn%ebr$3iUIHoi;)p!OytpLZPsOwbTR zIOzAv4|8N%3K_X=&32^2?Ovudc9tpUc26~6QT46j=|JW)vfX4nkGHZZyE0k!6}Vgm z0TQmfSq82IOp#vb;&c0`57M!Sl3*6n@*#oW1-LQ>xm`JC6a*-VerFiT7*^{&x759@eI z!MiQI=lrivV{Uv7|8o2HFs8{D+7N-^e=-IByPGGUd^AXpUwCnHz+2j_Tr!Ab`NNH@ z#h+8y-F+7zdUo)U6&=5YGK*gQb?f?}(F2j~C*dK0zqg-^`5@-~MR-VlJODsjh9U5F z{Bi60Yv3n8FFzRXK_(&qOJC2uuNfu)T>ZLOg$?ckLc}k6!|#Z<^Ov{!1JU5)_k*D7 z-<@QC5tZ!iU@jU&>yy!{$?7J(GvGHxRA=Nhwv-!kh*+n4u$yHp^p94ZJ<~2aDKdp0 z)LKVn?GVKv&nnXc-Aw&%PxX*SOxsr-;cz8jXqXV=M-chK38HveGvRkfeMkp6mA+$$zj4Z$hk&#e6GI^5c@!Kvd4QAtZcU`A4Gh)zmBU(hBO{?%_FkealpIO0 zU_3)Ei{?FwJYxmBOrOAjfMMllR++g+=C?D*OWWDdWT`jhW-`w1fjs8EpBd5LBG?pu zp{xC^%1lik$NoHYfKp&a*z5&x-0;JF7a0R=qCqMDfeCZ=hnDsEt=H7~b_A8}tl1E` zW&@Av2TS`ej`p82({|sGH1OwKlWcDEIF~Tu788x9#9HLfl?rPTEzjP;eJO|o&^bHHmpEbUE!1_Ity^Dg{wUbC1uv(^SJ zH@dGs(Zqe?M1`DfH)Tkqkp{1Wq%2wA7d!XvNhaG&Q7B?_x+;g>woEN3@5cPt=qRH1 z0A&v);bbs}{n&f>qZ4@jLeBm5$}qNr&XhN10Zy>tVMpVymKAR0%UvFxe)C=$A+`g- zKbnG$Z=yokQ$ZK!2q2z%cn3E`Ev62*9MZQco!aw(Mx3xSv}lP*aYr^s^qm=&1Gx=q zAK$E3d?)PjFu2Ll?oagXNUmsJJA-wSQaVlkN}OT?>@7^nubj;fG6nyaNdEC??(dF8 z;r7{$VZTsQuBlLDAhjPLcDpj>7_JohbG%2_`~8mxbdbyV#aI00@cA4xc8&eu4}Q95 z0R;W{y?{gzNJ3jaiNt_nwtqa`T*3R{@4(5n`*?^yOEVqREBbfA_LrkhUW`p94gL#f z4f}fh{rZ}I&VMUbsTH86{7Rr!!AtEVKBxqIa5O`9;3x7Ki2C(Uc$Odk&Mz^@013}` z&i2>B?VkiH`SjrI>fNr<`Gg&nRd~CSN}kC29Mjo4$(jfTu1 z1rK~h?(;1kMD(%CX$~ea)EUAAY!Kfb787}f(M$pQpni-(Ni;3T-NX0FI*wsJb#R~* z)uXX4kFCDlU*Ht4U#X0PsPG96h?jD&UXPd@f_;60QgHSb@(vOe>6KZqc*_Kan2P)J zDbVlJYO#KfyyW%8EWY7BLG;g+e)wO?8%fs!GFCcpxi!8b?k*Hzm)z)h~+m!&Yw9a*=Q{J6VChZh> zJlrUlkQ5HAfu3D(oIh7aegv%+(<;m>u^Pdd`l#(!k-oJWI20O)*9^Ei-;E@4eP7Xq zcb2p~%h5T?+B$isk>$KdY8D&L9Jf<7b=PbIw$bmL%|Di%FIm!moDcL{s3&;EeHN$7 zvnlq@orO#Qn`LrgZuMW&)xHZ!fAvZoE7~Um)@pkxATwzlQ46fcm*sp+a9(}A#Xi8D ztLJoi)uo~BFD0Z1n4tAHPq0xBP4!1Hzht853ojvJUU$*AV0EQI?nLVuR%Us)$B@j1x{7ev`h@}6_=y^w^3dG} zJ*rSn-0zjx0vX7+_^n&EC!(0O8JKA{s0(_lSM!2 zC$#ks00W*xi%*=({&vbopQv)-^=NV!Ivvu{C3rDPk%nxqQ(uCyZ-+nxby?SQg^&xq zv{f3FLvs0Z42eZHF1!PG( zN|k~ePa)Uj@g&&7!g>T0s>JyfSy|qOFogj}V6-ytQEH8vxA=jKfEsWdS{qOw9c>@F zW!6keB~ zl1TAi0ME}=ZnCfR&cxD~0Y#Z>`SLYFo-)Y-pPbW}+t56H*S%f)K2XpU7IiJh=o#tb zN$3~d3#VvCTA*i*nc_;PLeyY8;R>73po3}lW1#&N=1-3*=Gw{p#@p@Fx3eqrwQqcNd1))jSwC^JO{&aWBp|EN|I|G8T22r;Gz z?;|8t;w;4YsoNNJYcwaYdHTsy^+ja*U#`{V?`!pkcCT;B=Zf=7t^WSnf4Nr6|F~8I zWZhpmr;0r)N1gYyhgoPZlTz7?Lb1D-LiT#GfVTAB;u2l80JjIA!c9R=-%JJUs3Ti+ zlP^B$5nWg>JNTYdz{s??K!Avp8NKdOH(@OY&n1#!LX!|#ESeqE)=5OJR7f$@Tr_!oaiE;OoH?+%##}&MtLN0kL z1Kw17txS|JsB8&?nC4=iq%Prrn9Pg9DGprPLGLq`5H#FN4^NYUQYUB!>$kq@aED;68HjUqw^uN;s3D=haKMIIW5gv`C5Io|2y`&w(}ghW>Ri4#Qp}o1q#07Fyw#~V;+CcgTxyh$ z>t$(L{4L*~I}JC|!BAgv4EvjkukLstH3U6~Vc~W4Rm4s@O(5d~S`z1+ag57$;{go! zF$gI*0Td)ERRM@=V^iDS4Hy57-$8x?A=(t*h9jH~V>m#^FBc}IK0FpF|BGY0ru8v4TlQLJiZBP7;Uf{b`?K=^weUHfP^>ORD=W`HF?ta4L)3m}C z`-$dJRUED>`C#tl_5eL&hSvDOKxCNX;Pr51LkA+|9!_M_2TJQV3XB-u!xuQJ$Ewwj zZa!Phko=&D@reSM#q8n#sanmX$pmW#^ky!K&xVhL8CRhdqlN#~*8KZgtw^xk0%T6G zU*;+62dcCvPh2M+$B|0`a40~nlVkD%HV>dmEYk7efLgS> zoqJAYsNgU}fHF+{mn$7LC@cF(3Q$E_Ev*p6OnNG3#6!m0<61Wl^~QKo`-JPd`Myok zB869q8;U#K8x9}IkHc&6=wNq6<(13p`H5F>zDr&_gn&MHFf)23oEUO>9((sSM_wnJm(FE# z6@X{YAK&a#;a?jO6ee_Wt8{c{wrrju<_FF{FLy?m-(bw|VVCJh8j?_^Nfq00m9 z;@80R2GIt6S1#{91j-YVkFKktLg#dQOYU@(-azrbH;J3Po-j9E$G6_A##?ymOxHNt zPJgzHP}~6JGxDG}#V&(Vo?2Zcug&Hi)cN%ElNcl#Pj=$;Nk5v9^C)hCb7jnh8GJXq z$%xQjpUz84cl5JXn5#)0uc2B@-bbewMWBX+IpN`z$j`Ol_NVyi8UqsdALgkuZubVm3zwAFi@4^uckcXgLy(XbngA z0lkg8-UgT746ec3@i1Wzn@Le+k>;4Dj^JpFY|;TMLSn`^qXw_FVgI9h^-^Ru z!)u=r?;3^u> z4UN4;t9M9}nEZMTKOD<$*{KjH5+lN;HhOQW`o{?ItlkqQ8#vj}?knB93;_X#l9~hF z23$z8bUa*NI)sV<7;I=|;d(6A7E+JY?XnwDF5b(xjs?JcC|dS-IjMp#hS@W`je2`Z zrb&NSoWH3?v9z|k_aOy#30@pZxg`N(4pzF*vJ2t}h(UFOM?=&7;UI&_rRAarVX|T;4Pms}fq(D#xN9cGvAP#I zqUOHpg&4hG0&94JB$TVrw{(LbUgn`7YoBT!2&Zo-WB~#Pw?yDi)Ph>iEZQzlv5a;y zFk=;X>W+%AfNeS>Ro;DjVN31vF{8``#x8x!tES$$Gr-47wL9>0$?y$mflX;*gZy}s zP<>U}hTj!d^k8+tIS-r$0nrsNTpsS}05YK78Jm61`x6^dZ$S|+WNFjAa!n!&h#;4U zlxT?ePz`e8B+B=IA7#$yPK zg}?I&^nk?KPvi(7^&toMvzGZn4j;eZ#vy-dg=ncGgq+}U zb;u<7tOq|n6YiVOB%fhScE*2svHI=X{-^JH_g8QGpT6te&r*v&Ur_S*{hCkLiY4N@ zk?YOf5b>Gn9w3ov{Ax#@v?KT76IT&Vi)wWvgF_j52gT}vQ!)el{u-P%6BV!c5r73S za9WJBMM+~C$59Czcprk862R;h`;t9OuU#aZbc?d}$AFOQY~^bM%KP&Sk!|G2X~#>Z zB2J{8sq;bV&UwWFjvxjjV3?2`(a?;U-m*Av`Q{Wj^Um`D_)nDCbRYLF# zQLtHoC4~bMCv4_T2BY%VdrzS8qw`~TKymOro+j$a(AJx{HxqX-t=&z_*7_xWe6$eg zz#B7tdjlO1o=1g*(4aQApKJ%A1Zk9`M-65Ua#o1+!Knsv(5#+98*(WRv1+|^7W>#fULqGp5--QK*6^P^|y974b6^T8*pOrJ>z{XL}&My3>mQUsYYKcNO0Tcoqi z;r8tI^IuCX{`@@slg;ASgZ1yu)06W#Ph;Y{;NL#cLWmS(_S8JZQBjBwI}QxbsX)?z z5N`OF&=;z&|@n^*I4* z)$W+b-#*k&s?D{BaTO=$M#*vZea`?~Ukt_#&IR9k8-tg2&IuEQOq)(9YbOeV-yTW^ z#Jda}GSSWnYHic+?x`b;z}BDzY*X$5qSnjPtlUB^>sFlf8xJy{%u71ti)%@KP$X8!Fn(&t=kb^xIP_Ug>cw$uXvPgDI@7!h~$I zhRSKYv;pe$&*B8zzk~C*uGw2AQ1cBCGi6u13%!30qS#DU4+F0tuWLu^O2|d`pLBsx zf`iMPKU}pmzAfFL8(SzX&4Mp*F-@|31#724GlPT~=8g=80qY^ifmOE4dAYxq& z(US585ooEAZCyqnu=GkzpnKR$OkN=lPSR0QTvM&$Mmf;V8t_@4A=YoSUC3 z)qkja;pWe=`K^2Tn{)HKYU(e}&Cjt32+Sj-Q~vMI&Cjv9`(K=!n=aixP$B66~46xh|F>==G6V&w_wSA1~6SEeCnn)Flw-L%d6U$1zXt|?>e!N=d z{V-SPtjAA8M!ugV&{qMp<=@D;{rNBfZm!%}O|c~9+o&b|>_eglNW9q#dz()=z!ATG z@4$4>`HvN*T9{FsYC`1-Thb=<=wf z4|ZdbKKR3$5q)yVul8n@o|5fT16fwBM5t>HIs`JYZ;{^HgE z?!kZXj=$%%?0!t20HPk{q-n2RX6M>dh2N%8|OBqm*220lOja4D?XfO36$OCFD3r`0x@_pR|C{lbdvODt>UuqMbQ1w^>NKQxJ9Rv%Gf zU0yM_->m`$^e)^^TfCI*7q?1AgN1-~6;MbHzqCDFk&)}inebBamrOO8L6xXuU?r4? z+UDVvU5G2%)-;h{c=g_r+@>HVc+i!Ebw8x)-!fg@LdSnnb|u->^adO z8Vw2)O2&=h*c@6ffV7nBj7DVn{US5cHa;d~#^-kWJuYl5HX` zW}-IygxYC-*xWTdsp`<0slIviGd_!&W%dyF+oR^C0e;`UIRm2P%I$IP6Wj3iTBj-A z_jPHQGbg=Ko5v2PNUzn&-1A7)Eggi*E3Ye#-X6d@^h(LqF3;0=W$s-tClh_v+51S1 z>P`f^@mQwb6)AxVibs=JUEzVyt|8#AvQv|*pnL62mY)x9a%o<4VUT-+*7J)v9+#tZ z4hhM!Gbf2Q3$lLi$X}Iw|9L6%_FIAf+j5?KMi77l{X9=xF55v<`DeId-0-6hljhAD zfP4D85d>g%_@no8Ip^K#9DcL1e8S!xk2tu{cfvjC6GZl_!9cCJ=l46i{AK9^_jbs4 z|Ad@H1O=I;KR`ER@zBUZGF>6%EczPk4iNay$RVF0r~C6ne(`Dj{2CauzDyjxw1h_v zQr~LB)SV~z#=eal79jv*HcSktFOCLRe2hT(c-#T$rk}nTa?Y@$DZY#(zOj3EiTH&j za!djT7W+yEDga=7-}3L@>W6UgeZ=s)2}Ay6!te_LV>iVwqt{AD@WLP^#yB0cG(0rL zpzF4bzS?I5&s6qAh!9q!%k4mk6ZM9gNNf%8kYCypJngX4Eg?h5+?}HGStObMxF=d- zlxa3`+@7PAzOJ9n@o6`%Y$>V!`tGgfGsV9apT&1hw3Cf5{| zW2s=jQ{@*1F<~K-B?Nl(p2B-nBXfA4pXhZ%DSZJa_zCEOdcRKxu725Lpt#*>^KF6w z&A9PtqDKk6Nn-8nkV|Z(b2xdjeoGN4@ubcP#XX7YA$qMr7V;9;`|@I**nxa%doblM z{s}YIWY4SZ)UIX*V(`obPDi@!&d{IORa|WRab7>_O?J7tVDZY*YuLG|0hqM)F>^E| zNz_tDk&AV}a6SWe2`xJf=YSUmz4BrImR|Ml;VZAG=hd(j!Z5Rdo{P`sJ=i*eZt`1G zl=_v4<5zWk)BGDH@&tA32uV%^fdj1QiCr`pI+z!Ta8QXI3$@&uZG_&ld76aOv2kEX zDg}Tzz95t%gm%rTrfMw5=U# z`=H^_MPlK+RweS>k-^=nOMjAXBFtM6Z~#QQwx$(G7tAK=SgF2d8U4IF_vnD~pSvGi z1p)nh0$17}c+!C0^(PkK-{3M#p@Dbe?AXZA#`%_m!5O-);n~Q4KWnL=&$C_ezKbW^Rm8fDfhGL1taZPic6p$rL{s zrhLCgrU&Nf%ON=ll#*r#_Q7~YPE!W{26%PKZJ5#kI^xt?6MA`K`scwB>DoT+h!)}! z4Gv=4YiZdB#ldCpAb_lt&hHYrDE!n!*T>U+w<=Z%7*QZiv$!)vw8F&y6uqILe8*NF zv{5?j_OZwLV3CQW0ftjy1i%e#o1W2ll7f*40or+;OMEtfc-an8%4-g7qSKlQ zd?m6YN4}e;`*Q(FlhWHxk-u5)eXZ92Iu&Ib{^nBtx0U-#;sEvwI@5;vV811~iylYQ z+>8|~1iAWM<^Hlf5dX)OTigKZ1tS*NKSNkERCP04b3nB>?=XL-<+RJw%f9<3RT{#e zeiP05Ly`VW)4&$^r&T)Ak6&})fwOt}coO%$%G0+KBsQM*w2B<}TGMQ3v*#}B{ib+v;guRvIAdFF?hl1+&2@G2u`0tDi=hNJ?wXHTR>k^1QO`2 zIi{!D^)!|^zzt~;^_0Rbh)v=9i50lT2(EmFRLcEwJ}=p{cNVzg`BuL0@JkF)JdlkD z$Y>E7uL^(M_92()1$M9j)w2*+TOOdw(6?qF_M=H9ZGEkMT`M5g(;x1VpLd!NovDIy zJ;I%Dskz^s69jCxX)e-a0PXigtixy>j?XHG?qo(Z!^@-dvSDQ97pDj5(<6I{Se^;( zM2yGvcmPF|fE6(#rnW1%6u_&c zYJ>J5IY@Zbj-ULQ6<2(_H?@NfIpl3g5}1nI z>}}seRO-@4Q$+zI2*|Bn-fTn=D9c|lk&6I)#UDk_2U&m!=BTw!>Hf6oPJuvr+zn+B z41TJ6^67VdR^p>CEGjPV+qWf!IA~23w079x0q9RAC6`0Is28zVZV(s>qdif*8hb8y zsH_Z5WYw!djC$i2vvirZH9`0~pHKg8K?dE^m%HqcI)U$cEi3 zErPlqsXfS>InEJeI{j3TKPL0t*NS|6l`Tj4Q52R-B~NAVjz#O;OJG38c%(s4s8Z7v zgyr?)`Y^h8^Eltk7BH>T`Fy$TOD}N=2|hC}MBI9s&`Dp=;m*cfcl3?^*<9cL8kB4! z&2SsVfXsAL&8K`)-svh=f>LM_( z*FlAM>rAG7-1mI*zy{F9!j2EIT9(>Sv%~~a4Yh7i_%`B%mP^w|s z%Yily%Z(I&>Wl{()WA@=rh zRaquzZmLXuA?=)@w_OF}viBi>4c7CjM6eN}?tF2fBzXY~{dEIifzH5o3S*piB~26# zXCEs;-+izd{*j%h9>*RgE;Tryy?3So@wU*5b`I^tqjPxe;|-Lb2qiXz3V@f>4U4ht zaE$9*M3v`zzw-Nr*3vR1-oUt<)<+8e^<%b8d)m3IGUpf{C=lMfpX&@e1QPV@7%@`} zM5<{v7%b&m)a8bQ6Y8{Zjdldfuy>1D7hl5}{6fHO7$5?EFn6^~&`9rnU#qvP_WN~&&{%}afG~UWXH#r{SG_-DbokZzA(3MDg&=}K zR^Bg_8MwH0vO*RU2B9*!>kA-OEWk+Z008#aT(sjSoq`aCdvjRf#{1>o{uNUK7k3*w z7%p^hzq`0^@L+x||E^pcmJ1OsF2tT+q4@rIP5#`HcYxgd@tXW??hY4r_Y8UHpNspi z%13yO(kmS|A=<*Pe)}zczQY~x(*7ggB2YE}7XBal7C+zN?uSXhKgq{%XyI}J$BsXQ z;Jz_PVZ%V>mnd~_z~e2G92ZB6OR_Gl7OHh2S=;N03}Twe8<>?YGaGapSq+?1Fca%M z*bF2vlnOkL7`a=GA@%p2AWm(o0iRR`z257v)J8U-Hc7YQMw86xbT~Q)5&`GAJXqQO zfsPrdx=HoGbI|3aW3L(3SncyzP)B69PmMQfl+V2)*96GTZ{W*D)BZS#D^a4lS>5}( zA(pPm3hKfi1w14R-d%*71y|_DxrHQhel2MtL^^Q?cd-1aowIwgmrvTOc3hxe zr{^XMvQ2Wbq1am`I|J~AZ_Czp=F~oI zOis(Bgs?noA)=`${S#H43co+v30!*GIGrqj&KzF%u()U#3pf#+zbN{A6pxH>V-BNP zQja%80p)gi?R>5#+GkZS5B7fMwE*(H-Y@OGT)WVdPwzvPUB%9GdL##rNs*DfJ=5w- zgCGuvrJgN!7m^-1?Zi`x;USH!INyY*qZjRYro$)`o>5L%2ae1p+kO`4bJJ<wV0L+1+wGr@mw4-jP!6>Uaf=pKq>kSejxcA1d>gicS3H%OyhuX6-jr~nT6bh5%ddi`>j`f{9|_IpG^q> z;r5%v$uEQYFLQdXU!Yw&kM!Po6YJ_;Au$Yq8m&G(W&r?_&=zu2dl*#NI9yIQ>!^bZ zM1Vw8nYhSdbLYLZP)h(VMH>aVS782Bzg9-h1%EK7RjgeF7>}%c>NbeHBh{gf_ zx&m>sTwI4JRGKT6rQGnl{qwq z0*O7YM&_>AWFrJx-`DxOSl-3+b%uz6!Fk21X@@z1wen6u2N&Z{81GdwTq$z7RHLUP7MTib!4ugY)N6e{r~Enqw=sC!20M%( zhT}!tu_L~BV31&_U?z=dwLV%Ch^FH@1-$wJ$eIc?WY*;_AD|!McALK3m-mfk9Qhr( z%kYS#!>hoVj0zDcr&ed0m@{?2Gi=o^*u6q?4zneg#xV`xzV9=YUp^T!9i&pdc6Vi= zsf*0N;7dmH{^1g<1Yc{5Ui=>T0?>#Tuue>qOW$(I3YqIvwvzp-GfS3@Sgm21@`m)! zkgxZ|jsec>A$|BmOP~vZsWr7eF#SYG5kK}%+bw3~ofh65&^;Ut&lHYzm$Wp&i1^_zZ4%cDaK}CXwf|+S@$YmS+1`={BH^{(=$uQaL}h*z@!S@bb>rMj&@j_5P8pM-}kV z+dZfkf#)t?|15S-SO<0qa? zFzuSlZHK7~4Ev*TyJTRz#O<7r$`^prPZz+oC7W5^QQZpL;V_^_(vsXExiiL^J1P)G z%s6DtqQL?>JY;vG+TAdfNG7#2*SCY1%7mG-FDsm4y|rhe*SArTuD8aGGPuLDxBM1% zTxn?=a)zJ3poZ({9*L9>eW4$ef49n5Ok@CSi2#TJ&_h-*5?_BO{8MJH#bOO^XQ6Am#lc({8xe%RY&l{zA$; zsb;H;^)1DO;_c`FSjnyLFw8OX!~TL?x73a?YtskAWe)Gx4s9JXjFY|+PcAvQ5^tb| z{$lic8=X|~+7h7--bCq`SX<(ZZp!7}>jX(gbwA%*0t?&DNH&*5lA9K$$wWCW2859hyM|bEB=0}NEPnf3;GzQtTon2mbWKQK-ZTam1 z3;I))D>ye^xb1^2uedHl9MD-oDsNrG$$fbDkX{pyh%~in(sSf& zv-OPPa^&?uZ)%s5Mty!L!e zQIvbLkeSfyQa`M!Azx3@=2RGvDGeA@Q%AUrT;=x?BR8}yU-YM|!EbYUJuDjy9V*_} zJ-Wg-Z2~IZoS5+E@uWgV=3Jy<9nEC_X!v|i3O(CNkPqg@pd?vh4xJZO-N2{<@C1#R z5K#pRh{^O^57u+BIlwJpyYW)X^$ig4)Vm-HA=?#R>3`TH24W=G=9mxSrtu|<|PXVDpc6P3ufMIlW^E-N%-Dude zkf(UNk$#CM?8TK8VM2Q9l{MVTifVKs@ESAFkiHybrX$tD5P{2hI}N~w8;aeC!9sVu z-kU3g!~0t$*GCKw01s>KtAZDaY(`)!D2d5UD2ka4?|37qd-7_)g80?QrCgA|QV0Cm zb#M&xzZh`*M%Td+y=AL*)u>mo#CkFJ_~tIKTC8O`ukG+arysGbsX=8 z1Nk3z9K4Py|Hh2t-|RU4fA(d*Elj^~FahSn2)kR=N}J?>na0aL1tCy+THv^^g|MF-nm?pQ-~Ap73y+_ElO{aCPAxEPoPn|OF@aS0 z79Im*3TTHxLbNKDKB-vy|MoNE%eNKko5CJmeP0#lfP9QWR7Y{666{fe?9ck)b}7n0 zq_pz+cvgs}$7jBO6i^?9jRe{==LVDW$J*YKN`IZwNoSU*QMBzTzVD5^?1pN-9zcf@ zAHXB@qmtu;A^A06v?ZQIMyYuqTO^3=i_5!$O(V3Ng=|0KgyKgTjMHHMy`&?=Z=Vl2kDOP? z$m&CI;@r#uCn5-y_qsZ*`9MrJ535h77ts*<|M2y{|6%(Muleu)_fO+|MtoneL-X6~ z-{-3{!T95dd3&Zw<@i>CU}XB~^{@PoUS-&KukrtHz5f3f&+I3M$)zPQ+4oIAOS07Wfz3L5C{`|7|(_o@G53a99{N&FFV3 z+DT0qxn;ETINOajPs{0n^N-UlJ`(2hvN2z4@Bo_8FJK?$5Qf7aN&5UlP2vBmuu0P9 zySnnP=-1!ByZ(7wmb|xRkdpkRyl~Vx&*8BCDg5z6+X6DiKT#jx*wC!+(gNNwv5vhn z?!KpIf#59fant+PNZ!5aJ1XkK4o?zb zZ_`Zd1x zy~j7tNHI$r=!^36s+fhf^!#>Z`#6TI@ieFIEiRnMXDp|ybZ+P+6+@9bG&|RoN}umF zAY#tgn99Q;23(6!g*S}HV}HMpXNH>NbrUJ7h7lV;(e8wPImwsJ0A|i3-+42@A!90= zT6N`n90PXac>%rI%go$+kloW=dOl~Heoe20^(?Gx1?uM_ZCh+*f>}xUMLu5wcTtDn z=?pY_d4eB8D+d5|)NspHb~0iWIJS4>=oAshePuvwfuAyAFK#RI%-I)%T+D+nW?_B3 zow*z8PL>@)jNwZsuhp|WYWv-boxvJl+v5|dOXt!WBn>8Wi}(1FAwXYl9yV*IN0V7| z?bEw3jEd`v1R}ne!-PXTzvius`v4bxR#;D}q^q2V+1?{qGxmp#dOFz0Q)0tZ9|H3r zJ&=K%xZPf4*4^&>a*Kq5ofZF3Z!<&gSs^iGmsym&sDY4SiYEisG1>Y+(4!?sbVb`) z4ZaV$dl8pc%yV~TnE0e!0her*6vn)YGv9P4Z#jZ2d-pu<0K0hw@jED3MJI>cgqOm$ z2qc_}+|!BCuFuLNC?s2TQhQHr34F*QCStNR5rP47^>T3X)f*skAna)D(5zt!Fh(UX zWSw`};9SxiLSRAmFjzY*R*)=#FRo1S<3713_BPn|=^`f90E2+FbHSR@>K5iK!2BRb zARrjA=SdE}d9k|$`hqW+v;Q6@<>%a4!+zeLVp*jl0>KsW<$i&vV-Q%Xi|za!W#~)p zta7ds+PX+yMjUI3J3vN3LvNGAMoYsTMze^$kGpH!o{W7q5{7d;1s6y!?ewz|RMVNX zJ)K}RY}mo;mm4zNha50aj9r;&$?54afl;@~7e%2@#kE7^4h{mn*ahxQSV2%chWZ(3Gj1^Bz#O{-m8eA_ zCz)}n?6l6FxHjOJuP!%I8E_@&nA<&2_JktIG*~ zJ8vdP65eeh_{-!l1k9E>Vzf_#sU&O-y*>gyNdgIXP=V*rOvsK7k8-=oIARQwTs&D?N^8eI4^YGe&>i*4A`mXNo zzfi9F|I6xLPUkPaOVH8$y1E;HpZ!+hzXk-c?|jz`utp$ZDXO>cWKoK5k4;K(4;B9B zpo_f%K^K4Sy}&v1tIs^k7S()Ndnpp=#(wSsAm8;%8vyrXC;y7KfH;tU!+S!Ul1+Xq zOT=8Ca64153k0a_sJbLDp*@?!exx#zI17inZwP!key}qm~OiOYr$ZLbMNrd-;wcs8*2MJHG?@d;h64sYEUQI zE(x|k0rauLnl=#}<`cXzp9p$C>Fu@QZ*%a-bQN;U_if?HcPo*wYNqF$0s~F5%&3ZiC1{ z&}c6-c9VhICX-5nKo#z!T;{1*W^7eizTmkd1nEiv6F{y-!v_AzZWvMTUMM&xwCgJv zm3_5`WU)Fyjs(z>qcx99K9T~6)UZ+;O-^Uc*)`Ik3&r>`bW|tY{f>E+l8C(|B5SVU z9eY(*RZHPpd2E0d+yi+Lxq&&6dTowv>K!Pt1P?|)=lq;G07YYB^RNw`02zd|_Tx(d zDY9d(J&{xb;e+F;f*fh*1>=J+))VBzd-8rG8>scRheBr51iwjd*Uw4b&x5=l1{T-D zlR7hglUt`QoRqX+C<|0aY|?s zn%he+A*oD0P%xqHiYxzwIGLO}lQi&Lsh-au%#%ButrSzW2e*LAvp(d{2IY6+ZjG+= z=F#p(Jh^EueQP_j9+4Q$#r^&zM|ph@cu)^*(~-WjTRRRT%dsnKuLT^%Tgi>H);_Jl z17N<0yt<*@34CRsNmZ1rw~q8S=#V`mt$I@gu~Pn?O9p@S;^Rd*D=c;hi7oTI)?8#W z7BgL~S-4S#41^xVEWdL|=lLMx5I~B!s5bZQpdvSH9mDvsa@SGrZg~2# ze8RMAk)#Owq}AfcZW?R%2#cn%%Z+&qd6|0(>*EAr&yFW88_RskXpOBVog;hpaR_h? zP^k0p1a|87OyW+PjX_UFLtmG@8Us6?Yc6~3c!q6vd8A+^bJ&PBQ;b%4y|z*)R0jz% z^9aOEWflfz7Xme6B5?6AU_xHlc+Xb6hT0~mp9gHe;kTP>YZ-H(tO6?OT6#%A7z>F} z`W5$uyc^g%AIJ#1P{TbtV(9QP)An&$L$8HIp7fmCGz@jK+i<~eIqzXhdg7f#d2kU; zNJ4H;_RK;EC2}bvu-|lYU|9qHeMO@D+&|oj8I%)Amk#hv@_BJJeIiS(DR8>q5bytCA zuTJ}CrgnC~zdUl-Y{o0fVv*Bw+n7L?+=@X;A9)u1sHz=DnH~;ebO!N)ZHCz?2rl~w zJZon&$#3p-S@TgZOU=kFbW1;pUQ1{Q5b$IvY+Blk7f{+Z0)G_4nkGc|_P`|HsSuE^ zyX$LwK3pc5&%3?-WG*lNwl9{xU~(1Lw(&~DC3V6ZxXNEL>p5@AwT7w#iRt2TLu1dX z4_8A_)&)^h=WObQ?DQqTq)z_L?~jvlWh@AkwI*VBFgACy8>f-Mahck zW(MW7_PSSd!Fi^ZhW-?Z@s~;Jn<_N1e_z$ViA~?CkE5*zlX{)#_BB4laifm_+EsE* zZQ$d-$VdN**{1NZWPwXq4kttO1K%JTS;10AJ5?_Yg2Ark13T@ zGE|cYZ20_8`-2XI5hhc~JEJq!Q-?Q1e}sE@YNr?a21@HZKIT_CP>9t>H~pnJPReFJ zjne>8!3u0N!v65cknG+M+DYTCPAXTBSC~Wv)M+eZBuz(&y?wH=dg3vZ0$%B{bpWkF z?iwm;r!e+Gd*dAACOHTDVbe8`FtfHO%2!7mU=gR)-5%54wk%QfuNH_u(wHcVeD3Yt zX7cq7ICBEf5Xi{`ukRqL?0`}9tPGOKin^{H#4pwg@{n;1)0yp7*h7b41LMv&d>AI- z-YeJFgqP!Nne*x#>FP!or*^oYfQ5(Xa;`I_eTC0gFra`e`<9NIJJx#=Zx|)|0H^+| z_u_Uvx);)j=jV2E~# z;GPRYLR7z>vAeGf$tH+%%ZKU4sBXz>JU;uKY_@=v&t5B}E~4_L+MEx!ptdVOzPc2? z*jG_d^Sm!tB*6OEbRY=V_b+40t^XPmtQ7VR>_x6E0ZaWa%Wx~T4 zWFnb}i?znxywQchk(+n0Xe_M2UN^iAogV-NEdFZp{%7^Rju5CC|6!)_&_2Ij%m1-} z!`=KJYdBc@VQ2Rz9pd{M4$&T`U(|5*->l*7B!B8c;fl@wP{VB)I7UKMz+JfV0l$pE zIQ;wM$DitWj443w{jrXJd90v+cvkN^{>H!kqOv9rQ>c7 zzwuKpCE(j7ECwB+hk-pHVos*`X;}5}Z~`i}EThcw)HtxIN<)*H_j)sh+Wj~&m#e;K zbd26_;z6m*DCxze-9Snd!$Q`DcnLiTdB&q7$@(nwiSLf4D(pL;S)!RiibhvmJ;h1C!qHL+8g@&a0;>;V;E#x!XU0#XLhI9c%J}$tg7XTo0 zt`%@C?Fv8xu+e=Cjl&T#uKONDrd5=wzkW`kUuXnBY(l z*xhU5?0(mB#*m)Iwh%=WduuBC75wA=b60U*A0&#+;*ca;ooEjoq{OCP6NpgTYJYrG z>q0JG4o1fYbBWbKGN^Y1vDFu zFfVuH^7KT0jEJsSOgL?EDi*N&13$Acnd5?R=+0FvjTf{MbB33>ElpjUN}>UUUQgCO70o zhbhNwx!*+S!n&R00mMNw(&d5>g+ks)AUr_B6!+Jg)JKamSP7WumZOV-9Su?pwmV+# zSUg@d4$Kii)cQe{`K^{CfDi-7CS28jvz8M(F>8jr(T66A1O8b72Yxz$JW*DrpS>V| zMp1IN!%pueF5rl#jV0s;w!@enWMwWo($WRz#&-eHLB);_V3`>(d<8P#Z6fivigM31 zPbz18=Ut-81h^3a*$2DN-hg>Vh35=VIIOG-o*C~}EGJ93 zvbO#eHd2T%aNU`1f_tQR$K8GGoWhXEtH^DzI@RJdw(m>|imJlx5MyckbxZXTr z8!wAVJm=2+4EI+SvaM%UdOd*uyuW5(bn@M~l_605-hhz1+VAMCdVn`CSg0Z#^~!XF z(6on>Y=ve5+0VW5oIL}pxP6hum0Uq2?oo<8V}HYh^8nYCk!2+$EDAPy9PjEJb+mg1 zw(MCvhAG-(cXvjc^){bd#^M3CwIi(ZcEnn5oSi!*fHnQGtuFd{i$neal$IBR1frD= zv=@-PVGH>whDAE0T`(GMGKmd2rya4)4+V1q^Zn~&r`XM#dRm*?CNjbD@1FDUyxrbcM0wOHF36Y-42I~@$j)#xw841Zbu zImZT>Jf>EG`6Wif-J>5|MrJ<-p8kpi2i~r*LV-Oz5_!s7hPC_pfeLdkfU*x$cWN&| zbm32*2N9mvPDfGsC=g{7DkFREpupIrw0wZ+F{*vDgFU;Wkh>;3IQ{!`zt_qPlAPkq1M z-!9}o_5FGWhJgMH1zt7izoZCkjZhdqQ9kr1vyzjk7N}zoJaE4R3%)0ma3co?i=rR9 zs8gP~qZ`jNUh|p@5p>A*6*6f=uDA1zS7t^L>SofM&dn+P}HwTkkz}E?Aze3j5;o`g*@_kg8#_3otcEf3h zTe`sv66i2M1w6thmktc(<@PyqmAe{Wc6WD*WgCGZW4LG15ZnviJg$1ZfMfKuGBfA# z#W^|9b>DGdR%PnFq~Y5Lqq#tTrC0j6#cXU7UtcF0rX49(D9(IRwTemScIpZ5W)LmFd_7lBcnWn)I(yYN2~ zLx}hMEcqUxNEg)g{Z{)6GWQ4RtkK1Ja6nKRLJHIP2(kw|lJHwepX=^lt-=A(mEio?<)!#XuU@ZDEzq=_-@fj!`;u+wmtIGANF=un&D0 zrnFC2&M7f`x^4yYZ)`JPDy|6f7dJq3*3<@wQQp?WHUYf>#p^P-S+^!u7vZ+^?|4ob z4$X}5eRm4gb>3V;JH%Dvl!lO zHFx3T4ts*@>6$RyL2HHhNvoQ5CSEIHG}Kr&L3=-KnTT0w0zZlI9ldUlmjHyE-eW|i z5kcgC1!np<5Li=4Q zltH}<3-YzH{3i+v^0l)3>%zi;3heg^3-YzHd?_rT=Hfm^(og}qf48t8(z~+Q%KSw( z2C8If)>sID0^o-FAsbVm(0o1yh2{O<rf>aY-LB3jT!fU!jH*#z)QPVEn?+?;HgX zwPn-!Gt>dHtVkq1t{%y|= z@;Wqh0|CC@6gI{K0zWB8f~WEKX0kTM!R% zh;05y)T@5LoE!Lt!ZUbea<>wRW5L`YzaF7__tsv62=gJh!4IzXOb_&;H*E;kYda2n zdnT8M(i|FHIpQ0afm!eoLeyO?{#;Q) zdJa6(-_cYf{3R*&^D`;ZQhHP_`_SkPfU6Z}pU*#Os#yw;DMip3Md0_i<}e0%il3Dh z@WK14yuZ%fbf=zqFf1@NU!3eY(2_6`!mqkqhKIez(D;(fI2zB!3F0rZc5n^ncq?)P&inDD%zq?5vYls+JTWN^d7?~kbFGNXn* z6{6lkmxrG99qab5yTI?FN>~VPV+~-Ryv~i7h@!JdVk<-XPD37l^l~exg$eqJHE*4CcB=@?E~&z@lyB*K=i)H{=1mu_U~%A-MzisL4QgvjjPz%h%9z z!Fb5GCt5JEJ_7!gO9f>%32b&!)p9_WxlK!TQ@U%{4xxOKk<7IZu_8n;HyIqI?JoAn z3rCIGH#ETQ2AEjTTkV*~d&-z{L#j%$m1`4Hz-txk#J*5-2QoXLi7T}ga!)Q|U=RaX zPi{jW-ETz80qFUWT&YcSWi}_?sd{aRjh=zigHB}PYB&&Z ziwqrTXBW5y)G?VgB#K^N_aSq#(PN_`d+j+4s)`F&h&!{NZ0>yANjHd`A+~#;FTO^& z;>rZ1-`l71-c&e&rQD3RfK9t2WfhE^QHQs^xuv@nTJ!7ivi^$(nEJC>M!o{aphzKfO}eySUdI%{}mui>GVa zn8S6<>FrC*mvx^`!hT(`T{)6=j-#+X$$@&47Tdv|uR4*F9g@a9B`rlQ7EosWnwy&7 zssi{vI9)Ye4<#U9j5ys9ST=0!>jpw#l1rhjgIzPrgNiz9e4*jokcX`uA_QZ1^{|S% z73~&L=V3wVXo-K(4tlf6fX+-G2|(OHXn59A+bs~8ed=MiC|?JstzLr}Y2OGnNi%pa zAl&|KV&(XO*{Heeud)}|pg1PZ+itn;#ca*c=(IxCe00h^<7K@To3~QI1UGuntTR`h zp0>_aeJ0&Jgl3Tf z>M}CKqgdYczUV3`FQ-jFQ7y&Hf`eB9PZ62i;5Qxf>ba9JKoag4BrVy)2_s8mf4SJl z`sl{{>o%brdlLQK<`wLl=!HV~lXj@~V4r8?7(cgr|7sRqW0e;wiBWOg`2AtmkH4zw z*8lx~8ZunOP3sS?O3UHdHhBrlsOOO1@-qBG%-1>{{xHM;{=cel`S1UV|NFoC|NgH( z#9tb&zQ1_<_22)gU*OJf=kc`p>K73yiSV|$o@IaQ839VccSNwC8IX2Q_ZBOX}vRSanT7eKW_{& z%R#;y!2V6_E86A!h=k-JDdq$-KQxTpTj-)$Qrnqc!=T{He;X(5l)%*lzFi#B;N`b3 z2R>*CO`5*+Zh9#o_LciG)|;mNPd^AA{_GQGg|DctU|06p+#$f2fBNwCLkh&f z^4>OwOL$5}nmccwSEi;R_IY7cGlSUz02y%?$l9B8LR$A6B9yNtd77$CvRQ<~bXxbe zdPQI+jzwl2z@ZfC}_5DRGrP{!Ai{uvYZ zL*aEErHF{2`eB8t9H?10!18jr5ZQG7J@CiR+>f8+A~2~u@A;(ZJ(ImGn$$mD>A^M2 z11(%Y&akj53h|6=-vm@rp4UDPc0yKhpldjF*A}6#`-O?)OLs>r$2+)nmF~tKg4phG z%i0m-T|Z(QlXzShI+pz`IMGTc;I7jmHE zwl2vDp+OI36&oXgkch?*m0cRnOT(+&9PiJ){gBMjlHJbTbOTM;Bd+Q%s-Ep%x()uP z)#UKQh4QZ@;}?(ob2WKyN~Uir2m!u1OOP(|&(rNU7x!1E3kUE&*vUS?EH-($vUS?J@U}aye<@&pKc+IXcef#ek6k}!(e(^E zj_elE8Y7b%kkCAy3jJb9onKz~!3AputF6#evXYovjuA|Pb*b|tDWQv&?CTCkIgUjj z3Us%jRSq)}5n4SnOn zBd_RV-18BvU3P+A+y_0s4;UpLS3mbm??9Z0D=`Gw3phR(li$OR?ocR4mBTu35zf{i z(uYUo%(?l>)BuAW!Xi4zhLw{vYC~^ha}LBN8L#cK?krKL)nS@XKu=Oqj@@U>MVWtC zg#57FuoB0JErjgW)?`HacywQ=PA$japn#9aT&V#e|fV^old^6DEvTg>nyy4pJ+XtV7jMJ{}*8>*#MO%Th$SCfoSz z95DQG$BOy|=_B!-$d&;^v;(BMQCM<262-F$oC-vkaE(%A;Lz?LL($xG7;p5#K#jh+ z+|ws<_m_W2S76?^kfyEk{*5^KSguolTPXgi2Jq#(2JE`8Hwv2i+nWUBb^h2X3(zTB z3jMhy0PL`ge8D7-poMzGE9WV+{dt?1745?up1*r?Wv^Ko9Gc23T2%CPWX^w?Qbsii zNkvMA!1nu_67J7q7`EjWoVZpz1N-+4H-S_5hsXZnJ~t|9M*d_vw!n1!Y?;4&rkP(U z&=bFNA9{=Zh;)Xqa#mS2t0Z9k477W65+@TZdwzK_4_ zK36R;x3)cU-Geh?HdAK5gy1fMakoWw!$}jfAZjp%KlHfTp@2qvvWFXhV4Kz;%Cc~Y zwHepZ2;B3ny5y;UcxWvGcrp2;!B&mg!Ew03@HnL!L263Bn9R0Gc2ZIE*T$ii?Y2rr zve|&0^R9#E&6ejfIfX{Pe@xKfHQ@tUPswZG34S{sY5RG`l=jvi&8pV6s?4_+_!&Q= z_)$E-8_q*7^c>QbCfaEXM6!&wI3zh}mqnH|(??O{L~nb*?2fA3f#H1D^d*G2T&U}_ zxF@|_Mv!QCb~`Z$N~Y^%Oq z@fR~@B1$H328O2hI#;mhhbe|9lqwr|jCw;Xt9w1ZFvIQeRQ$Z%glbSsL}lf%N~_Gfb+&5TZYy zr+GIZJglopCXPHlo_D-Ab~L<9i{o=FCktIC)@N{(NN>Ix+%zjj}EyOrhRZ z846PMQomZh42HLB@Pv>;ic~}M#$rdzE{zB1i4Hr3BzLEsVtfj zhGV~W``1Nj6Jz`nu8&p%PlGkhWPf0L4E_`I`Cd%E`AOq2X(t11BHiM z-Wd8+(_y#v?m>`AkOGkyV8^50U!IXW@dw{5R3lHdhZ~NQjFv2W1q&Z?EpdC;lQR4~ z$ul}aDv+hYU2=usfKngCWCe>3HV0;gp0Mhon2xuri1PB>pBIaXX~mt=C%}A-mZva{&(Yth|L@$Qmm<#J2?jk=YB(_tSR4+O1tNjkcoAj6rs zZ|q}u-q6w+S#Z*HCv~}3j05*)6;ezbac`HnY`p6J0L%YjKtZfRx6n#wV9B1EQ0*ZN z2o*NI`7B}$RHCmOcYBjWq}y%VRhxSx`uhMT(twD#Q>+$o`+KptTb(k2Y>izSmOE|M zXa$Cl-#iwIsZwe@zzCW)PEIt0)1GcJgq^@J%z!!3e}T|}Ow3-Ts@>jsG%Kx4Ahl@khW()4ohQw_Ut1YrPv!b6P5*nDYxyxIW6P>#D;ov^Mg!d^R zss+Jkyp2=4fX#2Qp`Y667?n?P9z#lA7y3mD6o020Y|Ew7W?=P^Aa7R@ z<$1Lz$I9LK0l&W7OmAWdQecZ`0~6BgJvjF3C}ob(Z->zGwuz1jr_+8WV&{q6OV}^k z+%GSWnq*qsAFgDka=QHS$vXQi`vUz3^Y@kiyNlsJH397KUPC_cuT6lSJh{wntm*D2 zLch%l;T18{-%9A{;rqtmZE0g+N~nK1AKqb!qJvhDVKP)8z{){C`?Vm4_U1^he=AsY;6RB?0ao(=;WX>8O>7JA1_hE(6@A z-uX=+IH<1h8@6H6LbP*$vh#Jd|NeJ!iE*d=PM`qKgZ%pEzx{<0m-Ha!JAYXCJ`HmT z^LFw5&YLjohi-~Fec*{rWnsZf$|to*wO57+ zV9^;ttgqmPUmmc>i#SC`0yei_wcr>xSu2Zy}$Q*!SIfwVYrztwJ+$m$ByqW zRK5E5qrA#$^vv$DlY6(207?64v)`sb)7s&2kO#Eh7AePoh$Kvvx6TE~NFruNzs%ckSeKhBXk23mkHxE?R5ZKcfMXM1GIj#Ki z{QbCY-SRjb^0xVd8i#xP%!lQV_V&k@oV(vtF#qF8e0w89>TkR~JzTsnZ}a2^2@Z6m z%|Hd@jlVyMe?W+QoW#EyTMLBz=hv&)`ELXx|2nodr$x|BL3}j&2?l#d*RnRDTKD&1 zi+;euzI*JA5JCP`DjpoF@-IU128H=tPeCatzh?5ltV;b_IKI#1`60Si;^O6Z4%Ba( z4_HWZEhAH=4M;jaHsGYckJE`Mz}x%v|p_?JF++Wk!hK@$^i1R za-r8c#@JCLJ0kA(Du)4wX->pP>2-It$+TRd%exm3i1#!pa;JzadX6DZ!+PPa8Hwymq8&Cbu8N?zJBR0{6fa(YU3ORF^u8C~Ci+k$awb%> zDvbh$4;bE)2EM}%M7{^R8gD5ffKG-DEdyJrwtc-PN{LL)!UPFd!yW=dH%*A&YMB$Z zBEUWP8*yxD5ZnB{x#sH#>bH%uo0@qXaF5>^zRf_u5=-C_aZSo69{=L- z*GG6?viRtew9<#p#@mGec8{hfbtec?*um4%cZRZAS%Tj|_{?jSO5?_@e6~ZZ3{W61 z2-!AsHWH}8&<3;Mfw1IGCbn(Q?-&^KDe^f8j8W|3`^IgPLIioSt8oRZ4=l)ti3X@m zyKF=@eSX`98zaykghqQ+HOKbu)?^pfA~coZq>QC_p7Z7D5-U7-kSPA7T5a*1it>5r zG?_b}FE19WEpvk$b@C!;qIqVQqi3feM3Gfg?}B1fVTprHgtXZ&{R{wp5l{E?Ax(`Y zHhzuf1#R4yL-H$`_irXu|8y`i0Pp}1@3+mj9&!&qmgwh60?f=SN)H!CFWH}kxbzQ+ zpzrP!aCpC$<^5;w7A_@C%9Dct@1bv@<5F7FviJ-IckqG)Vmiw(6 z)gh?t-8?Gau||=#K%tlLc^T?9#Yn6Vpk3mIYa^$W9oz`-u?*IBTqW3N0TD@N9~~sE z@3wHI+aH$+g70|!$|YEI&241ZzfLklK!J$4XpG=upTtIzU+RO60|UXaEG#;fR$5FWi=@Z7p})dZ7p#j*sTJ*W$hdV_DM= z)|nTC&GV^C(=ER3LRWdUso)<$Hvs;wEqXh4+75KFUw}R0> z=!yiUQmO6b&sR97vVSm;j{~@8hO)R104ai)0mVzkhkg{UbNJ8ikAHe|u$fKRi%jHmkq0^vo14C~Ikk$24vX(T zUdda8;XQH?8<^4V(L?zKG4%cs?UK91E2C}_^IMtr?k2!Lr2vFS4Rt#>+u$O$P!eKr z;Bxb|W3b=~_EuuA`l_t-$MsD8=`n@>T&sOqmw^PXqLuHiRWeJHm$>G;k7vMDkOB)= z*P1-MjnyfLEkJF(gJ)}9O5jYxcz_4J`1}3_YFE;7OI|P?DYHxR3Mv=4IZD5^)%vp3 zg5l?0M>_7M>K9M*)6`v_<{ij;c@KwWy7Q@o0BFY!Z}0t7+o_&G=(B=VMX}%N9oS() zG$iWdI9R)@sbhB)SUP9wG;OUA1wedRJmWqRx1joB#~iz5my&teT_Q{ybUIz=V7ewd z8X~VFZQ5m2+OdW>?w`+X*4r;DkHdhE~#EN z8;NzFhuw`MqnxQ)T1G98*{?&gXhdy22!<1xXe__?t>w6s zBBW-t)WS|gQRT0%!^YnsUH(Y+{$T~Ck9=3j!o|C+R|jq;3M>`x$sRb#%is0Tu+)OT zjH3qcN>Jn+xHBjPLZwUhRNI$3NkA=~P?ay}bA-6k(|un!p5S!Qe9#WOW-i`%WbyUf^UnOBlP~c4Y_uIWr z@7FX$Jwd>)!)r4v1>a`rIK)r6FkADuzYSBtl#BT|Ae*hKO7jSqC^Ngf+y}F6Z7&tC zcZe+zV(`umekP9UI{d~~YpnnHKsTicfR~2}SQl_2{_&S1@w@5PKRQBr^nE-Yza5Xd zltemQbSw5$F6wsayt}M|JMX7~GWy{V&3;Y^dmoKbL1mv8rq&W1IApvBh}=$@BREAU zz|>zLfdl41;^XI$cwXVy`m$vbKQ~Yq0!w}NtGMlNeId|xe2ox*J5Tg+=Mf!93ix!v zyiF(;xLXpOTo6#oy)AMJe1Ok_s}p*bcQP0bP)FEh*|>Yp;MGr|>f1B`yL*jQ_9|Sk zLDoTiKf!|*Nk@Pz{pY0at^^L8@Nkx*(L&pStG2K_>mxjQ1hA?DVKaRxxCUy**U4V` z?U}+|68WY3z=RB;PXiCk$A*t@M*_;ZPs)|?HoR(}f!Ia6^YdLffF<=lprwB$JAhCn z>izp~|0Q%k47u?NVn4VPE11dsKDvPrZ>6Gzu{}>B$L$aY#Cl%&`Pl_xJ=z!0Gr|J% zF&xLBf~@6{GRc(FnZ7|c`9Zn#8^-7w^R1{ysd9SU#K-0kozqPVcSpv%J6+c#(_={` zjNS|YQhvHqq`ITb(-0hHY*v0-Z0H*iaa)!kT+?Mex<&m>*n$DR?@*F80s@7wh$k#; zRLC(HMBXQ#jSo17TR9YGsTMAUzLo9S%oj*1*JJ|_Q~Qa3?Zu>N&WGK$&SYb>#0_!gYkS*1wcCNLQ{tQzM;TU3v)|#TWzgoOypuEFtBAm_@4T}yf%7IG zb-2;^DNDC2R=3y=MFj02Ek5cQpqx`0n}Hnn$GN{hsWHU-(%GuB6H2gq!PsMJ<>_?d zDCNbW-h$$JKOc1(lF-S=^$O`i0Yct7L8u`-^0;xqD;d8a;?No0b?-SqlM@U&nUgTp z9M;zMTS;@Zz&S<|4S9>|G7qqx_a59>K{U|d(2%TFW)S_94b}hC+qE<&j$PrdEVa-6 zPFL4}$FwmRjNLPyL`VW;^s*2y*HlrG5J;dGdhkm1GK;KJ+2t2xoga|=f^71G@?Bxv z?oK6D*@SWx)_t7!JxEvQo|EoY*5Q#?CKFrpdc*CF*}C29($YB^+tw2|k9V!+>K41S zS-mxyAjH6zI8hzv&G+|6b(@dX`Qqk)!?#b!7%8KYaT^(tuQQHJYR0U9*z}`)Tv0nw|F?Pr-rz_Cl@rv6H|0ksH*b(NhzzftFh1w!hVq;br>} zTpN*E{ZC;Y-|R0cxCi91Y}#zE>+@-AeQVv}u4DW-PM^5xB9r$z&hbt&ZCFpAI@P`J z%J$RXnMdLkg!ML-IH=B#8P;z!BMr$hn`SN66?>`c8ILjcPudP74EgxWT1_x4MzdFR(`Jm^f6 z#o-*S9JonX67SHRgBGUa?@5Oxg6gO zd^MK(NEQ`o>(>21o4b1Z`tZ#1qqr9)t+-cf_b0+YT1D$%XsHesUyf)~!;~AD%*1P> zI$j;Sy|FRPjNUq4?Qb_7TdH5y+%9$oj-hfhy&d$d>%Fcj)_QX1EV4-0G{uqVj9f>p zt}Hfs40lFoF}oXG!V6#Lau8s{$F(-X)3dnX!drMdq}?)<x z;W|Zi-yA_E%_9!qa$)+6ih^;(JXU*azGVnTf8?&K-b7&Sjm(Yl+87m8)%)nk)h_Ry z_9frwM^?+cwM2!V;|$Om8~CB0H9D&rUU4di8>bU6hd4A2_AsbEp`5B<=2;e4E2;6k zO?ursH(X6vsV^xm^3*S$aXQ?5>P-&&zWt04Do%KGYt48pO{HUog*Rcmv^5Gk`?0^& zI<3&|DvPStR2x;H-plLvQRXgqC5h{YF6(!8&Aw~9i#xq#F1f>TzgLPERgCzeCJa2u_0L$dWulDQ7yB#~^LB&D0d*a8OV3JHk-b=Hz zTtaU3S?Xk^i!;~1eQ7C|=3W}(0K=?+mX<1{fI=nn0Yzw{KeS%ee4PEt;D3s)~=E97I1!Ul5(Tj}Qo=noI1c3p3Lfp+R8q*{fph?O|znw0H4$bE=&>k#~t zd62G?Tzm!dgemyHVOswWm|#$6wh|}Hlkh7Ueugm=5;>_+@`6G^S>go{xHnrmS-EuT zoB6a8)^U;-WF&?*L6 z#{fxKA&*fq_eeWhEnF}y!geNl-E~elsO(SH#1w1m3VC+tqo!((BJRd8% zOg+~7!OM*I7X^~JWBQDDlFzw|U@5{KW+ZX2qP@bmRNxnFKc7oiI?)g*Z|M zl*5}<3OXw!h>*iapR> z@am8=b;TGeAIOH<_(?=5ZP~d|P-yx*mKyH@D+MT>Ii+kKL1YES74i(yIh686MwB&46woFroHXP`rAykFhs+-Yw`HOMpoU5)!WU4Y zfO#Dv3p&>WWTYdIL}OZEI-;Ram>pFoEYVnOZgNN`rW0+bYwAD%dLCdEQ9_ih3{h1m8%R`d=(wzaOWk;#iWnQALReiKP=R!G zRjx2poR|UV0D^gnaDqZbT?pt^BN##jhFYYr00}R!5@10+%2(=xHa7?U*Z*k#;g5g& Z%b)-H_x(SAuZmZH`qjI4@49Wd{V%CA-$?)f literal 0 HcmV?d00001 diff --git a/webclient/config.php b/webclient/config.php index 51116abd..5e7980b5 100644 --- a/webclient/config.php +++ b/webclient/config.php @@ -1,6 +1,7 @@ assign("self", basename($_SERVER['PHP_SELF'])); +// Load Mustache templating engine +$m = new Mustache_Engine(array( + 'loader' => new Mustache_Loader_CascadingLoader(array(new Mustache_Loader_FilesystemLoader(dirname(__FILE__) . '/views/pages') + )), + 'partials_loader' => new Mustache_Loader_FilesystemLoader(dirname(__FILE__) . '/views/partials') +)); +// Get the users MW session if it exists $mwsess = @$_COOKIE['mwsess']; +// Get the action HTTP request variable $action = @$_REQUEST['action']; +// Check to see if a MW session is in the GET data if (isset($_GET['mwsess'])) { - $mwsess = $_GET['mwsess']; - setcookie("mwsess", $mwsess); + $mwsess = $_GET['mwsess']; + // Set a cookie with the session in it + setcookie("mwsess", $mwsess); } +// Log the user out if this is the action if ($action == "logout") { - setcookie("mwsess", ""); - unset($mwsess); + setcookie("mwsess", ""); + unset($mwsess); } + +// Check to see if login actions need to be performed if ($action == "login" || $action == "create") { -require("startup.php"); + require("startup.php"); } +// Check if the user has a MW session if (!isset($mwsess)) { - if (@$_REQUEST['sucssite_loggedin']=="true" && $action!="logout") { - require("startup.php"); - } else { - $smarty->assign("body", $smarty->fetch("login.html")); - $smarty->display("main.html"); - exit; - } + + // If there is no session but the user is logged in then run startup + if (@$_REQUEST['sucssite_loggedin']=="true" && $action!="logout") { + require("startup.php"); + } else { + echo $m->render('login'); + exit; + } } $session = unserialize($mwsess); -$smarty->assign("body", $smarty->fetch("front.html")); -$smarty->display("main.html"); - +echo $m->render('front'); ?> diff --git a/webclient/js/lib/anchorme.min.js b/webclient/js/lib/anchorme.min.js new file mode 100644 index 00000000..82e74ee4 --- /dev/null +++ b/webclient/js/lib/anchorme.min.js @@ -0,0 +1 @@ +!function(e,a){"object"==typeof exports&&"undefined"!=typeof module?module.exports=a():"function"==typeof define&&define.amd?define(a):e.anchorme=a()}(this,function(){"use strict";function e(e,a){return a={exports:{}},e(a,a.exports),a.exports}var a=e(function(e,a){function n(e){return e||(e={attributes:[],ips:!0,emails:!0,urls:!0,files:!0,truncate:1/0,defaultProtocol:"http://",list:!1}),"object"!=typeof e.attributes&&(e.attributes=[]),"boolean"!=typeof e.ips&&(e.ips=!0),"boolean"!=typeof e.emails&&(e.emails=!0),"boolean"!=typeof e.urls&&(e.urls=!0),"boolean"!=typeof e.files&&(e.files=!0),"boolean"!=typeof e.list&&(e.list=!1),"string"!=typeof e.defaultProtocol&&"function"!=typeof e.defaultProtocol&&(e.defaultProtocol="http://"),"number"==typeof e.truncate||"object"==typeof e.truncate&&null!==e.truncate||(e.truncate=1/0),e}function t(e){return!isNaN(Number(e))&&!(Number(e)>65535)}Object.defineProperty(a,"__esModule",{value:!0}),a.defaultOptions=n,a.isPort=t}),n=e(function(e,a){Object.defineProperty(a,"__esModule",{value:!0}),a.tlds=["com","org","net","uk","gov","edu","io","cc","co","aaa","aarp","abarth","abb","abbott","abbvie","abc","able","abogado","abudhabi","ac","academy","accenture","accountant","accountants","aco","active","actor","ad","adac","ads","adult","ae","aeg","aero","aetna","af","afamilycompany","afl","africa","ag","agakhan","agency","ai","aig","aigo","airbus","airforce","airtel","akdn","al","alfaromeo","alibaba","alipay","allfinanz","allstate","ally","alsace","alstom","am","americanexpress","americanfamily","amex","amfam","amica","amsterdam","analytics","android","anquan","anz","ao","aol","apartments","app","apple","aq","aquarelle","ar","aramco","archi","army","arpa","art","arte","as","asda","asia","associates","at","athleta","attorney","au","auction","audi","audible","audio","auspost","author","auto","autos","avianca","aw","aws","ax","axa","az","azure","ba","baby","baidu","banamex","bananarepublic","band","bank","bar","barcelona","barclaycard","barclays","barefoot","bargains","baseball","basketball","bauhaus","bayern","bb","bbc","bbt","bbva","bcg","bcn","bd","be","beats","beauty","beer","bentley","berlin","best","bestbuy","bet","bf","bg","bh","bharti","bi","bible","bid","bike","bing","bingo","bio","biz","bj","black","blackfriday","blanco","blockbuster","blog","bloomberg","blue","bm","bms","bmw","bn","bnl","bnpparibas","bo","boats","boehringer","bofa","bom","bond","boo","book","booking","boots","bosch","bostik","boston","bot","boutique","box","br","bradesco","bridgestone","broadway","broker","brother","brussels","bs","bt","budapest","bugatti","build","builders","business","buy","buzz","bv","bw","by","bz","bzh","ca","cab","cafe","cal","call","calvinklein","cam","camera","camp","cancerresearch","canon","capetown","capital","capitalone","car","caravan","cards","care","career","careers","cars","cartier","casa","case","caseih","cash","casino","cat","catering","catholic","cba","cbn","cbre","cbs","cd","ceb","center","ceo","cern","cf","cfa","cfd","cg","ch","chanel","channel","chase","chat","cheap","chintai","chloe","christmas","chrome","chrysler","church","ci","cipriani","circle","cisco","citadel","citi","citic","city","cityeats","ck","cl","claims","cleaning","click","clinic","clinique","clothing","cloud","club","clubmed","cm","cn","coach","codes","coffee","college","cologne","comcast","commbank","community","company","compare","computer","comsec","condos","construction","consulting","contact","contractors","cooking","cookingchannel","cool","coop","corsica","country","coupon","coupons","courses","cr","credit","creditcard","creditunion","cricket","crown","crs","cruise","cruises","csc","cu","cuisinella","cv","cw","cx","cy","cymru","cyou","cz","dabur","dad","dance","data","date","dating","datsun","day","dclk","dds","de","deal","dealer","deals","degree","delivery","dell","deloitte","delta","democrat","dental","dentist","desi","design","dev","dhl","diamonds","diet","digital","direct","directory","discount","discover","dish","diy","dj","dk","dm","dnp","do","docs","doctor","dodge","dog","doha","domains","dot","download","drive","dtv","dubai","duck","dunlop","duns","dupont","durban","dvag","dvr","dz","earth","eat","ec","eco","edeka","education","ee","eg","email","emerck","energy","engineer","engineering","enterprises","epost","epson","equipment","er","ericsson","erni","es","esq","estate","esurance","et","eu","eurovision","eus","events","everbank","exchange","expert","exposed","express","extraspace","fage","fail","fairwinds","faith","family","fan","fans","farm","farmers","fashion","fast","fedex","feedback","ferrari","ferrero","fi","fiat","fidelity","fido","film","final","finance","financial","fire","firestone","firmdale","fish","fishing","fit","fitness","fj","fk","flickr","flights","flir","florist","flowers","fly","fm","fo","foo","food","foodnetwork","football","ford","forex","forsale","forum","foundation","fox","fr","free","fresenius","frl","frogans","frontdoor","frontier","ftr","fujitsu","fujixerox","fun","fund","furniture","futbol","fyi","ga","gal","gallery","gallo","gallup","game","games","gap","garden","gb","gbiz","gd","gdn","ge","gea","gent","genting","george","gf","gg","ggee","gh","gi","gift","gifts","gives","giving","gl","glade","glass","gle","global","globo","gm","gmail","gmbh","gmo","gmx","gn","godaddy","gold","goldpoint","golf","goo","goodhands","goodyear","goog","google","gop","got","gp","gq","gr","grainger","graphics","gratis","green","gripe","group","gs","gt","gu","guardian","gucci","guge","guide","guitars","guru","gw","gy","hair","hamburg","hangout","haus","hbo","hdfc","hdfcbank","health","healthcare","help","helsinki","here","hermes","hgtv","hiphop","hisamitsu","hitachi","hiv","hk","hkt","hm","hn","hockey","holdings","holiday","homedepot","homegoods","homes","homesense","honda","honeywell","horse","hospital","host","hosting","hot","hoteles","hotmail","house","how","hr","hsbc","ht","htc","hu","hughes","hyatt","hyundai","ibm","icbc","ice","icu","id","ie","ieee","ifm","ikano","il","im","imamat","imdb","immo","immobilien","in","industries","infiniti","info","ing","ink","institute","insurance","insure","int","intel","international","intuit","investments","ipiranga","iq","ir","irish","is","iselect","ismaili","ist","istanbul","it","itau","itv","iveco","iwc","jaguar","java","jcb","jcp","je","jeep","jetzt","jewelry","jio","jlc","jll","jm","jmp","jnj","jo","jobs","joburg","jot","joy","jp","jpmorgan","jprs","juegos","juniper","kaufen","kddi","ke","kerryhotels","kerrylogistics","kerryproperties","kfh","kg","kh","ki","kia","kim","kinder","kindle","kitchen","kiwi","km","kn","koeln","komatsu","kosher","kp","kpmg","kpn","kr","krd","kred","kuokgroup","kw","ky","kyoto","kz","la","lacaixa","ladbrokes","lamborghini","lamer","lancaster","lancia","lancome","land","landrover","lanxess","lasalle","lat","latino","latrobe","law","lawyer","lb","lc","lds","lease","leclerc","lefrak","legal","lego","lexus","lgbt","li","liaison","lidl","life","lifeinsurance","lifestyle","lighting","like","lilly","limited","limo","lincoln","linde","link","lipsy","live","living","lixil","lk","loan","loans","locker","locus","loft","lol","london","lotte","lotto","love","lpl","lplfinancial","lr","ls","lt","ltd","ltda","lu","lundbeck","lupin","luxe","luxury","lv","ly","ma","macys","madrid","maif","maison","makeup","man","management","mango","market","marketing","markets","marriott","marshalls","maserati","mattel","mba","mc","mcd","mcdonalds","mckinsey","md","me","med","media","meet","melbourne","meme","memorial","men","menu","meo","metlife","mg","mh","miami","microsoft","mil","mini","mint","mit","mitsubishi","mk","ml","mlb","mls","mm","mma","mn","mo","mobi","mobile","mobily","moda","moe","moi","mom","monash","money","monster","montblanc","mopar","mormon","mortgage","moscow","moto","motorcycles","mov","movie","movistar","mp","mq","mr","ms","msd","mt","mtn","mtpc","mtr","mu","museum","mutual","mv","mw","mx","my","mz","na","nab","nadex","nagoya","name","nationwide","natura","navy","nba","nc","ne","nec","netbank","netflix","network","neustar","new","newholland","news","next","nextdirect","nexus","nf","nfl","ng","ngo","nhk","ni","nico","nike","nikon","ninja","nissan","nissay","nl","no","nokia","northwesternmutual","norton","now","nowruz","nowtv","np","nr","nra","nrw","ntt","nu","nyc","nz","obi","observer","off","office","okinawa","olayan","olayangroup","oldnavy","ollo","om","omega","one","ong","onl","online","onyourside","ooo","open","oracle","orange","organic","orientexpress","origins","osaka","otsuka","ott","ovh","pa","page","pamperedchef","panasonic","panerai","paris","pars","partners","parts","party","passagens","pay","pccw","pe","pet","pf","pfizer","pg","ph","pharmacy","philips","phone","photo","photography","photos","physio","piaget","pics","pictet","pictures","pid","pin","ping","pink","pioneer","pizza","pk","pl","place","play","playstation","plumbing","plus","pm","pn","pnc","pohl","poker","politie","porn","post","pr","pramerica","praxi","press","prime","pro","prod","productions","prof","progressive","promo","properties","property","protection","pru","prudential","ps","pt","pub","pw","pwc","py","qa","qpon","quebec","quest","qvc","racing","radio","raid","re","read","realestate","realtor","realty","recipes","red","redstone","redumbrella","rehab","reise","reisen","reit","reliance","ren","rent","rentals","repair","report","republican","rest","restaurant","review","reviews","rexroth","rich","richardli","ricoh","rightathome","ril","rio","rip","rmit","ro","rocher","rocks","rodeo","rogers","room","rs","rsvp","ru","ruhr","run","rw","rwe","ryukyu","sa","saarland","safe","safety","sakura","sale","salon","samsclub","samsung","sandvik","sandvikcoromant","sanofi","sap","sapo","sarl","sas","save","saxo","sb","sbi","sbs","sc","sca","scb","schaeffler","schmidt","scholarships","school","schule","schwarz","science","scjohnson","scor","scot","sd","se","seat","secure","security","seek","select","sener","services","ses","seven","sew","sex","sexy","sfr","sg","sh","shangrila","sharp","shaw","shell","shia","shiksha","shoes","shop","shopping","shouji","show","showtime","shriram","si","silk","sina","singles","site","sj","sk","ski","skin","sky","skype","sl","sling","sm","smart","smile","sn","sncf","so","soccer","social","softbank","software","sohu","solar","solutions","song","sony","soy","space","spiegel","spot","spreadbetting","sr","srl","srt","st","stada","staples","star","starhub","statebank","statefarm","statoil","stc","stcgroup","stockholm","storage","store","stream","studio","study","style","su","sucks","supplies","supply","support","surf","surgery","suzuki","sv","swatch","swiftcover","swiss","sx","sy","sydney","symantec","systems","sz","tab","taipei","talk","taobao","target","tatamotors","tatar","tattoo","tax","taxi","tc","tci","td","tdk","team","tech","technology","tel","telecity","telefonica","temasek","tennis","teva","tf","tg","th","thd","theater","theatre","tiaa","tickets","tienda","tiffany","tips","tires","tirol","tj","tjmaxx","tjx","tk","tkmaxx","tl","tm","tmall","tn","to","today","tokyo","tools","top","toray","toshiba","total","tours","town","toyota","toys","tr","trade","trading","training","travel","travelchannel","travelers","travelersinsurance","trust","trv","tt","tube","tui","tunes","tushu","tv","tvs","tw","tz","ua","ubank","ubs","uconnect","ug","unicom","university","uno","uol","ups","us","uy","uz","va","vacations","vana","vanguard","vc","ve","vegas","ventures","verisign","versicherung","vet","vg","vi","viajes","video","vig","viking","villas","vin","vip","virgin","visa","vision","vista","vistaprint","viva","vivo","vlaanderen","vn","vodka","volkswagen","volvo","vote","voting","voto","voyage","vu","vuelos","wales","walmart","walter","wang","wanggou","warman","watch","watches","weather","weatherchannel","webcam","weber","website","wed","wedding","weibo","weir","wf","whoswho","wien","wiki","williamhill","win","windows","wine","winners","wme","wolterskluwer","woodside","work","works","world","wow","ws","wtc","wtf","xbox","xerox","xfinity","xihuan","xin","xn--11b4c3d","xn--1ck2e1b","xn--1qqw23a","xn--30rr7y","xn--3bst00m","xn--3ds443g","xn--3e0b707e","xn--3oq18vl8pn36a","xn--3pxu8k","xn--42c2d9a","xn--45brj9c","xn--45q11c","xn--4gbrim","xn--54b7fta0cc","xn--55qw42g","xn--55qx5d","xn--5su34j936bgsg","xn--5tzm5g","xn--6frz82g","xn--6qq986b3xl","xn--80adxhks","xn--80ao21a","xn--80aqecdr1a","xn--80asehdb","xn--80aswg","xn--8y0a063a","xn--90a3ac","xn--90ae","xn--90ais","xn--9dbq2a","xn--9et52u","xn--9krt00a","xn--b4w605ferd","xn--bck1b9a5dre4c","xn--c1avg","xn--c2br7g","xn--cck2b3b","xn--cg4bki","xn--clchc0ea0b2g2a9gcd","xn--czr694b","xn--czrs0t","xn--czru2d","xn--d1acj3b","xn--d1alf","xn--e1a4c","xn--eckvdtc9d","xn--efvy88h","xn--estv75g","xn--fct429k","xn--fhbei","xn--fiq228c5hs","xn--fiq64b","xn--fiqs8s","xn--fiqz9s","xn--fjq720a","xn--flw351e","xn--fpcrj9c3d","xn--fzc2c9e2c","xn--fzys8d69uvgm","xn--g2xx48c","xn--gckr3f0f","xn--gecrj9c","xn--gk3at1e","xn--h2brj9c","xn--hxt814e","xn--i1b6b1a6a2e","xn--imr513n","xn--io0a7i","xn--j1aef","xn--j1amh","xn--j6w193g","xn--jlq61u9w7b","xn--jvr189m","xn--kcrx77d1x4a","xn--kprw13d","xn--kpry57d","xn--kpu716f","xn--kput3i","xn--l1acc","xn--lgbbat1ad8j","xn--mgb9awbf","xn--mgba3a3ejt","xn--mgba3a4f16a","xn--mgba7c0bbn0a","xn--mgbaam7a8h","xn--mgbab2bd","xn--mgbai9azgqp6j","xn--mgbayh7gpa","xn--mgbb9fbpob","xn--mgbbh1a71e","xn--mgbc0a9azcg","xn--mgbca7dzdo","xn--mgberp4a5d4ar","xn--mgbi4ecexp","xn--mgbpl2fh","xn--mgbt3dhd","xn--mgbtx2b","xn--mgbx4cd0ab","xn--mix891f","xn--mk1bu44c","xn--mxtq1m","xn--ngbc5azd","xn--ngbe9e0a","xn--node","xn--nqv7f","xn--nqv7fs00ema","xn--nyqy26a","xn--o3cw4h","xn--ogbpf8fl","xn--p1acf","xn--p1ai","xn--pbt977c","xn--pgbs0dh","xn--pssy2u","xn--q9jyb4c","xn--qcka1pmc","xn--qxam","xn--rhqv96g","xn--rovu88b","xn--s9brj9c","xn--ses554g","xn--t60b56a","xn--tckwe","xn--tiq49xqyj","xn--unup4y","xn--vermgensberater-ctb","xn--vermgensberatung-pwb","xn--vhquv","xn--vuq861b","xn--w4r85el8fhu5dnra","xn--w4rs40l","xn--wgbh1c","xn--wgbl6a","xn--xhq521b","xn--xkc2al3hye2a","xn--xkc2dl3a5ee0h","xn--y9a3aq","xn--yfro4i67o","xn--ygbi2ammx","xn--zfr164b","xperia","xxx","xyz","yachts","yahoo","yamaxun","yandex","ye","yodobashi","yoga","yokohama","you","youtube","yt","yun","za","zappos","zara","zero","zip","zippo","zm","zone","zuerich","zw"],a.htmlAttrs=["src=","data=","href=","cite=","formaction=","icon=","manifest=","poster=","codebase=","background=","profile=","usemap="]}),t=e(function(e,a){function t(e){var a=e.match(o);if(null===a)return!1;for(var t=r.length-1;t>=0;t--)if(r[t].test(e))return!1;var i=a[2];return!!i&&-1!==n.tlds.indexOf(i)}Object.defineProperty(a,"__esModule",{value:!0});var o=/^[a-z0-9!#$%&'*+\-\/=?^_`{|}~.]+@([a-z0-9%\-]+\.){1,}([a-z0-9\-]+)?$/i,r=[/^[!#$%&'*+\-\/=?^_`{|}~.]/,/[.]{2,}[a-z0-9!#$%&'*+\-\/=?^_`{|}~.]+@/i,/\.@/];a.default=t}),o=e(function(e,n){function t(e){if(!o.test(e))return!1;var n=e.split("."),t=Number(n[0]);if(isNaN(t)||t>255||t<0)return!1;var r=Number(n[1]);if(isNaN(r)||r>255||r<0)return!1;var i=Number(n[2]);if(isNaN(i)||i>255||i<0)return!1;var s=Number((n[3].match(/^\d+/)||[])[0]);if(isNaN(s)||s>255||s<0)return!1;var c=(n[3].match(/(^\d+)(:)(\d+)/)||[])[3];return!(c&&!a.isPort(c))}Object.defineProperty(n,"__esModule",{value:!0});var o=/^(\d{1,3}\.){3}\d{1,3}(:\d{1,5})?(\/([a-z0-9\-._~:\/\?#\[\]@!$&'\(\)\*\+,;=%]+)?)?$/i;n.default=t}),r=e(function(e,t){function o(e){var t=e.match(r);return null!==t&&("string"==typeof t[3]&&(-1!==n.tlds.indexOf(t[3].toLowerCase())&&!(t[5]&&!a.isPort(t[5]))))}Object.defineProperty(t,"__esModule",{value:!0});var r=/^(https?:\/\/|ftps?:\/\/)?([a-z0-9%\-]+\.){1,}([a-z0-9\-]+)?(:(\d{1,5}))?(\/([a-z0-9\-._~:\/\?#\[\]@!$&'\(\)\*\+,;=%]+)?)?$/i;t.default=o}),i=e(function(e,a){function n(e,a,t){return e.forEach(function(o,r){!(o.indexOf(".")>-1)||e[r-1]===a&&e[r+1]===t||e[r+1]!==a&&e[r+1]!==t||(e[r]=e[r]+e[r+1],"string"==typeof e[r+2]&&(e[r]=e[r]+e[r+2]),"string"==typeof e[r+3]&&(e[r]=e[r]+e[r+3]),"string"==typeof e[r+4]&&(e[r]=e[r]+e[r+4]),e.splice(r+1,4),n(e,a,t))}),e}function t(e){return e=n(e,"(",")"),e=n(e,"[","]"),e=n(e,'"','"'),e=n(e,"'","'")}Object.defineProperty(a,"__esModule",{value:!0}),a.fixSeparators=n,a.default=t}),s=e(function(e,a){function n(e){var a=e.replace(/([\s\(\)\[\]<>"'])/g,"\0$1\0").replace(/([?;:,.!]+)(?=(\0|$|\s))/g,"\0$1\0").split("\0");return i.default(a)}function t(e){return e.join("")}Object.defineProperty(a,"__esModule",{value:!0}),a.separate=n,a.deSeparate=t}),c=e(function(e,a){function n(e){return e=e.toLowerCase(),0===e.indexOf("http://")?"http://":0===e.indexOf("https://")?"https://":0===e.indexOf("ftp://")?"ftp://":0===e.indexOf("ftps://")?"ftps://":0===e.indexOf("file:///")?"file:///":0===e.indexOf("mailto:")&&"mailto:"}Object.defineProperty(a,"__esModule",{value:!0}),a.default=n}),l=e(function(e,a){function i(e,a){return e.map(function(i,s){var l=encodeURI(i);if(l.indexOf(".")<1&&!c.default(l))return i;var u=null,d=c.default(l)||"";return d&&(l=l.substr(d.length)),a.files&&"file:///"===d&&l.split(/\/|\\/).length-1&&(u={reason:"file",protocol:d,raw:i,encoded:l}),!u&&a.urls&&r.default(l)&&(u={reason:"url",protocol:d||("function"==typeof a.defaultProtocol?a.defaultProtocol(i):a.defaultProtocol),raw:i,encoded:l}),!u&&a.emails&&t.default(l)&&(u={reason:"email",protocol:"mailto:",raw:i,encoded:l}),!u&&a.ips&&o.default(l)&&(u={reason:"ip",protocol:d||("function"==typeof a.defaultProtocol?a.defaultProtocol(i):a.defaultProtocol),raw:i,encoded:l}),u&&("'"!==e[s-1]&&'"'!==e[s-1]||!~n.htmlAttrs.indexOf(e[s-2]))?u:i})}Object.defineProperty(a,"__esModule",{value:!0}),a.default=i}),u=e(function(e,a){function n(e,a){var n=o.separate(e),r=l.default(n,a);if(a.exclude)for(var i=0;ia.truncate&&(t=t.substring(0,a.truncate)+"..."),"object"==typeof a.truncate&&t.length>a.truncate[0]+a.truncate[1]&&(t=t.substr(0,a.truncate[0])+"..."+t.substr(t.length-a.truncate[1])),void 0===a.attributes&&(a.attributes=[]),'"+t+""}Object.defineProperty(a,"__esModule",{value:!0});var o=s;a.default=n}),d=e(function(e,n){Object.defineProperty(n,"__esModule",{value:!0});var i=function(e,n){return n=a.defaultOptions(n),u.default(e,n)};i.validate={ip:o.default,url:function(e){var a=c.default(e)||"";return e=e.substr(a.length),e=encodeURI(e),r.default(e)},email:t.default},n.default=i});return function(e){return e&&e.__esModule?e.default:e}(d)}); \ No newline at end of file diff --git a/webclient/jquery.js b/webclient/js/lib/jquery.js similarity index 100% rename from webclient/jquery.js rename to webclient/js/lib/jquery.js diff --git a/webclient/js/say.js b/webclient/js/say.js new file mode 100644 index 00000000..aac3ccce --- /dev/null +++ b/webclient/js/say.js @@ -0,0 +1,495 @@ +var die=0; +var profileImages = {}; +var prevMsg = {name: "", time: 0, id: ""}; + +function pageInit() { + setTimeout(refreshWho, 0); // Move to doing repeatedly in future + sendCmd('replay count 999'); + var sayit = document.getElementById("sayit"); + sayit.focus(); +} + +function refreshWho() { + sendCmdHandle('who', drawWhoList); + sendCmdHandle('whoami', userProfile); +} + +function addmsg(type, msg) { + var tmo = 500; + + var shouldScroll = false; + if (($(document).scrollTop() + $(window).height()) >= $(document).height()) { + shouldScroll = true; + } + + if (type != "poll") { + $("#textlist").append( "

"+msg+ "Session ClosedProblem: " + msg.status + "
" + escapedMsg = anchorme(escapedMsg, { + attributes: [ + {name: "target", value: "_blank"}, + function(urlObj) { + testImage(urlObj.raw, msgId, function(url, msgId, success) { + if (success) { + var imgString = "" + $('#' + msgId + '-extra-content').html(imgString); + } + }); + } + ] + }); + escapedMsg = filterColours(escapedMsg); + + // Check if msg is from the previous user and within 60 seconds + if (msg[one].name === prevMsg.name && msg[one].when < prevMsg.time) { + $('#'+prevMsg.id).append("

" + escapedMsg + "

"); + } else { + var msgTime = new Date(msg[one].when * 1000); + var timestamp = pad(msgTime.getHours(), 2) + ":" + pad(msgTime.getMinutes(), 2); + + var toDisplay = ""; + toDisplay += "
"; + toDisplay += "
" + getProfileImage(msg[one].name) + "
"; + toDisplay += "
"; + toDisplay += "" + msg[one].name + " " + timestamp + "
"; + toDisplay += "

" + escapedMsg + "

"; + toDisplay += "
"; + + /* Output the processed line */ + $("#textlist").append(toDisplay); + prevMsg.name = msg[one].name; + prevMsg.time = msg[one].when + 120; // 120 seconds max for putting messages together + prevMsg.id = msgId; + } + + break; + + case 11: // Talker message + case 17: // Board Message + /* Escape HTML characters */ + var escapedMsg = filterString(msg[one].text); + escapedMsg = anchorme(escapedMsg, {attributes: [{name: "target", value: "_blank"}]}); + escapedMsg = filterColours(escapedMsg); + + var msgTime = new Date(msg[one].when * 1000); + var timestamp = pad(msgTime.getHours(), 2) + ":" + pad(msgTime.getMinutes(), 2) + + var toDisplay = "
"; + toDisplay += timestamp + ": " + escapedMsg; + toDisplay += "
"; + + /* Output the processed line */ + $("#textlist").append(toDisplay); + + break; + + case 14: // IPC_KICK + var what = "
"; + if (msg[one].text.substr(0,1) == "m") { + what += "Boing, Zebedee's arrived. \"Look up!\" says Zebedee
"; + what += "You look up; a large object is falling towards you very fast, very very fast. It looks like a Magic Roundabout!
"; + what += "\"I wouldn't stand there if I was you\" says Zebedee
"; + what += "WWWHHHEEEEEEEKKKKEEEERRRRRUUUUUNNNNNCCCCCHHHHHH
"; + what += msg[one].name + " has just dropped the Magic Roundabout of Death on you.
"; + } else { + what += "Boing, Zebedee arrived.
"; + what += "\"Time for bed\" says Zebedee
"; + what += msg[one].name + " has just dropped the Zebedee of Death on you.
"; + } + if (msg[one].text.substr(1,1) == 'r') what += "\""+msg[one].text.substr(2)+"\" says Zebedee
"; + what += "
"; + $("#textlist").append(what); + break; + + case 23: // CheckOnOff + sendCmdHandle('who', drawWhoList); + break; + + default: + console.log("Unknown message type '"+msg[one].state+"'"); + console.log(msg[one].text); + break; + } + } + } + + if (shouldScroll) { + $(document).scrollTop($(document).height()); + } + + return tmo; +} + +function waitForMsg() { + $.ajax( { + type: "GET", + url: "poll.php", + async: true, + cache: false, + timeout: 50000, + success: function(data) { + var tmo = addmsg("poll", data); + + if (tmo>0) { + setTimeout('waitForMsg()', tmo); + } + }, + error: function(XMLHttpRequest, textStatus, errorThrown) { + var tmo = addmsg("error", textStatus+" ("+errorThrown+")"); + if (tmo>0) { + setTimeout('waitForMsg()', tmo); + } + } + }); +} + +function sendSay(text) { + if (text.substr(0, 1)=="."||text.substr(0, 1)=="!"||text.substr(0, 1)=="/") { + cmdParser(text); + return false; + } + + var what = "say "+text; + $.getJSON("send.php", {send: what}, function(data, stats) {}); + + return false; +} + +function cmdParser(text) { + if (text.search(" ")==-1) { + var cmd = text.substring(1); + } else { + var cmd = text.substring(1, text.search(" ")); + var args = text.substring(text.search(" ")+1); + } + + switch(cmd) { + case "room": + if (args == undefined || args < 0 || args > 65535){ + $('#textlist').append("
Usage: "+cmd+" <number>
"); + }else{ + sendCmd('channel '+args); + } + + break; + case "e": + case "em": + case "emote": + case "me": + var what = "emote "+args; + if (args == undefined){ + $('#textlist').append("
Usage: "+cmd+" <text>
"); + } else { + $.getJSON("send.php", {send: what}); + } + + break; + case "sayto": + case "sa": + case "whisper": + case "whi": + var what = "sayto "+args; + if (args == undefined){ + $('#textlist').append("
Usage: "+cmd+" <user> <text>
"); + } else { + $.getJSON("send.php", {send: what}); + } + + break; + case "q": + case "qq": + case "quit": + sendCmd('quit'); + window.location = 'index.php?action=logout' + break; + } +} + +function sortWho(a, b) { + var nameA=a.name.toLowerCase(), nameB=b.name.toLowerCase(); + + if (nameA < nameB) { + return -1; + } + + if (nameA > nameB) { + return 1; + } + + return 0; +} + +function filterString(str) { + var escapedStr = str.replace(/&/g, "&"); + escapedStr = escapedStr.replace(//g, ">"); + escapedStr = escapedStr.replace(/\n/g, ""); + escapedStr = escapedStr.replace(/\r/g, ""); + + return escapedStr; +} + +function filterColours(str) { + /* Replace colour codes with appropriate span tags */ + var msgColours = str.match(/\u001b../g); + if (msgColours != null) { + for (i=0;i"); + } else { + str = str.replace(msgColours[i], ""); + } + } + } + + return str; +} + +// For debugging purposes +function concatObject(obj) { + str=''; + + for(prop in obj) { + str+=prop + " => "+ obj[prop]+"\n"; + } + + return(str); +} + +function testImage(url, msgId, callback, timeout) { + timeout = timeout || 5000; + var timedOut = false, timer; + var img = new Image(); + img.onerror = img.onabort = function() { + if (!timedOut) { + clearTimeout(timer); + callback(url, msgId, false); + } + }; + img.onload = function() { + if (!timedOut) { + clearTimeout(timer); + callback(url, msgId, true); + } + }; + img.src = url; + timer = setTimeout(function() { + timedOut = true; + // reset .src to invalid URL so it stops previous + // loading, but doesn't trigger new load + img.src = "//!!!!/test.jpg"; + callback(url, msgId, false); + }, timeout); +} + +function userInit(data, stat) { + userIndex = new Object; + data.sort(sortWho); + usercount=0; + + for (var person in data) { + var thisUsername=data[person].name.toLowerCase(); + if (thisUsername in userIndex) { + usercount--; + } + userIndex[thisUsername]=usercount; + usercount++; + } +} + +function pad(number, length) { + var str = '' + number; + while (str.length < length) { + str = '0' + str; + } + return str; +} + +function userAdd(data, stat) { + for (var person in data) { + var thisUsername=data[person].name.toLowerCase(); + if (!(thisUsername in userIndex)) { + userIndex[thisUsername]=usercount; + usercount++; + } + } +} + +function drawWhoList(data, stat) { + var idleness; + if(typeof userIndex == "undefined") { + userInit(data, stat); + } else { + userAdd(data, stat); + } + + $("li").remove(); + data.sort(sortWho); + for (var person in data) { + idleness=""; + if (data[person].idletime>1800) { + idleness=" idle"; + } + + var thisUsername=data[person].name.toLowerCase(); + var personinfo = "
"; + + personinfo += getProfileImage(data[person].name); + + personinfo += ""+data[person].name+""; + personinfo += " "+data[person].doing; + personinfo += "
"; + + if (data[person].realname!=undefined) { + personinfo += data[person].realname+"
"; + } + + personinfo += "Room "+data[person].channel; + personinfo += "
"; + $("#wholist").append("
  • "+data[person].name+personinfo+"
  • "); + } +} + +function getProfileImage(username) { + if (typeof profileImages[username] === 'undefined') { + var hackergotchi = "https://sucs.org/pictures/people/" + username.toLowerCase() + ".png"; + if (urlExists(hackergotchi)) { + profileImages[username] = ""; + } else { + profileImages[username] = "
    Don't
    Panic
    "; + } + } + + return profileImages[username]; +} + +var stringToColour = function(str) { + var hash = 0; + for (var i = 0; i < str.length; i++) { + hash = str.charCodeAt(i) + ((hash << 5) - hash); + } + var colour = '#'; + for (var i = 0; i < 3; i++) { + var value = (hash >> (i * 8)) & 0xFF; + colour += ('00' + value.toString(16)).substr(-2); + } + return colour; +} + +function urlExists(url) { + var http = new XMLHttpRequest(); + http.open('HEAD', url, false); + http.send(); + return http.status != 404; +} + +function userProfile(data, stat) { + userProfile=new Object; + for (var item in data) { + userProfile[item] = data[item]; + } +} + +function sendCmdHandle(cmd, handle) { + $.getJSON("send.php", {send: cmd}, handle); +} + +function sendCmd(cmd) { + $.getJSON("send.php", {send: cmd}); +} + +function submitenter(myfield,e) { + var keycode; + + if (window.event) { + keycode = window.event.keyCode; + } else if (e) { + keycode = e.which; + } else { + return true; + } + + switch (keycode) { + case 13: + var text = $('#sayit').val(); + $('#sayit').val(""); + sendSay(text); + return false; + case 27: + insertEscape(false); + return false; + default: + return true; + } +} + +$(document).ready(function(){waitForMsg();}); diff --git a/webclient/mw.css b/webclient/mw.css deleted file mode 100644 index bb219266..00000000 --- a/webclient/mw.css +++ /dev/null @@ -1,432 +0,0 @@ -*:focus { - outline: none; -} - -html, body { - height: 100%; -} - -html, body, form, textarea { - margin: 0; - padding: 0; -} - -img { - border: 0; -} - -table#layout { - width: 100%; - height: 100%; - padding: 5px; -} - -table#layout td { - vertical-align: top; -} - -td#whotd { - width: 11em; - padding-left: 5px; -} - -tr#inputtr { - height: 4em; -} - -td#saytd { - padding-top: 5px; -} - -td#buttontd { - padding-left: 5px; -} -.whoinfo { - padding: 5px; - background: #fff; - border: 1px solid black; - width: 200px; - position: relative; - top: -1.4em; - left: -217px; - z-index: 1000; - display: none; - color: black; -} - - -.whoinfo img { - float: right; - margin-left: 0.5em; -} - -.whoinfo br { - clear: right; -} - -.who a { - display: block; - width: 100%; - height: 100%; - color: inherit; - text-decoration: none; - background: inherit; -} - -.who a:hover .whoinfo { - display: block; -} -textarea { - margin: 0; -} -p { - margin: 0; -} - -table#layout, #textlist, #sayouter, #sayit, #textlist table, #wholist, #milliways, #logoutform { - font-family: Monaco, "Lucida Sans Typewriter", "Lucida Console", monospace; - font-size: 9pt; -} - -#wholist { - position: absolute; - top: 5px; - right: 5px; - bottom: 5em; - background-color: #000000; - color: #d6d6d6; - width: 11em; - list-style: none; - margin: 0; - padding: 0; -/* overflow: auto; */ -} - -#wholist li { - padding-left: 5px; - padding-right: 5px; - height: 1.3em; -} - -#textlist, #sayit { - overflow: auto; - white-space: pre-wrap; -} - -#textlist { - position: absolute; - top: 5px; - left: 5px; - right: 12em; - bottom: 5em; - padding: 5px; -} - -#textlist table { - margin: 0; - padding: 0; -} - -th { - text-align: left; -} - -div#sayouter { - position: absolute; - bottom: 5px; - left: 5px; - right: 12em; -margin: 0; -padding: 5px; - border: 1px solid black; -} -textarea#sayit { - width: 100%; - height: 3em; - border: none; - resize: none; - padding: 0; -} - -.login { - font-family: Arial, sans-serif; -} - -h1.login { - text-align: center; - margin: 0; - padding: 0; - padding-top: 6em; -} - -form.login { - margin: auto; - width: 18em; - padding: 1em; -} - -form.login label { - width: 5em; - text-align: right; - display: block; - float: left; - margin-bottom: 10px; - margin-top: 7px; -} - -form.login input { - float: left; - margin-left: 1em; - font-size: 100%; -} - -form.login br { - clear: left; -} - -form.login input#submit { - margin-left: 6em;; -} - -p.login { - text-align: center; -} - -p.login a { - background: none; - color: #D45E08; -} - -p.login a:hover { - color: #E69200; -} - -form#logoutform { - position: absolute; - bottom: 5px; - right: 5px; - width: 11em; - height: 4em; - text-align: center; - padding: 0; -} - -.msgpoll { - clear: both; -} - -.timestamp { - float: left; - width: 3.5em; -} - -.msg_poster { - float: left; - display: block; - width: 9.5em; - text-align: right; -} - -.msg_content { - padding-left: 10em; - text-indent: -1.2em; - display: block; - word-wrap: break-word; -} - -.msg_content.withts { - padding-left: 14.2em; -} - -/* ************************************ */ -/* * Message CSS * */ -/* ************************************ */ - -.msgpoll.user_System { - font-weight: bold; -} - -/* ************************************************* */ -/* * Term Colours (Silver on Black) * */ -/* ************************************************* */ - -#textlist, #textlist table, a { - background: #000000; - color: #d6d6d6; -} - -.bold { - font-weight: bold; -} - -.colourfgr { - color: #d0301f; -} -.colourfgg { - color: #00b943; -} -.colourfgb { - color: #3948da; -} -.colourfgc { - color: #00bcc8; -} -.colourfgy { - color: #b1aa3f; -} -.colourfgm { - color: #de47cc; -} - -.colourfgw { - color: #cacccd; -} - -.colourfgk { - color: #000000; -} - -.colourbgr { - background: #a40302; -} -.colourbgg { - background: #039f30; -} -.colourbgb { - background: #022aa7; -} -.colourbgc { - background: #01a2ad; -} -.colourbgy { - background: #99922a; -} -.colourbgm { - background: #b924a8; -} - -.colourbgw { - background: #d6d6d6; -} - -.colourbgk { - background: #000000; -} - -/* ************************************************* */ -/* * System Colours (Fry's Standard Colour Scheme) * */ -/* ************************************************* */ - -.colour00 { -} - -.colour01 { - font-weight: bold; - color: #de47cc; -} - -.colour02 { - color: #de47cc; -} - -.colour03 { - color: #d0301f; -} - -.colour04 { - font-weight: bold; - color: #d0301f; -} - -.colour05 { - font-weight: bold; - color: #3948da; -} - -.colour06 { - font-weight: bold; - color: #d0301f; -} - -.colour10 { - font-weight: bold; - color: #b1aa3f; -} - -.colour11 { - color: #b1aa3f; -} - -.colour12 { - font-weight: bold; - color: #00b943; -} - -.colour13 { - color: #00b943; -} - -.colour14 { - #cacccd; - font-weight: bold; -} - -.colour15, .colour17 { - background-color: #0129a7; - font-weight: bold; - color: #b1aa3f; -} - -.colour16 { - background-color: #0129a7; - font-weight: bold; - color: #cacccd; -} - -.colour18 { - background-color: #0129a7; - font-weight: bold; - color: #d0301f; -} - -.colour19 { - background-color: #0129a7; - font-weight: bold; - color: #00bcc8; -} - -.colour20 { - background-color: #0129a7; - font-weight: bold; - color: #de47cc; -} - -/* ************************************************* */ -/* * User Colours * */ -/* ************************************************* */ - -.user_0 .timestamp, .user_0 .msg_poster, .who.user_0 {color: #c00;} -.user_1 .timestamp, .user_1 .msg_poster, .who.user_1 {color: #0c0;} -.user_2 .timestamp, .user_2 .msg_poster, .who.user_2 {color: #33f;} -.user_3 .timestamp, .user_3 .msg_poster, .who.user_3 {color: #0aa;} -.user_4 .timestamp, .user_4 .msg_poster, .who.user_4 {color: #aa0;} -.user_5 .timestamp, .user_5 .msg_poster, .who.user_5 {color: #a0a;} -.user_6 .timestamp, .user_6 .msg_poster, .who.user_6 {color: #8d0;} -.user_7 .timestamp, .user_7 .msg_poster, .who.user_7 {color: #d80;} -.user_8 .timestamp, .user_8 .msg_poster, .who.user_8 {color: #d08;} -.user_9 .timestamp, .user_9 .msg_poster, .who.user_9 {color: #80d;} -.user_10 .timestamp, .user_10 .msg_poster, .who.user_10 {color: #08d;} -.user_11 .timestamp, .user_11 .msg_poster, .who.user_11 {color: #0d8;} -.user_12 .timestamp, .user_12 .msg_poster, .who.user_12 {color: #6e0;} -.user_13 .timestamp, .user_13 .msg_poster, .who.user_13 {color: #e60;} -.user_14 .timestamp, .user_14 .msg_poster, .who.user_14 {color: #60e;} -.user_15 .timestamp, .user_15 .msg_poster, .who.user_15 {color: #e06;} -.user_16 .timestamp, .user_16 .msg_poster, .who.user_16 {color: #0e6;} -.user_17 .timestamp, .user_17 .msg_poster, .who.user_17 {color: #06e;} - - -/* ... */ - -.idle { - background-color: #333; -} diff --git a/webclient/poll.php b/webclient/poll.php index d9ceb789..00680d00 100644 --- a/webclient/poll.php +++ b/webclient/poll.php @@ -3,12 +3,12 @@ require_once("config.php"); if (isset($_COOKIE['mwsess'])) { - $data = unserialize($_COOKIE['mwsess']); - $sess = (int)$data['pid']; - $auth = trim($data['auth']); + $data = unserialize($_COOKIE['mwsess']); + $sess = (int)$data['pid']; + $auth = trim($data['auth']); } else { - $sess = (int)@$_REQUEST['sess']; - $auth = trim(@$_REQUEST['auth']); + $sess = (int)@$_REQUEST['sess']; + $auth = trim(@$_REQUEST['auth']); } $path = $poller_path.$sess; @@ -17,38 +17,38 @@ header("Content-type: application/json; charset=utf-8"); $sock = socket_create(AF_UNIX, SOCK_SEQPACKET, 0); if (@socket_connect($sock, $path) === FALSE) { - echo "{\"status\":\"Socket open error\"}\n"; - exit; + echo "{\"status\":\"Socket open error\"}\n"; + exit; } $msg = "auth $auth"; if (@socket_send($sock, $msg, strlen($msg), 0)===FALSE) { - echo "{\"status\":\"Socket error\"}\n"; - exit; + echo "{\"status\":\"Socket error\"}\n"; + exit; } if (@socket_recv($sock, $response, 4096, 0)===FALSE) { - echo "{\"status\":\"Socket error\"}\n"; - exit; + echo "{\"status\":\"Socket error\"}\n"; + exit; } $res = json_decode($response, TRUE); if ($res === NULL) { echo "{\"status\":\"Bad server response\"}\n"; exit; } if ($res['status'] != "OK") { - echo $response; - exit; + echo $response; + exit; } $msg = "fetch"; if (@socket_send($sock, $msg, strlen($msg), MSG_EOF)===FALSE) { - echo "{\"status\":\"Socket error\"}\n"; - exit; + echo "{\"status\":\"Socket error\"}\n"; + exit; } -if (@socket_recv($sock, $response, 8192, 0)===FALSE) { - echo "{\"status\":\"Socket error\"}\n"; - exit; +if (@socket_recv($sock, $response, 262144, 0)===FALSE) { + echo "{\"status\":\"Socket error\"}\n"; + exit; } if ($response!="") echo $response."\n"; diff --git a/webclient/say.js b/webclient/say.js deleted file mode 100644 index 5c6f3731..00000000 --- a/webclient/say.js +++ /dev/null @@ -1,443 +0,0 @@ -var die=0; - - -function pageInit() { - sendCmdHandle('who', drawWhoList); - sendCmdHandle('whoami', userProfile); - var sayit = document.getElementById("sayit"); - sayit.focus(); -} - - function addmsg(type, msg) { - var tmo = 500; - - if (type != "poll") { - $("#textlist").append( "
    "+msg+ "Session ClosedProblem: " + msg.status + "/g, ">"); - escapedMsg = escapedMsg.replace(/\n/g, ""); - escapedMsg = escapedMsg.replace(/\r/g, ""); - - /* Detect URIs and convert to links */ - var uris = escapedMsg.match(/https?:\/\/[^ ]*/g); - for (thisuri in uris) { - escapedMsg = escapedMsg.replace(uris[thisuri], ""+uris[thisuri]+""); - } - - /* Insert timestamp if necessary */ - var timestamp=""; - if (userProfile.special.match("t")) { - var currentTime = new Date(); - var withts=" withts"; - timestamp = ""+pad(currentTime.getHours(), 2)+":"+pad(currentTime.getMinutes(), 2)+" "; - } - - /* Detect username */ - if (escapedMsg.substr(0, msg[one].name.length)==msg[one].name) { - escapedMsg = escapedMsg.replace(msg[one].name, ""+msg[one].name+""); - escapedMsg = escapedMsg+""; - } - - /* Replace colour codes with appropriate span tags */ - var msgColours = escapedMsg.match(/\u001b../g); - if (msgColours != null) { - for (i=0;i"); - } else { - escapedMsg = escapedMsg.replace(msgColours[i], ""); - } - } - } - - /* Output the processed line */ - $("#textlist").append( "

    " + timestamp + escapedMsg + "/g, ">"); - escapedMsg = escapedMsg.replace(/\n/g, ""); - escapedMsg = escapedMsg.replace(/\r/g, ""); - - /* Detect URIs and convert to links */ - var uris = escapedMsg.match(/https?:\/\/[^ ]*/g); - for (thisuri in uris) { - escapedMsg = escapedMsg.replace(uris[thisuri], ""+uris[thisuri]+""); - } - - /* Insert timestamp if necessary */ - var timestamp=""; - if (userProfile.special.match("t")) { - var currentTime = new Date(); - var withts=" withts"; - timestamp = ""+pad(currentTime.getHours(), 2)+":"+pad(currentTime.getMinutes(), 2)+" "; - } - - /* Detect username */ - if (escapedMsg.substr(0, msg[one].name.length)==msg[one].name) { - escapedMsg = escapedMsg.replace(msg[one].name, ""+msg[one].name+""); - escapedMsg = escapedMsg+""; - } - - /* Replace colour codes with appropriate span tags */ - var msgColours = escapedMsg.match(/\u001b../g); - if (msgColours != null) { - for (i=0;i"); - } else { - escapedMsg = escapedMsg.replace(msgColours[i], ""); - } - } - } - - /* Output the processed line */ - $("#textlist").append( "

    " + timestamp + escapedMsg + ""; - what += "You look up; a large object is falling towards you very fast, very very fast. It looks like a Magic Roundabout!
    "; - what += "\"I wouldn't stand there if I was you\" says Zebedee
    "; - what += "WWWHHHEEEEEEEKKKKEEEERRRRRUUUUUNNNNNCCCCCHHHHHH
    "; - what += msg[one].name + " has just dropped the Magic Roundabout of Death on you.
    "; - } else { - what += "Boing, Zebedee arrived.
    "; - what += "\"Time for bed\" says Zebedee
    "; - what += msg[one].name + " has just dropped the Zebedee of Death on you.
    "; - } - if (msg[one].text.substr(1,1) == 'r') what += "\""+msg[one].text.substr(2)+"\" says Zebedee
    "; - what += "

    "; - $("#textlist").append(what); - break; - case 23: // CheckOnOff - sendCmdHandle('who', drawWhoList); - break; - default: - what = "
    "; - what += "Unknown message type '"+msg[one].state+"' body='"+msg[one].text+"'"; - what += "
    "; - $("#textlist").append(what); - break; - } - } - } - var objDiv = document.getElementById("textlist"); - if (objDiv!=null) objDiv.scrollTop = objDiv.scrollHeight; - return tmo; - } - - function waitForMsg() { - $.ajax( { - type: "GET", - url: "poll.php", - async: true, - cache: false, - timeout: 50000, - success: function(data) { - var tmo = addmsg("poll", data); - if (tmo>0) setTimeout( 'waitForMsg()', tmo); - }, - error: function(XMLHttpRequest, textStatus, errorThrown){ - var tmo = addmsg("error", textStatus+" ("+errorThrown+")"); - if (tmo>0) setTimeout('waitForMsg()', tmo); - } - }); - } - -function sendSay(text) -{ - if (text.substr(0, 1)=="."||text.substr(0, 1)=="!"||text.substr(0, 1)=="/") { - cmdParser(text); - return false; - } - - var what = "say "+text; - $.getJSON("send.php", {send: what}, function(data, stats) { - }); - return false; -} - -function cmdParser(text) { - if (text.search(" ")==-1) { - var cmd = text.substring(1); - } else { - var cmd = text.substring(1, text.search(" ")); - var args = text.substring(text.search(" ")+1); - } - - switch(cmd) { - case "who": - sendCmdHandle('who', drawWho); - break; - case "room": - if (args == undefined || args < 0 || args > 65535){ - $('#textlist').append("
    Usage: "+cmd+" <number>
    "); - }else{ - sendCmd('channel '+args); - } - break; - case "e": - case "em": - case "emote": - case "me": - var what = "emote "+args; - if (args == undefined){ - $('#textlist').append("
    Usage: "+cmd+" <text>
    "); - }else{ - $.getJSON("send.php", {send: what}); - } - break; - case "sayto": - case "sa": - case "whisper": - case "whi": - var what = "sayto "+args; - if (args == undefined){ - $('#textlist').append("
    Usage: "+cmd+" <user> <text>
    "); - }else{ - $.getJSON("send.php", {send: what}); - } - - break; - case "q": - case "qq": - case "quit": - sendCmd('quit'); - window.location = 'index.php?action=logout' - break; - } -} - -function drawTime(time) { - var days = time/86400; - var hours = (time%86400)/3600; - var minutes = ((time%86400)%3600)/60; - var seconds = ((time%86400)%3600)%60; - var text = ""; - if (days>=2) text += parseInt(days)+"d"; - if (hours>=1) text += parseInt(hours)+"h"; - if (minutes>=1&&days<2) text += parseInt(minutes)+"m"; - if (hours<1) text += seconds+"s"; - return text; -} - -function drawWho(data, stat) -{ - var text = "
    "; - text += ""; - for (person in data) { - var line = ""; - line += ""; - line += ""; - text += ""+line+""; - } - text += "
    NameIdleWhat...
    "+data[person].name+""+drawTime(data[person].idletime)+"Room "+data[person].channel+"

    "; - addmsg("who", text); -} - -function sortWho(a, b) { - var nameA=a.name.toLowerCase(), nameB=b.name.toLowerCase(); - if (nameA < nameB) return -1; - if (nameA > nameB) return 1; - return 0; -} - -// For debugging purposes -function concatObject(obj) { - str=''; - for(prop in obj) - { - str+=prop + " => "+ obj[prop]+"\n"; - } - return(str); -} - -function userInit(data, stat) { - userIndex=new Object; - data.sort(sortWho); - usercount=0; - for (var person in data) { - var thisUsername=data[person].name.toLowerCase(); - if (thisUsername in userIndex) usercount--; - userIndex[thisUsername]=usercount; - usercount++; - } -} - -function userAdd(data, stat) { - for (var person in data) { - var thisUsername=data[person].name.toLowerCase(); - if (!(thisUsername in userIndex)) { - userIndex[thisUsername]=usercount; - usercount++; - } - } -} - -function drawWhoList(data, stat) { - var idleness; - if(typeof userIndex == "undefined") userInit(data, stat); - else userAdd(data, stat); - - $("li").remove(); - data.sort(sortWho); - for (var person in data) { - idleness=""; - if (data[person].idletime>1800) idleness=" idle"; - var thisUsername=data[person].name.toLowerCase(); - var personinfo = "
    "; - if (data[person].hgwidth>0) personinfo += ""; - else personinfo += ""; - personinfo += ""+data[person].name+""; - personinfo += " "+data[person].doing; - personinfo += "
    "; - if (data[person].realname!=undefined) personinfo += data[person].realname+"
    "; - personinfo += "Room "+data[person].channel; - personinfo += "
    "; - $("#wholist").append("
  • "+data[person].name+personinfo+"
  • "); - } -} - -function userProfile(data, stat) { - userProfile=new Object; - for (var item in data) { - userProfile[item] = data[item]; - } -} - -function sendCmdHandle(cmd, handle) -{ - $.getJSON("send.php", {send: cmd}, handle); -} - -function sendCmd(cmd) { - $.getJSON("send.php", {send: cmd}); -} - -function pad(number, length) { - var str = '' + number; - while (str.length < length) { - str = '0' + str; - } - return str; -} - -function submitenter(myfield,e) { - var keycode; - if (window.event) keycode = window.event.keyCode; - else if (e) keycode = e.which; - else return true; - switch (keycode) { - case 13: - var text = $('#sayit').val(); - $('#sayit').val(""); - sendSay(text); - return false; - case 27: - insertEscape(false); - return false; - default: - return true; - } -} - -function insertEscape(buttonpress) { -var myField=document.getElementById("sayit"); -var myValue="\033"; - //IE support - if (document.selection) { - myField.focus(); - sel = document.selection.createRange(); - sel.text = myValue; - } - //MOZILLA/NETSCAPE support - else if (myField.selectionStart || myField.selectionStart == '0') { - var startPos = myField.selectionStart; - var endPos = myField.selectionEnd; - myField.value = myField.value.substring(0, startPos) - + myValue - + myField.value.substring(endPos, myField.value.length); - myField.selectionStart = startPos+1; - myField.selectionEnd = myField.selectionStart; - } else { - myField.value += myValue; - } - if (buttonpress) myField.focus(); -} - -$(document).ready(function(){waitForMsg();}); diff --git a/webclient/send.php b/webclient/send.php index ecc22790..cc78bfd6 100644 --- a/webclient/send.php +++ b/webclient/send.php @@ -16,64 +16,68 @@ $path = $poller_path.$sess; header("Content-type: application/json"); if (!isset($_REQUEST['send'])) { - echo "{\"status\":\"Bad command\"}\n"; - exit; + echo "{\"status\":\"Bad command\"}\n"; + exit; } $sock = socket_create(AF_UNIX, SOCK_SEQPACKET, 0); if (@socket_connect($sock, $path) === FALSE) { - echo "{"; - echo "\"status\":\"Socket open error\""; - $err = error_get_last(); - echo ",\"detail\":\"".$err['message']."\""; - echo ",\"path\":\"".$path."\""; - echo "}\n"; - exit; + echo "{"; + echo "\"status\":\"Socket open error\""; + $err = error_get_last(); + echo ",\"detail\":\"".$err['message']."\""; + echo ",\"path\":\"".$path."\""; + echo "}\n"; + exit; } $msg = "auth $auth"; if (@socket_send($sock, $msg, strlen($msg), 0)===FALSE) { - echo "{\"status\":\"Socket error\"}\n"; - exit; + echo "{\"status\":\"Socket error\"}\n"; + exit; } if (@socket_recv($sock, $response, 4096, 0)===FALSE) { - echo "{\"status\":\"Socket error\"}\n"; - exit; + echo "{\"status\":\"Socket error\"}\n"; + exit; } + $res = json_decode($response, TRUE); -if ($res === NULL) { echo "{\"status\":\"Bad server response\"}\n"; exit; } +if ($res === NULL) { + echo "{\"status\":\"Bad server response\"}\n"; + exit; +} if ($res['status'] != "OK") { - echo $response; - exit; + echo $response; + exit; } $msg = trim($_REQUEST['send']); if (@socket_send($sock, $msg, strlen($msg), MSG_EOF)===FALSE) { - echo "{\"status\":\"Socket error\"}\n"; - exit; + echo "{\"status\":\"Socket error\"}\n"; + exit; } if (@socket_recv($sock, $response, 8192, 0)===FALSE) { - echo "{\"status\":\"Socket error\"}\n"; - exit; + echo "{\"status\":\"Socket error\"}\n"; + exit; } if ($_REQUEST['send']=="who") { - $who = json_decode($response, TRUE); - $pcount=0; - foreach ($who as $person) { - $im_file = "/var/www/sucssite/htdocs/pictures/people/".strtolower($person['username']).".png"; - if (file_exists($im_file)) { - $size = getimagesize($im_file); - $factor = 64/$size[1]; - $who[$pcount]['hgwidth']=(int)($size[0]*$factor); - } - $pcount++; - } - $response = json_encode($who); + $who = json_decode($response, TRUE); + $pcount=0; + foreach ($who as $person) { + $im_file = "/var/www/sucssite/htdocs/pictures/people/".strtolower($person['username']).".png"; + if (file_exists($im_file)) { + $size = getimagesize($im_file); + $factor = 64/$size[1]; + $who[$pcount]['hgwidth']=(int)($size[0]*$factor); + } + $pcount++; + } + $response = json_encode($who); } echo $response."\n"; diff --git a/webclient/setup.sh b/webclient/setup.sh new file mode 100755 index 00000000..43fd4a39 --- /dev/null +++ b/webclient/setup.sh @@ -0,0 +1,19 @@ +#!/bin/sh + +# Setup script for WebMW +echo "WebMW Setup Script" + +ls $(pwd)/setup.sh &> /dev/null +if [ $? -ne 0 ]; then echo "Please run this script from its containing directory"; exit; fi + +if [ "$HOSTNAME" == "silver.sucs.swan.ac.uk" ]; then + # Running Composer + echo -n "Running Composer" + php composer.phar install + echo "Done!" + + # and you're done! + echo -e "\nYou should now be able to view your local copy WebMW at http://sucs.org/~$USER/webmw/" +else + echo "You need to run this script on Silver" +fi diff --git a/webclient/startup.php b/webclient/startup.php index 1c4e6af2..d224af8e 100644 --- a/webclient/startup.php +++ b/webclient/startup.php @@ -5,157 +5,178 @@ $mwpoll = $poller_bin; $username = trim($_REQUEST['username']); $password = trim($_REQUEST['password']); -### Preliminary checks +// Preliminary checks -# Have we been passed SUCSsite cookies? -# If not, test that the login details make sense. +// Have we been passed SUCSsite cookies? +// If not, test that the login details make sense. if (@$_REQUEST['sucssite_loggedin']!="true") { - if (empty($username) || empty($password)) { - $smarty->assign("error", "username and password must both be not empty"); - $smarty->assign("body", $smarty->fetch("login.html")); - $smarty->display("main.html"); - exit; - } - - if (ctype_alnum($username) === FALSE) { - $smarty->assign("error", "alphanumeric usernames only"); - $smarty->assign("body", $smarty->fetch("login.html")); - $smarty->display("main.html"); - exit; - } + if (empty($username) || empty($password)) { + echo $m->render('login', + $obj = (object) [ + 'error' => 'username and password must both be not empty', + ] + ); + exit; + } + + if (ctype_alnum($username) === FALSE) { + echo $m->render('login', + $obj = (object) [ + 'error' => 'alphanumeric usernames only', + ] + ); + exit; + } } -# Have we been asked to create a new Milliways account? -# If so, make sure that the password supplied is suitable. +// Have we been asked to create a new Milliways account? +// If so, make sure that the password supplied is suitable. if ($action=="create") { - $pass1 = @$_REQUEST['password1']; - $pass2 = @$_REQUEST['password2']; - if ($pass1 != $pass2) { - $smarty->assign("error", "Passwords don't match - please try again"); - $smarty->assign("body", $smarty->fetch("createaccount.html")); - $smarty->display("main.html"); - exit; - } - if (empty($pass1)) { - $smarty->assign("error", "Password cannot be blank"); - $smarty->assign("body", $smarty->fetch("createaccount.html")); - $smarty->display("main.html"); - exit; - } - if (ctype_alnum($pass1) === FALSE) { - $smarty->assign("error", "Milliways passwords can only contain alphanumeric characters"); - $smarty->assign("body", $smarty->fetch("createaccount.html")); - $smarty->display("main.html"); - exit; - } - if (strlen($pass1) < 6) { - $smarty->assign("error", "Milliways passwords must be 6 characters or more"); - $smarty->assign("body", $smarty->fetch("createaccount.html")); - $smarty->display("main.html"); - exit; - } + $pass1 = @$_REQUEST['password1']; + $pass2 = @$_REQUEST['password2']; + + if ($pass1 != $pass2) { + echo $m->render('createaccount', + $obj = (object) [ + 'error' => 'Passwords don\'t match - please try again', + ] + ); + exit; + } + + if (empty($pass1)) { + echo $m->render('createacount', + $obj = (object) [ + 'error' => 'Password cannot be blank', + ] + ); + exit; + } + + if (ctype_alnum($pass1) === FALSE) { + echo $m->render('createacount', + $obj = (object) [ + 'error' => 'Milliways passwords can only contain alphanumeric characters', + ] + ); + exit; + } + + if (strlen($pass1) < 6) { + echo $m->render('createacount', + $obj = (object) [ + 'error' => 'Milliways passwords must be 6 characters or more', + ] + ); + exit; + } } $desc = array( - 0 => array("pipe", "r"), - 1 => array("pipe", "w"), + 0 => array("pipe", "r"), + 1 => array("pipe", "w"), ); $pipes = array(); -# Have we got SUCSsite cookies? -# And no login attempt? -# If so, fetch the user details and try to log in without a password. +// Have we got SUCSsite cookies? +// And no login attempt? +// If so, fetch the user details and try to log in without a password. if (@$_REQUEST['sucssite_loggedin']=="true" && empty($username)) { -# Do we appear to be in the SUCSsite environment? -# There's only any point trying if we do. -if (file_exists("../settings.php")) { - # Do the bare minimum of SUCSsite init to retrieve the username for the session we've been passed - include("../settings.php"); - // Initialise the database - require("/usr/share/php/adodb/adodb.inc.php"); - $DB = NewADOConnection('postgres9'); - $DB->Connect('dbname='.$dbname.' user=apache'); - $DB->SetFetchMode(ADODB_FETCH_ASSOC); + + // Do we appear to be in the SUCSsite environment? + // There's only any point trying if we do. + if (file_exists("../settings.php")) { + // Do the bare minimum of SUCSsite init to retrieve the username for the session we've been passed + include("../settings.php"); + // Initialise the database + require("/usr/share/php/adodb/adodb.inc.php"); + $DB = NewADOConnection('postgres9'); + $DB->Connect('dbname='.$dbname.' user=apache'); + $DB->SetFetchMode(ADODB_FETCH_ASSOC); - // Include the session library - require($base."lib/session.php"); - $session = new Session; - $smarty->assign("session", $session); - $realuser = $session->username; - - if ($action == "create") { - $p = proc_open($mwpoll." -a -u ".$realuser." -s", $desc, $pipes); - } else { - $p = proc_open($mwpoll." -u ".$realuser." -s", $desc, $pipes); - } - $mode = "sucssite"; -} + // Include the session library + require($base."lib/session.php"); + $session = new Session; + // $smarty->assign("session", $session); // This line might be useful? + $realuser = $session->username; + + if ($action == "create") { + $p = proc_open($mwpoll." -q -a -u ".$realuser." -s", $desc, $pipes); + } else { + $p = proc_open($mwpoll." -q -u ".$realuser." -s", $desc, $pipes); + } + $mode = "sucssite"; + } } else { -# If not, try logging in with a password. - $p = proc_open($mwpoll." -u $username", $desc, $pipes); - $mode = "password"; + // If not, try logging in with a password. + $p = proc_open($mwpoll." -q -u $username", $desc, $pipes); + $mode = "password"; } if (empty($p)) { - $smarty->assign("body", $smarty->fetch("login.html")); - $smarty->display("main.html"); - exit; + echo $m->render('login'); + exit; } if ($p === FALSE) { - $smarty->assign("error", "failed to exec mwpoll"); - $smarty->assign("body", $smarty->fetch("login.html")); - $smarty->display("main.html"); - exit; + echo $m->render('login', + $obj = (object) [ + 'error' => 'failed to exec mwpoll', + ] + ); + exit; } if ($mode == "sucssite" && @$_REQUEST['sucssite_loggedin']=="true" && empty($username)) { -// If we have a sucssite session cookie, use that - fwrite($pipes[0], trim($_REQUEST['sucssite_session'])."\n"); - if ($action="create") { - fwrite($pipes[0], $pass1."\n"); - } + // If we have a sucssite session cookie, use that + fwrite($pipes[0], trim($_REQUEST['sucssite_session'])."\n"); + if ($action="create") { + fwrite($pipes[0], $pass1."\n"); + } } else { -// Try logging on using username and password - if (fwrite($pipes[0], $password."\n") === FALSE) { - echo "Error writing to mwpoll\n"; - } + // Try logging on using username and password + if (fwrite($pipes[0], $password."\n") === FALSE) { + echo "Error writing to mwpoll\n"; + } } $pid = fgets($pipes[1]); if ($pid === FALSE) { - echo "error reading pid.\n"; + echo "error reading pid.\n"; } $pid = trim($pid); if (!is_numeric($pid)) { - if (substr($pid, -10) =="not found.") { - // User doesn't exist - ask for a Milliways password so we can create them! - $smarty->assign("error", $pid); - $smarty->assign("body", $smarty->fetch("createaccount.html")); - $smarty->display("main.html"); - exit; - } - $smarty->assign("error", "Bad response: pid=$pid"); - $smarty->assign("body", $smarty->fetch("login.html")); - $smarty->display("main.html"); - exit; + if (substr($pid, -10) =="not found.") { + // User doesn't exist - ask for a Milliways password so we can create them! + echo $m->render('createaccount', + $obj = (object) [ + 'error' => $pid, + ] + ); + exit; + } + + echo $m->render('login', + $obj = (object) [ + 'error' => '"Bad response: pid=$pid', + ] + ); + exit; } $auth = fgets($pipes[1]); if ($auth === FALSE) { - echo "Error reading auth string\n"; + echo "Error reading auth string\n"; } $sess = array ( - "pid" => $pid, - "auth" => $auth, - "username" => $username + "pid" => $pid, + "auth" => $auth, + "username" => $username ); $mwsess = serialize($sess); setcookie("mwsess", $mwsess); -//$smarty->assign("debug", "Started new session pid=$pid auth=$auth"); - ?> diff --git a/webclient/templates/createaccount.html b/webclient/templates/createaccount.html deleted file mode 100644 index 0c3b66cd..00000000 --- a/webclient/templates/createaccount.html +++ /dev/null @@ -1,24 +0,0 @@ -

    Please choose a password for Milliways

    - -
    - - - - - - - - - - - - -
    Password: - -
    Password again: - -
    - -
    - -
    diff --git a/webclient/templates/front.html b/webclient/templates/front.html deleted file mode 100644 index d4ff0310..00000000 --- a/webclient/templates/front.html +++ /dev/null @@ -1,16 +0,0 @@ -

    Milliways III - Web Edition

    - -
      -
    - -
    - -
    - -
    - -
    - - diff --git a/webclient/templates/login.html b/webclient/templates/login.html deleted file mode 100644 index 7bfcaf86..00000000 --- a/webclient/templates/login.html +++ /dev/null @@ -1,8 +0,0 @@ -

    Milliways

    - - diff --git a/webclient/templates/main.html b/webclient/templates/main.html deleted file mode 100644 index 787717d2..00000000 --- a/webclient/templates/main.html +++ /dev/null @@ -1,15 +0,0 @@ - - - -Milliways Talker - - - - - - -{if $error}
    {$error}
    {/if} -{$body} -{if $debug}
    {$debug}
    {/if} - - diff --git a/webclient/vendor/autoload.php b/webclient/vendor/autoload.php new file mode 100644 index 00000000..4a944cb4 --- /dev/null +++ b/webclient/vendor/autoload.php @@ -0,0 +1,7 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Autoload; + +/** + * ClassLoader implements a PSR-0, PSR-4 and classmap class loader. + * + * $loader = new \Composer\Autoload\ClassLoader(); + * + * // register classes with namespaces + * $loader->add('Symfony\Component', __DIR__.'/component'); + * $loader->add('Symfony', __DIR__.'/framework'); + * + * // activate the autoloader + * $loader->register(); + * + * // to enable searching the include path (eg. for PEAR packages) + * $loader->setUseIncludePath(true); + * + * In this example, if you try to use a class in the Symfony\Component + * namespace or one of its children (Symfony\Component\Console for instance), + * the autoloader will first look for the class under the component/ + * directory, and it will then fallback to the framework/ directory if not + * found before giving up. + * + * This class is loosely based on the Symfony UniversalClassLoader. + * + * @author Fabien Potencier + * @author Jordi Boggiano + * @see http://www.php-fig.org/psr/psr-0/ + * @see http://www.php-fig.org/psr/psr-4/ + */ +class ClassLoader +{ + // PSR-4 + private $prefixLengthsPsr4 = array(); + private $prefixDirsPsr4 = array(); + private $fallbackDirsPsr4 = array(); + + // PSR-0 + private $prefixesPsr0 = array(); + private $fallbackDirsPsr0 = array(); + + private $useIncludePath = false; + private $classMap = array(); + private $classMapAuthoritative = false; + private $missingClasses = array(); + + public function getPrefixes() + { + if (!empty($this->prefixesPsr0)) { + return call_user_func_array('array_merge', $this->prefixesPsr0); + } + + return array(); + } + + public function getPrefixesPsr4() + { + return $this->prefixDirsPsr4; + } + + public function getFallbackDirs() + { + return $this->fallbackDirsPsr0; + } + + public function getFallbackDirsPsr4() + { + return $this->fallbackDirsPsr4; + } + + public function getClassMap() + { + return $this->classMap; + } + + /** + * @param array $classMap Class to filename map + */ + public function addClassMap(array $classMap) + { + if ($this->classMap) { + $this->classMap = array_merge($this->classMap, $classMap); + } else { + $this->classMap = $classMap; + } + } + + /** + * Registers a set of PSR-0 directories for a given prefix, either + * appending or prepending to the ones previously set for this prefix. + * + * @param string $prefix The prefix + * @param array|string $paths The PSR-0 root directories + * @param bool $prepend Whether to prepend the directories + */ + public function add($prefix, $paths, $prepend = false) + { + if (!$prefix) { + if ($prepend) { + $this->fallbackDirsPsr0 = array_merge( + (array) $paths, + $this->fallbackDirsPsr0 + ); + } else { + $this->fallbackDirsPsr0 = array_merge( + $this->fallbackDirsPsr0, + (array) $paths + ); + } + + return; + } + + $first = $prefix[0]; + if (!isset($this->prefixesPsr0[$first][$prefix])) { + $this->prefixesPsr0[$first][$prefix] = (array) $paths; + + return; + } + if ($prepend) { + $this->prefixesPsr0[$first][$prefix] = array_merge( + (array) $paths, + $this->prefixesPsr0[$first][$prefix] + ); + } else { + $this->prefixesPsr0[$first][$prefix] = array_merge( + $this->prefixesPsr0[$first][$prefix], + (array) $paths + ); + } + } + + /** + * Registers a set of PSR-4 directories for a given namespace, either + * appending or prepending to the ones previously set for this namespace. + * + * @param string $prefix The prefix/namespace, with trailing '\\' + * @param array|string $paths The PSR-4 base directories + * @param bool $prepend Whether to prepend the directories + * + * @throws \InvalidArgumentException + */ + public function addPsr4($prefix, $paths, $prepend = false) + { + if (!$prefix) { + // Register directories for the root namespace. + if ($prepend) { + $this->fallbackDirsPsr4 = array_merge( + (array) $paths, + $this->fallbackDirsPsr4 + ); + } else { + $this->fallbackDirsPsr4 = array_merge( + $this->fallbackDirsPsr4, + (array) $paths + ); + } + } elseif (!isset($this->prefixDirsPsr4[$prefix])) { + // Register directories for a new namespace. + $length = strlen($prefix); + if ('\\' !== $prefix[$length - 1]) { + throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); + } + $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; + $this->prefixDirsPsr4[$prefix] = (array) $paths; + } elseif ($prepend) { + // Prepend directories for an already registered namespace. + $this->prefixDirsPsr4[$prefix] = array_merge( + (array) $paths, + $this->prefixDirsPsr4[$prefix] + ); + } else { + // Append directories for an already registered namespace. + $this->prefixDirsPsr4[$prefix] = array_merge( + $this->prefixDirsPsr4[$prefix], + (array) $paths + ); + } + } + + /** + * Registers a set of PSR-0 directories for a given prefix, + * replacing any others previously set for this prefix. + * + * @param string $prefix The prefix + * @param array|string $paths The PSR-0 base directories + */ + public function set($prefix, $paths) + { + if (!$prefix) { + $this->fallbackDirsPsr0 = (array) $paths; + } else { + $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths; + } + } + + /** + * Registers a set of PSR-4 directories for a given namespace, + * replacing any others previously set for this namespace. + * + * @param string $prefix The prefix/namespace, with trailing '\\' + * @param array|string $paths The PSR-4 base directories + * + * @throws \InvalidArgumentException + */ + public function setPsr4($prefix, $paths) + { + if (!$prefix) { + $this->fallbackDirsPsr4 = (array) $paths; + } else { + $length = strlen($prefix); + if ('\\' !== $prefix[$length - 1]) { + throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); + } + $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; + $this->prefixDirsPsr4[$prefix] = (array) $paths; + } + } + + /** + * Turns on searching the include path for class files. + * + * @param bool $useIncludePath + */ + public function setUseIncludePath($useIncludePath) + { + $this->useIncludePath = $useIncludePath; + } + + /** + * Can be used to check if the autoloader uses the include path to check + * for classes. + * + * @return bool + */ + public function getUseIncludePath() + { + return $this->useIncludePath; + } + + /** + * Turns off searching the prefix and fallback directories for classes + * that have not been registered with the class map. + * + * @param bool $classMapAuthoritative + */ + public function setClassMapAuthoritative($classMapAuthoritative) + { + $this->classMapAuthoritative = $classMapAuthoritative; + } + + /** + * Should class lookup fail if not found in the current class map? + * + * @return bool + */ + public function isClassMapAuthoritative() + { + return $this->classMapAuthoritative; + } + + /** + * Registers this instance as an autoloader. + * + * @param bool $prepend Whether to prepend the autoloader or not + */ + public function register($prepend = false) + { + spl_autoload_register(array($this, 'loadClass'), true, $prepend); + } + + /** + * Unregisters this instance as an autoloader. + */ + public function unregister() + { + spl_autoload_unregister(array($this, 'loadClass')); + } + + /** + * Loads the given class or interface. + * + * @param string $class The name of the class + * @return bool|null True if loaded, null otherwise + */ + public function loadClass($class) + { + if ($file = $this->findFile($class)) { + includeFile($file); + + return true; + } + } + + /** + * Finds the path to the file where the class is defined. + * + * @param string $class The name of the class + * + * @return string|false The path if found, false otherwise + */ + public function findFile($class) + { + // work around for PHP 5.3.0 - 5.3.2 https://bugs.php.net/50731 + if ('\\' == $class[0]) { + $class = substr($class, 1); + } + + // class map lookup + if (isset($this->classMap[$class])) { + return $this->classMap[$class]; + } + if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) { + return false; + } + + $file = $this->findFileWithExtension($class, '.php'); + + // Search for Hack files if we are running on HHVM + if (false === $file && defined('HHVM_VERSION')) { + $file = $this->findFileWithExtension($class, '.hh'); + } + + if (false === $file) { + // Remember that this class does not exist. + $this->missingClasses[$class] = true; + } + + return $file; + } + + private function findFileWithExtension($class, $ext) + { + // PSR-4 lookup + $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext; + + $first = $class[0]; + if (isset($this->prefixLengthsPsr4[$first])) { + foreach ($this->prefixLengthsPsr4[$first] as $prefix => $length) { + if (0 === strpos($class, $prefix)) { + foreach ($this->prefixDirsPsr4[$prefix] as $dir) { + if (file_exists($file = $dir . DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $length))) { + return $file; + } + } + } + } + } + + // PSR-4 fallback dirs + foreach ($this->fallbackDirsPsr4 as $dir) { + if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) { + return $file; + } + } + + // PSR-0 lookup + if (false !== $pos = strrpos($class, '\\')) { + // namespaced class name + $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1) + . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR); + } else { + // PEAR-like class name + $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext; + } + + if (isset($this->prefixesPsr0[$first])) { + foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) { + if (0 === strpos($class, $prefix)) { + foreach ($dirs as $dir) { + if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { + return $file; + } + } + } + } + } + + // PSR-0 fallback dirs + foreach ($this->fallbackDirsPsr0 as $dir) { + if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { + return $file; + } + } + + // PSR-0 include paths. + if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) { + return $file; + } + + return false; + } +} + +/** + * Scope isolated include. + * + * Prevents access to $this/self from included files. + */ +function includeFile($file) +{ + include $file; +} diff --git a/webclient/vendor/composer/LICENSE b/webclient/vendor/composer/LICENSE new file mode 100644 index 00000000..1a281248 --- /dev/null +++ b/webclient/vendor/composer/LICENSE @@ -0,0 +1,21 @@ + +Copyright (c) 2016 Nils Adermann, Jordi Boggiano + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is furnished +to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + diff --git a/webclient/vendor/composer/autoload_classmap.php b/webclient/vendor/composer/autoload_classmap.php new file mode 100644 index 00000000..7a91153b --- /dev/null +++ b/webclient/vendor/composer/autoload_classmap.php @@ -0,0 +1,9 @@ + array($vendorDir . '/mustache/mustache/src'), +); diff --git a/webclient/vendor/composer/autoload_psr4.php b/webclient/vendor/composer/autoload_psr4.php new file mode 100644 index 00000000..b265c64a --- /dev/null +++ b/webclient/vendor/composer/autoload_psr4.php @@ -0,0 +1,9 @@ += 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded()); + if ($useStaticLoader) { + require_once __DIR__ . '/autoload_static.php'; + + call_user_func(\Composer\Autoload\ComposerStaticInitb86e655a208b7972d894588679fccc37::getInitializer($loader)); + } else { + $map = require __DIR__ . '/autoload_namespaces.php'; + foreach ($map as $namespace => $path) { + $loader->set($namespace, $path); + } + + $map = require __DIR__ . '/autoload_psr4.php'; + foreach ($map as $namespace => $path) { + $loader->setPsr4($namespace, $path); + } + + $classMap = require __DIR__ . '/autoload_classmap.php'; + if ($classMap) { + $loader->addClassMap($classMap); + } + } + + $loader->register(true); + + return $loader; + } +} diff --git a/webclient/vendor/composer/autoload_static.php b/webclient/vendor/composer/autoload_static.php new file mode 100644 index 00000000..da8f6a48 --- /dev/null +++ b/webclient/vendor/composer/autoload_static.php @@ -0,0 +1,26 @@ + + array ( + 'Mustache' => + array ( + 0 => __DIR__ . '/..' . '/mustache/mustache/src', + ), + ), + ); + + public static function getInitializer(ClassLoader $loader) + { + return \Closure::bind(function () use ($loader) { + $loader->prefixesPsr0 = ComposerStaticInitb86e655a208b7972d894588679fccc37::$prefixesPsr0; + + }, null, ClassLoader::class); + } +} diff --git a/webclient/vendor/composer/installed.json b/webclient/vendor/composer/installed.json new file mode 100644 index 00000000..6eec1278 --- /dev/null +++ b/webclient/vendor/composer/installed.json @@ -0,0 +1,50 @@ +[ + { + "name": "mustache/mustache", + "version": "v2.11.1", + "version_normalized": "2.11.1.0", + "source": { + "type": "git", + "url": "https://github.com/bobthecow/mustache.php.git", + "reference": "a3f6d55996dd28b58f3a909d474189a3c1aa693f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/bobthecow/mustache.php/zipball/a3f6d55996dd28b58f3a909d474189a3c1aa693f", + "reference": "a3f6d55996dd28b58f3a909d474189a3c1aa693f", + "shasum": "" + }, + "require": { + "php": ">=5.2.4" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "~1.11", + "phpunit/phpunit": "~3.7|~4.0|~5.0" + }, + "time": "2016-07-31 06:18:27", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-0": { + "Mustache": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Justin Hileman", + "email": "justin@justinhileman.info", + "homepage": "http://justinhileman.com" + } + ], + "description": "A Mustache implementation in PHP.", + "homepage": "https://github.com/bobthecow/mustache.php", + "keywords": [ + "mustache", + "templating" + ] + } +] diff --git a/webclient/vendor/mustache/mustache/.gitignore b/webclient/vendor/mustache/mustache/.gitignore new file mode 100644 index 00000000..3861f002 --- /dev/null +++ b/webclient/vendor/mustache/mustache/.gitignore @@ -0,0 +1,4 @@ +.php_cs.cache +composer.lock +mustache.php +vendor diff --git a/webclient/vendor/mustache/mustache/.gitmodules b/webclient/vendor/mustache/mustache/.gitmodules new file mode 100644 index 00000000..042ea4d3 --- /dev/null +++ b/webclient/vendor/mustache/mustache/.gitmodules @@ -0,0 +1,6 @@ +[submodule "vendor/spec"] + path = vendor/spec + url = https://github.com/mustache/spec.git +[submodule "vendor/yaml"] + path = vendor/yaml + url = https://github.com/fabpot/yaml.git diff --git a/webclient/vendor/mustache/mustache/.php_cs b/webclient/vendor/mustache/mustache/.php_cs new file mode 100644 index 00000000..d924712b --- /dev/null +++ b/webclient/vendor/mustache/mustache/.php_cs @@ -0,0 +1,26 @@ +level(Symfony\CS\FixerInterface::SYMFONY_LEVEL) + ->fixers(array( + '-concat_without_spaces', + '-pre_increment', + '-unalign_double_arrow', + '-unalign_equals', + 'align_double_arrow', + 'concat_with_spaces', + 'ordered_use', + 'strict', + )) + ->setUsingLinter(false); + +$finder = $config->getFinder() + ->in('bin') + ->in('src') + ->in('test'); + +return $config; diff --git a/webclient/vendor/mustache/mustache/.styleci.yml b/webclient/vendor/mustache/mustache/.styleci.yml new file mode 100644 index 00000000..1aebcc37 --- /dev/null +++ b/webclient/vendor/mustache/mustache/.styleci.yml @@ -0,0 +1,13 @@ +preset: symfony + +enabled: + - align_double_arrow + - concat_with_spaces + - ordered_use + - strict + +disabled: + - concat_without_spaces + - pre_increment + - unalign_double_arrow + - unalign_equals diff --git a/webclient/vendor/mustache/mustache/.travis.yml b/webclient/vendor/mustache/mustache/.travis.yml new file mode 100644 index 00000000..e68b99c6 --- /dev/null +++ b/webclient/vendor/mustache/mustache/.travis.yml @@ -0,0 +1,15 @@ +language: php + +php: + - 5.2 + - 5.3 + - 5.4 + - 5.5 + - 5.6 + - 7.0 + - hhvm + +script: + - phpunit + +sudo: false diff --git a/webclient/vendor/mustache/mustache/CONTRIBUTING.md b/webclient/vendor/mustache/mustache/CONTRIBUTING.md new file mode 100644 index 00000000..c0b323de --- /dev/null +++ b/webclient/vendor/mustache/mustache/CONTRIBUTING.md @@ -0,0 +1,35 @@ +# Contributions welcome! + + +### Here's a quick guide: + + 1. [Fork the repo on GitHub](https://github.com/bobthecow/mustache.php). + + 2. Update submodules: `git submodule update --init` + + 3. Run the test suite. We only take pull requests with passing tests, and it's great to know that you have a clean slate. Make sure you have PHPUnit 3.5+, then run `phpunit` from the project directory. + + 4. Add tests for your change. Only refactoring and documentation changes require no new tests. If you are adding functionality or fixing a bug, add a test! + + 5. Make the tests pass. + + 6. Push your fork to GitHub and submit a pull request against the `dev` branch. + + +### You can do some things to increase the chance that your pull request is accepted the first time: + + * Submit one pull request per fix or feature. + * To help with that, do all your work in a feature branch (e.g. `feature/my-alsome-feature`). + * Follow the conventions you see used in the project. + * Use `phpcs --standard=PSR2` to check your changes against the coding standard. + * Write tests that fail without your code, and pass with it. + * Don't bump version numbers. Those will be updated — per [semver](http://semver.org) — once your change is merged into `master`. + * Update any documentation: docblocks, README, examples, etc. + * ... Don't update the wiki until your change is merged and released, but make a note in your pull request so we don't forget. + + +### Mustache.php follows the PSR-* coding standards: + + * [PSR-0: Class and file naming conventions](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md) + * [PSR-1: Basic coding standard](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-1-basic-coding-standard.md) + * [PSR-2: Coding style guide](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md) diff --git a/webclient/vendor/mustache/mustache/LICENSE b/webclient/vendor/mustache/mustache/LICENSE new file mode 100644 index 00000000..e0aecc94 --- /dev/null +++ b/webclient/vendor/mustache/mustache/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2010-2015 Justin Hileman + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE +OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/webclient/vendor/mustache/mustache/README.md b/webclient/vendor/mustache/mustache/README.md new file mode 100644 index 00000000..a596ace8 --- /dev/null +++ b/webclient/vendor/mustache/mustache/README.md @@ -0,0 +1,72 @@ +Mustache.php +============ + +A [Mustache](http://mustache.github.com/) implementation in PHP. + +[![Package version](http://img.shields.io/packagist/v/mustache/mustache.svg?style=flat-square)](https://packagist.org/packages/mustache/mustache) +[![Build status](http://img.shields.io/travis/bobthecow/mustache.php/dev.svg?style=flat-square)](http://travis-ci.org/bobthecow/mustache.php) +[![StyleCI](https://styleci.io/repos/569670/shield)](https://styleci.io/repos/569670) +[![Monthly downloads](http://img.shields.io/packagist/dm/mustache/mustache.svg?style=flat-square)](https://packagist.org/packages/mustache/mustache) + + +Usage +----- + +A quick example: + +```php +render('Hello {{planet}}', array('planet' => 'World!')); // "Hello World!" +``` + + +And a more in-depth example -- this is the canonical Mustache template: + +```html+jinja +Hello {{name}} +You have just won {{value}} dollars! +{{#in_ca}} +Well, {{taxed_value}} dollars, after taxes. +{{/in_ca}} +``` + + +Create a view "context" object -- which could also be an associative array, but those don't do functions quite as well: + +```php +value - ($this->value * 0.4); + } + + public $in_ca = true; +} +``` + + +And render it: + +```php +render($template, $chris); +``` + + +And That's Not All! +------------------- + +Read [the Mustache.php documentation](https://github.com/bobthecow/mustache.php/wiki/Home) for more information. + + +See Also +-------- + + * [Readme for the Ruby Mustache implementation](http://github.com/defunkt/mustache/blob/master/README.md). + * [mustache(5)](http://mustache.github.com/mustache.5.html) man page. diff --git a/webclient/vendor/mustache/mustache/bin/build_bootstrap.php b/webclient/vendor/mustache/mustache/bin/build_bootstrap.php new file mode 100755 index 00000000..cc23b2bd --- /dev/null +++ b/webclient/vendor/mustache/mustache/bin/build_bootstrap.php @@ -0,0 +1,178 @@ +#!/usr/bin/env php + + */ +class SymfonyClassCollectionLoader +{ + private static $loaded; + + const HEADER = <<<'EOS' +\s*$/'), '', file_get_contents($r->getFileName())); + } + + $cache = $cacheDir . '/' . $name . $extension; + $header = sprintf(self::HEADER, strftime('%Y')); + self::writeCacheFile($cache, $header . substr(self::stripComments('=5.2.4" + }, + "require-dev": { + "phpunit/phpunit": "~3.7|~4.0|~5.0", + "friendsofphp/php-cs-fixer": "~1.11" + }, + "autoload": { + "psr-0": { "Mustache": "src/" } + } +} diff --git a/webclient/vendor/mustache/mustache/phpunit.xml.dist b/webclient/vendor/mustache/mustache/phpunit.xml.dist new file mode 100644 index 00000000..3c620b6f --- /dev/null +++ b/webclient/vendor/mustache/mustache/phpunit.xml.dist @@ -0,0 +1,17 @@ + + + + ./test + ./test/Mustache/Test/FiveThree + + + + ./test/Mustache/Test/FiveThree + + + + + ./src/Mustache + + + \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/src/Mustache/Autoloader.php b/webclient/vendor/mustache/mustache/src/Mustache/Autoloader.php new file mode 100644 index 00000000..b16ac142 --- /dev/null +++ b/webclient/vendor/mustache/mustache/src/Mustache/Autoloader.php @@ -0,0 +1,74 @@ +baseDir = $realDir; + } else { + $this->baseDir = $baseDir; + } + } + + /** + * Register a new instance as an SPL autoloader. + * + * @param string $baseDir Mustache library base directory (default: dirname(__FILE__).'/..') + * + * @return Mustache_Autoloader Registered Autoloader instance + */ + public static function register($baseDir = null) + { + $loader = new self($baseDir); + spl_autoload_register(array($loader, 'autoload')); + + return $loader; + } + + /** + * Autoload Mustache classes. + * + * @param string $class + */ + public function autoload($class) + { + if ($class[0] === '\\') { + $class = substr($class, 1); + } + + if (strpos($class, 'Mustache') !== 0) { + return; + } + + $file = sprintf('%s/%s.php', $this->baseDir, str_replace('_', '/', $class)); + if (is_file($file)) { + require $file; + } + } +} diff --git a/webclient/vendor/mustache/mustache/src/Mustache/Cache.php b/webclient/vendor/mustache/mustache/src/Mustache/Cache.php new file mode 100644 index 00000000..7b465abd --- /dev/null +++ b/webclient/vendor/mustache/mustache/src/Mustache/Cache.php @@ -0,0 +1,36 @@ +logger; + } + + /** + * Set a logger instance. + * + * @param Mustache_Logger|Psr\Log\LoggerInterface $logger + */ + public function setLogger($logger = null) + { + if ($logger !== null && !($logger instanceof Mustache_Logger || is_a($logger, 'Psr\\Log\\LoggerInterface'))) { + throw new Mustache_Exception_InvalidArgumentException('Expected an instance of Mustache_Logger or Psr\\Log\\LoggerInterface.'); + } + + $this->logger = $logger; + } + + /** + * Add a log record if logging is enabled. + * + * @param int $level The logging level + * @param string $message The log message + * @param array $context The log context + */ + protected function log($level, $message, array $context = array()) + { + if (isset($this->logger)) { + $this->logger->log($level, $message, $context); + } + } +} diff --git a/webclient/vendor/mustache/mustache/src/Mustache/Cache/FilesystemCache.php b/webclient/vendor/mustache/mustache/src/Mustache/Cache/FilesystemCache.php new file mode 100644 index 00000000..0dbe8f9d --- /dev/null +++ b/webclient/vendor/mustache/mustache/src/Mustache/Cache/FilesystemCache.php @@ -0,0 +1,155 @@ +cache($className, $compiledSource); + * + * The FilesystemCache benefits from any opcode caching that may be setup in your environment. So do that, k? + */ +class Mustache_Cache_FilesystemCache extends Mustache_Cache_AbstractCache +{ + private $baseDir; + private $fileMode; + + /** + * Filesystem cache constructor. + * + * @param string $baseDir Directory for compiled templates + * @param int $fileMode Override default permissions for cache files. Defaults to using the system-defined umask + */ + public function __construct($baseDir, $fileMode = null) + { + $this->baseDir = $baseDir; + $this->fileMode = $fileMode; + } + + /** + * Load the class from cache using `require_once`. + * + * @param string $key + * + * @return bool + */ + public function load($key) + { + $fileName = $this->getCacheFilename($key); + if (!is_file($fileName)) { + return false; + } + + require_once $fileName; + + return true; + } + + /** + * Cache and load the compiled class. + * + * @param string $key + * @param string $value + */ + public function cache($key, $value) + { + $fileName = $this->getCacheFilename($key); + + $this->log( + Mustache_Logger::DEBUG, + 'Writing to template cache: "{fileName}"', + array('fileName' => $fileName) + ); + + $this->writeFile($fileName, $value); + $this->load($key); + } + + /** + * Build the cache filename. + * Subclasses should override for custom cache directory structures. + * + * @param string $name + * + * @return string + */ + protected function getCacheFilename($name) + { + return sprintf('%s/%s.php', $this->baseDir, $name); + } + + /** + * Create cache directory. + * + * @throws Mustache_Exception_RuntimeException If unable to create directory + * + * @param string $fileName + * + * @return string + */ + private function buildDirectoryForFilename($fileName) + { + $dirName = dirname($fileName); + if (!is_dir($dirName)) { + $this->log( + Mustache_Logger::INFO, + 'Creating Mustache template cache directory: "{dirName}"', + array('dirName' => $dirName) + ); + + @mkdir($dirName, 0777, true); + if (!is_dir($dirName)) { + throw new Mustache_Exception_RuntimeException(sprintf('Failed to create cache directory "%s".', $dirName)); + } + } + + return $dirName; + } + + /** + * Write cache file. + * + * @throws Mustache_Exception_RuntimeException If unable to write file + * + * @param string $fileName + * @param string $value + */ + private function writeFile($fileName, $value) + { + $dirName = $this->buildDirectoryForFilename($fileName); + + $this->log( + Mustache_Logger::DEBUG, + 'Caching compiled template to "{fileName}"', + array('fileName' => $fileName) + ); + + $tempFile = tempnam($dirName, basename($fileName)); + if (false !== @file_put_contents($tempFile, $value)) { + if (@rename($tempFile, $fileName)) { + $mode = isset($this->fileMode) ? $this->fileMode : (0666 & ~umask()); + @chmod($fileName, $mode); + + return; + } + + $this->log( + Mustache_Logger::ERROR, + 'Unable to rename Mustache temp cache file: "{tempName}" -> "{fileName}"', + array('tempName' => $tempFile, 'fileName' => $fileName) + ); + } + + throw new Mustache_Exception_RuntimeException(sprintf('Failed to write cache file "%s".', $fileName)); + } +} diff --git a/webclient/vendor/mustache/mustache/src/Mustache/Cache/NoopCache.php b/webclient/vendor/mustache/mustache/src/Mustache/Cache/NoopCache.php new file mode 100644 index 00000000..ca0007de --- /dev/null +++ b/webclient/vendor/mustache/mustache/src/Mustache/Cache/NoopCache.php @@ -0,0 +1,47 @@ +log( + Mustache_Logger::WARNING, + 'Template cache disabled, evaluating "{className}" class at runtime', + array('className' => $key) + ); + eval('?>' . $value); + } +} diff --git a/webclient/vendor/mustache/mustache/src/Mustache/Compiler.php b/webclient/vendor/mustache/mustache/src/Mustache/Compiler.php new file mode 100644 index 00000000..2a831d6e --- /dev/null +++ b/webclient/vendor/mustache/mustache/src/Mustache/Compiler.php @@ -0,0 +1,687 @@ +pragmas = $this->defaultPragmas; + $this->sections = array(); + $this->blocks = array(); + $this->source = $source; + $this->indentNextLine = true; + $this->customEscape = $customEscape; + $this->entityFlags = $entityFlags; + $this->charset = $charset; + $this->strictCallables = $strictCallables; + + return $this->writeCode($tree, $name); + } + + /** + * Enable pragmas across all templates, regardless of the presence of pragma + * tags in the individual templates. + * + * @internal Users should set global pragmas in Mustache_Engine, not here :) + * + * @param string[] $pragmas + */ + public function setPragmas(array $pragmas) + { + $this->pragmas = array(); + foreach ($pragmas as $pragma) { + $this->pragmas[$pragma] = true; + } + $this->defaultPragmas = $this->pragmas; + } + + /** + * Helper function for walking the Mustache token parse tree. + * + * @throws Mustache_Exception_SyntaxException upon encountering unknown token types + * + * @param array $tree Parse tree of Mustache tokens + * @param int $level (default: 0) + * + * @return string Generated PHP source code + */ + private function walk(array $tree, $level = 0) + { + $code = ''; + $level++; + foreach ($tree as $node) { + switch ($node[Mustache_Tokenizer::TYPE]) { + case Mustache_Tokenizer::T_PRAGMA: + $this->pragmas[$node[Mustache_Tokenizer::NAME]] = true; + break; + + case Mustache_Tokenizer::T_SECTION: + $code .= $this->section( + $node[Mustache_Tokenizer::NODES], + $node[Mustache_Tokenizer::NAME], + isset($node[Mustache_Tokenizer::FILTERS]) ? $node[Mustache_Tokenizer::FILTERS] : array(), + $node[Mustache_Tokenizer::INDEX], + $node[Mustache_Tokenizer::END], + $node[Mustache_Tokenizer::OTAG], + $node[Mustache_Tokenizer::CTAG], + $level + ); + break; + + case Mustache_Tokenizer::T_INVERTED: + $code .= $this->invertedSection( + $node[Mustache_Tokenizer::NODES], + $node[Mustache_Tokenizer::NAME], + isset($node[Mustache_Tokenizer::FILTERS]) ? $node[Mustache_Tokenizer::FILTERS] : array(), + $level + ); + break; + + case Mustache_Tokenizer::T_PARTIAL: + $code .= $this->partial( + $node[Mustache_Tokenizer::NAME], + isset($node[Mustache_Tokenizer::INDENT]) ? $node[Mustache_Tokenizer::INDENT] : '', + $level + ); + break; + + case Mustache_Tokenizer::T_PARENT: + $code .= $this->parent( + $node[Mustache_Tokenizer::NAME], + isset($node[Mustache_Tokenizer::INDENT]) ? $node[Mustache_Tokenizer::INDENT] : '', + $node[Mustache_Tokenizer::NODES], + $level + ); + break; + + case Mustache_Tokenizer::T_BLOCK_ARG: + $code .= $this->blockArg( + $node[Mustache_Tokenizer::NODES], + $node[Mustache_Tokenizer::NAME], + $node[Mustache_Tokenizer::INDEX], + $node[Mustache_Tokenizer::END], + $node[Mustache_Tokenizer::OTAG], + $node[Mustache_Tokenizer::CTAG], + $level + ); + break; + + case Mustache_Tokenizer::T_BLOCK_VAR: + $code .= $this->blockVar( + $node[Mustache_Tokenizer::NODES], + $node[Mustache_Tokenizer::NAME], + $node[Mustache_Tokenizer::INDEX], + $node[Mustache_Tokenizer::END], + $node[Mustache_Tokenizer::OTAG], + $node[Mustache_Tokenizer::CTAG], + $level + ); + break; + + case Mustache_Tokenizer::T_COMMENT: + break; + + case Mustache_Tokenizer::T_ESCAPED: + case Mustache_Tokenizer::T_UNESCAPED: + case Mustache_Tokenizer::T_UNESCAPED_2: + $code .= $this->variable( + $node[Mustache_Tokenizer::NAME], + isset($node[Mustache_Tokenizer::FILTERS]) ? $node[Mustache_Tokenizer::FILTERS] : array(), + $node[Mustache_Tokenizer::TYPE] === Mustache_Tokenizer::T_ESCAPED, + $level + ); + break; + + case Mustache_Tokenizer::T_TEXT: + $code .= $this->text($node[Mustache_Tokenizer::VALUE], $level); + break; + + default: + throw new Mustache_Exception_SyntaxException(sprintf('Unknown token type: %s', $node[Mustache_Tokenizer::TYPE]), $node); + } + } + + return $code; + } + + const KLASS = 'lambdaHelper = new Mustache_LambdaHelper($this->mustache, $context); + $buffer = \'\'; + $blocksContext = array(); + %s + + return $buffer; + } + %s + %s + }'; + + const KLASS_NO_LAMBDAS = 'walk($tree); + $sections = implode("\n", $this->sections); + $blocks = implode("\n", $this->blocks); + $klass = empty($this->sections) && empty($this->blocks) ? self::KLASS_NO_LAMBDAS : self::KLASS; + + $callable = $this->strictCallables ? $this->prepare(self::STRICT_CALLABLE) : ''; + + return sprintf($this->prepare($klass, 0, false, true), $name, $callable, $code, $sections, $blocks); + } + + const BLOCK_VAR = ' + $blockFunction = $context->findInBlock(%s); + if (is_callable($blockFunction)) { + $buffer .= call_user_func($blockFunction, $context); + } else {%s + } + '; + + /** + * Generate Mustache Template inheritance block variable PHP source. + * + * @param array $nodes Array of child tokens + * @param string $id Section name + * @param int $start Section start offset + * @param int $end Section end offset + * @param string $otag Current Mustache opening tag + * @param string $ctag Current Mustache closing tag + * @param int $level + * + * @return string Generated PHP source code + */ + private function blockVar($nodes, $id, $start, $end, $otag, $ctag, $level) + { + $id = var_export($id, true); + + return sprintf($this->prepare(self::BLOCK_VAR, $level), $id, $this->walk($nodes, $level)); + } + + const BLOCK_ARG = '$blocksContext[%s] = array($this, \'block%s\');'; + + /** + * Generate Mustache Template inheritance block argument PHP source. + * + * @param array $nodes Array of child tokens + * @param string $id Section name + * @param int $start Section start offset + * @param int $end Section end offset + * @param string $otag Current Mustache opening tag + * @param string $ctag Current Mustache closing tag + * @param int $level + * + * @return string Generated PHP source code + */ + private function blockArg($nodes, $id, $start, $end, $otag, $ctag, $level) + { + $key = $this->block($nodes); + $keystr = var_export($key, true); + $id = var_export($id, true); + + return sprintf($this->prepare(self::BLOCK_ARG, 1), $id, $key); + } + + const BLOCK_FUNCTION = ' + public function block%s($context) + { + $indent = $buffer = \'\'; + $blocksContext = array();%s + + return $buffer; + } + '; + + /** + * Generate Mustache Template inheritance block function PHP source. + * + * @param array $nodes Array of child tokens + * + * @return string key of new block function + */ + private function block($nodes) + { + $code = $this->walk($nodes, 0); + $key = ucfirst(md5($code)); + + if (!isset($this->blocks[$key])) { + $this->blocks[$key] = sprintf($this->prepare(self::BLOCK_FUNCTION, 0), $key, $code); + } + + return $key; + } + + const SECTION_CALL = ' + // %s section + $value = $context->%s(%s);%s + $buffer .= $this->section%s($context, $indent, $value); + '; + + const SECTION = ' + private function section%s(Mustache_Context $context, $indent, $value) + { + $buffer = \'\'; + $blocksContext = array(); + + if (%s) { + $source = %s; + $result = call_user_func($value, $source, %s); + if (strpos($result, \'{{\') === false) { + $buffer .= $result; + } else { + $buffer .= $this->mustache + ->loadLambda((string) $result%s) + ->renderInternal($context); + } + } elseif (!empty($value)) { + $values = $this->isIterable($value) ? $value : array($value); + foreach ($values as $value) { + $context->push($value); + %s + $context->pop(); + } + } + + return $buffer; + } + '; + + /** + * Generate Mustache Template section PHP source. + * + * @param array $nodes Array of child tokens + * @param string $id Section name + * @param string[] $filters Array of filters + * @param int $start Section start offset + * @param int $end Section end offset + * @param string $otag Current Mustache opening tag + * @param string $ctag Current Mustache closing tag + * @param int $level + * @param bool $arg (default: false) + * + * @return string Generated section PHP source code + */ + private function section($nodes, $id, $filters, $start, $end, $otag, $ctag, $level, $arg = false) + { + $source = var_export(substr($this->source, $start, $end - $start), true); + $callable = $this->getCallable(); + + if ($otag !== '{{' || $ctag !== '}}') { + $delimTag = var_export(sprintf('{{= %s %s =}}', $otag, $ctag), true); + $helper = sprintf('$this->lambdaHelper->withDelimiters(%s)', $delimTag); + $delims = ', ' . $delimTag; + } else { + $helper = '$this->lambdaHelper'; + $delims = ''; + } + + $key = ucfirst(md5($delims . "\n" . $source)); + + if (!isset($this->sections[$key])) { + $this->sections[$key] = sprintf($this->prepare(self::SECTION), $key, $callable, $source, $helper, $delims, $this->walk($nodes, 2)); + } + + if ($arg === true) { + return $key; + } else { + $method = $this->getFindMethod($id); + $id = var_export($id, true); + $filters = $this->getFilters($filters, $level); + + return sprintf($this->prepare(self::SECTION_CALL, $level), $id, $method, $id, $filters, $key); + } + } + + const INVERTED_SECTION = ' + // %s inverted section + $value = $context->%s(%s);%s + if (empty($value)) { + %s + } + '; + + /** + * Generate Mustache Template inverted section PHP source. + * + * @param array $nodes Array of child tokens + * @param string $id Section name + * @param string[] $filters Array of filters + * @param int $level + * + * @return string Generated inverted section PHP source code + */ + private function invertedSection($nodes, $id, $filters, $level) + { + $method = $this->getFindMethod($id); + $id = var_export($id, true); + $filters = $this->getFilters($filters, $level); + + return sprintf($this->prepare(self::INVERTED_SECTION, $level), $id, $method, $id, $filters, $this->walk($nodes, $level)); + } + + const PARTIAL_INDENT = ', $indent . %s'; + const PARTIAL = ' + if ($partial = $this->mustache->loadPartial(%s)) { + $buffer .= $partial->renderInternal($context%s); + } + '; + + /** + * Generate Mustache Template partial call PHP source. + * + * @param string $id Partial name + * @param string $indent Whitespace indent to apply to partial + * @param int $level + * + * @return string Generated partial call PHP source code + */ + private function partial($id, $indent, $level) + { + if ($indent !== '') { + $indentParam = sprintf(self::PARTIAL_INDENT, var_export($indent, true)); + } else { + $indentParam = ''; + } + + return sprintf( + $this->prepare(self::PARTIAL, $level), + var_export($id, true), + $indentParam + ); + } + + const PARENT = ' + %s + + if ($parent = $this->mustache->loadPartial(%s)) { + $context->pushBlockContext($blocksContext); + $buffer .= $parent->renderInternal($context, $indent); + $context->popBlockContext(); + } + '; + + /** + * Generate Mustache Template inheritance parent call PHP source. + * + * @param string $id Parent tag name + * @param string $indent Whitespace indent to apply to parent + * @param array $children Child nodes + * @param int $level + * + * @return string Generated PHP source code + */ + private function parent($id, $indent, array $children, $level) + { + $realChildren = array_filter($children, array(__CLASS__, 'onlyBlockArgs')); + + return sprintf( + $this->prepare(self::PARENT, $level), + $this->walk($realChildren, $level), + var_export($id, true), + var_export($indent, true) + ); + } + + /** + * Helper method for filtering out non-block-arg tokens. + * + * @param array $node + * + * @return bool True if $node is a block arg token + */ + private static function onlyBlockArgs(array $node) + { + return $node[Mustache_Tokenizer::TYPE] === Mustache_Tokenizer::T_BLOCK_ARG; + } + + const VARIABLE = ' + $value = $this->resolveValue($context->%s(%s), $context);%s + $buffer .= %s%s; + '; + + /** + * Generate Mustache Template variable interpolation PHP source. + * + * @param string $id Variable name + * @param string[] $filters Array of filters + * @param bool $escape Escape the variable value for output? + * @param int $level + * + * @return string Generated variable interpolation PHP source + */ + private function variable($id, $filters, $escape, $level) + { + $method = $this->getFindMethod($id); + $id = ($method !== 'last') ? var_export($id, true) : ''; + $filters = $this->getFilters($filters, $level); + $value = $escape ? $this->getEscape() : '$value'; + + return sprintf($this->prepare(self::VARIABLE, $level), $method, $id, $filters, $this->flushIndent(), $value); + } + + const FILTER = ' + $filter = $context->%s(%s); + if (!(%s)) { + throw new Mustache_Exception_UnknownFilterException(%s); + } + $value = call_user_func($filter, $value);%s + '; + + /** + * Generate Mustache Template variable filtering PHP source. + * + * @param string[] $filters Array of filters + * @param int $level + * + * @return string Generated filter PHP source + */ + private function getFilters(array $filters, $level) + { + if (empty($filters)) { + return ''; + } + + $name = array_shift($filters); + $method = $this->getFindMethod($name); + $filter = ($method !== 'last') ? var_export($name, true) : ''; + $callable = $this->getCallable('$filter'); + $msg = var_export($name, true); + + return sprintf($this->prepare(self::FILTER, $level), $method, $filter, $callable, $msg, $this->getFilters($filters, $level)); + } + + const LINE = '$buffer .= "\n";'; + const TEXT = '$buffer .= %s%s;'; + + /** + * Generate Mustache Template output Buffer call PHP source. + * + * @param string $text + * @param int $level + * + * @return string Generated output Buffer call PHP source + */ + private function text($text, $level) + { + $indentNextLine = (substr($text, -1) === "\n"); + $code = sprintf($this->prepare(self::TEXT, $level), $this->flushIndent(), var_export($text, true)); + $this->indentNextLine = $indentNextLine; + + return $code; + } + + /** + * Prepare PHP source code snippet for output. + * + * @param string $text + * @param int $bonus Additional indent level (default: 0) + * @param bool $prependNewline Prepend a newline to the snippet? (default: true) + * @param bool $appendNewline Append a newline to the snippet? (default: false) + * + * @return string PHP source code snippet + */ + private function prepare($text, $bonus = 0, $prependNewline = true, $appendNewline = false) + { + $text = ($prependNewline ? "\n" : '') . trim($text); + if ($prependNewline) { + $bonus++; + } + if ($appendNewline) { + $text .= "\n"; + } + + return preg_replace("/\n( {8})?/", "\n" . str_repeat(' ', $bonus * 4), $text); + } + + const DEFAULT_ESCAPE = 'htmlspecialchars(%s, %s, %s)'; + const CUSTOM_ESCAPE = 'call_user_func($this->mustache->getEscape(), %s)'; + + /** + * Get the current escaper. + * + * @param string $value (default: '$value') + * + * @return string Either a custom callback, or an inline call to `htmlspecialchars` + */ + private function getEscape($value = '$value') + { + if ($this->customEscape) { + return sprintf(self::CUSTOM_ESCAPE, $value); + } + + return sprintf(self::DEFAULT_ESCAPE, $value, var_export($this->entityFlags, true), var_export($this->charset, true)); + } + + /** + * Select the appropriate Context `find` method for a given $id. + * + * The return value will be one of `find`, `findDot` or `last`. + * + * @see Mustache_Context::find + * @see Mustache_Context::findDot + * @see Mustache_Context::last + * + * @param string $id Variable name + * + * @return string `find` method name + */ + private function getFindMethod($id) + { + if ($id === '.') { + return 'last'; + } + + if (isset($this->pragmas[Mustache_Engine::PRAGMA_ANCHORED_DOT]) && $this->pragmas[Mustache_Engine::PRAGMA_ANCHORED_DOT]) { + if (substr($id, 0, 1) === '.') { + return 'findAnchoredDot'; + } + } + + if (strpos($id, '.') === false) { + return 'find'; + } + + return 'findDot'; + } + + const IS_CALLABLE = '!is_string(%s) && is_callable(%s)'; + const STRICT_IS_CALLABLE = 'is_object(%s) && is_callable(%s)'; + + /** + * Helper function to compile strict vs lax "is callable" logic. + * + * @param string $variable (default: '$value') + * + * @return string "is callable" logic + */ + private function getCallable($variable = '$value') + { + $tpl = $this->strictCallables ? self::STRICT_IS_CALLABLE : self::IS_CALLABLE; + + return sprintf($tpl, $variable, $variable); + } + + const LINE_INDENT = '$indent . '; + + /** + * Get the current $indent prefix to write to the buffer. + * + * @return string "$indent . " or "" + */ + private function flushIndent() + { + if (!$this->indentNextLine) { + return ''; + } + + $this->indentNextLine = false; + + return self::LINE_INDENT; + } +} diff --git a/webclient/vendor/mustache/mustache/src/Mustache/Context.php b/webclient/vendor/mustache/mustache/src/Mustache/Context.php new file mode 100644 index 00000000..f59faea8 --- /dev/null +++ b/webclient/vendor/mustache/mustache/src/Mustache/Context.php @@ -0,0 +1,242 @@ +stack = array($context); + } + } + + /** + * Push a new Context frame onto the stack. + * + * @param mixed $value Object or array to use for context + */ + public function push($value) + { + array_push($this->stack, $value); + } + + /** + * Push a new Context frame onto the block context stack. + * + * @param mixed $value Object or array to use for block context + */ + public function pushBlockContext($value) + { + array_push($this->blockStack, $value); + } + + /** + * Pop the last Context frame from the stack. + * + * @return mixed Last Context frame (object or array) + */ + public function pop() + { + return array_pop($this->stack); + } + + /** + * Pop the last block Context frame from the stack. + * + * @return mixed Last block Context frame (object or array) + */ + public function popBlockContext() + { + return array_pop($this->blockStack); + } + + /** + * Get the last Context frame. + * + * @return mixed Last Context frame (object or array) + */ + public function last() + { + return end($this->stack); + } + + /** + * Find a variable in the Context stack. + * + * Starting with the last Context frame (the context of the innermost section), and working back to the top-level + * rendering context, look for a variable with the given name: + * + * * If the Context frame is an associative array which contains the key $id, returns the value of that element. + * * If the Context frame is an object, this will check first for a public method, then a public property named + * $id. Failing both of these, it will try `__isset` and `__get` magic methods. + * * If a value named $id is not found in any Context frame, returns an empty string. + * + * @param string $id Variable name + * + * @return mixed Variable value, or '' if not found + */ + public function find($id) + { + return $this->findVariableInStack($id, $this->stack); + } + + /** + * Find a 'dot notation' variable in the Context stack. + * + * Note that dot notation traversal bubbles through scope differently than the regular find method. After finding + * the initial chunk of the dotted name, each subsequent chunk is searched for only within the value of the previous + * result. For example, given the following context stack: + * + * $data = array( + * 'name' => 'Fred', + * 'child' => array( + * 'name' => 'Bob' + * ), + * ); + * + * ... and the Mustache following template: + * + * {{ child.name }} + * + * ... the `name` value is only searched for within the `child` value of the global Context, not within parent + * Context frames. + * + * @param string $id Dotted variable selector + * + * @return mixed Variable value, or '' if not found + */ + public function findDot($id) + { + $chunks = explode('.', $id); + $first = array_shift($chunks); + $value = $this->findVariableInStack($first, $this->stack); + + foreach ($chunks as $chunk) { + if ($value === '') { + return $value; + } + + $value = $this->findVariableInStack($chunk, array($value)); + } + + return $value; + } + + /** + * Find an 'anchored dot notation' variable in the Context stack. + * + * This is the same as findDot(), except it looks in the top of the context + * stack for the first value, rather than searching the whole context stack + * and starting from there. + * + * @see Mustache_Context::findDot + * + * @throws Mustache_Exception_InvalidArgumentException if given an invalid anchored dot $id + * + * @param string $id Dotted variable selector + * + * @return mixed Variable value, or '' if not found + */ + public function findAnchoredDot($id) + { + $chunks = explode('.', $id); + $first = array_shift($chunks); + if ($first !== '') { + throw new Mustache_Exception_InvalidArgumentException(sprintf('Unexpected id for findAnchoredDot: %s', $id)); + } + + $value = $this->last(); + + foreach ($chunks as $chunk) { + if ($value === '') { + return $value; + } + + $value = $this->findVariableInStack($chunk, array($value)); + } + + return $value; + } + + /** + * Find an argument in the block context stack. + * + * @param string $id + * + * @return mixed Variable value, or '' if not found + */ + public function findInBlock($id) + { + foreach ($this->blockStack as $context) { + if (array_key_exists($id, $context)) { + return $context[$id]; + } + } + + return ''; + } + + /** + * Helper function to find a variable in the Context stack. + * + * @see Mustache_Context::find + * + * @param string $id Variable name + * @param array $stack Context stack + * + * @return mixed Variable value, or '' if not found + */ + private function findVariableInStack($id, array $stack) + { + for ($i = count($stack) - 1; $i >= 0; $i--) { + $frame = &$stack[$i]; + + switch (gettype($frame)) { + case 'object': + if (!($frame instanceof Closure)) { + // Note that is_callable() *will not work here* + // See https://github.com/bobthecow/mustache.php/wiki/Magic-Methods + if (method_exists($frame, $id)) { + return $frame->$id(); + } + + if (isset($frame->$id)) { + return $frame->$id; + } + + if ($frame instanceof ArrayAccess && isset($frame[$id])) { + return $frame[$id]; + } + } + break; + + case 'array': + if (array_key_exists($id, $frame)) { + return $frame[$id]; + } + break; + } + } + + return ''; + } +} diff --git a/webclient/vendor/mustache/mustache/src/Mustache/Engine.php b/webclient/vendor/mustache/mustache/src/Mustache/Engine.php new file mode 100644 index 00000000..856d4efe --- /dev/null +++ b/webclient/vendor/mustache/mustache/src/Mustache/Engine.php @@ -0,0 +1,787 @@ + true, + self::PRAGMA_BLOCKS => true, + self::PRAGMA_ANCHORED_DOT => true, + ); + + // Template cache + private $templates = array(); + + // Environment + private $templateClassPrefix = '__Mustache_'; + private $cache; + private $lambdaCache; + private $cacheLambdaTemplates = false; + private $loader; + private $partialsLoader; + private $helpers; + private $escape; + private $entityFlags = ENT_COMPAT; + private $charset = 'UTF-8'; + private $logger; + private $strictCallables = false; + private $pragmas = array(); + + // Services + private $tokenizer; + private $parser; + private $compiler; + + /** + * Mustache class constructor. + * + * Passing an $options array allows overriding certain Mustache options during instantiation: + * + * $options = array( + * // The class prefix for compiled templates. Defaults to '__Mustache_'. + * 'template_class_prefix' => '__MyTemplates_', + * + * // A Mustache cache instance or a cache directory string for compiled templates. + * // Mustache will not cache templates unless this is set. + * 'cache' => dirname(__FILE__).'/tmp/cache/mustache', + * + * // Override default permissions for cache files. Defaults to using the system-defined umask. It is + * // *strongly* recommended that you configure your umask properly rather than overriding permissions here. + * 'cache_file_mode' => 0666, + * + * // Optionally, enable caching for lambda section templates. This is generally not recommended, as lambda + * // sections are often too dynamic to benefit from caching. + * 'cache_lambda_templates' => true, + * + * // A Mustache template loader instance. Uses a StringLoader if not specified. + * 'loader' => new Mustache_Loader_FilesystemLoader(dirname(__FILE__).'/views'), + * + * // A Mustache loader instance for partials. + * 'partials_loader' => new Mustache_Loader_FilesystemLoader(dirname(__FILE__).'/views/partials'), + * + * // An array of Mustache partials. Useful for quick-and-dirty string template loading, but not as + * // efficient or lazy as a Filesystem (or database) loader. + * 'partials' => array('foo' => file_get_contents(dirname(__FILE__).'/views/partials/foo.mustache')), + * + * // An array of 'helpers'. Helpers can be global variables or objects, closures (e.g. for higher order + * // sections), or any other valid Mustache context value. They will be prepended to the context stack, + * // so they will be available in any template loaded by this Mustache instance. + * 'helpers' => array('i18n' => function ($text) { + * // do something translatey here... + * }), + * + * // An 'escape' callback, responsible for escaping double-mustache variables. + * 'escape' => function ($value) { + * return htmlspecialchars($buffer, ENT_COMPAT, 'UTF-8'); + * }, + * + * // Type argument for `htmlspecialchars`. Defaults to ENT_COMPAT. You may prefer ENT_QUOTES. + * 'entity_flags' => ENT_QUOTES, + * + * // Character set for `htmlspecialchars`. Defaults to 'UTF-8'. Use 'UTF-8'. + * 'charset' => 'ISO-8859-1', + * + * // A Mustache Logger instance. No logging will occur unless this is set. Using a PSR-3 compatible + * // logging library -- such as Monolog -- is highly recommended. A simple stream logger implementation is + * // available as well: + * 'logger' => new Mustache_Logger_StreamLogger('php://stderr'), + * + * // Only treat Closure instances and invokable classes as callable. If true, values like + * // `array('ClassName', 'methodName')` and `array($classInstance, 'methodName')`, which are traditionally + * // "callable" in PHP, are not called to resolve variables for interpolation or section contexts. This + * // helps protect against arbitrary code execution when user input is passed directly into the template. + * // This currently defaults to false, but will default to true in v3.0. + * 'strict_callables' => true, + * + * // Enable pragmas across all templates, regardless of the presence of pragma tags in the individual + * // templates. + * 'pragmas' => [Mustache_Engine::PRAGMA_FILTERS], + * ); + * + * @throws Mustache_Exception_InvalidArgumentException If `escape` option is not callable + * + * @param array $options (default: array()) + */ + public function __construct(array $options = array()) + { + if (isset($options['template_class_prefix'])) { + $this->templateClassPrefix = $options['template_class_prefix']; + } + + if (isset($options['cache'])) { + $cache = $options['cache']; + + if (is_string($cache)) { + $mode = isset($options['cache_file_mode']) ? $options['cache_file_mode'] : null; + $cache = new Mustache_Cache_FilesystemCache($cache, $mode); + } + + $this->setCache($cache); + } + + if (isset($options['cache_lambda_templates'])) { + $this->cacheLambdaTemplates = (bool) $options['cache_lambda_templates']; + } + + if (isset($options['loader'])) { + $this->setLoader($options['loader']); + } + + if (isset($options['partials_loader'])) { + $this->setPartialsLoader($options['partials_loader']); + } + + if (isset($options['partials'])) { + $this->setPartials($options['partials']); + } + + if (isset($options['helpers'])) { + $this->setHelpers($options['helpers']); + } + + if (isset($options['escape'])) { + if (!is_callable($options['escape'])) { + throw new Mustache_Exception_InvalidArgumentException('Mustache Constructor "escape" option must be callable'); + } + + $this->escape = $options['escape']; + } + + if (isset($options['entity_flags'])) { + $this->entityFlags = $options['entity_flags']; + } + + if (isset($options['charset'])) { + $this->charset = $options['charset']; + } + + if (isset($options['logger'])) { + $this->setLogger($options['logger']); + } + + if (isset($options['strict_callables'])) { + $this->strictCallables = $options['strict_callables']; + } + + if (isset($options['pragmas'])) { + foreach ($options['pragmas'] as $pragma) { + if (!isset(self::$knownPragmas[$pragma])) { + throw new Mustache_Exception_InvalidArgumentException(sprintf('Unknown pragma: "%s".', $pragma)); + } + $this->pragmas[$pragma] = true; + } + } + } + + /** + * Shortcut 'render' invocation. + * + * Equivalent to calling `$mustache->loadTemplate($template)->render($context);` + * + * @see Mustache_Engine::loadTemplate + * @see Mustache_Template::render + * + * @param string $template + * @param mixed $context (default: array()) + * + * @return string Rendered template + */ + public function render($template, $context = array()) + { + return $this->loadTemplate($template)->render($context); + } + + /** + * Get the current Mustache escape callback. + * + * @return callable|null + */ + public function getEscape() + { + return $this->escape; + } + + /** + * Get the current Mustache entitity type to escape. + * + * @return int + */ + public function getEntityFlags() + { + return $this->entityFlags; + } + + /** + * Get the current Mustache character set. + * + * @return string + */ + public function getCharset() + { + return $this->charset; + } + + /** + * Get the current globally enabled pragmas. + * + * @return array + */ + public function getPragmas() + { + return array_keys($this->pragmas); + } + + /** + * Set the Mustache template Loader instance. + * + * @param Mustache_Loader $loader + */ + public function setLoader(Mustache_Loader $loader) + { + $this->loader = $loader; + } + + /** + * Get the current Mustache template Loader instance. + * + * If no Loader instance has been explicitly specified, this method will instantiate and return + * a StringLoader instance. + * + * @return Mustache_Loader + */ + public function getLoader() + { + if (!isset($this->loader)) { + $this->loader = new Mustache_Loader_StringLoader(); + } + + return $this->loader; + } + + /** + * Set the Mustache partials Loader instance. + * + * @param Mustache_Loader $partialsLoader + */ + public function setPartialsLoader(Mustache_Loader $partialsLoader) + { + $this->partialsLoader = $partialsLoader; + } + + /** + * Get the current Mustache partials Loader instance. + * + * If no Loader instance has been explicitly specified, this method will instantiate and return + * an ArrayLoader instance. + * + * @return Mustache_Loader + */ + public function getPartialsLoader() + { + if (!isset($this->partialsLoader)) { + $this->partialsLoader = new Mustache_Loader_ArrayLoader(); + } + + return $this->partialsLoader; + } + + /** + * Set partials for the current partials Loader instance. + * + * @throws Mustache_Exception_RuntimeException If the current Loader instance is immutable + * + * @param array $partials (default: array()) + */ + public function setPartials(array $partials = array()) + { + if (!isset($this->partialsLoader)) { + $this->partialsLoader = new Mustache_Loader_ArrayLoader(); + } + + if (!$this->partialsLoader instanceof Mustache_Loader_MutableLoader) { + throw new Mustache_Exception_RuntimeException('Unable to set partials on an immutable Mustache Loader instance'); + } + + $this->partialsLoader->setTemplates($partials); + } + + /** + * Set an array of Mustache helpers. + * + * An array of 'helpers'. Helpers can be global variables or objects, closures (e.g. for higher order sections), or + * any other valid Mustache context value. They will be prepended to the context stack, so they will be available in + * any template loaded by this Mustache instance. + * + * @throws Mustache_Exception_InvalidArgumentException if $helpers is not an array or Traversable + * + * @param array|Traversable $helpers + */ + public function setHelpers($helpers) + { + if (!is_array($helpers) && !$helpers instanceof Traversable) { + throw new Mustache_Exception_InvalidArgumentException('setHelpers expects an array of helpers'); + } + + $this->getHelpers()->clear(); + + foreach ($helpers as $name => $helper) { + $this->addHelper($name, $helper); + } + } + + /** + * Get the current set of Mustache helpers. + * + * @see Mustache_Engine::setHelpers + * + * @return Mustache_HelperCollection + */ + public function getHelpers() + { + if (!isset($this->helpers)) { + $this->helpers = new Mustache_HelperCollection(); + } + + return $this->helpers; + } + + /** + * Add a new Mustache helper. + * + * @see Mustache_Engine::setHelpers + * + * @param string $name + * @param mixed $helper + */ + public function addHelper($name, $helper) + { + $this->getHelpers()->add($name, $helper); + } + + /** + * Get a Mustache helper by name. + * + * @see Mustache_Engine::setHelpers + * + * @param string $name + * + * @return mixed Helper + */ + public function getHelper($name) + { + return $this->getHelpers()->get($name); + } + + /** + * Check whether this Mustache instance has a helper. + * + * @see Mustache_Engine::setHelpers + * + * @param string $name + * + * @return bool True if the helper is present + */ + public function hasHelper($name) + { + return $this->getHelpers()->has($name); + } + + /** + * Remove a helper by name. + * + * @see Mustache_Engine::setHelpers + * + * @param string $name + */ + public function removeHelper($name) + { + $this->getHelpers()->remove($name); + } + + /** + * Set the Mustache Logger instance. + * + * @throws Mustache_Exception_InvalidArgumentException If logger is not an instance of Mustache_Logger or Psr\Log\LoggerInterface + * + * @param Mustache_Logger|Psr\Log\LoggerInterface $logger + */ + public function setLogger($logger = null) + { + if ($logger !== null && !($logger instanceof Mustache_Logger || is_a($logger, 'Psr\\Log\\LoggerInterface'))) { + throw new Mustache_Exception_InvalidArgumentException('Expected an instance of Mustache_Logger or Psr\\Log\\LoggerInterface.'); + } + + if ($this->getCache()->getLogger() === null) { + $this->getCache()->setLogger($logger); + } + + $this->logger = $logger; + } + + /** + * Get the current Mustache Logger instance. + * + * @return Mustache_Logger|Psr\Log\LoggerInterface + */ + public function getLogger() + { + return $this->logger; + } + + /** + * Set the Mustache Tokenizer instance. + * + * @param Mustache_Tokenizer $tokenizer + */ + public function setTokenizer(Mustache_Tokenizer $tokenizer) + { + $this->tokenizer = $tokenizer; + } + + /** + * Get the current Mustache Tokenizer instance. + * + * If no Tokenizer instance has been explicitly specified, this method will instantiate and return a new one. + * + * @return Mustache_Tokenizer + */ + public function getTokenizer() + { + if (!isset($this->tokenizer)) { + $this->tokenizer = new Mustache_Tokenizer(); + } + + return $this->tokenizer; + } + + /** + * Set the Mustache Parser instance. + * + * @param Mustache_Parser $parser + */ + public function setParser(Mustache_Parser $parser) + { + $this->parser = $parser; + } + + /** + * Get the current Mustache Parser instance. + * + * If no Parser instance has been explicitly specified, this method will instantiate and return a new one. + * + * @return Mustache_Parser + */ + public function getParser() + { + if (!isset($this->parser)) { + $this->parser = new Mustache_Parser(); + } + + return $this->parser; + } + + /** + * Set the Mustache Compiler instance. + * + * @param Mustache_Compiler $compiler + */ + public function setCompiler(Mustache_Compiler $compiler) + { + $this->compiler = $compiler; + } + + /** + * Get the current Mustache Compiler instance. + * + * If no Compiler instance has been explicitly specified, this method will instantiate and return a new one. + * + * @return Mustache_Compiler + */ + public function getCompiler() + { + if (!isset($this->compiler)) { + $this->compiler = new Mustache_Compiler(); + } + + return $this->compiler; + } + + /** + * Set the Mustache Cache instance. + * + * @param Mustache_Cache $cache + */ + public function setCache(Mustache_Cache $cache) + { + if (isset($this->logger) && $cache->getLogger() === null) { + $cache->setLogger($this->getLogger()); + } + + $this->cache = $cache; + } + + /** + * Get the current Mustache Cache instance. + * + * If no Cache instance has been explicitly specified, this method will instantiate and return a new one. + * + * @return Mustache_Cache + */ + public function getCache() + { + if (!isset($this->cache)) { + $this->setCache(new Mustache_Cache_NoopCache()); + } + + return $this->cache; + } + + /** + * Get the current Lambda Cache instance. + * + * If 'cache_lambda_templates' is enabled, this is the default cache instance. Otherwise, it is a NoopCache. + * + * @see Mustache_Engine::getCache + * + * @return Mustache_Cache + */ + protected function getLambdaCache() + { + if ($this->cacheLambdaTemplates) { + return $this->getCache(); + } + + if (!isset($this->lambdaCache)) { + $this->lambdaCache = new Mustache_Cache_NoopCache(); + } + + return $this->lambdaCache; + } + + /** + * Helper method to generate a Mustache template class. + * + * @param string $source + * + * @return string Mustache Template class name + */ + public function getTemplateClassName($source) + { + return $this->templateClassPrefix . md5(sprintf( + 'version:%s,escape:%s,entity_flags:%i,charset:%s,strict_callables:%s,pragmas:%s,source:%s', + self::VERSION, + isset($this->escape) ? 'custom' : 'default', + $this->entityFlags, + $this->charset, + $this->strictCallables ? 'true' : 'false', + implode(' ', $this->getPragmas()), + $source + )); + } + + /** + * Load a Mustache Template by name. + * + * @param string $name + * + * @return Mustache_Template + */ + public function loadTemplate($name) + { + return $this->loadSource($this->getLoader()->load($name)); + } + + /** + * Load a Mustache partial Template by name. + * + * This is a helper method used internally by Template instances for loading partial templates. You can most likely + * ignore it completely. + * + * @param string $name + * + * @return Mustache_Template + */ + public function loadPartial($name) + { + try { + if (isset($this->partialsLoader)) { + $loader = $this->partialsLoader; + } elseif (isset($this->loader) && !$this->loader instanceof Mustache_Loader_StringLoader) { + $loader = $this->loader; + } else { + throw new Mustache_Exception_UnknownTemplateException($name); + } + + return $this->loadSource($loader->load($name)); + } catch (Mustache_Exception_UnknownTemplateException $e) { + // If the named partial cannot be found, log then return null. + $this->log( + Mustache_Logger::WARNING, + 'Partial not found: "{name}"', + array('name' => $e->getTemplateName()) + ); + } + } + + /** + * Load a Mustache lambda Template by source. + * + * This is a helper method used by Template instances to generate subtemplates for Lambda sections. You can most + * likely ignore it completely. + * + * @param string $source + * @param string $delims (default: null) + * + * @return Mustache_Template + */ + public function loadLambda($source, $delims = null) + { + if ($delims !== null) { + $source = $delims . "\n" . $source; + } + + return $this->loadSource($source, $this->getLambdaCache()); + } + + /** + * Instantiate and return a Mustache Template instance by source. + * + * Optionally provide a Mustache_Cache instance. This is used internally by Mustache_Engine::loadLambda to respect + * the 'cache_lambda_templates' configuration option. + * + * @see Mustache_Engine::loadTemplate + * @see Mustache_Engine::loadPartial + * @see Mustache_Engine::loadLambda + * + * @param string $source + * @param Mustache_Cache $cache (default: null) + * + * @return Mustache_Template + */ + private function loadSource($source, Mustache_Cache $cache = null) + { + $className = $this->getTemplateClassName($source); + + if (!isset($this->templates[$className])) { + if ($cache === null) { + $cache = $this->getCache(); + } + + if (!class_exists($className, false)) { + if (!$cache->load($className)) { + $compiled = $this->compile($source); + $cache->cache($className, $compiled); + } + } + + $this->log( + Mustache_Logger::DEBUG, + 'Instantiating template: "{className}"', + array('className' => $className) + ); + + $this->templates[$className] = new $className($this); + } + + return $this->templates[$className]; + } + + /** + * Helper method to tokenize a Mustache template. + * + * @see Mustache_Tokenizer::scan + * + * @param string $source + * + * @return array Tokens + */ + private function tokenize($source) + { + return $this->getTokenizer()->scan($source); + } + + /** + * Helper method to parse a Mustache template. + * + * @see Mustache_Parser::parse + * + * @param string $source + * + * @return array Token tree + */ + private function parse($source) + { + $parser = $this->getParser(); + $parser->setPragmas($this->getPragmas()); + + return $parser->parse($this->tokenize($source)); + } + + /** + * Helper method to compile a Mustache template. + * + * @see Mustache_Compiler::compile + * + * @param string $source + * + * @return string generated Mustache template class code + */ + private function compile($source) + { + $tree = $this->parse($source); + $name = $this->getTemplateClassName($source); + + $this->log( + Mustache_Logger::INFO, + 'Compiling template to "{className}" class', + array('className' => $name) + ); + + $compiler = $this->getCompiler(); + $compiler->setPragmas($this->getPragmas()); + + return $compiler->compile($source, $tree, $name, isset($this->escape), $this->charset, $this->strictCallables, $this->entityFlags); + } + + /** + * Add a log record if logging is enabled. + * + * @param int $level The logging level + * @param string $message The log message + * @param array $context The log context + */ + private function log($level, $message, array $context = array()) + { + if (isset($this->logger)) { + $this->logger->log($level, $message, $context); + } + } +} diff --git a/webclient/vendor/mustache/mustache/src/Mustache/Exception.php b/webclient/vendor/mustache/mustache/src/Mustache/Exception.php new file mode 100644 index 00000000..66bd6bd4 --- /dev/null +++ b/webclient/vendor/mustache/mustache/src/Mustache/Exception.php @@ -0,0 +1,18 @@ +token = $token; + if (version_compare(PHP_VERSION, '5.3.0', '>=')) { + parent::__construct($msg, 0, $previous); + } else { + parent::__construct($msg); + } + } + + /** + * @return array + */ + public function getToken() + { + return $this->token; + } +} diff --git a/webclient/vendor/mustache/mustache/src/Mustache/Exception/UnknownFilterException.php b/webclient/vendor/mustache/mustache/src/Mustache/Exception/UnknownFilterException.php new file mode 100644 index 00000000..44505e49 --- /dev/null +++ b/webclient/vendor/mustache/mustache/src/Mustache/Exception/UnknownFilterException.php @@ -0,0 +1,38 @@ +filterName = $filterName; + $message = sprintf('Unknown filter: %s', $filterName); + if (version_compare(PHP_VERSION, '5.3.0', '>=')) { + parent::__construct($message, 0, $previous); + } else { + parent::__construct($message); + } + } + + public function getFilterName() + { + return $this->filterName; + } +} diff --git a/webclient/vendor/mustache/mustache/src/Mustache/Exception/UnknownHelperException.php b/webclient/vendor/mustache/mustache/src/Mustache/Exception/UnknownHelperException.php new file mode 100644 index 00000000..e1bc4d2c --- /dev/null +++ b/webclient/vendor/mustache/mustache/src/Mustache/Exception/UnknownHelperException.php @@ -0,0 +1,38 @@ +helperName = $helperName; + $message = sprintf('Unknown helper: %s', $helperName); + if (version_compare(PHP_VERSION, '5.3.0', '>=')) { + parent::__construct($message, 0, $previous); + } else { + parent::__construct($message); + } + } + + public function getHelperName() + { + return $this->helperName; + } +} diff --git a/webclient/vendor/mustache/mustache/src/Mustache/Exception/UnknownTemplateException.php b/webclient/vendor/mustache/mustache/src/Mustache/Exception/UnknownTemplateException.php new file mode 100644 index 00000000..0c377962 --- /dev/null +++ b/webclient/vendor/mustache/mustache/src/Mustache/Exception/UnknownTemplateException.php @@ -0,0 +1,38 @@ +templateName = $templateName; + $message = sprintf('Unknown template: %s', $templateName); + if (version_compare(PHP_VERSION, '5.3.0', '>=')) { + parent::__construct($message, 0, $previous); + } else { + parent::__construct($message); + } + } + + public function getTemplateName() + { + return $this->templateName; + } +} diff --git a/webclient/vendor/mustache/mustache/src/Mustache/HelperCollection.php b/webclient/vendor/mustache/mustache/src/Mustache/HelperCollection.php new file mode 100644 index 00000000..86c56b78 --- /dev/null +++ b/webclient/vendor/mustache/mustache/src/Mustache/HelperCollection.php @@ -0,0 +1,172 @@ + $helper` pairs. + * + * @throws Mustache_Exception_InvalidArgumentException if the $helpers argument isn't an array or Traversable + * + * @param array|Traversable $helpers (default: null) + */ + public function __construct($helpers = null) + { + if ($helpers === null) { + return; + } + + if (!is_array($helpers) && !$helpers instanceof Traversable) { + throw new Mustache_Exception_InvalidArgumentException('HelperCollection constructor expects an array of helpers'); + } + + foreach ($helpers as $name => $helper) { + $this->add($name, $helper); + } + } + + /** + * Magic mutator. + * + * @see Mustache_HelperCollection::add + * + * @param string $name + * @param mixed $helper + */ + public function __set($name, $helper) + { + $this->add($name, $helper); + } + + /** + * Add a helper to this collection. + * + * @param string $name + * @param mixed $helper + */ + public function add($name, $helper) + { + $this->helpers[$name] = $helper; + } + + /** + * Magic accessor. + * + * @see Mustache_HelperCollection::get + * + * @param string $name + * + * @return mixed Helper + */ + public function __get($name) + { + return $this->get($name); + } + + /** + * Get a helper by name. + * + * @throws Mustache_Exception_UnknownHelperException If helper does not exist + * + * @param string $name + * + * @return mixed Helper + */ + public function get($name) + { + if (!$this->has($name)) { + throw new Mustache_Exception_UnknownHelperException($name); + } + + return $this->helpers[$name]; + } + + /** + * Magic isset(). + * + * @see Mustache_HelperCollection::has + * + * @param string $name + * + * @return bool True if helper is present + */ + public function __isset($name) + { + return $this->has($name); + } + + /** + * Check whether a given helper is present in the collection. + * + * @param string $name + * + * @return bool True if helper is present + */ + public function has($name) + { + return array_key_exists($name, $this->helpers); + } + + /** + * Magic unset(). + * + * @see Mustache_HelperCollection::remove + * + * @param string $name + */ + public function __unset($name) + { + $this->remove($name); + } + + /** + * Check whether a given helper is present in the collection. + * + * @throws Mustache_Exception_UnknownHelperException if the requested helper is not present + * + * @param string $name + */ + public function remove($name) + { + if (!$this->has($name)) { + throw new Mustache_Exception_UnknownHelperException($name); + } + + unset($this->helpers[$name]); + } + + /** + * Clear the helper collection. + * + * Removes all helpers from this collection + */ + public function clear() + { + $this->helpers = array(); + } + + /** + * Check whether the helper collection is empty. + * + * @return bool True if the collection is empty + */ + public function isEmpty() + { + return empty($this->helpers); + } +} diff --git a/webclient/vendor/mustache/mustache/src/Mustache/LambdaHelper.php b/webclient/vendor/mustache/mustache/src/Mustache/LambdaHelper.php new file mode 100644 index 00000000..1d203d5d --- /dev/null +++ b/webclient/vendor/mustache/mustache/src/Mustache/LambdaHelper.php @@ -0,0 +1,76 @@ + =}}`. (default: null) + */ + public function __construct(Mustache_Engine $mustache, Mustache_Context $context, $delims = null) + { + $this->mustache = $mustache; + $this->context = $context; + $this->delims = $delims; + } + + /** + * Render a string as a Mustache template with the current rendering context. + * + * @param string $string + * + * @return string Rendered template + */ + public function render($string) + { + return $this->mustache + ->loadLambda((string) $string, $this->delims) + ->renderInternal($this->context); + } + + /** + * Render a string as a Mustache template with the current rendering context. + * + * @param string $string + * + * @return string Rendered template + */ + public function __invoke($string) + { + return $this->render($string); + } + + /** + * Get a Lambda Helper with custom delimiters. + * + * @param string $delims Custom delimiters, in the format `{{= <% %> =}}` + * + * @return Mustache_LambdaHelper + */ + public function withDelimiters($delims) + { + return new self($this->mustache, $this->context, $delims); + } +} diff --git a/webclient/vendor/mustache/mustache/src/Mustache/Loader.php b/webclient/vendor/mustache/mustache/src/Mustache/Loader.php new file mode 100644 index 00000000..c5e1a19a --- /dev/null +++ b/webclient/vendor/mustache/mustache/src/Mustache/Loader.php @@ -0,0 +1,27 @@ + '{{ bar }}', + * 'baz' => 'Hey {{ qux }}!' + * ); + * + * $tpl = $loader->load('foo'); // '{{ bar }}' + * + * The ArrayLoader is used internally as a partials loader by Mustache_Engine instance when an array of partials + * is set. It can also be used as a quick-and-dirty Template loader. + */ +class Mustache_Loader_ArrayLoader implements Mustache_Loader, Mustache_Loader_MutableLoader +{ + private $templates; + + /** + * ArrayLoader constructor. + * + * @param array $templates Associative array of Template source (default: array()) + */ + public function __construct(array $templates = array()) + { + $this->templates = $templates; + } + + /** + * Load a Template. + * + * @throws Mustache_Exception_UnknownTemplateException If a template file is not found + * + * @param string $name + * + * @return string Mustache Template source + */ + public function load($name) + { + if (!isset($this->templates[$name])) { + throw new Mustache_Exception_UnknownTemplateException($name); + } + + return $this->templates[$name]; + } + + /** + * Set an associative array of Template sources for this loader. + * + * @param array $templates + */ + public function setTemplates(array $templates) + { + $this->templates = $templates; + } + + /** + * Set a Template source by name. + * + * @param string $name + * @param string $template Mustache Template source + */ + public function setTemplate($name, $template) + { + $this->templates[$name] = $template; + } +} diff --git a/webclient/vendor/mustache/mustache/src/Mustache/Loader/CascadingLoader.php b/webclient/vendor/mustache/mustache/src/Mustache/Loader/CascadingLoader.php new file mode 100644 index 00000000..b4726bc7 --- /dev/null +++ b/webclient/vendor/mustache/mustache/src/Mustache/Loader/CascadingLoader.php @@ -0,0 +1,69 @@ +loaders = array(); + foreach ($loaders as $loader) { + $this->addLoader($loader); + } + } + + /** + * Add a Loader instance. + * + * @param Mustache_Loader $loader + */ + public function addLoader(Mustache_Loader $loader) + { + $this->loaders[] = $loader; + } + + /** + * Load a Template by name. + * + * @throws Mustache_Exception_UnknownTemplateException If a template file is not found + * + * @param string $name + * + * @return string Mustache Template source + */ + public function load($name) + { + foreach ($this->loaders as $loader) { + try { + return $loader->load($name); + } catch (Mustache_Exception_UnknownTemplateException $e) { + // do nothing, check the next loader. + } + } + + throw new Mustache_Exception_UnknownTemplateException($name); + } +} diff --git a/webclient/vendor/mustache/mustache/src/Mustache/Loader/FilesystemLoader.php b/webclient/vendor/mustache/mustache/src/Mustache/Loader/FilesystemLoader.php new file mode 100644 index 00000000..a3137513 --- /dev/null +++ b/webclient/vendor/mustache/mustache/src/Mustache/Loader/FilesystemLoader.php @@ -0,0 +1,135 @@ +load('foo'); // equivalent to `file_get_contents(dirname(__FILE__).'/views/foo.mustache'); + * + * This is probably the most useful Mustache Loader implementation. It can be used for partials and normal Templates: + * + * $m = new Mustache(array( + * 'loader' => new Mustache_Loader_FilesystemLoader(dirname(__FILE__).'/views'), + * 'partials_loader' => new Mustache_Loader_FilesystemLoader(dirname(__FILE__).'/views/partials'), + * )); + */ +class Mustache_Loader_FilesystemLoader implements Mustache_Loader +{ + private $baseDir; + private $extension = '.mustache'; + private $templates = array(); + + /** + * Mustache filesystem Loader constructor. + * + * Passing an $options array allows overriding certain Loader options during instantiation: + * + * $options = array( + * // The filename extension used for Mustache templates. Defaults to '.mustache' + * 'extension' => '.ms', + * ); + * + * @throws Mustache_Exception_RuntimeException if $baseDir does not exist + * + * @param string $baseDir Base directory containing Mustache template files + * @param array $options Array of Loader options (default: array()) + */ + public function __construct($baseDir, array $options = array()) + { + $this->baseDir = $baseDir; + + if (strpos($this->baseDir, '://') === false) { + $this->baseDir = realpath($this->baseDir); + } + + if ($this->shouldCheckPath() && !is_dir($this->baseDir)) { + throw new Mustache_Exception_RuntimeException(sprintf('FilesystemLoader baseDir must be a directory: %s', $baseDir)); + } + + if (array_key_exists('extension', $options)) { + if (empty($options['extension'])) { + $this->extension = ''; + } else { + $this->extension = '.' . ltrim($options['extension'], '.'); + } + } + } + + /** + * Load a Template by name. + * + * $loader = new Mustache_Loader_FilesystemLoader(dirname(__FILE__).'/views'); + * $loader->load('admin/dashboard'); // loads "./views/admin/dashboard.mustache"; + * + * @param string $name + * + * @return string Mustache Template source + */ + public function load($name) + { + if (!isset($this->templates[$name])) { + $this->templates[$name] = $this->loadFile($name); + } + + return $this->templates[$name]; + } + + /** + * Helper function for loading a Mustache file by name. + * + * @throws Mustache_Exception_UnknownTemplateException If a template file is not found + * + * @param string $name + * + * @return string Mustache Template source + */ + protected function loadFile($name) + { + $fileName = $this->getFileName($name); + + if ($this->shouldCheckPath() && !file_exists($fileName)) { + throw new Mustache_Exception_UnknownTemplateException($name); + } + + return file_get_contents($fileName); + } + + /** + * Helper function for getting a Mustache template file name. + * + * @param string $name + * + * @return string Template file name + */ + protected function getFileName($name) + { + $fileName = $this->baseDir . '/' . $name; + if (substr($fileName, 0 - strlen($this->extension)) !== $this->extension) { + $fileName .= $this->extension; + } + + return $fileName; + } + + /** + * Only check if baseDir is a directory and requested templates are files if + * baseDir is using the filesystem stream wrapper. + * + * @return bool Whether to check `is_dir` and `file_exists` + */ + protected function shouldCheckPath() + { + return strpos($this->baseDir, '://') === false || strpos($this->baseDir, 'file://') === 0; + } +} diff --git a/webclient/vendor/mustache/mustache/src/Mustache/Loader/InlineLoader.php b/webclient/vendor/mustache/mustache/src/Mustache/Loader/InlineLoader.php new file mode 100644 index 00000000..f6d4b179 --- /dev/null +++ b/webclient/vendor/mustache/mustache/src/Mustache/Loader/InlineLoader.php @@ -0,0 +1,123 @@ +load('hello'); + * $goodbye = $loader->load('goodbye'); + * + * __halt_compiler(); + * + * @@ hello + * Hello, {{ planet }}! + * + * @@ goodbye + * Goodbye, cruel {{ planet }} + * + * Templates are deliniated by lines containing only `@@ name`. + * + * The InlineLoader is well-suited to micro-frameworks such as Silex: + * + * $app->register(new MustacheServiceProvider, array( + * 'mustache.loader' => new Mustache_Loader_InlineLoader(__FILE__, __COMPILER_HALT_OFFSET__) + * )); + * + * $app->get('/{name}', function ($name) use ($app) { + * return $app['mustache']->render('hello', compact('name')); + * }) + * ->value('name', 'world'); + * + * // ... + * + * __halt_compiler(); + * + * @@ hello + * Hello, {{ name }}! + */ +class Mustache_Loader_InlineLoader implements Mustache_Loader +{ + protected $fileName; + protected $offset; + protected $templates; + + /** + * The InlineLoader requires a filename and offset to process templates. + * + * The magic constants `__FILE__` and `__COMPILER_HALT_OFFSET__` are usually + * perfectly suited to the job: + * + * $loader = new Mustache_Loader_InlineLoader(__FILE__, __COMPILER_HALT_OFFSET__); + * + * Note that this only works if the loader is instantiated inside the same + * file as the inline templates. If the templates are located in another + * file, it would be necessary to manually specify the filename and offset. + * + * @param string $fileName The file to parse for inline templates + * @param int $offset A string offset for the start of the templates. + * This usually coincides with the `__halt_compiler` + * call, and the `__COMPILER_HALT_OFFSET__` + */ + public function __construct($fileName, $offset) + { + if (!is_file($fileName)) { + throw new Mustache_Exception_InvalidArgumentException('InlineLoader expects a valid filename.'); + } + + if (!is_int($offset) || $offset < 0) { + throw new Mustache_Exception_InvalidArgumentException('InlineLoader expects a valid file offset.'); + } + + $this->fileName = $fileName; + $this->offset = $offset; + } + + /** + * Load a Template by name. + * + * @throws Mustache_Exception_UnknownTemplateException If a template file is not found + * + * @param string $name + * + * @return string Mustache Template source + */ + public function load($name) + { + $this->loadTemplates(); + + if (!array_key_exists($name, $this->templates)) { + throw new Mustache_Exception_UnknownTemplateException($name); + } + + return $this->templates[$name]; + } + + /** + * Parse and load templates from the end of a source file. + */ + protected function loadTemplates() + { + if ($this->templates === null) { + $this->templates = array(); + $data = file_get_contents($this->fileName, false, null, $this->offset); + foreach (preg_split("/^@@(?= [\w\d\.]+$)/m", $data, -1) as $chunk) { + if (trim($chunk)) { + list($name, $content) = explode("\n", $chunk, 2); + $this->templates[trim($name)] = trim($content); + } + } + } + } +} diff --git a/webclient/vendor/mustache/mustache/src/Mustache/Loader/MutableLoader.php b/webclient/vendor/mustache/mustache/src/Mustache/Loader/MutableLoader.php new file mode 100644 index 00000000..f228d907 --- /dev/null +++ b/webclient/vendor/mustache/mustache/src/Mustache/Loader/MutableLoader.php @@ -0,0 +1,31 @@ +load('{{ foo }}'); // '{{ foo }}' + * + * This is the default Template Loader instance used by Mustache: + * + * $m = new Mustache; + * $tpl = $m->loadTemplate('{{ foo }}'); + * echo $tpl->render(array('foo' => 'bar')); // "bar" + */ +class Mustache_Loader_StringLoader implements Mustache_Loader +{ + /** + * Load a Template by source. + * + * @param string $name Mustache Template source + * + * @return string Mustache Template source + */ + public function load($name) + { + return $name; + } +} diff --git a/webclient/vendor/mustache/mustache/src/Mustache/Logger.php b/webclient/vendor/mustache/mustache/src/Mustache/Logger.php new file mode 100644 index 00000000..324a7ce5 --- /dev/null +++ b/webclient/vendor/mustache/mustache/src/Mustache/Logger.php @@ -0,0 +1,126 @@ +log(Mustache_Logger::EMERGENCY, $message, $context); + } + + /** + * Action must be taken immediately. + * + * Example: Entire website down, database unavailable, etc. This should + * trigger the SMS alerts and wake you up. + * + * @param string $message + * @param array $context + */ + public function alert($message, array $context = array()) + { + $this->log(Mustache_Logger::ALERT, $message, $context); + } + + /** + * Critical conditions. + * + * Example: Application component unavailable, unexpected exception. + * + * @param string $message + * @param array $context + */ + public function critical($message, array $context = array()) + { + $this->log(Mustache_Logger::CRITICAL, $message, $context); + } + + /** + * Runtime errors that do not require immediate action but should typically + * be logged and monitored. + * + * @param string $message + * @param array $context + */ + public function error($message, array $context = array()) + { + $this->log(Mustache_Logger::ERROR, $message, $context); + } + + /** + * Exceptional occurrences that are not errors. + * + * Example: Use of deprecated APIs, poor use of an API, undesirable things + * that are not necessarily wrong. + * + * @param string $message + * @param array $context + */ + public function warning($message, array $context = array()) + { + $this->log(Mustache_Logger::WARNING, $message, $context); + } + + /** + * Normal but significant events. + * + * @param string $message + * @param array $context + */ + public function notice($message, array $context = array()) + { + $this->log(Mustache_Logger::NOTICE, $message, $context); + } + + /** + * Interesting events. + * + * Example: User logs in, SQL logs. + * + * @param string $message + * @param array $context + */ + public function info($message, array $context = array()) + { + $this->log(Mustache_Logger::INFO, $message, $context); + } + + /** + * Detailed debug information. + * + * @param string $message + * @param array $context + */ + public function debug($message, array $context = array()) + { + $this->log(Mustache_Logger::DEBUG, $message, $context); + } +} diff --git a/webclient/vendor/mustache/mustache/src/Mustache/Logger/StreamLogger.php b/webclient/vendor/mustache/mustache/src/Mustache/Logger/StreamLogger.php new file mode 100644 index 00000000..efb32318 --- /dev/null +++ b/webclient/vendor/mustache/mustache/src/Mustache/Logger/StreamLogger.php @@ -0,0 +1,194 @@ + 100, + self::INFO => 200, + self::NOTICE => 250, + self::WARNING => 300, + self::ERROR => 400, + self::CRITICAL => 500, + self::ALERT => 550, + self::EMERGENCY => 600, + ); + + protected $level; + protected $stream = null; + protected $url = null; + + /** + * @throws InvalidArgumentException if the logging level is unknown + * + * @param resource|string $stream Resource instance or URL + * @param int $level The minimum logging level at which this handler will be triggered + */ + public function __construct($stream, $level = Mustache_Logger::ERROR) + { + $this->setLevel($level); + + if (is_resource($stream)) { + $this->stream = $stream; + } else { + $this->url = $stream; + } + } + + /** + * Close stream resources. + */ + public function __destruct() + { + if (is_resource($this->stream)) { + fclose($this->stream); + } + } + + /** + * Set the minimum logging level. + * + * @throws Mustache_Exception_InvalidArgumentException if the logging level is unknown + * + * @param int $level The minimum logging level which will be written + */ + public function setLevel($level) + { + if (!array_key_exists($level, self::$levels)) { + throw new Mustache_Exception_InvalidArgumentException(sprintf('Unexpected logging level: %s', $level)); + } + + $this->level = $level; + } + + /** + * Get the current minimum logging level. + * + * @return int + */ + public function getLevel() + { + return $this->level; + } + + /** + * Logs with an arbitrary level. + * + * @throws Mustache_Exception_InvalidArgumentException if the logging level is unknown + * + * @param mixed $level + * @param string $message + * @param array $context + */ + public function log($level, $message, array $context = array()) + { + if (!array_key_exists($level, self::$levels)) { + throw new Mustache_Exception_InvalidArgumentException(sprintf('Unexpected logging level: %s', $level)); + } + + if (self::$levels[$level] >= self::$levels[$this->level]) { + $this->writeLog($level, $message, $context); + } + } + + /** + * Write a record to the log. + * + * @throws Mustache_Exception_LogicException If neither a stream resource nor url is present + * @throws Mustache_Exception_RuntimeException If the stream url cannot be opened + * + * @param int $level The logging level + * @param string $message The log message + * @param array $context The log context + */ + protected function writeLog($level, $message, array $context = array()) + { + if (!is_resource($this->stream)) { + if (!isset($this->url)) { + throw new Mustache_Exception_LogicException('Missing stream url, the stream can not be opened. This may be caused by a premature call to close().'); + } + + $this->stream = fopen($this->url, 'a'); + if (!is_resource($this->stream)) { + // @codeCoverageIgnoreStart + throw new Mustache_Exception_RuntimeException(sprintf('The stream or file "%s" could not be opened.', $this->url)); + // @codeCoverageIgnoreEnd + } + } + + fwrite($this->stream, self::formatLine($level, $message, $context)); + } + + /** + * Gets the name of the logging level. + * + * @throws InvalidArgumentException if the logging level is unknown + * + * @param int $level + * + * @return string + */ + protected static function getLevelName($level) + { + return strtoupper($level); + } + + /** + * Format a log line for output. + * + * @param int $level The logging level + * @param string $message The log message + * @param array $context The log context + * + * @return string + */ + protected static function formatLine($level, $message, array $context = array()) + { + return sprintf( + "%s: %s\n", + self::getLevelName($level), + self::interpolateMessage($message, $context) + ); + } + + /** + * Interpolate context values into the message placeholders. + * + * @param string $message + * @param array $context + * + * @return string + */ + protected static function interpolateMessage($message, array $context = array()) + { + if (strpos($message, '{') === false) { + return $message; + } + + // build a replacement array with braces around the context keys + $replace = array(); + foreach ($context as $key => $val) { + $replace['{' . $key . '}'] = $val; + } + + // interpolate replacement values into the the message and return + return strtr($message, $replace); + } +} diff --git a/webclient/vendor/mustache/mustache/src/Mustache/Parser.php b/webclient/vendor/mustache/mustache/src/Mustache/Parser.php new file mode 100644 index 00000000..adefebdd --- /dev/null +++ b/webclient/vendor/mustache/mustache/src/Mustache/Parser.php @@ -0,0 +1,317 @@ +lineNum = -1; + $this->lineTokens = 0; + $this->pragmas = $this->defaultPragmas; + + $this->pragmaFilters = isset($this->pragmas[Mustache_Engine::PRAGMA_FILTERS]); + $this->pragmaBlocks = isset($this->pragmas[Mustache_Engine::PRAGMA_BLOCKS]); + + return $this->buildTree($tokens); + } + + /** + * Enable pragmas across all templates, regardless of the presence of pragma + * tags in the individual templates. + * + * @internal Users should set global pragmas in Mustache_Engine, not here :) + * + * @param string[] $pragmas + */ + public function setPragmas(array $pragmas) + { + $this->pragmas = array(); + foreach ($pragmas as $pragma) { + $this->enablePragma($pragma); + } + $this->defaultPragmas = $this->pragmas; + } + + /** + * Helper method for recursively building a parse tree. + * + * @throws Mustache_Exception_SyntaxException when nesting errors or mismatched section tags are encountered + * + * @param array &$tokens Set of Mustache tokens + * @param array $parent Parent token (default: null) + * + * @return array Mustache Token parse tree + */ + private function buildTree(array &$tokens, array $parent = null) + { + $nodes = array(); + + while (!empty($tokens)) { + $token = array_shift($tokens); + + if ($token[Mustache_Tokenizer::LINE] === $this->lineNum) { + $this->lineTokens++; + } else { + $this->lineNum = $token[Mustache_Tokenizer::LINE]; + $this->lineTokens = 0; + } + + if ($this->pragmaFilters && isset($token[Mustache_Tokenizer::NAME])) { + list($name, $filters) = $this->getNameAndFilters($token[Mustache_Tokenizer::NAME]); + if (!empty($filters)) { + $token[Mustache_Tokenizer::NAME] = $name; + $token[Mustache_Tokenizer::FILTERS] = $filters; + } + } + + switch ($token[Mustache_Tokenizer::TYPE]) { + case Mustache_Tokenizer::T_DELIM_CHANGE: + $this->checkIfTokenIsAllowedInParent($parent, $token); + $this->clearStandaloneLines($nodes, $tokens); + break; + + case Mustache_Tokenizer::T_SECTION: + case Mustache_Tokenizer::T_INVERTED: + $this->checkIfTokenIsAllowedInParent($parent, $token); + $this->clearStandaloneLines($nodes, $tokens); + $nodes[] = $this->buildTree($tokens, $token); + break; + + case Mustache_Tokenizer::T_END_SECTION: + if (!isset($parent)) { + $msg = sprintf( + 'Unexpected closing tag: /%s on line %d', + $token[Mustache_Tokenizer::NAME], + $token[Mustache_Tokenizer::LINE] + ); + throw new Mustache_Exception_SyntaxException($msg, $token); + } + + if ($token[Mustache_Tokenizer::NAME] !== $parent[Mustache_Tokenizer::NAME]) { + $msg = sprintf( + 'Nesting error: %s (on line %d) vs. %s (on line %d)', + $parent[Mustache_Tokenizer::NAME], + $parent[Mustache_Tokenizer::LINE], + $token[Mustache_Tokenizer::NAME], + $token[Mustache_Tokenizer::LINE] + ); + throw new Mustache_Exception_SyntaxException($msg, $token); + } + + $this->clearStandaloneLines($nodes, $tokens); + $parent[Mustache_Tokenizer::END] = $token[Mustache_Tokenizer::INDEX]; + $parent[Mustache_Tokenizer::NODES] = $nodes; + + return $parent; + + case Mustache_Tokenizer::T_PARTIAL: + $this->checkIfTokenIsAllowedInParent($parent, $token); + //store the whitespace prefix for laters! + if ($indent = $this->clearStandaloneLines($nodes, $tokens)) { + $token[Mustache_Tokenizer::INDENT] = $indent[Mustache_Tokenizer::VALUE]; + } + $nodes[] = $token; + break; + + case Mustache_Tokenizer::T_PARENT: + $this->checkIfTokenIsAllowedInParent($parent, $token); + $nodes[] = $this->buildTree($tokens, $token); + break; + + case Mustache_Tokenizer::T_BLOCK_VAR: + if ($this->pragmaBlocks) { + // BLOCKS pragma is enabled, let's do this! + if ($parent[Mustache_Tokenizer::TYPE] === Mustache_Tokenizer::T_PARENT) { + $token[Mustache_Tokenizer::TYPE] = Mustache_Tokenizer::T_BLOCK_ARG; + } + $this->clearStandaloneLines($nodes, $tokens); + $nodes[] = $this->buildTree($tokens, $token); + } else { + // pretend this was just a normal "escaped" token... + $token[Mustache_Tokenizer::TYPE] = Mustache_Tokenizer::T_ESCAPED; + // TODO: figure out how to figure out if there was a space after this dollar: + $token[Mustache_Tokenizer::NAME] = '$' . $token[Mustache_Tokenizer::NAME]; + $nodes[] = $token; + } + break; + + case Mustache_Tokenizer::T_PRAGMA: + $this->enablePragma($token[Mustache_Tokenizer::NAME]); + // no break + + case Mustache_Tokenizer::T_COMMENT: + $this->clearStandaloneLines($nodes, $tokens); + $nodes[] = $token; + break; + + default: + $nodes[] = $token; + break; + } + } + + if (isset($parent)) { + $msg = sprintf( + 'Missing closing tag: %s opened on line %d', + $parent[Mustache_Tokenizer::NAME], + $parent[Mustache_Tokenizer::LINE] + ); + throw new Mustache_Exception_SyntaxException($msg, $parent); + } + + return $nodes; + } + + /** + * Clear standalone line tokens. + * + * Returns a whitespace token for indenting partials, if applicable. + * + * @param array $nodes Parsed nodes + * @param array $tokens Tokens to be parsed + * + * @return array|null Resulting indent token, if any + */ + private function clearStandaloneLines(array &$nodes, array &$tokens) + { + if ($this->lineTokens > 1) { + // this is the third or later node on this line, so it can't be standalone + return; + } + + $prev = null; + if ($this->lineTokens === 1) { + // this is the second node on this line, so it can't be standalone + // unless the previous node is whitespace. + if ($prev = end($nodes)) { + if (!$this->tokenIsWhitespace($prev)) { + return; + } + } + } + + if ($next = reset($tokens)) { + // If we're on a new line, bail. + if ($next[Mustache_Tokenizer::LINE] !== $this->lineNum) { + return; + } + + // If the next token isn't whitespace, bail. + if (!$this->tokenIsWhitespace($next)) { + return; + } + + if (count($tokens) !== 1) { + // Unless it's the last token in the template, the next token + // must end in newline for this to be standalone. + if (substr($next[Mustache_Tokenizer::VALUE], -1) !== "\n") { + return; + } + } + + // Discard the whitespace suffix + array_shift($tokens); + } + + if ($prev) { + // Return the whitespace prefix, if any + return array_pop($nodes); + } + } + + /** + * Check whether token is a whitespace token. + * + * True if token type is T_TEXT and value is all whitespace characters. + * + * @param array $token + * + * @return bool True if token is a whitespace token + */ + private function tokenIsWhitespace(array $token) + { + if ($token[Mustache_Tokenizer::TYPE] === Mustache_Tokenizer::T_TEXT) { + return preg_match('/^\s*$/', $token[Mustache_Tokenizer::VALUE]); + } + + return false; + } + + /** + * Check whether a token is allowed inside a parent tag. + * + * @throws Mustache_Exception_SyntaxException if an invalid token is found inside a parent tag + * + * @param array|null $parent + * @param array $token + */ + private function checkIfTokenIsAllowedInParent($parent, array $token) + { + if ($parent[Mustache_Tokenizer::TYPE] === Mustache_Tokenizer::T_PARENT) { + throw new Mustache_Exception_SyntaxException('Illegal content in < parent tag', $token); + } + } + + /** + * Split a tag name into name and filters. + * + * @param string $name + * + * @return array [Tag name, Array of filters] + */ + private function getNameAndFilters($name) + { + $filters = array_map('trim', explode('|', $name)); + $name = array_shift($filters); + + return array($name, $filters); + } + + /** + * Enable a pragma. + * + * @param string $name + */ + private function enablePragma($name) + { + $this->pragmas[$name] = true; + + switch ($name) { + case Mustache_Engine::PRAGMA_BLOCKS: + $this->pragmaBlocks = true; + break; + + case Mustache_Engine::PRAGMA_FILTERS: + $this->pragmaFilters = true; + break; + } + } +} diff --git a/webclient/vendor/mustache/mustache/src/Mustache/Template.php b/webclient/vendor/mustache/mustache/src/Mustache/Template.php new file mode 100644 index 00000000..2b7771c4 --- /dev/null +++ b/webclient/vendor/mustache/mustache/src/Mustache/Template.php @@ -0,0 +1,180 @@ +mustache = $mustache; + } + + /** + * Mustache Template instances can be treated as a function and rendered by simply calling them. + * + * $m = new Mustache_Engine; + * $tpl = $m->loadTemplate('Hello, {{ name }}!'); + * echo $tpl(array('name' => 'World')); // "Hello, World!" + * + * @see Mustache_Template::render + * + * @param mixed $context Array or object rendering context (default: array()) + * + * @return string Rendered template + */ + public function __invoke($context = array()) + { + return $this->render($context); + } + + /** + * Render this template given the rendering context. + * + * @param mixed $context Array or object rendering context (default: array()) + * + * @return string Rendered template + */ + public function render($context = array()) + { + return $this->renderInternal( + $this->prepareContextStack($context) + ); + } + + /** + * Internal rendering method implemented by Mustache Template concrete subclasses. + * + * This is where the magic happens :) + * + * NOTE: This method is not part of the Mustache.php public API. + * + * @param Mustache_Context $context + * @param string $indent (default: '') + * + * @return string Rendered template + */ + abstract public function renderInternal(Mustache_Context $context, $indent = ''); + + /** + * Tests whether a value should be iterated over (e.g. in a section context). + * + * In most languages there are two distinct array types: list and hash (or whatever you want to call them). Lists + * should be iterated, hashes should be treated as objects. Mustache follows this paradigm for Ruby, Javascript, + * Java, Python, etc. + * + * PHP, however, treats lists and hashes as one primitive type: array. So Mustache.php needs a way to distinguish + * between between a list of things (numeric, normalized array) and a set of variables to be used as section context + * (associative array). In other words, this will be iterated over: + * + * $items = array( + * array('name' => 'foo'), + * array('name' => 'bar'), + * array('name' => 'baz'), + * ); + * + * ... but this will be used as a section context block: + * + * $items = array( + * 1 => array('name' => 'foo'), + * 'banana' => array('name' => 'bar'), + * 42 => array('name' => 'baz'), + * ); + * + * @param mixed $value + * + * @return bool True if the value is 'iterable' + */ + protected function isIterable($value) + { + switch (gettype($value)) { + case 'object': + return $value instanceof Traversable; + + case 'array': + $i = 0; + foreach ($value as $k => $v) { + if ($k !== $i++) { + return false; + } + } + + return true; + + default: + return false; + } + } + + /** + * Helper method to prepare the Context stack. + * + * Adds the Mustache HelperCollection to the stack's top context frame if helpers are present. + * + * @param mixed $context Optional first context frame (default: null) + * + * @return Mustache_Context + */ + protected function prepareContextStack($context = null) + { + $stack = new Mustache_Context(); + + $helpers = $this->mustache->getHelpers(); + if (!$helpers->isEmpty()) { + $stack->push($helpers); + } + + if (!empty($context)) { + $stack->push($context); + } + + return $stack; + } + + /** + * Resolve a context value. + * + * Invoke the value if it is callable, otherwise return the value. + * + * @param mixed $value + * @param Mustache_Context $context + * + * @return string + */ + protected function resolveValue($value, Mustache_Context $context) + { + if (($this->strictCallables ? is_object($value) : !is_string($value)) && is_callable($value)) { + return $this->mustache + ->loadLambda((string) call_user_func($value)) + ->renderInternal($context); + } + + return $value; + } +} diff --git a/webclient/vendor/mustache/mustache/src/Mustache/Tokenizer.php b/webclient/vendor/mustache/mustache/src/Mustache/Tokenizer.php new file mode 100644 index 00000000..27e4d05e --- /dev/null +++ b/webclient/vendor/mustache/mustache/src/Mustache/Tokenizer.php @@ -0,0 +1,322 @@ +'; + const T_PARENT = '<'; + const T_DELIM_CHANGE = '='; + const T_ESCAPED = '_v'; + const T_UNESCAPED = '{'; + const T_UNESCAPED_2 = '&'; + const T_TEXT = '_t'; + const T_PRAGMA = '%'; + const T_BLOCK_VAR = '$'; + const T_BLOCK_ARG = '$arg'; + + // Valid token types + private static $tagTypes = array( + self::T_SECTION => true, + self::T_INVERTED => true, + self::T_END_SECTION => true, + self::T_COMMENT => true, + self::T_PARTIAL => true, + self::T_PARENT => true, + self::T_DELIM_CHANGE => true, + self::T_ESCAPED => true, + self::T_UNESCAPED => true, + self::T_UNESCAPED_2 => true, + self::T_PRAGMA => true, + self::T_BLOCK_VAR => true, + ); + + // Token properties + const TYPE = 'type'; + const NAME = 'name'; + const OTAG = 'otag'; + const CTAG = 'ctag'; + const LINE = 'line'; + const INDEX = 'index'; + const END = 'end'; + const INDENT = 'indent'; + const NODES = 'nodes'; + const VALUE = 'value'; + const FILTERS = 'filters'; + + private $state; + private $tagType; + private $buffer; + private $tokens; + private $seenTag; + private $line; + private $otag; + private $ctag; + private $otagLen; + private $ctagLen; + + /** + * Scan and tokenize template source. + * + * @throws Mustache_Exception_SyntaxException when mismatched section tags are encountered + * + * @param string $text Mustache template source to tokenize + * @param string $delimiters Optionally, pass initial opening and closing delimiters (default: null) + * + * @return array Set of Mustache tokens + */ + public function scan($text, $delimiters = null) + { + // Setting mbstring.func_overload makes things *really* slow. + // Let's do everyone a favor and scan this string as ASCII instead. + $encoding = null; + if (function_exists('mb_internal_encoding') && ini_get('mbstring.func_overload') & 2) { + $encoding = mb_internal_encoding(); + mb_internal_encoding('ASCII'); + } + + $this->reset(); + + if ($delimiters = trim($delimiters)) { + $this->setDelimiters($delimiters); + } + + $len = strlen($text); + for ($i = 0; $i < $len; $i++) { + switch ($this->state) { + case self::IN_TEXT: + if ($this->tagChange($this->otag, $this->otagLen, $text, $i)) { + $i--; + $this->flushBuffer(); + $this->state = self::IN_TAG_TYPE; + } else { + $char = $text[$i]; + $this->buffer .= $char; + if ($char === "\n") { + $this->flushBuffer(); + $this->line++; + } + } + break; + + case self::IN_TAG_TYPE: + $i += $this->otagLen - 1; + $char = $text[$i + 1]; + if (isset(self::$tagTypes[$char])) { + $tag = $char; + $this->tagType = $tag; + } else { + $tag = null; + $this->tagType = self::T_ESCAPED; + } + + if ($this->tagType === self::T_DELIM_CHANGE) { + $i = $this->changeDelimiters($text, $i); + $this->state = self::IN_TEXT; + } elseif ($this->tagType === self::T_PRAGMA) { + $i = $this->addPragma($text, $i); + $this->state = self::IN_TEXT; + } else { + if ($tag !== null) { + $i++; + } + $this->state = self::IN_TAG; + } + $this->seenTag = $i; + break; + + default: + if ($this->tagChange($this->ctag, $this->ctagLen, $text, $i)) { + $token = array( + self::TYPE => $this->tagType, + self::NAME => trim($this->buffer), + self::OTAG => $this->otag, + self::CTAG => $this->ctag, + self::LINE => $this->line, + self::INDEX => ($this->tagType === self::T_END_SECTION) ? $this->seenTag - $this->otagLen : $i + $this->ctagLen, + ); + + if ($this->tagType === self::T_UNESCAPED) { + // Clean up `{{{ tripleStache }}}` style tokens. + if ($this->ctag === '}}') { + if (($i + 2 < $len) && $text[$i + 2] === '}') { + $i++; + } else { + $msg = sprintf( + 'Mismatched tag delimiters: %s on line %d', + $token[self::NAME], + $token[self::LINE] + ); + + throw new Mustache_Exception_SyntaxException($msg, $token); + } + } else { + $lastName = $token[self::NAME]; + if (substr($lastName, -1) === '}') { + $token[self::NAME] = trim(substr($lastName, 0, -1)); + } else { + $msg = sprintf( + 'Mismatched tag delimiters: %s on line %d', + $token[self::NAME], + $token[self::LINE] + ); + + throw new Mustache_Exception_SyntaxException($msg, $token); + } + } + } + + $this->buffer = ''; + $i += $this->ctagLen - 1; + $this->state = self::IN_TEXT; + $this->tokens[] = $token; + } else { + $this->buffer .= $text[$i]; + } + break; + } + } + + $this->flushBuffer(); + + // Restore the user's encoding... + if ($encoding) { + mb_internal_encoding($encoding); + } + + return $this->tokens; + } + + /** + * Helper function to reset tokenizer internal state. + */ + private function reset() + { + $this->state = self::IN_TEXT; + $this->tagType = null; + $this->buffer = ''; + $this->tokens = array(); + $this->seenTag = false; + $this->line = 0; + $this->otag = '{{'; + $this->ctag = '}}'; + $this->otagLen = 2; + $this->ctagLen = 2; + } + + /** + * Flush the current buffer to a token. + */ + private function flushBuffer() + { + if (strlen($this->buffer) > 0) { + $this->tokens[] = array( + self::TYPE => self::T_TEXT, + self::LINE => $this->line, + self::VALUE => $this->buffer, + ); + $this->buffer = ''; + } + } + + /** + * Change the current Mustache delimiters. Set new `otag` and `ctag` values. + * + * @param string $text Mustache template source + * @param int $index Current tokenizer index + * + * @return int New index value + */ + private function changeDelimiters($text, $index) + { + $startIndex = strpos($text, '=', $index) + 1; + $close = '=' . $this->ctag; + $closeIndex = strpos($text, $close, $index); + + $this->setDelimiters(trim(substr($text, $startIndex, $closeIndex - $startIndex))); + + $this->tokens[] = array( + self::TYPE => self::T_DELIM_CHANGE, + self::LINE => $this->line, + ); + + return $closeIndex + strlen($close) - 1; + } + + /** + * Set the current Mustache `otag` and `ctag` delimiters. + * + * @param string $delimiters + */ + private function setDelimiters($delimiters) + { + list($otag, $ctag) = explode(' ', $delimiters); + $this->otag = $otag; + $this->ctag = $ctag; + $this->otagLen = strlen($otag); + $this->ctagLen = strlen($ctag); + } + + /** + * Add pragma token. + * + * Pragmas are hoisted to the front of the template, so all pragma tokens + * will appear at the front of the token list. + * + * @param string $text + * @param int $index + * + * @return int New index value + */ + private function addPragma($text, $index) + { + $end = strpos($text, $this->ctag, $index); + $pragma = trim(substr($text, $index + 2, $end - $index - 2)); + + // Pragmas are hoisted to the front of the template. + array_unshift($this->tokens, array( + self::TYPE => self::T_PRAGMA, + self::NAME => $pragma, + self::LINE => 0, + )); + + return $end + $this->ctagLen - 1; + } + + /** + * Test whether it's time to change tags. + * + * @param string $tag Current tag name + * @param int $tagLen Current tag name length + * @param string $text Mustache template source + * @param int $index Current tokenizer index + * + * @return bool True if this is a closing section tag + */ + private function tagChange($tag, $tagLen, $text, $index) + { + return substr($text, $index, $tagLen) === $tag; + } +} diff --git a/webclient/vendor/mustache/mustache/test/Mustache/Test/AutoloaderTest.php b/webclient/vendor/mustache/mustache/test/Mustache/Test/AutoloaderTest.php new file mode 100644 index 00000000..40af5eec --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/Mustache/Test/AutoloaderTest.php @@ -0,0 +1,36 @@ +assertTrue(spl_autoload_unregister(array($loader, 'autoload'))); + } + + public function testAutoloader() + { + $loader = new Mustache_Autoloader(dirname(__FILE__) . '/../../fixtures/autoloader'); + + $this->assertNull($loader->autoload('NonMustacheClass')); + $this->assertFalse(class_exists('NonMustacheClass')); + + $loader->autoload('Mustache_Foo'); + $this->assertTrue(class_exists('Mustache_Foo')); + + $loader->autoload('\Mustache_Bar'); + $this->assertTrue(class_exists('Mustache_Bar')); + } +} diff --git a/webclient/vendor/mustache/mustache/test/Mustache/Test/Cache/AbstractCacheTest.php b/webclient/vendor/mustache/mustache/test/Mustache/Test/Cache/AbstractCacheTest.php new file mode 100644 index 00000000..d977388b --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/Mustache/Test/Cache/AbstractCacheTest.php @@ -0,0 +1,44 @@ +setLogger($logger); + $this->assertSame($logger, $cache->getLogger()); + } + + /** + * @expectedException Mustache_Exception_InvalidArgumentException + */ + public function testSetLoggerThrowsExceptions() + { + $cache = new CacheStub(); + $logger = new StdClass(); + $cache->setLogger($logger); + } +} + +class CacheStub extends Mustache_Cache_AbstractCache +{ + public function load($key) + { + // nada + } + + public function cache($key, $value) + { + // nada + } +} diff --git a/webclient/vendor/mustache/mustache/test/Mustache/Test/Cache/FilesystemCacheTest.php b/webclient/vendor/mustache/mustache/test/Mustache/Test/Cache/FilesystemCacheTest.php new file mode 100644 index 00000000..2413125c --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/Mustache/Test/Cache/FilesystemCacheTest.php @@ -0,0 +1,36 @@ +load($key); + + $this->assertFalse($loaded); + } + + public function testCachePut() + { + $key = 'some key'; + $value = 'cache($key, $value); + $loaded = $cache->load($key); + + $this->assertTrue($loaded); + } +} diff --git a/webclient/vendor/mustache/mustache/test/Mustache/Test/CompilerTest.php b/webclient/vendor/mustache/mustache/test/Mustache/Test/CompilerTest.php new file mode 100644 index 00000000..725a82c2 --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/Mustache/Test/CompilerTest.php @@ -0,0 +1,154 @@ +compile($source, $tree, $name, $customEscaper, $charset, false, $entityFlags); + foreach ($expected as $contains) { + $this->assertContains($contains, $compiled); + } + } + + public function getCompileValues() + { + return array( + array('', array(), 'Banana', false, ENT_COMPAT, 'ISO-8859-1', array( + "\nclass Banana extends Mustache_Template", + 'return $buffer;', + )), + + array('', array($this->createTextToken('TEXT')), 'Monkey', false, ENT_COMPAT, 'UTF-8', array( + "\nclass Monkey extends Mustache_Template", + '$buffer .= $indent . \'TEXT\';', + 'return $buffer;', + )), + + array( + '', + array( + array( + Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_ESCAPED, + Mustache_Tokenizer::NAME => 'name', + ), + ), + 'Monkey', + true, + ENT_COMPAT, + 'ISO-8859-1', + array( + "\nclass Monkey extends Mustache_Template", + '$value = $this->resolveValue($context->find(\'name\'), $context);', + '$buffer .= $indent . call_user_func($this->mustache->getEscape(), $value);', + 'return $buffer;', + ), + ), + + array( + '', + array( + array( + Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_ESCAPED, + Mustache_Tokenizer::NAME => 'name', + ), + ), + 'Monkey', + false, + ENT_COMPAT, + 'ISO-8859-1', + array( + "\nclass Monkey extends Mustache_Template", + '$value = $this->resolveValue($context->find(\'name\'), $context);', + '$buffer .= $indent . htmlspecialchars($value, ' . ENT_COMPAT . ', \'ISO-8859-1\');', + 'return $buffer;', + ), + ), + + array( + '', + array( + array( + Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_ESCAPED, + Mustache_Tokenizer::NAME => 'name', + ), + ), + 'Monkey', + false, + ENT_QUOTES, + 'ISO-8859-1', + array( + "\nclass Monkey extends Mustache_Template", + '$value = $this->resolveValue($context->find(\'name\'), $context);', + '$buffer .= $indent . htmlspecialchars($value, ' . ENT_QUOTES . ', \'ISO-8859-1\');', + 'return $buffer;', + ), + ), + + array( + '', + array( + $this->createTextToken("foo\n"), + array( + Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_ESCAPED, + Mustache_Tokenizer::NAME => 'name', + ), + array( + Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_ESCAPED, + Mustache_Tokenizer::NAME => '.', + ), + $this->createTextToken("'bar'"), + ), + 'Monkey', + false, + ENT_COMPAT, + 'UTF-8', + array( + "\nclass Monkey extends Mustache_Template", + "\$buffer .= \$indent . 'foo\n';", + '$value = $this->resolveValue($context->find(\'name\'), $context);', + '$buffer .= htmlspecialchars($value, ' . ENT_COMPAT . ', \'UTF-8\');', + '$value = $this->resolveValue($context->last(), $context);', + '$buffer .= \'\\\'bar\\\'\';', + 'return $buffer;', + ), + ), + ); + } + + /** + * @expectedException Mustache_Exception_SyntaxException + */ + public function testCompilerThrowsSyntaxException() + { + $compiler = new Mustache_Compiler(); + $compiler->compile('', array(array(Mustache_Tokenizer::TYPE => 'invalid')), 'SomeClass'); + } + + /** + * @param string $value + */ + private function createTextToken($value) + { + return array( + Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_TEXT, + Mustache_Tokenizer::VALUE => $value, + ); + } +} diff --git a/webclient/vendor/mustache/mustache/test/Mustache/Test/ContextTest.php b/webclient/vendor/mustache/mustache/test/Mustache/Test/ContextTest.php new file mode 100644 index 00000000..029c2ba8 --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/Mustache/Test/ContextTest.php @@ -0,0 +1,282 @@ +assertSame('', $one->find('foo')); + $this->assertSame('', $one->find('bar')); + + $two = new Mustache_Context(array( + 'foo' => 'FOO', + 'bar' => '', + )); + $this->assertEquals('FOO', $two->find('foo')); + $this->assertEquals('', $two->find('bar')); + + $obj = new StdClass(); + $obj->name = 'NAME'; + $three = new Mustache_Context($obj); + $this->assertSame($obj, $three->last()); + $this->assertEquals('NAME', $three->find('name')); + } + + public function testPushPopAndLast() + { + $context = new Mustache_Context(); + $this->assertFalse($context->last()); + + $dummy = new Mustache_Test_TestDummy(); + $context->push($dummy); + $this->assertSame($dummy, $context->last()); + $this->assertSame($dummy, $context->pop()); + $this->assertFalse($context->last()); + + $obj = new StdClass(); + $context->push($dummy); + $this->assertSame($dummy, $context->last()); + $context->push($obj); + $this->assertSame($obj, $context->last()); + $this->assertSame($obj, $context->pop()); + $this->assertSame($dummy, $context->pop()); + $this->assertFalse($context->last()); + } + + public function testFind() + { + $context = new Mustache_Context(); + + $dummy = new Mustache_Test_TestDummy(); + + $obj = new StdClass(); + $obj->name = 'obj'; + + $arr = array( + 'a' => array('b' => array('c' => 'see')), + 'b' => 'bee', + ); + + $string = 'some arbitrary string'; + + $context->push($dummy); + $this->assertEquals('dummy', $context->find('name')); + + $context->push($obj); + $this->assertEquals('obj', $context->find('name')); + + $context->pop(); + $this->assertEquals('dummy', $context->find('name')); + + $dummy->name = 'dummyer'; + $this->assertEquals('dummyer', $context->find('name')); + + $context->push($arr); + $this->assertEquals('bee', $context->find('b')); + $this->assertEquals('see', $context->findDot('a.b.c')); + + $dummy->name = 'dummy'; + + $context->push($string); + $this->assertSame($string, $context->last()); + $this->assertEquals('dummy', $context->find('name')); + $this->assertEquals('see', $context->findDot('a.b.c')); + $this->assertEquals('', $context->find('foo')); + $this->assertEquals('', $context->findDot('bar')); + } + + public function testArrayAccessFind() + { + $access = new Mustache_Test_TestArrayAccess(array( + 'a' => array('b' => array('c' => 'see')), + 'b' => 'bee', + )); + + $context = new Mustache_Context($access); + $this->assertEquals('bee', $context->find('b')); + $this->assertEquals('see', $context->findDot('a.b.c')); + $this->assertEquals(null, $context->findDot('a.b.c.d')); + } + + public function testAccessorPriority() + { + $context = new Mustache_Context(new Mustache_Test_AllTheThings()); + + $this->assertEquals('win', $context->find('foo'), 'method beats property'); + $this->assertEquals('win', $context->find('bar'), 'property beats ArrayAccess'); + $this->assertEquals('win', $context->find('baz'), 'ArrayAccess stands alone'); + $this->assertEquals('win', $context->find('qux'), 'ArrayAccess beats private property'); + } + + public function testAnchoredDotNotation() + { + $context = new Mustache_Context(); + + $a = array( + 'name' => 'a', + 'number' => 1, + ); + + $b = array( + 'number' => 2, + 'child' => array( + 'name' => 'baby bee', + ), + ); + + $c = array( + 'name' => 'cee', + ); + + $context->push($a); + $this->assertEquals('a', $context->find('name')); + $this->assertEquals('', $context->findDot('.name')); + $this->assertEquals('a', $context->findAnchoredDot('.name')); + $this->assertEquals(1, $context->find('number')); + $this->assertEquals('', $context->findDot('.number')); + $this->assertEquals(1, $context->findAnchoredDot('.number')); + + $context->push($b); + $this->assertEquals('a', $context->find('name')); + $this->assertEquals(2, $context->find('number')); + $this->assertEquals('', $context->findDot('.name')); + $this->assertEquals('', $context->findDot('.number')); + $this->assertEquals('', $context->findAnchoredDot('.name')); + $this->assertEquals(2, $context->findAnchoredDot('.number')); + $this->assertEquals('baby bee', $context->findDot('child.name')); + $this->assertEquals('', $context->findDot('.child.name')); + $this->assertEquals('baby bee', $context->findAnchoredDot('.child.name')); + + $context->push($c); + $this->assertEquals('cee', $context->find('name')); + $this->assertEquals('', $context->findDot('.name')); + $this->assertEquals('cee', $context->findAnchoredDot('.name')); + $this->assertEquals(2, $context->find('number')); + $this->assertEquals('', $context->findDot('.number')); + $this->assertEquals('', $context->findAnchoredDot('.number')); + $this->assertEquals('baby bee', $context->findDot('child.name')); + $this->assertEquals('', $context->findDot('.child.name')); + $this->assertEquals('', $context->findAnchoredDot('.child.name')); + } + + /** + * @expectedException Mustache_Exception_InvalidArgumentException + */ + public function testAnchoredDotNotationThrowsExceptions() + { + $context = new Mustache_Context(); + $context->push(array('a' => 1)); + $context->findAnchoredDot('a'); + } +} + +class Mustache_Test_TestDummy +{ + public $name = 'dummy'; + + public function __invoke() + { + // nothing + } + + public static function foo() + { + return ''; + } + + public function bar() + { + return ''; + } +} + +class Mustache_Test_TestArrayAccess implements ArrayAccess +{ + private $container = array(); + + public function __construct($array) + { + foreach ($array as $key => $value) { + $this->container[$key] = $value; + } + } + + public function offsetSet($offset, $value) + { + if (is_null($offset)) { + $this->container[] = $value; + } else { + $this->container[$offset] = $value; + } + } + + public function offsetExists($offset) + { + return isset($this->container[$offset]); + } + + public function offsetUnset($offset) + { + unset($this->container[$offset]); + } + + public function offsetGet($offset) + { + return isset($this->container[$offset]) ? $this->container[$offset] : null; + } +} + +class Mustache_Test_AllTheThings implements ArrayAccess +{ + public $foo = 'fail'; + public $bar = 'win'; + private $qux = 'fail'; + + public function foo() + { + return 'win'; + } + + public function offsetExists($offset) + { + return true; + } + + public function offsetGet($offset) + { + switch ($offset) { + case 'foo': + case 'bar': + return 'fail'; + + case 'baz': + case 'qux': + return 'win'; + + default: + return 'lolwhut'; + } + } + + public function offsetSet($offset, $value) + { + // nada + } + + public function offsetUnset($offset) + { + // nada + } +} diff --git a/webclient/vendor/mustache/mustache/test/Mustache/Test/EngineTest.php b/webclient/vendor/mustache/mustache/test/Mustache/Test/EngineTest.php new file mode 100644 index 00000000..e8743d78 --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/Mustache/Test/EngineTest.php @@ -0,0 +1,361 @@ + '__whot__', + 'cache' => self::$tempDir, + 'cache_file_mode' => 777, + 'logger' => $logger, + 'loader' => $loader, + 'partials_loader' => $partialsLoader, + 'partials' => array( + 'foo' => '{{ foo }}', + ), + 'helpers' => array( + 'foo' => array($this, 'getFoo'), + 'bar' => 'BAR', + ), + 'escape' => 'strtoupper', + 'entity_flags' => ENT_QUOTES, + 'charset' => 'ISO-8859-1', + 'pragmas' => array(Mustache_Engine::PRAGMA_FILTERS), + )); + + $this->assertSame($logger, $mustache->getLogger()); + $this->assertSame($loader, $mustache->getLoader()); + $this->assertSame($partialsLoader, $mustache->getPartialsLoader()); + $this->assertEquals('{{ foo }}', $partialsLoader->load('foo')); + $this->assertContains('__whot__', $mustache->getTemplateClassName('{{ foo }}')); + $this->assertEquals('strtoupper', $mustache->getEscape()); + $this->assertEquals(ENT_QUOTES, $mustache->getEntityFlags()); + $this->assertEquals('ISO-8859-1', $mustache->getCharset()); + $this->assertTrue($mustache->hasHelper('foo')); + $this->assertTrue($mustache->hasHelper('bar')); + $this->assertFalse($mustache->hasHelper('baz')); + $this->assertInstanceOf('Mustache_Cache_FilesystemCache', $mustache->getCache()); + $this->assertEquals(array(Mustache_Engine::PRAGMA_FILTERS), $mustache->getPragmas()); + } + + public static function getFoo() + { + return 'foo'; + } + + public function testRender() + { + $source = '{{ foo }}'; + $data = array('bar' => 'baz'); + $output = 'TEH OUTPUT'; + + $template = $this->getMockBuilder('Mustache_Template') + ->disableOriginalConstructor() + ->getMock(); + + $mustache = new MustacheStub(); + $mustache->template = $template; + + $template->expects($this->once()) + ->method('render') + ->with($data) + ->will($this->returnValue($output)); + + $this->assertEquals($output, $mustache->render($source, $data)); + $this->assertEquals($source, $mustache->source); + } + + public function testSettingServices() + { + $logger = new Mustache_Logger_StreamLogger(tmpfile()); + $loader = new Mustache_Loader_StringLoader(); + $tokenizer = new Mustache_Tokenizer(); + $parser = new Mustache_Parser(); + $compiler = new Mustache_Compiler(); + $mustache = new Mustache_Engine(); + $cache = new Mustache_Cache_FilesystemCache(self::$tempDir); + + $this->assertNotSame($logger, $mustache->getLogger()); + $mustache->setLogger($logger); + $this->assertSame($logger, $mustache->getLogger()); + + $this->assertNotSame($loader, $mustache->getLoader()); + $mustache->setLoader($loader); + $this->assertSame($loader, $mustache->getLoader()); + + $this->assertNotSame($loader, $mustache->getPartialsLoader()); + $mustache->setPartialsLoader($loader); + $this->assertSame($loader, $mustache->getPartialsLoader()); + + $this->assertNotSame($tokenizer, $mustache->getTokenizer()); + $mustache->setTokenizer($tokenizer); + $this->assertSame($tokenizer, $mustache->getTokenizer()); + + $this->assertNotSame($parser, $mustache->getParser()); + $mustache->setParser($parser); + $this->assertSame($parser, $mustache->getParser()); + + $this->assertNotSame($compiler, $mustache->getCompiler()); + $mustache->setCompiler($compiler); + $this->assertSame($compiler, $mustache->getCompiler()); + + $this->assertNotSame($cache, $mustache->getCache()); + $mustache->setCache($cache); + $this->assertSame($cache, $mustache->getCache()); + } + + /** + * @group functional + */ + public function testCache() + { + $mustache = new Mustache_Engine(array( + 'template_class_prefix' => '__whot__', + 'cache' => self::$tempDir, + )); + + $source = '{{ foo }}'; + $template = $mustache->loadTemplate($source); + $className = $mustache->getTemplateClassName($source); + + $this->assertInstanceOf($className, $template); + } + + public function testLambdaCache() + { + $mustache = new MustacheStub(array( + 'cache' => self::$tempDir, + 'cache_lambda_templates' => true, + )); + + $this->assertNotInstanceOf('Mustache_Cache_NoopCache', $mustache->getProtectedLambdaCache()); + $this->assertSame($mustache->getCache(), $mustache->getProtectedLambdaCache()); + } + + public function testWithoutLambdaCache() + { + $mustache = new MustacheStub(array( + 'cache' => self::$tempDir, + )); + + $this->assertInstanceOf('Mustache_Cache_NoopCache', $mustache->getProtectedLambdaCache()); + $this->assertNotSame($mustache->getCache(), $mustache->getProtectedLambdaCache()); + } + + /** + * @expectedException Mustache_Exception_InvalidArgumentException + * @dataProvider getBadEscapers + */ + public function testNonCallableEscapeThrowsException($escape) + { + new Mustache_Engine(array('escape' => $escape)); + } + + public function getBadEscapers() + { + return array( + array('nothing'), + array('foo', 'bar'), + ); + } + + /** + * @expectedException Mustache_Exception_RuntimeException + */ + public function testImmutablePartialsLoadersThrowException() + { + $mustache = new Mustache_Engine(array( + 'partials_loader' => new Mustache_Loader_StringLoader(), + )); + + $mustache->setPartials(array('foo' => '{{ foo }}')); + } + + public function testMissingPartialsTreatedAsEmptyString() + { + $mustache = new Mustache_Engine(array( + 'partials_loader' => new Mustache_Loader_ArrayLoader(array( + 'foo' => 'FOO', + 'baz' => 'BAZ', + )), + )); + + $this->assertEquals('FOOBAZ', $mustache->render('{{>foo}}{{>bar}}{{>baz}}', array())); + } + + public function testHelpers() + { + $foo = array($this, 'getFoo'); + $bar = 'BAR'; + $mustache = new Mustache_Engine(array('helpers' => array( + 'foo' => $foo, + 'bar' => $bar, + ))); + + $helpers = $mustache->getHelpers(); + $this->assertTrue($mustache->hasHelper('foo')); + $this->assertTrue($mustache->hasHelper('bar')); + $this->assertTrue($helpers->has('foo')); + $this->assertTrue($helpers->has('bar')); + $this->assertSame($foo, $mustache->getHelper('foo')); + $this->assertSame($bar, $mustache->getHelper('bar')); + + $mustache->removeHelper('bar'); + $this->assertFalse($mustache->hasHelper('bar')); + $mustache->addHelper('bar', $bar); + $this->assertSame($bar, $mustache->getHelper('bar')); + + $baz = array($this, 'wrapWithUnderscores'); + $this->assertFalse($mustache->hasHelper('baz')); + $this->assertFalse($helpers->has('baz')); + + $mustache->addHelper('baz', $baz); + $this->assertTrue($mustache->hasHelper('baz')); + $this->assertTrue($helpers->has('baz')); + + // ... and a functional test + $tpl = $mustache->loadTemplate('{{foo}} - {{bar}} - {{#baz}}qux{{/baz}}'); + $this->assertEquals('foo - BAR - __qux__', $tpl->render()); + $this->assertEquals('foo - BAR - __qux__', $tpl->render(array('qux' => "won't mess things up"))); + } + + public static function wrapWithUnderscores($text) + { + return '__' . $text . '__'; + } + + /** + * @expectedException Mustache_Exception_InvalidArgumentException + */ + public function testSetHelpersThrowsExceptions() + { + $mustache = new Mustache_Engine(); + $mustache->setHelpers('monkeymonkeymonkey'); + } + + /** + * @expectedException Mustache_Exception_InvalidArgumentException + */ + public function testSetLoggerThrowsExceptions() + { + $mustache = new Mustache_Engine(); + $mustache->setLogger(new StdClass()); + } + + public function testLoadPartialCascading() + { + $loader = new Mustache_Loader_ArrayLoader(array( + 'foo' => 'FOO', + )); + + $mustache = new Mustache_Engine(array('loader' => $loader)); + + $tpl = $mustache->loadTemplate('foo'); + + $this->assertSame($tpl, $mustache->loadPartial('foo')); + + $mustache->setPartials(array( + 'foo' => 'f00', + )); + + // setting partials overrides the default template loading fallback. + $this->assertNotSame($tpl, $mustache->loadPartial('foo')); + + // but it didn't overwrite the original template loader templates. + $this->assertSame($tpl, $mustache->loadTemplate('foo')); + } + + public function testPartialLoadFailLogging() + { + $name = tempnam(sys_get_temp_dir(), 'mustache-test'); + $mustache = new Mustache_Engine(array( + 'logger' => new Mustache_Logger_StreamLogger($name, Mustache_Logger::WARNING), + 'partials' => array( + 'foo' => 'FOO', + 'bar' => 'BAR', + ), + )); + + $result = $mustache->render('{{> foo }}{{> bar }}{{> baz }}', array()); + $this->assertEquals('FOOBAR', $result); + + $this->assertContains('WARNING: Partial not found: "baz"', file_get_contents($name)); + } + + public function testCacheWarningLogging() + { + list($name, $mustache) = $this->getLoggedMustache(Mustache_Logger::WARNING); + $mustache->render('{{ foo }}', array('foo' => 'FOO')); + $this->assertContains('WARNING: Template cache disabled, evaluating', file_get_contents($name)); + } + + public function testLoggingIsNotTooAnnoying() + { + list($name, $mustache) = $this->getLoggedMustache(); + $mustache->render('{{ foo }}{{> bar }}', array('foo' => 'FOO')); + $this->assertEmpty(file_get_contents($name)); + } + + public function testVerboseLoggingIsVerbose() + { + list($name, $mustache) = $this->getLoggedMustache(Mustache_Logger::DEBUG); + $mustache->render('{{ foo }}{{> bar }}', array('foo' => 'FOO')); + $log = file_get_contents($name); + $this->assertContains('DEBUG: Instantiating template: ', $log); + $this->assertContains('WARNING: Partial not found: "bar"', $log); + } + + /** + * @expectedException Mustache_Exception_InvalidArgumentException + */ + public function testUnknownPragmaThrowsException() + { + new Mustache_Engine(array( + 'pragmas' => array('UNKNOWN'), + )); + } + + private function getLoggedMustache($level = Mustache_Logger::ERROR) + { + $name = tempnam(sys_get_temp_dir(), 'mustache-test'); + $mustache = new Mustache_Engine(array( + 'logger' => new Mustache_Logger_StreamLogger($name, $level), + )); + + return array($name, $mustache); + } +} + +class MustacheStub extends Mustache_Engine +{ + public $source; + public $template; + + public function loadTemplate($source) + { + $this->source = $source; + + return $this->template; + } + + public function getProtectedLambdaCache() + { + return $this->getLambdaCache(); + } +} diff --git a/webclient/vendor/mustache/mustache/test/Mustache/Test/Exception/SyntaxExceptionTest.php b/webclient/vendor/mustache/mustache/test/Mustache/Test/Exception/SyntaxExceptionTest.php new file mode 100644 index 00000000..3f6b2e45 --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/Mustache/Test/Exception/SyntaxExceptionTest.php @@ -0,0 +1,39 @@ + 'this')); + $this->assertTrue($e instanceof LogicException); + $this->assertTrue($e instanceof Mustache_Exception); + } + + public function testGetToken() + { + $token = array(Mustache_Tokenizer::TYPE => 'whatever'); + $e = new Mustache_Exception_SyntaxException('ignore this', $token); + $this->assertEquals($token, $e->getToken()); + } + + public function testPrevious() + { + if (version_compare(PHP_VERSION, '5.3.0', '<')) { + $this->markTestSkipped('Exception chaining requires at least PHP 5.3'); + } + + $previous = new Exception(); + $e = new Mustache_Exception_SyntaxException('foo', array(), $previous); + + $this->assertSame($previous, $e->getPrevious()); + } +} diff --git a/webclient/vendor/mustache/mustache/test/Mustache/Test/Exception/UnknownFilterExceptionTest.php b/webclient/vendor/mustache/mustache/test/Mustache/Test/Exception/UnknownFilterExceptionTest.php new file mode 100644 index 00000000..049c8426 --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/Mustache/Test/Exception/UnknownFilterExceptionTest.php @@ -0,0 +1,44 @@ +assertTrue($e instanceof UnexpectedValueException); + $this->assertTrue($e instanceof Mustache_Exception); + } + + public function testMessage() + { + $e = new Mustache_Exception_UnknownFilterException('sausage'); + $this->assertEquals('Unknown filter: sausage', $e->getMessage()); + } + + public function testGetFilterName() + { + $e = new Mustache_Exception_UnknownFilterException('eggs'); + $this->assertEquals('eggs', $e->getFilterName()); + } + + public function testPrevious() + { + if (version_compare(PHP_VERSION, '5.3.0', '<')) { + $this->markTestSkipped('Exception chaining requires at least PHP 5.3'); + } + + $previous = new Exception(); + $e = new Mustache_Exception_UnknownFilterException('foo', $previous); + + $this->assertSame($previous, $e->getPrevious()); + } +} diff --git a/webclient/vendor/mustache/mustache/test/Mustache/Test/Exception/UnknownHelperExceptionTest.php b/webclient/vendor/mustache/mustache/test/Mustache/Test/Exception/UnknownHelperExceptionTest.php new file mode 100644 index 00000000..b1682cdc --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/Mustache/Test/Exception/UnknownHelperExceptionTest.php @@ -0,0 +1,43 @@ +assertTrue($e instanceof InvalidArgumentException); + $this->assertTrue($e instanceof Mustache_Exception); + } + + public function testMessage() + { + $e = new Mustache_Exception_UnknownHelperException('beta'); + $this->assertEquals('Unknown helper: beta', $e->getMessage()); + } + + public function testGetHelperName() + { + $e = new Mustache_Exception_UnknownHelperException('gamma'); + $this->assertEquals('gamma', $e->getHelperName()); + } + + public function testPrevious() + { + if (version_compare(PHP_VERSION, '5.3.0', '<')) { + $this->markTestSkipped('Exception chaining requires at least PHP 5.3'); + } + + $previous = new Exception(); + $e = new Mustache_Exception_UnknownHelperException('foo', $previous); + $this->assertSame($previous, $e->getPrevious()); + } +} diff --git a/webclient/vendor/mustache/mustache/test/Mustache/Test/Exception/UnknownTemplateExceptionTest.php b/webclient/vendor/mustache/mustache/test/Mustache/Test/Exception/UnknownTemplateExceptionTest.php new file mode 100644 index 00000000..2452749b --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/Mustache/Test/Exception/UnknownTemplateExceptionTest.php @@ -0,0 +1,43 @@ +assertTrue($e instanceof InvalidArgumentException); + $this->assertTrue($e instanceof Mustache_Exception); + } + + public function testMessage() + { + $e = new Mustache_Exception_UnknownTemplateException('luigi'); + $this->assertEquals('Unknown template: luigi', $e->getMessage()); + } + + public function testGetTemplateName() + { + $e = new Mustache_Exception_UnknownTemplateException('yoshi'); + $this->assertEquals('yoshi', $e->getTemplateName()); + } + + public function testPrevious() + { + if (version_compare(PHP_VERSION, '5.3.0', '<')) { + $this->markTestSkipped('Exception chaining requires at least PHP 5.3'); + } + + $previous = new Exception(); + $e = new Mustache_Exception_UnknownTemplateException('foo', $previous); + $this->assertSame($previous, $e->getPrevious()); + } +} diff --git a/webclient/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/ClosureQuirksTest.php b/webclient/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/ClosureQuirksTest.php new file mode 100644 index 00000000..c997a1d2 --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/ClosureQuirksTest.php @@ -0,0 +1,32 @@ +mustache = new Mustache_Engine(); + } + + public function testClosuresDontLikeItWhenYouTouchTheirProperties() + { + $tpl = $this->mustache->loadTemplate('{{ foo.bar }}'); + $this->assertEquals('', $tpl->render(array('foo' => function () { + return 'FOO'; + }))); + } +} diff --git a/webclient/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/EngineTest.php b/webclient/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/EngineTest.php new file mode 100644 index 00000000..3ed70c76 --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/EngineTest.php @@ -0,0 +1,50 @@ + $pragmas, + 'helpers' => $helpers, + )); + + $this->assertEquals($expect, $mustache->render($tpl, $data)); + } + + public function pragmaData() + { + $helpers = array( + 'longdate' => function (\DateTime $value) { + return $value->format('Y-m-d h:m:s'); + }, + ); + + $data = array( + 'date' => new DateTime('1/1/2000', new DateTimeZone('UTC')), + ); + + $tpl = '{{ date | longdate }}'; + + return array( + array(array(Mustache_Engine::PRAGMA_FILTERS), $helpers, $data, $tpl, '2000-01-01 12:01:00'), + array(array(), $helpers, $data, $tpl, ''), + ); + } +} diff --git a/webclient/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/FiltersTest.php b/webclient/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/FiltersTest.php new file mode 100644 index 00000000..7adc6638 --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/FiltersTest.php @@ -0,0 +1,187 @@ +mustache = new Mustache_Engine(); + } + + /** + * @dataProvider singleFilterData + */ + public function testSingleFilter($tpl, $helpers, $data, $expect) + { + $this->mustache->setHelpers($helpers); + $this->assertEquals($expect, $this->mustache->render($tpl, $data)); + } + + public function singleFilterData() + { + $helpers = array( + 'longdate' => function (\DateTime $value) { + return $value->format('Y-m-d h:m:s'); + }, + 'echo' => function ($value) { + return array($value, $value, $value); + }, + ); + + return array( + array( + '{{% FILTERS }}{{ date | longdate }}', + $helpers, + (object) array('date' => new DateTime('1/1/2000', new DateTimeZone('UTC'))), + '2000-01-01 12:01:00', + ), + + array( + '{{% FILTERS }}{{# word | echo }}{{ . }}!{{/ word | echo }}', + $helpers, + array('word' => 'bacon'), + 'bacon!bacon!bacon!', + ), + ); + } + + public function testChainedFilters() + { + $tpl = $this->mustache->loadTemplate('{{% FILTERS }}{{ date | longdate | withbrackets }}'); + + $this->mustache->addHelper('longdate', function (\DateTime $value) { + return $value->format('Y-m-d h:m:s'); + }); + + $this->mustache->addHelper('withbrackets', function ($value) { + return sprintf('[[%s]]', $value); + }); + + $foo = new \StdClass(); + $foo->date = new DateTime('1/1/2000', new DateTimeZone('UTC')); + + $this->assertEquals('[[2000-01-01 12:01:00]]', $tpl->render($foo)); + } + + const CHAINED_SECTION_FILTERS_TPL = <<<'EOS' +{{% FILTERS }} +{{# word | echo | with_index }} +{{ key }}: {{ value }} +{{/ word | echo | with_index }} +EOS; + + public function testChainedSectionFilters() + { + $tpl = $this->mustache->loadTemplate(self::CHAINED_SECTION_FILTERS_TPL); + + $this->mustache->addHelper('echo', function ($value) { + return array($value, $value, $value); + }); + + $this->mustache->addHelper('with_index', function ($value) { + return array_map(function ($k, $v) { + return array( + 'key' => $k, + 'value' => $v, + ); + }, array_keys($value), $value); + }); + + $this->assertEquals("0: bacon\n1: bacon\n2: bacon\n", $tpl->render(array('word' => 'bacon'))); + } + + /** + * @dataProvider interpolateFirstData + */ + public function testInterpolateFirst($tpl, $data, $expect) + { + $this->assertEquals($expect, $this->mustache->render($tpl, $data)); + } + + public function interpolateFirstData() + { + $data = array( + 'foo' => 'FOO', + 'bar' => function ($value) { + return ($value === 'FOO') ? 'win!' : 'fail :('; + }, + ); + + return array( + array('{{% FILTERS }}{{ foo | bar }}', $data, 'win!'), + array('{{% FILTERS }}{{# foo | bar }}{{ . }}{{/ foo | bar }}', $data, 'win!'), + ); + } + + /** + * @expectedException Mustache_Exception_UnknownFilterException + * @dataProvider brokenPipeData + */ + public function testThrowsExceptionForBrokenPipes($tpl, $data) + { + $this->mustache->render($tpl, $data); + } + + public function brokenPipeData() + { + return array( + array('{{% FILTERS }}{{ foo | bar }}', array()), + array('{{% FILTERS }}{{ foo | bar }}', array('foo' => 'FOO')), + array('{{% FILTERS }}{{ foo | bar }}', array('foo' => 'FOO', 'bar' => 'BAR')), + array('{{% FILTERS }}{{ foo | bar }}', array('foo' => 'FOO', 'bar' => array(1, 2))), + array('{{% FILTERS }}{{ foo | bar | baz }}', array('foo' => 'FOO', 'bar' => function () { + return 'BAR'; + })), + array('{{% FILTERS }}{{ foo | bar | baz }}', array('foo' => 'FOO', 'baz' => function () { + return 'BAZ'; + })), + array('{{% FILTERS }}{{ foo | bar | baz }}', array('bar' => function () { + return 'BAR'; + })), + array('{{% FILTERS }}{{ foo | bar | baz }}', array('baz' => function () { + return 'BAZ'; + })), + array('{{% FILTERS }}{{ foo | bar.baz }}', array('foo' => 'FOO', 'bar' => function () { + return 'BAR'; + }, 'baz' => function () { + return 'BAZ'; + })), + + array('{{% FILTERS }}{{# foo | bar }}{{ . }}{{/ foo | bar }}', array()), + array('{{% FILTERS }}{{# foo | bar }}{{ . }}{{/ foo | bar }}', array('foo' => 'FOO')), + array('{{% FILTERS }}{{# foo | bar }}{{ . }}{{/ foo | bar }}', array('foo' => 'FOO', 'bar' => 'BAR')), + array('{{% FILTERS }}{{# foo | bar }}{{ . }}{{/ foo | bar }}', array('foo' => 'FOO', 'bar' => array(1, 2))), + array('{{% FILTERS }}{{# foo | bar | baz }}{{ . }}{{/ foo | bar | baz }}', array('foo' => 'FOO', 'bar' => function () { + return 'BAR'; + })), + array('{{% FILTERS }}{{# foo | bar | baz }}{{ . }}{{/ foo | bar | baz }}', array('foo' => 'FOO', 'baz' => function () { + return 'BAZ'; + })), + array('{{% FILTERS }}{{# foo | bar | baz }}{{ . }}{{/ foo | bar | baz }}', array('bar' => function () { + return 'BAR'; + })), + array('{{% FILTERS }}{{# foo | bar | baz }}{{ . }}{{/ foo | bar | baz }}', array('baz' => function () { + return 'BAZ'; + })), + array('{{% FILTERS }}{{# foo | bar.baz }}{{ . }}{{/ foo | bar.baz }}', array('foo' => 'FOO', 'bar' => function () { + return 'BAR'; + }, 'baz' => function () { + return 'BAZ'; + })), + ); + } +} diff --git a/webclient/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/HigherOrderSectionsTest.php b/webclient/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/HigherOrderSectionsTest.php new file mode 100644 index 00000000..f926fdf7 --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/HigherOrderSectionsTest.php @@ -0,0 +1,77 @@ +mustache = new Mustache_Engine(); + } + + public function testAnonymousFunctionSectionCallback() + { + $tpl = $this->mustache->loadTemplate('{{#wrapper}}{{name}}{{/wrapper}}'); + + $foo = new Mustache_Test_FiveThree_Functional_Foo(); + $foo->name = 'Mario'; + $foo->wrapper = function ($text) { + return sprintf('
    %s
    ', $text); + }; + + $this->assertEquals(sprintf('
    %s
    ', $foo->name), $tpl->render($foo)); + } + + public function testSectionCallback() + { + $one = $this->mustache->loadTemplate('{{name}}'); + $two = $this->mustache->loadTemplate('{{#wrap}}{{name}}{{/wrap}}'); + + $foo = new Mustache_Test_FiveThree_Functional_Foo(); + $foo->name = 'Luigi'; + + $this->assertEquals($foo->name, $one->render($foo)); + $this->assertEquals(sprintf('%s', $foo->name), $two->render($foo)); + } + + public function testViewArrayAnonymousSectionCallback() + { + $tpl = $this->mustache->loadTemplate('{{#wrap}}{{name}}{{/wrap}}'); + + $data = array( + 'name' => 'Bob', + 'wrap' => function ($text) { + return sprintf('[[%s]]', $text); + }, + ); + + $this->assertEquals(sprintf('[[%s]]', $data['name']), $tpl->render($data)); + } +} + +class Mustache_Test_FiveThree_Functional_Foo +{ + public $name = 'Justin'; + public $lorem = 'Lorem ipsum dolor sit amet,'; + public $wrap; + + public function __construct() + { + $this->wrap = function ($text) { + return sprintf('%s', $text); + }; + } +} diff --git a/webclient/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/LambdaHelperTest.php b/webclient/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/LambdaHelperTest.php new file mode 100644 index 00000000..c67957e4 --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/LambdaHelperTest.php @@ -0,0 +1,67 @@ +mustache = new Mustache_Engine(); + } + + public function testSectionLambdaHelper() + { + $one = $this->mustache->loadTemplate('{{name}}'); + $two = $this->mustache->loadTemplate('{{#lambda}}{{name}}{{/lambda}}'); + + $foo = new StdClass(); + $foo->name = 'Mario'; + $foo->lambda = function ($text, $mustache) { + return strtoupper($mustache->render($text)); + }; + + $this->assertEquals('Mario', $one->render($foo)); + $this->assertEquals('MARIO', $two->render($foo)); + } + + public function testSectionLambdaHelperRespectsDelimiterChanges() + { + $tpl = $this->mustache->loadTemplate("{{=<% %>=}}\n<%# bang %><% value %><%/ bang %>"); + + $data = new StdClass(); + $data->value = 'hello world'; + $data->bang = function ($text, $mustache) { + return $mustache->render($text) . '!'; + }; + + $this->assertEquals('hello world!', $tpl->render($data)); + } + + public function testLambdaHelperIsInvokable() + { + $one = $this->mustache->loadTemplate('{{name}}'); + $two = $this->mustache->loadTemplate('{{#lambda}}{{name}}{{/lambda}}'); + + $foo = new StdClass(); + $foo->name = 'Mario'; + $foo->lambda = function ($text, $render) { + return strtoupper($render($text)); + }; + + $this->assertEquals('Mario', $one->render($foo)); + $this->assertEquals('MARIO', $two->render($foo)); + } +} diff --git a/webclient/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/MustacheSpecTest.php b/webclient/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/MustacheSpecTest.php new file mode 100644 index 00000000..d72686d5 --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/MustacheSpecTest.php @@ -0,0 +1,68 @@ +markTestSkipped('Mustache spec submodule not initialized: run "git submodule update --init"'); + } + } + + /** + * @group lambdas + * @dataProvider loadLambdasSpec + */ + public function testLambdasSpec($desc, $source, $partials, $data, $expected) + { + $template = self::loadTemplate($source, $partials); + $this->assertEquals($expected, $template($this->prepareLambdasSpec($data)), $desc); + } + + public function loadLambdasSpec() + { + return $this->loadSpec('~lambdas'); + } + + /** + * Extract and lambdafy any 'lambda' values found in the $data array. + */ + private function prepareLambdasSpec($data) + { + foreach ($data as $key => $val) { + if ($key === 'lambda') { + if (!isset($val['php'])) { + $this->markTestSkipped(sprintf('PHP lambda test not implemented for this test.')); + } + + $func = $val['php']; + $data[$key] = function ($text = null) use ($func) { + return eval($func); + }; + } elseif (is_array($val)) { + $data[$key] = $this->prepareLambdasSpec($val); + } + } + + return $data; + } +} diff --git a/webclient/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/PartialLambdaIndentTest.php b/webclient/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/PartialLambdaIndentTest.php new file mode 100644 index 00000000..605003c2 --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/PartialLambdaIndentTest.php @@ -0,0 +1,94 @@ + + {{> input }} + + +EOS; + $partial = <<<'EOS' + + +EOS; + + $expected = <<<'EOS' +
    + +
    + +EOS; + + $m = new Mustache_Engine(array( + 'partials' => array('input' => $partial), + )); + + $tpl = $m->loadTemplate($src); + + $data = new Mustache_Test_FiveThree_Functional_ClassWithLambda(); + $this->assertEquals($expected, $tpl->render($data)); + } + + public function testLambdaInterpolationsInsidePartialsAreIndentedProperly() + { + $src = <<<'EOS' +
    + {{> input }} +
    + +EOS; + $partial = <<<'EOS' + + +EOS; + + $expected = <<<'EOS' +
    + +
    + +EOS; + + $m = new Mustache_Engine(array( + 'partials' => array('input' => $partial), + )); + + $tpl = $m->loadTemplate($src); + + $data = new Mustache_Test_FiveThree_Functional_ClassWithLambda(); + $this->assertEquals($expected, $tpl->render($data)); + } +} + +class Mustache_Test_FiveThree_Functional_ClassWithLambda +{ + public function _t() + { + return function ($val) { + return strtoupper($val); + }; + } + + public function placeholder() + { + return function () { + return 'Enter your name'; + }; + } +} diff --git a/webclient/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/StrictCallablesTest.php b/webclient/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/StrictCallablesTest.php new file mode 100644 index 00000000..fc910727 --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/StrictCallablesTest.php @@ -0,0 +1,135 @@ + $strict)); + $tpl = $mustache->loadTemplate('{{# section }}{{ name }}{{/ section }}'); + + $data = new StdClass(); + $data->name = $name; + $data->section = $section; + + $this->assertEquals($expected, $tpl->render($data)); + } + + public function callables() + { + $lambda = function ($tpl, $mustache) { + return strtoupper($mustache->render($tpl)); + }; + + return array( + // Interpolation lambdas + array( + false, + array($this, 'instanceName'), + $lambda, + 'YOSHI', + ), + array( + false, + array(__CLASS__, 'staticName'), + $lambda, + 'YOSHI', + ), + array( + false, + function () { + return 'Yoshi'; + }, + $lambda, + 'YOSHI', + ), + + // Section lambdas + array( + false, + 'Yoshi', + array($this, 'instanceCallable'), + 'YOSHI', + ), + array( + false, + 'Yoshi', + array(__CLASS__, 'staticCallable'), + 'YOSHI', + ), + array( + false, + 'Yoshi', + $lambda, + 'YOSHI', + ), + + // Strict interpolation lambdas + array( + true, + function () { + return 'Yoshi'; + }, + $lambda, + 'YOSHI', + ), + + // Strict section lambdas + array( + true, + 'Yoshi', + array($this, 'instanceCallable'), + 'YoshiYoshi', + ), + array( + true, + 'Yoshi', + array(__CLASS__, 'staticCallable'), + 'YoshiYoshi', + ), + array( + true, + 'Yoshi', + function ($tpl, $mustache) { + return strtoupper($mustache->render($tpl)); + }, + 'YOSHI', + ), + ); + } + + public function instanceCallable($tpl, $mustache) + { + return strtoupper($mustache->render($tpl)); + } + + public static function staticCallable($tpl, $mustache) + { + return strtoupper($mustache->render($tpl)); + } + + public function instanceName() + { + return 'Yoshi'; + } + + public static function staticName() + { + return 'Yoshi'; + } +} diff --git a/webclient/vendor/mustache/mustache/test/Mustache/Test/Functional/CallTest.php b/webclient/vendor/mustache/mustache/test/Mustache/Test/Functional/CallTest.php new file mode 100644 index 00000000..fddeacf2 --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/Mustache/Test/Functional/CallTest.php @@ -0,0 +1,40 @@ +loadTemplate('{{# foo }}{{ label }}: {{ name }}{{/ foo }}'); + + $foo = new Mustache_Test_Functional_ClassWithCall(); + $foo->name = 'Bob'; + + $data = array('label' => 'name', 'foo' => $foo); + + $this->assertEquals('name: Bob', $tpl->render($data)); + } +} + +class Mustache_Test_Functional_ClassWithCall +{ + public $name; + + public function __call($method, $args) + { + return 'unknown value'; + } +} diff --git a/webclient/vendor/mustache/mustache/test/Mustache/Test/Functional/ExamplesTest.php b/webclient/vendor/mustache/mustache/test/Mustache/Test/Functional/ExamplesTest.php new file mode 100644 index 00000000..d7ef51ac --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/Mustache/Test/Functional/ExamplesTest.php @@ -0,0 +1,142 @@ + $partials, + )); + $this->assertEquals($expected, $mustache->loadTemplate($source)->render($context)); + } + + /** + * Data provider for testExamples method. + * + * Loads examples from the test fixtures directory. + * + * This examples directory should contain any number of subdirectories, each of which contains + * three files: one Mustache class (.php), one Mustache template (.mustache), and one output file + * (.txt). Optionally, the directory may contain a folder full of partials. + * + * @return array + */ + public function getExamples() + { + $path = realpath(dirname(__FILE__) . '/../../../fixtures/examples'); + $examples = array(); + + $handle = opendir($path); + while (($file = readdir($handle)) !== false) { + if ($file === '.' || $file === '..') { + continue; + } + + $fullpath = $path . '/' . $file; + if (is_dir($fullpath)) { + $examples[$file] = $this->loadExample($fullpath); + } + } + closedir($handle); + + return $examples; + } + + /** + * Helper method to load an example given the full path. + * + * @param string $path + * + * @return array arguments for testExamples + */ + private function loadExample($path) + { + $context = null; + $source = null; + $partials = array(); + $expected = null; + + $handle = opendir($path); + while (($file = readdir($handle)) !== false) { + $fullpath = $path . '/' . $file; + $info = pathinfo($fullpath); + + if (is_dir($fullpath) && $info['basename'] === 'partials') { + // load partials + $partials = $this->loadPartials($fullpath); + } elseif (is_file($fullpath)) { + // load other files + switch ($info['extension']) { + case 'php': + require_once $fullpath; + $className = $info['filename']; + $context = new $className(); + break; + + case 'mustache': + $source = file_get_contents($fullpath); + break; + + case 'txt': + $expected = file_get_contents($fullpath); + break; + } + } + } + closedir($handle); + + return array($context, $source, $partials, $expected); + } + + /** + * Helper method to load partials given an example directory. + * + * @param string $path + * + * @return array $partials + */ + private function loadPartials($path) + { + $partials = array(); + + $handle = opendir($path); + while (($file = readdir($handle)) !== false) { + if ($file === '.' || $file === '..') { + continue; + } + + $fullpath = $path . '/' . $file; + $info = pathinfo($fullpath); + + if ($info['extension'] === 'mustache') { + $partials[$info['filename']] = file_get_contents($fullpath); + } + } + closedir($handle); + + return $partials; + } +} diff --git a/webclient/vendor/mustache/mustache/test/Mustache/Test/Functional/HigherOrderSectionsTest.php b/webclient/vendor/mustache/mustache/test/Mustache/Test/Functional/HigherOrderSectionsTest.php new file mode 100644 index 00000000..e2f68b0b --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/Mustache/Test/Functional/HigherOrderSectionsTest.php @@ -0,0 +1,177 @@ +mustache = new Mustache_Engine(); + } + + /** + * @dataProvider sectionCallbackData + */ + public function testSectionCallback($data, $tpl, $expect) + { + $this->assertEquals($expect, $this->mustache->render($tpl, $data)); + } + + public function sectionCallbackData() + { + $foo = new Mustache_Test_Functional_Foo(); + $foo->doublewrap = array($foo, 'wrapWithBoth'); + + $bar = new Mustache_Test_Functional_Foo(); + $bar->trimmer = array(get_class($bar), 'staticTrim'); + + return array( + array($foo, '{{#doublewrap}}{{name}}{{/doublewrap}}', sprintf('%s', $foo->name)), + array($bar, '{{#trimmer}} {{name}} {{/trimmer}}', $bar->name), + ); + } + + public function testViewArraySectionCallback() + { + $tpl = $this->mustache->loadTemplate('{{#trim}} {{name}} {{/trim}}'); + + $foo = new Mustache_Test_Functional_Foo(); + + $data = array( + 'name' => 'Bob', + 'trim' => array(get_class($foo), 'staticTrim'), + ); + + $this->assertEquals($data['name'], $tpl->render($data)); + } + + public function testMonsters() + { + $tpl = $this->mustache->loadTemplate('{{#title}}{{title}} {{/title}}{{name}}'); + + $frank = new Mustache_Test_Functional_Monster(); + $frank->title = 'Dr.'; + $frank->name = 'Frankenstein'; + $this->assertEquals('Dr. Frankenstein', $tpl->render($frank)); + + $dracula = new Mustache_Test_Functional_Monster(); + $dracula->title = 'Count'; + $dracula->name = 'Dracula'; + $this->assertEquals('Count Dracula', $tpl->render($dracula)); + } + + public function testPassthroughOptimization() + { + $mustache = $this->getMock('Mustache_Engine', array('loadLambda')); + $mustache->expects($this->never()) + ->method('loadLambda'); + + $tpl = $mustache->loadTemplate('{{#wrap}}NAME{{/wrap}}'); + + $foo = new Mustache_Test_Functional_Foo(); + $foo->wrap = array($foo, 'wrapWithEm'); + + $this->assertEquals('NAME', $tpl->render($foo)); + } + + public function testWithoutPassthroughOptimization() + { + $mustache = $this->getMock('Mustache_Engine', array('loadLambda')); + $mustache->expects($this->once()) + ->method('loadLambda') + ->will($this->returnValue($mustache->loadTemplate('{{ name }}'))); + + $tpl = $mustache->loadTemplate('{{#wrap}}{{name}}{{/wrap}}'); + + $foo = new Mustache_Test_Functional_Foo(); + $foo->wrap = array($foo, 'wrapWithEm'); + + $this->assertEquals('' . $foo->name . '', $tpl->render($foo)); + } + + /** + * @dataProvider cacheLambdaTemplatesData + */ + public function testCacheLambdaTemplatesOptionWorks($dirName, $tplPrefix, $enable, $expect) + { + $cacheDir = $this->setUpCacheDir($dirName); + $mustache = new Mustache_Engine(array( + 'template_class_prefix' => $tplPrefix, + 'cache' => $cacheDir, + 'cache_lambda_templates' => $enable, + )); + + $tpl = $mustache->loadTemplate('{{#wrap}}{{name}}{{/wrap}}'); + $foo = new Mustache_Test_Functional_Foo(); + $foo->wrap = array($foo, 'wrapWithEm'); + $this->assertEquals('' . $foo->name . '', $tpl->render($foo)); + $this->assertCount($expect, glob($cacheDir . '/*.php')); + } + + public function cacheLambdaTemplatesData() + { + return array( + array('test_enabling_lambda_cache', '_TestEnablingLambdaCache_', true, 2), + array('test_disabling_lambda_cache', '_TestDisablingLambdaCache_', false, 1), + ); + } + + protected function setUpCacheDir($name) + { + $cacheDir = self::$tempDir . '/' . $name; + if (file_exists($cacheDir)) { + self::rmdir($cacheDir); + } + mkdir($cacheDir, 0777, true); + + return $cacheDir; + } +} + +class Mustache_Test_Functional_Foo +{ + public $name = 'Justin'; + public $lorem = 'Lorem ipsum dolor sit amet,'; + + public function wrapWithEm($text) + { + return sprintf('%s', $text); + } + + /** + * @param string $text + */ + public function wrapWithStrong($text) + { + return sprintf('%s', $text); + } + + public function wrapWithBoth($text) + { + return self::wrapWithStrong(self::wrapWithEm($text)); + } + + public static function staticTrim($text) + { + return trim($text); + } +} + +class Mustache_Test_Functional_Monster +{ + public $title; + public $name; +} diff --git a/webclient/vendor/mustache/mustache/test/Mustache/Test/Functional/InheritanceTest.php b/webclient/vendor/mustache/mustache/test/Mustache/Test/Functional/InheritanceTest.php new file mode 100644 index 00000000..b39555f6 --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/Mustache/Test/Functional/InheritanceTest.php @@ -0,0 +1,526 @@ +mustache = new Mustache_Engine(array( + 'pragmas' => array(Mustache_Engine::PRAGMA_BLOCKS), + )); + } + + public function getIllegalInheritanceExamples() + { + return array( + array( + array( + 'foo' => '{{$baz}}default content{{/baz}}', + ), + array( + 'bar' => 'set by user', + ), + '{{< foo }}{{# bar }}{{$ baz }}{{/ baz }}{{/ bar }}{{/ foo }}', + ), + array( + array( + 'foo' => '{{$baz}}default content{{/baz}}', + ), + array( + ), + '{{ '{{$baz}}default content{{/baz}}', + 'qux' => 'I am a partial', + ), + array( + ), + '{{qux}}{{$baz}}set by template{{/baz}}{{/foo}}', + ), + array( + array( + 'foo' => '{{$baz}}default content{{/baz}}', + ), + array(), + '{{=}}<%={{ }}=%>{{/foo}}', + ), + ); + } + + public function getLegalInheritanceExamples() + { + return array( + array( + array( + 'foo' => '{{$baz}}default content{{/baz}}', + ), + array( + 'bar' => 'set by user', + ), + '{{ '{{$baz}}default content{{/baz}}', + ), + array( + ), + '{{ '{{$baz}}defualt content{{/baz}}', + ), + array(), + '{{ '{{$a}}FAIL!{{/a}}', + 'bar' => 'WIN!!', + ), + array(), + '{{mustache->loadTemplate('{{$title}}Default title{{/title}}'); + + $data = array(); + + $this->assertEquals('Default title', $tpl->render($data)); + } + + public function testDefaultContentRendersVariables() + { + $tpl = $this->mustache->loadTemplate('{{$foo}}default {{bar}} content{{/foo}}'); + + $data = array( + 'bar' => 'baz', + ); + + $this->assertEquals('default baz content', $tpl->render($data)); + } + + public function testDefaultContentRendersTripleMustacheVariables() + { + $tpl = $this->mustache->loadTemplate('{{$foo}}default {{{bar}}} content{{/foo}}'); + + $data = array( + 'bar' => '', + ); + + $this->assertEquals('default content', $tpl->render($data)); + } + + public function testDefaultContentRendersSections() + { + $tpl = $this->mustache->loadTemplate( + '{{$foo}}default {{#bar}}{{baz}}{{/bar}} content{{/foo}}' + ); + + $data = array( + 'bar' => array('baz' => 'qux'), + ); + + $this->assertEquals('default qux content', $tpl->render($data)); + } + + public function testDefaultContentRendersNegativeSections() + { + $tpl = $this->mustache->loadTemplate( + '{{$foo}}default {{^bar}}{{baz}}{{/bar}} content{{/foo}}' + ); + + $data = array( + 'foo' => array('bar' => 'qux'), + 'baz' => 'three', + ); + + $this->assertEquals('default three content', $tpl->render($data)); + } + + public function testMustacheInjectionInDefaultContent() + { + $tpl = $this->mustache->loadTemplate( + '{{$foo}}default {{#bar}}{{baz}}{{/bar}} content{{/foo}}' + ); + + $data = array( + 'bar' => array('baz' => '{{qux}}'), + ); + + $this->assertEquals('default {{qux}} content', $tpl->render($data)); + } + + public function testDefaultContentRenderedInsideIncludedTemplates() + { + $partials = array( + 'include' => '{{$foo}}default content{{/foo}}', + ); + + $this->mustache->setPartials($partials); + + $tpl = $this->mustache->loadTemplate( + '{{assertEquals('default content', $tpl->render($data)); + } + + public function testOverriddenContent() + { + $partials = array( + 'super' => '...{{$title}}Default title{{/title}}...', + ); + + $this->mustache->setPartials($partials); + + $tpl = $this->mustache->loadTemplate( + '{{assertEquals('...sub template title...', $tpl->render($data)); + } + + public function testOverriddenPartial() + { + $partials = array( + 'partial' => '|{{$stuff}}...{{/stuff}}{{$default}} default{{/default}}|', + ); + + $this->mustache->setPartials($partials); + + $tpl = $this->mustache->loadTemplate( + 'test {{assertEquals('test |override1 default| |override2 default|', $tpl->render($data)); + } + + public function testDataDoesNotOverrideBlock() + { + $partials = array( + 'include' => '{{$var}}var in include{{/var}}', + ); + + $this->mustache->setPartials($partials); + + $tpl = $this->mustache->loadTemplate( + '{{ 'var in data', + ); + + $this->assertEquals('var in template', $tpl->render($data)); + } + + public function testDataDoesNotOverrideDefaultBlockValue() + { + $partials = array( + 'include' => '{{$var}}var in include{{/var}}', + ); + + $this->mustache->setPartials($partials); + + $tpl = $this->mustache->loadTemplate( + '{{ 'var in data', + ); + + $this->assertEquals('var in include', $tpl->render($data)); + } + + public function testOverridePartialWithNewlines() + { + $partials = array( + 'partial' => '{{$ballmer}}peaking{{/ballmer}}', + ); + + $this->mustache->setPartials($partials); + + $tpl = $this->mustache->loadTemplate( + "{{assertEquals("peaked\n\n:(\n", $tpl->render($data)); + } + + public function testInheritIndentationWhenOverridingAPartial() + { + $partials = array( + 'partial' => 'stop: + {{$nineties}}collaborate and listen{{/nineties}}', + ); + + $this->mustache->setPartials($partials); + + $tpl = $this->mustache->loadTemplate( + '{{assertEquals( + 'stop: + hammer time', + $tpl->render($data) + ); + } + + public function testInheritSpacingWhenOverridingAPartial() + { + $partials = array( + 'parent' => 'collaborate_and{{$id}}{{/id}}', + 'child' => '{{mustache->setPartials($partials); + + $tpl = $this->mustache->loadTemplate( + 'stop: + {{>child}}' + ); + + $data = array(); + + $this->assertEquals( + 'stop: + collaborate_and_listen', + $tpl->render($data) + ); + } + + public function testOverrideOneSubstitutionButNotTheOther() + { + $partials = array( + 'partial' => '{{$stuff}}default one{{/stuff}}, {{$stuff2}}default two{{/stuff2}}', + ); + + $this->mustache->setPartials($partials); + + $tpl = $this->mustache->loadTemplate( + '{{assertEquals('default one, override two', $tpl->render($data)); + } + + public function testSuperTemplatesWithNoParameters() + { + $partials = array( + 'include' => '{{$foo}}default content{{/foo}}', + ); + + $this->mustache->setPartials($partials); + + $tpl = $this->mustache->loadTemplate( + '{{>include}}|{{assertEquals('default content|default content', $tpl->render($data)); + } + + public function testRecursionInInheritedTemplates() + { + $partials = array( + 'include' => '{{$foo}}default content{{/foo}} {{$bar}}{{ '{{$foo}}include2 default content{{/foo}} {{mustache->setPartials($partials); + + $tpl = $this->mustache->loadTemplate( + '{{assertEquals('override override override don\'t recurse', $tpl->render($data)); + } + + public function testTopLevelSubstitutionsTakePrecedenceInMultilevelInheritance() + { + $partials = array( + 'parent' => '{{ '{{ '{{$a}}g{{/a}}', + ); + + $this->mustache->setPartials($partials); + + $tpl = $this->mustache->loadTemplate( + '{{assertEquals('c', $tpl->render($data)); + } + + public function testMultiLevelInheritanceNoSubChild() + { + $partials = array( + 'parent' => '{{ '{{ '{{$a}}g{{/a}}', + ); + + $this->mustache->setPartials($partials); + + $tpl = $this->mustache->loadTemplate( + '{{assertEquals('p', $tpl->render($data)); + } + + public function testIgnoreTextInsideSuperTemplatesButParseArgs() + { + $partials = array( + 'include' => '{{$foo}}default content{{/foo}}', + ); + + $this->mustache->setPartials($partials); + + $tpl = $this->mustache->loadTemplate( + '{{assertEquals('hmm', $tpl->render($data)); + } + + public function testIgnoreTextInsideSuperTemplates() + { + $partials = array( + 'include' => '{{$foo}}default content{{/foo}}', + ); + + $this->mustache->setPartials($partials); + + $tpl = $this->mustache->loadTemplate( + '{{assertEquals('default content', $tpl->render($data)); + } + + public function testInheritanceWithLazyEvaluation() + { + $partials = array( + 'parent' => '{{#items}}{{$value}}ignored{{/value}}{{/items}}', + ); + + $this->mustache->setPartials($partials); + + $tpl = $this->mustache->loadTemplate( + '{{{{/value}}{{/parent}}' + ); + + $data = array('items' => array(1, 2, 3)); + + $this->assertEquals('<1><2><3>', $tpl->render($data)); + } + + public function testInheritanceWithLazyEvaluationWhitespaceIgnored() + { + $partials = array( + 'parent' => '{{#items}}{{$value}}\n\nignored\n\n{{/value}}{{/items}}', + ); + + $this->mustache->setPartials($partials); + + $tpl = $this->mustache->loadTemplate( + '{{{{/value}}\n\n{{/parent}}' + ); + + $data = array('items' => array(1, 2, 3)); + + $this->assertEquals('<1><2><3>', $tpl->render($data)); + } + + public function testInheritanceWithLazyEvaluationAndSections() + { + $partials = array( + 'parent' => '{{#items}}{{$value}}\n\nignored {{.}} {{#more}} there is more {{/more}}\n\n{{/value}}{{/items}}', + ); + + $this->mustache->setPartials($partials); + + $tpl = $this->mustache->loadTemplate( + '{{{{#more}} there is less {{/more}}{{/value}}\n\n{{/parent}}' + ); + + $data = array('items' => array(1, 2, 3), 'more' => 'stuff'); + + $this->assertEquals('<1> there is less <2> there is less <3> there is less ', $tpl->render($data)); + } + + /** + * @dataProvider getIllegalInheritanceExamples + * @expectedException Mustache_Exception_SyntaxException + * @expectedExceptionMessage Illegal content in < parent tag + */ + public function testIllegalInheritanceExamples($partials, $data, $template) + { + $this->mustache->setPartials($partials); + $tpl = $this->mustache->loadTemplate($template); + $tpl->render($data); + } + + /** + * @dataProvider getLegalInheritanceExamples + */ + public function testLegalInheritanceExamples($partials, $data, $template, $expect) + { + $this->mustache->setPartials($partials); + $tpl = $this->mustache->loadTemplate($template); + $this->assertSame($expect, $tpl->render($data)); + } +} diff --git a/webclient/vendor/mustache/mustache/test/Mustache/Test/Functional/MustacheInjectionTest.php b/webclient/vendor/mustache/mustache/test/Mustache/Test/Functional/MustacheInjectionTest.php new file mode 100644 index 00000000..d0bdb487 --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/Mustache/Test/Functional/MustacheInjectionTest.php @@ -0,0 +1,83 @@ +mustache = new Mustache_Engine(); + } + + /** + * @dataProvider injectionData + */ + public function testInjection($tpl, $data, $partials, $expect) + { + $this->mustache->setPartials($partials); + $this->assertEquals($expect, $this->mustache->render($tpl, $data)); + } + + public function injectionData() + { + $interpolationData = array( + 'a' => '{{ b }}', + 'b' => 'FAIL', + ); + + $sectionData = array( + 'a' => true, + 'b' => '{{ c }}', + 'c' => 'FAIL', + ); + + $lambdaInterpolationData = array( + 'a' => array($this, 'lambdaInterpolationCallback'), + 'b' => '{{ c }}', + 'c' => 'FAIL', + ); + + $lambdaSectionData = array( + 'a' => array($this, 'lambdaSectionCallback'), + 'b' => '{{ c }}', + 'c' => 'FAIL', + ); + + return array( + array('{{ a }}', $interpolationData, array(), '{{ b }}'), + array('{{{ a }}}', $interpolationData, array(), '{{ b }}'), + + array('{{# a }}{{ b }}{{/ a }}', $sectionData, array(), '{{ c }}'), + array('{{# a }}{{{ b }}}{{/ a }}', $sectionData, array(), '{{ c }}'), + + array('{{> partial }}', $interpolationData, array('partial' => '{{ a }}'), '{{ b }}'), + array('{{> partial }}', $interpolationData, array('partial' => '{{{ a }}}'), '{{ b }}'), + + array('{{ a }}', $lambdaInterpolationData, array(), '{{ c }}'), + array('{{# a }}b{{/ a }}', $lambdaSectionData, array(), '{{ c }}'), + ); + } + + public static function lambdaInterpolationCallback() + { + return '{{ b }}'; + } + + public static function lambdaSectionCallback($text) + { + return '{{ ' . $text . ' }}'; + } +} diff --git a/webclient/vendor/mustache/mustache/test/Mustache/Test/Functional/MustacheSpecTest.php b/webclient/vendor/mustache/mustache/test/Mustache/Test/Functional/MustacheSpecTest.php new file mode 100644 index 00000000..7ba0843e --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/Mustache/Test/Functional/MustacheSpecTest.php @@ -0,0 +1,121 @@ +markTestSkipped('Mustache spec submodule not initialized: run "git submodule update --init"'); + } + } + + /** + * @group comments + * @dataProvider loadCommentSpec + */ + public function testCommentSpec($desc, $source, $partials, $data, $expected) + { + $template = self::loadTemplate($source, $partials); + $this->assertEquals($expected, $template->render($data), $desc); + } + + public function loadCommentSpec() + { + return $this->loadSpec('comments'); + } + + /** + * @group delimiters + * @dataProvider loadDelimitersSpec + */ + public function testDelimitersSpec($desc, $source, $partials, $data, $expected) + { + $template = self::loadTemplate($source, $partials); + $this->assertEquals($expected, $template->render($data), $desc); + } + + public function loadDelimitersSpec() + { + return $this->loadSpec('delimiters'); + } + + /** + * @group interpolation + * @dataProvider loadInterpolationSpec + */ + public function testInterpolationSpec($desc, $source, $partials, $data, $expected) + { + $template = self::loadTemplate($source, $partials); + $this->assertEquals($expected, $template->render($data), $desc); + } + + public function loadInterpolationSpec() + { + return $this->loadSpec('interpolation'); + } + + /** + * @group inverted + * @group inverted-sections + * @dataProvider loadInvertedSpec + */ + public function testInvertedSpec($desc, $source, $partials, $data, $expected) + { + $template = self::loadTemplate($source, $partials); + $this->assertEquals($expected, $template->render($data), $desc); + } + + public function loadInvertedSpec() + { + return $this->loadSpec('inverted'); + } + + /** + * @group partials + * @dataProvider loadPartialsSpec + */ + public function testPartialsSpec($desc, $source, $partials, $data, $expected) + { + $template = self::loadTemplate($source, $partials); + $this->assertEquals($expected, $template->render($data), $desc); + } + + public function loadPartialsSpec() + { + return $this->loadSpec('partials'); + } + + /** + * @group sections + * @dataProvider loadSectionsSpec + */ + public function testSectionsSpec($desc, $source, $partials, $data, $expected) + { + $template = self::loadTemplate($source, $partials); + $this->assertEquals($expected, $template->render($data), $desc); + } + + public function loadSectionsSpec() + { + return $this->loadSpec('sections'); + } +} diff --git a/webclient/vendor/mustache/mustache/test/Mustache/Test/Functional/NestedPartialIndentTest.php b/webclient/vendor/mustache/mustache/test/Mustache/Test/Functional/NestedPartialIndentTest.php new file mode 100644 index 00000000..673339c3 --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/Mustache/Test/Functional/NestedPartialIndentTest.php @@ -0,0 +1,45 @@ + $partials, + )); + $tpl = $m->loadTemplate($src); + $this->assertEquals($expected, $tpl->render()); + } + + public function partialsAndStuff() + { + $partials = array( + 'a' => ' {{> b }}', + 'b' => ' {{> d }}', + 'c' => ' {{> d }}{{> d }}', + 'd' => 'D!', + ); + + return array( + array(' {{> a }}', $partials, ' D!'), + array(' {{> b }}', $partials, ' D!'), + array(' {{> c }}', $partials, ' D!D!'), + ); + } +} diff --git a/webclient/vendor/mustache/mustache/test/Mustache/Test/Functional/ObjectSectionTest.php b/webclient/vendor/mustache/mustache/test/Mustache/Test/Functional/ObjectSectionTest.php new file mode 100644 index 00000000..963b0f78 --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/Mustache/Test/Functional/ObjectSectionTest.php @@ -0,0 +1,110 @@ +mustache = new Mustache_Engine(); + } + + public function testBasicObject() + { + $tpl = $this->mustache->loadTemplate('{{#foo}}{{name}}{{/foo}}'); + $this->assertEquals('Foo', $tpl->render(new Mustache_Test_Functional_Alpha())); + } + + /** + * @group magic_methods + */ + public function testObjectWithGet() + { + $tpl = $this->mustache->loadTemplate('{{#foo}}{{name}}{{/foo}}'); + $this->assertEquals('Foo', $tpl->render(new Mustache_Test_Functional_Beta())); + } + + /** + * @group magic_methods + */ + public function testSectionObjectWithGet() + { + $tpl = $this->mustache->loadTemplate('{{#bar}}{{#foo}}{{name}}{{/foo}}{{/bar}}'); + $this->assertEquals('Foo', $tpl->render(new Mustache_Test_Functional_Gamma())); + } + + public function testSectionObjectWithFunction() + { + $tpl = $this->mustache->loadTemplate('{{#foo}}{{name}}{{/foo}}'); + $alpha = new Mustache_Test_Functional_Alpha(); + $alpha->foo = new Mustache_Test_Functional_Delta(); + $this->assertEquals('Foo', $tpl->render($alpha)); + } +} + +class Mustache_Test_Functional_Alpha +{ + public $foo; + + public function __construct() + { + $this->foo = new StdClass(); + $this->foo->name = 'Foo'; + $this->foo->number = 1; + } +} + +class Mustache_Test_Functional_Beta +{ + protected $_data = array(); + + public function __construct() + { + $this->_data['foo'] = new StdClass(); + $this->_data['foo']->name = 'Foo'; + $this->_data['foo']->number = 1; + } + + public function __isset($name) + { + return array_key_exists($name, $this->_data); + } + + public function __get($name) + { + return $this->_data[$name]; + } +} + +class Mustache_Test_Functional_Gamma +{ + public $bar; + + public function __construct() + { + $this->bar = new Mustache_Test_Functional_Beta(); + } +} + +class Mustache_Test_Functional_Delta +{ + protected $_name = 'Foo'; + + public function name() + { + return $this->_name; + } +} diff --git a/webclient/vendor/mustache/mustache/test/Mustache/Test/FunctionalTestCase.php b/webclient/vendor/mustache/mustache/test/Mustache/Test/FunctionalTestCase.php new file mode 100644 index 00000000..59185d18 --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/Mustache/Test/FunctionalTestCase.php @@ -0,0 +1,47 @@ + $foo, + 'bar' => $bar, + )); + + $this->assertSame($foo, $helpers->get('foo')); + $this->assertSame($bar, $helpers->get('bar')); + } + + public static function getFoo() + { + echo 'foo'; + } + + public function testAccessorsAndMutators() + { + $foo = array($this, 'getFoo'); + $bar = 'BAR'; + + $helpers = new Mustache_HelperCollection(); + $this->assertTrue($helpers->isEmpty()); + $this->assertFalse($helpers->has('foo')); + $this->assertFalse($helpers->has('bar')); + + $helpers->add('foo', $foo); + $this->assertFalse($helpers->isEmpty()); + $this->assertTrue($helpers->has('foo')); + $this->assertFalse($helpers->has('bar')); + + $helpers->add('bar', $bar); + $this->assertFalse($helpers->isEmpty()); + $this->assertTrue($helpers->has('foo')); + $this->assertTrue($helpers->has('bar')); + + $helpers->remove('foo'); + $this->assertFalse($helpers->isEmpty()); + $this->assertFalse($helpers->has('foo')); + $this->assertTrue($helpers->has('bar')); + } + + public function testMagicMethods() + { + $foo = array($this, 'getFoo'); + $bar = 'BAR'; + + $helpers = new Mustache_HelperCollection(); + $this->assertTrue($helpers->isEmpty()); + $this->assertFalse($helpers->has('foo')); + $this->assertFalse($helpers->has('bar')); + $this->assertFalse(isset($helpers->foo)); + $this->assertFalse(isset($helpers->bar)); + + $helpers->foo = $foo; + $this->assertFalse($helpers->isEmpty()); + $this->assertTrue($helpers->has('foo')); + $this->assertFalse($helpers->has('bar')); + $this->assertTrue(isset($helpers->foo)); + $this->assertFalse(isset($helpers->bar)); + + $helpers->bar = $bar; + $this->assertFalse($helpers->isEmpty()); + $this->assertTrue($helpers->has('foo')); + $this->assertTrue($helpers->has('bar')); + $this->assertTrue(isset($helpers->foo)); + $this->assertTrue(isset($helpers->bar)); + + unset($helpers->foo); + $this->assertFalse($helpers->isEmpty()); + $this->assertFalse($helpers->has('foo')); + $this->assertTrue($helpers->has('bar')); + $this->assertFalse(isset($helpers->foo)); + $this->assertTrue(isset($helpers->bar)); + } + + /** + * @dataProvider getInvalidHelperArguments + */ + public function testHelperCollectionIsntAfraidToThrowExceptions($helpers = array(), $actions = array(), $exception = null) + { + if ($exception) { + $this->setExpectedException($exception); + } + + $helpers = new Mustache_HelperCollection($helpers); + + foreach ($actions as $method => $args) { + call_user_func_array(array($helpers, $method), $args); + } + } + + public function getInvalidHelperArguments() + { + return array( + array( + 'not helpers', + array(), + 'InvalidArgumentException', + ), + array( + array(), + array('get' => array('foo')), + 'InvalidArgumentException', + ), + array( + array('foo' => 'FOO'), + array('get' => array('foo')), + null, + ), + array( + array('foo' => 'FOO'), + array('get' => array('bar')), + 'InvalidArgumentException', + ), + array( + array('foo' => 'FOO'), + array( + 'add' => array('bar', 'BAR'), + 'get' => array('bar'), + ), + null, + ), + array( + array('foo' => 'FOO'), + array( + 'get' => array('foo'), + 'remove' => array('foo'), + ), + null, + ), + array( + array('foo' => 'FOO'), + array( + 'remove' => array('foo'), + 'get' => array('foo'), + ), + 'InvalidArgumentException', + ), + array( + array(), + array('remove' => array('foo')), + 'InvalidArgumentException', + ), + ); + } +} diff --git a/webclient/vendor/mustache/mustache/test/Mustache/Test/Loader/ArrayLoaderTest.php b/webclient/vendor/mustache/mustache/test/Mustache/Test/Loader/ArrayLoaderTest.php new file mode 100644 index 00000000..9960c9b7 --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/Mustache/Test/Loader/ArrayLoaderTest.php @@ -0,0 +1,52 @@ + 'bar', + )); + + $this->assertEquals('bar', $loader->load('foo')); + } + + public function testSetAndLoadTemplates() + { + $loader = new Mustache_Loader_ArrayLoader(array( + 'foo' => 'bar', + )); + $this->assertEquals('bar', $loader->load('foo')); + + $loader->setTemplate('baz', 'qux'); + $this->assertEquals('qux', $loader->load('baz')); + + $loader->setTemplates(array( + 'foo' => 'FOO', + 'baz' => 'BAZ', + )); + $this->assertEquals('FOO', $loader->load('foo')); + $this->assertEquals('BAZ', $loader->load('baz')); + } + + /** + * @expectedException Mustache_Exception_UnknownTemplateException + */ + public function testMissingTemplatesThrowExceptions() + { + $loader = new Mustache_Loader_ArrayLoader(); + $loader->load('not_a_real_template'); + } +} diff --git a/webclient/vendor/mustache/mustache/test/Mustache/Test/Loader/CascadingLoaderTest.php b/webclient/vendor/mustache/mustache/test/Mustache/Test/Loader/CascadingLoaderTest.php new file mode 100644 index 00000000..6d97d8d9 --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/Mustache/Test/Loader/CascadingLoaderTest.php @@ -0,0 +1,40 @@ + '{{ foo }}')), + new Mustache_Loader_ArrayLoader(array('bar' => '{{#bar}}BAR{{/bar}}')), + )); + + $this->assertEquals('{{ foo }}', $loader->load('foo')); + $this->assertEquals('{{#bar}}BAR{{/bar}}', $loader->load('bar')); + } + + /** + * @expectedException Mustache_Exception_UnknownTemplateException + */ + public function testMissingTemplatesThrowExceptions() + { + $loader = new Mustache_Loader_CascadingLoader(array( + new Mustache_Loader_ArrayLoader(array('foo' => '{{ foo }}')), + new Mustache_Loader_ArrayLoader(array('bar' => '{{#bar}}BAR{{/bar}}')), + )); + + $loader->load('not_a_real_template'); + } +} diff --git a/webclient/vendor/mustache/mustache/test/Mustache/Test/Loader/FilesystemLoaderTest.php b/webclient/vendor/mustache/mustache/test/Mustache/Test/Loader/FilesystemLoaderTest.php new file mode 100644 index 00000000..75880d40 --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/Mustache/Test/Loader/FilesystemLoaderTest.php @@ -0,0 +1,80 @@ + '.ms')); + $this->assertEquals('alpha contents', $loader->load('alpha')); + $this->assertEquals('beta contents', $loader->load('beta.ms')); + } + + public function testTrailingSlashes() + { + $baseDir = dirname(__FILE__) . '/../../../fixtures/templates/'; + $loader = new Mustache_Loader_FilesystemLoader($baseDir); + $this->assertEquals('one contents', $loader->load('one')); + } + + public function testConstructorWithProtocol() + { + $baseDir = realpath(dirname(__FILE__) . '/../../../fixtures/templates'); + + $loader = new Mustache_Loader_FilesystemLoader('test://' . $baseDir, array('extension' => '.ms')); + $this->assertEquals('alpha contents', $loader->load('alpha')); + $this->assertEquals('beta contents', $loader->load('beta.ms')); + } + + public function testLoadTemplates() + { + $baseDir = realpath(dirname(__FILE__) . '/../../../fixtures/templates'); + $loader = new Mustache_Loader_FilesystemLoader($baseDir); + $this->assertEquals('one contents', $loader->load('one')); + $this->assertEquals('two contents', $loader->load('two.mustache')); + } + + public function testEmptyExtensionString() + { + $baseDir = realpath(dirname(__FILE__) . '/../../../fixtures/templates'); + + $loader = new Mustache_Loader_FilesystemLoader($baseDir, array('extension' => '')); + $this->assertEquals('one contents', $loader->load('one.mustache')); + $this->assertEquals('alpha contents', $loader->load('alpha.ms')); + + $loader = new Mustache_Loader_FilesystemLoader($baseDir, array('extension' => null)); + $this->assertEquals('two contents', $loader->load('two.mustache')); + $this->assertEquals('beta contents', $loader->load('beta.ms')); + } + + /** + * @expectedException Mustache_Exception_RuntimeException + */ + public function testMissingBaseDirThrowsException() + { + new Mustache_Loader_FilesystemLoader(dirname(__FILE__) . '/not_a_directory'); + } + + /** + * @expectedException Mustache_Exception_UnknownTemplateException + */ + public function testMissingTemplateThrowsException() + { + $baseDir = realpath(dirname(__FILE__) . '/../../../fixtures/templates'); + $loader = new Mustache_Loader_FilesystemLoader($baseDir); + + $loader->load('fake'); + } +} diff --git a/webclient/vendor/mustache/mustache/test/Mustache/Test/Loader/InlineLoaderTest.php b/webclient/vendor/mustache/mustache/test/Mustache/Test/Loader/InlineLoaderTest.php new file mode 100644 index 00000000..2f1d4140 --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/Mustache/Test/Loader/InlineLoaderTest.php @@ -0,0 +1,56 @@ +assertEquals('{{ foo }}', $loader->load('foo')); + $this->assertEquals('{{#bar}}BAR{{/bar}}', $loader->load('bar')); + } + + /** + * @expectedException Mustache_Exception_UnknownTemplateException + */ + public function testMissingTemplatesThrowExceptions() + { + $loader = new Mustache_Loader_InlineLoader(__FILE__, __COMPILER_HALT_OFFSET__); + $loader->load('not_a_real_template'); + } + + /** + * @expectedException Mustache_Exception_InvalidArgumentException + */ + public function testInvalidOffsetThrowsException() + { + new Mustache_Loader_InlineLoader(__FILE__, 'notanumber'); + } + + /** + * @expectedException Mustache_Exception_InvalidArgumentException + */ + public function testInvalidFileThrowsException() + { + new Mustache_Loader_InlineLoader('notarealfile', __COMPILER_HALT_OFFSET__); + } +} + +__halt_compiler(); + +@@ foo +{{ foo }} + +@@ bar +{{#bar}}BAR{{/bar}} diff --git a/webclient/vendor/mustache/mustache/test/Mustache/Test/Loader/StringLoaderTest.php b/webclient/vendor/mustache/mustache/test/Mustache/Test/Loader/StringLoaderTest.php new file mode 100644 index 00000000..f2e47d93 --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/Mustache/Test/Loader/StringLoaderTest.php @@ -0,0 +1,25 @@ +assertEquals('foo', $loader->load('foo')); + $this->assertEquals('{{ bar }}', $loader->load('{{ bar }}')); + $this->assertEquals("\n{{! comment }}\n", $loader->load("\n{{! comment }}\n")); + } +} diff --git a/webclient/vendor/mustache/mustache/test/Mustache/Test/Logger/AbstractLoggerTest.php b/webclient/vendor/mustache/mustache/test/Mustache/Test/Logger/AbstractLoggerTest.php new file mode 100644 index 00000000..e8865e94 --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/Mustache/Test/Logger/AbstractLoggerTest.php @@ -0,0 +1,60 @@ +emergency('emergency message'); + $logger->alert('alert message'); + $logger->critical('critical message'); + $logger->error('error message'); + $logger->warning('warning message'); + $logger->notice('notice message'); + $logger->info('info message'); + $logger->debug('debug message'); + + $expected = array( + array(Mustache_Logger::EMERGENCY, 'emergency message', array()), + array(Mustache_Logger::ALERT, 'alert message', array()), + array(Mustache_Logger::CRITICAL, 'critical message', array()), + array(Mustache_Logger::ERROR, 'error message', array()), + array(Mustache_Logger::WARNING, 'warning message', array()), + array(Mustache_Logger::NOTICE, 'notice message', array()), + array(Mustache_Logger::INFO, 'info message', array()), + array(Mustache_Logger::DEBUG, 'debug message', array()), + ); + + $this->assertEquals($expected, $logger->log); + } +} + +class Mustache_Test_Logger_TestLogger extends Mustache_Logger_AbstractLogger +{ + public $log = array(); + + /** + * Logs with an arbitrary level. + * + * @param mixed $level + * @param string $message + * @param array $context + */ + public function log($level, $message, array $context = array()) + { + $this->log[] = array($level, $message, $context); + } +} diff --git a/webclient/vendor/mustache/mustache/test/Mustache/Test/Logger/StreamLoggerTest.php b/webclient/vendor/mustache/mustache/test/Mustache/Test/Logger/StreamLoggerTest.php new file mode 100644 index 00000000..6cb198a8 --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/Mustache/Test/Logger/StreamLoggerTest.php @@ -0,0 +1,209 @@ +log(Mustache_Logger::CRITICAL, 'message'); + + $this->assertEquals("CRITICAL: message\n", file_get_contents($name)); + } + + public function acceptsStreamData() + { + $one = tempnam(sys_get_temp_dir(), 'mustache-test'); + $two = tempnam(sys_get_temp_dir(), 'mustache-test'); + + return array( + array($one, $one), + array($two, fopen($two, 'a')), + ); + } + + /** + * @expectedException Mustache_Exception_LogicException + */ + public function testPrematurelyClosedStreamThrowsException() + { + $stream = tmpfile(); + $logger = new Mustache_Logger_StreamLogger($stream); + fclose($stream); + + $logger->log(Mustache_Logger::CRITICAL, 'message'); + } + + /** + * @dataProvider getLevels + */ + public function testLoggingThresholds($logLevel, $level, $shouldLog) + { + $stream = tmpfile(); + $logger = new Mustache_Logger_StreamLogger($stream, $logLevel); + $logger->log($level, 'logged'); + + rewind($stream); + $result = fread($stream, 1024); + + if ($shouldLog) { + $this->assertContains('logged', $result); + } else { + $this->assertEmpty($result); + } + } + + public function getLevels() + { + // $logLevel, $level, $shouldLog + return array( + // identities + array(Mustache_Logger::EMERGENCY, Mustache_Logger::EMERGENCY, true), + array(Mustache_Logger::ALERT, Mustache_Logger::ALERT, true), + array(Mustache_Logger::CRITICAL, Mustache_Logger::CRITICAL, true), + array(Mustache_Logger::ERROR, Mustache_Logger::ERROR, true), + array(Mustache_Logger::WARNING, Mustache_Logger::WARNING, true), + array(Mustache_Logger::NOTICE, Mustache_Logger::NOTICE, true), + array(Mustache_Logger::INFO, Mustache_Logger::INFO, true), + array(Mustache_Logger::DEBUG, Mustache_Logger::DEBUG, true), + + // one above + array(Mustache_Logger::ALERT, Mustache_Logger::EMERGENCY, true), + array(Mustache_Logger::CRITICAL, Mustache_Logger::ALERT, true), + array(Mustache_Logger::ERROR, Mustache_Logger::CRITICAL, true), + array(Mustache_Logger::WARNING, Mustache_Logger::ERROR, true), + array(Mustache_Logger::NOTICE, Mustache_Logger::WARNING, true), + array(Mustache_Logger::INFO, Mustache_Logger::NOTICE, true), + array(Mustache_Logger::DEBUG, Mustache_Logger::INFO, true), + + // one below + array(Mustache_Logger::EMERGENCY, Mustache_Logger::ALERT, false), + array(Mustache_Logger::ALERT, Mustache_Logger::CRITICAL, false), + array(Mustache_Logger::CRITICAL, Mustache_Logger::ERROR, false), + array(Mustache_Logger::ERROR, Mustache_Logger::WARNING, false), + array(Mustache_Logger::WARNING, Mustache_Logger::NOTICE, false), + array(Mustache_Logger::NOTICE, Mustache_Logger::INFO, false), + array(Mustache_Logger::INFO, Mustache_Logger::DEBUG, false), + ); + } + + /** + * @dataProvider getLogMessages + */ + public function testLogging($level, $message, $context, $expected) + { + $stream = tmpfile(); + $logger = new Mustache_Logger_StreamLogger($stream, Mustache_Logger::DEBUG); + $logger->log($level, $message, $context); + + rewind($stream); + $result = fread($stream, 1024); + + $this->assertEquals($expected, $result); + } + + public function getLogMessages() + { + // $level, $message, $context, $expected + return array( + array(Mustache_Logger::DEBUG, 'debug message', array(), "DEBUG: debug message\n"), + array(Mustache_Logger::INFO, 'info message', array(), "INFO: info message\n"), + array(Mustache_Logger::NOTICE, 'notice message', array(), "NOTICE: notice message\n"), + array(Mustache_Logger::WARNING, 'warning message', array(), "WARNING: warning message\n"), + array(Mustache_Logger::ERROR, 'error message', array(), "ERROR: error message\n"), + array(Mustache_Logger::CRITICAL, 'critical message', array(), "CRITICAL: critical message\n"), + array(Mustache_Logger::ALERT, 'alert message', array(), "ALERT: alert message\n"), + array(Mustache_Logger::EMERGENCY, 'emergency message', array(), "EMERGENCY: emergency message\n"), + + // with context + array( + Mustache_Logger::ERROR, + 'error message', + array('name' => 'foo', 'number' => 42), + "ERROR: error message\n", + ), + + // with interpolation + array( + Mustache_Logger::ERROR, + 'error {name}-{number}', + array('name' => 'foo', 'number' => 42), + "ERROR: error foo-42\n", + ), + + // with iterpolation false positive + array( + Mustache_Logger::ERROR, + 'error {nothing}', + array('name' => 'foo', 'number' => 42), + "ERROR: error {nothing}\n", + ), + + // with interpolation injection + array( + Mustache_Logger::ERROR, + '{foo}', + array('foo' => '{bar}', 'bar' => 'FAIL'), + "ERROR: {bar}\n", + ), + ); + } + + public function testChangeLoggingLevels() + { + $stream = tmpfile(); + $logger = new Mustache_Logger_StreamLogger($stream); + + $logger->setLevel(Mustache_Logger::ERROR); + $this->assertEquals(Mustache_Logger::ERROR, $logger->getLevel()); + + $logger->log(Mustache_Logger::WARNING, 'ignore this'); + + $logger->setLevel(Mustache_Logger::INFO); + $this->assertEquals(Mustache_Logger::INFO, $logger->getLevel()); + + $logger->log(Mustache_Logger::WARNING, 'log this'); + + $logger->setLevel(Mustache_Logger::CRITICAL); + $this->assertEquals(Mustache_Logger::CRITICAL, $logger->getLevel()); + + $logger->log(Mustache_Logger::ERROR, 'ignore this'); + + rewind($stream); + $result = fread($stream, 1024); + + $this->assertEquals("WARNING: log this\n", $result); + } + + /** + * @expectedException Mustache_Exception_InvalidArgumentException + */ + public function testThrowsInvalidArgumentExceptionWhenSettingUnknownLevels() + { + $logger = new Mustache_Logger_StreamLogger(tmpfile()); + $logger->setLevel('bacon'); + } + + /** + * @expectedException Mustache_Exception_InvalidArgumentException + */ + public function testThrowsInvalidArgumentExceptionWhenLoggingUnknownLevels() + { + $logger = new Mustache_Logger_StreamLogger(tmpfile()); + $logger->log('bacon', 'CODE BACON ERROR!'); + } +} diff --git a/webclient/vendor/mustache/mustache/test/Mustache/Test/ParserTest.php b/webclient/vendor/mustache/mustache/test/Mustache/Test/ParserTest.php new file mode 100644 index 00000000..85e5701a --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/Mustache/Test/ParserTest.php @@ -0,0 +1,425 @@ +assertEquals($expected, $parser->parse($tokens)); + } + + public function getTokenSets() + { + return array( + array( + array(), + array(), + ), + + array( + array(array( + Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_TEXT, + Mustache_Tokenizer::LINE => 0, + Mustache_Tokenizer::VALUE => 'text', + )), + array(array( + Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_TEXT, + Mustache_Tokenizer::LINE => 0, + Mustache_Tokenizer::VALUE => 'text', + )), + ), + + array( + array(array( + Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_ESCAPED, + Mustache_Tokenizer::LINE => 0, + Mustache_Tokenizer::NAME => 'name', + )), + array(array( + Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_ESCAPED, + Mustache_Tokenizer::LINE => 0, + Mustache_Tokenizer::NAME => 'name', + )), + ), + + array( + array( + array( + Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_TEXT, + Mustache_Tokenizer::LINE => 0, + Mustache_Tokenizer::VALUE => 'foo', + ), + array( + Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_INVERTED, + Mustache_Tokenizer::LINE => 0, + Mustache_Tokenizer::INDEX => 123, + Mustache_Tokenizer::NAME => 'parent', + ), + array( + Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_ESCAPED, + Mustache_Tokenizer::LINE => 0, + Mustache_Tokenizer::NAME => 'name', + ), + array( + Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_END_SECTION, + Mustache_Tokenizer::LINE => 0, + Mustache_Tokenizer::INDEX => 456, + Mustache_Tokenizer::NAME => 'parent', + ), + array( + Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_TEXT, + Mustache_Tokenizer::LINE => 0, + Mustache_Tokenizer::VALUE => 'bar', + ), + ), + + array( + array( + Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_TEXT, + Mustache_Tokenizer::LINE => 0, + Mustache_Tokenizer::VALUE => 'foo', + ), + array( + Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_INVERTED, + Mustache_Tokenizer::NAME => 'parent', + Mustache_Tokenizer::LINE => 0, + Mustache_Tokenizer::INDEX => 123, + Mustache_Tokenizer::END => 456, + Mustache_Tokenizer::NODES => array( + array( + Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_ESCAPED, + Mustache_Tokenizer::LINE => 0, + Mustache_Tokenizer::NAME => 'name', + ), + ), + ), + array( + Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_TEXT, + Mustache_Tokenizer::LINE => 0, + Mustache_Tokenizer::VALUE => 'bar', + ), + ), + ), + + // This *would* be an invalid inheritance parse tree, but that pragma + // isn't enabled so it'll thunk it back into an "escaped" token: + array( + array( + array( + Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_BLOCK_VAR, + Mustache_Tokenizer::NAME => 'foo', + Mustache_Tokenizer::OTAG => '{{', + Mustache_Tokenizer::CTAG => '}}', + Mustache_Tokenizer::LINE => 0, + ), + array( + Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_TEXT, + Mustache_Tokenizer::LINE => 0, + Mustache_Tokenizer::VALUE => 'bar', + ), + ), + array( + array( + Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_ESCAPED, + Mustache_Tokenizer::NAME => '$foo', + Mustache_Tokenizer::OTAG => '{{', + Mustache_Tokenizer::CTAG => '}}', + Mustache_Tokenizer::LINE => 0, + ), + array( + Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_TEXT, + Mustache_Tokenizer::LINE => 0, + Mustache_Tokenizer::VALUE => 'bar', + ), + ), + ), + + array( + array( + array( + Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_TEXT, + Mustache_Tokenizer::LINE => 0, + Mustache_Tokenizer::VALUE => ' ', + ), + array( + Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_DELIM_CHANGE, + Mustache_Tokenizer::LINE => 0, + ), + array( + Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_TEXT, + Mustache_Tokenizer::LINE => 0, + Mustache_Tokenizer::VALUE => " \n", + ), + array( + Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_ESCAPED, + Mustache_Tokenizer::NAME => 'foo', + Mustache_Tokenizer::OTAG => '[[', + Mustache_Tokenizer::CTAG => ']]', + Mustache_Tokenizer::LINE => 1, + ), + ), + array( + array( + Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_ESCAPED, + Mustache_Tokenizer::NAME => 'foo', + Mustache_Tokenizer::OTAG => '[[', + Mustache_Tokenizer::CTAG => ']]', + Mustache_Tokenizer::LINE => 1, + ), + ), + ), + + ); + } + + /** + * @dataProvider getInheritanceTokenSets + */ + public function testParseWithInheritance($tokens, $expected) + { + $parser = new Mustache_Parser(); + $parser->setPragmas(array(Mustache_Engine::PRAGMA_BLOCKS)); + $this->assertEquals($expected, $parser->parse($tokens)); + } + + public function getInheritanceTokenSets() + { + return array( + array( + array( + array( + Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_PARENT, + Mustache_Tokenizer::NAME => 'foo', + Mustache_Tokenizer::OTAG => '{{', + Mustache_Tokenizer::CTAG => '}}', + Mustache_Tokenizer::LINE => 0, + Mustache_Tokenizer::INDEX => 8, + ), + array( + Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_BLOCK_VAR, + Mustache_Tokenizer::NAME => 'bar', + Mustache_Tokenizer::OTAG => '{{', + Mustache_Tokenizer::CTAG => '}}', + Mustache_Tokenizer::LINE => 0, + Mustache_Tokenizer::INDEX => 16, + ), + array( + Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_TEXT, + Mustache_Tokenizer::LINE => 0, + Mustache_Tokenizer::VALUE => 'baz', + ), + array( + Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_END_SECTION, + Mustache_Tokenizer::NAME => 'bar', + Mustache_Tokenizer::OTAG => '{{', + Mustache_Tokenizer::CTAG => '}}', + Mustache_Tokenizer::LINE => 0, + Mustache_Tokenizer::INDEX => 19, + ), + array( + Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_END_SECTION, + Mustache_Tokenizer::NAME => 'foo', + Mustache_Tokenizer::OTAG => '{{', + Mustache_Tokenizer::CTAG => '}}', + Mustache_Tokenizer::LINE => 0, + Mustache_Tokenizer::INDEX => 27, + ), + ), + array( + array( + Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_PARENT, + Mustache_Tokenizer::NAME => 'foo', + Mustache_Tokenizer::OTAG => '{{', + Mustache_Tokenizer::CTAG => '}}', + Mustache_Tokenizer::LINE => 0, + Mustache_Tokenizer::INDEX => 8, + Mustache_Tokenizer::END => 27, + Mustache_Tokenizer::NODES => array( + array( + Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_BLOCK_ARG, + Mustache_Tokenizer::NAME => 'bar', + Mustache_Tokenizer::OTAG => '{{', + Mustache_Tokenizer::CTAG => '}}', + Mustache_Tokenizer::LINE => 0, + Mustache_Tokenizer::INDEX => 16, + Mustache_Tokenizer::END => 19, + Mustache_Tokenizer::NODES => array( + array( + Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_TEXT, + Mustache_Tokenizer::LINE => 0, + Mustache_Tokenizer::VALUE => 'baz', + ), + ), + ), + ), + ), + ), + ), + + array( + array( + array( + Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_BLOCK_VAR, + Mustache_Tokenizer::NAME => 'foo', + Mustache_Tokenizer::OTAG => '{{', + Mustache_Tokenizer::CTAG => '}}', + Mustache_Tokenizer::LINE => 0, + ), + array( + Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_TEXT, + Mustache_Tokenizer::LINE => 0, + Mustache_Tokenizer::VALUE => 'bar', + ), + array( + Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_END_SECTION, + Mustache_Tokenizer::NAME => 'foo', + Mustache_Tokenizer::OTAG => '{{', + Mustache_Tokenizer::CTAG => '}}', + Mustache_Tokenizer::LINE => 0, + Mustache_Tokenizer::INDEX => 11, + ), + ), + array( + array( + Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_BLOCK_VAR, + Mustache_Tokenizer::NAME => 'foo', + Mustache_Tokenizer::OTAG => '{{', + Mustache_Tokenizer::CTAG => '}}', + Mustache_Tokenizer::LINE => 0, + Mustache_Tokenizer::END => 11, + Mustache_Tokenizer::NODES => array( + array( + Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_TEXT, + Mustache_Tokenizer::LINE => 0, + Mustache_Tokenizer::VALUE => 'bar', + ), + ), + ), + ), + ), + ); + } + + /** + * @dataProvider getBadParseTrees + * @expectedException Mustache_Exception_SyntaxException + */ + public function testParserThrowsExceptions($tokens) + { + $parser = new Mustache_Parser(); + $parser->parse($tokens); + } + + public function getBadParseTrees() + { + return array( + // no close + array( + array( + array( + Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_SECTION, + Mustache_Tokenizer::NAME => 'parent', + Mustache_Tokenizer::LINE => 0, + Mustache_Tokenizer::INDEX => 123, + ), + ), + ), + + // no close inverted + array( + array( + array( + Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_INVERTED, + Mustache_Tokenizer::NAME => 'parent', + Mustache_Tokenizer::LINE => 0, + Mustache_Tokenizer::INDEX => 123, + ), + ), + ), + + // no opening inverted + array( + array( + array( + Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_END_SECTION, + Mustache_Tokenizer::NAME => 'parent', + Mustache_Tokenizer::LINE => 0, + Mustache_Tokenizer::INDEX => 123, + ), + ), + ), + + // weird nesting + array( + array( + array( + Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_SECTION, + Mustache_Tokenizer::NAME => 'parent', + Mustache_Tokenizer::LINE => 0, + Mustache_Tokenizer::INDEX => 123, + ), + array( + Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_SECTION, + Mustache_Tokenizer::NAME => 'child', + Mustache_Tokenizer::LINE => 0, + Mustache_Tokenizer::INDEX => 123, + ), + array( + Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_END_SECTION, + Mustache_Tokenizer::NAME => 'parent', + Mustache_Tokenizer::LINE => 0, + Mustache_Tokenizer::INDEX => 123, + ), + array( + Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_END_SECTION, + Mustache_Tokenizer::NAME => 'child', + Mustache_Tokenizer::LINE => 0, + Mustache_Tokenizer::INDEX => 123, + ), + ), + ), + + // This *would* be a valid inheritance parse tree, but that pragma + // isn't enabled here so it's going to fail :) + array( + array( + array( + Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_BLOCK_VAR, + Mustache_Tokenizer::NAME => 'foo', + Mustache_Tokenizer::OTAG => '{{', + Mustache_Tokenizer::CTAG => '}}', + Mustache_Tokenizer::LINE => 0, + ), + array( + Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_TEXT, + Mustache_Tokenizer::LINE => 0, + Mustache_Tokenizer::VALUE => 'bar', + ), + array( + Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_END_SECTION, + Mustache_Tokenizer::NAME => 'foo', + Mustache_Tokenizer::OTAG => '{{', + Mustache_Tokenizer::CTAG => '}}', + Mustache_Tokenizer::LINE => 0, + Mustache_Tokenizer::INDEX => 11, + ), + ), + ), + ); + } +} diff --git a/webclient/vendor/mustache/mustache/test/Mustache/Test/SpecTestCase.php b/webclient/vendor/mustache/mustache/test/Mustache/Test/SpecTestCase.php new file mode 100644 index 00000000..9fb4a15e --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/Mustache/Test/SpecTestCase.php @@ -0,0 +1,67 @@ +setPartials($partials); + + return self::$mustache->loadTemplate($source); + } + + /** + * Data provider for the mustache spec test. + * + * Loads YAML files from the spec and converts them to PHPisms. + * + * @param string $name + * + * @return array + */ + protected function loadSpec($name) + { + $filename = dirname(__FILE__) . '/../../../vendor/spec/specs/' . $name . '.yml'; + if (!file_exists($filename)) { + return array(); + } + + $data = array(); + $yaml = new sfYamlParser(); + $file = file_get_contents($filename); + + // @hack: pre-process the 'lambdas' spec so the Symfony YAML parser doesn't complain. + if ($name === '~lambdas') { + $file = str_replace(" !code\n", "\n", $file); + } + + $spec = $yaml->parse($file); + + foreach ($spec['tests'] as $test) { + $data[] = array( + $test['name'] . ': ' . $test['desc'], + $test['template'], + isset($test['partials']) ? $test['partials'] : array(), + $test['data'], + $test['expected'], + ); + } + + return $data; + } +} diff --git a/webclient/vendor/mustache/mustache/test/Mustache/Test/TemplateTest.php b/webclient/vendor/mustache/mustache/test/Mustache/Test/TemplateTest.php new file mode 100644 index 00000000..bb260d2e --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/Mustache/Test/TemplateTest.php @@ -0,0 +1,55 @@ +assertSame($mustache, $template->getMustache()); + } + + public function testRendering() + { + $rendered = '<< wheee >>'; + $mustache = new Mustache_Engine(); + $template = new Mustache_Test_TemplateStub($mustache); + $template->rendered = $rendered; + $context = new Mustache_Context(); + + if (version_compare(PHP_VERSION, '5.3.0', '>=')) { + $this->assertEquals($rendered, $template()); + } + + $this->assertEquals($rendered, $template->render()); + $this->assertEquals($rendered, $template->renderInternal($context)); + $this->assertEquals($rendered, $template->render(array('foo' => 'bar'))); + } +} + +class Mustache_Test_TemplateStub extends Mustache_Template +{ + public $rendered; + + public function getMustache() + { + return $this->mustache; + } + + public function renderInternal(Mustache_Context $context, $indent = '', $escape = false) + { + return $this->rendered; + } +} diff --git a/webclient/vendor/mustache/mustache/test/Mustache/Test/TokenizerTest.php b/webclient/vendor/mustache/mustache/test/Mustache/Test/TokenizerTest.php new file mode 100644 index 00000000..09be3fe5 --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/Mustache/Test/TokenizerTest.php @@ -0,0 +1,306 @@ +assertSame($expected, $tokenizer->scan($text, $delimiters)); + } + + /** + * @expectedException Mustache_Exception_SyntaxException + */ + public function testUnevenBracesThrowExceptions() + { + $tokenizer = new Mustache_Tokenizer(); + + $text = '{{{ name }}'; + $tokenizer->scan($text, null); + } + + /** + * @expectedException Mustache_Exception_SyntaxException + */ + public function testUnevenBracesWithCustomDelimiterThrowExceptions() + { + $tokenizer = new Mustache_Tokenizer(); + + $text = '<%{ name %>'; + $tokenizer->scan($text, '<% %>'); + } + + public function getTokens() + { + return array( + array( + 'text', + null, + array( + array( + Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_TEXT, + Mustache_Tokenizer::LINE => 0, + Mustache_Tokenizer::VALUE => 'text', + ), + ), + ), + + array( + 'text', + '<<< >>>', + array( + array( + Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_TEXT, + Mustache_Tokenizer::LINE => 0, + Mustache_Tokenizer::VALUE => 'text', + ), + ), + ), + + array( + '{{ name }}', + null, + array( + array( + Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_ESCAPED, + Mustache_Tokenizer::NAME => 'name', + Mustache_Tokenizer::OTAG => '{{', + Mustache_Tokenizer::CTAG => '}}', + Mustache_Tokenizer::LINE => 0, + Mustache_Tokenizer::INDEX => 10, + ), + ), + ), + + array( + '{{ name }}', + '<<< >>>', + array( + array( + Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_TEXT, + Mustache_Tokenizer::LINE => 0, + Mustache_Tokenizer::VALUE => '{{ name }}', + ), + ), + ), + + array( + '<<< name >>>', + '<<< >>>', + array( + array( + Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_ESCAPED, + Mustache_Tokenizer::NAME => 'name', + Mustache_Tokenizer::OTAG => '<<<', + Mustache_Tokenizer::CTAG => '>>>', + Mustache_Tokenizer::LINE => 0, + Mustache_Tokenizer::INDEX => 12, + ), + ), + ), + + array( + "{{{ a }}}\n{{# b }} \n{{= | | =}}| c ||/ b |\n|{ d }|", + null, + array( + array( + Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_UNESCAPED, + Mustache_Tokenizer::NAME => 'a', + Mustache_Tokenizer::OTAG => '{{', + Mustache_Tokenizer::CTAG => '}}', + Mustache_Tokenizer::LINE => 0, + Mustache_Tokenizer::INDEX => 8, + ), + array( + Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_TEXT, + Mustache_Tokenizer::LINE => 0, + Mustache_Tokenizer::VALUE => "\n", + ), + array( + Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_SECTION, + Mustache_Tokenizer::NAME => 'b', + Mustache_Tokenizer::OTAG => '{{', + Mustache_Tokenizer::CTAG => '}}', + Mustache_Tokenizer::LINE => 1, + Mustache_Tokenizer::INDEX => 18, + ), + array( + Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_TEXT, + Mustache_Tokenizer::LINE => 1, + Mustache_Tokenizer::VALUE => " \n", + ), + array( + Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_DELIM_CHANGE, + Mustache_Tokenizer::LINE => 2, + ), + array( + Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_ESCAPED, + Mustache_Tokenizer::NAME => 'c', + Mustache_Tokenizer::OTAG => '|', + Mustache_Tokenizer::CTAG => '|', + Mustache_Tokenizer::LINE => 2, + Mustache_Tokenizer::INDEX => 37, + ), + array( + Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_END_SECTION, + Mustache_Tokenizer::NAME => 'b', + Mustache_Tokenizer::OTAG => '|', + Mustache_Tokenizer::CTAG => '|', + Mustache_Tokenizer::LINE => 2, + Mustache_Tokenizer::INDEX => 37, + ), + array( + Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_TEXT, + Mustache_Tokenizer::LINE => 2, + Mustache_Tokenizer::VALUE => "\n", + ), + array( + Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_UNESCAPED, + Mustache_Tokenizer::NAME => 'd', + Mustache_Tokenizer::OTAG => '|', + Mustache_Tokenizer::CTAG => '|', + Mustache_Tokenizer::LINE => 3, + Mustache_Tokenizer::INDEX => 51, + ), + + ), + ), + + // See https://github.com/bobthecow/mustache.php/issues/183 + array( + '{{# a }}0{{/ a }}', + null, + array( + array( + Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_SECTION, + Mustache_Tokenizer::NAME => 'a', + Mustache_Tokenizer::OTAG => '{{', + Mustache_Tokenizer::CTAG => '}}', + Mustache_Tokenizer::LINE => 0, + Mustache_Tokenizer::INDEX => 8, + ), + array( + Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_TEXT, + Mustache_Tokenizer::LINE => 0, + Mustache_Tokenizer::VALUE => '0', + ), + array( + Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_END_SECTION, + Mustache_Tokenizer::NAME => 'a', + Mustache_Tokenizer::OTAG => '{{', + Mustache_Tokenizer::CTAG => '}}', + Mustache_Tokenizer::LINE => 0, + Mustache_Tokenizer::INDEX => 9, + ), + ), + ), + + // custom delimiters don't swallow the next character, even if it is a }, }}}, or the same delimiter + array( + '<% a %>} <% b %>%> <% c %>}}}', + '<% %>', + array( + array( + Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_ESCAPED, + Mustache_Tokenizer::NAME => 'a', + Mustache_Tokenizer::OTAG => '<%', + Mustache_Tokenizer::CTAG => '%>', + Mustache_Tokenizer::LINE => 0, + Mustache_Tokenizer::INDEX => 7, + ), + array( + Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_TEXT, + Mustache_Tokenizer::LINE => 0, + Mustache_Tokenizer::VALUE => '} ', + ), + array( + Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_ESCAPED, + Mustache_Tokenizer::NAME => 'b', + Mustache_Tokenizer::OTAG => '<%', + Mustache_Tokenizer::CTAG => '%>', + Mustache_Tokenizer::LINE => 0, + Mustache_Tokenizer::INDEX => 16, + ), + array( + Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_TEXT, + Mustache_Tokenizer::LINE => 0, + Mustache_Tokenizer::VALUE => '%> ', + ), + array( + Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_ESCAPED, + Mustache_Tokenizer::NAME => 'c', + Mustache_Tokenizer::OTAG => '<%', + Mustache_Tokenizer::CTAG => '%>', + Mustache_Tokenizer::LINE => 0, + Mustache_Tokenizer::INDEX => 26, + ), + array( + Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_TEXT, + Mustache_Tokenizer::LINE => 0, + Mustache_Tokenizer::VALUE => '}}}', + ), + ), + ), + + // unescaped custom delimiters are properly parsed + array( + '<%{ a }%>', + '<% %>', + array( + array( + Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_UNESCAPED, + Mustache_Tokenizer::NAME => 'a', + Mustache_Tokenizer::OTAG => '<%', + Mustache_Tokenizer::CTAG => '%>', + Mustache_Tokenizer::LINE => 0, + Mustache_Tokenizer::INDEX => 9, + ), + ), + ), + + // Ensure that $arg token is not picked up during tokenization + array( + '{{$arg}}default{{/arg}}', + null, + array( + array( + Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_BLOCK_VAR, + Mustache_Tokenizer::NAME => 'arg', + Mustache_Tokenizer::OTAG => '{{', + Mustache_Tokenizer::CTAG => '}}', + Mustache_Tokenizer::LINE => 0, + Mustache_Tokenizer::INDEX => 8, + ), + array( + Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_TEXT, + Mustache_Tokenizer::LINE => 0, + Mustache_Tokenizer::VALUE => 'default', + ), + array( + Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_END_SECTION, + Mustache_Tokenizer::NAME => 'arg', + Mustache_Tokenizer::OTAG => '{{', + Mustache_Tokenizer::CTAG => '}}', + Mustache_Tokenizer::LINE => 0, + Mustache_Tokenizer::INDEX => 15, + ), + ), + ), + ); + } +} diff --git a/webclient/vendor/mustache/mustache/test/bootstrap.php b/webclient/vendor/mustache/mustache/test/bootstrap.php new file mode 100644 index 00000000..21fc6896 --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/bootstrap.php @@ -0,0 +1,91 @@ +filehandle = fopen($path, $mode); + + return $this->filehandle !== false; + } + + /** + * @return array + */ + public function stream_stat() + { + return array(); + } + + /** + * @param int $count + * + * @return string + */ + public function stream_read($count) + { + return fgets($this->filehandle, $count); + } + + /** + * @return bool + */ + public function stream_eof() + { + return feof($this->filehandle); + } + + /** + * @return bool + */ + public function stream_close() + { + return fclose($this->filehandle); + } +} + +if (!stream_wrapper_register('test', 'TestStream')) { + die('Failed to register protocol'); +} diff --git a/webclient/vendor/mustache/mustache/test/fixtures/autoloader/Mustache/Bar.php b/webclient/vendor/mustache/mustache/test/fixtures/autoloader/Mustache/Bar.php new file mode 100644 index 00000000..80927224 --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/fixtures/autoloader/Mustache/Bar.php @@ -0,0 +1,15 @@ + 'child works', + ); + + public $grandparent = array( + 'parent' => array( + 'child' => 'grandchild works', + ), + ); +} diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/child_context/child_context.mustache b/webclient/vendor/mustache/mustache/test/fixtures/examples/child_context/child_context.mustache new file mode 100644 index 00000000..e1f2ebcb --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/fixtures/examples/child_context/child_context.mustache @@ -0,0 +1,2 @@ +

    {{#parent}}{{child}}{{/parent}}

    +

    {{#grandparent}}{{#parent}}{{child}}{{/parent}}{{/grandparent}}

    \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/child_context/child_context.txt b/webclient/vendor/mustache/mustache/test/fixtures/examples/child_context/child_context.txt new file mode 100644 index 00000000..cfb76bf7 --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/fixtures/examples/child_context/child_context.txt @@ -0,0 +1,2 @@ +

    child works

    +

    grandchild works

    \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/comments/Comments.php b/webclient/vendor/mustache/mustache/test/fixtures/examples/comments/Comments.php new file mode 100644 index 00000000..690d139e --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/fixtures/examples/comments/Comments.php @@ -0,0 +1,18 @@ +{{title}}{{! just something interesting... #or ^not... }} \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/comments/comments.txt b/webclient/vendor/mustache/mustache/test/fixtures/examples/comments/comments.txt new file mode 100644 index 00000000..9f40e77b --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/fixtures/examples/comments/comments.txt @@ -0,0 +1 @@ +

    A Comedy of Errors

    \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/complex/complex.mustache b/webclient/vendor/mustache/mustache/test/fixtures/examples/complex/complex.mustache new file mode 100644 index 00000000..807c201e --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/fixtures/examples/complex/complex.mustache @@ -0,0 +1,16 @@ +

    {{header}}

    +{{#notEmpty}} +
      +{{#item}} +{{#current}} +
    • {{name}}
    • +{{/current}} +{{^current}} +
    • {{name}}
    • +{{/current}} +{{/item}} +
    +{{/notEmpty}} +{{#isEmpty}} +

    The list is empty.

    +{{/isEmpty}} \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/complex/complex.php b/webclient/vendor/mustache/mustache/test/fixtures/examples/complex/complex.php new file mode 100644 index 00000000..ebb27332 --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/fixtures/examples/complex/complex.php @@ -0,0 +1,31 @@ + 'red', 'current' => true, 'url' => '#Red'), + array('name' => 'green', 'current' => false, 'url' => '#Green'), + array('name' => 'blue', 'current' => false, 'url' => '#Blue'), + ); + + public function notEmpty() + { + return !($this->isEmpty()); + } + + public function isEmpty() + { + return count($this->item) === 0; + } +} diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/complex/complex.txt b/webclient/vendor/mustache/mustache/test/fixtures/examples/complex/complex.txt new file mode 100644 index 00000000..facee6df --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/fixtures/examples/complex/complex.txt @@ -0,0 +1,6 @@ +

    Colors

    + diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/delimiters/Delimiters.php b/webclient/vendor/mustache/mustache/test/fixtures/examples/delimiters/Delimiters.php new file mode 100644 index 00000000..e3b044d2 --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/fixtures/examples/delimiters/Delimiters.php @@ -0,0 +1,25 @@ + 'And it worked the second time.'), + array('item' => 'As well as the third.'), + ); + } + + public $final = 'Then, surprisingly, it worked the final time.'; +} diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/delimiters/delimiters.mustache b/webclient/vendor/mustache/mustache/test/fixtures/examples/delimiters/delimiters.mustache new file mode 100644 index 00000000..e9b0332b --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/fixtures/examples/delimiters/delimiters.mustache @@ -0,0 +1,8 @@ +{{=<% %>=}} +* <% start %> +<%=| |=%> +|# middle | +* | item | +|/ middle | +|={{ }}=| +* {{ final }} \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/delimiters/delimiters.txt b/webclient/vendor/mustache/mustache/test/fixtures/examples/delimiters/delimiters.txt new file mode 100644 index 00000000..e6b2d7af --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/fixtures/examples/delimiters/delimiters.txt @@ -0,0 +1,4 @@ +* It worked the first time. +* And it worked the second time. +* As well as the third. +* Then, surprisingly, it worked the final time. \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/dot_notation/DotNotation.php b/webclient/vendor/mustache/mustache/test/fixtures/examples/dot_notation/DotNotation.php new file mode 100644 index 00000000..d4003185 --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/fixtures/examples/dot_notation/DotNotation.php @@ -0,0 +1,24 @@ + array('first' => 'Chris', 'last' => 'Firescythe'), + 'age' => 24, + 'hometown' => array( + 'city' => 'Cincinnati', + 'state' => 'OH', + ), + ); + + public $normal = 'Normal'; +} diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/dot_notation/dot_notation.mustache b/webclient/vendor/mustache/mustache/test/fixtures/examples/dot_notation/dot_notation.mustache new file mode 100644 index 00000000..0566867b --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/fixtures/examples/dot_notation/dot_notation.mustache @@ -0,0 +1,4 @@ +* {{person.name.first}} {{person.name.last}} +* {{person.age}} +* {{person.hometown.city}}, {{person.hometown.state}} +* {{normal}} \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/dot_notation/dot_notation.txt b/webclient/vendor/mustache/mustache/test/fixtures/examples/dot_notation/dot_notation.txt new file mode 100644 index 00000000..f8cf1fa1 --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/fixtures/examples/dot_notation/dot_notation.txt @@ -0,0 +1,4 @@ +* Chris Firescythe +* 24 +* Cincinnati, OH +* Normal \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/double_section/DoubleSection.php b/webclient/vendor/mustache/mustache/test/fixtures/examples/double_section/DoubleSection.php new file mode 100644 index 00000000..6989d95a --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/fixtures/examples/double_section/DoubleSection.php @@ -0,0 +1,20 @@ + "Shark"'; +} diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/escaped/escaped.mustache b/webclient/vendor/mustache/mustache/test/fixtures/examples/escaped/escaped.mustache new file mode 100644 index 00000000..8be4ccb6 --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/fixtures/examples/escaped/escaped.mustache @@ -0,0 +1 @@ +

    {{title}}

    \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/escaped/escaped.txt b/webclient/vendor/mustache/mustache/test/fixtures/examples/escaped/escaped.txt new file mode 100644 index 00000000..6ba3657e --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/fixtures/examples/escaped/escaped.txt @@ -0,0 +1 @@ +

    "Bear" > "Shark"

    \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/filters/Filters.php b/webclient/vendor/mustache/mustache/test/fixtures/examples/filters/Filters.php new file mode 100644 index 00000000..fb7c3f51 --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/fixtures/examples/filters/Filters.php @@ -0,0 +1,97 @@ + 'Alabama', + 'ak' => 'Alaska', + 'az' => 'Arizona', + 'ar' => 'Arkansas', + 'ca' => 'California', + 'co' => 'Colorado', + 'ct' => 'Connecticut', + 'de' => 'Delaware', + 'fl' => 'Florida', + 'ga' => 'Georgia', + 'hi' => 'Hawaii', + 'id' => 'Idaho', + 'il' => 'Illinois', + 'in' => 'Indiana', + 'ia' => 'Iowa', + 'ks' => 'Kansas', + 'ky' => 'Kentucky', + 'la' => 'Louisiana', + 'me' => 'Maine', + 'md' => 'Maryland', + 'ma' => 'Massachusetts', + 'mi' => 'Michigan', + 'mn' => 'Minnesota', + 'ms' => 'Mississippi', + 'mo' => 'Missouri', + 'mt' => 'Montana', + 'ne' => 'Nebraska', + 'nv' => 'Nevada', + 'nh' => 'New Hampshire', + 'nj' => 'New Jersey', + 'nm' => 'New Mexico', + 'ny' => 'New York', + 'nc' => 'North Carolina', + 'nd' => 'North Dakota', + 'oh' => 'Ohio', + 'ok' => 'Oklahoma', + 'or' => 'Oregon', + 'pa' => 'Pennsylvania', + 'ri' => 'Rhode Island', + 'sc' => 'South Carolina', + 'sd' => 'South Dakota', + 'tn' => 'Tennessee', + 'tx' => 'Texas', + 'ut' => 'Utah', + 'vt' => 'Vermont', + 'va' => 'Virginia', + 'wa' => 'Washington', + 'wv' => 'West Virginia', + 'wi' => 'Wisconsin', + 'wy' => 'Wyoming', + ); + + // The next few functions are ugly, because they have to work in PHP 5.2... + // for everyone who doesn't have to support 5.2, please, for the love, make + // your ViewModel return closures rather than `array($this, '...')` + // + // :) + + public function upcase() + { + return array($this, '_upcase'); + } + + public function _upcase($val) + { + return strtoupper($val); + } + + public function eachPair() + { + return array($this, '_eachPair'); + } + + public function _eachPair($val) + { + $ret = array(); + foreach ($val as $key => $value) { + array_push($ret, compact('key', 'value')); + } + + return $ret; + } +} diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/filters/filters.mustache b/webclient/vendor/mustache/mustache/test/fixtures/examples/filters/filters.mustache new file mode 100644 index 00000000..50f14653 --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/fixtures/examples/filters/filters.mustache @@ -0,0 +1,4 @@ +{{%FILTERS}} +{{# states | eachPair }} +{{ key | upcase }}: {{ value }} +{{/ states }} \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/filters/filters.txt b/webclient/vendor/mustache/mustache/test/fixtures/examples/filters/filters.txt new file mode 100644 index 00000000..67466fd5 --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/fixtures/examples/filters/filters.txt @@ -0,0 +1,50 @@ +AL: Alabama +AK: Alaska +AZ: Arizona +AR: Arkansas +CA: California +CO: Colorado +CT: Connecticut +DE: Delaware +FL: Florida +GA: Georgia +HI: Hawaii +ID: Idaho +IL: Illinois +IN: Indiana +IA: Iowa +KS: Kansas +KY: Kentucky +LA: Louisiana +ME: Maine +MD: Maryland +MA: Massachusetts +MI: Michigan +MN: Minnesota +MS: Mississippi +MO: Missouri +MT: Montana +NE: Nebraska +NV: Nevada +NH: New Hampshire +NJ: New Jersey +NM: New Mexico +NY: New York +NC: North Carolina +ND: North Dakota +OH: Ohio +OK: Oklahoma +OR: Oregon +PA: Pennsylvania +RI: Rhode Island +SC: South Carolina +SD: South Dakota +TN: Tennessee +TX: Texas +UT: Utah +VT: Vermont +VA: Virginia +WA: Washington +WV: West Virginia +WI: Wisconsin +WY: Wyoming diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/grand_parent_context/GrandParentContext.php b/webclient/vendor/mustache/mustache/test/fixtures/examples/grand_parent_context/GrandParentContext.php new file mode 100644 index 00000000..e3ea25f3 --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/fixtures/examples/grand_parent_context/GrandParentContext.php @@ -0,0 +1,33 @@ +parent_contexts[] = array('parent_id' => 'parent1', 'child_contexts' => array( + array('child_id' => 'parent1-child1'), + array('child_id' => 'parent1-child2'), + )); + + $parent2 = new stdClass(); + $parent2->parent_id = 'parent2'; + $parent2->child_contexts = array( + array('child_id' => 'parent2-child1'), + array('child_id' => 'parent2-child2'), + ); + + $this->parent_contexts[] = $parent2; + } +} diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/grand_parent_context/grand_parent_context.mustache b/webclient/vendor/mustache/mustache/test/fixtures/examples/grand_parent_context/grand_parent_context.mustache new file mode 100644 index 00000000..6d03ddf6 --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/fixtures/examples/grand_parent_context/grand_parent_context.mustache @@ -0,0 +1,7 @@ +{{grand_parent_id}} +{{#parent_contexts}} + {{parent_id}} ({{grand_parent_id}}) + {{#child_contexts}} + {{child_id}} ({{parent_id}} << {{grand_parent_id}}) + {{/child_contexts}} +{{/parent_contexts}} diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/grand_parent_context/grand_parent_context.txt b/webclient/vendor/mustache/mustache/test/fixtures/examples/grand_parent_context/grand_parent_context.txt new file mode 100644 index 00000000..2687f849 --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/fixtures/examples/grand_parent_context/grand_parent_context.txt @@ -0,0 +1,7 @@ +grand_parent1 + parent1 (grand_parent1) + parent1-child1 (parent1 << grand_parent1) + parent1-child2 (parent1 << grand_parent1) + parent2 (grand_parent1) + parent2-child1 (parent2 << grand_parent1) + parent2-child2 (parent2 << grand_parent1) diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/i18n/I18n.php b/webclient/vendor/mustache/mustache/test/fixtures/examples/i18n/I18n.php new file mode 100644 index 00000000..77dc7b25 --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/fixtures/examples/i18n/I18n.php @@ -0,0 +1,30 @@ + 'Hola.', + 'My name is {{ name }}.' => 'Me llamo {{ name }}.', + ); + + public static function __trans($text) + { + return isset(self::$dictionary[$text]) ? self::$dictionary[$text] : $text; + } +} diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/i18n/i18n.mustache b/webclient/vendor/mustache/mustache/test/fixtures/examples/i18n/i18n.mustache new file mode 100644 index 00000000..eef169b4 --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/fixtures/examples/i18n/i18n.mustache @@ -0,0 +1 @@ +{{#__}}Hello.{{/__}} {{#__}}My name is {{ name }}.{{/__}} \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/i18n/i18n.txt b/webclient/vendor/mustache/mustache/test/fixtures/examples/i18n/i18n.txt new file mode 100644 index 00000000..650a71ac --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/fixtures/examples/i18n/i18n.txt @@ -0,0 +1 @@ +Hola. Me llamo Bob. \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/implicit_iterator/ImplicitIterator.php b/webclient/vendor/mustache/mustache/test/fixtures/examples/implicit_iterator/ImplicitIterator.php new file mode 100644 index 00000000..6a264773 --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/fixtures/examples/implicit_iterator/ImplicitIterator.php @@ -0,0 +1,15 @@ +{{name}}
    +{{/repo}} +{{^repo}} + No repos :( +{{/repo}} \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/inverted_section/inverted_section.txt b/webclient/vendor/mustache/mustache/test/fixtures/examples/inverted_section/inverted_section.txt new file mode 100644 index 00000000..6ba5a990 --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/fixtures/examples/inverted_section/inverted_section.txt @@ -0,0 +1 @@ + No repos :( diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/nested_partials/NestedPartials.php b/webclient/vendor/mustache/mustache/test/fixtures/examples/nested_partials/NestedPartials.php new file mode 100644 index 00000000..1a5afd34 --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/fixtures/examples/nested_partials/NestedPartials.php @@ -0,0 +1,15 @@ + + {{> second }} + \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/nested_partials/nested_partials.txt b/webclient/vendor/mustache/mustache/test/fixtures/examples/nested_partials/nested_partials.txt new file mode 100644 index 00000000..62776f97 --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/fixtures/examples/nested_partials/nested_partials.txt @@ -0,0 +1,7 @@ + + + + FOURTH! + + + \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/nested_partials/partials/fourth.mustache b/webclient/vendor/mustache/mustache/test/fixtures/examples/nested_partials/partials/fourth.mustache new file mode 100644 index 00000000..727676fe --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/fixtures/examples/nested_partials/partials/fourth.mustache @@ -0,0 +1 @@ +{{ val }} diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/nested_partials/partials/second.mustache b/webclient/vendor/mustache/mustache/test/fixtures/examples/nested_partials/partials/second.mustache new file mode 100644 index 00000000..83f33cf4 --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/fixtures/examples/nested_partials/partials/second.mustache @@ -0,0 +1,3 @@ + + {{> third }} + diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/nested_partials/partials/third.mustache b/webclient/vendor/mustache/mustache/test/fixtures/examples/nested_partials/partials/third.mustache new file mode 100644 index 00000000..f33301a6 --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/fixtures/examples/nested_partials/partials/third.mustache @@ -0,0 +1,3 @@ + + {{> fourth }} + diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/partials/Partials.php b/webclient/vendor/mustache/mustache/test/fixtures/examples/partials/Partials.php new file mode 100644 index 00000000..1bdaaa19 --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/fixtures/examples/partials/Partials.php @@ -0,0 +1,19 @@ + 'Page Title', + 'subtitle' => 'Page Subtitle', + 'content' => 'Lorem ipsum dolor sit amet.', + ); +} diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/partials/partials.mustache b/webclient/vendor/mustache/mustache/test/fixtures/examples/partials/partials.mustache new file mode 100644 index 00000000..54cf1c52 --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/fixtures/examples/partials/partials.mustache @@ -0,0 +1,7 @@ +
    + {{> header }} + +
    + {{ page.content }} +
    +
    \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/partials/partials.txt b/webclient/vendor/mustache/mustache/test/fixtures/examples/partials/partials.txt new file mode 100644 index 00000000..f8e45ce3 --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/fixtures/examples/partials/partials.txt @@ -0,0 +1,8 @@ +
    +

    Page Title

    +

    Page Subtitle

    + +
    + Lorem ipsum dolor sit amet. +
    +
    \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/partials/partials/header.mustache b/webclient/vendor/mustache/mustache/test/fixtures/examples/partials/partials/header.mustache new file mode 100644 index 00000000..88d567b2 --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/fixtures/examples/partials/partials/header.mustache @@ -0,0 +1,4 @@ +{{# page }} +

    {{ title }}

    +

    {{ subtitle }}

    +{{/ page }} \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/recursive_partials/RecursivePartials.php b/webclient/vendor/mustache/mustache/test/fixtures/examples/recursive_partials/RecursivePartials.php new file mode 100644 index 00000000..25d15fd6 --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/fixtures/examples/recursive_partials/RecursivePartials.php @@ -0,0 +1,22 @@ + 'Dan', + 'child' => array( + 'name' => 'Justin', + 'child' => false, + ), + ); +} diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/recursive_partials/partials/child.mustache b/webclient/vendor/mustache/mustache/test/fixtures/examples/recursive_partials/partials/child.mustache new file mode 100644 index 00000000..12829415 --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/fixtures/examples/recursive_partials/partials/child.mustache @@ -0,0 +1 @@ + > {{ name }}{{#child}}{{>child}}{{/child}} \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/recursive_partials/recursive_partials.mustache b/webclient/vendor/mustache/mustache/test/fixtures/examples/recursive_partials/recursive_partials.mustache new file mode 100644 index 00000000..0bc5d03d --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/fixtures/examples/recursive_partials/recursive_partials.mustache @@ -0,0 +1 @@ +{{name}}{{#child}}{{>child}}{{/child}} \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/recursive_partials/recursive_partials.txt b/webclient/vendor/mustache/mustache/test/fixtures/examples/recursive_partials/recursive_partials.txt new file mode 100644 index 00000000..681cdef6 --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/fixtures/examples/recursive_partials/recursive_partials.txt @@ -0,0 +1 @@ +George > Dan > Justin \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/section_iterator_objects/SectionIteratorObjects.php b/webclient/vendor/mustache/mustache/test/fixtures/examples/section_iterator_objects/SectionIteratorObjects.php new file mode 100644 index 00000000..77e083eb --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/fixtures/examples/section_iterator_objects/SectionIteratorObjects.php @@ -0,0 +1,27 @@ + 'And it worked the second time.'), + array('item' => 'As well as the third.'), + ); + + public function middle() + { + return new ArrayIterator($this->_data); + } + + public $final = 'Then, surprisingly, it worked the final time.'; +} diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/section_iterator_objects/section_iterator_objects.mustache b/webclient/vendor/mustache/mustache/test/fixtures/examples/section_iterator_objects/section_iterator_objects.mustache new file mode 100644 index 00000000..44dfce48 --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/fixtures/examples/section_iterator_objects/section_iterator_objects.mustache @@ -0,0 +1,5 @@ +* {{ start }} +{{# middle }} +* {{ item }} +{{/ middle }} +* {{ final }} \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/section_iterator_objects/section_iterator_objects.txt b/webclient/vendor/mustache/mustache/test/fixtures/examples/section_iterator_objects/section_iterator_objects.txt new file mode 100644 index 00000000..e6b2d7af --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/fixtures/examples/section_iterator_objects/section_iterator_objects.txt @@ -0,0 +1,4 @@ +* It worked the first time. +* And it worked the second time. +* As well as the third. +* Then, surprisingly, it worked the final time. \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/section_magic_objects/SectionMagicObjects.php b/webclient/vendor/mustache/mustache/test/fixtures/examples/section_magic_objects/SectionMagicObjects.php new file mode 100644 index 00000000..54288d65 --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/fixtures/examples/section_magic_objects/SectionMagicObjects.php @@ -0,0 +1,40 @@ + 'And it worked the second time.', + 'bar' => 'As well as the third.', + ); + + public function __get($key) + { + return isset($this->_data[$key]) ? $this->_data[$key] : null; + } + + public function __isset($key) + { + return isset($this->_data[$key]); + } +} diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/section_magic_objects/section_magic_objects.mustache b/webclient/vendor/mustache/mustache/test/fixtures/examples/section_magic_objects/section_magic_objects.mustache new file mode 100644 index 00000000..91196085 --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/fixtures/examples/section_magic_objects/section_magic_objects.mustache @@ -0,0 +1,6 @@ +* {{ start }} +{{# middle }} +* {{ foo }} +* {{ bar }} +{{/ middle }} +* {{ final }} \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/section_magic_objects/section_magic_objects.txt b/webclient/vendor/mustache/mustache/test/fixtures/examples/section_magic_objects/section_magic_objects.txt new file mode 100644 index 00000000..e6b2d7af --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/fixtures/examples/section_magic_objects/section_magic_objects.txt @@ -0,0 +1,4 @@ +* It worked the first time. +* And it worked the second time. +* As well as the third. +* Then, surprisingly, it worked the final time. \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/section_objects/SectionObjects.php b/webclient/vendor/mustache/mustache/test/fixtures/examples/section_objects/SectionObjects.php new file mode 100644 index 00000000..b977ec58 --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/fixtures/examples/section_objects/SectionObjects.php @@ -0,0 +1,28 @@ + 'And it worked the second time.'), + array('item' => 'As well as the third.'), + ); + } + + public $final = 'Then, surprisingly, it worked the final time.'; +} diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/sections/sections.mustache b/webclient/vendor/mustache/mustache/test/fixtures/examples/sections/sections.mustache new file mode 100644 index 00000000..44dfce48 --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/fixtures/examples/sections/sections.mustache @@ -0,0 +1,5 @@ +* {{ start }} +{{# middle }} +* {{ item }} +{{/ middle }} +* {{ final }} \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/sections/sections.txt b/webclient/vendor/mustache/mustache/test/fixtures/examples/sections/sections.txt new file mode 100644 index 00000000..e6b2d7af --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/fixtures/examples/sections/sections.txt @@ -0,0 +1,4 @@ +* It worked the first time. +* And it worked the second time. +* As well as the third. +* Then, surprisingly, it worked the final time. \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/sections_nested/SectionsNested.php b/webclient/vendor/mustache/mustache/test/fixtures/examples/sections_nested/SectionsNested.php new file mode 100644 index 00000000..dccc0d94 --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/fixtures/examples/sections_nested/SectionsNested.php @@ -0,0 +1,44 @@ + 'Von Kaiser', + 'enemies' => array( + array('name' => 'Super Macho Man'), + array('name' => 'Piston Honda'), + array('name' => 'Mr. Sandman'), + ), + ), + array( + 'name' => 'Mike Tyson', + 'enemies' => array( + array('name' => 'Soda Popinski'), + array('name' => 'King Hippo'), + array('name' => 'Great Tiger'), + array('name' => 'Glass Joe'), + ), + ), + array( + 'name' => 'Don Flamenco', + 'enemies' => array( + array('name' => 'Bald Bull'), + ), + ), + ); + } +} diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/sections_nested/sections_nested.mustache b/webclient/vendor/mustache/mustache/test/fixtures/examples/sections_nested/sections_nested.mustache new file mode 100644 index 00000000..9f8007db --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/fixtures/examples/sections_nested/sections_nested.mustache @@ -0,0 +1,7 @@ +Enemies of {{ name }}: +{{# enemies }} +{{ name }} ... who also has enemies: +{{# enemies }} +--> {{ name }} +{{/ enemies }} +{{/ enemies }} \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/sections_nested/sections_nested.txt b/webclient/vendor/mustache/mustache/test/fixtures/examples/sections_nested/sections_nested.txt new file mode 100644 index 00000000..72c44d06 --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/fixtures/examples/sections_nested/sections_nested.txt @@ -0,0 +1,12 @@ +Enemies of Little Mac: +Von Kaiser ... who also has enemies: +--> Super Macho Man +--> Piston Honda +--> Mr. Sandman +Mike Tyson ... who also has enemies: +--> Soda Popinski +--> King Hippo +--> Great Tiger +--> Glass Joe +Don Flamenco ... who also has enemies: +--> Bald Bull diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/simple/Simple.php b/webclient/vendor/mustache/mustache/test/fixtures/examples/simple/Simple.php new file mode 100644 index 00000000..570af22b --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/fixtures/examples/simple/Simple.php @@ -0,0 +1,23 @@ +value - ($this->value * 0.4); + } + + public $in_ca = true; +} diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/simple/simple.mustache b/webclient/vendor/mustache/mustache/test/fixtures/examples/simple/simple.mustache new file mode 100644 index 00000000..03df2068 --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/fixtures/examples/simple/simple.mustache @@ -0,0 +1,5 @@ +Hello {{name}} +You have just won ${{value}}! +{{#in_ca}} +Well, ${{ taxed_value }}, after taxes. +{{/in_ca}} \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/simple/simple.txt b/webclient/vendor/mustache/mustache/test/fixtures/examples/simple/simple.txt new file mode 100644 index 00000000..5d75d656 --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/fixtures/examples/simple/simple.txt @@ -0,0 +1,3 @@ +Hello Chris +You have just won $10000! +Well, $6000, after taxes. diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/unescaped/Unescaped.php b/webclient/vendor/mustache/mustache/test/fixtures/examples/unescaped/Unescaped.php new file mode 100644 index 00000000..abe91787 --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/fixtures/examples/unescaped/Unescaped.php @@ -0,0 +1,15 @@ + Shark'; +} diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/unescaped/unescaped.mustache b/webclient/vendor/mustache/mustache/test/fixtures/examples/unescaped/unescaped.mustache new file mode 100644 index 00000000..9982708a --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/fixtures/examples/unescaped/unescaped.mustache @@ -0,0 +1 @@ +

    {{{title}}}

    \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/unescaped/unescaped.txt b/webclient/vendor/mustache/mustache/test/fixtures/examples/unescaped/unescaped.txt new file mode 100644 index 00000000..01fa4048 --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/fixtures/examples/unescaped/unescaped.txt @@ -0,0 +1 @@ +

    Bear > Shark

    \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/utf8/UTF8.php b/webclient/vendor/mustache/mustache/test/fixtures/examples/utf8/UTF8.php new file mode 100644 index 00000000..8c149411 --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/fixtures/examples/utf8/UTF8.php @@ -0,0 +1,15 @@ +中文 {{test}} \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/utf8/utf8.txt b/webclient/vendor/mustache/mustache/test/fixtures/examples/utf8/utf8.txt new file mode 100644 index 00000000..bf17971b --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/fixtures/examples/utf8/utf8.txt @@ -0,0 +1 @@ +

    中文 中文又来啦

    \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/utf8_unescaped/UTF8Unescaped.php b/webclient/vendor/mustache/mustache/test/fixtures/examples/utf8_unescaped/UTF8Unescaped.php new file mode 100644 index 00000000..43096754 --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/fixtures/examples/utf8_unescaped/UTF8Unescaped.php @@ -0,0 +1,15 @@ +中文 {{{test}}} \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/utf8_unescaped/utf8_unescaped.txt b/webclient/vendor/mustache/mustache/test/fixtures/examples/utf8_unescaped/utf8_unescaped.txt new file mode 100644 index 00000000..bf17971b --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/fixtures/examples/utf8_unescaped/utf8_unescaped.txt @@ -0,0 +1 @@ +

    中文 中文又来啦

    \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/whitespace/Whitespace.php b/webclient/vendor/mustache/mustache/test/fixtures/examples/whitespace/Whitespace.php new file mode 100644 index 00000000..d5a5c620 --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/fixtures/examples/whitespace/Whitespace.php @@ -0,0 +1,43 @@ + tag }}` and `{{> tag}}` and `{{>tag}}` should all be equivalent. + */ +class Whitespace +{ + public $foo = 'alpha'; + + public $bar = 'beta'; + + public function baz() + { + return 'gamma'; + } + + public function qux() + { + return array( + array('key with space' => 'A'), + array('key with space' => 'B'), + array('key with space' => 'C'), + array('key with space' => 'D'), + array('key with space' => 'E'), + array('key with space' => 'F'), + array('key with space' => 'G'), + ); + } +} diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/whitespace/partials/alphabet.mustache b/webclient/vendor/mustache/mustache/test/fixtures/examples/whitespace/partials/alphabet.mustache new file mode 100644 index 00000000..d281c41b --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/fixtures/examples/whitespace/partials/alphabet.mustache @@ -0,0 +1 @@ + * {{.}} \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/whitespace/whitespace.mustache b/webclient/vendor/mustache/mustache/test/fixtures/examples/whitespace/whitespace.mustache new file mode 100644 index 00000000..0b3ba000 --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/fixtures/examples/whitespace/whitespace.mustache @@ -0,0 +1,10 @@ +{{^ inverted section test }} +These are some things: +{{/inverted section test }} +* {{ foo }} +* {{ bar}} +* {{ baz }} +{{# qux }} +* {{ key with space }} +{{/ qux }} +{{#qux}}.{{/qux}} \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/whitespace/whitespace.txt b/webclient/vendor/mustache/mustache/test/fixtures/examples/whitespace/whitespace.txt new file mode 100644 index 00000000..5226c698 --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/fixtures/examples/whitespace/whitespace.txt @@ -0,0 +1,12 @@ +These are some things: +* alpha +* beta +* gamma +* A +* B +* C +* D +* E +* F +* G +....... \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/templates/alpha.ms b/webclient/vendor/mustache/mustache/test/fixtures/templates/alpha.ms new file mode 100644 index 00000000..3845830e --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/fixtures/templates/alpha.ms @@ -0,0 +1 @@ +alpha contents \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/templates/beta.ms b/webclient/vendor/mustache/mustache/test/fixtures/templates/beta.ms new file mode 100644 index 00000000..a083dfe8 --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/fixtures/templates/beta.ms @@ -0,0 +1 @@ +beta contents \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/templates/one.mustache b/webclient/vendor/mustache/mustache/test/fixtures/templates/one.mustache new file mode 100644 index 00000000..f83ad095 --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/fixtures/templates/one.mustache @@ -0,0 +1 @@ +one contents \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/templates/two.mustache b/webclient/vendor/mustache/mustache/test/fixtures/templates/two.mustache new file mode 100644 index 00000000..dacc40e2 --- /dev/null +++ b/webclient/vendor/mustache/mustache/test/fixtures/templates/two.mustache @@ -0,0 +1 @@ +two contents \ No newline at end of file diff --git a/webclient/views/pages/createaccount.mustache b/webclient/views/pages/createaccount.mustache new file mode 100644 index 00000000..a58ac878 --- /dev/null +++ b/webclient/views/pages/createaccount.mustache @@ -0,0 +1,33 @@ + + + {{>header}} + {{>style}} + + +

    + Please choose a password for Milliways +

    + +
    + + + + + + + + + + + + +
    Password:
    Password again:
    + +
    + + +
    + + + + diff --git a/webclient/views/pages/front.mustache b/webclient/views/pages/front.mustache new file mode 100644 index 00000000..7d6d4261 --- /dev/null +++ b/webclient/views/pages/front.mustache @@ -0,0 +1,30 @@ + + + {{>header}} + {{>style}} + + + {{>sidebar}} + {{>topbar}} + +
    +
    +

    + Milliways III - Web Edition +

    +
    + +
    +
    + +
    +
    +
    + + + + + + diff --git a/webclient/views/pages/login.mustache b/webclient/views/pages/login.mustache new file mode 100644 index 00000000..5257f88a --- /dev/null +++ b/webclient/views/pages/login.mustache @@ -0,0 +1,25 @@ + + + {{>header}} + {{>style}} + + + {{error}} + +

    Milliways

    + + + + + + + diff --git a/webclient/views/partials/footer.mustache b/webclient/views/partials/footer.mustache new file mode 100644 index 00000000..e69de29b diff --git a/webclient/views/partials/header.mustache b/webclient/views/partials/header.mustache new file mode 100644 index 00000000..d87b6327 --- /dev/null +++ b/webclient/views/partials/header.mustache @@ -0,0 +1,7 @@ + + Milliways Talker + + + + + diff --git a/webclient/views/partials/sidebar.mustache b/webclient/views/partials/sidebar.mustache new file mode 100644 index 00000000..1158db30 --- /dev/null +++ b/webclient/views/partials/sidebar.mustache @@ -0,0 +1,8 @@ + diff --git a/webclient/views/partials/style.mustache b/webclient/views/partials/style.mustache new file mode 100644 index 00000000..4d73b0e5 --- /dev/null +++ b/webclient/views/partials/style.mustache @@ -0,0 +1,435 @@ + diff --git a/webclient/views/partials/topbar.mustache b/webclient/views/partials/topbar.mustache new file mode 100644 index 00000000..2bf676a8 --- /dev/null +++ b/webclient/views/partials/topbar.mustache @@ -0,0 +1,6 @@ +
    +
    + + +
    +
    -- GitLab From 27157e69b3a895e050433b8b58ad2eea66ace829 Mon Sep 17 00:00:00 2001 From: Isabel Jenkins Date: Wed, 12 Jul 2017 14:32:43 +0100 Subject: [PATCH 2/3] removed vendor dir --- webclient/.gitignore | 6 + webclient/vendor/autoload.php | 7 - webclient/vendor/composer/ClassLoader.php | 415 --------- webclient/vendor/composer/LICENSE | 21 - .../vendor/composer/autoload_classmap.php | 9 - .../vendor/composer/autoload_namespaces.php | 10 - webclient/vendor/composer/autoload_psr4.php | 9 - webclient/vendor/composer/autoload_real.php | 52 -- webclient/vendor/composer/autoload_static.php | 26 - webclient/vendor/composer/installed.json | 50 -- webclient/vendor/mustache/mustache/.gitignore | 4 - .../vendor/mustache/mustache/.gitmodules | 6 - webclient/vendor/mustache/mustache/.php_cs | 26 - .../vendor/mustache/mustache/.styleci.yml | 13 - .../vendor/mustache/mustache/.travis.yml | 15 - .../vendor/mustache/mustache/CONTRIBUTING.md | 35 - webclient/vendor/mustache/mustache/LICENSE | 21 - webclient/vendor/mustache/mustache/README.md | 72 -- .../mustache/mustache/bin/build_bootstrap.php | 178 ---- .../vendor/mustache/mustache/composer.json | 25 - .../vendor/mustache/mustache/phpunit.xml.dist | 17 - .../mustache/src/Mustache/Autoloader.php | 74 -- .../mustache/mustache/src/Mustache/Cache.php | 36 - .../src/Mustache/Cache/AbstractCache.php | 60 -- .../src/Mustache/Cache/FilesystemCache.php | 155 ---- .../mustache/src/Mustache/Cache/NoopCache.php | 47 -- .../mustache/src/Mustache/Compiler.php | 687 --------------- .../mustache/src/Mustache/Context.php | 242 ------ .../mustache/mustache/src/Mustache/Engine.php | 787 ------------------ .../mustache/src/Mustache/Exception.php | 18 - .../Exception/InvalidArgumentException.php | 18 - .../src/Mustache/Exception/LogicException.php | 18 - .../Mustache/Exception/RuntimeException.php | 18 - .../Mustache/Exception/SyntaxException.php | 41 - .../Exception/UnknownFilterException.php | 38 - .../Exception/UnknownHelperException.php | 38 - .../Exception/UnknownTemplateException.php | 38 - .../src/Mustache/HelperCollection.php | 172 ---- .../mustache/src/Mustache/LambdaHelper.php | 76 -- .../mustache/mustache/src/Mustache/Loader.php | 27 - .../src/Mustache/Loader/ArrayLoader.php | 79 -- .../src/Mustache/Loader/CascadingLoader.php | 69 -- .../src/Mustache/Loader/FilesystemLoader.php | 135 --- .../src/Mustache/Loader/InlineLoader.php | 123 --- .../src/Mustache/Loader/MutableLoader.php | 31 - .../src/Mustache/Loader/StringLoader.php | 39 - .../mustache/mustache/src/Mustache/Logger.php | 126 --- .../src/Mustache/Logger/AbstractLogger.php | 121 --- .../src/Mustache/Logger/StreamLogger.php | 194 ----- .../mustache/mustache/src/Mustache/Parser.php | 317 ------- .../mustache/src/Mustache/Template.php | 180 ---- .../mustache/src/Mustache/Tokenizer.php | 322 ------- .../test/Mustache/Test/AutoloaderTest.php | 36 - .../Mustache/Test/Cache/AbstractCacheTest.php | 44 - .../Test/Cache/FilesystemCacheTest.php | 36 - .../test/Mustache/Test/CompilerTest.php | 154 ---- .../test/Mustache/Test/ContextTest.php | 282 ------- .../test/Mustache/Test/EngineTest.php | 361 -------- .../Test/Exception/SyntaxExceptionTest.php | 39 - .../Exception/UnknownFilterExceptionTest.php | 44 - .../Exception/UnknownHelperExceptionTest.php | 43 - .../UnknownTemplateExceptionTest.php | 43 - .../Functional/ClosureQuirksTest.php | 32 - .../Test/FiveThree/Functional/EngineTest.php | 50 -- .../Test/FiveThree/Functional/FiltersTest.php | 187 ----- .../Functional/HigherOrderSectionsTest.php | 77 -- .../FiveThree/Functional/LambdaHelperTest.php | 67 -- .../FiveThree/Functional/MustacheSpecTest.php | 68 -- .../Functional/PartialLambdaIndentTest.php | 94 --- .../Functional/StrictCallablesTest.php | 135 --- .../Mustache/Test/Functional/CallTest.php | 40 - .../Mustache/Test/Functional/ExamplesTest.php | 142 ---- .../Functional/HigherOrderSectionsTest.php | 177 ---- .../Test/Functional/InheritanceTest.php | 526 ------------ .../Test/Functional/MustacheInjectionTest.php | 83 -- .../Test/Functional/MustacheSpecTest.php | 121 --- .../Functional/NestedPartialIndentTest.php | 45 - .../Test/Functional/ObjectSectionTest.php | 110 --- .../test/Mustache/Test/FunctionalTestCase.php | 47 -- .../Mustache/Test/HelperCollectionTest.php | 163 ---- .../Mustache/Test/Loader/ArrayLoaderTest.php | 52 -- .../Test/Loader/CascadingLoaderTest.php | 40 - .../Test/Loader/FilesystemLoaderTest.php | 80 -- .../Mustache/Test/Loader/InlineLoaderTest.php | 56 -- .../Mustache/Test/Loader/StringLoaderTest.php | 25 - .../Test/Logger/AbstractLoggerTest.php | 60 -- .../Mustache/Test/Logger/StreamLoggerTest.php | 209 ----- .../test/Mustache/Test/ParserTest.php | 425 ---------- .../test/Mustache/Test/SpecTestCase.php | 67 -- .../test/Mustache/Test/TemplateTest.php | 55 -- .../test/Mustache/Test/TokenizerTest.php | 306 ------- .../mustache/mustache/test/bootstrap.php | 91 -- .../test/fixtures/autoloader/Mustache/Bar.php | 15 - .../test/fixtures/autoloader/Mustache/Foo.php | 15 - .../fixtures/autoloader/NonMustacheClass.php | 15 - .../test/fixtures/examples/blocks/Blocks.php | 15 - .../fixtures/examples/blocks/blocks.mustache | 4 - .../test/fixtures/examples/blocks/blocks.txt | 3 - .../examples/blocks/partials/parent.mustache | 4 - .../examples/child_context/ChildContext.php | 23 - .../child_context/child_context.mustache | 2 - .../examples/child_context/child_context.txt | 2 - .../fixtures/examples/comments/Comments.php | 18 - .../examples/comments/comments.mustache | 1 - .../fixtures/examples/comments/comments.txt | 1 - .../examples/complex/complex.mustache | 16 - .../fixtures/examples/complex/complex.php | 31 - .../fixtures/examples/complex/complex.txt | 6 - .../examples/delimiters/Delimiters.php | 25 - .../examples/delimiters/delimiters.mustache | 8 - .../examples/delimiters/delimiters.txt | 4 - .../examples/dot_notation/DotNotation.php | 24 - .../dot_notation/dot_notation.mustache | 4 - .../examples/dot_notation/dot_notation.txt | 4 - .../examples/double_section/DoubleSection.php | 20 - .../double_section/double_section.mustache | 7 - .../double_section/double_section.txt | 3 - .../fixtures/examples/escaped/Escaped.php | 15 - .../examples/escaped/escaped.mustache | 1 - .../fixtures/examples/escaped/escaped.txt | 1 - .../fixtures/examples/filters/Filters.php | 97 --- .../examples/filters/filters.mustache | 4 - .../fixtures/examples/filters/filters.txt | 50 -- .../GrandParentContext.php | 33 - .../grand_parent_context.mustache | 7 - .../grand_parent_context.txt | 7 - .../test/fixtures/examples/i18n/I18n.php | 30 - .../test/fixtures/examples/i18n/i18n.mustache | 1 - .../test/fixtures/examples/i18n/i18n.txt | 1 - .../implicit_iterator/ImplicitIterator.php | 15 - .../implicit_iterator.mustache | 3 - .../implicit_iterator/implicit_iterator.txt | 5 - .../InvertedDoubleSection.php | 16 - .../inverted_double_section.mustache | 7 - .../inverted_double_section.txt | 3 - .../inverted_section/InvertedSection.php | 15 - .../inverted_section.mustache | 6 - .../inverted_section/inverted_section.txt | 1 - .../nested_partials/NestedPartials.php | 15 - .../nested_partials/nested_partials.mustache | 3 - .../nested_partials/nested_partials.txt | 7 - .../nested_partials/partials/fourth.mustache | 1 - .../nested_partials/partials/second.mustache | 3 - .../nested_partials/partials/third.mustache | 3 - .../fixtures/examples/partials/Partials.php | 19 - .../examples/partials/partials.mustache | 7 - .../fixtures/examples/partials/partials.txt | 8 - .../partials/partials/header.mustache | 4 - .../recursive_partials/RecursivePartials.php | 22 - .../partials/child.mustache | 1 - .../recursive_partials.mustache | 1 - .../recursive_partials/recursive_partials.txt | 1 - .../SectionIteratorObjects.php | 27 - .../section_iterator_objects.mustache | 5 - .../section_iterator_objects.txt | 4 - .../SectionMagicObjects.php | 40 - .../section_magic_objects.mustache | 6 - .../section_magic_objects.txt | 4 - .../section_objects/SectionObjects.php | 28 - .../section_objects/section_objects.mustache | 6 - .../section_objects/section_objects.txt | 4 - .../fixtures/examples/sections/Sections.php | 25 - .../examples/sections/sections.mustache | 5 - .../fixtures/examples/sections/sections.txt | 4 - .../sections_nested/SectionsNested.php | 44 - .../sections_nested/sections_nested.mustache | 7 - .../sections_nested/sections_nested.txt | 12 - .../test/fixtures/examples/simple/Simple.php | 23 - .../fixtures/examples/simple/simple.mustache | 5 - .../test/fixtures/examples/simple/simple.txt | 3 - .../fixtures/examples/unescaped/Unescaped.php | 15 - .../examples/unescaped/unescaped.mustache | 1 - .../fixtures/examples/unescaped/unescaped.txt | 1 - .../test/fixtures/examples/utf8/UTF8.php | 15 - .../test/fixtures/examples/utf8/utf8.mustache | 1 - .../test/fixtures/examples/utf8/utf8.txt | 1 - .../examples/utf8_unescaped/UTF8Unescaped.php | 15 - .../utf8_unescaped/utf8_unescaped.mustache | 1 - .../utf8_unescaped/utf8_unescaped.txt | 1 - .../examples/whitespace/Whitespace.php | 43 - .../whitespace/partials/alphabet.mustache | 1 - .../examples/whitespace/whitespace.mustache | 10 - .../examples/whitespace/whitespace.txt | 12 - .../mustache/test/fixtures/templates/alpha.ms | 1 - .../mustache/test/fixtures/templates/beta.ms | 1 - .../test/fixtures/templates/one.mustache | 1 - .../test/fixtures/templates/two.mustache | 1 - 187 files changed, 6 insertions(+), 11105 deletions(-) create mode 100644 webclient/.gitignore delete mode 100644 webclient/vendor/autoload.php delete mode 100644 webclient/vendor/composer/ClassLoader.php delete mode 100644 webclient/vendor/composer/LICENSE delete mode 100644 webclient/vendor/composer/autoload_classmap.php delete mode 100644 webclient/vendor/composer/autoload_namespaces.php delete mode 100644 webclient/vendor/composer/autoload_psr4.php delete mode 100644 webclient/vendor/composer/autoload_real.php delete mode 100644 webclient/vendor/composer/autoload_static.php delete mode 100644 webclient/vendor/composer/installed.json delete mode 100644 webclient/vendor/mustache/mustache/.gitignore delete mode 100644 webclient/vendor/mustache/mustache/.gitmodules delete mode 100644 webclient/vendor/mustache/mustache/.php_cs delete mode 100644 webclient/vendor/mustache/mustache/.styleci.yml delete mode 100644 webclient/vendor/mustache/mustache/.travis.yml delete mode 100644 webclient/vendor/mustache/mustache/CONTRIBUTING.md delete mode 100644 webclient/vendor/mustache/mustache/LICENSE delete mode 100644 webclient/vendor/mustache/mustache/README.md delete mode 100755 webclient/vendor/mustache/mustache/bin/build_bootstrap.php delete mode 100644 webclient/vendor/mustache/mustache/composer.json delete mode 100644 webclient/vendor/mustache/mustache/phpunit.xml.dist delete mode 100644 webclient/vendor/mustache/mustache/src/Mustache/Autoloader.php delete mode 100644 webclient/vendor/mustache/mustache/src/Mustache/Cache.php delete mode 100644 webclient/vendor/mustache/mustache/src/Mustache/Cache/AbstractCache.php delete mode 100644 webclient/vendor/mustache/mustache/src/Mustache/Cache/FilesystemCache.php delete mode 100644 webclient/vendor/mustache/mustache/src/Mustache/Cache/NoopCache.php delete mode 100644 webclient/vendor/mustache/mustache/src/Mustache/Compiler.php delete mode 100644 webclient/vendor/mustache/mustache/src/Mustache/Context.php delete mode 100644 webclient/vendor/mustache/mustache/src/Mustache/Engine.php delete mode 100644 webclient/vendor/mustache/mustache/src/Mustache/Exception.php delete mode 100644 webclient/vendor/mustache/mustache/src/Mustache/Exception/InvalidArgumentException.php delete mode 100644 webclient/vendor/mustache/mustache/src/Mustache/Exception/LogicException.php delete mode 100644 webclient/vendor/mustache/mustache/src/Mustache/Exception/RuntimeException.php delete mode 100644 webclient/vendor/mustache/mustache/src/Mustache/Exception/SyntaxException.php delete mode 100644 webclient/vendor/mustache/mustache/src/Mustache/Exception/UnknownFilterException.php delete mode 100644 webclient/vendor/mustache/mustache/src/Mustache/Exception/UnknownHelperException.php delete mode 100644 webclient/vendor/mustache/mustache/src/Mustache/Exception/UnknownTemplateException.php delete mode 100644 webclient/vendor/mustache/mustache/src/Mustache/HelperCollection.php delete mode 100644 webclient/vendor/mustache/mustache/src/Mustache/LambdaHelper.php delete mode 100644 webclient/vendor/mustache/mustache/src/Mustache/Loader.php delete mode 100644 webclient/vendor/mustache/mustache/src/Mustache/Loader/ArrayLoader.php delete mode 100644 webclient/vendor/mustache/mustache/src/Mustache/Loader/CascadingLoader.php delete mode 100644 webclient/vendor/mustache/mustache/src/Mustache/Loader/FilesystemLoader.php delete mode 100644 webclient/vendor/mustache/mustache/src/Mustache/Loader/InlineLoader.php delete mode 100644 webclient/vendor/mustache/mustache/src/Mustache/Loader/MutableLoader.php delete mode 100644 webclient/vendor/mustache/mustache/src/Mustache/Loader/StringLoader.php delete mode 100644 webclient/vendor/mustache/mustache/src/Mustache/Logger.php delete mode 100644 webclient/vendor/mustache/mustache/src/Mustache/Logger/AbstractLogger.php delete mode 100644 webclient/vendor/mustache/mustache/src/Mustache/Logger/StreamLogger.php delete mode 100644 webclient/vendor/mustache/mustache/src/Mustache/Parser.php delete mode 100644 webclient/vendor/mustache/mustache/src/Mustache/Template.php delete mode 100644 webclient/vendor/mustache/mustache/src/Mustache/Tokenizer.php delete mode 100644 webclient/vendor/mustache/mustache/test/Mustache/Test/AutoloaderTest.php delete mode 100644 webclient/vendor/mustache/mustache/test/Mustache/Test/Cache/AbstractCacheTest.php delete mode 100644 webclient/vendor/mustache/mustache/test/Mustache/Test/Cache/FilesystemCacheTest.php delete mode 100644 webclient/vendor/mustache/mustache/test/Mustache/Test/CompilerTest.php delete mode 100644 webclient/vendor/mustache/mustache/test/Mustache/Test/ContextTest.php delete mode 100644 webclient/vendor/mustache/mustache/test/Mustache/Test/EngineTest.php delete mode 100644 webclient/vendor/mustache/mustache/test/Mustache/Test/Exception/SyntaxExceptionTest.php delete mode 100644 webclient/vendor/mustache/mustache/test/Mustache/Test/Exception/UnknownFilterExceptionTest.php delete mode 100644 webclient/vendor/mustache/mustache/test/Mustache/Test/Exception/UnknownHelperExceptionTest.php delete mode 100644 webclient/vendor/mustache/mustache/test/Mustache/Test/Exception/UnknownTemplateExceptionTest.php delete mode 100644 webclient/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/ClosureQuirksTest.php delete mode 100644 webclient/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/EngineTest.php delete mode 100644 webclient/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/FiltersTest.php delete mode 100644 webclient/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/HigherOrderSectionsTest.php delete mode 100644 webclient/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/LambdaHelperTest.php delete mode 100644 webclient/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/MustacheSpecTest.php delete mode 100644 webclient/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/PartialLambdaIndentTest.php delete mode 100644 webclient/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/StrictCallablesTest.php delete mode 100644 webclient/vendor/mustache/mustache/test/Mustache/Test/Functional/CallTest.php delete mode 100644 webclient/vendor/mustache/mustache/test/Mustache/Test/Functional/ExamplesTest.php delete mode 100644 webclient/vendor/mustache/mustache/test/Mustache/Test/Functional/HigherOrderSectionsTest.php delete mode 100644 webclient/vendor/mustache/mustache/test/Mustache/Test/Functional/InheritanceTest.php delete mode 100644 webclient/vendor/mustache/mustache/test/Mustache/Test/Functional/MustacheInjectionTest.php delete mode 100644 webclient/vendor/mustache/mustache/test/Mustache/Test/Functional/MustacheSpecTest.php delete mode 100644 webclient/vendor/mustache/mustache/test/Mustache/Test/Functional/NestedPartialIndentTest.php delete mode 100644 webclient/vendor/mustache/mustache/test/Mustache/Test/Functional/ObjectSectionTest.php delete mode 100644 webclient/vendor/mustache/mustache/test/Mustache/Test/FunctionalTestCase.php delete mode 100644 webclient/vendor/mustache/mustache/test/Mustache/Test/HelperCollectionTest.php delete mode 100644 webclient/vendor/mustache/mustache/test/Mustache/Test/Loader/ArrayLoaderTest.php delete mode 100644 webclient/vendor/mustache/mustache/test/Mustache/Test/Loader/CascadingLoaderTest.php delete mode 100644 webclient/vendor/mustache/mustache/test/Mustache/Test/Loader/FilesystemLoaderTest.php delete mode 100644 webclient/vendor/mustache/mustache/test/Mustache/Test/Loader/InlineLoaderTest.php delete mode 100644 webclient/vendor/mustache/mustache/test/Mustache/Test/Loader/StringLoaderTest.php delete mode 100644 webclient/vendor/mustache/mustache/test/Mustache/Test/Logger/AbstractLoggerTest.php delete mode 100644 webclient/vendor/mustache/mustache/test/Mustache/Test/Logger/StreamLoggerTest.php delete mode 100644 webclient/vendor/mustache/mustache/test/Mustache/Test/ParserTest.php delete mode 100644 webclient/vendor/mustache/mustache/test/Mustache/Test/SpecTestCase.php delete mode 100644 webclient/vendor/mustache/mustache/test/Mustache/Test/TemplateTest.php delete mode 100644 webclient/vendor/mustache/mustache/test/Mustache/Test/TokenizerTest.php delete mode 100644 webclient/vendor/mustache/mustache/test/bootstrap.php delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/autoloader/Mustache/Bar.php delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/autoloader/Mustache/Foo.php delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/autoloader/NonMustacheClass.php delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/blocks/Blocks.php delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/blocks/blocks.mustache delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/blocks/blocks.txt delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/blocks/partials/parent.mustache delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/child_context/ChildContext.php delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/child_context/child_context.mustache delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/child_context/child_context.txt delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/comments/Comments.php delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/comments/comments.mustache delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/comments/comments.txt delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/complex/complex.mustache delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/complex/complex.php delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/complex/complex.txt delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/delimiters/Delimiters.php delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/delimiters/delimiters.mustache delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/delimiters/delimiters.txt delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/dot_notation/DotNotation.php delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/dot_notation/dot_notation.mustache delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/dot_notation/dot_notation.txt delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/double_section/DoubleSection.php delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/double_section/double_section.mustache delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/double_section/double_section.txt delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/escaped/Escaped.php delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/escaped/escaped.mustache delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/escaped/escaped.txt delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/filters/Filters.php delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/filters/filters.mustache delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/filters/filters.txt delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/grand_parent_context/GrandParentContext.php delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/grand_parent_context/grand_parent_context.mustache delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/grand_parent_context/grand_parent_context.txt delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/i18n/I18n.php delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/i18n/i18n.mustache delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/i18n/i18n.txt delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/implicit_iterator/ImplicitIterator.php delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/implicit_iterator/implicit_iterator.mustache delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/implicit_iterator/implicit_iterator.txt delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/inverted_double_section/InvertedDoubleSection.php delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/inverted_double_section/inverted_double_section.mustache delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/inverted_double_section/inverted_double_section.txt delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/inverted_section/InvertedSection.php delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/inverted_section/inverted_section.mustache delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/inverted_section/inverted_section.txt delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/nested_partials/NestedPartials.php delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/nested_partials/nested_partials.mustache delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/nested_partials/nested_partials.txt delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/nested_partials/partials/fourth.mustache delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/nested_partials/partials/second.mustache delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/nested_partials/partials/third.mustache delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/partials/Partials.php delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/partials/partials.mustache delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/partials/partials.txt delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/partials/partials/header.mustache delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/recursive_partials/RecursivePartials.php delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/recursive_partials/partials/child.mustache delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/recursive_partials/recursive_partials.mustache delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/recursive_partials/recursive_partials.txt delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/section_iterator_objects/SectionIteratorObjects.php delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/section_iterator_objects/section_iterator_objects.mustache delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/section_iterator_objects/section_iterator_objects.txt delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/section_magic_objects/SectionMagicObjects.php delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/section_magic_objects/section_magic_objects.mustache delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/section_magic_objects/section_magic_objects.txt delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/section_objects/SectionObjects.php delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/section_objects/section_objects.mustache delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/section_objects/section_objects.txt delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/sections/Sections.php delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/sections/sections.mustache delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/sections/sections.txt delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/sections_nested/SectionsNested.php delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/sections_nested/sections_nested.mustache delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/sections_nested/sections_nested.txt delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/simple/Simple.php delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/simple/simple.mustache delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/simple/simple.txt delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/unescaped/Unescaped.php delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/unescaped/unescaped.mustache delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/unescaped/unescaped.txt delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/utf8/UTF8.php delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/utf8/utf8.mustache delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/utf8/utf8.txt delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/utf8_unescaped/UTF8Unescaped.php delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/utf8_unescaped/utf8_unescaped.mustache delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/utf8_unescaped/utf8_unescaped.txt delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/whitespace/Whitespace.php delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/whitespace/partials/alphabet.mustache delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/whitespace/whitespace.mustache delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/examples/whitespace/whitespace.txt delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/templates/alpha.ms delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/templates/beta.ms delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/templates/one.mustache delete mode 100644 webclient/vendor/mustache/mustache/test/fixtures/templates/two.mustache diff --git a/webclient/.gitignore b/webclient/.gitignore new file mode 100644 index 00000000..c4222678 --- /dev/null +++ b/webclient/.gitignore @@ -0,0 +1,6 @@ +composer.phar +/vendor/ + +# Commit your application's lock file http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file +# You may choose to ignore a library lock file http://getcomposer.org/doc/02-libraries.md#lock-file +# composer.lock diff --git a/webclient/vendor/autoload.php b/webclient/vendor/autoload.php deleted file mode 100644 index 4a944cb4..00000000 --- a/webclient/vendor/autoload.php +++ /dev/null @@ -1,7 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Autoload; - -/** - * ClassLoader implements a PSR-0, PSR-4 and classmap class loader. - * - * $loader = new \Composer\Autoload\ClassLoader(); - * - * // register classes with namespaces - * $loader->add('Symfony\Component', __DIR__.'/component'); - * $loader->add('Symfony', __DIR__.'/framework'); - * - * // activate the autoloader - * $loader->register(); - * - * // to enable searching the include path (eg. for PEAR packages) - * $loader->setUseIncludePath(true); - * - * In this example, if you try to use a class in the Symfony\Component - * namespace or one of its children (Symfony\Component\Console for instance), - * the autoloader will first look for the class under the component/ - * directory, and it will then fallback to the framework/ directory if not - * found before giving up. - * - * This class is loosely based on the Symfony UniversalClassLoader. - * - * @author Fabien Potencier - * @author Jordi Boggiano - * @see http://www.php-fig.org/psr/psr-0/ - * @see http://www.php-fig.org/psr/psr-4/ - */ -class ClassLoader -{ - // PSR-4 - private $prefixLengthsPsr4 = array(); - private $prefixDirsPsr4 = array(); - private $fallbackDirsPsr4 = array(); - - // PSR-0 - private $prefixesPsr0 = array(); - private $fallbackDirsPsr0 = array(); - - private $useIncludePath = false; - private $classMap = array(); - private $classMapAuthoritative = false; - private $missingClasses = array(); - - public function getPrefixes() - { - if (!empty($this->prefixesPsr0)) { - return call_user_func_array('array_merge', $this->prefixesPsr0); - } - - return array(); - } - - public function getPrefixesPsr4() - { - return $this->prefixDirsPsr4; - } - - public function getFallbackDirs() - { - return $this->fallbackDirsPsr0; - } - - public function getFallbackDirsPsr4() - { - return $this->fallbackDirsPsr4; - } - - public function getClassMap() - { - return $this->classMap; - } - - /** - * @param array $classMap Class to filename map - */ - public function addClassMap(array $classMap) - { - if ($this->classMap) { - $this->classMap = array_merge($this->classMap, $classMap); - } else { - $this->classMap = $classMap; - } - } - - /** - * Registers a set of PSR-0 directories for a given prefix, either - * appending or prepending to the ones previously set for this prefix. - * - * @param string $prefix The prefix - * @param array|string $paths The PSR-0 root directories - * @param bool $prepend Whether to prepend the directories - */ - public function add($prefix, $paths, $prepend = false) - { - if (!$prefix) { - if ($prepend) { - $this->fallbackDirsPsr0 = array_merge( - (array) $paths, - $this->fallbackDirsPsr0 - ); - } else { - $this->fallbackDirsPsr0 = array_merge( - $this->fallbackDirsPsr0, - (array) $paths - ); - } - - return; - } - - $first = $prefix[0]; - if (!isset($this->prefixesPsr0[$first][$prefix])) { - $this->prefixesPsr0[$first][$prefix] = (array) $paths; - - return; - } - if ($prepend) { - $this->prefixesPsr0[$first][$prefix] = array_merge( - (array) $paths, - $this->prefixesPsr0[$first][$prefix] - ); - } else { - $this->prefixesPsr0[$first][$prefix] = array_merge( - $this->prefixesPsr0[$first][$prefix], - (array) $paths - ); - } - } - - /** - * Registers a set of PSR-4 directories for a given namespace, either - * appending or prepending to the ones previously set for this namespace. - * - * @param string $prefix The prefix/namespace, with trailing '\\' - * @param array|string $paths The PSR-4 base directories - * @param bool $prepend Whether to prepend the directories - * - * @throws \InvalidArgumentException - */ - public function addPsr4($prefix, $paths, $prepend = false) - { - if (!$prefix) { - // Register directories for the root namespace. - if ($prepend) { - $this->fallbackDirsPsr4 = array_merge( - (array) $paths, - $this->fallbackDirsPsr4 - ); - } else { - $this->fallbackDirsPsr4 = array_merge( - $this->fallbackDirsPsr4, - (array) $paths - ); - } - } elseif (!isset($this->prefixDirsPsr4[$prefix])) { - // Register directories for a new namespace. - $length = strlen($prefix); - if ('\\' !== $prefix[$length - 1]) { - throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); - } - $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; - $this->prefixDirsPsr4[$prefix] = (array) $paths; - } elseif ($prepend) { - // Prepend directories for an already registered namespace. - $this->prefixDirsPsr4[$prefix] = array_merge( - (array) $paths, - $this->prefixDirsPsr4[$prefix] - ); - } else { - // Append directories for an already registered namespace. - $this->prefixDirsPsr4[$prefix] = array_merge( - $this->prefixDirsPsr4[$prefix], - (array) $paths - ); - } - } - - /** - * Registers a set of PSR-0 directories for a given prefix, - * replacing any others previously set for this prefix. - * - * @param string $prefix The prefix - * @param array|string $paths The PSR-0 base directories - */ - public function set($prefix, $paths) - { - if (!$prefix) { - $this->fallbackDirsPsr0 = (array) $paths; - } else { - $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths; - } - } - - /** - * Registers a set of PSR-4 directories for a given namespace, - * replacing any others previously set for this namespace. - * - * @param string $prefix The prefix/namespace, with trailing '\\' - * @param array|string $paths The PSR-4 base directories - * - * @throws \InvalidArgumentException - */ - public function setPsr4($prefix, $paths) - { - if (!$prefix) { - $this->fallbackDirsPsr4 = (array) $paths; - } else { - $length = strlen($prefix); - if ('\\' !== $prefix[$length - 1]) { - throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); - } - $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; - $this->prefixDirsPsr4[$prefix] = (array) $paths; - } - } - - /** - * Turns on searching the include path for class files. - * - * @param bool $useIncludePath - */ - public function setUseIncludePath($useIncludePath) - { - $this->useIncludePath = $useIncludePath; - } - - /** - * Can be used to check if the autoloader uses the include path to check - * for classes. - * - * @return bool - */ - public function getUseIncludePath() - { - return $this->useIncludePath; - } - - /** - * Turns off searching the prefix and fallback directories for classes - * that have not been registered with the class map. - * - * @param bool $classMapAuthoritative - */ - public function setClassMapAuthoritative($classMapAuthoritative) - { - $this->classMapAuthoritative = $classMapAuthoritative; - } - - /** - * Should class lookup fail if not found in the current class map? - * - * @return bool - */ - public function isClassMapAuthoritative() - { - return $this->classMapAuthoritative; - } - - /** - * Registers this instance as an autoloader. - * - * @param bool $prepend Whether to prepend the autoloader or not - */ - public function register($prepend = false) - { - spl_autoload_register(array($this, 'loadClass'), true, $prepend); - } - - /** - * Unregisters this instance as an autoloader. - */ - public function unregister() - { - spl_autoload_unregister(array($this, 'loadClass')); - } - - /** - * Loads the given class or interface. - * - * @param string $class The name of the class - * @return bool|null True if loaded, null otherwise - */ - public function loadClass($class) - { - if ($file = $this->findFile($class)) { - includeFile($file); - - return true; - } - } - - /** - * Finds the path to the file where the class is defined. - * - * @param string $class The name of the class - * - * @return string|false The path if found, false otherwise - */ - public function findFile($class) - { - // work around for PHP 5.3.0 - 5.3.2 https://bugs.php.net/50731 - if ('\\' == $class[0]) { - $class = substr($class, 1); - } - - // class map lookup - if (isset($this->classMap[$class])) { - return $this->classMap[$class]; - } - if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) { - return false; - } - - $file = $this->findFileWithExtension($class, '.php'); - - // Search for Hack files if we are running on HHVM - if (false === $file && defined('HHVM_VERSION')) { - $file = $this->findFileWithExtension($class, '.hh'); - } - - if (false === $file) { - // Remember that this class does not exist. - $this->missingClasses[$class] = true; - } - - return $file; - } - - private function findFileWithExtension($class, $ext) - { - // PSR-4 lookup - $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext; - - $first = $class[0]; - if (isset($this->prefixLengthsPsr4[$first])) { - foreach ($this->prefixLengthsPsr4[$first] as $prefix => $length) { - if (0 === strpos($class, $prefix)) { - foreach ($this->prefixDirsPsr4[$prefix] as $dir) { - if (file_exists($file = $dir . DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $length))) { - return $file; - } - } - } - } - } - - // PSR-4 fallback dirs - foreach ($this->fallbackDirsPsr4 as $dir) { - if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) { - return $file; - } - } - - // PSR-0 lookup - if (false !== $pos = strrpos($class, '\\')) { - // namespaced class name - $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1) - . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR); - } else { - // PEAR-like class name - $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext; - } - - if (isset($this->prefixesPsr0[$first])) { - foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) { - if (0 === strpos($class, $prefix)) { - foreach ($dirs as $dir) { - if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { - return $file; - } - } - } - } - } - - // PSR-0 fallback dirs - foreach ($this->fallbackDirsPsr0 as $dir) { - if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { - return $file; - } - } - - // PSR-0 include paths. - if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) { - return $file; - } - - return false; - } -} - -/** - * Scope isolated include. - * - * Prevents access to $this/self from included files. - */ -function includeFile($file) -{ - include $file; -} diff --git a/webclient/vendor/composer/LICENSE b/webclient/vendor/composer/LICENSE deleted file mode 100644 index 1a281248..00000000 --- a/webclient/vendor/composer/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ - -Copyright (c) 2016 Nils Adermann, Jordi Boggiano - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is furnished -to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - diff --git a/webclient/vendor/composer/autoload_classmap.php b/webclient/vendor/composer/autoload_classmap.php deleted file mode 100644 index 7a91153b..00000000 --- a/webclient/vendor/composer/autoload_classmap.php +++ /dev/null @@ -1,9 +0,0 @@ - array($vendorDir . '/mustache/mustache/src'), -); diff --git a/webclient/vendor/composer/autoload_psr4.php b/webclient/vendor/composer/autoload_psr4.php deleted file mode 100644 index b265c64a..00000000 --- a/webclient/vendor/composer/autoload_psr4.php +++ /dev/null @@ -1,9 +0,0 @@ -= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded()); - if ($useStaticLoader) { - require_once __DIR__ . '/autoload_static.php'; - - call_user_func(\Composer\Autoload\ComposerStaticInitb86e655a208b7972d894588679fccc37::getInitializer($loader)); - } else { - $map = require __DIR__ . '/autoload_namespaces.php'; - foreach ($map as $namespace => $path) { - $loader->set($namespace, $path); - } - - $map = require __DIR__ . '/autoload_psr4.php'; - foreach ($map as $namespace => $path) { - $loader->setPsr4($namespace, $path); - } - - $classMap = require __DIR__ . '/autoload_classmap.php'; - if ($classMap) { - $loader->addClassMap($classMap); - } - } - - $loader->register(true); - - return $loader; - } -} diff --git a/webclient/vendor/composer/autoload_static.php b/webclient/vendor/composer/autoload_static.php deleted file mode 100644 index da8f6a48..00000000 --- a/webclient/vendor/composer/autoload_static.php +++ /dev/null @@ -1,26 +0,0 @@ - - array ( - 'Mustache' => - array ( - 0 => __DIR__ . '/..' . '/mustache/mustache/src', - ), - ), - ); - - public static function getInitializer(ClassLoader $loader) - { - return \Closure::bind(function () use ($loader) { - $loader->prefixesPsr0 = ComposerStaticInitb86e655a208b7972d894588679fccc37::$prefixesPsr0; - - }, null, ClassLoader::class); - } -} diff --git a/webclient/vendor/composer/installed.json b/webclient/vendor/composer/installed.json deleted file mode 100644 index 6eec1278..00000000 --- a/webclient/vendor/composer/installed.json +++ /dev/null @@ -1,50 +0,0 @@ -[ - { - "name": "mustache/mustache", - "version": "v2.11.1", - "version_normalized": "2.11.1.0", - "source": { - "type": "git", - "url": "https://github.com/bobthecow/mustache.php.git", - "reference": "a3f6d55996dd28b58f3a909d474189a3c1aa693f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/bobthecow/mustache.php/zipball/a3f6d55996dd28b58f3a909d474189a3c1aa693f", - "reference": "a3f6d55996dd28b58f3a909d474189a3c1aa693f", - "shasum": "" - }, - "require": { - "php": ">=5.2.4" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "~1.11", - "phpunit/phpunit": "~3.7|~4.0|~5.0" - }, - "time": "2016-07-31 06:18:27", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-0": { - "Mustache": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Justin Hileman", - "email": "justin@justinhileman.info", - "homepage": "http://justinhileman.com" - } - ], - "description": "A Mustache implementation in PHP.", - "homepage": "https://github.com/bobthecow/mustache.php", - "keywords": [ - "mustache", - "templating" - ] - } -] diff --git a/webclient/vendor/mustache/mustache/.gitignore b/webclient/vendor/mustache/mustache/.gitignore deleted file mode 100644 index 3861f002..00000000 --- a/webclient/vendor/mustache/mustache/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -.php_cs.cache -composer.lock -mustache.php -vendor diff --git a/webclient/vendor/mustache/mustache/.gitmodules b/webclient/vendor/mustache/mustache/.gitmodules deleted file mode 100644 index 042ea4d3..00000000 --- a/webclient/vendor/mustache/mustache/.gitmodules +++ /dev/null @@ -1,6 +0,0 @@ -[submodule "vendor/spec"] - path = vendor/spec - url = https://github.com/mustache/spec.git -[submodule "vendor/yaml"] - path = vendor/yaml - url = https://github.com/fabpot/yaml.git diff --git a/webclient/vendor/mustache/mustache/.php_cs b/webclient/vendor/mustache/mustache/.php_cs deleted file mode 100644 index d924712b..00000000 --- a/webclient/vendor/mustache/mustache/.php_cs +++ /dev/null @@ -1,26 +0,0 @@ -level(Symfony\CS\FixerInterface::SYMFONY_LEVEL) - ->fixers(array( - '-concat_without_spaces', - '-pre_increment', - '-unalign_double_arrow', - '-unalign_equals', - 'align_double_arrow', - 'concat_with_spaces', - 'ordered_use', - 'strict', - )) - ->setUsingLinter(false); - -$finder = $config->getFinder() - ->in('bin') - ->in('src') - ->in('test'); - -return $config; diff --git a/webclient/vendor/mustache/mustache/.styleci.yml b/webclient/vendor/mustache/mustache/.styleci.yml deleted file mode 100644 index 1aebcc37..00000000 --- a/webclient/vendor/mustache/mustache/.styleci.yml +++ /dev/null @@ -1,13 +0,0 @@ -preset: symfony - -enabled: - - align_double_arrow - - concat_with_spaces - - ordered_use - - strict - -disabled: - - concat_without_spaces - - pre_increment - - unalign_double_arrow - - unalign_equals diff --git a/webclient/vendor/mustache/mustache/.travis.yml b/webclient/vendor/mustache/mustache/.travis.yml deleted file mode 100644 index e68b99c6..00000000 --- a/webclient/vendor/mustache/mustache/.travis.yml +++ /dev/null @@ -1,15 +0,0 @@ -language: php - -php: - - 5.2 - - 5.3 - - 5.4 - - 5.5 - - 5.6 - - 7.0 - - hhvm - -script: - - phpunit - -sudo: false diff --git a/webclient/vendor/mustache/mustache/CONTRIBUTING.md b/webclient/vendor/mustache/mustache/CONTRIBUTING.md deleted file mode 100644 index c0b323de..00000000 --- a/webclient/vendor/mustache/mustache/CONTRIBUTING.md +++ /dev/null @@ -1,35 +0,0 @@ -# Contributions welcome! - - -### Here's a quick guide: - - 1. [Fork the repo on GitHub](https://github.com/bobthecow/mustache.php). - - 2. Update submodules: `git submodule update --init` - - 3. Run the test suite. We only take pull requests with passing tests, and it's great to know that you have a clean slate. Make sure you have PHPUnit 3.5+, then run `phpunit` from the project directory. - - 4. Add tests for your change. Only refactoring and documentation changes require no new tests. If you are adding functionality or fixing a bug, add a test! - - 5. Make the tests pass. - - 6. Push your fork to GitHub and submit a pull request against the `dev` branch. - - -### You can do some things to increase the chance that your pull request is accepted the first time: - - * Submit one pull request per fix or feature. - * To help with that, do all your work in a feature branch (e.g. `feature/my-alsome-feature`). - * Follow the conventions you see used in the project. - * Use `phpcs --standard=PSR2` to check your changes against the coding standard. - * Write tests that fail without your code, and pass with it. - * Don't bump version numbers. Those will be updated — per [semver](http://semver.org) — once your change is merged into `master`. - * Update any documentation: docblocks, README, examples, etc. - * ... Don't update the wiki until your change is merged and released, but make a note in your pull request so we don't forget. - - -### Mustache.php follows the PSR-* coding standards: - - * [PSR-0: Class and file naming conventions](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md) - * [PSR-1: Basic coding standard](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-1-basic-coding-standard.md) - * [PSR-2: Coding style guide](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md) diff --git a/webclient/vendor/mustache/mustache/LICENSE b/webclient/vendor/mustache/mustache/LICENSE deleted file mode 100644 index e0aecc94..00000000 --- a/webclient/vendor/mustache/mustache/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2010-2015 Justin Hileman - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE -OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/webclient/vendor/mustache/mustache/README.md b/webclient/vendor/mustache/mustache/README.md deleted file mode 100644 index a596ace8..00000000 --- a/webclient/vendor/mustache/mustache/README.md +++ /dev/null @@ -1,72 +0,0 @@ -Mustache.php -============ - -A [Mustache](http://mustache.github.com/) implementation in PHP. - -[![Package version](http://img.shields.io/packagist/v/mustache/mustache.svg?style=flat-square)](https://packagist.org/packages/mustache/mustache) -[![Build status](http://img.shields.io/travis/bobthecow/mustache.php/dev.svg?style=flat-square)](http://travis-ci.org/bobthecow/mustache.php) -[![StyleCI](https://styleci.io/repos/569670/shield)](https://styleci.io/repos/569670) -[![Monthly downloads](http://img.shields.io/packagist/dm/mustache/mustache.svg?style=flat-square)](https://packagist.org/packages/mustache/mustache) - - -Usage ------ - -A quick example: - -```php -render('Hello {{planet}}', array('planet' => 'World!')); // "Hello World!" -``` - - -And a more in-depth example -- this is the canonical Mustache template: - -```html+jinja -Hello {{name}} -You have just won {{value}} dollars! -{{#in_ca}} -Well, {{taxed_value}} dollars, after taxes. -{{/in_ca}} -``` - - -Create a view "context" object -- which could also be an associative array, but those don't do functions quite as well: - -```php -value - ($this->value * 0.4); - } - - public $in_ca = true; -} -``` - - -And render it: - -```php -render($template, $chris); -``` - - -And That's Not All! -------------------- - -Read [the Mustache.php documentation](https://github.com/bobthecow/mustache.php/wiki/Home) for more information. - - -See Also --------- - - * [Readme for the Ruby Mustache implementation](http://github.com/defunkt/mustache/blob/master/README.md). - * [mustache(5)](http://mustache.github.com/mustache.5.html) man page. diff --git a/webclient/vendor/mustache/mustache/bin/build_bootstrap.php b/webclient/vendor/mustache/mustache/bin/build_bootstrap.php deleted file mode 100755 index cc23b2bd..00000000 --- a/webclient/vendor/mustache/mustache/bin/build_bootstrap.php +++ /dev/null @@ -1,178 +0,0 @@ -#!/usr/bin/env php - - */ -class SymfonyClassCollectionLoader -{ - private static $loaded; - - const HEADER = <<<'EOS' -\s*$/'), '', file_get_contents($r->getFileName())); - } - - $cache = $cacheDir . '/' . $name . $extension; - $header = sprintf(self::HEADER, strftime('%Y')); - self::writeCacheFile($cache, $header . substr(self::stripComments('=5.2.4" - }, - "require-dev": { - "phpunit/phpunit": "~3.7|~4.0|~5.0", - "friendsofphp/php-cs-fixer": "~1.11" - }, - "autoload": { - "psr-0": { "Mustache": "src/" } - } -} diff --git a/webclient/vendor/mustache/mustache/phpunit.xml.dist b/webclient/vendor/mustache/mustache/phpunit.xml.dist deleted file mode 100644 index 3c620b6f..00000000 --- a/webclient/vendor/mustache/mustache/phpunit.xml.dist +++ /dev/null @@ -1,17 +0,0 @@ - - - - ./test - ./test/Mustache/Test/FiveThree - - - - ./test/Mustache/Test/FiveThree - - - - - ./src/Mustache - - - \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/src/Mustache/Autoloader.php b/webclient/vendor/mustache/mustache/src/Mustache/Autoloader.php deleted file mode 100644 index b16ac142..00000000 --- a/webclient/vendor/mustache/mustache/src/Mustache/Autoloader.php +++ /dev/null @@ -1,74 +0,0 @@ -baseDir = $realDir; - } else { - $this->baseDir = $baseDir; - } - } - - /** - * Register a new instance as an SPL autoloader. - * - * @param string $baseDir Mustache library base directory (default: dirname(__FILE__).'/..') - * - * @return Mustache_Autoloader Registered Autoloader instance - */ - public static function register($baseDir = null) - { - $loader = new self($baseDir); - spl_autoload_register(array($loader, 'autoload')); - - return $loader; - } - - /** - * Autoload Mustache classes. - * - * @param string $class - */ - public function autoload($class) - { - if ($class[0] === '\\') { - $class = substr($class, 1); - } - - if (strpos($class, 'Mustache') !== 0) { - return; - } - - $file = sprintf('%s/%s.php', $this->baseDir, str_replace('_', '/', $class)); - if (is_file($file)) { - require $file; - } - } -} diff --git a/webclient/vendor/mustache/mustache/src/Mustache/Cache.php b/webclient/vendor/mustache/mustache/src/Mustache/Cache.php deleted file mode 100644 index 7b465abd..00000000 --- a/webclient/vendor/mustache/mustache/src/Mustache/Cache.php +++ /dev/null @@ -1,36 +0,0 @@ -logger; - } - - /** - * Set a logger instance. - * - * @param Mustache_Logger|Psr\Log\LoggerInterface $logger - */ - public function setLogger($logger = null) - { - if ($logger !== null && !($logger instanceof Mustache_Logger || is_a($logger, 'Psr\\Log\\LoggerInterface'))) { - throw new Mustache_Exception_InvalidArgumentException('Expected an instance of Mustache_Logger or Psr\\Log\\LoggerInterface.'); - } - - $this->logger = $logger; - } - - /** - * Add a log record if logging is enabled. - * - * @param int $level The logging level - * @param string $message The log message - * @param array $context The log context - */ - protected function log($level, $message, array $context = array()) - { - if (isset($this->logger)) { - $this->logger->log($level, $message, $context); - } - } -} diff --git a/webclient/vendor/mustache/mustache/src/Mustache/Cache/FilesystemCache.php b/webclient/vendor/mustache/mustache/src/Mustache/Cache/FilesystemCache.php deleted file mode 100644 index 0dbe8f9d..00000000 --- a/webclient/vendor/mustache/mustache/src/Mustache/Cache/FilesystemCache.php +++ /dev/null @@ -1,155 +0,0 @@ -cache($className, $compiledSource); - * - * The FilesystemCache benefits from any opcode caching that may be setup in your environment. So do that, k? - */ -class Mustache_Cache_FilesystemCache extends Mustache_Cache_AbstractCache -{ - private $baseDir; - private $fileMode; - - /** - * Filesystem cache constructor. - * - * @param string $baseDir Directory for compiled templates - * @param int $fileMode Override default permissions for cache files. Defaults to using the system-defined umask - */ - public function __construct($baseDir, $fileMode = null) - { - $this->baseDir = $baseDir; - $this->fileMode = $fileMode; - } - - /** - * Load the class from cache using `require_once`. - * - * @param string $key - * - * @return bool - */ - public function load($key) - { - $fileName = $this->getCacheFilename($key); - if (!is_file($fileName)) { - return false; - } - - require_once $fileName; - - return true; - } - - /** - * Cache and load the compiled class. - * - * @param string $key - * @param string $value - */ - public function cache($key, $value) - { - $fileName = $this->getCacheFilename($key); - - $this->log( - Mustache_Logger::DEBUG, - 'Writing to template cache: "{fileName}"', - array('fileName' => $fileName) - ); - - $this->writeFile($fileName, $value); - $this->load($key); - } - - /** - * Build the cache filename. - * Subclasses should override for custom cache directory structures. - * - * @param string $name - * - * @return string - */ - protected function getCacheFilename($name) - { - return sprintf('%s/%s.php', $this->baseDir, $name); - } - - /** - * Create cache directory. - * - * @throws Mustache_Exception_RuntimeException If unable to create directory - * - * @param string $fileName - * - * @return string - */ - private function buildDirectoryForFilename($fileName) - { - $dirName = dirname($fileName); - if (!is_dir($dirName)) { - $this->log( - Mustache_Logger::INFO, - 'Creating Mustache template cache directory: "{dirName}"', - array('dirName' => $dirName) - ); - - @mkdir($dirName, 0777, true); - if (!is_dir($dirName)) { - throw new Mustache_Exception_RuntimeException(sprintf('Failed to create cache directory "%s".', $dirName)); - } - } - - return $dirName; - } - - /** - * Write cache file. - * - * @throws Mustache_Exception_RuntimeException If unable to write file - * - * @param string $fileName - * @param string $value - */ - private function writeFile($fileName, $value) - { - $dirName = $this->buildDirectoryForFilename($fileName); - - $this->log( - Mustache_Logger::DEBUG, - 'Caching compiled template to "{fileName}"', - array('fileName' => $fileName) - ); - - $tempFile = tempnam($dirName, basename($fileName)); - if (false !== @file_put_contents($tempFile, $value)) { - if (@rename($tempFile, $fileName)) { - $mode = isset($this->fileMode) ? $this->fileMode : (0666 & ~umask()); - @chmod($fileName, $mode); - - return; - } - - $this->log( - Mustache_Logger::ERROR, - 'Unable to rename Mustache temp cache file: "{tempName}" -> "{fileName}"', - array('tempName' => $tempFile, 'fileName' => $fileName) - ); - } - - throw new Mustache_Exception_RuntimeException(sprintf('Failed to write cache file "%s".', $fileName)); - } -} diff --git a/webclient/vendor/mustache/mustache/src/Mustache/Cache/NoopCache.php b/webclient/vendor/mustache/mustache/src/Mustache/Cache/NoopCache.php deleted file mode 100644 index ca0007de..00000000 --- a/webclient/vendor/mustache/mustache/src/Mustache/Cache/NoopCache.php +++ /dev/null @@ -1,47 +0,0 @@ -log( - Mustache_Logger::WARNING, - 'Template cache disabled, evaluating "{className}" class at runtime', - array('className' => $key) - ); - eval('?>' . $value); - } -} diff --git a/webclient/vendor/mustache/mustache/src/Mustache/Compiler.php b/webclient/vendor/mustache/mustache/src/Mustache/Compiler.php deleted file mode 100644 index 2a831d6e..00000000 --- a/webclient/vendor/mustache/mustache/src/Mustache/Compiler.php +++ /dev/null @@ -1,687 +0,0 @@ -pragmas = $this->defaultPragmas; - $this->sections = array(); - $this->blocks = array(); - $this->source = $source; - $this->indentNextLine = true; - $this->customEscape = $customEscape; - $this->entityFlags = $entityFlags; - $this->charset = $charset; - $this->strictCallables = $strictCallables; - - return $this->writeCode($tree, $name); - } - - /** - * Enable pragmas across all templates, regardless of the presence of pragma - * tags in the individual templates. - * - * @internal Users should set global pragmas in Mustache_Engine, not here :) - * - * @param string[] $pragmas - */ - public function setPragmas(array $pragmas) - { - $this->pragmas = array(); - foreach ($pragmas as $pragma) { - $this->pragmas[$pragma] = true; - } - $this->defaultPragmas = $this->pragmas; - } - - /** - * Helper function for walking the Mustache token parse tree. - * - * @throws Mustache_Exception_SyntaxException upon encountering unknown token types - * - * @param array $tree Parse tree of Mustache tokens - * @param int $level (default: 0) - * - * @return string Generated PHP source code - */ - private function walk(array $tree, $level = 0) - { - $code = ''; - $level++; - foreach ($tree as $node) { - switch ($node[Mustache_Tokenizer::TYPE]) { - case Mustache_Tokenizer::T_PRAGMA: - $this->pragmas[$node[Mustache_Tokenizer::NAME]] = true; - break; - - case Mustache_Tokenizer::T_SECTION: - $code .= $this->section( - $node[Mustache_Tokenizer::NODES], - $node[Mustache_Tokenizer::NAME], - isset($node[Mustache_Tokenizer::FILTERS]) ? $node[Mustache_Tokenizer::FILTERS] : array(), - $node[Mustache_Tokenizer::INDEX], - $node[Mustache_Tokenizer::END], - $node[Mustache_Tokenizer::OTAG], - $node[Mustache_Tokenizer::CTAG], - $level - ); - break; - - case Mustache_Tokenizer::T_INVERTED: - $code .= $this->invertedSection( - $node[Mustache_Tokenizer::NODES], - $node[Mustache_Tokenizer::NAME], - isset($node[Mustache_Tokenizer::FILTERS]) ? $node[Mustache_Tokenizer::FILTERS] : array(), - $level - ); - break; - - case Mustache_Tokenizer::T_PARTIAL: - $code .= $this->partial( - $node[Mustache_Tokenizer::NAME], - isset($node[Mustache_Tokenizer::INDENT]) ? $node[Mustache_Tokenizer::INDENT] : '', - $level - ); - break; - - case Mustache_Tokenizer::T_PARENT: - $code .= $this->parent( - $node[Mustache_Tokenizer::NAME], - isset($node[Mustache_Tokenizer::INDENT]) ? $node[Mustache_Tokenizer::INDENT] : '', - $node[Mustache_Tokenizer::NODES], - $level - ); - break; - - case Mustache_Tokenizer::T_BLOCK_ARG: - $code .= $this->blockArg( - $node[Mustache_Tokenizer::NODES], - $node[Mustache_Tokenizer::NAME], - $node[Mustache_Tokenizer::INDEX], - $node[Mustache_Tokenizer::END], - $node[Mustache_Tokenizer::OTAG], - $node[Mustache_Tokenizer::CTAG], - $level - ); - break; - - case Mustache_Tokenizer::T_BLOCK_VAR: - $code .= $this->blockVar( - $node[Mustache_Tokenizer::NODES], - $node[Mustache_Tokenizer::NAME], - $node[Mustache_Tokenizer::INDEX], - $node[Mustache_Tokenizer::END], - $node[Mustache_Tokenizer::OTAG], - $node[Mustache_Tokenizer::CTAG], - $level - ); - break; - - case Mustache_Tokenizer::T_COMMENT: - break; - - case Mustache_Tokenizer::T_ESCAPED: - case Mustache_Tokenizer::T_UNESCAPED: - case Mustache_Tokenizer::T_UNESCAPED_2: - $code .= $this->variable( - $node[Mustache_Tokenizer::NAME], - isset($node[Mustache_Tokenizer::FILTERS]) ? $node[Mustache_Tokenizer::FILTERS] : array(), - $node[Mustache_Tokenizer::TYPE] === Mustache_Tokenizer::T_ESCAPED, - $level - ); - break; - - case Mustache_Tokenizer::T_TEXT: - $code .= $this->text($node[Mustache_Tokenizer::VALUE], $level); - break; - - default: - throw new Mustache_Exception_SyntaxException(sprintf('Unknown token type: %s', $node[Mustache_Tokenizer::TYPE]), $node); - } - } - - return $code; - } - - const KLASS = 'lambdaHelper = new Mustache_LambdaHelper($this->mustache, $context); - $buffer = \'\'; - $blocksContext = array(); - %s - - return $buffer; - } - %s - %s - }'; - - const KLASS_NO_LAMBDAS = 'walk($tree); - $sections = implode("\n", $this->sections); - $blocks = implode("\n", $this->blocks); - $klass = empty($this->sections) && empty($this->blocks) ? self::KLASS_NO_LAMBDAS : self::KLASS; - - $callable = $this->strictCallables ? $this->prepare(self::STRICT_CALLABLE) : ''; - - return sprintf($this->prepare($klass, 0, false, true), $name, $callable, $code, $sections, $blocks); - } - - const BLOCK_VAR = ' - $blockFunction = $context->findInBlock(%s); - if (is_callable($blockFunction)) { - $buffer .= call_user_func($blockFunction, $context); - } else {%s - } - '; - - /** - * Generate Mustache Template inheritance block variable PHP source. - * - * @param array $nodes Array of child tokens - * @param string $id Section name - * @param int $start Section start offset - * @param int $end Section end offset - * @param string $otag Current Mustache opening tag - * @param string $ctag Current Mustache closing tag - * @param int $level - * - * @return string Generated PHP source code - */ - private function blockVar($nodes, $id, $start, $end, $otag, $ctag, $level) - { - $id = var_export($id, true); - - return sprintf($this->prepare(self::BLOCK_VAR, $level), $id, $this->walk($nodes, $level)); - } - - const BLOCK_ARG = '$blocksContext[%s] = array($this, \'block%s\');'; - - /** - * Generate Mustache Template inheritance block argument PHP source. - * - * @param array $nodes Array of child tokens - * @param string $id Section name - * @param int $start Section start offset - * @param int $end Section end offset - * @param string $otag Current Mustache opening tag - * @param string $ctag Current Mustache closing tag - * @param int $level - * - * @return string Generated PHP source code - */ - private function blockArg($nodes, $id, $start, $end, $otag, $ctag, $level) - { - $key = $this->block($nodes); - $keystr = var_export($key, true); - $id = var_export($id, true); - - return sprintf($this->prepare(self::BLOCK_ARG, 1), $id, $key); - } - - const BLOCK_FUNCTION = ' - public function block%s($context) - { - $indent = $buffer = \'\'; - $blocksContext = array();%s - - return $buffer; - } - '; - - /** - * Generate Mustache Template inheritance block function PHP source. - * - * @param array $nodes Array of child tokens - * - * @return string key of new block function - */ - private function block($nodes) - { - $code = $this->walk($nodes, 0); - $key = ucfirst(md5($code)); - - if (!isset($this->blocks[$key])) { - $this->blocks[$key] = sprintf($this->prepare(self::BLOCK_FUNCTION, 0), $key, $code); - } - - return $key; - } - - const SECTION_CALL = ' - // %s section - $value = $context->%s(%s);%s - $buffer .= $this->section%s($context, $indent, $value); - '; - - const SECTION = ' - private function section%s(Mustache_Context $context, $indent, $value) - { - $buffer = \'\'; - $blocksContext = array(); - - if (%s) { - $source = %s; - $result = call_user_func($value, $source, %s); - if (strpos($result, \'{{\') === false) { - $buffer .= $result; - } else { - $buffer .= $this->mustache - ->loadLambda((string) $result%s) - ->renderInternal($context); - } - } elseif (!empty($value)) { - $values = $this->isIterable($value) ? $value : array($value); - foreach ($values as $value) { - $context->push($value); - %s - $context->pop(); - } - } - - return $buffer; - } - '; - - /** - * Generate Mustache Template section PHP source. - * - * @param array $nodes Array of child tokens - * @param string $id Section name - * @param string[] $filters Array of filters - * @param int $start Section start offset - * @param int $end Section end offset - * @param string $otag Current Mustache opening tag - * @param string $ctag Current Mustache closing tag - * @param int $level - * @param bool $arg (default: false) - * - * @return string Generated section PHP source code - */ - private function section($nodes, $id, $filters, $start, $end, $otag, $ctag, $level, $arg = false) - { - $source = var_export(substr($this->source, $start, $end - $start), true); - $callable = $this->getCallable(); - - if ($otag !== '{{' || $ctag !== '}}') { - $delimTag = var_export(sprintf('{{= %s %s =}}', $otag, $ctag), true); - $helper = sprintf('$this->lambdaHelper->withDelimiters(%s)', $delimTag); - $delims = ', ' . $delimTag; - } else { - $helper = '$this->lambdaHelper'; - $delims = ''; - } - - $key = ucfirst(md5($delims . "\n" . $source)); - - if (!isset($this->sections[$key])) { - $this->sections[$key] = sprintf($this->prepare(self::SECTION), $key, $callable, $source, $helper, $delims, $this->walk($nodes, 2)); - } - - if ($arg === true) { - return $key; - } else { - $method = $this->getFindMethod($id); - $id = var_export($id, true); - $filters = $this->getFilters($filters, $level); - - return sprintf($this->prepare(self::SECTION_CALL, $level), $id, $method, $id, $filters, $key); - } - } - - const INVERTED_SECTION = ' - // %s inverted section - $value = $context->%s(%s);%s - if (empty($value)) { - %s - } - '; - - /** - * Generate Mustache Template inverted section PHP source. - * - * @param array $nodes Array of child tokens - * @param string $id Section name - * @param string[] $filters Array of filters - * @param int $level - * - * @return string Generated inverted section PHP source code - */ - private function invertedSection($nodes, $id, $filters, $level) - { - $method = $this->getFindMethod($id); - $id = var_export($id, true); - $filters = $this->getFilters($filters, $level); - - return sprintf($this->prepare(self::INVERTED_SECTION, $level), $id, $method, $id, $filters, $this->walk($nodes, $level)); - } - - const PARTIAL_INDENT = ', $indent . %s'; - const PARTIAL = ' - if ($partial = $this->mustache->loadPartial(%s)) { - $buffer .= $partial->renderInternal($context%s); - } - '; - - /** - * Generate Mustache Template partial call PHP source. - * - * @param string $id Partial name - * @param string $indent Whitespace indent to apply to partial - * @param int $level - * - * @return string Generated partial call PHP source code - */ - private function partial($id, $indent, $level) - { - if ($indent !== '') { - $indentParam = sprintf(self::PARTIAL_INDENT, var_export($indent, true)); - } else { - $indentParam = ''; - } - - return sprintf( - $this->prepare(self::PARTIAL, $level), - var_export($id, true), - $indentParam - ); - } - - const PARENT = ' - %s - - if ($parent = $this->mustache->loadPartial(%s)) { - $context->pushBlockContext($blocksContext); - $buffer .= $parent->renderInternal($context, $indent); - $context->popBlockContext(); - } - '; - - /** - * Generate Mustache Template inheritance parent call PHP source. - * - * @param string $id Parent tag name - * @param string $indent Whitespace indent to apply to parent - * @param array $children Child nodes - * @param int $level - * - * @return string Generated PHP source code - */ - private function parent($id, $indent, array $children, $level) - { - $realChildren = array_filter($children, array(__CLASS__, 'onlyBlockArgs')); - - return sprintf( - $this->prepare(self::PARENT, $level), - $this->walk($realChildren, $level), - var_export($id, true), - var_export($indent, true) - ); - } - - /** - * Helper method for filtering out non-block-arg tokens. - * - * @param array $node - * - * @return bool True if $node is a block arg token - */ - private static function onlyBlockArgs(array $node) - { - return $node[Mustache_Tokenizer::TYPE] === Mustache_Tokenizer::T_BLOCK_ARG; - } - - const VARIABLE = ' - $value = $this->resolveValue($context->%s(%s), $context);%s - $buffer .= %s%s; - '; - - /** - * Generate Mustache Template variable interpolation PHP source. - * - * @param string $id Variable name - * @param string[] $filters Array of filters - * @param bool $escape Escape the variable value for output? - * @param int $level - * - * @return string Generated variable interpolation PHP source - */ - private function variable($id, $filters, $escape, $level) - { - $method = $this->getFindMethod($id); - $id = ($method !== 'last') ? var_export($id, true) : ''; - $filters = $this->getFilters($filters, $level); - $value = $escape ? $this->getEscape() : '$value'; - - return sprintf($this->prepare(self::VARIABLE, $level), $method, $id, $filters, $this->flushIndent(), $value); - } - - const FILTER = ' - $filter = $context->%s(%s); - if (!(%s)) { - throw new Mustache_Exception_UnknownFilterException(%s); - } - $value = call_user_func($filter, $value);%s - '; - - /** - * Generate Mustache Template variable filtering PHP source. - * - * @param string[] $filters Array of filters - * @param int $level - * - * @return string Generated filter PHP source - */ - private function getFilters(array $filters, $level) - { - if (empty($filters)) { - return ''; - } - - $name = array_shift($filters); - $method = $this->getFindMethod($name); - $filter = ($method !== 'last') ? var_export($name, true) : ''; - $callable = $this->getCallable('$filter'); - $msg = var_export($name, true); - - return sprintf($this->prepare(self::FILTER, $level), $method, $filter, $callable, $msg, $this->getFilters($filters, $level)); - } - - const LINE = '$buffer .= "\n";'; - const TEXT = '$buffer .= %s%s;'; - - /** - * Generate Mustache Template output Buffer call PHP source. - * - * @param string $text - * @param int $level - * - * @return string Generated output Buffer call PHP source - */ - private function text($text, $level) - { - $indentNextLine = (substr($text, -1) === "\n"); - $code = sprintf($this->prepare(self::TEXT, $level), $this->flushIndent(), var_export($text, true)); - $this->indentNextLine = $indentNextLine; - - return $code; - } - - /** - * Prepare PHP source code snippet for output. - * - * @param string $text - * @param int $bonus Additional indent level (default: 0) - * @param bool $prependNewline Prepend a newline to the snippet? (default: true) - * @param bool $appendNewline Append a newline to the snippet? (default: false) - * - * @return string PHP source code snippet - */ - private function prepare($text, $bonus = 0, $prependNewline = true, $appendNewline = false) - { - $text = ($prependNewline ? "\n" : '') . trim($text); - if ($prependNewline) { - $bonus++; - } - if ($appendNewline) { - $text .= "\n"; - } - - return preg_replace("/\n( {8})?/", "\n" . str_repeat(' ', $bonus * 4), $text); - } - - const DEFAULT_ESCAPE = 'htmlspecialchars(%s, %s, %s)'; - const CUSTOM_ESCAPE = 'call_user_func($this->mustache->getEscape(), %s)'; - - /** - * Get the current escaper. - * - * @param string $value (default: '$value') - * - * @return string Either a custom callback, or an inline call to `htmlspecialchars` - */ - private function getEscape($value = '$value') - { - if ($this->customEscape) { - return sprintf(self::CUSTOM_ESCAPE, $value); - } - - return sprintf(self::DEFAULT_ESCAPE, $value, var_export($this->entityFlags, true), var_export($this->charset, true)); - } - - /** - * Select the appropriate Context `find` method for a given $id. - * - * The return value will be one of `find`, `findDot` or `last`. - * - * @see Mustache_Context::find - * @see Mustache_Context::findDot - * @see Mustache_Context::last - * - * @param string $id Variable name - * - * @return string `find` method name - */ - private function getFindMethod($id) - { - if ($id === '.') { - return 'last'; - } - - if (isset($this->pragmas[Mustache_Engine::PRAGMA_ANCHORED_DOT]) && $this->pragmas[Mustache_Engine::PRAGMA_ANCHORED_DOT]) { - if (substr($id, 0, 1) === '.') { - return 'findAnchoredDot'; - } - } - - if (strpos($id, '.') === false) { - return 'find'; - } - - return 'findDot'; - } - - const IS_CALLABLE = '!is_string(%s) && is_callable(%s)'; - const STRICT_IS_CALLABLE = 'is_object(%s) && is_callable(%s)'; - - /** - * Helper function to compile strict vs lax "is callable" logic. - * - * @param string $variable (default: '$value') - * - * @return string "is callable" logic - */ - private function getCallable($variable = '$value') - { - $tpl = $this->strictCallables ? self::STRICT_IS_CALLABLE : self::IS_CALLABLE; - - return sprintf($tpl, $variable, $variable); - } - - const LINE_INDENT = '$indent . '; - - /** - * Get the current $indent prefix to write to the buffer. - * - * @return string "$indent . " or "" - */ - private function flushIndent() - { - if (!$this->indentNextLine) { - return ''; - } - - $this->indentNextLine = false; - - return self::LINE_INDENT; - } -} diff --git a/webclient/vendor/mustache/mustache/src/Mustache/Context.php b/webclient/vendor/mustache/mustache/src/Mustache/Context.php deleted file mode 100644 index f59faea8..00000000 --- a/webclient/vendor/mustache/mustache/src/Mustache/Context.php +++ /dev/null @@ -1,242 +0,0 @@ -stack = array($context); - } - } - - /** - * Push a new Context frame onto the stack. - * - * @param mixed $value Object or array to use for context - */ - public function push($value) - { - array_push($this->stack, $value); - } - - /** - * Push a new Context frame onto the block context stack. - * - * @param mixed $value Object or array to use for block context - */ - public function pushBlockContext($value) - { - array_push($this->blockStack, $value); - } - - /** - * Pop the last Context frame from the stack. - * - * @return mixed Last Context frame (object or array) - */ - public function pop() - { - return array_pop($this->stack); - } - - /** - * Pop the last block Context frame from the stack. - * - * @return mixed Last block Context frame (object or array) - */ - public function popBlockContext() - { - return array_pop($this->blockStack); - } - - /** - * Get the last Context frame. - * - * @return mixed Last Context frame (object or array) - */ - public function last() - { - return end($this->stack); - } - - /** - * Find a variable in the Context stack. - * - * Starting with the last Context frame (the context of the innermost section), and working back to the top-level - * rendering context, look for a variable with the given name: - * - * * If the Context frame is an associative array which contains the key $id, returns the value of that element. - * * If the Context frame is an object, this will check first for a public method, then a public property named - * $id. Failing both of these, it will try `__isset` and `__get` magic methods. - * * If a value named $id is not found in any Context frame, returns an empty string. - * - * @param string $id Variable name - * - * @return mixed Variable value, or '' if not found - */ - public function find($id) - { - return $this->findVariableInStack($id, $this->stack); - } - - /** - * Find a 'dot notation' variable in the Context stack. - * - * Note that dot notation traversal bubbles through scope differently than the regular find method. After finding - * the initial chunk of the dotted name, each subsequent chunk is searched for only within the value of the previous - * result. For example, given the following context stack: - * - * $data = array( - * 'name' => 'Fred', - * 'child' => array( - * 'name' => 'Bob' - * ), - * ); - * - * ... and the Mustache following template: - * - * {{ child.name }} - * - * ... the `name` value is only searched for within the `child` value of the global Context, not within parent - * Context frames. - * - * @param string $id Dotted variable selector - * - * @return mixed Variable value, or '' if not found - */ - public function findDot($id) - { - $chunks = explode('.', $id); - $first = array_shift($chunks); - $value = $this->findVariableInStack($first, $this->stack); - - foreach ($chunks as $chunk) { - if ($value === '') { - return $value; - } - - $value = $this->findVariableInStack($chunk, array($value)); - } - - return $value; - } - - /** - * Find an 'anchored dot notation' variable in the Context stack. - * - * This is the same as findDot(), except it looks in the top of the context - * stack for the first value, rather than searching the whole context stack - * and starting from there. - * - * @see Mustache_Context::findDot - * - * @throws Mustache_Exception_InvalidArgumentException if given an invalid anchored dot $id - * - * @param string $id Dotted variable selector - * - * @return mixed Variable value, or '' if not found - */ - public function findAnchoredDot($id) - { - $chunks = explode('.', $id); - $first = array_shift($chunks); - if ($first !== '') { - throw new Mustache_Exception_InvalidArgumentException(sprintf('Unexpected id for findAnchoredDot: %s', $id)); - } - - $value = $this->last(); - - foreach ($chunks as $chunk) { - if ($value === '') { - return $value; - } - - $value = $this->findVariableInStack($chunk, array($value)); - } - - return $value; - } - - /** - * Find an argument in the block context stack. - * - * @param string $id - * - * @return mixed Variable value, or '' if not found - */ - public function findInBlock($id) - { - foreach ($this->blockStack as $context) { - if (array_key_exists($id, $context)) { - return $context[$id]; - } - } - - return ''; - } - - /** - * Helper function to find a variable in the Context stack. - * - * @see Mustache_Context::find - * - * @param string $id Variable name - * @param array $stack Context stack - * - * @return mixed Variable value, or '' if not found - */ - private function findVariableInStack($id, array $stack) - { - for ($i = count($stack) - 1; $i >= 0; $i--) { - $frame = &$stack[$i]; - - switch (gettype($frame)) { - case 'object': - if (!($frame instanceof Closure)) { - // Note that is_callable() *will not work here* - // See https://github.com/bobthecow/mustache.php/wiki/Magic-Methods - if (method_exists($frame, $id)) { - return $frame->$id(); - } - - if (isset($frame->$id)) { - return $frame->$id; - } - - if ($frame instanceof ArrayAccess && isset($frame[$id])) { - return $frame[$id]; - } - } - break; - - case 'array': - if (array_key_exists($id, $frame)) { - return $frame[$id]; - } - break; - } - } - - return ''; - } -} diff --git a/webclient/vendor/mustache/mustache/src/Mustache/Engine.php b/webclient/vendor/mustache/mustache/src/Mustache/Engine.php deleted file mode 100644 index 856d4efe..00000000 --- a/webclient/vendor/mustache/mustache/src/Mustache/Engine.php +++ /dev/null @@ -1,787 +0,0 @@ - true, - self::PRAGMA_BLOCKS => true, - self::PRAGMA_ANCHORED_DOT => true, - ); - - // Template cache - private $templates = array(); - - // Environment - private $templateClassPrefix = '__Mustache_'; - private $cache; - private $lambdaCache; - private $cacheLambdaTemplates = false; - private $loader; - private $partialsLoader; - private $helpers; - private $escape; - private $entityFlags = ENT_COMPAT; - private $charset = 'UTF-8'; - private $logger; - private $strictCallables = false; - private $pragmas = array(); - - // Services - private $tokenizer; - private $parser; - private $compiler; - - /** - * Mustache class constructor. - * - * Passing an $options array allows overriding certain Mustache options during instantiation: - * - * $options = array( - * // The class prefix for compiled templates. Defaults to '__Mustache_'. - * 'template_class_prefix' => '__MyTemplates_', - * - * // A Mustache cache instance or a cache directory string for compiled templates. - * // Mustache will not cache templates unless this is set. - * 'cache' => dirname(__FILE__).'/tmp/cache/mustache', - * - * // Override default permissions for cache files. Defaults to using the system-defined umask. It is - * // *strongly* recommended that you configure your umask properly rather than overriding permissions here. - * 'cache_file_mode' => 0666, - * - * // Optionally, enable caching for lambda section templates. This is generally not recommended, as lambda - * // sections are often too dynamic to benefit from caching. - * 'cache_lambda_templates' => true, - * - * // A Mustache template loader instance. Uses a StringLoader if not specified. - * 'loader' => new Mustache_Loader_FilesystemLoader(dirname(__FILE__).'/views'), - * - * // A Mustache loader instance for partials. - * 'partials_loader' => new Mustache_Loader_FilesystemLoader(dirname(__FILE__).'/views/partials'), - * - * // An array of Mustache partials. Useful for quick-and-dirty string template loading, but not as - * // efficient or lazy as a Filesystem (or database) loader. - * 'partials' => array('foo' => file_get_contents(dirname(__FILE__).'/views/partials/foo.mustache')), - * - * // An array of 'helpers'. Helpers can be global variables or objects, closures (e.g. for higher order - * // sections), or any other valid Mustache context value. They will be prepended to the context stack, - * // so they will be available in any template loaded by this Mustache instance. - * 'helpers' => array('i18n' => function ($text) { - * // do something translatey here... - * }), - * - * // An 'escape' callback, responsible for escaping double-mustache variables. - * 'escape' => function ($value) { - * return htmlspecialchars($buffer, ENT_COMPAT, 'UTF-8'); - * }, - * - * // Type argument for `htmlspecialchars`. Defaults to ENT_COMPAT. You may prefer ENT_QUOTES. - * 'entity_flags' => ENT_QUOTES, - * - * // Character set for `htmlspecialchars`. Defaults to 'UTF-8'. Use 'UTF-8'. - * 'charset' => 'ISO-8859-1', - * - * // A Mustache Logger instance. No logging will occur unless this is set. Using a PSR-3 compatible - * // logging library -- such as Monolog -- is highly recommended. A simple stream logger implementation is - * // available as well: - * 'logger' => new Mustache_Logger_StreamLogger('php://stderr'), - * - * // Only treat Closure instances and invokable classes as callable. If true, values like - * // `array('ClassName', 'methodName')` and `array($classInstance, 'methodName')`, which are traditionally - * // "callable" in PHP, are not called to resolve variables for interpolation or section contexts. This - * // helps protect against arbitrary code execution when user input is passed directly into the template. - * // This currently defaults to false, but will default to true in v3.0. - * 'strict_callables' => true, - * - * // Enable pragmas across all templates, regardless of the presence of pragma tags in the individual - * // templates. - * 'pragmas' => [Mustache_Engine::PRAGMA_FILTERS], - * ); - * - * @throws Mustache_Exception_InvalidArgumentException If `escape` option is not callable - * - * @param array $options (default: array()) - */ - public function __construct(array $options = array()) - { - if (isset($options['template_class_prefix'])) { - $this->templateClassPrefix = $options['template_class_prefix']; - } - - if (isset($options['cache'])) { - $cache = $options['cache']; - - if (is_string($cache)) { - $mode = isset($options['cache_file_mode']) ? $options['cache_file_mode'] : null; - $cache = new Mustache_Cache_FilesystemCache($cache, $mode); - } - - $this->setCache($cache); - } - - if (isset($options['cache_lambda_templates'])) { - $this->cacheLambdaTemplates = (bool) $options['cache_lambda_templates']; - } - - if (isset($options['loader'])) { - $this->setLoader($options['loader']); - } - - if (isset($options['partials_loader'])) { - $this->setPartialsLoader($options['partials_loader']); - } - - if (isset($options['partials'])) { - $this->setPartials($options['partials']); - } - - if (isset($options['helpers'])) { - $this->setHelpers($options['helpers']); - } - - if (isset($options['escape'])) { - if (!is_callable($options['escape'])) { - throw new Mustache_Exception_InvalidArgumentException('Mustache Constructor "escape" option must be callable'); - } - - $this->escape = $options['escape']; - } - - if (isset($options['entity_flags'])) { - $this->entityFlags = $options['entity_flags']; - } - - if (isset($options['charset'])) { - $this->charset = $options['charset']; - } - - if (isset($options['logger'])) { - $this->setLogger($options['logger']); - } - - if (isset($options['strict_callables'])) { - $this->strictCallables = $options['strict_callables']; - } - - if (isset($options['pragmas'])) { - foreach ($options['pragmas'] as $pragma) { - if (!isset(self::$knownPragmas[$pragma])) { - throw new Mustache_Exception_InvalidArgumentException(sprintf('Unknown pragma: "%s".', $pragma)); - } - $this->pragmas[$pragma] = true; - } - } - } - - /** - * Shortcut 'render' invocation. - * - * Equivalent to calling `$mustache->loadTemplate($template)->render($context);` - * - * @see Mustache_Engine::loadTemplate - * @see Mustache_Template::render - * - * @param string $template - * @param mixed $context (default: array()) - * - * @return string Rendered template - */ - public function render($template, $context = array()) - { - return $this->loadTemplate($template)->render($context); - } - - /** - * Get the current Mustache escape callback. - * - * @return callable|null - */ - public function getEscape() - { - return $this->escape; - } - - /** - * Get the current Mustache entitity type to escape. - * - * @return int - */ - public function getEntityFlags() - { - return $this->entityFlags; - } - - /** - * Get the current Mustache character set. - * - * @return string - */ - public function getCharset() - { - return $this->charset; - } - - /** - * Get the current globally enabled pragmas. - * - * @return array - */ - public function getPragmas() - { - return array_keys($this->pragmas); - } - - /** - * Set the Mustache template Loader instance. - * - * @param Mustache_Loader $loader - */ - public function setLoader(Mustache_Loader $loader) - { - $this->loader = $loader; - } - - /** - * Get the current Mustache template Loader instance. - * - * If no Loader instance has been explicitly specified, this method will instantiate and return - * a StringLoader instance. - * - * @return Mustache_Loader - */ - public function getLoader() - { - if (!isset($this->loader)) { - $this->loader = new Mustache_Loader_StringLoader(); - } - - return $this->loader; - } - - /** - * Set the Mustache partials Loader instance. - * - * @param Mustache_Loader $partialsLoader - */ - public function setPartialsLoader(Mustache_Loader $partialsLoader) - { - $this->partialsLoader = $partialsLoader; - } - - /** - * Get the current Mustache partials Loader instance. - * - * If no Loader instance has been explicitly specified, this method will instantiate and return - * an ArrayLoader instance. - * - * @return Mustache_Loader - */ - public function getPartialsLoader() - { - if (!isset($this->partialsLoader)) { - $this->partialsLoader = new Mustache_Loader_ArrayLoader(); - } - - return $this->partialsLoader; - } - - /** - * Set partials for the current partials Loader instance. - * - * @throws Mustache_Exception_RuntimeException If the current Loader instance is immutable - * - * @param array $partials (default: array()) - */ - public function setPartials(array $partials = array()) - { - if (!isset($this->partialsLoader)) { - $this->partialsLoader = new Mustache_Loader_ArrayLoader(); - } - - if (!$this->partialsLoader instanceof Mustache_Loader_MutableLoader) { - throw new Mustache_Exception_RuntimeException('Unable to set partials on an immutable Mustache Loader instance'); - } - - $this->partialsLoader->setTemplates($partials); - } - - /** - * Set an array of Mustache helpers. - * - * An array of 'helpers'. Helpers can be global variables or objects, closures (e.g. for higher order sections), or - * any other valid Mustache context value. They will be prepended to the context stack, so they will be available in - * any template loaded by this Mustache instance. - * - * @throws Mustache_Exception_InvalidArgumentException if $helpers is not an array or Traversable - * - * @param array|Traversable $helpers - */ - public function setHelpers($helpers) - { - if (!is_array($helpers) && !$helpers instanceof Traversable) { - throw new Mustache_Exception_InvalidArgumentException('setHelpers expects an array of helpers'); - } - - $this->getHelpers()->clear(); - - foreach ($helpers as $name => $helper) { - $this->addHelper($name, $helper); - } - } - - /** - * Get the current set of Mustache helpers. - * - * @see Mustache_Engine::setHelpers - * - * @return Mustache_HelperCollection - */ - public function getHelpers() - { - if (!isset($this->helpers)) { - $this->helpers = new Mustache_HelperCollection(); - } - - return $this->helpers; - } - - /** - * Add a new Mustache helper. - * - * @see Mustache_Engine::setHelpers - * - * @param string $name - * @param mixed $helper - */ - public function addHelper($name, $helper) - { - $this->getHelpers()->add($name, $helper); - } - - /** - * Get a Mustache helper by name. - * - * @see Mustache_Engine::setHelpers - * - * @param string $name - * - * @return mixed Helper - */ - public function getHelper($name) - { - return $this->getHelpers()->get($name); - } - - /** - * Check whether this Mustache instance has a helper. - * - * @see Mustache_Engine::setHelpers - * - * @param string $name - * - * @return bool True if the helper is present - */ - public function hasHelper($name) - { - return $this->getHelpers()->has($name); - } - - /** - * Remove a helper by name. - * - * @see Mustache_Engine::setHelpers - * - * @param string $name - */ - public function removeHelper($name) - { - $this->getHelpers()->remove($name); - } - - /** - * Set the Mustache Logger instance. - * - * @throws Mustache_Exception_InvalidArgumentException If logger is not an instance of Mustache_Logger or Psr\Log\LoggerInterface - * - * @param Mustache_Logger|Psr\Log\LoggerInterface $logger - */ - public function setLogger($logger = null) - { - if ($logger !== null && !($logger instanceof Mustache_Logger || is_a($logger, 'Psr\\Log\\LoggerInterface'))) { - throw new Mustache_Exception_InvalidArgumentException('Expected an instance of Mustache_Logger or Psr\\Log\\LoggerInterface.'); - } - - if ($this->getCache()->getLogger() === null) { - $this->getCache()->setLogger($logger); - } - - $this->logger = $logger; - } - - /** - * Get the current Mustache Logger instance. - * - * @return Mustache_Logger|Psr\Log\LoggerInterface - */ - public function getLogger() - { - return $this->logger; - } - - /** - * Set the Mustache Tokenizer instance. - * - * @param Mustache_Tokenizer $tokenizer - */ - public function setTokenizer(Mustache_Tokenizer $tokenizer) - { - $this->tokenizer = $tokenizer; - } - - /** - * Get the current Mustache Tokenizer instance. - * - * If no Tokenizer instance has been explicitly specified, this method will instantiate and return a new one. - * - * @return Mustache_Tokenizer - */ - public function getTokenizer() - { - if (!isset($this->tokenizer)) { - $this->tokenizer = new Mustache_Tokenizer(); - } - - return $this->tokenizer; - } - - /** - * Set the Mustache Parser instance. - * - * @param Mustache_Parser $parser - */ - public function setParser(Mustache_Parser $parser) - { - $this->parser = $parser; - } - - /** - * Get the current Mustache Parser instance. - * - * If no Parser instance has been explicitly specified, this method will instantiate and return a new one. - * - * @return Mustache_Parser - */ - public function getParser() - { - if (!isset($this->parser)) { - $this->parser = new Mustache_Parser(); - } - - return $this->parser; - } - - /** - * Set the Mustache Compiler instance. - * - * @param Mustache_Compiler $compiler - */ - public function setCompiler(Mustache_Compiler $compiler) - { - $this->compiler = $compiler; - } - - /** - * Get the current Mustache Compiler instance. - * - * If no Compiler instance has been explicitly specified, this method will instantiate and return a new one. - * - * @return Mustache_Compiler - */ - public function getCompiler() - { - if (!isset($this->compiler)) { - $this->compiler = new Mustache_Compiler(); - } - - return $this->compiler; - } - - /** - * Set the Mustache Cache instance. - * - * @param Mustache_Cache $cache - */ - public function setCache(Mustache_Cache $cache) - { - if (isset($this->logger) && $cache->getLogger() === null) { - $cache->setLogger($this->getLogger()); - } - - $this->cache = $cache; - } - - /** - * Get the current Mustache Cache instance. - * - * If no Cache instance has been explicitly specified, this method will instantiate and return a new one. - * - * @return Mustache_Cache - */ - public function getCache() - { - if (!isset($this->cache)) { - $this->setCache(new Mustache_Cache_NoopCache()); - } - - return $this->cache; - } - - /** - * Get the current Lambda Cache instance. - * - * If 'cache_lambda_templates' is enabled, this is the default cache instance. Otherwise, it is a NoopCache. - * - * @see Mustache_Engine::getCache - * - * @return Mustache_Cache - */ - protected function getLambdaCache() - { - if ($this->cacheLambdaTemplates) { - return $this->getCache(); - } - - if (!isset($this->lambdaCache)) { - $this->lambdaCache = new Mustache_Cache_NoopCache(); - } - - return $this->lambdaCache; - } - - /** - * Helper method to generate a Mustache template class. - * - * @param string $source - * - * @return string Mustache Template class name - */ - public function getTemplateClassName($source) - { - return $this->templateClassPrefix . md5(sprintf( - 'version:%s,escape:%s,entity_flags:%i,charset:%s,strict_callables:%s,pragmas:%s,source:%s', - self::VERSION, - isset($this->escape) ? 'custom' : 'default', - $this->entityFlags, - $this->charset, - $this->strictCallables ? 'true' : 'false', - implode(' ', $this->getPragmas()), - $source - )); - } - - /** - * Load a Mustache Template by name. - * - * @param string $name - * - * @return Mustache_Template - */ - public function loadTemplate($name) - { - return $this->loadSource($this->getLoader()->load($name)); - } - - /** - * Load a Mustache partial Template by name. - * - * This is a helper method used internally by Template instances for loading partial templates. You can most likely - * ignore it completely. - * - * @param string $name - * - * @return Mustache_Template - */ - public function loadPartial($name) - { - try { - if (isset($this->partialsLoader)) { - $loader = $this->partialsLoader; - } elseif (isset($this->loader) && !$this->loader instanceof Mustache_Loader_StringLoader) { - $loader = $this->loader; - } else { - throw new Mustache_Exception_UnknownTemplateException($name); - } - - return $this->loadSource($loader->load($name)); - } catch (Mustache_Exception_UnknownTemplateException $e) { - // If the named partial cannot be found, log then return null. - $this->log( - Mustache_Logger::WARNING, - 'Partial not found: "{name}"', - array('name' => $e->getTemplateName()) - ); - } - } - - /** - * Load a Mustache lambda Template by source. - * - * This is a helper method used by Template instances to generate subtemplates for Lambda sections. You can most - * likely ignore it completely. - * - * @param string $source - * @param string $delims (default: null) - * - * @return Mustache_Template - */ - public function loadLambda($source, $delims = null) - { - if ($delims !== null) { - $source = $delims . "\n" . $source; - } - - return $this->loadSource($source, $this->getLambdaCache()); - } - - /** - * Instantiate and return a Mustache Template instance by source. - * - * Optionally provide a Mustache_Cache instance. This is used internally by Mustache_Engine::loadLambda to respect - * the 'cache_lambda_templates' configuration option. - * - * @see Mustache_Engine::loadTemplate - * @see Mustache_Engine::loadPartial - * @see Mustache_Engine::loadLambda - * - * @param string $source - * @param Mustache_Cache $cache (default: null) - * - * @return Mustache_Template - */ - private function loadSource($source, Mustache_Cache $cache = null) - { - $className = $this->getTemplateClassName($source); - - if (!isset($this->templates[$className])) { - if ($cache === null) { - $cache = $this->getCache(); - } - - if (!class_exists($className, false)) { - if (!$cache->load($className)) { - $compiled = $this->compile($source); - $cache->cache($className, $compiled); - } - } - - $this->log( - Mustache_Logger::DEBUG, - 'Instantiating template: "{className}"', - array('className' => $className) - ); - - $this->templates[$className] = new $className($this); - } - - return $this->templates[$className]; - } - - /** - * Helper method to tokenize a Mustache template. - * - * @see Mustache_Tokenizer::scan - * - * @param string $source - * - * @return array Tokens - */ - private function tokenize($source) - { - return $this->getTokenizer()->scan($source); - } - - /** - * Helper method to parse a Mustache template. - * - * @see Mustache_Parser::parse - * - * @param string $source - * - * @return array Token tree - */ - private function parse($source) - { - $parser = $this->getParser(); - $parser->setPragmas($this->getPragmas()); - - return $parser->parse($this->tokenize($source)); - } - - /** - * Helper method to compile a Mustache template. - * - * @see Mustache_Compiler::compile - * - * @param string $source - * - * @return string generated Mustache template class code - */ - private function compile($source) - { - $tree = $this->parse($source); - $name = $this->getTemplateClassName($source); - - $this->log( - Mustache_Logger::INFO, - 'Compiling template to "{className}" class', - array('className' => $name) - ); - - $compiler = $this->getCompiler(); - $compiler->setPragmas($this->getPragmas()); - - return $compiler->compile($source, $tree, $name, isset($this->escape), $this->charset, $this->strictCallables, $this->entityFlags); - } - - /** - * Add a log record if logging is enabled. - * - * @param int $level The logging level - * @param string $message The log message - * @param array $context The log context - */ - private function log($level, $message, array $context = array()) - { - if (isset($this->logger)) { - $this->logger->log($level, $message, $context); - } - } -} diff --git a/webclient/vendor/mustache/mustache/src/Mustache/Exception.php b/webclient/vendor/mustache/mustache/src/Mustache/Exception.php deleted file mode 100644 index 66bd6bd4..00000000 --- a/webclient/vendor/mustache/mustache/src/Mustache/Exception.php +++ /dev/null @@ -1,18 +0,0 @@ -token = $token; - if (version_compare(PHP_VERSION, '5.3.0', '>=')) { - parent::__construct($msg, 0, $previous); - } else { - parent::__construct($msg); - } - } - - /** - * @return array - */ - public function getToken() - { - return $this->token; - } -} diff --git a/webclient/vendor/mustache/mustache/src/Mustache/Exception/UnknownFilterException.php b/webclient/vendor/mustache/mustache/src/Mustache/Exception/UnknownFilterException.php deleted file mode 100644 index 44505e49..00000000 --- a/webclient/vendor/mustache/mustache/src/Mustache/Exception/UnknownFilterException.php +++ /dev/null @@ -1,38 +0,0 @@ -filterName = $filterName; - $message = sprintf('Unknown filter: %s', $filterName); - if (version_compare(PHP_VERSION, '5.3.0', '>=')) { - parent::__construct($message, 0, $previous); - } else { - parent::__construct($message); - } - } - - public function getFilterName() - { - return $this->filterName; - } -} diff --git a/webclient/vendor/mustache/mustache/src/Mustache/Exception/UnknownHelperException.php b/webclient/vendor/mustache/mustache/src/Mustache/Exception/UnknownHelperException.php deleted file mode 100644 index e1bc4d2c..00000000 --- a/webclient/vendor/mustache/mustache/src/Mustache/Exception/UnknownHelperException.php +++ /dev/null @@ -1,38 +0,0 @@ -helperName = $helperName; - $message = sprintf('Unknown helper: %s', $helperName); - if (version_compare(PHP_VERSION, '5.3.0', '>=')) { - parent::__construct($message, 0, $previous); - } else { - parent::__construct($message); - } - } - - public function getHelperName() - { - return $this->helperName; - } -} diff --git a/webclient/vendor/mustache/mustache/src/Mustache/Exception/UnknownTemplateException.php b/webclient/vendor/mustache/mustache/src/Mustache/Exception/UnknownTemplateException.php deleted file mode 100644 index 0c377962..00000000 --- a/webclient/vendor/mustache/mustache/src/Mustache/Exception/UnknownTemplateException.php +++ /dev/null @@ -1,38 +0,0 @@ -templateName = $templateName; - $message = sprintf('Unknown template: %s', $templateName); - if (version_compare(PHP_VERSION, '5.3.0', '>=')) { - parent::__construct($message, 0, $previous); - } else { - parent::__construct($message); - } - } - - public function getTemplateName() - { - return $this->templateName; - } -} diff --git a/webclient/vendor/mustache/mustache/src/Mustache/HelperCollection.php b/webclient/vendor/mustache/mustache/src/Mustache/HelperCollection.php deleted file mode 100644 index 86c56b78..00000000 --- a/webclient/vendor/mustache/mustache/src/Mustache/HelperCollection.php +++ /dev/null @@ -1,172 +0,0 @@ - $helper` pairs. - * - * @throws Mustache_Exception_InvalidArgumentException if the $helpers argument isn't an array or Traversable - * - * @param array|Traversable $helpers (default: null) - */ - public function __construct($helpers = null) - { - if ($helpers === null) { - return; - } - - if (!is_array($helpers) && !$helpers instanceof Traversable) { - throw new Mustache_Exception_InvalidArgumentException('HelperCollection constructor expects an array of helpers'); - } - - foreach ($helpers as $name => $helper) { - $this->add($name, $helper); - } - } - - /** - * Magic mutator. - * - * @see Mustache_HelperCollection::add - * - * @param string $name - * @param mixed $helper - */ - public function __set($name, $helper) - { - $this->add($name, $helper); - } - - /** - * Add a helper to this collection. - * - * @param string $name - * @param mixed $helper - */ - public function add($name, $helper) - { - $this->helpers[$name] = $helper; - } - - /** - * Magic accessor. - * - * @see Mustache_HelperCollection::get - * - * @param string $name - * - * @return mixed Helper - */ - public function __get($name) - { - return $this->get($name); - } - - /** - * Get a helper by name. - * - * @throws Mustache_Exception_UnknownHelperException If helper does not exist - * - * @param string $name - * - * @return mixed Helper - */ - public function get($name) - { - if (!$this->has($name)) { - throw new Mustache_Exception_UnknownHelperException($name); - } - - return $this->helpers[$name]; - } - - /** - * Magic isset(). - * - * @see Mustache_HelperCollection::has - * - * @param string $name - * - * @return bool True if helper is present - */ - public function __isset($name) - { - return $this->has($name); - } - - /** - * Check whether a given helper is present in the collection. - * - * @param string $name - * - * @return bool True if helper is present - */ - public function has($name) - { - return array_key_exists($name, $this->helpers); - } - - /** - * Magic unset(). - * - * @see Mustache_HelperCollection::remove - * - * @param string $name - */ - public function __unset($name) - { - $this->remove($name); - } - - /** - * Check whether a given helper is present in the collection. - * - * @throws Mustache_Exception_UnknownHelperException if the requested helper is not present - * - * @param string $name - */ - public function remove($name) - { - if (!$this->has($name)) { - throw new Mustache_Exception_UnknownHelperException($name); - } - - unset($this->helpers[$name]); - } - - /** - * Clear the helper collection. - * - * Removes all helpers from this collection - */ - public function clear() - { - $this->helpers = array(); - } - - /** - * Check whether the helper collection is empty. - * - * @return bool True if the collection is empty - */ - public function isEmpty() - { - return empty($this->helpers); - } -} diff --git a/webclient/vendor/mustache/mustache/src/Mustache/LambdaHelper.php b/webclient/vendor/mustache/mustache/src/Mustache/LambdaHelper.php deleted file mode 100644 index 1d203d5d..00000000 --- a/webclient/vendor/mustache/mustache/src/Mustache/LambdaHelper.php +++ /dev/null @@ -1,76 +0,0 @@ - =}}`. (default: null) - */ - public function __construct(Mustache_Engine $mustache, Mustache_Context $context, $delims = null) - { - $this->mustache = $mustache; - $this->context = $context; - $this->delims = $delims; - } - - /** - * Render a string as a Mustache template with the current rendering context. - * - * @param string $string - * - * @return string Rendered template - */ - public function render($string) - { - return $this->mustache - ->loadLambda((string) $string, $this->delims) - ->renderInternal($this->context); - } - - /** - * Render a string as a Mustache template with the current rendering context. - * - * @param string $string - * - * @return string Rendered template - */ - public function __invoke($string) - { - return $this->render($string); - } - - /** - * Get a Lambda Helper with custom delimiters. - * - * @param string $delims Custom delimiters, in the format `{{= <% %> =}}` - * - * @return Mustache_LambdaHelper - */ - public function withDelimiters($delims) - { - return new self($this->mustache, $this->context, $delims); - } -} diff --git a/webclient/vendor/mustache/mustache/src/Mustache/Loader.php b/webclient/vendor/mustache/mustache/src/Mustache/Loader.php deleted file mode 100644 index c5e1a19a..00000000 --- a/webclient/vendor/mustache/mustache/src/Mustache/Loader.php +++ /dev/null @@ -1,27 +0,0 @@ - '{{ bar }}', - * 'baz' => 'Hey {{ qux }}!' - * ); - * - * $tpl = $loader->load('foo'); // '{{ bar }}' - * - * The ArrayLoader is used internally as a partials loader by Mustache_Engine instance when an array of partials - * is set. It can also be used as a quick-and-dirty Template loader. - */ -class Mustache_Loader_ArrayLoader implements Mustache_Loader, Mustache_Loader_MutableLoader -{ - private $templates; - - /** - * ArrayLoader constructor. - * - * @param array $templates Associative array of Template source (default: array()) - */ - public function __construct(array $templates = array()) - { - $this->templates = $templates; - } - - /** - * Load a Template. - * - * @throws Mustache_Exception_UnknownTemplateException If a template file is not found - * - * @param string $name - * - * @return string Mustache Template source - */ - public function load($name) - { - if (!isset($this->templates[$name])) { - throw new Mustache_Exception_UnknownTemplateException($name); - } - - return $this->templates[$name]; - } - - /** - * Set an associative array of Template sources for this loader. - * - * @param array $templates - */ - public function setTemplates(array $templates) - { - $this->templates = $templates; - } - - /** - * Set a Template source by name. - * - * @param string $name - * @param string $template Mustache Template source - */ - public function setTemplate($name, $template) - { - $this->templates[$name] = $template; - } -} diff --git a/webclient/vendor/mustache/mustache/src/Mustache/Loader/CascadingLoader.php b/webclient/vendor/mustache/mustache/src/Mustache/Loader/CascadingLoader.php deleted file mode 100644 index b4726bc7..00000000 --- a/webclient/vendor/mustache/mustache/src/Mustache/Loader/CascadingLoader.php +++ /dev/null @@ -1,69 +0,0 @@ -loaders = array(); - foreach ($loaders as $loader) { - $this->addLoader($loader); - } - } - - /** - * Add a Loader instance. - * - * @param Mustache_Loader $loader - */ - public function addLoader(Mustache_Loader $loader) - { - $this->loaders[] = $loader; - } - - /** - * Load a Template by name. - * - * @throws Mustache_Exception_UnknownTemplateException If a template file is not found - * - * @param string $name - * - * @return string Mustache Template source - */ - public function load($name) - { - foreach ($this->loaders as $loader) { - try { - return $loader->load($name); - } catch (Mustache_Exception_UnknownTemplateException $e) { - // do nothing, check the next loader. - } - } - - throw new Mustache_Exception_UnknownTemplateException($name); - } -} diff --git a/webclient/vendor/mustache/mustache/src/Mustache/Loader/FilesystemLoader.php b/webclient/vendor/mustache/mustache/src/Mustache/Loader/FilesystemLoader.php deleted file mode 100644 index a3137513..00000000 --- a/webclient/vendor/mustache/mustache/src/Mustache/Loader/FilesystemLoader.php +++ /dev/null @@ -1,135 +0,0 @@ -load('foo'); // equivalent to `file_get_contents(dirname(__FILE__).'/views/foo.mustache'); - * - * This is probably the most useful Mustache Loader implementation. It can be used for partials and normal Templates: - * - * $m = new Mustache(array( - * 'loader' => new Mustache_Loader_FilesystemLoader(dirname(__FILE__).'/views'), - * 'partials_loader' => new Mustache_Loader_FilesystemLoader(dirname(__FILE__).'/views/partials'), - * )); - */ -class Mustache_Loader_FilesystemLoader implements Mustache_Loader -{ - private $baseDir; - private $extension = '.mustache'; - private $templates = array(); - - /** - * Mustache filesystem Loader constructor. - * - * Passing an $options array allows overriding certain Loader options during instantiation: - * - * $options = array( - * // The filename extension used for Mustache templates. Defaults to '.mustache' - * 'extension' => '.ms', - * ); - * - * @throws Mustache_Exception_RuntimeException if $baseDir does not exist - * - * @param string $baseDir Base directory containing Mustache template files - * @param array $options Array of Loader options (default: array()) - */ - public function __construct($baseDir, array $options = array()) - { - $this->baseDir = $baseDir; - - if (strpos($this->baseDir, '://') === false) { - $this->baseDir = realpath($this->baseDir); - } - - if ($this->shouldCheckPath() && !is_dir($this->baseDir)) { - throw new Mustache_Exception_RuntimeException(sprintf('FilesystemLoader baseDir must be a directory: %s', $baseDir)); - } - - if (array_key_exists('extension', $options)) { - if (empty($options['extension'])) { - $this->extension = ''; - } else { - $this->extension = '.' . ltrim($options['extension'], '.'); - } - } - } - - /** - * Load a Template by name. - * - * $loader = new Mustache_Loader_FilesystemLoader(dirname(__FILE__).'/views'); - * $loader->load('admin/dashboard'); // loads "./views/admin/dashboard.mustache"; - * - * @param string $name - * - * @return string Mustache Template source - */ - public function load($name) - { - if (!isset($this->templates[$name])) { - $this->templates[$name] = $this->loadFile($name); - } - - return $this->templates[$name]; - } - - /** - * Helper function for loading a Mustache file by name. - * - * @throws Mustache_Exception_UnknownTemplateException If a template file is not found - * - * @param string $name - * - * @return string Mustache Template source - */ - protected function loadFile($name) - { - $fileName = $this->getFileName($name); - - if ($this->shouldCheckPath() && !file_exists($fileName)) { - throw new Mustache_Exception_UnknownTemplateException($name); - } - - return file_get_contents($fileName); - } - - /** - * Helper function for getting a Mustache template file name. - * - * @param string $name - * - * @return string Template file name - */ - protected function getFileName($name) - { - $fileName = $this->baseDir . '/' . $name; - if (substr($fileName, 0 - strlen($this->extension)) !== $this->extension) { - $fileName .= $this->extension; - } - - return $fileName; - } - - /** - * Only check if baseDir is a directory and requested templates are files if - * baseDir is using the filesystem stream wrapper. - * - * @return bool Whether to check `is_dir` and `file_exists` - */ - protected function shouldCheckPath() - { - return strpos($this->baseDir, '://') === false || strpos($this->baseDir, 'file://') === 0; - } -} diff --git a/webclient/vendor/mustache/mustache/src/Mustache/Loader/InlineLoader.php b/webclient/vendor/mustache/mustache/src/Mustache/Loader/InlineLoader.php deleted file mode 100644 index f6d4b179..00000000 --- a/webclient/vendor/mustache/mustache/src/Mustache/Loader/InlineLoader.php +++ /dev/null @@ -1,123 +0,0 @@ -load('hello'); - * $goodbye = $loader->load('goodbye'); - * - * __halt_compiler(); - * - * @@ hello - * Hello, {{ planet }}! - * - * @@ goodbye - * Goodbye, cruel {{ planet }} - * - * Templates are deliniated by lines containing only `@@ name`. - * - * The InlineLoader is well-suited to micro-frameworks such as Silex: - * - * $app->register(new MustacheServiceProvider, array( - * 'mustache.loader' => new Mustache_Loader_InlineLoader(__FILE__, __COMPILER_HALT_OFFSET__) - * )); - * - * $app->get('/{name}', function ($name) use ($app) { - * return $app['mustache']->render('hello', compact('name')); - * }) - * ->value('name', 'world'); - * - * // ... - * - * __halt_compiler(); - * - * @@ hello - * Hello, {{ name }}! - */ -class Mustache_Loader_InlineLoader implements Mustache_Loader -{ - protected $fileName; - protected $offset; - protected $templates; - - /** - * The InlineLoader requires a filename and offset to process templates. - * - * The magic constants `__FILE__` and `__COMPILER_HALT_OFFSET__` are usually - * perfectly suited to the job: - * - * $loader = new Mustache_Loader_InlineLoader(__FILE__, __COMPILER_HALT_OFFSET__); - * - * Note that this only works if the loader is instantiated inside the same - * file as the inline templates. If the templates are located in another - * file, it would be necessary to manually specify the filename and offset. - * - * @param string $fileName The file to parse for inline templates - * @param int $offset A string offset for the start of the templates. - * This usually coincides with the `__halt_compiler` - * call, and the `__COMPILER_HALT_OFFSET__` - */ - public function __construct($fileName, $offset) - { - if (!is_file($fileName)) { - throw new Mustache_Exception_InvalidArgumentException('InlineLoader expects a valid filename.'); - } - - if (!is_int($offset) || $offset < 0) { - throw new Mustache_Exception_InvalidArgumentException('InlineLoader expects a valid file offset.'); - } - - $this->fileName = $fileName; - $this->offset = $offset; - } - - /** - * Load a Template by name. - * - * @throws Mustache_Exception_UnknownTemplateException If a template file is not found - * - * @param string $name - * - * @return string Mustache Template source - */ - public function load($name) - { - $this->loadTemplates(); - - if (!array_key_exists($name, $this->templates)) { - throw new Mustache_Exception_UnknownTemplateException($name); - } - - return $this->templates[$name]; - } - - /** - * Parse and load templates from the end of a source file. - */ - protected function loadTemplates() - { - if ($this->templates === null) { - $this->templates = array(); - $data = file_get_contents($this->fileName, false, null, $this->offset); - foreach (preg_split("/^@@(?= [\w\d\.]+$)/m", $data, -1) as $chunk) { - if (trim($chunk)) { - list($name, $content) = explode("\n", $chunk, 2); - $this->templates[trim($name)] = trim($content); - } - } - } - } -} diff --git a/webclient/vendor/mustache/mustache/src/Mustache/Loader/MutableLoader.php b/webclient/vendor/mustache/mustache/src/Mustache/Loader/MutableLoader.php deleted file mode 100644 index f228d907..00000000 --- a/webclient/vendor/mustache/mustache/src/Mustache/Loader/MutableLoader.php +++ /dev/null @@ -1,31 +0,0 @@ -load('{{ foo }}'); // '{{ foo }}' - * - * This is the default Template Loader instance used by Mustache: - * - * $m = new Mustache; - * $tpl = $m->loadTemplate('{{ foo }}'); - * echo $tpl->render(array('foo' => 'bar')); // "bar" - */ -class Mustache_Loader_StringLoader implements Mustache_Loader -{ - /** - * Load a Template by source. - * - * @param string $name Mustache Template source - * - * @return string Mustache Template source - */ - public function load($name) - { - return $name; - } -} diff --git a/webclient/vendor/mustache/mustache/src/Mustache/Logger.php b/webclient/vendor/mustache/mustache/src/Mustache/Logger.php deleted file mode 100644 index 324a7ce5..00000000 --- a/webclient/vendor/mustache/mustache/src/Mustache/Logger.php +++ /dev/null @@ -1,126 +0,0 @@ -log(Mustache_Logger::EMERGENCY, $message, $context); - } - - /** - * Action must be taken immediately. - * - * Example: Entire website down, database unavailable, etc. This should - * trigger the SMS alerts and wake you up. - * - * @param string $message - * @param array $context - */ - public function alert($message, array $context = array()) - { - $this->log(Mustache_Logger::ALERT, $message, $context); - } - - /** - * Critical conditions. - * - * Example: Application component unavailable, unexpected exception. - * - * @param string $message - * @param array $context - */ - public function critical($message, array $context = array()) - { - $this->log(Mustache_Logger::CRITICAL, $message, $context); - } - - /** - * Runtime errors that do not require immediate action but should typically - * be logged and monitored. - * - * @param string $message - * @param array $context - */ - public function error($message, array $context = array()) - { - $this->log(Mustache_Logger::ERROR, $message, $context); - } - - /** - * Exceptional occurrences that are not errors. - * - * Example: Use of deprecated APIs, poor use of an API, undesirable things - * that are not necessarily wrong. - * - * @param string $message - * @param array $context - */ - public function warning($message, array $context = array()) - { - $this->log(Mustache_Logger::WARNING, $message, $context); - } - - /** - * Normal but significant events. - * - * @param string $message - * @param array $context - */ - public function notice($message, array $context = array()) - { - $this->log(Mustache_Logger::NOTICE, $message, $context); - } - - /** - * Interesting events. - * - * Example: User logs in, SQL logs. - * - * @param string $message - * @param array $context - */ - public function info($message, array $context = array()) - { - $this->log(Mustache_Logger::INFO, $message, $context); - } - - /** - * Detailed debug information. - * - * @param string $message - * @param array $context - */ - public function debug($message, array $context = array()) - { - $this->log(Mustache_Logger::DEBUG, $message, $context); - } -} diff --git a/webclient/vendor/mustache/mustache/src/Mustache/Logger/StreamLogger.php b/webclient/vendor/mustache/mustache/src/Mustache/Logger/StreamLogger.php deleted file mode 100644 index efb32318..00000000 --- a/webclient/vendor/mustache/mustache/src/Mustache/Logger/StreamLogger.php +++ /dev/null @@ -1,194 +0,0 @@ - 100, - self::INFO => 200, - self::NOTICE => 250, - self::WARNING => 300, - self::ERROR => 400, - self::CRITICAL => 500, - self::ALERT => 550, - self::EMERGENCY => 600, - ); - - protected $level; - protected $stream = null; - protected $url = null; - - /** - * @throws InvalidArgumentException if the logging level is unknown - * - * @param resource|string $stream Resource instance or URL - * @param int $level The minimum logging level at which this handler will be triggered - */ - public function __construct($stream, $level = Mustache_Logger::ERROR) - { - $this->setLevel($level); - - if (is_resource($stream)) { - $this->stream = $stream; - } else { - $this->url = $stream; - } - } - - /** - * Close stream resources. - */ - public function __destruct() - { - if (is_resource($this->stream)) { - fclose($this->stream); - } - } - - /** - * Set the minimum logging level. - * - * @throws Mustache_Exception_InvalidArgumentException if the logging level is unknown - * - * @param int $level The minimum logging level which will be written - */ - public function setLevel($level) - { - if (!array_key_exists($level, self::$levels)) { - throw new Mustache_Exception_InvalidArgumentException(sprintf('Unexpected logging level: %s', $level)); - } - - $this->level = $level; - } - - /** - * Get the current minimum logging level. - * - * @return int - */ - public function getLevel() - { - return $this->level; - } - - /** - * Logs with an arbitrary level. - * - * @throws Mustache_Exception_InvalidArgumentException if the logging level is unknown - * - * @param mixed $level - * @param string $message - * @param array $context - */ - public function log($level, $message, array $context = array()) - { - if (!array_key_exists($level, self::$levels)) { - throw new Mustache_Exception_InvalidArgumentException(sprintf('Unexpected logging level: %s', $level)); - } - - if (self::$levels[$level] >= self::$levels[$this->level]) { - $this->writeLog($level, $message, $context); - } - } - - /** - * Write a record to the log. - * - * @throws Mustache_Exception_LogicException If neither a stream resource nor url is present - * @throws Mustache_Exception_RuntimeException If the stream url cannot be opened - * - * @param int $level The logging level - * @param string $message The log message - * @param array $context The log context - */ - protected function writeLog($level, $message, array $context = array()) - { - if (!is_resource($this->stream)) { - if (!isset($this->url)) { - throw new Mustache_Exception_LogicException('Missing stream url, the stream can not be opened. This may be caused by a premature call to close().'); - } - - $this->stream = fopen($this->url, 'a'); - if (!is_resource($this->stream)) { - // @codeCoverageIgnoreStart - throw new Mustache_Exception_RuntimeException(sprintf('The stream or file "%s" could not be opened.', $this->url)); - // @codeCoverageIgnoreEnd - } - } - - fwrite($this->stream, self::formatLine($level, $message, $context)); - } - - /** - * Gets the name of the logging level. - * - * @throws InvalidArgumentException if the logging level is unknown - * - * @param int $level - * - * @return string - */ - protected static function getLevelName($level) - { - return strtoupper($level); - } - - /** - * Format a log line for output. - * - * @param int $level The logging level - * @param string $message The log message - * @param array $context The log context - * - * @return string - */ - protected static function formatLine($level, $message, array $context = array()) - { - return sprintf( - "%s: %s\n", - self::getLevelName($level), - self::interpolateMessage($message, $context) - ); - } - - /** - * Interpolate context values into the message placeholders. - * - * @param string $message - * @param array $context - * - * @return string - */ - protected static function interpolateMessage($message, array $context = array()) - { - if (strpos($message, '{') === false) { - return $message; - } - - // build a replacement array with braces around the context keys - $replace = array(); - foreach ($context as $key => $val) { - $replace['{' . $key . '}'] = $val; - } - - // interpolate replacement values into the the message and return - return strtr($message, $replace); - } -} diff --git a/webclient/vendor/mustache/mustache/src/Mustache/Parser.php b/webclient/vendor/mustache/mustache/src/Mustache/Parser.php deleted file mode 100644 index adefebdd..00000000 --- a/webclient/vendor/mustache/mustache/src/Mustache/Parser.php +++ /dev/null @@ -1,317 +0,0 @@ -lineNum = -1; - $this->lineTokens = 0; - $this->pragmas = $this->defaultPragmas; - - $this->pragmaFilters = isset($this->pragmas[Mustache_Engine::PRAGMA_FILTERS]); - $this->pragmaBlocks = isset($this->pragmas[Mustache_Engine::PRAGMA_BLOCKS]); - - return $this->buildTree($tokens); - } - - /** - * Enable pragmas across all templates, regardless of the presence of pragma - * tags in the individual templates. - * - * @internal Users should set global pragmas in Mustache_Engine, not here :) - * - * @param string[] $pragmas - */ - public function setPragmas(array $pragmas) - { - $this->pragmas = array(); - foreach ($pragmas as $pragma) { - $this->enablePragma($pragma); - } - $this->defaultPragmas = $this->pragmas; - } - - /** - * Helper method for recursively building a parse tree. - * - * @throws Mustache_Exception_SyntaxException when nesting errors or mismatched section tags are encountered - * - * @param array &$tokens Set of Mustache tokens - * @param array $parent Parent token (default: null) - * - * @return array Mustache Token parse tree - */ - private function buildTree(array &$tokens, array $parent = null) - { - $nodes = array(); - - while (!empty($tokens)) { - $token = array_shift($tokens); - - if ($token[Mustache_Tokenizer::LINE] === $this->lineNum) { - $this->lineTokens++; - } else { - $this->lineNum = $token[Mustache_Tokenizer::LINE]; - $this->lineTokens = 0; - } - - if ($this->pragmaFilters && isset($token[Mustache_Tokenizer::NAME])) { - list($name, $filters) = $this->getNameAndFilters($token[Mustache_Tokenizer::NAME]); - if (!empty($filters)) { - $token[Mustache_Tokenizer::NAME] = $name; - $token[Mustache_Tokenizer::FILTERS] = $filters; - } - } - - switch ($token[Mustache_Tokenizer::TYPE]) { - case Mustache_Tokenizer::T_DELIM_CHANGE: - $this->checkIfTokenIsAllowedInParent($parent, $token); - $this->clearStandaloneLines($nodes, $tokens); - break; - - case Mustache_Tokenizer::T_SECTION: - case Mustache_Tokenizer::T_INVERTED: - $this->checkIfTokenIsAllowedInParent($parent, $token); - $this->clearStandaloneLines($nodes, $tokens); - $nodes[] = $this->buildTree($tokens, $token); - break; - - case Mustache_Tokenizer::T_END_SECTION: - if (!isset($parent)) { - $msg = sprintf( - 'Unexpected closing tag: /%s on line %d', - $token[Mustache_Tokenizer::NAME], - $token[Mustache_Tokenizer::LINE] - ); - throw new Mustache_Exception_SyntaxException($msg, $token); - } - - if ($token[Mustache_Tokenizer::NAME] !== $parent[Mustache_Tokenizer::NAME]) { - $msg = sprintf( - 'Nesting error: %s (on line %d) vs. %s (on line %d)', - $parent[Mustache_Tokenizer::NAME], - $parent[Mustache_Tokenizer::LINE], - $token[Mustache_Tokenizer::NAME], - $token[Mustache_Tokenizer::LINE] - ); - throw new Mustache_Exception_SyntaxException($msg, $token); - } - - $this->clearStandaloneLines($nodes, $tokens); - $parent[Mustache_Tokenizer::END] = $token[Mustache_Tokenizer::INDEX]; - $parent[Mustache_Tokenizer::NODES] = $nodes; - - return $parent; - - case Mustache_Tokenizer::T_PARTIAL: - $this->checkIfTokenIsAllowedInParent($parent, $token); - //store the whitespace prefix for laters! - if ($indent = $this->clearStandaloneLines($nodes, $tokens)) { - $token[Mustache_Tokenizer::INDENT] = $indent[Mustache_Tokenizer::VALUE]; - } - $nodes[] = $token; - break; - - case Mustache_Tokenizer::T_PARENT: - $this->checkIfTokenIsAllowedInParent($parent, $token); - $nodes[] = $this->buildTree($tokens, $token); - break; - - case Mustache_Tokenizer::T_BLOCK_VAR: - if ($this->pragmaBlocks) { - // BLOCKS pragma is enabled, let's do this! - if ($parent[Mustache_Tokenizer::TYPE] === Mustache_Tokenizer::T_PARENT) { - $token[Mustache_Tokenizer::TYPE] = Mustache_Tokenizer::T_BLOCK_ARG; - } - $this->clearStandaloneLines($nodes, $tokens); - $nodes[] = $this->buildTree($tokens, $token); - } else { - // pretend this was just a normal "escaped" token... - $token[Mustache_Tokenizer::TYPE] = Mustache_Tokenizer::T_ESCAPED; - // TODO: figure out how to figure out if there was a space after this dollar: - $token[Mustache_Tokenizer::NAME] = '$' . $token[Mustache_Tokenizer::NAME]; - $nodes[] = $token; - } - break; - - case Mustache_Tokenizer::T_PRAGMA: - $this->enablePragma($token[Mustache_Tokenizer::NAME]); - // no break - - case Mustache_Tokenizer::T_COMMENT: - $this->clearStandaloneLines($nodes, $tokens); - $nodes[] = $token; - break; - - default: - $nodes[] = $token; - break; - } - } - - if (isset($parent)) { - $msg = sprintf( - 'Missing closing tag: %s opened on line %d', - $parent[Mustache_Tokenizer::NAME], - $parent[Mustache_Tokenizer::LINE] - ); - throw new Mustache_Exception_SyntaxException($msg, $parent); - } - - return $nodes; - } - - /** - * Clear standalone line tokens. - * - * Returns a whitespace token for indenting partials, if applicable. - * - * @param array $nodes Parsed nodes - * @param array $tokens Tokens to be parsed - * - * @return array|null Resulting indent token, if any - */ - private function clearStandaloneLines(array &$nodes, array &$tokens) - { - if ($this->lineTokens > 1) { - // this is the third or later node on this line, so it can't be standalone - return; - } - - $prev = null; - if ($this->lineTokens === 1) { - // this is the second node on this line, so it can't be standalone - // unless the previous node is whitespace. - if ($prev = end($nodes)) { - if (!$this->tokenIsWhitespace($prev)) { - return; - } - } - } - - if ($next = reset($tokens)) { - // If we're on a new line, bail. - if ($next[Mustache_Tokenizer::LINE] !== $this->lineNum) { - return; - } - - // If the next token isn't whitespace, bail. - if (!$this->tokenIsWhitespace($next)) { - return; - } - - if (count($tokens) !== 1) { - // Unless it's the last token in the template, the next token - // must end in newline for this to be standalone. - if (substr($next[Mustache_Tokenizer::VALUE], -1) !== "\n") { - return; - } - } - - // Discard the whitespace suffix - array_shift($tokens); - } - - if ($prev) { - // Return the whitespace prefix, if any - return array_pop($nodes); - } - } - - /** - * Check whether token is a whitespace token. - * - * True if token type is T_TEXT and value is all whitespace characters. - * - * @param array $token - * - * @return bool True if token is a whitespace token - */ - private function tokenIsWhitespace(array $token) - { - if ($token[Mustache_Tokenizer::TYPE] === Mustache_Tokenizer::T_TEXT) { - return preg_match('/^\s*$/', $token[Mustache_Tokenizer::VALUE]); - } - - return false; - } - - /** - * Check whether a token is allowed inside a parent tag. - * - * @throws Mustache_Exception_SyntaxException if an invalid token is found inside a parent tag - * - * @param array|null $parent - * @param array $token - */ - private function checkIfTokenIsAllowedInParent($parent, array $token) - { - if ($parent[Mustache_Tokenizer::TYPE] === Mustache_Tokenizer::T_PARENT) { - throw new Mustache_Exception_SyntaxException('Illegal content in < parent tag', $token); - } - } - - /** - * Split a tag name into name and filters. - * - * @param string $name - * - * @return array [Tag name, Array of filters] - */ - private function getNameAndFilters($name) - { - $filters = array_map('trim', explode('|', $name)); - $name = array_shift($filters); - - return array($name, $filters); - } - - /** - * Enable a pragma. - * - * @param string $name - */ - private function enablePragma($name) - { - $this->pragmas[$name] = true; - - switch ($name) { - case Mustache_Engine::PRAGMA_BLOCKS: - $this->pragmaBlocks = true; - break; - - case Mustache_Engine::PRAGMA_FILTERS: - $this->pragmaFilters = true; - break; - } - } -} diff --git a/webclient/vendor/mustache/mustache/src/Mustache/Template.php b/webclient/vendor/mustache/mustache/src/Mustache/Template.php deleted file mode 100644 index 2b7771c4..00000000 --- a/webclient/vendor/mustache/mustache/src/Mustache/Template.php +++ /dev/null @@ -1,180 +0,0 @@ -mustache = $mustache; - } - - /** - * Mustache Template instances can be treated as a function and rendered by simply calling them. - * - * $m = new Mustache_Engine; - * $tpl = $m->loadTemplate('Hello, {{ name }}!'); - * echo $tpl(array('name' => 'World')); // "Hello, World!" - * - * @see Mustache_Template::render - * - * @param mixed $context Array or object rendering context (default: array()) - * - * @return string Rendered template - */ - public function __invoke($context = array()) - { - return $this->render($context); - } - - /** - * Render this template given the rendering context. - * - * @param mixed $context Array or object rendering context (default: array()) - * - * @return string Rendered template - */ - public function render($context = array()) - { - return $this->renderInternal( - $this->prepareContextStack($context) - ); - } - - /** - * Internal rendering method implemented by Mustache Template concrete subclasses. - * - * This is where the magic happens :) - * - * NOTE: This method is not part of the Mustache.php public API. - * - * @param Mustache_Context $context - * @param string $indent (default: '') - * - * @return string Rendered template - */ - abstract public function renderInternal(Mustache_Context $context, $indent = ''); - - /** - * Tests whether a value should be iterated over (e.g. in a section context). - * - * In most languages there are two distinct array types: list and hash (or whatever you want to call them). Lists - * should be iterated, hashes should be treated as objects. Mustache follows this paradigm for Ruby, Javascript, - * Java, Python, etc. - * - * PHP, however, treats lists and hashes as one primitive type: array. So Mustache.php needs a way to distinguish - * between between a list of things (numeric, normalized array) and a set of variables to be used as section context - * (associative array). In other words, this will be iterated over: - * - * $items = array( - * array('name' => 'foo'), - * array('name' => 'bar'), - * array('name' => 'baz'), - * ); - * - * ... but this will be used as a section context block: - * - * $items = array( - * 1 => array('name' => 'foo'), - * 'banana' => array('name' => 'bar'), - * 42 => array('name' => 'baz'), - * ); - * - * @param mixed $value - * - * @return bool True if the value is 'iterable' - */ - protected function isIterable($value) - { - switch (gettype($value)) { - case 'object': - return $value instanceof Traversable; - - case 'array': - $i = 0; - foreach ($value as $k => $v) { - if ($k !== $i++) { - return false; - } - } - - return true; - - default: - return false; - } - } - - /** - * Helper method to prepare the Context stack. - * - * Adds the Mustache HelperCollection to the stack's top context frame if helpers are present. - * - * @param mixed $context Optional first context frame (default: null) - * - * @return Mustache_Context - */ - protected function prepareContextStack($context = null) - { - $stack = new Mustache_Context(); - - $helpers = $this->mustache->getHelpers(); - if (!$helpers->isEmpty()) { - $stack->push($helpers); - } - - if (!empty($context)) { - $stack->push($context); - } - - return $stack; - } - - /** - * Resolve a context value. - * - * Invoke the value if it is callable, otherwise return the value. - * - * @param mixed $value - * @param Mustache_Context $context - * - * @return string - */ - protected function resolveValue($value, Mustache_Context $context) - { - if (($this->strictCallables ? is_object($value) : !is_string($value)) && is_callable($value)) { - return $this->mustache - ->loadLambda((string) call_user_func($value)) - ->renderInternal($context); - } - - return $value; - } -} diff --git a/webclient/vendor/mustache/mustache/src/Mustache/Tokenizer.php b/webclient/vendor/mustache/mustache/src/Mustache/Tokenizer.php deleted file mode 100644 index 27e4d05e..00000000 --- a/webclient/vendor/mustache/mustache/src/Mustache/Tokenizer.php +++ /dev/null @@ -1,322 +0,0 @@ -'; - const T_PARENT = '<'; - const T_DELIM_CHANGE = '='; - const T_ESCAPED = '_v'; - const T_UNESCAPED = '{'; - const T_UNESCAPED_2 = '&'; - const T_TEXT = '_t'; - const T_PRAGMA = '%'; - const T_BLOCK_VAR = '$'; - const T_BLOCK_ARG = '$arg'; - - // Valid token types - private static $tagTypes = array( - self::T_SECTION => true, - self::T_INVERTED => true, - self::T_END_SECTION => true, - self::T_COMMENT => true, - self::T_PARTIAL => true, - self::T_PARENT => true, - self::T_DELIM_CHANGE => true, - self::T_ESCAPED => true, - self::T_UNESCAPED => true, - self::T_UNESCAPED_2 => true, - self::T_PRAGMA => true, - self::T_BLOCK_VAR => true, - ); - - // Token properties - const TYPE = 'type'; - const NAME = 'name'; - const OTAG = 'otag'; - const CTAG = 'ctag'; - const LINE = 'line'; - const INDEX = 'index'; - const END = 'end'; - const INDENT = 'indent'; - const NODES = 'nodes'; - const VALUE = 'value'; - const FILTERS = 'filters'; - - private $state; - private $tagType; - private $buffer; - private $tokens; - private $seenTag; - private $line; - private $otag; - private $ctag; - private $otagLen; - private $ctagLen; - - /** - * Scan and tokenize template source. - * - * @throws Mustache_Exception_SyntaxException when mismatched section tags are encountered - * - * @param string $text Mustache template source to tokenize - * @param string $delimiters Optionally, pass initial opening and closing delimiters (default: null) - * - * @return array Set of Mustache tokens - */ - public function scan($text, $delimiters = null) - { - // Setting mbstring.func_overload makes things *really* slow. - // Let's do everyone a favor and scan this string as ASCII instead. - $encoding = null; - if (function_exists('mb_internal_encoding') && ini_get('mbstring.func_overload') & 2) { - $encoding = mb_internal_encoding(); - mb_internal_encoding('ASCII'); - } - - $this->reset(); - - if ($delimiters = trim($delimiters)) { - $this->setDelimiters($delimiters); - } - - $len = strlen($text); - for ($i = 0; $i < $len; $i++) { - switch ($this->state) { - case self::IN_TEXT: - if ($this->tagChange($this->otag, $this->otagLen, $text, $i)) { - $i--; - $this->flushBuffer(); - $this->state = self::IN_TAG_TYPE; - } else { - $char = $text[$i]; - $this->buffer .= $char; - if ($char === "\n") { - $this->flushBuffer(); - $this->line++; - } - } - break; - - case self::IN_TAG_TYPE: - $i += $this->otagLen - 1; - $char = $text[$i + 1]; - if (isset(self::$tagTypes[$char])) { - $tag = $char; - $this->tagType = $tag; - } else { - $tag = null; - $this->tagType = self::T_ESCAPED; - } - - if ($this->tagType === self::T_DELIM_CHANGE) { - $i = $this->changeDelimiters($text, $i); - $this->state = self::IN_TEXT; - } elseif ($this->tagType === self::T_PRAGMA) { - $i = $this->addPragma($text, $i); - $this->state = self::IN_TEXT; - } else { - if ($tag !== null) { - $i++; - } - $this->state = self::IN_TAG; - } - $this->seenTag = $i; - break; - - default: - if ($this->tagChange($this->ctag, $this->ctagLen, $text, $i)) { - $token = array( - self::TYPE => $this->tagType, - self::NAME => trim($this->buffer), - self::OTAG => $this->otag, - self::CTAG => $this->ctag, - self::LINE => $this->line, - self::INDEX => ($this->tagType === self::T_END_SECTION) ? $this->seenTag - $this->otagLen : $i + $this->ctagLen, - ); - - if ($this->tagType === self::T_UNESCAPED) { - // Clean up `{{{ tripleStache }}}` style tokens. - if ($this->ctag === '}}') { - if (($i + 2 < $len) && $text[$i + 2] === '}') { - $i++; - } else { - $msg = sprintf( - 'Mismatched tag delimiters: %s on line %d', - $token[self::NAME], - $token[self::LINE] - ); - - throw new Mustache_Exception_SyntaxException($msg, $token); - } - } else { - $lastName = $token[self::NAME]; - if (substr($lastName, -1) === '}') { - $token[self::NAME] = trim(substr($lastName, 0, -1)); - } else { - $msg = sprintf( - 'Mismatched tag delimiters: %s on line %d', - $token[self::NAME], - $token[self::LINE] - ); - - throw new Mustache_Exception_SyntaxException($msg, $token); - } - } - } - - $this->buffer = ''; - $i += $this->ctagLen - 1; - $this->state = self::IN_TEXT; - $this->tokens[] = $token; - } else { - $this->buffer .= $text[$i]; - } - break; - } - } - - $this->flushBuffer(); - - // Restore the user's encoding... - if ($encoding) { - mb_internal_encoding($encoding); - } - - return $this->tokens; - } - - /** - * Helper function to reset tokenizer internal state. - */ - private function reset() - { - $this->state = self::IN_TEXT; - $this->tagType = null; - $this->buffer = ''; - $this->tokens = array(); - $this->seenTag = false; - $this->line = 0; - $this->otag = '{{'; - $this->ctag = '}}'; - $this->otagLen = 2; - $this->ctagLen = 2; - } - - /** - * Flush the current buffer to a token. - */ - private function flushBuffer() - { - if (strlen($this->buffer) > 0) { - $this->tokens[] = array( - self::TYPE => self::T_TEXT, - self::LINE => $this->line, - self::VALUE => $this->buffer, - ); - $this->buffer = ''; - } - } - - /** - * Change the current Mustache delimiters. Set new `otag` and `ctag` values. - * - * @param string $text Mustache template source - * @param int $index Current tokenizer index - * - * @return int New index value - */ - private function changeDelimiters($text, $index) - { - $startIndex = strpos($text, '=', $index) + 1; - $close = '=' . $this->ctag; - $closeIndex = strpos($text, $close, $index); - - $this->setDelimiters(trim(substr($text, $startIndex, $closeIndex - $startIndex))); - - $this->tokens[] = array( - self::TYPE => self::T_DELIM_CHANGE, - self::LINE => $this->line, - ); - - return $closeIndex + strlen($close) - 1; - } - - /** - * Set the current Mustache `otag` and `ctag` delimiters. - * - * @param string $delimiters - */ - private function setDelimiters($delimiters) - { - list($otag, $ctag) = explode(' ', $delimiters); - $this->otag = $otag; - $this->ctag = $ctag; - $this->otagLen = strlen($otag); - $this->ctagLen = strlen($ctag); - } - - /** - * Add pragma token. - * - * Pragmas are hoisted to the front of the template, so all pragma tokens - * will appear at the front of the token list. - * - * @param string $text - * @param int $index - * - * @return int New index value - */ - private function addPragma($text, $index) - { - $end = strpos($text, $this->ctag, $index); - $pragma = trim(substr($text, $index + 2, $end - $index - 2)); - - // Pragmas are hoisted to the front of the template. - array_unshift($this->tokens, array( - self::TYPE => self::T_PRAGMA, - self::NAME => $pragma, - self::LINE => 0, - )); - - return $end + $this->ctagLen - 1; - } - - /** - * Test whether it's time to change tags. - * - * @param string $tag Current tag name - * @param int $tagLen Current tag name length - * @param string $text Mustache template source - * @param int $index Current tokenizer index - * - * @return bool True if this is a closing section tag - */ - private function tagChange($tag, $tagLen, $text, $index) - { - return substr($text, $index, $tagLen) === $tag; - } -} diff --git a/webclient/vendor/mustache/mustache/test/Mustache/Test/AutoloaderTest.php b/webclient/vendor/mustache/mustache/test/Mustache/Test/AutoloaderTest.php deleted file mode 100644 index 40af5eec..00000000 --- a/webclient/vendor/mustache/mustache/test/Mustache/Test/AutoloaderTest.php +++ /dev/null @@ -1,36 +0,0 @@ -assertTrue(spl_autoload_unregister(array($loader, 'autoload'))); - } - - public function testAutoloader() - { - $loader = new Mustache_Autoloader(dirname(__FILE__) . '/../../fixtures/autoloader'); - - $this->assertNull($loader->autoload('NonMustacheClass')); - $this->assertFalse(class_exists('NonMustacheClass')); - - $loader->autoload('Mustache_Foo'); - $this->assertTrue(class_exists('Mustache_Foo')); - - $loader->autoload('\Mustache_Bar'); - $this->assertTrue(class_exists('Mustache_Bar')); - } -} diff --git a/webclient/vendor/mustache/mustache/test/Mustache/Test/Cache/AbstractCacheTest.php b/webclient/vendor/mustache/mustache/test/Mustache/Test/Cache/AbstractCacheTest.php deleted file mode 100644 index d977388b..00000000 --- a/webclient/vendor/mustache/mustache/test/Mustache/Test/Cache/AbstractCacheTest.php +++ /dev/null @@ -1,44 +0,0 @@ -setLogger($logger); - $this->assertSame($logger, $cache->getLogger()); - } - - /** - * @expectedException Mustache_Exception_InvalidArgumentException - */ - public function testSetLoggerThrowsExceptions() - { - $cache = new CacheStub(); - $logger = new StdClass(); - $cache->setLogger($logger); - } -} - -class CacheStub extends Mustache_Cache_AbstractCache -{ - public function load($key) - { - // nada - } - - public function cache($key, $value) - { - // nada - } -} diff --git a/webclient/vendor/mustache/mustache/test/Mustache/Test/Cache/FilesystemCacheTest.php b/webclient/vendor/mustache/mustache/test/Mustache/Test/Cache/FilesystemCacheTest.php deleted file mode 100644 index 2413125c..00000000 --- a/webclient/vendor/mustache/mustache/test/Mustache/Test/Cache/FilesystemCacheTest.php +++ /dev/null @@ -1,36 +0,0 @@ -load($key); - - $this->assertFalse($loaded); - } - - public function testCachePut() - { - $key = 'some key'; - $value = 'cache($key, $value); - $loaded = $cache->load($key); - - $this->assertTrue($loaded); - } -} diff --git a/webclient/vendor/mustache/mustache/test/Mustache/Test/CompilerTest.php b/webclient/vendor/mustache/mustache/test/Mustache/Test/CompilerTest.php deleted file mode 100644 index 725a82c2..00000000 --- a/webclient/vendor/mustache/mustache/test/Mustache/Test/CompilerTest.php +++ /dev/null @@ -1,154 +0,0 @@ -compile($source, $tree, $name, $customEscaper, $charset, false, $entityFlags); - foreach ($expected as $contains) { - $this->assertContains($contains, $compiled); - } - } - - public function getCompileValues() - { - return array( - array('', array(), 'Banana', false, ENT_COMPAT, 'ISO-8859-1', array( - "\nclass Banana extends Mustache_Template", - 'return $buffer;', - )), - - array('', array($this->createTextToken('TEXT')), 'Monkey', false, ENT_COMPAT, 'UTF-8', array( - "\nclass Monkey extends Mustache_Template", - '$buffer .= $indent . \'TEXT\';', - 'return $buffer;', - )), - - array( - '', - array( - array( - Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_ESCAPED, - Mustache_Tokenizer::NAME => 'name', - ), - ), - 'Monkey', - true, - ENT_COMPAT, - 'ISO-8859-1', - array( - "\nclass Monkey extends Mustache_Template", - '$value = $this->resolveValue($context->find(\'name\'), $context);', - '$buffer .= $indent . call_user_func($this->mustache->getEscape(), $value);', - 'return $buffer;', - ), - ), - - array( - '', - array( - array( - Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_ESCAPED, - Mustache_Tokenizer::NAME => 'name', - ), - ), - 'Monkey', - false, - ENT_COMPAT, - 'ISO-8859-1', - array( - "\nclass Monkey extends Mustache_Template", - '$value = $this->resolveValue($context->find(\'name\'), $context);', - '$buffer .= $indent . htmlspecialchars($value, ' . ENT_COMPAT . ', \'ISO-8859-1\');', - 'return $buffer;', - ), - ), - - array( - '', - array( - array( - Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_ESCAPED, - Mustache_Tokenizer::NAME => 'name', - ), - ), - 'Monkey', - false, - ENT_QUOTES, - 'ISO-8859-1', - array( - "\nclass Monkey extends Mustache_Template", - '$value = $this->resolveValue($context->find(\'name\'), $context);', - '$buffer .= $indent . htmlspecialchars($value, ' . ENT_QUOTES . ', \'ISO-8859-1\');', - 'return $buffer;', - ), - ), - - array( - '', - array( - $this->createTextToken("foo\n"), - array( - Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_ESCAPED, - Mustache_Tokenizer::NAME => 'name', - ), - array( - Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_ESCAPED, - Mustache_Tokenizer::NAME => '.', - ), - $this->createTextToken("'bar'"), - ), - 'Monkey', - false, - ENT_COMPAT, - 'UTF-8', - array( - "\nclass Monkey extends Mustache_Template", - "\$buffer .= \$indent . 'foo\n';", - '$value = $this->resolveValue($context->find(\'name\'), $context);', - '$buffer .= htmlspecialchars($value, ' . ENT_COMPAT . ', \'UTF-8\');', - '$value = $this->resolveValue($context->last(), $context);', - '$buffer .= \'\\\'bar\\\'\';', - 'return $buffer;', - ), - ), - ); - } - - /** - * @expectedException Mustache_Exception_SyntaxException - */ - public function testCompilerThrowsSyntaxException() - { - $compiler = new Mustache_Compiler(); - $compiler->compile('', array(array(Mustache_Tokenizer::TYPE => 'invalid')), 'SomeClass'); - } - - /** - * @param string $value - */ - private function createTextToken($value) - { - return array( - Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_TEXT, - Mustache_Tokenizer::VALUE => $value, - ); - } -} diff --git a/webclient/vendor/mustache/mustache/test/Mustache/Test/ContextTest.php b/webclient/vendor/mustache/mustache/test/Mustache/Test/ContextTest.php deleted file mode 100644 index 029c2ba8..00000000 --- a/webclient/vendor/mustache/mustache/test/Mustache/Test/ContextTest.php +++ /dev/null @@ -1,282 +0,0 @@ -assertSame('', $one->find('foo')); - $this->assertSame('', $one->find('bar')); - - $two = new Mustache_Context(array( - 'foo' => 'FOO', - 'bar' => '', - )); - $this->assertEquals('FOO', $two->find('foo')); - $this->assertEquals('', $two->find('bar')); - - $obj = new StdClass(); - $obj->name = 'NAME'; - $three = new Mustache_Context($obj); - $this->assertSame($obj, $three->last()); - $this->assertEquals('NAME', $three->find('name')); - } - - public function testPushPopAndLast() - { - $context = new Mustache_Context(); - $this->assertFalse($context->last()); - - $dummy = new Mustache_Test_TestDummy(); - $context->push($dummy); - $this->assertSame($dummy, $context->last()); - $this->assertSame($dummy, $context->pop()); - $this->assertFalse($context->last()); - - $obj = new StdClass(); - $context->push($dummy); - $this->assertSame($dummy, $context->last()); - $context->push($obj); - $this->assertSame($obj, $context->last()); - $this->assertSame($obj, $context->pop()); - $this->assertSame($dummy, $context->pop()); - $this->assertFalse($context->last()); - } - - public function testFind() - { - $context = new Mustache_Context(); - - $dummy = new Mustache_Test_TestDummy(); - - $obj = new StdClass(); - $obj->name = 'obj'; - - $arr = array( - 'a' => array('b' => array('c' => 'see')), - 'b' => 'bee', - ); - - $string = 'some arbitrary string'; - - $context->push($dummy); - $this->assertEquals('dummy', $context->find('name')); - - $context->push($obj); - $this->assertEquals('obj', $context->find('name')); - - $context->pop(); - $this->assertEquals('dummy', $context->find('name')); - - $dummy->name = 'dummyer'; - $this->assertEquals('dummyer', $context->find('name')); - - $context->push($arr); - $this->assertEquals('bee', $context->find('b')); - $this->assertEquals('see', $context->findDot('a.b.c')); - - $dummy->name = 'dummy'; - - $context->push($string); - $this->assertSame($string, $context->last()); - $this->assertEquals('dummy', $context->find('name')); - $this->assertEquals('see', $context->findDot('a.b.c')); - $this->assertEquals('', $context->find('foo')); - $this->assertEquals('', $context->findDot('bar')); - } - - public function testArrayAccessFind() - { - $access = new Mustache_Test_TestArrayAccess(array( - 'a' => array('b' => array('c' => 'see')), - 'b' => 'bee', - )); - - $context = new Mustache_Context($access); - $this->assertEquals('bee', $context->find('b')); - $this->assertEquals('see', $context->findDot('a.b.c')); - $this->assertEquals(null, $context->findDot('a.b.c.d')); - } - - public function testAccessorPriority() - { - $context = new Mustache_Context(new Mustache_Test_AllTheThings()); - - $this->assertEquals('win', $context->find('foo'), 'method beats property'); - $this->assertEquals('win', $context->find('bar'), 'property beats ArrayAccess'); - $this->assertEquals('win', $context->find('baz'), 'ArrayAccess stands alone'); - $this->assertEquals('win', $context->find('qux'), 'ArrayAccess beats private property'); - } - - public function testAnchoredDotNotation() - { - $context = new Mustache_Context(); - - $a = array( - 'name' => 'a', - 'number' => 1, - ); - - $b = array( - 'number' => 2, - 'child' => array( - 'name' => 'baby bee', - ), - ); - - $c = array( - 'name' => 'cee', - ); - - $context->push($a); - $this->assertEquals('a', $context->find('name')); - $this->assertEquals('', $context->findDot('.name')); - $this->assertEquals('a', $context->findAnchoredDot('.name')); - $this->assertEquals(1, $context->find('number')); - $this->assertEquals('', $context->findDot('.number')); - $this->assertEquals(1, $context->findAnchoredDot('.number')); - - $context->push($b); - $this->assertEquals('a', $context->find('name')); - $this->assertEquals(2, $context->find('number')); - $this->assertEquals('', $context->findDot('.name')); - $this->assertEquals('', $context->findDot('.number')); - $this->assertEquals('', $context->findAnchoredDot('.name')); - $this->assertEquals(2, $context->findAnchoredDot('.number')); - $this->assertEquals('baby bee', $context->findDot('child.name')); - $this->assertEquals('', $context->findDot('.child.name')); - $this->assertEquals('baby bee', $context->findAnchoredDot('.child.name')); - - $context->push($c); - $this->assertEquals('cee', $context->find('name')); - $this->assertEquals('', $context->findDot('.name')); - $this->assertEquals('cee', $context->findAnchoredDot('.name')); - $this->assertEquals(2, $context->find('number')); - $this->assertEquals('', $context->findDot('.number')); - $this->assertEquals('', $context->findAnchoredDot('.number')); - $this->assertEquals('baby bee', $context->findDot('child.name')); - $this->assertEquals('', $context->findDot('.child.name')); - $this->assertEquals('', $context->findAnchoredDot('.child.name')); - } - - /** - * @expectedException Mustache_Exception_InvalidArgumentException - */ - public function testAnchoredDotNotationThrowsExceptions() - { - $context = new Mustache_Context(); - $context->push(array('a' => 1)); - $context->findAnchoredDot('a'); - } -} - -class Mustache_Test_TestDummy -{ - public $name = 'dummy'; - - public function __invoke() - { - // nothing - } - - public static function foo() - { - return ''; - } - - public function bar() - { - return ''; - } -} - -class Mustache_Test_TestArrayAccess implements ArrayAccess -{ - private $container = array(); - - public function __construct($array) - { - foreach ($array as $key => $value) { - $this->container[$key] = $value; - } - } - - public function offsetSet($offset, $value) - { - if (is_null($offset)) { - $this->container[] = $value; - } else { - $this->container[$offset] = $value; - } - } - - public function offsetExists($offset) - { - return isset($this->container[$offset]); - } - - public function offsetUnset($offset) - { - unset($this->container[$offset]); - } - - public function offsetGet($offset) - { - return isset($this->container[$offset]) ? $this->container[$offset] : null; - } -} - -class Mustache_Test_AllTheThings implements ArrayAccess -{ - public $foo = 'fail'; - public $bar = 'win'; - private $qux = 'fail'; - - public function foo() - { - return 'win'; - } - - public function offsetExists($offset) - { - return true; - } - - public function offsetGet($offset) - { - switch ($offset) { - case 'foo': - case 'bar': - return 'fail'; - - case 'baz': - case 'qux': - return 'win'; - - default: - return 'lolwhut'; - } - } - - public function offsetSet($offset, $value) - { - // nada - } - - public function offsetUnset($offset) - { - // nada - } -} diff --git a/webclient/vendor/mustache/mustache/test/Mustache/Test/EngineTest.php b/webclient/vendor/mustache/mustache/test/Mustache/Test/EngineTest.php deleted file mode 100644 index e8743d78..00000000 --- a/webclient/vendor/mustache/mustache/test/Mustache/Test/EngineTest.php +++ /dev/null @@ -1,361 +0,0 @@ - '__whot__', - 'cache' => self::$tempDir, - 'cache_file_mode' => 777, - 'logger' => $logger, - 'loader' => $loader, - 'partials_loader' => $partialsLoader, - 'partials' => array( - 'foo' => '{{ foo }}', - ), - 'helpers' => array( - 'foo' => array($this, 'getFoo'), - 'bar' => 'BAR', - ), - 'escape' => 'strtoupper', - 'entity_flags' => ENT_QUOTES, - 'charset' => 'ISO-8859-1', - 'pragmas' => array(Mustache_Engine::PRAGMA_FILTERS), - )); - - $this->assertSame($logger, $mustache->getLogger()); - $this->assertSame($loader, $mustache->getLoader()); - $this->assertSame($partialsLoader, $mustache->getPartialsLoader()); - $this->assertEquals('{{ foo }}', $partialsLoader->load('foo')); - $this->assertContains('__whot__', $mustache->getTemplateClassName('{{ foo }}')); - $this->assertEquals('strtoupper', $mustache->getEscape()); - $this->assertEquals(ENT_QUOTES, $mustache->getEntityFlags()); - $this->assertEquals('ISO-8859-1', $mustache->getCharset()); - $this->assertTrue($mustache->hasHelper('foo')); - $this->assertTrue($mustache->hasHelper('bar')); - $this->assertFalse($mustache->hasHelper('baz')); - $this->assertInstanceOf('Mustache_Cache_FilesystemCache', $mustache->getCache()); - $this->assertEquals(array(Mustache_Engine::PRAGMA_FILTERS), $mustache->getPragmas()); - } - - public static function getFoo() - { - return 'foo'; - } - - public function testRender() - { - $source = '{{ foo }}'; - $data = array('bar' => 'baz'); - $output = 'TEH OUTPUT'; - - $template = $this->getMockBuilder('Mustache_Template') - ->disableOriginalConstructor() - ->getMock(); - - $mustache = new MustacheStub(); - $mustache->template = $template; - - $template->expects($this->once()) - ->method('render') - ->with($data) - ->will($this->returnValue($output)); - - $this->assertEquals($output, $mustache->render($source, $data)); - $this->assertEquals($source, $mustache->source); - } - - public function testSettingServices() - { - $logger = new Mustache_Logger_StreamLogger(tmpfile()); - $loader = new Mustache_Loader_StringLoader(); - $tokenizer = new Mustache_Tokenizer(); - $parser = new Mustache_Parser(); - $compiler = new Mustache_Compiler(); - $mustache = new Mustache_Engine(); - $cache = new Mustache_Cache_FilesystemCache(self::$tempDir); - - $this->assertNotSame($logger, $mustache->getLogger()); - $mustache->setLogger($logger); - $this->assertSame($logger, $mustache->getLogger()); - - $this->assertNotSame($loader, $mustache->getLoader()); - $mustache->setLoader($loader); - $this->assertSame($loader, $mustache->getLoader()); - - $this->assertNotSame($loader, $mustache->getPartialsLoader()); - $mustache->setPartialsLoader($loader); - $this->assertSame($loader, $mustache->getPartialsLoader()); - - $this->assertNotSame($tokenizer, $mustache->getTokenizer()); - $mustache->setTokenizer($tokenizer); - $this->assertSame($tokenizer, $mustache->getTokenizer()); - - $this->assertNotSame($parser, $mustache->getParser()); - $mustache->setParser($parser); - $this->assertSame($parser, $mustache->getParser()); - - $this->assertNotSame($compiler, $mustache->getCompiler()); - $mustache->setCompiler($compiler); - $this->assertSame($compiler, $mustache->getCompiler()); - - $this->assertNotSame($cache, $mustache->getCache()); - $mustache->setCache($cache); - $this->assertSame($cache, $mustache->getCache()); - } - - /** - * @group functional - */ - public function testCache() - { - $mustache = new Mustache_Engine(array( - 'template_class_prefix' => '__whot__', - 'cache' => self::$tempDir, - )); - - $source = '{{ foo }}'; - $template = $mustache->loadTemplate($source); - $className = $mustache->getTemplateClassName($source); - - $this->assertInstanceOf($className, $template); - } - - public function testLambdaCache() - { - $mustache = new MustacheStub(array( - 'cache' => self::$tempDir, - 'cache_lambda_templates' => true, - )); - - $this->assertNotInstanceOf('Mustache_Cache_NoopCache', $mustache->getProtectedLambdaCache()); - $this->assertSame($mustache->getCache(), $mustache->getProtectedLambdaCache()); - } - - public function testWithoutLambdaCache() - { - $mustache = new MustacheStub(array( - 'cache' => self::$tempDir, - )); - - $this->assertInstanceOf('Mustache_Cache_NoopCache', $mustache->getProtectedLambdaCache()); - $this->assertNotSame($mustache->getCache(), $mustache->getProtectedLambdaCache()); - } - - /** - * @expectedException Mustache_Exception_InvalidArgumentException - * @dataProvider getBadEscapers - */ - public function testNonCallableEscapeThrowsException($escape) - { - new Mustache_Engine(array('escape' => $escape)); - } - - public function getBadEscapers() - { - return array( - array('nothing'), - array('foo', 'bar'), - ); - } - - /** - * @expectedException Mustache_Exception_RuntimeException - */ - public function testImmutablePartialsLoadersThrowException() - { - $mustache = new Mustache_Engine(array( - 'partials_loader' => new Mustache_Loader_StringLoader(), - )); - - $mustache->setPartials(array('foo' => '{{ foo }}')); - } - - public function testMissingPartialsTreatedAsEmptyString() - { - $mustache = new Mustache_Engine(array( - 'partials_loader' => new Mustache_Loader_ArrayLoader(array( - 'foo' => 'FOO', - 'baz' => 'BAZ', - )), - )); - - $this->assertEquals('FOOBAZ', $mustache->render('{{>foo}}{{>bar}}{{>baz}}', array())); - } - - public function testHelpers() - { - $foo = array($this, 'getFoo'); - $bar = 'BAR'; - $mustache = new Mustache_Engine(array('helpers' => array( - 'foo' => $foo, - 'bar' => $bar, - ))); - - $helpers = $mustache->getHelpers(); - $this->assertTrue($mustache->hasHelper('foo')); - $this->assertTrue($mustache->hasHelper('bar')); - $this->assertTrue($helpers->has('foo')); - $this->assertTrue($helpers->has('bar')); - $this->assertSame($foo, $mustache->getHelper('foo')); - $this->assertSame($bar, $mustache->getHelper('bar')); - - $mustache->removeHelper('bar'); - $this->assertFalse($mustache->hasHelper('bar')); - $mustache->addHelper('bar', $bar); - $this->assertSame($bar, $mustache->getHelper('bar')); - - $baz = array($this, 'wrapWithUnderscores'); - $this->assertFalse($mustache->hasHelper('baz')); - $this->assertFalse($helpers->has('baz')); - - $mustache->addHelper('baz', $baz); - $this->assertTrue($mustache->hasHelper('baz')); - $this->assertTrue($helpers->has('baz')); - - // ... and a functional test - $tpl = $mustache->loadTemplate('{{foo}} - {{bar}} - {{#baz}}qux{{/baz}}'); - $this->assertEquals('foo - BAR - __qux__', $tpl->render()); - $this->assertEquals('foo - BAR - __qux__', $tpl->render(array('qux' => "won't mess things up"))); - } - - public static function wrapWithUnderscores($text) - { - return '__' . $text . '__'; - } - - /** - * @expectedException Mustache_Exception_InvalidArgumentException - */ - public function testSetHelpersThrowsExceptions() - { - $mustache = new Mustache_Engine(); - $mustache->setHelpers('monkeymonkeymonkey'); - } - - /** - * @expectedException Mustache_Exception_InvalidArgumentException - */ - public function testSetLoggerThrowsExceptions() - { - $mustache = new Mustache_Engine(); - $mustache->setLogger(new StdClass()); - } - - public function testLoadPartialCascading() - { - $loader = new Mustache_Loader_ArrayLoader(array( - 'foo' => 'FOO', - )); - - $mustache = new Mustache_Engine(array('loader' => $loader)); - - $tpl = $mustache->loadTemplate('foo'); - - $this->assertSame($tpl, $mustache->loadPartial('foo')); - - $mustache->setPartials(array( - 'foo' => 'f00', - )); - - // setting partials overrides the default template loading fallback. - $this->assertNotSame($tpl, $mustache->loadPartial('foo')); - - // but it didn't overwrite the original template loader templates. - $this->assertSame($tpl, $mustache->loadTemplate('foo')); - } - - public function testPartialLoadFailLogging() - { - $name = tempnam(sys_get_temp_dir(), 'mustache-test'); - $mustache = new Mustache_Engine(array( - 'logger' => new Mustache_Logger_StreamLogger($name, Mustache_Logger::WARNING), - 'partials' => array( - 'foo' => 'FOO', - 'bar' => 'BAR', - ), - )); - - $result = $mustache->render('{{> foo }}{{> bar }}{{> baz }}', array()); - $this->assertEquals('FOOBAR', $result); - - $this->assertContains('WARNING: Partial not found: "baz"', file_get_contents($name)); - } - - public function testCacheWarningLogging() - { - list($name, $mustache) = $this->getLoggedMustache(Mustache_Logger::WARNING); - $mustache->render('{{ foo }}', array('foo' => 'FOO')); - $this->assertContains('WARNING: Template cache disabled, evaluating', file_get_contents($name)); - } - - public function testLoggingIsNotTooAnnoying() - { - list($name, $mustache) = $this->getLoggedMustache(); - $mustache->render('{{ foo }}{{> bar }}', array('foo' => 'FOO')); - $this->assertEmpty(file_get_contents($name)); - } - - public function testVerboseLoggingIsVerbose() - { - list($name, $mustache) = $this->getLoggedMustache(Mustache_Logger::DEBUG); - $mustache->render('{{ foo }}{{> bar }}', array('foo' => 'FOO')); - $log = file_get_contents($name); - $this->assertContains('DEBUG: Instantiating template: ', $log); - $this->assertContains('WARNING: Partial not found: "bar"', $log); - } - - /** - * @expectedException Mustache_Exception_InvalidArgumentException - */ - public function testUnknownPragmaThrowsException() - { - new Mustache_Engine(array( - 'pragmas' => array('UNKNOWN'), - )); - } - - private function getLoggedMustache($level = Mustache_Logger::ERROR) - { - $name = tempnam(sys_get_temp_dir(), 'mustache-test'); - $mustache = new Mustache_Engine(array( - 'logger' => new Mustache_Logger_StreamLogger($name, $level), - )); - - return array($name, $mustache); - } -} - -class MustacheStub extends Mustache_Engine -{ - public $source; - public $template; - - public function loadTemplate($source) - { - $this->source = $source; - - return $this->template; - } - - public function getProtectedLambdaCache() - { - return $this->getLambdaCache(); - } -} diff --git a/webclient/vendor/mustache/mustache/test/Mustache/Test/Exception/SyntaxExceptionTest.php b/webclient/vendor/mustache/mustache/test/Mustache/Test/Exception/SyntaxExceptionTest.php deleted file mode 100644 index 3f6b2e45..00000000 --- a/webclient/vendor/mustache/mustache/test/Mustache/Test/Exception/SyntaxExceptionTest.php +++ /dev/null @@ -1,39 +0,0 @@ - 'this')); - $this->assertTrue($e instanceof LogicException); - $this->assertTrue($e instanceof Mustache_Exception); - } - - public function testGetToken() - { - $token = array(Mustache_Tokenizer::TYPE => 'whatever'); - $e = new Mustache_Exception_SyntaxException('ignore this', $token); - $this->assertEquals($token, $e->getToken()); - } - - public function testPrevious() - { - if (version_compare(PHP_VERSION, '5.3.0', '<')) { - $this->markTestSkipped('Exception chaining requires at least PHP 5.3'); - } - - $previous = new Exception(); - $e = new Mustache_Exception_SyntaxException('foo', array(), $previous); - - $this->assertSame($previous, $e->getPrevious()); - } -} diff --git a/webclient/vendor/mustache/mustache/test/Mustache/Test/Exception/UnknownFilterExceptionTest.php b/webclient/vendor/mustache/mustache/test/Mustache/Test/Exception/UnknownFilterExceptionTest.php deleted file mode 100644 index 049c8426..00000000 --- a/webclient/vendor/mustache/mustache/test/Mustache/Test/Exception/UnknownFilterExceptionTest.php +++ /dev/null @@ -1,44 +0,0 @@ -assertTrue($e instanceof UnexpectedValueException); - $this->assertTrue($e instanceof Mustache_Exception); - } - - public function testMessage() - { - $e = new Mustache_Exception_UnknownFilterException('sausage'); - $this->assertEquals('Unknown filter: sausage', $e->getMessage()); - } - - public function testGetFilterName() - { - $e = new Mustache_Exception_UnknownFilterException('eggs'); - $this->assertEquals('eggs', $e->getFilterName()); - } - - public function testPrevious() - { - if (version_compare(PHP_VERSION, '5.3.0', '<')) { - $this->markTestSkipped('Exception chaining requires at least PHP 5.3'); - } - - $previous = new Exception(); - $e = new Mustache_Exception_UnknownFilterException('foo', $previous); - - $this->assertSame($previous, $e->getPrevious()); - } -} diff --git a/webclient/vendor/mustache/mustache/test/Mustache/Test/Exception/UnknownHelperExceptionTest.php b/webclient/vendor/mustache/mustache/test/Mustache/Test/Exception/UnknownHelperExceptionTest.php deleted file mode 100644 index b1682cdc..00000000 --- a/webclient/vendor/mustache/mustache/test/Mustache/Test/Exception/UnknownHelperExceptionTest.php +++ /dev/null @@ -1,43 +0,0 @@ -assertTrue($e instanceof InvalidArgumentException); - $this->assertTrue($e instanceof Mustache_Exception); - } - - public function testMessage() - { - $e = new Mustache_Exception_UnknownHelperException('beta'); - $this->assertEquals('Unknown helper: beta', $e->getMessage()); - } - - public function testGetHelperName() - { - $e = new Mustache_Exception_UnknownHelperException('gamma'); - $this->assertEquals('gamma', $e->getHelperName()); - } - - public function testPrevious() - { - if (version_compare(PHP_VERSION, '5.3.0', '<')) { - $this->markTestSkipped('Exception chaining requires at least PHP 5.3'); - } - - $previous = new Exception(); - $e = new Mustache_Exception_UnknownHelperException('foo', $previous); - $this->assertSame($previous, $e->getPrevious()); - } -} diff --git a/webclient/vendor/mustache/mustache/test/Mustache/Test/Exception/UnknownTemplateExceptionTest.php b/webclient/vendor/mustache/mustache/test/Mustache/Test/Exception/UnknownTemplateExceptionTest.php deleted file mode 100644 index 2452749b..00000000 --- a/webclient/vendor/mustache/mustache/test/Mustache/Test/Exception/UnknownTemplateExceptionTest.php +++ /dev/null @@ -1,43 +0,0 @@ -assertTrue($e instanceof InvalidArgumentException); - $this->assertTrue($e instanceof Mustache_Exception); - } - - public function testMessage() - { - $e = new Mustache_Exception_UnknownTemplateException('luigi'); - $this->assertEquals('Unknown template: luigi', $e->getMessage()); - } - - public function testGetTemplateName() - { - $e = new Mustache_Exception_UnknownTemplateException('yoshi'); - $this->assertEquals('yoshi', $e->getTemplateName()); - } - - public function testPrevious() - { - if (version_compare(PHP_VERSION, '5.3.0', '<')) { - $this->markTestSkipped('Exception chaining requires at least PHP 5.3'); - } - - $previous = new Exception(); - $e = new Mustache_Exception_UnknownTemplateException('foo', $previous); - $this->assertSame($previous, $e->getPrevious()); - } -} diff --git a/webclient/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/ClosureQuirksTest.php b/webclient/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/ClosureQuirksTest.php deleted file mode 100644 index c997a1d2..00000000 --- a/webclient/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/ClosureQuirksTest.php +++ /dev/null @@ -1,32 +0,0 @@ -mustache = new Mustache_Engine(); - } - - public function testClosuresDontLikeItWhenYouTouchTheirProperties() - { - $tpl = $this->mustache->loadTemplate('{{ foo.bar }}'); - $this->assertEquals('', $tpl->render(array('foo' => function () { - return 'FOO'; - }))); - } -} diff --git a/webclient/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/EngineTest.php b/webclient/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/EngineTest.php deleted file mode 100644 index 3ed70c76..00000000 --- a/webclient/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/EngineTest.php +++ /dev/null @@ -1,50 +0,0 @@ - $pragmas, - 'helpers' => $helpers, - )); - - $this->assertEquals($expect, $mustache->render($tpl, $data)); - } - - public function pragmaData() - { - $helpers = array( - 'longdate' => function (\DateTime $value) { - return $value->format('Y-m-d h:m:s'); - }, - ); - - $data = array( - 'date' => new DateTime('1/1/2000', new DateTimeZone('UTC')), - ); - - $tpl = '{{ date | longdate }}'; - - return array( - array(array(Mustache_Engine::PRAGMA_FILTERS), $helpers, $data, $tpl, '2000-01-01 12:01:00'), - array(array(), $helpers, $data, $tpl, ''), - ); - } -} diff --git a/webclient/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/FiltersTest.php b/webclient/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/FiltersTest.php deleted file mode 100644 index 7adc6638..00000000 --- a/webclient/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/FiltersTest.php +++ /dev/null @@ -1,187 +0,0 @@ -mustache = new Mustache_Engine(); - } - - /** - * @dataProvider singleFilterData - */ - public function testSingleFilter($tpl, $helpers, $data, $expect) - { - $this->mustache->setHelpers($helpers); - $this->assertEquals($expect, $this->mustache->render($tpl, $data)); - } - - public function singleFilterData() - { - $helpers = array( - 'longdate' => function (\DateTime $value) { - return $value->format('Y-m-d h:m:s'); - }, - 'echo' => function ($value) { - return array($value, $value, $value); - }, - ); - - return array( - array( - '{{% FILTERS }}{{ date | longdate }}', - $helpers, - (object) array('date' => new DateTime('1/1/2000', new DateTimeZone('UTC'))), - '2000-01-01 12:01:00', - ), - - array( - '{{% FILTERS }}{{# word | echo }}{{ . }}!{{/ word | echo }}', - $helpers, - array('word' => 'bacon'), - 'bacon!bacon!bacon!', - ), - ); - } - - public function testChainedFilters() - { - $tpl = $this->mustache->loadTemplate('{{% FILTERS }}{{ date | longdate | withbrackets }}'); - - $this->mustache->addHelper('longdate', function (\DateTime $value) { - return $value->format('Y-m-d h:m:s'); - }); - - $this->mustache->addHelper('withbrackets', function ($value) { - return sprintf('[[%s]]', $value); - }); - - $foo = new \StdClass(); - $foo->date = new DateTime('1/1/2000', new DateTimeZone('UTC')); - - $this->assertEquals('[[2000-01-01 12:01:00]]', $tpl->render($foo)); - } - - const CHAINED_SECTION_FILTERS_TPL = <<<'EOS' -{{% FILTERS }} -{{# word | echo | with_index }} -{{ key }}: {{ value }} -{{/ word | echo | with_index }} -EOS; - - public function testChainedSectionFilters() - { - $tpl = $this->mustache->loadTemplate(self::CHAINED_SECTION_FILTERS_TPL); - - $this->mustache->addHelper('echo', function ($value) { - return array($value, $value, $value); - }); - - $this->mustache->addHelper('with_index', function ($value) { - return array_map(function ($k, $v) { - return array( - 'key' => $k, - 'value' => $v, - ); - }, array_keys($value), $value); - }); - - $this->assertEquals("0: bacon\n1: bacon\n2: bacon\n", $tpl->render(array('word' => 'bacon'))); - } - - /** - * @dataProvider interpolateFirstData - */ - public function testInterpolateFirst($tpl, $data, $expect) - { - $this->assertEquals($expect, $this->mustache->render($tpl, $data)); - } - - public function interpolateFirstData() - { - $data = array( - 'foo' => 'FOO', - 'bar' => function ($value) { - return ($value === 'FOO') ? 'win!' : 'fail :('; - }, - ); - - return array( - array('{{% FILTERS }}{{ foo | bar }}', $data, 'win!'), - array('{{% FILTERS }}{{# foo | bar }}{{ . }}{{/ foo | bar }}', $data, 'win!'), - ); - } - - /** - * @expectedException Mustache_Exception_UnknownFilterException - * @dataProvider brokenPipeData - */ - public function testThrowsExceptionForBrokenPipes($tpl, $data) - { - $this->mustache->render($tpl, $data); - } - - public function brokenPipeData() - { - return array( - array('{{% FILTERS }}{{ foo | bar }}', array()), - array('{{% FILTERS }}{{ foo | bar }}', array('foo' => 'FOO')), - array('{{% FILTERS }}{{ foo | bar }}', array('foo' => 'FOO', 'bar' => 'BAR')), - array('{{% FILTERS }}{{ foo | bar }}', array('foo' => 'FOO', 'bar' => array(1, 2))), - array('{{% FILTERS }}{{ foo | bar | baz }}', array('foo' => 'FOO', 'bar' => function () { - return 'BAR'; - })), - array('{{% FILTERS }}{{ foo | bar | baz }}', array('foo' => 'FOO', 'baz' => function () { - return 'BAZ'; - })), - array('{{% FILTERS }}{{ foo | bar | baz }}', array('bar' => function () { - return 'BAR'; - })), - array('{{% FILTERS }}{{ foo | bar | baz }}', array('baz' => function () { - return 'BAZ'; - })), - array('{{% FILTERS }}{{ foo | bar.baz }}', array('foo' => 'FOO', 'bar' => function () { - return 'BAR'; - }, 'baz' => function () { - return 'BAZ'; - })), - - array('{{% FILTERS }}{{# foo | bar }}{{ . }}{{/ foo | bar }}', array()), - array('{{% FILTERS }}{{# foo | bar }}{{ . }}{{/ foo | bar }}', array('foo' => 'FOO')), - array('{{% FILTERS }}{{# foo | bar }}{{ . }}{{/ foo | bar }}', array('foo' => 'FOO', 'bar' => 'BAR')), - array('{{% FILTERS }}{{# foo | bar }}{{ . }}{{/ foo | bar }}', array('foo' => 'FOO', 'bar' => array(1, 2))), - array('{{% FILTERS }}{{# foo | bar | baz }}{{ . }}{{/ foo | bar | baz }}', array('foo' => 'FOO', 'bar' => function () { - return 'BAR'; - })), - array('{{% FILTERS }}{{# foo | bar | baz }}{{ . }}{{/ foo | bar | baz }}', array('foo' => 'FOO', 'baz' => function () { - return 'BAZ'; - })), - array('{{% FILTERS }}{{# foo | bar | baz }}{{ . }}{{/ foo | bar | baz }}', array('bar' => function () { - return 'BAR'; - })), - array('{{% FILTERS }}{{# foo | bar | baz }}{{ . }}{{/ foo | bar | baz }}', array('baz' => function () { - return 'BAZ'; - })), - array('{{% FILTERS }}{{# foo | bar.baz }}{{ . }}{{/ foo | bar.baz }}', array('foo' => 'FOO', 'bar' => function () { - return 'BAR'; - }, 'baz' => function () { - return 'BAZ'; - })), - ); - } -} diff --git a/webclient/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/HigherOrderSectionsTest.php b/webclient/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/HigherOrderSectionsTest.php deleted file mode 100644 index f926fdf7..00000000 --- a/webclient/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/HigherOrderSectionsTest.php +++ /dev/null @@ -1,77 +0,0 @@ -mustache = new Mustache_Engine(); - } - - public function testAnonymousFunctionSectionCallback() - { - $tpl = $this->mustache->loadTemplate('{{#wrapper}}{{name}}{{/wrapper}}'); - - $foo = new Mustache_Test_FiveThree_Functional_Foo(); - $foo->name = 'Mario'; - $foo->wrapper = function ($text) { - return sprintf('
    %s
    ', $text); - }; - - $this->assertEquals(sprintf('
    %s
    ', $foo->name), $tpl->render($foo)); - } - - public function testSectionCallback() - { - $one = $this->mustache->loadTemplate('{{name}}'); - $two = $this->mustache->loadTemplate('{{#wrap}}{{name}}{{/wrap}}'); - - $foo = new Mustache_Test_FiveThree_Functional_Foo(); - $foo->name = 'Luigi'; - - $this->assertEquals($foo->name, $one->render($foo)); - $this->assertEquals(sprintf('%s', $foo->name), $two->render($foo)); - } - - public function testViewArrayAnonymousSectionCallback() - { - $tpl = $this->mustache->loadTemplate('{{#wrap}}{{name}}{{/wrap}}'); - - $data = array( - 'name' => 'Bob', - 'wrap' => function ($text) { - return sprintf('[[%s]]', $text); - }, - ); - - $this->assertEquals(sprintf('[[%s]]', $data['name']), $tpl->render($data)); - } -} - -class Mustache_Test_FiveThree_Functional_Foo -{ - public $name = 'Justin'; - public $lorem = 'Lorem ipsum dolor sit amet,'; - public $wrap; - - public function __construct() - { - $this->wrap = function ($text) { - return sprintf('%s', $text); - }; - } -} diff --git a/webclient/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/LambdaHelperTest.php b/webclient/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/LambdaHelperTest.php deleted file mode 100644 index c67957e4..00000000 --- a/webclient/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/LambdaHelperTest.php +++ /dev/null @@ -1,67 +0,0 @@ -mustache = new Mustache_Engine(); - } - - public function testSectionLambdaHelper() - { - $one = $this->mustache->loadTemplate('{{name}}'); - $two = $this->mustache->loadTemplate('{{#lambda}}{{name}}{{/lambda}}'); - - $foo = new StdClass(); - $foo->name = 'Mario'; - $foo->lambda = function ($text, $mustache) { - return strtoupper($mustache->render($text)); - }; - - $this->assertEquals('Mario', $one->render($foo)); - $this->assertEquals('MARIO', $two->render($foo)); - } - - public function testSectionLambdaHelperRespectsDelimiterChanges() - { - $tpl = $this->mustache->loadTemplate("{{=<% %>=}}\n<%# bang %><% value %><%/ bang %>"); - - $data = new StdClass(); - $data->value = 'hello world'; - $data->bang = function ($text, $mustache) { - return $mustache->render($text) . '!'; - }; - - $this->assertEquals('hello world!', $tpl->render($data)); - } - - public function testLambdaHelperIsInvokable() - { - $one = $this->mustache->loadTemplate('{{name}}'); - $two = $this->mustache->loadTemplate('{{#lambda}}{{name}}{{/lambda}}'); - - $foo = new StdClass(); - $foo->name = 'Mario'; - $foo->lambda = function ($text, $render) { - return strtoupper($render($text)); - }; - - $this->assertEquals('Mario', $one->render($foo)); - $this->assertEquals('MARIO', $two->render($foo)); - } -} diff --git a/webclient/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/MustacheSpecTest.php b/webclient/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/MustacheSpecTest.php deleted file mode 100644 index d72686d5..00000000 --- a/webclient/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/MustacheSpecTest.php +++ /dev/null @@ -1,68 +0,0 @@ -markTestSkipped('Mustache spec submodule not initialized: run "git submodule update --init"'); - } - } - - /** - * @group lambdas - * @dataProvider loadLambdasSpec - */ - public function testLambdasSpec($desc, $source, $partials, $data, $expected) - { - $template = self::loadTemplate($source, $partials); - $this->assertEquals($expected, $template($this->prepareLambdasSpec($data)), $desc); - } - - public function loadLambdasSpec() - { - return $this->loadSpec('~lambdas'); - } - - /** - * Extract and lambdafy any 'lambda' values found in the $data array. - */ - private function prepareLambdasSpec($data) - { - foreach ($data as $key => $val) { - if ($key === 'lambda') { - if (!isset($val['php'])) { - $this->markTestSkipped(sprintf('PHP lambda test not implemented for this test.')); - } - - $func = $val['php']; - $data[$key] = function ($text = null) use ($func) { - return eval($func); - }; - } elseif (is_array($val)) { - $data[$key] = $this->prepareLambdasSpec($val); - } - } - - return $data; - } -} diff --git a/webclient/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/PartialLambdaIndentTest.php b/webclient/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/PartialLambdaIndentTest.php deleted file mode 100644 index 605003c2..00000000 --- a/webclient/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/PartialLambdaIndentTest.php +++ /dev/null @@ -1,94 +0,0 @@ - - {{> input }} - - -EOS; - $partial = <<<'EOS' - - -EOS; - - $expected = <<<'EOS' -
    - -
    - -EOS; - - $m = new Mustache_Engine(array( - 'partials' => array('input' => $partial), - )); - - $tpl = $m->loadTemplate($src); - - $data = new Mustache_Test_FiveThree_Functional_ClassWithLambda(); - $this->assertEquals($expected, $tpl->render($data)); - } - - public function testLambdaInterpolationsInsidePartialsAreIndentedProperly() - { - $src = <<<'EOS' -
    - {{> input }} -
    - -EOS; - $partial = <<<'EOS' - - -EOS; - - $expected = <<<'EOS' -
    - -
    - -EOS; - - $m = new Mustache_Engine(array( - 'partials' => array('input' => $partial), - )); - - $tpl = $m->loadTemplate($src); - - $data = new Mustache_Test_FiveThree_Functional_ClassWithLambda(); - $this->assertEquals($expected, $tpl->render($data)); - } -} - -class Mustache_Test_FiveThree_Functional_ClassWithLambda -{ - public function _t() - { - return function ($val) { - return strtoupper($val); - }; - } - - public function placeholder() - { - return function () { - return 'Enter your name'; - }; - } -} diff --git a/webclient/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/StrictCallablesTest.php b/webclient/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/StrictCallablesTest.php deleted file mode 100644 index fc910727..00000000 --- a/webclient/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/StrictCallablesTest.php +++ /dev/null @@ -1,135 +0,0 @@ - $strict)); - $tpl = $mustache->loadTemplate('{{# section }}{{ name }}{{/ section }}'); - - $data = new StdClass(); - $data->name = $name; - $data->section = $section; - - $this->assertEquals($expected, $tpl->render($data)); - } - - public function callables() - { - $lambda = function ($tpl, $mustache) { - return strtoupper($mustache->render($tpl)); - }; - - return array( - // Interpolation lambdas - array( - false, - array($this, 'instanceName'), - $lambda, - 'YOSHI', - ), - array( - false, - array(__CLASS__, 'staticName'), - $lambda, - 'YOSHI', - ), - array( - false, - function () { - return 'Yoshi'; - }, - $lambda, - 'YOSHI', - ), - - // Section lambdas - array( - false, - 'Yoshi', - array($this, 'instanceCallable'), - 'YOSHI', - ), - array( - false, - 'Yoshi', - array(__CLASS__, 'staticCallable'), - 'YOSHI', - ), - array( - false, - 'Yoshi', - $lambda, - 'YOSHI', - ), - - // Strict interpolation lambdas - array( - true, - function () { - return 'Yoshi'; - }, - $lambda, - 'YOSHI', - ), - - // Strict section lambdas - array( - true, - 'Yoshi', - array($this, 'instanceCallable'), - 'YoshiYoshi', - ), - array( - true, - 'Yoshi', - array(__CLASS__, 'staticCallable'), - 'YoshiYoshi', - ), - array( - true, - 'Yoshi', - function ($tpl, $mustache) { - return strtoupper($mustache->render($tpl)); - }, - 'YOSHI', - ), - ); - } - - public function instanceCallable($tpl, $mustache) - { - return strtoupper($mustache->render($tpl)); - } - - public static function staticCallable($tpl, $mustache) - { - return strtoupper($mustache->render($tpl)); - } - - public function instanceName() - { - return 'Yoshi'; - } - - public static function staticName() - { - return 'Yoshi'; - } -} diff --git a/webclient/vendor/mustache/mustache/test/Mustache/Test/Functional/CallTest.php b/webclient/vendor/mustache/mustache/test/Mustache/Test/Functional/CallTest.php deleted file mode 100644 index fddeacf2..00000000 --- a/webclient/vendor/mustache/mustache/test/Mustache/Test/Functional/CallTest.php +++ /dev/null @@ -1,40 +0,0 @@ -loadTemplate('{{# foo }}{{ label }}: {{ name }}{{/ foo }}'); - - $foo = new Mustache_Test_Functional_ClassWithCall(); - $foo->name = 'Bob'; - - $data = array('label' => 'name', 'foo' => $foo); - - $this->assertEquals('name: Bob', $tpl->render($data)); - } -} - -class Mustache_Test_Functional_ClassWithCall -{ - public $name; - - public function __call($method, $args) - { - return 'unknown value'; - } -} diff --git a/webclient/vendor/mustache/mustache/test/Mustache/Test/Functional/ExamplesTest.php b/webclient/vendor/mustache/mustache/test/Mustache/Test/Functional/ExamplesTest.php deleted file mode 100644 index d7ef51ac..00000000 --- a/webclient/vendor/mustache/mustache/test/Mustache/Test/Functional/ExamplesTest.php +++ /dev/null @@ -1,142 +0,0 @@ - $partials, - )); - $this->assertEquals($expected, $mustache->loadTemplate($source)->render($context)); - } - - /** - * Data provider for testExamples method. - * - * Loads examples from the test fixtures directory. - * - * This examples directory should contain any number of subdirectories, each of which contains - * three files: one Mustache class (.php), one Mustache template (.mustache), and one output file - * (.txt). Optionally, the directory may contain a folder full of partials. - * - * @return array - */ - public function getExamples() - { - $path = realpath(dirname(__FILE__) . '/../../../fixtures/examples'); - $examples = array(); - - $handle = opendir($path); - while (($file = readdir($handle)) !== false) { - if ($file === '.' || $file === '..') { - continue; - } - - $fullpath = $path . '/' . $file; - if (is_dir($fullpath)) { - $examples[$file] = $this->loadExample($fullpath); - } - } - closedir($handle); - - return $examples; - } - - /** - * Helper method to load an example given the full path. - * - * @param string $path - * - * @return array arguments for testExamples - */ - private function loadExample($path) - { - $context = null; - $source = null; - $partials = array(); - $expected = null; - - $handle = opendir($path); - while (($file = readdir($handle)) !== false) { - $fullpath = $path . '/' . $file; - $info = pathinfo($fullpath); - - if (is_dir($fullpath) && $info['basename'] === 'partials') { - // load partials - $partials = $this->loadPartials($fullpath); - } elseif (is_file($fullpath)) { - // load other files - switch ($info['extension']) { - case 'php': - require_once $fullpath; - $className = $info['filename']; - $context = new $className(); - break; - - case 'mustache': - $source = file_get_contents($fullpath); - break; - - case 'txt': - $expected = file_get_contents($fullpath); - break; - } - } - } - closedir($handle); - - return array($context, $source, $partials, $expected); - } - - /** - * Helper method to load partials given an example directory. - * - * @param string $path - * - * @return array $partials - */ - private function loadPartials($path) - { - $partials = array(); - - $handle = opendir($path); - while (($file = readdir($handle)) !== false) { - if ($file === '.' || $file === '..') { - continue; - } - - $fullpath = $path . '/' . $file; - $info = pathinfo($fullpath); - - if ($info['extension'] === 'mustache') { - $partials[$info['filename']] = file_get_contents($fullpath); - } - } - closedir($handle); - - return $partials; - } -} diff --git a/webclient/vendor/mustache/mustache/test/Mustache/Test/Functional/HigherOrderSectionsTest.php b/webclient/vendor/mustache/mustache/test/Mustache/Test/Functional/HigherOrderSectionsTest.php deleted file mode 100644 index e2f68b0b..00000000 --- a/webclient/vendor/mustache/mustache/test/Mustache/Test/Functional/HigherOrderSectionsTest.php +++ /dev/null @@ -1,177 +0,0 @@ -mustache = new Mustache_Engine(); - } - - /** - * @dataProvider sectionCallbackData - */ - public function testSectionCallback($data, $tpl, $expect) - { - $this->assertEquals($expect, $this->mustache->render($tpl, $data)); - } - - public function sectionCallbackData() - { - $foo = new Mustache_Test_Functional_Foo(); - $foo->doublewrap = array($foo, 'wrapWithBoth'); - - $bar = new Mustache_Test_Functional_Foo(); - $bar->trimmer = array(get_class($bar), 'staticTrim'); - - return array( - array($foo, '{{#doublewrap}}{{name}}{{/doublewrap}}', sprintf('%s', $foo->name)), - array($bar, '{{#trimmer}} {{name}} {{/trimmer}}', $bar->name), - ); - } - - public function testViewArraySectionCallback() - { - $tpl = $this->mustache->loadTemplate('{{#trim}} {{name}} {{/trim}}'); - - $foo = new Mustache_Test_Functional_Foo(); - - $data = array( - 'name' => 'Bob', - 'trim' => array(get_class($foo), 'staticTrim'), - ); - - $this->assertEquals($data['name'], $tpl->render($data)); - } - - public function testMonsters() - { - $tpl = $this->mustache->loadTemplate('{{#title}}{{title}} {{/title}}{{name}}'); - - $frank = new Mustache_Test_Functional_Monster(); - $frank->title = 'Dr.'; - $frank->name = 'Frankenstein'; - $this->assertEquals('Dr. Frankenstein', $tpl->render($frank)); - - $dracula = new Mustache_Test_Functional_Monster(); - $dracula->title = 'Count'; - $dracula->name = 'Dracula'; - $this->assertEquals('Count Dracula', $tpl->render($dracula)); - } - - public function testPassthroughOptimization() - { - $mustache = $this->getMock('Mustache_Engine', array('loadLambda')); - $mustache->expects($this->never()) - ->method('loadLambda'); - - $tpl = $mustache->loadTemplate('{{#wrap}}NAME{{/wrap}}'); - - $foo = new Mustache_Test_Functional_Foo(); - $foo->wrap = array($foo, 'wrapWithEm'); - - $this->assertEquals('NAME', $tpl->render($foo)); - } - - public function testWithoutPassthroughOptimization() - { - $mustache = $this->getMock('Mustache_Engine', array('loadLambda')); - $mustache->expects($this->once()) - ->method('loadLambda') - ->will($this->returnValue($mustache->loadTemplate('{{ name }}'))); - - $tpl = $mustache->loadTemplate('{{#wrap}}{{name}}{{/wrap}}'); - - $foo = new Mustache_Test_Functional_Foo(); - $foo->wrap = array($foo, 'wrapWithEm'); - - $this->assertEquals('' . $foo->name . '', $tpl->render($foo)); - } - - /** - * @dataProvider cacheLambdaTemplatesData - */ - public function testCacheLambdaTemplatesOptionWorks($dirName, $tplPrefix, $enable, $expect) - { - $cacheDir = $this->setUpCacheDir($dirName); - $mustache = new Mustache_Engine(array( - 'template_class_prefix' => $tplPrefix, - 'cache' => $cacheDir, - 'cache_lambda_templates' => $enable, - )); - - $tpl = $mustache->loadTemplate('{{#wrap}}{{name}}{{/wrap}}'); - $foo = new Mustache_Test_Functional_Foo(); - $foo->wrap = array($foo, 'wrapWithEm'); - $this->assertEquals('' . $foo->name . '', $tpl->render($foo)); - $this->assertCount($expect, glob($cacheDir . '/*.php')); - } - - public function cacheLambdaTemplatesData() - { - return array( - array('test_enabling_lambda_cache', '_TestEnablingLambdaCache_', true, 2), - array('test_disabling_lambda_cache', '_TestDisablingLambdaCache_', false, 1), - ); - } - - protected function setUpCacheDir($name) - { - $cacheDir = self::$tempDir . '/' . $name; - if (file_exists($cacheDir)) { - self::rmdir($cacheDir); - } - mkdir($cacheDir, 0777, true); - - return $cacheDir; - } -} - -class Mustache_Test_Functional_Foo -{ - public $name = 'Justin'; - public $lorem = 'Lorem ipsum dolor sit amet,'; - - public function wrapWithEm($text) - { - return sprintf('%s', $text); - } - - /** - * @param string $text - */ - public function wrapWithStrong($text) - { - return sprintf('%s', $text); - } - - public function wrapWithBoth($text) - { - return self::wrapWithStrong(self::wrapWithEm($text)); - } - - public static function staticTrim($text) - { - return trim($text); - } -} - -class Mustache_Test_Functional_Monster -{ - public $title; - public $name; -} diff --git a/webclient/vendor/mustache/mustache/test/Mustache/Test/Functional/InheritanceTest.php b/webclient/vendor/mustache/mustache/test/Mustache/Test/Functional/InheritanceTest.php deleted file mode 100644 index b39555f6..00000000 --- a/webclient/vendor/mustache/mustache/test/Mustache/Test/Functional/InheritanceTest.php +++ /dev/null @@ -1,526 +0,0 @@ -mustache = new Mustache_Engine(array( - 'pragmas' => array(Mustache_Engine::PRAGMA_BLOCKS), - )); - } - - public function getIllegalInheritanceExamples() - { - return array( - array( - array( - 'foo' => '{{$baz}}default content{{/baz}}', - ), - array( - 'bar' => 'set by user', - ), - '{{< foo }}{{# bar }}{{$ baz }}{{/ baz }}{{/ bar }}{{/ foo }}', - ), - array( - array( - 'foo' => '{{$baz}}default content{{/baz}}', - ), - array( - ), - '{{ '{{$baz}}default content{{/baz}}', - 'qux' => 'I am a partial', - ), - array( - ), - '{{qux}}{{$baz}}set by template{{/baz}}{{/foo}}', - ), - array( - array( - 'foo' => '{{$baz}}default content{{/baz}}', - ), - array(), - '{{=}}<%={{ }}=%>{{/foo}}', - ), - ); - } - - public function getLegalInheritanceExamples() - { - return array( - array( - array( - 'foo' => '{{$baz}}default content{{/baz}}', - ), - array( - 'bar' => 'set by user', - ), - '{{ '{{$baz}}default content{{/baz}}', - ), - array( - ), - '{{ '{{$baz}}defualt content{{/baz}}', - ), - array(), - '{{ '{{$a}}FAIL!{{/a}}', - 'bar' => 'WIN!!', - ), - array(), - '{{mustache->loadTemplate('{{$title}}Default title{{/title}}'); - - $data = array(); - - $this->assertEquals('Default title', $tpl->render($data)); - } - - public function testDefaultContentRendersVariables() - { - $tpl = $this->mustache->loadTemplate('{{$foo}}default {{bar}} content{{/foo}}'); - - $data = array( - 'bar' => 'baz', - ); - - $this->assertEquals('default baz content', $tpl->render($data)); - } - - public function testDefaultContentRendersTripleMustacheVariables() - { - $tpl = $this->mustache->loadTemplate('{{$foo}}default {{{bar}}} content{{/foo}}'); - - $data = array( - 'bar' => '', - ); - - $this->assertEquals('default content', $tpl->render($data)); - } - - public function testDefaultContentRendersSections() - { - $tpl = $this->mustache->loadTemplate( - '{{$foo}}default {{#bar}}{{baz}}{{/bar}} content{{/foo}}' - ); - - $data = array( - 'bar' => array('baz' => 'qux'), - ); - - $this->assertEquals('default qux content', $tpl->render($data)); - } - - public function testDefaultContentRendersNegativeSections() - { - $tpl = $this->mustache->loadTemplate( - '{{$foo}}default {{^bar}}{{baz}}{{/bar}} content{{/foo}}' - ); - - $data = array( - 'foo' => array('bar' => 'qux'), - 'baz' => 'three', - ); - - $this->assertEquals('default three content', $tpl->render($data)); - } - - public function testMustacheInjectionInDefaultContent() - { - $tpl = $this->mustache->loadTemplate( - '{{$foo}}default {{#bar}}{{baz}}{{/bar}} content{{/foo}}' - ); - - $data = array( - 'bar' => array('baz' => '{{qux}}'), - ); - - $this->assertEquals('default {{qux}} content', $tpl->render($data)); - } - - public function testDefaultContentRenderedInsideIncludedTemplates() - { - $partials = array( - 'include' => '{{$foo}}default content{{/foo}}', - ); - - $this->mustache->setPartials($partials); - - $tpl = $this->mustache->loadTemplate( - '{{assertEquals('default content', $tpl->render($data)); - } - - public function testOverriddenContent() - { - $partials = array( - 'super' => '...{{$title}}Default title{{/title}}...', - ); - - $this->mustache->setPartials($partials); - - $tpl = $this->mustache->loadTemplate( - '{{assertEquals('...sub template title...', $tpl->render($data)); - } - - public function testOverriddenPartial() - { - $partials = array( - 'partial' => '|{{$stuff}}...{{/stuff}}{{$default}} default{{/default}}|', - ); - - $this->mustache->setPartials($partials); - - $tpl = $this->mustache->loadTemplate( - 'test {{assertEquals('test |override1 default| |override2 default|', $tpl->render($data)); - } - - public function testDataDoesNotOverrideBlock() - { - $partials = array( - 'include' => '{{$var}}var in include{{/var}}', - ); - - $this->mustache->setPartials($partials); - - $tpl = $this->mustache->loadTemplate( - '{{ 'var in data', - ); - - $this->assertEquals('var in template', $tpl->render($data)); - } - - public function testDataDoesNotOverrideDefaultBlockValue() - { - $partials = array( - 'include' => '{{$var}}var in include{{/var}}', - ); - - $this->mustache->setPartials($partials); - - $tpl = $this->mustache->loadTemplate( - '{{ 'var in data', - ); - - $this->assertEquals('var in include', $tpl->render($data)); - } - - public function testOverridePartialWithNewlines() - { - $partials = array( - 'partial' => '{{$ballmer}}peaking{{/ballmer}}', - ); - - $this->mustache->setPartials($partials); - - $tpl = $this->mustache->loadTemplate( - "{{assertEquals("peaked\n\n:(\n", $tpl->render($data)); - } - - public function testInheritIndentationWhenOverridingAPartial() - { - $partials = array( - 'partial' => 'stop: - {{$nineties}}collaborate and listen{{/nineties}}', - ); - - $this->mustache->setPartials($partials); - - $tpl = $this->mustache->loadTemplate( - '{{assertEquals( - 'stop: - hammer time', - $tpl->render($data) - ); - } - - public function testInheritSpacingWhenOverridingAPartial() - { - $partials = array( - 'parent' => 'collaborate_and{{$id}}{{/id}}', - 'child' => '{{mustache->setPartials($partials); - - $tpl = $this->mustache->loadTemplate( - 'stop: - {{>child}}' - ); - - $data = array(); - - $this->assertEquals( - 'stop: - collaborate_and_listen', - $tpl->render($data) - ); - } - - public function testOverrideOneSubstitutionButNotTheOther() - { - $partials = array( - 'partial' => '{{$stuff}}default one{{/stuff}}, {{$stuff2}}default two{{/stuff2}}', - ); - - $this->mustache->setPartials($partials); - - $tpl = $this->mustache->loadTemplate( - '{{assertEquals('default one, override two', $tpl->render($data)); - } - - public function testSuperTemplatesWithNoParameters() - { - $partials = array( - 'include' => '{{$foo}}default content{{/foo}}', - ); - - $this->mustache->setPartials($partials); - - $tpl = $this->mustache->loadTemplate( - '{{>include}}|{{assertEquals('default content|default content', $tpl->render($data)); - } - - public function testRecursionInInheritedTemplates() - { - $partials = array( - 'include' => '{{$foo}}default content{{/foo}} {{$bar}}{{ '{{$foo}}include2 default content{{/foo}} {{mustache->setPartials($partials); - - $tpl = $this->mustache->loadTemplate( - '{{assertEquals('override override override don\'t recurse', $tpl->render($data)); - } - - public function testTopLevelSubstitutionsTakePrecedenceInMultilevelInheritance() - { - $partials = array( - 'parent' => '{{ '{{ '{{$a}}g{{/a}}', - ); - - $this->mustache->setPartials($partials); - - $tpl = $this->mustache->loadTemplate( - '{{assertEquals('c', $tpl->render($data)); - } - - public function testMultiLevelInheritanceNoSubChild() - { - $partials = array( - 'parent' => '{{ '{{ '{{$a}}g{{/a}}', - ); - - $this->mustache->setPartials($partials); - - $tpl = $this->mustache->loadTemplate( - '{{assertEquals('p', $tpl->render($data)); - } - - public function testIgnoreTextInsideSuperTemplatesButParseArgs() - { - $partials = array( - 'include' => '{{$foo}}default content{{/foo}}', - ); - - $this->mustache->setPartials($partials); - - $tpl = $this->mustache->loadTemplate( - '{{assertEquals('hmm', $tpl->render($data)); - } - - public function testIgnoreTextInsideSuperTemplates() - { - $partials = array( - 'include' => '{{$foo}}default content{{/foo}}', - ); - - $this->mustache->setPartials($partials); - - $tpl = $this->mustache->loadTemplate( - '{{assertEquals('default content', $tpl->render($data)); - } - - public function testInheritanceWithLazyEvaluation() - { - $partials = array( - 'parent' => '{{#items}}{{$value}}ignored{{/value}}{{/items}}', - ); - - $this->mustache->setPartials($partials); - - $tpl = $this->mustache->loadTemplate( - '{{{{/value}}{{/parent}}' - ); - - $data = array('items' => array(1, 2, 3)); - - $this->assertEquals('<1><2><3>', $tpl->render($data)); - } - - public function testInheritanceWithLazyEvaluationWhitespaceIgnored() - { - $partials = array( - 'parent' => '{{#items}}{{$value}}\n\nignored\n\n{{/value}}{{/items}}', - ); - - $this->mustache->setPartials($partials); - - $tpl = $this->mustache->loadTemplate( - '{{{{/value}}\n\n{{/parent}}' - ); - - $data = array('items' => array(1, 2, 3)); - - $this->assertEquals('<1><2><3>', $tpl->render($data)); - } - - public function testInheritanceWithLazyEvaluationAndSections() - { - $partials = array( - 'parent' => '{{#items}}{{$value}}\n\nignored {{.}} {{#more}} there is more {{/more}}\n\n{{/value}}{{/items}}', - ); - - $this->mustache->setPartials($partials); - - $tpl = $this->mustache->loadTemplate( - '{{{{#more}} there is less {{/more}}{{/value}}\n\n{{/parent}}' - ); - - $data = array('items' => array(1, 2, 3), 'more' => 'stuff'); - - $this->assertEquals('<1> there is less <2> there is less <3> there is less ', $tpl->render($data)); - } - - /** - * @dataProvider getIllegalInheritanceExamples - * @expectedException Mustache_Exception_SyntaxException - * @expectedExceptionMessage Illegal content in < parent tag - */ - public function testIllegalInheritanceExamples($partials, $data, $template) - { - $this->mustache->setPartials($partials); - $tpl = $this->mustache->loadTemplate($template); - $tpl->render($data); - } - - /** - * @dataProvider getLegalInheritanceExamples - */ - public function testLegalInheritanceExamples($partials, $data, $template, $expect) - { - $this->mustache->setPartials($partials); - $tpl = $this->mustache->loadTemplate($template); - $this->assertSame($expect, $tpl->render($data)); - } -} diff --git a/webclient/vendor/mustache/mustache/test/Mustache/Test/Functional/MustacheInjectionTest.php b/webclient/vendor/mustache/mustache/test/Mustache/Test/Functional/MustacheInjectionTest.php deleted file mode 100644 index d0bdb487..00000000 --- a/webclient/vendor/mustache/mustache/test/Mustache/Test/Functional/MustacheInjectionTest.php +++ /dev/null @@ -1,83 +0,0 @@ -mustache = new Mustache_Engine(); - } - - /** - * @dataProvider injectionData - */ - public function testInjection($tpl, $data, $partials, $expect) - { - $this->mustache->setPartials($partials); - $this->assertEquals($expect, $this->mustache->render($tpl, $data)); - } - - public function injectionData() - { - $interpolationData = array( - 'a' => '{{ b }}', - 'b' => 'FAIL', - ); - - $sectionData = array( - 'a' => true, - 'b' => '{{ c }}', - 'c' => 'FAIL', - ); - - $lambdaInterpolationData = array( - 'a' => array($this, 'lambdaInterpolationCallback'), - 'b' => '{{ c }}', - 'c' => 'FAIL', - ); - - $lambdaSectionData = array( - 'a' => array($this, 'lambdaSectionCallback'), - 'b' => '{{ c }}', - 'c' => 'FAIL', - ); - - return array( - array('{{ a }}', $interpolationData, array(), '{{ b }}'), - array('{{{ a }}}', $interpolationData, array(), '{{ b }}'), - - array('{{# a }}{{ b }}{{/ a }}', $sectionData, array(), '{{ c }}'), - array('{{# a }}{{{ b }}}{{/ a }}', $sectionData, array(), '{{ c }}'), - - array('{{> partial }}', $interpolationData, array('partial' => '{{ a }}'), '{{ b }}'), - array('{{> partial }}', $interpolationData, array('partial' => '{{{ a }}}'), '{{ b }}'), - - array('{{ a }}', $lambdaInterpolationData, array(), '{{ c }}'), - array('{{# a }}b{{/ a }}', $lambdaSectionData, array(), '{{ c }}'), - ); - } - - public static function lambdaInterpolationCallback() - { - return '{{ b }}'; - } - - public static function lambdaSectionCallback($text) - { - return '{{ ' . $text . ' }}'; - } -} diff --git a/webclient/vendor/mustache/mustache/test/Mustache/Test/Functional/MustacheSpecTest.php b/webclient/vendor/mustache/mustache/test/Mustache/Test/Functional/MustacheSpecTest.php deleted file mode 100644 index 7ba0843e..00000000 --- a/webclient/vendor/mustache/mustache/test/Mustache/Test/Functional/MustacheSpecTest.php +++ /dev/null @@ -1,121 +0,0 @@ -markTestSkipped('Mustache spec submodule not initialized: run "git submodule update --init"'); - } - } - - /** - * @group comments - * @dataProvider loadCommentSpec - */ - public function testCommentSpec($desc, $source, $partials, $data, $expected) - { - $template = self::loadTemplate($source, $partials); - $this->assertEquals($expected, $template->render($data), $desc); - } - - public function loadCommentSpec() - { - return $this->loadSpec('comments'); - } - - /** - * @group delimiters - * @dataProvider loadDelimitersSpec - */ - public function testDelimitersSpec($desc, $source, $partials, $data, $expected) - { - $template = self::loadTemplate($source, $partials); - $this->assertEquals($expected, $template->render($data), $desc); - } - - public function loadDelimitersSpec() - { - return $this->loadSpec('delimiters'); - } - - /** - * @group interpolation - * @dataProvider loadInterpolationSpec - */ - public function testInterpolationSpec($desc, $source, $partials, $data, $expected) - { - $template = self::loadTemplate($source, $partials); - $this->assertEquals($expected, $template->render($data), $desc); - } - - public function loadInterpolationSpec() - { - return $this->loadSpec('interpolation'); - } - - /** - * @group inverted - * @group inverted-sections - * @dataProvider loadInvertedSpec - */ - public function testInvertedSpec($desc, $source, $partials, $data, $expected) - { - $template = self::loadTemplate($source, $partials); - $this->assertEquals($expected, $template->render($data), $desc); - } - - public function loadInvertedSpec() - { - return $this->loadSpec('inverted'); - } - - /** - * @group partials - * @dataProvider loadPartialsSpec - */ - public function testPartialsSpec($desc, $source, $partials, $data, $expected) - { - $template = self::loadTemplate($source, $partials); - $this->assertEquals($expected, $template->render($data), $desc); - } - - public function loadPartialsSpec() - { - return $this->loadSpec('partials'); - } - - /** - * @group sections - * @dataProvider loadSectionsSpec - */ - public function testSectionsSpec($desc, $source, $partials, $data, $expected) - { - $template = self::loadTemplate($source, $partials); - $this->assertEquals($expected, $template->render($data), $desc); - } - - public function loadSectionsSpec() - { - return $this->loadSpec('sections'); - } -} diff --git a/webclient/vendor/mustache/mustache/test/Mustache/Test/Functional/NestedPartialIndentTest.php b/webclient/vendor/mustache/mustache/test/Mustache/Test/Functional/NestedPartialIndentTest.php deleted file mode 100644 index 673339c3..00000000 --- a/webclient/vendor/mustache/mustache/test/Mustache/Test/Functional/NestedPartialIndentTest.php +++ /dev/null @@ -1,45 +0,0 @@ - $partials, - )); - $tpl = $m->loadTemplate($src); - $this->assertEquals($expected, $tpl->render()); - } - - public function partialsAndStuff() - { - $partials = array( - 'a' => ' {{> b }}', - 'b' => ' {{> d }}', - 'c' => ' {{> d }}{{> d }}', - 'd' => 'D!', - ); - - return array( - array(' {{> a }}', $partials, ' D!'), - array(' {{> b }}', $partials, ' D!'), - array(' {{> c }}', $partials, ' D!D!'), - ); - } -} diff --git a/webclient/vendor/mustache/mustache/test/Mustache/Test/Functional/ObjectSectionTest.php b/webclient/vendor/mustache/mustache/test/Mustache/Test/Functional/ObjectSectionTest.php deleted file mode 100644 index 963b0f78..00000000 --- a/webclient/vendor/mustache/mustache/test/Mustache/Test/Functional/ObjectSectionTest.php +++ /dev/null @@ -1,110 +0,0 @@ -mustache = new Mustache_Engine(); - } - - public function testBasicObject() - { - $tpl = $this->mustache->loadTemplate('{{#foo}}{{name}}{{/foo}}'); - $this->assertEquals('Foo', $tpl->render(new Mustache_Test_Functional_Alpha())); - } - - /** - * @group magic_methods - */ - public function testObjectWithGet() - { - $tpl = $this->mustache->loadTemplate('{{#foo}}{{name}}{{/foo}}'); - $this->assertEquals('Foo', $tpl->render(new Mustache_Test_Functional_Beta())); - } - - /** - * @group magic_methods - */ - public function testSectionObjectWithGet() - { - $tpl = $this->mustache->loadTemplate('{{#bar}}{{#foo}}{{name}}{{/foo}}{{/bar}}'); - $this->assertEquals('Foo', $tpl->render(new Mustache_Test_Functional_Gamma())); - } - - public function testSectionObjectWithFunction() - { - $tpl = $this->mustache->loadTemplate('{{#foo}}{{name}}{{/foo}}'); - $alpha = new Mustache_Test_Functional_Alpha(); - $alpha->foo = new Mustache_Test_Functional_Delta(); - $this->assertEquals('Foo', $tpl->render($alpha)); - } -} - -class Mustache_Test_Functional_Alpha -{ - public $foo; - - public function __construct() - { - $this->foo = new StdClass(); - $this->foo->name = 'Foo'; - $this->foo->number = 1; - } -} - -class Mustache_Test_Functional_Beta -{ - protected $_data = array(); - - public function __construct() - { - $this->_data['foo'] = new StdClass(); - $this->_data['foo']->name = 'Foo'; - $this->_data['foo']->number = 1; - } - - public function __isset($name) - { - return array_key_exists($name, $this->_data); - } - - public function __get($name) - { - return $this->_data[$name]; - } -} - -class Mustache_Test_Functional_Gamma -{ - public $bar; - - public function __construct() - { - $this->bar = new Mustache_Test_Functional_Beta(); - } -} - -class Mustache_Test_Functional_Delta -{ - protected $_name = 'Foo'; - - public function name() - { - return $this->_name; - } -} diff --git a/webclient/vendor/mustache/mustache/test/Mustache/Test/FunctionalTestCase.php b/webclient/vendor/mustache/mustache/test/Mustache/Test/FunctionalTestCase.php deleted file mode 100644 index 59185d18..00000000 --- a/webclient/vendor/mustache/mustache/test/Mustache/Test/FunctionalTestCase.php +++ /dev/null @@ -1,47 +0,0 @@ - $foo, - 'bar' => $bar, - )); - - $this->assertSame($foo, $helpers->get('foo')); - $this->assertSame($bar, $helpers->get('bar')); - } - - public static function getFoo() - { - echo 'foo'; - } - - public function testAccessorsAndMutators() - { - $foo = array($this, 'getFoo'); - $bar = 'BAR'; - - $helpers = new Mustache_HelperCollection(); - $this->assertTrue($helpers->isEmpty()); - $this->assertFalse($helpers->has('foo')); - $this->assertFalse($helpers->has('bar')); - - $helpers->add('foo', $foo); - $this->assertFalse($helpers->isEmpty()); - $this->assertTrue($helpers->has('foo')); - $this->assertFalse($helpers->has('bar')); - - $helpers->add('bar', $bar); - $this->assertFalse($helpers->isEmpty()); - $this->assertTrue($helpers->has('foo')); - $this->assertTrue($helpers->has('bar')); - - $helpers->remove('foo'); - $this->assertFalse($helpers->isEmpty()); - $this->assertFalse($helpers->has('foo')); - $this->assertTrue($helpers->has('bar')); - } - - public function testMagicMethods() - { - $foo = array($this, 'getFoo'); - $bar = 'BAR'; - - $helpers = new Mustache_HelperCollection(); - $this->assertTrue($helpers->isEmpty()); - $this->assertFalse($helpers->has('foo')); - $this->assertFalse($helpers->has('bar')); - $this->assertFalse(isset($helpers->foo)); - $this->assertFalse(isset($helpers->bar)); - - $helpers->foo = $foo; - $this->assertFalse($helpers->isEmpty()); - $this->assertTrue($helpers->has('foo')); - $this->assertFalse($helpers->has('bar')); - $this->assertTrue(isset($helpers->foo)); - $this->assertFalse(isset($helpers->bar)); - - $helpers->bar = $bar; - $this->assertFalse($helpers->isEmpty()); - $this->assertTrue($helpers->has('foo')); - $this->assertTrue($helpers->has('bar')); - $this->assertTrue(isset($helpers->foo)); - $this->assertTrue(isset($helpers->bar)); - - unset($helpers->foo); - $this->assertFalse($helpers->isEmpty()); - $this->assertFalse($helpers->has('foo')); - $this->assertTrue($helpers->has('bar')); - $this->assertFalse(isset($helpers->foo)); - $this->assertTrue(isset($helpers->bar)); - } - - /** - * @dataProvider getInvalidHelperArguments - */ - public function testHelperCollectionIsntAfraidToThrowExceptions($helpers = array(), $actions = array(), $exception = null) - { - if ($exception) { - $this->setExpectedException($exception); - } - - $helpers = new Mustache_HelperCollection($helpers); - - foreach ($actions as $method => $args) { - call_user_func_array(array($helpers, $method), $args); - } - } - - public function getInvalidHelperArguments() - { - return array( - array( - 'not helpers', - array(), - 'InvalidArgumentException', - ), - array( - array(), - array('get' => array('foo')), - 'InvalidArgumentException', - ), - array( - array('foo' => 'FOO'), - array('get' => array('foo')), - null, - ), - array( - array('foo' => 'FOO'), - array('get' => array('bar')), - 'InvalidArgumentException', - ), - array( - array('foo' => 'FOO'), - array( - 'add' => array('bar', 'BAR'), - 'get' => array('bar'), - ), - null, - ), - array( - array('foo' => 'FOO'), - array( - 'get' => array('foo'), - 'remove' => array('foo'), - ), - null, - ), - array( - array('foo' => 'FOO'), - array( - 'remove' => array('foo'), - 'get' => array('foo'), - ), - 'InvalidArgumentException', - ), - array( - array(), - array('remove' => array('foo')), - 'InvalidArgumentException', - ), - ); - } -} diff --git a/webclient/vendor/mustache/mustache/test/Mustache/Test/Loader/ArrayLoaderTest.php b/webclient/vendor/mustache/mustache/test/Mustache/Test/Loader/ArrayLoaderTest.php deleted file mode 100644 index 9960c9b7..00000000 --- a/webclient/vendor/mustache/mustache/test/Mustache/Test/Loader/ArrayLoaderTest.php +++ /dev/null @@ -1,52 +0,0 @@ - 'bar', - )); - - $this->assertEquals('bar', $loader->load('foo')); - } - - public function testSetAndLoadTemplates() - { - $loader = new Mustache_Loader_ArrayLoader(array( - 'foo' => 'bar', - )); - $this->assertEquals('bar', $loader->load('foo')); - - $loader->setTemplate('baz', 'qux'); - $this->assertEquals('qux', $loader->load('baz')); - - $loader->setTemplates(array( - 'foo' => 'FOO', - 'baz' => 'BAZ', - )); - $this->assertEquals('FOO', $loader->load('foo')); - $this->assertEquals('BAZ', $loader->load('baz')); - } - - /** - * @expectedException Mustache_Exception_UnknownTemplateException - */ - public function testMissingTemplatesThrowExceptions() - { - $loader = new Mustache_Loader_ArrayLoader(); - $loader->load('not_a_real_template'); - } -} diff --git a/webclient/vendor/mustache/mustache/test/Mustache/Test/Loader/CascadingLoaderTest.php b/webclient/vendor/mustache/mustache/test/Mustache/Test/Loader/CascadingLoaderTest.php deleted file mode 100644 index 6d97d8d9..00000000 --- a/webclient/vendor/mustache/mustache/test/Mustache/Test/Loader/CascadingLoaderTest.php +++ /dev/null @@ -1,40 +0,0 @@ - '{{ foo }}')), - new Mustache_Loader_ArrayLoader(array('bar' => '{{#bar}}BAR{{/bar}}')), - )); - - $this->assertEquals('{{ foo }}', $loader->load('foo')); - $this->assertEquals('{{#bar}}BAR{{/bar}}', $loader->load('bar')); - } - - /** - * @expectedException Mustache_Exception_UnknownTemplateException - */ - public function testMissingTemplatesThrowExceptions() - { - $loader = new Mustache_Loader_CascadingLoader(array( - new Mustache_Loader_ArrayLoader(array('foo' => '{{ foo }}')), - new Mustache_Loader_ArrayLoader(array('bar' => '{{#bar}}BAR{{/bar}}')), - )); - - $loader->load('not_a_real_template'); - } -} diff --git a/webclient/vendor/mustache/mustache/test/Mustache/Test/Loader/FilesystemLoaderTest.php b/webclient/vendor/mustache/mustache/test/Mustache/Test/Loader/FilesystemLoaderTest.php deleted file mode 100644 index 75880d40..00000000 --- a/webclient/vendor/mustache/mustache/test/Mustache/Test/Loader/FilesystemLoaderTest.php +++ /dev/null @@ -1,80 +0,0 @@ - '.ms')); - $this->assertEquals('alpha contents', $loader->load('alpha')); - $this->assertEquals('beta contents', $loader->load('beta.ms')); - } - - public function testTrailingSlashes() - { - $baseDir = dirname(__FILE__) . '/../../../fixtures/templates/'; - $loader = new Mustache_Loader_FilesystemLoader($baseDir); - $this->assertEquals('one contents', $loader->load('one')); - } - - public function testConstructorWithProtocol() - { - $baseDir = realpath(dirname(__FILE__) . '/../../../fixtures/templates'); - - $loader = new Mustache_Loader_FilesystemLoader('test://' . $baseDir, array('extension' => '.ms')); - $this->assertEquals('alpha contents', $loader->load('alpha')); - $this->assertEquals('beta contents', $loader->load('beta.ms')); - } - - public function testLoadTemplates() - { - $baseDir = realpath(dirname(__FILE__) . '/../../../fixtures/templates'); - $loader = new Mustache_Loader_FilesystemLoader($baseDir); - $this->assertEquals('one contents', $loader->load('one')); - $this->assertEquals('two contents', $loader->load('two.mustache')); - } - - public function testEmptyExtensionString() - { - $baseDir = realpath(dirname(__FILE__) . '/../../../fixtures/templates'); - - $loader = new Mustache_Loader_FilesystemLoader($baseDir, array('extension' => '')); - $this->assertEquals('one contents', $loader->load('one.mustache')); - $this->assertEquals('alpha contents', $loader->load('alpha.ms')); - - $loader = new Mustache_Loader_FilesystemLoader($baseDir, array('extension' => null)); - $this->assertEquals('two contents', $loader->load('two.mustache')); - $this->assertEquals('beta contents', $loader->load('beta.ms')); - } - - /** - * @expectedException Mustache_Exception_RuntimeException - */ - public function testMissingBaseDirThrowsException() - { - new Mustache_Loader_FilesystemLoader(dirname(__FILE__) . '/not_a_directory'); - } - - /** - * @expectedException Mustache_Exception_UnknownTemplateException - */ - public function testMissingTemplateThrowsException() - { - $baseDir = realpath(dirname(__FILE__) . '/../../../fixtures/templates'); - $loader = new Mustache_Loader_FilesystemLoader($baseDir); - - $loader->load('fake'); - } -} diff --git a/webclient/vendor/mustache/mustache/test/Mustache/Test/Loader/InlineLoaderTest.php b/webclient/vendor/mustache/mustache/test/Mustache/Test/Loader/InlineLoaderTest.php deleted file mode 100644 index 2f1d4140..00000000 --- a/webclient/vendor/mustache/mustache/test/Mustache/Test/Loader/InlineLoaderTest.php +++ /dev/null @@ -1,56 +0,0 @@ -assertEquals('{{ foo }}', $loader->load('foo')); - $this->assertEquals('{{#bar}}BAR{{/bar}}', $loader->load('bar')); - } - - /** - * @expectedException Mustache_Exception_UnknownTemplateException - */ - public function testMissingTemplatesThrowExceptions() - { - $loader = new Mustache_Loader_InlineLoader(__FILE__, __COMPILER_HALT_OFFSET__); - $loader->load('not_a_real_template'); - } - - /** - * @expectedException Mustache_Exception_InvalidArgumentException - */ - public function testInvalidOffsetThrowsException() - { - new Mustache_Loader_InlineLoader(__FILE__, 'notanumber'); - } - - /** - * @expectedException Mustache_Exception_InvalidArgumentException - */ - public function testInvalidFileThrowsException() - { - new Mustache_Loader_InlineLoader('notarealfile', __COMPILER_HALT_OFFSET__); - } -} - -__halt_compiler(); - -@@ foo -{{ foo }} - -@@ bar -{{#bar}}BAR{{/bar}} diff --git a/webclient/vendor/mustache/mustache/test/Mustache/Test/Loader/StringLoaderTest.php b/webclient/vendor/mustache/mustache/test/Mustache/Test/Loader/StringLoaderTest.php deleted file mode 100644 index f2e47d93..00000000 --- a/webclient/vendor/mustache/mustache/test/Mustache/Test/Loader/StringLoaderTest.php +++ /dev/null @@ -1,25 +0,0 @@ -assertEquals('foo', $loader->load('foo')); - $this->assertEquals('{{ bar }}', $loader->load('{{ bar }}')); - $this->assertEquals("\n{{! comment }}\n", $loader->load("\n{{! comment }}\n")); - } -} diff --git a/webclient/vendor/mustache/mustache/test/Mustache/Test/Logger/AbstractLoggerTest.php b/webclient/vendor/mustache/mustache/test/Mustache/Test/Logger/AbstractLoggerTest.php deleted file mode 100644 index e8865e94..00000000 --- a/webclient/vendor/mustache/mustache/test/Mustache/Test/Logger/AbstractLoggerTest.php +++ /dev/null @@ -1,60 +0,0 @@ -emergency('emergency message'); - $logger->alert('alert message'); - $logger->critical('critical message'); - $logger->error('error message'); - $logger->warning('warning message'); - $logger->notice('notice message'); - $logger->info('info message'); - $logger->debug('debug message'); - - $expected = array( - array(Mustache_Logger::EMERGENCY, 'emergency message', array()), - array(Mustache_Logger::ALERT, 'alert message', array()), - array(Mustache_Logger::CRITICAL, 'critical message', array()), - array(Mustache_Logger::ERROR, 'error message', array()), - array(Mustache_Logger::WARNING, 'warning message', array()), - array(Mustache_Logger::NOTICE, 'notice message', array()), - array(Mustache_Logger::INFO, 'info message', array()), - array(Mustache_Logger::DEBUG, 'debug message', array()), - ); - - $this->assertEquals($expected, $logger->log); - } -} - -class Mustache_Test_Logger_TestLogger extends Mustache_Logger_AbstractLogger -{ - public $log = array(); - - /** - * Logs with an arbitrary level. - * - * @param mixed $level - * @param string $message - * @param array $context - */ - public function log($level, $message, array $context = array()) - { - $this->log[] = array($level, $message, $context); - } -} diff --git a/webclient/vendor/mustache/mustache/test/Mustache/Test/Logger/StreamLoggerTest.php b/webclient/vendor/mustache/mustache/test/Mustache/Test/Logger/StreamLoggerTest.php deleted file mode 100644 index 6cb198a8..00000000 --- a/webclient/vendor/mustache/mustache/test/Mustache/Test/Logger/StreamLoggerTest.php +++ /dev/null @@ -1,209 +0,0 @@ -log(Mustache_Logger::CRITICAL, 'message'); - - $this->assertEquals("CRITICAL: message\n", file_get_contents($name)); - } - - public function acceptsStreamData() - { - $one = tempnam(sys_get_temp_dir(), 'mustache-test'); - $two = tempnam(sys_get_temp_dir(), 'mustache-test'); - - return array( - array($one, $one), - array($two, fopen($two, 'a')), - ); - } - - /** - * @expectedException Mustache_Exception_LogicException - */ - public function testPrematurelyClosedStreamThrowsException() - { - $stream = tmpfile(); - $logger = new Mustache_Logger_StreamLogger($stream); - fclose($stream); - - $logger->log(Mustache_Logger::CRITICAL, 'message'); - } - - /** - * @dataProvider getLevels - */ - public function testLoggingThresholds($logLevel, $level, $shouldLog) - { - $stream = tmpfile(); - $logger = new Mustache_Logger_StreamLogger($stream, $logLevel); - $logger->log($level, 'logged'); - - rewind($stream); - $result = fread($stream, 1024); - - if ($shouldLog) { - $this->assertContains('logged', $result); - } else { - $this->assertEmpty($result); - } - } - - public function getLevels() - { - // $logLevel, $level, $shouldLog - return array( - // identities - array(Mustache_Logger::EMERGENCY, Mustache_Logger::EMERGENCY, true), - array(Mustache_Logger::ALERT, Mustache_Logger::ALERT, true), - array(Mustache_Logger::CRITICAL, Mustache_Logger::CRITICAL, true), - array(Mustache_Logger::ERROR, Mustache_Logger::ERROR, true), - array(Mustache_Logger::WARNING, Mustache_Logger::WARNING, true), - array(Mustache_Logger::NOTICE, Mustache_Logger::NOTICE, true), - array(Mustache_Logger::INFO, Mustache_Logger::INFO, true), - array(Mustache_Logger::DEBUG, Mustache_Logger::DEBUG, true), - - // one above - array(Mustache_Logger::ALERT, Mustache_Logger::EMERGENCY, true), - array(Mustache_Logger::CRITICAL, Mustache_Logger::ALERT, true), - array(Mustache_Logger::ERROR, Mustache_Logger::CRITICAL, true), - array(Mustache_Logger::WARNING, Mustache_Logger::ERROR, true), - array(Mustache_Logger::NOTICE, Mustache_Logger::WARNING, true), - array(Mustache_Logger::INFO, Mustache_Logger::NOTICE, true), - array(Mustache_Logger::DEBUG, Mustache_Logger::INFO, true), - - // one below - array(Mustache_Logger::EMERGENCY, Mustache_Logger::ALERT, false), - array(Mustache_Logger::ALERT, Mustache_Logger::CRITICAL, false), - array(Mustache_Logger::CRITICAL, Mustache_Logger::ERROR, false), - array(Mustache_Logger::ERROR, Mustache_Logger::WARNING, false), - array(Mustache_Logger::WARNING, Mustache_Logger::NOTICE, false), - array(Mustache_Logger::NOTICE, Mustache_Logger::INFO, false), - array(Mustache_Logger::INFO, Mustache_Logger::DEBUG, false), - ); - } - - /** - * @dataProvider getLogMessages - */ - public function testLogging($level, $message, $context, $expected) - { - $stream = tmpfile(); - $logger = new Mustache_Logger_StreamLogger($stream, Mustache_Logger::DEBUG); - $logger->log($level, $message, $context); - - rewind($stream); - $result = fread($stream, 1024); - - $this->assertEquals($expected, $result); - } - - public function getLogMessages() - { - // $level, $message, $context, $expected - return array( - array(Mustache_Logger::DEBUG, 'debug message', array(), "DEBUG: debug message\n"), - array(Mustache_Logger::INFO, 'info message', array(), "INFO: info message\n"), - array(Mustache_Logger::NOTICE, 'notice message', array(), "NOTICE: notice message\n"), - array(Mustache_Logger::WARNING, 'warning message', array(), "WARNING: warning message\n"), - array(Mustache_Logger::ERROR, 'error message', array(), "ERROR: error message\n"), - array(Mustache_Logger::CRITICAL, 'critical message', array(), "CRITICAL: critical message\n"), - array(Mustache_Logger::ALERT, 'alert message', array(), "ALERT: alert message\n"), - array(Mustache_Logger::EMERGENCY, 'emergency message', array(), "EMERGENCY: emergency message\n"), - - // with context - array( - Mustache_Logger::ERROR, - 'error message', - array('name' => 'foo', 'number' => 42), - "ERROR: error message\n", - ), - - // with interpolation - array( - Mustache_Logger::ERROR, - 'error {name}-{number}', - array('name' => 'foo', 'number' => 42), - "ERROR: error foo-42\n", - ), - - // with iterpolation false positive - array( - Mustache_Logger::ERROR, - 'error {nothing}', - array('name' => 'foo', 'number' => 42), - "ERROR: error {nothing}\n", - ), - - // with interpolation injection - array( - Mustache_Logger::ERROR, - '{foo}', - array('foo' => '{bar}', 'bar' => 'FAIL'), - "ERROR: {bar}\n", - ), - ); - } - - public function testChangeLoggingLevels() - { - $stream = tmpfile(); - $logger = new Mustache_Logger_StreamLogger($stream); - - $logger->setLevel(Mustache_Logger::ERROR); - $this->assertEquals(Mustache_Logger::ERROR, $logger->getLevel()); - - $logger->log(Mustache_Logger::WARNING, 'ignore this'); - - $logger->setLevel(Mustache_Logger::INFO); - $this->assertEquals(Mustache_Logger::INFO, $logger->getLevel()); - - $logger->log(Mustache_Logger::WARNING, 'log this'); - - $logger->setLevel(Mustache_Logger::CRITICAL); - $this->assertEquals(Mustache_Logger::CRITICAL, $logger->getLevel()); - - $logger->log(Mustache_Logger::ERROR, 'ignore this'); - - rewind($stream); - $result = fread($stream, 1024); - - $this->assertEquals("WARNING: log this\n", $result); - } - - /** - * @expectedException Mustache_Exception_InvalidArgumentException - */ - public function testThrowsInvalidArgumentExceptionWhenSettingUnknownLevels() - { - $logger = new Mustache_Logger_StreamLogger(tmpfile()); - $logger->setLevel('bacon'); - } - - /** - * @expectedException Mustache_Exception_InvalidArgumentException - */ - public function testThrowsInvalidArgumentExceptionWhenLoggingUnknownLevels() - { - $logger = new Mustache_Logger_StreamLogger(tmpfile()); - $logger->log('bacon', 'CODE BACON ERROR!'); - } -} diff --git a/webclient/vendor/mustache/mustache/test/Mustache/Test/ParserTest.php b/webclient/vendor/mustache/mustache/test/Mustache/Test/ParserTest.php deleted file mode 100644 index 85e5701a..00000000 --- a/webclient/vendor/mustache/mustache/test/Mustache/Test/ParserTest.php +++ /dev/null @@ -1,425 +0,0 @@ -assertEquals($expected, $parser->parse($tokens)); - } - - public function getTokenSets() - { - return array( - array( - array(), - array(), - ), - - array( - array(array( - Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_TEXT, - Mustache_Tokenizer::LINE => 0, - Mustache_Tokenizer::VALUE => 'text', - )), - array(array( - Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_TEXT, - Mustache_Tokenizer::LINE => 0, - Mustache_Tokenizer::VALUE => 'text', - )), - ), - - array( - array(array( - Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_ESCAPED, - Mustache_Tokenizer::LINE => 0, - Mustache_Tokenizer::NAME => 'name', - )), - array(array( - Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_ESCAPED, - Mustache_Tokenizer::LINE => 0, - Mustache_Tokenizer::NAME => 'name', - )), - ), - - array( - array( - array( - Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_TEXT, - Mustache_Tokenizer::LINE => 0, - Mustache_Tokenizer::VALUE => 'foo', - ), - array( - Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_INVERTED, - Mustache_Tokenizer::LINE => 0, - Mustache_Tokenizer::INDEX => 123, - Mustache_Tokenizer::NAME => 'parent', - ), - array( - Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_ESCAPED, - Mustache_Tokenizer::LINE => 0, - Mustache_Tokenizer::NAME => 'name', - ), - array( - Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_END_SECTION, - Mustache_Tokenizer::LINE => 0, - Mustache_Tokenizer::INDEX => 456, - Mustache_Tokenizer::NAME => 'parent', - ), - array( - Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_TEXT, - Mustache_Tokenizer::LINE => 0, - Mustache_Tokenizer::VALUE => 'bar', - ), - ), - - array( - array( - Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_TEXT, - Mustache_Tokenizer::LINE => 0, - Mustache_Tokenizer::VALUE => 'foo', - ), - array( - Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_INVERTED, - Mustache_Tokenizer::NAME => 'parent', - Mustache_Tokenizer::LINE => 0, - Mustache_Tokenizer::INDEX => 123, - Mustache_Tokenizer::END => 456, - Mustache_Tokenizer::NODES => array( - array( - Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_ESCAPED, - Mustache_Tokenizer::LINE => 0, - Mustache_Tokenizer::NAME => 'name', - ), - ), - ), - array( - Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_TEXT, - Mustache_Tokenizer::LINE => 0, - Mustache_Tokenizer::VALUE => 'bar', - ), - ), - ), - - // This *would* be an invalid inheritance parse tree, but that pragma - // isn't enabled so it'll thunk it back into an "escaped" token: - array( - array( - array( - Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_BLOCK_VAR, - Mustache_Tokenizer::NAME => 'foo', - Mustache_Tokenizer::OTAG => '{{', - Mustache_Tokenizer::CTAG => '}}', - Mustache_Tokenizer::LINE => 0, - ), - array( - Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_TEXT, - Mustache_Tokenizer::LINE => 0, - Mustache_Tokenizer::VALUE => 'bar', - ), - ), - array( - array( - Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_ESCAPED, - Mustache_Tokenizer::NAME => '$foo', - Mustache_Tokenizer::OTAG => '{{', - Mustache_Tokenizer::CTAG => '}}', - Mustache_Tokenizer::LINE => 0, - ), - array( - Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_TEXT, - Mustache_Tokenizer::LINE => 0, - Mustache_Tokenizer::VALUE => 'bar', - ), - ), - ), - - array( - array( - array( - Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_TEXT, - Mustache_Tokenizer::LINE => 0, - Mustache_Tokenizer::VALUE => ' ', - ), - array( - Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_DELIM_CHANGE, - Mustache_Tokenizer::LINE => 0, - ), - array( - Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_TEXT, - Mustache_Tokenizer::LINE => 0, - Mustache_Tokenizer::VALUE => " \n", - ), - array( - Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_ESCAPED, - Mustache_Tokenizer::NAME => 'foo', - Mustache_Tokenizer::OTAG => '[[', - Mustache_Tokenizer::CTAG => ']]', - Mustache_Tokenizer::LINE => 1, - ), - ), - array( - array( - Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_ESCAPED, - Mustache_Tokenizer::NAME => 'foo', - Mustache_Tokenizer::OTAG => '[[', - Mustache_Tokenizer::CTAG => ']]', - Mustache_Tokenizer::LINE => 1, - ), - ), - ), - - ); - } - - /** - * @dataProvider getInheritanceTokenSets - */ - public function testParseWithInheritance($tokens, $expected) - { - $parser = new Mustache_Parser(); - $parser->setPragmas(array(Mustache_Engine::PRAGMA_BLOCKS)); - $this->assertEquals($expected, $parser->parse($tokens)); - } - - public function getInheritanceTokenSets() - { - return array( - array( - array( - array( - Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_PARENT, - Mustache_Tokenizer::NAME => 'foo', - Mustache_Tokenizer::OTAG => '{{', - Mustache_Tokenizer::CTAG => '}}', - Mustache_Tokenizer::LINE => 0, - Mustache_Tokenizer::INDEX => 8, - ), - array( - Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_BLOCK_VAR, - Mustache_Tokenizer::NAME => 'bar', - Mustache_Tokenizer::OTAG => '{{', - Mustache_Tokenizer::CTAG => '}}', - Mustache_Tokenizer::LINE => 0, - Mustache_Tokenizer::INDEX => 16, - ), - array( - Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_TEXT, - Mustache_Tokenizer::LINE => 0, - Mustache_Tokenizer::VALUE => 'baz', - ), - array( - Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_END_SECTION, - Mustache_Tokenizer::NAME => 'bar', - Mustache_Tokenizer::OTAG => '{{', - Mustache_Tokenizer::CTAG => '}}', - Mustache_Tokenizer::LINE => 0, - Mustache_Tokenizer::INDEX => 19, - ), - array( - Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_END_SECTION, - Mustache_Tokenizer::NAME => 'foo', - Mustache_Tokenizer::OTAG => '{{', - Mustache_Tokenizer::CTAG => '}}', - Mustache_Tokenizer::LINE => 0, - Mustache_Tokenizer::INDEX => 27, - ), - ), - array( - array( - Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_PARENT, - Mustache_Tokenizer::NAME => 'foo', - Mustache_Tokenizer::OTAG => '{{', - Mustache_Tokenizer::CTAG => '}}', - Mustache_Tokenizer::LINE => 0, - Mustache_Tokenizer::INDEX => 8, - Mustache_Tokenizer::END => 27, - Mustache_Tokenizer::NODES => array( - array( - Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_BLOCK_ARG, - Mustache_Tokenizer::NAME => 'bar', - Mustache_Tokenizer::OTAG => '{{', - Mustache_Tokenizer::CTAG => '}}', - Mustache_Tokenizer::LINE => 0, - Mustache_Tokenizer::INDEX => 16, - Mustache_Tokenizer::END => 19, - Mustache_Tokenizer::NODES => array( - array( - Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_TEXT, - Mustache_Tokenizer::LINE => 0, - Mustache_Tokenizer::VALUE => 'baz', - ), - ), - ), - ), - ), - ), - ), - - array( - array( - array( - Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_BLOCK_VAR, - Mustache_Tokenizer::NAME => 'foo', - Mustache_Tokenizer::OTAG => '{{', - Mustache_Tokenizer::CTAG => '}}', - Mustache_Tokenizer::LINE => 0, - ), - array( - Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_TEXT, - Mustache_Tokenizer::LINE => 0, - Mustache_Tokenizer::VALUE => 'bar', - ), - array( - Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_END_SECTION, - Mustache_Tokenizer::NAME => 'foo', - Mustache_Tokenizer::OTAG => '{{', - Mustache_Tokenizer::CTAG => '}}', - Mustache_Tokenizer::LINE => 0, - Mustache_Tokenizer::INDEX => 11, - ), - ), - array( - array( - Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_BLOCK_VAR, - Mustache_Tokenizer::NAME => 'foo', - Mustache_Tokenizer::OTAG => '{{', - Mustache_Tokenizer::CTAG => '}}', - Mustache_Tokenizer::LINE => 0, - Mustache_Tokenizer::END => 11, - Mustache_Tokenizer::NODES => array( - array( - Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_TEXT, - Mustache_Tokenizer::LINE => 0, - Mustache_Tokenizer::VALUE => 'bar', - ), - ), - ), - ), - ), - ); - } - - /** - * @dataProvider getBadParseTrees - * @expectedException Mustache_Exception_SyntaxException - */ - public function testParserThrowsExceptions($tokens) - { - $parser = new Mustache_Parser(); - $parser->parse($tokens); - } - - public function getBadParseTrees() - { - return array( - // no close - array( - array( - array( - Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_SECTION, - Mustache_Tokenizer::NAME => 'parent', - Mustache_Tokenizer::LINE => 0, - Mustache_Tokenizer::INDEX => 123, - ), - ), - ), - - // no close inverted - array( - array( - array( - Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_INVERTED, - Mustache_Tokenizer::NAME => 'parent', - Mustache_Tokenizer::LINE => 0, - Mustache_Tokenizer::INDEX => 123, - ), - ), - ), - - // no opening inverted - array( - array( - array( - Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_END_SECTION, - Mustache_Tokenizer::NAME => 'parent', - Mustache_Tokenizer::LINE => 0, - Mustache_Tokenizer::INDEX => 123, - ), - ), - ), - - // weird nesting - array( - array( - array( - Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_SECTION, - Mustache_Tokenizer::NAME => 'parent', - Mustache_Tokenizer::LINE => 0, - Mustache_Tokenizer::INDEX => 123, - ), - array( - Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_SECTION, - Mustache_Tokenizer::NAME => 'child', - Mustache_Tokenizer::LINE => 0, - Mustache_Tokenizer::INDEX => 123, - ), - array( - Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_END_SECTION, - Mustache_Tokenizer::NAME => 'parent', - Mustache_Tokenizer::LINE => 0, - Mustache_Tokenizer::INDEX => 123, - ), - array( - Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_END_SECTION, - Mustache_Tokenizer::NAME => 'child', - Mustache_Tokenizer::LINE => 0, - Mustache_Tokenizer::INDEX => 123, - ), - ), - ), - - // This *would* be a valid inheritance parse tree, but that pragma - // isn't enabled here so it's going to fail :) - array( - array( - array( - Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_BLOCK_VAR, - Mustache_Tokenizer::NAME => 'foo', - Mustache_Tokenizer::OTAG => '{{', - Mustache_Tokenizer::CTAG => '}}', - Mustache_Tokenizer::LINE => 0, - ), - array( - Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_TEXT, - Mustache_Tokenizer::LINE => 0, - Mustache_Tokenizer::VALUE => 'bar', - ), - array( - Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_END_SECTION, - Mustache_Tokenizer::NAME => 'foo', - Mustache_Tokenizer::OTAG => '{{', - Mustache_Tokenizer::CTAG => '}}', - Mustache_Tokenizer::LINE => 0, - Mustache_Tokenizer::INDEX => 11, - ), - ), - ), - ); - } -} diff --git a/webclient/vendor/mustache/mustache/test/Mustache/Test/SpecTestCase.php b/webclient/vendor/mustache/mustache/test/Mustache/Test/SpecTestCase.php deleted file mode 100644 index 9fb4a15e..00000000 --- a/webclient/vendor/mustache/mustache/test/Mustache/Test/SpecTestCase.php +++ /dev/null @@ -1,67 +0,0 @@ -setPartials($partials); - - return self::$mustache->loadTemplate($source); - } - - /** - * Data provider for the mustache spec test. - * - * Loads YAML files from the spec and converts them to PHPisms. - * - * @param string $name - * - * @return array - */ - protected function loadSpec($name) - { - $filename = dirname(__FILE__) . '/../../../vendor/spec/specs/' . $name . '.yml'; - if (!file_exists($filename)) { - return array(); - } - - $data = array(); - $yaml = new sfYamlParser(); - $file = file_get_contents($filename); - - // @hack: pre-process the 'lambdas' spec so the Symfony YAML parser doesn't complain. - if ($name === '~lambdas') { - $file = str_replace(" !code\n", "\n", $file); - } - - $spec = $yaml->parse($file); - - foreach ($spec['tests'] as $test) { - $data[] = array( - $test['name'] . ': ' . $test['desc'], - $test['template'], - isset($test['partials']) ? $test['partials'] : array(), - $test['data'], - $test['expected'], - ); - } - - return $data; - } -} diff --git a/webclient/vendor/mustache/mustache/test/Mustache/Test/TemplateTest.php b/webclient/vendor/mustache/mustache/test/Mustache/Test/TemplateTest.php deleted file mode 100644 index bb260d2e..00000000 --- a/webclient/vendor/mustache/mustache/test/Mustache/Test/TemplateTest.php +++ /dev/null @@ -1,55 +0,0 @@ -assertSame($mustache, $template->getMustache()); - } - - public function testRendering() - { - $rendered = '<< wheee >>'; - $mustache = new Mustache_Engine(); - $template = new Mustache_Test_TemplateStub($mustache); - $template->rendered = $rendered; - $context = new Mustache_Context(); - - if (version_compare(PHP_VERSION, '5.3.0', '>=')) { - $this->assertEquals($rendered, $template()); - } - - $this->assertEquals($rendered, $template->render()); - $this->assertEquals($rendered, $template->renderInternal($context)); - $this->assertEquals($rendered, $template->render(array('foo' => 'bar'))); - } -} - -class Mustache_Test_TemplateStub extends Mustache_Template -{ - public $rendered; - - public function getMustache() - { - return $this->mustache; - } - - public function renderInternal(Mustache_Context $context, $indent = '', $escape = false) - { - return $this->rendered; - } -} diff --git a/webclient/vendor/mustache/mustache/test/Mustache/Test/TokenizerTest.php b/webclient/vendor/mustache/mustache/test/Mustache/Test/TokenizerTest.php deleted file mode 100644 index 09be3fe5..00000000 --- a/webclient/vendor/mustache/mustache/test/Mustache/Test/TokenizerTest.php +++ /dev/null @@ -1,306 +0,0 @@ -assertSame($expected, $tokenizer->scan($text, $delimiters)); - } - - /** - * @expectedException Mustache_Exception_SyntaxException - */ - public function testUnevenBracesThrowExceptions() - { - $tokenizer = new Mustache_Tokenizer(); - - $text = '{{{ name }}'; - $tokenizer->scan($text, null); - } - - /** - * @expectedException Mustache_Exception_SyntaxException - */ - public function testUnevenBracesWithCustomDelimiterThrowExceptions() - { - $tokenizer = new Mustache_Tokenizer(); - - $text = '<%{ name %>'; - $tokenizer->scan($text, '<% %>'); - } - - public function getTokens() - { - return array( - array( - 'text', - null, - array( - array( - Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_TEXT, - Mustache_Tokenizer::LINE => 0, - Mustache_Tokenizer::VALUE => 'text', - ), - ), - ), - - array( - 'text', - '<<< >>>', - array( - array( - Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_TEXT, - Mustache_Tokenizer::LINE => 0, - Mustache_Tokenizer::VALUE => 'text', - ), - ), - ), - - array( - '{{ name }}', - null, - array( - array( - Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_ESCAPED, - Mustache_Tokenizer::NAME => 'name', - Mustache_Tokenizer::OTAG => '{{', - Mustache_Tokenizer::CTAG => '}}', - Mustache_Tokenizer::LINE => 0, - Mustache_Tokenizer::INDEX => 10, - ), - ), - ), - - array( - '{{ name }}', - '<<< >>>', - array( - array( - Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_TEXT, - Mustache_Tokenizer::LINE => 0, - Mustache_Tokenizer::VALUE => '{{ name }}', - ), - ), - ), - - array( - '<<< name >>>', - '<<< >>>', - array( - array( - Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_ESCAPED, - Mustache_Tokenizer::NAME => 'name', - Mustache_Tokenizer::OTAG => '<<<', - Mustache_Tokenizer::CTAG => '>>>', - Mustache_Tokenizer::LINE => 0, - Mustache_Tokenizer::INDEX => 12, - ), - ), - ), - - array( - "{{{ a }}}\n{{# b }} \n{{= | | =}}| c ||/ b |\n|{ d }|", - null, - array( - array( - Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_UNESCAPED, - Mustache_Tokenizer::NAME => 'a', - Mustache_Tokenizer::OTAG => '{{', - Mustache_Tokenizer::CTAG => '}}', - Mustache_Tokenizer::LINE => 0, - Mustache_Tokenizer::INDEX => 8, - ), - array( - Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_TEXT, - Mustache_Tokenizer::LINE => 0, - Mustache_Tokenizer::VALUE => "\n", - ), - array( - Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_SECTION, - Mustache_Tokenizer::NAME => 'b', - Mustache_Tokenizer::OTAG => '{{', - Mustache_Tokenizer::CTAG => '}}', - Mustache_Tokenizer::LINE => 1, - Mustache_Tokenizer::INDEX => 18, - ), - array( - Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_TEXT, - Mustache_Tokenizer::LINE => 1, - Mustache_Tokenizer::VALUE => " \n", - ), - array( - Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_DELIM_CHANGE, - Mustache_Tokenizer::LINE => 2, - ), - array( - Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_ESCAPED, - Mustache_Tokenizer::NAME => 'c', - Mustache_Tokenizer::OTAG => '|', - Mustache_Tokenizer::CTAG => '|', - Mustache_Tokenizer::LINE => 2, - Mustache_Tokenizer::INDEX => 37, - ), - array( - Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_END_SECTION, - Mustache_Tokenizer::NAME => 'b', - Mustache_Tokenizer::OTAG => '|', - Mustache_Tokenizer::CTAG => '|', - Mustache_Tokenizer::LINE => 2, - Mustache_Tokenizer::INDEX => 37, - ), - array( - Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_TEXT, - Mustache_Tokenizer::LINE => 2, - Mustache_Tokenizer::VALUE => "\n", - ), - array( - Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_UNESCAPED, - Mustache_Tokenizer::NAME => 'd', - Mustache_Tokenizer::OTAG => '|', - Mustache_Tokenizer::CTAG => '|', - Mustache_Tokenizer::LINE => 3, - Mustache_Tokenizer::INDEX => 51, - ), - - ), - ), - - // See https://github.com/bobthecow/mustache.php/issues/183 - array( - '{{# a }}0{{/ a }}', - null, - array( - array( - Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_SECTION, - Mustache_Tokenizer::NAME => 'a', - Mustache_Tokenizer::OTAG => '{{', - Mustache_Tokenizer::CTAG => '}}', - Mustache_Tokenizer::LINE => 0, - Mustache_Tokenizer::INDEX => 8, - ), - array( - Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_TEXT, - Mustache_Tokenizer::LINE => 0, - Mustache_Tokenizer::VALUE => '0', - ), - array( - Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_END_SECTION, - Mustache_Tokenizer::NAME => 'a', - Mustache_Tokenizer::OTAG => '{{', - Mustache_Tokenizer::CTAG => '}}', - Mustache_Tokenizer::LINE => 0, - Mustache_Tokenizer::INDEX => 9, - ), - ), - ), - - // custom delimiters don't swallow the next character, even if it is a }, }}}, or the same delimiter - array( - '<% a %>} <% b %>%> <% c %>}}}', - '<% %>', - array( - array( - Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_ESCAPED, - Mustache_Tokenizer::NAME => 'a', - Mustache_Tokenizer::OTAG => '<%', - Mustache_Tokenizer::CTAG => '%>', - Mustache_Tokenizer::LINE => 0, - Mustache_Tokenizer::INDEX => 7, - ), - array( - Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_TEXT, - Mustache_Tokenizer::LINE => 0, - Mustache_Tokenizer::VALUE => '} ', - ), - array( - Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_ESCAPED, - Mustache_Tokenizer::NAME => 'b', - Mustache_Tokenizer::OTAG => '<%', - Mustache_Tokenizer::CTAG => '%>', - Mustache_Tokenizer::LINE => 0, - Mustache_Tokenizer::INDEX => 16, - ), - array( - Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_TEXT, - Mustache_Tokenizer::LINE => 0, - Mustache_Tokenizer::VALUE => '%> ', - ), - array( - Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_ESCAPED, - Mustache_Tokenizer::NAME => 'c', - Mustache_Tokenizer::OTAG => '<%', - Mustache_Tokenizer::CTAG => '%>', - Mustache_Tokenizer::LINE => 0, - Mustache_Tokenizer::INDEX => 26, - ), - array( - Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_TEXT, - Mustache_Tokenizer::LINE => 0, - Mustache_Tokenizer::VALUE => '}}}', - ), - ), - ), - - // unescaped custom delimiters are properly parsed - array( - '<%{ a }%>', - '<% %>', - array( - array( - Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_UNESCAPED, - Mustache_Tokenizer::NAME => 'a', - Mustache_Tokenizer::OTAG => '<%', - Mustache_Tokenizer::CTAG => '%>', - Mustache_Tokenizer::LINE => 0, - Mustache_Tokenizer::INDEX => 9, - ), - ), - ), - - // Ensure that $arg token is not picked up during tokenization - array( - '{{$arg}}default{{/arg}}', - null, - array( - array( - Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_BLOCK_VAR, - Mustache_Tokenizer::NAME => 'arg', - Mustache_Tokenizer::OTAG => '{{', - Mustache_Tokenizer::CTAG => '}}', - Mustache_Tokenizer::LINE => 0, - Mustache_Tokenizer::INDEX => 8, - ), - array( - Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_TEXT, - Mustache_Tokenizer::LINE => 0, - Mustache_Tokenizer::VALUE => 'default', - ), - array( - Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_END_SECTION, - Mustache_Tokenizer::NAME => 'arg', - Mustache_Tokenizer::OTAG => '{{', - Mustache_Tokenizer::CTAG => '}}', - Mustache_Tokenizer::LINE => 0, - Mustache_Tokenizer::INDEX => 15, - ), - ), - ), - ); - } -} diff --git a/webclient/vendor/mustache/mustache/test/bootstrap.php b/webclient/vendor/mustache/mustache/test/bootstrap.php deleted file mode 100644 index 21fc6896..00000000 --- a/webclient/vendor/mustache/mustache/test/bootstrap.php +++ /dev/null @@ -1,91 +0,0 @@ -filehandle = fopen($path, $mode); - - return $this->filehandle !== false; - } - - /** - * @return array - */ - public function stream_stat() - { - return array(); - } - - /** - * @param int $count - * - * @return string - */ - public function stream_read($count) - { - return fgets($this->filehandle, $count); - } - - /** - * @return bool - */ - public function stream_eof() - { - return feof($this->filehandle); - } - - /** - * @return bool - */ - public function stream_close() - { - return fclose($this->filehandle); - } -} - -if (!stream_wrapper_register('test', 'TestStream')) { - die('Failed to register protocol'); -} diff --git a/webclient/vendor/mustache/mustache/test/fixtures/autoloader/Mustache/Bar.php b/webclient/vendor/mustache/mustache/test/fixtures/autoloader/Mustache/Bar.php deleted file mode 100644 index 80927224..00000000 --- a/webclient/vendor/mustache/mustache/test/fixtures/autoloader/Mustache/Bar.php +++ /dev/null @@ -1,15 +0,0 @@ - 'child works', - ); - - public $grandparent = array( - 'parent' => array( - 'child' => 'grandchild works', - ), - ); -} diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/child_context/child_context.mustache b/webclient/vendor/mustache/mustache/test/fixtures/examples/child_context/child_context.mustache deleted file mode 100644 index e1f2ebcb..00000000 --- a/webclient/vendor/mustache/mustache/test/fixtures/examples/child_context/child_context.mustache +++ /dev/null @@ -1,2 +0,0 @@ -

    {{#parent}}{{child}}{{/parent}}

    -

    {{#grandparent}}{{#parent}}{{child}}{{/parent}}{{/grandparent}}

    \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/child_context/child_context.txt b/webclient/vendor/mustache/mustache/test/fixtures/examples/child_context/child_context.txt deleted file mode 100644 index cfb76bf7..00000000 --- a/webclient/vendor/mustache/mustache/test/fixtures/examples/child_context/child_context.txt +++ /dev/null @@ -1,2 +0,0 @@ -

    child works

    -

    grandchild works

    \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/comments/Comments.php b/webclient/vendor/mustache/mustache/test/fixtures/examples/comments/Comments.php deleted file mode 100644 index 690d139e..00000000 --- a/webclient/vendor/mustache/mustache/test/fixtures/examples/comments/Comments.php +++ /dev/null @@ -1,18 +0,0 @@ -{{title}}{{! just something interesting... #or ^not... }} \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/comments/comments.txt b/webclient/vendor/mustache/mustache/test/fixtures/examples/comments/comments.txt deleted file mode 100644 index 9f40e77b..00000000 --- a/webclient/vendor/mustache/mustache/test/fixtures/examples/comments/comments.txt +++ /dev/null @@ -1 +0,0 @@ -

    A Comedy of Errors

    \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/complex/complex.mustache b/webclient/vendor/mustache/mustache/test/fixtures/examples/complex/complex.mustache deleted file mode 100644 index 807c201e..00000000 --- a/webclient/vendor/mustache/mustache/test/fixtures/examples/complex/complex.mustache +++ /dev/null @@ -1,16 +0,0 @@ -

    {{header}}

    -{{#notEmpty}} -
      -{{#item}} -{{#current}} -
    • {{name}}
    • -{{/current}} -{{^current}} -
    • {{name}}
    • -{{/current}} -{{/item}} -
    -{{/notEmpty}} -{{#isEmpty}} -

    The list is empty.

    -{{/isEmpty}} \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/complex/complex.php b/webclient/vendor/mustache/mustache/test/fixtures/examples/complex/complex.php deleted file mode 100644 index ebb27332..00000000 --- a/webclient/vendor/mustache/mustache/test/fixtures/examples/complex/complex.php +++ /dev/null @@ -1,31 +0,0 @@ - 'red', 'current' => true, 'url' => '#Red'), - array('name' => 'green', 'current' => false, 'url' => '#Green'), - array('name' => 'blue', 'current' => false, 'url' => '#Blue'), - ); - - public function notEmpty() - { - return !($this->isEmpty()); - } - - public function isEmpty() - { - return count($this->item) === 0; - } -} diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/complex/complex.txt b/webclient/vendor/mustache/mustache/test/fixtures/examples/complex/complex.txt deleted file mode 100644 index facee6df..00000000 --- a/webclient/vendor/mustache/mustache/test/fixtures/examples/complex/complex.txt +++ /dev/null @@ -1,6 +0,0 @@ -

    Colors

    - diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/delimiters/Delimiters.php b/webclient/vendor/mustache/mustache/test/fixtures/examples/delimiters/Delimiters.php deleted file mode 100644 index e3b044d2..00000000 --- a/webclient/vendor/mustache/mustache/test/fixtures/examples/delimiters/Delimiters.php +++ /dev/null @@ -1,25 +0,0 @@ - 'And it worked the second time.'), - array('item' => 'As well as the third.'), - ); - } - - public $final = 'Then, surprisingly, it worked the final time.'; -} diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/delimiters/delimiters.mustache b/webclient/vendor/mustache/mustache/test/fixtures/examples/delimiters/delimiters.mustache deleted file mode 100644 index e9b0332b..00000000 --- a/webclient/vendor/mustache/mustache/test/fixtures/examples/delimiters/delimiters.mustache +++ /dev/null @@ -1,8 +0,0 @@ -{{=<% %>=}} -* <% start %> -<%=| |=%> -|# middle | -* | item | -|/ middle | -|={{ }}=| -* {{ final }} \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/delimiters/delimiters.txt b/webclient/vendor/mustache/mustache/test/fixtures/examples/delimiters/delimiters.txt deleted file mode 100644 index e6b2d7af..00000000 --- a/webclient/vendor/mustache/mustache/test/fixtures/examples/delimiters/delimiters.txt +++ /dev/null @@ -1,4 +0,0 @@ -* It worked the first time. -* And it worked the second time. -* As well as the third. -* Then, surprisingly, it worked the final time. \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/dot_notation/DotNotation.php b/webclient/vendor/mustache/mustache/test/fixtures/examples/dot_notation/DotNotation.php deleted file mode 100644 index d4003185..00000000 --- a/webclient/vendor/mustache/mustache/test/fixtures/examples/dot_notation/DotNotation.php +++ /dev/null @@ -1,24 +0,0 @@ - array('first' => 'Chris', 'last' => 'Firescythe'), - 'age' => 24, - 'hometown' => array( - 'city' => 'Cincinnati', - 'state' => 'OH', - ), - ); - - public $normal = 'Normal'; -} diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/dot_notation/dot_notation.mustache b/webclient/vendor/mustache/mustache/test/fixtures/examples/dot_notation/dot_notation.mustache deleted file mode 100644 index 0566867b..00000000 --- a/webclient/vendor/mustache/mustache/test/fixtures/examples/dot_notation/dot_notation.mustache +++ /dev/null @@ -1,4 +0,0 @@ -* {{person.name.first}} {{person.name.last}} -* {{person.age}} -* {{person.hometown.city}}, {{person.hometown.state}} -* {{normal}} \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/dot_notation/dot_notation.txt b/webclient/vendor/mustache/mustache/test/fixtures/examples/dot_notation/dot_notation.txt deleted file mode 100644 index f8cf1fa1..00000000 --- a/webclient/vendor/mustache/mustache/test/fixtures/examples/dot_notation/dot_notation.txt +++ /dev/null @@ -1,4 +0,0 @@ -* Chris Firescythe -* 24 -* Cincinnati, OH -* Normal \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/double_section/DoubleSection.php b/webclient/vendor/mustache/mustache/test/fixtures/examples/double_section/DoubleSection.php deleted file mode 100644 index 6989d95a..00000000 --- a/webclient/vendor/mustache/mustache/test/fixtures/examples/double_section/DoubleSection.php +++ /dev/null @@ -1,20 +0,0 @@ - "Shark"'; -} diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/escaped/escaped.mustache b/webclient/vendor/mustache/mustache/test/fixtures/examples/escaped/escaped.mustache deleted file mode 100644 index 8be4ccb6..00000000 --- a/webclient/vendor/mustache/mustache/test/fixtures/examples/escaped/escaped.mustache +++ /dev/null @@ -1 +0,0 @@ -

    {{title}}

    \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/escaped/escaped.txt b/webclient/vendor/mustache/mustache/test/fixtures/examples/escaped/escaped.txt deleted file mode 100644 index 6ba3657e..00000000 --- a/webclient/vendor/mustache/mustache/test/fixtures/examples/escaped/escaped.txt +++ /dev/null @@ -1 +0,0 @@ -

    "Bear" > "Shark"

    \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/filters/Filters.php b/webclient/vendor/mustache/mustache/test/fixtures/examples/filters/Filters.php deleted file mode 100644 index fb7c3f51..00000000 --- a/webclient/vendor/mustache/mustache/test/fixtures/examples/filters/Filters.php +++ /dev/null @@ -1,97 +0,0 @@ - 'Alabama', - 'ak' => 'Alaska', - 'az' => 'Arizona', - 'ar' => 'Arkansas', - 'ca' => 'California', - 'co' => 'Colorado', - 'ct' => 'Connecticut', - 'de' => 'Delaware', - 'fl' => 'Florida', - 'ga' => 'Georgia', - 'hi' => 'Hawaii', - 'id' => 'Idaho', - 'il' => 'Illinois', - 'in' => 'Indiana', - 'ia' => 'Iowa', - 'ks' => 'Kansas', - 'ky' => 'Kentucky', - 'la' => 'Louisiana', - 'me' => 'Maine', - 'md' => 'Maryland', - 'ma' => 'Massachusetts', - 'mi' => 'Michigan', - 'mn' => 'Minnesota', - 'ms' => 'Mississippi', - 'mo' => 'Missouri', - 'mt' => 'Montana', - 'ne' => 'Nebraska', - 'nv' => 'Nevada', - 'nh' => 'New Hampshire', - 'nj' => 'New Jersey', - 'nm' => 'New Mexico', - 'ny' => 'New York', - 'nc' => 'North Carolina', - 'nd' => 'North Dakota', - 'oh' => 'Ohio', - 'ok' => 'Oklahoma', - 'or' => 'Oregon', - 'pa' => 'Pennsylvania', - 'ri' => 'Rhode Island', - 'sc' => 'South Carolina', - 'sd' => 'South Dakota', - 'tn' => 'Tennessee', - 'tx' => 'Texas', - 'ut' => 'Utah', - 'vt' => 'Vermont', - 'va' => 'Virginia', - 'wa' => 'Washington', - 'wv' => 'West Virginia', - 'wi' => 'Wisconsin', - 'wy' => 'Wyoming', - ); - - // The next few functions are ugly, because they have to work in PHP 5.2... - // for everyone who doesn't have to support 5.2, please, for the love, make - // your ViewModel return closures rather than `array($this, '...')` - // - // :) - - public function upcase() - { - return array($this, '_upcase'); - } - - public function _upcase($val) - { - return strtoupper($val); - } - - public function eachPair() - { - return array($this, '_eachPair'); - } - - public function _eachPair($val) - { - $ret = array(); - foreach ($val as $key => $value) { - array_push($ret, compact('key', 'value')); - } - - return $ret; - } -} diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/filters/filters.mustache b/webclient/vendor/mustache/mustache/test/fixtures/examples/filters/filters.mustache deleted file mode 100644 index 50f14653..00000000 --- a/webclient/vendor/mustache/mustache/test/fixtures/examples/filters/filters.mustache +++ /dev/null @@ -1,4 +0,0 @@ -{{%FILTERS}} -{{# states | eachPair }} -{{ key | upcase }}: {{ value }} -{{/ states }} \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/filters/filters.txt b/webclient/vendor/mustache/mustache/test/fixtures/examples/filters/filters.txt deleted file mode 100644 index 67466fd5..00000000 --- a/webclient/vendor/mustache/mustache/test/fixtures/examples/filters/filters.txt +++ /dev/null @@ -1,50 +0,0 @@ -AL: Alabama -AK: Alaska -AZ: Arizona -AR: Arkansas -CA: California -CO: Colorado -CT: Connecticut -DE: Delaware -FL: Florida -GA: Georgia -HI: Hawaii -ID: Idaho -IL: Illinois -IN: Indiana -IA: Iowa -KS: Kansas -KY: Kentucky -LA: Louisiana -ME: Maine -MD: Maryland -MA: Massachusetts -MI: Michigan -MN: Minnesota -MS: Mississippi -MO: Missouri -MT: Montana -NE: Nebraska -NV: Nevada -NH: New Hampshire -NJ: New Jersey -NM: New Mexico -NY: New York -NC: North Carolina -ND: North Dakota -OH: Ohio -OK: Oklahoma -OR: Oregon -PA: Pennsylvania -RI: Rhode Island -SC: South Carolina -SD: South Dakota -TN: Tennessee -TX: Texas -UT: Utah -VT: Vermont -VA: Virginia -WA: Washington -WV: West Virginia -WI: Wisconsin -WY: Wyoming diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/grand_parent_context/GrandParentContext.php b/webclient/vendor/mustache/mustache/test/fixtures/examples/grand_parent_context/GrandParentContext.php deleted file mode 100644 index e3ea25f3..00000000 --- a/webclient/vendor/mustache/mustache/test/fixtures/examples/grand_parent_context/GrandParentContext.php +++ /dev/null @@ -1,33 +0,0 @@ -parent_contexts[] = array('parent_id' => 'parent1', 'child_contexts' => array( - array('child_id' => 'parent1-child1'), - array('child_id' => 'parent1-child2'), - )); - - $parent2 = new stdClass(); - $parent2->parent_id = 'parent2'; - $parent2->child_contexts = array( - array('child_id' => 'parent2-child1'), - array('child_id' => 'parent2-child2'), - ); - - $this->parent_contexts[] = $parent2; - } -} diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/grand_parent_context/grand_parent_context.mustache b/webclient/vendor/mustache/mustache/test/fixtures/examples/grand_parent_context/grand_parent_context.mustache deleted file mode 100644 index 6d03ddf6..00000000 --- a/webclient/vendor/mustache/mustache/test/fixtures/examples/grand_parent_context/grand_parent_context.mustache +++ /dev/null @@ -1,7 +0,0 @@ -{{grand_parent_id}} -{{#parent_contexts}} - {{parent_id}} ({{grand_parent_id}}) - {{#child_contexts}} - {{child_id}} ({{parent_id}} << {{grand_parent_id}}) - {{/child_contexts}} -{{/parent_contexts}} diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/grand_parent_context/grand_parent_context.txt b/webclient/vendor/mustache/mustache/test/fixtures/examples/grand_parent_context/grand_parent_context.txt deleted file mode 100644 index 2687f849..00000000 --- a/webclient/vendor/mustache/mustache/test/fixtures/examples/grand_parent_context/grand_parent_context.txt +++ /dev/null @@ -1,7 +0,0 @@ -grand_parent1 - parent1 (grand_parent1) - parent1-child1 (parent1 << grand_parent1) - parent1-child2 (parent1 << grand_parent1) - parent2 (grand_parent1) - parent2-child1 (parent2 << grand_parent1) - parent2-child2 (parent2 << grand_parent1) diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/i18n/I18n.php b/webclient/vendor/mustache/mustache/test/fixtures/examples/i18n/I18n.php deleted file mode 100644 index 77dc7b25..00000000 --- a/webclient/vendor/mustache/mustache/test/fixtures/examples/i18n/I18n.php +++ /dev/null @@ -1,30 +0,0 @@ - 'Hola.', - 'My name is {{ name }}.' => 'Me llamo {{ name }}.', - ); - - public static function __trans($text) - { - return isset(self::$dictionary[$text]) ? self::$dictionary[$text] : $text; - } -} diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/i18n/i18n.mustache b/webclient/vendor/mustache/mustache/test/fixtures/examples/i18n/i18n.mustache deleted file mode 100644 index eef169b4..00000000 --- a/webclient/vendor/mustache/mustache/test/fixtures/examples/i18n/i18n.mustache +++ /dev/null @@ -1 +0,0 @@ -{{#__}}Hello.{{/__}} {{#__}}My name is {{ name }}.{{/__}} \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/i18n/i18n.txt b/webclient/vendor/mustache/mustache/test/fixtures/examples/i18n/i18n.txt deleted file mode 100644 index 650a71ac..00000000 --- a/webclient/vendor/mustache/mustache/test/fixtures/examples/i18n/i18n.txt +++ /dev/null @@ -1 +0,0 @@ -Hola. Me llamo Bob. \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/implicit_iterator/ImplicitIterator.php b/webclient/vendor/mustache/mustache/test/fixtures/examples/implicit_iterator/ImplicitIterator.php deleted file mode 100644 index 6a264773..00000000 --- a/webclient/vendor/mustache/mustache/test/fixtures/examples/implicit_iterator/ImplicitIterator.php +++ /dev/null @@ -1,15 +0,0 @@ -{{name}}
    -{{/repo}} -{{^repo}} - No repos :( -{{/repo}} \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/inverted_section/inverted_section.txt b/webclient/vendor/mustache/mustache/test/fixtures/examples/inverted_section/inverted_section.txt deleted file mode 100644 index 6ba5a990..00000000 --- a/webclient/vendor/mustache/mustache/test/fixtures/examples/inverted_section/inverted_section.txt +++ /dev/null @@ -1 +0,0 @@ - No repos :( diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/nested_partials/NestedPartials.php b/webclient/vendor/mustache/mustache/test/fixtures/examples/nested_partials/NestedPartials.php deleted file mode 100644 index 1a5afd34..00000000 --- a/webclient/vendor/mustache/mustache/test/fixtures/examples/nested_partials/NestedPartials.php +++ /dev/null @@ -1,15 +0,0 @@ - - {{> second }} - \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/nested_partials/nested_partials.txt b/webclient/vendor/mustache/mustache/test/fixtures/examples/nested_partials/nested_partials.txt deleted file mode 100644 index 62776f97..00000000 --- a/webclient/vendor/mustache/mustache/test/fixtures/examples/nested_partials/nested_partials.txt +++ /dev/null @@ -1,7 +0,0 @@ - - - - FOURTH! - - - \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/nested_partials/partials/fourth.mustache b/webclient/vendor/mustache/mustache/test/fixtures/examples/nested_partials/partials/fourth.mustache deleted file mode 100644 index 727676fe..00000000 --- a/webclient/vendor/mustache/mustache/test/fixtures/examples/nested_partials/partials/fourth.mustache +++ /dev/null @@ -1 +0,0 @@ -{{ val }} diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/nested_partials/partials/second.mustache b/webclient/vendor/mustache/mustache/test/fixtures/examples/nested_partials/partials/second.mustache deleted file mode 100644 index 83f33cf4..00000000 --- a/webclient/vendor/mustache/mustache/test/fixtures/examples/nested_partials/partials/second.mustache +++ /dev/null @@ -1,3 +0,0 @@ - - {{> third }} - diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/nested_partials/partials/third.mustache b/webclient/vendor/mustache/mustache/test/fixtures/examples/nested_partials/partials/third.mustache deleted file mode 100644 index f33301a6..00000000 --- a/webclient/vendor/mustache/mustache/test/fixtures/examples/nested_partials/partials/third.mustache +++ /dev/null @@ -1,3 +0,0 @@ - - {{> fourth }} - diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/partials/Partials.php b/webclient/vendor/mustache/mustache/test/fixtures/examples/partials/Partials.php deleted file mode 100644 index 1bdaaa19..00000000 --- a/webclient/vendor/mustache/mustache/test/fixtures/examples/partials/Partials.php +++ /dev/null @@ -1,19 +0,0 @@ - 'Page Title', - 'subtitle' => 'Page Subtitle', - 'content' => 'Lorem ipsum dolor sit amet.', - ); -} diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/partials/partials.mustache b/webclient/vendor/mustache/mustache/test/fixtures/examples/partials/partials.mustache deleted file mode 100644 index 54cf1c52..00000000 --- a/webclient/vendor/mustache/mustache/test/fixtures/examples/partials/partials.mustache +++ /dev/null @@ -1,7 +0,0 @@ -
    - {{> header }} - -
    - {{ page.content }} -
    -
    \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/partials/partials.txt b/webclient/vendor/mustache/mustache/test/fixtures/examples/partials/partials.txt deleted file mode 100644 index f8e45ce3..00000000 --- a/webclient/vendor/mustache/mustache/test/fixtures/examples/partials/partials.txt +++ /dev/null @@ -1,8 +0,0 @@ -
    -

    Page Title

    -

    Page Subtitle

    - -
    - Lorem ipsum dolor sit amet. -
    -
    \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/partials/partials/header.mustache b/webclient/vendor/mustache/mustache/test/fixtures/examples/partials/partials/header.mustache deleted file mode 100644 index 88d567b2..00000000 --- a/webclient/vendor/mustache/mustache/test/fixtures/examples/partials/partials/header.mustache +++ /dev/null @@ -1,4 +0,0 @@ -{{# page }} -

    {{ title }}

    -

    {{ subtitle }}

    -{{/ page }} \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/recursive_partials/RecursivePartials.php b/webclient/vendor/mustache/mustache/test/fixtures/examples/recursive_partials/RecursivePartials.php deleted file mode 100644 index 25d15fd6..00000000 --- a/webclient/vendor/mustache/mustache/test/fixtures/examples/recursive_partials/RecursivePartials.php +++ /dev/null @@ -1,22 +0,0 @@ - 'Dan', - 'child' => array( - 'name' => 'Justin', - 'child' => false, - ), - ); -} diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/recursive_partials/partials/child.mustache b/webclient/vendor/mustache/mustache/test/fixtures/examples/recursive_partials/partials/child.mustache deleted file mode 100644 index 12829415..00000000 --- a/webclient/vendor/mustache/mustache/test/fixtures/examples/recursive_partials/partials/child.mustache +++ /dev/null @@ -1 +0,0 @@ - > {{ name }}{{#child}}{{>child}}{{/child}} \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/recursive_partials/recursive_partials.mustache b/webclient/vendor/mustache/mustache/test/fixtures/examples/recursive_partials/recursive_partials.mustache deleted file mode 100644 index 0bc5d03d..00000000 --- a/webclient/vendor/mustache/mustache/test/fixtures/examples/recursive_partials/recursive_partials.mustache +++ /dev/null @@ -1 +0,0 @@ -{{name}}{{#child}}{{>child}}{{/child}} \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/recursive_partials/recursive_partials.txt b/webclient/vendor/mustache/mustache/test/fixtures/examples/recursive_partials/recursive_partials.txt deleted file mode 100644 index 681cdef6..00000000 --- a/webclient/vendor/mustache/mustache/test/fixtures/examples/recursive_partials/recursive_partials.txt +++ /dev/null @@ -1 +0,0 @@ -George > Dan > Justin \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/section_iterator_objects/SectionIteratorObjects.php b/webclient/vendor/mustache/mustache/test/fixtures/examples/section_iterator_objects/SectionIteratorObjects.php deleted file mode 100644 index 77e083eb..00000000 --- a/webclient/vendor/mustache/mustache/test/fixtures/examples/section_iterator_objects/SectionIteratorObjects.php +++ /dev/null @@ -1,27 +0,0 @@ - 'And it worked the second time.'), - array('item' => 'As well as the third.'), - ); - - public function middle() - { - return new ArrayIterator($this->_data); - } - - public $final = 'Then, surprisingly, it worked the final time.'; -} diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/section_iterator_objects/section_iterator_objects.mustache b/webclient/vendor/mustache/mustache/test/fixtures/examples/section_iterator_objects/section_iterator_objects.mustache deleted file mode 100644 index 44dfce48..00000000 --- a/webclient/vendor/mustache/mustache/test/fixtures/examples/section_iterator_objects/section_iterator_objects.mustache +++ /dev/null @@ -1,5 +0,0 @@ -* {{ start }} -{{# middle }} -* {{ item }} -{{/ middle }} -* {{ final }} \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/section_iterator_objects/section_iterator_objects.txt b/webclient/vendor/mustache/mustache/test/fixtures/examples/section_iterator_objects/section_iterator_objects.txt deleted file mode 100644 index e6b2d7af..00000000 --- a/webclient/vendor/mustache/mustache/test/fixtures/examples/section_iterator_objects/section_iterator_objects.txt +++ /dev/null @@ -1,4 +0,0 @@ -* It worked the first time. -* And it worked the second time. -* As well as the third. -* Then, surprisingly, it worked the final time. \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/section_magic_objects/SectionMagicObjects.php b/webclient/vendor/mustache/mustache/test/fixtures/examples/section_magic_objects/SectionMagicObjects.php deleted file mode 100644 index 54288d65..00000000 --- a/webclient/vendor/mustache/mustache/test/fixtures/examples/section_magic_objects/SectionMagicObjects.php +++ /dev/null @@ -1,40 +0,0 @@ - 'And it worked the second time.', - 'bar' => 'As well as the third.', - ); - - public function __get($key) - { - return isset($this->_data[$key]) ? $this->_data[$key] : null; - } - - public function __isset($key) - { - return isset($this->_data[$key]); - } -} diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/section_magic_objects/section_magic_objects.mustache b/webclient/vendor/mustache/mustache/test/fixtures/examples/section_magic_objects/section_magic_objects.mustache deleted file mode 100644 index 91196085..00000000 --- a/webclient/vendor/mustache/mustache/test/fixtures/examples/section_magic_objects/section_magic_objects.mustache +++ /dev/null @@ -1,6 +0,0 @@ -* {{ start }} -{{# middle }} -* {{ foo }} -* {{ bar }} -{{/ middle }} -* {{ final }} \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/section_magic_objects/section_magic_objects.txt b/webclient/vendor/mustache/mustache/test/fixtures/examples/section_magic_objects/section_magic_objects.txt deleted file mode 100644 index e6b2d7af..00000000 --- a/webclient/vendor/mustache/mustache/test/fixtures/examples/section_magic_objects/section_magic_objects.txt +++ /dev/null @@ -1,4 +0,0 @@ -* It worked the first time. -* And it worked the second time. -* As well as the third. -* Then, surprisingly, it worked the final time. \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/section_objects/SectionObjects.php b/webclient/vendor/mustache/mustache/test/fixtures/examples/section_objects/SectionObjects.php deleted file mode 100644 index b977ec58..00000000 --- a/webclient/vendor/mustache/mustache/test/fixtures/examples/section_objects/SectionObjects.php +++ /dev/null @@ -1,28 +0,0 @@ - 'And it worked the second time.'), - array('item' => 'As well as the third.'), - ); - } - - public $final = 'Then, surprisingly, it worked the final time.'; -} diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/sections/sections.mustache b/webclient/vendor/mustache/mustache/test/fixtures/examples/sections/sections.mustache deleted file mode 100644 index 44dfce48..00000000 --- a/webclient/vendor/mustache/mustache/test/fixtures/examples/sections/sections.mustache +++ /dev/null @@ -1,5 +0,0 @@ -* {{ start }} -{{# middle }} -* {{ item }} -{{/ middle }} -* {{ final }} \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/sections/sections.txt b/webclient/vendor/mustache/mustache/test/fixtures/examples/sections/sections.txt deleted file mode 100644 index e6b2d7af..00000000 --- a/webclient/vendor/mustache/mustache/test/fixtures/examples/sections/sections.txt +++ /dev/null @@ -1,4 +0,0 @@ -* It worked the first time. -* And it worked the second time. -* As well as the third. -* Then, surprisingly, it worked the final time. \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/sections_nested/SectionsNested.php b/webclient/vendor/mustache/mustache/test/fixtures/examples/sections_nested/SectionsNested.php deleted file mode 100644 index dccc0d94..00000000 --- a/webclient/vendor/mustache/mustache/test/fixtures/examples/sections_nested/SectionsNested.php +++ /dev/null @@ -1,44 +0,0 @@ - 'Von Kaiser', - 'enemies' => array( - array('name' => 'Super Macho Man'), - array('name' => 'Piston Honda'), - array('name' => 'Mr. Sandman'), - ), - ), - array( - 'name' => 'Mike Tyson', - 'enemies' => array( - array('name' => 'Soda Popinski'), - array('name' => 'King Hippo'), - array('name' => 'Great Tiger'), - array('name' => 'Glass Joe'), - ), - ), - array( - 'name' => 'Don Flamenco', - 'enemies' => array( - array('name' => 'Bald Bull'), - ), - ), - ); - } -} diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/sections_nested/sections_nested.mustache b/webclient/vendor/mustache/mustache/test/fixtures/examples/sections_nested/sections_nested.mustache deleted file mode 100644 index 9f8007db..00000000 --- a/webclient/vendor/mustache/mustache/test/fixtures/examples/sections_nested/sections_nested.mustache +++ /dev/null @@ -1,7 +0,0 @@ -Enemies of {{ name }}: -{{# enemies }} -{{ name }} ... who also has enemies: -{{# enemies }} ---> {{ name }} -{{/ enemies }} -{{/ enemies }} \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/sections_nested/sections_nested.txt b/webclient/vendor/mustache/mustache/test/fixtures/examples/sections_nested/sections_nested.txt deleted file mode 100644 index 72c44d06..00000000 --- a/webclient/vendor/mustache/mustache/test/fixtures/examples/sections_nested/sections_nested.txt +++ /dev/null @@ -1,12 +0,0 @@ -Enemies of Little Mac: -Von Kaiser ... who also has enemies: ---> Super Macho Man ---> Piston Honda ---> Mr. Sandman -Mike Tyson ... who also has enemies: ---> Soda Popinski ---> King Hippo ---> Great Tiger ---> Glass Joe -Don Flamenco ... who also has enemies: ---> Bald Bull diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/simple/Simple.php b/webclient/vendor/mustache/mustache/test/fixtures/examples/simple/Simple.php deleted file mode 100644 index 570af22b..00000000 --- a/webclient/vendor/mustache/mustache/test/fixtures/examples/simple/Simple.php +++ /dev/null @@ -1,23 +0,0 @@ -value - ($this->value * 0.4); - } - - public $in_ca = true; -} diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/simple/simple.mustache b/webclient/vendor/mustache/mustache/test/fixtures/examples/simple/simple.mustache deleted file mode 100644 index 03df2068..00000000 --- a/webclient/vendor/mustache/mustache/test/fixtures/examples/simple/simple.mustache +++ /dev/null @@ -1,5 +0,0 @@ -Hello {{name}} -You have just won ${{value}}! -{{#in_ca}} -Well, ${{ taxed_value }}, after taxes. -{{/in_ca}} \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/simple/simple.txt b/webclient/vendor/mustache/mustache/test/fixtures/examples/simple/simple.txt deleted file mode 100644 index 5d75d656..00000000 --- a/webclient/vendor/mustache/mustache/test/fixtures/examples/simple/simple.txt +++ /dev/null @@ -1,3 +0,0 @@ -Hello Chris -You have just won $10000! -Well, $6000, after taxes. diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/unescaped/Unescaped.php b/webclient/vendor/mustache/mustache/test/fixtures/examples/unescaped/Unescaped.php deleted file mode 100644 index abe91787..00000000 --- a/webclient/vendor/mustache/mustache/test/fixtures/examples/unescaped/Unescaped.php +++ /dev/null @@ -1,15 +0,0 @@ - Shark'; -} diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/unescaped/unescaped.mustache b/webclient/vendor/mustache/mustache/test/fixtures/examples/unescaped/unescaped.mustache deleted file mode 100644 index 9982708a..00000000 --- a/webclient/vendor/mustache/mustache/test/fixtures/examples/unescaped/unescaped.mustache +++ /dev/null @@ -1 +0,0 @@ -

    {{{title}}}

    \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/unescaped/unescaped.txt b/webclient/vendor/mustache/mustache/test/fixtures/examples/unescaped/unescaped.txt deleted file mode 100644 index 01fa4048..00000000 --- a/webclient/vendor/mustache/mustache/test/fixtures/examples/unescaped/unescaped.txt +++ /dev/null @@ -1 +0,0 @@ -

    Bear > Shark

    \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/utf8/UTF8.php b/webclient/vendor/mustache/mustache/test/fixtures/examples/utf8/UTF8.php deleted file mode 100644 index 8c149411..00000000 --- a/webclient/vendor/mustache/mustache/test/fixtures/examples/utf8/UTF8.php +++ /dev/null @@ -1,15 +0,0 @@ -中文 {{test}} \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/utf8/utf8.txt b/webclient/vendor/mustache/mustache/test/fixtures/examples/utf8/utf8.txt deleted file mode 100644 index bf17971b..00000000 --- a/webclient/vendor/mustache/mustache/test/fixtures/examples/utf8/utf8.txt +++ /dev/null @@ -1 +0,0 @@ -

    中文 中文又来啦

    \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/utf8_unescaped/UTF8Unescaped.php b/webclient/vendor/mustache/mustache/test/fixtures/examples/utf8_unescaped/UTF8Unescaped.php deleted file mode 100644 index 43096754..00000000 --- a/webclient/vendor/mustache/mustache/test/fixtures/examples/utf8_unescaped/UTF8Unescaped.php +++ /dev/null @@ -1,15 +0,0 @@ -中文 {{{test}}} \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/utf8_unescaped/utf8_unescaped.txt b/webclient/vendor/mustache/mustache/test/fixtures/examples/utf8_unescaped/utf8_unescaped.txt deleted file mode 100644 index bf17971b..00000000 --- a/webclient/vendor/mustache/mustache/test/fixtures/examples/utf8_unescaped/utf8_unescaped.txt +++ /dev/null @@ -1 +0,0 @@ -

    中文 中文又来啦

    \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/whitespace/Whitespace.php b/webclient/vendor/mustache/mustache/test/fixtures/examples/whitespace/Whitespace.php deleted file mode 100644 index d5a5c620..00000000 --- a/webclient/vendor/mustache/mustache/test/fixtures/examples/whitespace/Whitespace.php +++ /dev/null @@ -1,43 +0,0 @@ - tag }}` and `{{> tag}}` and `{{>tag}}` should all be equivalent. - */ -class Whitespace -{ - public $foo = 'alpha'; - - public $bar = 'beta'; - - public function baz() - { - return 'gamma'; - } - - public function qux() - { - return array( - array('key with space' => 'A'), - array('key with space' => 'B'), - array('key with space' => 'C'), - array('key with space' => 'D'), - array('key with space' => 'E'), - array('key with space' => 'F'), - array('key with space' => 'G'), - ); - } -} diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/whitespace/partials/alphabet.mustache b/webclient/vendor/mustache/mustache/test/fixtures/examples/whitespace/partials/alphabet.mustache deleted file mode 100644 index d281c41b..00000000 --- a/webclient/vendor/mustache/mustache/test/fixtures/examples/whitespace/partials/alphabet.mustache +++ /dev/null @@ -1 +0,0 @@ - * {{.}} \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/whitespace/whitespace.mustache b/webclient/vendor/mustache/mustache/test/fixtures/examples/whitespace/whitespace.mustache deleted file mode 100644 index 0b3ba000..00000000 --- a/webclient/vendor/mustache/mustache/test/fixtures/examples/whitespace/whitespace.mustache +++ /dev/null @@ -1,10 +0,0 @@ -{{^ inverted section test }} -These are some things: -{{/inverted section test }} -* {{ foo }} -* {{ bar}} -* {{ baz }} -{{# qux }} -* {{ key with space }} -{{/ qux }} -{{#qux}}.{{/qux}} \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/examples/whitespace/whitespace.txt b/webclient/vendor/mustache/mustache/test/fixtures/examples/whitespace/whitespace.txt deleted file mode 100644 index 5226c698..00000000 --- a/webclient/vendor/mustache/mustache/test/fixtures/examples/whitespace/whitespace.txt +++ /dev/null @@ -1,12 +0,0 @@ -These are some things: -* alpha -* beta -* gamma -* A -* B -* C -* D -* E -* F -* G -....... \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/templates/alpha.ms b/webclient/vendor/mustache/mustache/test/fixtures/templates/alpha.ms deleted file mode 100644 index 3845830e..00000000 --- a/webclient/vendor/mustache/mustache/test/fixtures/templates/alpha.ms +++ /dev/null @@ -1 +0,0 @@ -alpha contents \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/templates/beta.ms b/webclient/vendor/mustache/mustache/test/fixtures/templates/beta.ms deleted file mode 100644 index a083dfe8..00000000 --- a/webclient/vendor/mustache/mustache/test/fixtures/templates/beta.ms +++ /dev/null @@ -1 +0,0 @@ -beta contents \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/templates/one.mustache b/webclient/vendor/mustache/mustache/test/fixtures/templates/one.mustache deleted file mode 100644 index f83ad095..00000000 --- a/webclient/vendor/mustache/mustache/test/fixtures/templates/one.mustache +++ /dev/null @@ -1 +0,0 @@ -one contents \ No newline at end of file diff --git a/webclient/vendor/mustache/mustache/test/fixtures/templates/two.mustache b/webclient/vendor/mustache/mustache/test/fixtures/templates/two.mustache deleted file mode 100644 index dacc40e2..00000000 --- a/webclient/vendor/mustache/mustache/test/fixtures/templates/two.mustache +++ /dev/null @@ -1 +0,0 @@ -two contents \ No newline at end of file -- GitLab From 587273edead2ba068a22755f65474eacbec110e1 Mon Sep 17 00:00:00 2001 From: Isabel Jenkins Date: Tue, 18 Jul 2017 11:47:06 +0100 Subject: [PATCH 3/3] Seperated out the php and webclient into two projects --- webclient/.gitignore | 6 - webclient/.htaccess | 1 + webclient/{README.md => README} | 10 +- webclient/composer.json | 15 - webclient/composer.lock | 65 - webclient/composer.phar | Bin 1710687 -> 0 bytes webclient/index.php | 33 +- webclient/js/lib/anchorme.min.js | 1 - webclient/js/lib/jquery.js | 6240 ------------------ webclient/js/say.js | 495 -- webclient/person.png | Bin 5226 -> 0 bytes webclient/poll.php | 15 +- webclient/send.php | 14 +- webclient/setup.sh | 19 - webclient/startup.php | 58 +- webclient/views/pages/createaccount.mustache | 33 - webclient/views/pages/front.mustache | 30 - webclient/views/pages/login.mustache | 25 - webclient/views/partials/footer.mustache | 0 webclient/views/partials/header.mustache | 7 - webclient/views/partials/sidebar.mustache | 8 - webclient/views/partials/style.mustache | 435 -- webclient/views/partials/topbar.mustache | 6 - 23 files changed, 31 insertions(+), 7485 deletions(-) delete mode 100644 webclient/.gitignore create mode 100644 webclient/.htaccess rename webclient/{README.md => README} (85%) delete mode 100644 webclient/composer.json delete mode 100644 webclient/composer.lock delete mode 100755 webclient/composer.phar delete mode 100644 webclient/js/lib/anchorme.min.js delete mode 100644 webclient/js/lib/jquery.js delete mode 100644 webclient/js/say.js delete mode 100644 webclient/person.png delete mode 100755 webclient/setup.sh delete mode 100644 webclient/views/pages/createaccount.mustache delete mode 100644 webclient/views/pages/front.mustache delete mode 100644 webclient/views/pages/login.mustache delete mode 100644 webclient/views/partials/footer.mustache delete mode 100644 webclient/views/partials/header.mustache delete mode 100644 webclient/views/partials/sidebar.mustache delete mode 100644 webclient/views/partials/style.mustache delete mode 100644 webclient/views/partials/topbar.mustache diff --git a/webclient/.gitignore b/webclient/.gitignore deleted file mode 100644 index c4222678..00000000 --- a/webclient/.gitignore +++ /dev/null @@ -1,6 +0,0 @@ -composer.phar -/vendor/ - -# Commit your application's lock file http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file -# You may choose to ignore a library lock file http://getcomposer.org/doc/02-libraries.md#lock-file -# composer.lock diff --git a/webclient/.htaccess b/webclient/.htaccess new file mode 100644 index 00000000..f2895509 --- /dev/null +++ b/webclient/.htaccess @@ -0,0 +1 @@ +Header set Access-Control-Allow-Origin "*" diff --git a/webclient/README.md b/webclient/README similarity index 85% rename from webclient/README.md rename to webclient/README index 369b7b23..2e394a53 100644 --- a/webclient/README.md +++ b/webclient/README @@ -1,16 +1,10 @@ -# Milliways web talker. +This is the web client for milliways talker. -## Setup -Run the setup script, this will handle running composer to install any php dependencies. -``` -./setup.sh -``` - -## How it works It works by running a background task that connects to the server and appears as a standard client, buffering up messages until it is polled by the web interface. + once you have the username & password (or existing sucssite token) you launch mwpoll, this authenticates the user, puts itself into the background, and gives you a socket address to communicate with it. diff --git a/webclient/composer.json b/webclient/composer.json deleted file mode 100644 index eff20283..00000000 --- a/webclient/composer.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "WebMW", - "authors": [ - { - "name": "Isabel Jenkins", - "email": "unreturnable@sucs.org" - } - ], - "require": { - "mustache/mustache": "^2.11" - }, - "autoload": { - "classmap": [] - } -} diff --git a/webclient/composer.lock b/webclient/composer.lock deleted file mode 100644 index c850fcf4..00000000 --- a/webclient/composer.lock +++ /dev/null @@ -1,65 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", - "This file is @generated automatically" - ], - "hash": "2a4fd3ff38c24e5f7c244fe8b3f0bfe8", - "content-hash": "1d57dbea8343d54c566b982f3b02c5ff", - "packages": [ - { - "name": "mustache/mustache", - "version": "v2.11.1", - "source": { - "type": "git", - "url": "https://github.com/bobthecow/mustache.php.git", - "reference": "a3f6d55996dd28b58f3a909d474189a3c1aa693f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/bobthecow/mustache.php/zipball/a3f6d55996dd28b58f3a909d474189a3c1aa693f", - "reference": "a3f6d55996dd28b58f3a909d474189a3c1aa693f", - "shasum": "" - }, - "require": { - "php": ">=5.2.4" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "~1.11", - "phpunit/phpunit": "~3.7|~4.0|~5.0" - }, - "type": "library", - "autoload": { - "psr-0": { - "Mustache": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Justin Hileman", - "email": "justin@justinhileman.info", - "homepage": "http://justinhileman.com" - } - ], - "description": "A Mustache implementation in PHP.", - "homepage": "https://github.com/bobthecow/mustache.php", - "keywords": [ - "mustache", - "templating" - ], - "time": "2016-07-31 06:18:27" - } - ], - "packages-dev": [], - "aliases": [], - "minimum-stability": "stable", - "stability-flags": [], - "prefer-stable": false, - "prefer-lowest": false, - "platform": [], - "platform-dev": [] -} diff --git a/webclient/composer.phar b/webclient/composer.phar deleted file mode 100755 index 0376ad52a7e34c7e93f2652d0de1bbc0844a95a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1710687 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ʴyLAF@+Y#BEK=x!QzN9h65oTLO2tyDX* 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 z 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 Z%b)-H_x(SAuZmZH`qjI4@49Wd{V%CA-$?)f diff --git a/webclient/index.php b/webclient/index.php index 37451e52..44869e26 100644 --- a/webclient/index.php +++ b/webclient/index.php @@ -1,34 +1,15 @@ new Mustache_Loader_CascadingLoader(array(new Mustache_Loader_FilesystemLoader(dirname(__FILE__) . '/views/pages') - )), - 'partials_loader' => new Mustache_Loader_FilesystemLoader(dirname(__FILE__) . '/views/partials') -)); +$_REQUEST = json_decode(file_get_contents('php://input'), true); // Get the users MW session if it exists $mwsess = @$_COOKIE['mwsess']; // Get the action HTTP request variable -$action = @$_REQUEST['action']; - -// Check to see if a MW session is in the GET data -if (isset($_GET['mwsess'])) { - $mwsess = $_GET['mwsess']; - // Set a cookie with the session in it - setcookie("mwsess", $mwsess); -} - -// Log the user out if this is the action -if ($action == "logout") { - setcookie("mwsess", ""); - unset($mwsess); -} +$action = $_REQUEST['action']; // Check to see if login actions need to be performed if ($action == "login" || $action == "create") { @@ -39,15 +20,13 @@ if ($action == "login" || $action == "create") { if (!isset($mwsess)) { // If there is no session but the user is logged in then run startup - if (@$_REQUEST['sucssite_loggedin']=="true" && $action!="logout") { + if ($_REQUEST['sucssite_loggedin']=="true" && $action!="logout") { require("startup.php"); } else { - echo $m->render('login'); + echo 'nope'; exit; } } $session = unserialize($mwsess); - -echo $m->render('front'); ?> diff --git a/webclient/js/lib/anchorme.min.js b/webclient/js/lib/anchorme.min.js deleted file mode 100644 index 82e74ee4..00000000 --- a/webclient/js/lib/anchorme.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(e,a){"object"==typeof exports&&"undefined"!=typeof module?module.exports=a():"function"==typeof define&&define.amd?define(a):e.anchorme=a()}(this,function(){"use strict";function e(e,a){return a={exports:{}},e(a,a.exports),a.exports}var a=e(function(e,a){function n(e){return e||(e={attributes:[],ips:!0,emails:!0,urls:!0,files:!0,truncate:1/0,defaultProtocol:"http://",list:!1}),"object"!=typeof e.attributes&&(e.attributes=[]),"boolean"!=typeof e.ips&&(e.ips=!0),"boolean"!=typeof e.emails&&(e.emails=!0),"boolean"!=typeof e.urls&&(e.urls=!0),"boolean"!=typeof e.files&&(e.files=!0),"boolean"!=typeof e.list&&(e.list=!1),"string"!=typeof e.defaultProtocol&&"function"!=typeof e.defaultProtocol&&(e.defaultProtocol="http://"),"number"==typeof e.truncate||"object"==typeof e.truncate&&null!==e.truncate||(e.truncate=1/0),e}function t(e){return!isNaN(Number(e))&&!(Number(e)>65535)}Object.defineProperty(a,"__esModule",{value:!0}),a.defaultOptions=n,a.isPort=t}),n=e(function(e,a){Object.defineProperty(a,"__esModule",{value:!0}),a.tlds=["com","org","net","uk","gov","edu","io","cc","co","aaa","aarp","abarth","abb","abbott","abbvie","abc","able","abogado","abudhabi","ac","academy","accenture","accountant","accountants","aco","active","actor","ad","adac","ads","adult","ae","aeg","aero","aetna","af","afamilycompany","afl","africa","ag","agakhan","agency","ai","aig","aigo","airbus","airforce","airtel","akdn","al","alfaromeo","alibaba","alipay","allfinanz","allstate","ally","alsace","alstom","am","americanexpress","americanfamily","amex","amfam","amica","amsterdam","analytics","android","anquan","anz","ao","aol","apartments","app","apple","aq","aquarelle","ar","aramco","archi","army","arpa","art","arte","as","asda","asia","associates","at","athleta","attorney","au","auction","audi","audible","audio","auspost","author","auto","autos","avianca","aw","aws","ax","axa","az","azure","ba","baby","baidu","banamex","bananarepublic","band","bank","bar","barcelona","barclaycard","barclays","barefoot","bargains","baseball","basketball","bauhaus","bayern","bb","bbc","bbt","bbva","bcg","bcn","bd","be","beats","beauty","beer","bentley","berlin","best","bestbuy","bet","bf","bg","bh","bharti","bi","bible","bid","bike","bing","bingo","bio","biz","bj","black","blackfriday","blanco","blockbuster","blog","bloomberg","blue","bm","bms","bmw","bn","bnl","bnpparibas","bo","boats","boehringer","bofa","bom","bond","boo","book","booking","boots","bosch","bostik","boston","bot","boutique","box","br","bradesco","bridgestone","broadway","broker","brother","brussels","bs","bt","budapest","bugatti","build","builders","business","buy","buzz","bv","bw","by","bz","bzh","ca","cab","cafe","cal","call","calvinklein","cam","camera","camp","cancerresearch","canon","capetown","capital","capitalone","car","caravan","cards","care","career","careers","cars","cartier","casa","case","caseih","cash","casino","cat","catering","catholic","cba","cbn","cbre","cbs","cd","ceb","center","ceo","cern","cf","cfa","cfd","cg","ch","chanel","channel","chase","chat","cheap","chintai","chloe","christmas","chrome","chrysler","church","ci","cipriani","circle","cisco","citadel","citi","citic","city","cityeats","ck","cl","claims","cleaning","click","clinic","clinique","clothing","cloud","club","clubmed","cm","cn","coach","codes","coffee","college","cologne","comcast","commbank","community","company","compare","computer","comsec","condos","construction","consulting","contact","contractors","cooking","cookingchannel","cool","coop","corsica","country","coupon","coupons","courses","cr","credit","creditcard","creditunion","cricket","crown","crs","cruise","cruises","csc","cu","cuisinella","cv","cw","cx","cy","cymru","cyou","cz","dabur","dad","dance","data","date","dating","datsun","day","dclk","dds","de","deal","dealer","deals","degree","delivery","dell","deloitte","delta","democrat","dental","dentist","desi","design","dev","dhl","diamonds","diet","digital","direct","directory","discount","discover","dish","diy","dj","dk","dm","dnp","do","docs","doctor","dodge","dog","doha","domains","dot","download","drive","dtv","dubai","duck","dunlop","duns","dupont","durban","dvag","dvr","dz","earth","eat","ec","eco","edeka","education","ee","eg","email","emerck","energy","engineer","engineering","enterprises","epost","epson","equipment","er","ericsson","erni","es","esq","estate","esurance","et","eu","eurovision","eus","events","everbank","exchange","expert","exposed","express","extraspace","fage","fail","fairwinds","faith","family","fan","fans","farm","farmers","fashion","fast","fedex","feedback","ferrari","ferrero","fi","fiat","fidelity","fido","film","final","finance","financial","fire","firestone","firmdale","fish","fishing","fit","fitness","fj","fk","flickr","flights","flir","florist","flowers","fly","fm","fo","foo","food","foodnetwork","football","ford","forex","forsale","forum","foundation","fox","fr","free","fresenius","frl","frogans","frontdoor","frontier","ftr","fujitsu","fujixerox","fun","fund","furniture","futbol","fyi","ga","gal","gallery","gallo","gallup","game","games","gap","garden","gb","gbiz","gd","gdn","ge","gea","gent","genting","george","gf","gg","ggee","gh","gi","gift","gifts","gives","giving","gl","glade","glass","gle","global","globo","gm","gmail","gmbh","gmo","gmx","gn","godaddy","gold","goldpoint","golf","goo","goodhands","goodyear","goog","google","gop","got","gp","gq","gr","grainger","graphics","gratis","green","gripe","group","gs","gt","gu","guardian","gucci","guge","guide","guitars","guru","gw","gy","hair","hamburg","hangout","haus","hbo","hdfc","hdfcbank","health","healthcare","help","helsinki","here","hermes","hgtv","hiphop","hisamitsu","hitachi","hiv","hk","hkt","hm","hn","hockey","holdings","holiday","homedepot","homegoods","homes","homesense","honda","honeywell","horse","hospital","host","hosting","hot","hoteles","hotmail","house","how","hr","hsbc","ht","htc","hu","hughes","hyatt","hyundai","ibm","icbc","ice","icu","id","ie","ieee","ifm","ikano","il","im","imamat","imdb","immo","immobilien","in","industries","infiniti","info","ing","ink","institute","insurance","insure","int","intel","international","intuit","investments","ipiranga","iq","ir","irish","is","iselect","ismaili","ist","istanbul","it","itau","itv","iveco","iwc","jaguar","java","jcb","jcp","je","jeep","jetzt","jewelry","jio","jlc","jll","jm","jmp","jnj","jo","jobs","joburg","jot","joy","jp","jpmorgan","jprs","juegos","juniper","kaufen","kddi","ke","kerryhotels","kerrylogistics","kerryproperties","kfh","kg","kh","ki","kia","kim","kinder","kindle","kitchen","kiwi","km","kn","koeln","komatsu","kosher","kp","kpmg","kpn","kr","krd","kred","kuokgroup","kw","ky","kyoto","kz","la","lacaixa","ladbrokes","lamborghini","lamer","lancaster","lancia","lancome","land","landrover","lanxess","lasalle","lat","latino","latrobe","law","lawyer","lb","lc","lds","lease","leclerc","lefrak","legal","lego","lexus","lgbt","li","liaison","lidl","life","lifeinsurance","lifestyle","lighting","like","lilly","limited","limo","lincoln","linde","link","lipsy","live","living","lixil","lk","loan","loans","locker","locus","loft","lol","london","lotte","lotto","love","lpl","lplfinancial","lr","ls","lt","ltd","ltda","lu","lundbeck","lupin","luxe","luxury","lv","ly","ma","macys","madrid","maif","maison","makeup","man","management","mango","market","marketing","markets","marriott","marshalls","maserati","mattel","mba","mc","mcd","mcdonalds","mckinsey","md","me","med","media","meet","melbourne","meme","memorial","men","menu","meo","metlife","mg","mh","miami","microsoft","mil","mini","mint","mit","mitsubishi","mk","ml","mlb","mls","mm","mma","mn","mo","mobi","mobile","mobily","moda","moe","moi","mom","monash","money","monster","montblanc","mopar","mormon","mortgage","moscow","moto","motorcycles","mov","movie","movistar","mp","mq","mr","ms","msd","mt","mtn","mtpc","mtr","mu","museum","mutual","mv","mw","mx","my","mz","na","nab","nadex","nagoya","name","nationwide","natura","navy","nba","nc","ne","nec","netbank","netflix","network","neustar","new","newholland","news","next","nextdirect","nexus","nf","nfl","ng","ngo","nhk","ni","nico","nike","nikon","ninja","nissan","nissay","nl","no","nokia","northwesternmutual","norton","now","nowruz","nowtv","np","nr","nra","nrw","ntt","nu","nyc","nz","obi","observer","off","office","okinawa","olayan","olayangroup","oldnavy","ollo","om","omega","one","ong","onl","online","onyourside","ooo","open","oracle","orange","organic","orientexpress","origins","osaka","otsuka","ott","ovh","pa","page","pamperedchef","panasonic","panerai","paris","pars","partners","parts","party","passagens","pay","pccw","pe","pet","pf","pfizer","pg","ph","pharmacy","philips","phone","photo","photography","photos","physio","piaget","pics","pictet","pictures","pid","pin","ping","pink","pioneer","pizza","pk","pl","place","play","playstation","plumbing","plus","pm","pn","pnc","pohl","poker","politie","porn","post","pr","pramerica","praxi","press","prime","pro","prod","productions","prof","progressive","promo","properties","property","protection","pru","prudential","ps","pt","pub","pw","pwc","py","qa","qpon","quebec","quest","qvc","racing","radio","raid","re","read","realestate","realtor","realty","recipes","red","redstone","redumbrella","rehab","reise","reisen","reit","reliance","ren","rent","rentals","repair","report","republican","rest","restaurant","review","reviews","rexroth","rich","richardli","ricoh","rightathome","ril","rio","rip","rmit","ro","rocher","rocks","rodeo","rogers","room","rs","rsvp","ru","ruhr","run","rw","rwe","ryukyu","sa","saarland","safe","safety","sakura","sale","salon","samsclub","samsung","sandvik","sandvikcoromant","sanofi","sap","sapo","sarl","sas","save","saxo","sb","sbi","sbs","sc","sca","scb","schaeffler","schmidt","scholarships","school","schule","schwarz","science","scjohnson","scor","scot","sd","se","seat","secure","security","seek","select","sener","services","ses","seven","sew","sex","sexy","sfr","sg","sh","shangrila","sharp","shaw","shell","shia","shiksha","shoes","shop","shopping","shouji","show","showtime","shriram","si","silk","sina","singles","site","sj","sk","ski","skin","sky","skype","sl","sling","sm","smart","smile","sn","sncf","so","soccer","social","softbank","software","sohu","solar","solutions","song","sony","soy","space","spiegel","spot","spreadbetting","sr","srl","srt","st","stada","staples","star","starhub","statebank","statefarm","statoil","stc","stcgroup","stockholm","storage","store","stream","studio","study","style","su","sucks","supplies","supply","support","surf","surgery","suzuki","sv","swatch","swiftcover","swiss","sx","sy","sydney","symantec","systems","sz","tab","taipei","talk","taobao","target","tatamotors","tatar","tattoo","tax","taxi","tc","tci","td","tdk","team","tech","technology","tel","telecity","telefonica","temasek","tennis","teva","tf","tg","th","thd","theater","theatre","tiaa","tickets","tienda","tiffany","tips","tires","tirol","tj","tjmaxx","tjx","tk","tkmaxx","tl","tm","tmall","tn","to","today","tokyo","tools","top","toray","toshiba","total","tours","town","toyota","toys","tr","trade","trading","training","travel","travelchannel","travelers","travelersinsurance","trust","trv","tt","tube","tui","tunes","tushu","tv","tvs","tw","tz","ua","ubank","ubs","uconnect","ug","unicom","university","uno","uol","ups","us","uy","uz","va","vacations","vana","vanguard","vc","ve","vegas","ventures","verisign","versicherung","vet","vg","vi","viajes","video","vig","viking","villas","vin","vip","virgin","visa","vision","vista","vistaprint","viva","vivo","vlaanderen","vn","vodka","volkswagen","volvo","vote","voting","voto","voyage","vu","vuelos","wales","walmart","walter","wang","wanggou","warman","watch","watches","weather","weatherchannel","webcam","weber","website","wed","wedding","weibo","weir","wf","whoswho","wien","wiki","williamhill","win","windows","wine","winners","wme","wolterskluwer","woodside","work","works","world","wow","ws","wtc","wtf","xbox","xerox","xfinity","xihuan","xin","xn--11b4c3d","xn--1ck2e1b","xn--1qqw23a","xn--30rr7y","xn--3bst00m","xn--3ds443g","xn--3e0b707e","xn--3oq18vl8pn36a","xn--3pxu8k","xn--42c2d9a","xn--45brj9c","xn--45q11c","xn--4gbrim","xn--54b7fta0cc","xn--55qw42g","xn--55qx5d","xn--5su34j936bgsg","xn--5tzm5g","xn--6frz82g","xn--6qq986b3xl","xn--80adxhks","xn--80ao21a","xn--80aqecdr1a","xn--80asehdb","xn--80aswg","xn--8y0a063a","xn--90a3ac","xn--90ae","xn--90ais","xn--9dbq2a","xn--9et52u","xn--9krt00a","xn--b4w605ferd","xn--bck1b9a5dre4c","xn--c1avg","xn--c2br7g","xn--cck2b3b","xn--cg4bki","xn--clchc0ea0b2g2a9gcd","xn--czr694b","xn--czrs0t","xn--czru2d","xn--d1acj3b","xn--d1alf","xn--e1a4c","xn--eckvdtc9d","xn--efvy88h","xn--estv75g","xn--fct429k","xn--fhbei","xn--fiq228c5hs","xn--fiq64b","xn--fiqs8s","xn--fiqz9s","xn--fjq720a","xn--flw351e","xn--fpcrj9c3d","xn--fzc2c9e2c","xn--fzys8d69uvgm","xn--g2xx48c","xn--gckr3f0f","xn--gecrj9c","xn--gk3at1e","xn--h2brj9c","xn--hxt814e","xn--i1b6b1a6a2e","xn--imr513n","xn--io0a7i","xn--j1aef","xn--j1amh","xn--j6w193g","xn--jlq61u9w7b","xn--jvr189m","xn--kcrx77d1x4a","xn--kprw13d","xn--kpry57d","xn--kpu716f","xn--kput3i","xn--l1acc","xn--lgbbat1ad8j","xn--mgb9awbf","xn--mgba3a3ejt","xn--mgba3a4f16a","xn--mgba7c0bbn0a","xn--mgbaam7a8h","xn--mgbab2bd","xn--mgbai9azgqp6j","xn--mgbayh7gpa","xn--mgbb9fbpob","xn--mgbbh1a71e","xn--mgbc0a9azcg","xn--mgbca7dzdo","xn--mgberp4a5d4ar","xn--mgbi4ecexp","xn--mgbpl2fh","xn--mgbt3dhd","xn--mgbtx2b","xn--mgbx4cd0ab","xn--mix891f","xn--mk1bu44c","xn--mxtq1m","xn--ngbc5azd","xn--ngbe9e0a","xn--node","xn--nqv7f","xn--nqv7fs00ema","xn--nyqy26a","xn--o3cw4h","xn--ogbpf8fl","xn--p1acf","xn--p1ai","xn--pbt977c","xn--pgbs0dh","xn--pssy2u","xn--q9jyb4c","xn--qcka1pmc","xn--qxam","xn--rhqv96g","xn--rovu88b","xn--s9brj9c","xn--ses554g","xn--t60b56a","xn--tckwe","xn--tiq49xqyj","xn--unup4y","xn--vermgensberater-ctb","xn--vermgensberatung-pwb","xn--vhquv","xn--vuq861b","xn--w4r85el8fhu5dnra","xn--w4rs40l","xn--wgbh1c","xn--wgbl6a","xn--xhq521b","xn--xkc2al3hye2a","xn--xkc2dl3a5ee0h","xn--y9a3aq","xn--yfro4i67o","xn--ygbi2ammx","xn--zfr164b","xperia","xxx","xyz","yachts","yahoo","yamaxun","yandex","ye","yodobashi","yoga","yokohama","you","youtube","yt","yun","za","zappos","zara","zero","zip","zippo","zm","zone","zuerich","zw"],a.htmlAttrs=["src=","data=","href=","cite=","formaction=","icon=","manifest=","poster=","codebase=","background=","profile=","usemap="]}),t=e(function(e,a){function t(e){var a=e.match(o);if(null===a)return!1;for(var t=r.length-1;t>=0;t--)if(r[t].test(e))return!1;var i=a[2];return!!i&&-1!==n.tlds.indexOf(i)}Object.defineProperty(a,"__esModule",{value:!0});var o=/^[a-z0-9!#$%&'*+\-\/=?^_`{|}~.]+@([a-z0-9%\-]+\.){1,}([a-z0-9\-]+)?$/i,r=[/^[!#$%&'*+\-\/=?^_`{|}~.]/,/[.]{2,}[a-z0-9!#$%&'*+\-\/=?^_`{|}~.]+@/i,/\.@/];a.default=t}),o=e(function(e,n){function t(e){if(!o.test(e))return!1;var n=e.split("."),t=Number(n[0]);if(isNaN(t)||t>255||t<0)return!1;var r=Number(n[1]);if(isNaN(r)||r>255||r<0)return!1;var i=Number(n[2]);if(isNaN(i)||i>255||i<0)return!1;var s=Number((n[3].match(/^\d+/)||[])[0]);if(isNaN(s)||s>255||s<0)return!1;var c=(n[3].match(/(^\d+)(:)(\d+)/)||[])[3];return!(c&&!a.isPort(c))}Object.defineProperty(n,"__esModule",{value:!0});var o=/^(\d{1,3}\.){3}\d{1,3}(:\d{1,5})?(\/([a-z0-9\-._~:\/\?#\[\]@!$&'\(\)\*\+,;=%]+)?)?$/i;n.default=t}),r=e(function(e,t){function o(e){var t=e.match(r);return null!==t&&("string"==typeof t[3]&&(-1!==n.tlds.indexOf(t[3].toLowerCase())&&!(t[5]&&!a.isPort(t[5]))))}Object.defineProperty(t,"__esModule",{value:!0});var r=/^(https?:\/\/|ftps?:\/\/)?([a-z0-9%\-]+\.){1,}([a-z0-9\-]+)?(:(\d{1,5}))?(\/([a-z0-9\-._~:\/\?#\[\]@!$&'\(\)\*\+,;=%]+)?)?$/i;t.default=o}),i=e(function(e,a){function n(e,a,t){return e.forEach(function(o,r){!(o.indexOf(".")>-1)||e[r-1]===a&&e[r+1]===t||e[r+1]!==a&&e[r+1]!==t||(e[r]=e[r]+e[r+1],"string"==typeof e[r+2]&&(e[r]=e[r]+e[r+2]),"string"==typeof e[r+3]&&(e[r]=e[r]+e[r+3]),"string"==typeof e[r+4]&&(e[r]=e[r]+e[r+4]),e.splice(r+1,4),n(e,a,t))}),e}function t(e){return e=n(e,"(",")"),e=n(e,"[","]"),e=n(e,'"','"'),e=n(e,"'","'")}Object.defineProperty(a,"__esModule",{value:!0}),a.fixSeparators=n,a.default=t}),s=e(function(e,a){function n(e){var a=e.replace(/([\s\(\)\[\]<>"'])/g,"\0$1\0").replace(/([?;:,.!]+)(?=(\0|$|\s))/g,"\0$1\0").split("\0");return i.default(a)}function t(e){return e.join("")}Object.defineProperty(a,"__esModule",{value:!0}),a.separate=n,a.deSeparate=t}),c=e(function(e,a){function n(e){return e=e.toLowerCase(),0===e.indexOf("http://")?"http://":0===e.indexOf("https://")?"https://":0===e.indexOf("ftp://")?"ftp://":0===e.indexOf("ftps://")?"ftps://":0===e.indexOf("file:///")?"file:///":0===e.indexOf("mailto:")&&"mailto:"}Object.defineProperty(a,"__esModule",{value:!0}),a.default=n}),l=e(function(e,a){function i(e,a){return e.map(function(i,s){var l=encodeURI(i);if(l.indexOf(".")<1&&!c.default(l))return i;var u=null,d=c.default(l)||"";return d&&(l=l.substr(d.length)),a.files&&"file:///"===d&&l.split(/\/|\\/).length-1&&(u={reason:"file",protocol:d,raw:i,encoded:l}),!u&&a.urls&&r.default(l)&&(u={reason:"url",protocol:d||("function"==typeof a.defaultProtocol?a.defaultProtocol(i):a.defaultProtocol),raw:i,encoded:l}),!u&&a.emails&&t.default(l)&&(u={reason:"email",protocol:"mailto:",raw:i,encoded:l}),!u&&a.ips&&o.default(l)&&(u={reason:"ip",protocol:d||("function"==typeof a.defaultProtocol?a.defaultProtocol(i):a.defaultProtocol),raw:i,encoded:l}),u&&("'"!==e[s-1]&&'"'!==e[s-1]||!~n.htmlAttrs.indexOf(e[s-2]))?u:i})}Object.defineProperty(a,"__esModule",{value:!0}),a.default=i}),u=e(function(e,a){function n(e,a){var n=o.separate(e),r=l.default(n,a);if(a.exclude)for(var i=0;ia.truncate&&(t=t.substring(0,a.truncate)+"..."),"object"==typeof a.truncate&&t.length>a.truncate[0]+a.truncate[1]&&(t=t.substr(0,a.truncate[0])+"..."+t.substr(t.length-a.truncate[1])),void 0===a.attributes&&(a.attributes=[]),'"+t+""}Object.defineProperty(a,"__esModule",{value:!0});var o=s;a.default=n}),d=e(function(e,n){Object.defineProperty(n,"__esModule",{value:!0});var i=function(e,n){return n=a.defaultOptions(n),u.default(e,n)};i.validate={ip:o.default,url:function(e){var a=c.default(e)||"";return e=e.substr(a.length),e=encodeURI(e),r.default(e)},email:t.default},n.default=i});return function(e){return e&&e.__esModule?e.default:e}(d)}); \ No newline at end of file diff --git a/webclient/js/lib/jquery.js b/webclient/js/lib/jquery.js deleted file mode 100644 index fff67764..00000000 --- a/webclient/js/lib/jquery.js +++ /dev/null @@ -1,6240 +0,0 @@ -/*! - * jQuery JavaScript Library v1.4.2 - * http://jquery.com/ - * - * Copyright 2010, John Resig - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * Includes Sizzle.js - * http://sizzlejs.com/ - * Copyright 2010, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * - * Date: Sat Feb 13 22:33:48 2010 -0500 - */ -(function( window, undefined ) { - -// Define a local copy of jQuery -var jQuery = function( selector, context ) { - // The jQuery object is actually just the init constructor 'enhanced' - return new jQuery.fn.init( selector, context ); - }, - - // Map over jQuery in case of overwrite - _jQuery = window.jQuery, - - // Map over the $ in case of overwrite - _$ = window.$, - - // Use the correct document accordingly with window argument (sandbox) - document = window.document, - - // A central reference to the root jQuery(document) - rootjQuery, - - // A simple way to check for HTML strings or ID strings - // (both of which we optimize for) - quickExpr = /^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/, - - // Is it a simple selector - isSimple = /^.[^:#\[\.,]*$/, - - // Check if a string has a non-whitespace character in it - rnotwhite = /\S/, - - // Used for trimming whitespace - rtrim = /^(\s|\u00A0)+|(\s|\u00A0)+$/g, - - // Match a standalone tag - rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/, - - // Keep a UserAgent string for use with jQuery.browser - userAgent = navigator.userAgent, - - // For matching the engine and version of the browser - browserMatch, - - // Has the ready events already been bound? - readyBound = false, - - // The functions to execute on DOM ready - readyList = [], - - // The ready event handler - DOMContentLoaded, - - // Save a reference to some core methods - toString = Object.prototype.toString, - hasOwnProperty = Object.prototype.hasOwnProperty, - push = Array.prototype.push, - slice = Array.prototype.slice, - indexOf = Array.prototype.indexOf; - -jQuery.fn = jQuery.prototype = { - init: function( selector, context ) { - var match, elem, ret, doc; - - // Handle $(""), $(null), or $(undefined) - if ( !selector ) { - return this; - } - - // Handle $(DOMElement) - if ( selector.nodeType ) { - this.context = this[0] = selector; - this.length = 1; - return this; - } - - // The body element only exists once, optimize finding it - if ( selector === "body" && !context ) { - this.context = document; - this[0] = document.body; - this.selector = "body"; - this.length = 1; - return this; - } - - // Handle HTML strings - if ( typeof selector === "string" ) { - // Are we dealing with HTML string or an ID? - match = quickExpr.exec( selector ); - - // Verify a match, and that no context was specified for #id - if ( match && (match[1] || !context) ) { - - // HANDLE: $(html) -> $(array) - if ( match[1] ) { - doc = (context ? context.ownerDocument || context : document); - - // If a single string is passed in and it's a single tag - // just do a createElement and skip the rest - ret = rsingleTag.exec( selector ); - - if ( ret ) { - if ( jQuery.isPlainObject( context ) ) { - selector = [ document.createElement( ret[1] ) ]; - jQuery.fn.attr.call( selector, context, true ); - - } else { - selector = [ doc.createElement( ret[1] ) ]; - } - - } else { - ret = buildFragment( [ match[1] ], [ doc ] ); - selector = (ret.cacheable ? ret.fragment.cloneNode(true) : ret.fragment).childNodes; - } - - return jQuery.merge( this, selector ); - - // HANDLE: $("#id") - } else { - elem = document.getElementById( match[2] ); - - if ( elem ) { - // Handle the case where IE and Opera return items - // by name instead of ID - if ( elem.id !== match[2] ) { - return rootjQuery.find( selector ); - } - - // Otherwise, we inject the element directly into the jQuery object - this.length = 1; - this[0] = elem; - } - - this.context = document; - this.selector = selector; - return this; - } - - // HANDLE: $("TAG") - } else if ( !context && /^\w+$/.test( selector ) ) { - this.selector = selector; - this.context = document; - selector = document.getElementsByTagName( selector ); - return jQuery.merge( this, selector ); - - // HANDLE: $(expr, $(...)) - } else if ( !context || context.jquery ) { - return (context || rootjQuery).find( selector ); - - // HANDLE: $(expr, context) - // (which is just equivalent to: $(context).find(expr) - } else { - return jQuery( context ).find( selector ); - } - - // HANDLE: $(function) - // Shortcut for document ready - } else if ( jQuery.isFunction( selector ) ) { - return rootjQuery.ready( selector ); - } - - if (selector.selector !== undefined) { - this.selector = selector.selector; - this.context = selector.context; - } - - return jQuery.makeArray( selector, this ); - }, - - // Start with an empty selector - selector: "", - - // The current version of jQuery being used - jquery: "1.4.2", - - // The default length of a jQuery object is 0 - length: 0, - - // The number of elements contained in the matched element set - size: function() { - return this.length; - }, - - toArray: function() { - return slice.call( this, 0 ); - }, - - // Get the Nth element in the matched element set OR - // Get the whole matched element set as a clean array - get: function( num ) { - return num == null ? - - // Return a 'clean' array - this.toArray() : - - // Return just the object - ( num < 0 ? this.slice(num)[ 0 ] : this[ num ] ); - }, - - // Take an array of elements and push it onto the stack - // (returning the new matched element set) - pushStack: function( elems, name, selector ) { - // Build a new jQuery matched element set - var ret = jQuery(); - - if ( jQuery.isArray( elems ) ) { - push.apply( ret, elems ); - - } else { - jQuery.merge( ret, elems ); - } - - // Add the old object onto the stack (as a reference) - ret.prevObject = this; - - ret.context = this.context; - - if ( name === "find" ) { - ret.selector = this.selector + (this.selector ? " " : "") + selector; - } else if ( name ) { - ret.selector = this.selector + "." + name + "(" + selector + ")"; - } - - // Return the newly-formed element set - return ret; - }, - - // Execute a callback for every element in the matched set. - // (You can seed the arguments with an array of args, but this is - // only used internally.) - each: function( callback, args ) { - return jQuery.each( this, callback, args ); - }, - - ready: function( fn ) { - // Attach the listeners - jQuery.bindReady(); - - // If the DOM is already ready - if ( jQuery.isReady ) { - // Execute the function immediately - fn.call( document, jQuery ); - - // Otherwise, remember the function for later - } else if ( readyList ) { - // Add the function to the wait list - readyList.push( fn ); - } - - return this; - }, - - eq: function( i ) { - return i === -1 ? - this.slice( i ) : - this.slice( i, +i + 1 ); - }, - - first: function() { - return this.eq( 0 ); - }, - - last: function() { - return this.eq( -1 ); - }, - - slice: function() { - return this.pushStack( slice.apply( this, arguments ), - "slice", slice.call(arguments).join(",") ); - }, - - map: function( callback ) { - return this.pushStack( jQuery.map(this, function( elem, i ) { - return callback.call( elem, i, elem ); - })); - }, - - end: function() { - return this.prevObject || jQuery(null); - }, - - // For internal use only. - // Behaves like an Array's method, not like a jQuery method. - push: push, - sort: [].sort, - splice: [].splice -}; - -// Give the init function the jQuery prototype for later instantiation -jQuery.fn.init.prototype = jQuery.fn; - -jQuery.extend = jQuery.fn.extend = function() { - // copy reference to target object - var target = arguments[0] || {}, i = 1, length = arguments.length, deep = false, options, name, src, copy; - - // Handle a deep copy situation - if ( typeof target === "boolean" ) { - deep = target; - target = arguments[1] || {}; - // skip the boolean and the target - i = 2; - } - - // Handle case when target is a string or something (possible in deep copy) - if ( typeof target !== "object" && !jQuery.isFunction(target) ) { - target = {}; - } - - // extend jQuery itself if only one argument is passed - if ( length === i ) { - target = this; - --i; - } - - for ( ; i < length; i++ ) { - // Only deal with non-null/undefined values - if ( (options = arguments[ i ]) != null ) { - // Extend the base object - for ( name in options ) { - src = target[ name ]; - copy = options[ name ]; - - // Prevent never-ending loop - if ( target === copy ) { - continue; - } - - // Recurse if we're merging object literal values or arrays - if ( deep && copy && ( jQuery.isPlainObject(copy) || jQuery.isArray(copy) ) ) { - var clone = src && ( jQuery.isPlainObject(src) || jQuery.isArray(src) ) ? src - : jQuery.isArray(copy) ? [] : {}; - - // Never move original objects, clone them - target[ name ] = jQuery.extend( deep, clone, copy ); - - // Don't bring in undefined values - } else if ( copy !== undefined ) { - target[ name ] = copy; - } - } - } - } - - // Return the modified object - return target; -}; - -jQuery.extend({ - noConflict: function( deep ) { - window.$ = _$; - - if ( deep ) { - window.jQuery = _jQuery; - } - - return jQuery; - }, - - // Is the DOM ready to be used? Set to true once it occurs. - isReady: false, - - // Handle when the DOM is ready - ready: function() { - // Make sure that the DOM is not already loaded - if ( !jQuery.isReady ) { - // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). - if ( !document.body ) { - return setTimeout( jQuery.ready, 13 ); - } - - // Remember that the DOM is ready - jQuery.isReady = true; - - // If there are functions bound, to execute - if ( readyList ) { - // Execute all of them - var fn, i = 0; - while ( (fn = readyList[ i++ ]) ) { - fn.call( document, jQuery ); - } - - // Reset the list of functions - readyList = null; - } - - // Trigger any bound ready events - if ( jQuery.fn.triggerHandler ) { - jQuery( document ).triggerHandler( "ready" ); - } - } - }, - - bindReady: function() { - if ( readyBound ) { - return; - } - - readyBound = true; - - // Catch cases where $(document).ready() is called after the - // browser event has already occurred. - if ( document.readyState === "complete" ) { - return jQuery.ready(); - } - - // Mozilla, Opera and webkit nightlies currently support this event - if ( document.addEventListener ) { - // Use the handy event callback - document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false ); - - // A fallback to window.onload, that will always work - window.addEventListener( "load", jQuery.ready, false ); - - // If IE event model is used - } else if ( document.attachEvent ) { - // ensure firing before onload, - // maybe late but safe also for iframes - document.attachEvent("onreadystatechange", DOMContentLoaded); - - // A fallback to window.onload, that will always work - window.attachEvent( "onload", jQuery.ready ); - - // If IE and not a frame - // continually check to see if the document is ready - var toplevel = false; - - try { - toplevel = window.frameElement == null; - } catch(e) {} - - if ( document.documentElement.doScroll && toplevel ) { - doScrollCheck(); - } - } - }, - - // See test/unit/core.js for details concerning isFunction. - // Since version 1.3, DOM methods and functions like alert - // aren't supported. They return false on IE (#2968). - isFunction: function( obj ) { - return toString.call(obj) === "[object Function]"; - }, - - isArray: function( obj ) { - return toString.call(obj) === "[object Array]"; - }, - - isPlainObject: function( obj ) { - // Must be an Object. - // Because of IE, we also have to check the presence of the constructor property. - // Make sure that DOM nodes and window objects don't pass through, as well - if ( !obj || toString.call(obj) !== "[object Object]" || obj.nodeType || obj.setInterval ) { - return false; - } - - // Not own constructor property must be Object - if ( obj.constructor - && !hasOwnProperty.call(obj, "constructor") - && !hasOwnProperty.call(obj.constructor.prototype, "isPrototypeOf") ) { - return false; - } - - // Own properties are enumerated firstly, so to speed up, - // if last one is own, then all properties are own. - - var key; - for ( key in obj ) {} - - return key === undefined || hasOwnProperty.call( obj, key ); - }, - - isEmptyObject: function( obj ) { - for ( var name in obj ) { - return false; - } - return true; - }, - - error: function( msg ) { - throw msg; - }, - - parseJSON: function( data ) { - if ( typeof data !== "string" || !data ) { - return null; - } - - // Make sure leading/trailing whitespace is removed (IE can't handle it) - data = jQuery.trim( data ); - - // Make sure the incoming data is actual JSON - // Logic borrowed from http://json.org/json2.js - if ( /^[\],:{}\s]*$/.test(data.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, "@") - .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, "]") - .replace(/(?:^|:|,)(?:\s*\[)+/g, "")) ) { - - // Try to use the native JSON parser first - return window.JSON && window.JSON.parse ? - window.JSON.parse( data ) : - (new Function("return " + data))(); - - } else { - jQuery.error( "Invalid JSON: " + data ); - } - }, - - noop: function() {}, - - // Evalulates a script in a global context - globalEval: function( data ) { - if ( data && rnotwhite.test(data) ) { - // Inspired by code by Andrea Giammarchi - // http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html - var head = document.getElementsByTagName("head")[0] || document.documentElement, - script = document.createElement("script"); - - script.type = "text/javascript"; - - if ( jQuery.support.scriptEval ) { - script.appendChild( document.createTextNode( data ) ); - } else { - script.text = data; - } - - // Use insertBefore instead of appendChild to circumvent an IE6 bug. - // This arises when a base node is used (#2709). - head.insertBefore( script, head.firstChild ); - head.removeChild( script ); - } - }, - - nodeName: function( elem, name ) { - return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase(); - }, - - // args is for internal usage only - each: function( object, callback, args ) { - var name, i = 0, - length = object.length, - isObj = length === undefined || jQuery.isFunction(object); - - if ( args ) { - if ( isObj ) { - for ( name in object ) { - if ( callback.apply( object[ name ], args ) === false ) { - break; - } - } - } else { - for ( ; i < length; ) { - if ( callback.apply( object[ i++ ], args ) === false ) { - break; - } - } - } - - // A special, fast, case for the most common use of each - } else { - if ( isObj ) { - for ( name in object ) { - if ( callback.call( object[ name ], name, object[ name ] ) === false ) { - break; - } - } - } else { - for ( var value = object[0]; - i < length && callback.call( value, i, value ) !== false; value = object[++i] ) {} - } - } - - return object; - }, - - trim: function( text ) { - return (text || "").replace( rtrim, "" ); - }, - - // results is for internal usage only - makeArray: function( array, results ) { - var ret = results || []; - - if ( array != null ) { - // The window, strings (and functions) also have 'length' - // The extra typeof function check is to prevent crashes - // in Safari 2 (See: #3039) - if ( array.length == null || typeof array === "string" || jQuery.isFunction(array) || (typeof array !== "function" && array.setInterval) ) { - push.call( ret, array ); - } else { - jQuery.merge( ret, array ); - } - } - - return ret; - }, - - inArray: function( elem, array ) { - if ( array.indexOf ) { - return array.indexOf( elem ); - } - - for ( var i = 0, length = array.length; i < length; i++ ) { - if ( array[ i ] === elem ) { - return i; - } - } - - return -1; - }, - - merge: function( first, second ) { - var i = first.length, j = 0; - - if ( typeof second.length === "number" ) { - for ( var l = second.length; j < l; j++ ) { - first[ i++ ] = second[ j ]; - } - - } else { - while ( second[j] !== undefined ) { - first[ i++ ] = second[ j++ ]; - } - } - - first.length = i; - - return first; - }, - - grep: function( elems, callback, inv ) { - var ret = []; - - // Go through the array, only saving the items - // that pass the validator function - for ( var i = 0, length = elems.length; i < length; i++ ) { - if ( !inv !== !callback( elems[ i ], i ) ) { - ret.push( elems[ i ] ); - } - } - - return ret; - }, - - // arg is for internal usage only - map: function( elems, callback, arg ) { - var ret = [], value; - - // Go through the array, translating each of the items to their - // new value (or values). - for ( var i = 0, length = elems.length; i < length; i++ ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret[ ret.length ] = value; - } - } - - return ret.concat.apply( [], ret ); - }, - - // A global GUID counter for objects - guid: 1, - - proxy: function( fn, proxy, thisObject ) { - if ( arguments.length === 2 ) { - if ( typeof proxy === "string" ) { - thisObject = fn; - fn = thisObject[ proxy ]; - proxy = undefined; - - } else if ( proxy && !jQuery.isFunction( proxy ) ) { - thisObject = proxy; - proxy = undefined; - } - } - - if ( !proxy && fn ) { - proxy = function() { - return fn.apply( thisObject || this, arguments ); - }; - } - - // Set the guid of unique handler to the same of original handler, so it can be removed - if ( fn ) { - proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++; - } - - // So proxy can be declared as an argument - return proxy; - }, - - // Use of jQuery.browser is frowned upon. - // More details: http://docs.jquery.com/Utilities/jQuery.browser - uaMatch: function( ua ) { - ua = ua.toLowerCase(); - - var match = /(webkit)[ \/]([\w.]+)/.exec( ua ) || - /(opera)(?:.*version)?[ \/]([\w.]+)/.exec( ua ) || - /(msie) ([\w.]+)/.exec( ua ) || - !/compatible/.test( ua ) && /(mozilla)(?:.*? rv:([\w.]+))?/.exec( ua ) || - []; - - return { browser: match[1] || "", version: match[2] || "0" }; - }, - - browser: {} -}); - -browserMatch = jQuery.uaMatch( userAgent ); -if ( browserMatch.browser ) { - jQuery.browser[ browserMatch.browser ] = true; - jQuery.browser.version = browserMatch.version; -} - -// Deprecated, use jQuery.browser.webkit instead -if ( jQuery.browser.webkit ) { - jQuery.browser.safari = true; -} - -if ( indexOf ) { - jQuery.inArray = function( elem, array ) { - return indexOf.call( array, elem ); - }; -} - -// All jQuery objects should point back to these -rootjQuery = jQuery(document); - -// Cleanup functions for the document ready method -if ( document.addEventListener ) { - DOMContentLoaded = function() { - document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false ); - jQuery.ready(); - }; - -} else if ( document.attachEvent ) { - DOMContentLoaded = function() { - // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). - if ( document.readyState === "complete" ) { - document.detachEvent( "onreadystatechange", DOMContentLoaded ); - jQuery.ready(); - } - }; -} - -// The DOM ready check for Internet Explorer -function doScrollCheck() { - if ( jQuery.isReady ) { - return; - } - - try { - // If IE is used, use the trick by Diego Perini - // http://javascript.nwbox.com/IEContentLoaded/ - document.documentElement.doScroll("left"); - } catch( error ) { - setTimeout( doScrollCheck, 1 ); - return; - } - - // and execute any waiting functions - jQuery.ready(); -} - -function evalScript( i, elem ) { - if ( elem.src ) { - jQuery.ajax({ - url: elem.src, - async: false, - dataType: "script" - }); - } else { - jQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || "" ); - } - - if ( elem.parentNode ) { - elem.parentNode.removeChild( elem ); - } -} - -// Mutifunctional method to get and set values to a collection -// The value/s can be optionally by executed if its a function -function access( elems, key, value, exec, fn, pass ) { - var length = elems.length; - - // Setting many attributes - if ( typeof key === "object" ) { - for ( var k in key ) { - access( elems, k, key[k], exec, fn, value ); - } - return elems; - } - - // Setting one attribute - if ( value !== undefined ) { - // Optionally, function values get executed if exec is true - exec = !pass && exec && jQuery.isFunction(value); - - for ( var i = 0; i < length; i++ ) { - fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass ); - } - - return elems; - } - - // Getting an attribute - return length ? fn( elems[0], key ) : undefined; -} - -function now() { - return (new Date).getTime(); -} -(function() { - - jQuery.support = {}; - - var root = document.documentElement, - script = document.createElement("script"), - div = document.createElement("div"), - id = "script" + now(); - - div.style.display = "none"; - div.innerHTML = "
    a"; - - var all = div.getElementsByTagName("*"), - a = div.getElementsByTagName("a")[0]; - - // Can't get basic test support - if ( !all || !all.length || !a ) { - return; - } - - jQuery.support = { - // IE strips leading whitespace when .innerHTML is used - leadingWhitespace: div.firstChild.nodeType === 3, - - // Make sure that tbody elements aren't automatically inserted - // IE will insert them into empty tables - tbody: !div.getElementsByTagName("tbody").length, - - // Make sure that link elements get serialized correctly by innerHTML - // This requires a wrapper element in IE - htmlSerialize: !!div.getElementsByTagName("link").length, - - // Get the style information from getAttribute - // (IE uses .cssText insted) - style: /red/.test( a.getAttribute("style") ), - - // Make sure that URLs aren't manipulated - // (IE normalizes it by default) - hrefNormalized: a.getAttribute("href") === "/a", - - // Make sure that element opacity exists - // (IE uses filter instead) - // Use a regex to work around a WebKit issue. See #5145 - opacity: /^0.55$/.test( a.style.opacity ), - - // Verify style float existence - // (IE uses styleFloat instead of cssFloat) - cssFloat: !!a.style.cssFloat, - - // Make sure that if no value is specified for a checkbox - // that it defaults to "on". - // (WebKit defaults to "" instead) - checkOn: div.getElementsByTagName("input")[0].value === "on", - - // Make sure that a selected-by-default option has a working selected property. - // (WebKit defaults to false instead of true, IE too, if it's in an optgroup) - optSelected: document.createElement("select").appendChild( document.createElement("option") ).selected, - - parentNode: div.removeChild( div.appendChild( document.createElement("div") ) ).parentNode === null, - - // Will be defined later - deleteExpando: true, - checkClone: false, - scriptEval: false, - noCloneEvent: true, - boxModel: null - }; - - script.type = "text/javascript"; - try { - script.appendChild( document.createTextNode( "window." + id + "=1;" ) ); - } catch(e) {} - - root.insertBefore( script, root.firstChild ); - - // Make sure that the execution of code works by injecting a script - // tag with appendChild/createTextNode - // (IE doesn't support this, fails, and uses .text instead) - if ( window[ id ] ) { - jQuery.support.scriptEval = true; - delete window[ id ]; - } - - // Test to see if it's possible to delete an expando from an element - // Fails in Internet Explorer - try { - delete script.test; - - } catch(e) { - jQuery.support.deleteExpando = false; - } - - root.removeChild( script ); - - if ( div.attachEvent && div.fireEvent ) { - div.attachEvent("onclick", function click() { - // Cloning a node shouldn't copy over any - // bound event handlers (IE does this) - jQuery.support.noCloneEvent = false; - div.detachEvent("onclick", click); - }); - div.cloneNode(true).fireEvent("onclick"); - } - - div = document.createElement("div"); - div.innerHTML = ""; - - var fragment = document.createDocumentFragment(); - fragment.appendChild( div.firstChild ); - - // WebKit doesn't clone checked state correctly in fragments - jQuery.support.checkClone = fragment.cloneNode(true).cloneNode(true).lastChild.checked; - - // Figure out if the W3C box model works as expected - // document.body must exist before we can do this - jQuery(function() { - var div = document.createElement("div"); - div.style.width = div.style.paddingLeft = "1px"; - - document.body.appendChild( div ); - jQuery.boxModel = jQuery.support.boxModel = div.offsetWidth === 2; - document.body.removeChild( div ).style.display = 'none'; - - div = null; - }); - - // Technique from Juriy Zaytsev - // http://thinkweb2.com/projects/prototype/detecting-event-support-without-browser-sniffing/ - var eventSupported = function( eventName ) { - var el = document.createElement("div"); - eventName = "on" + eventName; - - var isSupported = (eventName in el); - if ( !isSupported ) { - el.setAttribute(eventName, "return;"); - isSupported = typeof el[eventName] === "function"; - } - el = null; - - return isSupported; - }; - - jQuery.support.submitBubbles = eventSupported("submit"); - jQuery.support.changeBubbles = eventSupported("change"); - - // release memory in IE - root = script = div = all = a = null; -})(); - -jQuery.props = { - "for": "htmlFor", - "class": "className", - readonly: "readOnly", - maxlength: "maxLength", - cellspacing: "cellSpacing", - rowspan: "rowSpan", - colspan: "colSpan", - tabindex: "tabIndex", - usemap: "useMap", - frameborder: "frameBorder" -}; -var expando = "jQuery" + now(), uuid = 0, windowData = {}; - -jQuery.extend({ - cache: {}, - - expando:expando, - - // The following elements throw uncatchable exceptions if you - // attempt to add expando properties to them. - noData: { - "embed": true, - "object": true, - "applet": true - }, - - data: function( elem, name, data ) { - if ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) { - return; - } - - elem = elem == window ? - windowData : - elem; - - var id = elem[ expando ], cache = jQuery.cache, thisCache; - - if ( !id && typeof name === "string" && data === undefined ) { - return null; - } - - // Compute a unique ID for the element - if ( !id ) { - id = ++uuid; - } - - // Avoid generating a new cache unless none exists and we - // want to manipulate it. - if ( typeof name === "object" ) { - elem[ expando ] = id; - thisCache = cache[ id ] = jQuery.extend(true, {}, name); - - } else if ( !cache[ id ] ) { - elem[ expando ] = id; - cache[ id ] = {}; - } - - thisCache = cache[ id ]; - - // Prevent overriding the named cache with undefined values - if ( data !== undefined ) { - thisCache[ name ] = data; - } - - return typeof name === "string" ? thisCache[ name ] : thisCache; - }, - - removeData: function( elem, name ) { - if ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) { - return; - } - - elem = elem == window ? - windowData : - elem; - - var id = elem[ expando ], cache = jQuery.cache, thisCache = cache[ id ]; - - // If we want to remove a specific section of the element's data - if ( name ) { - if ( thisCache ) { - // Remove the section of cache data - delete thisCache[ name ]; - - // If we've removed all the data, remove the element's cache - if ( jQuery.isEmptyObject(thisCache) ) { - jQuery.removeData( elem ); - } - } - - // Otherwise, we want to remove all of the element's data - } else { - if ( jQuery.support.deleteExpando ) { - delete elem[ jQuery.expando ]; - - } else if ( elem.removeAttribute ) { - elem.removeAttribute( jQuery.expando ); - } - - // Completely remove the data cache - delete cache[ id ]; - } - } -}); - -jQuery.fn.extend({ - data: function( key, value ) { - if ( typeof key === "undefined" && this.length ) { - return jQuery.data( this[0] ); - - } else if ( typeof key === "object" ) { - return this.each(function() { - jQuery.data( this, key ); - }); - } - - var parts = key.split("."); - parts[1] = parts[1] ? "." + parts[1] : ""; - - if ( value === undefined ) { - var data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]); - - if ( data === undefined && this.length ) { - data = jQuery.data( this[0], key ); - } - return data === undefined && parts[1] ? - this.data( parts[0] ) : - data; - } else { - return this.trigger("setData" + parts[1] + "!", [parts[0], value]).each(function() { - jQuery.data( this, key, value ); - }); - } - }, - - removeData: function( key ) { - return this.each(function() { - jQuery.removeData( this, key ); - }); - } -}); -jQuery.extend({ - queue: function( elem, type, data ) { - if ( !elem ) { - return; - } - - type = (type || "fx") + "queue"; - var q = jQuery.data( elem, type ); - - // Speed up dequeue by getting out quickly if this is just a lookup - if ( !data ) { - return q || []; - } - - if ( !q || jQuery.isArray(data) ) { - q = jQuery.data( elem, type, jQuery.makeArray(data) ); - - } else { - q.push( data ); - } - - return q; - }, - - dequeue: function( elem, type ) { - type = type || "fx"; - - var queue = jQuery.queue( elem, type ), fn = queue.shift(); - - // If the fx queue is dequeued, always remove the progress sentinel - if ( fn === "inprogress" ) { - fn = queue.shift(); - } - - if ( fn ) { - // Add a progress sentinel to prevent the fx queue from being - // automatically dequeued - if ( type === "fx" ) { - queue.unshift("inprogress"); - } - - fn.call(elem, function() { - jQuery.dequeue(elem, type); - }); - } - } -}); - -jQuery.fn.extend({ - queue: function( type, data ) { - if ( typeof type !== "string" ) { - data = type; - type = "fx"; - } - - if ( data === undefined ) { - return jQuery.queue( this[0], type ); - } - return this.each(function( i, elem ) { - var queue = jQuery.queue( this, type, data ); - - if ( type === "fx" && queue[0] !== "inprogress" ) { - jQuery.dequeue( this, type ); - } - }); - }, - dequeue: function( type ) { - return this.each(function() { - jQuery.dequeue( this, type ); - }); - }, - - // Based off of the plugin by Clint Helfers, with permission. - // http://blindsignals.com/index.php/2009/07/jquery-delay/ - delay: function( time, type ) { - time = jQuery.fx ? jQuery.fx.speeds[time] || time : time; - type = type || "fx"; - - return this.queue( type, function() { - var elem = this; - setTimeout(function() { - jQuery.dequeue( elem, type ); - }, time ); - }); - }, - - clearQueue: function( type ) { - return this.queue( type || "fx", [] ); - } -}); -var rclass = /[\n\t]/g, - rspace = /\s+/, - rreturn = /\r/g, - rspecialurl = /href|src|style/, - rtype = /(button|input)/i, - rfocusable = /(button|input|object|select|textarea)/i, - rclickable = /^(a|area)$/i, - rradiocheck = /radio|checkbox/; - -jQuery.fn.extend({ - attr: function( name, value ) { - return access( this, name, value, true, jQuery.attr ); - }, - - removeAttr: function( name, fn ) { - return this.each(function(){ - jQuery.attr( this, name, "" ); - if ( this.nodeType === 1 ) { - this.removeAttribute( name ); - } - }); - }, - - addClass: function( value ) { - if ( jQuery.isFunction(value) ) { - return this.each(function(i) { - var self = jQuery(this); - self.addClass( value.call(this, i, self.attr("class")) ); - }); - } - - if ( value && typeof value === "string" ) { - var classNames = (value || "").split( rspace ); - - for ( var i = 0, l = this.length; i < l; i++ ) { - var elem = this[i]; - - if ( elem.nodeType === 1 ) { - if ( !elem.className ) { - elem.className = value; - - } else { - var className = " " + elem.className + " ", setClass = elem.className; - for ( var c = 0, cl = classNames.length; c < cl; c++ ) { - if ( className.indexOf( " " + classNames[c] + " " ) < 0 ) { - setClass += " " + classNames[c]; - } - } - elem.className = jQuery.trim( setClass ); - } - } - } - } - - return this; - }, - - removeClass: function( value ) { - if ( jQuery.isFunction(value) ) { - return this.each(function(i) { - var self = jQuery(this); - self.removeClass( value.call(this, i, self.attr("class")) ); - }); - } - - if ( (value && typeof value === "string") || value === undefined ) { - var classNames = (value || "").split(rspace); - - for ( var i = 0, l = this.length; i < l; i++ ) { - var elem = this[i]; - - if ( elem.nodeType === 1 && elem.className ) { - if ( value ) { - var className = (" " + elem.className + " ").replace(rclass, " "); - for ( var c = 0, cl = classNames.length; c < cl; c++ ) { - className = className.replace(" " + classNames[c] + " ", " "); - } - elem.className = jQuery.trim( className ); - - } else { - elem.className = ""; - } - } - } - } - - return this; - }, - - toggleClass: function( value, stateVal ) { - var type = typeof value, isBool = typeof stateVal === "boolean"; - - if ( jQuery.isFunction( value ) ) { - return this.each(function(i) { - var self = jQuery(this); - self.toggleClass( value.call(this, i, self.attr("class"), stateVal), stateVal ); - }); - } - - return this.each(function() { - if ( type === "string" ) { - // toggle individual class names - var className, i = 0, self = jQuery(this), - state = stateVal, - classNames = value.split( rspace ); - - while ( (className = classNames[ i++ ]) ) { - // check each className given, space seperated list - state = isBool ? state : !self.hasClass( className ); - self[ state ? "addClass" : "removeClass" ]( className ); - } - - } else if ( type === "undefined" || type === "boolean" ) { - if ( this.className ) { - // store className if set - jQuery.data( this, "__className__", this.className ); - } - - // toggle whole className - this.className = this.className || value === false ? "" : jQuery.data( this, "__className__" ) || ""; - } - }); - }, - - hasClass: function( selector ) { - var className = " " + selector + " "; - for ( var i = 0, l = this.length; i < l; i++ ) { - if ( (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) { - return true; - } - } - - return false; - }, - - val: function( value ) { - if ( value === undefined ) { - var elem = this[0]; - - if ( elem ) { - if ( jQuery.nodeName( elem, "option" ) ) { - return (elem.attributes.value || {}).specified ? elem.value : elem.text; - } - - // We need to handle select boxes special - if ( jQuery.nodeName( elem, "select" ) ) { - var index = elem.selectedIndex, - values = [], - options = elem.options, - one = elem.type === "select-one"; - - // Nothing was selected - if ( index < 0 ) { - return null; - } - - // Loop through all the selected options - for ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) { - var option = options[ i ]; - - if ( option.selected ) { - // Get the specifc value for the option - value = jQuery(option).val(); - - // We don't need an array for one selects - if ( one ) { - return value; - } - - // Multi-Selects return an array - values.push( value ); - } - } - - return values; - } - - // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified - if ( rradiocheck.test( elem.type ) && !jQuery.support.checkOn ) { - return elem.getAttribute("value") === null ? "on" : elem.value; - } - - - // Everything else, we just grab the value - return (elem.value || "").replace(rreturn, ""); - - } - - return undefined; - } - - var isFunction = jQuery.isFunction(value); - - return this.each(function(i) { - var self = jQuery(this), val = value; - - if ( this.nodeType !== 1 ) { - return; - } - - if ( isFunction ) { - val = value.call(this, i, self.val()); - } - - // Typecast each time if the value is a Function and the appended - // value is therefore different each time. - if ( typeof val === "number" ) { - val += ""; - } - - if ( jQuery.isArray(val) && rradiocheck.test( this.type ) ) { - this.checked = jQuery.inArray( self.val(), val ) >= 0; - - } else if ( jQuery.nodeName( this, "select" ) ) { - var values = jQuery.makeArray(val); - - jQuery( "option", this ).each(function() { - this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0; - }); - - if ( !values.length ) { - this.selectedIndex = -1; - } - - } else { - this.value = val; - } - }); - } -}); - -jQuery.extend({ - attrFn: { - val: true, - css: true, - html: true, - text: true, - data: true, - width: true, - height: true, - offset: true - }, - - attr: function( elem, name, value, pass ) { - // don't set attributes on text and comment nodes - if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) { - return undefined; - } - - if ( pass && name in jQuery.attrFn ) { - return jQuery(elem)[name](value); - } - - var notxml = elem.nodeType !== 1 || !jQuery.isXMLDoc( elem ), - // Whether we are setting (or getting) - set = value !== undefined; - - // Try to normalize/fix the name - name = notxml && jQuery.props[ name ] || name; - - // Only do all the following if this is a node (faster for style) - if ( elem.nodeType === 1 ) { - // These attributes require special treatment - var special = rspecialurl.test( name ); - - // Safari mis-reports the default selected property of an option - // Accessing the parent's selectedIndex property fixes it - if ( name === "selected" && !jQuery.support.optSelected ) { - var parent = elem.parentNode; - if ( parent ) { - parent.selectedIndex; - - // Make sure that it also works with optgroups, see #5701 - if ( parent.parentNode ) { - parent.parentNode.selectedIndex; - } - } - } - - // If applicable, access the attribute via the DOM 0 way - if ( name in elem && notxml && !special ) { - if ( set ) { - // We can't allow the type property to be changed (since it causes problems in IE) - if ( name === "type" && rtype.test( elem.nodeName ) && elem.parentNode ) { - jQuery.error( "type property can't be changed" ); - } - - elem[ name ] = value; - } - - // browsers index elements by id/name on forms, give priority to attributes. - if ( jQuery.nodeName( elem, "form" ) && elem.getAttributeNode(name) ) { - return elem.getAttributeNode( name ).nodeValue; - } - - // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set - // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ - if ( name === "tabIndex" ) { - var attributeNode = elem.getAttributeNode( "tabIndex" ); - - return attributeNode && attributeNode.specified ? - attributeNode.value : - rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ? - 0 : - undefined; - } - - return elem[ name ]; - } - - if ( !jQuery.support.style && notxml && name === "style" ) { - if ( set ) { - elem.style.cssText = "" + value; - } - - return elem.style.cssText; - } - - if ( set ) { - // convert the value to a string (all browsers do this but IE) see #1070 - elem.setAttribute( name, "" + value ); - } - - var attr = !jQuery.support.hrefNormalized && notxml && special ? - // Some attributes require a special call on IE - elem.getAttribute( name, 2 ) : - elem.getAttribute( name ); - - // Non-existent attributes return null, we normalize to undefined - return attr === null ? undefined : attr; - } - - // elem is actually elem.style ... set the style - // Using attr for specific style information is now deprecated. Use style instead. - return jQuery.style( elem, name, value ); - } -}); -var rnamespaces = /\.(.*)$/, - fcleanup = function( nm ) { - return nm.replace(/[^\w\s\.\|`]/g, function( ch ) { - return "\\" + ch; - }); - }; - -/* - * A number of helper functions used for managing events. - * Many of the ideas behind this code originated from - * Dean Edwards' addEvent library. - */ -jQuery.event = { - - // Bind an event to an element - // Original by Dean Edwards - add: function( elem, types, handler, data ) { - if ( elem.nodeType === 3 || elem.nodeType === 8 ) { - return; - } - - // For whatever reason, IE has trouble passing the window object - // around, causing it to be cloned in the process - if ( elem.setInterval && ( elem !== window && !elem.frameElement ) ) { - elem = window; - } - - var handleObjIn, handleObj; - - if ( handler.handler ) { - handleObjIn = handler; - handler = handleObjIn.handler; - } - - // Make sure that the function being executed has a unique ID - if ( !handler.guid ) { - handler.guid = jQuery.guid++; - } - - // Init the element's event structure - var elemData = jQuery.data( elem ); - - // If no elemData is found then we must be trying to bind to one of the - // banned noData elements - if ( !elemData ) { - return; - } - - var events = elemData.events = elemData.events || {}, - eventHandle = elemData.handle, eventHandle; - - if ( !eventHandle ) { - elemData.handle = eventHandle = function() { - // Handle the second event of a trigger and when - // an event is called after a page has unloaded - return typeof jQuery !== "undefined" && !jQuery.event.triggered ? - jQuery.event.handle.apply( eventHandle.elem, arguments ) : - undefined; - }; - } - - // Add elem as a property of the handle function - // This is to prevent a memory leak with non-native events in IE. - eventHandle.elem = elem; - - // Handle multiple events separated by a space - // jQuery(...).bind("mouseover mouseout", fn); - types = types.split(" "); - - var type, i = 0, namespaces; - - while ( (type = types[ i++ ]) ) { - handleObj = handleObjIn ? - jQuery.extend({}, handleObjIn) : - { handler: handler, data: data }; - - // Namespaced event handlers - if ( type.indexOf(".") > -1 ) { - namespaces = type.split("."); - type = namespaces.shift(); - handleObj.namespace = namespaces.slice(0).sort().join("."); - - } else { - namespaces = []; - handleObj.namespace = ""; - } - - handleObj.type = type; - handleObj.guid = handler.guid; - - // Get the current list of functions bound to this event - var handlers = events[ type ], - special = jQuery.event.special[ type ] || {}; - - // Init the event handler queue - if ( !handlers ) { - handlers = events[ type ] = []; - - // Check for a special event handler - // Only use addEventListener/attachEvent if the special - // events handler returns false - if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { - // Bind the global event handler to the element - if ( elem.addEventListener ) { - elem.addEventListener( type, eventHandle, false ); - - } else if ( elem.attachEvent ) { - elem.attachEvent( "on" + type, eventHandle ); - } - } - } - - if ( special.add ) { - special.add.call( elem, handleObj ); - - if ( !handleObj.handler.guid ) { - handleObj.handler.guid = handler.guid; - } - } - - // Add the function to the element's handler list - handlers.push( handleObj ); - - // Keep track of which events have been used, for global triggering - jQuery.event.global[ type ] = true; - } - - // Nullify elem to prevent memory leaks in IE - elem = null; - }, - - global: {}, - - // Detach an event or set of events from an element - remove: function( elem, types, handler, pos ) { - // don't do events on text and comment nodes - if ( elem.nodeType === 3 || elem.nodeType === 8 ) { - return; - } - - var ret, type, fn, i = 0, all, namespaces, namespace, special, eventType, handleObj, origType, - elemData = jQuery.data( elem ), - events = elemData && elemData.events; - - if ( !elemData || !events ) { - return; - } - - // types is actually an event object here - if ( types && types.type ) { - handler = types.handler; - types = types.type; - } - - // Unbind all events for the element - if ( !types || typeof types === "string" && types.charAt(0) === "." ) { - types = types || ""; - - for ( type in events ) { - jQuery.event.remove( elem, type + types ); - } - - return; - } - - // Handle multiple events separated by a space - // jQuery(...).unbind("mouseover mouseout", fn); - types = types.split(" "); - - while ( (type = types[ i++ ]) ) { - origType = type; - handleObj = null; - all = type.indexOf(".") < 0; - namespaces = []; - - if ( !all ) { - // Namespaced event handlers - namespaces = type.split("."); - type = namespaces.shift(); - - namespace = new RegExp("(^|\\.)" + - jQuery.map( namespaces.slice(0).sort(), fcleanup ).join("\\.(?:.*\\.)?") + "(\\.|$)") - } - - eventType = events[ type ]; - - if ( !eventType ) { - continue; - } - - if ( !handler ) { - for ( var j = 0; j < eventType.length; j++ ) { - handleObj = eventType[ j ]; - - if ( all || namespace.test( handleObj.namespace ) ) { - jQuery.event.remove( elem, origType, handleObj.handler, j ); - eventType.splice( j--, 1 ); - } - } - - continue; - } - - special = jQuery.event.special[ type ] || {}; - - for ( var j = pos || 0; j < eventType.length; j++ ) { - handleObj = eventType[ j ]; - - if ( handler.guid === handleObj.guid ) { - // remove the given handler for the given type - if ( all || namespace.test( handleObj.namespace ) ) { - if ( pos == null ) { - eventType.splice( j--, 1 ); - } - - if ( special.remove ) { - special.remove.call( elem, handleObj ); - } - } - - if ( pos != null ) { - break; - } - } - } - - // remove generic event handler if no more handlers exist - if ( eventType.length === 0 || pos != null && eventType.length === 1 ) { - if ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) { - removeEvent( elem, type, elemData.handle ); - } - - ret = null; - delete events[ type ]; - } - } - - // Remove the expando if it's no longer used - if ( jQuery.isEmptyObject( events ) ) { - var handle = elemData.handle; - if ( handle ) { - handle.elem = null; - } - - delete elemData.events; - delete elemData.handle; - - if ( jQuery.isEmptyObject( elemData ) ) { - jQuery.removeData( elem ); - } - } - }, - - // bubbling is internal - trigger: function( event, data, elem /*, bubbling */ ) { - // Event object or event type - var type = event.type || event, - bubbling = arguments[3]; - - if ( !bubbling ) { - event = typeof event === "object" ? - // jQuery.Event object - event[expando] ? event : - // Object literal - jQuery.extend( jQuery.Event(type), event ) : - // Just the event type (string) - jQuery.Event(type); - - if ( type.indexOf("!") >= 0 ) { - event.type = type = type.slice(0, -1); - event.exclusive = true; - } - - // Handle a global trigger - if ( !elem ) { - // Don't bubble custom events when global (to avoid too much overhead) - event.stopPropagation(); - - // Only trigger if we've ever bound an event for it - if ( jQuery.event.global[ type ] ) { - jQuery.each( jQuery.cache, function() { - if ( this.events && this.events[type] ) { - jQuery.event.trigger( event, data, this.handle.elem ); - } - }); - } - } - - // Handle triggering a single element - - // don't do events on text and comment nodes - if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) { - return undefined; - } - - // Clean up in case it is reused - event.result = undefined; - event.target = elem; - - // Clone the incoming data, if any - data = jQuery.makeArray( data ); - data.unshift( event ); - } - - event.currentTarget = elem; - - // Trigger the event, it is assumed that "handle" is a function - var handle = jQuery.data( elem, "handle" ); - if ( handle ) { - handle.apply( elem, data ); - } - - var parent = elem.parentNode || elem.ownerDocument; - - // Trigger an inline bound script - try { - if ( !(elem && elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()]) ) { - if ( elem[ "on" + type ] && elem[ "on" + type ].apply( elem, data ) === false ) { - event.result = false; - } - } - - // prevent IE from throwing an error for some elements with some event types, see #3533 - } catch (e) {} - - if ( !event.isPropagationStopped() && parent ) { - jQuery.event.trigger( event, data, parent, true ); - - } else if ( !event.isDefaultPrevented() ) { - var target = event.target, old, - isClick = jQuery.nodeName(target, "a") && type === "click", - special = jQuery.event.special[ type ] || {}; - - if ( (!special._default || special._default.call( elem, event ) === false) && - !isClick && !(target && target.nodeName && jQuery.noData[target.nodeName.toLowerCase()]) ) { - - try { - if ( target[ type ] ) { - // Make sure that we don't accidentally re-trigger the onFOO events - old = target[ "on" + type ]; - - if ( old ) { - target[ "on" + type ] = null; - } - - jQuery.event.triggered = true; - target[ type ](); - } - - // prevent IE from throwing an error for some elements with some event types, see #3533 - } catch (e) {} - - if ( old ) { - target[ "on" + type ] = old; - } - - jQuery.event.triggered = false; - } - } - }, - - handle: function( event ) { - var all, handlers, namespaces, namespace, events; - - event = arguments[0] = jQuery.event.fix( event || window.event ); - event.currentTarget = this; - - // Namespaced event handlers - all = event.type.indexOf(".") < 0 && !event.exclusive; - - if ( !all ) { - namespaces = event.type.split("."); - event.type = namespaces.shift(); - namespace = new RegExp("(^|\\.)" + namespaces.slice(0).sort().join("\\.(?:.*\\.)?") + "(\\.|$)"); - } - - var events = jQuery.data(this, "events"), handlers = events[ event.type ]; - - if ( events && handlers ) { - // Clone the handlers to prevent manipulation - handlers = handlers.slice(0); - - for ( var j = 0, l = handlers.length; j < l; j++ ) { - var handleObj = handlers[ j ]; - - // Filter the functions by class - if ( all || namespace.test( handleObj.namespace ) ) { - // Pass in a reference to the handler function itself - // So that we can later remove it - event.handler = handleObj.handler; - event.data = handleObj.data; - event.handleObj = handleObj; - - var ret = handleObj.handler.apply( this, arguments ); - - if ( ret !== undefined ) { - event.result = ret; - if ( ret === false ) { - event.preventDefault(); - event.stopPropagation(); - } - } - - if ( event.isImmediatePropagationStopped() ) { - break; - } - } - } - } - - return event.result; - }, - - props: "altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "), - - fix: function( event ) { - if ( event[ expando ] ) { - return event; - } - - // store a copy of the original event object - // and "clone" to set read-only properties - var originalEvent = event; - event = jQuery.Event( originalEvent ); - - for ( var i = this.props.length, prop; i; ) { - prop = this.props[ --i ]; - event[ prop ] = originalEvent[ prop ]; - } - - // Fix target property, if necessary - if ( !event.target ) { - event.target = event.srcElement || document; // Fixes #1925 where srcElement might not be defined either - } - - // check if target is a textnode (safari) - if ( event.target.nodeType === 3 ) { - event.target = event.target.parentNode; - } - - // Add relatedTarget, if necessary - if ( !event.relatedTarget && event.fromElement ) { - event.relatedTarget = event.fromElement === event.target ? event.toElement : event.fromElement; - } - - // Calculate pageX/Y if missing and clientX/Y available - if ( event.pageX == null && event.clientX != null ) { - var doc = document.documentElement, body = document.body; - event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0); - event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0); - } - - // Add which for key events - if ( !event.which && ((event.charCode || event.charCode === 0) ? event.charCode : event.keyCode) ) { - event.which = event.charCode || event.keyCode; - } - - // Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs) - if ( !event.metaKey && event.ctrlKey ) { - event.metaKey = event.ctrlKey; - } - - // Add which for click: 1 === left; 2 === middle; 3 === right - // Note: button is not normalized, so don't use it - if ( !event.which && event.button !== undefined ) { - event.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) )); - } - - return event; - }, - - // Deprecated, use jQuery.guid instead - guid: 1E8, - - // Deprecated, use jQuery.proxy instead - proxy: jQuery.proxy, - - special: { - ready: { - // Make sure the ready event is setup - setup: jQuery.bindReady, - teardown: jQuery.noop - }, - - live: { - add: function( handleObj ) { - jQuery.event.add( this, handleObj.origType, jQuery.extend({}, handleObj, {handler: liveHandler}) ); - }, - - remove: function( handleObj ) { - var remove = true, - type = handleObj.origType.replace(rnamespaces, ""); - - jQuery.each( jQuery.data(this, "events").live || [], function() { - if ( type === this.origType.replace(rnamespaces, "") ) { - remove = false; - return false; - } - }); - - if ( remove ) { - jQuery.event.remove( this, handleObj.origType, liveHandler ); - } - } - - }, - - beforeunload: { - setup: function( data, namespaces, eventHandle ) { - // We only want to do this special case on windows - if ( this.setInterval ) { - this.onbeforeunload = eventHandle; - } - - return false; - }, - teardown: function( namespaces, eventHandle ) { - if ( this.onbeforeunload === eventHandle ) { - this.onbeforeunload = null; - } - } - } - } -}; - -var removeEvent = document.removeEventListener ? - function( elem, type, handle ) { - elem.removeEventListener( type, handle, false ); - } : - function( elem, type, handle ) { - elem.detachEvent( "on" + type, handle ); - }; - -jQuery.Event = function( src ) { - // Allow instantiation without the 'new' keyword - if ( !this.preventDefault ) { - return new jQuery.Event( src ); - } - - // Event object - if ( src && src.type ) { - this.originalEvent = src; - this.type = src.type; - // Event type - } else { - this.type = src; - } - - // timeStamp is buggy for some events on Firefox(#3843) - // So we won't rely on the native value - this.timeStamp = now(); - - // Mark it as fixed - this[ expando ] = true; -}; - -function returnFalse() { - return false; -} -function returnTrue() { - return true; -} - -// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding -// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html -jQuery.Event.prototype = { - preventDefault: function() { - this.isDefaultPrevented = returnTrue; - - var e = this.originalEvent; - if ( !e ) { - return; - } - - // if preventDefault exists run it on the original event - if ( e.preventDefault ) { - e.preventDefault(); - } - // otherwise set the returnValue property of the original event to false (IE) - e.returnValue = false; - }, - stopPropagation: function() { - this.isPropagationStopped = returnTrue; - - var e = this.originalEvent; - if ( !e ) { - return; - } - // if stopPropagation exists run it on the original event - if ( e.stopPropagation ) { - e.stopPropagation(); - } - // otherwise set the cancelBubble property of the original event to true (IE) - e.cancelBubble = true; - }, - stopImmediatePropagation: function() { - this.isImmediatePropagationStopped = returnTrue; - this.stopPropagation(); - }, - isDefaultPrevented: returnFalse, - isPropagationStopped: returnFalse, - isImmediatePropagationStopped: returnFalse -}; - -// Checks if an event happened on an element within another element -// Used in jQuery.event.special.mouseenter and mouseleave handlers -var withinElement = function( event ) { - // Check if mouse(over|out) are still within the same parent element - var parent = event.relatedTarget; - - // Firefox sometimes assigns relatedTarget a XUL element - // which we cannot access the parentNode property of - try { - // Traverse up the tree - while ( parent && parent !== this ) { - parent = parent.parentNode; - } - - if ( parent !== this ) { - // set the correct event type - event.type = event.data; - - // handle event if we actually just moused on to a non sub-element - jQuery.event.handle.apply( this, arguments ); - } - - // assuming we've left the element since we most likely mousedover a xul element - } catch(e) { } -}, - -// In case of event delegation, we only need to rename the event.type, -// liveHandler will take care of the rest. -delegate = function( event ) { - event.type = event.data; - jQuery.event.handle.apply( this, arguments ); -}; - -// Create mouseenter and mouseleave events -jQuery.each({ - mouseenter: "mouseover", - mouseleave: "mouseout" -}, function( orig, fix ) { - jQuery.event.special[ orig ] = { - setup: function( data ) { - jQuery.event.add( this, fix, data && data.selector ? delegate : withinElement, orig ); - }, - teardown: function( data ) { - jQuery.event.remove( this, fix, data && data.selector ? delegate : withinElement ); - } - }; -}); - -// submit delegation -if ( !jQuery.support.submitBubbles ) { - - jQuery.event.special.submit = { - setup: function( data, namespaces ) { - if ( this.nodeName.toLowerCase() !== "form" ) { - jQuery.event.add(this, "click.specialSubmit", function( e ) { - var elem = e.target, type = elem.type; - - if ( (type === "submit" || type === "image") && jQuery( elem ).closest("form").length ) { - return trigger( "submit", this, arguments ); - } - }); - - jQuery.event.add(this, "keypress.specialSubmit", function( e ) { - var elem = e.target, type = elem.type; - - if ( (type === "text" || type === "password") && jQuery( elem ).closest("form").length && e.keyCode === 13 ) { - return trigger( "submit", this, arguments ); - } - }); - - } else { - return false; - } - }, - - teardown: function( namespaces ) { - jQuery.event.remove( this, ".specialSubmit" ); - } - }; - -} - -// change delegation, happens here so we have bind. -if ( !jQuery.support.changeBubbles ) { - - var formElems = /textarea|input|select/i, - - changeFilters, - - getVal = function( elem ) { - var type = elem.type, val = elem.value; - - if ( type === "radio" || type === "checkbox" ) { - val = elem.checked; - - } else if ( type === "select-multiple" ) { - val = elem.selectedIndex > -1 ? - jQuery.map( elem.options, function( elem ) { - return elem.selected; - }).join("-") : - ""; - - } else if ( elem.nodeName.toLowerCase() === "select" ) { - val = elem.selectedIndex; - } - - return val; - }, - - testChange = function testChange( e ) { - var elem = e.target, data, val; - - if ( !formElems.test( elem.nodeName ) || elem.readOnly ) { - return; - } - - data = jQuery.data( elem, "_change_data" ); - val = getVal(elem); - - // the current data will be also retrieved by beforeactivate - if ( e.type !== "focusout" || elem.type !== "radio" ) { - jQuery.data( elem, "_change_data", val ); - } - - if ( data === undefined || val === data ) { - return; - } - - if ( data != null || val ) { - e.type = "change"; - return jQuery.event.trigger( e, arguments[1], elem ); - } - }; - - jQuery.event.special.change = { - filters: { - focusout: testChange, - - click: function( e ) { - var elem = e.target, type = elem.type; - - if ( type === "radio" || type === "checkbox" || elem.nodeName.toLowerCase() === "select" ) { - return testChange.call( this, e ); - } - }, - - // Change has to be called before submit - // Keydown will be called before keypress, which is used in submit-event delegation - keydown: function( e ) { - var elem = e.target, type = elem.type; - - if ( (e.keyCode === 13 && elem.nodeName.toLowerCase() !== "textarea") || - (e.keyCode === 32 && (type === "checkbox" || type === "radio")) || - type === "select-multiple" ) { - return testChange.call( this, e ); - } - }, - - // Beforeactivate happens also before the previous element is blurred - // with this event you can't trigger a change event, but you can store - // information/focus[in] is not needed anymore - beforeactivate: function( e ) { - var elem = e.target; - jQuery.data( elem, "_change_data", getVal(elem) ); - } - }, - - setup: function( data, namespaces ) { - if ( this.type === "file" ) { - return false; - } - - for ( var type in changeFilters ) { - jQuery.event.add( this, type + ".specialChange", changeFilters[type] ); - } - - return formElems.test( this.nodeName ); - }, - - teardown: function( namespaces ) { - jQuery.event.remove( this, ".specialChange" ); - - return formElems.test( this.nodeName ); - } - }; - - changeFilters = jQuery.event.special.change.filters; -} - -function trigger( type, elem, args ) { - args[0].type = type; - return jQuery.event.handle.apply( elem, args ); -} - -// Create "bubbling" focus and blur events -if ( document.addEventListener ) { - jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { - jQuery.event.special[ fix ] = { - setup: function() { - this.addEventListener( orig, handler, true ); - }, - teardown: function() { - this.removeEventListener( orig, handler, true ); - } - }; - - function handler( e ) { - e = jQuery.event.fix( e ); - e.type = fix; - return jQuery.event.handle.call( this, e ); - } - }); -} - -jQuery.each(["bind", "one"], function( i, name ) { - jQuery.fn[ name ] = function( type, data, fn ) { - // Handle object literals - if ( typeof type === "object" ) { - for ( var key in type ) { - this[ name ](key, data, type[key], fn); - } - return this; - } - - if ( jQuery.isFunction( data ) ) { - fn = data; - data = undefined; - } - - var handler = name === "one" ? jQuery.proxy( fn, function( event ) { - jQuery( this ).unbind( event, handler ); - return fn.apply( this, arguments ); - }) : fn; - - if ( type === "unload" && name !== "one" ) { - this.one( type, data, fn ); - - } else { - for ( var i = 0, l = this.length; i < l; i++ ) { - jQuery.event.add( this[i], type, handler, data ); - } - } - - return this; - }; -}); - -jQuery.fn.extend({ - unbind: function( type, fn ) { - // Handle object literals - if ( typeof type === "object" && !type.preventDefault ) { - for ( var key in type ) { - this.unbind(key, type[key]); - } - - } else { - for ( var i = 0, l = this.length; i < l; i++ ) { - jQuery.event.remove( this[i], type, fn ); - } - } - - return this; - }, - - delegate: function( selector, types, data, fn ) { - return this.live( types, data, fn, selector ); - }, - - undelegate: function( selector, types, fn ) { - if ( arguments.length === 0 ) { - return this.unbind( "live" ); - - } else { - return this.die( types, null, fn, selector ); - } - }, - - trigger: function( type, data ) { - return this.each(function() { - jQuery.event.trigger( type, data, this ); - }); - }, - - triggerHandler: function( type, data ) { - if ( this[0] ) { - var event = jQuery.Event( type ); - event.preventDefault(); - event.stopPropagation(); - jQuery.event.trigger( event, data, this[0] ); - return event.result; - } - }, - - toggle: function( fn ) { - // Save reference to arguments for access in closure - var args = arguments, i = 1; - - // link all the functions, so any of them can unbind this click handler - while ( i < args.length ) { - jQuery.proxy( fn, args[ i++ ] ); - } - - return this.click( jQuery.proxy( fn, function( event ) { - // Figure out which function to execute - var lastToggle = ( jQuery.data( this, "lastToggle" + fn.guid ) || 0 ) % i; - jQuery.data( this, "lastToggle" + fn.guid, lastToggle + 1 ); - - // Make sure that clicks stop - event.preventDefault(); - - // and execute the function - return args[ lastToggle ].apply( this, arguments ) || false; - })); - }, - - hover: function( fnOver, fnOut ) { - return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); - } -}); - -var liveMap = { - focus: "focusin", - blur: "focusout", - mouseenter: "mouseover", - mouseleave: "mouseout" -}; - -jQuery.each(["live", "die"], function( i, name ) { - jQuery.fn[ name ] = function( types, data, fn, origSelector /* Internal Use Only */ ) { - var type, i = 0, match, namespaces, preType, - selector = origSelector || this.selector, - context = origSelector ? this : jQuery( this.context ); - - if ( jQuery.isFunction( data ) ) { - fn = data; - data = undefined; - } - - types = (types || "").split(" "); - - while ( (type = types[ i++ ]) != null ) { - match = rnamespaces.exec( type ); - namespaces = ""; - - if ( match ) { - namespaces = match[0]; - type = type.replace( rnamespaces, "" ); - } - - if ( type === "hover" ) { - types.push( "mouseenter" + namespaces, "mouseleave" + namespaces ); - continue; - } - - preType = type; - - if ( type === "focus" || type === "blur" ) { - types.push( liveMap[ type ] + namespaces ); - type = type + namespaces; - - } else { - type = (liveMap[ type ] || type) + namespaces; - } - - if ( name === "live" ) { - // bind live handler - context.each(function(){ - jQuery.event.add( this, liveConvert( type, selector ), - { data: data, selector: selector, handler: fn, origType: type, origHandler: fn, preType: preType } ); - }); - - } else { - // unbind live handler - context.unbind( liveConvert( type, selector ), fn ); - } - } - - return this; - } -}); - -function liveHandler( event ) { - var stop, elems = [], selectors = [], args = arguments, - related, match, handleObj, elem, j, i, l, data, - events = jQuery.data( this, "events" ); - - // Make sure we avoid non-left-click bubbling in Firefox (#3861) - if ( event.liveFired === this || !events || !events.live || event.button && event.type === "click" ) { - return; - } - - event.liveFired = this; - - var live = events.live.slice(0); - - for ( j = 0; j < live.length; j++ ) { - handleObj = live[j]; - - if ( handleObj.origType.replace( rnamespaces, "" ) === event.type ) { - selectors.push( handleObj.selector ); - - } else { - live.splice( j--, 1 ); - } - } - - match = jQuery( event.target ).closest( selectors, event.currentTarget ); - - for ( i = 0, l = match.length; i < l; i++ ) { - for ( j = 0; j < live.length; j++ ) { - handleObj = live[j]; - - if ( match[i].selector === handleObj.selector ) { - elem = match[i].elem; - related = null; - - // Those two events require additional checking - if ( handleObj.preType === "mouseenter" || handleObj.preType === "mouseleave" ) { - related = jQuery( event.relatedTarget ).closest( handleObj.selector )[0]; - } - - if ( !related || related !== elem ) { - elems.push({ elem: elem, handleObj: handleObj }); - } - } - } - } - - for ( i = 0, l = elems.length; i < l; i++ ) { - match = elems[i]; - event.currentTarget = match.elem; - event.data = match.handleObj.data; - event.handleObj = match.handleObj; - - if ( match.handleObj.origHandler.apply( match.elem, args ) === false ) { - stop = false; - break; - } - } - - return stop; -} - -function liveConvert( type, selector ) { - return "live." + (type && type !== "*" ? type + "." : "") + selector.replace(/\./g, "`").replace(/ /g, "&"); -} - -jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " + - "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + - "change select submit keydown keypress keyup error").split(" "), function( i, name ) { - - // Handle event binding - jQuery.fn[ name ] = function( fn ) { - return fn ? this.bind( name, fn ) : this.trigger( name ); - }; - - if ( jQuery.attrFn ) { - jQuery.attrFn[ name ] = true; - } -}); - -// Prevent memory leaks in IE -// Window isn't included so as not to unbind existing unload events -// More info: -// - http://isaacschlueter.com/2006/10/msie-memory-leaks/ -if ( window.attachEvent && !window.addEventListener ) { - window.attachEvent("onunload", function() { - for ( var id in jQuery.cache ) { - if ( jQuery.cache[ id ].handle ) { - // Try/Catch is to handle iframes being unloaded, see #4280 - try { - jQuery.event.remove( jQuery.cache[ id ].handle.elem ); - } catch(e) {} - } - } - }); -} -/*! - * Sizzle CSS Selector Engine - v1.0 - * Copyright 2009, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * More information: http://sizzlejs.com/ - */ -(function(){ - -var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, - done = 0, - toString = Object.prototype.toString, - hasDuplicate = false, - baseHasDuplicate = true; - -// Here we check if the JavaScript engine is using some sort of -// optimization where it does not always call our comparision -// function. If that is the case, discard the hasDuplicate value. -// Thus far that includes Google Chrome. -[0, 0].sort(function(){ - baseHasDuplicate = false; - return 0; -}); - -var Sizzle = function(selector, context, results, seed) { - results = results || []; - var origContext = context = context || document; - - if ( context.nodeType !== 1 && context.nodeType !== 9 ) { - return []; - } - - if ( !selector || typeof selector !== "string" ) { - return results; - } - - var parts = [], m, set, checkSet, extra, prune = true, contextXML = isXML(context), - soFar = selector; - - // Reset the position of the chunker regexp (start from head) - while ( (chunker.exec(""), m = chunker.exec(soFar)) !== null ) { - soFar = m[3]; - - parts.push( m[1] ); - - if ( m[2] ) { - extra = m[3]; - break; - } - } - - if ( parts.length > 1 && origPOS.exec( selector ) ) { - if ( parts.length === 2 && Expr.relative[ parts[0] ] ) { - set = posProcess( parts[0] + parts[1], context ); - } else { - set = Expr.relative[ parts[0] ] ? - [ context ] : - Sizzle( parts.shift(), context ); - - while ( parts.length ) { - selector = parts.shift(); - - if ( Expr.relative[ selector ] ) { - selector += parts.shift(); - } - - set = posProcess( selector, set ); - } - } - } else { - // Take a shortcut and set the context if the root selector is an ID - // (but not if it'll be faster if the inner selector is an ID) - if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML && - Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) { - var ret = Sizzle.find( parts.shift(), context, contextXML ); - context = ret.expr ? Sizzle.filter( ret.expr, ret.set )[0] : ret.set[0]; - } - - if ( context ) { - var ret = seed ? - { expr: parts.pop(), set: makeArray(seed) } : - Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML ); - set = ret.expr ? Sizzle.filter( ret.expr, ret.set ) : ret.set; - - if ( parts.length > 0 ) { - checkSet = makeArray(set); - } else { - prune = false; - } - - while ( parts.length ) { - var cur = parts.pop(), pop = cur; - - if ( !Expr.relative[ cur ] ) { - cur = ""; - } else { - pop = parts.pop(); - } - - if ( pop == null ) { - pop = context; - } - - Expr.relative[ cur ]( checkSet, pop, contextXML ); - } - } else { - checkSet = parts = []; - } - } - - if ( !checkSet ) { - checkSet = set; - } - - if ( !checkSet ) { - Sizzle.error( cur || selector ); - } - - if ( toString.call(checkSet) === "[object Array]" ) { - if ( !prune ) { - results.push.apply( results, checkSet ); - } else if ( context && context.nodeType === 1 ) { - for ( var i = 0; checkSet[i] != null; i++ ) { - if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i])) ) { - results.push( set[i] ); - } - } - } else { - for ( var i = 0; checkSet[i] != null; i++ ) { - if ( checkSet[i] && checkSet[i].nodeType === 1 ) { - results.push( set[i] ); - } - } - } - } else { - makeArray( checkSet, results ); - } - - if ( extra ) { - Sizzle( extra, origContext, results, seed ); - Sizzle.uniqueSort( results ); - } - - return results; -}; - -Sizzle.uniqueSort = function(results){ - if ( sortOrder ) { - hasDuplicate = baseHasDuplicate; - results.sort(sortOrder); - - if ( hasDuplicate ) { - for ( var i = 1; i < results.length; i++ ) { - if ( results[i] === results[i-1] ) { - results.splice(i--, 1); - } - } - } - } - - return results; -}; - -Sizzle.matches = function(expr, set){ - return Sizzle(expr, null, null, set); -}; - -Sizzle.find = function(expr, context, isXML){ - var set, match; - - if ( !expr ) { - return []; - } - - for ( var i = 0, l = Expr.order.length; i < l; i++ ) { - var type = Expr.order[i], match; - - if ( (match = Expr.leftMatch[ type ].exec( expr )) ) { - var left = match[1]; - match.splice(1,1); - - if ( left.substr( left.length - 1 ) !== "\\" ) { - match[1] = (match[1] || "").replace(/\\/g, ""); - set = Expr.find[ type ]( match, context, isXML ); - if ( set != null ) { - expr = expr.replace( Expr.match[ type ], "" ); - break; - } - } - } - } - - if ( !set ) { - set = context.getElementsByTagName("*"); - } - - return {set: set, expr: expr}; -}; - -Sizzle.filter = function(expr, set, inplace, not){ - var old = expr, result = [], curLoop = set, match, anyFound, - isXMLFilter = set && set[0] && isXML(set[0]); - - while ( expr && set.length ) { - for ( var type in Expr.filter ) { - if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) { - var filter = Expr.filter[ type ], found, item, left = match[1]; - anyFound = false; - - match.splice(1,1); - - if ( left.substr( left.length - 1 ) === "\\" ) { - continue; - } - - if ( curLoop === result ) { - result = []; - } - - if ( Expr.preFilter[ type ] ) { - match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter ); - - if ( !match ) { - anyFound = found = true; - } else if ( match === true ) { - continue; - } - } - - if ( match ) { - for ( var i = 0; (item = curLoop[i]) != null; i++ ) { - if ( item ) { - found = filter( item, match, i, curLoop ); - var pass = not ^ !!found; - - if ( inplace && found != null ) { - if ( pass ) { - anyFound = true; - } else { - curLoop[i] = false; - } - } else if ( pass ) { - result.push( item ); - anyFound = true; - } - } - } - } - - if ( found !== undefined ) { - if ( !inplace ) { - curLoop = result; - } - - expr = expr.replace( Expr.match[ type ], "" ); - - if ( !anyFound ) { - return []; - } - - break; - } - } - } - - // Improper expression - if ( expr === old ) { - if ( anyFound == null ) { - Sizzle.error( expr ); - } else { - break; - } - } - - old = expr; - } - - return curLoop; -}; - -Sizzle.error = function( msg ) { - throw "Syntax error, unrecognized expression: " + msg; -}; - -var Expr = Sizzle.selectors = { - order: [ "ID", "NAME", "TAG" ], - match: { - ID: /#((?:[\w\u00c0-\uFFFF-]|\\.)+)/, - CLASS: /\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/, - NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/, - ATTR: /\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/, - TAG: /^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/, - CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/, - POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/, - PSEUDO: /:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/ - }, - leftMatch: {}, - attrMap: { - "class": "className", - "for": "htmlFor" - }, - attrHandle: { - href: function(elem){ - return elem.getAttribute("href"); - } - }, - relative: { - "+": function(checkSet, part){ - var isPartStr = typeof part === "string", - isTag = isPartStr && !/\W/.test(part), - isPartStrNotTag = isPartStr && !isTag; - - if ( isTag ) { - part = part.toLowerCase(); - } - - for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) { - if ( (elem = checkSet[i]) ) { - while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {} - - checkSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ? - elem || false : - elem === part; - } - } - - if ( isPartStrNotTag ) { - Sizzle.filter( part, checkSet, true ); - } - }, - ">": function(checkSet, part){ - var isPartStr = typeof part === "string"; - - if ( isPartStr && !/\W/.test(part) ) { - part = part.toLowerCase(); - - for ( var i = 0, l = checkSet.length; i < l; i++ ) { - var elem = checkSet[i]; - if ( elem ) { - var parent = elem.parentNode; - checkSet[i] = parent.nodeName.toLowerCase() === part ? parent : false; - } - } - } else { - for ( var i = 0, l = checkSet.length; i < l; i++ ) { - var elem = checkSet[i]; - if ( elem ) { - checkSet[i] = isPartStr ? - elem.parentNode : - elem.parentNode === part; - } - } - - if ( isPartStr ) { - Sizzle.filter( part, checkSet, true ); - } - } - }, - "": function(checkSet, part, isXML){ - var doneName = done++, checkFn = dirCheck; - - if ( typeof part === "string" && !/\W/.test(part) ) { - var nodeCheck = part = part.toLowerCase(); - checkFn = dirNodeCheck; - } - - checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML); - }, - "~": function(checkSet, part, isXML){ - var doneName = done++, checkFn = dirCheck; - - if ( typeof part === "string" && !/\W/.test(part) ) { - var nodeCheck = part = part.toLowerCase(); - checkFn = dirNodeCheck; - } - - checkFn("previousSibling", part, doneName, checkSet, nodeCheck, isXML); - } - }, - find: { - ID: function(match, context, isXML){ - if ( typeof context.getElementById !== "undefined" && !isXML ) { - var m = context.getElementById(match[1]); - return m ? [m] : []; - } - }, - NAME: function(match, context){ - if ( typeof context.getElementsByName !== "undefined" ) { - var ret = [], results = context.getElementsByName(match[1]); - - for ( var i = 0, l = results.length; i < l; i++ ) { - if ( results[i].getAttribute("name") === match[1] ) { - ret.push( results[i] ); - } - } - - return ret.length === 0 ? null : ret; - } - }, - TAG: function(match, context){ - return context.getElementsByTagName(match[1]); - } - }, - preFilter: { - CLASS: function(match, curLoop, inplace, result, not, isXML){ - match = " " + match[1].replace(/\\/g, "") + " "; - - if ( isXML ) { - return match; - } - - for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) { - if ( elem ) { - if ( not ^ (elem.className && (" " + elem.className + " ").replace(/[\t\n]/g, " ").indexOf(match) >= 0) ) { - if ( !inplace ) { - result.push( elem ); - } - } else if ( inplace ) { - curLoop[i] = false; - } - } - } - - return false; - }, - ID: function(match){ - return match[1].replace(/\\/g, ""); - }, - TAG: function(match, curLoop){ - return match[1].toLowerCase(); - }, - CHILD: function(match){ - if ( match[1] === "nth" ) { - // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6' - var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec( - match[2] === "even" && "2n" || match[2] === "odd" && "2n+1" || - !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]); - - // calculate the numbers (first)n+(last) including if they are negative - match[2] = (test[1] + (test[2] || 1)) - 0; - match[3] = test[3] - 0; - } - - // TODO: Move to normal caching system - match[0] = done++; - - return match; - }, - ATTR: function(match, curLoop, inplace, result, not, isXML){ - var name = match[1].replace(/\\/g, ""); - - if ( !isXML && Expr.attrMap[name] ) { - match[1] = Expr.attrMap[name]; - } - - if ( match[2] === "~=" ) { - match[4] = " " + match[4] + " "; - } - - return match; - }, - PSEUDO: function(match, curLoop, inplace, result, not){ - if ( match[1] === "not" ) { - // If we're dealing with a complex expression, or a simple one - if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) { - match[3] = Sizzle(match[3], null, null, curLoop); - } else { - var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not); - if ( !inplace ) { - result.push.apply( result, ret ); - } - return false; - } - } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) { - return true; - } - - return match; - }, - POS: function(match){ - match.unshift( true ); - return match; - } - }, - filters: { - enabled: function(elem){ - return elem.disabled === false && elem.type !== "hidden"; - }, - disabled: function(elem){ - return elem.disabled === true; - }, - checked: function(elem){ - return elem.checked === true; - }, - selected: function(elem){ - // Accessing this property makes selected-by-default - // options in Safari work properly - elem.parentNode.selectedIndex; - return elem.selected === true; - }, - parent: function(elem){ - return !!elem.firstChild; - }, - empty: function(elem){ - return !elem.firstChild; - }, - has: function(elem, i, match){ - return !!Sizzle( match[3], elem ).length; - }, - header: function(elem){ - return /h\d/i.test( elem.nodeName ); - }, - text: function(elem){ - return "text" === elem.type; - }, - radio: function(elem){ - return "radio" === elem.type; - }, - checkbox: function(elem){ - return "checkbox" === elem.type; - }, - file: function(elem){ - return "file" === elem.type; - }, - password: function(elem){ - return "password" === elem.type; - }, - submit: function(elem){ - return "submit" === elem.type; - }, - image: function(elem){ - return "image" === elem.type; - }, - reset: function(elem){ - return "reset" === elem.type; - }, - button: function(elem){ - return "button" === elem.type || elem.nodeName.toLowerCase() === "button"; - }, - input: function(elem){ - return /input|select|textarea|button/i.test(elem.nodeName); - } - }, - setFilters: { - first: function(elem, i){ - return i === 0; - }, - last: function(elem, i, match, array){ - return i === array.length - 1; - }, - even: function(elem, i){ - return i % 2 === 0; - }, - odd: function(elem, i){ - return i % 2 === 1; - }, - lt: function(elem, i, match){ - return i < match[3] - 0; - }, - gt: function(elem, i, match){ - return i > match[3] - 0; - }, - nth: function(elem, i, match){ - return match[3] - 0 === i; - }, - eq: function(elem, i, match){ - return match[3] - 0 === i; - } - }, - filter: { - PSEUDO: function(elem, match, i, array){ - var name = match[1], filter = Expr.filters[ name ]; - - if ( filter ) { - return filter( elem, i, match, array ); - } else if ( name === "contains" ) { - return (elem.textContent || elem.innerText || getText([ elem ]) || "").indexOf(match[3]) >= 0; - } else if ( name === "not" ) { - var not = match[3]; - - for ( var i = 0, l = not.length; i < l; i++ ) { - if ( not[i] === elem ) { - return false; - } - } - - return true; - } else { - Sizzle.error( "Syntax error, unrecognized expression: " + name ); - } - }, - CHILD: function(elem, match){ - var type = match[1], node = elem; - switch (type) { - case 'only': - case 'first': - while ( (node = node.previousSibling) ) { - if ( node.nodeType === 1 ) { - return false; - } - } - if ( type === "first" ) { - return true; - } - node = elem; - case 'last': - while ( (node = node.nextSibling) ) { - if ( node.nodeType === 1 ) { - return false; - } - } - return true; - case 'nth': - var first = match[2], last = match[3]; - - if ( first === 1 && last === 0 ) { - return true; - } - - var doneName = match[0], - parent = elem.parentNode; - - if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) { - var count = 0; - for ( node = parent.firstChild; node; node = node.nextSibling ) { - if ( node.nodeType === 1 ) { - node.nodeIndex = ++count; - } - } - parent.sizcache = doneName; - } - - var diff = elem.nodeIndex - last; - if ( first === 0 ) { - return diff === 0; - } else { - return ( diff % first === 0 && diff / first >= 0 ); - } - } - }, - ID: function(elem, match){ - return elem.nodeType === 1 && elem.getAttribute("id") === match; - }, - TAG: function(elem, match){ - return (match === "*" && elem.nodeType === 1) || elem.nodeName.toLowerCase() === match; - }, - CLASS: function(elem, match){ - return (" " + (elem.className || elem.getAttribute("class")) + " ") - .indexOf( match ) > -1; - }, - ATTR: function(elem, match){ - var name = match[1], - result = Expr.attrHandle[ name ] ? - Expr.attrHandle[ name ]( elem ) : - elem[ name ] != null ? - elem[ name ] : - elem.getAttribute( name ), - value = result + "", - type = match[2], - check = match[4]; - - return result == null ? - type === "!=" : - type === "=" ? - value === check : - type === "*=" ? - value.indexOf(check) >= 0 : - type === "~=" ? - (" " + value + " ").indexOf(check) >= 0 : - !check ? - value && result !== false : - type === "!=" ? - value !== check : - type === "^=" ? - value.indexOf(check) === 0 : - type === "$=" ? - value.substr(value.length - check.length) === check : - type === "|=" ? - value === check || value.substr(0, check.length + 1) === check + "-" : - false; - }, - POS: function(elem, match, i, array){ - var name = match[2], filter = Expr.setFilters[ name ]; - - if ( filter ) { - return filter( elem, i, match, array ); - } - } - } -}; - -var origPOS = Expr.match.POS; - -for ( var type in Expr.match ) { - Expr.match[ type ] = new RegExp( Expr.match[ type ].source + /(?![^\[]*\])(?![^\(]*\))/.source ); - Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source.replace(/\\(\d+)/g, function(all, num){ - return "\\" + (num - 0 + 1); - })); -} - -var makeArray = function(array, results) { - array = Array.prototype.slice.call( array, 0 ); - - if ( results ) { - results.push.apply( results, array ); - return results; - } - - return array; -}; - -// Perform a simple check to determine if the browser is capable of -// converting a NodeList to an array using builtin methods. -// Also verifies that the returned array holds DOM nodes -// (which is not the case in the Blackberry browser) -try { - Array.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType; - -// Provide a fallback method if it does not work -} catch(e){ - makeArray = function(array, results) { - var ret = results || []; - - if ( toString.call(array) === "[object Array]" ) { - Array.prototype.push.apply( ret, array ); - } else { - if ( typeof array.length === "number" ) { - for ( var i = 0, l = array.length; i < l; i++ ) { - ret.push( array[i] ); - } - } else { - for ( var i = 0; array[i]; i++ ) { - ret.push( array[i] ); - } - } - } - - return ret; - }; -} - -var sortOrder; - -if ( document.documentElement.compareDocumentPosition ) { - sortOrder = function( a, b ) { - if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) { - if ( a == b ) { - hasDuplicate = true; - } - return a.compareDocumentPosition ? -1 : 1; - } - - var ret = a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1; - if ( ret === 0 ) { - hasDuplicate = true; - } - return ret; - }; -} else if ( "sourceIndex" in document.documentElement ) { - sortOrder = function( a, b ) { - if ( !a.sourceIndex || !b.sourceIndex ) { - if ( a == b ) { - hasDuplicate = true; - } - return a.sourceIndex ? -1 : 1; - } - - var ret = a.sourceIndex - b.sourceIndex; - if ( ret === 0 ) { - hasDuplicate = true; - } - return ret; - }; -} else if ( document.createRange ) { - sortOrder = function( a, b ) { - if ( !a.ownerDocument || !b.ownerDocument ) { - if ( a == b ) { - hasDuplicate = true; - } - return a.ownerDocument ? -1 : 1; - } - - var aRange = a.ownerDocument.createRange(), bRange = b.ownerDocument.createRange(); - aRange.setStart(a, 0); - aRange.setEnd(a, 0); - bRange.setStart(b, 0); - bRange.setEnd(b, 0); - var ret = aRange.compareBoundaryPoints(Range.START_TO_END, bRange); - if ( ret === 0 ) { - hasDuplicate = true; - } - return ret; - }; -} - -// Utility function for retreiving the text value of an array of DOM nodes -function getText( elems ) { - var ret = "", elem; - - for ( var i = 0; elems[i]; i++ ) { - elem = elems[i]; - - // Get the text from text nodes and CDATA nodes - if ( elem.nodeType === 3 || elem.nodeType === 4 ) { - ret += elem.nodeValue; - - // Traverse everything else, except comment nodes - } else if ( elem.nodeType !== 8 ) { - ret += getText( elem.childNodes ); - } - } - - return ret; -} - -// Check to see if the browser returns elements by name when -// querying by getElementById (and provide a workaround) -(function(){ - // We're going to inject a fake input element with a specified name - var form = document.createElement("div"), - id = "script" + (new Date).getTime(); - form.innerHTML = ""; - - // Inject it into the root element, check its status, and remove it quickly - var root = document.documentElement; - root.insertBefore( form, root.firstChild ); - - // The workaround has to do additional checks after a getElementById - // Which slows things down for other browsers (hence the branching) - if ( document.getElementById( id ) ) { - Expr.find.ID = function(match, context, isXML){ - if ( typeof context.getElementById !== "undefined" && !isXML ) { - var m = context.getElementById(match[1]); - return m ? m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? [m] : undefined : []; - } - }; - - Expr.filter.ID = function(elem, match){ - var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id"); - return elem.nodeType === 1 && node && node.nodeValue === match; - }; - } - - root.removeChild( form ); - root = form = null; // release memory in IE -})(); - -(function(){ - // Check to see if the browser returns only elements - // when doing getElementsByTagName("*") - - // Create a fake element - var div = document.createElement("div"); - div.appendChild( document.createComment("") ); - - // Make sure no comments are found - if ( div.getElementsByTagName("*").length > 0 ) { - Expr.find.TAG = function(match, context){ - var results = context.getElementsByTagName(match[1]); - - // Filter out possible comments - if ( match[1] === "*" ) { - var tmp = []; - - for ( var i = 0; results[i]; i++ ) { - if ( results[i].nodeType === 1 ) { - tmp.push( results[i] ); - } - } - - results = tmp; - } - - return results; - }; - } - - // Check to see if an attribute returns normalized href attributes - div.innerHTML = ""; - if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" && - div.firstChild.getAttribute("href") !== "#" ) { - Expr.attrHandle.href = function(elem){ - return elem.getAttribute("href", 2); - }; - } - - div = null; // release memory in IE -})(); - -if ( document.querySelectorAll ) { - (function(){ - var oldSizzle = Sizzle, div = document.createElement("div"); - div.innerHTML = "

    "; - - // Safari can't handle uppercase or unicode characters when - // in quirks mode. - if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) { - return; - } - - Sizzle = function(query, context, extra, seed){ - context = context || document; - - // Only use querySelectorAll on non-XML documents - // (ID selectors don't work in non-HTML documents) - if ( !seed && context.nodeType === 9 && !isXML(context) ) { - try { - return makeArray( context.querySelectorAll(query), extra ); - } catch(e){} - } - - return oldSizzle(query, context, extra, seed); - }; - - for ( var prop in oldSizzle ) { - Sizzle[ prop ] = oldSizzle[ prop ]; - } - - div = null; // release memory in IE - })(); -} - -(function(){ - var div = document.createElement("div"); - - div.innerHTML = "
    "; - - // Opera can't find a second classname (in 9.6) - // Also, make sure that getElementsByClassName actually exists - if ( !div.getElementsByClassName || div.getElementsByClassName("e").length === 0 ) { - return; - } - - // Safari caches class attributes, doesn't catch changes (in 3.2) - div.lastChild.className = "e"; - - if ( div.getElementsByClassName("e").length === 1 ) { - return; - } - - Expr.order.splice(1, 0, "CLASS"); - Expr.find.CLASS = function(match, context, isXML) { - if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) { - return context.getElementsByClassName(match[1]); - } - }; - - div = null; // release memory in IE -})(); - -function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { - for ( var i = 0, l = checkSet.length; i < l; i++ ) { - var elem = checkSet[i]; - if ( elem ) { - elem = elem[dir]; - var match = false; - - while ( elem ) { - if ( elem.sizcache === doneName ) { - match = checkSet[elem.sizset]; - break; - } - - if ( elem.nodeType === 1 && !isXML ){ - elem.sizcache = doneName; - elem.sizset = i; - } - - if ( elem.nodeName.toLowerCase() === cur ) { - match = elem; - break; - } - - elem = elem[dir]; - } - - checkSet[i] = match; - } - } -} - -function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { - for ( var i = 0, l = checkSet.length; i < l; i++ ) { - var elem = checkSet[i]; - if ( elem ) { - elem = elem[dir]; - var match = false; - - while ( elem ) { - if ( elem.sizcache === doneName ) { - match = checkSet[elem.sizset]; - break; - } - - if ( elem.nodeType === 1 ) { - if ( !isXML ) { - elem.sizcache = doneName; - elem.sizset = i; - } - if ( typeof cur !== "string" ) { - if ( elem === cur ) { - match = true; - break; - } - - } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) { - match = elem; - break; - } - } - - elem = elem[dir]; - } - - checkSet[i] = match; - } - } -} - -var contains = document.compareDocumentPosition ? function(a, b){ - return !!(a.compareDocumentPosition(b) & 16); -} : function(a, b){ - return a !== b && (a.contains ? a.contains(b) : true); -}; - -var isXML = function(elem){ - // documentElement is verified for cases where it doesn't yet exist - // (such as loading iframes in IE - #4833) - var documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement; - return documentElement ? documentElement.nodeName !== "HTML" : false; -}; - -var posProcess = function(selector, context){ - var tmpSet = [], later = "", match, - root = context.nodeType ? [context] : context; - - // Position selectors must be done after the filter - // And so must :not(positional) so we move all PSEUDOs to the end - while ( (match = Expr.match.PSEUDO.exec( selector )) ) { - later += match[0]; - selector = selector.replace( Expr.match.PSEUDO, "" ); - } - - selector = Expr.relative[selector] ? selector + "*" : selector; - - for ( var i = 0, l = root.length; i < l; i++ ) { - Sizzle( selector, root[i], tmpSet ); - } - - return Sizzle.filter( later, tmpSet ); -}; - -// EXPOSE -jQuery.find = Sizzle; -jQuery.expr = Sizzle.selectors; -jQuery.expr[":"] = jQuery.expr.filters; -jQuery.unique = Sizzle.uniqueSort; -jQuery.text = getText; -jQuery.isXMLDoc = isXML; -jQuery.contains = contains; - -return; - -window.Sizzle = Sizzle; - -})(); -var runtil = /Until$/, - rparentsprev = /^(?:parents|prevUntil|prevAll)/, - // Note: This RegExp should be improved, or likely pulled from Sizzle - rmultiselector = /,/, - slice = Array.prototype.slice; - -// Implement the identical functionality for filter and not -var winnow = function( elements, qualifier, keep ) { - if ( jQuery.isFunction( qualifier ) ) { - return jQuery.grep(elements, function( elem, i ) { - return !!qualifier.call( elem, i, elem ) === keep; - }); - - } else if ( qualifier.nodeType ) { - return jQuery.grep(elements, function( elem, i ) { - return (elem === qualifier) === keep; - }); - - } else if ( typeof qualifier === "string" ) { - var filtered = jQuery.grep(elements, function( elem ) { - return elem.nodeType === 1; - }); - - if ( isSimple.test( qualifier ) ) { - return jQuery.filter(qualifier, filtered, !keep); - } else { - qualifier = jQuery.filter( qualifier, filtered ); - } - } - - return jQuery.grep(elements, function( elem, i ) { - return (jQuery.inArray( elem, qualifier ) >= 0) === keep; - }); -}; - -jQuery.fn.extend({ - find: function( selector ) { - var ret = this.pushStack( "", "find", selector ), length = 0; - - for ( var i = 0, l = this.length; i < l; i++ ) { - length = ret.length; - jQuery.find( selector, this[i], ret ); - - if ( i > 0 ) { - // Make sure that the results are unique - for ( var n = length; n < ret.length; n++ ) { - for ( var r = 0; r < length; r++ ) { - if ( ret[r] === ret[n] ) { - ret.splice(n--, 1); - break; - } - } - } - } - } - - return ret; - }, - - has: function( target ) { - var targets = jQuery( target ); - return this.filter(function() { - for ( var i = 0, l = targets.length; i < l; i++ ) { - if ( jQuery.contains( this, targets[i] ) ) { - return true; - } - } - }); - }, - - not: function( selector ) { - return this.pushStack( winnow(this, selector, false), "not", selector); - }, - - filter: function( selector ) { - return this.pushStack( winnow(this, selector, true), "filter", selector ); - }, - - is: function( selector ) { - return !!selector && jQuery.filter( selector, this ).length > 0; - }, - - closest: function( selectors, context ) { - if ( jQuery.isArray( selectors ) ) { - var ret = [], cur = this[0], match, matches = {}, selector; - - if ( cur && selectors.length ) { - for ( var i = 0, l = selectors.length; i < l; i++ ) { - selector = selectors[i]; - - if ( !matches[selector] ) { - matches[selector] = jQuery.expr.match.POS.test( selector ) ? - jQuery( selector, context || this.context ) : - selector; - } - } - - while ( cur && cur.ownerDocument && cur !== context ) { - for ( selector in matches ) { - match = matches[selector]; - - if ( match.jquery ? match.index(cur) > -1 : jQuery(cur).is(match) ) { - ret.push({ selector: selector, elem: cur }); - delete matches[selector]; - } - } - cur = cur.parentNode; - } - } - - return ret; - } - - var pos = jQuery.expr.match.POS.test( selectors ) ? - jQuery( selectors, context || this.context ) : null; - - return this.map(function( i, cur ) { - while ( cur && cur.ownerDocument && cur !== context ) { - if ( pos ? pos.index(cur) > -1 : jQuery(cur).is(selectors) ) { - return cur; - } - cur = cur.parentNode; - } - return null; - }); - }, - - // Determine the position of an element within - // the matched set of elements - index: function( elem ) { - if ( !elem || typeof elem === "string" ) { - return jQuery.inArray( this[0], - // If it receives a string, the selector is used - // If it receives nothing, the siblings are used - elem ? jQuery( elem ) : this.parent().children() ); - } - // Locate the position of the desired element - return jQuery.inArray( - // If it receives a jQuery object, the first element is used - elem.jquery ? elem[0] : elem, this ); - }, - - add: function( selector, context ) { - var set = typeof selector === "string" ? - jQuery( selector, context || this.context ) : - jQuery.makeArray( selector ), - all = jQuery.merge( this.get(), set ); - - return this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ? - all : - jQuery.unique( all ) ); - }, - - andSelf: function() { - return this.add( this.prevObject ); - } -}); - -// A painfully simple check to see if an element is disconnected -// from a document (should be improved, where feasible). -function isDisconnected( node ) { - return !node || !node.parentNode || node.parentNode.nodeType === 11; -} - -jQuery.each({ - parent: function( elem ) { - var parent = elem.parentNode; - return parent && parent.nodeType !== 11 ? parent : null; - }, - parents: function( elem ) { - return jQuery.dir( elem, "parentNode" ); - }, - parentsUntil: function( elem, i, until ) { - return jQuery.dir( elem, "parentNode", until ); - }, - next: function( elem ) { - return jQuery.nth( elem, 2, "nextSibling" ); - }, - prev: function( elem ) { - return jQuery.nth( elem, 2, "previousSibling" ); - }, - nextAll: function( elem ) { - return jQuery.dir( elem, "nextSibling" ); - }, - prevAll: function( elem ) { - return jQuery.dir( elem, "previousSibling" ); - }, - nextUntil: function( elem, i, until ) { - return jQuery.dir( elem, "nextSibling", until ); - }, - prevUntil: function( elem, i, until ) { - return jQuery.dir( elem, "previousSibling", until ); - }, - siblings: function( elem ) { - return jQuery.sibling( elem.parentNode.firstChild, elem ); - }, - children: function( elem ) { - return jQuery.sibling( elem.firstChild ); - }, - contents: function( elem ) { - return jQuery.nodeName( elem, "iframe" ) ? - elem.contentDocument || elem.contentWindow.document : - jQuery.makeArray( elem.childNodes ); - } -}, function( name, fn ) { - jQuery.fn[ name ] = function( until, selector ) { - var ret = jQuery.map( this, fn, until ); - - if ( !runtil.test( name ) ) { - selector = until; - } - - if ( selector && typeof selector === "string" ) { - ret = jQuery.filter( selector, ret ); - } - - ret = this.length > 1 ? jQuery.unique( ret ) : ret; - - if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) { - ret = ret.reverse(); - } - - return this.pushStack( ret, name, slice.call(arguments).join(",") ); - }; -}); - -jQuery.extend({ - filter: function( expr, elems, not ) { - if ( not ) { - expr = ":not(" + expr + ")"; - } - - return jQuery.find.matches(expr, elems); - }, - - dir: function( elem, dir, until ) { - var matched = [], cur = elem[dir]; - while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) { - if ( cur.nodeType === 1 ) { - matched.push( cur ); - } - cur = cur[dir]; - } - return matched; - }, - - nth: function( cur, result, dir, elem ) { - result = result || 1; - var num = 0; - - for ( ; cur; cur = cur[dir] ) { - if ( cur.nodeType === 1 && ++num === result ) { - break; - } - } - - return cur; - }, - - sibling: function( n, elem ) { - var r = []; - - for ( ; n; n = n.nextSibling ) { - if ( n.nodeType === 1 && n !== elem ) { - r.push( n ); - } - } - - return r; - } -}); -var rinlinejQuery = / jQuery\d+="(?:\d+|null)"/g, - rleadingWhitespace = /^\s+/, - rxhtmlTag = /(<([\w:]+)[^>]*?)\/>/g, - rselfClosing = /^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i, - rtagName = /<([\w:]+)/, - rtbody = /"; - }, - wrapMap = { - option: [ 1, "" ], - legend: [ 1, "
    ", "
    " ], - thead: [ 1, "", "
    " ], - tr: [ 2, "", "
    " ], - td: [ 3, "", "
    " ], - col: [ 2, "", "
    " ], - area: [ 1, "", "" ], - _default: [ 0, "", "" ] - }; - -wrapMap.optgroup = wrapMap.option; -wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; -wrapMap.th = wrapMap.td; - -// IE can't serialize and - - - - diff --git a/webclient/views/pages/login.mustache b/webclient/views/pages/login.mustache deleted file mode 100644 index 5257f88a..00000000 --- a/webclient/views/pages/login.mustache +++ /dev/null @@ -1,25 +0,0 @@ - - - {{>header}} - {{>style}} - - - {{error}} - -

    Milliways

    - - - - - - - diff --git a/webclient/views/partials/footer.mustache b/webclient/views/partials/footer.mustache deleted file mode 100644 index e69de29b..00000000 diff --git a/webclient/views/partials/header.mustache b/webclient/views/partials/header.mustache deleted file mode 100644 index d87b6327..00000000 --- a/webclient/views/partials/header.mustache +++ /dev/null @@ -1,7 +0,0 @@ - - Milliways Talker - - - - - diff --git a/webclient/views/partials/sidebar.mustache b/webclient/views/partials/sidebar.mustache deleted file mode 100644 index 1158db30..00000000 --- a/webclient/views/partials/sidebar.mustache +++ /dev/null @@ -1,8 +0,0 @@ - diff --git a/webclient/views/partials/style.mustache b/webclient/views/partials/style.mustache deleted file mode 100644 index 4d73b0e5..00000000 --- a/webclient/views/partials/style.mustache +++ /dev/null @@ -1,435 +0,0 @@ - diff --git a/webclient/views/partials/topbar.mustache b/webclient/views/partials/topbar.mustache deleted file mode 100644 index 2bf676a8..00000000 --- a/webclient/views/partials/topbar.mustache +++ /dev/null @@ -1,6 +0,0 @@ -
    -
    - - -
    -
    -- GitLab

    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⩔`@`}pqS0InlSWI~JZ9NR&||i7+`55r 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⩔`@`}pqS0InlSWI~JZ9NR&||i7+`55r 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